$invitid), 'distributorid'); $distributor = pdo_get('wlmerchant_distributor', array('id' => $distributorid)); if ($distributor['disflag'] > 0) { $member = Member::wl_member_get($mid, array('distributorid', 'mobile', 'nickname', 'realname')); $distor = pdo_get(PDO_NAME . 'distributor', ['id' => $member['distributorid']]); if (empty($distor)) { $distor2 = pdo_get(PDO_NAME . 'distributor', ['mid' => $mid]); if(empty($distor2)){ pdo_delete('wlmerchant_distributor',array('mid'=>$mid)); $member = pdo_get('wlmerchant_member', array('id' => $mid), array('mobile', 'nickname', 'realname')); $data = array( 'uniacid' => $_W['uniacid'], 'aid' => $_W['aid'], 'mid' => $mid, 'createtime' => time(), 'disflag' => 0, 'nickname' => $member['nickname'], 'mobile' => $member['mobile'], 'realname' => $member['realname'], 'leadid' => $invitid ); //不锁死上下级 if ($disset['lockstatus'] == 1 || $disset['lockstatus'] == 3) { $data['lockflag'] = 1; } pdo_insert('wlmerchant_distributor', $data); $disid = pdo_insertid(); $res = pdo_update('wlmerchant_member', array('distributorid' => $disid), array('id' => $mid)); }else{ pdo_update('wlmerchant_distributor', array('leadid' => $invitid), array('id' => $distor2['id'])); $res = pdo_update('wlmerchant_member', array('distributorid' => $distor2['id']), array('id' => $mid)); } } else { if (empty($distor['leadid']) || ($disset['lockstatus'] == 2 && empty($distor['disflag'])) || $disset['temporary_sub'] > 0) { //没有上级 或 动态上级 $data = array('leadid' => $invitid); if ($disset['lockstatus'] == 1) { //支付后再锁定上下级关系 $data['lockflag'] = 1; } $res = pdo_update('wlmerchant_distributor', $data, array('id' => $member['distributorid'])); } else if ($distor['lockflag'] && ($disset['lockstatus'] == 1 || $disset['lockstatus'] == 3)) { //未锁定的上级 更换上级 $res = pdo_update('wlmerchant_distributor', array('leadid' => $invitid), array('id' => $member['distributorid'])); } $disid = $distor['id']; } MysqlFunction::commit(); if ($res && empty($disset['lockstatus'])) { $url = h5_url('pages/subPages/dealer/client/client'); Distribution::checkup($distributorid); if($disid > 0){ if($laterflag > 0){ $disvalue = array( 'mid' => $distributor['mid'], 'url' => $url, 'disid' => $disid ); $disvalue = serialize($disvalue); Queue::addTask(8, $disvalue, time(), $disid); }else{ Distribution::distriNotice($distributor['mid'], $url, 2, $disid); } } if ($disset['ranknum'] > 1) { $twodisid = pdo_getcolumn(PDO_NAME . 'distributor', array('mid' => $distributor['leadid']), 'id'); Distribution::checkup($twodisid); if ($disset['noticerank2'] > 0 && $distributor['leadid'] > 0) { if($laterflag > 0){ $disvalue = array( 'mid' => $distributor['leadid'], 'url' => $url, 'disid' => $disid ); $disvalue = serialize($disvalue); Queue::addTask(8, $disvalue, time(), $disid); }else{ Distribution::distriNotice($distributor['leadid'], $url, 2, $disid); } } } } if ($disflag) { $distor = pdo_get('wlmerchant_distributor', array('id' => $disid), array('disflag')); if (empty($distor['disflag'])) { header('location:' . h5_url('pages/subPages/dealer/apply/apply')); } } }else{ MysqlFunction::commit(); } } //分销助手 static function getdishelp($goods, $type) { global $_W; $disset = Setting::wlsetting_read('distribution'); $distributor = pdo_get('wlmerchant_distributor', array('mid' => $_W['mid'], 'disflag' => 1), array('id', 'dislevel')); if ($distributor['id']) { $disflag = 1; } if (empty($goods['isdistri'])) { if ($disset['helpstatus'] == 2 || ($disset['helpstatus'] == 1 && $distributor['id'])) { $helpflag = 1; $fxtext = $disset['fxtext'] ? $disset['fxtext'] : '分销'; $xxtext = $disset['xxtext'] ? $disset['xxtext'] : '客户'; $sjtext = $disset['sjtext'] ? $disset['sjtext'] : '上级'; $yjtext = $disset['yjtext'] ? $disset['yjtext'] : '佣金'; $fxstext = $disset['fxstext'] ? $disset['fxstext'] : '分销商'; if ($goods['optionstatus']) { if ($type == 'rush') { $option = pdo_fetch("SELECT * FROM " . tablename('wlmerchant_goods_option') . "WHERE uniacid = {$_W['uniacid']} AND type = 1 AND goodsid = {$goods['id']} ORDER BY onedismoney DESC"); } else if ($type == 'wlfightgroup') { $option = pdo_fetch("SELECT * FROM " . tablename('wlmerchant_goods_option') . "WHERE uniacid = {$_W['uniacid']} AND type = 2 AND goodsid = {$goods['id']} ORDER BY onedismoney DESC"); } else if ($type == 'groupon') { $option = pdo_fetch("SELECT * FROM " . tablename('wlmerchant_goods_option') . "WHERE uniacid = {$_W['uniacid']} AND type = 3 AND goodsid = {$goods['id']} ORDER BY onedismoney DESC"); } $goods['onedismoney'] = $option['onedismoney']; $goods['twodismoney'] = $option['twodismoney']; $goods['price'] = $option['price']; } if ($goods['onedismoney'] > 0) { if ($disset['mode']) { $alldismoney = $goods['onedismoney'] + $goods['twodismoney']; } else { $alldismoney = $goods['onedismoney']; } } else { $commission = pdo_get('wlmerchant_dislevel', array('isdefault' => 1, 'uniacid' => $_W['uniacid']), array('onecommission', 'twocommission')); if ($distributor['id']) { if ($distributor['dislevel']) { $commission = pdo_get('wlmerchant_dislevel', array('id' => $distributor['dislevel']), array('onecommission', 'twocommission')); } } if ($disset['mode']) { $allmax = $commission['onecommission'] + $commission['twocommission']; } else { $allmax = $commission['onecommission']; } $alldismoney = sprintf("%.2f", $allmax * $goods['price'] / 100); } if ($type == 'rush') { $copyurl = h5_url('pages/subPages/goods/index', ['id=' => $goods['id'], 'type' => 1]); } else if ($type == 'groupon') { $copyurl = h5_url('pages/subPages/goods/index', ['type' => 2, 'id' => $goods['id']]); } else if ($type == 'wlfightgroup') { $copyurl = h5_url('pages/subPages/goods/index', ['type' => 3, 'id' => $goods['id']]); } else if ($type == 'coupon') { $copyurl = h5_url('pages/subPages/goods/index', ['type' => 5, 'id' => $goods['id']]); if (empty($goods['is_charge'])) { $helpflag = 0; } } $result = Util::long2short($copyurl); if (!is_error($result) && $result['short_url'] != 'h') { $copyurl = $result['short_url']; } if ($type == 'wlfightgroup') { $type = 'fightgroup'; } $h5type = array( 'rush' => 3, 'groupon' => 4, 'coupon' => 5, 'wlfightgroup' => 6 ); $posterurl = h5_url('pages/mainPages/poster/poster', array('id' => $goods['id'], 'type' => $h5type[$type])); return array('disflag' => $disflag, 'helpimg' => $disset['helpimg'], 'helpflag' => $helpflag, 'alldismoney' => $alldismoney, 'copyurl' => $copyurl, 'posterurl' => $posterurl, 'fxtext' => $fxtext, 'xxtext' => $xxtext, 'sjtext' => $sjtext, 'yjtext' => $yjtext, 'fxstext' => $fxstext); } } } static function disnewsettlement($id) { global $_W; $disorder = pdo_get('wlmerchant_disorder', array('id' => $id)); $smallorder = pdo_getall('wlmerchant_smallorder', array('disorderid' => $id, 'status' => 1)); if(Customized::init('distributionText') > 0){ $reason = '共享股东订单结算'; }else{ $reason = '分销订单结算'; } if ($smallorder) { foreach ($smallorder as $order) { $nosetflag = pdo_getcolumn('wlmerchant_disdetail', array('checkcode' => $order['checkcode']), 'id'); if (empty($nosetflag)) { if ($order['onedismoney'] > 0) { pdo_fetch("update" . tablename('wlmerchant_distributor') . "SET dismoney=dismoney+{$order['onedismoney']},nowmoney=nowmoney+{$order['onedismoney']} WHERE id = {$order['oneleadid']}"); $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, $reason, $onenowmoney, $order['checkcode']); } if ($order['twodismoney'] > 0) { pdo_fetch("update" . tablename('wlmerchant_distributor') . "SET dismoney=dismoney+{$order['twodismoney']},nowmoney=nowmoney+{$order['twodismoney']} WHERE id = {$order['twoleadid']}"); $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, $reason, $twonowmoney, $order['checkcode']); } pdo_update('wlmerchant_smallorder', array('dissettletime' => time()), array('id' => $order['id'])); pdo_update('wlmerchant_disorder', array('status' => 2), array('id' => $id)); return true; } } } } //检查是否为分销商 static function checkdisflag($mid) { global $_W; $distributorid = pdo_getcolumn(PDO_NAME . 'member', array('id' => $mid), 'distributorid'); if ($distributorid) { $flag = pdo_getcolumn(PDO_NAME . 'distributor', array('id' => $distributorid), 'disflag'); return $flag; } return 0; } //获取分销替换文字 static function getDistText() { global $_W; $disset = Setting::wlsetting_read('distribution'); $fxtext = $disset['fxtext'] ? $disset['fxtext'] : '分销'; $xxtext = $disset['xxtext'] ? $disset['xxtext'] : '客户'; $sjtext = $disset['sjtext'] ? $disset['sjtext'] : '上级'; $yjtext = $disset['yjtext'] ? $disset['yjtext'] : '佣金'; $fxstext = $disset['fxstext'] ? $disset['fxstext'] : '分销商'; $myposter = $disset['myposter'] ? $disset['myposter'] : '我的海报'; return array('fxtext' => $fxtext, 'xxtext' => $xxtext, 'sjtext' => $sjtext, 'yjtext' => $yjtext, 'fxstext' => $fxstext, 'myposter' => $myposter); } //获取分销商列表 static function getNumDistributor($select, $where, $order, $pindex, $psize, $ifpage) { $distributorInfo = Util::getNumData($select, PDO_NAME . 'distributor', $where, $order, $pindex, $psize, $ifpage); return $distributorInfo; } //查询上级分销商与计算订单佣金 static function disCore($mid, $price, $disarray, $num, $threemoney, $orderid, $plugin, $settflag = 0,$isdistristatus = 0) { global $_W; $disset = Setting::wlsetting_read('distribution'); $disid = pdo_getcolumn('wlmerchant_member', array('id' => $mid), 'distributorid'); if ($disset['switch'] && $disid) { $member = pdo_get('wlmerchant_distributor', array('uniacid' => $_W['uniacid'], 'mid' => $mid), array('id', 'dislevel', 'leadid', 'disflag', 'lockflag')); //购买者 //自购返佣 if ($member['disflag'] > 0 && $plugin != 'distribution') { $mleveid = $member['dislevel']; $memberlevel = pdo_get(PDO_NAME . 'dislevel', array('id' => $mleveid), array('ownstatus')); if (empty($memberlevel)) { $memberlevel = pdo_get(PDO_NAME . 'dislevel', array('uniacid' => $_W['uniacid'], 'isdefault' => 1), array('ownstatus')); } if ($memberlevel['ownstatus']) { $one = pdo_get('wlmerchant_distributor', array('uniacid' => $_W['uniacid'], 'mid' => $mid, 'disflag' => 1), array('id', 'leadid', 'dislevel', 'mid', 'lockflag', 'subnum')); //上级 } } if (empty($one) && $member['leadid'] > 0) { $one = pdo_get('wlmerchant_distributor', array('uniacid' => $_W['uniacid'], 'mid' => $member['leadid'], 'disflag' => 1), array('id', 'leadid', 'dislevel', 'mid', 'lockflag', 'subnum')); //上级 } if ($one) { $leadid['one'] = $one['id']; $leveid = $one['dislevel']; $onelevel = pdo_get(PDO_NAME . 'dislevel', array('id' => $leveid), array('id','onecommission', 'plugin')); if (empty($onelevel)) { $onelevel = pdo_get(PDO_NAME . 'dislevel', array('uniacid' => $_W['uniacid'], 'isdefault' => 1), array('id','onecommission', 'plugin')); $leveid = $onelevel['id']; } $oneplugin = unserialize($onelevel['plugin']); if(empty($disarray) && $plugin == 'rush'){ //校验分销数组 $orderinfo = pdo_get('wlmerchant_rush_order',array('id' => $orderid),array('activityid','optionid')); $disarray = pdo_getcolumn(PDO_NAME.'rush_activity',array('id'=>$orderinfo['activityid']),'disarray'); if($orderinfo['optionid'] > 0){ $option = pdo_get('wlmerchant_goods_option', array('id' => $orderinfo['optionid']), array('disarray')); $disarray = WeliamWeChat::mergeDisArray($option['disarray'],$disarray); } $disarray = unserialize($disarray); } if(is_array($disarray)){ if($isdistristatus > 0){ $onemoney = sprintf("%.2f",$disarray[$leveid]['onedismoney'] * $num); }else{ $onemoney = sprintf("%.2f",$disarray[$leveid]['onedismoney'] * $price / 100); } }else{ $onemoney = $disarray; } if (in_array($plugin, $oneplugin)) { if ($onemoney > 0) { $leadmoney['one'] = sprintf("%.2f",$onemoney); } else { $leadmoney['one'] = sprintf("%.2f", $price * $onelevel['onecommission'] / 100); } } else { $leadmoney['one'] = 0; } if ($disset['ranknum'] > 1) { if ($disset['mode'] && $one['leadid'] < 0) { $one['leadid'] = $one['mid']; } if ($one['leadid'] > 0 && empty($one['lockflag'])) { $two = pdo_get('wlmerchant_distributor', array('uniacid' => $_W['uniacid'], 'mid' => $one['leadid'], 'disflag' => 1), array('id', 'leadid', 'dislevel')); if ($two) { $leadid['two'] = $two['id']; $leveid = $two['dislevel']; $twolevel = pdo_get(PDO_NAME . 'dislevel', array('id' => $leveid), array('id','twocommission', 'plugin')); if (empty($twolevel)) { $twolevel = pdo_get('wlmerchant_dislevel', array('uniacid' => $_W['uniacid'], 'isdefault' => 1), array('id','twocommission', 'plugin')); $leveid = $twolevel['id']; } $twoplugin = unserialize($twolevel['plugin']); if(is_array($disarray)) { if ($isdistristatus > 0) { $twomoney = sprintf("%.2f", $disarray[$leveid]['twodismoney'] * $num); } else { $twomoney = sprintf("%.2f", $disarray[$leveid]['twodismoney'] * $price / 100); } }else if($disarray > 0){ $twomoney = $num; } if (in_array($plugin, $twoplugin)) { if ($twomoney > 0 || $disarray[$leveid]['onedismoney'] > 0) { $leadmoney['two'] = sprintf("%.2f",$twomoney); } else { $leadmoney['two'] = sprintf("%.2f", $price * $twolevel['twocommission'] / 100); } } else { $leadmoney['two'] = 0; } if($leadmoney['two'] < 0.01){ $leadid['two'] = 0; } } } // if($disset['ranknum']>2 && $two['leadid']>0){ // $three = pdo_get('wlmerchant_distributor',array('uniacid'=>$_W['uniacid'],'mid'=>$two['leadid']),array('id','leadid','dislevel')); // $leadid['three'] = $three['id']; // $leveid = $three['dislevel']; // if(empty($leveid)){ // $leveid = pdo_getcolumn('wlmerchant_dislevel',array('uniacid' =>$_W['uniacid'],'isdefault'=>1),'id'); // } // $threelevel = pdo_get(PDO_NAME.'dislevel',array('id'=>$leveid),array('threecommission','plugin')); // $threeplugin = unserialize($threelevel['plugin']); // if(in_array($plugin,$threeplugin)){ // if($threemoney>0){ // $leadmoney['three'] = $threemoney; // }else { // $leadmoney['three'] = number_format($price*$threelevel['threecommission']/100,2); // } // }else { // $leadmoney['three'] = 0; // } // } } if ($leadmoney['one'] > 0 || $leadmoney['two'] > 0) { //校验是否已经有了分销订单 $flag = pdo_get('wlmerchant_disorder', array('plugin' => $plugin, 'orderid' => $orderid), array('id')); if (!empty($flag)) { $disorderid = $flag['id']; } else { $data = array( 'uniacid' => $_W['uniacid'], 'aid' => $_W['aid'], 'status' => 0, 'plugin' => $plugin, 'orderid' => $orderid, 'orderprice' => $price, 'buymid' => $mid, 'oneleadid' => $leadid['one'], 'twoleadid' => $leadid['two'], 'leadmoney' => serialize($leadmoney), 'createtime' => time() ); //判断分销订单结算状态 if ($settflag) { $data['status'] = 1; } //小订单代码 if ($plugin == 'rush') { $order = pdo_get('wlmerchant_rush_order', array('id' => $orderid), array('neworderflag', 'num')); $neworderflag = $order['neworderflag']; } else { $order = pdo_get('wlmerchant_order', array('id' => $orderid), array('neworderflag', 'fkid', 'num')); if ($plugin == 'coupon') { $usetimes = pdo_getcolumn(PDO_NAME . 'couponlist', array('id' => $order['fkid']), 'usetimes'); $order['num'] = $order['num'] * $usetimes; } $neworderflag = $order['neworderflag']; } if (!empty($neworderflag)) { $data['neworderflag'] = $neworderflag; } pdo_insert('wlmerchant_disorder', $data); $disorderid = pdo_insertid(); //判断分销订单结算状态 if ($settflag) { $disvalue = array( 'type' => $plugin, 'orderid' => $disorderid ); $disvalue = serialize($disvalue); Queue::addTask(3, $disvalue, time(), $disorderid); } //添加小订单的分销信息 if (!empty($neworderflag)) { $sdata = array( 'disorderid' => $disorderid, 'oneleadid' => $data['oneleadid'], 'twoleadid' => $data['twoleadid'], 'onedismoney' => sprintf("%.2f", $leadmoney['one'] / $order['num']), 'twodismoney' => sprintf("%.2f", $leadmoney['two'] / $order['num']), ); if($plugin == 'fightgroup'){ $splugin = 'wlfightgroup'; }else{ $splugin = $plugin; } pdo_update('wlmerchant_smallorder', $sdata, array('plugin' => $splugin, 'orderid' => $orderid)); } self::moneyNotice($mid, $plugin, $orderid, $one['id'], $disorderid, 1); if ($disset['noticerank3'] > 0 && $two && $two['id'] != $one['id']) { self::moneyNotice($mid, $plugin, $orderid, $two['id'], $disorderid, 1); } // if ($disset['noticerank3'] > 1 && $three) { // self::moneyNotice($mid, $plugin, $orderid, $three['id'], $disorderid, 1); // } if ((($disset['lockstatus'] == 1) || ($disset['lockstatus'] == 3 && $plugin = 'halfcard')) && $member['lockflag']) { //锁死上下级 $res = pdo_update('wlmerchant_distributor', array('lockflag' => 0), array('id' => $member['id'])); if ($res) { $url = h5_url('pages/subPages/dealer/client/client'); $openid = pdo_getcolumn(PDO_NAME . 'member', array('id' => $one['mid']), 'openid'); //客户定制渠道分销二级自动升一级 if (!empty($disset['twoupone']) && $disset['mode'] == 1 && !empty($one['leadid'])) { $one_leadid = $one['leadid']; $onenum = pdo_fetchcolumn('SELECT count(id) FROM ' . tablename('wlmerchant_distributor') . " WHERE leadid = {$one['mid']} AND lockflag = 0 "); if (($onenum + $one['subnum']) >= $disset['twoupone']) { pdo_update('wlmerchant_distributor', array('leadid' => -1), array('id' => $one['id'])); //$one_leadid = $one['mid']; //把二级的客户变为一级的客户 pdo_update('wlmerchant_distributor', array('leadid' => $one['leadid']), array('leadid' => $one['mid'])); } //修改下级数量 pdo_update('wlmerchant_distributor', array('subnum' => $one['subnum'] + 1), array('id' => $one['id'])); //修改购买用户的上级 if ($one_leadid != -1) { pdo_update('wlmerchant_distributor', array('leadid' => $one_leadid), array('id' => $member['id'])); } //成为分销商 pdo_update('wlmerchant_distributor', array('disflag' => 1), array('id' => $member['id'])); } Distribution::checkup($one['id']); Distribution::distriNotice($one['mid'], $url, 2, $member['id']); if ($disset['ranknum'] > 1) { $twodisid = pdo_getcolumn(PDO_NAME . 'distributor', array('mid' => $one['leadid']), 'id'); Distribution::checkup($twodisid); if ($disset['noticerank2'] > 0 && empty($one['lockflag'])) { $openid = pdo_getcolumn(PDO_NAME . 'member', array('id' => $one['leadid']), 'openid'); Distribution::distriNotice($one['leadid'], $url, 2, $member['id']); } } } } } } else { $disorderid = 0; } } else { $disorderid = 0; } } else { $disorderid = 0; } //336定制 临时下级 所有下级不在固定绑定某个分销商,会在支付后取消绑定关系 if(Customized::init('customized336') && $disset['temporary_sub'] == 1 && $disorderid > 0){ //取消当前分销商绑定关系 pdo_update(PDO_NAME."distributor",['leadid'=>0,'updatetime'=>time()],['id'=>$disid]); } return $disorderid; } //升级判断 static function checkup($distributorid) { global $_W; $distributor = pdo_get('wlmerchant_distributor', array('id' => $distributorid)); $_W['uniacid'] = $distributor['uniacid']; $settings = Setting::wlsetting_read('distribution'); $levelupstatusArray = unserialize($settings['levelupstatus']); $nowdislevel = $distributor['dislevel']; if (empty($nowdislevel)) { $nowdislevel = pdo_getcolumn(PDO_NAME . 'dislevel', array('uniacid' => $_W['uniacid'], 'isdefault' => 1), 'id'); pdo_update('wlmerchant_distributor',array('dislevel' => $nowdislevel),array('id' => $distributorid)); } $nowdislevelInfo = pdo_get(PDO_NAME . 'dislevel', array('id' => $nowdislevel), ['levelclass','isdefault']); $nowlevelclass = $nowdislevelInfo['levelclass']; $highlevel = pdo_fetch("SELECT * FROM " . tablename('wlmerchant_dislevel') . "WHERE uniacid = {$_W['uniacid']} AND levelclass > {$nowlevelclass} ORDER BY levelclass ASC"); $canUp = 0; if (in_array(0,$levelupstatusArray) && $highlevel['upstandard'] > 0 && empty($canUp) ) { $disupstandard = $distributor['dismoney']; if($disupstandard >= $highlevel['upstandard']){ $canUp = 1; } } if (in_array(1,$levelupstatusArray) && $highlevel['upstandard1'] > 0 && empty($canUp) ) { $onelows = pdo_getall('wlmerchant_distributor', array('leadid' => $distributor['mid'], 'lockflag' => 0), array('mid')); $onenum = count($onelows); $twonum = 0; $threenum = 0; if ($settings['ranknum'] > 1 && $onelows) { foreach ($onelows as $key => $one) { $twolows = pdo_getall('wlmerchant_distributor', array('leadid' => $one['mid'], 'lockflag' => 0), array('mid')); $twonum += count($twolows); if ($settings['ranknum'] > 2 && $twolows) { foreach ($twolows as $key => $two) { $threelows = pdo_getall('wlmerchant_distributor', array('leadid' => $two['mid'], 'lockflag' => 0), array('mid')); $threenum += count($threelows); } } } } $disupstandard = $onenum + $twonum + $threenum; if($disupstandard >= $highlevel['upstandard1']){ $canUp = 1; } } if (in_array(2,$levelupstatusArray) && $highlevel['upstandard2'] > 0 && empty($canUp)) { $onelows = pdo_getall('wlmerchant_distributor', array('leadid' => $distributor['mid'], 'lockflag' => 0), array('mid')); $disupstandard = count($onelows); if($disupstandard >= $highlevel['upstandard2']){ $canUp = 1; } } if (in_array(3,$levelupstatusArray) && $highlevel['upstandard3'] > 0 && empty($canUp)) { $onelows = pdo_getall('wlmerchant_distributor', array('leadid' => $distributor['mid'], 'lockflag' => 0), array('mid', 'disflag')); $onenum = 0; $twonum = 0; $threenum = 0; if ($onelows) { foreach ($onelows as $key => $one) { if ($one['disflag']) { $onenum += 1; } if ($settings['ranknum'] > 1) { $twolows = pdo_getall('wlmerchant_distributor', array('leadid' => $one['mid']), array('mid', 'disflag')); if ($twolows) { foreach ($twolows as $key => $two) { if ($two['disflag']) { $twonum += 1; } if ($settings['ranknum'] > 2) { $threelows = pdo_getall('wlmerchant_distributor', array('leadid' => $two['mid'], 'disflag' => 1), array('mid')); $threenum += count($threelows); } } } } } } $disupstandard = $onenum + $twonum + $threenum; if($disupstandard >= $highlevel['upstandard3']){ $canUp = 1; } } if (in_array(4,$levelupstatusArray) && $highlevel['upstandard4'] > 0 && empty($canUp)) { $onelows = pdo_getall('wlmerchant_distributor', array('leadid' => $distributor['mid'], 'disflag' => 1, 'lockflag' => 0), array('mid')); $disupstandard = count($onelows); if($disupstandard >= $highlevel['upstandard4']){ $canUp = 1; } } if (in_array(5,$levelupstatusArray) && $highlevel['upstandard5'] > 0 && empty($canUp)) { $disupstandard = pdo_getcolumn('wlmerchant_disorder',array('buymid' => $distributor['mid'],'oneleadid'=>$distributor['id']),array("SUM(orderprice)")); if($disupstandard >= $highlevel['upstandard5']){ $canUp = 1; } } if ($canUp > 0) { $res = pdo_update('wlmerchant_distributor', array('dislevel' => $highlevel['id']), array('id' => $distributorid)); if ($res) { //赠送积分 if($highlevel['giftintegral'] > 0){ Member::credit_update_credit1($distributor['mid'], $highlevel['giftintegral'], '等级提升赠送积分'); } self::levelupNotice($distributorid, $nowdislevel, $highlevel['id']); } } } //处理支付 static function payApplydisNotify($params) { global $_W; Util::wl_log('payResult_notify', PATH_DATA . "merchant/data/", $params); //写入异步日志记录 $order_out = pdo_get(PDO_NAME . 'order', array('orderno' => $params['tid'])); if ($order_out['status'] == 0) { $distributor = pdo_get('wlmerchant_distributor', array('mid' => $order_out['mid'])); $settings = Setting::wlsetting_read('distribution'); if ($order_out['specid'] == 2) { //二级 $examine = $settings['twoexamine']; $onegetmoney = $settings['onegetmoney']; $twogetmoney = 0; } else { //一级 $examine = $settings['examine']; if (empty($settings['mode'])) { $onegetmoney = $settings['modeonemoney']; $twogetmoney = $settings['modetwomoney']; } } $member = pdo_get('wlmerchant_member', array('id' => $order_out['mid']), array('mobile', 'nickname', 'realname')); $data = self::getPayData($params); //得到支付参数,处理代付 if ($data['status'] == 1) { $data['status'] = 3; } pdo_update(PDO_NAME . 'order', $data, array('orderno' => $params['tid'])); //更新订单状态 if ($examine == 1) { $data = array( 'uniacid' => $_W['uniacid'], 'aid' => $order_out['aid'], 'mid' => $order_out['mid'], 'status' => 0, 'realname' => $member['realname'] ? $member['realname'] : $member['nickname'], 'mobile' => $member['mobile'], 'createtime' => time(), 'rank' => $order_out['specid'] ); $res = pdo_insert('wlmerchant_applydistributor', $data); self::toadmin($data['realname']); } else { if ($distributor) { if (empty($distributor['disflag'])) { pdo_update('wlmerchant_distributor', array('disflag' => 1, 'leadid' => $order_out['recordid'], 'updatetime' => time(), 'lockflag' => 0), array('mid' => $order_out['mid'])); } $head_id = $distributor['leadid']; $disid = $distributor['id']; } else { $data = array( 'uniacid' => $_W['uniacid'], 'aid' => $order_out['aid'], 'mid' => $order_out['mid'], 'createtime' => time(), 'disflag' => 1, 'nickname' => $member['nickname'], 'mobile' => $member['mobile'], 'realname' => $member['realname'], 'leadid' => $order_out['recordid'] ); pdo_insert('wlmerchant_distributor', $data); $disid = pdo_insertid(); $head_id = $order_out['recordid']; pdo_update('wlmerchant_member', array('distributorid' => $disid), array('id' => $order_out['mid'])); } $openid = pdo_getcolumn(PDO_NAME . 'member', array('id' => $order_out['mid']), 'openid'); Distribution::distriNotice($order_out['mid'], '', 1); if($head_id > 0) Distribution::distriNotice($head_id, '', 2,$disid);//发送模板消息 } //处理分销 $disorderid = self::disCore($order_out['mid'], $order_out['price'], $onegetmoney, $twogetmoney, 0, $order_out['id'], 'distribution', 1); pdo_update(PDO_NAME . 'order',['disorderid' => $disorderid], array('orderno' => $params['tid'])); //更新订单状态 } } static function payApplydisReturn($params) { wl_message('支付成功', h5_url('pages/subPages/dealer/index/index'), 'success'); } static function getPayData($params) { global $_W; $data = array('status' => $params['result'] == 'success' ? 1 : 0); if ($params['is_usecard'] == 1) { $fee = $params['card_fee']; $data['is_usecard'] = 1; } else { $fee = $params['fee']; } //$paytype = array('credit' => 1, 'wechat' => 2, 'alipay' => 3, 'delivery' => 4,'wxapp' => 5); $data['paytype'] = $params['type']; if ($params['type'] == 'wechat') $data['transid'] = $params['tag']['transaction_id']; $data['paytime'] = TIMESTAMP; return $data; } //申请通知 static function toadmin($name){ global $_W; $openids = pdo_getall('wlmerchant_agentadmin', array('uniacid' => $_W['uniacid'],'aid' => 0, 'notice' => 1), array('mid','noticeauthority')); if ($openids) { foreach ($openids as $key => $member) { $noticeauthority = unserialize($member['noticeauthority']); if(empty($noticeauthority)) $noticeauthority = []; if ($member['mid'] > 0 && (in_array('disapply',$noticeauthority) || empty($noticeauthority))) { $fxstext = $_W['wlsetting']['trade']['fxstext'] ? $_W['wlsetting']['trade']['fxstext'] : "分销商"; $data = array( 'first' => '一个成为'.$fxstext.'的申请待审核', 'type' => $fxstext.'申请',//业务类型 'content' => '申请人:[' . $name . ']',//业务内容 'status' => '待审核',//处理结果 'time' => date('Y-m-d H:i:s', time()),//操作时间 'remark' => '请管理员尽快审核' ); if(Customized::init('distributionText') > 0) { $data['first'] = '一个成为共享股东的申请待审核'; $data['type'] = '共享股东申请'; } TempModel::sendInit('service',$member['mid'], $data, $_W['source'], ''); } } } } //业务通知 static function distriNotice($mid, $url, $flag, $lowdisid = '', $txmoney = '', $cashtype = '') { global $_W; $settings = Setting::wlsetting_read('distribution'); $nickname = pdo_getcolumn(PDO_NAME . 'member', array('id' => $mid), 'nickname'); if ($flag == 1) { //成为分销商通知 $keyword1 = $settings['noticetitle1'] ? $settings['noticetitle1'] : '成为分销商通知'; $keyword2 = '已完成'; $remark = $settings['noticecontent1']; $remark = str_replace('[昵称]', $nickname, $remark); $remark = str_replace('[时间]', date('Y-m-d H:i:s', time()), $remark); $keyword1 = str_replace('[昵称]', $nickname, $keyword1); $keyword1 = str_replace('[时间]', date('Y-m-d H:i:s', time()), $keyword1); } else if ($flag == 2) { //新增下级通知 $keyword1 = $settings['noticetitle2'] ? $settings['noticetitle2'] : '新增下级通知'; $keyword2 = '已完成'; $remark = $settings['noticecontent2']; $lowdistri = pdo_get('wlmerchant_distributor', array('id' => $lowdisid), array('nickname', 'leadid')); if (!$nickname) { $nickname = pdo_getcolumn(PDO_NAME . "member", ['id' => $lowdistri['leadid']], 'nickname'); } $lowname = '[' . $lowdistri['nickname'] . ']'; $remark = str_replace('[昵称]', $nickname, $remark); $remark = str_replace('[下级昵称]', $lowname, $remark); $remark = str_replace('[时间]', date('Y-m-d H:i:s', time()), $remark); $keyword1 = str_replace('[昵称]', $nickname, $keyword1); $keyword1 = str_replace('[下级昵称]', $lowname, $keyword1); $keyword1 = str_replace('[时间]', date('Y-m-d H:i:s', time()), $keyword1); if ($lowdistri['leadid'] == $mid) { $lowrank = '一级'; } else { $lowrank = '二级'; } $remark = str_replace('[下线层级]', $lowrank, $remark); $keyword1 = str_replace('[下线层级]', $lowrank, $keyword1); } else if ($flag == 3) { //提现申请提交通知 $keyword1 = $settings['noticetitle5'] ? $settings['noticetitle5'] : '提现申请提交通知'; $keyword2 = '申请已提交,待审核'; $remark = $settings['noticecontent5']; $remark = str_replace('[昵称]', $nickname, $remark); $remark = str_replace('[时间]', date('Y-m-d H:i:s', time()), $remark); $remark = str_replace('[金额]', $txmoney, $remark); $keyword1 = str_replace('[昵称]', $nickname, $keyword1); $keyword1 = str_replace('[时间]', date('Y-m-d H:i:s', time()), $keyword1); $keyword1 = str_replace('[金额]', $txmoney, $keyword1); } else if ($flag == 4 || $flag == 5) { //提现申请提交通知 $keyword1 = $settings['noticetitle6'] ? $settings['noticetitle6'] : '提现申请审核完成通知'; if ($flag == 4) { $keyword2 = '申请已通过,待打款'; } else { $keyword2 = '申请被驳回,请重试'; } $remark = $settings['noticecontent6']; $remark = str_replace('[昵称]', $nickname, $remark); $remark = str_replace('[时间]', date('Y-m-d H:i:s', time()), $remark); $remark = str_replace('[金额]', $txmoney, $remark); $keyword1 = str_replace('[昵称]', $nickname, $keyword1); $keyword1 = str_replace('[时间]', date('Y-m-d H:i:s', time()), $keyword1); $keyword1 = str_replace('[金额]', $txmoney, $keyword1); } else if ($flag == 6) { //佣金打款通知 $keyword1 = $settings['noticetitle7'] ? $settings['noticetitle7'] : '提现申请审核完成通知'; $keyword2 = '提现佣金已打款'; $remark = $settings['noticecontent7']; $remark = str_replace('[昵称]', $nickname, $remark); $remark = str_replace('[时间]', date('Y-m-d H:i:s', time()), $remark); $remark = str_replace('[金额]', $txmoney, $remark); $remark = str_replace('[打款方式]', $cashtype, $remark); $keyword1 = str_replace('[昵称]', $nickname, $keyword1); $keyword1 = str_replace('[时间]', date('Y-m-d H:i:s', time()), $keyword1); $keyword1 = str_replace('[金额]', $txmoney, $keyword1); $keyword1 = str_replace('[打款方式]', $cashtype, $keyword1); } $first = '您有一个新的业务通知'; $fxstext = $_W['wlsetting']['trade']['fxstext'] ? $_W['wlsetting']['trade']['fxstext'] : "分销商"; $data = array( 'first' => $first, 'type' => $keyword1,//业务类型 'content' => $fxstext . ':[' . $nickname . ']',//业务内容 'status' => $keyword2,//处理结果 'time' => date('Y-m-d H:i:s', time()),//操作时间 'remark' => $remark ); Util::wl_log('tempError', PATH_MODULE."log/",['mid'=>$mid,'data'=>$data],'分销商相关模板消息'); //写入日志记录 if ($remark != '') { return TempModel::sendInit('service', $mid, $data, $_W['source'] ?: 1, $url); } } //1下级付款通知 2佣金提醒 static function moneyNotice($buymid, $plugin, $orderid, $senddisid, $disorderid, $flag) { global $_W; $settings = Setting::wlsetting_read('distribution'); $url = h5_url('pages/subPages/dealer/gener/gener'); $time = date('Y-m-d H:i:s', time()); $buyname = pdo_getcolumn('wlmerchant_member', array('id' => $buymid), 'nickname'); $sendmid = pdo_getcolumn('wlmerchant_distributor', array('id' => $senddisid), 'mid'); $disorder = pdo_get('wlmerchant_disorder', array('id' => $disorderid)); $money = unserialize($disorder['leadmoney']); if ($plugin == 'fightgroup') { $order = pdo_get('wlmerchant_order', array('id' => $orderid), array('fkid', 'orderno')); $goodsid = $order['fkid']; $orderno = $order['orderno']; $goodsname = pdo_getcolumn('wlmerchant_fightgroup_goods', array('id' => $goodsid), 'name'); $orderstatus = '拼团商品'; } else if ($plugin == 'rush') { $order = pdo_get('wlmerchant_rush_order', array('id' => $orderid), array('activityid', 'orderno')); $goodsid = $order['activityid']; $orderno = $order['orderno']; $goodsname = pdo_getcolumn('wlmerchant_rush_activity', array('id' => $goodsid), 'name'); $orderstatus = '抢购商品'; } else if ($plugin == 'halfcard') { $order = pdo_get('wlmerchant_halfcard_record', array('id' => $orderid), array('typeid', 'orderno')); $goodsid = $order['typeid']; $orderno = $order['orderno']; $goodsname = pdo_getcolumn('wlmerchant_halfcard_type', array('id' => $goodsid), 'name'); $orderstatus = '一卡通'; } else if ($plugin == 'pocket') { $order = pdo_get('wlmerchant_order', array('id' => $orderid), array('fkid', 'orderno')); $goodsid = $order['fkid']; $orderno = $order['orderno']; $typeid = pdo_getcolumn('wlmerchant_pocket_informations', array('id' => $goodsid), 'type'); $goodsname = pdo_getcolumn('wlmerchant_pocket_type', array('id' => $typeid), 'title'); $orderstatus = '掌上信息'; } else if ($plugin == 'charge') { $order = pdo_get('wlmerchant_order', array('id' => $orderid), array('fkid', 'orderno')); $goodsid = $order['fkid']; $orderno = $order['orderno']; $goodsname = pdo_getcolumn('wlmerchant_chargelist', array('id' => $goodsid), 'name'); $orderstatus = '付费入驻'; } else if ($plugin == 'coupon') { $order = pdo_get('wlmerchant_order', array('id' => $orderid), array('fkid', 'orderno')); $goodsid = $order['fkid']; $orderno = $order['orderno']; $goodsname = pdo_getcolumn('wlmerchant_couponlist', array('id' => $goodsid), 'title'); $orderstatus = '卡券'; } else if ($plugin == 'groupon') { $order = pdo_get('wlmerchant_order', array('id' => $orderid), array('fkid', 'orderno')); $goodsid = $order['fkid']; $orderno = $order['orderno']; $goodsname = pdo_getcolumn('wlmerchant_groupon_activity', array('id' => $goodsid), 'name'); $orderstatus = '团购商品'; } else if ($plugin == 'distribution') { $order = pdo_get('wlmerchant_order', array('id' => $orderid), array('fkid', 'orderno')); $goodsid = $order['fkid']; $orderno = $order['orderno']; $goodsname = '付费申请'; $orderstatus = '付费申请'; } else if ($plugin == 'consumption') { $order = pdo_get('wlmerchant_order', array('id' => $orderid), array('fkid', 'orderno')); $goodsid = $order['fkid']; $orderno = $order['orderno']; $goodsname = pdo_getcolumn('wlmerchant_consumption_goods', array('id' => $goodsid), 'title'); $orderstatus = '积分商城'; } else if ($plugin == 'taxipay') { $order = pdo_get('wlmerchant_order', array('id' => $orderid), array('price', 'orderno')); $orderno = $order['orderno']; $goodsname = '买单支付'; $orderstatus = '出租车买单'; $url = h5_url('pages/subPages/dealer/earnings/earnings'); } else if ($plugin == 'citycard') { $order = pdo_get(PDO_NAME . 'order', ['id' => $orderid], ['price', 'orderno', 'specid']); $goodsname = pdo_getcolumn(PDO_NAME . "citycard_lists", ['id' => $order['specid']], 'name'); $orderno = $order['orderno']; $orderstatus = '开通名片'; $url = h5_url('pages/subPages/businesscard/carddetail/renewcarddetail'); } else if ($plugin == 'mobilerecharge') { $order = pdo_get(PDO_NAME . 'mrecharge_order', ['id' => $orderid], ['price','money' ,'orderno']); $goodsname = '充值'.$order['money'].'元'; $orderno = $order['orderno']; $orderstatus = '话费充值'; } $nickname = pdo_getcolumn(PDO_NAME . 'member', array('id' => $sendmid), 'nickname'); if ($settings['mode']) { if ($senddisid == $disorder['oneleadid']) { $lowrank = '一级'; if ($senddisid == $disorder['twoleadid']) { $leadmoney = $money['two'] + $money['one']; } else { $leadmoney = $money['one']; } } else if ($senddisid == $disorder['twoleadid']) { $lowrank = '二级'; $leadmoney = $money['two']; } } else { if ($senddisid == $disorder['oneleadid']) { $lowrank = '一级'; $leadmoney = $money['one']; } else if ($senddisid == $disorder['twoleadid']) { $lowrank = '二级'; $leadmoney = $money['two']; } else if ($senddisid == $disorder['threeleadid']) { $lowrank = '三级'; $leadmoney = $money['three']; } } if ($plugin == 'taxipay') { $leadmoney = $order['price']; $lowrank = '乘客'; } if ($flag == 1) { $keyword1 = $settings['noticetitle3'] ? $settings['noticetitle3'] : '下级付款通知'; $keyword2 = '下级已付款'; $remark = $settings['noticecontent3']; } else { $keyword1 = $settings['noticetitle4'] ? $settings['noticetitle4'] : '佣金到账通知'; $keyword2 = '已完成'; $remark = $settings['noticecontent4']; } $keyword1 = str_replace('[昵称]', $nickname, $keyword1); $keyword1 = str_replace('[下级昵称]', $buyname, $keyword1); $keyword1 = str_replace('[时间]', date('Y-m-d H:i:s', time()), $keyword1); $keyword1 = str_replace('[下线层级]', $lowrank, $keyword1); $keyword1 = str_replace('[佣金金额]', $leadmoney, $keyword1); $keyword1 = str_replace('[订单金额]', $disorder['orderprice'], $keyword1); $keyword1 = str_replace('[订单编号]', $orderno, $keyword1); $keyword1 = str_replace('[订单类型]', $orderstatus, $keyword1); $keyword1 = str_replace('[商品名称]', $goodsname, $keyword1); $remark = str_replace('[昵称]', $nickname, $remark); $remark = str_replace('[下级昵称]', $buyname, $remark); $remark = str_replace('[时间]', date('Y-m-d H:i:s', time()), $remark); $remark = str_replace('[下线层级]', $lowrank, $remark); $remark = str_replace('[佣金金额]', $leadmoney, $remark); $remark = str_replace('[订单金额]', $disorder['orderprice'], $remark); $remark = str_replace('[订单编号]', $orderno, $remark); $remark = str_replace('[订单类型]', $orderstatus, $remark); $remark = str_replace('[商品名称]', $goodsname, $remark); if ($flag == 2) { $distormoney = pdo_get(PDO_NAME . 'distributor', array('id' => $senddisid), array('nowmoney', 'dismoney')); $remark = str_replace('[可提现佣金]', $distormoney['nowmoney'], $remark); $remark = str_replace('[总获得佣金]', $distormoney['dismoney'], $remark); $keyword1 = str_replace('[可提现佣金]', $distormoney['nowmoney'], $keyword1); $keyword1 = str_replace('[总获得佣金]', $distormoney['dismoney'], $keyword1); } $first = '您有一个新的业务通知'; $fxstext = !empty($_W['wlsetting']['trade']['fxstext']) ? $_W['wlsetting']['trade']['fxstext'] : '分销商'; $data = array( 'first' => $first, 'type' => $keyword1,//业务类型 'content' => $fxstext . ':[' . $nickname . ']',//业务内容 'status' => $keyword2,//处理结果 'time' => date('Y-m-d H:i:s', time()),//操作时间 'remark' => $remark ); if ($remark != '') { TempModel::sendInit('service', $sendmid, $data, $_W['source'], $url); } } //添加明细 static function adddisdetail($disorderid, $leadid, $buymid, $type, $price, $plugin, $rank, $reason = '', $nowmoney, $checkcode = '', $status = 0, $aid = 0) { global $_W; $data = array( 'uniacid' => $_W['uniacid'], 'disorderid' => $disorderid, 'leadid' => $leadid, 'buymid' => $buymid, 'type' => $type, 'price' => $price, 'createtime' => time(), 'plugin' => $plugin, 'rank' => $rank, 'reason' => $reason, 'nowmoney' => $nowmoney, 'checkcode' => $checkcode, 'status' => $status, 'aid' => $aid ); pdo_insert(PDO_NAME . 'disdetail', $data); } //等级变更提示 static function levelupNotice($disid, $oldlevelid, $newlevelid) { global $_W; $settings = Setting::wlsetting_read('distribution'); $url = h5_url('pages/subPages/dealer/index/index'); $time = date('Y-m-d H:i:s', time()); $mid = pdo_getcolumn('wlmerchant_distributor', array('id' => $disid), 'mid'); $member = pdo_get('wlmerchant_member', array('id' => $mid), array('openid', 'nickname')); $nickname = $member['nickname']; $oldlevel = pdo_get('wlmerchant_dislevel', array('id' => $oldlevelid), array('name', 'onecommission', 'twocommission', 'threecommission')); $newlevel = pdo_get('wlmerchant_dislevel', array('id' => $newlevelid), array('name', 'onecommission', 'twocommission', 'threecommission')); $keyword1 = $settings['noticetitle8'] ? $settings['noticetitle8'] : '分销商等级升级通知'; $keyword2 = '已升级'; $remark = $settings['noticecontent8']; $keyword1 = str_replace('[昵称]', $member['nickname'], $keyword1); $keyword1 = str_replace('[旧等级]', $oldlevel['name'], $keyword1); $keyword1 = str_replace('[旧一级分销比例]', $oldlevel['onecommission'], $keyword1); $keyword1 = str_replace('[旧二级分销比例]', $oldlevel['twocommission'], $keyword1); $keyword1 = str_replace('[旧三级分销比例]', $oldlevel['threecommission'], $keyword1); $keyword1 = str_replace('[新等级]', $newlevel['name'], $keyword1); $keyword1 = str_replace('[新一级分销比例]', $newlevel['onecommission'], $keyword1); $keyword1 = str_replace('[新二级分销比例]', $newlevel['twocommission'], $keyword1); $keyword1 = str_replace('[新三级分销比例]', $newlevel['threecommission'], $keyword1); $keyword1 = str_replace('[时间]', $time, $keyword1); $remark = str_replace('[昵称]', $member['nickname'], $remark); $remark = str_replace('[旧等级]', $oldlevel['name'], $remark); $remark = str_replace('[旧一级分销比例]', $oldlevel['onecommission'], $remark); $remark = str_replace('[旧二级分销比例]', $oldlevel['twocommission'], $remark); $remark = str_replace('[旧三级分销比例]', $oldlevel['threecommission'], $remark); $remark = str_replace('[新等级]', $newlevel['name'], $remark); $remark = str_replace('[新一级分销比例]', $newlevel['onecommission'], $remark); $remark = str_replace('[新二级分销比例]', $newlevel['twocommission'], $remark); $remark = str_replace('[新三级分销比例]', $newlevel['threecommission'], $remark); $remark = str_replace('[时间]', $time, $remark); $first = '您有一个新的业务通知'; $fxstext = $_W['wlsetting']['trade']['fxstext'] ? $_W['wlsetting']['trade']['fxstext'] : "分销商"; $data = array( 'first' => $first, 'type' => $keyword1,//业务类型 'content' => $fxstext . ':[' . $nickname . ']',//业务内容 'status' => $keyword2,//处理结果 'time' => date('Y-m-d H:i:s', time()),//操作时间 'remark' => $remark ); if ($remark != '') { TempModel::sendInit('service', $mid, $data, $_W['source'], $url); } } //退款分销订单 static function refunddis($id, $checkcode = '') { global $_W; $order = pdo_get('wlmerchant_disorder', array('id' => $id)); if ($order['neworderflag']) { $onemoney = 0; $twomoney = 0; if ($checkcode) { $smallorder = pdo_getall('wlmerchant_smallorder', array('disorderid' => $id, 'status' => 3, 'checkcode' => $checkcode)); } else { $smallorder = pdo_getall('wlmerchant_smallorder', array('disorderid' => $id, 'status' => 3)); } foreach ($smallorder as $key => $small) { if ($small['dissettletime'] > 0) { if ($small['onedismoney'] > 0) { $one = pdo_get('wlmerchant_distributor', array('id' => $small['oneleadid'])); $onedismoney = $one['dismoney'] - $small['onedismoney']; $onenowmoney = $one['nowmoney'] - $small['onedismoney']; pdo_update('wlmerchant_distributor', array('dismoney' => $onedismoney, 'nowmoney' => $onenowmoney), array('id' => $one['id'])); $leadid = pdo_getcolumn('wlmerchant_distributor', array('id' => $order['oneleadid']), 'mid'); self::adddisdetail($order['id'], $leadid, $order['buymid'], 2, $small['onedismoney'], $order['plugin'], 1, '订单退款减佣', $onenowmoney, $small['checkcode']); } if ($small['twodismoney'] > 0) { $two = pdo_get('wlmerchant_distributor', array('id' => $small['twoleadid'])); $twodismoney = $two['dismoney'] - $small['twodismoney']; $twonowmoney = $two['nowmoney'] - $small['twodismoney']; pdo_update('wlmerchant_distributor', array('dismoney' => $twodismoney, 'nowmoney' => $twonowmoney), array('id' => $two['id'])); $leadid = pdo_getcolumn('wlmerchant_distributor', array('id' => $order['twoleadid']), 'mid'); self::adddisdetail($order['id'], $leadid, $order['buymid'], 2, $small['twodismoney'], $order['plugin'], 1, '订单退款减佣', $twonowmoney, $small['checkcode']); } } $onemoney += $small['onedismoney']; $twomoney += $small['twodismoney']; } $leadmoneys = unserialize($order['leadmoney']); $leadmoneys['one'] = sprintf("%.2f", $leadmoneys['one'] - $onemoney); if($leadmoneys['one']<0){$leadmoneys['one'] = 0;} $leadmoneys['two'] = sprintf("%.2f", $leadmoneys['two'] - $twomoney); if($leadmoneys['two']<0){$leadmoneys['two'] = 0;} $orderdata['leadmoney'] = serialize($leadmoneys); //判断状态 $overflag = pdo_get('wlmerchant_smallorder', array('disorderid' => $id, 'status' => 1), array('id')); if (empty($overflag)) { $hexiao = pdo_get('wlmerchant_smallorder', array('disorderid' => $id, 'status' => 2), array('id')); if ($hexiao) { $orderdata['status'] = 2; } else { $orderdata['status'] = 3; } } pdo_update('wlmerchant_disorder', $orderdata, array('id' => $id)); } else { if ($order['status'] == 2) { $leadmoneys = unserialize($order['leadmoney']); $one = pdo_get('wlmerchant_distributor', array('id' => $order['oneleadid'])); if ($leadmoneys['one'] > 0) { $onedismoney = $one['dismoney'] - $leadmoneys['one']; $onenowmoney = $one['nowmoney'] - $leadmoneys['one']; pdo_update('wlmerchant_distributor', array('dismoney' => $onedismoney, 'nowmoney' => $onenowmoney), array('id' => $one['id'])); $leadid = pdo_getcolumn('wlmerchant_distributor', array('id' => $order['oneleadid']), 'mid'); self::adddisdetail($order['id'], $leadid, $order['buymid'], 2, $leadmoneys['one'], $order['plugin'], 1, '订单退款', $onenowmoney); } if ($order['twoleadid'] && $leadmoneys['two'] > 0) { $two = pdo_get('wlmerchant_distributor', array('id' => $order['twoleadid'])); $twodismoney = $two['dismoney'] - $leadmoneys['two']; $twonowmoney = $two['nowmoney'] - $leadmoneys['two']; pdo_update('wlmerchant_distributor', array('dismoney' => $twodismoney, 'nowmoney' => $twonowmoney), array('id' => $two['id'])); $leadid = pdo_getcolumn('wlmerchant_distributor', array('id' => $order['twoleadid']), 'mid'); self::adddisdetail($order['id'], $leadid, $order['buymid'], 2, $leadmoneys['two'], $order['plugin'], 2, '订单退款', $twonowmoney); } } } } static function dissettlement($id) { global $_W; $order = pdo_get('wlmerchant_disorder', array('id' => $id)); $nosetflag = pdo_getcolumn('wlmerchant_disdetail', array('disorderid' => $order['id'], 'plugin' => $order['plugin'], 'status' => 0), 'id'); if (empty($nosetflag)) { $leadmoneys = unserialize($order['leadmoney']); $one = pdo_get('wlmerchant_distributor', array('id' => $order['oneleadid'])); if ($leadmoneys['one'] > 0) { $onedismoney = $one['dismoney'] + $leadmoneys['one']; $onenowmoney = $one['nowmoney'] + $leadmoneys['one']; $res1 = pdo_update('wlmerchant_distributor', array('dismoney' => $onedismoney, 'nowmoney' => $onenowmoney), array('id' => $one['id'])); self::checkup($one['id']); $leadid = pdo_getcolumn('wlmerchant_distributor', array('id' => $order['oneleadid']), 'mid'); self::adddisdetail($order['id'], $leadid, $order['buymid'], 1, $leadmoneys['one'], $order['plugin'], 1, '订单结算', $onenowmoney); } if ($order['twoleadid'] && $leadmoneys['two'] > 0) { $two = pdo_get('wlmerchant_distributor', array('id' => $order['twoleadid'])); $twodismoney = $two['dismoney'] + $leadmoneys['two']; $twonowmoney = $two['nowmoney'] + $leadmoneys['two']; $res2 = pdo_update('wlmerchant_distributor', array('dismoney' => $twodismoney, 'nowmoney' => $twonowmoney), array('id' => $two['id'])); self::checkup($two['id']); $leadid = pdo_getcolumn('wlmerchant_distributor', array('id' => $order['twoleadid']), 'mid'); self::adddisdetail($order['id'], $leadid, $order['buymid'], 1, $leadmoneys['two'], $order['plugin'], 2, '订单结算', $twonowmoney); } if ($res1 || $res2) { pdo_update('wlmerchant_disorder', array('status' => 2), array('id' => $order['id'])); if (!empty($order['neworderflag'])) { pdo_update('wlmerchant_smallorder', array('dissettletime' => time()), array('disorderid' => $id)); } } else if ($leadmoneys['one'] < 0.01 && $leadmoneys['two'] < 0.01) { pdo_update('wlmerchant_disorder', array('status' => 2), array('id' => $order['id'])); return true; } //发消息 if ($leadmoneys['one'] > 0) { self::moneyNotice($order['buymid'], $order['plugin'], $order['orderid'], $order['oneleadid'], $order['id'], 2); } if ($order['twoleadid'] != $order['oneleadid'] && $order['twoleadid'] && $leadmoneys['two'] > 0) { self::moneyNotice($order['buymid'], $order['plugin'], $order['orderid'], $order['twoleadid'], $order['id'], 2); } if ($order['threeleadid'] && $leadmoneys['three'] > 0) { $three = pdo_get('wlmerchant_distributor', array('id' => $order['threeleadid'])); $threedismoney = $three['dismoney'] + $leadmoneys['three']; $threenowmoney = $three['nowmoney'] + $leadmoneys['three']; pdo_update('wlmerchant_distributor', array('dismoney' => $threedismoney, 'nowmoney' => $threenowmoney), array('id' => $three['id'])); self::checkup($three['id']); self::moneyNotice($order['buymid'], $order['plugin'], $order['orderid'], $order['threeleadid'], $order['id'], 2); $leadid = pdo_getcolumn('wlmerchant_distributor', array('id' => $order['threeleadid']), 'mid'); self::adddisdetail($order['id'], $leadid, $order['buymid'], 1, $leadmoneys['three'], $order['plugin'], 3, '订单结算', $threenowmoney); } if ($res1 || $res2) { return true; } } else { return true; } } //计划任务 static function doTask() { global $_W; //删除未支付的过期订单 $overduetime = time() - 6000; $overdueorders = pdo_fetchall("SELECT id FROM " . tablename('wlmerchant_order') . "WHERE uniacid = {$_W['uniacid']} AND status = 0 AND plugin = 'distribution' AND createtime < {$overduetime} ORDER BY id DESC"); if ($overdueorders) { foreach ($overdueorders as $key => $over) { pdo_delete('wlmerchant_order', array('id' => $over['id'])); } } //过期会员禁用分销功能 $uniacids = pdo_fetchall('select distinct uniacid from ' . tablename(PDO_NAME . 'setting') . " WHERE uniacid != -1"); foreach ($uniacids as $unia) { $_W['uniacid'] = $unia['uniacid']; $settings = Setting::wlsetting_read('distribution'); if ($settings['bindvip']) { $now = time(); //标志过期 if ($settings['bindvip'] == 2) { $overdis = pdo_fetchall("SELECT id,mid FROM " . tablename('wlmerchant_distributor') . "WHERE uniacid = {$_W['uniacid']} AND disflag = 1 AND expiretime < {$now} AND source = 0"); } else { $overdis = pdo_fetchall("SELECT id,mid FROM " . tablename('wlmerchant_distributor') . "WHERE uniacid = {$_W['uniacid']} AND disflag = 1 AND expiretime < {$now} "); } if ($overdis) { foreach ($overdis as $key => &$dis) { $halfmember = pdo_fetch("SELECT expiretime FROM " . tablename('wlmerchant_halfcardmember') . "WHERE uniacid = {$_W['uniacid']} AND mid = {$dis['mid']} ORDER BY expiretime DESC"); if ($halfmember['expiretime'] < $now) { pdo_update('wlmerchant_distributor', array('disflag' => -1, 'expiretime' => $halfmember['expiretime']), array('id' => $dis['id'])); } else { pdo_update('wlmerchant_distributor', array('expiretime' => $halfmember['expiretime']), array('id' => $dis['id'])); } } } //重新启用 $nodis = pdo_fetchall("SELECT id,mid FROM " . tablename('wlmerchant_distributor') . "WHERE uniacid = {$_W['uniacid']} AND disflag = -1 "); if ($nodis) { foreach ($nodis as $key => &$nod) { $half = pdo_fetch("SELECT expiretime FROM " . tablename('wlmerchant_halfcardmember') . "WHERE uniacid = {$_W['uniacid']} AND mid = {$nod['mid']} ORDER BY expiretime DESC"); if ($half['expiretime'] > $now) { pdo_update('wlmerchant_distributor', array('disflag' => 1, 'expiretime' => $half['expiretime']), array('id' => $nod['id'])); } } } //启用后台添加的 if ($settings['bindvip'] == 2) { $nodis2 = pdo_fetchall("SELECT id,mid FROM " . tablename('wlmerchant_distributor') . "WHERE uniacid = {$_W['uniacid']} AND disflag = -1 AND source = 1"); if ($nodis2) { foreach ($nodis2 as $key => &$nod2) { pdo_update('wlmerchant_distributor', array('disflag' => 1), array('id' => $nod2['id'])); } } } } else { pdo_update('wlmerchant_distributor', array('disflag' => 1), array('uniacid' => $_W['uniacid'], 'disflag' => -1)); } //336定制 自动提现申请 if(Customized::init('customized336') && intval($settings['auth_withdraw']) == 1 && $settings['auth_withdraw_money'] >= 1) { $list = pdo_getall(PDO_NAME."distributor", ['uniacid'=>$_W['uniacid'],'disflag'=>1,'nowmoney >='=>$settings['auth_withdraw_money']], ['id','mid','aid','nowmoney']); if(is_array($list) && count($list) > 0){ foreach($list as $disKey => $disVal){ //用户信息获取 渠道:1=公众号(默认);2=h5;3=小程序 $user = pdo_get(PDO_NAME."member",['id'=>$disVal['mid']],['openid','wechat_openid']); if($user['openid']){ //公众号openid存在 使用公众号账号进行收款操作 $openid = $user['openid']; $source = 1; }else if($user['wechat_openid']){ //公众号账号不存在 小程序账号信息存在 使用小程序进行收款操作 $openid = $user['wechat_openid']; $source = 3; }else{ //公众号和小程序账号信息都不存在 取消自动提现操作 continue; } //提现金额计算 $appmoney = sprintf("%.2f", $disVal['nowmoney']);//提现金额为所有佣金 $spercentmoney = sprintf("%.2f", $appmoney * $settings['withdrawcharge'] / 100);//提现手续费获取 $money = sprintf("%.2f", $appmoney - $spercentmoney);//实际提现金额 $nowmoney = sprintf("%.2f", $disVal['nowmoney'] - $appmoney);//提现后剩余金额 //生成提现申请操作数据信息 $data = [ 'uniacid' => $_W['uniacid'] , 'aid' => $disVal['aid'] , 'status' => 7 , 'type' => 3 , 'mid' => $disVal['mid'], 'sopenid' => $openid , 'disid' => $disVal['id'] , 'sgetmoney' => $money , 'sapplymoney' => $appmoney , 'spercentmoney' => $spercentmoney , 'spercent' => sprintf("%.4f" , ($appmoney - $money) / $appmoney * 100) , 'applytime' => time() , 'payment_type' => 2 , 'source' => $source ]; $cashsets = Setting::wlsetting_read('cashset'); if ($cashsets['disnoaudit']) { $data['status'] = 3; $trade_no = time() . random(4, true); $data['trade_no'] = $trade_no; $data['updatetime'] = time(); } $res = pdo_insert(PDO_NAME . "settlement_record", $data); $disorderid = pdo_insertid(); if($res){ //判断上花覅开启自动打款 if ($cashsets['disautocash']) Queue::addTask(4, $disorderid, time(), $disorderid); //记录金额变更 Distribution::adddisdetail($disorderid, $disVal['mid'], $disVal['mid'], 2, $appmoney, 'cash', 1, '佣金自动提现', $nowmoney); //修改当前分销商的可提现金额 pdo_update(PDO_NAME."distributor",['nowmoney'=>$nowmoney],['id'=>$disVal['id']]); } } } } } //修改退款分销订单状态 $rushrefund = pdo_fetchall("SELECT disorderid,id FROM " . tablename('wlmerchant_rush_order') . "WHERE status = 7 AND disorderid > 0 AND redisstatus = 0 ORDER BY id DESC LIMIT 0,20 "); if ($rushrefund) { foreach ($rushrefund as $key => $rush) { pdo_update('wlmerchant_disorder', array('status' => 3), array('id' => $rush['disorderid'])); pdo_update('wlmerchant_rush_order', array('redisstatus' => 1), array('id' => $rush['id'])); } } $orderrefund = pdo_fetchall("SELECT disorderid,id FROM " . tablename('wlmerchant_order') . "WHERE status = 7 AND disorderid > 0 AND redisstatus = 0 ORDER BY id DESC LIMIT 0,20 "); if ($orderrefund) { foreach ($orderrefund as $key => $order) { pdo_update('wlmerchant_disorder', array('status' => 3), array('id' => $order['disorderid'])); pdo_update('wlmerchant_order', array('redisstatus' => 1), array('id' => $order['id'])); } } } static function getgzqrcode($mid) { global $_W; $qrid = pdo_getcolumn(PDO_NAME . 'qrcode', array('uniacid' => $_W['uniacid'], 'sid' => $mid, 'type' => 1, 'status' => 1, 'remark' => '分销关注二维码:weliam_smartcity'), 'qrid'); $qrcode = pdo_get('qrcode', array('uniacid' => $_W['uniacid'], 'status' => 1, 'id' => $qrid, 'keyword' => 'weliam_smartcity_distribution')); //判断是否存在二维码或者二维码是否已经过期 if ($qrcode['expire'] > 0) { $createTime = $qrcode['createtime'];//建立时间 秒 $expireTime = $qrcode['expire'];//有效时间 秒 $endTime = ($createTime + $expireTime) - time();//距离结束时间还有多少时间 小于1则已经过期 } else { $endTime = 1; } if (empty($qrid) || $endTime < 1 || empty($qrcode)) { //删除旧的二维码信息 if ($qrid) { pdo_update('qrcode', array('status' => 2), array('id' => $qrid)); pdo_update(PDO_NAME . 'qrcode', array('status' => 2), array('qrid' => $qrid)); } //申请新的二维码信息 Weixinqrcode::createkeywords('分销关注二维码:Distribution', 'weliam_smartcity_distribution'); //判断是生成普通二维码 还是生成永久二维码 $posterType = Setting::wlsetting_read('distribution'); $posterType = $posterType['posterType']; if ($posterType == 1) { $qrctype = 1;//普通二维码 } else { $qrctype = 2;//永久二维码 } $result = Weixinqrcode::createqrcode('分销关注二维码:Distribution', 'weliam_smartcity_distribution', 1, $qrctype, -1, '分销关注二维码:weliam_smartcity'); if (!is_error($result)) { $qrid = $result; pdo_update(PDO_NAME . 'qrcode', array('sid' => $mid), array('uniacid' => $_W['uniacid'], 'qrid' => $qrid)); } } $qrurl = pdo_get('qrcode', array('id' => $qrid, 'uniacid' => $_W['uniacid']), array('url', 'ticket')); return $qrurl; } static function Processor($message) { global $_W; if (strtolower($message['msgtype']) == 'event') { //获取数据 $returnmess = array(); $qrid = Weixinqrcode::get_qrid($message); $mid = pdo_getcolumn(PDO_NAME . 'qrcode', array('uniacid' => $_W['uniacid'], 'qrid' => $qrid), 'sid'); $base = Setting::wlsetting_read('distribution'); $pagepath = ($base['qrcodeurlstatus'] == 1) ? 'pages/mainPages/index/index?head_id=' . $mid : 'pages/subPages/dealer/index/index?head_id=' . $mid; if(empty($_W['attachurl_remote'])){ $uni_remote_setting = uni_setting_load('remote'); $_W['attachurl_remote'] = $uni_remote_setting['remote']['alioss']['url'].'/'; } if ($base['replytype'] == 1) { $returnmess = array('title' => urlencode($base['gztitle']), 'appid' => $_W['wlsetting']['wxapp_config']['appid'], 'path' => tomedia($base['gzthumb']), 'pagepath' => $pagepath); Weixinqrcode::send_wxapp($returnmess, $message); } else { $returnmess[] = array('title' => urlencode($base['gztitle']), 'description' => urlencode($base['gzdesc']), 'picurl' => tomedia($base['gzthumb']), 'url' => h5_url($pagepath)); Weixinqrcode::send_news($returnmess, $message); } if($message['event'] == 'subscribe'){ $laterflag = 1; }else{ $laterflag = 0; } Distribution::addJunior($mid, $_W['wlmember']['id'],'',1,$laterflag); } } /** * Comment: 根据条件获取分销结算收益信息 * Author: zzw * Date: 2019/7/16 13:55 * @param $where * @return mixed */ public static function getDisOrder($where = '', $field = '*') { global $_W, $_GPC; #1、条件生成 !empty($where) && $where .= " AND "; $where .= " a.uniacid = {$_W['uniacid']} ";//a.aid = {$_W['aid']} AND #2、查询语句生成 $sql = "SELECT {$field} FROM " . tablename(PDO_NAME . "disorder") . " a LEFT JOIN " . tablename(PDO_NAME . "disdetail") . " b ON a.id = b.disorderid "; !empty($where) && $sql .= " WHERE {$where} "; #3、获取信息数据 $result = pdo_fetchall($sql); return $result; } /** * Comment: 获取分销商提现申请信息状态列表 * Author: zzw * Date: 2019/7/24 9:21 * @return array */ public static function getCashWithdrawalStateList() { $list = [ [ 'title' => '待审核', 'status' => [2, 6, 7] ],//待审核 [ 'title' => '待打款', 'status' => [3, 8] ],//待打款 [ 'title' => '已完成', 'status' => [4, 5, 9] ],//已完成 [ 'title' => '未通过', 'status' => [-1, 10, 11] ],//未通过 ]; return $list; } /** * Comment: 根据状态值 获取当前状态的详细信息 * Author: zzw * Date: 2019/7/24 9:29 * @param $status * @return bool */ public static function getStatusDetailInfo($status) { $list = self::getCashWithdrawalStateList(); $info = [ 'title' => '状态错误', 'status' => $status ]; foreach ($list as $k => $v) { if (in_array($status, $v['status'])) { $info = $v; } } return $info; } /** * 电商联盟定制分销同步到其他模块 * @param $member * @return mixed */ public static function initUserInfo($member) { $hcmember = pdo_get('hccard_user', array('uniacid' => $member['uniacid'], 'openid' => $member['openid'])); if (empty($hcmember)) { $gender = pdo_getcolumn('mc_members', array('uid' => $member['uid']), 'gender'); $hcmember = [ 'uniacid' => $member['uniacid'], 'openid' => $member['openid'], 'nickname' => $member['nickname'], 'headimgurl' => tomedia($member['avatar']), 'username' => $member['nickname'], 'tel' => $member['mobile'], 'createtime' => time(), 'level' => 2, 'gender' => $gender ]; pdo_insert('hccard_user', $hcmember); $hcmember['id'] = pdo_insertid(); } return $hcmember; } }