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;
}
}