basic_conf; if($this->name=='score' || $this->name == 'digital'){ $config_arr['regional_equal_prize'] = $config_arr['regional_equal_prize_' . $this->name]??0; $config_arr['province_equal_prize'] = $config_arr['province_equal_prize_' . $this->name]??0; $config_arr['city_equal_prize'] = $config_arr['city_equal_prize_' . $this->name]??0; $config_arr['district_equal_prize'] = $config_arr['district_equal_prize_' . $this->name]??0; $config_arr['town_equal_prize'] = $config_arr['town_equal_prize_' . $this->name]??0; $config_arr['community_equal_prize'] = $config_arr['community_equal_prize_' . $this->name]??0; $config_arr['regional_team_prize'] = $config_arr['regional_team_prize_' . $this->name]??0; $config_arr['province_team_prize'] = $config_arr['province_team_prize_' . $this->name]??0; $config_arr['city_team_prize'] = $config_arr['city_team_prize_' . $this->name]??0; $config_arr['district_team_prize'] = $config_arr['district_team_prize_' . $this->name]??0; $config_arr['town_team_prize'] = $config_arr['town_team_prize_' . $this->name]??0; $config_arr['community_team_prize'] = $config_arr['community_team_prize_' . $this->name]??0; } $name = $this->name; $config_arr['is_percent_team'] = $config_arr['is_percent_equal'] = 0;//默认百分比 $config_arr['commission_type'] = $name;//默认佣金 $where = [['item_id' => $this->order_detail['goods_id'], 'item_type' => 'goods', 'commission_type' => $name, 'status' => StatusEnum::ENABLED]]; $select = 'id,mall_id,is_enable,item_id,item_type,commission_type,is_percent_team,is_percent_equal,status'; $with = ['detail' => function ($query) { $query->select('id,mall_id,area_commission_item_setting_id,level,agent_team_prize,agent_equal_prize,status'); }]; $agent_goods_setting = AreaCommissionItemSetting::getOne($where, true, $with, false, $select); if (!empty($agent_goods_setting)) { if ($agent_goods_setting['commission_type'] == $name && $agent_goods_setting['is_enable']) { foreach ($agent_goods_setting['detail'] as $val) { switch ($val['level']) { case AreaEnum::PROVINCE: $config_arr['province_team_prize'] = $val['agent_team_prize']; $config_arr['province_equal_prize'] = $val['agent_equal_prize']; break; case AreaEnum::CITY: $config_arr['city_team_prize'] = $val['agent_team_prize']; $config_arr['city_equal_prize'] = $val['agent_equal_prize']; break; case AreaEnum::DISTRICT: $config_arr['district_team_prize'] = $val['agent_team_prize']; $config_arr['district_equal_prize'] = $val['agent_equal_prize']; break; case AreaEnum::TOWN: $config_arr['town_team_prize'] = $val['agent_team_prize']; $config_arr['town_equal_prize'] = $val['agent_equal_prize']; break; case AreaEnum::COMMUNITY: $config_arr['community_team_prize'] = $val['agent_team_prize']; $config_arr['community_equal_prize'] = $val['agent_equal_prize']; break; case AreaEnum::REGIONAL: $config_arr['regional_team_prize'] = $val['agent_team_prize']; $config_arr['regional_equal_prize'] = $val['agent_equal_prize']; break; } } $config_arr['is_enable'] = $agent_goods_setting['is_enable']; $config_arr['is_percent_team'] = $agent_goods_setting['is_percent_team']; $config_arr['is_percent_equal'] = $agent_goods_setting['is_percent_equal']; $config_arr['commission_type'] = $agent_goods_setting['commission_type']; } } return $config_arr; } /** * @desc:奖励规则 * @Author: hua * @Date: 2021/10/28 * @Time: 16:08 * @Copyright: copyright (c) 2021 广东七件事集团 * @return array */ public function getRules() { $money = $this->order_detail['goods_price']; $multiple = $this->order_detail['num'] ?? 1; $extension = ['source_table' => 'order_detail', 'source_table_id' => $this->order_detail['id'], 'from_type' => AddonsEnum::ADDONS_NAME_AREA]; $this->extension = $extension; return ['money' => $money, 'multiple' => $multiple, 'extension' => $extension]; } /** * @desc:获取投入资金队列的数据 * @Author: hua * @Date: 2021/11/18 * @Time: 15:46 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $team_prize_list * @param $equal_prize_list * @return array */ public function getInsertWalletData($team_prize_list, $equal_prize_list) { $level = 0; $levels = array_column($team_prize_list, 'level'); if (!empty($levels)) { $level = $levels[0]; } $extension = $this->extension; $capital_type1 = AreaEnum::TEAM_PRIZE; if($this->name=='score')$capital_type1 = UserWalletEnum::AREA_SCORE; $team_reward_arr = $this->packData($capital_type1, $this->basic_conf['compute_type'], $team_prize_list, $extension, $level); $equal_reward_arr = $this->packData(AreaEnum::EQUAL_PRIZE, $this->basic_conf['compute_type'], $equal_prize_list, $extension, $level); return array_merge($team_reward_arr, $equal_reward_arr); } public function packData($capital_type, $compute_type, $prize_list, $extension, $level) { $type_map = AreaEnum::getTypeMap(); $insert_wallet = []; $is_frozen = true; $goods_id = $this->order_detail['goods_id']; $goods = Goods::findOne(['id'=>$goods_id]); if($goods['goods_type']==GoodsTypeEnum::GoodsTypeVirtual){ //虚拟商品,支付后-直接订单完成,所以直接结算 $is_frozen = false; }else{ if ($compute_type == AreaEnum::ORDER_PAY) $is_frozen = false; if ($compute_type == AreaEnum::ORDER_FINISH) $is_frozen = true; } $from_type = $extension['from_type'] ?? AddonsEnum::ADDONS_NAME_AREA; foreach ($prize_list as $item) { $user_id = $item['user_id']; if (!empty($deduct_prize_list[$user_id]['deduct_money'])) $item['price']['commission'] -= $deduct_prize_list[$user_id]['deduct_money']; if ($item['price']['commission'] > 0) { $item['price']['commission'] = bcmul($item['price']['commission'],1,2); $prize_name = $type_map[$capital_type] ?? '未知资金类型'; $prize_name_source = AreaEnum::getLevelMap($level, $this->mall_id); $desc = '用户(' . $user_id . '),获得订单(' . $this->order_detail['order_id'] . ')奖励,奖励类型:' . $prize_name . '['.$prize_name_source.']' . ',金额:' . $item['price']['commission']; // echo $desc.PHP_EOL; $insert_wallet [] = ['mall_id' => $this->mall_id, 'user_id' => $user_id, 'is_frozen' => $is_frozen, 'wallet_type' => $this->name, 'money' => $item['price']['commission'], 'desc' => $desc, 'source_table' => $extension['source_table'] ?? '', 'source_table_id' => $extension['source_table_id'] ?? '', 'from_type' => $from_type, 'capital_type' => $capital_type, 'order_no' =>$this->order_detail['order_no'], 'contributor_name' =>$this->order_detail['goods_name'], 'contributor_id' =>$this->user_id, 'contributor_money' =>$this->order_detail['goods_price'], // 顺带 '___is_fixed___' => $item['price']['is_fixed'], '___rate___' => $item['price']['rate'], ]; } } return $insert_wallet; } }