From ee9cb0da4a43bcf523ebb157678f64a2895fba1a Mon Sep 17 00:00:00 2001
From: nickchange <126672920+nickchange@users.noreply.github.com>
Date: 星期二, 10 十月 2023 15:30:38 +0800
Subject: [PATCH] 10.10

---
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java |  351 ++++++++++++++++++++++++++++++----------------------------
 1 files changed, 182 insertions(+), 169 deletions(-)

diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
index aa8c8de..f0e8c04 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
@@ -3,7 +3,9 @@
 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.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dsh.course.entity.CoursePackagePaymentConfig;
 import com.dsh.course.entity.TCoursePackage;
@@ -16,12 +18,13 @@
 import com.dsh.course.mapper.TCoursePackageDiscountMapper;
 import com.dsh.course.mapper.TCoursePackageMapper;
 import com.dsh.course.mapper.TCoursePackagePaymentMapper;
+import com.dsh.course.model.DiscountList;
+import com.dsh.course.model.QueryDiscountList;
+import com.dsh.course.model.vo.response.Details;
 import com.dsh.course.model.vo.response.ExchangeCoursePackageResponse;
-import com.dsh.course.model.vo.response.WeekLimitedResponse;
 import com.dsh.course.service.TCoursePackageDiscountService;
 import com.dsh.course.util.DateTimeHelper;
 import com.dsh.course.util.LocalDateTimeUtils;
-import com.dsh.course.util.ResultUtil;
 import com.dsh.course.util.StrUtils;
 import org.springframework.stereotype.Service;
 
@@ -59,12 +62,11 @@
 
 
     @Override
-    public WeekLimitedResponse getWeeksBenefitCourse(Integer appUserId, Integer discountType, String lon, String lat) {
+    public List<Details> getWeeksBenefitCourse(Integer appUserId, Integer discountType, String lon, String lat) {
         Date localTime = DateTimeHelper.getWXTime();
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
-        WeekLimitedResponse response = new WeekLimitedResponse();
-        List<WeekLimitedResponse.Details> list = new ArrayList<>();
+        List<Details> list = new ArrayList<>();
 
         QueryWrapper<TCoursePackageDiscount> tCoursePackageDiscountQueryWrapper = new QueryWrapper<>();
         tCoursePackageDiscountQueryWrapper.eq("auditStatus", 2);
@@ -72,7 +74,6 @@
         int weekStr = LocalDateTimeUtils.getWeekStr();
         if (null == discountType || discountType == 1) {
             tCoursePackageDiscountQueryWrapper.eq("type", 3);
-            response.setDiscountType(1);
             tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper);
             if (tCoursePackageDiscounts.size() > 0) {
                 for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
@@ -85,16 +86,6 @@
                     if (integer >= maxSubscribeNumber){
                         continue;
                     }
-                    /**
-                     * [{
-                     * 	"startDate": "2023-01-01 00:00:00",
-                     * 	"endDate": "2023-12-31 23:59:59",
-                     * 	"startTime": "02:00:00",
-                     * 	"endTime": "23:00:00",
-                     * 	"weeks": [1, 2, 7],
-                     * 	"cashPayment": 100
-                     * }]
-                     */
                     try {
                         JSONArray jsonArray = JSON.parseArray(tCoursePackageDiscount.getContent());
                         JSONObject jsonObject = jsonArray.getJSONObject(0);
@@ -126,7 +117,7 @@
                         if (isWithinRange) {
                             // 判断当前日期是否在开始时间和结束时间范围内
                             if (isDateWithinRange(localTime, parse1, parse2)) {
-                                WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details();
+                                Details resde = new Details();
 
                                 resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId());
                                 resde.setImage(coursePackage.getCoverDrawing());
@@ -142,7 +133,8 @@
                                 distanceVo.setLatitude(lat);
                                 distanceVo.setLongitude(lon);
                                 distanceVo.setStoreId(coursePackage.getStoreId());
-                                resde.setStoreDistance(sreClient.calculateDistance(distanceVo));
+                                String s = sreClient.calculateDistance(distanceVo);
+                                resde.setStoreDistance(s);
                                 list.add(resde);
                             }
                         }
@@ -154,7 +146,7 @@
                             Date tempDate = tempCalendar.getTime();
                             int weekNumOfDate = DateTimeHelper.getWeekNumOfDate(tempDate);
                             if (isDateWithinRange(tempDate, parse1, parse2) && weeks.contains(weekNumOfDate)) {
-                                WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details();
+                                Details resde = new Details();
 
                                 resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId());
                                 resde.setImage(coursePackage.getCoverDrawing());
@@ -186,133 +178,125 @@
                         e.printStackTrace();
                     }
                 }
-            } else {
-                tCoursePackageDiscountQueryWrapper.eq("type", 4);
-                response.setDiscountType(2);
-                tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper);
-                if (tCoursePackageDiscounts.size() > 0) {
-                    for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
-                        TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId());
+            }
+        }else {
+            tCoursePackageDiscountQueryWrapper.eq("type", 4);
+            tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper);
+            if (tCoursePackageDiscounts.size() > 0) {
+                for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
+                    TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId());
 //                    判断预约人数是否已满
