From b3e0d0ea6c1e311566bab861b79cc9b9c6d25287 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 15 三月 2024 09:49:03 +0800
Subject: [PATCH] 修改bug

---
 cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java |  150 +++++++++++++++++++++++++++++++------------------
 1 files changed, 94 insertions(+), 56 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 dfb6c24..aa8c625 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
@@ -89,15 +89,22 @@
     @Override
     public List<WorldCupListCoachVo> getWorldCupListCoach(WorldCupListCoach worldCupListCoach) {
         List<WorldCupListCoachVo> worldCupListCoach1 = this.baseMapper.getWorldCupListCoach(worldCupListCoach);
+        for (WorldCupListCoachVo worldCupListCoachVo : worldCupListCoach1) {
+            String lat = worldCupListCoachVo.getLat();
+            String lon = worldCupListCoachVo.getLon();
+            if(ToolUtil.isNotEmpty(worldCupListCoach.getLon()) && ToolUtil.isNotEmpty(worldCupListCoach.getLat())){
+                Map<String, Double> distance2 = GeodesyUtil.getDistance(lon + "," + lat, worldCupListCoach.getLon() + "," + worldCupListCoach.getLat());
+                Double wgs842 = distance2.get("WGS84");
+                worldCupListCoachVo.setDistance(wgs842);
+            }else{
+                worldCupListCoachVo.setDistance(0D);
+            }
+        }
         //对查询结果进行距离排序(直线距离)
         Collections.sort(worldCupListCoach1, new Comparator<WorldCupListCoachVo>() {
             @Override
             public int compare(WorldCupListCoachVo o1, WorldCupListCoachVo o2) {
-                Map<String, Double> distance1 = GeodesyUtil.getDistance(o1.getLon() + "," + o1.getLat(), worldCupListCoach.getLon() + "," + worldCupListCoach.getLat());
-                Double wgs841 = distance1.get("WGS84");
-                Map<String, Double> distance2 = GeodesyUtil.getDistance(o2.getLon() + "," + o2.getLat(), worldCupListCoach.getLon() + "," + worldCupListCoach.getLat());
-                Double wgs842 = distance2.get("WGS84");
-                return wgs841.compareTo(wgs842);
+                return o1.getDistance().compareTo(o2.getDistance());
             }
         });
         return worldCupListCoach1;
@@ -165,8 +172,10 @@
             worldCupCompetitorService.save(worldCupCompetitor);
             ids.add(worldCupCompetitor.getId());
             //已参赛
-//            worldCupPaymentParticipant.setAlreadyEntered(1);
-//            worldCupPaymentParticipantService.updateById(worldCupPaymentParticipant);
+            if(0 == worldCupPaymentParticipant.getAlreadyEntered()){
+                worldCupPaymentParticipant.setAlreadyEntered(1);
+                worldCupPaymentParticipantService.updateById(worldCupPaymentParticipant);
+            }
         }
         worldCup.setMatchNumber(worldCup.getMatchNumber() + 1);
         this.updateById(worldCup);
@@ -220,6 +229,9 @@
      */
     @Override
     public List<WorldCupListVo> getWorldCupList(WorldCupList worldCupList) {
+        if(null != worldCupList.getGender() && 0 == worldCupList.getGender()){
+            worldCupList.setGender(null);
+        }
         List<WorldCupListVo> worldCupList1 = this.baseMapper.getWorldCupList(worldCupList);
         for (WorldCupListVo worldCupListVo : worldCupList1) {
             Integer id = Integer.valueOf(worldCupListVo.getId());
@@ -233,8 +245,12 @@
             worldCupListVo.setHeat(heat);
             String lat = worldCupListVo.getLat();
             String lon = worldCupListVo.getLon();
-            Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, worldCupList.getLon() + "," + worldCupList.getLat());
-            worldCupListVo.setDistance(distance.get("WGS84"));
+            if(ToolUtil.isNotEmpty(lat) && ToolUtil.isNotEmpty(lon)){
+                Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, worldCupList.getLon() + "," + worldCupList.getLat());
+                worldCupListVo.setDistance(distance.get("WGS84"));
+            }else{
+                worldCupListVo.setDistance(0D);
+            }
         }
 
 
