* @version : HUOSDK 8.0 */ namespace huo\logic\finance; use huo\controller\member\Member; use huo\logic\agent\AgentLogic; use huo\logic\member\MemberLogic; use huo\model\common\CommonModel; use huo\model\finance\PtbAgentOrderModel; use huolib\constant\AgentConst; use huolib\constant\CommonConst; use huolib\tool\StrUtils; class PtbAgentOrder extends CommonModel { /** * @param array $param * * @return array */ protected function getWhere($param = []) { $_map = []; if (!empty($param['start_time']) && !empty($param['start_time'])) { $_map['ptb_agent_order_model.create_time'] = ['between', [strtotime($param['start_time']), CommonConst::CONST_DAY_SECONDS + strtotime( $param['end_time'] )]]; } else if (!empty($param['start_time'])) { $_map['ptb_agent_order_model.create_time'] = ['gt', strtotime($param['start_time'])]; } else if (!empty($param['end_time'])) { $_map['ptb_agent_order_model.create_time'] = ['lt', CommonConst::CONST_DAY_SECONDS + strtotime( $param['end_time'] )]; } if (!empty($param['order_id'])) { $_map['order_id'] = $param['order_id']; } if (!empty($param['agent_id'])) { $_map['ptb_agent_order_model.agent_id'] = $param['agent_id']; } if (!empty($param['to_agent_id'])) { $_map['ptb_agent_order_model.to_agent_id'] = $param['to_agent_id']; } if (!empty($param['mem_id'])) { $_map['ptb_agent_order_model.to_mem_id'] = $param['mem_id']; } if (!empty($param['parent_id'])) { $_agent_ids = (new AgentLogic())->getAgentIds($param['parent_id']); $_map['ptb_agent_order_model.agent_id'] = ['in', $_agent_ids]; } if (!empty($param['username'])) { $_mem_ids = (new MemberLogic())->getIdsByUsername($param['username']); $_map['ptb_agent_order_model.to_mem_id'] = ['in', $_mem_ids]; } if (!empty($param['cost_type'])) { if ($param['cost_type'] == AgentConst::IS_AGENT) { $_map['ptb_agent_order_model.to_agent_id'] = ['>', 0]; } else if ($param['cost_type'] == AgentConst::IS_MEMBER) { $_map['ptb_agent_order_model.to_mem_id'] = ['>', 0]; } } return $_map; } public function getField($agent_id) { return []; } /** * 获取获取记录 * * @param $agent_id * @param $param * @param string $page * @param string $order * * @return array */ public function getAgentList($agent_id, $param, $page = '1,10', $order = '-create_time') { $_map = $this->getWhere($param); $field = $this->getField($agent_id); $_map['to_mem_id'] = 0; $_map['to_agent_id'] = ['gt', 0]; if (!empty($agent_id)) { $_map['agent_id'] = $agent_id; } return $this->getList($field, $_map, $page, $order); } /** * 获取获取记录 * * @param $agent_id * @param $param * @param string $page * @param string $order * * @return array */ public function getMemList($agent_id, $param, $page = '1,10', $order = '-create_time') { $_map = $this->getWhere($param); $field = $this->getField($agent_id); $_map['to_agent_id'] = 0; $_map['to_mem_id'] = ['gt', 0]; $_map['ptb_cnt'] = ['gt', 0]; if (!empty($agent_id)) { $_map['agent_id'] = $agent_id; } if (!empty($param['username'])) { $_to_mem_id = (new Member())->getIdByName($param['username']); if (empty($_to_mem_id)) { return [ 'count' => 0, 'sum' => [], 'list' => [] ]; } $_map['to_mem_id'] = $_to_mem_id; } return $this->getList($field, $_map, $page, $order); } /** * 获取获取记录 * * @param $agent_id * @param $param * @param string $page * @param string $order * * @return array */ public function getMemGmList($agent_id, $param, $page = '1,10', $order = '-create_time') { $_map = $this->getWhere($param); $field = $this->getField($agent_id); $_map['to_agent_id'] = 0; $_map['to_mem_id'] = ['gt', 0]; $_map['gm_cnt'] = ['gt', 0]; $_map['app_id'] = ['gt', 0]; if (!empty($param['app_id'])) { $_map['app_id'] = $param['app_id']; } if (!empty($agent_id)) { $_map['agent_id'] = $agent_id; } if (!empty($param['username'])) { $_to_mem_id = (new Member())->getIdByName($param['username']); if (empty($_to_mem_id)) { return [ 'count' => 0, 'sum' => [], 'list' => [] ]; } $_map['to_mem_id'] = $_to_mem_id; } 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 PtbAgentOrderModel(); $_count = $_model->alias('ptb_agent_order_model')->where($_map)->count(); if (empty($_count)) { return [ 'count' => 0, 'sum' => [], 'list' => [] ]; } $_sum_field = [ 'sum(amount)' => 'sum_amount', 'sum(real_amount)' => 'sum_real_amount', 'sum(rebate_cnt)' => 'sum_rebate_cnt', 'sum(ptb_cnt)' => 'sum_ptb_cnt', 'sum(gm_cnt)' => 'sum_gm_cnt', 'sum(cost_ptb_cnt)' => 'sum_cost_ptb_cnt' ]; $_sum_data = $_model ->alias('ptb_agent_order_model') ->field($_sum_field) ->where($where) ->find(); if (is_object($_sum_data)) { $_sum_data = $_sum_data->toArray(); } $_sum = []; foreach ($_sum_data as $_k => $_v) { $_sum[$_k] = StrUtils::formatNumber($_v); } $_field = $field; if (empty($field)) { $_field = []; } $_order = $_model->orderFilter($order); $_datas = $_model ->alias('ptb_agent_order_model') ->with('mem') ->with('agent') ->with('toagent') ->with('game') ->where($where) ->field($_field) ->order($_order) ->page($page) ->select(); if (is_object($_datas)) { $_datas = $_datas->toArray(); } if (empty($_datas)) { return [ 'count' => $_count, 'sum' => $_sum, 'list' => [] ]; } foreach ($_datas as $_k => $_v) { $_datas[$_k]['to_agent_name'] = !empty($_v['toagent']) ? $_v['toagent']['user_login'] : ''; $_datas[$_k]['username'] = !empty($_v['mem']) ? $_v['mem']['username'] : ''; $_datas[$_k]['gamename'] = !empty($_v['game']) ? $_v['game']['name'] : ''; } return [ 'count' => $_count, 'sum' => $_sum, 'list' => $_datas ]; } /** * 获取消费列表 * * @param array $where * @param string $page * @param string $order * * @return array */ public function getCostList($where = [], $page = '1,10', $order = '-create_time') { $_map = $this->getWhere($where); $_field = []; return $this->getList($_field, $_map, $page, $order); } }