From 711050ca38dcc0dfd3b31978372933cdf2e1640d Mon Sep 17 00:00:00 2001
From: lisy <linlangsur163@163.com>
Date: 星期四, 13 七月 2023 19:43:34 +0800
Subject: [PATCH] 使用福利:本周福利的折扣详情接口

---
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java |  127 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 123 insertions(+), 4 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 61796ac..aa8c8de 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
@@ -8,15 +8,21 @@
 import com.dsh.course.entity.CoursePackagePaymentConfig;
 import com.dsh.course.entity.TCoursePackage;
 import com.dsh.course.entity.TCoursePackageDiscount;
+import com.dsh.course.entity.TCoursePackagePayment;
 import com.dsh.course.feignclient.other.StoreClient;
 import com.dsh.course.feignclient.other.model.GetDistanceVo;
+import com.dsh.course.feignclient.other.model.Store;
 import com.dsh.course.mapper.CoursePackagePaymentConfigMapper;
 import com.dsh.course.mapper.TCoursePackageDiscountMapper;
 import com.dsh.course.mapper.TCoursePackageMapper;
+import com.dsh.course.mapper.TCoursePackagePaymentMapper;
+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;
 
 import javax.annotation.Resource;
@@ -42,6 +48,8 @@
     @Resource
     private TCoursePackageMapper tcpMapper;
 
+    @Resource
+    private TCoursePackagePaymentMapper tcppMapper;
 
     @Resource
     private CoursePackagePaymentConfigMapper cppcMapper;
@@ -68,6 +76,15 @@
             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",
@@ -110,8 +127,8 @@
                             // 判断当前日期是否在开始时间和结束时间范围内
                             if (isDateWithinRange(localTime, parse1, parse2)) {
                                 WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details();
-                                TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId());
 
+                                resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId());
                                 resde.setImage(coursePackage.getCoverDrawing());
                                 resde.setCoursePackageName(coursePackage.getName());
                                 CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId());
@@ -138,8 +155,8 @@
                             int weekNumOfDate = DateTimeHelper.getWeekNumOfDate(tempDate);
                             if (isDateWithinRange(tempDate, parse1, parse2) && weeks.contains(weekNumOfDate)) {
                                 WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details();
-                                TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId());
 
+                                resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId());
                                 resde.setImage(coursePackage.getCoverDrawing());
                                 resde.setCoursePackageName(coursePackage.getName());
                                 CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId());
@@ -175,6 +192,15 @@
                 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",
@@ -216,8 +242,8 @@
                                 // 判断当前日期是否在开始时间和结束时间范围内
                                 if (isDateWithinRange(localTime, parse1, parse2)) {
                                     WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details();
-                                    TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId());
 
+                                    resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId());
                                     resde.setImage(coursePackage.getCoverDrawing());
                                     resde.setCoursePackageName(coursePackage.getName());
                                     CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId());
@@ -244,8 +270,8 @@
                                 int weekNumOfDate = DateTimeHelper.getWeekNumOfDate(tempDate);
                                 if (isDateWithinRange(tempDate, parse1, parse2) && weeks.contains(weekNumOfDate)) {
                                     WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details();
-                                    TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId());
 
+                                    resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId());
                                     resde.setImage(coursePackage.getCoverDrawing());
                                     resde.setCoursePackageName(coursePackage.getName());
                                     CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId());
@@ -281,6 +307,99 @@
         return response;
     }
 
+    @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();
+
+        TCoursePackage coursePackage = tcpMapper.selectById(coursePackageId);
+
+        packageResponse.setCoverDrawing(coursePackage.getCoverDrawing());
+        packageResponse.setIntroduceDrawing(coursePackage.getIntroduceDrawing());
+        packageResponse.setCoursePackageName(coursePackage.getName());
+
+        Store store = sreClient.queryStoreById(coursePackage.getStoreId());
+        packageResponse.setStoreNameAddr(store.getName() +"(" +store.getAddress()+")");
+        GetDistanceVo distanceVo = new GetDistanceVo();
+
+        distanceVo.setLatitude(lat);
+        distanceVo.setLongitude(lon);
+        distanceVo.setStoreId(coursePackage.getStoreId());
+        long l = sreClient.calculateDistance(distanceVo);
+        packageResponse.setDistance(l);
+
+        JSONArray jsonArray = JSON.parseArray(coursePackageDiscount.getContent());
+        JSONObject jsonObject = jsonArray.getJSONObject(0);
+        CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(coursePackageDiscount.getCoursePackagePaymentConfigId());
+        if (coursePackageDiscount.getType() == 3){
+            Double cashPayment = jsonObject.getDouble("cashPayment");
+            packageResponse.setClassHours(paymentConfig.getClassHours());
+            packageResponse.setCostPrice(paymentConfig.getCashPayment());
+            packageResponse.setDiscountPrice(cashPayment);
+        }else {
+            packageResponse.setClassHours(paymentConfig.getClassHours());
+
+            Integer cashPayment = jsonObject.getInteger("hour");
+            packageResponse.setFreeClassHours(cashPayment);
+
+            packageResponse.setCostPrice(paymentConfig.getCashPayment());
+            TCoursePackageDiscount coursePackageDiscount1 = this.baseMapper.selectOne(new QueryWrapper<TCoursePackageDiscount>()
+                    .eq("type", 1)
+                    .eq("coursePackageId",coursePackage.getId()));
+            String content = coursePackageDiscount1.getContent();
+            JSONObject jsonObject1 = JSON.parseObject(content);
+            Double vipPrice = jsonObject1.getDouble("num1");
+            packageResponse.setDiscountPrice(vipPrice);
+            packageResponse.setWanpaiGold(paymentConfig.getPlayPaiCoin());
+        }
+        List<Integer> weeks = StrUtils.dealStrToList(coursePackage.getClassWeeks());
+        if (weeks.size() > 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;
+                }
+            }
+            if (courWeeks.length() > 0 && courWeeks.charAt(courWeeks.length() - 1) == ','){
+                courWeeks.deleteCharAt(courWeeks.length() - 1);
+            }
+            packageResponse.setWeekTime(courWeeks.toString());
+        }
+        packageResponse.setTime(coursePackage.getClassStartTime()+"-"+coursePackage.getClassEndTime());
+
+        return packageResponse;
+    }
+
+    @Override
+    public ResultUtil paymentDiscountCoursePack(Integer coursePackageDiscountId, Integer appuserId) {
+        // TODO: 2023/7/13 折扣课包支付
+        return null;
+    }
+
 
     private static boolean isDateWithinRange(Date date, Date startTime, Date endTime) {
         return date.after(startTime) && date.before(endTime);

--
Gitblit v1.7.1