@@ -324,6 +340,25 @@
             objects.add(map);
         }
         worldCupInfo.setStoreInfos(objects);
+        String address = worldCupInfo.getAddress();
+        String province = worldCupInfo.getProvince();
+        String city = worldCupInfo.getCity();
+        int index = address.indexOf("市");
+        if(index != -1){
+            address = address.substring(index + 1);
+            worldCupInfo.setAddress(address);
+        }
+        index = province.indexOf("省");
+        if(index != -1){
+            province = province.substring(0, index - 1);
+            worldCupInfo.setProvince(province);
+        }
+        index = city.indexOf("市");
+        if(index != -1){
+            city = city.substring(0, index - 1);
+            worldCupInfo.setCity(city);
+        }
+
         return worldCupInfo;
     }
 
@@ -404,6 +439,10 @@
             int count = worldCupPaymentParticipantService.count(new QueryWrapper<WorldCupPaymentParticipant>().eq("worldCupId", worldCup.getId())
                     .eq("worldCupPaymentId", ids));
             if((count + jsonArray.size()) >= worldCup.getMaxPeople()){
+                return ResultUtil.error("已超出最大报名人数");
+            }
+        }else{
+            if(jsonArray.size() > worldCup.getMaxPeople()){
                 return ResultUtil.error("已超出最大报名人数");
             }
         }
@@ -550,25 +589,43 @@
                 BigDecimal multiply = new BigDecimal(num).multiply(new BigDecimal(worldCup.getClassHour()));
                 String ids = paymentWorldCup.getIds();
                 JSONArray jsonArray = JSON.parseArray(ids);
-                List<DeductionClassHour> list = new ArrayList<>();
+
+
+                List<CoursePackageOrderStudent> coursePackageOrderStudent = coursePackageOrderStudentClient.getCoursePackageOrderUser(paymentWorldCup.getUid());
+                int sum = coursePackageOrderStudent.stream().mapToInt(CoursePackageOrderStudent::getLaveClassHours).sum();
+                if(sum < worldCup.getClassHour()){
+                    return ResultUtil.error("报名失败,课时不足,请续课!");
+                }
+
                 for (int i = 0; i < jsonArray.size(); i++) {
                     JSONObject jsonObject = jsonArray.getJSONObject(i);
-                    Long id = jsonObject.getLong("id");
                     //是否是学员(0=否,1=是)
                     Integer isStudent = jsonObject.getInteger("isStudent");
                     if(0 == isStudent){
                         return ResultUtil.error("非学员无法使用课时报名");
                     }
-                    List<CoursePackageOrderStudent> coursePackageOrderStudent = coursePackageOrderStudentClient.getCoursePackageOrderStudent(id.intValue());
-                    int sum = coursePackageOrderStudent.stream().mapToInt(CoursePackageOrderStudent::getLaveClassHours).sum();
-                    if(sum < worldCup.getClassHour()){
-                        return ResultUtil.error("报名失败,课时不足,请续课!");
-                    }
+                }
 
