| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648 | 
							- <?php
 
- /**
 
-  * OutputDataLogic.php  UTF-8
 
-  * 投产数据逻辑 #13630
 
-  *
 
-  * @date    : 2020/12/15 16:34
 
-  *
 
-  * @license 这不是一个自由软件,未经授权不许任何使用和传播。
 
-  * @author  : chenbingling <cbl@huosdk.com>
 
-  * @version : HUOSDK-Mp 1.0
 
-  */
 
- namespace huomp\logic\data;
 
- use DateTime;
 
- use huo\model\common\CommonModel;
 
- use huo\model\game\GameModel;
 
- use huo\model\user\UserModel;
 
- use huolib\constant\AgentConst;
 
- use huolib\constant\CommonConst;
 
- use huolib\tool\StrUtils;
 
- use huoLtv\model\LtvAgentModel;
 
- use huoLtv\model\LtvDayModel;
 
- use huoLtv\model\LtvGameAgentModel;
 
- use huoLtv\model\LtvGameModel;
 
- use huomp\model\agent\AgentGameDateCostModel;
 
- use think\Model;
 
- class OutputDataLogic extends CommonModel {
 
-     private $base_field
 
-         = [
 
-             'date'      => 'date',
 
-             'reg_cnt'   => 'reg_cnt',
 
-             'sum_money' => 'sum_money',
 
-             'day1'      => 'day1',   //1日
 
-             'day2'      => 'day2',   //2日
 
-             'day3'      => 'day3',   //3日
 
-             'day4'      => 'day4',   //4日
 
-             'day5'      => 'day5',   //5日
 
-             'day6'      => 'day6',   //6日
 
-             'day7'      => 'day7',   //7日
 
-             'day8'      => 'day8',   //8日
 
-             'day9'      => 'day9',   //9日
 
-             'day10'     => 'day10',   //10日
 
-             'day11'     => 'day11',   //11日
 
-             'day12'     => 'day12',   //12日
 
-             'day13'     => 'day13',   //13日
 
-             'day14'     => 'day14',   //14日
 
-             'day15'     => 'day15',   //15日
 
-             'day16'     => 'day16',   //16日
 
-             'day17'     => 'day17',   //17日
 
-             'day18'     => 'day18',   //18日
 
-             'day19'     => 'day19',   //19日
 
-             'day20'     => 'day20',   //20日
 
-             'day21'     => 'day21',   //21日
 
-             'day22'     => 'day22',   //22日
 
-             'day23'     => 'day23',   //23日
 
-             'day24'     => 'day24',   //24日
 
-             'day25'     => 'day25',   //25日
 
-             'day26'     => 'day26',   //26日
 
-             'day27'     => 'day27',   //27日
 
-             'day28'     => 'day28',   //28日
 
-             'day29'     => 'day29',   //29日
 
-             'day30'     => 'day30',   //30日
 
-             'day31'     => 'day31',   //31日
 
-             'day32'     => 'day32',   //32日
 
-             'day33'     => 'day33',   //33日
 
-             'day34'     => 'day34',   //34日
 
-             'day35'     => 'day35',   //35日
 
-             'day36'     => 'day36',   //36日
 
-             'day37'     => 'day37',   //37日
 
-             'day38'     => 'day38',   //38日
 
-             'day39'     => 'day39',   //39日
 
-             'day40'     => 'day40',   //40日
 
-             'day41'     => 'day41',   //41日
 
-             'day42'     => 'day42',   //42日
 
-             'day43'     => 'day43',   //43日
 
-             'day44'     => 'day44',   //44日
 
-             'day45'     => 'day45',   //45日
 
-             'day46'     => 'day46',   //46日
 
-             'day47'     => 'day47',   //47日
 
-             'day48'     => 'day48',   //48日
 
-             'day49'     => 'day49',   //49日
 
-             'day50'     => 'day50',   //50日
 
-             'day51'     => 'day51',   //51日
 
-             'day52'     => 'day52',   //52日
 
-             'day53'     => 'day53',   //53日
 
-             'day54'     => 'day54',   //54日
 
-             'day55'     => 'day55',   //55日
 
-             'day56'     => 'day56',   //56日
 
-             'day57'     => 'day57',   //57日
 
-             'day58'     => 'day58',   //58日
 
-             'day59'     => 'day59',   //59日
 
-             'day60'     => 'day60',   //60日
 
-             'day90'     => 'day90',   //90日
 
-             'day120'    => 'day120',   //120日
 
-             'day180'    => 'day180',   //180日
 
-         ];
 
-     private $sum_base_field
 
-         = [
 
-             'date'           => 'date',
 
-             'sum(reg_cnt)'   => 'reg_cnt',
 
-             'sum(sum_money)' => 'sum_money',
 
-             'sum(day1)'      => 'day1',   //1日
 
-             'sum(day2)'      => 'day2',   //2日
 
-             'sum(day3)'      => 'day3',   //3日
 
-             'sum(day4)'      => 'day4',   //4日
 
-             'sum(day5)'      => 'day5',   //5日
 
-             'sum(day6)'      => 'day6',   //6日
 
-             'sum(day7)'      => 'day7',   //7日
 
-             'sum(day8)'      => 'day8',   //8日
 
-             'sum(day9)'      => 'day9',   //9日
 
-             'sum(day10)'     => 'day10',   //10日
 
-             'sum(day11)'     => 'day11',   //11日
 
-             'sum(day12)'     => 'day12',   //12日
 
-             'sum(day13)'     => 'day13',   //13日
 
-             'sum(day14)'     => 'day14',   //14日
 
-             'sum(day15)'     => 'day15',   //15日
 
-             'sum(day16)'     => 'day16',   //16日
 
-             'sum(day17)'     => 'day17',   //17日
 
-             'sum(day18)'     => 'day18',   //18日
 
-             'sum(day19)'     => 'day19',   //19日
 
-             'sum(day20)'     => 'day20',   //20日
 
-             'sum(day21)'     => 'day21',   //21日
 
-             'sum(day22)'     => 'day22',   //22日
 
-             'sum(day23)'     => 'day23',   //23日
 
-             'sum(day24)'     => 'day24',   //24日
 
-             'sum(day25)'     => 'day25',   //25日
 
-             'sum(day26)'     => 'day26',   //26日
 
-             'sum(day27)'     => 'day27',   //27日
 
-             'sum(day28)'     => 'day28',   //28日
 
-             'sum(day29)'     => 'day29',   //29日
 
-             'sum(day30)'     => 'day30',   //30日
 
-             'sum(day31)'     => 'day31',   //31日
 
-             'sum(day32)'     => 'day32',   //32日
 
-             'sum(day33)'     => 'day33',   //33日
 
-             'sum(day34)'     => 'day34',   //34日
 
-             'sum(day35)'     => 'day35',   //35日
 
-             'sum(day36)'     => 'day36',   //36日
 
-             'sum(day37)'     => 'day37',   //37日
 
-             'sum(day38)'     => 'day38',   //38日
 
-             'sum(day39)'     => 'day39',   //39日
 
-             'sum(day40)'     => 'day40',   //40日
 
-             'sum(day41)'     => 'day41',   //41日
 
-             'sum(day42)'     => 'day42',   //42日
 
-             'sum(day43)'     => 'day43',   //43日
 
-             'sum(day44)'     => 'day44',   //44日
 
-             'sum(day45)'     => 'day45',   //45日
 
-             'sum(day46)'     => 'day46',   //46日
 
-             'sum(day47)'     => 'day47',   //47日
 
-             'sum(day48)'     => 'day48',   //48日
 
-             'sum(day49)'     => 'day49',   //49日
 
-             'sum(day50)'     => 'day50',   //50日
 
-             'sum(day51)'     => 'day51',   //51日
 
-             'sum(day52)'     => 'day52',   //52日
 
-             'sum(day53)'     => 'day53',   //53日
 
-             'sum(day54)'     => 'day54',   //54日
 
-             'sum(day55)'     => 'day55',   //55日
 
-             'sum(day56)'     => 'day56',   //56日
 
-             'sum(day57)'     => 'day57',   //57日
 
-             'sum(day58)'     => 'day58',   //58日
 
-             'sum(day59)'     => 'day59',   //59日
 
-             'sum(day60)'     => 'day60',   //60日
 
-             'sum(day90)'     => 'day90',   //90日
 
-             'sum(day120)'    => 'day120',   //120日
 
-             'sum(day180)'    => 'day180',   //180日
 
-         ];
 
-     /* 后台显示 */
 
-     private $show_field
 
-         = [
 
-             'day1'   => 'day1',   //1日
 
-             'day2'   => 'day2',   //2日
 
-             'day3'   => 'day3',   //3日
 
-             'day4'   => 'day4',   //4日
 
-             'day5'   => 'day5',   //5日
 
-             'day6'   => 'day6',   //6日
 
-             'day7'   => 'day7',   //7日
 
-             'day8'   => 'day8',   //8日
 
-             'day9'   => 'day9',   //9日
 
-             'day10'  => 'day10',   //10日
 
-             'day11'  => 'day11',   //11日
 
-             'day12'  => 'day12',   //12日
 
-             'day13'  => 'day13',   //13日
 
-             'day14'  => 'day14',   //14日
 
-             'day15'  => 'day15',   //15日
 
-             'day30'  => 'day30',   //30日
 
-             'day60'  => 'day60',   //60日
 
-             'day90'  => 'day90',   //90日
 
-             'day120' => 'day120',   //120日
 
-             'day180' => 'day180',   //180日
 
-         ];
 
-     /**
 
-      * @param array $param
 
-      *
 
-      * @return array
 
-      */
 
-     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']];
 
-         }
 
