From 9a44650b174f598392d0a0522b02a341ff14acb0 Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期二, 12 八月 2025 21:16:17 +0800 Subject: [PATCH] 赛事模块 --- cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java | 278 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 274 insertions(+), 4 deletions(-) diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java index cae4036..44e8560 100644 --- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java +++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java @@ -3,11 +3,18 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.dsh.communityWorldCup.entity.*; import com.dsh.communityWorldCup.feignclient.account.AppUserClient; import com.dsh.communityWorldCup.feignclient.account.StudentClient; +import com.dsh.communityWorldCup.feignclient.account.StudentHonorClient; +import com.dsh.communityWorldCup.feignclient.account.UserIntegralChangesClient; import com.dsh.communityWorldCup.feignclient.account.model.AppUser; +import com.dsh.communityWorldCup.feignclient.account.model.SaveUserIntegralChangesVo; +import com.dsh.communityWorldCup.feignclient.account.model.StudentHonor; import com.dsh.communityWorldCup.feignclient.account.model.TStudent; import com.dsh.communityWorldCup.feignclient.competition.ParticipantClient; import com.dsh.communityWorldCup.feignclient.competition.model.Participant; @@ -19,10 +26,7 @@ import com.dsh.communityWorldCup.feignclient.other.model.TGame; import com.dsh.communityWorldCup.model.*; import com.dsh.communityWorldCup.service.*; -import com.dsh.communityWorldCup.util.GDMapGeocodingUtil; -import com.dsh.communityWorldCup.util.PayMoneyUtil; -import com.dsh.communityWorldCup.util.ResultUtil; -import com.dsh.communityWorldCup.util.TokenUtil; +import com.dsh.communityWorldCup.util.*; import com.dsh.communityWorldCup.util.wx.WxV3PayConfig; import com.wechat.pay.contrib.apache.httpclient.util.AesUtil; import groovy.util.logging.Log4j; @@ -43,7 +47,9 @@ import java.io.IOException; import java.io.PrintWriter; import java.nio.charset.StandardCharsets; +import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -102,6 +108,12 @@ @Resource private GameClient gameClient; + + @Autowired + private UserIntegralChangesClient userIntegralChangesClient; + + @Autowired + private StudentHonorClient studentHonorClient; /** @@ -275,6 +287,16 @@ if(0 == isStudent){ isStudent = 2; } + WorldCup worldCup = worldCupService.getById(worldCupPeople.getWorldCupId()); + if(null == worldCup){ + return ResultUtil.error("当前比赛不存在"); + } + if(worldCup.getStartTime().getTime()>System.currentTimeMillis() || worldCup.getEndTime().getTime()<System.currentTimeMillis()){ + return ResultUtil.error("二维码仅支持在赛事有效期使用"); + } + + + WorldCupPaymentParticipant worldCupPaymentParticipant = worldCupPaymentParticipantService.getOne(new QueryWrapper<WorldCupPaymentParticipant>() .eq("worldCupId", worldCupPeople.getWorldCupId()).eq("participantId", id).eq("participantType", isStudent) .orderByDesc("createTime").last(" limit 0, 1")); @@ -352,6 +374,18 @@ }) public ResultUtil startWorldCup(StartWorldCup startWorldCup){ return worldCupService.startWorldCup(startWorldCup); + } + @ResponseBody + @PostMapping("/api/worldCup/endWorldCup") + @ApiOperation(value = "裁判结束比赛【3.1】", tags = {"APP-个人中心"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(name = "redScore", value = "红队得分", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "blueScore", value = "蓝队得分", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "custom", value = "自定义参数 列表中是数组 ,拼接传过来", required = true, dataType = "String") + }) + public ResultUtil endWorldCup(String custom, Integer redScore, Integer blueScore){ + return worldCupService.endWorldCup(custom,redScore,blueScore); } @@ -687,6 +721,45 @@ } worldCupRank.setAppUserId(uid); List<WorldCupRankVo> worldCupRank1 = worldCupCompetitorService.getWorldCupRank(worldCupRank); + return ResultUtil.success(worldCupRank1); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + @ResponseBody + @PostMapping("/api/worldCup/getWorldCupListFromRank") + @ApiOperation(value = "获取报名的赛事 排名使用【3.1】", tags = {"APP-个人中心"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<List<WorldCupListVo>> getWorldCupListFromRank(MyWorldCupList myWorldCupList){ + try { + Integer uid = tokenUtil.getUserIdFormRedis(); + if(null == uid){ + return ResultUtil.tokenErr(); + } + List<WorldCupListVo> worldCupRank1 = worldCupCompetitorService.getWorldCupListFromRank(myWorldCupList); + return ResultUtil.success(worldCupRank1); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + @ResponseBody + @PostMapping("/api/worldCup/getWorldCupCodeListId") + @ApiOperation(value = "获取赛事的赛点 非智慧比赛用 【3.1】", tags = {"APP-个人中心"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<List<WorldCupCodeListVo>> getWorldCupCodeListId(Integer worldCupId){ + try { + Integer uid = tokenUtil.getUserIdFormRedis(); + if(null == uid){ + return ResultUtil.tokenErr(); + } + List<WorldCupCodeListVo> worldCupRank1 = worldCupCompetitorService.getWorldCupCodeListId(worldCupId); return ResultUtil.success(worldCupRank1); }catch (Exception e){ e.printStackTrace(); @@ -1160,4 +1233,201 @@ .last(" and createTime between '" + sdf.format(getWorldCupPayment.getStartTime()) + "' and '" + sdf.format(getWorldCupPayment.getEndTime()) + "' order by createTime desc")); return list; } + + + @PostMapping("/worldCup/userDetailsOfSearch") + @ResponseBody + public List<WorldCupUserListVo> userDetailsOfSearch(@RequestBody UserDetailsOfSearch search){ + // 已报名的用户 + List<WorldCupPaymentParticipant> list = worldCupPaymentParticipantService.list(new LambdaQueryWrapper<WorldCupPaymentParticipant>().eq(WorldCupPaymentParticipant::getWorldCupId, search.getId()) + .eq(WorldCupPaymentParticipant::getAlreadyEntered, 0)); + ArrayList<WorldCupUserListVo> worldCupUserListVos = new ArrayList<>(); + if(list.size()>0){ + List<Integer> collect = list.stream().map(WorldCupPaymentParticipant::getAppUserId).collect(Collectors.toList()); + search.setUseIds(collect); + List<AppUser> appUsers = appUserClient.queryAppUserByIds(search); + + for (AppUser appUser : appUsers) { + WorldCupUserListVo worldCupUserListVo = new WorldCupUserListVo(); + WorldCupPaymentParticipant worldCupPaymentParticipant = list.stream().filter(e -> e.getAppUserId().equals(appUser.getId())).findFirst().orElse(null); + if(worldCupPaymentParticipant!=null){ + worldCupUserListVo.setId(worldCupPaymentParticipant.getId()); + worldCupUserListVo.setName(appUser.getName()); + worldCupUserListVo.setSex(appUser.getGender() !=null && appUser.getGender()==2?"女":"男"); + worldCupUserListVo.setPhone(appUser.getPhone()); + worldCupUserListVo.setIdCard(appUser.getIdCard()); + // 当前日期和生日计算年龄 + Date birthday = appUser.getBirthday(); + LocalDate now = LocalDate.now(); + if(birthday!=null){ + int age = now.getYear() - birthday.getYear(); + worldCupUserListVo.setAge(age); + } + worldCupUserListVos.add(worldCupUserListVo); + } + } + + } + return worldCupUserListVos; + } + + + + + @PostMapping("/worldCup/savaData1") + public void savaData1(@RequestBody SaveData saveData) throws ParseException { + + WorldCup worldCup = worldCupService.getById(saveData.getId()); + + String redStr = saveData.getRedStr(); + String blueStr = saveData.getBlueStr(); + String[] red = redStr.split(","); + String[] blue = blueStr.split(","); + ArrayList<String> list = new ArrayList<>(red.length+blue.length); + list.addAll(Arrays.asList(red)); + list.addAll(Arrays.asList(blue)); + String time = saveData.getTime(); + String[] split = time.split(" - "); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date startTime = simpleDateFormat.parse(split[0]); + Date endTime = simpleDateFormat.parse(split[1]); + Integer blueScore = saveData.getBlueScore(); + Integer redScore = saveData.getRedScore(); + List<WorldCupPaymentParticipant> list1 = worldCupPaymentParticipantService.list(new LambdaQueryWrapper<WorldCupPaymentParticipant>().in(WorldCupPaymentParticipant::getId, list)); + String code = UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(3); + ArrayList<WorldCupCompetitor> worldCupCompetitors = new ArrayList<>(red.length + blue.length); + for (String s : blue) { + WorldCupPaymentParticipant worldCupPaymentParticipant = list1.stream().filter(e -> e.getId().equals(s)).findFirst().orElse(null); + if(worldCupPaymentParticipant!=null){ + WorldCupCompetitor worldCupCompetitor =new WorldCupCompetitor(); + worldCupCompetitor.setCode(code); + worldCupCompetitor.setWorldCupId(saveData.getId().intValue()); + worldCupCompetitor.setParticipantType(worldCupPaymentParticipant.getParticipantType()); + worldCupCompetitor.setAppUserId(worldCupPaymentParticipant.getAppUserId()); + worldCupCompetitor.setParticipantId(worldCupPaymentParticipant.getParticipantId()); + worldCupCompetitor.setParticipant(1); + worldCupCompetitor.setStartTime(startTime); + worldCupCompetitor.setEndTime(endTime); + if(blueScore>redScore){ + worldCupCompetitor.setMatchResult(1); + worldCupCompetitor.setWinIntegral(worldCup.getWinIntegral()); + //增加积分明细 + SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); + vo.setAppUserId(worldCupCompetitor.getAppUserId()); + vo.setIntegral(worldCup.getWinIntegral()); + vo.setType(7); + userIntegralChangesClient.saveUserIntegralChanges(vo); + } + if(blueScore.equals(redScore)){ + worldCupCompetitor.setMatchResult(0); + worldCupCompetitor.setDrawIntegral(worldCup.getDrawIntegral()); + //增加积分明细 + SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); + vo.setAppUserId(worldCupCompetitor.getAppUserId()); + vo.setIntegral(worldCup.getDrawIntegral()); + vo.setType(9); + userIntegralChangesClient.saveUserIntegralChanges(vo); + } + if(blueScore<redScore){ + worldCupCompetitor.setMatchResult(-1); + worldCupCompetitor.setLoseIntegral(worldCup.getLoseIntegral()); + //增加积分明细 + SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); + vo.setAppUserId(worldCupCompetitor.getAppUserId()); + vo.setIntegral(worldCup.getLoseIntegral()); + vo.setType(10); + userIntegralChangesClient.saveUserIntegralChanges(vo); + } + worldCupCompetitor.setOpponentScore(redScore); + worldCupCompetitor.setParticipationIntegral(worldCup.getParticipationIntegral()); + //增加积分明细 + SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); + vo.setAppUserId(worldCupCompetitor.getAppUserId()); + vo.setIntegral(worldCup.getParticipationIntegral()); + vo.setType(6); + userIntegralChangesClient.saveUserIntegralChanges(vo); + + worldCupCompetitorService.save(worldCupCompetitor); + worldCupCompetitors.add(worldCupCompetitor); + } + } + + for (String s : red) { + WorldCupPaymentParticipant worldCupPaymentParticipant = list1.stream().filter(e -> e.getId().equals(s)).findFirst().orElse(null); + if(worldCupPaymentParticipant!=null){ + WorldCupCompetitor worldCupCompetitor =new WorldCupCompetitor(); + worldCupCompetitor.setCode(code); + worldCupCompetitor.setWorldCupId(saveData.getId().intValue()); + worldCupCompetitor.setParticipantType(worldCupPaymentParticipant.getParticipantType()); + worldCupCompetitor.setAppUserId(worldCupPaymentParticipant.getAppUserId()); + worldCupCompetitor.setParticipantId(worldCupPaymentParticipant.getParticipantId()); + worldCupCompetitor.setParticipant(1); + worldCupCompetitor.setStartTime(startTime); + worldCupCompetitor.setEndTime(endTime); + if(redScore>blueScore){ + worldCupCompetitor.setMatchResult(1); + worldCupCompetitor.setWinIntegral(worldCup.getWinIntegral()); + //增加积分明细 + SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); + vo.setAppUserId(worldCupCompetitor.getAppUserId()); + vo.setIntegral(worldCup.getWinIntegral()); + vo.setType(7); + userIntegralChangesClient.saveUserIntegralChanges(vo); + } + if(blueScore.equals(redScore)){ + worldCupCompetitor.setMatchResult(0); + worldCupCompetitor.setDrawIntegral(worldCup.getDrawIntegral()); + //增加积分明细 + SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); + vo.setAppUserId(worldCupCompetitor.getAppUserId()); + vo.setIntegral(worldCup.getDrawIntegral()); + vo.setType(9); + userIntegralChangesClient.saveUserIntegralChanges(vo); + } + if(redScore<blueScore){ + worldCupCompetitor.setMatchResult(-1); + worldCupCompetitor.setLoseIntegral(worldCup.getLoseIntegral()); + //增加积分明细 + SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); + vo.setAppUserId(worldCupCompetitor.getAppUserId()); + vo.setIntegral(worldCup.getLoseIntegral()); + vo.setType(10); + userIntegralChangesClient.saveUserIntegralChanges(vo); + } + worldCupCompetitor.setOpponentScore(redScore); + worldCupCompetitor.setParticipationIntegral(worldCup.getParticipationIntegral()); + //增加积分明细 + SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo(); + vo.setAppUserId(worldCupCompetitor.getAppUserId()); + vo.setIntegral(worldCup.getParticipationIntegral()); + vo.setType(6); + userIntegralChangesClient.saveUserIntegralChanges(vo); + + worldCupCompetitorService.save(worldCupCompetitor); + worldCupCompetitors.add(worldCupCompetitor); + } + } + + //添加勋章 + for (WorldCupCompetitor worldCupCompetitor : worldCupCompetitors) { + Integer appUserId = worldCupCompetitor.getAppUserId(); + //常胜将军 + if(1 == worldCupCompetitor.getMatchResult()){ + int count = worldCupCompetitorService.count(new QueryWrapper<WorldCupCompetitor>().eq("appUserId", appUserId).eq("matchResult", 1)); + StudentHonor studentHonor = new StudentHonor(); + studentHonor.setAppUserId(appUserId); + studentHonor.setHonorType(5); + studentHonor.setNumber(count); + studentHonorClient.saveStudentHonor(studentHonor); + } + //越战越勇 + int count = worldCupCompetitorService.count(new QueryWrapper<WorldCupCompetitor>().eq("appUserId", appUserId)); + StudentHonor studentHonor = new StudentHonor(); + studentHonor.setAppUserId(appUserId); + studentHonor.setHonorType(6); + studentHonor.setNumber(count); + studentHonorClient.saveStudentHonor(studentHonor); + } + + } } -- Gitblit v1.7.1