+                worldCupPayment.setAmount(multiply);
+                worldCupPayment.setPayStatus(2);
+                worldCupPayment.setPayTime(new Date());
+                worldCupPayment.setUnitPrice(worldCupPayment.getAmount().divide(new BigDecimal(num)));
+                worldCupPaymentService.save(worldCupPayment);
+
+                //添加报名明细
+                for (int i = 0; i < jsonArray.size(); i++) {
+                    JSONObject jsonObject = jsonArray.getJSONObject(i);
+                    Long id = jsonObject.getLong("id");
+                    //是否是学员(0=否,1=是)
+                    Integer isStudent = jsonObject.getInteger("isStudent");
+                    List<DeductionClassHour> list = new ArrayList<>();
                     //构建扣减课时数据
                     Integer classHour = worldCup.getClassHour();
                     for (CoursePackageOrderStudent packageOrderStudent : coursePackageOrderStudent) {
                         Integer laveClassHours = packageOrderStudent.getLaveClassHours();
+                        if(laveClassHours == 0){
+                            continue;
+                        }
 
                         DeductionClassHour deductionClassHour = new DeductionClassHour();
                         if(classHour.compareTo(laveClassHours) > 0){
@@ -578,6 +635,7 @@
                             deductionClassHour.setClassHour(laveClassHours);
                             deductionClassHour.setStudentId(packageOrderStudent.getStudentId());
                             deductionClassHour.setCoursePackageId(packageOrderStudent.getCoursePackageId());
+                            packageOrderStudent.setLaveClassHours(0);
                             list.add(deductionClassHour);
                         }else{
                             //够扣除直接跳出进行下个学员
@@ -585,6 +643,7 @@
                             deductionClassHour.setClassHour(classHour);
                             deductionClassHour.setStudentId(packageOrderStudent.getStudentId());
                             deductionClassHour.setCoursePackageId(packageOrderStudent.getCoursePackageId());
+                            packageOrderStudent.setLaveClassHours(laveClassHours - classHour);
                             list.add(deductionClassHour);
                             break;
                         }
@@ -604,29 +663,6 @@
                     worldCupPaymentParticipant.setAlreadyEntered(0);
                     worldCupPaymentParticipant.setCreateTime(new Date());
                     worldCupPaymentParticipant.setContent(JSON.toJSONString(deductionClassHourList1));
-                    worldCupPaymentParticipantService.save(worldCupPaymentParticipant);
-                }
-
-                worldCupPayment.setAmount(multiply);
-                worldCupPayment.setPayStatus(2);
-                worldCupPayment.setPayTime(new Date());
-                worldCupPayment.setUnitPrice(worldCupPayment.getAmount().divide(new BigDecimal(num)));
-                worldCupPaymentService.save(worldCupPayment);
-
-                //添加报名明细
-                for (int i = 0; i < jsonArray.size(); i++) {
-                    JSONObject jsonObject = jsonArray.getJSONObject(i);
-                    Long id = jsonObject.getLong("id");
-                    //是否是学员(0=否,1=是)
-                    Integer isStudent = jsonObject.getInteger("isStudent");
-
-                    WorldCupPaymentParticipant worldCupPaymentParticipant = new WorldCupPaymentParticipant();
-                    worldCupPaymentParticipant.setWorldCupId(paymentWorldCup.getId());
-                    worldCupPaymentParticipant.setWorldCupPaymentId(worldCupPayment.getId());
-                    worldCupPaymentParticipant.setAppUserId(paymentWorldCup.getUid());
-                    worldCupPaymentParticipant.setParticipantType(isStudent == 0 ? 2 : 1);
-                    worldCupPaymentParticipant.setParticipantId(id);
-                    worldCupPaymentParticipant.setAlreadyEntered(0);
                     worldCupPaymentParticipantService.save(worldCupPaymentParticipant);
                 }
 
@@ -674,8 +710,11 @@
     @Override
     public ResultUtil paymentWorldCupCallback(String code, String outTradeNo) {
         WorldCupPayment worldCupPayment = worldCupPaymentService.getOne(new QueryWrapper<WorldCupPayment>().eq("code", code));
+        Integer worldCupId = worldCupPayment.getWorldCupId();
         worldCupPayment.setPayStatus(2);
+        worldCupPayment.setPayOrderNo(outTradeNo);
         worldCupPayment.setPayTime(new Date());
+        worldCupPayment.setWorldCupId(null);
         worldCupPaymentService.updateById(worldCupPayment);
 
         //添加报名明细
@@ -688,7 +727,7 @@
             Integer isStudent = jsonObject.getInteger("isStudent");
 
             WorldCupPaymentParticipant worldCupPaymentParticipant = new WorldCupPaymentParticipant();
-            worldCupPaymentParticipant.setWorldCupId(worldCupPayment.getWorldCupId());
+            worldCupPaymentParticipant.setWorldCupId(worldCupId);
             worldCupPaymentParticipant.setWorldCupPaymentId(worldCupPayment.getId());
             worldCupPaymentParticipant.setAppUserId(worldCupPayment.getAppUserId());
             worldCupPaymentParticipant.setParticipantType(isStudent == 0 ? 2 : 1);
@@ -734,22 +773,14 @@
      */
     @Override
     public void cancelWorldCupRefund(Integer id) {
-        List<WorldCupPaymentParticipant> list = worldCupPaymentParticipantService.list(new QueryWrapper<WorldCupPaymentParticipant>()
-                .eq("worldCupId", id).eq("alreadyEntered", 0));
-        Set<Long> collect = list.stream().map(WorldCupPaymentParticipant::getWorldCupPaymentId).collect(Collectors.toSet());
-        for (Long worldCupPaymentId : collect) {
+        //免费除外
+        List<WorldCupPayment> list2 = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>().eq("worldCupId", id)
+                .ne("payType", 0).eq("payStatus", 2).eq("state", 1));
+        for (WorldCupPayment worldCupPayment : list2) {
             List<WorldCupPaymentParticipant> list1 = worldCupPaymentParticipantService.list(new QueryWrapper<WorldCupPaymentParticipant>()
-                    .eq("worldCupPaymentId", worldCupPaymentId).eq("alreadyEntered", 0));
-            WorldCupPayment worldCupPayment = worldCupPaymentService.getById(worldCupPaymentId);
+                    .eq("worldCupId", id).eq("worldCupPaymentId", worldCupPayment.getId()).eq("alreadyEntered", 0));
+            //总支付金额
             BigDecimal multiply = worldCupPayment.getUnitPrice().multiply(new BigDecimal(list1.size()));
-            //免费
-            if(worldCupPayment.getPayType() == 0){
-                worldCupPayment.setWorldCupId(null);
-                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(),
@@ -757,6 +788,9 @@
                 if(!"SUCCESS".equals(map.get("return_code"))){
                     System.err.println("-------------微信退款失败---------");
                     System.err.println(map.get("return_msg"));
+                }else{
+                    worldCupPayment.setRefundAmount(multiply);
+                    worldCupPaymentService.updateById(worldCupPayment);
                 }
             }
             //支付宝支付
@@ -772,6 +806,7 @@
                     worldCupPayment.setWorldCupId(null);
                     worldCupPayment.setRefundTime(new Date());
                     worldCupPayment.setRefundOrderNo(trade_no);
+                    worldCupPayment.setRefundAmount(multiply);
                     worldCupPayment.setPayStatus(3);
                     worldCupPaymentService.updateById(worldCupPayment);
                 }
@@ -785,13 +820,14 @@
                 worldCupPayment.setWorldCupId(null);
                 worldCupPayment.setRefundTime(new Date());
                 worldCupPayment.setRefundOrderNo("");
+                worldCupPayment.setRefundAmount(multiply);
                 worldCupPayment.setPayStatus(3);
                 worldCupPaymentService.updateById(worldCupPayment);
             }
             //课时支付
             if(worldCupPayment.getPayType() == 4){
-                for (WorldCupPaymentParticipant worldCupPaymentParticipant : list1) {
-                    String content = worldCupPaymentParticipant.getContent();
+                for (WorldCupPaymentParticipant worldCupPaymentParticipant1 : list1) {
+                    String content = worldCupPaymentParticipant1.getContent();
                     DeductionClassHourList deductionClassHourList = JSON.parseObject(content, DeductionClassHourList.class);
                     coursePackageOrderStudentClient.backspaceClassHour(deductionClassHourList);
                 }
@@ -799,8 +835,10 @@
                 worldCupPayment.setRefundTime(new Date());
                 worldCupPayment.setRefundOrderNo("");
                 worldCupPayment.setPayStatus(3);
+                worldCupPayment.setRefundAmount(multiply);
                 worldCupPaymentService.updateById(worldCupPayment);
             }
+
         }
     }
 

--
Gitblit v1.7.1