GameHandler.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. package com.iamberry.wechat.handles.game;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import org.apache.commons.lang3.StringUtils;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Controller;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RequestMethod;
  13. import org.springframework.web.bind.annotation.RequestParam;
  14. import org.springframework.web.bind.annotation.ResponseBody;
  15. import com.iamberry.wechat.core.entity.ResultMsg;
  16. import com.iamberry.wechat.core.entity.WechatUtils;
  17. import com.iamberry.wechat.core.entity.game.GameLogsDto;
  18. import com.iamberry.wechat.core.entity.game.GamePrizeDto;
  19. import com.iamberry.wechat.core.entity.game.GameSystemDto;
  20. import com.iamberry.wechat.core.entity.member.Member;
  21. import com.iamberry.wechat.core.entity.order.Order;
  22. import com.iamberry.wechat.face.cart.CartService;
  23. import com.iamberry.wechat.face.game.GameService;
  24. import com.iamberry.wechat.tools.NameUtils;
  25. import com.iamberry.wechat.tools.ResultInfo;
  26. @Controller
  27. @Deprecated
  28. @RequestMapping("/wechat/game")
  29. public class GameHandler {
  30. @Autowired
  31. private GameService gameService;
  32. @Autowired
  33. private CartService orderService;
  34. /**
  35. * 根据游戏id,查询游戏信息
  36. * @param request
  37. * @param gameType
  38. * @return
  39. * @throws Exception
  40. */
  41. @ResponseBody
  42. @RequestMapping("/get_game_id")
  43. public ResultMsg selectGameByGameType(HttpServletRequest request,
  44. @RequestParam(value = "id", required = false, defaultValue = "1") Integer id,
  45. HttpServletResponse response) throws Exception {
  46. ResultMsg resultMsg = new ResultMsg();
  47. Member member = WechatUtils.getUserBySession(request);
  48. if (member == null || member.getUserOpenid() == null || "null".equals(member.getUserOpenid())) {
  49. resultMsg.setMessage(NameUtils.getConfig("ERRORINFO"));
  50. resultMsg.setStatus(false);
  51. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  52. resultMsg.setData(0);
  53. return resultMsg;
  54. }
  55. GameSystemDto gameSystemDto = new GameSystemDto();
  56. if (null != id) {
  57. gameSystemDto.setGameId(id);
  58. }
  59. //根据游戏类型查询游戏信息
  60. GameSystemDto gameSystem = gameService.selectGameByGameType(gameSystemDto);
  61. resultMsg.setData(gameSystem);
  62. resultMsg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  63. resultMsg.setResultCode(ResultInfo.SUCCESSCODE);
  64. resultMsg.setStatus(true);
  65. return resultMsg;
  66. }
  67. /**
  68. * 根据游戏id查询对应的游戏奖品信息
  69. * @param request
  70. * @param prizeGameId
  71. * @return
  72. * @throws Exception
  73. */
  74. @ResponseBody
  75. @RequestMapping("/get_prize_info")
  76. public ResultMsg selectGamePrizeByGameId(HttpServletRequest request,
  77. @RequestParam(value = "prizeGameId", required = false, defaultValue = "") Integer prizeGameId) throws Exception {
  78. ResultMsg resultMsg = new ResultMsg();
  79. WechatUtils.getUserBySession(request);
  80. GamePrizeDto gamePrizeDto = new GamePrizeDto();
  81. if (null != prizeGameId && !"".equals(prizeGameId)) {
  82. gamePrizeDto.setPrizeGameId(prizeGameId);
  83. }
  84. //根据游戏id查询对应的游戏奖品信息
  85. List<GamePrizeDto> gamePrizeList = gameService.selectGamePrizeByGameId(gamePrizeDto);
  86. resultMsg.setData(gamePrizeList);
  87. resultMsg.setStatus(true);
  88. resultMsg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  89. resultMsg.setResultCode(ResultInfo.SUCCESSCODE);
  90. return resultMsg;
  91. }
  92. /**
  93. * 根据游戏id和orderId查询该游戏可玩次数
  94. * @param gameId
  95. * @param orderId
  96. * @param request
  97. * @return
  98. * @throws Exception
  99. */
  100. @ResponseBody
  101. @RequestMapping("/selectGameCount")
  102. public ResultMsg selectGameCount(@RequestParam("gameId") Integer gameId,
  103. @RequestParam("orderId") String orderId, HttpServletRequest request) throws Exception {
  104. Member member = WechatUtils.getUserBySession(request);
  105. ResultMsg resultMsg = new ResultMsg();
  106. GameLogsDto gameLogsDto = new GameLogsDto();
  107. GameSystemDto gameSystemDto = new GameSystemDto();
  108. //游戏剩余可玩次数
  109. int gameCount = 0;
  110. if (null == gameId || "".equals(gameId.toString())) {
  111. resultMsg.setMessage("游戏id为空");
  112. resultMsg.setStatus(false);
  113. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  114. resultMsg.setData(0);
  115. return resultMsg;
  116. }
  117. if (StringUtils.isEmpty(orderId)) {
  118. resultMsg.setMessage("订单id为空");
  119. resultMsg.setStatus(false);
  120. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  121. resultMsg.setData(0);
  122. return resultMsg;
  123. }
  124. gameLogsDto.setLogsOpenId(member.getUserOpenid());
  125. gameLogsDto.setLogsGameId(gameId);
  126. gameLogsDto.setLogsOrderId(orderId);
  127. //通过订单号,游戏id和openid查询该用户玩游戏共玩了多少次
  128. int gameNum = gameService.selectGameLogsCount(gameLogsDto);
  129. gameSystemDto.setGameId(gameId);
  130. //根据游戏id查询该游戏一共可玩次数
  131. gameSystemDto = gameService.selectGameByGameType(gameSystemDto);
  132. if (null != gameSystemDto && null != gameSystemDto.getGameThresholdNum()) {
  133. //计算该游戏剩余可玩次数
  134. gameCount = gameSystemDto.getGameThresholdNum().intValue() - gameNum;
  135. resultMsg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  136. resultMsg.setStatus(true);
  137. resultMsg.setResultCode(ResultInfo.SUCCESSCODE);
  138. resultMsg.setData(gameCount);
  139. return resultMsg;
  140. } else {
  141. resultMsg.setMessage("该游戏不存在");
  142. resultMsg.setStatus(false);
  143. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  144. resultMsg.setData(0);
  145. return resultMsg;
  146. }
  147. }
  148. /**
  149. * 抽奖
  150. * @return
  151. * @throws Exception
  152. */
  153. @RequestMapping(value = "/luck_draw", method = RequestMethod.GET)
  154. @ResponseBody
  155. public ResultMsg LuckyDraw(@RequestParam("gameId") Integer gameId,
  156. @RequestParam("orderId") String orderId, HttpServletRequest request) throws Exception {
  157. Member member = WechatUtils.getUserBySession(request);
  158. ResultMsg resultMsg = new ResultMsg();
  159. // 判断
  160. if (null != orderId && !"".equals(orderId) && !StringUtils.isEmpty(orderId)) {
  161. Order order = new Order();
  162. order.setSalesOrderid(orderId);
  163. order.setSalesOpenid(member.getUserOpenid());
  164. order = orderService.selectOrderInfoById(order);
  165. if (order == null || StringUtils.isEmpty(order.getSalesOrderid())) {
  166. resultMsg.setMessage(NameUtils.getConfig("ERRORINFO"));
  167. resultMsg.setStatus(false);
  168. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  169. resultMsg.setData(0);
  170. return resultMsg;
  171. }
  172. }
  173. // 抽奖
  174. return gameService.getPrize(gameId, orderId, member.getUserOpenid());
  175. }
  176. /**
  177. * 获取当前用户游戏的中奖纪录
  178. * 2016年9月28日
  179. * 穆再兴
  180. * @return
  181. */
  182. @RequestMapping("/get_prize_log")
  183. @ResponseBody
  184. public ResultMsg getPrizeLog(HttpServletRequest req,
  185. @RequestParam(value="gameId",defaultValue = "") String gameId,
  186. @RequestParam(value= "pageSize",defaultValue= "6" ,required=false) Integer pageSize,
  187. @RequestParam(value = "pageNO", defaultValue = "1") Integer pageNO){
  188. ResultMsg rm = new ResultMsg();
  189. Map<String,Object> map = new HashMap<String,Object>();
  190. Member member = WechatUtils.getUserBySession(req);
  191. List<GameLogsDto> winningList = new ArrayList<GameLogsDto>();
  192. if(StringUtils.isNotEmpty(member.getUserOpenid())){
  193. GameLogsDto logDto = new GameLogsDto();
  194. if (StringUtils.isNotEmpty(gameId)) {
  195. logDto.setLogsGameId(Integer.parseInt(gameId));
  196. }
  197. logDto.setLogsOpenId(member.getUserOpenid());
  198. logDto.getPage().setPageNumber(pageNO);
  199. logDto.getPage().setPageSize(pageSize);
  200. logDto.getPage().initRecordBegin();
  201. winningList = gameService.selectWinningLogsByGameId(logDto);
  202. map.put("pageCount", gameService.selectWinningCount(logDto));
  203. }
  204. if(winningList.size() > 0){
  205. rm.setResultCode("200");
  206. map.put("winningList", winningList);
  207. rm.setData(map);
  208. rm.setStatus(true);
  209. }else{
  210. rm.setResultCode("200");
  211. rm.setMessage("对不起,您没有中奖纪录!");
  212. rm.setData(0);
  213. rm.setStatus(true);
  214. }
  215. return rm;
  216. }
  217. /**
  218. * 查询万圣节大转盘游戏可玩次数
  219. * @param request
  220. * @param gameId
  221. * @return
  222. * @throws Exception
  223. */
  224. @ResponseBody
  225. @RequestMapping("/selectHallowmasGameCount")
  226. public ResultMsg selectHallowmasGameCount(HttpServletRequest request,
  227. @RequestParam(value="gameId",defaultValue = "") String gameId) throws Exception {
  228. Member member = WechatUtils.getUserBySession(request);
  229. ResultMsg resultMsg = new ResultMsg();
  230. GameLogsDto gameLogsDto = new GameLogsDto();
  231. GameSystemDto gameSystemDto = new GameSystemDto();
  232. //游戏剩余可玩次数
  233. int gameCount = 0;
  234. if (null == gameId || "".equals(gameId)) {
  235. resultMsg.setMessage("游戏id为空");
  236. resultMsg.setStatus(false);
  237. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  238. resultMsg.setData(0);
  239. return resultMsg;
  240. }
  241. gameLogsDto.setLogsOpenId(member.getUserOpenid());
  242. gameLogsDto.setLogsGameId(Integer.parseInt(gameId));
  243. //通过订单号,游戏id查询该用户玩游戏共玩了多少次
  244. int gameNum = gameService.selectGameLogsCount(gameLogsDto);
  245. gameSystemDto.setGameId(Integer.parseInt(gameId));
  246. //根据游戏id查询该游戏一共可玩次数
  247. gameSystemDto = gameService.selectGameByGameType(gameSystemDto);
  248. if (null != gameSystemDto && null != gameSystemDto.getGameThresholdNum()) {
  249. //计算该游戏剩余可玩次数
  250. gameCount = gameSystemDto.getGameThresholdNum().intValue() - gameNum;
  251. resultMsg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  252. resultMsg.setStatus(true);
  253. resultMsg.setResultCode(ResultInfo.SUCCESSCODE);
  254. resultMsg.setData(gameCount);
  255. return resultMsg;
  256. } else {
  257. resultMsg.setMessage("该游戏不存在");
  258. resultMsg.setStatus(false);
  259. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  260. resultMsg.setData(0);
  261. return resultMsg;
  262. }
  263. }
  264. /**
  265. * 万圣节大转盘,判断是否需要购买订单
  266. * @param request
  267. * @return
  268. * @throws Exception
  269. */
  270. @ResponseBody
  271. @RequestMapping("/buyOrder")
  272. public ResultMsg buyOrder(HttpServletRequest request,
  273. @RequestParam(value="gameId",defaultValue = "") String gameId) throws Exception {
  274. Member member = WechatUtils.getUserBySession(request);
  275. ResultMsg resultMsg = new ResultMsg();
  276. Order order = new Order();
  277. if (null == gameId || "".equals(gameId)) {
  278. resultMsg.setMessage("游戏id为空");
  279. resultMsg.setStatus(false);
  280. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  281. resultMsg.setData(false);
  282. return resultMsg;
  283. }
  284. GameSystemDto gameSystemDto = new GameSystemDto();
  285. gameSystemDto.setGameId(Integer.parseInt(gameId));
  286. //根据游戏id查询游戏信息
  287. GameSystemDto gameSystem = gameService.selectGameByGameType(gameSystemDto);
  288. if (gameSystem == null || gameSystem.getGameStartDate() == null || gameSystem.getGameEndDate() == null) {
  289. resultMsg.setMessage("该游戏或是开始结束时间为空");
  290. resultMsg.setStatus(false);
  291. resultMsg.setResultCode(ResultInfo.ERRORCODE);
  292. resultMsg.setData(false);
  293. return resultMsg;
  294. }
  295. order.setBeginDate(gameSystem.getGameStartDate());
  296. order.setEndDate(gameSystem.getGameEndDate());
  297. order.setSalesOpenid(member.getUserOpenid());
  298. //根据游戏开始时间,结束时间,openid查询时候存在有效订单(订单状态为2,5,12为有效订单)
  299. int num = gameService.selectOrderByCreateDate(order);
  300. if (num > 0) {
  301. resultMsg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  302. resultMsg.setStatus(true);
  303. resultMsg.setResultCode(ResultInfo.SUCCESSCODE);
  304. resultMsg.setData(true);
  305. return resultMsg;
  306. } else {
  307. resultMsg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  308. resultMsg.setStatus(true);
  309. resultMsg.setResultCode(ResultInfo.SUCCESSCODE);
  310. resultMsg.setData(false);
  311. return resultMsg;
  312. }
  313. }
  314. }