| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407 |
- package com.izouma.awesomeadmin.web;
- import com.izouma.awesomeadmin.beans.UserPlayTimes;
- import com.izouma.awesomeadmin.constant.AppConstant;
- import com.izouma.awesomeadmin.dto.Page;
- import com.izouma.awesomeadmin.dto.Result;
- import com.izouma.awesomeadmin.model.HouseInfo;
- import com.izouma.awesomeadmin.model.PlayerInfo;
- import com.izouma.awesomeadmin.model.UserInfo;
- import com.izouma.awesomeadmin.service.*;
- import com.izouma.awesomeadmin.util.ExportExcelUtil;
- import org.apache.shiro.SecurityUtils;
- import org.apache.shiro.authz.annotation.RequiresAuthentication;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.ResponseBody;
- import org.springframework.web.multipart.MultipartFile;
- import org.springframework.web.multipart.MultipartHttpServletRequest;
- import org.springframework.web.multipart.commons.CommonsMultipartResolver;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.File;
- import java.io.IOException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * controller类
- */
- @Controller
- @RequestMapping("/playerInfo")
- public class PlayerInfoController {
- @Autowired
- private PlayerInfoService playerInfoService;
- @Autowired
- private OSSFileService OSSFileService;
- @Autowired
- private VideoRecognitionService videoRecognitionService;
- @Autowired
- private HouseInfoService houseInfoService;
- @Autowired
- private SystemVariableService systemVariableService;
- /**
- * <p>获取全部记录。</p>
- */
- @RequiresAuthentication
- @RequestMapping(value = "/all", method = RequestMethod.GET)
- @ResponseBody
- public Result all(PlayerInfo record) {
- List<PlayerInfo> pp = playerInfoService.getPlayerInfoList(record);
- return new Result(true, pp);
- }
- /**
- * <p>根据Id。</p>
- */
- @RequestMapping(value = "/getPlayerInfo", method = RequestMethod.GET)
- @ResponseBody
- public Result getPlayerInfo(@RequestParam(required = false, value = "id") String id) {
- PlayerInfo data = playerInfoService.getPlayerInfoById(id);
- return new Result(true, data);
- }
- /**
- * <p>根据条件获取。</p>
- */
- @RequestMapping(value = "/getOne", method = RequestMethod.GET)
- @ResponseBody
- public Result getOne(PlayerInfo record) {
- PlayerInfo data = playerInfoService.getPlayerInfo(record);
- return new Result(true, data);
- }
- @RequestMapping(value = "/check", method = RequestMethod.GET)
- @ResponseBody
- public Result check(PlayerInfo record) {
- PlayerInfo data = playerInfoService.getPlayerInfo(record);
- if (data != null) {
- return new Result(false, "玩家已存在");
- }
- return new Result(true, "玩家不存在");
- }
- /**
- * <p>分页查询。</p>
- */
- @RequestMapping(value = "/page", method = RequestMethod.GET)
- @ResponseBody
- public Result page(Page page, PlayerInfo record) {
- Map<String, Object> result = new HashMap<>();
- List<PlayerInfo> pp = playerInfoService.getPlayerInfoByPage(page, record);
- result.put(AppConstant.PAGE, page);
- result.put("pp", pp);
- return new Result(true, result);
- }
- /**
- * <p>分页排名查询。</p>
- */
- @RequestMapping(value = "/rankPage", method = RequestMethod.GET)
- @ResponseBody
- public Result rankPage(Page page, PlayerInfo record) {
- Map<String, Object> result = new HashMap<>();
- List<PlayerInfo> pp = playerInfoService.getPlayerInfoRankByPage(page, record);
- result.put(AppConstant.PAGE, page);
- result.put("pp", pp);
- return new Result(true, result);
- }
- @RequestMapping(value = "/seasonRankPage", method = RequestMethod.GET)
- @ResponseBody
- public Result seasonRankPage(Page page, PlayerInfo record) {
- Map<String, Object> result = new HashMap<>();
- List<PlayerInfo> pp = playerInfoService.getPlayerInfoSeasonRankPageByPage(page, record);
- result.put(AppConstant.PAGE, page);
- result.put("pp", pp);
- return new Result(true, result);
- }
- @RequestMapping(value = "/userRank", method = RequestMethod.GET)
- @ResponseBody
- public Result userRank(PlayerInfo record) {
- int rank = playerInfoService.userRank(record);
- return new Result(true, rank);
- }
- /**
- * 查询已完成数量
- *
- * @param record
- * @return
- */
- @RequestMapping(value = "/endNum", method = RequestMethod.GET)
- @ResponseBody
- public Result endNum(PlayerInfo record) {
- int rank = playerInfoService.endNum(record);
- return new Result(true, rank);
- }
- @RequestMapping(value = "/seasonUserRank", method = RequestMethod.GET)
- @ResponseBody
- public Result seasonUserRank(PlayerInfo record) {
- PlayerInfo playerInfo = playerInfoService.seasonUserRank(record);
- return new Result(true, playerInfo);
- }
- /**
- * <p>保存。</p>
- */
- @RequestMapping(value = "/save", method = RequestMethod.POST)
- @ResponseBody
- public Result save(PlayerInfo record) {
- boolean num = playerInfoService.createPlayerInfo(record);
- if (num) {
- return new Result(true, record.getId());
- }
- return new Result(false, "保存异常");
- }
- /**
- * <p>更新信息。</p>
- */
- @RequestMapping(value = "/update", method = RequestMethod.POST)
- @ResponseBody
- public Result updatePlayerInfo(PlayerInfo record) {
- boolean num = playerInfoService.updatePlayerInfo(record);
- if (num) {
- return new Result(true, "保存成功");
- }
- return new Result(false, "保存异常");
- }
- /**
- * <p>删除。</p>
- */
- @RequestMapping(value = "/del", method = RequestMethod.POST)
- @ResponseBody
- public Result deletePlayerInfo(PlayerInfo record) {
- boolean num = playerInfoService.deletePlayerInfo(record);
- if (num) {
- return new Result(true, "删除成功");
- }
- return new Result(false, "删除异常");
- }
- /**
- * <p>领取奖励。</p>
- */
- @RequestMapping(value = "/receive", method = RequestMethod.POST)
- @ResponseBody
- public Result receiveBonus(PlayerInfo record) {
- return playerInfoService.receiveBonus(record);
- }
- /**
- * 导出Excel
- *
- * @param request
- * @param response
- * @param record
- * @throws Exception
- */
- @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
- @ResponseBody
- public void exportExcel(HttpServletRequest request, HttpServletResponse response, PlayerInfo record) throws Exception {
- List<PlayerInfo> playerInfos = playerInfoService.getPlayerInfoList(record);
- String sheetName = "player_info";
- String titleName = "参赛人员数据表";
- String fileName = "参赛人员表";
- int columnNumber = 26;
- 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};
- String[] columnName = {"ID", "删除标识", "更新时间", "更新人", "创建时间", "创建人", "游戏ID", "房间ID", "加入时间", "本金", "奖金", "用户", "备注", "截图", "击败玩家", "游戏排名", "开始时间", "结束时间", "状态", "审核人", "审核时间", "审核类型", "视频地址", "存活时长", "游戏类型", "赛季ID"};
- String[][] dataList = new String[playerInfos.size()][26];
- for (int i = 0; i < playerInfos.size(); i++) {
- dataList[i][0] = String.valueOf(playerInfos.get(i).getId());
- dataList[i][1] = String.valueOf(playerInfos.get(i).getDelFlag());
- dataList[i][2] = String.valueOf(playerInfos.get(i).getUpdateTime());
- dataList[i][3] = String.valueOf(playerInfos.get(i).getUpdateUser());
- dataList[i][4] = String.valueOf(playerInfos.get(i).getCreateTime());
- dataList[i][5] = String.valueOf(playerInfos.get(i).getCreateUser());
- dataList[i][6] = String.valueOf(playerInfos.get(i).getGameId());
- dataList[i][7] = String.valueOf(playerInfos.get(i).getHouseId());
- dataList[i][8] = String.valueOf(playerInfos.get(i).getJoinTime());
- dataList[i][9] = String.valueOf(playerInfos.get(i).getPrincipal());
- dataList[i][10] = String.valueOf(playerInfos.get(i).getPoints());
- dataList[i][11] = String.valueOf(playerInfos.get(i).getUserId());
- dataList[i][12] = String.valueOf(playerInfos.get(i).getRemark());
- dataList[i][13] = String.valueOf(playerInfos.get(i).getImage());
- dataList[i][14] = String.valueOf(playerInfos.get(i).getKillNumber());
- dataList[i][15] = String.valueOf(playerInfos.get(i).getRanking());
- dataList[i][16] = String.valueOf(playerInfos.get(i).getBeginTime());
- dataList[i][17] = String.valueOf(playerInfos.get(i).getEndTime());
- dataList[i][18] = String.valueOf(playerInfos.get(i).getStatusFlag());
- dataList[i][19] = String.valueOf(playerInfos.get(i).getExamineUser());
- dataList[i][20] = String.valueOf(playerInfos.get(i).getExamineTime());
- dataList[i][21] = String.valueOf(playerInfos.get(i).getExamineType());
- dataList[i][22] = String.valueOf(playerInfos.get(i).getVideo());
- dataList[i][23] = String.valueOf(playerInfos.get(i).getLiveTime());
- dataList[i][24] = String.valueOf(playerInfos.get(i).getGameType());
- dataList[i][25] = String.valueOf(playerInfos.get(i).getSeasonId());
- }
- ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
- columnNumber, columnWidth, columnName, dataList, response);
- }
- @RequestMapping(value = "/uploadResult")
- @ResponseBody
- public Result uploadResult(HttpServletRequest request, Integer id, String rank, String time) {
- CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
- if (multipartResolver.isMultipart(request)) {
- PlayerInfo playerInfo = new PlayerInfo();
- playerInfo.setId(id);
- MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
- MultipartFile videoFile = multiRequest.getFile("video");
- MultipartFile screenshotFile = multiRequest.getFile("screenshot");
- if (videoFile != null) {
- try {
- String fileName = genFileName(videoFile);
- File saveFile = new File("/var/videos", fileName);
- videoFile.transferTo(saveFile);
- Runtime.getRuntime().exec("chmod 777 " + saveFile.getAbsolutePath());
- playerInfo.setVideo(saveFile.getAbsolutePath());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- if (screenshotFile != null) {
- try {
- String fileName = genFileName(screenshotFile);
- String uploadPath = String.format("%s/%s", "image", fileName);
- String screenshot = OSSFileService.upload(screenshotFile.getInputStream(), uploadPath);
- playerInfo.setImage(screenshot);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- if (rank != null && time != null && !"null".equals(rank) && !"null".equals(time)) {
- playerInfo.setRanking(Integer.valueOf(rank));
- playerInfo.setLiveTime(time);
- playerInfo.setStatusFlag(AppConstant.PlayerStatus.PROCESSED);
- } else {
- playerInfo.setStatusFlag(AppConstant.PlayerStatus.PROCESSED_FAIL);
- }
- playerInfoService.updatePlayerInfo(playerInfo);
- return new Result(true, "");
- }
- return new Result(false, "上传失败");
- }
- private String genFileName(MultipartFile file) {
- Random random = new Random();
- StringBuilder randStr = new StringBuilder();
- for (int i = 0; i < 8; i++) {
- randStr.append(Integer.toString(random.nextInt(36), 36));
- }
- String ext = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
- return String.format("%s-%s%s", new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss").format(new Date()), randStr, ext);
- }
- @RequestMapping(value = "/uploadVideo")
- @ResponseBody
- public Result uploadVideo(HttpServletRequest request, Integer id) {
- if ("false".equals(systemVariableService.get("uploadShort"))) {
- PlayerInfo record = playerInfoService.getPlayerInfoById(String.valueOf(id));
- HouseInfo houseInfo = houseInfoService.getHouseInfoById(String.valueOf(record.getHouseId()));
- Date date = new Date(System.currentTimeMillis() - 15 * 60 * 1000);
- if (!houseInfo.getBeginTime().before(date)) {
- PlayerInfo playerInfo = new PlayerInfo();
- playerInfo.setId(id);
- playerInfo.setStatusFlag(AppConstant.PlayerStatus.PROCESSED_FAIL);
- playerInfo.setDataError(true);
- playerInfoService.updatePlayerInfo(playerInfo);
- return new Result(true, "");
- }
- }
- CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
- if (multipartResolver.isMultipart(request)) {
- PlayerInfo playerInfo = new PlayerInfo();
- playerInfo.setId(id);
- MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
- String video;
- MultipartFile file = multiRequest.getFile("video");
- if (file == null) return new Result(false, "");
- try {
- Random random = new Random();
- StringBuilder randomCode = new StringBuilder();
- for (int i = 0; i < 8; i++) {
- randomCode.append(Integer.toString(random.nextInt(36), 36));
- }
- String ext = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
- video = String.format("/var/videos/%s-%s%s", new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss").format(new Date()), randomCode, ext);
- file.transferTo(new File(video));
- Runtime.getRuntime().exec("chmod 777 " + video);
- playerInfo.setVideo(video);
- playerInfoService.updatePlayerInfo(playerInfo);
- playerInfo = playerInfoService.getPlayerInfoById(String.valueOf(playerInfo.getId()));
- videoRecognitionService.start(playerInfo);
- return new Result(true, "");
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return new Result(false, "");
- }
- @RequestMapping(value = "/getTodayPlayTimes")
- @ResponseBody
- public Result getTodayPlayTimes() {
- UserInfo userInfo = (UserInfo) SecurityUtils.getSubject().getPrincipal();
- UserPlayTimes userPlayTimes = playerInfoService.getUserPlayTimes(userInfo.getId());
- if (userPlayTimes != null) {
- return new Result(true, userPlayTimes);
- }
- return new Result(false, "失败");
- }
- @RequestMapping(value = "/getErrorPlayerInfo")
- @ResponseBody
- public Result getErrorPlayerInfo() {
- UserInfo userInfo = (UserInfo) SecurityUtils.getSubject().getPrincipal();
- PlayerInfo playerInfo = playerInfoService.getErrorPlayerInfo(userInfo.getId());
- if (playerInfo != null) {
- return new Result(true, playerInfo);
- }
- return new Result(false, "失败");
- }
- }
|