PlayerInfoController.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407
  1. package com.izouma.awesomeadmin.web;
  2. import com.izouma.awesomeadmin.beans.UserPlayTimes;
  3. import com.izouma.awesomeadmin.constant.AppConstant;
  4. import com.izouma.awesomeadmin.dto.Page;
  5. import com.izouma.awesomeadmin.dto.Result;
  6. import com.izouma.awesomeadmin.model.HouseInfo;
  7. import com.izouma.awesomeadmin.model.PlayerInfo;
  8. import com.izouma.awesomeadmin.model.UserInfo;
  9. import com.izouma.awesomeadmin.service.*;
  10. import com.izouma.awesomeadmin.util.ExportExcelUtil;
  11. import org.apache.shiro.SecurityUtils;
  12. import org.apache.shiro.authz.annotation.RequiresAuthentication;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Controller;
  15. import org.springframework.web.bind.annotation.RequestMapping;
  16. import org.springframework.web.bind.annotation.RequestMethod;
  17. import org.springframework.web.bind.annotation.RequestParam;
  18. import org.springframework.web.bind.annotation.ResponseBody;
  19. import org.springframework.web.multipart.MultipartFile;
  20. import org.springframework.web.multipart.MultipartHttpServletRequest;
  21. import org.springframework.web.multipart.commons.CommonsMultipartResolver;
  22. import javax.servlet.http.HttpServletRequest;
  23. import javax.servlet.http.HttpServletResponse;
  24. import java.io.File;
  25. import java.io.IOException;
  26. import java.text.SimpleDateFormat;
  27. import java.util.*;
  28. /**
  29. * controller类
  30. */
  31. @Controller
  32. @RequestMapping("/playerInfo")
  33. public class PlayerInfoController {
  34. @Autowired
  35. private PlayerInfoService playerInfoService;
  36. @Autowired
  37. private OSSFileService OSSFileService;
  38. @Autowired
  39. private VideoRecognitionService videoRecognitionService;
  40. @Autowired
  41. private HouseInfoService houseInfoService;
  42. @Autowired
  43. private SystemVariableService systemVariableService;
  44. /**
  45. * <p>获取全部记录。</p>
  46. */
  47. @RequiresAuthentication
  48. @RequestMapping(value = "/all", method = RequestMethod.GET)
  49. @ResponseBody
  50. public Result all(PlayerInfo record) {
  51. List<PlayerInfo> pp = playerInfoService.getPlayerInfoList(record);
  52. return new Result(true, pp);
  53. }
  54. /**
  55. * <p>根据Id。</p>
  56. */
  57. @RequestMapping(value = "/getPlayerInfo", method = RequestMethod.GET)
  58. @ResponseBody
  59. public Result getPlayerInfo(@RequestParam(required = false, value = "id") String id) {
  60. PlayerInfo data = playerInfoService.getPlayerInfoById(id);
  61. return new Result(true, data);
  62. }
  63. /**
  64. * <p>根据条件获取。</p>
  65. */
  66. @RequestMapping(value = "/getOne", method = RequestMethod.GET)
  67. @ResponseBody
  68. public Result getOne(PlayerInfo record) {
  69. PlayerInfo data = playerInfoService.getPlayerInfo(record);
  70. return new Result(true, data);
  71. }
  72. @RequestMapping(value = "/check", method = RequestMethod.GET)
  73. @ResponseBody
  74. public Result check(PlayerInfo record) {
  75. PlayerInfo data = playerInfoService.getPlayerInfo(record);
  76. if (data != null) {
  77. return new Result(false, "玩家已存在");
  78. }
  79. return new Result(true, "玩家不存在");
  80. }
  81. /**
  82. * <p>分页查询。</p>
  83. */
  84. @RequestMapping(value = "/page", method = RequestMethod.GET)
  85. @ResponseBody
  86. public Result page(Page page, PlayerInfo record) {
  87. Map<String, Object> result = new HashMap<>();
  88. List<PlayerInfo> pp = playerInfoService.getPlayerInfoByPage(page, record);
  89. result.put(AppConstant.PAGE, page);
  90. result.put("pp", pp);
  91. return new Result(true, result);
  92. }
  93. /**
  94. * <p>分页排名查询。</p>
  95. */
  96. @RequestMapping(value = "/rankPage", method = RequestMethod.GET)
  97. @ResponseBody
  98. public Result rankPage(Page page, PlayerInfo record) {
  99. Map<String, Object> result = new HashMap<>();
  100. List<PlayerInfo> pp = playerInfoService.getPlayerInfoRankByPage(page, record);
  101. result.put(AppConstant.PAGE, page);
  102. result.put("pp", pp);
  103. return new Result(true, result);
  104. }
  105. @RequestMapping(value = "/seasonRankPage", method = RequestMethod.GET)
  106. @ResponseBody
  107. public Result seasonRankPage(Page page, PlayerInfo record) {
  108. Map<String, Object> result = new HashMap<>();
  109. List<PlayerInfo> pp = playerInfoService.getPlayerInfoSeasonRankPageByPage(page, record);
  110. result.put(AppConstant.PAGE, page);
  111. result.put("pp", pp);
  112. return new Result(true, result);
  113. }
  114. @RequestMapping(value = "/userRank", method = RequestMethod.GET)
  115. @ResponseBody
  116. public Result userRank(PlayerInfo record) {
  117. int rank = playerInfoService.userRank(record);
  118. return new Result(true, rank);
  119. }
  120. /**
  121. * 查询已完成数量
  122. *
  123. * @param record
  124. * @return
  125. */
  126. @RequestMapping(value = "/endNum", method = RequestMethod.GET)
  127. @ResponseBody
  128. public Result endNum(PlayerInfo record) {
  129. int rank = playerInfoService.endNum(record);
  130. return new Result(true, rank);
  131. }
  132. @RequestMapping(value = "/seasonUserRank", method = RequestMethod.GET)
  133. @ResponseBody
  134. public Result seasonUserRank(PlayerInfo record) {
  135. PlayerInfo playerInfo = playerInfoService.seasonUserRank(record);
  136. return new Result(true, playerInfo);
  137. }
  138. /**
  139. * <p>保存。</p>
  140. */
  141. @RequestMapping(value = "/save", method = RequestMethod.POST)
  142. @ResponseBody
  143. public Result save(PlayerInfo record) {
  144. boolean num = playerInfoService.createPlayerInfo(record);
  145. if (num) {
  146. return new Result(true, record.getId());
  147. }
  148. return new Result(false, "保存异常");
  149. }
  150. /**
  151. * <p>更新信息。</p>
  152. */
  153. @RequestMapping(value = "/update", method = RequestMethod.POST)
  154. @ResponseBody
  155. public Result updatePlayerInfo(PlayerInfo record) {
  156. boolean num = playerInfoService.updatePlayerInfo(record);
  157. if (num) {
  158. return new Result(true, "保存成功");
  159. }
  160. return new Result(false, "保存异常");
  161. }
  162. /**
  163. * <p>删除。</p>
  164. */
  165. @RequestMapping(value = "/del", method = RequestMethod.POST)
  166. @ResponseBody
  167. public Result deletePlayerInfo(PlayerInfo record) {
  168. boolean num = playerInfoService.deletePlayerInfo(record);
  169. if (num) {
  170. return new Result(true, "删除成功");
  171. }
  172. return new Result(false, "删除异常");
  173. }
  174. /**
  175. * <p>领取奖励。</p>
  176. */
  177. @RequestMapping(value = "/receive", method = RequestMethod.POST)
  178. @ResponseBody
  179. public Result receiveBonus(PlayerInfo record) {
  180. return playerInfoService.receiveBonus(record);
  181. }
  182. /**
  183. * 导出Excel
  184. *
  185. * @param request
  186. * @param response
  187. * @param record
  188. * @throws Exception
  189. */
  190. @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
  191. @ResponseBody
  192. public void exportExcel(HttpServletRequest request, HttpServletResponse response, PlayerInfo record) throws Exception {
  193. List<PlayerInfo> playerInfos = playerInfoService.getPlayerInfoList(record);
  194. String sheetName = "player_info";
  195. String titleName = "参赛人员数据表";
  196. String fileName = "参赛人员表";
  197. int columnNumber = 26;
  198. int[] columnWidth = {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20};
  199. String[] columnName = {"ID", "删除标识", "更新时间", "更新人", "创建时间", "创建人", "游戏ID", "房间ID", "加入时间", "本金", "奖金", "用户", "备注", "截图", "击败玩家", "游戏排名", "开始时间", "结束时间", "状态", "审核人", "审核时间", "审核类型", "视频地址", "存活时长", "游戏类型", "赛季ID"};
  200. String[][] dataList = new String[playerInfos.size()][26];
  201. for (int i = 0; i < playerInfos.size(); i++) {
  202. dataList[i][0] = String.valueOf(playerInfos.get(i).getId());
  203. dataList[i][1] = String.valueOf(playerInfos.get(i).getDelFlag());
  204. dataList[i][2] = String.valueOf(playerInfos.get(i).getUpdateTime());
  205. dataList[i][3] = String.valueOf(playerInfos.get(i).getUpdateUser());
  206. dataList[i][4] = String.valueOf(playerInfos.get(i).getCreateTime());
  207. dataList[i][5] = String.valueOf(playerInfos.get(i).getCreateUser());
  208. dataList[i][6] = String.valueOf(playerInfos.get(i).getGameId());
  209. dataList[i][7] = String.valueOf(playerInfos.get(i).getHouseId());
  210. dataList[i][8] = String.valueOf(playerInfos.get(i).getJoinTime());
  211. dataList[i][9] = String.valueOf(playerInfos.get(i).getPrincipal());
  212. dataList[i][10] = String.valueOf(playerInfos.get(i).getPoints());
  213. dataList[i][11] = String.valueOf(playerInfos.get(i).getUserId());
  214. dataList[i][12] = String.valueOf(playerInfos.get(i).getRemark());
  215. dataList[i][13] = String.valueOf(playerInfos.get(i).getImage());
  216. dataList[i][14] = String.valueOf(playerInfos.get(i).getKillNumber());
  217. dataList[i][15] = String.valueOf(playerInfos.get(i).getRanking());
  218. dataList[i][16] = String.valueOf(playerInfos.get(i).getBeginTime());
  219. dataList[i][17] = String.valueOf(playerInfos.get(i).getEndTime());
  220. dataList[i][18] = String.valueOf(playerInfos.get(i).getStatusFlag());
  221. dataList[i][19] = String.valueOf(playerInfos.get(i).getExamineUser());
  222. dataList[i][20] = String.valueOf(playerInfos.get(i).getExamineTime());
  223. dataList[i][21] = String.valueOf(playerInfos.get(i).getExamineType());
  224. dataList[i][22] = String.valueOf(playerInfos.get(i).getVideo());
  225. dataList[i][23] = String.valueOf(playerInfos.get(i).getLiveTime());
  226. dataList[i][24] = String.valueOf(playerInfos.get(i).getGameType());
  227. dataList[i][25] = String.valueOf(playerInfos.get(i).getSeasonId());
  228. }
  229. ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
  230. columnNumber, columnWidth, columnName, dataList, response);
  231. }
  232. @RequestMapping(value = "/uploadResult")
  233. @ResponseBody
  234. public Result uploadResult(HttpServletRequest request, Integer id, String rank, String time) {
  235. CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
  236. if (multipartResolver.isMultipart(request)) {
  237. PlayerInfo playerInfo = new PlayerInfo();
  238. playerInfo.setId(id);
  239. MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
  240. MultipartFile videoFile = multiRequest.getFile("video");
  241. MultipartFile screenshotFile = multiRequest.getFile("screenshot");
  242. if (videoFile != null) {
  243. try {
  244. String fileName = genFileName(videoFile);
  245. File saveFile = new File("/var/videos", fileName);
  246. videoFile.transferTo(saveFile);
  247. Runtime.getRuntime().exec("chmod 777 " + saveFile.getAbsolutePath());
  248. playerInfo.setVideo(saveFile.getAbsolutePath());
  249. } catch (Exception e) {
  250. e.printStackTrace();
  251. }
  252. }
  253. if (screenshotFile != null) {
  254. try {
  255. String fileName = genFileName(screenshotFile);
  256. String uploadPath = String.format("%s/%s", "image", fileName);
  257. String screenshot = OSSFileService.upload(screenshotFile.getInputStream(), uploadPath);
  258. playerInfo.setImage(screenshot);
  259. } catch (Exception e) {
  260. e.printStackTrace();
  261. }
  262. }
  263. if (rank != null && time != null && !"null".equals(rank) && !"null".equals(time)) {
  264. playerInfo.setRanking(Integer.valueOf(rank));
  265. playerInfo.setLiveTime(time);
  266. playerInfo.setStatusFlag(AppConstant.PlayerStatus.PROCESSED);
  267. } else {
  268. playerInfo.setStatusFlag(AppConstant.PlayerStatus.PROCESSED_FAIL);
  269. }
  270. playerInfoService.updatePlayerInfo(playerInfo);
  271. return new Result(true, "");
  272. }
  273. return new Result(false, "上传失败");
  274. }
  275. private String genFileName(MultipartFile file) {
  276. Random random = new Random();
  277. StringBuilder randStr = new StringBuilder();
  278. for (int i = 0; i < 8; i++) {
  279. randStr.append(Integer.toString(random.nextInt(36), 36));
  280. }
  281. String ext = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
  282. return String.format("%s-%s%s", new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss").format(new Date()), randStr, ext);
  283. }
  284. @RequestMapping(value = "/uploadVideo")
  285. @ResponseBody
  286. public Result uploadVideo(HttpServletRequest request, Integer id) {
  287. if ("false".equals(systemVariableService.get("uploadShort"))) {
  288. PlayerInfo record = playerInfoService.getPlayerInfoById(String.valueOf(id));
  289. HouseInfo houseInfo = houseInfoService.getHouseInfoById(String.valueOf(record.getHouseId()));
  290. Date date = new Date(System.currentTimeMillis() - 15 * 60 * 1000);
  291. if (!houseInfo.getBeginTime().before(date)) {
  292. PlayerInfo playerInfo = new PlayerInfo();
  293. playerInfo.setId(id);
  294. playerInfo.setStatusFlag(AppConstant.PlayerStatus.PROCESSED_FAIL);
  295. playerInfo.setDataError(true);
  296. playerInfoService.updatePlayerInfo(playerInfo);
  297. return new Result(true, "");
  298. }
  299. }
  300. CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
  301. if (multipartResolver.isMultipart(request)) {
  302. PlayerInfo playerInfo = new PlayerInfo();
  303. playerInfo.setId(id);
  304. MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
  305. String video;
  306. MultipartFile file = multiRequest.getFile("video");
  307. if (file == null) return new Result(false, "");
  308. try {
  309. Random random = new Random();
  310. StringBuilder randomCode = new StringBuilder();
  311. for (int i = 0; i < 8; i++) {
  312. randomCode.append(Integer.toString(random.nextInt(36), 36));
  313. }
  314. String ext = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
  315. video = String.format("/var/videos/%s-%s%s", new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss").format(new Date()), randomCode, ext);
  316. file.transferTo(new File(video));
  317. Runtime.getRuntime().exec("chmod 777 " + video);
  318. playerInfo.setVideo(video);
  319. playerInfoService.updatePlayerInfo(playerInfo);
  320. playerInfo = playerInfoService.getPlayerInfoById(String.valueOf(playerInfo.getId()));
  321. videoRecognitionService.start(playerInfo);
  322. return new Result(true, "");
  323. } catch (IOException e) {
  324. e.printStackTrace();
  325. }
  326. }
  327. return new Result(false, "");
  328. }
  329. @RequestMapping(value = "/getTodayPlayTimes")
  330. @ResponseBody
  331. public Result getTodayPlayTimes() {
  332. UserInfo userInfo = (UserInfo) SecurityUtils.getSubject().getPrincipal();
  333. UserPlayTimes userPlayTimes = playerInfoService.getUserPlayTimes(userInfo.getId());
  334. if (userPlayTimes != null) {
  335. return new Result(true, userPlayTimes);
  336. }
  337. return new Result(false, "失败");
  338. }
  339. @RequestMapping(value = "/getErrorPlayerInfo")
  340. @ResponseBody
  341. public Result getErrorPlayerInfo() {
  342. UserInfo userInfo = (UserInfo) SecurityUtils.getSubject().getPrincipal();
  343. PlayerInfo playerInfo = playerInfoService.getErrorPlayerInfo(userInfo.getId());
  344. if (playerInfo != null) {
  345. return new Result(true, playerInfo);
  346. }
  347. return new Result(false, "失败");
  348. }
  349. }