getBasicsConfig($orderInfo['site_id'])['data']['value']; //查询渠道商配置 if (empty($basic_config) || $basic_config['is_open'] == 0) return $this->success(); if (!$basic_config['goods_ids']) return $this->success(); //检查商品是否在管理商品账 if ($basic_config['settled_condition'] == 4) { //仅支持购买指定商品成为渠道 $manage_order_id = model('manage_order')->getValue([['order_id', '=', $orderInfo['order_id']]], 'id');//判断是否已结束 if ($manage_order_id) return $this->success();//已存在返回 $level_config = model('manage_level')->getColumn([['site_id', '=', $orderInfo['site_id']]], '*', 'level_id'); if (!$level_config) return $this->success(); $goods_ids = explode(',', $basic_config['goods_ids']); $order_goods = model('order_goods')->getColumn([['order_id', '=', $orderInfo['order_id']]], '*', 'order_goods_id');//查询当前对应产品 if (array_intersect(array_column($order_goods, 'goods_id'), $goods_ids)) { $manageInfo = Db::view('member m', 'member_id,source_member,username') ->view('manage_user a', 'id,level_id as one_level_id,real_name as one_real_name,parent,grand_parent,status,chain', 'a.member_id=m.source_member', 'left') // ->view('manage_user b', 'level_id as two_level_id,real_name as two_real_name', 'a.parent=b.id', 'left') // ->view('manage_user c', 'level_id as three_level_id,real_name as three_real_name', 'a.grand_parent=c.id', 'left') ->where('m.member_id', '=', $orderInfo['member_id']) ->find();//获取直推代理商 $levelInnfo = $level_config[$manageInfo['one_level_id']] ?? ''; //获取直推代理商等级 if (!$levelInnfo) return $this->success(); $new_level = []; $district_level = [];//区域等级ID $custom_weight = $levelInnfo['custom_weight'];//获取自定义上级权益归属 if ($level_config) {//计算上级等级规则 $custom_weight = explode(',', $custom_weight);//指定权益归属 foreach ($level_config as $k => $v) { if ($v['upgrade_type'] == 0) { $district_level[] = $v['level_id']; } if ($custom_weight && in_array($v['level_num'], $custom_weight)) { foreach ($custom_weight as $level_num) { if ($v['level_num'] == $level_num) { $new_level[$k] = $v; } } } else if ($v['level_num'] > $levelInnfo['level_num']) { $new_level[$k] = $v; } } } $siteInfo = model('site')->getInfo([['site_id', '=', $orderInfo['site_id']]]); $use_settle_number = $basic_config['use_settle_number'] ?: $orderInfo['order_money']; $Statistics = [ 'one_site_order_num' => 1, 'one_site_total_order' => $orderInfo['order_money'], 'one_site_order_money' => 0, 'use_settle_number' => round($orderInfo['order_money'] / $use_settle_number, 2) ]; $ladder_rewards = json_decode($levelInnfo['ladder_rewards'], true);//获取阶梯佣金 $ladder_rewards = array_column($ladder_rewards, null, 'order_money'); ksort($ladder_rewards); $two_manage_id = 0; $three_manage_id = 0; $two_manage_info = []; //间推管理 $three_manage_info = [];//三级管理 $chain = $manageInfo['chain']; $uids = array_filter(explode('#', $chain)); arsort($uids); $w[] = ['site_id', '=', $orderInfo['site_id']]; $w[] = ['id', 'in', $uids]; $w[] = ['level_id', 'in', array_keys($new_level)]; $field = 'id,level_id,real_name'; $userInfo = model('manage_user')->getList($w, $field, 'depth_level desc,create_time desc');//计算上级贡献值比例 if ($userInfo) { $temp_level_weight = ''; foreach ($userInfo as $v) { $temp_info = $level_config[$v['level_id']] ?? ''; if ($two_manage_id == 0) { $two_manage_id = $v['id']; $two_manage_info = $v; $temp_level_weight = $temp_info['level_num']; } if ($temp_info && $temp_info['level_num'] > $temp_level_weight) { $three_manage_id = $v['id']; $three_manage_info = $v; break; } } } $district_where = [ ['site_id', '=', $orderInfo['site_id']], ['district_id', '=', $orderInfo['district_id']], ['level_id', 'in', $district_level] ]; $district_info = model('manage_user')->getInfo($district_where, 'id,real_name');//区域 foreach ($order_goods as $k => $orderGoodsInfo) { if (in_array($orderGoodsInfo['goods_id'], $goods_ids)) { $amount = $orderGoodsInfo['price'] * $orderGoodsInfo['num']; $ruleinfo = end($ladder_rewards); //计算上级贡献值比例 if ($levelInnfo['reward_type'] == 2) { foreach ($ladder_rewards as $mk => $v) {//获取当前满足的阶梯佣金 if ($amount <= $mk) { $ruleinfo = $v; break; } } $one_rate = round($ruleinfo['direct_money'] / $amount, 2); //推荐人佣金 if ($ruleinfo['district_site_rate']) { //区域管理奖励 $basic_config['district_money'] = $ruleinfo['district_site_rate']; } $two_rate = 0; $three_rate = 0; //佣金比例 $two_commission = 0; //未设置暂时为开发 $three_commission = 0; //三级佣金未开发 if ($ruleinfo['indirect_money']) { //间推贡献值 $two_rate = round($ruleinfo['indirect_money'] / $amount, 2); //间接人贡献值 $two_commission = $ruleinfo['indirect_money']; //间联贡献值 } if ($three_manage_id && $ruleinfo['manage_site_rate']) { $three_rate = round($ruleinfo['manage_site_rate'] / $amount, 2); $three_commission = $ruleinfo['manage_site_rate']; } $one_commission = $ruleinfo['direct_money']; //直推佣金 $commission = $one_commission + $two_commission + $three_commission; } else { $one_rate = $levelInnfo['direct_site_rate'] ?? 0; //推荐人佣金 $two_rate = $levelInnfo['indirect_site_rate'] ?? 0; //间接人佣金 $three_rate = 0; //未设置暂时为开发 $one_commission = round($amount * $one_rate / 100, 2); //一级佣金 $two_commission = round($amount * $two_rate / 100, 2); //二级佣金 $three_commission = round($amount * $three_rate / 100, 2); //三级佣金 $commission = $one_commission + $two_commission + $three_commission; $Statistics['one_site_order_money'] += $one_commission; } /*** * 城市服务商佣金奖励 */ $province_rate = 0; $city_rate = 0; $district_rate = 0; $province_commission = 0; //省佣金 $city_commission = 0; //市佣金 $district_commission = $basic_config['district_money']; if (!$district_info) { //没有区域管理 $district_commission = 0; } $commission += $province_commission + $city_commission + $district_commission; $commission_rate = ($one_rate + $two_rate + $three_rate + $province_rate + $city_rate + $district_rate) / 100; $platform_commission = ($orderGoodsInfo['goods_money'] * config('accounts.platform_rate')) / 100; //平台官方手续费 //记录佣金数据 $addData = [ 'order_id' => $orderInfo['order_id'], 'order_no' => $orderGoodsInfo['order_no'], 'out_trade_no' => $orderInfo['out_trade_no'], 'order_goods_id' => $orderGoodsInfo['order_goods_id'], 'site_id' => $orderInfo['site_id'], 'ag_site_id' => $siteInfo['agent_id'], 'site_name' => $siteInfo['site_name'], 'goods_id' => $orderGoodsInfo['order_goods_id'], 'sku_id' => $orderGoodsInfo['sku_id'], 'sku_name' => $orderGoodsInfo['sku_name'], 'sku_image' => $orderGoodsInfo['sku_image'], 'price' => $amount, 'num' => $orderGoodsInfo['num'], 'real_goods_money' => $orderGoodsInfo['goods_money'], 'member_id' => $orderGoodsInfo['member_id'], 'member_name' => $orderInfo['name'], 'member_mobile' => $orderInfo['mobile'], 'full_address' => $orderInfo['full_address'] . $orderInfo['address'], 'province_id' => $orderInfo['province_id'], 'city_id' => $orderInfo['city_id'], 'district_id' => $orderInfo['district_id'], 'promotion_type' => $orderInfo['promotion_type'] ?? '', 'promotion_type_name' => $orderInfo['promotion_type_name'] ?? '', 'one_manage_id' => $manageInfo['id'], 'two_manage_id' => $two_manage_id, 'three_manage_id' => $three_manage_id, 'commission' => $commission, //总佣金 'commission_rate' => $commission_rate,//总费率 'order_profit' => $amount - $commission - $platform_commission,//订单利润费率 'one_manage_name' => $manageInfo['one_real_name'] ?: '', 'two_manage_name' => $two_manage_info['real_name'] ?? '', 'three_manage_name' => $three_manage_info['real_name'] ?? '', 'one_commission' => $one_commission, 'two_commission' => $two_commission, 'three_commission' => $three_commission, 'province_commission' => $province_commission, 'city_commission' => $city_commission, 'district_commission' => $district_commission, 'one_rate' => $one_rate, 'two_rate' => $two_rate, 'three_rate' => $three_rate, 'trade_form' => 'site_trade', 'create_time' => time() ]; model("manage_order")->add($addData); event('SaaSOrderProfit', $addData); } } $this->addOrderStatistics($manageInfo['id'], $Statistics); } } else { $this->getOrderGoods($orderInfo['site_id'], $orderInfo); } } /*** * 添加普通订单统计 * @param $site_id * @param $orderInfo * @return void * @throws \think\db\exception\DbException */ public function getOrderGoods($site_id, $orderInfo) { $siteInfo = model('site')->getInfo([['site_id', '=', $site_id]]); if ($siteInfo['manage_id']) { $Statistics = [ 'one_site_order_num' => 1, 'one_site_total_order' => $orderInfo['order_money'], 'one_site_order_money' => 0, ]; $this->addOrderStatistics($siteInfo['manage_id'], $Statistics); } } /*** * 添加订统计 * @param $mandege_id * @param $data * @return void * @throws \think\db\exception\DbException */ public function addOrderStatistics($mandege_id, $data) { if (!empty($data['one_site_order_num'])) { //添加订单数量 model('manage_user')->setInc([['id', '=', $mandege_id]], 'one_site_order_num'); } if (!empty($manageInfo['one_site_total_order'])) { //添加订单总额 model('manage_user')->setInc([['id', '=', $mandege_id]], 'one_site_total_order'); } if (!empty($manageInfo['one_site_order_money'])) { //添加获取订单佣金 model('manage_user')->setInc([['id', '=', $mandege_id]], 'one_site_order_money'); } if (!empty($manageInfo['use_settle_number'])) { //增加开店数量 model('manage_user')->setInc([['id', '=', $mandege_id]], 'use_settle_number', $manageInfo['use_settle_number']); } // 分销商检测升级 event('UpgradeManagelevel', $mandege_id); } }