* @version : HUOSDK 8.0 */ namespace huo\logic\agent; use huo\model\common\CommonModel; use huo\model\member\MemberModel; use huo\model\user\RoleModel; use huo\model\user\UserModel; use huolib\constant\AgentConst; use huolib\constant\CommonConst; class AgentListLogic extends CommonModel { /** * @param array $param * * @return array */ protected function getWhere($param = []) { $_map = []; if (!empty($param['start_time']) && !empty($param['end_time'])) { $_map['create_time'] = [ 'between', [ strtotime($param['start_time']), CommonConst::CONST_DAY_SECONDS + strtotime($param['end_time']) ] ]; } elseif (!empty($param['start_time'])) { $_map['create_time'] = ['egt', strtotime($param['start_time'])]; } elseif (!empty($param['end_time'])) { $_map['create_time'] = ['elt', CommonConst::CONST_DAY_SECONDS + strtotime($param['end_time'])]; } if (!empty($param['cp_id'])) { $_map['cp_id'] = $param['cp_id']; } if (!empty($param['user_login'])) { $_map['user_login'] = $param['user_login']; } if (!empty($param['agent_name'])) { $_map['user_nicename'] = ['like', $param['agent_name'].'%']; } if (!empty($param['agent_id'])) { $_map['id'] = $param['agent_id']; } if (!empty($param['parent_id'])) { $_map['parent_id'] = $param['parent_id']; } if (!empty($param['role_id'])) { $_map['role_id'] = $param['role_id']; } if (!empty($param['sub_agent_id'])) { $_map['id'] = $param['sub_agent_id']; } $_agent_model = new UserModel(); if (!empty($param['agent_level_1_id'])) { $_agent_map = [ 'role_id' => AgentConst::AGENT_ROLE_MP_AD ]; $_ids = $_agent_model->getIdsByParentId($param['agent_level_1_id'], $_agent_map); $_ids[] = $param['agent_level_1_id']; $_map['id'] = ['in', $_ids]; } if (!empty($param['agent_level_2_id'])) { $_map['id'] = $param['agent_level_2_id']; } if (!empty($param['mem_id'])) { $_map['mem_id'] = $param['mem_id']; } $_mem_map = []; if (!empty($param['mem_username'])) { $_mem_map['username'] = $param['mem_username']; } if (!empty($param['mem_mobile'])) { $_mem_map['mobile'] = $param['mem_mobile']; } if (!empty($param['mem_real_name'])) { $_mem_map['real_name'] = $param['mem_real_name']; } if (!empty($_mem_map) && empty($_map['mem_id'])) { $_mem_ids = (new MemberModel())->where($_mem_map)->column('id'); if (!empty($_mem_ids)) { $_map['mem_id'] = ['in', $_mem_ids]; } } /* Modified by wuyonghong BEGIN 2020/10/7 ISSUES:13308 小游戏后台cp功能开发 */ $_class = '\\huosdk\\auth\\controller\\Auth'; if (class_exists($_class)) { $_map = (new $_class())->getAgentIdBySearch( get_val($_map, 'id', 0), $_map, cmf_get_current_admin_id(), 'id' ); } /* END 2020/10/7 ISSUES:13308 */ return $_map; } public function getField($agent_id) { return []; } /** * 获取获取记录 * * @param array $param * @param string $page * @param string $order * * @return array */ public function getAgentList($param = [], $page = '1,10', $order = '-create_time') { $_map = $this->getWhere($param); $_field = [ 'id' => 'agent_id', 'user_login' => 'user_login', 'user_nicename' => 'user_nicename', 'user_email' => 'user_email', 'avatar' => 'avatar', 'last_login_time' => 'last_login_time', 'last_login_ip' => 'last_login_ip', 'create_time' => 'create_time', 'role_id' => 'role_id', 'parent_id' => 'parent_id', 'cp_id' => 'cp_id', 'user_status' => 'user_status', '`user_status`' => 'status_text', 'is_switch' => 'is_switch', '`is_switch`' => 'switch_text', 'mobile' => 'mobile', 'switch_rate' => 'switch_rate', 'ext_info' => 'ext_info' ]; $_role_types = [AgentConst::ROLE_TYPE_GROUP, AgentConst::ROLE_TYPE_AGENT]; if (!empty($param['role_type'])) { $_role_types = [$param['role_type']]; } if (empty($_map['role_id'])) { $_role_ids = (new RoleModel())->getIdsByRoleType($_role_types); $_map['role_id'] = ['in', $_role_ids]; } return $this->getList($_field, $_map, $page, $order); } /** * 获取列表 * * @param array $field * @param array $where * @param string $page * @param string $order * * @return array */ public function getList($field, $where, $page = '1,10', $order = '-create_time') { $_map = $where; $_model = new UserModel(); $_count = $_model->where($_map)->count(); if (empty($_count)) { return [ 'count' => 0, 'list' => [] ]; } $_field = $field; if (empty($field)) { $_field = []; } $_order = $_model->orderFilter($order); $_datas = $_model ->with('parent') ->where($where) ->field($_field) ->order($_order) ->page($page) ->select(); if (is_object($_datas)) { $_datas = $_datas->toArray(); } if (empty($_datas)) { return [ 'count' => $_count, 'list' => [] ]; } $_data = []; foreach ($_datas as $_k => $_v) { foreach ($_field as $_f) { $_data[$_k][$_f] = $_v[$_f]; } $_data[$_k]['parent_name'] = !empty($_v['parent']) ? $_v['parent']['user_login'] : ''; $_ext_info = !empty($_v['ext_info']) ? json_decode($_v['ext_info'], true) : []; $_data[$_k]['agent_charge_type'] = !empty($_ext_info['agent_charge_type']) ? $_ext_info['agent_charge_type'] : 0; $_data[$_k]['price'] = !empty($_ext_info['price']) ? $_ext_info['price'] : 0; } return [ 'count' => $_count, 'list' => $_data ]; } /** * 获取获取记录 * * @param array $param * @param string $page * @param string $order * * @return array */ public function getRemainList($param = [], $page = '1,10', $order = '-create_time') { $_map = $this->getWhere($param); $_field = [ 'id' => 'agent_id', 'user_login' => 'user_login', 'user_nicename' => 'user_nicename', 'user_email' => 'user_email', 'avatar' => 'avatar', 'last_login_time' => 'last_login_time', 'last_login_ip' => 'last_login_ip', 'create_time' => 'create_time', 'role_id' => 'role_id', 'parent_id' => 'parent_id', 'cp_id' => 'cp_id', 'user_status' => 'user_status', '`user_status`' => 'status_text', 'mobile' => 'mobile', ]; if (empty($_map['role_id'])) { $_role_types = [AgentConst::ROLE_TYPE_GROUP, AgentConst::ROLE_TYPE_AGENT]; $_role_ids = (new RoleModel())->getIdsByRoleType($_role_types); $_map['role_id'] = ['in', $_role_ids]; } return $this->getExtList($_field, $_map, $page, $order); } /** * 获取列表 * * @param array $field * @param array $where * @param string $page * @param string $order * * @return array */ public function getExtList($field, $where, $page = '1,10', $order = '-create_time') { $_map = $where; $_model = new UserModel(); $_count = $_model->where($_map)->count(); if (empty($_count)) { return [ 'count' => 0, 'list' => [] ]; } $_field = $field; if (empty($field)) { $_field = []; } $_order = $_model->orderFilter($order); $_datas = $_model ->with('ext,mem,parent') ->where($where) ->field($_field) ->order($_order) ->page($page) ->select(); if (is_object($_datas)) { $_datas = $_datas->toArray(); } if (empty($_datas)) { return [ 'count' => $_count, 'list' => [] ]; } $_data = []; foreach ($_datas as $_k => $_v) { foreach ($_field as $_f) { $_data[$_k][$_f] = $_v[$_f]; } $_data[$_k]['parent_id'] = !empty($_v['parent']) ? $_v['parent']['id'] : ''; $_data[$_k]['parent_nickname'] = !empty($_v['parent']) ? $_v['parent']['user_nicename'] : ''; $_data[$_k]['sum_money'] = !empty($_v['ext']) ? $_v['ext']['sum_money'] : 0; $_data[$_k]['sum_real_money'] = !empty($_v['ext']) ? $_v['ext']['sum_real_money'] : 0; $_data[$_k]['share_remain'] = !empty($_v['ext']) ? $_v['ext']['share_remain'] : 0; $_data[$_k]['ptb_total'] = !empty($_v['ext']) ? $_v['ext']['ptb_total'] : 0; $_data[$_k]['frozen_ptb'] = !empty($_v['ext']) ? $_v['ext']['frozen_ptb'] : 0; $_data[$_k]['frozen_amount'] = !empty($_v['ext']) ? $_v['ext']['frozen_amount'] : 0; $_data[$_k]['share_total'] = !empty($_v['ext']) ? $_v['ext']['share_total'] : 0; $_data[$_k]['ptb_remain'] = !empty($_v['ext']) ? $_v['ext']['ptb_remain'] : 0; $_data[$_k]['mem_id'] = !empty($_v['mem']) ? $_v['mem']['id'] : 0; $_data[$_k]['mem_username'] = !empty($_v['mem']) ? $_v['mem']['username'] : ''; $_data[$_k]['mem_nickname'] = !empty($_v['mem']) ? $_v['mem']['nickname'] : ''; $_data[$_k]['mem_mobile'] = !empty($_v['mem']) ? $_v['mem']['mobile'] : ''; $_data[$_k]['mem_real_name'] = !empty($_v['mem']) ? $_v['mem']['real_name'] : ''; } return [ 'count' => $_count, 'list' => $_data ]; } /** * 获取渠道折扣 * * @param array $param * @param string $page * @param string $order * * @return array */ public function getAgentRateList($param = [], $page = '1,10', $order = '-create_time') { $_map = $this->getWhere($param); $_field = [ 'id' => 'agent_id', 'user_login' => 'user_login', 'user_nicename' => 'user_nicename', 'user_model.create_time' => 'create_time', 'role_id' => 'role_id', 'parent_id' => 'parent_id', 'rate.agent_rate' => 'agent_rate', 'rate.sub_agent_rate' => 'sub_agent_rate', ]; $_role_types = [AgentConst::ROLE_TYPE_GROUP, AgentConst::ROLE_TYPE_AGENT]; $_role_ids = (new RoleModel())->getIdsByRoleType($_role_types); $_map['role_id'] = ['in', $_role_ids]; return $this->getRateList($_field, $_map, $page, $order); } /** * 渠道折扣列表 * * @param array $field * @param $where * @param string $page * @param string $order * * @return array */ public function getRateList($field, $where, $page = '1,10', $order = '-create_time') { $_map = $where; $_model = new UserModel(); $_count = $_model->where($_map)->count(); if (empty($_count)) { return [ 'count' => 0, 'list' => [] ]; } $_field = $field; if (empty($field)) { $_field = []; } $_order = $_model->orderFilter($order); $_datas = $_model ->with('rate') ->where($where) ->field($_field) ->order($_order) ->page($page) ->select(); if (is_object($_datas)) { $_datas = $_datas->toArray(); } if (empty($_datas)) { return [ 'count' => $_count, 'list' => [] ]; } $_data = []; foreach ($_datas as $_k => $_v) { foreach ($_field as $_f) { $_data[$_k][$_f] = $_v[$_f]; } } return [ 'count' => $_count, 'list' => $_data ]; } }