From dfb7c31b6591f9bb53182b3023f0be1d496a7d1a Mon Sep 17 00:00:00 2001
From: lisy <linlangsur163@163.com>
Date: 星期一, 14 八月 2023 13:54:32 +0800
Subject: [PATCH] 管理后台:添加优惠券和积分商品的优化

---
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java |  241 ++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 224 insertions(+), 17 deletions(-)

diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
index 471e3e0..7358a5e 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -5,11 +5,9 @@
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.nacos.common.utils.UuidUtils;
 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;
-import com.dsh.course.entity.TCoursePackageDiscount;
-import com.dsh.course.entity.TCoursePackagePayment;
+import com.dsh.course.entity.*;
 import com.dsh.course.feignclient.account.AppUserClient;
 import com.dsh.course.feignclient.account.StudentClient;
 import com.dsh.course.feignclient.account.model.AppUser;
@@ -23,10 +21,7 @@
 import com.dsh.course.mapper.TCoursePackageMapper;
 import com.dsh.course.feignclient.model.CourseOfStoreVo;
 import com.dsh.course.model.*;
-import com.dsh.course.service.ICoursePackagePaymentConfigService;
-import com.dsh.course.service.TCoursePackageDiscountService;
-import com.dsh.course.service.TCoursePackagePaymentService;
-import com.dsh.course.service.TCoursePackageService;
+import com.dsh.course.service.*;
 import com.dsh.course.util.*;
 import com.dsh.course.util.httpClinet.HttpResult;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -79,6 +74,12 @@
 
     @Autowired
     private PayMoneyUtil payMoneyUtil;
+
+    @Autowired
+    private ICoursePackageSchedulingService coursePackageSchedulingService;
+
+    @Autowired
+    private CoursePackageStudentService coursePackageStudentService;
 
 
 
@@ -135,7 +136,7 @@
             coursePackageListVo.setClassStartTime(coursePackage.getClassStartTime() + "-" + coursePackage.getClassEndTime());
             coursePackageListVo.setApplicantsNumber(integer);
             coursePackageListVo.setPayType(coursePackage.getPayType());
-            coursePackageListVo.setPlayPaiCoin(coursePackageListVo.getPlayPaiCoin());
+            coursePackageListVo.setPlayPaiCoin(coursePackagePaymentConfig.getPlayPaiCoin());
 
             //会员显示原价和会员价(最低)。非会员显示会员价和支付价(最低)
             if(appUser.getIsVip() == 0){//非会员
@@ -143,7 +144,7 @@
                         .eq("type", 1).eq("auditStatus", 2));
                 Double vipPrice = coursePackagePaymentConfig.getCashPayment();
                 for (TCoursePackageDiscount coursePackageDiscount : list2) {
-                    Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("num1");
+                    Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("discountMember");
                     if(vipPrice.compareTo(num1) > 0){
                         vipPrice = num1;
                     }
@@ -232,7 +233,7 @@
                         .eq("type", 1).eq("auditStatus", 2));
                 Double vipPrice = coursePackagePaymentConfig.getCashPayment();
                 for (TCoursePackageDiscount coursePackageDiscount : list2) {
-                    Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("num1");
+                    Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("discountMember");
                     if(vipPrice.compareTo(num1) > 0){
                         vipPrice = num1;
                     }
@@ -312,7 +313,7 @@
                         .eq("type", 1).eq("auditStatus", 2));
                 Double vipPrice = coursePackagePaymentConfig.getCashPayment();
                 for (TCoursePackageDiscount coursePackageDiscount : list2) {
-                    Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("num1");
+                    Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("discountMember");
                     if(vipPrice.compareTo(num1) > 0){
                         vipPrice = num1;
                     }
@@ -401,7 +402,7 @@
                         .eq("type", 1).eq("auditStatus", 2));
                 Double vipPrice = coursePackagePaymentConfig.getCashPayment();
                 for (TCoursePackageDiscount coursePackageDiscount : list2) {
-                    Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("num1");
+                    Double num1 = JSON.parseObject(coursePackageDiscount.getContent()).getDouble("discountMember");
                     if(vipPrice.compareTo(num1) > 0){
                         vipPrice = num1;
                     }
@@ -479,8 +480,9 @@
             }
             if(coupon.getType() == 1){//满减
                 JSONObject jsonObject = JSON.parseObject(coupon.getContent());
-                Double num1 = jsonObject.getDouble("num1");
-                Double num2 = jsonObject.getDouble("num2");
+//                {"conditionalAmount":50,"deductionAmount":10,"experienceName":""}
+                Double num1 = jsonObject.getDouble("conditionalAmount");
+                Double num2 = jsonObject.getDouble("deductionAmount");
                 if(price.compareTo(num1) <= 0){
                     return ResultUtil.error("该优惠券无法使用");
                 }
@@ -489,7 +491,7 @@
             }
             if(coupon.getType() == 2){//代金券
                 JSONObject jsonObject = JSON.parseObject(coupon.getContent());
-                Double num1 = jsonObject.getDouble("num1");
+                Double num1 = jsonObject.getDouble("conditionalAmount");
                 if(price.compareTo(num1) <= 0){
                     return ResultUtil.error("该优惠券无法使用");
                 }
@@ -646,7 +648,7 @@
             coursePackagePaymentService.save(coursePackagePayment);
         }
 
