当前位置 : 主页 > 网络编程 > PHP >

分销贡献值

来源:互联网 收集:自由互联 发布时间:2021-06-28
人人商城,上级贡献值分销,上级管理员奖金真送余额 /** * 确认收货 * @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;
            }
        }
    }
上一篇:tp5 实现带参二维码
下一篇:PHP Curl demo
网友评论