where("parent_id", $parent_id)->select(); $html = ''; if ($data) { foreach ($data as $h) { if ($h['id'] == $selected) { $html .= ""; } $html .= ""; } } echo $html; } /* * 获取地区 */ public function getRegion2() { $parent_id = I('get.parent_id/d'); $lev = I('get.level', 0); $data = M('region')->where("parent_id", $parent_id)->where('level', $lev)->select(); $html = ''; if ($data) { $func = ""; switch ($lev) { case 2: $func = 'setcity(this)'; break; case 3: $func = 'setdistr(this)'; break; case 4: $func = 'set_tem_twon(this)'; break; } foreach ($data as $k => $v) { $html .= "
  • " . $v['name'] . "
  • "; } } echo $html; } public function getTwon() { $parent_id = I('get.parent_id/d'); $data = M('region')->where("parent_id", $parent_id)->select(); $html = ''; if ($data) { foreach ($data as $h) { $html .= ""; } } if (empty($html)) { echo '0'; } else { echo $html; } } /* * 获取地区 */ public function get_category() { $parent_id = I('get.parent_id/d'); // 商品分类 父id $list = M('goods_category')->where("parent_id", $parent_id)->select(); $html=""; foreach ($list as $k => $v) $html .= ""; exit($html); } public function voiceVerify($param) { // $param = I('post.'); $verifyCode = $param['verifyCode']; //验证码内容,为数字和英文字母,不区分大小写,长度4-8位 $post_openid = $param['post_openid']; $store_id = $param['store_id']; $playTimes = $param['playTimes'];//播放次数,1-3次 $to = $param['to']; //接收号码 $displayNum = "";//示的主叫号码 $respUrl = ""; //语音验证码状态通知回调地址,云通讯平台将向该Url地址发送呼叫结果通知 $lang = "zh";//语言类型。取值en(英文)、zh(中文),默认值zh。 $userData = "";//第三方私有数据 if (empty($verifyCode) || empty($post_openid) || empty($store_id) || empty($playTimes) || empty($to) ) { return json_encode(['code' => -1, 'msg' => '非法参数!']); } $openid_user = M('users')->where(array('store_id' => $store_id, 'openid' => $post_openid))->find(); if (empty($openid_user)) { $return_arr = array('code' => -1, 'msg' => '网络异常,请刷新重试!'); return json_encode($return_arr); } //判断一天同一个手机发送次数大于限10次 $sms_where = "to_days(FROM_UNIXTIME(add_time))=to_days(now())"; $maxsmsday_num = M('sms_log')->where(array('store_id' => $store_id, 'mobile' => $to))->where($sms_where)->count(); if ($maxsmsday_num >= 10) { $return_arr = array('code' => -1, 'msg' => '超出当天发送次数'); return json_encode($return_arr); } // 初始化REST SDK // Vendor('VoiceVerifySDK.CCPRestSDK'); include_once(ROOT_PATH . "/vendor/VoiceVerifySDK/CCPRestSDK.php"); $rest = new \REST(v_serverIP, v_serverPort, v_softVersion); $rest->setAccount(v_accountSid, v_accountToken); $rest->setAppId(v_appId); //调用语音验证码接口 $result = $rest->voiceVerify($verifyCode, $playTimes, $to, $displayNum, $respUrl, $lang, $userData); mlog($to."语音返回:" . json_encode($result), "sms/" . $store_id); if ($result == NULL) { return json_encode(['code' => -1, 'msg' => '请求语音信息错误!']); } if ($result->statusCode != 0) { return json_encode(['code' => -1, 'msg' => $result->statusMsg]); } else { return json_encode(['code' => 0, 'msg' => '发送成功,稍后您将接到电话语音验证码!']); // $voiceVerify = $result->VoiceVerify; // 'callSid'=>$voiceVerify->callSid, // 'dateCreated'=>$voiceVerify->dateCreated, } } /** * 验证码获取 */ public function vertify() { $config = array( 'fontSize' => 30, 'length' => 4, 'codeSet'=>'1234567890', 'useCurve' => false, 'useImgBg'=>false, 'useNoise' => true, 'reset' => false ); $errorCorrectionLevel = "L"; // 纠错级别: ob_end_clean(); $Verify = new Verify($config); $Verify->entry("user_login"); } /** * 验证码获取 */ public function regvertify() { $config = array( 'fontSize' => 30, 'length' => 4, 'useCurve' => false, 'useImgBg'=>false, 'useNoise' => true, 'reset' => false ); $errorCorrectionLevel = "L"; // 纠错级别: ob_end_clean(); $Verify = new Verify($config); $Verify->entry("home_user_login"); } /** * 前端发送短信方法: APP/WAP/PC 共用发送方法 */ public function send_validate_code() { $type = I('type'); $scene = I('scene'); //发送短信验证码使用场景 1=消息 2=语音 $sender = I('send'); $mobile = $sender;//手机号 $stoid = I('stoid/d', 1); $gets_time_out = I('s_time_out/d', 60); $post_openid = substr(I('openid'), 0, 50); $post_openidkey = substr(I('openidkey'), 0, 50); $getvertifycode = substr(I('vertifycode'), 0, 4); $getcodekey = substr(I('codekey'), 0, 50); $sms_send_type = tpCache('sms.sms_send_type', $stoid); $sms_send_type = json_decode($sms_send_type, true); $getis_verifycode = $sms_send_type['is_verifycode'] ? $sms_send_type['is_verifycode'] : 0; if ($getis_verifycode) { if (empty($stoid) || empty($mobile) || empty($gets_time_out) || empty($post_openid) || empty($post_openidkey) || empty($getvertifycode) || empty($getcodekey)) { $return_arr = array('status' => -1, 'msg' => '非法参数1!'); return json($return_arr); } $true_codekey = md5($getvertifycode . "&" . getErpKey()); $true_key = md5($post_openid . "&" . getErpKey()); if ($true_key != $post_openidkey || $true_codekey != $getcodekey) { $return_arr = array('status' => -1, 'msg' => '非法参数2!'); return json($return_arr); return json($return_arr); } } else { //没有图片验证码 if (empty($stoid) || empty($mobile) || empty($gets_time_out) || empty($post_openid) || empty($post_openidkey)) { $return_arr = array('status' => -1, 'msg' => '非法参数3!'); return json($return_arr); } $true_key = md5($post_openid . "&" . getErpKey()); if ($true_key != $post_openidkey) { $return_arr = array('status' => -1, 'msg' => '非法参数4!'); return json($return_arr); } } $openid_user = M('users')->where(array('store_id' => $stoid, 'openid' => $post_openid))->find(); if (empty($openid_user)) { $return_arr = array('status' => -1, 'msg' => '网络异常,请刷新重试!'); return json($return_arr); } if (strlen(trim($mobile)) != 11) { $return_arr = array('status' => -1, 'msg' => '手机位数有误!'); return json($return_arr); } $mobile = trim($mobile); $session_id = I('unique_id', session_id()); //注册 //$stoinfo = M('store')->where('store_id', $stoid)->find(); $stoinfo = M('store')->where('store_id', $stoid)->field('store_name,smsqty,sms_mobile')->find(); $storename = $stoinfo['store_name'];//商家名称 $store_smsqty = $stoinfo['smsqty'];//短信数量 /*---- if ($store_smsqty == 0) { $return_arr = array('status' => -1, 'msg' => '系统短信数量不足'); return json($return_arr); }---*/ /*--时间--*/ $ntime = date("Y-m-d H:i:s", time()); $getparam0 = ""; /*--短信不足的情况--*/ $smsTemplateCode = "SMS_77445090"; switch ($store_smsqty) { case 0: $return_arr = array('status' => -1, 'msg' => '系统短信数量不足'); return json($return_arr); case 300: $getparam0 = "&smsTemplateCode=" . $smsTemplateCode . "¶meters=['" . $storename . "','" . $ntime . "','" . $store_smsqty . "']"; break; case 200: $getparam0 = "&smsTemplateCode=" . $smsTemplateCode . "¶meters=['" . $storename . "','" . $ntime . "','" . $store_smsqty . "']"; break; case 100: $getparam0 = "&smsTemplateCode=" . $smsTemplateCode . "¶meters=['" . $storename . "','" . $ntime . "','" . $store_smsqty . "']"; break; } //判断一天同一个openid发送次数大于限10次 $sms_where = "to_days(FROM_UNIXTIME(add_time))=to_days(now())"; $maxsmsday_num = M('sms_log')->where(array('store_id' => $stoid, 'wxopenid' => $post_openid))->where($sms_where)->count(); if ($maxsmsday_num >= 10) { $return_arr = array('status' => -1, 'msg' => '操作频繁无法操作'); return json($return_arr); } //判断一天同一个手机发送次数大于限10次 $sms_where = "to_days(FROM_UNIXTIME(add_time))=to_days(now())"; $maxsmsday_num = M('sms_log')->where(array('store_id' => $stoid, 'mobile' => $mobile))->where($sms_where)->count(); if ($maxsmsday_num >= 10) { $return_arr = array('status' => -1, 'msg' => '超出当天发送次数'); return json($return_arr); } //判断是否存在验证码 $data = M('sms_log')->where(array('store_id' => $stoid, 'mobile' => $mobile, 'session_id' => $session_id))->order('id DESC')->find(); //获取时间配置 $sms_time_out = 60; if ($sms_time_out != 60 && $sms_time_out != 30) { $return_arr = array('status' => -1, 'msg' => '非法操作5'); return json($return_arr); } //60秒以内不可重复发送 if ($data && (time() - $data['add_time']) < $sms_time_out) { $return_arr = array('status' => -1, 'msg' => $sms_time_out . '秒内不允许重复发送'); return json($return_arr); } else { //随机一个验证码 $code = rand(1000, 9999); $row = M('sms_log')->add(array('store_id' => $stoid, 'mobile' => $mobile, 'code' => $code, 'add_time' => time(), 'session_id' => $session_id, 'status' => 0, 'ip' => getIP(), 'wxopenid' => $post_openid)); } mlog($mobile."场景:" . $scene, "sms/" . getMobileStoId()); $smsinfo = M('store')->where(array('store_id' => $stoid, 'smsqty' => array('gt', 0)))->setDec('smsqty'); if (empty($smsinfo)) { $return_arr = array('status' => -1, 'msg' => '系统短信数量不足'); return json($return_arr); } //发送短信 switch ($scene) { case "1": //注册 mlog($mobile."场景:111", "sms/" . getMobileStoId()); $getparam = "&smsTemplateCode=SMS_14575039¶meters=['" . $storename . "','" . $code . "']"; $poststr = "phone=" . $mobile . "&msgOrigin=WXD&smsFreeSignName=万信达软件" . $getparam; $resp = httpRequest("https://source-api.yolipai.com/external/sms/alidayu/send", "post", $poststr); //吉信通 // $smscontent = "【万信达软件】欢迎绑定" . $storename . "会员,您的短信验证码" . $code; // $smscontent = iconv("UTF-8", "GB2312//IGNORE", $smscontent); // $smscontent = urlencode($smscontent); // $http = "http://service.winic.org:8009/sys_port/gateway/?id=WXDWeiXinSMS&pwd=WXDWeiXinSMS&to=" . $mobile . "&content=" . $smscontent; // $resp = httpRequest($http); break; case "2": mlog($mobile."场景:22", "sms/" . getMobileStoId()); $postdata["store_id"] = $stoid; $postdata["post_openid"] = $post_openid; $postdata["verifyCode"] = $code; $postdata["to"] = $mobile; $postdata["playTimes"] = 3; $resp = $this->voiceVerify($postdata); break; default: mlog($mobile."其他", "sms/" . getMobileStoId()); break; } $is_send = 0;//是否发送成功 mlog($mobile."返回:" . json_encode($resp), "sms/" . getMobileStoId()); // if ($scene == 1) { // $resp = explode("/", $resp); // if ($resp[0] == "000") { // $is_send = 1; // } // // } else { $resp = json_decode($resp, true); if ($resp['code'] == 0) { $is_send = 1; } // } if ($is_send) { mlog($mobile."手机" .$mobile, "sms/" . getMobileStoId()); //发送成功, 修改发送状态位成功 M('sms_log')->where(array('store_id' => $stoid, 'mobile' => $mobile, 'code' => $code, 'session_id' => $session_id, 'status' => 0))->save(array('status' => 1)); //减一条短信 smsHandle($stoid, "短信验证码发送"); mlog($getparam0 . $store_smsqty, "sms/" . getMobileStoId()); /*--短信量不足提醒--*/ if (!empty($getparam0)) { $poststr1 = "phone=" . $stoinfo['sms_mobile'] . "&msgOrigin=WXD&smsFreeSignName=万信达软件" . $getparam0; $resp1 = httpRequest("https://source-api.yolipai.com/external/sms/alidayu/send", "post", $poststr1); $resp1 = json_decode($resp1, true); if ($resp1['code'] == 0) { //减一条短信 smsHandle($stoid, "短信数量提醒发送"); mlog("短信数量快不足提醒" . $stoinfo['sms_mobile'] . ":" . $store_smsqty, "sms"); } else { mlog("短信数量快不足提醒失败" . $stoinfo['sms_mobile'], "sms"); } } $return_arr = array('status' => 1, 'msg' => '发送成功,请注意查收'); return json($return_arr); } else { M('sms_log')->where(array('store_id' => $stoid, 'mobile' => $mobile, 'status' => 0))->delete(); M('store')->where(array('store_id' => $stoid))->setInc('smsqty'); //$return_arr = array('status' => -1, 'msg' =>$resp['msg']); mlog($mobile."异常出错:" . json_encode($resp['msg']), "sms/" . getMobileStoId()); $return_arr = array('status' => -1, 'msg' => '网络繁忙,请点击重试'); return json($return_arr); } } //验证码校验 public function smsm_verify() { $verify = new Verify(); if (!$verify->check(I('post.vertifycode'), "user_login")) { exit(json_encode(array('status' => 0, 'msg' => '验证码错误,请重新输入'))); } $codekey=md5(I('post.vertifycode')."&".getErpKey()); exit(json_encode(array('status' => 1,'codekey'=>$codekey, 'msg' => 'ok'))); } //PC验证码校验 public function reg_smsm_verify() { $verify = new Verify(); if (!$verify->check(I('post.vertifycode'), "home_user_login")) { exit(json_encode(array('status' => 0, 'msg' => '验证码错误,请重新输入'))); } $mobile = I('mobile'); if (empty($mobile) || strlen($mobile)!=11) { return json(array('code'=>-1,'msg'=>'手机号码为空或格式有误!')); } $codekey=md5($mobile."&".I('post.vertifycode')."&".getErpKey()); exit(json_encode(array('status' => 1,'codekey'=>$codekey, 'msg' => 'ok'))); } /** * 验证短信验证码: APP/WAP/PC 共用发送方法 */ public function check_validate_code() { $code = I('post.code'); $mobile = I('mobile'); $send = I('send'); $sender = empty($mobile) ? $send : $mobile; $type = I('type'); $session_id = I('unique_id', session_id()); $logic = new UsersLogic(); $res = $logic->check_validate_code($code, $sender, $session_id, $type); return json($res); } /** * 检测手机号是否已经存在 */ public function issetMobile() { $mobile = I("mobile", '0'); $stoid = I("stoid"); $users = M('users')->where('store_id', $stoid)->where('mobile', $mobile)->find(); mlog($stoid); if ($users) exit ('1'); else exit ('0'); } public function issetMobileOrEmail() { $mobile = I("mobile", '0'); $users = M('users')->where('store_id', getMobileStoId())->where("email", $mobile)->whereOr('mobile', $mobile)->find(); if ($users) exit ('1'); else exit ('0'); } /** * 查询物流 */ public function queryExpress() { $shipping_code = input('shipping_code'); $invoice_no = input('invoice_no'); if (empty($shipping_code) || empty($invoice_no)) { return json(['status' => 0, 'message' => '参数有误', 'result' => '']); } return json(queryExpress($shipping_code, $invoice_no)); } /** * 检查订单状态 */ public function check_order_pay_status() { $order_id = I('order_id'); if (empty($order_id)) { $res = ['message' => '参数错误', 'status' => -1, 'result' => '']; $this->AjaxReturn($res); } $order = M('order')->field('pay_status')->where(['order_id' => $order_id])->find(); if ($order['pay_status'] != 0) { $res = ['message' => '已支付', 'status' => 1, 'result' => $order]; } else { $res = ['message' => '未支付', 'status' => 0, 'result' => $order]; } $this->AjaxReturn($res); } /** * 广告位js */ public function ad_show() { $pid = I('pid', 1); $where = array( 'pid' => $pid, 'enable' => 1, 'start_time' => array('lt', strtotime(date('Y-m-d H:00:00'))), 'end_time' => array('gt', strtotime(date('Y-m-d H:00:00'))), ); $ad = D("ad")->where($where)->order("orderby desc")->cache(true, TPSHOP_CACHE_TIME)->find(); $this->assign('ad', $ad); $this->display(); } /*订单列表*/ public function getlist() { // try { $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : ""; // $postStr = "{\"ERP_POSKEY\":\"r1SgRBL8JyJ2wpxd+DFXzRwDwHo4PDpewxcrB4UQIBOg7p4GT+XBg==\",\"STORAGEID\":\"\",\"ACCDB\":\"ppt\"}"; mlog($postStr, 'getlist'); $postjson = json_decode($postStr); $storageid = $postjson->STORAGEID; $ACCDB = $postjson->ACCDB; $datetype = $postjson->DATETYPE; $tel = $postjson->TEL; $begindate = $postjson->BEGINDATE; $enddate = $postjson->ENDDATE; $fbillstate = $postjson->FBILLSTATE; $NUMBER = $postjson->NUMBER; $pagenum=20; if ($postjson->pagenum) { $pagenum = $postjson->pagenum; } if (empty($ACCDB)) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "传递参数有误!"; return json_encode($jsonres); } $res_store=M('store')->where(array('ERPId'=>$ACCDB,'is_audit'=>1))->field('store_id')->find(); if (empty($res_store)) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "找不到相关账套!"; return json_encode($jsonres); } $getstore_id=$res_store['store_id']; $where["a.store_id"] = $getstore_id; if ($storageid) { $store_res=M('pick_up')->where(array('store_id'=>$getstore_id,'keyid'=>$storageid))->field('pickup_id')->order(' isstop asc,pickup_id desc')->find(); if (empty($store_res)) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "该门店信息在手店未存在"; return json_encode($jsonres); } $getpickup_id = $store_res['pickup_id']; $where["a.pickup_id"] = $getpickup_id; } if ($tel != "") { $where["b.mobile"] = $tel; } if ($datetype != "" && $begindate != "" && $enddate != "") { $begindate = strtotime($begindate); $enddate = strtotime($enddate); switch ($datetype) { case "PayDate": $where['pay_time'] = array('between', "$begindate,$enddate"); break; case "billdate": $where['add_time'] = array('between', "$begindate,$enddate"); break; } } if ($NUMBER) { $where['a.order_sn'] = $NUMBER; } if ($fbillstate) { switch ($fbillstate) { case "1"://已付款 $where["a.pay_status"] = 1; $where["a.shipping_status"] = 0; $where["a.order_status"] = 1; break; case "2"://已发货 $where["shipping_status"] = array('in', '1,2'); $where["order_status"] = 1; $where["pay_status"] = 1; break; case "3"://已完成 $where["order_status"] = array('in', '2,4'); break; case "4"://已付失败订单(已作废) $where["order_status"] = 5; break; case "10"://有退款 申请订单 $where["k.dknum"]=array('gt',0); break; } } if ($postjson != "") { $count = D('order')->alias("a") ->join("(select erpvipid,user_id,store_id,mobile from wxd_users where store_id=".$getstore_id.") b", " a.store_id=b.store_id and a.user_id=b.user_id", "left") ->join("(select count(1) as dknum,order_id from wxd_return_goods b where store_id='".$getstore_id."' and status=0 group by order_id ) k", ' a.order_id=k.order_id', "left") ->where($where)->count(); $Page = $pager = new Page($count,$pagenum);// 实例化分页类 传入总记录数和每页显示的记录数 $fiedlist = "FROM_UNIXTIME(a.pay_time) as PAYDATE,a.order_sn as NUMBER,b.erpvipid as ERPVIPId,(a.total_amount-a.return_amount+IFNull(a.pt_tail_money,0)) as TSUM,a.consignee as NAME,a.mobile as TEL"; $fiedlist .= ",IFNULL(CONCAT(IFNULL(a.more_address,''),a.address),'') as ADDRESS,(case when a.order_status =1 and a.pay_status=1 and a.shipping_status=0 then 1 when a.order_status=1 and a.shipping_status=1 then 2 when a.order_status=4 then 3 when a.order_status=5 then 4 else 0 end ) as FBILLSTATE,a.order_status as ORDER_STATUS,a.shipping_status as SHIPPING_STATUS,a.pay_status as PAY_STATUS"; $fiedlist .= ",a.pay_name as PAYTYPE,a.exp_type as EXPRESSTYPE,IFNULL(a.expressno,'') as EXPRESSNO,IFNULL(a.shipping_code,'') as EXPRESSCOMPANYNO,IFNULL(a.shipping_name,'') as EXPRESSCOMPANY,IFNULL(k.dknum,0) as dknum,a.is_split"; $fiedlist.=",d.pickup_name as storagename,d.pickup_no as storageno,d.keyid as storageid"; $res = D('order')->alias("a") ->join("(select erpvipid,user_id,store_id,mobile from wxd_users where store_id=".$getstore_id.") b", " a.store_id=b.store_id and a.user_id=b.user_id", "left") ->join("(select pickup_id,pickup_no,pickup_name,keyid from wxd_pick_up where store_id=".$getstore_id.") d", ' a.pickup_id=d.pickup_id', "left") ->join("(select count(1) as dknum,order_id from wxd_return_goods b where store_id=".$getstore_id." and status=0 group by order_id ) k", ' a.order_id=k.order_id', "left") ->where($where)->field($fiedlist)->limit($Page->firstRow.','.$Page->listRows)->order('a.order_id desc')->select(); if ($res) { $jsonres["STATE"] = 1; $jsonres["RECCOUNT"] = $count; $jsonres["MSG"] = "SUCCESS"; $jsonres["ITEMS"] = $res; } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "没有相关数据"; } } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "传递参数有误!"; } // } catch (Exception $ex) { // mlog($ex, "getlist"); // $jsonres["STATE"] = -1; // $jsonres["MSG"] = "异常出错"; // } return json_encode($jsonres); } /*调单时间*/ public function updategivetime() { $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : ""; mlog($postStr, 'getordertime'); //$postStr="{\"NUMBER\":\"201705031125518778\",\"ERPTIME\":\"2017/5/3 11:30:20\"}"; if ($postStr) { $postjson = json_decode($postStr, true); $number = $postjson['NUMBER']; $erptime = $postjson['ERPTIME']; if ($number && $erptime) { $order_res=M('order')->where('order_sn',$number)->field('order_sn,add_time,erp_givetime')->find(); if (empty($order_res)) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "更新失败,找不到相关订单信息!"; } if ($order_res['add_time']>strtotime($erptime)) { $resdata['erp_givetime'] = $order_res['add_time']+60; } else { $resdata['erp_givetime'] = strtotime($erptime); } $res = D('order')->where('order_sn',$number)->save($resdata); if ($res) { $jsonres["STATE"] = 1; $jsonres["MSG"] = "SUCCESS"; } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "更新失败!"; } } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "传递参数有误!"; } }else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "传递参数有误!"; } return json_encode($jsonres); } /*异常订单列表*/ public function getcatchlist() { try { $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : ""; //$postStr = "\"BEGINDATE\":\"0000-00-00\",\"ENDDATE\":\"2017-12-19\"}"; if ($postStr) { mlog($postStr, 'getlist'); $postjson = json_decode($postStr, true); $begindate = $postjson["BEGINDATE"]; $enddate = $postjson["ENDDATE"]; if ($begindate != "" && $enddate != "") { $begindate = strtotime($begindate); $enddate = strtotime($enddate); $where['erp_givetime'] = array('between', "$begindate,$enddate"); } } $where['erp_givetime'] = array('gt', '0'); $where['shipping_status'] = 0; $where['order_status'] = 1; $fiedlist = "(case when a.order_status =1 and a.pay_status=1 and a.shipping_status=0 then 1 when a.order_status=1 and a.shipping_status=1 then 2 when a.order_status=4 then 3 when a.order_status=5 then 4 else 0 end ) as FBILLSTATE,a.order_status as ORDER_STATUS,a.shipping_status as SHIPPING_STATUS,a.pay_status as PAY_STATUS"; $fiedlist .= ",a.erp_givetime,a.order_sn,b.ERPId,a.erp_givetime"; $res = D('order')->alias("a")->join("store b", " a.store_id=b.store_id", "left") ->where($where)->field($fiedlist)->select(); $count = D('order')->alias("a")->join("store b", " a.store_id=b.store_id", "left") ->where($where)->field($fiedlist)->count(); if ($res) { $jsonres["STATE"] = 1; $jsonres["RECCOUNT"] = $count; $jsonres["MSG"] = "SUCCESS"; $jsonres["ITEMS"] = $res; } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "没有相关数据"; } } catch (Exception $ex) { mlog($ex, "getlist"); $jsonres["STATE"] = -1; $jsonres["MSG"] = "异常出错"; } return json_encode($jsonres); } /*订单明细*/ public function getone() { try { $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : ""; if (empty($postStr)) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "传递参数有误1!"; return json_encode($jsonres); } // $postStr="{\"NUMBER\":\"ppt201812251421194902\"}"; mlog($postStr, 'getone'); $postjson = json_decode($postStr, true); if (empty($postjson['NUMBER'])) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "传递参数有误2!"; return json_encode($jsonres); } $number = $postjson['NUMBER']; $where["a.order_sn"] = $number; $fiedlist = "a.order_sn as NUMBER,o.expressno,o.pay_name as PAYTYPE,FROM_UNIXTIME(o.add_time) as BILLDATE,IFNULL(concat(IFNULL(o.more_address,''),o.address),'') as ADDRESS,b.goods_name as WARENAME,b.goods_sn as WARENO,b.sku as BARCODE,IFNULL(b.goods_spec,'') as SPECNAME,IFNULL(b.goods_color,'') as COLORNAME,"; $fiedlist .= "IFNULL(b.goods_unitname,'') as UNITNAME,b.market_price as POSPRICE,FROM_UNIXTIME(o.pay_time) as PAYDATE,o.consignee as NAME,o.mobile as TEL,(o.total_amount-o.return_amount+IFNull(o.pt_tail_money,0)) as TSUM,o.coupon_price as COUPON_PRICE,"; $fiedlist .= "(case when o.order_status=1 and o.pay_status=1 and o.shipping_status=0 then 1 when o.order_status=1 and o.shipping_status in(1,2) and o.pay_status=1 then 2 when o.order_status=2 then 3 when o.order_status=5 then 4 else 0 end ) as FBILLSTATE,o.order_status as ORDER_STATUS,o.shipping_status as SHIPPING_STATUS,o.pay_status as PAY_STATUS,a.goods_num as QTY,a.goods_price as PRICE,a.account,a.account_yu,o.user_note as REMARK,b.erpwareid as ERPWAREID,o.exp_type as EXPRESSTYPE,o.shipping_price as EXPRESSPRICE"; $fiedlist .= ",(case when (case when k.goods_id_list<>'' then k.status else r.status end)=0 or (case when k.goods_id_list<>'' then k.status else r.status end)=1 then 1 when (case when k.goods_id_list<>'' then k.status else r.status end)=2 then 2 else 0 end) as return_status,o.user_note as USER_NOTE,a.give_integral,IFNULL(o.discount_amount,0)+IFNULL(o.order_prom_amount,0) as discount_amount,IFNULL(o.return_amount,0) as return_amount"; $fiedlist .= ",case when a.is_distri=1 then '900830' else IFNULL(t.acttag,'900800') end as acttag,IFNULL(a.prom_id,'') as actnumber,case when a.is_distri=1 then '分销商品' else IFNULL(t.actname,'普通商品') end as actname,o.is_split"; $res = D('order_goods')->alias("a")->join("goods b", " a.goods_id=b.goods_id", "left") ->join("order o", ' a.order_id=o.order_id', "left") ->join("return_goods r", ' r.order_id=a.order_id and r.goods_id=a.goods_id and r.status<>3 ', "left") ->join("return_goods k", " k.order_id=a.order_id and k.goods_id_list<>'' and k.status<>3 ", "left") ->join("order_goods_tag t", " t.id=a.prom_type", "left") ->where($where)->field($fiedlist)->select(); $count = count($res); if (empty($res)) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "没有相关数据"; return json_encode($jsonres); } $jsonres["STATE"] = 1; $jsonres["RECCOUNT"] = $count; $jsonres["MSG"] = "SUCCESS"; $jsonres["ITEMS"] = $res; return json_encode($jsonres); } catch (Exception $ex) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "异常出错"; return json_encode($jsonres); } } /*更新订单状态*/ public function order() { try { $postStr = file_get_contents("php://input"); if (empty($postStr)) { $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : ""; } mlog($postStr, 'order'); // $postStr="{\"NUMBER\":\"ppt201710171452126974\",\"EDITER\":\"1180\",\"FBILLSTATE\":\"\",\"ERPUSERID\":\"1180\",\"ERPTIME\":\"2018-01-05 15:44:00\"}"; $postjson = json_decode($postStr); $number = $postjson->NUMBER; mlog($number, 'order'); $editer = $postjson->EDITER; $fbillstate = $postjson->FBILLSTATE; $ERPUSERID = $postjson->ERPUSERID; $erptime= $postjson->ERPTIME; $geterptime=time(); if ($erptime) { $geterptime= strtotime($erptime); } $expressno=""; $where = " 1=1 "; if ($postjson) { $where .= " and a.order_sn='" . $number . "'"; $where .= ' AND a.pay_status=1 AND a.order_status=1 and a.shipping_status =0 '; $res = D('order')->alias("a")->where($where)->find(); if ($res) { $expressno = $res['expressno']; $orderapp = new \app\admin\logic\OrderLogic(); if ($res['exp_type'] == '0') {//发货 已付款+物流 if (!empty($expressno)) { $order = $orderapp->getOrderInfo($res['order_id']); $orderGoods = $orderapp->getOrderGoods($res['order_id']); //取管理员ID $getadminid = "0"; if (!empty($ERPUSERID)) { $resadmin = D('admin')->where(array('store_id' => $res['store_id'], 'ERPUser' => $ERPUSERID))->find(); if ($resadmin) { $getadminid = $resadmin['admin_id']; } } // if (empty($order['province']) || empty($order['mobile'])) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "该订单没有收货信息,请与会员确认收货信息"; return json_encode($jsonres); } $data['store_id'] = $order['store_id']; $data['order_sn'] = $res['order_sn']; $data['order_id'] = $res['order_id']; $data['invoice_no'] = $expressno; $data['zipcode'] = $order['zipcode']; $data['user_id'] = $order['user_id']; $data['admin_id'] = $getadminid;// $data['consignee'] = $order['consignee']; $data['mobile'] = $order['mobile']; $data['country'] = $order['country']; $data['province'] = $order['province']; $data['city'] = $order['city']; $data['district'] = $order['district']; $data['address'] = $order['address']; $data['shipping_code'] = $order['shipping_code']; $data['shipping_name'] = $order['shipping_name']; $data['shipping_price'] = $order['shipping_price']; $data['create_time'] = $geterptime; $did = M('delivery_doc')->add($data); $is_delivery = 0; foreach ($orderGoods as $k => $v) { if ($v['is_send'] == 1) { $is_delivery++; } if ($v['is_send'] == 0) { $resdata['is_send'] = 1; $resdata['delivery_id'] = $did; $r = M('order_goods')->where("rec_id=" . $v['rec_id'])->save($resdata);//改变订单商品发货状态 $is_delivery++; } // 更新预出库存 $this->update_erpyqty($res['order_sn'], $v['goods_num'], $res['store_id'], $res['pickup_id'], $v['goods_id']); } if (empty($res['erp_givetime'])) { $updata['erp_givetime'] = $geterptime; } $updata['shipping_time'] = $geterptime; if ($is_delivery == count($orderGoods)) { $updata['shipping_status'] = 1; } else { $updata['shipping_status'] = 2; } $r = M('order')->where("order_id=" . $res['order_id'])->save($updata);//改变订单状态 $s = $orderapp->orderActionLog($res['order_id'], '发货成功', "", $getadminid);//操作日志 if ($s && $r) { //发送发货信息 发货单号不为空和有开通发货短信 if ($expressno != "" && tpCache("sms.order_add_sms", $order['store_id']) == 1) { //发货啦!亲爱的${parameter1},您在${parameter2}订购的包裹已经飞奔在路上~披星戴月日夜兼程来到您身边! //快递单号:${parameter3},客服电话:${parameter4} $getparam = "&smsTemplateCode=SMS_67315125 ¶meters=['" . $order['consignee'] . "','" . $order['store_name'] . "','" . $expressno . "','" . $order['store_tel'] . "']"; $poststr = "phone=" . $order['mobile'] . "&msgOrigin=WXD&smsFreeSignName=万信达软件" . $getparam; $resp = httpRequest("https://source-api.yolipai.com/external/sms/alidayu/send", "post", $poststr); $resp = json_decode($resp, true); if ($resp['code'] == 0) { //发送成功, 修改发送状态位成功 mlog("发送成功", "order"); } else { mlog("发送失败" . $resp['msg'], "order"); } } // $jsonres["STATE"] = 1; $jsonres["MSG"] = "SUCCESS"; } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "fail"; } } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "快递单号没有输入!"; } } else {//自提时,自动是确认收货 //调用自动收货 if (empty($res['erp_givetime'])) { $updata['erp_givetime'] = $geterptime; } $updata['shipping_time'] = $geterptime; $updata['shipping_status'] = 1; $r = M('order')->where("order_id=" . $res['order_id'])->save($updata);//改变订单状态 $data = confirm_order($res['order_id'], $res['user_id'], $geterptime); $orderGoods = $orderapp->getOrderGoods($res['order_id']); foreach ($orderGoods as $k => $v) { $resorder_goodsdata['is_send'] = 1; $r_goods = M('order_goods')->where(array('store_id'=>$res['store_id'],'rec_id'=>$v['rec_id']))->save($resorder_goodsdata);//改变订单商品发货状态 $this->update_erpyqty($res['order_sn'], $v['goods_num'], $res['store_id'], $res['pickup_id'], $v['goods_id']); } if ($data['status'] == 1) { $jsonres["STATE"] = 1; $jsonres["MSG"] = "SUCCESS"; } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = $data['msg']; } } $getapi_token = tpCache("shop_info.api_token", $res['store_id']); if ($getapi_token) { //如果 有ERP //判断会员是否有绑定线下,没有的话进行线下 $user_info = M('users')->alias('a') ->field("a.user_id,a.mobile,a.erpvipid,a.erpvipno") ->where(array('a.user_id' => $res['user_id'], 'a.store_id' => $res['store_id']))->find(); if ($user_info && $user_info['mobile'] && (empty($user_info['erpvipid']) || empty($user_info['erpvipno'])) ) { $user_data = array(); $user_data['MobileTel'] = $user_info['mobile']; $rs = getApiData("wxd.vip.mshop.register", $getapi_token, array($user_data)); if ($rs) { $rs = json_decode($rs, true); if ($rs['code'] && $rs['data']) { $new_user_info = $rs['data']; $map['erpvipid'] = $new_user_info['Id']; $map['erpvipno'] = $new_user_info['VIPNo']; $falg = M('users')->where('user_id', $user_info['user_id'])->save($map); } } } } else { //没有ERP的 // } // } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "没有相关数据"; } } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "传递参数有误!"; } } catch (Exception $ex) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "异常出错"; mlog($ex, 'order'); } return json_encode($jsonres); } /*更新预存*/ public function update_erpyqty($number,$qty,$stoid,$pick_id,$goods_id) { $res=M('erp_yqty')->where(array('order_sn'=>$number,'store_id'=>$stoid,'pickup_id'=>$pick_id,'goods_id'=>$goods_id))->find(); if ($res) { if ($res['out_qty']>0 && $res['out_qty']>=$qty) { $updatedate['out_qty'] = $res['out_qty'] - $qty; M('erp_yqty')->where('id', $res['id'])->save($updatedate); } } } /*更新物流订单号*/ public function updateexpressno() { try { $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : ""; mlog($postStr, 'updateexpressno'); // $postStr="{\"NUMBER\":\"ppt20170510141646614\",\"EDITER\":\"燕如\",\"EXPRESSNO\":\"1234\",\"EXPRESSCOMPANYNO\":\"shunfeng\",\"EXPRESSCOMPANY\":\"顺丰\",\"FBILLSTATE\":2,\"ERPUSERID\":\"1180\"}"; $postjson = json_decode($postStr); $number = $postjson->NUMBER; $editer = $postjson->EDITER; $fbillstate = $postjson->FBILLSTATE; $expressno = $postjson->EXPRESSNO; $expresscompanyno = $postjson->EXPRESSCOMPANYNO; $expresscompay = $postjson->EXPRESSCOMPANY; $ERPUSERID = $postjson->ERPUSERID; $where = " 1=1 "; if ($postjson) { $where .= " and order_sn='" . $number . "'"; switch ($fbillstate) { case "2"://已付款+物流 $where .= ' AND pay_status=1 AND order_status=1 and shipping_status =0 and exp_type=0 '; break; default: break; } $res = D('order')->where($where)->find(); if ($res) { if ($fbillstate == '2') {//发货 $updata['expressno'] = $expressno; $r = M('order')->where("order_id=" . $res['order_id'])->save($updata);//改变订单状态 if ($r) { $jsonres["STATE"] = 1; $jsonres["MSG"] = "SUCCESS"; } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "更新失败"; } } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "没有相关数据"; } } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "没有相关数据"; } } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "传递参数有误!"; } } catch (Exception $ex) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "异常出错"; mlog($ex, 'order'); } return json_encode($jsonres); } /*快递信息*/ public function getexpress() { try { $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : ""; //$postStr="{ \"ERP_POSKEY\":\"2016jdjfgf6fg1646541\",\"SUPPLYID\":\"123456\"}"; mlog($postStr, 'getexpress'); $postjson = json_decode($postStr); $ACCDB = $postjson->ACCDB; $where = array(); $number = ""; if ($ACCDB != "") { $where["b.ERPId"] = $ACCDB; } if ($postjson != "") { $fiedlist = "c.shipping_code as EXPRESS_NO,c.shipping_name as EXPRESS_NAME"; $res = D('store_shipping')->alias("a")->join("store b", " a.store_id=b.store_id", "left") ->join("shipping c", " a.shipping_id=c.shipping_id", "left") ->where($where)->field($fiedlist)->select(); $count = 0; $count = D('store_shipping')->alias("a") ->join("store b", " a.store_id=b.store_id", "left") ->where($where)->field($fiedlist)->count(); if ($res) { $jsonres["STATE"] = 1; $jsonres["RECCOUNT"] = $count; $jsonres["MSG"] = "SUCCESS"; $jsonres["ITEMS"] = $res; } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "没有相关数据"; } } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "传递参数有误!"; } } catch (Exception $ex) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "异常出错"; } return json_encode($jsonres); } /*账号是否有开通新手店*/ public function getisopen() { try { $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : ""; //$postStr="{ \"ERP_POSKEY\":\"2016jdjfgf6fg1646541\",\"SUPPLYID\":\"123456\"}"; mlog($postStr, 'getIsOpen'); $postjson = json_decode($postStr); $ACCDB = $postjson->ACCDB; $where = array(); if ($ACCDB != "") { $where["a.ERPId"] = $ACCDB; } if ($postjson != "") { $fiedlist = "*"; $res = D('store')->alias("a") ->where($where)->field($fiedlist)->select(); if ($res) { $jsonres["STATE"] = 1; $jsonres["MSG"] = "SUCCESS"; $jsonres["ITEMS"] = $res; } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "没有相关数据"; } } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "传递参数有误!"; } } catch (Exception $ex) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "异常出错"; } return json_encode($jsonres); } /*查询新订单*/ public function neworder() { try { $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : ""; // $postStr="{\"ERP_POSKEY\":\"r1SgRBL8JyJ2wpxd+DFXzRwDwHo4PDpewxcrB4UQIBOg7p4GT+XBg==\",\"STORAGEID\":\"C61053D5-FEA2-450C-B1FC-BDA7C585FC3B\",\"ACCDB\":\"ppt\",\"PayDate\":\"2018-01-03 17:00:00\"}"; if (empty($postStr)) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "POST为空!"; return json_encode($jsonres); } $postjson = json_decode($postStr); if (empty($postjson)) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "传递参数有误!"; return json_encode($jsonres); } $storageid = $postjson->STORAGEID; $ACCDB = $postjson->ACCDB; mlog($postStr,'neworder/'.$ACCDB); $store_res = M('store')->where(array('ERPId' => $ACCDB))->field('store_id')->find(); $getstoreid = $store_res['store_id']; $store_res = M('pick_up')->where(array('store_id' => $getstoreid, 'keyid' => $storageid))->field('pickup_id')->order(' isstop asc,pickup_id desc')->find(); $getpickup_id = $store_res['pickup_id']; $PayDate = $postjson->PayDate; if ($PayDate != "") { $PayDate = strtotime($PayDate); $where['pay_time'] = array('egt', $PayDate); } $where['a.store_id'] = $getstoreid; $where["a.pickup_id"] = $getpickup_id; $where["a.pay_status"] = 1; $where["a.shipping_status"] = 0; $where["a.order_status"] = 1; $count = D('order')->alias("a") ->where($where)->count(1); if (empty($count)) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "没有相关数据"; return json_encode($jsonres); } $jsonres["STATE"] = 1; $jsonres["MSG"] = "SUCCESS"; $jsonres["RECCOUNT"] = $count; return json_encode($jsonres); } catch (Exception $ex) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "异常出错"; return json_encode($jsonres); } } /*根据ERPVIPID获取openid*/ public function getopenidlist() { // try { $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : ""; // $postStr="{\"ACCDB\":\"ppt\",\"erpversion\":\"old\"}"; if ($postStr) { mlog($postStr,'getopenidlist'); $postjson = json_decode($postStr, true); $pagenum = $postjson['pagenum']; $pagenum=500; if ($postjson['pagenum']) { $pagenum = $postjson['pagenum']; } $ACCDB = $postjson['ACCDB']; if ($postjson['erpversion'] == "old")//查询旧版 { $oldres = httpRequest(IMPORT_URL . "/API/CustInfo.ashx?method=openidlist&pagesize=".$pagenum."&pagenumber=".I('p'),'POST',$postStr); if ($oldres) { $oldres = json_decode($oldres, true); $jsonres["STATE"] = 1; $jsonres["RECCOUNT"] = $oldres['total']; $jsonres["SUMPAGE"] = $oldres['page']; $jsonres["MSG"] = "SUCCESS"; $jsonres["ITEMS"] = $oldres['data']["ITEMS"]; } else { $jsonres["STATE"] = -1; $jsonres["msg"] = "获取失败001"; } } else { if ($ACCDB) { $where1['ERPId'] = $ACCDB; } $store_res = M('store')->where($where1)->field('store_id')->find(); if (empty($store_res)) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "没有相关数据"; return json_encode($jsonres); } $where['erpvipid'] = array('neq', ''); $where['openid'] = array('neq', ''); $where['store_id'] = $store_res['store_id']; $count = D('users')->alias("a") ->where($where)->count(); $Page = $pager = new Page($count, $pagenum);// 实例化分页类 传入总记录数和每页显示的记录数 $fiedlist = "a.erpvipid,a.openid"; $res = D('users')->alias("a") ->where($where)->field($fiedlist)->limit($Page->firstRow . ',' . $Page->listRows)->select(); if ($res) { $jsonres["STATE"] = 1; $jsonres["RECCOUNT"] = $count; $SUMPAGE=$Page->totalPages; $jsonres["SUMPAGE"] = $SUMPAGE; $jsonres["MSG"] = "SUCCESS"; $jsonres["ITEMS"] = $res; } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "没有相关数据"; } } } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "传递有误"; } // } // catch (Exception $ex) { // $jsonres["STATE"] = -1; // $jsonres["MSG"] = "异常出错"; // } return json_encode($jsonres); } /*根据erp账套、版本号\手机*/ //erpaccid=账套 //erpversion old旧版 new=新版 //mobiletel=手机 public function erpwxinfo() { try { $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : ""; if ($postStr == "") { $postStr = file_get_contents("php://input"); } mlog($postStr, 'erpwxinfo'); // $postStr=" {\"erpaccid\":\"pp11t\",\"erpversion\":\"new\",\"tel\":\"13599727122\"}"; if ($postStr != "") { $postjson = json_decode($postStr, true); if ($postjson && $postjson['erpaccid'] !== "" && $postjson['erpversion'] !== "" && $postjson['tel'] !== "") { if ($postjson['erpversion'] == "old")//查询旧版 { $oldres = httpRequest(IMPORT_URL . "/API/CustInfo.ashx?method=erpwxinfo", "post", $postStr); if ($oldres) { $oldres = json_decode($oldres, true); $jsonres = $oldres; } else { $jsonres["code"] = -1; $jsonres["msg"] = "获取失败001"; } } else { $where1['a.ERPId'] = strtolower($postjson['erpaccid']); $store_res=M('store')->alias('a') ->join(' wx_user c',' c.store_id=a.store_id') ->where($where1)->field('a.store_id,c.appid')->find(); if (empty($store_res)) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "没有相关数据"; return json_encode($jsonres); } $where['a.store_id'] = $store_res['store_id']; $where['a.mobile'] = $postjson['tel']; $res = D('users')->alias("a") ->where($where)->field("a.openid,a.store_id,a.nickname,a.head_pic")->find(); if ($res) { $jsonres["code"] = 0; $jsonres["msg"] = "SUCCESS"; $datalist['wx_appid'] = $store_res['appid']; $datalist['openid'] = $res['openid']; $datalist['nickname'] = $res['nickname']; $datalist['figureurl'] = $res['head_pic']; //微信模板 $wxmb = D('wx_sendlist')->where(array('store_id' => $store_res['store_id'], 'typeid' => 1001))->find(); if ($wxmb) { $datalist['template_id'] = $wxmb['template_id']; if ($wxmb['htmlurl']) { $datalist['htmlurl'] = $wxmb['htmlurl']; } else { $datalist['htmlurl'] = curHostURL() . "/mobile/User/index/stoid/" . $res['store_id']; } } //是否有评价模板 $wxmb_pj = D('wx_sendlist')->where(array('store_id' => $store_res['store_id'], 'typeid' => 1012, 'state' => 1))->find(); if ($wxmb_pj) { $pjmb['template_id'] = $wxmb_pj['template_id']; if ($wxmb_pj['htmlurl']) { $pjmb['htmlurl'] = $wxmb_pj['htmlurl']; } else { $pjmb['htmlurl'] = curHostURL() . "/mobile/User/index/stoid/" . $res['store_id']; } $getfirst="亲爱的客人您好!感谢您购买我们的产品,我们期待您对本次购物体验的反馈"; $getremark="请点击详情填写满意度调查"; if ($wxmb_pj['store_remark']) { $store_remark = json_decode($wxmb_pj['store_remark'], true); if ($store_remark) { if ($store_remark['first']) { $getfirst=$store_remark['first']; } if ($store_remark['remark']) { $getremark=$store_remark['remark']; } } } $pjmb['first'] = $getfirst; $pjmb['remark'] = $getremark; $datalist['evaluation'] = $pjmb; } $jsonres["data"] = $datalist; } else { $jsonres["code"] = -1; $jsonres["msg"] = "没有相关数据"; } } } else { $jsonres["code"] = -1; $jsonres["msg"] = "传递参数有误!"; } } else { $jsonres["code"] = -1; $jsonres["msg"] = "POST为空!"; } } catch (Exception $ex) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "异常出错"; } return json_encode($jsonres); } //根据erp账套、版本号\手机 //erpaccid=账套 public function shoplist() { $newres = M('store')->alias('a') ->join('wx_user b', ' a.store_id=b.store_id', 'left') ->where(array('is_audit'=>1)) ->field('a.ERPId,a.store_name,b.wxid,b.appid,b.appsecret,b.mchid,b.mchkey,b.headerpic,3.0 as version') ->select(); $oldres = httpRequest(IMPORT_URL . "/API/CustInfo.ashx?method=shoplist", "get"); $jsonres1=""; if ($oldres) { $oldres = json_decode($oldres, true); $oldresdata = $oldres['data']['item']; foreach ($oldresdata as $ku => $vu) { $jsonres['ERPId'] = $oldresdata[$ku]['ERP_DBAccID']; $jsonres['store_name'] = $oldresdata[$ku]['WapName']; $jsonres['wxid'] = $oldresdata[$ku]['WX_Id']; $jsonres['appid'] = $oldresdata[$ku]['WX_appid']; $jsonres['appsecret'] = $oldresdata[$ku]['WX_secret']; $jsonres['mchid'] = $oldresdata[$ku]['WX_MCHID']; $jsonres['mchkey'] = $oldresdata[$ku]['WX_APIKey']; $jsonres['headerpic'] = $oldresdata[$ku]['WX_head_img']; $jsonres['version'] = "2.0"; $jsonres1[] = $jsonres; } } else { $jsonres["code"] = -1; $jsonres["msg"] = "获取失败"; } $jsondd = array_merge($jsonres1, $newres); return json_encode($jsondd); } /*取微信OPENId*/ public function getvipopenid() { try { // $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : ""; $postStr = file_get_contents("php://input"); mlog($postStr, 'getvipopenid'); // $postStr="{\"ERPVIPID\":\"04462f65-adf9-40d0-aca6-86aa22f7d1ea\",\"ACCDB\":\"ppt\"}"; $postjson = json_decode($postStr); if ($postjson != "") { $ERPVIPID = $postjson->ERPVIPID; $ACCDB = $postjson->ACCDB; if ($ERPVIPID != "") { $where["a.erpvipid"] = $ERPVIPID; } if ($ACCDB != "") { $where['s.ERPId'] = $ACCDB; } $res = D('users')->alias("a")->join("store s", ' a.store_id=s.store_id', "left") ->field('a.openid') ->where($where)->find(); if ($res > 0) { $jsonres["STATE"] = 1; $jsonres["MSG"] = "SUCCESS"; $jsonres["OPENID"] = $res['openid']; } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "没有相关数据"; } } else { $jsonres["STATE"] = -1; $jsonres["MSG"] = "传递参数有误!"; } } catch (Exception $ex) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "异常出错"; } return json_encode($jsonres); } /*--根据时间统计新增会员和总会员数--*/ public function getvipcount() { // try { $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : ""; if ($postStr == "") { $postStr = file_get_contents("php://input"); } mlog($postStr, 'getvipcount'); // $postStr="{\"BILLDATE\":\"2017-10-14\",\"ACCDB\":\"ppt\"}"; $postjson = json_decode($postStr,true); if ($postjson != "") { $BILLDATE = $postjson['BILLDATE']; $ACCDB = $postjson['ACCDB']; if ($BILLDATE != "") { $begin=strtotime($BILLDATE." 00:00:00"); $end=strtotime($BILLDATE." 23:59:59"); $where['a.reg_time'] = array('between',"$begin,$end"); } if ($ACCDB != "") { $where1['s.ERPId'] = $ACCDB; $store_res=M('store')->alias('s') ->where($where1)->field('s.store_id')->find(); if (empty($store_res)) { $jsonres["STATE"] = -1; $jsonres["MSG"] = "没有相关数据"; return json_encode($jsonres); } } $where['a.store_id'] = $store_res['store_id']; $vipcount = D('users')->alias("a") ->where('a.store_id',$store_res['store_id'])->count(); $dayvipcount = D('users')->alias("a") ->where($where)->count(); $jsonres["STATE"] = 1; $jsonres["MSG"] = "SUCCESS"; $jsonres["vipcount"] = $vipcount; $jsonres["dayvipcount"] = $dayvipcount; } else{ $jsonres["STATE"] = -1; $jsonres["MSG"] = "参数有误 "; } // } // catch (Exception $ex) { // $jsonres["STATE"] = -1; // $jsonres["MSG"] = "异常出错"; // } return json_encode($jsonres); } /*---推送资源接口---*/ public function send_resources() { $tuidata = new TuiData(); $tuidata->aboutid = erp_uuid(); $tuidata->applogguid = erp_uuid(); mlog('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'send_res'); $tuidata->strAcc = I("Acc");//商户帐套名称 $tuidata->strStoNo = I("StoNo");//仓库编号 $tuidata->strMNo = findNum(I("MNo"));//手机号码 $tuidata->strSum = I("Sum");//金额 $tuidata->strVIPNo = I("VIPNo"); //线上会员号 $tuidata->strBillDate = I("BillDate");//交易时间 $tuidata->strERPVIPId = I("ErpVipid"); //线下ERP会员ID //触发条件 即调用接口时的代码位置 001erp消费 002会员注册 参考表单[WXD_JMHCN_COM_APP].[dbo].[YLP_EnvType]字段classno $tuidata->strusetype = I("usetype", '001'); $tuidata->strRepTitle = urldecode(I("RepTitle"));//本单微信抬头 $tuidata->strRepFooter =urldecode(I("RepFooter"));//本单微信结尾 $tuidata->strPayType = I("PayType");//支付类型 $tuidata->strSQty = I("SQty");//本单商品数量 $tuidata->strintegral = I("PIntegral");//本单获取积分值 $tuidata->strPosNo = I("POSNo");//本单单据单号 $tuidata->strStorageName = I("StorageName");//本单所购商铺名称 $tuidata->intPaySum = I("PaySum/d", 0);//支付类型下的支付金额 $tuidata->strTestUrl = I("YLP_TestUrl"); //是否是测试接口 $data=$tuidata; $curUrl=curHostURL().$_SERVER["REQUEST_URI"]; $colorlist = urlencode("#FF0000|#173177|#173177|#173177|#173177|#173177|#FF0000|#ca003a"); $accdata = M("store")->where('ERPId', $tuidata->strAcc)->find(); $store_id = $accdata['store_id']; mlog("1","send_res"); $srst=$this->loaddata($tuidata,$curUrl); mlog("2","send_res"); if($srst==0){ mlog('发送成功'.$tuidata->strMsg,'send_res'); return json_encode(['code'=>0,'msg'=>'发送成功']); } if ($tuidata->strCode == "40002" || $tuidata->strCode == "40004" || $tuidata->strCode == "40005" || $tuidata->strCode == "40009") { $mobile = $tuidata->strMNo; if (strlen($mobile) > 8) { $mobile = substr($mobile, 0, 3)."****".substr($mobile, 7); } mlog("3","send_res"); $title = "尊敬的会员(" . $mobile . "),您好!本次消费您获得" . $tuidata->strintegral . "个积分!"; $remark = "【" . strStorageName . "】正在进行【" . ActName . "】,只要满足本次活动的消费要求,就有机会获得礼品一份!活动详情请查看店内海报或咨询店员;还可点击消息进入【会员中心】参与更多精彩活动哦!"; $key1 = $tuidata->strSum + "元"; $key2 = $tuidata->strSQty; $key3 = $tuidata->strBillDate; $key4 = $tuidata->strPosNo; $key5 = $tuidata->strStorageName; $backurl = urlencode(curHostURL()."/mobile/User/index/stoid/" . $store_id); $parr['ErpVipid'] = $data->strERPVIPId; $parr['typeid'] = "1001"; $parr['backurl'] = $backurl; $parr['accdb'] = $data->strAcc; $parr['mtel'] = $data->strMNo; $parr['paytype'] = $data->strPayType; $parr['backsourceid'] = $data->back_ylpsourceId; $parr['colorlist'] = $colorlist; $parr['title'] = $title; $parr['key1'] = $key1; $parr['key2'] = $key2; $parr['key3'] = $key3; $parr['key4'] =$key4; $parr['key5'] = $key5; $parr['remark'] = $remark; //插入推送日志 $srrt=$this->send_msg1($parr); $bbl=false; if($srrt['wx_code']==0){ $bbl=true; } $this->wxSendLog($data->strMNo, $data->strAcc,$srrt['msg'],$curUrl,$data->strPayType,$bbl,$srrt['wx_code']); return json_encode(['code'=>0,'msg'=>'发送成功']); } else if ($tuidata->strCode == "40003") { $title = $tuidata->strRepTitle; $remark = $tuidata->strRepFooter; $key1 = $tuidata->strSum + "元"; $key2 = $tuidata->strSQty; $key3 = $tuidata->strBillDate; $key4 = $tuidata->strPosNo; $key5 = $tuidata->strStorageName; $backurl = urlencode(curHostURL()."/mobile/User/index/stoid/" . $store_id); $parr['ErpVipid'] = $data->strERPVIPId; $parr['typeid'] = "1001"; $parr['backurl'] = $backurl; $parr['accdb'] = $data->strAcc; $parr['mtel'] = $data->strMNo; $parr['paytype'] = $data->strPayType; $parr['backsourceid'] = $data->back_ylpsourceId; $parr['colorlist'] = $colorlist; $parr['title'] = $title; $parr['key1'] = $key1; $parr['key2'] = $key2; $parr['key3'] = $key3; $parr['key4']=$key4; $parr['key5'] = $key5; $parr['remark'] = $remark; mlog("4","send_res"); //插入推送日志 $srrt=$this->send_msg1($parr); $bbl=false; if($srrt['wx_code']==0){ $bbl=true; } $this->wxSendLog($data->strMNo, $data->strAcc,$srrt['msg'],$curUrl,$data->strPayType,$bbl,$srrt['wx_code']); return json_encode(['code'=>0,'msg'=>'发送成功']); } return json_encode(['code'=>-9999,'msg'=>$tuidata->strMsg]); } /*--推送错误处理--*/ public function insertBugInfo($data) { $url = TUIHOST . "/API/Resources.ashx?Method=insertbug"; $rs = httpRequest($url,"POST",json_encode($data,JSON_UNESCAPED_UNICODE)); if ($rs) { $dd = json_decode($rs, true); if (!empty($dd) && $dd["code"] == 0) { return "1"; } else { return "插入错误日志失败"; } } else { return "插入错误日志失败"; } } /*--推送错误处理--*/ public function insertBugInfo2($posi,$info, $data) { $bugarr = [ "bugpatch" => $posi, "buginfo" => $info, "mobile" => $data->strMNo, "supplyid" => "", "erpid" => $data->strERPVIPId, "AccDB" => $data->strAcc, "resourcesid" => "", "otherinfo" => str_format("商户帐套名称[{0}]|仓库编号[{1}]|单据金额[{2}]|线上会员号[{3}]", $data->strAcc, $data->strStoNo, $data->strSum, $data->strVIPNo), "memo" => "", "aboutid" => $data->aboutid, ]; $this->insertBugInfo($bugarr); } /*--推送错误处理--*/ public function insertTicketsLog($data) { $url = TUIHOST . "/API/Resources.ashx?Method=ticketslog"; $rs = httpRequest($url,"POST",json_encode($data,JSON_UNESCAPED_UNICODE)); if ($rs) { $dd = json_decode($rs, true); if (!empty($dd) && $dd["code"] == 0) { return "1"; } else { return "插入错误日志失败"; } } else { return "插入错误日志失败"; } } /*--微信在推送错误处理 accdb, mtel, result, false, Request.Url.ToString(), paytype, "-9999" --*/ public function wxSendLog($mtel,$acc,$result,$txt,$pt,$state,$wxcode) { $bugarr = [ "MTel" => $mtel, "AccDB" => $acc, "Result"=>$result, "Text"=>$txt, "PayType" =>$pt, "state" =>$state, "wx_code" =>$wxcode."", ]; $url = TUIHOST . "/API/Resources.ashx?Method=wxtslog"; $rs = httpRequest($url,"POST",json_encode($bugarr,JSON_UNESCAPED_UNICODE)); if ($rs) { $dd = json_decode($rs, true); if (!empty($dd) && $dd["code"] == 0) { return "1"; } else { return "插入错误日志失败"; } } else { return "插入错误日志失败"; } } /*---loaddata---*/ function loaddata($data,$curUrl) { $stodata = M("store")->where('ERPId', $data->strAcc)->find(); $store_id = $stodata['store_id']; $colorlist = urlencode("#FF0000|#173177|#173177|#173177|#173177|#173177|#FF0000|#ca003a"); /*---调用活动接口---*/ $url1 = TUIHOST . "/API/Resources.ashx?Method=getactinfo&ERPDBAccID=" . $data->strAcc; mlog($url1,"send_res"); $rs = httpRequest($url1); if(empty($rs)){ mlog("未连接到接口","send_res"); $this->insertBugInfo2("判断活动是否存在","未连接到接口",$data); $data->strCode = "40003"; $data->strMsg = "商户未参与此次活动"; return -1; } /*---获取活动参数以及该会员参与记录---*/ $accdata = json_decode($rs,true); mlog("返回值:".$accdata['code'],"send_res"); if (empty($accdata) || $accdata['code'] !== 0) { mlog("商户未参与此次活动","send_res"); $this->insertBugInfo2("判断活动是否存在","商户未参与此次活动",$data); $data->strCode = "40003"; $data->strMsg = "商户未参与此次活动"; return -1; } $accarr = $accdata['data']["item"][0]; $data->strresourcesid = $accarr["Id"]; /*--记录有活动的商户的接口调用记录--*/ $ashxlog = [ "supplyid" =>"", "vipno"=>$data->strVIPNo, "accname" => $data->strAcc, "stono" => $data->strStoNo, "mno" => $data->strMNo, "sum" => $data->strSum, "billdate" => $data->strBillDate, "erpvipid" => $data->strERPVIPId, "usetype" => $data->strusetype, "paytype" => $data->strPayType, "posno" => $data->strPosNo, "otherinfo" => ($data->strSQty . "|" . $data->strintegral . "|" . $data->strStorageName . "|" . $data->strTestUrl), "resourceid" => $data->strresourcesid, ]; $url2 = TUIHOST . "/API/Resources.ashx?Method=ylpashxlog"; $rs = httpRequest($url2,"POST",json_encode($ashxlog,JSON_UNESCAPED_UNICODE)); //判断是否是线下会员 $userrs = M("users")->where("store_id", $store_id)->where('erpvipid',$data->strERPVIPId)->find(); if (empty($userrs) || empty($userrs["openid"])) { mlog("指定线下会员未绑定到线上","send_res"); $this->insertBugInfo2("判断是否是线下会员","指定线下会员未绑定到线上",$data); $data->strCode = "40002"; $data->strMsg = "指定线下会员未绑定到线上"; return -1; } $data->openid = $userrs["openid"]; //每个会员可获得活动票券限数 $ToVIPQty = $accarr["ToVIPQty"]; $url2 = TUIHOST . "/API/Resources.ashx?Method=PushSearch&"; $numdata = [ "ERPDBAccID" => $data->strAcc, "ActNo" => $accarr['ActNo'], "MTel" => $data->strMNo, "State" => 1, ]; $url2=$url2.parameter_connect($numdata); $rs = httpRequest($url2); $numdata = json_decode($rs, true); if (empty($numdata) || $numdata["code"] !== 0) { mlog("未获取到每个会员参与活动数","send_res"); $this->insertBugInfo2("获取每个会员的参与活动数","未获取到每个会员参与活动数",$data); $data->strCode = "40002"; $data->strMsg = "未获取到每个会员参与活动数"; return -1; } //每个会员已获得已参加活动数 $VipQty = $numdata['data']['total']; //中奖概率最大值 $ProbabilityCount = $accarr["ProbabilityCount"]; //中奖概率限定值,即0到该值的数即为中奖 $ProbabilityInQty = $accarr["ProbabilityInQty"]; //获取模版标题参数 $data->key2 = $accarr["postitle"]; //获取模版备注参数 $data->remark = $accarr["posremark"]; //获取活动设置支付类型参数 $ToPayType = $accarr["PayType"]; //获取活动名称 $data->ActName = $accarr["ActName"]; $data->strActNo = $accarr["ActNo"]; mlog("活动名称:" . $data->ActName, "send_res"); /*-----判断单据金额-----*/ if (empty($data->strSum)) { mlog("单据金额换算异常","send_res"); $this->insertBugInfo2("判断单据金额是否超过设定值","单据金额换算异常",$data); $data->strCode = "40005"; $data->strMsg = "单据金额换算异常"; return -1; } if ($data->strSum < $accarr["possum"]) { mlog("单据金额不足","send_res"); $this->insertBugInfo2("判断单据金额是否超过设定值","单据金额不足",$data); $data->strCode = "40004"; $data->strMsg = "单据金额不足"; return -1; } /*----抽奖$accarr---*/ $allpro= $accarr["ProbabilityCount"]; $ran = Rand(0,$allpro); //未抽中 $proinqy=$accarr["ProbabilityInQty"]; if ($ran > $proinqy) { $da["Id"] = $data->applogguid; $da["FromId"] = $accarr["Id"]; $da["Tel"] = $data->strMNo; $da["BillDate"] = date('Y-m-d H:i:s'); $da["State"] = "0"; $da["EnvType"] = $data->strusetype; $da["PayType"] = $data->strPayType; $da["Type"] = $accarr['type']; $da["Remark"] = "未抽中礼品"; $rr = $this->insertTicketsLog($da); if ($rr != "1") { mlog("存储抽中记录表失败","send_res"); $this->insertBugInfo2( "抽奖","存储抽中记录表失败",$data); $data->strCode = "40007"; $data->strMsg = "存储抽中记录表失败"; return -1; } $this->insertBugInfo2("抽奖","未抽中礼品",$data); mlog("未抽中礼品","send_res"); $strmnotemp = $data->strMNo; if (strlen($strmnotemp) > 8) { $strmnotemp = substr($strmnotemp, 0, 3)."****".substr($strmnotemp, 7); } $title = "尊敬的会员(" . $strmnotemp . "),您好!本次消费您获得" . $data->strintegral . "个积分!"; $remark ="【" . $data->strStorageName . "】正在进行【" . $data->ActName . "】,很遗憾您本次消费没有抽中礼品。不过没关系,点击消息进入【会员中心】参与更多精彩活动吧!"; $key1 = $data->strSum . "元"; $key2 = $data->strSQty; $key3 = $data->strBillDate; $key4 = $data->strPosNo; $key5 = $data->strStorageName; $backurl = urldecode(curHostURL()."/mobile/User/index/stoid/" . $store_id); $parr['ErpVipid'] = $data->strERPVIPId; $parr['typeid'] = "1001"; $parr['backurl'] = $backurl; $parr['accdb'] = $data->strAcc; $parr['mtel'] = $data->strMNo; $parr['paytype'] = $data->strPayType; $parr['backsourceid'] = $data->back_ylpsourceId; $parr['colorlist'] = $colorlist; $parr['title'] = $title; $parr['key1'] = $key1; $parr['key2'] = $key2; $parr['key3'] = $key3; $parr['key4'] = $key4; $parr['key5'] = $key5; $parr['remark'] = $remark; $rrst=$this->send_msg1($parr); //插入推送日志 $bbl=false; if($rrst['wx_code']==0){ $bbl=true; } $this->wxSendLog($data->strMNo, $data->strAcc,$rrst['msg'],$curUrl,$data->strPayType,$bbl,$rrst['wx_code']); mlog("未抽中礼品2","send_res"); $data->strCode = "40008"; $data->strMsg = "未抽中礼品"; return 0; } //抽中 else { //看的哪一个资源 $rrss = $this->GetZhongJiangZiYuanType($accarr, $data->strSum, $data->strusetype, $data->strStoNo, $data->strPayType, $data->intPaySum,$data); $strhongdong_type=$rrss['strtype']; if ($rrss["code"] == -1) { mlog("判断购买单据是否满足资源设定","send_res"); $this->insertBugInfo2("判断购买单据是否满足资源设定",$rrss["err"],$data); $data->strCode = "40009"; $data->strMsg = "购买单据未满足资源设定"; return -1; } //抽中后通过YLP接口获取礼品(活动票券),并记录数据库 if (empty($data->strTestUrl)) $data->strTestUrl = "http://source-api.yolipai.com"; $wx_da = M('wx_user')->where('store_id', $store_id)->find(); $straccid = $wx_da["wxid"]; //通过传入参数获取微信参数所需的部分参数(接口传入参数:clientid--帐套名,depotcode--仓库编号,price--金额,phone--手机号码,type--资源类型(tongyong,liuliang,lipin),account_id---微信accountid,activityName活动名称) $strpaytemp = "CASH"; switch ($data->strPayType) { case "7382D97B-AD5F-4515-B31E-1759328A70A2": $strpaytemp = "ALIPAY"; break; case "438C0393-F4D6-48DF-9473-10F19E8D7398": $strpaytemp = "WEIXIN"; break; default: $strpaytemp = "CASH"; break; } //通过传入参数获取微信参数所需的部分参数(接口传入参数:clientid--帐套名,depotcode--仓库编号,price--金额,phone--手机号码,type--资源类型(tongyong,liuliang,lipin),account_id---微信accountid,activityName活动名称) $strUrl = $data->strTestUrl . '/v1/library/sendGift.json?'; $parr = [ 'clientId' => $data->strAcc, 'depotCode' => $data->strStoNo, 'price' => $data->strSum, 'phone' => $data->strMNo, 'type' => $strhongdong_type, 'account_id' => $straccid, 'activityName' => urlencode($accarr['ActName']), 'activityId' => $accarr['ActNo'], 'payType' => $strpaytemp ]; $strUrl = $strUrl . parameter_connect($parr); mlog($strUrl, "send_res"); $strres = httpRequest($strUrl); if ($strres) { $strdata=json_decode($strres,true); $errstr=""; if(empty($strdata) ){ mlog("发送资源接口错误","send_res"); $this->insertBugInfo2("发送资源","发送资源接口错误",$data); $data->strCode = "40011"; $data->strMsg = "存储YLP接口调用log失败"; return -1; } $url2 = TUIHOST . "/API/Resources.ashx?Method=ylplog"; $ndata = [ "AccDB" => $data->strAcc, "MTel" => $data->strMNo, "Text" => $strres, "url" => $url2, ]; $rs = httpRequest($url2, "POST", json_encode($ndata, JSON_UNESCAPED_UNICODE)); $mdata = json_decode($rs, true); if (empty($mdata) || $mdata["code"] !== 0) { mlog("存储YLP接口调用log失败","send_res"); $this->insertBugInfo2("存储有礼派返回数据异常","存储YLP接口调用log失败",$data); $data->strCode = "40011"; $data->strMsg = "存储YLP接口调用log失败"; return -1; } $da["Id"] = $data->applogguid; $da["FromId"] = $accarr["Id"]; $da["Tel"] = $data->strMNo; $da["BillDate"] = date('Y-m-d H:i:s'); $da["State"] = "1"; $da["EnvType"] = $data->strusetype; $da["PayType"] = $data->strPayType; $da["Type"] = $accarr['type']; $da["Remark"] = "抽中礼品"; $rr = $this->insertTicketsLog($da); if ($rr != "1") { mlog("存储抽中记录失败","send_res"); $this->insertBugInfo2("存储抽中记录失败","存储抽中记录失败",$data); $data->strCode = "40012"; $data->strMsg = "存储抽中记录失败"; return -1; } /*---更新有礼派资源表---*/ $url2 = TUIHOST . "/API/Resources.ashx?Method=updateqty"; $kdata=[ "typeindex"=>$rrss['typeindex'], "actno"=>$accarr["ActNo"] ]; //{"code": 0,"message": "成功","data": { "title": "微信活动票券标题", "desc": "微信活动票券描述", "url": "http://dev.yolipai.com/subject/ticket/access.html","sourceId": "c874580857184d52af6a420313798a6f" }} $rs = httpRequest($url2, "POST", json_encode($kdata, JSON_UNESCAPED_UNICODE)); $mdata = json_decode($rs, true); if (empty($mdata) || $mdata["code"] !== 0) { mlog("存储抽中记录失败","send_res"); $this->insertBugInfo2("存储抽中记录失败", "存储抽中记录失败",$data); $data->strCode = "40012"; $data->strMsg = "存储抽中记录失败"; return -1; } /*----要开始推送----*/ $title = ""; $remark = ""; $key1 = ""; $key2 = ""; $key3 = ""; $key4 = ""; $key5 = ""; $backurl = ""; $back_ylpsourceId =""; if($strdata['code']==0){ $url2=TUIHOST . "/API/Resources.ashx?Method=restype"; $ndata=[ "restype"=>$strhongdong_type ]; $jrs = httpRequest($url2, "POST", json_encode($ndata, JSON_UNESCAPED_UNICODE)); $mjdata = json_decode($jrs, true); $lipinName=$mjdata['data']['item'][0]['retitle']; $mob = $data->strMNo; if (strlen($mob) > 8) { $mob = substr($mob,0, 3). "****".substr($mob,7); } $title = "尊敬的会员(".$mob."),您好!本次消费您获得".$data->strintegral."个积分!"; $remark = "恭喜!您成功获得了由【".$data->strStorageName."】赠送的【".$lipinName."】,点击消息马上领取礼品吧!"; $key1 = $data->strSum + "元"; $key2 = $data->strSQty; $key3 = $data->strBillDate; $key4 = $data->strPosNo; $key5 = $data->strStorageName; $backurl =$strdata["data"]["url"]; $back_ylpsourceId = $strdata["data"]["sourceid"]; }else{ $this->insertBugInfo2( "YLP调用接口失败","YLP调用接口失败".+ $strdata["message"], $data); $data->strCode = "40013"; $data->strMsg = "YLP调用接口失败"; return -1; } $parr['ErpVipid'] = $data->strERPVIPId; $parr['typeid'] = "1001"; $parr['backurl'] = $backurl; $parr['accdb'] = $data->strAcc; $parr['mtel'] = $data->strMNo; $parr['paytype'] = $data->strPayType; $parr['backsourceid'] = $data->back_ylpsourceId; $parr['colorlist'] = $colorlist; $parr['title'] = $title; $parr['key1'] = $key1; $parr['key2'] = $key2; $parr['key3'] = $key3; $parr['key4'] = $key4; $parr['key5'] = $key5; $parr['remark'] = $remark; $tuires=$this->send_msg1($parr); //插入推送日志 $bbl=false; if($tuires['wx_code']==0){ $bbl=true; } $this->wxSendLog($data->strMNo, $data->strAcc,$tuires['msg'],$curUrl,$data->strPayType,$bbl,$tuires['wx_code']); if($tuires['code']==0){ //调用有礼派核实接口 $sUrl = str_format("{4}/v1/library/sourceNotify.json?clientId={0}&phone={1}&type={2}&sourceId={3}", $data->strAcc, $data->strMNo, $strhongdong_type, $back_ylpsourceId, $data->strTestUrl); $srs= strtolower(httpRequest($sUrl)); if (!empty($srs)) { $srsdata = json_decode($srs, true); if (empty($srsdata)) { mlog("存储有礼派资源确认调用失败","send_res"); $this->insertBugInfo2("存储有礼派资源确认调用", "存储有礼派资源确认调用失败", $data); $data->strCode = "40014"; $data->strMsg = "YLP调用接口失败"; return -1; } $ddd = [ "Id" => erp_uuid(), "clientId" => $data->strAcc, "phone" => $data->strMNo, "sourcetype" => $strhongdong_type, "sourceId" => $back_ylpsourceId, "backcode" => $srsdata['code'], "backmsg" => $srsdata['message'], "aboutid" => $data->aboutid, ]; $url2 = TUIHOST . "/API/Resources.ashx?Method=ylpsourcelog"; $jrs = httpRequest($url2, "POST", json_encode($ddd, JSON_UNESCAPED_UNICODE)); $mwdata = json_decode($jrs, true); if (empty($mwdata) || $mwdata["code"] !== 0) { mlog("存储有礼派资源确认调用log记录失败","send_res"); $this->insertBugInfo("存储有礼派资源确认", "存储有礼派资源确认调用log记录失败", $data); $data->strCode = "40016"; $data->strMsg = "存储有礼派资源确认log记录失败"; return; } $data->strCode = "0"; $data->strMsg = "推送成功"; }else{ mlog("存储有礼派资源确认调用失败","send_res"); $this->insertBugInfo2("存储有礼派资源确认调用", "存储有礼派资源确认调用失败", $data); $data->strCode = "40014"; $data->strMsg = "YLP调用接口失败"; return -1; } }else{ mlog("微信模版消息发送失败23232","send_res"); $this->insertBugInfo2("微信模版消息接口调用","微信模版消息发送失败",$data); $data->strCode = "40014"; $data->strMsg = "微信模版消息发送失败"; return -1; } } else{ mlog("发送资源接口错误","send_res"); $this->insertBugInfo2("发送资源","发送资源接口错误",$data); $data->strCode = "40015"; $data->strMsg = "存储YLP接口调用log失败"; return -1; } } } public function GetZhongJiangZiYuanType($accarr,$alldata){ $billmoney=$alldata->strSum; $usetype=$alldata->strusetype; $stono=$alldata->strStoNo; $paytype=$alldata->strPayType; $paysum=$alldata->intPaySum; $tempmsg = "";//用于存储整个资源选中失败过程 $typeindex = ""; $typeindex_val = 1; $strtype = ""; //获取该获取的参数 $typerate1 = $accarr["tr1"];//概率1 $typerate2 = $accarr["tr2"];//概率2 $typerate3 = $accarr["tr3"];//概率3 mlog("值1:".$typerate1."值2:".$typerate2."值3:".$typerate3, "send_res"); $ran_int = rand(0, $typerate1 + $typerate2 + $typerate3 - 1);//获取随机数 //当资源1有剩余数 且 随机数在资源1区间内 或者随机数在资源3区间但资源3没有剩余数了 其他两种个情况类似 if ($ran_int < $typerate1) { $data=$this->IsCheck_Type("1", $accarr, $billmoney, $usetype, $stono, $paytype, $paysum,$alldata); if($data["code"]==0) { $typeindex_val = 1; $strtype=$data["err"]; } }else{ if ($ran_int < $typerate1 + $typerate2) { $data = $this->IsCheck_Type("2", $accarr, $billmoney, $usetype, $stono, $paytype, $paysum,$alldata); if($data["code"]==0) { $typeindex_val = 2; $strtype=$data["err"]; } } else { $data =$this->IsCheck_Type("3", $accarr, $billmoney, $usetype, $stono, $paytype, $paysum,$alldata); if($data["code"]==0) { $typeindex_val = 3; $strtype=$data["err"]; } } } //为空表示 抽中的资源未满足条件无法发送资源 顺移下一资源继续判断 if (empty($strtype)) { $tempmsg = $typeindex ."|".$typeindex_val."|".$tempmsg; $typeindex_val++; $typeindex_val = $typeindex_val % 3; if ($typeindex_val == 0) $typeindex_val = 3; $data =$this->IsCheck_Type($typeindex_val."", $accarr, $billmoney, $usetype, $stono, $paytype, $paysum,$alldata); if($data["code"]==0) { $strtype=$data["err"]; } } //为空表示 抽中的资源未满足条件无法发送资源 顺移下一资源继续判断 if (empty($strtype)) { $tempmsg = $typeindex ."|".$typeindex_val."|".$tempmsg; $typeindex_val++; $typeindex_val = $typeindex_val % 3; if ($typeindex_val == 0) $typeindex_val = 3; $data =$this->IsCheck_Type($typeindex_val."", $accarr, $billmoney, $usetype, $stono, $paytype, $paysum,$alldata); if($data["code"]==0) { $strtype=$data["err"]; } } //抽取资源成功 if ($strtype != "") { $typeindex = $typeindex_val.""; return ['code'=>0,'typeindex'=>$typeindex,'strtype'=>$strtype]; } //经过上面的步骤没有取得值的话表示都没有资源剩余数了 else { $tempmsg = $typeindex. "|" .$typeindex_val."|".$tempmsg; return ['code'=>-1,'err'=>$tempmsg]; } } ///当前条件:1、剩余资源数 2、会员可领取资源数(0表示无限制) 3、购买金额区间值 4、触发事件是否满足设定的触发条件(001:ERP 002:手店会员注册 具体参考数据库表[WXD_JMHCN_COM_APP].[dbo].[YLP_EnvType]) /// /// 当前资源类型被选中时,是否满足条件 /// /// 判定的资源属于资源设定中的1、2、3,输入的值为1、2、3 /// 活动设定的记录 /// 单据金额 /// 触发条件 /// public function IsCheck_Type($typeindex, $accarr,$billmoney, $usetype,$stono, $paytype, $paysum,$data) { $result = ""; $errtip = ""; //当前资源名称 $resources_type = ($typeindex == "2" ? $accarr["Type1"] : ($typeindex == "3" ? $accarr["Type2"] : $accarr["type"])); $typerate = $accarr["tr".$typeindex]; if ($typerate <= 0) { return [ 'err'=>"1资源未进入设定抽奖列表[".$resources_type."|中奖概率".$typerate ."|资源".$typeindex ."]", 'code'=>"-1" ]; } //判断剩余资源数是否大于0 $qty = $accarr["q".$typeindex];//剩余资源数 if($qty <= 0) { return [ 'err'=>"剩余资源数不足[" . $resources_type . "]", 'code'=>"-1" ]; } //判断会员可领取资源数是否已超出限额 $url2 = TUIHOST . "/API/Resources.ashx?Method=PushSearch&"; $numdata = [ "ERPDBAccID" => $data->strAcc, "ActNo" => $accarr['ActNo'], "MTel" => $data->strMNo, "State" => 1, "ResourceType"=>$resources_type ]; $url2=$url2.parameter_connect($numdata); $rs = httpRequest($url2); $numda= json_decode($rs, true); if (empty($numda) || $numda["code"] != 0) { return [ 'err'=>"未找到资源参与数量", 'code'=>"-1" ]; } $cz_count =$numda['data']['total'];//获取该会员针对该活动该资源的已抽中次数 $set_cz_count = $accarr["ToVIPQty".$typeindex];//剩余资源数 if (!(set_cz_count == 0 || cz_count < set_cz_count)) { return [ 'err'=>"会员此次活动抽中次数已经超出设定[".resources_type."|已抽中次数". $cz_count."|设定次数".$set_cz_count."]", 'code'=>"-1" ]; } //判断购买的金额是否在设定区间中 if (!empty($billmoney)) { $set_sprice = $accarr["TypeSPrice".$typeindex]; $set_eprice = $accarr["TypeEPrice".$typeindex]; if (!($set_sprice == 0 || $billmoney >= $set_sprice)) { return [ 'err' => "单据金额小于设定最小值[" . $resources_type . "|本单金额" . $billmoney . "|最小值" + $set_sprice + "]", 'code' => "-1" ]; } if (!($set_eprice == 0 || $billmoney <= $set_eprice)) { return [ 'err' => "单据金额大于设定最大值[" . resources_type . "|本单金额" . $billmoney . "|最大值" . set_eprice . "]", 'code' => "-1" ]; } } //判断触发事件是否满足设定的触发条件 $set_typeenvlist = $accarr["TypeEnvList".$typeindex]; if( explode("[".$usetype."]",$set_typeenvlist)< 2) { return [ 'err' =>"未满足资源发放条件[".$resources_type."|触发环境".$set_typeenvlist."]", 'code' => "-1" ]; } //当前资源名称 参考[WXD_JMHCN_COM_APP].[dbo].[YLP_ResourcesType]表字段title $set_StorageNo = ($typeindex == "2" ? $accarr["StorageNo2"]: ($typeindex == "3" ? $accarr["StorageNo3"]: $accarr["StorageNo"])); //判断该门店是否有参与此次活动,未设置参与门店时为全部参与 if (!empty($set_StorageNo) && (!empty($stono) && explode("[".$stono."]",$set_StorageNo) < 2)) { return [ 'err' =>"门店未参与此次活动[".$stono."|设定门店:".$set_StorageNo. "]", 'code' => "-1" ]; } //判断活动是否设置支付类型且本单是否为制定支付类型 $set_paytype = ($typeindex == "2" ? $accarr["PayType2"] : ($typeindex == "3" ? $accarr["PayType3"]: $accarr["PayType"])); //三种情况不满足抽奖条件(资源类型的支付不为空时) 1:活动设置有设置支付方式但接口未传入支付方式 2接口传入支付方式,但支付方式不在设定的支付方式内 3接入方式等于设定支付方式但支付金额为0 if(!empty($set_paytype)) { if ( empty($paytype) || (!empty($paytype) && explode($paytype, $set_paytype) < 2) || (!empty($paytype) && explode($paytype, $set_paytype) >1 && $paysum <= 0) ) { return [ 'err' => "支付方式未满足条件[" . $paytype . "|设定支付方式:" . $set_paytype . "]", 'code' => "-1" ]; } } /*--返回资源--*/ return [ 'err' =>$resources_type, 'code' => "0" ]; } /*---推送消息模板接口模式---*/ public function send_msg() { /*---账套---*/ $ErpVipid = I("ErpVipid"); $typeid = I("typeid"); $backurl = I("backurl"); $accdb = I("accdb"); $mtel = I("mtel"); $paytype = I("paytype"); $backsourceid = I("backsourceid"); $colorlist = I("colorlist"); $url = I("sendurl"); //如果有微信公众号 则推送一条消息到微信 $rrs = M("store")->where("ERPId", $accdb)->find(); if (empty($rrs)) { return json(['code' => -1, 'msg' => '发送失败,未找到门店v3']); } $wx_user = M('wx_user')->where('store_id', $rrs['store_id'])->find(); $userdate = M('users')->where('erpvipid', $ErpVipid)->where('store_id', $rrs['store_id'])->find(); if (empty($userdate)) { return json(['code' => -1, 'msg' => '发送失败,指定线下会员未绑定线上v3']); } if (empty($userdate['openid'])) { return json(['code' => -1, 'msg' => '发送失败,线上会员openid为空v3']); } if ($wx_user) { $jssdk = new \app\mobile\logic\Jssdk($wx_user['appid'], $wx_user['appsecret']); $sendlist = M('wx_sendlist')->where('typeid', $typeid)->where("store_id", $rrs['store_id'])->find(); if ($sendlist) { $sendt = M('wx_sendtype')->where('typeid', $typeid)->find(); $mdataarr = explode(",", $sendt["myfieldlist"]); $postdata = null; /*--双数组,确定推送内容--*/ foreach ($mdataarr as $ku => $vu) { $postdata[] = I($vu); } $postdata[]=$colorlist; $r=$jssdk->WeiXin_MassageModelSend($rrs['store_id'], $userdate['openid'], $typeid, $backurl, $postdata,$sendlist,$sendt); if($r){ $bb=false; if($r['wx_code']==0){ $bb=true; } $this->wxSendLog($mtel,$accdb,$r['msg'],$url,$paytype,$bb,$r['wxcode']); return ['wx_code' =>$r['wxcode'], 'msg' => $r['msg']]; }else{ $this->wxSendLog($mtel,$accdb,'WeiXin_MassageModelSend函数调用失败v3' ,$url,$paytype,false,-9999); return ['wx_code' =>-9999, 'msg' =>'WeiXin_MassageModelSend函数调用失败v3']; } } else { $this->wxSendLog($mtel,$accdb,'商家未设置推送模板v3' ,$url,$paytype,false,-9999); return ['wx_code' =>-9999, 'msg' => '商家未设置推送模板v3']; } } else { $this->wxSendLog($mtel,$accdb,'未找到门店的微信信息v3' ,$url,$paytype,false,-9999); return ['wx_code' => -9999, 'msg' => '未找到门店的微信信息v3']; } } /*---推送消息函数模式---*/ public function send_msg1($pd) { /*---账套---*/ $ErpVipid = $pd["ErpVipid"]; $typeid = $pd["typeid"]; $backurl = $pd["backurl"]; $accdb = $pd["accdb"]; $mtel = $pd["mtel"]; $paytype = $pd["paytype"]; $backsourceid = $pd["backsourceid"]; $colorlist = $pd["colorlist"]; //如果有微信公众号 则推送一条消息到微信 $rrs = M("store")->where("ERPId", $accdb)->find(); if (empty($rrs)) { return ['wx_code' => -9999, 'msg' => '发送失败,未找到门店v3']; } $wx_user = M('wx_user')->where('store_id', $rrs['store_id'])->find(); $userdate = M('users')->where('erpvipid', $ErpVipid)->where('store_id', $rrs['store_id'])->find(); if (empty($userdate)) { return ['wx_code' =>-9999, 'msg' => '发送失败,指定线下会员未绑定线上v3']; } if (empty($userdate['openid'])) { return ['wx_code' => -9999, 'msg' => '发送失败,线上会员openid为空v3']; } if ($wx_user) { $jssdk = new \app\mobile\logic\Jssdk($wx_user['appid'], $wx_user['appsecret']); $sendlist = M('wx_sendlist')->where('typeid', $typeid)->where("store_id", $rrs['store_id'])->find(); if ($sendlist) { $sendt = M('wx_sendtype')->where('typeid', $typeid)->find(); $mdataarr = explode(",", $sendt["myfieldlist"]); $postdata = null; /*--双数组,确定推送内容--*/ foreach ($mdataarr as $ku => $vu) { $postdata[] = $pd[$vu]; } $postdata[]=$colorlist; mlog("微信推送链接地址 :".$backurl,"WeiXin_MassageModelSend/".$rrs['store_id']); $rt=$jssdk->WeiXin_MassageModelSend($rrs['store_id'], $userdate['openid'], $typeid, $backurl, $postdata,$sendlist,$sendt); if($rt){ return ['wx_code' =>$rt['wxcode'], 'msg' => $rt['wx_code']]; }else{ return ['wx_code' =>-9999, 'msg' =>'WeiXin_MassageModelSend函数调用失败v3']; } } else { return ['wx_code' =>-9999, 'msg' => '商家未设置推送模板v3']; } } else { return ['wx_code' => -9999, 'msg' => '未找到门店的微信信息v3']; } } /*---ERP批推送消息函数模式---*/ public function batchsendwx() { $postStr = file_get_contents("php://input"); if (empty($postStr)) { $postStr = isset($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : ""; } // 测试 // $postStr['accdb']="ppt"; // $postStr['typeid']="1006"; // $postStr['backurl']=""; // // // $userlist['openid']="ou608v4s8TmwUsGLtJKDvdPKat5w"; // $userlist['title']="尊敬的苏明海"; // $userlist['key1']="key1"; // $userlist['key2']="key2"; // $userlist['key3']="key3"; // $userlist['remark']="内容00000111"; // // // $userlist1['openid']="ou608v9ZV-CDUZsuTPGn1VieeDGM"; // $userlist1['title']="尊敬的李伟明"; // $userlist1['key1']="key1"; // $userlist1['key2']="key2"; // $userlist['key3']="key3"; // $userlist1['remark']="内容22222222"; // // $postStr['userlsit']=array($userlist,$userlist1); // $postStr=json_encode($postStr); // $postStr="{\"number\":\"20180310001\",\"accdb\":\"ppt\",\"typeid\":\"1014\",\"backurl\":\"\",\"userlist\":[{\"mob\":\"15280886762\",\"openid\":\"ou608v11_5KHrLUFTs9hHXHUKLfo\",\"title\":\"恭喜您报名成功\",\"key1\":\"活动名称\",\"key2\":\"2017-12-29\",\"key3\":\"活动地点\",\"key4\":\"小强\",\"remark\":\"谢谢您的光临\"}]}"; // 测试 if (empty($postStr)) { return json_encode(['wx_code' =>"-1", 'msg' =>'传递参数有误']); } $postjson = json_decode($postStr,true); /*---账套---*/ $typeid = $postjson["typeid"]; $backurl = $postjson["backurl"]; $accdb = $postjson["accdb"]; $number=$postjson["number"];//批次号 mlog("批次号".$number.":".$postStr, 'batch_sendmsg/'.$accdb); $colorlist=""; $userlist=$postjson["userlist"]; if (empty($userlist)) { return json_encode(['wx_code' =>"-1", 'msg' =>'列表为空']); } //如果有微信公众号 则推送一条消息到微信 $rrs = M("store")->where("ERPId", $accdb)->find(); if (empty($rrs)) { return json_encode(['code' => -9999, 'msg' => '发送失败,未找到门店v3']); } $wx_user = M('wx_user')->where('store_id', $rrs['store_id'])->find(); if (empty($wx_user['appid']) || empty($wx_user['appsecret'])) { return json_encode(['code' => -9999, 'msg' => '微信配置有误!']); } $jssdk = new \app\mobile\logic\Jssdk($wx_user['appid'], $wx_user['appsecret']); $sendlist = M('wx_sendlist')->where('typeid', $typeid)->where("store_id", $rrs['store_id'])->find(); $sendt = M('wx_sendtype')->where('typeid', $typeid)->find(); if (empty($sendlist)) { return json_encode(['code' =>-9999, 'msg' => '商家未设置推送模板v3']); } foreach ($userlist as $val) { $wxopenid = $val['openid']; $mobile= $val['mob']; if ($wx_user) { $mdataarr = explode(",", $sendt["myfieldlist"]); $postdata = null; /*--双数组,确定推送内容--*/ foreach ($mdataarr as $ku => $vu) { $postdata[] = $val[$vu]; } $postdata[] = $colorlist; $rt = $jssdk->WeiXin_MassageModelSend($rrs['store_id'], $wxopenid, $typeid, $backurl, $postdata, $sendlist, $sendt,$number,$mobile); // if ($rt) { // return json_encode(['wx_code' => $rt['wxcode'], 'msg' => $rt['msg']]); // } else { // return json_encode(['code' => -9999, 'msg' => 'WeiXin_MassageModelSend函数调用失败v3']); // } } } return json_encode(['code' =>"0", 'msg' =>'发送成功']); } /*-------- 微信推送 -------*/ public function poswxcode(){ $ErpVipid=I('ErpVipid');//ERP线下会员Id $Acc=I('Acc');//账套 //mlog("0",'poswxcode/'.$Acc); $typeid=I('typeid');//微信消息类型 1001至1010 $title=I('title'); $remark=I('remark'); $key1=I('key1'); $key2=I('key2'); $key3=I('key3'); $key4=I('key4'); $key5=I('key5'); $key6=I('key6'); $key7=I('key7'); $key8=I('key8'); $key9=I('key9'); $key10=I('key10'); $key11=I('key11'); $key12=I('key12'); $key13=I('key13'); $key14=I('key14'); $key15=I('key15'); $colorlist=I('colorlist'); $backurl=I('backurl'); if (empty($ErpVipid) || empty($Acc)) { echo json_encode(array('code' => -1, 'msg' => '参数有误', 'data' => '',)); die; } //mlog("1",'poswxcode/'.$Acc); $userinfo = M('users')->alias('a') ->join('wx_user b','a.store_id=b.store_id') ->field("a.*,b.appid,b.appsecret") ->where(array('a.erpvipid'=>$ErpVipid))->find(); if ($userinfo) { if ($userinfo['openid']!="") { $wxsend = M('wx_sendlist')->alias('a') ->join('wx_sendtype b', 'a.typeid=b.typeid') ->where(array('a.store_id' => $userinfo['store_id'], 'a.typeid' => $typeid))->find(); if ($wxsend) { if ($colorlist) { $colorlist = $colorlist; } else { $colorlist = urlencode("#FF0000|#173177|#173177|#173177|#173177|#173177|#FF0000|#ca003a"); } $pd['title'] = $title; $pd['key1'] = $key1; $pd['key2'] = $key2; $pd['key3'] =$key3; $pd['key4'] = $key4; $pd['key5'] = $key5; $pd['remark'] = $remark; $mdataarr = explode(",", $wxsend["myfieldlist"]); $postdata = null; /*--双数组,确定推送内容--*/ $i=0; foreach ($mdataarr as $ku => $vu) { $postdata[$i.''] = $pd[$vu]; $i++; } $postdata['colorlist'] = $colorlist; //mlog("2",'poswxcode/'.$Acc); $jssdk = new \app\mobile\logic\Jssdk($userinfo['appid'], $userinfo['appsecret']); $r = $jssdk->WeiXin_MassageModelSend($userinfo['store_id'], $userinfo['openid'], $wxsend['typeid'], $backurl, $postdata); //mlog(json_encode($r),'poswxcode/'.$Acc); if ($r['wxcode'] == 0) { $return_arr = array('code' => 0, 'msg' => '发送成功', 'data' => '',); } else { $return_arr = array('code' => -1, 'msg' => '发送失败' . $r['msg'], 'data' => '',); } } else { $return_arr = array('code' => -1, 'msg' => '找不到微信消息类型', 'data' => '',); } } else { $return_arr = array('code' => -1, 'msg' => '该手机号未绑定线上会员', 'data' => '',); } } else { $return_arr = array('code' => -1, 'msg' => '会员手机号不存在', 'data' => '',); } echo json_encode($return_arr); } /*-------- 微信推送 -------*/ public function poswxcode2($data){ //$ErpVipid=I('ErpVipid');//ERP线下会员Id //$Acc=I('Acc');//账套 //mlog("0",'poswxcode/'.$Acc); /*--- $typeid=I('typeid');//微信消息类型 1001至1010 $title=I('title'); $remark=I('remark'); $key1=I('key1'); $key2=I('key2'); $key3=I('key3'); $key4=I('key4'); $key5=I('key5'); $key6=I('key6'); $key7=I('key7'); $key8=I('key8'); $key9=I('key9'); $key10=I('key10'); $key11=I('key11'); $key12=I('key12'); $key13=I('key13'); $key14=I('key14'); $key15=I('key15'); $colorlist=I('colorlist'); $backurl=I('backurl');---*/ $typeid=$data['typeid'];//微信消息类型 1001至1010 $title=$data['title']; $remark=$data['remark']; $key1=$data['key1']; $key2=$data['key2']; $key3=$data['key3']; $key4=$data['key4']; $key5=$data['key5']; $colorlist=$data['colorlist']; $backurl=$data['backurl']; $Acc=$data['Acc']; $user_id=$data['user_id']; if (empty($user_id)) { return array('code' => -1, 'msg' => '参数有误', 'data' => '',); die; } //mlog("1",'poswxcode/'.$Acc); $userinfo = M('users')->where(array('user_id'=>$user_id))->find(); if ($userinfo) { $wx_user=M('wx_user')->where('store_id',$userinfo['store_id']) ->field('appid,appsecret')->find(); $userinfo['appid']=$wx_user['appid']; $userinfo['appsecret']=$wx_user['appsecret']; if ($userinfo['openid']!="") { $wxsend = M('wx_sendlist')->alias('a') ->join('wx_sendtype b', 'a.typeid=b.typeid') ->where(array('a.store_id' => $userinfo['store_id'], 'a.typeid' => $typeid))->find(); if ($wxsend) { if ($colorlist) { $colorlist = $colorlist; } else { $colorlist = urlencode("#FF0000|#173177|#173177|#173177|#173177|#173177|#FF0000|#ca003a"); } $pd['title'] = $title; $pd['key1'] = $key1; $pd['key2'] = $key2; $pd['key3'] =$key3; $pd['key4'] = $key4; $pd['key5'] = $key5; $pd['remark'] = $remark; $mdataarr = explode(",", $wxsend["myfieldlist"]); $postdata = null; /*--双数组,确定推送内容--*/ $i=0; foreach ($mdataarr as $ku => $vu) { $postdata[$i.''] = $pd[$vu]; $i++; } $postdata['colorlist'] = $colorlist; //mlog("2",'poswxcode/'.$Acc); $jssdk = new \app\mobile\logic\Jssdk($userinfo['appid'], $userinfo['appsecret']); $r = $jssdk->WeiXin_MassageModelSend($userinfo['store_id'], $userinfo['openid'], $wxsend['typeid'], $backurl, $postdata); //mlog(json_encode($r),'poswxcode/'.$Acc); if ($r['wxcode'] == 0) { $return_arr = array('code' => 0, 'msg' => '发送成功', 'data' => '',); } else { $return_arr = array('code' => -1, 'msg' => '发送失败' . $r['msg'], 'data' => '',); } } else { $return_arr = array('code' => -1, 'msg' => '找不到微信消息类型', 'data' => '',); } } else { $return_arr = array('code' => -1, 'msg' => '该手机号未绑定线上会员', 'data' => '',); } } else { $return_arr = array('code' => -1, 'msg' => '会员手机号不存在', 'data' => '',); } return $return_arr; } /*-------- 上传事件日志 -------*/ /** * @param string $remark 事件说明 * @param string $appType 事件类型 * @param string $keyword 搜索关键字 */ function get_event_log($remark='',$appType='',$keyword='') { $time =date('Y-m-d H:i:s',time()); $param=''; if(empty($appType)) { $appType=I('event_type'); } if(empty($remark)) { $remark=I('event_explain'); } if(empty($keyword)) { $keyword=I('keyword'); } $resolution=I('screen_w').'*'.I('screen_h'); if($resolution=="*") { $resolution=''; } $funcname=I('funcname'); if(empty($funcname)) { $funcname=$_SESSION['currurl']; //$_SERVER['HTTP_REFERER']; } $info1=$_SESSION['get_vip_base']; if(empty($info1)) { $info1=get_vip_base(); session('get_vip_base',$info1); //客户端基本信息存入session } // $info1=get_vip_base(); $info2=array( 'lastPath'=>urlencode($_SESSION['lasturl']), 'startTime'=>$time, 'time'=>$time, 'appType'=>$appType, 'resolution'=>$resolution, 'mapParam'=>urlencode($remark), 'keyWord'=>urlencode($keyword), 'funcname'=>urlencode($funcname), ); mlog(json_encode($info2),'eventlog'); $info = array_merge($info1, $info2); foreach($info as $k=>$r){ $param.="{$k}={$r}"; if($k!='funcname'){$param.="&";} } $header[0] ="Content-Type: application/x-www-form-urlencoded"; mlog("参数:".$param,"eventlog"); // $param=$param."sign=".md5($param); //正式环境才传提交数据 if (curHostURL()=="https://mshop.yolipai.net") { $eventlog = httpRequest("http://gather.xinda100.com/wxderp/wxduserlog ", 'POST', $param, $header,false,1); mlog("返回:" . json_encode($eventlog), "eventlog"); } //var_dump($eventlog); } /*--推送信息,$pd是推送内容,$store_id是门店ID,$user_info是会员详情--*/ public function web_poswxcode($pd,$store_id,$user_info){ $typeid = $pd["typeid"]; $backurl = $pd["backurl"]; $colorlist = $pd["colorlist"]; $wx_user = M('wx_user')->where('store_id', $store_id)->find(); $userdate = $user_info; if (empty($userdate)) { return ['wx_code' =>-9999, 'msg' => '发送失败,指定线下会员未绑定线上v3']; } if (empty($userdate['openid'])) { return ['wx_code' => -9999, 'msg' => '发送失败,线上会员openid为空v3']; } if ($wx_user) { $jssdk = new \app\mobile\logic\Jssdk($wx_user['appid'], $wx_user['appsecret']); $sendlist = M('wx_sendlist')->where('typeid', $typeid)->where("store_id", $store_id)->find(); if ($sendlist) { switch ($sendlist['template_type']) { case 1: $sendt = M('wx_sendtype')->where('typeid', $typeid)->find(); break; default: $sendt = M('wx_sendtypelist')->where(array('typeid'=>$typeid,'ordid'=>$sendlist['template_type']))->find(); break; } $mdataarr = explode(",", $sendt["myfieldlist"]); $postdata = null; /*--双数组,确定推送内容--*/ foreach ($mdataarr as $ku => $vu) { $postdata[] = $pd[$vu]; } $postdata[]=$colorlist; mlog("微信推送链接地址 :".$backurl,"WeiXin_MassageModelSend/".$store_id); $rt=$jssdk->WeiXin_MassageModelSend($store_id, $userdate['openid'], $typeid, $backurl, $postdata); if($rt){ return ['wx_code' =>$rt['wxcode'], 'msg' => $rt['wx_code']]; }else{ return ['wx_code' =>-9999, 'msg' =>'WeiXin_MassageModelSend函数调用失败v3']; } } else { return ['wx_code' =>-9999, 'msg' => '商家未设置推送模板v3']; } } else { return ['wx_code' => -9999, 'msg' => '未找到门店的微信信息v3']; } } //--微信Jssdk 操作类 用分享朋友圈 JS-- public function ajaxGetWxConfig() { $askUrl = I('askUrl');//分享URL $weixin_config = M('wx_user')->where("store_id", getMobileStoId())->find(); //获取微信配置 if (empty($weixin_config)) { return ""; } $jssdk = new \app\mobile\logic\Jssdk($weixin_config['appid'], $weixin_config['appsecret']); $signPackage = $jssdk->GetSignPackage(urldecode($askUrl)); if ($signPackage) { return json($signPackage); } else { return false; } } } /*-----推送的数据类----*/ class TuiData { public $aboutid;//记录唯一关联ID public $strSupplyId; public $strAcc; public $strActNo; public $strStoNo; public $strMNo; public $strSum; public $strERPVIPId; public $strVIPNo; public $strBillDate; public $strTestUrl; public $strPayType; public $strSQty; public $strRepTitle; public $strRepFooter; public $strintegral; public $strPosNo; public $strusetype; public $strStorageName; public $intPaySum; public $strresourcesid;//相关资源推送活动ID public $strResult;//存储YLP返回接口记录 public $ActName; public $applogguid; public $back_ylpsourceId;//有礼派资源接口调用返回值,用于下一次接口核实 public $strCode; public $strMsg; public function _initialize() { $this->aboutid = ""; $this->trSupplyId = ""; $this->strAcc = ""; $this->strActNo = ""; $this->strStoNo = ""; $this->strMNo = ""; $this->strSum = 0; $this->strERPVIPId = ""; $this->strVIPNo = ""; $this->strBillDate = ""; $this->strTestUrl = ""; $this->strPayType = ""; $this->strSQty = ""; $this->strRepTitle = ""; $this->strRepFooter = ""; $this->strintegral = ""; $this->strPosNo = ""; $this->strusetype = ""; $this->strStorageName = ""; $this->intPaySum = 0; $this->strresourcesid = ""; $this->strResult = ""; $this->ActName = ""; $this->applogguid = ""; $this->back_ylpsourceId = ""; $this->strCode = "0"; $this->strMsg = ""; } public function delfile(){ $f=I("file"); mdelFile($f); return 1; } }