* @version : HUOSDK 8.0 */ namespace huo\logic\data; use huo\model\common\CommonModel; use huo\model\data\PayExtModel; use huo\model\data\PayModel; use huo\model\game\GameModel; use huo\logic\user\UserLogic; class IapDataLogic extends CommonModel { protected $_id; protected $_agent_id; protected $_app_id; protected $_cp_id; public function __construct($data = []) { parent::__construct($data); List($this->_id, $this->_cp_id, $this->_agent_id, $this->_app_id) = (new UserLogic())->getRoleLevelID(session('ADMIN_ID')); } /** * iap计费统计 * @param null $start_time * @param null $end_time * @param null $order_id * @param null $phone * @param null $imei * @param null $cp * @param null $app_id * * @return array */ public function iapList($start_time = null, $end_time = null, $order_id = null, $phone = null, $imei = null, $cp = null, $app_id = null){ $_pay_model = new PayModel(); $_pay_ext_model = new PayExtModel(); $_game_model = new GameModel(); $_pay_model = $_pay_model->where('create_time', '>=', $start_time) ->where('create_time', '<=', $end_time); if($order_id){ $_pay_model = $_pay_model->where('order_id', $order_id); } $_pay_model = $_pay_model->with('ext') ->with('game.cp') ->with(['member' => function($query){ $query->with('country')->with('operator'); }]); if($imei || $phone){ if($imei){ $_pay_ext_model = $_pay_ext_model->where('device_id', $imei); } if($phone){ $_pay_ext_model = $_pay_ext_model->where('device_info', 'like', "%{$phone}%"); } $_pay_model = $_pay_model->whereIn('id', $_pay_ext_model->column('pay_id')); } if($app_id){ $_pay_model = $_pay_model->where('app_id', $app_id); } if($cp){ $_pay_model = $_pay_model->whereIn('app_id', $_game_model->where('cp_id', $cp)->column('id')); } $_pay_model = $_pay_model->whereIn('app_id', $this->_app_id) ->whereIn('agent_id', $this->_agent_id) ->paginate(10); $_page = $_pay_model->render(); $_data = $_pay_model->toArray()['data']; $this->handleData($_data); return [$_data, $_page]; } /** * 封装 * @param $data */ private function handleData(&$data){ if(!empty($data)){ foreach ($data as &$val){ $val['phone'] = null; $val['imei'] = null; $val['game_name'] = null; $val['product_name'] = null; $val['is_vip'] = null; //todo $val['protect_date'] = 'xx'; $val['cp'] = null; $val['country'] = null; $val['operator'] = null; if(!empty($val['ext'])){ $_to_ext = $val['ext']; $val['imei'] = $_to_ext['device_id']; $val['product_name'] = $_to_ext['product_name']; $val['is_vip'] = $_to_ext['role_vip'] == 0 ? '否' : '是'; $_device_info = explode('||', $_to_ext['device_info']); if(count($_device_info)){ $val['phone'] = $_device_info[0]; } } if(!empty($val['game'])){ $_to_game = $val['game']; if(!empty($_to_game['cp'])){ $val['cp'] = $_to_game['cp']['company_name']; } $val['game_name'] = $val['game']['name']; } if(!empty($val['member'])){ $_to_member = $val['member']; if(!empty($_to_member['country'])){ $val['country'] = $_to_member['country']['en_name_abbr']; } if(!empty($_to_member['operator'])){ $val['operator'] = $_to_member['operator']['name']; } } } } } }