-        ResultUtil alipay = payMoneyUtil.alipay("购买课程", "", "", code, paymentPrice.toString(), "/base/course/aliPaymentCourseCallback");
+        ResultUtil alipay = payMoneyUtil.alipay("购买课程", "购买课程", "", code, paymentPrice.toString(), "/base/course/aliPaymentCourseCallback");
         if(alipay.getCode() == 200){
             new Thread(new Runnable() {
                 @Override
@@ -744,4 +746,209 @@
         appUserClient.updateAppUser(appUser);
         return ResultUtil.success();
     }
+
+
+    /**
+     * 获取课包管理列表数据
+     * @param queryCoursePackageLists
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> queryCoursePackageLists(Page<Map<String, Object>> page, QueryCoursePackageLists queryCoursePackageLists) {
+        List<Map<String, Object>> list = this.baseMapper.queryCoursePackageLists(page, queryCoursePackageLists);
+        for (Map<String, Object> map : list) {
+            Integer id = Integer.valueOf(map.get("id").toString());
+            Integer integer = coursePackagePaymentService.queryCountNumber(id);
+            map.put("paymentNumber", integer);
+
+            boolean cash = false;
+            boolean coin = false;
+            List<CoursePackagePaymentConfig> coursePackagePaymentConfigs = coursePackagePaymentConfigService.list(new QueryWrapper<CoursePackagePaymentConfig>().eq("coursePackageId", id));
+            for (CoursePackagePaymentConfig coursePackagePaymentConfig : coursePackagePaymentConfigs) {
+                if(0 != coursePackagePaymentConfig.getCashPayment()){
+                    cash = true;
+                }
+                if(0 != coursePackagePaymentConfig.getPlayPaiCoin()){
+                    coin = true;
+                }
+            }
+            map.put("payType", (cash ? "现金支付" : "") + (coin ?  cash ? "&玩湃币支付" : "玩湃币支付" : ""));
+        }
+        return list;
+    }
+
+
+    /**
+     * 添加课包
+     * @param coursePackage
+     * @return
+     */
+    @Override
+    public Integer addCoursePackage(TCoursePackage coursePackage) {
+        try {
+            this.baseMapper.insert(coursePackage);
+            //生成排课数据
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            Date date = sdf1.parse(sdf.format(new Date()) + " 00:00:00");
+            List<String> list = Arrays.asList(coursePackage.getClassWeeks().split(";"));
+            String classStartTime = coursePackage.getClassStartTime();
+            String[] split = classStartTime.split(":");
+            String classEndTime = coursePackage.getClassEndTime();
+            String[] split1 = classEndTime.split(":");
+            Calendar s = Calendar.getInstance();
+            s.setTime(date);
+            s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
+            s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
+            s.set(Calendar.MINUTE, Integer.valueOf(split[1]));
+            s.set(Calendar.SECOND, 0);
+
+            Calendar e = Calendar.getInstance();
+            e.setTime(date);
+            e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 13);
+            long timeInMillis = e.getTimeInMillis();
+
+            while (true){
+                int w = s.get(Calendar.DAY_OF_WEEK);
+                WeekEnum weekEnum = WeekEnum.getWeekEnum(w);
+                if(list.contains(weekEnum.getChineseName())){
+                    Calendar classDate = Calendar.getInstance();
+                    classDate.setTime(s.getTime());
+                    classDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
+                    classDate.set(Calendar.MINUTE, Integer.valueOf(split[1]));
+                    classDate.set(Calendar.SECOND, 0);
+
+                    Calendar endDate = Calendar.getInstance();
+                    endDate.setTime(s.getTime());
+                    endDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0]));
+                    endDate.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
+                    endDate.set(Calendar.SECOND, 0);
+
+                    CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
+                    coursePackageScheduling.setCoursePackageId(coursePackage.getId());
+                    coursePackageScheduling.setClassDate(classDate.getTime());
+                    coursePackageScheduling.setEndDate(endDate.getTime());
+                    coursePackageScheduling.setStatus(1);
+                    coursePackageSchedulingService.save(coursePackageScheduling);
+                }
+                s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
+                if(s.getTimeInMillis() > timeInMillis){
+                    break;
+                }
+            }
+            return coursePackage.getId();
+        }catch (Exception e){
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+
+    /**
+     * 修改数据
+     * @param coursePackage
+     */
+    @Override
+    public void updateCoursePackageById(TCoursePackage coursePackage) {
+        try {
+            List<CoursePackageStudent> coursePackageStudents = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("coursePackageId", coursePackage.getId()));
+            List<Long> collect = coursePackageStudents.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
+
+            QueryWrapper<CoursePackageScheduling> coursePackageSchedulingQueryWrapper = new QueryWrapper<CoursePackageScheduling>().eq("coursePackageId", coursePackage.getId());
+            if(collect.size() > 0){
+                coursePackageSchedulingQueryWrapper.notIn("id", collect);
+            }
+            coursePackageSchedulingService.remove(coursePackageSchedulingQueryWrapper);
+
+            this.baseMapper.updateById(coursePackage);
+            //生成排课数据
+            Date date = null;
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingService.getOne(new QueryWrapper<CoursePackageScheduling>().eq("coursePackageId", coursePackage.getId()).last(" and classDate > now() order by classDate desc limit 0, 1"));
+            if(null != coursePackageScheduling){
+                date = sdf1.parse(sdf.format(coursePackageScheduling.getClassDate()) + " 00:00:00");
+            }else{
+                date = sdf1.parse(sdf.format(new Date()) + " 00:00:00");
+            }
+            List<String> list = Arrays.asList(coursePackage.getClassWeeks().split(";"));
+            String classStartTime = coursePackage.getClassStartTime();
+            String[] split = classStartTime.split(":");
+            String classEndTime = coursePackage.getClassEndTime();
+            String[] split1 = classEndTime.split(":");
+            Calendar s = Calendar.getInstance();
+            s.setTime(date);
+            s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
+
+            Calendar e = Calendar.getInstance();
+            e.setTime(date);
+            if(null != coursePackageScheduling){
+                long time = sdf1.parse(sdf.format(new Date()) + " 00:00:00").getTime();
+                int d = Long.valueOf(14L - ((s.getTimeInMillis() - time) / 86400000L)).intValue();
+                e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + d);
+            }else{
+                e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 13);
+            }
+            long timeInMillis = e.getTimeInMillis();
+
+            while (true){
+                int w = s.get(Calendar.DAY_OF_WEEK);
+                WeekEnum weekEnum = WeekEnum.getWeekEnum(w);
+                if(list.contains(weekEnum.getChineseName())){
+                    Calendar classDate = Calendar.getInstance();
+                    classDate.setTime(s.getTime());
+                    classDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
+                    classDate.set(Calendar.MINUTE, Integer.valueOf(split[1]));
+                    classDate.set(Calendar.SECOND, 0);
+
+                    Calendar endDate = Calendar.getInstance();
+                    endDate.setTime(s.getTime());
+                    endDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0]));
+                    endDate.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
+                    endDate.set(Calendar.SECOND, 0);
+
+                    CoursePackageScheduling coursePackageScheduling1 = new CoursePackageScheduling();
+                    coursePackageScheduling1.setCoursePackageId(coursePackage.getId());
+                    coursePackageScheduling1.setClassDate(classDate.getTime());
+                    coursePackageScheduling1.setEndDate(endDate.getTime());
+                    coursePackageScheduling1.setStatus(1);
+                    coursePackageSchedulingService.save(coursePackageScheduling1);
+                }
+                s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1);
+                if(s.getTimeInMillis() > timeInMillis){
+                    break;
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+
+    /**
+     * 获取课包审核列表
+     * @param page
+     * @param queryExamineCoursePackageLists
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> queryExamineCoursePackageLists(Page<Map<String, Object>> page, QueryExamineCoursePackageLists queryExamineCoursePackageLists) {
+        List<Map<String, Object>> list = this.baseMapper.queryExamineCoursePackageLists(page, queryExamineCoursePackageLists);
+        for (Map<String, Object> map : list) {
+            Integer id = Integer.valueOf(map.get("id").toString());
+            boolean cash = false;
+            boolean coin = false;
+            List<CoursePackagePaymentConfig> coursePackagePaymentConfigs = coursePackagePaymentConfigService.list(new QueryWrapper<CoursePackagePaymentConfig>().eq("coursePackageId", id));
+            for (CoursePackagePaymentConfig coursePackagePaymentConfig : coursePackagePaymentConfigs) {
+                if(0 != coursePackagePaymentConfig.getCashPayment()){
+                    cash = true;
+                }
+                if(0 != coursePackagePaymentConfig.getPlayPaiCoin()){
+                    coin = true;
+                }
+            }
+            map.put("payType", (cash ? "现金支付" : "") + (coin ?  cash ? "&玩湃币支付" : "玩湃币支付" : ""));
+        }
+        return list;
+    }
 }

--
Gitblit v1.7.1