-         $_agent_model = new UserModel();
 
-         if (!empty($param['cp_id'])) {
 
-             $_ids = $_agent_model->getIdsByCpId(
 
-                 $param['cp_id'], ['in', [AgentConst::AGENT_ROLE_MP_AGENT, AgentConst::AGENT_ROLE_MP_AD]]
 
-             );
 
-             if (empty($_ids)) {
 
-                 $_ids = [-1];
 
-             }
 
-             $_map['agent_id'] = ['in', $_ids];
 
-         }
 
-         if (!empty($param['agent_level_1_id'])) {
 
-             $_agent_map = [
 
-                 'role_id' => ['in', [AgentConst::AGENT_ROLE_MP_AGENT, AgentConst::AGENT_ROLE_MP_AD]]
 
-             ];
 
-             $_ids = $_agent_model->getIdsByParentId($param['agent_level_1_id'], $_agent_map);
 
-             $_ids[] = $param['agent_level_1_id'];
 
-             $_map['agent_id'] = ['in', $_ids];
 
-         }
 
-         if (!empty($param['agent_level_2_id'])) {
 
-             $_map['agent_id'] = $param['agent_level_2_id'];
 
-         }
 
-         if (!empty($param['agent_id'])) {
 
-             $_map['agent_id'] = $param['agent_id'];
 
-         }
 
