name; $where = [['item_id' => $this->order_detail['goods_id']], ['item_type' => AddonsEnum::ADDONS_NAME_COURSE], ['commission_type' => $name], ['mall_id' => $this->mall_id], ['status' => StatusEnum::ENABLED]]; $select = 'id,mall_id,is_enable,item_id,item_type,commission_type,is_percent_team,is_percent_equal,is_percent_over,is_percent_extra,status'; $with = ['detail' => function ($query) { $query->select('id,mall_id,agent_commission_item_setting_id,level,agent_team_prize,agent_equal_prize,agent_over_prize,agent_extra_prize,status'); }]; $agent_goods_setting = AgentCommissionItemSetting::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) { $config_arr[$val['level']] = [ 'is_percent_team' => $agent_goods_setting['is_percent_team'], 'is_percent_equal' => $agent_goods_setting['is_percent_equal'], 'is_percent_over' => $agent_goods_setting['is_percent_over'], 'is_percent_extra' => $agent_goods_setting['is_percent_extra'], 'agent_team_prize' => $val['agent_team_prize'], 'agent_equal_prize' => $val['agent_equal_prize'], 'agent_over_prize' => $val['agent_over_prize'], 'agent_extra_prize' => $val['agent_extra_prize'], ]; } $this->goods_config = $config_arr; } } return $config_arr; } /** * @desc:奖励规则 * @Author: hua * @Date: 2021/10/28 * @Time: 16:08 * @Copyright: copyright (c) 2021 广东七件事集团 * @return array */ public function getRules(int $method = null) { $money = $this->order_detail['goods_price']; $multiple = $this->order_detail['num'] ?? 1; $extension = ['source_table' => $this->source_table, 'source_table_id' => $this->order_detail['id'], 'from_type' => AgentEnum::ADDONS_NAME]; $this->extension = $extension; return ['money' => $money, 'multiple' => $multiple, 'extension' => $extension]; } /** * @desc:记录每次触发奖励的相关配置 * @Author: hua * @Date: 2021/11/18 * @Time: 11:09 * @Copyright: copyright (c) 2021 广东七件事集团 */ public function addRewardConfigLog() { $extension = $this->extension; $add_data['source_table'] = $extension['source_table']; $add_data['source_table_id'] = $extension['source_table_id']; $add_data['type'] = $this->name; $add_data['from_type'] = $extension['from_type']; $add_data['basic_config'] = !empty($this->basic_conf) ? json_encode($this->basic_conf) : ''; $add_data['level_config'] = !empty($this->level_config) ? json_encode($this->level_config) : ''; if (!empty($this->goods_config)) $add_data['goods_config'] = json_encode($this->goods_config); $agent_arr = []; foreach ($this->agent_list as $agent) { $agent_arr[$agent['id']] = [ 'user_id' => $agent['user_id'], 'level' => $agent['level'], ]; } $add_data['relation_ship'] = !empty($agent_arr) ? json_encode($agent_arr) : ''; $add_data['mall_id'] = $this->mall_id; $add_data['status'] = StatusEnum::ENABLED; $res = AgentCommissionBasisLog::setData($add_data); if ($res == false) echo 'AgentReward:addRewardConfigLog:err:' . AgentCommissionBasisLog::getStaticError(); } /** * @desc:组装数据 * @Author: hua * @Date: 2021/11/18 * @Time: 15:29 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $capital_type //奖励类型 * @param $compute_type //支付完成/订单完成结算 * @param $prize_list //奖励列表 * @param $extension //扩展列表 * @param $deduct_prize_list //扣减奖励 * @return array */ public function packData($capital_type, $compute_type, $prize_list, $extension, $deduct_prize_list = []) { $type_map = ComputingEnum::getTypeMap(); $insert_wallet = []; $is_frozen = false; // if ($compute_type == ComputingEnum::ORDER_PAY) $is_frozen = false; // if ($compute_type == ComputingEnum::ORDER_FINISH) $is_frozen = true; $from_type = $extension['from_type'] ?? AgentEnum::ADDONS_NAME; foreach ($prize_list as $user_id => $item) { if (!empty($deduct_prize_list[$user_id]['deduct_money'])) $item['price'] -= $deduct_prize_list[$user_id]['deduct_money']; $item['price'] = bcmul($item['price'],1,2);; if ($item['price'] > 0) { $prize_name = $type_map[$capital_type] ?? '未知资金类型'; $desc = '用户(' . $user_id . '),获得视频课程订单(' . $this->order_detail['order_id'] . ')奖励,奖励类型:' . $prize_name . ',金额:' . $item['price']; // 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'], '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'], ]; } } return $insert_wallet; } /** * @desc:获取投入资金队列的数据 * @Author: hua * @Date: 2021/11/18 * @Time: 15:46 * @Copyright: copyright (c) 2021 广东七件事集团 * @param $team_prize_list * @param $equal_prize_list * @param $extra_prize_list * @param $over_prize_list * @param $deduct_agent_prize_list * @return array */ public function getInsertWalletData($team_prize_list, $equal_prize_list, $extra_prize_list, $over_prize_list, $deduct_agent_prize_list) { $extension = $this->extension; $team_reward_arr = $this->packData(ComputingEnum::TEAM_PRIZE, $this->basic_conf['compute_type'], $team_prize_list, $extension, $deduct_agent_prize_list); $extra_reward_arr = $this->packData(ComputingEnum::EXTRA_PRIZE, $this->basic_conf['compute_type'], $extra_prize_list, $extension); $over_reward_arr = $this->packData(ComputingEnum::OVER_PRIZE, $this->basic_conf['compute_type'], $over_prize_list, $extension); $equal_reward_arr = $this->packData(ComputingEnum::EQUAL_PRIZE, $this->basic_conf['compute_type'], $equal_prize_list, $extension); return array_merge($team_reward_arr, $extra_reward_arr, $over_reward_arr, $equal_reward_arr); } }