-                        Integer maxSubscribeNumber = coursePackage.getMaxSubscribeNumber();
-                        Integer integer = tcppMapper.selectCount(new QueryWrapper<TCoursePackagePayment>()
-                                .eq("appUserId",appUserId )
-                                .eq("status",1));
-                        if (integer >= maxSubscribeNumber){
-                            continue;
-                        }
-//                    [{
-//                        "startDate": "2023-01-01 00:00:00",
-//                        "endDate": "2023-12-31 23:59:59",
-//                        "startTime": "02:00:00",
-//                        "endTime": "23:00:00",
-//                        "weeks": [1, 2, 7],
-//                        "hour": 10
-//                    }]
+                    Integer maxSubscribeNumber = coursePackage.getMaxSubscribeNumber();
+                    Integer integer = tcppMapper.selectCount(new QueryWrapper<TCoursePackagePayment>()
+                            .eq("appUserId",appUserId )
+                            .eq("status",1));
+                    if (integer >= maxSubscribeNumber){
+                        continue;
+                    }
+                    try {
+                        JSONArray jsonArray = JSON.parseArray(tCoursePackageDiscount.getContent());
+                        JSONObject jsonObject = jsonArray.getJSONObject(0);
+                        Date parse1 = null;
+                        Date parse2 = null;
+                        String startDate = jsonObject.getString("startDate");
+                        String endDate = jsonObject.getString("endDate");
                         try {
-                            JSONArray jsonArray = JSON.parseArray(tCoursePackageDiscount.getContent());
-                            JSONObject jsonObject = jsonArray.getJSONObject(0);
-                            Date parse1 = null;
-                            Date parse2 = null;
-                            String startDate = jsonObject.getString("startDate");
-                            String endDate = jsonObject.getString("endDate");
-                            try {
-                                parse1 = simpleDateFormat.parse(startDate);
-                                parse2 = simpleDateFormat.parse(endDate);
-                            } catch (ParseException e) {
-                                throw new RuntimeException(e);
-                            }
-                            List<Integer> weeks = jsonObject.getJSONArray("weeks").toJavaList(Integer.class);
-                            Integer cashPayment = jsonObject.getInteger("hour");
-
-                            Date tomorrowDate = null;
-                            if (weekStr != 7) {
-                                Calendar calendar = Calendar.getInstance();
-                                calendar.setTime(localTime);
-                                calendar.add(Calendar.DAY_OF_WEEK, 1);
-                                tomorrowDate = calendar.getTime();
-                            }
-
-                            boolean isWithinRange = false;
-                            if (weeks.contains(weekStr)) {
-                                isWithinRange = true;
-                            }
-
-                            if (isWithinRange) {
-                                // 判断当前日期是否在开始时间和结束时间范围内
-                                if (isDateWithinRange(localTime, parse1, parse2)) {
-                                    WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details();
-
-                                    resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId());
-                                    resde.setImage(coursePackage.getCoverDrawing());
-                                    resde.setCoursePackageName(coursePackage.getName());
-                                    CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId());
-                                    resde.setCourseHours(paymentConfig.getClassHours());
-                                    resde.setDonateHours(cashPayment);
-                                    resde.setDataTime("今日");
-                                    resde.setDate(localTime);
-                                    resde.setOriginalPrice(paymentConfig.getCashPayment());
-                                    resde.setStatus(1);
-                                    GetDistanceVo distanceVo = new GetDistanceVo();
-                                    distanceVo.setLatitude(lat);
-                                    distanceVo.setLongitude(lon);
-                                    distanceVo.setStoreId(coursePackage.getStoreId());
-                                    resde.setStoreDistance(sreClient.calculateDistance(distanceVo));
-                                    list.add(resde);
-                                }
-                            }
-                            Calendar tempCalendar = Calendar.getInstance();
-                            tempCalendar.setTime(localTime);
-                            tempCalendar.add(Calendar.DAY_OF_WEEK, 1);
-
-                            while (tempCalendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
-                                Date tempDate = tempCalendar.getTime();
-                                int weekNumOfDate = DateTimeHelper.getWeekNumOfDate(tempDate);
-                                if (isDateWithinRange(tempDate, parse1, parse2) && weeks.contains(weekNumOfDate)) {
-                                    WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details();
-
-                                    resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId());
-                                    resde.setImage(coursePackage.getCoverDrawing());
-                                    resde.setCoursePackageName(coursePackage.getName());
-                                    CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId());
-                                    resde.setCourseHours(paymentConfig.getClassHours());
-                                    resde.setDonateHours(cashPayment);
-                                    String weekOfDate = "";
-                                    if (weekStr != 7 && tempDate.equals(tomorrowDate)) {
-                                        weekOfDate = "明日";
-                                    } else {
-                                        weekOfDate = DateTimeHelper.getWeekOfDate(tempDate);
-                                    }
-                                    resde.setDataTime(weekOfDate);
-                                    resde.setDate(tempDate);
-                                    resde.setOriginalPrice(paymentConfig.getCashPayment());
-                                    resde.setStatus(2);
-                                    GetDistanceVo distanceVo = new GetDistanceVo();
-                                    distanceVo.setLatitude(lat);
-                                    distanceVo.setLongitude(lon);
-                                    distanceVo.setStoreId(coursePackage.getStoreId());
-                                    resde.setStoreDistance(sreClient.calculateDistance(distanceVo));
-                                    list.add(resde);
-                                }
-                                tempCalendar.add(Calendar.DAY_OF_WEEK, 1);
-                            }
-
-                        } catch (Exception e) {
-                            e.printStackTrace();
+                            parse1 = simpleDateFormat.parse(startDate);
+                            parse2 = simpleDateFormat.parse(endDate);
+                        } catch (ParseException e) {
+                            throw new RuntimeException(e);
                         }
