Member.php_202203161728 46 KB

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