* @version : HUOSDK 8.0 */ namespace huo\logic\agent; use huo\controller\agent\AgentCache; use huo\model\agent\AgentGameModel; use huo\model\common\CommonModel; use huo\model\game\GameModel; use huo\model\rate\AgentGameRateModel; use huo\model\rate\GameRateModel; use huo\model\user\UserModel; use huolib\constant\CommonConst; use huolib\constant\GameConst; use huolib\tool\Time; use huomp\controller\agent\AgentState; class AgentGameLogic extends CommonModel { /** * @param array $param * * @return array */ protected function getWhere($param = []) { $_map = []; if (!empty($param['start_time']) && !empty($param['end_time'])) { $_map['agent_game_model.create_time'] = [ 'between', [ strtotime($param['start_time']), CommonConst::CONST_DAY_SECONDS + strtotime($param['end_time']) ] ]; } elseif (!empty($param['start_time'])) { $_map['agent_game_model.create_time'] = ['egt', strtotime($param['start_time'])]; } elseif (!empty($param['end_time'])) { $_map['agent_game_model.create_time'] = ['elt', CommonConst::CONST_DAY_SECONDS + strtotime($param['end_time'])]; } if (!empty($param['role_id']) && empty($param['parent_id'])) { $_role_ids = [$param['role_id']]; if (is_array($param['role_id'])) { $_role_ids = $param['role_id']; } $_agent_ids = (new UserModel())->getIdsByRoleId($_role_ids); $_map['agent_id'] = ['in', $_agent_ids]; } if (!empty($param['agent_id'])) { $_map['agent_id'] = $param['agent_id']; } if (!empty($param['parent_id'])) { // $_map['parent_id'] = $param['parent_id']; $_agent_ids = (new UserModel())->getSubAgents($param['parent_id']); if (!empty($_agent_ids)) { $_map['agent_id'] = ['in', $_agent_ids]; } else { $_map['agent_id'] = -1; } } if (!empty($param['sub_agent_id'])) { $_map['agent_id'] = $param['sub_agent_id']; } if (!empty($param['agent_name'])) { $_agent_id = (new UserModel())->getIdByName($param['agent_name']); $_map['agent_id'] = $_agent_id; } if (!empty($param['classify'])) { $_map['classify'] = $param['classify']; } if (!empty($param['game_id'])) { $_map['app_id'] = $param['game_id']; } if (!empty($param['promote_switch'])) { $_map['game.promote_switch'] = $param['promote_switch']; } if (!empty($param['app_id'])) { $_map['app_id'] = $param['app_id']; } if (!empty($param['agent_benefit_type'])) { $_ag_ids = (new AgentGameRateModel())->getAgIdsByAgentBenefitType($param['agent_benefit_type']); $_map['agent_game_model.id'] = ['in', $_ag_ids]; } if (!empty($param['status'])) { $_map['agent_game_model.status'] = $param['status']; } $_map['agent_game_model.is_delete'] = CommonConst::CONST_NOT_DELETE; return $_map; } /** * 获取游戏渠道列表 * * @param array $where * @param string $page * @param string $order * * @return mixed */ public function getAgentGames($where = [], $page = '1,10', $order = '-create_time') { $_map = $this->getWhere($where); $_map['game.status'] = GameConst::GAME_STATUS_ON; $_ag_model = new AgentGameModel(); $_count = $_ag_model->with('game')->where($_map)->count(); if (empty($_count)) { $_rdata['count'] = 0; $_rdata['list'] = []; return $_rdata; } $_field = 'classify as classify_label'; $_order = $this->orderFilter($order); $_games = $_ag_model ->with('game') ->with('rate,gamerate,agent,gamemini,gv,agent.parent') ->field($_field) ->where($_map) ->order($_order) ->page($page) ->select(); if (is_object($_games)) { $_games = $_games->toArray(); } $_list = []; $_game_model = new GameModel(); $_gr_model = new GameRateModel(); $_agent_state = new AgentState(); foreach ($_games as $_k => $_v) { $_data = []; $_share_code = $_agent_state->genAgentCode($_v['id']); $_data['ag_id'] = $_v['id']; $_data['share_code'] = $_share_code; $_data['state'] = empty($_v['gv'][0]['package_url']) ? '' : $_v['gv'][0]['package_url'].'?state='.$_share_code; $_data['agent_id'] = $_v['agent_id']; $_data['app_id'] = $_v['app_id']; $_data['game_id'] = !empty($_v['game']['id']) ? $_v['game']['id'] : 0; $_data['mini_app_id'] = !empty($_v['gamemini']['mini_app_id']) ? $_v['gamemini']['mini_app_id'] : 0; $_data['gamename'] = !empty($_v['game']['name']) ? $_v['game']['name'] : ''; $_data['agent_name'] = !empty($_v['agent']['user_login']) ? $_v['agent']['user_login'].' | ' .$_v['agent']['user_nicename'] : ''; $_data['role_id'] = !empty($_v['agent']['role_id']) ? $_v['agent']['role_id'] : 0; $_data['icon'] = !empty($_v['game']['icon']) ? $_v['game']['icon'] : ''; $_data['type'] = !empty($_v['game']['type']) ? $_v['game']['type'] : ''; $_data['tags'] = !empty($_v['game']['tags']) ? $_v['game']['tags'] : ''; $_data['gift_cnt'] = 0; $_data['package_name'] = !empty($_v['game']['package_name']) ? $_v['game']['package_name'] : ''; $_data['oneword'] = !empty($_v['game']['oneword']) ? $_v['game']['oneword'] : ''; $_data['runtime'] = !empty($_v['game']['runtime']) ? $_v['game']['runtime'] : ''; $_data['classify'] = $_v['classify_label']; $_data['classify_label'] = $_game_model->getClassifyLabelAttr($_v['classify_label']); $_data['agent_benefit_type'] = !empty($_v['rate']['agent_benefit_type']) ? $_v['rate']['agent_benefit_type'] : 0; $_data['agent_benefit_type_text'] = $_gr_model->getAgentBenefitTypeTextAttr($_data['agent_benefit_type']); $_data['agent_rebate'] = !empty($_v['rate']['agent_rebate']) ? $_v['rate']['agent_rebate'] : 0; $_data['sub_agent_rebate'] = !empty($_v['rate']['sub_agent_rebate']) ? $_v['rate']['sub_agent_rebate'] : 0; $_data['agent_reward'] = !empty($_v['rate']['agent_reward']) ? $_v['rate']['agent_reward'] : 0; $_data['sub_agent_reward'] = !empty($_v['rate']['sub_agent_reward']) ? $_v['rate']['sub_agent_reward'] : 0; $_data['status'] = $_v['status']; $_data['create_time'] = $_v['create_time']; if ($_data['classify'] == GameConst::GAME_MP) { $_data['package_url'] = $_v['package_url']; } else { $_data['package_url'] = $this->getPackageUrl( $_data['classify'], $_data['app_id'], $_data['agent_id'], $_data['ag_id'] ); } $_data['parent_name'] = ($_v['agent']['parent_id'] <= 1) ? '--' : $_v['agent']['parent']['user_nicename']; $_data['user_login'] = ($_v['agent']['parent_id'] <= 1) ? '--' : $_v['agent']['parent']['user_login']; $_data['id'] = $_v['id']; $_data['is_switch'] = $_v['is_switch']; $_data['switch_rate'] = $_v['rate']['switch_rate']; $_data['promote_switch'] = $_v['rate']['promote_switch']; $_data['promote_switch_label'] = $_game_model->getAgPsLabel($_data['status']); //$_data['agent_benefit_type'] = $_v['rate']['agent_benefit_type']; $_list[] = $_data; } if (empty($_games)) { $_list = null; } $_rdata['count'] = $_count; $_rdata['list'] = $_list; return $_rdata; } /** * @param $agent_id * * @return array * sum_game_cnt 总游戏数 * today_game_cnt 今日游戏数 * yesterday_game_cnt 昨日游戏数 */ public function getStaticGame($agent_id) { $_ag_model = new AgentGameModel(); $_map['agent_id'] = $agent_id; $_rdata['sum_game_cnt'] = $_ag_model->where($_map)->count(); list($today_start, $today_end) = Time::today(); $_map['create_time'] = ['gt', $today_start]; $_rdata['today_game_cnt'] = $_ag_model->where($_map)->count(); $_map['create_time'] = ['between', [$today_start - CommonConst::CONST_DAY_SECONDS, $today_start]]; $_rdata['yesterday_game_cnt'] = $_ag_model->where($_map)->count(); return $_rdata; } /** * 获取游戏地址 * * @param $classify * @param $game_id * @param int $agent_id * @param int $ag_id * * @return string */ public function getPackageUrl($classify, $game_id, $agent_id = 0, $ag_id = 0) { if (GameConst::GAME_H5 == $classify) {//H5游戏 return MOBILESITE."/sdk.php/game?game_id={$game_id}&agent_id={$agent_id}"; } //其他游戏 return SDKSITE.'/down/down?id='.base_convert($ag_id, 10, 36); } /** * 通过id获取渠道游戏标识 * * @param $ag_id * * @return mixed */ public function getAgentGameById($ag_id) { $_map['id'] = $ag_id; $_agent_game = (new AgentGameModel())->where($_map)->value('agent_game'); if (empty($_agent_game)) { return ''; } return $_agent_game; } /** * 通过app_id 修改渠道游戏信息 * * @param $app_id * @param $_data */ public function UpdateAgentGameByAppId($app_id, $_data) { /*查找所有渠道游戏的id*/ $_map = ['app_id' => $app_id]; $_ag_ids = (new AgentGameModel())->where($_map)->column('id'); foreach ($_ag_ids as $_v) { $_data['id'] = $_v; AgentCache::ins()->updateAg($_v, $_data, true); } } /** * 获取渠道的游戏id * * @param $agent_id * * @return array */ public function getAgentGameIds($agent_id) { $_map = ['agent_id' => $agent_id]; return (new AgentGameModel())->where($_map)->column('app_id'); } }