123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- <?php
- namespace huo\logic\agent;
- use huo\model\common\CommonModel;
- use huo\model\data\DayAgentModel;
- use huolib\tool\StrUtils;
- class AgentDayLogic extends CommonModel {
-
- protected function getWhere($param = []) {
- $_map = [];
- if (!empty($param['start_time']) && !empty($param['end_time'])) {
- $_map['date'] = ['between', [$param['start_time'], $param['end_time']]];
- } elseif (!empty($param['start_time'])) {
- $_map['date'] = ['egt', $param['start_time']];
- } elseif (!empty($param['end_time'])) {
- $_map['date'] = ['elt', $param['end_time']];
- }
- if (!empty($param['start_time']) && !empty($param['end_time'])) {
- $_map['date'] = ['BETWEEN', [$param['start_time'],$param['end_time']]];
- }
- if (!empty($param['agent_id'])) {
- $_map['agent_id'] = $param['agent_id'];
- }
- if (!empty($param['sub_agent_id'])) {
- $_map['agent_id'] = $param['sub_agent_id'];
- }
-
- if (!empty($param['app_id'])) {
- $_map['app_id'] = $param['app_id'];
- }
- return $_map;
- }
- public function getField($agent_id) {
- return [];
- }
-
- public function getGroupList($field = [], $where, $page = '1,10', $order = '-date') {
- $_map = $this->getWhere($where);
- $_model = new DayAgentModel();
- $_count = $_model->where($_map)->group('agent_id')->count();
- if (empty($_count)) {
- return [
- 'count' => 0,
- 'sum' => [],
- 'list' => []
- ];
- }
- $_sum_field = [
- 'sum(history_user_cnt)' => 'history_user_cnt',
- 'sum(active_cnt)' => 'active_cnt',
- 'sum(down_cnt)' => 'down_cnt',
- 'sum(real_down_cnt)' => 'real_down_cnt',
- 'sum(user_cnt)' => 'user_cnt',
- 'sum(reg_cnt)' => 'reg_cnt',
- 'sum(pay_user_cnt)' => 'pay_user_cnt',
- 'sum(first_pay_user_cnt)' => 'first_pay_user_cnt',
- 'sum(order_cnt)' => 'order_cnt',
- 'sum(fail_order_cnt)' => 'fail_order_cnt',
- 'sum(un_order_cnt)' => 'un_order_cnt',
- 'sum(reg_order_cnt)' => 'reg_order_cnt',
- 'sum(reg_pay_cnt)' => 'reg_pay_cnt',
- 'sum(sum_money)' => 'sum_money',
- 'sum(first_pay_money)' => 'first_pay_money',
- 'sum(first_pay_sum_money)' => 'first_pay_sum_money',
- 'sum(reg_sum_money)' => 'reg_sum_money',
- ];
- $_sum_data = $_model
- ->field($_sum_field)
- ->where($_map)
- ->find();
- if (is_object($_sum_data)) {
- $_sum_data = $_sum_data->toArray();
- }
- $_sum = $_sum_data;
- $_sum['reg_pay_rate'] = StrUtils::getRate($_sum_data['reg_pay_cnt'], $_sum_data['reg_cnt']);
- $_sum['user_pay_rate'] = StrUtils::getRate($_sum_data['pay_user_cnt'], $_sum_data['user_cnt']);
- $_sum['arppu'] = StrUtils::getRate($_sum_data['sum_money'], $_sum_data['pay_user_cnt']);
- $_sum['arpu'] = StrUtils::getRate($_sum_data['sum_money'], $_sum_data['user_cnt']);
- $_field = $field;
- if (empty($field)) {
- $_field = $_sum_field;
- $_field['date'] = 'date';
- $_field['agent_id'] = 'agent_id';
- }
- $_order = $_model->orderFilter($order);
- $_datas = $_model
- ->with('agent')
- ->where($_map)
- ->field($_field)
- ->order($_order)
- ->group('agent_id')
- ->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]['agent_name'] = !empty($_v['agent']) ? $_v['agent']['user_login'] : '';
- $_datas[$_k]['reg_pay_rate'] = StrUtils::getRate($_v['reg_pay_cnt'], $_v['reg_cnt']);
- $_datas[$_k]['user_pay_rate'] = StrUtils::getRate($_v['pay_user_cnt'], $_v['user_cnt']);
- $_datas[$_k]['arppu'] = StrUtils::getRate($_v['sum_money'], $_v['pay_user_cnt']);
- $_datas[$_k]['arpu'] = StrUtils::getRate($_v['sum_money'], $_v['user_cnt']);
- }
- return [
- 'count' => $_count,
- 'sum' => $_sum,
- 'list' => $_datas
- ];
- }
-
- public function getDataByField($field = '', $where, $group = '', $order = '+date') {
- $_map = $this->getWhere($where);
- $_da_model = new DayAgentModel();
- $_order = $this->orderFilter($order);
- if (empty($group)) {
- $_rdata = $_da_model->where($_map)->order($_order)->column($field, 'date');
- } else {
- $_rdata = $_da_model->where($_map)->group($group)->order($_order)->column($field, 'date');
- }
- return $_rdata;
- }
- }
|