-         if (!empty($param['agent_id'])) {
 
-             if (is_array($param['agent_id'])) {
 
-                 if (in_array('in', $param['agent_id'])) {
 
-                     $_map['agent_id'] = $param['agent_id'];
 
-                 } else {
 
-                     $_map['agent_id'] = ['in', $param['agent_id']];
 
-                 }
 
-             } else {
 
-                 $_map['agent_id'] = $param['agent_id'];
 
-             }
 
-         }
 
-         if (!empty($param['game_id'])) {
 
-             $_map['app_id'] = $param['game_id'];
 
-         }
 
-         $_game_model = new GameModel();
 
-         if (!empty($param['app_id'])) {
 
-             if (is_array($param['app_id'])) {
 
-                 if (in_array('in', $param['app_id'])) {
 
-                     $_map['app_id'] = $param['app_id'];
 
-                 } else {
 
-                     $_map['app_id'] = ['in', $param['app_id']];
 
-                 }
 
-             } else {
 
-                 $_ids = $_game_model->getGameIds($param['app_id']);
 
-                 $_map['app_id'] = ['in', $_ids];
 
-             }
 
-         }
 
-         return $_map;
 
-     }
 
-     /**
 
-      * @param array $where
 
-      *
 
-      * @return LtvAgentModel|LtvGameAgentModel|LtvGameModel|LtvDayModel|null|Model
 
-      */
 
