$orderid),array('orderno','activityid','optionid','username','actualprice','uniacid','mid','mobile','sid','aid','num','settlementmoney','blendcredit','vip_card_id')); $blendcredit = sprintf("%.2f",$order['blendcredit']/$order['num']); $settmoney = sprintf("%.2f",$order['settlementmoney']/$order['num']); if($order['vip_card_id'] > 0){ $vipCardPrice = pdo_getcolumn(PDO_NAME.'halfcard_type',array('id'=>$order['vip_card_id']),'price'); $order['actualprice'] = $order['actualprice'] - $vipCardPrice; } $orderprice = sprintf("%.2f",$order['actualprice']/$order['num']); $plugin = 'rush'; $gid = $order['activityid']; $specid = $order['optionid']; $gInfo = pdo_get(PDO_NAME.'rush_activity',array('id'=>$order['activityid']),['cutoffstatus','cutoffday','cutofftime','appointstatus','name','checkcodeflag']); $appointstatus = $gInfo['appointstatus']; $checkcodeflag = $gInfo['checkcodeflag']; $goodsname = $gInfo['name']; if($appointstatus > 0){ $appointstatus = 1; } $order['name'] = $order['username']; if ($gInfo['cutoffstatus']) { $estimatetime = time() + $gInfo['cutoffday'] * 86400; } else { $estimatetime = $gInfo['cutofftime']; } }else if($type == 2){ //团购订单 $order = pdo_get(PDO_NAME.self::$name,array('id' => $orderid),array('orderno','fkid','specid','name','price','uniacid','mid','sid','aid','mobile','num','settlementmoney','blendcredit','vip_card_id')); $blendcredit = sprintf("%.2f",$order['blendcredit']/$order['num']); $settmoney = sprintf("%.2f",$order['settlementmoney']/$order['num']); if($order['vip_card_id'] > 0){ $vipCardPrice = pdo_getcolumn(PDO_NAME.'halfcard_type',array('id'=>$order['vip_card_id']),'price'); $order['price'] = $order['actualprice'] - $vipCardPrice; } $orderprice = sprintf("%.2f",$order['price']/$order['num']); $plugin = 'groupon'; $gid = $order['fkid']; $specid = $order['specid']; $gInfo = pdo_get(PDO_NAME.'groupon_activity',array('id'=>$order['fkid']),['cutoffstatus','cutoffday','cutofftime','appointstatus','name','checkcodeflag']); $appointstatus = $gInfo['appointstatus']; $checkcodeflag = $gInfo['checkcodeflag']; $goodsname = $gInfo['name']; if($appointstatus > 0){ $appointstatus = 1; } if ($gInfo['cutoffstatus']) { $estimatetime = time() + $gInfo['cutoffday'] * 86400; } else { $estimatetime = $gInfo['cutofftime']; } }else if($type == 3){ //拼团订单 $order = pdo_get(PDO_NAME.self::$name,array('id' => $orderid),array('orderno','fkid','specid','name','price','uniacid','mid','sid','aid','mobile','num','settlementmoney','blendcredit','vip_card_id')); $blendcredit = sprintf("%.2f",$order['blendcredit']/$order['num']); $settmoney = sprintf("%.2f",$order['settlementmoney']/$order['num']); if($order['vip_card_id'] > 0){ $vipCardPrice = pdo_getcolumn(PDO_NAME.'halfcard_type',array('id'=>$order['vip_card_id']),'price'); $order['price'] = $order['actualprice'] - $vipCardPrice; } $orderprice = sprintf("%.2f",$order['price']/$order['num']); $plugin = 'wlfightgroup'; $gid = $order['fkid']; $specid = $order['specid']; $gInfo = pdo_get(PDO_NAME.'fightgroup_goods',array('id'=>$order['fkid']),['cutoffstatus','cutoffday','cutofftime','appointstatus','name','checkcodeflag']); $appointstatus = $gInfo['appointstatus']; $checkcodeflag = $gInfo['checkcodeflag']; $goodsname = $gInfo['name']; if($appointstatus > 0){ $appointstatus = 1; } if ($gInfo['cutoffstatus']) { $estimatetime = time() + $gInfo['cutoffday'] * 86400; } else { $estimatetime = $gInfo['cutofftime']; } }else if($type == 4){ //卡券订单 $order = pdo_get(PDO_NAME.self::$name,array('id' => $orderid),array('orderno','fkid','price','name','fkid','uniacid','mid','sid','aid','mobile','num','settlementmoney','blendcredit','vip_card_id')); if($order['vip_card_id'] > 0){ $vipCardPrice = pdo_getcolumn(PDO_NAME.'halfcard_type',array('id'=>$order['vip_card_id']),'price'); $order['price'] = $order['actualprice'] - $vipCardPrice; } $usetimes = pdo_getcolumn(PDO_NAME.'couponlist',array('id'=>$order['fkid']),'usetimes'); $order['num'] = $order['num'] * $usetimes; $blendcredit = sprintf("%.2f",$order['blendcredit']/$order['num']); $settmoney = sprintf("%.2f",$order['settlementmoney']/$order['num']); $orderprice = sprintf("%.2f",$order['price']/$order['num']); $plugin = 'coupon'; $gid = $order['fkid']; $specid = 0; $gInfo = pdo_get(PDO_NAME.'couponlist',array('id'=>$order['fkid']),['time_type','endtime','deadline','title','checkcodeflag']); $appointstatus = 0; $checkcodeflag = $gInfo['checkcodeflag']; $goodsname = $gInfo['title']; if ($gInfo['time_type']) { $estimatetime = $gInfo['endtime']; } else { $estimatetime = time() + $gInfo['deadline'] * 86400; } }else if($type == 5){ //砍价订单 $order = pdo_get(PDO_NAME.self::$name,array('id' => $orderid),array('orderno','fkid','price','name','uniacid','mid','sid','aid','mobile','num','settlementmoney','blendcredit')); $blendcredit = sprintf("%.2f",$order['blendcredit']/$order['num']); $settmoney = sprintf("%.2f",$order['settlementmoney']/$order['num']); $orderprice = sprintf("%.2f",$order['price']/$order['num']); $plugin = 'bargain'; $gid = $order['fkid']; $specid = 0; $gInfo = pdo_get(PDO_NAME.'bargain_activity',array('id'=>$order['fkid']),['cutoffstatus','cutoffday','cutofftime','name','appointstatus','checkcodeflag']); $appointstatus = $gInfo['appointstatus']; $checkcodeflag = $gInfo['checkcodeflag']; if($appointstatus > 0){ $appointstatus = 1; } $goodsname = $gInfo['name']; if ($gInfo['cutoffstatus']) { $estimatetime = time() + $gInfo['cutoffday'] * 86400; } else { $estimatetime = $gInfo['cutofftime']; } }else if($type == 6){ //活动订单 $order = pdo_get(PDO_NAME.self::$name,array('id' => $orderid),array('orderno','fkid','specid','name','price','uniacid','mid','mobile','sid','aid','num','settlementmoney','blendcredit')); $blendcredit = sprintf("%.2f",$order['blendcredit']/$order['num']); $settmoney = sprintf("%.2f",$order['settlementmoney']/$order['num']); $orderprice = sprintf("%.2f",$order['price']/$order['num']); $plugin = 'activity'; $gid = $order['fkid']; $specid = $order['specid']; $gInfo = pdo_get(PDO_NAME.'activitylist',array('id'=>$order['fkid']),['activeendtime','title','checkcodeflag']); $appointstatus = 0; $checkcodeflag = $gInfo['checkcodeflag']; $goodsname = $gInfo['name']; $estimatetime = $gInfo['activeendtime']; } if($checkcodeflag > 0){ $checkcodelist = pdo_fetchall("SELECT id,checkcode FROM ".tablename('wlmerchant_checkcodelist')."WHERE goodsid = {$gid} AND plugin = '{$plugin}' AND status = 0 ORDER BY id ASC limit {$order['num']} "); if(count($checkcodelist) > 0){ foreach ($checkcodelist as $check){ $sdata = array( 'uniacid' => $order['uniacid'], 'mid' => $order['mid'], 'aid' => $order['aid'], 'sid' => $order['sid'], 'gid' => $gid, 'specid' => $specid, 'status' => 1, 'plugin' => $plugin, 'orderid' => $orderid, 'orderno' => $order['orderno'], 'createtime' => time(), 'checkcode' => $check['checkcode'], 'orderprice' => $orderprice, 'settlemoney' => $settmoney, 'blendcredit' => $blendcredit, 'appointstatus' => $appointstatus ); pdo_insert(PDO_NAME .'smallorder',$sdata); pdo_update('wlmerchant_checkcodelist',array('status' => 1,'orderid' => $orderid),array('id' => $check['id'])); } $code[] = $check['checkcode']; } }else{ $orderset = Setting::wlsetting_read('orderset'); for($i=0;$i<$order['num'];$i++){ if($orderset['codetype'] > 0 ){ $newcode = Util::createConcode(7,8); }else{ $newcode = Util::createNewConcode(7,8); } $sdata = array( 'uniacid' => $order['uniacid'], 'mid' => $order['mid'], 'aid' => $order['aid'], 'sid' => $order['sid'], 'gid' => $gid, 'specid' => $specid, 'status' => 1, 'plugin' => $plugin, 'orderid' => $orderid, 'orderno' => $order['orderno'], 'createtime' => time(), 'checkcode' => $newcode, 'orderprice' => $orderprice, 'settlemoney' => $settmoney, 'blendcredit' => $blendcredit, 'appointstatus' => $appointstatus ); pdo_insert(PDO_NAME .'smallorder',$sdata); $code[] = $sdata['checkcode']; } //生成码校验 $smordernum = pdo_fetchcolumn('SELECT count(id) FROM '.tablename('wlmerchant_smallorder')." WHERE orderno = '{$order['orderno']}' AND plugin = '{$plugin}' "); if($smordernum > $order['num']){ $more = $smordernum - $order['num']; $res = pdo_fetchall("SELECT id FROM ".tablename('wlmerchant_smallorder')."WHERE orderno = '{$order['orderno']}' AND plugin = '{$plugin}' ORDER BY id DESC LIMIT {$more}"); if(!empty($res)){ foreach ($res as $ree){ pdo_delete('wlmerchant_smallorder',array('id'=>$ree['id'])); } } } } //发送短信 if(!empty($code)){ try { $codestr = ''; // if(count($code) > 1){ // $codestr = $code[0].'等'; // }else{ $codestr = $code[0]; // } $time = date('Y-m-d H:i:s',$estimatetime); $storename = pdo_getcolumn(PDO_NAME.'merchantdata',array('id'=>$order['sid']),'storename'); WeliamWeChat::smsHXM($codestr,$goodsname,$order['num'],$time,$order['mobile'],$order['mid'],$order['name'],$storename); }catch (\Exception $e) { file_put_contents(PATH_DATA . "sms_error.log", var_export($e, true) . PHP_EOL, FILE_APPEND); } } } public function finishSmallorder($orderid,$uid = 0,$type=1){ $order = pdo_get(PDO_NAME .'smallorder',array('id' => $orderid)); //核销 $sdata['status'] = 2; $sdata['hxuid'] = $uid; $sdata['hexiaotime'] = time(); $sdata['settletime'] = time(); $sdata['hexiaotype'] = $type; //结算给商户 //判断是否已结算 MysqlFunction::setTrans(4); MysqlFunction::startTrans(); $flag = pdo_get(PDO_NAME.'autosettlement_record',array('checkcode' => $order['checkcode'],'orderno' => $order['orderno']),array('id')); if(empty($flag)){ if($order['plugin'] == 'rush'){ //抢购订单 $type = 1; $parentorder = pdo_get(PDO_NAME.'rush_order',array('id'=>$order['orderid']),array('activityid','price','num','allocationtype','salesarray','paytype')); $goodsid = $parentorder['activityid']; $salesarray = $parentorder['salesarray']; $parentorder['goodsprice'] = $parentorder['price']; $goodsinfo = pdo_get(PDO_NAME.'rush_activity',array('id' => $goodsid),array('name','drawid')); }else if($order['plugin'] == 'groupon'){ //团购订单 $type = 10; $parentorder = pdo_get(PDO_NAME.'order',array('id'=>$order['orderid']),array('fkid','goodsprice','num','allocationtype','salesarray','paytype')); $goodsid = $parentorder['fkid']; $salesarray = $parentorder['salesarray']; $goodsinfo = pdo_get(PDO_NAME.'groupon_activity',array('id'=>$goodsid),['name','drawid']); }else if($order['plugin'] == 'wlfightgroup'){ //拼团订单 $type = 2; $parentorder = pdo_get(PDO_NAME.'order',array('id'=>$order['orderid']),array('fkid','goodsprice','num','allocationtype','salesarray','paytype')); $goodsid = $parentorder['fkid']; $salesarray = $parentorder['salesarray']; $goodsinfo = pdo_get(PDO_NAME.'fightgroup_goods',array('id'=>$goodsid),['name','drawid']); }else if($order['plugin'] == 'bargain'){ //砍价订单 $type = 12; $parentorder = pdo_get(PDO_NAME.'order',array('id'=>$order['orderid']),array('fkid','goodsprice','num','allocationtype','salesarray','paytype')); $goodsid = $parentorder['fkid']; $salesarray = $parentorder['salesarray']; $goodsinfo = pdo_get(PDO_NAME.'bargain_activity',array('id'=>$goodsid),['name','drawid']); }else if($order['plugin'] == 'coupon'){ //超级券订单 $type = 3; $parentorder = pdo_get(PDO_NAME.'order',array('id'=>$order['orderid']),array('fkid','goodsprice','num','allocationtype','salesarray','paytype')); $goodsid = $parentorder['fkid']; $salesarray = $parentorder['salesarray']; $goodsinfo = pdo_get(PDO_NAME.'couponlist',array('id'=>$goodsid),['title','drawid']); }else if($order['plugin'] == 'activity'){ //活动订单 $type = 9; $parentorder = pdo_get(PDO_NAME.'order',array('id'=>$order['orderid']),array('fkid','goodsprice','num','allocationtype','salesarray','paytype')); $goodsid = $parentorder['fkid']; $salesarray = $parentorder['salesarray']; $goodsinfo = pdo_get(PDO_NAME.'activitylist',array('id'=>$goodsid),['title','drawid']); } //业务员佣金 $salesmoney = 0; if(!empty($salesarray)){ $goodsprice = sprintf("%.2f",$parentorder['goodsprice'] / $parentorder['num']); $salesarray = unserialize($salesarray); foreach ($salesarray as &$sale){ $sale['reportmoney'] = sprintf("%.2f",$goodsprice * $sale['scale'] /100 ); $salesmoney += $sale['reportmoney']; } } $data = array( 'uniacid' => $order['uniacid'], 'aid' => $order['aid'], 'type' => $type, 'merchantid' => $order['sid'], 'orderid' => $order['orderid'], 'orderno' => $order['orderno'], 'goodsid' => $goodsid, 'orderprice' => $order['orderprice'], 'agentmoney' => round($order['orderprice'] - $order['settlemoney'] - $order['onedismoney'] - $order['twodismoney'] - $salesmoney, 2), 'merchantmoney' => $order['settlemoney'], 'distrimoney' => round($order['onedismoney'] + $order['twodismoney'], 2), 'salesmoney' => $salesmoney, 'sharemoney' => 0, 'createtime' => time(), 'checkcode' => $order['checkcode'] ); $res = pdo_insert(PDO_NAME . 'autosettlement_record', $data); $settlementid = pdo_insertid(); } if ($settlementid > 0) { if($parentorder['allocationtype'] == 1){ $sdata['allocationstatus'] = 1; }else{ //结算给商户 if(abs($data['merchantmoney']) > 0){ $changestoreres = pdo_update('wlmerchant_merchantdata',array('allmoney +=' => $data['merchantmoney'],'nowmoney +='=>$data['merchantmoney']),array('id' => $data['merchantid'])); if($changestoreres){ $change['merchantnowmoney'] = pdo_getcolumn(PDO_NAME . 'merchantdata', array('id' => $data['merchantid']), 'nowmoney'); Store::addcurrent(1,$type,$data['merchantid'],$data['merchantmoney'],$change['merchantnowmoney'],$order['orderid'],$data['checkcode'],$order['uniacid'],$order['aid']); }else{ MysqlFunction::rollback(); return false; } } //结算给代理 if (abs($data['agentmoney']) > 0 && $data['aid'] > 0){ $changeagentres = pdo_update('wlmerchant_agentusers',array('allmoney +=' => $data['agentmoney'],'nowmoney +='=>$data['agentmoney']),array('id' => $data['aid'])); if($changeagentres) { $change['agentnowmoney'] = pdo_getcolumn(PDO_NAME . 'agentusers', array('id' => $data['aid']), 'nowmoney'); Store::addcurrent(2,$type,$data['aid'],$data['agentmoney'],$change['agentnowmoney'],$order['orderid'],$data['checkcode'],$order['uniacid'],$order['aid']); }else{ MysqlFunction::rollback(); return false; } } pdo_update('wlmerchant_autosettlement_record', $change, array('id' => $settlementid)); //结算给分销商 //判断分销订单状态 if($order['disorderid']){ $disorder = pdo_get('wlmerchant_disorder',array('id' => $order['disorderid'])); if(empty($disorder['status'])){ $nosetflag = pdo_getcolumn('wlmerchant_disdetail',array('checkcode' => $order['checkcode'],'status'=>0),'id'); if(empty($nosetflag)){ if($order['onedismoney'] > 0){ $oneres = pdo_query("update" . tablename('wlmerchant_distributor') . "SET dismoney=dismoney+{$order['onedismoney']},nowmoney=nowmoney+{$order['onedismoney']} WHERE id = {$order['oneleadid']}"); if($oneres){ $leadid = pdo_getcolumn('wlmerchant_distributor',array('id'=> $order['oneleadid']),'mid'); $onenowmoney = pdo_getcolumn(PDO_NAME.'distributor',array('id'=> $order['oneleadid']),'nowmoney'); Distribution::adddisdetail($order['disorderid'],$leadid,$disorder['buymid'],1,$order['onedismoney'],$disorder['plugin'],1,'分销订单结算',$onenowmoney,$data['checkcode'],0,$order['aid']); } } if($order['twodismoney'] > 0){ $twores = pdo_query("update" . tablename('wlmerchant_distributor') . "SET dismoney=dismoney+{$order['twodismoney']},nowmoney=nowmoney+{$order['twodismoney']} WHERE id = {$order['twoleadid']}"); if($twores){ $leadid = pdo_getcolumn('wlmerchant_distributor',array('id'=> $order['twoleadid']),'mid'); $twonowmoney = pdo_getcolumn(PDO_NAME.'distributor',array('id'=> $order['twoleadid']),'nowmoney'); Distribution::adddisdetail($order['disorderid'],$leadid,$disorder['buymid'],1,$order['twodismoney'],$disorder['plugin'],2,'分销订单结算',$twonowmoney,$data['checkcode'],0,$order['aid']); } } $sdata['dissettletime'] = time(); } } } //结算给业务员 if(!empty($salesarray)){ $nosetflag = pdo_getcolumn('wlmerchant_disdetail',array('checkcode' => $order['checkcode'],'status'=>1),'id'); if(empty($nosetflag)){ foreach ($salesarray as $sale2){ $reportmoney = $sale2['reportmoney']; if($reportmoney>0) { pdo_fetch("update" . tablename('wlmerchant_distributor') . "SET dismoney=dismoney+{$reportmoney},nowmoney=nowmoney+{$reportmoney} WHERE mid = {$sale2['mid']}"); $onenowmoney = pdo_getcolumn(PDO_NAME . 'distributor', array('mid' => $sale2['mid']), 'nowmoney'); if($order['plugin'] == 'wlfightgroup'){ $orderplugin = 'fightgroup'; }else{ $orderplugin = $order['plugin']; } Distribution::adddisdetail($order['orderid'], $sale2['mid'], $order['sid'], 1, $reportmoney, $orderplugin, 0, '业务员佣金结算', $onenowmoney, $order['checkcode'], 1, $order['aid']); } } } } } //支付返现 if($parentorder['paytype'] != 1 && p('payback')){ Payback::payCore($order['sid'],$order['mid'],$uid,$order['plugin'],$order['orderprice'],$order['orderno'],$order['orderid'],$order['uniacid'],$order['aid'],$order['checkcode']); } //余额返现 self::yueCashBack($order['mid'],$order['plugin'],$goodsid); //赠送抽奖码 if($goodsinfo['drawid'] > 0 ){ Luckydraw::getDrawCode($goodsinfo['drawid'],$order['mid'],$order['orderid'],$order['plugin'],$order['id']); } } if($settlementid > 0 || !empty($flag)){ //修改小订单状态 $chengeOrderRes = pdo_update('wlmerchant_smallorder',$sdata,array('id' => $orderid)); if($chengeOrderRes){ //写入验证记录 if($order['plugin'] == 'rush'){ $goodsname = $goodsinfo['name']; }else if($order['plugin'] == 'groupon'){ $goodsname = $goodsinfo['name']; }else if($order['plugin'] == 'wlfightgroup'){ //拼团订单 $goodsname = $goodsinfo['name']; }else if($order['plugin'] == 'bargain'){ //砍价订单 $goodsname = $goodsinfo['name']; }else if($order['plugin'] == 'coupon'){ //超级券订单 $goodsname = $goodsinfo['title']; }else if($order['plugin'] == 'activity'){ //活动订单 $goodsname = $goodsinfo['title']; } $hexiaomid = pdo_getcolumn(PDO_NAME.'merchantuser',array('id'=>$uid),'mid'); SingleMerchant::verifRecordAdd($order['aid'], $order['sid'], $order['mid'],$order['plugin'], $order['orderid'], $order['checkcode'], $goodsname, $sdata['hexiaotype'],1,$hexiaomid); //判断大订单是否结算完 $plugin = $order['plugin']; $finishflag = pdo_fetchcolumn('SELECT count(id) FROM '.tablename('wlmerchant_smallorder')." WHERE plugin = '{$plugin}' AND orderid = {$order['orderid']} AND status = 1"); if(empty($finishflag)){ if($order['plugin'] == 'rush'){ //抢购订单 pdo_update('wlmerchant_rush_order',array('issettlement'=>1,'status'=>2,'settletime'=> time()),array('id' => $order['orderid'])); }else{ $aa = pdo_update('wlmerchant_order',array('issettlement'=>1,'status'=>2,'settletime'=> time()),array('id' => $order['orderid'])); if($order['plugin'] == 'coupon'){ $recordid = pdo_getcolumn(PDO_NAME.'order',array('id'=>$order['orderid']),'recordid'); pdo_update('wlmerchant_member_coupons',array('status'=>2,'usetimes'=>0),array('id' => $recordid)); } } if($order['disorderid']){ $disres = pdo_update('wlmerchant_disorder',array('status'=>2),array('id' => $order['disorderid'])); if($disres){ if($order['onedismoney'] > 0){ Distribution::moneyNotice($disorder['buymid'], $disorder['plugin'], $disorder['orderid'], $disorder['oneleadid'], $disorder['id'], 2); Distribution::checkup($order['oneleadid']); } if($order['twodismoney'] > 0){ Distribution::moneyNotice($disorder['buymid'],$disorder['plugin'],$disorder['orderid'],$disorder['twoleadid'],$disorder['id'],2); Distribution::checkup($order['twoleadid']); } } } } MysqlFunction::commit(); //开始分账 if($sdata['allocationstatus'] == 1){ $source = pdo_getcolumn(PDO_NAME.'paylogvfour',array('tid'=>$order['orderno']),'source'); $weixin = NEW WeixinPay(); $allres = $weixin->allocationMulti($orderid,$source,$salesarray,$salesmoney); if(is_array($allres)){ pdo_update('wlmerchant_smallorder',['allocationstatus'=>2,'dissettletime'=>time()],array('id' => $orderid)); pdo_update('wlmerchant_autosettlement_record', ['sysmoney'=> $allres['sysmoney'] ,'agentmoney'=> $allres['agentmoney'],'allocationtype' => 1 ], array('id' => $settlementid)); if(empty($finishflag)){ //分账完毕 $weixin->allocationFinish($orderid); } } } return true; } } MysqlFunction::rollback(); return false; } public function remindTime($estimatetime){ global $_W; $orderset = Setting::wlsetting_read('orderset'); if(empty($orderset['remind'])){ $orderset['remind'] = 48; } $remindtime = $estimatetime - $orderset['remind']*3600; return $remindtime; } /** * Comment: 添加日志函数 * Author: wlf * Date: 2019/11/21 16:13 */ public function addjournal($journal,$afterid = 0){ global $_W; if(!empty($afterid)){ $journals = pdo_getcolumn(PDO_NAME.'aftersale',array('id'=>$afterid),'journal'); $journals = unserialize($journals); }else{ $journals = []; } $journals[] = serialize($journal); $journals = serialize($journals); return $journals; } /** * Comment: 订单打印推送 * Author: wlf * Date: 2020/07/02 15:34 */ function sendPrinting($orderid,$plugin){ $content = ''; if($plugin == 'rush'){ $order = pdo_get('wlmerchant_rush_order',array('id' => $orderid),array('sid','mid','orderno','optionid','actualprice','activityid','expressid','num','paytime','remark','username','mobile','price')); $store = pdo_get('wlmerchant_merchantdata',array('id' => $order['sid']),array('printing','storename')); $printing = unserialize($store['printing']); }else{ $order = pdo_get('wlmerchant_order',array('id' => $orderid),array('sid','orderno','mid','specid','price','fkid','fightstatus','expressid','num','paytime','buyremark','name','mobile','goodsprice')); $store = pdo_get('wlmerchant_merchantdata',array('id' => $order['sid']),array('printing','storename')); $printing = unserialize($store['printing']); } if($printing['type'] == 4 || empty($printing['type'])){ //568定制小票打印 $isAuth = Customized::init('printing'); if($isAuth && $order['sid'] > 0) Printing::init($order['orderno']); }else{ if($plugin == 'rush'){ $goodstype = '抢购商品'; $goods = pdo_get('wlmerchant_rush_activity',array('id' => $order['activityid']),array('name')); $goodsname = $goods['name']; if($order['optionid']>0){ $specname = pdo_getcolumn(PDO_NAME.'goods_option',array('id'=>$order['optionid']),'title'); } $price = $order['actualprice']; $goodsprice = $order['price']; if($order['expressid']>0){ $express = pdo_get('wlmerchant_express',array('id' => $order['expressid']),array('name','tel','address')); $deliverytype = '快递发货'; }else{ $deliverytype = '买家自提'; $username = $order['username']; } $username = $order['username']; $remark = $order['remark']; }else{ if($plugin == 'groupon'){ $goodstype = '团购商品'; $goods = pdo_get('wlmerchant_groupon_activity',array('id' => $order['fkid']),array('name')); $goodsname = $goods['name']; if($order['specid']>0){ $specname = pdo_getcolumn(PDO_NAME.'goods_option',array('id'=>$order['specid']),'title'); } }else if($plugin == 'wlfightgroup'){ $goodstype = '拼团商品'; $goods = pdo_get('wlmerchant_fightgroup_goods',array('id' => $order['fkid']),array('name')); $goodsname = $goods['name']; if($order['specid']>0){ $specname = pdo_getcolumn(PDO_NAME.'goods_option',array('id'=>$order['specid']),'title'); } }else if($plugin == 'bargain'){ $goodstype = '砍价商品'; $goods = pdo_get('wlmerchant_bargain_activity',array('id' => $order['fkid']),array('name')); $goodsname = $goods['name']; }else if($plugin == 'citydelivery'){ $goodstype = '同城配送'; $smallorders = pdo_fetchall("SELECT gid,money,num,specid FROM ".tablename('wlmerchant_delivery_order')."WHERE tid = {$order['orderno']} ORDER BY price DESC"); foreach ($smallorders as $ke => &$orr){ $goods = pdo_get('wlmerchant_delivery_activity',array('id' => $orr['gid']),array('name')); $orr['name'] = $goods['name']; if($orr['specid']>0){ $specnameV = pdo_getcolumn(PDO_NAME.'delivery_spec',array('id'=>$orr['specid']),'name'); $orr['name'] .= '/'.$specnameV; } $goodsname[] = $orr['name'].' X'.$orr['num']; } }else if($plugin == 'payonline'){ $goodstype = '在线买单'; $goods = $store['storename'].'在线买单'; } if($plugin != 'citydelivery'){ if($order['expressid']>0){ $express = pdo_get('wlmerchant_express',array('id' => $order['expressid']),array('name','tel','address')); $deliverytype = '快递发货'; }else if($plugin == 'payonline'){ $deliverytype = '在线买单'; }else{ $deliverytype = '买家自提'; } }else{ if($order['fightstatus'] == 0){ $deliverytype = '买家自提'; }else if($order['fightstatus'] == 1){ $deliverytype = '商家配送'; $express = pdo_get('wlmerchant_address',array('id' => $order['expressid']),array('name','tel','province','city','county','detailed_address')); $express['address'] = $express['province'].$express['city'].$express['county'].$express['detailed_address']; }else if($order['fightstatus'] == 2){ $deliverytype = '平台配送'; $express = pdo_get('wlmerchant_address',array('id' => $order['expressid']),array('name','tel','province','city','county','detailed_address')); $express['address'] = $express['province'].$express['city'].$express['county'].$express['detailed_address']; } } $username = $order['name']; $price = $order['price']; $goodsprice = $order['goodsprice']; $remark = $order['buyremark']; } $nickname = pdo_getcolumn(PDO_NAME.'member',array('id'=>$order['mid']),'nickname'); $paytime = date('Y-m-d H:i:s',$order['paytime']); if($printing['type'] == 1){ //365小票云打印 $content .= " 店铺:".$store['storename']."\n"; $content .= "支付时间:".$paytime."\n"; $content .= " 订单号:".$order['orderno']."\n"; $content .= "商品类型:".$goodstype."\n"; if(is_array($goodsname)){ foreach ($goodsname as $ke => $dname){ if($ke == 0){ $content .= "购买商品:".$dname."\n"; }else{ $content .= " ".$dname."\n"; } } }else{ $content .= "商品名称:".$goodsname."\n"; } if(!empty($specname)){ $content .= "规格名称:".$specname."\n"; } if($plugin != 'citydelivery'){ $content .= "商品数量:".$order['num']."\n"; } $content .= "配送方式:".$deliverytype."\n"; $content .= "买家昵称:".$nickname."\n"; if(!empty($express)){ $content .= " 收货人:".$express['name']."\n"; $content .= "联系电话:".$express['tel']."\n"; $content .= "配送地址:".$express['address']."\n"; }else{ $content .= " 提货人:".$username."\n"; $content .= "联系电话:".$order['mobile']."\n"; } if($goodsprice > 0){ $content .= "商品金额:".$goodsprice."\n"; } $content .= "实付金额:".$price."\n"; $content .= "买家备注:".$remark."\n"; $content .= "--------------------------------"; self::send365FormatOrderInfo($printing['device_no'],$printing['key'],1,$content); }else if($printing['type'] == 3){ $orderInfo = ''.$store['storename'].'
'; $orderInfo .= '支付时间:'.$paytime.'
'; $orderInfo .= '订单号:'.$order['orderno'].'
'; $orderInfo .= '商品类型:'.$goodstype.'
'; if(is_array($goodsname)){ foreach ($goodsname as $ke => $dname){ if($ke == 0){ $orderInfo .= "购买商品:".$dname."
"; }else{ $orderInfo .= " ".$dname."
"; } } }else{ $orderInfo .= "商品名称:".$goodsname."
"; } if(!empty($specname)){ $orderInfo .= "规格名称:".$specname."
"; } if($plugin != 'citydelivery'){ $orderInfo .= "商品数量:".$order['num']."
"; } $orderInfo .= "配送方式:".$deliverytype."
"; $orderInfo .= "买家昵称:".$nickname."
"; if(!empty($express)){ $orderInfo .= " 收货人:".$express['name']."
"; $orderInfo .= "联系电话:".$express['tel']."
"; $orderInfo .= "配送地址:".$express['address']."
"; }else{ $orderInfo .= " 提货人:".$username."
"; $orderInfo .= "联系电话:".$order['mobile']."
"; } if($goodsprice > 0){ $orderInfo .= "商品金额:".$goodsprice."
"; } $orderInfo .= "实付金额:".$price."
"; $orderInfo .= "买家备注:".$remark."
"; $orderInfo .= '--------------------------------
'; self::sendFeieFormatOrderInfo($printing['feie_user'],$printing['feie_key'],$printing['feie_no'],1,$orderInfo); } } } /** * Comment: 发送365打印数据 * Author: wlf * Date: 2020/07/02 14:52 */ function send365FormatOrderInfo($device_no,$key,$times = 1,$orderInfo){ // $times打印次数 $selfMessage = array( 'deviceNo'=>$device_no, 'printContent'=>$orderInfo, 'key'=>$key, 'times'=>$times ); $url = "http://open.printcenter.cn:8080/addOrder"; $options = array( 'http' => array( 'header' => "Content-type: application/x-www-form-urlencoded ", 'method' => 'POST', 'content' => http_build_query($selfMessage), ), ); $context = stream_context_create($options); $result = file_get_contents($url, false, $context); $result = json_decode($result,true); if(!empty($result['responseCode'])){ file_put_contents(PATH_DATA . "365Printing.log", var_export($result,true) . PHP_EOL, FILE_APPEND); } } /** * Comment: 发送飞鹅打印数据 * Author: wlf * Date: 2020/07/02 14:52 */ function sendFeieFormatOrderInfo($user,$ukey,$feieNo,$times = 1,$orderInfo){ // $times打印次数 $url = 'http://api.feieyun.cn/Api/Open/'; $time = time(); $sig = sha1($user.$ukey.$time); $data = [ 'user' => $user, 'stime' => $time, 'sig' => $sig, 'apiname' => 'Open_printMsg', 'debug' => 0, 'sn' => $feieNo, 'content' => $orderInfo ]; $result = curlPostRequest($url,$data); if(empty($result['data'])){ file_put_contents(PATH_DATA . "feiePrinting.log", var_export($result,true) . PHP_EOL, FILE_APPEND); } } //查看打印机状态 function send365queryPrinterStatus($device_no,$key){ // $times打印次数 $selfMessage = array( 'deviceNo'=>$device_no, 'key'=>$key, ); $url = "http://open.printcenter.cn:8080/queryPrinterStatus"; $options = array( 'http' => array( 'header' => "Content-type: application/x-www-form-urlencoded ", 'method' => 'POST', 'content' => http_build_query($selfMessage), ), ); $context = stream_context_create($options); $result = file_get_contents($url, false, $context); $result = json_decode($result,true); if(!empty($result['responseCode'])){ file_put_contents(PATH_DATA . "365Printing.log", var_export($result,true) . PHP_EOL, FILE_APPEND); } } //查询订单打印状态 function send365queryOrder($device_no,$key,$orderindex){ // $times打印次数 $selfMessage = array( 'deviceNo'=>$device_no, 'key'=>$key, 'orderindex' => $orderindex ); $url = "http://open.printcenter.cn:8080/queryOrder"; $options = array( 'http' => array( 'header' => "Content-type: application/x-www-form-urlencoded ", 'method' => 'POST', 'content' => http_build_query($selfMessage), ), ); $context = stream_context_create($options); $result = file_get_contents($url, false, $context); $result = json_decode($result,true); if(!empty($result['responseCode'])){ file_put_contents(PATH_DATA . "365Printing.log", var_export($result,true) . PHP_EOL, FILE_APPEND); } } /** * Comment: 余额返现(一般商品) * Author: wlf * Date: 2021/06/30 15:26 */ function yueCashBack($mid,$plugin,$gid,$num = 1){ switch ($plugin) { case 'rush': $goods = pdo_get('wlmerchant_rush_activity',array('id' => $gid),array('name','aid','yuecashback','vipyuecashback')); $remark = '购买抢购商品['.$goods['name'].']返现'; break;//抢购商品 case 'groupon': $goods = pdo_get('wlmerchant_groupon_activity',array('id' => $gid),array('name','aid','yuecashback','vipyuecashback')); $remark = '购买团购商品['.$goods['name'].']返现'; break;//团购商品 case 'wlfightgroup': $goods = pdo_get('wlmerchant_fightgroup_goods',array('id' => $gid),array('name','aid','yuecashback','vipyuecashback')); $remark = '购买拼团商品['.$goods['name'].']返现'; break;//拼团商品 case 'coupon': $goods = pdo_get('wlmerchant_couponlist',array('id' => $gid),array('title','aid','yuecashback','vipyuecashback','usetimes')); $goods['yuecashback'] = sprintf("%.2f",$goods['yuecashback']/$goods['usetimes']); $goods['vipyuecashback'] = sprintf("%.2f",$goods['vipyuecashback']/$goods['usetimes']); $remark = '购买卡券['.$goods['title'].']返现'; break;//优惠券 case 'bargain': $goods = pdo_get('wlmerchant_bargain_activity',array('id' => $gid),array('name','aid','yuecashback','vipyuecashback')); $remark = '购买砍价商品['.$goods['name'].']返现'; break;//砍价商品 } //判断用户身份 $vip = WeliamWeChat::VipVerification($mid,true); if($vip > 0){ $money = sprintf("%.2f",$goods['vipyuecashback']*$num); }else{ $money = sprintf("%.2f",$goods['yuecashback']*$num); } if($money > 0){ //扣除代理金额 if($goods['aid'] > 0){ $remark2 = '用户'.$remark; $ares = self::deductAgencyAmount($goods['aid'],$money,$remark2); }else{ $ares = 1; } if($ares > 0){ Member::credit_update_credit2($mid,$money,$remark); } } } /** * Comment: 余额返现(同城配送与在线买单) * Author: wlf * Date: 2021/06/30 17:34 */ function yueCityCashBack($mid,$sid,$price,$plugin = 0){ // plugin 0 配送 1买单 $vip = WeliamWeChat::VipVerification($mid,true); if($plugin > 0){ $storeinfo = pdo_get('wlmerchant_merchantdata',array('id' => $sid),array('online_yuecashback','aid','online_vipyuecashback','storename')); if($vip > 0){ $money = sprintf("%.2f",$storeinfo['online_vipyuecashback']*$price/100); }else{ $money = sprintf("%.2f",$storeinfo['online_yuecashback']*$price/100); } $remark = '支付['.$storeinfo['storename'].']在线买单返现'; }else{ $storeinfo = pdo_get('wlmerchant_merchantdata',array('id' => $sid),array('yuecashback','aid','vipyuecashback','storename')); if($vip > 0){ $money = sprintf("%.2f",$storeinfo['vipyuecashback']*$price/100); }else{ $money = sprintf("%.2f",$storeinfo['yuecashback']*$price/100); } $remark = '购买['.$storeinfo['storename'].']商品返现'; } if($money > 0){ //扣除代理金额 if($storeinfo['aid'] > 0){ $remark2 = '用户'.$remark; $ares = self::deductAgencyAmount($storeinfo['aid'],$money,$remark2); }else{ $ares = 1; } if($ares > 0){ Member::credit_update_credit2($mid,$money,$remark); } } } /** * Comment: 确认收货(一般商品) * Author: wlf * Date: 2021/06/30 15:56 */ function sureReceive($id,$type){ if ($type == 'rush') { $res = pdo_update('wlmerchant_rush_order' , ['status' => 2] , ['id' => $id , 'status' => 4]); //添加结算抢购订单到计划任务 $rushtask = [ 'type' => 'rush' , 'orderid' => $id ]; $rushtask = serialize($rushtask); Queue::addTask(1 , $rushtask , time() , $id); if ($res) { $order = pdo_get(PDO_NAME . 'rush_order' , ['id' => $id] , ['expressid','disorderid','id','mid','num','activityid']); $expressid =$order['expressid']; pdo_update('wlmerchant_express' , ['receivetime' => time()] , ['id' => $expressid]); $disorderid = $order['disorderid']; if (!empty($disorderid)) { $res = pdo_update('wlmerchant_disorder' , ['status' => 1] , ['status' => 0 , 'id' => $disorderid]); if ($res) { //添加结算分销订单到计划任务 $distask = [ 'type' => 'rush' , 'orderid' => $disorderid ]; $distask = serialize($distask); Queue::addTask(3 , $distask , time() , $disorderid); } } self::yueCashBack($order['mid'],$type,$order['activityid'],$order['num']); //抽奖码 $goodsinfo = pdo_get(PDO_NAME.'rush_activity',array('id' => $order['activityid']),array('name','drawid')); if($goodsinfo['drawid'] > 0 ){ Luckydraw::getDrawCode($goodsinfo['drawid'],$order['mid'],$order['id'],'rush'); } return 1; }else { return 0; } } else { $res = pdo_update('wlmerchant_order' , ['status' => 2] , ['id' => $id , 'status' => 4]); if($type != 'consumption'){ //添加结算通用订单到计划任务 $ordertask = [ 'type' => $type , 'orderid' => $id ]; $ordertask = serialize($ordertask); Queue::addTask(2 , $ordertask , time() , $id); } if ($res) { if($type == 'consumption'){ pdo_update('wlmerchant_consumption_record' , ['status' => 3] , ['orderid' => $id]); } $order = pdo_get(PDO_NAME . 'order' , ['id' => $id] , ['expressid','id','disorderid','mid','num','fkid']); $expressid = $order['expressid']; pdo_update('wlmerchant_express' , ['receivetime' => time()] , ['id' => $expressid]); $disorderid = $order['disorderid']; if (!empty($disorderid)) { $res = pdo_update('wlmerchant_disorder' , ['status' => 1] , ['status' => 0 , 'id' => $disorderid]); if ($res) { //添加结算分销订单到计划任务 $distask = [ 'type' => $type , 'orderid' => $disorderid ]; $distask = serialize($distask); Queue::addTask(3 , $distask , time() , $disorderid); } } self::yueCashBack($order['mid'],$type,$order['fkid'],$order['num']); //抽奖码 switch ($type) { case 'groupon': $goods = pdo_get('wlmerchant_groupon_activity',array('id' => $order['fkid']),array('drawid')); break;//团购商品 case 'wlfightgroup': $goods = pdo_get('wlmerchant_fightgroup_goods',array('id' => $order['fkid']),array('drawid')); break;//拼团商品 case 'bargain': $goods = pdo_get('wlmerchant_bargain_activity',array('id' => $order['fkid']),array('drawid')); break;//砍价商品 } if($goods['drawid'] > 0 ){ Luckydraw::getDrawCode($goods['drawid'],$order['mid'],$order['id'],$type); } return 1; } else { return 0; } } } /** * Comment: 扣除代理金额 * Author: wlf * Date: 2021/09/18 11:26 */ function deductAgencyAmount($aid,$money,$remark){ $supminey = pdo_getcolumn(PDO_NAME.'agentusers',array('id'=>$aid),'nowmoney'); if($supminey > $money){ $nowmoney = sprintf("%.2f",$supminey - $money); $res = pdo_update(PDO_NAME.'agentusers',array('nowmoney' => $nowmoney),array('id' => $aid)); Store::addcurrent(2,15,$aid,-$money,$nowmoney,0,$remark); return $res; }else{ return 0; } } }