Game.php.bak 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613
  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\model\GamePoint;
  10. use GuzzleHttp\Client;
  11. use app\common\model\ServerInfo;
  12. class Game extends Guild
  13. {
  14. protected $_model;
  15. protected $_channelId;
  16. // 特殊处理的 IOS游戏id 数组
  17. protected $gameIOS;
  18. // 游戏平台
  19. protected $_platform = [
  20. 0 => '安卓',
  21. 1 => 'IOS'
  22. ];
  23. // 游戏状态
  24. protected $_status = [
  25. 0 => ['index'=>1,'value'=>'正常'],
  26. 1 => ['index'=>2,'value'=>'白名单'],
  27. // 3 => '下架',
  28. ];
  29. //新闻类型
  30. protected $_type = [
  31. 1 => '资讯',
  32. 2 => '麻花网络',
  33. 3 => '评测',
  34. 4 => '攻略',
  35. 5 => '视频',
  36. 6 => '活动',
  37. 7 => '更新',
  38. 8 => '新闻',
  39. 9 => '充值活动'
  40. ];
  41. // todo 显示的新闻类型
  42. private $_newsType
  43. = array(
  44. 6 => '活动' ,
  45. 7 => '更新' ,
  46. 8 => '新闻' ,
  47. 9 => '充值活动'
  48. );
  49. private $_newsTypeList = ['6','7','8','9'];
  50. // 游戏等级
  51. protected $gameLevel = ['S' , 'A1' , 'A2' , 'B1' , 'B2' , 'B3' , 'B4' , 'C' , 'D'];
  52. protected function _initialize()
  53. {
  54. parent::_initialize();
  55. $this->_model = model('Game');
  56. $guildInfo = session('guild_info');
  57. $this->_channelId = $guildInfo['channel_id'];
  58. $this->_level = $guildInfo['level'];
  59. $this->gameIOS = config('gameIOS');
  60. }
  61. /**
  62. * 获取游戏列表
  63. * @return [type] [description]
  64. */
  65. public function getGameList()
  66. {
  67. $page = input('page',1);
  68. $pageSize = input('pageSize',10);
  69. $where = $this->_getCondition();
  70. $exist_game = Db::name('cy_sdkgamelist')->where(['channel_id'=>$this->_channelId])->column('gameid');
  71. $apply_game = Db::name('nw_game_package_apply')->where(['channel_id'=>$this->_channelId,'apply_status'=>0])->column('game_id');//白名单申请列表
  72. $list = $this->_model->alias('game')
  73. ->join('cy_gameinfo info', 'game.id = info.game_id')
  74. ->join('nw_game_channel_divide devide','game.id = devide.game_id and devide.channel_id = '.$this->_channelId,'left')
  75. ->field(['game.id', 'game.name', 'info.mobileicon', 'game.type', 'game.subject', 'game.cooperation_status','info.platform','game.pinyin','ratio'])
  76. ->where($where)
  77. ->where("game.is_default = 0 and game.cooperation_status != 3")
  78. ->where(['game.id'=>['not in',$exist_game]])
  79. ->order('game.id desc')
  80. ->paginate($pageSize,false,['page'=>$page])->toArray();
  81. if ($list['data']) {
  82. foreach ($list['data'] as $key => $value) {//在申请表的话并且状态是申请中 0 吧对应的游戏状态改成4
  83. $list['data'][$key]['cooperation_status'] = in_array($value['id'],$apply_game)?'apply':$list['data'][$key]['cooperation_status'];
  84. if (empty($list['data'][$key]['ratio'])) {
  85. $list['data'][$key]['ratio'] = db::name('cy_game')->where(['id'=>$value['id']])->value('channel_split_ratio');
  86. }
  87. }
  88. }
  89. return json(['data'=>$list,'code'=>20000,'msg'=>'获取游戏列表成功']);
  90. // switch ($this->_level) {
  91. // case '3':
  92. // $exist_game = Db::name('cy_sdkgamelist')->where(['channel_id'=>$this->_channelId])->column('gameid');
  93. // $apply_game = Db::name('nw_game_package_apply')->where(['channel_id'=>$this->_channelId,'apply_status'=>0])->column('game_id');//白名单申请列表
  94. // $list = $this->_model->alias('game')
  95. // ->join('cy_gameinfo info', 'game.id = info.game_id')
  96. // ->field(['game.id', 'game.name', 'info.mobileicon', 'game.type', 'game.subject', 'game.cooperation_status','info.platform','game.pinyin'])
  97. // ->where($where)
  98. // ->where("game.is_default = 0 and game.cooperation_status != 3")
  99. // ->where(['game.id'=>['not in',$exist_game]])
  100. // ->order('game.id desc')
  101. // ->paginate($pageSize,false,['page'=>$page])->toArray();
  102. // if ($list['data']) {
  103. // foreach ($list['data'] as $key => $value) {//在申请表的话并且状态是申请中 0 吧对应的游戏状态改成4
  104. // $list['data'][$key]['cooperation_status'] = in_array($value['id'],$apply_game)?'apply':$list['data'][$key]['cooperation_status'];
  105. // }
  106. // }
  107. // return json(['data'=>$list,'code'=>20000,'msg'=>'获取游戏列表成功']);
  108. // break;
  109. // case '1':
  110. // $list = $this->_model->alias('game')
  111. // ->join('cy_gameinfo info', 'game.id = info.game_id')
  112. // ->join('nw_game_channel_divide devide','game.id = devide.game_id and devide.channel_id = '.$this->_channelId,'left')
  113. // ->field(['game.id', 'game.name', 'info.mobileicon', 'game.type', 'game.subject', 'game.cooperation_status','info.platform','game.pinyin','ratio'])
  114. // ->where($where)
  115. // ->where("game.is_default = 0 and game.cooperation_status != 3")
  116. // ->order('game.id desc')
  117. // ->paginate($pageSize,false,['page'=>$page])->toArray();
  118. // if (!empty($list['data']) ) {
  119. // foreach ($list['data'] as $key => $value) {
  120. // if (empty($list['data'][$key]['ratio'])) {
  121. // $list['data'][$key]['ratio'] = db::name('cy_game')->where(['id'=>$value['id']])->value('channel_split_ratio');
  122. // }
  123. // }
  124. // }
  125. // return json(['data'=>$list,'code'=>20000,'msg'=>'获取游戏列表成功']);
  126. // break;
  127. // default:
  128. // $list = $this->_model->alias('game')
  129. // ->join('cy_gameinfo info', 'game.id = info.game_id')
  130. // ->field(['game.id', 'game.name', 'info.mobileicon', 'game.type', 'game.subject', 'game.cooperation_status','info.platform','game.pinyin'])
  131. // ->where($where)
  132. // ->where("game.is_default = 0 and game.cooperation_status != 3")
  133. // ->order('game.id desc')
  134. // ->paginate($pageSize,false,['page'=>$page])->toArray();
  135. // return json(['data'=>$list,'code'=>20000,'msg'=>'获取游戏列表成功']);
  136. // break;
  137. // }
  138. }
  139. /**
  140. * 获取搜索菜单列表
  141. * @param string $value [description]
  142. */
  143. public function getGameMenu()
  144. {
  145. $meue = [];
  146. $meue['game_platform'] = $this->_platform;
  147. $meue['game_status'] = $this->_status;
  148. $meue['game_type'] = $this->_getType();
  149. $meue['game_subject'] = $this->_getSubject();
  150. $meue['game_list'] = $this->gameList();
  151. return json(['data'=>$meue,'code'=>20000,'msg'=>'获取搜索菜单列表成功']);
  152. }
  153. /**
  154. * 我的游戏链接read
  155. * @param string $value [description]
  156. */
  157. public function myGameLink()
  158. {
  159. $page = input('page',1);
  160. $pageSize = input('pageSize',10);
  161. $platform = input('platform');
  162. $level = input('level');//账号类型
  163. $gameName = input('gameName', '', 'trim');
  164. $accountName = input('accountName', '', 'trim');
  165. $condition = [];
  166. $condition['game.game_kind'] = 1;
  167. if (is_numeric($platform)) {
  168. $condition['info.platform'] = (int)$platform;
  169. }
  170. if (! empty($gameName)) {
  171. $condition['game.name'] = ['LIKE', '%' . $gameName . '%'];
  172. }
  173. if (! empty($accountName)) {
  174. $level == 2 && $condition['p_channel.name'] = ['LIKE', $accountName . '%'];
  175. $level == 3 && $condition['channel.name'] = ['LIKE', $accountName . '%'];
  176. }
  177. $account_level = Db::name('nw_channel')->where(['id' => $this->_channelId])->value('level');
  178. switch ($account_level) {
  179. case '1'://B账号
  180. $list = model('SdkGameList')->alias('sdk')
  181. ->join('cy_game game', 'game.id = sdk.gameid AND game.cooperation_status != 3 AND (game.is_default = 0)')
  182. ->join('cy_gameinfo info', 'game.id = info.game_id', 'left')
  183. ->join('nw_channel channel', 'sdk.channel_id = channel.id', 'left')
  184. ->join('nw_channel p_channel', 'channel.parent_id = p_channel.id AND p_channel.level = 2', 'left')
  185. ->field(
  186. [
  187. 'game.id', 'game.name', 'info.mobileicon','game.pinyin','info.platform',
  188. 'sdk.id' => 'sdk_id','sdk.filename', 'sdk.update_time', 'sdk.upload_status','sdk.package_type','sdk.channel_id','channel.name' =>'c_name','p_channel.name'=>'b_name','sdk.remark','game.pinyin'
  189. ]
  190. )
  191. ->where(['channel.id_path' => ['LIKE', '%,' . $this->_channelId . ',%']])
  192. ->where($condition)
  193. ->order('sdk.update_time desc')
  194. ->paginate(['list_rows'=>$pageSize,'page'=>$page])->toArray();
  195. break;
  196. case '2'://B-
  197. $list = model('SdkGameList')->alias('sdk')
  198. ->join('cy_game game', 'game.id = sdk.gameid AND game.cooperation_status != 3 AND (game.is_default = 0)')
  199. ->join('cy_gameinfo info', 'game.id = info.game_id', 'left')
  200. ->join('nw_channel channel', 'sdk.channel_id = channel.id', 'left')
  201. ->field(
  202. [
  203. 'game.id', 'game.name', 'info.mobileicon','game.pinyin','info.platform',
  204. 'sdk.id' => 'sdk_id','sdk.filename', 'sdk.update_time', 'sdk.upload_status','sdk.package_type','sdk.channel_id','channel.name' =>'c_name','sdk.remark','game.pinyin'
  205. ]
  206. )
  207. ->where(['channel.id_path' => ['LIKE', '%,' . $this->_channelId . ',%']])
  208. ->where($condition)
  209. ->order('sdk.update_time desc')
  210. ->paginate(['list_rows'=>$pageSize,'page'=>$page])->toArray();
  211. break;
  212. case '3'://C
  213. $list = model('SdkGameList')->alias('sdk')
  214. ->join('cy_game game', 'game.id = sdk.gameid AND game.cooperation_status != 3 AND (game.is_default = 0)')
  215. ->join('cy_gameinfo info', 'game.id = info.game_id', 'left')
  216. ->join('nw_channel channel', 'sdk.channel_id = channel.id', 'left')
  217. ->field(
  218. [
  219. 'game.id', 'game.name', 'info.mobileicon','game.pinyin','info.platform',
  220. 'sdk.id' => 'sdk_id','sdk.filename', 'sdk.update_time', 'sdk.upload_status','sdk.package_type','sdk.channel_id','channel.name' =>'c_name','sdk.remark','game.pinyin'
  221. ]
  222. )
  223. ->where('channel.id = '.$this->_channelId)
  224. ->where($condition)
  225. ->order('sdk.update_time desc')
  226. ->paginate(['list_rows'=>$pageSize,'page'=>$page])->toArray();
  227. break;
  228. default:
  229. $list = [];
  230. break;
  231. }
  232. if (!isset($list['data'])) {
  233. return json(['data'=>$list,'code'=>10038,'msg'=>'暂无数据']);
  234. }
  235. foreach ($list['data'] as $key => $value) {
  236. $short_link = db('nw_promotion_short_link')->where(['game_id'=>$value['id'],'channel_id'=>$value['channel_id'],'package_type'=>$value['package_type']])->value('short_link');
  237. if (!empty($short_link)) {
  238. $share_url = API_DOMAIN.'/'.$short_link;
  239. }else{
  240. $share_url = API_DOMAIN.'/game_promotion/index/game_id/'.$value['id'].'/channel_id/'.$value['channel_id'].'/package_type/'.$value['package_type'];
  241. }
  242. $list['data'][$key]['down_url'] = APK_DOWN_DOMAIN.'/sygame/'.$value['pinyin'].'/'.$value['filename'];
  243. $list['data'][$key]['share_url'] = $share_url;
  244. if ($value['upload_status'] == 0) {
  245. $list['data'][$key]['upload_status'] = time() - $value['update_time'] >= PACKAGE_TIME_OUT?2:0;
  246. }
  247. }
  248. return json(['data'=>$list,'code'=>20000,'msg'=>'获取游戏列表成功']);
  249. }
  250. /**
  251. * 批量注册列表
  252. * @param string $value [description]
  253. */
  254. public function myBatchLog()
  255. {
  256. $page = input('page',1);
  257. $list_rows = input('pageSize',10);
  258. $gameid = input('gameid');
  259. $status = input('status');
  260. $create_time = input('create_time');
  261. $where = [];
  262. if (! empty($gameid)) {
  263. $where['log.game_id'] = $gameid;
  264. }
  265. if (! empty($status) || $status==='0') {
  266. $where['log.status'] = $status;
  267. }
  268. if (! empty($create_time)) {
  269. $where['log.create_time'] = [['>=', strtotime($create_time .'0:0:0')],['<=', strtotime(date($create_time .'23:59:59'))]];
  270. }
  271. $list = Db::name('nw_batch_reg')
  272. ->alias('log')
  273. ->join('cy_game game', 'log.game_id = game.id')
  274. ->field('log.id as log_id,log.tal_cnt,log.status,FROM_UNIXTIME(log.create_time) as create_time,log.channel_id,log.remark,game.name')
  275. ->where($where)
  276. ->where(['channel_id'=>$this->_channelId,'game.game_kind'=>1])
  277. ->where("game.is_default = 0 and game.cooperation_status != 3")
  278. ->order('log.create_time desc')
  279. ->paginate(['list_rows'=>$list_rows,'page'=>$page])->toArray();
  280. $gameList = model('Common/Game')->getAllByCondition('id,name',['game_kind'=>1,'cooperation_status'=>['NOT IN',[0,3]]],'','self');
  281. return json(['data'=>$list,'code'=>20000,'gameList'=>$gameList,'msg'=>'获取批量注册记录成功']);
  282. }
  283. /**
  284. * 批量注册具体数据列表
  285. * @param string $value [description]
  286. */
  287. public function myBatchLogList()
  288. {
  289. $log_id = input('log_id',0);
  290. $page = input('page',1);
  291. $list_rows = input('pageSize',10);
  292. if (empty($log_id) || !isset($log_id)) {
  293. return json(['data'=>'','code'=>10023,'msg'=>'log_id参数错误']);
  294. }
  295. $list = Db::name('nw_batch_reg_log')->alias('log')
  296. ->field('log.id,log.account,log.status,log.channel_id,game.name')
  297. ->where(['log.log_id'=>$log_id,'log.channel_id'=>$this->_channelId])
  298. ->join('cy_game game', 'log.game_id = game.id')
  299. ->where("game.is_default = 0 and game.cooperation_status != 3")
  300. ->paginate(['list_rows'=>$list_rows,'page'=>$page])->toArray();
  301. return json(['data'=>$list,'code'=>20000,'msg'=>'获取批量注册详情成功']);
  302. }
  303. /**
  304. * 批量注册
  305. */
  306. public function doBatchReg()
  307. {
  308. if ($this->_level != 3) {
  309. return json(['data'=>'','code'=>10023,'msg'=>'只有推广员能增加账号!']);
  310. }
  311. $game_id = input('game_id');
  312. $str = input('account_str');
  313. if (empty($game_id) || !isset($game_id)) {
  314. return json(['data'=>'','code'=>10023,'msg'=>'game_id参数错误']);
  315. }
  316. $str = array_filter(explode(',', $str));
  317. if (count($str)>=100) {
  318. return json(['data'=>'','code'=>10025,'msg'=>'批量注册一次性最多支持100条账号注册']);//校验长度
  319. }
  320. foreach ($str as $key => $value) {
  321. //校验账号规则
  322. if (!preg_match('/^[a-zA-Z]{1}[a-zA-Z0-9]{5,19}$/i',$value)) {
  323. unset($str[$key]);
  324. }
  325. }
  326. $str = array_values($str);
  327. $where = [];
  328. // $where['gameid'] = $game_id;
  329. $where['username'] = ['in',$str];
  330. $accountList = Db::name('cy_memberstwo')->where($where)-> column('username');//取出重复的值
  331. if ($accountList) {//重复的情况下去除重复反馈给前端
  332. $str = array_diff($str, $accountList);
  333. $msg = implode(',', $accountList);
  334. return json(['data'=>implode(',', $str),'code'=>20000,'msg'=>'账号:'.$msg.'重复以去除,请确认其他账号是否继续创建','type'=>1]);//校验长度
  335. }
  336. // 判断该游戏是否处于白名单状态,若是,则判断是否有分包记录,没有的话,禁止注册关联
  337. if(!empty($game_id)) {
  338. $game_info = model('game')->where(['id' => $game_id])->find();
  339. // 处于白名单状态
  340. if(2 == $game_info['cooperation_status']) {
  341. $conditions = array();
  342. $conditions['gameid'] = $game_id;
  343. $conditions['channel_id'] = $this->_channelId;
  344. $subPackageCnt = model('SdkGameList')->where($conditions)->count();
  345. if(!$subPackageCnt){
  346. return json(['data'=>'','code'=>10023,'msg'=>'该游戏处于白名单状态,无法新增']);
  347. }
  348. }
  349. }
  350. //都符合的情况下写入数据
  351. Db::startTrans();
  352. try {
  353. //1. 添加到批次表
  354. $channelModel = Db::name('nw_batch_reg');
  355. $log_id = $channelModel->insertGetId([
  356. 'game_id' => $game_id,
  357. 'status' => 1,
  358. 'create_time' => NOW_TIMESTAMP,
  359. 'tal_cnt' => count($str),
  360. 'channel_id' => $this->_channelId
  361. ]);
  362. if (!$log_id) {
  363. return json(['data'=>'','code'=>10015,'msg'=>"添加批次信息失败"]);
  364. }
  365. $cont = [];
  366. foreach ($str as $key => $value) {
  367. $cont[$key]['game_id'] = $game_id;
  368. $cont[$key]['account'] = $value;
  369. $cont[$key]['log_id'] = $log_id;
  370. $cont[$key]['status'] = 1;
  371. $cont[$key]['channel_id'] = $this->_channelId;
  372. }
  373. $res = Db::name('nw_batch_reg_log')->insertAll($cont);
  374. if (!$res) {
  375. return json(['data'=>'','code'=>10015,'msg'=>"添加批次信息日志失败"]);
  376. }
  377. $data = [];
  378. foreach ($str as $key => $value) {
  379. $data['reg_time'] = NOW_TIMESTAMP;
  380. $data['login_time'] = NOW_TIMESTAMP;
  381. $data['ip'] = request()->ip();
  382. $data['gameid'] = $game_id;
  383. $data['username'] = $value;
  384. $data['password'] = auth_code('b123456', "ENCODE", AUTH_KEY);
  385. $data['channel_id'] = $this->_channelId;
  386. Db::startTrans();
  387. try {
  388. $member_id = Db::table('cy_members')->insertGetId($data);
  389. if ($member_id) {
  390. // 插入玩家历史记录
  391. Db::table('cy_member_history')->insert([
  392. 'userid' => $member_id,
  393. 'password' => auth_code('b123456', "ENCODE", AUTH_KEY),
  394. 'ip' => request()->ip(1),
  395. 'create_time' => NOW_TIMESTAMP
  396. ]);
  397. //插入用户扩展记录
  398. Db::table('cy_memberstwo')->insert([
  399. 'userid' => $member_id,
  400. 'username' => $data['username'],
  401. 'realname' => -1,
  402. 'idcard' => -1,
  403. 'create_time' => NOW_TIMESTAMP
  404. ]);
  405. // 登录时 绑定该游戏的归属渠道
  406. Db::table('cy_member_channel_game_rel')->insert([
  407. 'member_id' => $member_id,
  408. 'channel_id' => $data['channel_id'],
  409. 'game_id' => $data['gameid'],
  410. 'mcgr_createtime' => time(),
  411. // 'update_time' => time(),
  412. 'mcgr_ip' => request()->ip()
  413. ]);
  414. } else {
  415. throw new Exception("注册失败!");
  416. }
  417. Db::commit();
  418. } catch (Exception $e) {
  419. Db::rollback();
  420. return json(['data'=>'','code'=>10015,'msg'=>"添加失败: " . $e->getMessage()]);
  421. }
  422. }
  423. Db::commit();
  424. } catch (\Exception $e) {
  425. Db::rollback();
  426. return json(['data'=>'','code'=>10015,'msg'=>"添加失败: " . $e->getMessage()]);
  427. }
  428. return json(['data'=>'','code'=>20000,'msg'=>"注册成功"]);
  429. }
  430. /**
  431. * 已接游戏备注
  432. * @param string $value [description]
  433. * @return [type] [description]
  434. */
  435. public function toEditGameLink()
  436. {
  437. $sdk_id = input('sdk_id');
  438. $data = [];
  439. $data['remark'] = $remark = input('remark');
  440. if (empty($sdk_id)) {
  441. return json(['data'=>[],'code'=>10021,'msg'=>'sdk_id参数错误']);
  442. }
  443. $res = model('SdkGameList')->update($data, ['id'=>$sdk_id]);
  444. if ($res) {
  445. return json(['data'=>'','code'=>20000,'msg'=>'修改成功']);
  446. }else{
  447. return json(['data'=>'','code'=>10022,'msg'=>'修改失败']);
  448. }
  449. }
  450. /**
  451. * 获取游戏区服信息
  452. * @param string $value [description]
  453. * @return [type] [description]
  454. */
  455. public function getSeverList()
  456. {
  457. $gameId = input('game_id', 0, 'intval');
  458. $res = Db::name('nw_game_server')->field('servername,serverid')->where(['game_id'=>$gameId])->select();
  459. return json(['data'=>$res,'code'=>20000,'msg'=>'获取区服列表成功']);
  460. }
  461. // 获取游戏名称
  462. protected function _getGameName($gameId)
  463. {
  464. return model('Game')->where(['id' => $gameId])->value('name');
  465. }
  466. // 所有游戏类型
  467. protected function _getType()
  468. {
  469. return Db::table('cy_gametype')->field("id as 'index',name as 'value'")->select();
  470. }
  471. // 所有游戏题材
  472. protected function _getSubject()
  473. {
  474. return Db::table('cy_gamesubject')->field("id as 'index',name as 'value'")->select();
  475. }
  476. // 公共搜索条件
  477. protected function _getCondition($self = 'false')
  478. {
  479. $status = input('status');
  480. $platform = input('platform');
  481. $type = input('type', 0, 'intval');
  482. $subject = input('subject', 0, 'intval');
  483. $gameName = input('gameName', '', 'trim');
  484. $gameid = input('gameid');
  485. if ($self) {
  486. $package_type = input('package_type','');
  487. }
  488. $condition = [];
  489. $condition['game.game_kind'] = 1;
  490. if (! empty($gameName)) {
  491. $condition['game.name'] = ['LIKE', '%' . $gameName . '%'];
  492. }
  493. if (! empty($subject)) {
  494. $condition['game.subject'] = $subject;
  495. }
  496. if (! empty($type)) {
  497. $condition['game.type'] = $type;
  498. }
  499. if (is_numeric($status)) {
  500. $condition['game.cooperation_status'] = (int)$status;
  501. } else {
  502. $condition['game.cooperation_status'] = ['IN', [1, 2]];
  503. }
  504. if (is_numeric($platform)) {
  505. $condition['info.platform'] = (int)$platform;
  506. }
  507. //包体类型
  508. if ($package_type!='') {
  509. $condition['sdk.package_type'] = (int)$package_type;
  510. }
  511. return $condition;
  512. }
  513. /**
  514. * 获取游戏列表
  515. * @return mixed
  516. */
  517. public function gameList(){
  518. return model('Common/Game')->getAllByCondition('id,name',['game_kind'=>1,'cooperation_status'=>['neq',0]],'','self');
  519. }
  520. /**
  521. * 获取所有游戏区服列表
  522. * @return mixed
  523. */
  524. public function gameServerList(){
  525. $page = input('page',1);
  526. $pageSize = input('pageSize',10);
  527. $game_id = input('game_id');
  528. $server_id = input('server_id');
  529. $where = [];
  530. if (!empty($game_id)) {
  531. $where['game.id'] = $game_id;
  532. }
  533. if (!empty($server_id)) {
  534. $where['server.id'] = $server_id;
  535. }
  536. $res = Db::name('cy_game')->alias('game')
  537. ->join('nw_game_server server','game.id = server.game_id')
  538. ->field(['game.id as game_id','game.name as game_name','servername','server.id as server_id'])
  539. ->where(['game_kind'=>1])
  540. ->where($where)
  541. ->where("game.is_default = 0 and game.cooperation_status != 3")
  542. ->paginate($pageSize,false,['page'=>$page])->toArray();
  543. if ($res['data']) {
  544. $rank = ($page-1)*10;
  545. foreach ($res['data'] as $key => $value) {
  546. $rank ++ ;
  547. $res['data'][$key]['rank'] = $rank;
  548. }
  549. }
  550. return json(['data'=>$res,'code'=>20000,'msg'=>'获取游戏列表成功']);
  551. }
  552. /**
  553. * 下载excel模板
  554. * @return [type] [description]
  555. */
  556. public function download()
  557. {
  558. $type = input('type',1);
  559. switch ($type) {
  560. case '1'://子会长模板
  561. return json(['data'=>"https://static.46yx.com/xls/2020091615395f61c11895e73.xls",'code'=>20000,'msg'=>'下载链接']);
  562. break;
  563. case '2'://玩家模板
  564. return json(['data'=>"https://static.46yx.com/xls/2020091615435f61c21a56abb.xls",'code'=>20000,'msg'=>'下载链接']);
  565. break;
  566. default:
  567. return json(['data'=>'','code'=>15000,'msg'=>'参数错误']);
  568. break;
  569. }
  570. }
  571. }