ChannelFrozen.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: edison
  5. * Date: 2018/3/26
  6. * Time: 上午11:50
  7. */
  8. namespace app\admin\controller;
  9. use think\Db;
  10. use think\Exception;
  11. use app\common\logic\SubPackage as SubChannel;
  12. class ChannelFrozen extends Admin
  13. {
  14. public function _initialize()
  15. {
  16. parent::_initialize();
  17. $this->channelFrozenModel = $this->nwModel('channel_frozen');
  18. $this->sdkgamelistModel = $this->cyModel('sdkgamelist');
  19. $this->gameList = $gameList = model('Common/Game')->getAllByCondition('id,name');
  20. $tmpSelfGameList = model('Common/Game')->getAllByCondition('id,name', [],'','self');
  21. $selfGameList = array();
  22. foreach ($tmpSelfGameList as $game) {
  23. $selfGameList[ $game['id']] = $game;
  24. }
  25. $this->selfGameList = $selfGameList;
  26. }
  27. public function index()
  28. {
  29. $channelId = input('channel_id');
  30. $gameId = input('game_id');
  31. $where = [];
  32. if ($channelId) {
  33. $where['channel_id'] = $channelId;
  34. }
  35. if ($gameId) {
  36. $where['game_id'] = $gameId;
  37. }
  38. $where['channel_type'] = 0;
  39. $channleFrozen = $this->channelFrozenModel
  40. ->where($where)
  41. ->order("id DESC")
  42. ->paginate(10, false, ['query' => $where]);
  43. // 获取分页显示
  44. $page = $channleFrozen->render();
  45. // $gameList = $this->cyModel('game')->field('id,name')->select();
  46. $this->assign('game_list', $this->selfGameList);
  47. $this->assign('channel_id', $channelId);
  48. $this->assign('game_id', $gameId);
  49. $this->assign("page", $page);
  50. $this->assign("channle_frozen", $channleFrozen);
  51. return $this->fetch();
  52. }
  53. /**
  54. * 添加冻结渠道
  55. *
  56. * @return mixed
  57. */
  58. public function add()
  59. {
  60. $gameList = $this->cyModel('game')->field('id,name')->select();
  61. $channelList = model('Common/Channel')->getAllByCondition('id,name',['flag'=>3,'level'=>3]);
  62. $yyb_channel = model('Channel')->where(['name'=>'运营部'])->field('id,name')->find();
  63. $channelList[$yyb_channel['id']] = ['id'=>$yyb_channel['id'] , 'name'=>$yyb_channel['name']];
  64. $this->assign('channel_list', $channelList);
  65. $this->assign('game_list', $this->selfGameList);
  66. return $this->fetch();
  67. }
  68. public function addPost()
  69. {
  70. $result = $this->validate($this->request->param(), 'ChannelFrozen');
  71. if ($result !== true) {
  72. $this->error($result);
  73. } else {
  74. // 启动事务
  75. Db::startTrans();
  76. $result = $this->channelFrozenModel
  77. ->field('id')
  78. ->where(['game_id' => $_POST['game_id'], 'channel_id' => $_POST['channel_id']])
  79. ->find();
  80. if (!empty($result)) {
  81. $this->error("数据已存在!id: " . $result['id']);
  82. }
  83. $_POST['create_time'] = time();
  84. $result = $this->channelFrozenModel->insertGetId($_POST);
  85. if ($result !== false) {
  86. // 写日志
  87. $channel_name = get_channel_name($_POST['channel_id']);
  88. $game_name = get_game_nickname($_POST['game_id']);
  89. $subpackageStr = '未禁止';
  90. $grant_moneyStr = '未禁止';
  91. $consumeStr = '未禁止';
  92. $member_loginStr = '未禁止';
  93. $registerStr = '未禁止';
  94. if ($_POST['subpackage'] ==1){
  95. $subpackageStr = "已禁止";
  96. }
  97. if ($_POST['grant_money'] ==1){
  98. $grant_moneyStr = "已禁止";
  99. }
  100. if ($_POST['consume'] ==1){
  101. $consumeStr = "已禁止";
  102. }
  103. if ($_POST['member_login'] ==1){
  104. $member_loginStr = "已禁止";
  105. }
  106. if ($_POST['register'] ==1){
  107. $registerStr = "已禁止";
  108. }
  109. $this->insertLog($this->current_node, "冻结渠道:".$channel_name.",游戏:".$game_name.",分包:".$subpackageStr.",发币:{$grant_moneyStr},消费:{$consumeStr},登录:{$member_loginStr},新增:{$registerStr}",43);
  110. // 新增渠道 如果禁止分包,则进行删包操作
  111. if ($_POST['subpackage'] ==1){
  112. $game_id = $_POST['game_id'];
  113. $channel_id = $_POST['channel_id'];
  114. $subChannel = new SubChannel;
  115. // 获取当前渠道及其子渠道
  116. $channelList = model('Channel')->getChildIds($channel_id);
  117. array_unshift($channelList,$channel_id);
  118. foreach ($channelList as $v){
  119. $res[] = $subChannel->deletePackage($v, $game_id,0); //普通删包
  120. $res[] = $subChannel->deletePackage($v, $game_id,1); //光环删包
  121. }
  122. }else{
  123. $res = [true,true];
  124. }
  125. if (!in_array(false,$res)) {
  126. // 提交事务
  127. Db::commit();
  128. $this->success("添加成功!", url("channel_frozen/index"));
  129. }else{
  130. // 回滚事务
  131. Db::rollback();
  132. $this->error("添加失败!");
  133. }
  134. } else {
  135. // 回滚事务
  136. Db::rollback();
  137. $this->error("添加失败!");
  138. }
  139. }
  140. }
  141. /**
  142. * 添加已分渠道冻结
  143. *
  144. * @return mixed
  145. */
  146. public function sdkgamelistAdd()
  147. {
  148. $gameList = $this->cyModel('game')->field('id,name')->select();
  149. $this->assign('game_list', $this->selfGameList);
  150. return $this->fetch('sdkgamelistadd');
  151. }
  152. /**
  153. * 添加已分渠道冻结处理
  154. *
  155. * @return mixed
  156. */
  157. public function sdkgamelistAddPost()
  158. {
  159. $result = $this->validate($this->request->param(), 'ChannelFrozen.sdkgamelist');
  160. if ($result !== true) {
  161. $this->error($result);
  162. } else {
  163. $gameid = input('post.game_id',0,'intval');
  164. $sdkstatus = $_POST['sdkstatus']; //删包状态
  165. $subpackage = $_POST['subpackage']; //分包状态
  166. if(empty($gameid)){
  167. $this->error('游戏ID不能为空');
  168. }
  169. if (empty($sdkstatus) && intval($sdkstatus ) !== 0) {
  170. $this->error('是否删包不能为空!');
  171. }
  172. //分包记录中的渠道ID
  173. $channelIds = $this->sdkgamelistModel->where(['gameid' => $gameid])->column('channel_id');
  174. //渠道冻结中的渠道ID,不关联控制聚合渠道的游戏,仅控制weilong子渠道内的游戏。
  175. $channelFrozenIds = $this->channelFrozenModel->where(['game_id' => $gameid,'channel_type'=>0])->column('channel_id');
  176. $channelIds = array_unique(array_merge($channelIds,$channelFrozenIds));
  177. if (count($channelIds) <= 0) {
  178. $this->error('该游戏无渠道信息! ');
  179. }
  180. $subChannel = new SubChannel;
  181. // 启动事务
  182. Db::startTrans();
  183. try{
  184. //------- 游戏冻结处理 start------------//
  185. $gameFrozenData['subpackage'] = $_POST['subpackage'];
  186. $gameFrozenData['grant_money'] = $_POST['grant_money'];
  187. $gameFrozenData['consume'] = $_POST['consume'];
  188. $gameFrozenData['member_login'] = $_POST['member_login'];
  189. $gameFrozenData['register'] = $_POST['register'];
  190. $gameFrozenData['update_time'] = NOW_TIMESTAMP;
  191. //更新
  192. if(Db::table('nw_game_frozen')->where(['game_id'=>$gameid])->find()){
  193. Db::table('nw_game_frozen')->where(['game_id'=>$gameid])->update($gameFrozenData);
  194. }
  195. //新增
  196. else{
  197. $gameFrozenData['game_id'] = $gameid;
  198. $gameFrozenData['create_time'] = NOW_TIMESTAMP;
  199. if (!Db::table('nw_game_frozen')->insert($gameFrozenData)) {
  200. throw new \Exception('添加游戏冻结数据失败!');
  201. }
  202. }
  203. //------- 游戏冻结处理 end------------//
  204. //------- 渠道冻结处理 start------------//
  205. // 写日志
  206. $subpackageStr = '未禁止';
  207. $grant_moneyStr = '未禁止';
  208. $consumeStr = '未禁止';
  209. $member_loginStr = '未禁止';
  210. $registerStr = '未禁止';
  211. $sdkstatusStr = '否';
  212. if ($_POST['subpackage'] ==1){
  213. $subpackageStr = "已禁止";
  214. }
  215. if ($_POST['grant_money'] ==1){
  216. $grant_moneyStr = "已禁止";
  217. }
  218. if ($_POST['consume'] ==1){
  219. $consumeStr = "已禁止";
  220. }
  221. if ($_POST['member_login'] ==1){
  222. $member_loginStr = "已禁止";
  223. }
  224. if ($_POST['register'] ==1){
  225. $registerStr = "已禁止";
  226. }
  227. if ($_POST['sdkstatus'] ==1){
  228. $sdkstatusStr = "是";
  229. }
  230. $game_name = get_game_nickname($gameid);
  231. foreach ($channelIds as $channelId) {
  232. //要删包时 禁止分包时,也进行删包
  233. if($sdkstatus || $subpackage){
  234. $subChannel->deletePackage($channelId, $gameid,0); //普通删包
  235. $subChannel->deletePackage($channelId, $gameid,1); //光环删包
  236. }
  237. //2. 渠道冻结数据插入
  238. $result = $this->channelFrozenModel
  239. ->field('id')
  240. ->where(['game_id' => $gameid, 'channel_id' => $channelId])
  241. ->find();
  242. if (empty($result)) {
  243. $data['channel_id'] = $channelId;
  244. $data['game_id'] = $gameid;
  245. $data['subpackage'] = $_POST['subpackage'];
  246. $data['grant_money'] = $_POST['grant_money'];
  247. $data['consume'] = $_POST['consume'];
  248. $data['member_login'] = $_POST['member_login'];
  249. $data['register'] = $_POST['register'];
  250. $data['create_time'] = NOW_TIMESTAMP;
  251. $data['update_time'] = NOW_TIMESTAMP;
  252. $insertResult = $this->channelFrozenModel->insertGetId($data);
  253. if (!$insertResult) {
  254. throw new \Exception('添加冻结数据失败!');
  255. }
  256. }
  257. else{
  258. $updateData['subpackage'] = $_POST['subpackage'];
  259. $updateData['grant_money'] = $_POST['grant_money'];
  260. $updateData['consume'] = $_POST['consume'];
  261. $updateData['member_login'] = $_POST['member_login'];
  262. $updateData['register'] = $_POST['register'];
  263. $updateData['update_time'] = NOW_TIMESTAMP;
  264. $this->channelFrozenModel->where(['game_id' => $gameid, 'channel_id' => $channelId])->update($updateData);
  265. }
  266. }
  267. //------- 渠道冻结处理 end------------//
  268. // 提交事务
  269. Db::commit();
  270. $this->insertLog($this->current_node, "游戏:".$game_name.",分包:".$subpackageStr.",发币:{$grant_moneyStr},消费:{$consumeStr},登录:{$member_loginStr},新增:{$registerStr},删包:{$sdkstatusStr}",47);
  271. } catch (\Exception $e) {
  272. // 回滚事务
  273. Db::rollback();
  274. $this->error('操作失败, ' . $e->getMessage());
  275. }
  276. $this->success('操作成功!', url('index'));
  277. }
  278. }
  279. /**
  280. * 操作禁止
  281. */
  282. public function ban()
  283. {
  284. $id = $this->request->param('id', 0, 'intval');
  285. $action = input('action');
  286. if (!empty($id) && !empty($action)) {
  287. $subChannel = new SubChannel;
  288. $FrozenInfo = $this->channelFrozenModel->where(["id" => $id])->find();
  289. $channel_name = get_channel_name($FrozenInfo['channel_id']);
  290. $game_name = get_game_nickname($FrozenInfo['game_id']);
  291. $subpackageStr = '未禁止';
  292. $grant_moneyStr = '未禁止';
  293. $consumeStr = '未禁止';
  294. $member_loginStr = '未禁止';
  295. $registerStr = '未禁止';
  296. if ($FrozenInfo['subpackage'] ==1){
  297. $subpackageStr = "已禁止";
  298. }
  299. if ($FrozenInfo['grant_money'] ==1){
  300. $grant_moneyStr = "已禁止";
  301. }
  302. if ($FrozenInfo['consume'] ==1){
  303. $consumeStr = "已禁止";
  304. }
  305. if ($FrozenInfo['member_login'] ==1){
  306. $member_loginStr = "已禁止";
  307. }
  308. if ($FrozenInfo['register'] ==1){
  309. $registerStr = "已禁止";
  310. }
  311. $logStr = "冻结渠道:".$channel_name.",游戏:".$game_name;
  312. if($action == 'grant_money'){
  313. $grant_moneyStr = "已禁止";
  314. }
  315. else if($action == 'consume'){
  316. $consumeStr = "已禁止";
  317. }
  318. else if($action == 'member_login'){
  319. $member_loginStr = "已禁止";
  320. }
  321. else if($action == 'register'){
  322. $registerStr = "已禁止";
  323. }
  324. else if($action == 'subpackage'){
  325. $subpackageStr = "已禁止";
  326. }
  327. $logStr .= ",分包:{$subpackageStr} ,发币:{$grant_moneyStr},消费:{$consumeStr},登录:{$member_loginStr},新增:{$registerStr}";
  328. // 启动事务
  329. Db::startTrans();
  330. $res = [];
  331. $result = $this->channelFrozenModel->where(["id" => $id])->setField($action, '1');
  332. // 禁止分包采取进行删包
  333. if ($action == 'subpackage'){
  334. // 获取当前渠道及其子渠道
  335. $currentChannel = $this->channelFrozenModel->where(["id" => $id])->field('channel_id,game_id')->find();
  336. $channelList = model('Channel')->getChildIds($currentChannel['channel_id']);
  337. array_unshift($channelList,$currentChannel['channel_id']);
  338. foreach ($channelList as $v){
  339. $res[] = $subChannel->deletePackage($v, $currentChannel['game_id'],0); //普通删包
  340. $res[] = $subChannel->deletePackage($v, $currentChannel['game_id'],1); //光环删包
  341. }
  342. }else{
  343. $res = [true,true];
  344. }
  345. if ($result !== false && !in_array(false,$res)) {
  346. // 提交事务
  347. Db::commit();
  348. // dump('禁止成功');
  349. $this->insertLog($this->current_node, $logStr,48);
  350. $this->success("禁止成功!");
  351. } else {
  352. // 回滚事务
  353. Db::rollback();
  354. // dump('禁止失败');
  355. $this->error("禁止失败!");
  356. }
  357. } else {
  358. $this->error('数据传入失败!');
  359. }
  360. }
  361. /**
  362. * 操作开启
  363. */
  364. public function cancelBan()
  365. {
  366. $id = $this->request->param('id', 0, 'intval');
  367. $action = input('action');
  368. if (!empty($id) && !empty($action)) {
  369. $FrozenInfo = $this->channelFrozenModel->where(["id" => $id])->find();
  370. $channel_name = get_channel_name($FrozenInfo['channel_id']);
  371. $game_name = get_game_nickname($FrozenInfo['game_id']);
  372. $logStr = "冻结渠道:".$channel_name.",游戏:".$game_name;
  373. if ($action !== 'all') {
  374. //日志
  375. $subpackageStr = '未禁止';
  376. $grant_moneyStr = '未禁止';
  377. $consumeStr = '未禁止';
  378. $member_loginStr = '未禁止';
  379. $registerStr = '未禁止';
  380. if ($FrozenInfo['subpackage'] ==1){
  381. $subpackageStr = "已禁止";
  382. }
  383. if ($FrozenInfo['grant_money'] ==1){
  384. $grant_moneyStr = "已禁止";
  385. }
  386. if ($FrozenInfo['consume'] ==1){
  387. $consumeStr = "已禁止";
  388. }
  389. if ($FrozenInfo['member_login'] ==1){
  390. $member_loginStr = "已禁止";
  391. }
  392. if ($FrozenInfo['register'] ==1){
  393. $registerStr = "已禁止";
  394. }
  395. $logStr = "冻结渠道:".$channel_name.",游戏:".$game_name;
  396. if($action == 'grant_money'){
  397. $grant_moneyStr = "未禁止";
  398. }
  399. else if($action == 'consume'){
  400. $consumeStr = "未禁止";
  401. }
  402. else if($action == 'member_login'){
  403. $member_loginStr = "未禁止";
  404. }
  405. else if($action == 'register'){
  406. $registerStr = "未禁止";
  407. }
  408. else if($action == 'subpackage'){
  409. $subpackageStr = "未禁止";
  410. }
  411. $logStr .= ",分包:{$subpackageStr} ,发币:{$grant_moneyStr},消费:{$consumeStr},登录:{$member_loginStr},新增:{$registerStr}";
  412. $result = $this->channelFrozenModel->where(["id" => $id])->setField($action, '0');
  413. } else {
  414. //日志
  415. $logStr .= ",分包:未禁止,发币:未禁止,消费:未禁止,登录:未禁止,新增:未禁止";
  416. $result = $this->channelFrozenModel->where(["id" => $id])->update([
  417. 'subpackage' => 0,
  418. 'grant_money' => 0,
  419. 'consume' => 0,
  420. 'member_login' => 0,
  421. 'register' => 0,
  422. ]);
  423. }
  424. if ($result !== false) {
  425. $this->insertLog($this->current_node, $logStr,48);
  426. $this->success("开启成功!");
  427. } else {
  428. $this->error("开启失败!");
  429. }
  430. } else {
  431. $this->error('数据传入失败!');
  432. }
  433. }
  434. /**
  435. * 删包操作
  436. */
  437. public function delete()
  438. {
  439. $game_id = $this->request->param('game_id', 0, 'intval');
  440. $channel_id = $this->request->param('channel_id', 0, 'intval');
  441. $msg = '删包成功!';
  442. $code = 200;
  443. //删包功能
  444. if(empty($game_id) || empty($channel_id)){
  445. $this->error('游戏和渠道ID不能为空');
  446. }
  447. $subChannel = new SubChannel;
  448. $subChannel->deletePackage($channel_id, $game_id,0); //普通删包
  449. $subChannel->deletePackage($channel_id, $game_id,1); //光环删包
  450. $ret = $this->sdkgamelistModel
  451. ->where(['gameid' => $game_id, 'channel_id' => $channel_id])
  452. ->update(
  453. [
  454. 'upload_status' => 0,
  455. 'filename' => ''
  456. ]
  457. );
  458. if ($ret !== false) {
  459. $msg = '删包成功!';
  460. $channel_name = get_channel_name($channel_id);
  461. $game_name = get_game_nickname($game_id);
  462. $logStr = "渠道:".$channel_name.",游戏:".$game_name;
  463. $this->insertLog($this->current_node, $logStr,49);
  464. } else {
  465. $msg = '删包失败!!';
  466. }
  467. $data = [
  468. 'msg' => $msg,
  469. 'code'=> $code
  470. ];
  471. return json($data);
  472. }
  473. }