+                        List<Integer> weeks = jsonObject.getJSONArray("weeks").toJavaList(Integer.class);
+                        Integer cashPayment = jsonObject.getInteger("hour");
+
+                        Date tomorrowDate = null;
+                        if (weekStr != 7) {
+                            Calendar calendar = Calendar.getInstance();
+                            calendar.setTime(localTime);
+                            calendar.add(Calendar.DAY_OF_WEEK, 1);
+                            tomorrowDate = calendar.getTime();
+                        }
+
+                        boolean isWithinRange = false;
+                        if (weeks.contains(weekStr)) {
+                            isWithinRange = true;
+                        }
+
+                        if (isWithinRange) {
+                            // 判断当前日期是否在开始时间和结束时间范围内
+                            if (isDateWithinRange(localTime, parse1, parse2)) {
+                                Details resde = new Details();
+
+                                resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId());
+                                resde.setImage(coursePackage.getCoverDrawing());
+                                resde.setCoursePackageName(coursePackage.getName());
+                                CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId());
+                                resde.setCourseHours(paymentConfig.getClassHours());
+                                resde.setDonateHours(cashPayment);
+                                resde.setDataTime("今日");
+                                resde.setDate(localTime);
+                                resde.setOriginalPrice(paymentConfig.getCashPayment());
+                                resde.setStatus(1);
+                                GetDistanceVo distanceVo = new GetDistanceVo();
+                                distanceVo.setLatitude(lat);
+                                distanceVo.setLongitude(lon);
+                                distanceVo.setStoreId(coursePackage.getStoreId());
+                                resde.setStoreDistance(sreClient.calculateDistance(distanceVo));
+                                list.add(resde);
+                            }
+                        }
+                        Calendar tempCalendar = Calendar.getInstance();
+                        tempCalendar.setTime(localTime);
+                        tempCalendar.add(Calendar.DAY_OF_WEEK, 1);
+
+                        while (tempCalendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
+                            Date tempDate = tempCalendar.getTime();
+                            int weekNumOfDate = DateTimeHelper.getWeekNumOfDate(tempDate);
+                            if (isDateWithinRange(tempDate, parse1, parse2) && weeks.contains(weekNumOfDate)) {
+                                Details resde = new Details();
+
+                                resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId());
+                                resde.setImage(coursePackage.getCoverDrawing());
+                                resde.setCoursePackageName(coursePackage.getName());
+                                CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId());
+                                resde.setCourseHours(paymentConfig.getClassHours());
+                                resde.setDonateHours(cashPayment);
+                                String weekOfDate = "";
+                                if (weekStr != 7 && tempDate.equals(tomorrowDate)) {
+                                    weekOfDate = "明日";
+                                } else {
+                                    weekOfDate = DateTimeHelper.getWeekOfDate(tempDate);
+                                }
+                                resde.setDataTime(weekOfDate);
+                                resde.setDate(tempDate);
+                                resde.setOriginalPrice(paymentConfig.getCashPayment());
+                                resde.setStatus(2);
+                                GetDistanceVo distanceVo = new GetDistanceVo();
+                                distanceVo.setLatitude(lat);
+                                distanceVo.setLongitude(lon);
+                                distanceVo.setStoreId(coursePackage.getStoreId());
+                                resde.setStoreDistance(sreClient.calculateDistance(distanceVo));
+                                list.add(resde);
+                            }
+                            tempCalendar.add(Calendar.DAY_OF_WEEK, 1);
+                        }
+
+                    } catch (Exception e) {
+                        e.printStackTrace();
                     }
                 }
             }
         }
