From 334fbd5f1a5a4e85c198560bd024211ba4cf99b1 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期一, 11 三月 2024 18:27:27 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/2.0' into 2.0 --- cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java | 206 ++++++++++++++++++++++++++++++++++---------------- 1 files changed, 139 insertions(+), 67 deletions(-) diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java index d327581..cd2e3db 100644 --- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java +++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java @@ -9,7 +9,9 @@ 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.UserIntegralChangesClient; import com.dsh.communityWorldCup.feignclient.account.model.AppUser; +import com.dsh.communityWorldCup.feignclient.account.model.SaveUserIntegralChangesVo; import com.dsh.communityWorldCup.feignclient.account.model.TStudent; import com.dsh.communityWorldCup.feignclient.competition.ParticipantClient; import com.dsh.communityWorldCup.feignclient.competition.model.Participant; @@ -73,6 +75,9 @@ @Resource private GameClient gameClient; + @Resource + private UserIntegralChangesClient userIntegralChangesClient; + @@ -131,7 +136,7 @@ List<Long> ids = new ArrayList<>(); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); - Integer id = jsonObject.getInteger("id"); + Long id = jsonObject.getLong("id"); Integer participantType = jsonObject.getInteger("participantType"); String type = jsonObject.getString("type"); WorldCupCompetitor worldCupCompetitor = new WorldCupCompetitor(); @@ -143,22 +148,33 @@ worldCupCompetitor.setParticipantId(id); worldCupCompetitor.setParticipant("blue".equals(type) ? 1 : 2); worldCupCompetitor.setStartTime(new Date()); + //添加参赛奖励 + if(null != worldCup.getParticipationIntegral() && 0 < worldCup.getParticipationIntegral()){ + 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); ids.add(worldCupCompetitor.getId()); //已参赛 - worldCupPaymentParticipant.setAlreadyEntered(1); - worldCupPaymentParticipantService.updateById(worldCupPaymentParticipant); +// worldCupPaymentParticipant.setAlreadyEntered(1); +// worldCupPaymentParticipantService.updateById(worldCupPaymentParticipant); } //2、调起开启游戏的接口。 HashMap<String, String> map = new HashMap<>(); map.put("sign", "0DB011836143EEE2C2E072967C9F4E4B"); - map.put("space_id", tGame.getSiteId() + ""); + map.put("space_id", tGame.getStoreId() + ""); map.put("red_sutu_id", tGame.getRed()); map.put("blue_sutu_id", tGame.getBlue()); map.put("api_url", "http://221.182.45.100:56666/communityWorldCup/base/worldCup/endWorldCupCallback"); map.put("custom", JSON.toJSONString(ids)); - String s = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/batterGame", map); + String s = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/quickStart", map); JSONObject jsonObject = JSONObject.parseObject(s); Integer code1 = jsonObject.getInteger("code"); String message = jsonObject.getString("message"); @@ -177,9 +193,17 @@ */ @Override public Integer getCompletedWorldCupTips(Integer uid) { - int count = worldCupCompetitorService.count(new QueryWrapper<WorldCupCompetitor>() - .eq("appUserId", uid).eq("tips", 0).isNotNull("endTime")); - return count; + List<WorldCupCompetitor> list = worldCupCompetitorService.list(new QueryWrapper<WorldCupCompetitor>() + .eq("appUserId", uid).eq("tips", 0).isNotNull("endTime") + .orderByDesc("endTime").last(" limit 0, 1")); + list.forEach(v->{ + v.setWorldCupId(null); + v.setTips(1); + }); + if(list.size() > 0){ + worldCupCompetitorService.updateBatchById(list); + } + return list.size(); } @@ -190,10 +214,6 @@ */ @Override public List<WorldCupListVo> getWorldCupList(WorldCupList worldCupList) { - //没有筛选门店,默认使用当前门店 - if(null == worldCupList.getStoreId()){ - worldCupList.setStoreId(worldCupList.getStoreId()); - } List<WorldCupListVo> worldCupList1 = this.baseMapper.getWorldCupList(worldCupList); for (WorldCupListVo worldCupListVo : worldCupList1) { Integer id = Integer.valueOf(worldCupListVo.getId()); @@ -261,6 +281,14 @@ int count = worldCupPaymentParticipantService.count(new QueryWrapper<WorldCupPaymentParticipant>().in("worldCupPaymentId", collect)); heat += count; } + String infoImg = worldCupInfo.getInfoImg(); + JSONArray jsonArray1 = JSON.parseArray(infoImg); + String imgs = ""; + for (int i = 0; i < jsonArray1.size(); i++) { + String url = jsonArray1.getJSONObject(i).getString("url"); + imgs += url + ","; + } + worldCupInfo.setInfoImg(imgs.substring(0,imgs.length() - 1)); worldCupInfo.setHeat(heat); ArrayList<Map<String, Object>> objects = new ArrayList<>(); for (WorldCupStore worldCupStore : worldCupStores) { @@ -302,8 +330,14 @@ @Override public CheckPaymentMethodVo checkPaymentMethod(CheckPaymentMethod checkPaymentMethod) { WorldCup worldCup = this.getById(checkPaymentMethod.getId()); - JSONArray jsonArray = JSON.parseArray(checkPaymentMethod.getIds()); + String[] split = worldCup.getPayType().split(","); CheckPaymentMethodVo checkPaymentMethodVo = new CheckPaymentMethodVo(); + if(split.length == 1 && "0".equals(split[0])){ + checkPaymentMethodVo.setPaiCoin(0); + checkPaymentMethodVo.setClassHour(0); + return checkPaymentMethodVo; + } + JSONArray jsonArray = JSON.parseArray(checkPaymentMethod.getIds()); AppUser appUser = appUserClient.getAppUser(checkPaymentMethod.getUid()); BigDecimal multiply = new BigDecimal(jsonArray.size()).multiply(new BigDecimal(worldCup.getPaiCoin())); if(appUser.getPlayPaiCoins() < multiply.intValue()){ @@ -354,16 +388,27 @@ if(System.currentTimeMillis() > worldCup.getEndTime().getTime()){ return ResultUtil.error("世界杯赛事已结束,无法完成报名"); } + List<WorldCupPayment> list = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>().eq("worldCupId", worldCup.getId()).eq("appUserId", paymentWorldCup.getUid()) + .eq("payStatus", 2).eq("state", 1)); + List<Long> collect = list.stream().map(WorldCupPayment::getId).collect(Collectors.toList()); String ids = paymentWorldCup.getIds(); JSONArray jsonArray = JSON.parseArray(ids); SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); - Integer id = jsonObject.getInteger("id"); + Long id = jsonObject.getLong("id"); //是否是学员(0=否,1=是) Integer isStudent = jsonObject.getInteger("isStudent"); if(isStudent == 1){ - TStudent tStudent = studentClient.queryById(id); + TStudent tStudent = studentClient.queryById(id.intValue()); + if(collect.size() > 0){ + WorldCupPaymentParticipant one = worldCupPaymentParticipantService.getOne(new QueryWrapper<WorldCupPaymentParticipant>().eq("worldCupId", worldCup.getId()) + .eq("participantId", id).eq("participantType", isStudent == 0 ? 2 : 1).in("worldCupPaymentId", collect)); + if(null != one){ + return ResultUtil.error("【" + tStudent.getName() + "】已报过名了"); + } + } + if(worldCup.getStartAge() > (Integer.valueOf(sdf.format(new Date())) - Integer.valueOf(sdf.format(tStudent.getBirthday())))){ return ResultUtil.error("【" + tStudent.getName() + "】年龄不符合要求"); } @@ -372,6 +417,14 @@ } }else{ Participant participant = participantClient.getParticipant(id); + if(collect.size() > 0){ + WorldCupPaymentParticipant one = worldCupPaymentParticipantService.getOne(new QueryWrapper<WorldCupPaymentParticipant>().eq("worldCupId", worldCup.getId()) + .eq("participantId", id).eq("participantType", isStudent == 0 ? 2 : 1).in("worldCupPaymentId", collect)); + if(null != one){ + return ResultUtil.error("【" + participant.getName() + "】已报过名了"); + } + } + if(worldCup.getStartAge() > (Integer.valueOf(sdf.format(new Date())) - Integer.valueOf(sdf.format(participant.getBirthday())))){ return ResultUtil.error("【" + participant.getName() + "】年龄不符合要求"); } @@ -451,7 +504,7 @@ JSONArray jsonArray = JSON.parseArray(ids); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); - Integer id = jsonObject.getInteger("id"); + Long id = jsonObject.getLong("id"); //是否是学员(0=否,1=是) Integer isStudent = jsonObject.getInteger("isStudent"); @@ -475,13 +528,13 @@ List<DeductionClassHour> list = new ArrayList<>(); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); - Integer id = jsonObject.getInteger("id"); + Long id = jsonObject.getLong("id"); //是否是学员(0=否,1=是) Integer isStudent = jsonObject.getInteger("isStudent"); if(0 == isStudent){ return ResultUtil.error("非学员无法使用课时报名"); } - List<CoursePackageOrderStudent> coursePackageOrderStudent = coursePackageOrderStudentClient.getCoursePackageOrderStudent(id); + List<CoursePackageOrderStudent> coursePackageOrderStudent = coursePackageOrderStudentClient.getCoursePackageOrderStudent(id.intValue()); int sum = coursePackageOrderStudent.stream().mapToInt(CoursePackageOrderStudent::getLaveClassHours).sum(); if(sum < worldCup.getClassHour()){ return ResultUtil.error("报名失败,课时不足,请续课!"); @@ -516,7 +569,6 @@ DeductionClassHourList deductionClassHourList = new DeductionClassHourList(); deductionClassHourList.setDeductionClassHourList(list); DeductionClassHourList deductionClassHourList1 = coursePackageOrderStudentClient.deductionClassHour(deductionClassHourList); - List<DeductionClassHour> deductionClassHourList2 = deductionClassHourList1.getDeductionClassHourList(); WorldCupPaymentParticipant worldCupPaymentParticipant = new WorldCupPaymentParticipant(); worldCupPaymentParticipant.setWorldCupId(paymentWorldCup.getId()); @@ -526,7 +578,7 @@ worldCupPaymentParticipant.setParticipantId(id); worldCupPaymentParticipant.setAlreadyEntered(0); worldCupPaymentParticipant.setCreateTime(new Date()); - worldCupPaymentParticipant.setContent(JSON.toJSONString(deductionClassHourList2)); + worldCupPaymentParticipant.setContent(JSON.toJSONString(deductionClassHourList1)); worldCupPaymentParticipantService.save(worldCupPaymentParticipant); } @@ -539,7 +591,7 @@ //添加报名明细 for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); - Integer id = jsonObject.getInteger("id"); + Long id = jsonObject.getLong("id"); //是否是学员(0=否,1=是) Integer isStudent = jsonObject.getInteger("isStudent"); @@ -568,7 +620,7 @@ JSONArray jsonArray = JSON.parseArray(ids); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); - Integer id = jsonObject.getInteger("id"); + Long id = jsonObject.getLong("id"); //是否是学员(0=否,1=是) Integer isStudent = jsonObject.getInteger("isStudent"); @@ -606,7 +658,7 @@ JSONArray jsonArray = JSON.parseArray(ids); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); - Integer id = jsonObject.getInteger("id"); + Long id = jsonObject.getLong("id"); //是否是学员(0=否,1=是) Integer isStudent = jsonObject.getInteger("isStudent"); @@ -661,11 +713,17 @@ .eq("worldCupId", id).eq("alreadyEntered", 0)); Set<Long> collect = list.stream().map(WorldCupPaymentParticipant::getWorldCupPaymentId).collect(Collectors.toSet()); for (Long worldCupPaymentId : collect) { - List<WorldCupPaymentParticipant> list1 = worldCupPaymentParticipantService.list(new QueryWrapper<WorldCupPaymentParticipant>() .eq("worldCupPaymentId", worldCupPaymentId).eq("alreadyEntered", 0)); WorldCupPayment worldCupPayment = worldCupPaymentService.getById(worldCupPaymentId); BigDecimal multiply = worldCupPayment.getUnitPrice().multiply(new BigDecimal(list1.size())); + //免费 + if(worldCupPayment.getPayType() == 0){ + worldCupPayment.setRefundOrderNo(""); + worldCupPayment.setRefundTime(new Date()); + worldCupPayment.setPayStatus(3); + worldCupPaymentService.updateById(worldCupPayment); + } //微信支付 if(worldCupPayment.getPayType() == 1){ Map<String, String> map = payMoneyUtil.wxRefund(worldCupPayment.getPayOrderNo(), worldCupPayment.getCode(), @@ -701,58 +759,72 @@ worldCupPayment.setRefundOrderNo(""); worldCupPayment.setPayStatus(3); worldCupPaymentService.updateById(worldCupPayment); - }//课时支付 + } + //课时支付 if(worldCupPayment.getPayType() == 4){ for (WorldCupPaymentParticipant worldCupPaymentParticipant : list1) { - Integer studentId = worldCupPaymentParticipant.getParticipantId();//构建扣减课时数据 String content = worldCupPaymentParticipant.getContent(); - List<DeductionClassHour> list2 = JSON.parseArray(content, DeductionClassHour.class); - - - - - -// Integer classHour = worldCup.getClassHour(); -// for (CoursePackageOrderStudent packageOrderStudent : coursePackageOrderStudent) { -// Integer laveClassHours = packageOrderStudent.getLaveClassHours(); -// -// DeductionClassHour deductionClassHour = new DeductionClassHour(); -// if(classHour.compareTo(laveClassHours) > 0){ -// //不够扣除,轮询直到扣除完 -// classHour = classHour - laveClassHours; -// deductionClassHour.setId(packageOrderStudent.getId()); -// deductionClassHour.setClassHour(laveClassHours); -// deductionClassHour.setStudentId(packageOrderStudent.getStudentId()); -// deductionClassHour.setCoursePackageId(packageOrderStudent.getCoursePackageId()); -// list.add(deductionClassHour); -// }else{ -// //够扣除直接跳出进行下个学员 -// deductionClassHour.setId(packageOrderStudent.getId()); -// deductionClassHour.setClassHour(classHour); -// deductionClassHour.setStudentId(packageOrderStudent.getStudentId()); -// deductionClassHour.setCoursePackageId(packageOrderStudent.getCoursePackageId()); -// list.add(deductionClassHour); -// break; -// } -// } + DeductionClassHourList deductionClassHourList = JSON.parseObject(content, DeductionClassHourList.class); + coursePackageOrderStudentClient.backspaceClassHour(deductionClassHourList); } - - //扣减课时操作 - DeductionClassHourList deductionClassHourList = new DeductionClassHourList(); -// deductionClassHourList.setDeductionClassHourList(list); - coursePackageOrderStudentClient.deductionClassHour(deductionClassHourList); + worldCupPayment.setRefundTime(new Date()); + worldCupPayment.setRefundOrderNo(""); + worldCupPayment.setPayStatus(3); + worldCupPaymentService.updateById(worldCupPayment); } - - } + } - for (WorldCupPaymentParticipant worldCupPaymentParticipant : list) { - - - - + /** + * 定时任务修改状态 + */ + @Override + public void taskUpdateStatus() { + List<WorldCup> worldCups = this.list(new QueryWrapper<WorldCup>().eq("status", 1).last(" and startTime <= now()")); + for (WorldCup worldCup : worldCups) { + worldCup.setStatus(2); } + if(worldCups.size() > 0){ + this.updateBatchById(worldCups); + } + worldCups = this.list(new QueryWrapper<WorldCup>().eq("status", 2).last(" and endTime <= now()")); + for (WorldCup worldCup : worldCups) { + worldCup.setStatus(3); + } + if(worldCups.size() > 0){ + this.updateBatchById(worldCups); + } + } + + /** + * 获取比赛统计列表数据 + * @param worldCupGameStatistics + * @return + */ + @Override + public Map<String, Object> worldCupGameStatistics(WorldCupGameStatistics worldCupGameStatistics) { + Map<String, Object> map = new HashMap<>(); + List<Map<String, Object>> mapList = this.baseMapper.worldCupGameStatistics(worldCupGameStatistics); + for (Map<String, Object> stringObjectMap : mapList) { + Integer id = Integer.valueOf(stringObjectMap.get("id").toString()); + int count = worldCupCompetitorService.count(new QueryWrapper<WorldCupCompetitor>().eq("worldCupId", id)); + stringObjectMap.put("matchTime", count); + + List<WorldCupPayment> list = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>().eq("worldCupId", id) + .eq("payStatus", 2).eq("state", 1)); + List<Long> collect = list.stream().map(WorldCupPayment::getId).collect(Collectors.toList()); + if(collect.size() == 0){ + stringObjectMap.put("applicants", 0); + }else{ + int count1 = worldCupPaymentParticipantService.getCount(id, collect); + stringObjectMap.put("applicants", count1); + } + } + map.put("rows", mapList); + int count = this.baseMapper.worldCupGameStatisticsCount(worldCupGameStatistics); + map.put("total", count); + return map; } } -- Gitblit v1.7.1