人人商城,上级贡献值分销,上级管理员奖金真送余额 /** * 确认收货 * @global type $_W * @global type $_GPC */ public function finish() { global $_W; global $_GPC; $orderid = intval($_GPC['id']); $order = pdo_fetch('
/** * 确认收货 * @global type $_W * @global type $_GPC */ public function finish() { global $_W; global $_GPC; $orderid = intval($_GPC['id']); $order = pdo_fetch('select id,status,openid,couponid,refundstate,refundid from ' . tablename('wei_shop_order') . ' where id=:id and uniacid=:uniacid and openid=:openid limit 1', array(':id' => $orderid, ':uniacid' => $_W['uniacid'], ':openid' => $_W['openid'])); if (empty($order)) { show_json(0, '订单未找到'); } if ($order['status'] != 2) { show_json(0, '订单不能确认收货'); } if ((0 < $order['refundstate']) && !empty($order['refundid'])) { $change_refund = array(); $change_refund['status'] = -2; $change_refund['refundtime'] = time(); pdo_update('wei_shop_order_refund', $change_refund, array('id' => $order['refundid'], 'uniacid' => $_W['uniacid'])); } pdo_update('wei_shop_order', array('status' => 3, 'finishtime' => time(), 'refundstate' => 0), array('id' => $order['id'], 'uniacid' => $_W['uniacid'])); /* * $goods_id['goodsid']:商品id * */ $goods_id = pdo_fetch('SELECT goodsid,iscredit,total FROM ' . tablename('wei_shop_order_goods') . ' WHERE orderid= ' . $order['id'] . ' limit 1'); if(empty($goods_id['iscredit'])){//是否送贡献值 /* * $give_countaion['Contribution'] : 赠送的贡献值 * */ $give_countaion = pdo_fetch('SELECT Contribution FROM ' . tablename('wei_shop_goods') . ' WHERE id=' . $goods_id['goodsid'] . ' limit 1'); //根据信息查询用户贡献值 /* * $uic['contribution'] : 用户贡献值 * */ $uic = pdo_fetch('SELECT allcontribution,contribution,id,level,agentid FROM ' . tablename('wei_shop_member') . ' WHERE openid="' . $order['openid'] . '" and uniacid = "' . $_W['uniacid'] . '" limit 1'); $allcontribution = $uic['allcontribution'] + $give_countaion['Contribution'] * $goods_id['total']; //根据自我贡献值分星级 $level = pdo_fetchall('SELECT ordercontribution,id FROM ' . tablename('wei_shop_member_level') . ' WHERE uniacid = ' . $_W['uniacid'] . ' order by level asc'); //判断星级 $pre_contributionlevel = $uic['level']; foreach($level as $key){ if($allcontribution > $key['ordercontribution']){ $contributionlevel = $key['id']; } } $oldlevel = pdo_fetch('SELECT * FROM ' . tablename('wei_shop_member_level') . ' WHERE uniacid = ' . $_W['uniacid'] .' and id = '.$uic['level']); //相同星级不用更新 if(!empty(abs($contributionlevel - $pre_contributionlevel))){ $upgender['level'] = $contributionlevel; $level = pdo_fetch('SELECT * FROM ' . tablename('wei_shop_member_level') . ' WHERE uniacid = ' . $_W['uniacid'] .' and id = '.$contributionlevel); m('notice')->sendMemberUpgradeMessage($order['openid'], $oldlevel, $level); } $upgender['allcontribution'] = $allcontribution; pdo_update('wei_shop_member', $upgender, array('id' => $uic['id'], 'uniacid' => $_W['uniacid'])); //查询等级一共多少级和贡献值比例 $leave = pdo_fetch('SELECT plugins,uniacid FROM' . tablename('wei_shop_sysset') . 'WHERE uniacid = ' . $_W['uniacid']); $lea = iunserializer($leave['plugins']); $commission = $lea['commission']['gpercent']; //管理员添加贡献值,如果当前会员是总店推荐是没有贡献值的 if(!empty($uic['agentid'])){ $this->contribution($uic['id'], $uic['agentid'], $give_countaion['Contribution'], $commission, $leave['uniacid']); } //上级分销分享贡献值 $array = array(); $uicd['agentid'] = $uic['agentid']; $i = 0; if (!empty($uicd['agentid']) && ($give_countaion['Contribution'] > 1)) {//如果当前会员是总店推荐或者商品贡献值小于1 while ($i < $lea['commission']['level']) { $agentid = $uicd['agentid']; $uicd = pdo_fetch('SELECT openid,uniacid,contribution,id,agentid FROM ' . tablename('wei_shop_member') . ' WHERE id=' . $agentid . ' and uniacid = ' . $_W['uniacid']); $pre_uicd = pdo_fetch('SELECT openid,uniacid,contribution,id,agentid FROM ' . tablename('wei_shop_member') . ' WHERE agentid=' . $agentid . ' and uniacid = ' . $_W['uniacid']); $newcontribution = $give_countaion['Contribution'] * $commission / 100; $data['contribution'] = $uicd['contribution'] + floor($newcontribution); //pv值转换成余额,每生成一次pv值就把它转换为对应的余额 if(empty($i)){ $this->pvtomoney($uicd['openid'] , $newcontribution, $uicd['uniacid'], $uicd['id'], $uic['id'], 2); }else{ $this->pvtomoney($uicd['openid'] , $newcontribution, $uicd['uniacid'], $uicd['id'], $pre_uicd['id'], 2); } pdo_update('wei_shop_member', array('contribution' => $data['contribution']), array('id' => $uicd['id'], 'uniacid' => $_W['uniacid'])); $give_countaion['Contribution'] = $newcontribution; $i++; //判断上级agentid是否是0 if (empty($uicd['agentid']) || ($newcontribution < 1)) { break; } } } } // m('member')->upgradeLevel($order['openid']); m('order')->setGiveBalance($orderid, 1); if (com('coupon')) { $refurnid = com('coupon')->sendcouponsbytask($orderid); } if (com('coupon') && !empty($order['couponid'])) { com('coupon')->backConsumeCoupon($orderid); } m('notice')->sendOrderMessage($orderid); com_run('printer::sendOrderMessage', $orderid); if (p('commission')) { p('commission')->checkOrderFinish($orderid); } show_json(1); } /** * 1、pv值转换成余额, * 2、贡献值订单 * 3、收入订单 * * $openid 会员openid * $contributionpv 用户的pv贡献值 * $uniacid 商户uniacid * $result $result['id'],$result['agentid']当前用户的信息 * $is_contribution 1:管理员奖励收益, 2:下级分销收益 */ public function pvtomoney($openid, $contributionpv, $uniacid, $id, $agentid, $is_contribution) { $acid = $uniacid; load()->classs('coupon'); $acc = new coupon($acid); $token = $acc->getAccessToken(); //pv转换成余额 $uic = pdo_fetch('SELECT * FROM ' . tablename('wei_shop_member') . ' WHERE openid="' . $openid . '" and uniacid = "' . $acid . '" limit 1'); if(!empty($uic['level'])){ $level = pdo_fetch('SELECT discount FROM ' . tablename('wei_shop_member_level') . ' WHERE id=' . $uic['level'] . ' and uniacid = ' . $acid); $mc_members = pdo_fetch('SELECT credit1,credit2 FROM ' . tablename('mc_members') . ' WHERE openid="' . $openid . '" and uniacid = ' . $acid); $money = $contributionpv * $level['discount']; //$level['discount']:星级兑换余额折扣 //添加订单 $data['time'] = time(); $data['uniacid'] = $acid; $data['contribution'] = $contributionpv;//贡献值 $data['money'] = $money;//收入 $data['uid'] = $id;//当前id $data['openid'] = $openid; $data['pid'] = $agentid;//下线id $data['is_contribution']= $is_contribution; pdo_insert('wei_shop_member_contribution_order', $data); m('member')->setCredit($openid, 'credit2', $money, array('1', '贡献值转余额收益')); m('notice')->sendMembertomoney($openid, $money); }else{ $plugins = pdo_fetch('SELECT sets,uniacid FROM' . tablename('wei_shop_sysset') . 'WHERE uniacid = '.$acid); $lea = iunserializer($plugins['sets']); $leveldiscount = $lea['shop']['leveldiscount']; $mc_members = pdo_fetch('SELECT credit1,credit2 FROM ' . tablename('mc_members') . ' WHERE openid="' . $openid . '" and uniacid = ' . $acid); $money = $contributionpv * $leveldiscount; //$leveldiscount:星级兑换余额折扣 //添加订单 $data['time'] = time(); $data['uniacid'] = $acid; $data['contribution'] = $contributionpv;//贡献值 $data['money'] = $money;//收入 $data['uid'] = $id;//当前id $data['openid'] = $openid; $data['pid'] = $agentid;//下线id $data['is_contribution']= $is_contribution; pdo_insert('wei_shop_member_contribution_order', $data); m('member')->setCredit($openid, 'credit2', $money, array('1', '贡献值转余额收益')); m('notice')->sendMembertomoney($openid, $money); } } /** * 管理员贡献值奖励 * $id 分销商ID * $contribution 用户的贡献值 * $uniacid 商户uniacid */ public function contribution($id, $agentid, $gcontribution, $commission, $uniacid) { // $id = 1; // $agentid = 3; // $gcontribution = 1200; // $uniacid = 14; // $commission = 50; $sysset = pdo_fetch('SELECT * FROM' . tablename('wei_shop_sysset') . 'WHERE uniacid = ' . $uniacid); $percent = (unserialize($sysset['plugins'])['commission']['percent']); $arr = array(); $result['agentid'] = $agentid; $allcontribution = 0;//累计贡献值 $contribution = 0;//每一个分销商的贡献值 $fenid = -1; while ($k < 7) { $fenid++; $agentid = $result['agentid']; $result = pdo_fetch('SELECT `id`,`nickname`,`uid`,`openid`,`uniacid`,`agentid`,`ismanager`,`contribution` FROM ' . tablename('wei_shop_member') . ' WHERE uniacid=' . $uniacid . ' and id=' . $agentid); if(!empty($fenid)){ //计算当前分销商之前的贡献值之和 $gcontribution = floor($gcontribution * $commission / 100); if($gcontribution > 1){//贡献值小于1时候不再分贡献值 $allcontribution += $gcontribution; } } if (in_array($result['ismanager'], array(3, 2, 1))) {//第一个管理员必须有贡献值 $pre_agentid = $result['id']; $contribution = $allcontribution * $percent / 100; //$percent:default = 0.05 $pre_result = pdo_fetch('SELECT `id`,`nickname`,`uid`,`openid`,`uniacid`,`agentid`,`ismanager`,`contribution` FROM ' . tablename('wei_shop_member') . ' WHERE uniacid=' . $uniacid . ' and agentid=' . $pre_agentid); if ($k == 0) { // if(empty($fenid)){ // $contribution = 0; // } $k++; $m = $result['ismanager']; switch ($result['ismanager']) { case 1: $one = 1; $two = 0; $three = 0; break; case 2: $one = 0; $two = 1; $three = 0; break; case 3: $one = 0; $two = 0; $three = 1; break; } if(!empty($contribution)){ //pv值转换成余额,每生成一次pv值就把它转换为对应的余额 if(empty($k)){ $this->pvtomoney($result['openid'] , $contribution, $result['uniacid'], $result['id'], $id, 1); }else{ $this->pvtomoney($result['openid'] , $contribution, $result['uniacid'], $result['id'], $pre_result['id'], 1); } $managerlevel = $result['ismanager']; $data['contribution'] = $result['contribution'] + $contribution; pdo_update('wei_shop_member', array('contribution' => $data['contribution']), array('id' => $result['id'], 'uniacid' => $uniacid)); } } else { switch ($managerlevel) { case 1: if ($result['ismanager'] == 1) { $k++; if ($m >= $result['ismanager']) { $m = $result['ismanager']; switch ($result['ismanager']) { case 1: if ($one < 2) { $one++; $managerlevel = $result['ismanager']; //pv值转换成余额,每生成一次pv值就把它转换为对应的余额 $this->pvtomoney($result['openid'] , $contribution, $result['uniacid'], $result['id'], $pre_result['id'], 1); $data['contribution'] = $result['contribution'] + $contribution; pdo_update('wei_shop_member', array('contribution' => $data['contribution']), array('id' => $result['id'], 'uniacid' => $uniacid)); } break; case 2: if ($two < 2) { $two++; $managerlevel = $result['ismanager']; //pv值转换成余额,每生成一次pv值就把它转换为对应的余额 $this->pvtomoney($result['openid'] , $contribution, $result['uniacid'], $result['id'], $pre_result['id'], 1); $data['contribution'] = $result['contribution'] + $contribution; pdo_update('wei_shop_member', array('contribution' => $data['contribution']), array('id' => $result['id'], 'uniacid' => $uniacid)); } break; case 3: if ($three < 2) { $three++; $managerlevel = $result['ismanager']; //pv值转换成余额,每生成一次pv值就把它转换为对应的余额 $this->pvtomoney($result['openid'] , $contribution, $result['uniacid'], $result['id'], $pre_result['id'], 1); $data['contribution'] = $result['contribution'] + $contribution; pdo_update('wei_shop_member', array('contribution' => $data['contribution']), array('id' => $result['id'], 'uniacid' => $uniacid)); } break; } } } break; case 2: if (in_array($result['ismanager'], array(1, 2))) { $k++; if ($m >= $result['ismanager']) { $m = $result['ismanager']; switch ($result['ismanager']) { case 1: if ($one < 2) { $one++; $managerlevel = $result['ismanager']; //pv值转换成余额,每生成一次pv值就把它转换为对应的余额 $this->pvtomoney($result['openid'] , $contribution, $result['uniacid'], $result['id'], $pre_result['id'], 1); $data['contribution'] = $result['contribution'] + $contribution; pdo_update('wei_shop_member', array('contribution' => $data['contribution']), array('id' => $result['id'], 'uniacid' => $uniacid)); } break; case 2: if ($two < 2) { $two++; $managerlevel = $result['ismanager']; //pv值转换成余额,每生成一次pv值就把它转换为对应的余额 $this->pvtomoney($result['openid'] , $contribution, $result['uniacid'], $result['id'], $pre_result['id'], 1); $data['contribution'] = $result['contribution'] + $contribution; pdo_update('wei_shop_member', array('contribution' => $data['contribution']), array('id' => $result['id'], 'uniacid' => $uniacid)); } break; case 3: if ($three < 2) { $three++; $managerlevel = $result['ismanager']; //pv值转换成余额,每生成一次pv值就把它转换为对应的余额 $this->pvtomoney($result['openid'] , $contribution, $result['uniacid'], $result['id'], $pre_result['id'], 1); $data['contribution'] = $result['contribution'] + $contribution; pdo_update('wei_shop_member', array('contribution' => $data['contribution']), array('id' => $result['id'], 'uniacid' => $uniacid)); } break; } } } break; case 3: if (in_array($result['ismanager'], array(3, 2, 1))) { $k++; if ($m >= $result['ismanager']) { $m = $result['ismanager']; switch ($result['ismanager']) { case 1: if ($one < 2) { $one++; $managerlevel = $result['ismanager']; //pv值转换成余额,每生成一次pv值就把它转换为对应的余额 $this->pvtomoney($result['openid'] , $contribution, $result['uniacid'], $result['id'], $pre_result['id'], 1); $data['contribution'] = $result['contribution'] + $contribution; pdo_update('wei_shop_member', array('contribution' => $data['contribution']), array('id' => $result['id'], 'uniacid' => $uniacid)); } break; case 2: if ($two < 2) { $two++; $managerlevel = $result['ismanager']; //pv值转换成余额,每生成一次pv值就把它转换为对应的余额 $this->pvtomoney($result['openid'] , $contribution, $result['uniacid'], $result['id'], $pre_result['id'], 1); $data['contribution'] = $result['contribution'] + $contribution; pdo_update('wei_shop_member', array('contribution' => $data['contribution']), array('id' => $result['id'], 'uniacid' => $uniacid)); } break; case 3: if ($three < 2) { $three++; $managerlevel = $result['ismanager']; //pv值转换成余额,每生成一次pv值就把它转换为对应的余额 $this->pvtomoney($result['openid'] , $contribution, $result['uniacid'], $result['id'], $pre_result['id'], 1); $data['contribution'] = $result['contribution'] + $contribution; pdo_update('wei_shop_member', array('contribution' => $data['contribution']), array('id' => $result['id'], 'uniacid' => $uniacid)); } break; } } } break; } } } if (empty($result['agentid'])) { break; } } }