-        return response;
+        System.out.println("list"+list);
+        return list;
     }
 
     @Override
     public ExchangeCoursePackageResponse getWeekFreeCourseDetails(Integer coursePackageDiscountId,String lat,String lon) {
         ExchangeCoursePackageResponse packageResponse = new ExchangeCoursePackageResponse();
         TCoursePackageDiscount coursePackageDiscount = this.baseMapper.selectById(coursePackageDiscountId);
-        packageResponse.setCoursePackageDiscountId(coursePackageDiscount.getId());
         Integer coursePackageId = coursePackageDiscount.getCoursePackageId();
+        packageResponse.setCoursePackageDiscountId(coursePackageId);
 
         TCoursePackage coursePackage = tcpMapper.selectById(coursePackageId);
 
@@ -327,9 +311,11 @@
         distanceVo.setLatitude(lat);
         distanceVo.setLongitude(lon);
         distanceVo.setStoreId(coursePackage.getStoreId());
-        long l = sreClient.calculateDistance(distanceVo);
-        packageResponse.setDistance(l);
-
+        String s = sreClient.calculateDistance(distanceVo);
+        packageResponse.setDistance(Double.valueOf(s));
+        if (coursePackageDiscount.getType() == 1 || coursePackageDiscount.getType() == 2){
+            return packageResponse;
+        }
         JSONArray jsonArray = JSON.parseArray(coursePackageDiscount.getContent());
         JSONObject jsonObject = jsonArray.getJSONObject(0);
         CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(coursePackageDiscount.getCoursePackagePaymentConfigId());
@@ -354,37 +340,13 @@
             packageResponse.setDiscountPrice(vipPrice);
             packageResponse.setWanpaiGold(paymentConfig.getPlayPaiCoin());
         }