-     public function getDataModel($where) {
 
-         if (!empty($where['agent_id']) && !empty($where['app_id'])) {
 
-             return (new LtvGameAgentModel());
 
-         } elseif (!empty($where['agent_id'])) {
 
-             return (new LtvAgentModel());
 
-         } elseif (!empty($where['app_id'])) {
 
-             return new LtvGameModel();
 
-         } else {
 
-             return new LtvDayModel();
 
-         }
 
-     }
 
-     /**
 
-      * 获取字段
 
-      *
 
-      * @param $where
 
-      *
 
-      * @return array
 
-      */
 
-     public function getField($where) {
 
-         $_field = $this->base_field;
 
-         if ((isset($where['include_agent']) && 2 == $where['include_agent'])
 
-             || (isset($where['is_summary'])
 
-                 && 2 == $where['is_summary'])) {
 
-             $_field = $this->sum_base_field;
 
-         }
 
-         if (!empty($where['agent_id']) && !empty($where['app_id'])) {
 
-             $_field['agent_id'] = 'agent_id';
 
-             $_field['app_id'] = 'app_id';
 
-         } elseif (!empty($where['agent_id'])) {
 
-             $_field['agent_id'] = 'agent_id';
 
-         } elseif (!empty($where['app_id'])) {
 
-             $_field['app_id'] = 'app_id';
 
-         }
 
-         return $_field;
 
-     }
 
-     /**
 
-      * 获取with
 
-      *
 
-      * @param $where
 
-      *
 
-      * @return string
 
-      */
 
-     public function getWith($where) {
 
-         $_with = '';
 
-         if (!empty($where['agent_id']) && !empty($where['app_id'])) {
 
-             $_with = 'agent,game';
 
-         } elseif (!empty($where['agent_id'])) {
 
-             $_with = 'agent';
 
-             $_field['agent_id'] = 'agent_id';
 
-         } elseif (!empty($where['app_id'])) {
 
-             $_with = 'game';
 
-         }
 
-         return $_with;
 
-     }
 
-     /**
 
-      * 获取列表底层函数
 
-      *
 
-      * @param array  $where 搜索条件
 
-      * @param string $page  列表个数
 
-      * @param string $order 排序
 
-      * @param array  $field 附加字段
 
-      * @param string $group 归类
 
-      *
 
-      * @return array ['count'=>0,'list'=>[]]
 
-      */
 
-     public function getList($where = [], $page = '1,10', $order = '-date', $field = [], $group = '', $with = '') {
 
-         $_map = $where;
 
-         $_field = $field;
 
-         $_model = $this->getDataModel($_map);
 
-         if (!empty($group)) {
 
-             $_count = $_model->where($_map)->group($group)->count();
 
-         } else {
 
-             $_count = $_model->where($_map)->count();
 
-         }
 
-         if (empty($_count)) {
 
-             return [
 
-                 'count' => 0,
 
-                 'list'  => []
 
-             ];
 
-         }
 
-         $_order = $this->orderFilter($order);
 
-         if (!empty($group)) {
 
-             $_datas = $_model->with($with)
 
-                 ->field($_field)
 
-                 ->where($_map)
 
-                 ->order($_order)
 
-                 ->group($group)
 
-                 ->page($page)
 
-                 ->select();
 
-         } else {
 
-             $_datas = $_model->with($with)
 
-                 ->field($_field)
 
-                 ->where($_map)
 
-                 ->order($_order)
 
-                 ->page($page)
 
-                 ->select();
 
-         }
 
-         if (is_object($_datas)) {
 
-             $_datas = $_datas->toArray();
 
-         }
 
-         $_date = date('Y-m-d');
 
-         $_date_end = new DateTime($_date);
 
-         foreach ($_datas as $_k => $_v) {
 
-             $_datas[$_k]['now_ltv'] = '0.00';
 
-             if (!empty($_v['reg_cnt'])) {
 
-                 $_datas[$_k]['now_ltv'] = bcdiv($_v['sum_money'], $_v['reg_cnt'], 2);
 
-             }
 
-             $_date_start = new DateTime($_v['date']);
 
-             $_days = $_date_start->diff($_date_end)->days;  //记录至今相差天数
 
-             foreach ($this->show_field as $_day) {
 
-                 if (strpos($_day, 'day') === false) {
 
-                     continue;
 
-                 }
 
-                 $_day_num = substr($_day, 3);
 
-                 if ($_days < $_day_num) {
 
-                     $_datas[$_k][$_day] = '--';
 
-                     continue;
 
-                 }
 
-                 if (empty($_v['reg_cnt'])) {
 
-                     $_datas[$_k][$_day] = '0.00';
 
-                     continue;
 
-                 }
 
-                 $_day_money = self::getTheDayMoney($_v, $_day_num);
 
-                 $_datas[$_k][$_day] = $_day_money;
 
-             }
 
-             if (!empty($_v['game'])) {
 
-                 $_datas[$_k]['game_name'] = get_val($_v['game'], 'name', '');
 
-                 $_datas[$_k]['game_icon'] = get_val($_v['game'], 'icon', '');
 
-                 $_datas[$_k]['classify'] = get_val($_v['game'], 'classify', '');
 
-                 unset($_datas[$_k]['game']);
 
-             }
 
-             if (!empty($_v['agent'])) {
 
-                 $_datas[$_k]['agent_nickname'] = get_val($_v['agent'], 'user_nicename', '');
 
-                 $_datas[$_k]['agent_name'] = get_val($_v['agent'], 'user_login', '');
 
-                 unset($_datas[$_k]['agent']);
 
-             } else {
 
-                 $_datas[$_k]['agent_nickname'] = '';
 
-                 $_datas[$_k]['agent_name'] = '';
 
-             }
 
-         }
 
-         return [
 
-             'count' => $_count,
 
-             'list'  => $_datas
 
-         ];
 
-     }
 
