package com.dsh.communityWorldCup.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.communityWorldCup.entity.WorldCup; import com.dsh.communityWorldCup.entity.WorldCupCompetitor; import com.dsh.communityWorldCup.entity.WorldCupPaymentParticipant; import com.dsh.communityWorldCup.entity.WorldCupStore; import com.dsh.communityWorldCup.feignclient.account.AppUserClient; import com.dsh.communityWorldCup.feignclient.account.StudentClient; import com.dsh.communityWorldCup.feignclient.account.model.AppUser; import com.dsh.communityWorldCup.feignclient.account.model.TStudent; import com.dsh.communityWorldCup.feignclient.competition.ParticipantClient; import com.dsh.communityWorldCup.feignclient.competition.model.Participant; import com.dsh.communityWorldCup.feignclient.other.SiteClient; import com.dsh.communityWorldCup.feignclient.other.StoreClient; import com.dsh.communityWorldCup.feignclient.other.model.Site; import com.dsh.communityWorldCup.feignclient.other.model.Store; import com.dsh.communityWorldCup.model.*; import com.dsh.communityWorldCup.service.IWorldCupCompetitorService; import com.dsh.communityWorldCup.service.IWorldCupPaymentParticipantService; import com.dsh.communityWorldCup.service.IWorldCupService; import com.dsh.communityWorldCup.service.IWorldCupStoreService; import com.dsh.communityWorldCup.util.PayMoneyUtil; import com.dsh.communityWorldCup.util.ResultUtil; import com.dsh.communityWorldCup.util.TokenUtil; import groovy.util.logging.Log4j; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; /** * 社区世界杯 * @author zhibing.pu * @Date 2024/2/18 17:13 */ @RestController @RequestMapping("") public class WorldCupController { Logger log = LoggerFactory.getLogger(WorldCupController.class); @Autowired private TokenUtil tokenUtil; @Autowired private IWorldCupService worldCupService; @Autowired private IWorldCupStoreService worldCupListCoach; @Autowired private IWorldCupPaymentParticipantService worldCupPaymentParticipantService; @Resource private StudentClient studentClient; @Resource private ParticipantClient participantClient; @Resource private AppUserClient appUserClient; @Resource private SiteClient siteClient; @Resource private StoreClient storeClient; @Autowired private PayMoneyUtil payMoneyUtil; @Autowired private IWorldCupStoreService worldCupStoreService; @Autowired private IWorldCupCompetitorService worldCupCompetitorService; @ResponseBody @PostMapping("/api/worldCup/getWorldCupStore") @ApiOperation(value = "裁判获取社区世界杯赛点列表【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil>> getWorldCupStore(){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.tokenErr(); } List> worldCupStore = worldCupListCoach.getWorldCupStore(); return ResultUtil.success(worldCupStore); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/worldCup/getWorldCupListCoach") @ApiOperation(value = "裁判获取社区世界杯列表【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> getWorldCupListCoach(WorldCupListCoach worldCupListCoach){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.tokenErr(); } List worldCupListCoach1 = worldCupService.getWorldCupListCoach(worldCupListCoach); return ResultUtil.success(worldCupListCoach1); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/worldCup/getWorldCupPeople") @ApiOperation(value = "裁判扫码获取参赛人信息【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil getWorldCupPeople(WorldCupPeople worldCupPeople){ WorldCupPaymentParticipant worldCupPaymentParticipant = worldCupPaymentParticipantService.getById(worldCupPeople.getCode()); if(null == worldCupPaymentParticipant){ return ResultUtil.error("无效二维码"); } if(worldCupPaymentParticipant.getWorldCupId().compareTo(worldCupPeople.getWorldCupId()) != 0){ return ResultUtil.error("报名失败,当前用户未报名当前比赛"); } WorldCupPeopleVo worldCupPeopleVo = new WorldCupPeopleVo(); worldCupPeopleVo.setId(worldCupPaymentParticipant.getId()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); if(worldCupPaymentParticipant.getParticipantType() == 1){ //学员 TStudent tStudent = studentClient.queryById(worldCupPaymentParticipant.getParticipantId()); worldCupPeopleVo.setName(tStudent.getName()); worldCupPeopleVo.setAge(null == tStudent.getBirthday() ? 0 : Integer.valueOf(sdf.format(new Date())) -Integer.valueOf(sdf.format(tStudent.getBirthday()))); worldCupPeopleVo.setAvatar(tStudent.getHeadImg()); worldCupPeopleVo.setParticipantType(1); }else{ AppUser appUser = appUserClient.getAppUser(worldCupPaymentParticipant.getAppUserId()); //参赛人员 Participant participant = participantClient.getParticipant(worldCupPaymentParticipant.getParticipantId()); worldCupPeopleVo.setName(participant.getName()); worldCupPeopleVo.setAge(null == participant.getBirthday() ? 0 : Integer.valueOf(sdf.format(new Date())) -Integer.valueOf(sdf.format(participant.getBirthday()))); worldCupPeopleVo.setAvatar(appUser.getHeadImg()); worldCupPeopleVo.setParticipantType(2); } return ResultUtil.success(worldCupPeopleVo); } @ResponseBody @PostMapping("/api/worldCup/getDeviceInformation") @ApiOperation(value = "裁判扫码获取设备信息【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "code", value = "扫码结果", required = true, dataType = "String"), @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> getDeviceInformation(@RequestBody String code){ /** * { * "scan_type": 0, // 扫码类型:1000:游戏,1001:课程,1002:场地 * "space_id": 0, //场地ID * "sutu_id": 0, // 设备ID * "id": 0 //课程/场地/游戏ID * } */ JSONObject jsonObject = JSON.parseObject(code); Integer scan_type = jsonObject.getInteger("scan_type"); if(scan_type != 1000){ return ResultUtil.error("二维码不正确"); } Integer space_id = jsonObject.getInteger("space_id"); Site site = siteClient.getSite(space_id); if(null == site){ return ResultUtil.error("无法获取场地信息"); } Store store = storeClient.queryStoreById(site.getStoreId()); Map map = new HashMap<>(); map.put("name", store.getName()); map.put("address", site.getName()); return ResultUtil.success(map); } @ResponseBody @PostMapping("/api/worldCup/startWorldCup") @ApiOperation(value = "裁判开启游戏开始比赛【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil startWorldCup(StartWorldCup startWorldCup){ return worldCupService.startWorldCup(startWorldCup); } @ResponseBody @PostMapping("/api/worldCup/getCompletedWorldCupTips") @ApiOperation(value = "首页获取完成比赛的提示【2.0】", tags = {"APP-首页"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil getCompletedWorldCupTips(){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.tokenErr(); } Integer tips = worldCupService.getCompletedWorldCupTips(uid); return ResultUtil.success(tips); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/worldCup/getWorldCupList") @ApiOperation(value = "获取世界杯列表【2.0】", tags = {"APP-社区世界杯"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> getWorldCupList(WorldCupList worldCupList){ List worldCupList1 = worldCupService.getWorldCupList(worldCupList); return ResultUtil.success(worldCupList1); } @ResponseBody @PostMapping("/api/worldCup/getWorldCupInfo") @ApiOperation(value = "获取世界杯详情【2.0】", tags = {"APP-社区世界杯"}) @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "世界杯id", required = true, dataType = "int"), @ApiImplicitParam(name = "lon", value = "经度", required = true, dataType = "string"), @ApiImplicitParam(name = "lat", value = "纬度", required = true, dataType = "string"), @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil getWorldCupInfo(@RequestBody Integer id, @RequestBody String lon, @RequestBody String lat){ WorldCupInfo worldCupInfo = worldCupService.getWorldCupInfo(id, lon, lat); return ResultUtil.success(worldCupInfo); } @ResponseBody @PostMapping("/api/worldCup/checkPaymentMethod") @ApiOperation(value = "世界杯报名前校验支付方式【2.0】", tags = {"APP-社区世界杯"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil checkPaymentMethod(CheckPaymentMethod checkPaymentMethod){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.success(); } checkPaymentMethod.setUid(uid); CheckPaymentMethodVo checkPaymentMethodVo = worldCupService.checkPaymentMethod(checkPaymentMethod); return ResultUtil.success(checkPaymentMethodVo); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/worldCup/paymentWorldCup") @ApiOperation(value = "世界杯报名【2.0】", tags = {"APP-社区世界杯"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil paymentWorldCup(PaymentWorldCup paymentWorldCup){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.success(); } paymentWorldCup.setUid(uid); return worldCupService.paymentWorldCup(paymentWorldCup); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 微信支付回调 */ @ResponseBody @PostMapping("/base/worldCup/wxPayWorldCupCallback") public void wxPayWorldCupCallback(HttpServletRequest request, HttpServletResponse response){ try { Map map = payMoneyUtil.weixinpayCallback(request); if(null != map){ String code = map.get("out_trade_no"); String transaction_id = map.get("transaction_id"); String result = map.get("result"); ResultUtil resultUtil = worldCupService.paymentWorldCupCallback(code, transaction_id); if(resultUtil.getCode() == 200){ PrintWriter out = response.getWriter(); out.println(result); out.flush(); out.close(); }else{ log.error("社区世界杯报名微信支付回业务处理异常:" + resultUtil.getMsg()); } }else{ log.error("社区世界杯报名微信支付回调解析异常"); } }catch (Exception e){ e.printStackTrace(); } } /** * 支付宝支付回调 */ @ResponseBody @PostMapping("/base/worldCup/aliPayWorldCupCallback") public void aliPayWorldCupCallback(HttpServletRequest request, HttpServletResponse response){ try { Map map = payMoneyUtil.alipayCallback(request); if(null != map){ String code = map.get("out_trade_no"); String transaction_id = map.get("trade_no"); String result = map.get("result"); ResultUtil resultUtil = worldCupService.paymentWorldCupCallback(code, transaction_id); if(resultUtil.getCode() == 200){ PrintWriter out = response.getWriter(); out.println(result); out.flush(); out.close(); }else{ log.error("社区世界杯报名支付宝支付回业务处理异常:" + resultUtil.getMsg()); } }else{ log.error("社区世界杯报名付宝支支付回调解析异常"); } }catch (Exception e){ e.printStackTrace(); } } /** * 根据店铺id获取有效的世界杯 * @param storeId * @return */ @PostMapping("/worldCup/getWorldCupStoreList") public List getWorldCupStoreList(@RequestBody Integer storeId){ List worldCupList = worldCupService.list(new QueryWrapper().in("status", Arrays.asList(1, 2))); List collect = worldCupList.stream().map(WorldCup::getId).collect(Collectors.toList()); return worldCupStoreService.list(new QueryWrapper().eq("storeId", storeId).in("worldCupId", collect)); } @ResponseBody @PostMapping("/api/worldCup/getEntrantRank") @ApiOperation(value = "获取世界杯排名【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil getEntrantRank(EntrantRank entrantRank){ EntrantRankVo entrantRank1 = worldCupCompetitorService.getEntrantRank(entrantRank); return ResultUtil.success(entrantRank1); } @ResponseBody @PostMapping("/api/worldCup/getMyWorldCupList") @ApiOperation(value = "获取报名的世界杯列表【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> getMyWorldCupList(MyWorldCupList myWorldCupList){ List myWorldCupList1 = worldCupPaymentParticipantService.getMyWorldCupList(myWorldCupList); return ResultUtil.success(myWorldCupList1); } @ResponseBody @PostMapping("/api/worldCup/getParticipant") @ApiOperation(value = "获取已报名的参赛人员【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> getParticipant(){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.tokenErr(); } List participant = worldCupPaymentParticipantService.getParticipant(uid); return ResultUtil.success(participant); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/worldCup/getMyWorldCupInfo") @ApiOperation(value = "获取已报名世界杯详情【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "列表中的id", required = true, dataType = "String"), @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil getMyWorldCupInfo(String id){ MyWorldCupInfo myWorldCupInfo = worldCupPaymentParticipantService.getMyWorldCupInfo(id); return ResultUtil.success(myWorldCupInfo); } @ResponseBody @PostMapping("/api/worldCup/getWorldCupMatchRecord") @ApiOperation(value = "获取比赛记录【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil getWorldCupMatchRecord(MatchRecord matchRecord){ MatchRecordVo matchRecord1 = worldCupCompetitorService.getMatchRecord(matchRecord); return ResultUtil.success(matchRecord1); } @ResponseBody @PostMapping("/api/worldCup/getWorldCupRank") @ApiOperation(value = "获取比赛排名【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> getWorldCupRank(WorldCupRank worldCupRank){ List worldCupRank1 = worldCupCompetitorService.getWorldCupRank(worldCupRank); return ResultUtil.success(worldCupRank1); } /** * 获取学员参与数量 * @param studentId * @return */ @ResponseBody @PostMapping("/worldCup/count") public Integer count(@RequestBody Integer studentId){ return worldCupCompetitorService.count(new QueryWrapper() .eq("participantId", studentId).eq("participantType", 1)); } /** * 获取学员世界杯胜利次数 * @param studentId * @return */ @ResponseBody @PostMapping("/worldCup/winCount") public Integer winCount(@RequestBody Integer studentId){ return worldCupCompetitorService.count(new QueryWrapper() .eq("participantId", studentId).eq("participantType", 1).eq("matchResult", 1)); } /** * 获取比赛管理列表数据 * @param worldCupListAll * @return */ @ResponseBody @PostMapping("/worldCup/getWorldCupListAll") public Map getWorldCupListAll(@RequestBody WorldCupListAll worldCupListAll){ return worldCupService.getWorldCupListAll(worldCupListAll); } }