-        List<Integer> weeks = StrUtils.dealStrToList(coursePackage.getClassWeeks());
-        if (weeks.size() > 0){
+        String[] split = coursePackage.getClassWeeks().split(";");
+        if (split.length > 0){
             StringBuilder courWeeks = new StringBuilder("每");
-            for (Integer integer : weeks) {
-                switch (integer){
-                    case 1:
-                        courWeeks.append("周一、");
-                        break;
-                    case 2:
-                        courWeeks.append("周二、");
-                        break;
-                    case 3:
-                        courWeeks.append("周三、");
-                        break;
-                    case 4:
-                        courWeeks.append("周四、");
-                        break;
-                    case 5:
-                        courWeeks.append("周五、");
-                        break;
-                    case 6:
-                        courWeeks.append("周六、");
-                        break;
-                    case 7:
-                        courWeeks.append("周末、");
-                        break;
-                    default:
-                        break;
-                }
+            for (String integer : split) {
+                courWeeks.append(integer).append("、");
             }
-            if (courWeeks.length() > 0 && courWeeks.charAt(courWeeks.length() - 1) == ','){
+            if (courWeeks.length() > 0 && courWeeks.charAt(courWeeks.length() - 1) == '、'){
                 courWeeks.deleteCharAt(courWeeks.length() - 1);
             }
             packageResponse.setWeekTime(courWeeks.toString());
@@ -393,13 +355,64 @@
 
         return packageResponse;
     }
-
     @Override
-    public ResultUtil paymentDiscountCoursePack(Integer coursePackageDiscountId, Integer appuserId) {
-        // TODO: 2023/7/13 折扣课包支付
-        return null;
+    public List<DiscountList> queryDiscountListAudit(QueryDiscountList queryDiscountList) {
+        Page<DiscountList> discountListPage = new Page<>(queryDiscountList.getOffset(), queryDiscountList.getLimit());
+        List<DiscountList> discountLists = this.baseMapper.queryDiscountListAudit(discountListPage, queryDiscountList.getPCode(), queryDiscountList.getCCode(), queryDiscountList.getName(), queryDiscountList.getType(), queryDiscountList.getIds());
+        for (DiscountList discountList : discountLists) {
+            List<TCoursePackageDiscount> tCoursePackageDiscounts = this.baseMapper.selectList(new LambdaQueryWrapper<TCoursePackageDiscount>().eq(TCoursePackageDiscount::getCoursePackageId, discountList.getCourseId()).ne(TCoursePackageDiscount::getAuditStatus,2).orderByAsc(TCoursePackageDiscount::getType));
+            long count = tCoursePackageDiscounts.stream().filter(e -> e.getAuditStatus().equals(2)).count();
+            if(count>0){
+                discountList.setStatus(2);
+            }else {
+                discountList.setStatus(1);
+            }
+            String type="";
+            for (int i = 0; i < tCoursePackageDiscounts.size(); i++) {
+                if(tCoursePackageDiscounts.get(i).getType()==1){
+                    type += "会员折扣、";
+                }else if(tCoursePackageDiscounts.get(i).getType()==3){
+                    type += "限时折扣、";
+                }else if(tCoursePackageDiscounts.get(i).getType()==4){
+                    type += "赠送课时、";
+                }
+            }
+            if(type.length()>0){
+                type = type.substring(0,type.length()-1);
+            }
+            discountList.setType(type);
+        }
+        return discountLists;
     }
-
+    @Override
+    public List<DiscountList> queryDiscountList(QueryDiscountList queryDiscountList) {
+        Page<DiscountList> discountListPage = new Page<>(queryDiscountList.getOffset(), queryDiscountList.getLimit());
+        List<DiscountList> discountLists = this.baseMapper.queryDiscountList(discountListPage, queryDiscountList.getPCode(), queryDiscountList.getCCode(), queryDiscountList.getName(), queryDiscountList.getType(), queryDiscountList.getIds());
+        for (DiscountList discountList : discountLists) {
+            List<TCoursePackageDiscount> tCoursePackageDiscounts = this.baseMapper.selectList(new LambdaQueryWrapper<TCoursePackageDiscount>().eq(TCoursePackageDiscount::getCoursePackageId, discountList.getCourseId()).eq(TCoursePackageDiscount::getAuditStatus,2).orderByAsc(TCoursePackageDiscount::getType));
+            long count = tCoursePackageDiscounts.stream().filter(e -> e.getStatus().equals(2)).count();
+            if(count>0){
+                discountList.setStatus(2);
+            }else {
+                discountList.setStatus(1);
+            }
+            String type="";
+            for (int i = 0; i < tCoursePackageDiscounts.size(); i++) {
+                if(tCoursePackageDiscounts.get(i).getType()==1){
+                    type += "会员折扣、";
+                }else if(tCoursePackageDiscounts.get(i).getType()==3){
+                    type += "限时折扣、";
+                }else if(tCoursePackageDiscounts.get(i).getType()==4){
+                    type += "赠送课时、";
+                }
+            }
+            if(type.length()>0){
+                type = type.substring(0,type.length()-1);
+            }
+            discountList.setType(type);
+        }
+        return discountLists;
+    }
 
     private static boolean isDateWithinRange(Date date, Date startTime, Date endTime) {
         return date.after(startTime) && date.before(endTime);

--
Gitblit v1.7.1