-     /**
 
-      * 获取汇总数据
 
-      *
 
-      * @param $model
 
-      * @param $map
 
-      *
 
-      * @return array
 
-      */
 
-     public function getSumData($model, $map) {
 
-         $_sum_field = $this->sum_base_field;
 
-         $_sum_data = $model
 
-             ->field($_sum_field)
 
-             ->where($map)
 
-             ->find();
 
-         if (is_object($_sum_data)) {
 
-             $_sum_data = $_sum_data->toArray();
 
-         }
 
-         $_new_sum_data = $_sum_data;
 
-         foreach ($this->show_field as $_day) {
 
-             if (strpos($_day, 'day') === false) {
 
-                 continue;
 
-             }
 
-             $_day_num = substr($_day, 3);
 
-             $_day_money = self::getTheDayMoney($_sum_data, $_day_num);
 
-             $_new_sum_data[$_day] = $_day_money;
 
-         }
 
-         return $_new_sum_data;
 
-     }
 
-     /**
 
-      * 获取后台列表
 
-      *
 
-      * @param array  $where 搜索条件
 
-      * @param string $page  列表个数
 
-      * @param string $order 排序
 
-      * @param array  $field 附加字段
 
-      *
 
-      * @return array ['count'=>0,'list'=>[]]
 
-      */
 
