WelfareGrant.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436
  1. <?php
  2. namespace app\admin\controller;
  3. use app\common\library\MakeReportGo;
  4. use app\common\library\OneFileUpload;
  5. use app\common\logic\Member as MemberService;
  6. use app\service\WelfareService;
  7. use think\Loader;
  8. use think\Db;
  9. use app\common\model\Channel;
  10. class WelfareGrant extends Admin
  11. {
  12. public function index()
  13. {
  14. $data = input();
  15. $where = [];
  16. if (isset($data['channel_id']) && $data['channel_id']) {
  17. $where['a.channel_id'] = ['in', $data['channel_id']];
  18. }
  19. if (isset($data['game_id']) && $data['game_id']) {
  20. $where['a.game_id'] = $data['game_id'];
  21. }
  22. //
  23. if (isset($data['grant_type_id']) && $data['grant_type_id']) {
  24. $where['a.grant_type_id'] = $data['grant_type_id'];
  25. }
  26. // if ($data['welfare_id']) {
  27. // $where['a.welfare_id'] = $data['welfare_id'];
  28. // }
  29. // if ($data['server_id']) {
  30. // $gameServer = model('GameServer')->where(['game_id' => $data['game_id'], 'id' => $data['server_id']])->find();
  31. // $where['a.server_id'] = ['in', $gameServer['serverid']];
  32. // }
  33. if (isset($data['examine']) && $data['examine']) {
  34. $where['a.examine'] = $data['examine'];
  35. }
  36. if (isset($data['grant_result']) && $data['grant_result']) {
  37. $where['a.grant_result'] = $data['grant_result'];
  38. }
  39. if (isset($data['username']) && $data['username']) {
  40. $where['a.username'] = $data['username'];
  41. }
  42. if (isset($data['roleid']) && $data['roleid']) {
  43. $where['a.roleid'] = $data['roleid'];
  44. }
  45. if (isset($data['role_name']) && $data['role_name']) {
  46. $where['a.role_name'] = $data['role_name'];
  47. }
  48. // if ($data['start_time'] && $data['end_time']) {
  49. // $start_time = strtotime($data['start_time']);
  50. // $end_time = strtotime($data['end_time'] . ' 23:59:59');
  51. // $where['a.apply_time'] = ['between', [$start_time, $end_time]];
  52. // }
  53. $list = model('common/WelfareGrant')
  54. ->alias('a')
  55. ->join('cy_welfare b', 'a.welfare_id=b.id')
  56. ->where($where)
  57. ->order('a.examine asc,a.id desc')
  58. ->field('a.*,b.name')
  59. ->paginate(10, false, ['query' => input('get.')]);
  60. $games = model('Common/Game')->getAllByCondition('id,name', ['game_kind' => 1, 'cooperation_status' => ['neq', 0], 'is_welfare' => 2], 'id desc', 'self');
  61. $servers = model('common/GameServer')->cache('welfare:welfareservice:server', 300)->field('servername,game_id,serverid')->select();
  62. $serversArr = [];
  63. foreach ($servers as $k => $v) {
  64. $serversArr[$v['game_id'] . '_' . $v['serverid']] = $v['servername'];
  65. }
  66. $channelListArr = [];
  67. $channelList = model('common/Channel')->cache('welfare:welfareservice:channel', 300)->field('id,name as value')->select();
  68. foreach ($channelList as $k => $v) {
  69. $channelListArr[$v['id']] = $v['value'];
  70. }
  71. // if ($data['data']) {
  72. // $channelListArr = [];
  73. // $channelList = model('common/Channel')->field('id,name as value')->select();
  74. // foreach ($channelList as $k => $v) {
  75. // $channelListArr[$v['id']] = $v['value'];
  76. // }
  77. //
  78. // $games = model('common/Game')->cache('welfare:welfareservice:game', 300)->column('name', 'id');
  79. // $servers = model('common/GameServer')->cache('welfare:welfareservice:server', 300)->field('servername,game_id,serverid')->select();
  80. // $serversArr = [];
  81. // foreach ($servers as $k => $v) {
  82. // $serversArr[$v['game_id'] . '_' . $v['serverid']] = $v['servername'];
  83. // }
  84. // foreach ($data['data'] as $k => $v) {
  85. // $data['data'][$k]['channel_name'] = isset($channelListArr[$v['channel_id']]) ? $channelListArr[$v['channel_id']] : '';
  86. // $data['data'][$k]['server_name'] = isset($serversArr[$v['game_id'] . '_' . $v['server_id']]) ? $serversArr[$v['game_id'] . '_' . $v['server_id']] : '';
  87. // $data['data'][$k]['game_name'] = $games[$v['game_id']];
  88. // $data['data'][$k]['grant_type_game'] = $this->grant_type_id[$v['grant_type_id']];
  89. //
  90. // $data['data'][$k]['examine'] = $v['examine'] == 1 ? '未审核' : ($v['examine'] == 2 ? '审核通过' : '拒绝');
  91. // $data['data'][$k]['grant_result'] = $v['grant_result'] == 1 ? '未发放' : ($v['grant_result'] == 2 ? '发放中' : ($v['grant_result'] == 3 ? '发放完成' : '发放失败'));
  92. // }
  93. // }
  94. $this->assign('list', $list);
  95. $this->assign('serversArr', $serversArr);
  96. $this->assign('channelListArr', $channelListArr);
  97. $this->assign('page', $list->render());
  98. $this->assign('grant_type_ids', model('Welfare')->grant_type_id);
  99. $selfGameList = array();
  100. foreach ($games as $game) {
  101. $selfGameList[$game['id']] = $game;
  102. }
  103. $this->assign('games', $selfGameList);
  104. $game_list = array(array('id' => 0, 'name' => '请选择'));
  105. $game_list = array_merge($game_list, $selfGameList);
  106. $this->assign('game_list', $game_list);
  107. // $this->assign('grant_type_ids', model('Welfare')->grant_type_id);
  108. return $this->fetch();
  109. }
  110. /**
  111. * 审核界面
  112. * @param string $value [description]
  113. * @return [type] [description]
  114. */
  115. public function examine()
  116. {
  117. $applyid = request()->get('applyid');
  118. $data = model('common/WelfareGrant')->where(['id' => $applyid])->find();
  119. $this->assign('applyid', $applyid);
  120. $this->assign('list', $data);
  121. return $this->fetch();
  122. }
  123. public function doExamine()
  124. {
  125. $applyid = input('applyid');
  126. $examine = input('apply_status');
  127. if (!in_array($examine, [2, 3])) {
  128. $this->error('审核失败,审核状态错误');
  129. }
  130. $data = model('common/WelfareGrant')->where(['id' => $applyid])->find();
  131. if ($data) {
  132. if ($data['examine'] == 1) {
  133. if (model('common/WelfareGrant')->where(['id' => $applyid])->update(['examine' => $examine])) {
  134. log_message('$applyid:' . $applyid . ' $examine:' . $examine, 'info', LOG_PATH . 'welfareGrant/');
  135. if ($examine == 2) {
  136. log_message('$applyid:' . $applyid . ' $examine:' . $examine, 'info', LOG_PATH . 'welfareGrant/');
  137. $makeReportGo = new MakeReportGo();
  138. $makeReportGo->welfareTask('welfareList', $applyid);
  139. }
  140. $this->success("审核成功");
  141. } else {
  142. $this->error('审核失败');
  143. }
  144. } else {
  145. $this->error('记录已审核');
  146. }
  147. } else {
  148. $this->error('记录不存在');
  149. }
  150. }
  151. public function approved()
  152. {
  153. $data = input();
  154. $examine = $data['apply_status'];
  155. $ids = explode(',', $data['ids']);
  156. unset($data['ids']);
  157. if (empty($examine)) {
  158. $this->error("系统错误");
  159. }
  160. if (!in_array($examine, [2, 3])) {
  161. $this->error('审核失败,审核状态错误');
  162. }
  163. if (empty($ids)) {
  164. $this->error("请选择记录");
  165. }
  166. $data = model('common/WelfareGrant')->whereIn('id', $ids)->column('id');
  167. if ($data) {
  168. if (model('common/WelfareGrant')->whereIn('id', $data)->update(['examine' => $examine])) {
  169. log_message('ids:' . implode(',', $ids) . ' $examine:' . $examine, 'info', LOG_PATH . 'welfareGrant/');
  170. if ($examine == 2) {
  171. log_message('ids:' . implode(',', $ids) . ' $examine:' . $examine, 'info', LOG_PATH . 'welfareGrant/');
  172. foreach ($data as $k => $v) {
  173. $makeReportGo = new MakeReportGo();
  174. log_message('ids:' . implode(',', $ids) . ' $v:' . $v, 'info', LOG_PATH . 'welfareGrant/');
  175. $makeReportGo->welfareTask('welfareList', $v);
  176. }
  177. }
  178. $this->success("审核成功");
  179. } else {
  180. $this->error('审核失败');
  181. }
  182. }
  183. }
  184. /**
  185. * 补发
  186. */
  187. public function reissue()
  188. {
  189. if (!input('id')) {
  190. $this->error('记录id不存在');
  191. }
  192. $makeReportGo = new MakeReportGo();
  193. $makeReportGo->welfareTask('welfareList', input('id'), 0, 3600, true);
  194. $this->success("申请成功");
  195. }
  196. public function info()
  197. {
  198. $welfare_grant_id = input('id', 0);
  199. $status = input('status', 0);
  200. $where = [];
  201. if ($status > 0) {
  202. $where['a.status'] = $status;
  203. }
  204. $list = model('welfareGrantData')
  205. ->alias('a')
  206. ->join('cy_welfare_resources b', 'a.welfare_resources_id=b.id')
  207. ->where('welfare_grant_id', $welfare_grant_id)
  208. ->where($where)
  209. ->field('a.*,b.type_id,b.name')
  210. ->order('grant_date asc,grant_time desc')
  211. ->paginate(10, false, ['query' => input('get.')]);
  212. $this->assign('id', $welfare_grant_id);
  213. $this->assign('list', $list);
  214. $this->assign('page', $list->render());
  215. return $this->fetch();
  216. }
  217. public function apply()
  218. {
  219. $data = input();
  220. $data['page'] = isset($data['page']) ? $data['page'] : 1;
  221. $data['pageSize'] = isset($data['pageSize']) ? $data['pageSize'] : 10;
  222. $channelListArr = [];
  223. $channelList = $this->getChannelList(input('game_id', 0));
  224. $servers = model('common/GameServer')->cache('welfare:welfareservice:server', 300)->field('servername,game_id,serverid')->select();
  225. $serversArr = [];
  226. foreach ($servers as $k => $v) {
  227. $serversArr[$v['game_id'] . '_' . $v['serverid']] = $v['servername'];
  228. }
  229. if (isset($data['search']) && $data['search'] == 1) {
  230. switch ($data['grant_type_id']) {
  231. case 1:
  232. $checkResult = $this->validate($data, 'Welfare.enterGameWelfare');
  233. break;
  234. case 2:
  235. $checkResult = $this->validate($data, 'Welfare.everydayWelfare');
  236. break;
  237. case 3:
  238. $checkResult = $this->validate($data, 'Welfare.singleWelfare');
  239. break;
  240. case 4:
  241. $checkResult = $this->validate($data, 'Welfare.grandWelfare');
  242. break;
  243. case 5:
  244. $checkResult = $this->validate($data, 'Welfare.singleGrandWelfare');
  245. break;
  246. case 6:
  247. $checkResult = $this->validate($data, 'Welfare.sevenDayWelfare');
  248. break;
  249. case 7:
  250. $checkResult = $this->validate($data, 'Welfare.initialWelfare');
  251. break;
  252. case 8:
  253. $checkResult = $this->validate($data, 'Welfare.monthWelfare');
  254. break;
  255. case 9:
  256. $checkResult = $this->validate($data, 'Welfare.weekWelfare');
  257. break;
  258. default:
  259. $this->error('发放类型必选');
  260. }
  261. if (true !== $checkResult) {
  262. $this->error($checkResult);
  263. }
  264. $welfareService = new WelfareService();
  265. if ($data['channel_id']) {
  266. $data['channel_id'] = [$data['channel_id']];
  267. }
  268. $result = $welfareService->wefare($data['grant_type_id'], $data['game_id'], array_column(json_decode(json_encode($channelList), true), 'id'), $channelList, $data['page'], $data['pageSize'], $data, false, true);
  269. $this->assign('page', $result->render());
  270. $this->assign('list', $result);
  271. $this->assign('serversArr', $serversArr);
  272. } else {
  273. $this->assign('list', []);
  274. }
  275. foreach ($channelList as $k => $v) {
  276. $channelListArr[$v['id']] = $v['value'];
  277. }
  278. $this->assign('channelListArr', $channelListArr);
  279. $this->assign('grant_type_ids', model('Welfare')->grant_type_id);
  280. $tmpSelfGameList = model('Common/Game')->getAllByCondition('id,name', ['game_kind' => 1, 'cooperation_status' => ['neq', 0], 'is_welfare' => 2], 'id desc', 'self');
  281. $selfGameList = [['id' => 0, 'name' => '']];
  282. foreach ($tmpSelfGameList as $game) {
  283. $selfGameList[$game['id']] = $game;
  284. }
  285. $this->assign('game_list', $selfGameList);
  286. return $this->fetch();
  287. }
  288. public function getWelfare()
  289. {
  290. $game_ids = input('game_id', '');
  291. $whereRaw = [];
  292. foreach (explode(',', $game_ids) as $k => $v) {
  293. $whereRaw [] = sprintf('FIND_IN_SET(%s,game_id)', $v);
  294. }
  295. $str = implode(' or ', $whereRaw);
  296. $welfare = model('Welfare')->whereRaw($str)
  297. ->where(['grant_type_id' => input('grant_type_id', 0)])
  298. ->field('id,name')
  299. ->order('id desc')->select();
  300. $this->jsonResult($welfare, 1, '成功');
  301. }
  302. public function getServer()
  303. {
  304. $list = model('GameServer')->where(['game_id' => input('game_id', 0)])->field('id,servername as value,create_time')->order('id desc')->select();
  305. if (input('grant_type_id') == 6) {
  306. foreach ($list as $k => $v) {
  307. $list[$k]['value'] = $v['value'] . ' (开服时间:' . date('Y-m-d', $v['create_time']) . ')';
  308. }
  309. }
  310. $this->jsonResult($list, 1, '成功');
  311. }
  312. public function apply_welfare()
  313. {
  314. $data = input();
  315. if (!isset($data['grant_type_id'])) {
  316. $this->jsonResult([], 0, '发放类型必选');
  317. }
  318. switch ($data['grant_type_id']) {
  319. case 1:
  320. $checkResult = $this->validate($data, 'Welfare.applyEnterGameWelfare');
  321. break;
  322. case 2:
  323. $checkResult = $this->validate($data, 'Welfare.applyEverydayWelfare');
  324. break;
  325. case 3:
  326. $checkResult = $this->validate($data, 'Welfare.applySingleWelfare');
  327. break;
  328. case 4:
  329. $checkResult = $this->validate($data, 'Welfare.applyGrandWelfare');
  330. break;
  331. case 5:
  332. $checkResult = $this->validate($data, 'Welfare.applySingleGrandWelfare');
  333. break;
  334. case 6:
  335. $checkResult = $this->validate($data, 'Welfare.applySevenDayWelfare');
  336. break;
  337. case 7:
  338. $checkResult = $this->validate($data, 'Welfare.applyInitialWelfare');
  339. break;
  340. case 8:
  341. $checkResult = $this->validate($data, 'Welfare.applyMonthWelfare');
  342. break;
  343. case 9:
  344. $checkResult = $this->validate($data, 'Welfare.applyWeekWelfare');
  345. break;
  346. default:
  347. $this->jsonResult([], 0, '类型错误');
  348. }
  349. if (true !== $checkResult) {
  350. $this->jsonResult('', 0, $checkResult);
  351. }
  352. $page = isset($data['page']) ? $data['page'] : 1;
  353. $pageSize = isset($data['pageSize']) ? $data['pageSize'] : 10;
  354. $welfareService = new WelfareService();
  355. if ($data['channel_id']) {
  356. $data['channel_id'] = [$data['channel_id']];
  357. }
  358. $channelList = $this->getChannelList(input('game_id', 0));
  359. $result = $welfareService->wefare($data['grant_type_id'], $data['game_id'], array_column(json_decode(json_encode($channelList), true), 'id'), $channelList, $page, $pageSize, $data, true, false);
  360. if ($result['code'] == 20000) {
  361. $this->jsonResult([], 1, '申请成功');
  362. } else {
  363. $this->jsonResult([], 0, $result['msg']);
  364. }
  365. }
  366. public function getChannelId()
  367. {
  368. $result = $this->getChannelList(input('game_id', 0));
  369. $this->jsonResult($result, 1, '获取成功');
  370. }
  371. private function getChannelList($game_id)
  372. {
  373. if ($gameBand = model('GameBand')->whereOr('android_game_id', $game_id)->whereOr('ios_game_id', $game_id)->find()) {
  374. $where = [$gameBand['android_game_id'], $gameBand['ios_game_id']];
  375. } else {
  376. $where = [$game_id];
  377. }
  378. return model('SdkGameList')->join('nw_channel', 'nw_channel.id=cy_sdkgamelist.channel_id')->whereIn('cy_sdkgamelist.gameid', $where)->cache('welfare:welfareGrant:getChannelList:' . md5(json_encode($where)), 300)->field('nw_channel.id,nw_channel.name as value')->group('id')->select();
  379. }
  380. }