人人商城,上级贡献值分销,上级管理员奖金真送余额 /** * 确认收货 * @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;
}
}
}