-     public function getAdminList($where = [], $page = '1,10', $order = '-date', $field = []) {
 
-         $_map = $this->getWhere($where);
 
-         $_where = array_merge($where, $_map);
 
-         $_field = $this->getField($_where);
 
-         $_with = $this->getWith($_where);
 
-         if (!empty($field)) {
 
-             $_field = array_merge($_field, $field);/* 获取后台字段 */
 
-         }
 
-         $_group = '';
 
-         if ((isset($where['include_agent']) && 2 == $where['include_agent'])
 
-             || (isset($where['is_summary'])
 
-                 && 2 == $where['is_summary'])) {
 
-             $_group = 'date';
 
-         }
 
-         $_rdata = $this->getList($_map, $page, $order, $_field, $_group, $_with);
 
-         if (empty($_rdata['count'])) {
 
-             $_rdata['sum'] = [];
 
-             return $_rdata;
 
-         }
 
-         $_datas = $_rdata['list'];
 
-         $_agdc_model = new AgentGameDateCostModel();
 
-         foreach ($_datas as $_k => $_v) {
 
-             $_agdc_map = [
 
-                 'date' => $_v['date']
 
-             ];
 
-             if (!empty($_v['app_id'])) {
 
-                 $_agdc_map['app_id'] = $_v['app_id'];
 
-             }
 
-             if (CommonConst::STATUS_NO == $where['is_summary'] && !empty($_v['agent_id'])) {
 
-                 $_agdc_map['agent_id'] = $_v['agent_id'];
 
-             } elseif (!empty($_map['agent_id'])) {
 
-                 $_agdc_map['agent_id'] = $_map['agent_id'];
 
-             }
 
-             $_datas[$_k]['cost'] = $_agdc_model->getCostByWhere($_agdc_map);
 
-             $_datas[$_k]['price'] = StrUtils::getArpu($_datas[$_k]['cost'], $_v['reg_cnt']);
 
-         }
 
-         $_rdata['list'] = $_datas;
 
-         $_model = $this->getDataModel($_map);
 
-         $_rdata['sum'] = $this->getSumData($_model, $_map);
 
-         $_rdata['sum']['cost'] = $_agdc_model->getCostByWhere($_map);
 
-         $_rdata['sum']['price'] = StrUtils::getArpu($_rdata['sum']['cost'], $_rdata['sum']['reg_cnt']);
 
-         return $_rdata;
 
-     }
 
-     /**
 
-      * 获取后台列表
 
-      *
 
-      * @param array  $where 搜索条件
 
-      * @param string $page  列表个数
 
-      * @param string $order 排序
 
-      * @param array  $field 附加字段
 
-      *
 
-      * @return array ['count'=>0,'list'=>[]]
 
-      */
 
-     public function getNewAdminList($_indexData,$where = [], $page = '1,10', $order = '-date', $field = []) {
 
-         $_map = $this->getWhere($where);
 
-         // 渠道过滤
 
- //        if (!empty(request()->default_agent_ids)) {
 
- //            $_map['agent_id'] = ['in', request()->default_agent_ids];
 
- //            $where['is_summary'] = CommonConst::STATUS_YES;
 
- //        }
 
-         $_where = array_merge($where, $_map);
 
-         $_with = $this->getWith($_where);
 
-         $_field = $this->sum_base_field;
 
-         $_rdata = $this->getList($_map, $page, $order, $_field, 'date', $_with);
 
-         if (empty($_rdata['count'])) {
 
-             $_rdata['sum'] = [];
 
-             return $_rdata;
 
-         }
 
-         $_datas = $_rdata['list'];
 
-         $_agdc_model = new AgentGameDateCostModel();
 
-         $reg_array  = array_column($_indexData['list'],'reg_cnt','date');
 
-         $user_cnt_array = array_column($_indexData['list'],'user_cnt','date');
 
-         $reg_pay_cnt_array  = array_column($_indexData['list'],'reg_pay_cnt','date');
 
-         $reg_sum_money_array =  array_column($_indexData['list'],'reg_sum_money','date');
 
-         foreach ($_datas as $_k => $_v) {
 
-             $_agdc_map = [
 
-                 'date' => $_v['date']
 
-             ];
 
-             if (isset($_map['app_id'])) $_agdc_map['app_id'] = $_map['app_id'];
 
-             if (CommonConst::STATUS_NO == $where['is_summary'] && !empty($_v['agent_id'])) {
 
-                 $_agdc_map['agent_id'] = $_v['agent_id'];
 
-             } elseif (!empty($_map['agent_id'])) {
 
-                 $_agdc_map['agent_id'] = $_map['agent_id'];
 
-             }
 
-             $_datas[$_k]['cost'] = $_agdc_model->getCostByWhere($_agdc_map);
 
-             //$_datas[$_k]['price'] = StrUtils::getArpu($_datas[$_k]['cost'], $_v['reg_cnt']);
 
-             $_datas[$_k]['user_cnt'] = $user_cnt_array[$_v['date']] ?? 0;
 
-             $_datas[$_k]['price'] = StrUtils::getArpu($_datas[$_k]['cost'], $reg_array[$_v['date']] ?? 0);
 
-             //新增付费人数
 
-             $_datas[$_k]['reg_pay_cnt'] = $reg_pay_cnt_array[$_v['date']] ?? 0;
 
-             //新增付费金额
 
-             $_datas[$_k]['reg_sum_money'] = $reg_sum_money_array[$_v['date']] ?? 0;
 
-             //成本/新增付费人数
 
-             $_datas[$_k]['agv_price'] = StrUtils::getArpu($_datas[$_k]['cost'],  $_datas[$_k]['reg_pay_cnt'] );
 
-         }
 
-         $_rdata['list'] = $_datas;
 
-         $_model = $this->getDataModel($_map);
 
-         $_rdata['sum'] = $this->getSumData($_model, $_map);
 
-         $_rdata['sum']['cost'] = $_agdc_model->getCostByWhere($_map);
 
-         if (!empty(request()->default_agent_ids)) {
 
-             $_map['agent_id'] = ['in', request()->default_agent_ids];
 
-             $where['is_summary'] = CommonConst::STATUS_YES;
 
-         }
 
-         $_model = (new DayDataLogic())->getDataModel($_map);
 
-         $_sum_data = $_model
 
-             ->field(['sum(reg_pay_cnt)'=> 'reg_pay_cnt','sum(reg_sum_money)'  => 'reg_sum_money'])
 
-             ->where($_map)
 
-             ->find();
 
-         if (is_object($_sum_data)) {
 
-             $_sum_data = $_sum_data->toArray();
 
-         }
 
-         $_rdata['sum']['reg_pay_cnt'] = $_sum_data['reg_pay_cnt'];
 
-         $_rdata['sum']['reg_sum_money'] = $_sum_data['reg_sum_money'];
 
-         return $_rdata;
 
-     }
 
