Member.php 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840
  1. <?php
  2. /**
  3. * 前台注册用户管理控制器
  4. */
  5. namespace app\mcpsapi\controller;
  6. use think\Db;
  7. use think\Exception;
  8. use app\common\logic\Member as MemberService;
  9. use app\common\library\MakeReport;
  10. class Member extends Guild
  11. {
  12. protected function _initialize()
  13. {
  14. parent::_initialize();
  15. $this->membersModel = Db::name('cy_members');
  16. $this->membersGameModel = Db::name('nw_member_game_server');
  17. }
  18. /**
  19. * 注册用户列表
  20. */
  21. public function getMemberList()
  22. {
  23. $download = input('download');
  24. $list_rows = input('pageSize',10);
  25. $page = input('page',1);
  26. $type = input('type',1);
  27. $where = $this->_getCondition('members',2);
  28. //create_time 账号注册时间
  29. //reg_time 创角时间
  30. //login_time 最近登录时间
  31. switch ($download) {
  32. case '1':
  33. if ($type == 2) {
  34. $sql = Db::name('cy_member_channel_game_rel')->alias('mcg')
  35. ->join('cy_game game', 'mcg.game_id = game.id','left')
  36. ->join('cy_members members', 'mcg.member_id = members.id','left')
  37. ->join('nw_member_game_server mgs', 'mcg.member_id=mgs.member_id and mcg.game_id=mgs.game_id','left')
  38. ->join('nw_channel channel', 'mcg.channel_id=channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  39. ->field('mcg.mcgr_id,game.name as game_name,members.username, mgs.servername,mgs.rolename,mgs.rolelevel, mgs.ip,mgs.imeil,FROM_UNIXTIME( members.reg_time ) AS create_time,IFNULL(FROM_UNIXTIME( mgs.update_time),FROM_UNIXTIME( mcg.update_time)) AS login_time,FROM_UNIXTIME( mgs.create_time) AS reg_time,channel.name as channel_name')
  40. ->where($where)
  41. ->where("game.is_default = 0")
  42. ->order('mcg.mcgr_id desc,mgs.mgs_id desc')
  43. ->fetchSql(true)
  44. ->select();
  45. }else{
  46. $sql = Db::name('nw_member_game_server')->alias('mgs')
  47. ->join('cy_game game', 'mgs.game_id = game.id','left')
  48. ->join('cy_members members', 'mgs.member_id = members.id','left')
  49. ->join('nw_channel channel', 'mgs.channel_id=channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  50. ->field('mgs.mgs_id,game.name as game_name,members.username,mgs.servername,mgs.rolename,mgs.rolelevel,mgs.ip,mgs.imeil,FROM_UNIXTIME( members.reg_time ) AS create_time,FROM_UNIXTIME( mgs.update_time) AS login_time,FROM_UNIXTIME( mgs.create_time) AS reg_time,channel.NAME AS channel_name ')
  51. ->where($where)
  52. ->where("game.is_default = 1")
  53. ->order('mgs.mgs_id desc')
  54. ->fetchSql(true)
  55. ->select();
  56. }
  57. if ((new MakeReport())->addTask('guild.memberRegExport', $sql, 'cps'.$this->_adminId)){
  58. return json(['data'=>'','code'=>20000,'msg'=>'报表生成的任务已经提交, 报表生成完成后,会及时通知您,请耐心稍等']);
  59. }else{
  60. return json(['data'=>'','code'=>20013,'msg'=>'报表生成任务不可重复提交,如遇到无法导出情况,建议修改查询条件解除当前状态,提交重新生成报表任务!']);
  61. }
  62. break;
  63. default:
  64. if ($type == 2) {
  65. $list = Db::name('cy_member_channel_game_rel')->alias('mcg')
  66. ->join('cy_game game', 'mcg.game_id = game.id','left')
  67. ->join('cy_members members', 'mcg.member_id = members.id','left')
  68. ->join('nw_member_game_server mgs', 'mcg.member_id=mgs.member_id and mcg.game_id=mgs.game_id','left')
  69. ->join('nw_channel channel', 'mcg.channel_id=channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  70. ->field('mcg.mcgr_id,game.name as game_name,members.username, mgs.servername,mgs.rolename,mgs.rolelevel, mgs.ip,mgs.imeil,FROM_UNIXTIME( members.reg_time ) AS create_time,IFNULL(FROM_UNIXTIME( mgs.update_time),FROM_UNIXTIME( mcg.update_time)) AS login_time,FROM_UNIXTIME( mgs.create_time) AS reg_time,channel.name as channel_name')
  71. ->where($where)
  72. ->where("game.is_default = 0")
  73. ->order('mcg.mcgr_id desc,mgs.mgs_id desc')
  74. ->paginate(['list_rows'=>$list_rows,'page'=>$page])->toArray();
  75. }else{
  76. $list = Db::name('nw_member_game_server')->alias('mgs')
  77. ->join('cy_game game', 'mgs.game_id = game.id','left')
  78. ->join('cy_members members', 'mgs.member_id = members.id','left')
  79. ->join('nw_channel channel', 'mgs.channel_id=channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  80. ->field('mgs.mgs_id,game.name as game_name,members.username,mgs.servername,mgs.rolename,mgs.rolelevel,mgs.ip,mgs.imeil,FROM_UNIXTIME( members.reg_time ) AS create_time,FROM_UNIXTIME( mgs.update_time) AS login_time,FROM_UNIXTIME( mgs.create_time) AS reg_time,channel.NAME AS channel_name ')
  81. ->where($where)
  82. ->where("game.is_default = 0")
  83. ->order('mgs.mgs_id desc')
  84. ->paginate(['list_rows'=>$list_rows,'page'=>$page])->toArray();
  85. }
  86. $gameList = model('Common/Game')->getAllByCondition('id,name',['game_kind'=>2,'cooperation_status'=>['neq',0]],'','self');
  87. $channelList = Db::table('nw_channel')->field('id,name')->where(['level'=>3,'id_path'=>['LIKE', $this->_channelIdPath.'%']])->select();
  88. return json(['data'=>$list,'code'=>20000,'msg'=>'获取数据成功','gameList'=>$gameList,'channelList'=>$channelList]);
  89. break;
  90. }
  91. }
  92. /**************************************************************首页数据*****************************************/
  93. /**
  94. * 首页注册用户统计
  95. */
  96. public function getMemberCount()
  97. {
  98. $type = input('type');
  99. $where = [];
  100. $weekormonth = [];
  101. switch ($type) {
  102. case 'month':
  103. $formdata = '%Y-%m';
  104. $where['mgs.create_time'] = [['>=', strtotime(date("Y",time())."-1"."-1")],['<=', strtotime(date('Y-m-d 23:59:59'))]];
  105. for ($i=1; $i<=7; $i++){
  106. $weekormonth[$i]['date'] = date('Y-m' ,strtotime( '+' . $i-7 .' month'));
  107. $weekormonth[$i]['注册量'] = 0;
  108. }
  109. break;
  110. default:
  111. $formdata = '%Y-%m-%d';
  112. $where['mgs.create_time'] = [['>=', strtotime('-7 days 0:0:0')],['<=', strtotime(date('Y-m-d 23:59:59'))]];
  113. for ($i=1; $i<=7; $i++){
  114. $weekormonth[$i]['date'] = date('Y-m-d' ,strtotime( '+' . $i-7 .' days'));
  115. $weekormonth[$i]['注册量'] = 0;
  116. }
  117. break;
  118. }
  119. $list = [];
  120. $list = Db::name('nw_member_game_server')->alias('mgs')
  121. ->join('cy_game game', 'mgs.game_id = game.id and game.game_kind=2')
  122. ->join('nw_channel channel', 'mgs.channel_id=channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  123. ->field('from_unixtime( mgs.create_time, "'.$formdata.'" ) AS date,count(*) AS counts')
  124. ->where($where)
  125. ->where("game.is_default = 0")
  126. ->group('date ASC')
  127. ->select();
  128. $list = array_column($list, 'counts', 'date');
  129. foreach ($weekormonth as $key => $value) {
  130. if (isset($list[$value['date']])) {
  131. $weekormonth[$key]['注册量'] = $list[$value['date']];
  132. }
  133. }
  134. $result = [];
  135. $result['columns'] = ['date','注册量'];
  136. $result['rows'] = array_values($weekormonth);
  137. return json(['data'=>$result,'code'=>20000,'msg'=>'获取数据成功']);
  138. }
  139. /**
  140. * 首页流水数据统计
  141. */
  142. public function getSumCount()
  143. {
  144. $type = input('type');
  145. $where = [];
  146. $weekormonth = [];
  147. switch ($type) {
  148. case 'month':
  149. $formdata = '%Y-%m';
  150. $where['pay.create_time'] = [['>=', strtotime(date("Y",time())."-1"."-1")],['<=', strtotime(date('Y-m-d 23:59:59'))]];
  151. for ($i=1; $i<=7; $i++){
  152. $weekormonth[$i]['date'] = date('Y-m' ,strtotime( '+' . $i-7 .' month'));
  153. $weekormonth[$i]['流水'] = 0;
  154. }
  155. break;
  156. default:
  157. $formdata = '%Y-%m-%d';
  158. $where['pay.create_time'] = [['>=', strtotime('-7 days 0:0:0')],['<=', strtotime(date('Y-m-d 23:59:59'))]];
  159. for ($i=1; $i<=7; $i++){
  160. $weekormonth[$i]['date'] = date('Y-m-d' ,strtotime( '+' . $i-7 .' days'));
  161. $weekormonth[$i]['流水'] = 0;
  162. }
  163. break;
  164. }
  165. $list = Db::name('cy_pay')->alias('pay')
  166. ->join('nw_channel channel', 'pay.channel_id=channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  167. ->join('cy_game game','pay.gameid=game.id AND game.game_kind=2')
  168. ->field('from_unixtime( pay.create_time, "'.$formdata.'" ) AS date,sum(pay.amount) as counts')
  169. ->where($where)
  170. ->where("game.is_default = 0")
  171. ->where(['pay.status' => 1])
  172. ->group('date ASC')
  173. ->select();
  174. $list = array_column($list, 'counts', 'date');
  175. foreach ($weekormonth as $key => $value) {
  176. if (isset($list[$value['date']])) {
  177. $weekormonth[$key]['流水'] = $list[$value['date']];
  178. }
  179. }
  180. $result = [];
  181. $result['columns'] = ['date','流水'];
  182. $result['rows'] = array_values($weekormonth);
  183. return json(['data'=>$result,'code'=>20000,'msg'=>'获取数据成功']);
  184. }
  185. /**
  186. * 首页推广员数据
  187. */
  188. public function getAgentCount()
  189. {
  190. $type = input('type');
  191. $where = [];
  192. $t_day= date('Y-m-d');//今日日期
  193. $yse_day = date("Y-m-d",strtotime("-1 day"));//昨日日期
  194. if ($type == 'agent') {
  195. $where['members.create_time'] = [['>=', strtotime('-1 days 0:0:0')],['<=', strtotime(date('Y-m-d 23:59:59'))]];
  196. $list = $this->membersGameModel->alias('members')
  197. ->join('nw_channel channel', 'members.channel_id=channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  198. ->join('cy_game game','members.game_id=game.id AND game.game_kind=2')
  199. ->field('count(*) AS counts,channel.name,from_unixtime(members.create_time, "%Y-%m-%d" ) AS date,channel.id')
  200. ->where($where)
  201. ->where("game.is_default = 0")
  202. ->where(['channel.level' => 3 ])
  203. ->group('date,channel.id')
  204. ->order('date')
  205. ->select();
  206. }
  207. if ($type == 'sum') {
  208. $where['pay.create_time'] = [['>=', strtotime('-100 days 0:0:0')],['<=', strtotime(date('Y-m-d 23:59:59'))]];
  209. $list = Db::name('cy_pay')->alias('pay')
  210. ->join('nw_channel channel', 'pay.channel_id=channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  211. ->join('cy_game game','pay.gameid=game.id AND game.game_kind=2')
  212. ->field('sum(pay.amount) as counts,channel.name,from_unixtime(pay.create_time, "%Y-%m-%d" ) AS date,channel.id')
  213. ->where($where)
  214. ->where("game.is_default = 0")
  215. ->where(['channel.level' => 3 ,'pay.status' => 1])
  216. ->group('channel.id,date')
  217. ->order('date')
  218. ->select();
  219. }
  220. $out = [];
  221. foreach ($list as $key => $value) {
  222. $out[$value['id']]['name'] = $value['name'];
  223. empty($out[$value['id']]['tday_counts']) && $out[$value['id']]['tday_counts'] = 0;
  224. empty($out[$value['id']]['ytay_counts']) && $out[$value['id']]['ytay_counts'] = 0;
  225. if ($value['date'] == $t_day) {
  226. $out[$value['id']]['tday_counts'] = $value['counts'];
  227. }elseif ($value['date'] == $yse_day) {
  228. $out[$value['id']]['ytay_counts'] = $value['counts'];
  229. }
  230. }
  231. $last_names = array_column($out,'tday_counts');
  232. array_multisort($last_names,SORT_DESC,$out);
  233. return json(['data'=>$out,'code'=>20000,'msg'=>'获取数据成功']);
  234. }
  235. /****************************************************************************************************************/
  236. /**
  237. * 订单用户列表
  238. */
  239. public function getOrderList()
  240. {
  241. $download = input('download');
  242. $list_rows = input('pageSize',10);
  243. $page = input('page',1);
  244. $where = $this->_getCondition('pay',2);
  245. switch ($download) {
  246. case '1':
  247. $sql = Db::table('cy_pay')->alias('pay')
  248. ->join('cy_game game', 'pay.gameid = game.id')
  249. ->join('nw_channel channel', 'pay.channel_id=channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  250. // ->join('nw_game_server server', 'pay.gameid=server.game_id And pay.serverid = server.serverid','left')
  251. ->field('pay.id,game.name as game_name,pay.username,pay.rolename,pay.amount,pay.paytype,pay.orderid,FROM_UNIXTIME(pay.create_time) as create_time,channel.name as channel_name,pay.servername')
  252. ->where($where)
  253. ->where("game.is_default = 0")
  254. ->order('pay.id desc')
  255. ->fetchSql(true)
  256. ->select();
  257. if ((new MakeReport())->addTask('guild.orderListExport', $sql, 'cps'.$this->_adminId)){
  258. return json(['data'=>'','code'=>20000,'msg'=>'报表生成的任务已经提交, 报表生成完成后,会及时通知您,请耐心稍等']);
  259. }else{
  260. return json(['data'=>'','code'=>20013,'msg'=>'报表生成任务不可重复提交,如遇到无法导出情况,建议修改查询条件解除当前状态,提交重新生成报表任务!']);
  261. }
  262. break;
  263. default:
  264. $list = Db::table('cy_pay')->alias('pay')
  265. ->join('cy_game game', 'pay.gameid = game.id')
  266. ->join('nw_channel channel', 'pay.channel_id=channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  267. // ->join('nw_game_server server', 'pay.gameid=server.game_id And pay.serverid = server.serverid','left')
  268. ->field('pay.id,game.name as game_name,pay.username,pay.rolename,pay.amount,pay.paytype,pay.orderid,FROM_UNIXTIME(pay.create_time) as create_time,channel.name as channel_name,pay.servername')
  269. ->where("game.is_default = 0")
  270. ->where($where)->order('pay.id desc')
  271. ->paginate(['list_rows'=>$list_rows,'page'=>$page])->toArray();
  272. $total_amount = Db::table('cy_pay')->alias('pay')
  273. ->join('cy_game game', 'pay.gameid = game.id')
  274. ->join('nw_channel channel', 'pay.channel_id=channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  275. ->where($where)
  276. ->where("game.is_default = 0")
  277. ->value('sum(pay.amount)');
  278. $gameList = model('Common/Game')->getAllByCondition('id,name',['game_kind'=>2,'cooperation_status'=>['neq',0]],'','self');
  279. $channelList = Db::table('nw_channel')->field('id,name')->where(['level'=>3,'id_path'=>['LIKE', '%,' . $this->_channelId . ',%']])->select();
  280. return json(['data'=>$list,'code'=>20000,'msg'=>'获取数据成功','gameList'=>$gameList,'channelList'=>$channelList,'total_amount'=>$total_amount]);
  281. break;
  282. }
  283. }
  284. /**
  285. * 订单用户列表(汇总)
  286. */
  287. public function getSumOrderList()
  288. {
  289. $download = input('download');//执行类型
  290. $list_rows = input('pageSize',10);
  291. $page = input('page',1);
  292. $where = $this->_getCondition('pay',2);//条件选择func
  293. switch ($download ) {
  294. case '1'://py执行异步导出
  295. $sql = Db::table('cy_pay')->alias('pay')
  296. ->join('cy_game game', 'pay.gameid = game.id')
  297. ->join('nw_channel channel', 'pay.channel_id=channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  298. ->field('sum(pay.amount) as money,game.name as game_name,pay.rolename,pay.username,channel.name as channel_name')
  299. ->where("game.is_default = 0")
  300. ->where($where)->order('pay.create_time desc')
  301. ->group('userid,gameid,roleid')
  302. ->fetchSql(true)
  303. ->select();
  304. if ((new MakeReport())->addTask('guild.orderTotalExport', $sql, 'cps'.$this->_adminId)){
  305. return json(['data'=>'','code'=>20000,'msg'=>'报表生成的任务已经提交, 报表生成完成后,会及时通知您,请耐心稍等']);
  306. }else{
  307. return json(['data'=>'','code'=>20013,'msg'=>'报表生成任务不可重复提交,如遇到无法导出情况,建议修改查询条件解除当前状态,提交重新生成报表任务!']);
  308. }
  309. break;
  310. default://列表展示
  311. $list = Db::table('cy_pay')->alias('pay')
  312. ->join('cy_game game', 'pay.gameid = game.id')
  313. ->join('nw_channel channel', 'pay.channel_id=channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  314. ->field('sum(pay.amount) as money,game.name as game_name,pay.rolename,pay.username,pay.rolename,channel.name as channel_name')
  315. ->where("game.is_default = 0")
  316. ->where($where)->order('pay.create_time desc')
  317. ->group('userid,gameid,roleid')
  318. ->paginate(['list_rows'=>$list_rows,'page'=>$page])->toArray();
  319. return json(['data'=>$list,'code'=>20000,'msg'=>'获取数据成功']);
  320. break;
  321. }
  322. }
  323. /**
  324. * 推广员数据列表(汇总)
  325. */
  326. public function getSumAgentList()
  327. {
  328. $download = input('download');
  329. $list_rows = input('pageSize',10);
  330. $page = input('page',1);
  331. $where = $this->_getCondition('pay',2);
  332. if ($this->_channelLevel == 3 || $this->_channelLevel == 0) {
  333. return json(['data'=>'','code'=>10032,'msg'=>'暂时没有权限查看推广员数据']);
  334. }
  335. switch ($download) {
  336. case '1':
  337. $sql = Db::table('cy_pay')->alias('pay')
  338. ->group('pay.channel_id,pay.gameid')
  339. ->field('sum(pay.amount) as money,game.name as game_name,channel.name as channel_name,channel.id as channel_id,parent.name as p_name')
  340. ->join('cy_game game', 'pay.gameid = game.id')
  341. ->join('nw_channel channel', 'pay.channel_id=channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  342. ->join('nw_channel parent', 'channel.parent_id = parent.id and parent.level = 2','left')
  343. ->where("game.is_default = 0")
  344. ->where($where)->order('pay.create_time desc')
  345. ->fetchSql(true)
  346. ->select();
  347. if ((new MakeReport())->addTask('guild.sumAgentExport', $sql, 'cps'.$this->_adminId)){
  348. return json(['data'=>'','code'=>20000,'msg'=>'报表生成的任务已经提交, 报表生成完成后,会及时通知您,请耐心稍等']);
  349. }else{
  350. return json(['data'=>'','code'=>20013,'msg'=>'报表生成任务不可重复提交,如遇到无法导出情况,建议修改查询条件解除当前状态,提交重新生成报表任务!']);
  351. }
  352. break;
  353. default:
  354. $list = Db::table('cy_pay')->alias('pay')
  355. ->group('pay.channel_id,pay.gameid')
  356. ->field('sum(pay.amount) as money,game.name as game_name,channel.name as channel_name,channel.id as channel_id,parent.name as p_name')
  357. ->join('cy_game game', 'pay.gameid = game.id')
  358. ->join('nw_channel channel', 'pay.channel_id=channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  359. ->join('nw_channel parent', 'channel.parent_id = parent.id and parent.level = 2','left')
  360. ->where("game.is_default = 0")
  361. ->where($where)->order('pay.create_time desc')
  362. ->order('pay.gameid desc')
  363. ->paginate(['list_rows'=>$list_rows,'page'=>$page])->toArray();
  364. $gameList = model('Common/Game')->getAllByCondition('id,name',['game_kind'=>2,'cooperation_status'=>['neq',0]],'','self');
  365. $channelList = Db::table('nw_channel')->field('id,name')->where(['level'=>3,'id_path'=>['LIKE', '%,' . $this->_channelId . ',%']])->select();
  366. return json(['data'=>$list,'code'=>20000,'msg'=>'获取数据成功','gameList'=>$gameList,'channelList'=>$channelList]);
  367. break;
  368. }
  369. }
  370. /**
  371. * 子会长流水数据列表(汇总)
  372. */
  373. public function getSumChlidList()
  374. {
  375. $list_rows = input('pageSize',10);
  376. $page = input('page',1);
  377. $where = $this->_getCondition('chlid',2);
  378. $order_start_time = input('order_start_time');
  379. $order_end_time = input('order_end_time');
  380. $download = input('download');
  381. if (empty($order_start_time) ||empty($order_end_time)) {
  382. return json(['data'=>'','code'=>20040,'msg'=>'请选择开始日期和结束日期']);
  383. }
  384. else if(date('Y-m-d',strtotime($order_start_time))<>$order_start_time || date('Y-m-d',strtotime($order_end_time))<>$order_end_time){
  385. return json(['data'=>'','code'=>20040,'msg'=>'开始/结束日期输入不合法']);
  386. }
  387. switch ($download) {
  388. case '1':
  389. $time = $order_start_time .' - '. $order_end_time;
  390. $sql = Db::table('nw_channel')->alias('c1')
  391. ->group('p.gameid,c2.id')
  392. ->field('p.gameid,c2.id,c2.name,count(*) as total_cnt,sum(p.amount) as total_amount,g.name as gname,"'.$time.'" as time')
  393. ->join('nw_channel c2', 'c1.parent_id = c2.id AND c2.LEVEL = 2 AND c2.id_path LIKE "'.$this->_channelIdPath.'%"')
  394. ->join('cy_pay p', 'c1.id = p.channel_id AND p.status = 1')
  395. ->join('cy_game g', 'p.gameid = g.id')
  396. ->where("g.is_default = 0")
  397. ->where(['c1.level' => 3,'c1.id_path'=>['LIKE', $this->_channelIdPath.'%']])
  398. ->where($where)
  399. ->fetchSql(true)
  400. ->select();
  401. if ((new MakeReport())->addTask('guild.sumChlidExport', $sql, 'cps'.$this->_adminId)){
  402. return json(['data'=>'','code'=>20000,'msg'=>'报表生成的任务已经提交, 报表生成完成后,会及时通知您,请耐心稍等']);
  403. }else{
  404. return json(['data'=>'','code'=>20013,'msg'=>'报表生成任务不可重复提交,如遇到无法导出情况,建议修改查询条件解除当前状态,提交重新生成报表任务!']);
  405. }
  406. break;
  407. default:
  408. $list = Db::table('nw_channel')->alias('c1')
  409. ->group('p.gameid,c2.id')
  410. ->field('p.gameid,c2.id,c2.name,count(*) as total_cnt,sum(p.amount) as total_amount,g.name as gname')
  411. ->join('nw_channel c2', 'c1.parent_id = c2.id AND c2.LEVEL = 2 AND c2.id_path LIKE "'.$this->_channelIdPath.'%"')
  412. ->join('cy_pay p', 'c1.id = p.channel_id AND p.status = 1')
  413. ->join('cy_game g', 'p.gameid = g.id')
  414. ->where("g.is_default = 0")
  415. ->where(['c1.level' => 3,'c1.id_path'=>['LIKE', $this->_channelIdPath.'%']])
  416. ->where($where)
  417. ->paginate(['list_rows'=>$list_rows,'page'=>$page])->toArray();
  418. $gameList = model('Common/Game')->getAllByCondition('id,name',['game_kind'=>2,'cooperation_status'=>['neq',0]],'','self');
  419. $channelList = Db::table('nw_channel')->field('id,name')->where(['level'=>2,'id_path'=>['LIKE', '%,'.$this->_channelId . ',%']])->select();
  420. return json(['data'=>$list,'code'=>20000,'msg'=>'获取数据成功','gameList'=>$gameList,'channelList'=>$channelList]);
  421. break;
  422. }
  423. }
  424. /************************************************联盟数据/报表**************************************/
  425. /**
  426. * 联盟流水数据列表(汇总)
  427. */
  428. public function getSumUnionList()
  429. {
  430. $download = input('download');
  431. if ($this->_channelLevel !== 0) {
  432. return json(['data'=>'','code'=>20013,'msg'=>'只有联盟有查看权限!']);
  433. }
  434. $list_rows = input('pageSize',10,'intval');
  435. $page = input('page',1,'intval');
  436. $order_start_time = input('order_start_time','','trim');
  437. $order_end_time = input('order_end_time','','trim');
  438. $where = $this->_getCondition('chlid',2);
  439. if (empty($order_start_time) ||empty($order_end_time)) {
  440. return json(['data'=>'','code'=>20040,'msg'=>'请选择开始日期和结束日期']);
  441. }
  442. else if(date('Y-m-d',strtotime($order_start_time))<>$order_start_time || date('Y-m-d',strtotime($order_end_time))<>$order_end_time){
  443. return json(['data'=>'','code'=>20040,'msg'=>'开始/结束日期输入不合法']);
  444. }
  445. switch ($download) {
  446. case '1':
  447. $time = $order_start_time .' 00:00:00 - '. $order_end_time.' 23:59:59';
  448. $sql = Db::table('nw_channel')->alias('c1')
  449. ->group('p.gameid,c2.id')
  450. ->field('p.gameid,c2.id,c2.name,count(*) as total_cnt,sum(p.amount) as total_amount,g.name as gname,"'.$time.'" as time')
  451. ->join('nw_channel c2', 'c1.id_path like CONCAT("'.$this->_channelIdPath.'",c2.id,",%") AND c2.LEVEL = 1 AND c2.id_path LIKE "'.$this->_channelIdPath.'%"')
  452. ->join('cy_pay p', 'c1.id = p.channel_id AND p.status = 1')
  453. ->join('cy_game g', 'p.gameid = g.id')
  454. ->where("g.is_default = 0")
  455. ->where(['c1.level' => 3,'c1.id_path'=>['LIKE', $this->_channelIdPath.'%']])
  456. ->where($where)
  457. ->fetchSql(true)
  458. ->select();
  459. if ((new MakeReport())->addTask('guild.sumUnionExport', $sql, 'cps'.$this->_adminId)){
  460. return json(['data'=>'','code'=>20000,'msg'=>'报表生成的任务已经提交, 报表生成完成后,会及时通知您,请耐心稍等']);
  461. }else{
  462. return json(['data'=>'','code'=>20013,'msg'=>'报表生成任务不可重复提交,如遇到无法导出情况,建议修改查询条件解除当前状态,提交重新生成报表任务!']);
  463. }
  464. break;
  465. default:
  466. $list = Db::table('nw_channel')->alias('c1')
  467. ->group('p.gameid,c2.id')
  468. ->field('p.gameid,c2.id,c2.name,count(*) as total_cnt,sum(p.amount) as total_amount,g.name as gname')
  469. ->join('nw_channel c2', 'c1.id_path like CONCAT("'.$this->_channelIdPath.'",c2.id,",%") AND c2.LEVEL = 1 AND c2.id_path LIKE "'.$this->_channelIdPath.'%"')
  470. ->join('cy_pay p', 'c1.id = p.channel_id AND p.status = 1')
  471. ->join('cy_game g', 'p.gameid = g.id')
  472. ->where("g.is_default = 0")
  473. ->where(['c1.level' => 3,'c1.id_path'=>['LIKE', $this->_channelIdPath.'%']])
  474. ->where($where)
  475. ->paginate(['list_rows'=>$list_rows,'page'=>$page])->toArray();
  476. $total_amount = Db::table('nw_channel')->alias('c1')
  477. ->join('nw_channel c2', 'c1.id_path like CONCAT("'.$this->_channelIdPath.'",c2.id,",%") AND c2.LEVEL = 1 AND c2.id_path LIKE "'.$this->_channelIdPath.'%"')
  478. ->join('cy_pay p', 'c1.id = p.channel_id AND p.status = 1')
  479. ->join('cy_game g', 'p.gameid = g.id')
  480. ->where("g.is_default = 0")
  481. ->where(['c1.level' => 3,'c1.id_path'=>['LIKE', $this->_channelIdPath.'%']])
  482. ->where($where)
  483. ->value('sum(p.amount)');
  484. $gameList = model('Common/Game')->getAllByCondition('id,name',['game_kind'=>2,'cooperation_status'=>['neq',0]],'','self');
  485. $channelList = Db::table('nw_channel')->field('id,name')->where(['level'=>1,'id_path'=>['LIKE', '%,' . $this->_channelId . ',%']])->select();
  486. return json(['data'=>$list,'code'=>20000,'msg'=>'获取数据成功','gameList'=>$gameList,'channelList'=>$channelList,'total_amount'=>$total_amount]);
  487. break;
  488. }
  489. }
  490. /**
  491. * 联盟新增数据列表(汇总)
  492. */
  493. public function getAddUnionList()
  494. {
  495. $download = input('download',0,'intval');
  496. if ($this->_channelLevel !== 0) {
  497. return json(['data'=>'','code'=>20013,'msg'=>'只有联盟有查看权限!']);
  498. }
  499. $list_rows = input('pageSize',10);
  500. $page = input('page',1);
  501. $reg_start_time = input('reg_start_time');
  502. $reg_end_time = input('reg_end_time');
  503. $where = $this->_getCondition('uniadd',2);
  504. if (empty($reg_start_time) ||empty($reg_end_time)) {
  505. return json(['data'=>'','code'=>20040,'msg'=>'请选择开始日期和结束日期']);
  506. }
  507. else if(date('Y-m-d',strtotime($reg_start_time))<>$reg_start_time || date('Y-m-d',strtotime($reg_end_time))<>$reg_end_time){
  508. return json(['data'=>'','code'=>20040,'msg'=>'开始/结束日期输入不合法']);
  509. }
  510. if ($download) {
  511. $time = $reg_start_time .' - '. $reg_end_time;
  512. $sql = Db::name('nw_member_game_server')->alias('mgs')
  513. ->group('mgs.game_id,b.id')
  514. ->join('nw_channel c', 'mgs.channel_id=c.id')
  515. ->join('cy_game g', 'mgs.game_id = g.id')
  516. ->join('nw_channel b', 'c.id_path like CONCAT("'.$this->_channelIdPath.'",b.id,",%") AND b.LEVEL = 1 AND b.id_path LIKE "'.$this->_channelIdPath.'%"')
  517. ->field('mgs_id,b.id,b.name,count(*) AS total_cnt,g.NAME AS gname,"'.$time.'" as time')
  518. ->where("g.is_default = 0")
  519. ->where(['c.level' => 3,'c.id_path'=>['LIKE', $this->_channelIdPath.'%']])
  520. ->where($where)
  521. ->order('mgs.mgs_id desc')
  522. ->fetchSql(true)
  523. ->select();
  524. if ((new MakeReport())->addTask('guild.addUnionExport', $sql, 'cps'.$this->_adminId)){
  525. return json(['data'=>'','code'=>20000,'msg'=>'报表生成的任务已经提交, 报表生成完成后,会及时通知您,请耐心稍等']);
  526. }else{
  527. return json(['data'=>'','code'=>20013,'msg'=>'报表生成任务不可重复提交,如遇到无法导出情况,建议修改查询条件解除当前状态,提交重新生成报表任务!']);
  528. }
  529. }else{
  530. $list = Db::name('nw_member_game_server')->alias('mgs')
  531. ->group('mgs.game_id,b.id')
  532. ->join('nw_channel c', 'mgs.channel_id=c.id')
  533. ->join('cy_game g', 'mgs.game_id = g.id')
  534. ->join('nw_channel b', 'c.id_path like CONCAT("'.$this->_channelIdPath.'",b.id,",%") AND b.LEVEL = 1 AND b.id_path LIKE "'.$this->_channelIdPath.'%"')
  535. ->field('mgs_id,b.id,b.name,count(*) AS total_cnt,g.NAME AS gname')
  536. ->where(['c.level' => 3,'c.id_path'=>['LIKE', $this->_channelIdPath.'%']])
  537. ->where("g.is_default = 0")
  538. ->where($where)
  539. ->order('mgs.mgs_id desc')
  540. ->paginate(['list_rows'=>$list_rows,'page'=>$page])->toArray();
  541. $gameList = model('Common/Game')->getAllByCondition('id,name',['game_kind'=>2,'cooperation_status'=>['neq',0]],'','self');
  542. $channelList = Db::table('nw_channel')->field('id,name')->where(['level'=>1,'id_path'=>['LIKE', '%,' . $this->_channelId . ',%']])->select();
  543. return json(['data'=>$list,'code'=>20000,'msg'=>'获取数据成功','gameList'=>$gameList,'channelList'=>$channelList]);
  544. }
  545. }
  546. /************************************************end**************************************/
  547. /**
  548. * 区服数据列表(汇总)
  549. */
  550. public function getSumServerList()
  551. {
  552. $list_rows = input('pageSize',10);
  553. $page = input('page',1);
  554. $gameid = input('gameid', 0, 'intval');//游戏id
  555. $serverid = input('serverid');//区服id
  556. $time_start = input('time_start', '', 'trim');//时间起始
  557. $time_end = input('time_end', '', 'trim');//时间结束
  558. $where = [];
  559. $where['g.game_kind'] = 2;
  560. if (! empty($gameid)) {
  561. $where['sever.game_id'] = $gameid;
  562. }
  563. if (! empty($serverid)) {
  564. $where['sever.serverid'] = $serverid;
  565. }
  566. if (! empty($time_start) && ! empty($time_end)) {
  567. $where['sever.create_time'] = ['BETWEEN', [strtotime($time_start),strtotime($time_end)]];
  568. }
  569. $list = Db::table('nw_game_server')->alias('sever')
  570. ->field('sever.game_id,sever.serverid,count( DISTINCT role.member_id ) AS reg_count,g.name as gamename,sever.servername,role.channel_id')
  571. ->group('sever.game_id,sever.serverid')
  572. ->join('nw_member_game_server role', 'sever.game_id = role.game_id AND sever.serverid = role.serverid')
  573. ->join('cy_game g', 'sever.game_id = g.id')
  574. ->join('nw_channel channel', 'channel.id = role.channel_id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  575. ->where("g.is_default = 0")
  576. ->where($where)
  577. ->paginate(['list_rows'=>$list_rows,'page'=>$page])->toArray();
  578. foreach ($list['data'] as $key => $value) {
  579. $res = $this->getOtherItem($value['serverid'],$value['game_id'],$time_start,$time_end);
  580. $list['data'][$key]['ip_cnt'] = $res['ip_cnt']['ip'];
  581. $list['data'][$key]['im_cnt'] = $res['im_cnt']['im'];
  582. $list['data'][$key]['money'] = $res['pay_cnt']['money'];
  583. }
  584. $gameList = model('Common/Game')->getAllByCondition('id,name',['game_kind'=>2,'cooperation_status'=>['neq',0]],'','self');
  585. // $channelList = Db::table('nw_channel')->field('id,name')->where(['level'=>3,'id_path'=>['LIKE', $this->_channelId . ',%']])->select();
  586. return json(['data'=>$list,'code'=>20000,'msg'=>'获取数据成功','gameList'=>$gameList]);
  587. }
  588. /**
  589. * 游戏角色列表
  590. * @return [type] [description]
  591. */
  592. public function getRoleList()
  593. {
  594. $list_rows = input('pageSize',10);
  595. $page = input('page',1);
  596. $gameid = input('gameid', 0, 'intval');//游戏id
  597. $download = input('download',0,'intval');
  598. $where = [];
  599. if (empty($gameid)) {
  600. return json(['data'=>[],'code'=>10001,'msg'=>'请选择游戏']);
  601. } else {
  602. $where['game.id'] = $gameid;
  603. }
  604. if (input('username') <> '') {
  605. $where['user.username'] = ['LIKE', input('username') . '%'];
  606. }
  607. if (input('rolename') <> '') {
  608. $where['info.rolename'] = ['LIKE', input('rolename') . '%'];
  609. }
  610. if ($download) {
  611. $sql = Db::table('cy_role_info')->alias('info')
  612. ->join('cy_members user', 'info.userid = user.id')
  613. ->join('cy_game game', 'game.id = info.gameid')
  614. ->join('cy_member_channel_game_rel mcgr', 'info.userid = mcgr.member_id')
  615. ->join('nw_channel channel', 'mcgr.channel_id = channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  616. ->field(['game.name', 'user.username', 'info.serverid','info.servername', 'info.roleid','info.rolename', 'info.rolelevel', 'info.create_time'])
  617. ->where($where)
  618. ->fetchSql(1)
  619. ->order('info.id', 'desc')->find();
  620. if ((new MakeReport())->addTask('guild.getRoleExport', $sql, 'cps'.$this->_adminId)){
  621. return json(['data'=>'','code'=>20000,'msg'=>'报表生成的任务已经提交, 报表生成完成后,会及时通知您,请耐心稍等']);
  622. }else{
  623. return json(['data'=>'','code'=>20013,'msg'=>'报表生成任务不可重复提交,如遇到无法导出情况,建议修改查询条件解除当前状态,提交重新生成报表任务!']);
  624. }
  625. }else{
  626. $roleList = Db::table('cy_role_info')->alias('info')
  627. ->join('cy_members user', 'info.userid = user.id')
  628. ->join('cy_game game', 'game.id = info.gameid')
  629. ->join('cy_member_channel_game_rel mcgr', 'info.userid = mcgr.member_id')
  630. ->join('nw_channel channel', 'mcgr.channel_id = channel.id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  631. ->field(['game.name', 'user.username', 'info.serverid','info.servername', 'info.roleid','info.rolename', 'info.rolelevel', ' FROM_UNIXTIME(info.create_time) AS create_time'])
  632. ->where($where)
  633. ->order('info.id', 'desc')
  634. ->paginate(['list_rows'=>$list_rows,'page'=>$page])->toArray();
  635. return json(['data'=>$roleList,'code'=>20000,'msg'=>'获取数据成功']);
  636. }
  637. }
  638. /**
  639. * Undocumented function
  640. *
  641. * @Author yxon 564556921@qq.com
  642. * @DateTime 2020-11-30
  643. * @return void
  644. */
  645. public function gameList()
  646. {
  647. $gameList = model('Common/Game')->getAllByCondition('id,name',['game_kind'=>2,'cooperation_status'=>['neq',0]],'','self');
  648. return json(['gameList'=>$gameList,'code'=>20000,'msg'=>'获取数据成功',]);
  649. }
  650. /**
  651. * [getOtherItem description]
  652. * @param [type] $severid [description]
  653. * @return [type] [description]
  654. */
  655. protected function getOtherItem($severid,$gameid,$time_start = null,$time_end = null)
  656. {
  657. $where = [];
  658. if (! empty($time_start) && ! empty($time_end)) {
  659. $where['create_time'] = ['BETWEEN', [strtotime($time_start),strtotime($time_end)]];
  660. }
  661. $out = [];
  662. $out['ip_cnt'] = Db::name('nw_game_server_ip')->alias('server')//ip数量统计
  663. ->field('count(DISTINCT ip) as ip')
  664. ->join('nw_channel channel', 'channel.id = server.channel_id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  665. ->where($where)->where(['serverid'=>$severid,'game_id'=>$gameid])
  666. ->find();
  667. $out['im_cnt'] = Db::name('nw_game_server_imeil')->alias('server')//im数量统计
  668. ->field('count(DISTINCT imeil) as im')
  669. ->join('nw_channel channel', 'channel.id = server.channel_id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  670. ->where($where)->where(['serverid'=>$severid,'game_id'=>$gameid])
  671. ->find();
  672. $out['pay_cnt'] = Db::name('cy_pay')->alias('pay')
  673. ->field('COALESCE(sum(pay.amount),0) as money')
  674. ->join('nw_channel channel', 'channel.id = pay.channel_id AND (channel.id='.$this->_channelId.' or channel.id_path like "'.$this->_channelIdPath.'%")')
  675. ->where($where)->where(['serverid'=>$severid,'gameid'=>$gameid,'pay.status'=>1])
  676. ->find();
  677. return $out;
  678. }
  679. // 公共搜索条件
  680. protected function _getCondition($action = null,$game_kind = 2)
  681. {
  682. $gameid = input('gameid', 0, 'intval');//游戏id
  683. $channelid = input('channelid', 0, 'intval');//推广员id
  684. $username = input('username', '', 'trim');//账号
  685. $pay_tpye = input('pay_tpye');//支付类型
  686. $orderid = input('orderid');//订单id
  687. $serverid = input('serverid');//区服id
  688. $rolename = input('rolename', '', 'trim');//账号
  689. $login_start_time = input('login_start_time', '', 'trim');//登录时间起始
  690. $login_end_time = input('login_end_time', '', 'trim');//登录时间结束
  691. $reg_start_time = input('reg_start_time', '', 'trim');//注册时间起始
  692. $reg_end_time = input('reg_end_time', '', 'trim');//注册时间结束
  693. $order_start_time = input('order_start_time', '', 'trim');//订单创建时间开始
  694. $order_end_time = input('order_end_time', '', 'trim');//订单创建时间结束
  695. $condition = [];
  696. if ($action == 'members') {
  697. if (input('username') <> '') {
  698. $condition['members.username'] = ['LIKE', '%' . $username . '%'];
  699. }
  700. $condition['game.game_kind'] = $game_kind;
  701. if (! empty($channelid)) {
  702. $condition['mgs.channel_id'] = $channelid;
  703. }
  704. if (! empty($serverid)) {
  705. $condition['mgs.serverid'] = $serverid;
  706. }
  707. if (input('rolename') <> '') {
  708. $condition['mgs.rolename'] = ['LIKE', '%' . $rolename . '%'];;
  709. }
  710. if (! empty($gameid)) {
  711. $condition['mgs.game_id'] = $gameid;
  712. }
  713. if (! empty($login_start_time) && ! empty($login_end_time)) {
  714. $condition['mgs.update_time'] = ['BETWEEN', [strtotime($login_start_time),strtotime($login_end_time.' 23:59:59')]];
  715. }
  716. if (! empty($reg_start_time) && ! empty($reg_end_time)) {
  717. $condition['members.reg_time'] = ['BETWEEN', [strtotime($reg_start_time),strtotime($reg_end_time.' 23:59:59')]];
  718. }
  719. }
  720. else if ($action == 'pay') {
  721. $condition['pay.status'] = 1;
  722. if (! empty($gameid)) {
  723. $condition['pay.gameid'] = $gameid;
  724. }
  725. $condition['game.game_kind'] = $game_kind;
  726. if (! empty($username) || $username === '0') {
  727. $condition['pay.username'] = ['LIKE', '%' . $username . '%'];
  728. }
  729. if (! empty($serverid)) {
  730. $condition['pay.serverid'] = $serverid;
  731. }
  732. if (! empty($pay_tpye)) {
  733. switch ($pay_tpye) {
  734. case 'zfb':
  735. $condition['pay.paytype'] = ['IN',['zfb','zfb-h5-mihua','zfb-h5-kj']];
  736. break;
  737. case 'wxpay':
  738. $condition['pay.paytype'] = ['IN',['wxpay-h5','wxpay-h5-mihua','wxpay-h5-kj','wxpay-h5-sumpay']];
  739. break;
  740. case 'ptb':
  741. $condition['pay.paytype'] = $pay_tpye;
  742. break;
  743. case 'zfbpay-hh':
  744. $condition['pay.paytype'] = ['IN',['mix-zfb','mix-zfb-h5-mihua','mix-zfb-h5-kj']];
  745. break;
  746. case 'wxpay-hh':
  747. $condition['pay.paytype'] = ['IN',['mix-wxpay-h5','mix-wxpay-h5-mihua','mix-wxpay-h5-kj','mix-wxpay-h5-sumpay']];
  748. break;
  749. default:
  750. $condition['pay.paytype'] = $pay_tpye;
  751. break;
  752. }
  753. }
  754. if (! empty($channelid)) {
  755. $condition['pay.channel_id'] = $channelid;
  756. }
  757. if (! empty($orderid)) {
  758. $condition['pay.orderid'] = ['LIKE', '%' . $orderid . '%'];
  759. }
  760. if (! empty($order_start_time) && ! empty($order_end_time)) {
  761. $condition['pay.create_time'] = ['BETWEEN', [strtotime($order_start_time),strtotime($order_end_time.' 23:59:59')]];
  762. }
  763. }
  764. else if ($action == 'chlid') {
  765. if (! empty($gameid)) {
  766. $condition['g.id'] = $gameid;
  767. }
  768. $condition['g.game_kind'] = $game_kind;
  769. if (! empty($channelid)) {
  770. $condition['c2.id'] = $channelid;
  771. }
  772. if (! empty($order_start_time) && ! empty($order_end_time)) {
  773. $condition['p.create_time'] = ['BETWEEN', [strtotime($order_start_time),strtotime($order_end_time.' 23:59:59')]];
  774. }
  775. }
  776. else if ($action == 'add') {
  777. if (! empty($gameid)) {
  778. $condition['g.id'] = $gameid;
  779. }
  780. if (! empty($channelid)) {
  781. $condition['b.id'] = $channelid;
  782. }
  783. if (! empty($reg_start_time) && ! empty($reg_end_time)) {
  784. $condition['member.mcgr_createtime'] = ['BETWEEN', [strtotime($reg_start_time),strtotime($reg_end_time .' 23:59:59')]];
  785. }
  786. }
  787. else if ($action == 'uniadd') {
  788. if (! empty($gameid)) {
  789. $condition['g.id'] = $gameid;
  790. }
  791. $condition['g.game_kind'] = $game_kind;
  792. if (! empty($channelid)) {
  793. $condition['b.id'] = $channelid;
  794. }
  795. if (! empty($reg_start_time) && ! empty($reg_end_time)) {
  796. $condition['mgs.create_time'] = ['BETWEEN', [strtotime($reg_start_time),strtotime($reg_end_time .' 23:59:59')]];
  797. }
  798. }
  799. return $condition;
  800. }
  801. }