-     /**
 
-      * 获取至当日金额
 
-      *
 
-      * @param array $data 单条数据
 
-      * @param int   $day  获取日期
 
-      *
 
-      * @return int|mixed|string
 
-      */
 
-     private function getTheDayMoney($data, $day) {
 
-         $_money = 0;
 
-         /* 最大循环60日 */
 
-         $_lop_day = $day;
 
-         if ($day > 60) {
 
-             $_lop_day = 60;
 
-         }
 
-         for ($_i = 1; $_i <= $_lop_day; $_i++) {
 
-             $_field = 'day'.$_i;
 
-             $_value = get_val($data, $_field, 0);
 
-             $_money += $_value;
 
-         }
 
-         /* 60日内数据返回 */
 
-         if ($day <= 60) {
 
-             return $_money;
 
-         }
 
-         if ($day <= 90) {
 
-             $_value90 = get_val($data, 'day90', 0);
 
-             $_money += $_value90;
 
-             return $_money;
 
-         }
 
-         if ($day <= 120) {
 
-             $_value90 = get_val($data, 'day90', 0);
 
-             $_value120 = get_val($data, 'day120', 0);
 
-             $_money = $_money + $_value90 + $_value120;
 
-             return $_money;
 
-         }
 
-         if ($day <= 180) {
 
-             $_value90 = get_val($data, 'day90', 0);
 
-             $_value120 = get_val($data, 'day120', 0);
 
-             $_value180 = get_val($data, 'day180', 0);
 
-             $_money = $_money + $_value90 + $_value120 + $_value180;
 
-             return $_money;
 
-         }
 
-         if ($day <= 270) {
 
-             $_value90 = get_val($data, 'day90', 0);
 
-             $_value120 = get_val($data, 'day120', 0);
 
-             $_value180 = get_val($data, 'day180', 0);
 
-             $_value270 = get_val($data, 'day270', 0);
 
-             $_money = $_money + $_value90 + $_value120 + $_value180 + $_value270;
 
-             return $_money;
 
-         }
 
-         if ($day <= 360) {
 
-             $_value90 = get_val($data, 'day90', 0);
 
-             $_value120 = get_val($data, 'day120', 0);
 
-             $_value180 = get_val($data, 'day180', 0);
 
-             $_value270 = get_val($data, 'day270', 0);
 
-             $_value360 = get_val($data, 'day360', 0);
 
-             $_money = $_money + $_value90 + $_value120 + $_value180 + $_value270 + $_value360;
 
-             return $_money;
 
-         }
 
-         return $_money;
 
-     }
 
- }
 
 
  |