From 38209c2eceafc11e6d0f3b63a61e91d8d4a642a6 Mon Sep 17 00:00:00 2001
From: java <linlangsur163@163.com>
Date: 星期四, 29 六月 2023 18:10:55 +0800
Subject: [PATCH] 课程信息:课时详情中的记录的数据处理

---
 cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java                                     |    9 
 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CancelListClient.java                 |   20 
 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java     |   20 
 cloud-server-course/src/main/java/com/dsh/course/web/CancelledClassesController.java                        |   21 +
 cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml                               |    3 
 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/PurchaseRecordVo.java                |    2 
 cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java                         |   16 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java                    |  106 ++++
 cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.java              |    3 
 cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java                               |   16 
 cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDataDetails.java   |    1 
 cloud-server-course/src/main/java/com/dsh/course/mapper/CancelledClassesMapper.java                         |   16 
 cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java                               |    2 
 cloud-server-course/src/main/java/com/dsh/course/entity/CancelledClasses.java                               |   58 ++
 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/IntroduceRewardsClient.java                |   20 
 cloud-server-activity/src/main/resources/mapper/CouponMapper.xml                                            |    8 
 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java                    |   20 
 cloud-server-activity/src/main/java/com/dsh/activity/controller/IntroduceRewardsController.java             |   46 ++
 cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java                           |   16 
 cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PurchaseRecordVo.java                    |    6 
 cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java     |    6 
 cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java                |    6 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/CancelledClassesServiceImpl.java              |   20 
 cloud-server-activity/src/main/resources/mapper/IntroduceRewardsMapper.xml                                  |    8 
 cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/model/PurchaseRecordVo.java      |    2 
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java         |    5 
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java                           |    7 
 cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/IntroduceRewardsClient.java         |   21 +
 cloud-server-activity/src/main/java/com/dsh/activity/service/IntroduceRewardsService.java                   |   16 
 cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java                                     |  139 ++++++
 cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseSessionNameClient.java                   |   16 
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java             |   29 +
 cloud-server-course/src/main/java/com/dsh/course/feignclient/CancelListClient.java                          |   20 
 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java                |   20 
 cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDetailsInsVo.java  |    8 
 cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml                                        |    8 
 cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java                  |    5 
 cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java                |   16 
 cloud-server-activity/src/main/java/com/dsh/activity/service/CouponService.java                             |   16 
 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java     |    5 
 cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java              |   16 
 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/IntroduceRewardsServiceImpl.java          |   20 
 cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml                                |    3 
 cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java                    |    5 
 cloud-server-activity/src/main/java/com/dsh/activity/entity/UserCoupon.java                                 |   66 +++
 cloud-server-course/src/main/java/com/dsh/course/service/CancelledClassesService.java                       |   16 
 cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java                   |    1 
 cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java                      |   66 +++
 cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java                               |    2 
 cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java                     |   66 +++
 cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseListClient.java                          |    3 
 cloud-server-activity/src/main/java/com/dsh/activity/mapper/IntroduceRewardsMapper.java                     |   16 
 cloud-server-account/src/main/java/com/dsh/account/util/DateTimeHelper.java                                 |   17 
 cloud-server-activity/src/main/java/com/dsh/activity/entity/IntroduceRewards.java                           |   78 +++
 cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml                                    |    5 
 cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml                             |    8 
 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseSessionNameClient.java          |   15 
 cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java |    9 
 cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java            |   10 
 59 files changed, 1,157 insertions(+), 47 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
index 3850310..102d359 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
@@ -3,6 +3,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.dsh.account.entity.TStudent;
+import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
 import com.dsh.account.model.vo.classDetails.classInsVo.*;
 import com.dsh.account.model.vo.sourceDetail.RecordTimeRequest;
 import com.dsh.account.service.TAppUserService;
diff --git a/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java b/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java
index 02bdfc1..bceb756 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java
@@ -1,14 +1,13 @@
 package com.dsh.account.entity;
 
-import java.util.Date;
-import java.io.Serializable;
-
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+
+import java.util.Date;
 
 /**
  * <p>
@@ -127,6 +126,10 @@
      * 用户头像
      */
     private String headImg;
+    /**
+     * 添加时间
+     */
+    private Date insertTime;
 
 
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/IntroduceRewardsClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/IntroduceRewardsClient.java
new file mode 100644
index 0000000..d9e3390
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/IntroduceRewardsClient.java
@@ -0,0 +1,21 @@
+package com.dsh.account.feignclient.activity;
+
+
+import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.Date;
+import java.util.List;
+
+@FeignClient(value = "mb-cloud-activity")
+public interface IntroduceRewardsClient {
+
+
+    @PostMapping("/introduce/useOfRewards")
+    public List<PurchaseRecordVo> queryAppUsersofIntroduce(@RequestBody Date startTime,
+                                                           @RequestBody  Date endTime,
+                                                           @RequestBody  List<Integer> userIds);
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java
index 78f1816..66a66b2 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java
@@ -1,16 +1,19 @@
 package com.dsh.account.feignclient.competition;
 
 
-import com.dsh.account.model.vo.classDetails.classInsVo.PurchaseRecordVo;
+import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RequestBody;
 
+import java.util.Date;
 import java.util.List;
 
 @FeignClient(value = "mb-cloud-competition")
 public interface DeductionCompetitionsClient {
     @PostMapping("/competition/getCompetitionsDetails")
-    public List<PurchaseRecordVo> getStuSourseList(@RequestParam("appUserId") Integer appUserId);
+    public List<PurchaseRecordVo> getStuSourseList(@RequestBody Date startTime,
+                                                   @RequestBody Date  endTime,
+                                                   @RequestBody Integer appUserId);
 
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/model/PurchaseRecordVo.java
similarity index 89%
copy from cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java
copy to cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/model/PurchaseRecordVo.java
index bd79f49..c5f2c68 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/model/PurchaseRecordVo.java
@@ -1,4 +1,4 @@
-package com.dsh.account.model.vo.classDetails.classInsVo;
+package com.dsh.account.feignclient.competition.model;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CancelListClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CancelListClient.java
new file mode 100644
index 0000000..59cf6ea
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CancelListClient.java
@@ -0,0 +1,20 @@
+package com.dsh.account.feignclient.course;
+
+import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.Date;
+import java.util.List;
+
+@FeignClient(value = "mb-cloud-course")
+public interface CancelListClient {
+
+    @PostMapping("/cancelSource/cancelList")
+    public List<PurchaseRecordVo> getCancelCourseList(@RequestBody Date startTime,
+                                                      @RequestBody Date  endTime,
+                                                      @RequestBody Integer stuId,
+                                                      @RequestBody Integer appUserId);
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseSessionNameClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseSessionNameClient.java
index b961032..ef01dd4 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseSessionNameClient.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseSessionNameClient.java
@@ -1,11 +1,13 @@
 package com.dsh.account.feignclient.course;
 
 
+import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
 import com.dsh.account.feignclient.course.model.StuSessionDetailsVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RequestBody;
 
+import java.util.Date;
 import java.util.List;
 
 @FeignClient(value = "mb-cloud-course")
@@ -13,6 +15,15 @@
 
 
     @PostMapping("/coursePack/sessionNames")
-    List<StuSessionDetailsVo> getStuSessionList(@RequestParam("stuId") Integer stuId,@RequestParam("appUserId") Integer appUserId);
+    List<StuSessionDetailsVo> getStuSessionList(@RequestBody Date startTime,
+                                                @RequestBody Date  endTime,
+                                                @RequestBody Integer stuId,
+                                                @RequestBody Integer appUserId);
+
+    @PostMapping("/coursePack/paymentCourse")
+    public List<PurchaseRecordVo> queryCourseDetails(@RequestBody Date startTime,
+                                                     @RequestBody Date  endTime,
+                                                     @RequestBody Integer stuId,
+                                                     @RequestBody Integer appUserId);
 
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java
index d77da72..11e16f8 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dsh.account.entity.TAppUser;
+import org.apache.ibatis.annotations.Mapper;
 
 
 /**
@@ -12,6 +13,7 @@
  * @author administrator
  * @since 2023-06-14
  */
+@Mapper
 public interface TAppUserMapper extends BaseMapper<TAppUser> {
 
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java
index fda3fc3..587e07b 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dsh.account.entity.TStudent;
+import org.apache.ibatis.annotations.Mapper;
 
 
 /**
@@ -12,6 +13,7 @@
  * @author administrator
  * @since 2023-06-14
  */
+@Mapper
 public interface TStudentMapper extends BaseMapper<TStudent> {
 
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDataDetails.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDataDetails.java
index 3a828f1..4f57652 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDataDetails.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDataDetails.java
@@ -1,5 +1,6 @@
 package com.dsh.account.model.vo.classDetails.classInsVo;
 
+import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDetailsInsVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDetailsInsVo.java
index afac200..1c96459 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDetailsInsVo.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDetailsInsVo.java
@@ -1,5 +1,6 @@
 package com.dsh.account.model.vo.classDetails.classInsVo;
 
+import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
 import com.dsh.account.feignclient.course.model.StuSessionDetailsVo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -18,8 +19,6 @@
     @ApiModelProperty(value = "学员姓名")
     private String stuName;
 
-    @ApiModelProperty(value = "课时有效期(xxxx-xx-xx)")
-    private String periodOfValidity;
 
     @ApiModelProperty(value = "总学时数")
     private Integer totalNums;
@@ -33,7 +32,10 @@
     @ApiModelProperty(value = "课包名称列表")
     private List<StuSessionDetailsVo> sessionNames;
 
+    @ApiModelProperty(value = "已扣课时数")
+    private Integer deductionClassHours;
+
     @ApiModelProperty(value = "课包列表")
-    private List<ClassDataDetails> details;
+    private List<PurchaseRecordVo> details;
 
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
index b96ad10..68ba9a8 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
@@ -1,20 +1,30 @@
 package com.dsh.account.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.account.entity.TAppUser;
 import com.dsh.account.entity.TStudent;
+import com.dsh.account.feignclient.activity.IntroduceRewardsClient;
+import com.dsh.account.feignclient.competition.DeductionCompetitionsClient;
+import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
+import com.dsh.account.feignclient.course.CancelListClient;
 import com.dsh.account.feignclient.course.CourseSessionNameClient;
 import com.dsh.account.feignclient.course.model.StuSessionDetailsVo;
+import com.dsh.account.mapper.TAppUserMapper;
 import com.dsh.account.mapper.TStudentMapper;
 import com.dsh.account.model.vo.classDetails.classInsVo.ClassDetailsInsVo;
 import com.dsh.account.model.vo.classDetails.classInsVo.StuDetailsReq;
 import com.dsh.account.service.TStudentService;
+import com.dsh.account.util.DateTimeHelper;
 import com.dsh.account.util.ToolUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -29,6 +39,18 @@
 
     @Autowired
     private CourseSessionNameClient sessionNameClient;
+
+    @Autowired
+    private DeductionCompetitionsClient dcttClient;
+
+    @Autowired
+    private CancelListClient cancelcClient;
+
+    @Autowired
+    private IntroduceRewardsClient idrClient;
+
+    @Autowired
+    private TAppUserMapper tauMapper;
 
     @Override
     public void addStuOfAppUser(StuDetailsReq stu,Integer appUserId) {
@@ -54,17 +76,93 @@
     @Override
     public ClassDetailsInsVo querySessionDetailsDt(Integer userIdFormRedis, Integer lessonId, Integer stuId) {
         ClassDetailsInsVo insVo = new ClassDetailsInsVo();
-        List<StuSessionDetailsVo> stuSessionList = sessionNameClient.getStuSessionList(stuId,userIdFormRedis);
+        Date localMonthStart = DateTimeHelper.getCurrentMouthStart();
+        Date localMonthEnd = DateTimeHelper.getCurrentMouthEnd();
+        List<StuSessionDetailsVo> stuSessionList = sessionNameClient.getStuSessionList(localMonthStart,localMonthEnd,stuId,userIdFormRedis);
         TStudent tStudent = this.baseMapper.selectById(stuId);
         if (ToolUtil.isNotEmpty(tStudent)){
             insVo.setStuId(tStudent.getId());
             insVo.setStuName(tStudent.getName());
             insVo.setStuImage(tStudent.getHeadImg());
 
-            insVo.setSessionNames(stuSessionList);
+            List<PurchaseRecordVo> purchaseRecordVoList = new ArrayList<>();
 
+            List<PurchaseRecordVo> stuSourseList = dcttClient.getStuSourseList(localMonthStart,localMonthEnd,userIdFormRedis);
+            purchaseRecordVoList.addAll(stuSourseList);
+            List<PurchaseRecordVo> cancelCourseList = cancelcClient.getCancelCourseList(localMonthStart,localMonthEnd,stuId,userIdFormRedis);
+            purchaseRecordVoList.addAll(cancelCourseList);
+            List<PurchaseRecordVo> purchaseRecordVos = sessionNameClient.queryCourseDetails(localMonthStart,localMonthEnd,stuId,userIdFormRedis);
+            purchaseRecordVoList.addAll(purchaseRecordVos);
+            List<TAppUser> tAppUsers = tauMapper.selectList(new QueryWrapper<TAppUser>()
+                    .eq("referralUserId",userIdFormRedis )
+                    .between("insertTime",localMonthStart ,localMonthEnd));
+            List<Integer> userIds = tAppUsers.stream().map(TAppUser::getId).collect(Collectors.toList());
+            List<PurchaseRecordVo> purchaseRecordVos1 = idrClient.queryAppUsersofIntroduce(localMonthStart, localMonthEnd, userIds);
+            purchaseRecordVoList.addAll(purchaseRecordVos1);
+            insVo.setSessionNames(stuSessionList);
+            insVo.setDetails(dealDataOfTime(purchaseRecordVoList));
+
+            insVo.setTotalNums(0);
+            insVo.setDeductedNums(0);
+            insVo.setRemainingNums(0);
+            insVo.setDeductionClassHours(0);
         }
 
         return insVo;
     }
+
+
+    public static List<PurchaseRecordVo> dealDataOfTime(List<PurchaseRecordVo> purchaseRecords) {
+        Collections.sort(purchaseRecords, new Comparator<PurchaseRecordVo>() {
+            @Override
+            public int compare(PurchaseRecordVo record1, PurchaseRecordVo record2) {
+                SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm");
+                Date date1 = null;
+                Date date2 = null;
+                try {
+                    date1 = dateFormat.parse(record1.getPurchaseTime());
+                    date2 = dateFormat.parse(record2.getPurchaseTime());
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+                // 倒序排序
+                return date2.compareTo(date1);
+            }
+        });
+        return purchaseRecords;
+    }
+
+
+//    public static List<String> dealDataOfTime(List<String> timeStrings) {
+//        Collections.sort(timeStrings, new Comparator<String>() {
+//            @Override
+//            public int compare(String time1, String time2) {
+//                String[] parts1 = time1.split(" ");
+//                String[] parts2 = time2.split(" ");
+//                String[] dateParts1 = parts1[0].split("-");
+//                String[] dateParts2 = parts2[0].split("-");
+//                String[] timeParts1 = parts1[1].split(":");
+//                String[] timeParts2 = parts2[1].split(":");
+//                int month1 = Integer.parseInt(dateParts1[0]);
+//                int day1 = Integer.parseInt(dateParts1[1]);
+//                int hour1 = Integer.parseInt(timeParts1[0]);
+//                int minute1 = Integer.parseInt(timeParts1[1]);
+//                int month2 = Integer.parseInt(dateParts2[0]);
+//                int day2 = Integer.parseInt(dateParts2[1]);
+//                int hour2 = Integer.parseInt(timeParts2[0]);
+//                int minute2 = Integer.parseInt(timeParts2[1]);
+//                // 倒序排序
+//                if (month1 != month2) {
+//                    return month2 - month1;
+//                } else if (day1 != day2) {
+//                    return day2 - day1;
+//                } else if (hour1 != hour2) {
+//                    return hour2 - hour1;
+//                } else {
+//                    return minute2 - minute1;
+//                }
+//            }
+//        });
+//        return timeStrings;
+//    }
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/DateTimeHelper.java b/cloud-server-account/src/main/java/com/dsh/account/util/DateTimeHelper.java
index b77d912..32dffb1 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/util/DateTimeHelper.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/util/DateTimeHelper.java
@@ -1350,6 +1350,23 @@
     }
 
     /**
+     * 获取当月结束时23点59分59秒
+     *
+     * @return
+     */
+    public static Date getCurrentMouthEnd() {
+        Date d = getSystemDate();
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(d);
+        int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+        calendar.set(Calendar.DAY_OF_MONTH, lastDay);
+        calendar.set(Calendar.HOUR_OF_DAY, 23);
+        calendar.set(Calendar.MINUTE, 59);
+        calendar.set(Calendar.SECOND, 59);
+        return calendar.getTime();
+    }
+
+    /**
      * 返回下月的这天
      *
      * @param date
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/IntroduceRewardsController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/IntroduceRewardsController.java
new file mode 100644
index 0000000..beaf70d
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/IntroduceRewardsController.java
@@ -0,0 +1,46 @@
+package com.dsh.activity.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dsh.activity.entity.IntroduceRewards;
+import com.dsh.activity.feignclient.model.PurchaseRecordVo;
+import com.dsh.activity.service.IntroduceRewardsService;
+import io.swagger.annotations.Api;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Api
+@CrossOrigin
+@RestController
+@RequestMapping("")
+public class IntroduceRewardsController {
+
+
+    @Autowired
+    private IntroduceRewardsService idrService;
+
+    private final SimpleDateFormat mat = new SimpleDateFormat("MM-dd HH:mm");
+
+
+    @PostMapping("/introduce/useOfRewards")
+    public List<PurchaseRecordVo> queryAppUsersofIntroduce(@RequestBody Date startTime, @RequestBody  Date endTime, @RequestBody  List<Integer> userIds){
+        List<PurchaseRecordVo> recordVos = new ArrayList<>();
+        List<IntroduceRewards> list = idrService.list(new QueryWrapper<IntroduceRewards>()
+                .ge("startTime",startTime)
+                .lt("endTime",endTime));
+        IntroduceRewards introduceRewards = list.get(0);
+        userIds.forEach( userId -> {
+            PurchaseRecordVo recordVo = new PurchaseRecordVo();
+            recordVo.setPurchaseAmount("+"+introduceRewards.getGiveClass());
+            recordVo.setPurchaseType("介绍有礼");
+            recordVos.add(recordVo);
+        } );
+        return recordVos;
+    }
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java
new file mode 100644
index 0000000..3f00b17
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java
@@ -0,0 +1,139 @@
+package com.dsh.activity.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * <p>
+ * 优惠券
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_coupon")
+public class Coupon extends Model<Coupon> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 优惠券名称
+     */
+    private String name;
+    /**
+     * 优惠券类型(1=满减券,2=代金券,3=体验券)
+     */
+    private Integer type;
+    /**
+     * 优惠券规则JSON
+     */
+    private String content;
+    /**
+     * 优惠券说明
+     */
+    private String illustrate;
+    /**
+     * 发放方式(1=积分购买,2=注册赠送,3=自动发券)
+     */
+    private Integer distributionMethod;
+    /**
+     * 兑换方式(1=积分,2=积分+现金)
+     */
+    private Integer redemptionMethod;
+    /**
+     * 所需现金
+     */
+    private BigDecimal cash;
+    /**
+     * 所属积分
+     */
+    private BigDecimal integral;
+    /**
+     * 用户人群(1=全部用户,2=年度会员,3=已有学员用户)
+     */
+    private Integer userPopulation;
+    /**
+     * 发放数量
+     */
+    private Integer quantityIssued;
+    /**
+     * 限领数量
+     */
+    private Integer pickUpQuantity;
+    /**
+     * 开始时间
+     */
+    private Date startTime;
+    /**
+     * 结束时间
+     */
+    private Date endTime;
+    /**
+     * 使用范围(1=全国,2=指定城市,3=指定门店)
+     */
+    private Integer useScope;
+    /**
+     * 省
+     */
+    private String province;
+    /**
+     * 省编号
+     */
+    private String provinceCode;
+    /**
+     * 市
+     */
+    private String city;
+    /**
+     * 市编号
+     */
+    private String cityCode;
+    /**
+     * 审核状态(1=待审核,2=已通过,3=已拒绝)
+     */
+    private Integer auditStatus;
+    /**
+     * 审核人id
+     */
+    private Integer auditUserId;
+    /**
+     * 审核备注
+     */
+    private String auditRemark;
+    /**
+     * 状态(1=未开始,2=已开始,3=已结束,4=已取消)
+     */
+    private Integer status;
+    /**
+     * 状态(1=正常,2=冻结,3=删除)
+     */
+    private Integer state;
+    /**
+     * 添加时间
+     */
+    private Date insertTime;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/IntroduceRewards.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/IntroduceRewards.java
new file mode 100644
index 0000000..3ba4756
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/IntroduceRewards.java
@@ -0,0 +1,78 @@
+package com.dsh.activity.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 介绍奖励
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_introduce_rewards")
+public class IntroduceRewards extends Model<IntroduceRewards> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 省
+     */
+    private String province;
+    /**
+     * 省编号
+     */
+    private String provinceCode;
+    /**
+     * 市
+     */
+    private String city;
+    /**
+     * 市编号
+     */
+    private String cityCode;
+    /**
+     * 开始时间
+     */
+    private Date startTime;
+    /**
+     * 结束时间
+     */
+    private Date endTime;
+    /**
+     * 赠送课时
+     */
+    private Integer giveClass;
+    /**
+     * 状态(1=正常,2=冻结,3=删除)
+     */
+    private Integer state;
+    /**
+     * 添加时间
+     */
+    private Date insertTime;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserCoupon.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserCoupon.java
new file mode 100644
index 0000000..110f152
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserCoupon.java
@@ -0,0 +1,66 @@
+package com.dsh.activity.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 用户优惠券领取记录
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_user_coupon")
+public class UserCoupon extends Model<UserCoupon> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 优惠券id
+     */
+    private Integer couponId;
+    /**
+     * 用户id
+     */
+    private Integer userId;
+    /**
+     * 状态(1=待核销,2=已核销)
+     */
+    private Integer status;
+    /**
+     * 核销人员id
+     */
+    private Integer verificationUserId;
+    /**
+     * 核销时间
+     */
+    private Date verificationTime;
+    /**
+     * 领取时间
+     */
+    private Date insertTime;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java
new file mode 100644
index 0000000..1bba930
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java
@@ -0,0 +1,66 @@
+package com.dsh.activity.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 用户积分商品领取记录
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_user_points_merchandise")
+public class UserPointsMerchandise extends Model<UserPointsMerchandise> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 优惠券id
+     */
+    private Integer pointsMerchandiseId;
+    /**
+     * 用户id
+     */
+    private Integer userId;
+    /**
+     * 状态(1=待核销,2=已核销)
+     */
+    private Integer status;
+    /**
+     * 核销人员id
+     */
+    private Integer verificationUserId;
+    /**
+     * 核销时间
+     */
+    private Date verificationTime;
+    /**
+     * 领取时间
+     */
+    private Date insertTime;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/IntroduceRewardsClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/IntroduceRewardsClient.java
new file mode 100644
index 0000000..7839017
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/IntroduceRewardsClient.java
@@ -0,0 +1,20 @@
+package com.dsh.activity.feignclient;
+
+
+import com.dsh.activity.feignclient.model.PurchaseRecordVo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.Date;
+import java.util.List;
+
+@FeignClient(value = "mb-cloud-activity")
+public interface IntroduceRewardsClient {
+
+    @PostMapping("/introduce/useOfRewards")
+    public List<PurchaseRecordVo> queryAppUsersofIntroduce(@RequestBody Date startTime,
+                                                           @RequestBody  Date endTime,
+                                                           @RequestBody  List<Integer> userIds);
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/PurchaseRecordVo.java
similarity index 89%
rename from cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java
rename to cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/PurchaseRecordVo.java
index bd79f49..dbc16e0 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/PurchaseRecordVo.java
@@ -1,4 +1,4 @@
-package com.dsh.account.model.vo.classDetails.classInsVo;
+package com.dsh.activity.feignclient.model;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java
new file mode 100644
index 0000000..8fd5d3b
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.activity.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.activity.entity.Coupon;
+
+/**
+ * <p>
+ * 优惠券 Mapper 接口
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+public interface CouponMapper extends BaseMapper<Coupon> {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/IntroduceRewardsMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/IntroduceRewardsMapper.java
new file mode 100644
index 0000000..6253a3f
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/IntroduceRewardsMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.activity.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.activity.entity.IntroduceRewards;
+
+/**
+ * <p>
+ * 介绍奖励 Mapper 接口
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+public interface IntroduceRewardsMapper extends BaseMapper<IntroduceRewards> {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java
new file mode 100644
index 0000000..d70eed1
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.activity.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.activity.entity.UserCoupon;
+
+/**
+ * <p>
+ * 用户优惠券领取记录 Mapper 接口
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+public interface UserCouponMapper extends BaseMapper<UserCoupon> {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java
new file mode 100644
index 0000000..3b5bbf0
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.activity.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.activity.entity.UserPointsMerchandise;
+
+/**
+ * <p>
+ * 用户积分商品领取记录 Mapper 接口
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+public interface UserPointsMerchandiseMapper extends BaseMapper<UserPointsMerchandise> {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/CouponService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/CouponService.java
new file mode 100644
index 0000000..c6ee52f
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/CouponService.java
@@ -0,0 +1,16 @@
+package com.dsh.activity.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.activity.entity.Coupon;
+
+/**
+ * <p>
+ * 优惠券 服务类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+public interface CouponService extends IService<Coupon> {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/IntroduceRewardsService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/IntroduceRewardsService.java
new file mode 100644
index 0000000..ec2e0e7
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/IntroduceRewardsService.java
@@ -0,0 +1,16 @@
+package com.dsh.activity.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.activity.entity.IntroduceRewards;
+
+/**
+ * <p>
+ * 介绍奖励 服务类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+public interface IntroduceRewardsService extends IService<IntroduceRewards> {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java
new file mode 100644
index 0000000..6a21198
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java
@@ -0,0 +1,16 @@
+package com.dsh.activity.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.activity.entity.UserCoupon;
+
+/**
+ * <p>
+ * 用户优惠券领取记录 服务类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+public interface UserCouponService extends IService<UserCoupon> {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java
new file mode 100644
index 0000000..b8c2f1e
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java
@@ -0,0 +1,16 @@
+package com.dsh.activity.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.activity.entity.UserPointsMerchandise;
+
+/**
+ * <p>
+ * 用户积分商品领取记录 服务类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+public interface UserPointsMerchandiseService extends IService<UserPointsMerchandise> {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java
new file mode 100644
index 0000000..16aa074
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.activity.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.activity.entity.Coupon;
+import com.dsh.activity.mapper.CouponMapper;
+import com.dsh.activity.service.CouponService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 优惠券 服务实现类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+@Service
+public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> implements CouponService {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/IntroduceRewardsServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/IntroduceRewardsServiceImpl.java
new file mode 100644
index 0000000..c5f53b7
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/IntroduceRewardsServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.activity.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.activity.entity.IntroduceRewards;
+import com.dsh.activity.mapper.IntroduceRewardsMapper;
+import com.dsh.activity.service.IntroduceRewardsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 介绍奖励 服务实现类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+@Service
+public class IntroduceRewardsServiceImpl extends ServiceImpl<IntroduceRewardsMapper, IntroduceRewards> implements IntroduceRewardsService {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java
new file mode 100644
index 0000000..d646a5b
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.activity.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.activity.entity.UserCoupon;
+import com.dsh.activity.mapper.UserCouponMapper;
+import com.dsh.activity.service.UserCouponService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户优惠券领取记录 服务实现类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+@Service
+public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCoupon> implements UserCouponService {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java
new file mode 100644
index 0000000..c989bb4
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.activity.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.activity.entity.UserPointsMerchandise;
+import com.dsh.activity.mapper.UserPointsMerchandiseMapper;
+import com.dsh.activity.service.UserPointsMerchandiseService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户积分商品领取记录 服务实现类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+@Service
+public class UserPointsMerchandiseServiceImpl extends ServiceImpl<UserPointsMerchandiseMapper, UserPointsMerchandise> implements UserPointsMerchandiseService {
+
+}
diff --git a/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml b/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
new file mode 100644
index 0000000..b949ca7
--- /dev/null
+++ b/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.activity.mapper.CouponMapper">
+
+    <!-- 开启二级缓存 -->
+    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
+
+</mapper>
diff --git a/cloud-server-activity/src/main/resources/mapper/IntroduceRewardsMapper.xml b/cloud-server-activity/src/main/resources/mapper/IntroduceRewardsMapper.xml
new file mode 100644
index 0000000..ebf8e17
--- /dev/null
+++ b/cloud-server-activity/src/main/resources/mapper/IntroduceRewardsMapper.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.activity.mapper.IntroduceRewardsMapper">
+
+    <!-- 开启二级缓存 -->
+    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
+
+</mapper>
diff --git a/cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml b/cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml
new file mode 100644
index 0000000..9a81eac
--- /dev/null
+++ b/cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.activity.mapper.UserCouponMapper">
+
+    <!-- 开启二级缓存 -->
+    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
+
+</mapper>
diff --git a/cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml b/cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml
new file mode 100644
index 0000000..c42864e
--- /dev/null
+++ b/cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.activity.mapper.UserPointsMerchandiseMapper">
+
+    <!-- 开启二级缓存 -->
+    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
+
+</mapper>
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
index 200a3ea..b08c9ec 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
@@ -8,13 +8,11 @@
 import com.dsh.competition.service.CompetitionService;
 import com.dsh.competition.service.UserCompetitionService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -40,7 +38,7 @@
     private final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm");
 
     @PostMapping("/competition/getCompetitionsDetails")
-    public List<PurchaseRecordVo> getStuSourseList(@RequestParam("appUserId") Integer appUserId){
+    public List<PurchaseRecordVo> getStuSourseList(@RequestBody Date startTime, @RequestBody Date  endTime,@RequestParam("appUserId") Integer appUserId){
 
         List<PurchaseRecordVo> recordVos = new ArrayList<>();
 
@@ -48,7 +46,7 @@
                 .eq("payType",3 )
                 .eq("auditStatus",2));
         List<Integer> comIds = list.stream().map(Competition::getId).collect(Collectors.toList());
-        List<UserCompetition> userCompetitions = ucttService.queryUsersCompetetions(appUserId,comIds);
+        List<UserCompetition> userCompetitions = ucttService.queryUsersCompetetions(startTime,endTime,appUserId,comIds);
         if (userCompetitions.size() > 0){
             userCompetitions.forEach(coms ->{
                 PurchaseRecordVo recordVo = new PurchaseRecordVo();
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java
index d23621b..3a92b86 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java
@@ -4,14 +4,18 @@
 import com.dsh.competition.feignclient.model.PurchaseRecordVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.util.Date;
 import java.util.List;
 
 @FeignClient(value = "mb-cloud-competition")
 public interface DeductionCompetitionsClient {
 
     @PostMapping("/competition/getCompetitionsDetails")
-    public List<PurchaseRecordVo> getStuSourseList(@RequestParam("appUserId") Integer appUserId);
+    public List<PurchaseRecordVo> getStuSourseList(@RequestBody Date startTime,
+                                                   @RequestBody Date  endTime,
+                                                   @RequestParam("appUserId") Integer appUserId);
 
 }
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java
index 481c830..f499608 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java
@@ -4,6 +4,7 @@
 import com.dsh.competition.entity.UserCompetition;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -17,6 +18,9 @@
 public interface UserCompetitionMapper extends BaseMapper<UserCompetition> {
 
 
-    List<UserCompetition> queryUsersCompetetions(@Param("appUserId") Integer appUserId,@Param("comIds") List<Integer> comIds);
+    List<UserCompetition> queryUsersCompetetions(@Param("startTime") Date startTime,
+                                                 @Param("endTime") Date endTime ,
+                                                 @Param("appUserId") Integer appUserId,
+                                                 @Param("comIds") List<Integer> comIds);
 
 }
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.java
index 386cfad..b4fcdb5 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.dsh.competition.entity.UserCompetition;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -16,6 +17,6 @@
 public interface UserCompetitionService extends IService<UserCompetition> {
 
 
-    List<UserCompetition> queryUsersCompetetions(Integer appUserId, List<Integer> comIds);
+    List<UserCompetition> queryUsersCompetetions(Date startTime, Date  endTime ,Integer appUserId, List<Integer> comIds);
 
 }
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java
index 2a8d208..8fd1b12 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java
@@ -6,6 +6,7 @@
 import com.dsh.competition.service.UserCompetitionService;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -21,7 +22,7 @@
 
 
     @Override
-    public List<UserCompetition> queryUsersCompetetions(Integer appUserId, List<Integer> comIds) {
-        return this.baseMapper.queryUsersCompetetions(appUserId,comIds);
+    public List<UserCompetition> queryUsersCompetetions(Date startTime, Date endTime , Integer appUserId, List<Integer> comIds) {
+        return this.baseMapper.queryUsersCompetetions(startTime,endTime,appUserId,comIds);
     }
 }
diff --git a/cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml b/cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml
index aa933cb..93a7fcc 100644
--- a/cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml
+++ b/cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml
@@ -30,6 +30,9 @@
             #{item}
         </foreach>
         </if>
+        <if test="startTime != null and endTime != null">
+            and (insertTime between #{startTime} and #{endTime})
+        </if>
     </select>
 
 </mapper>
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java
new file mode 100644
index 0000000..6bbf48a
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java
@@ -0,0 +1,66 @@
+package com.dsh.course.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dsh.course.entity.CancelledClasses;
+import com.dsh.course.entity.TCoursePackagePayment;
+import com.dsh.course.feignclient.model.PurchaseRecordVo;
+import com.dsh.course.service.CancelledClassesService;
+import com.dsh.course.service.TCoursePackagePaymentService;
+import io.swagger.annotations.Api;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Api
+@CrossOrigin
+@RestController
+@RequestMapping("")
+public class CancelSourceController {
+
+
+    @Autowired
+    private CancelledClassesService caceService;
+
+
+    @Autowired
+    private TCoursePackagePaymentService tcppService;
+
+    private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm");
+
+
+    /**
+     * 获取课包对应的消费记录
+     * @param stuId 学员id
+     * @param appUserId 用户id
+     * @return
+     */
+    @PostMapping("/cancelSource/cancelList")
+    public List<PurchaseRecordVo> getCancelCourseList(@RequestBody Date startTime,@RequestBody Date  endTime,@RequestBody Integer stuId,@RequestBody Integer appUserId){
+        List<PurchaseRecordVo> purchaseRecordVos = new ArrayList<>();
+
+        List<TCoursePackagePayment> tCoursePackagePayments = tcppService.queryAllCoursePackage(startTime,endTime,stuId, appUserId);
+        List<Integer> coursePackageIds = tCoursePackagePayments.stream().map(TCoursePackagePayment::getId).collect(Collectors.toList());
+
+        List<CancelledClasses> list = caceService.list(new QueryWrapper<CancelledClasses>()
+                .in("coursePackageId", coursePackageIds)
+                .between("insertTime",startTime,endTime));
+        if (list.size() > 0){
+            list.forEach( canse -> {
+                PurchaseRecordVo purchaseRecordVo = new PurchaseRecordVo();
+                purchaseRecordVo.setPurchaseTime(format.format(canse.getInsertTime()));
+                purchaseRecordVo.setPurchaseType("");
+                purchaseRecordVo.setPurchaseAmount("-"+canse.getCancelledClassesNumber());
+                purchaseRecordVos.add(purchaseRecordVo);
+            });
+        }
+        return purchaseRecordVos;
+    }
+
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
index 57b99b2..624828b 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
@@ -9,10 +9,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -30,7 +27,7 @@
 
 
     @PostMapping("/course/queryList")
-    public List<ExerciseVideo> queryStuCourseAfterVideos(List<Integer> courseIds){
+    public List<ExerciseVideo> queryStuCourseAfterVideos(@RequestBody List<Integer> courseIds){
         List<ExerciseVideo> videos = new ArrayList<>();
         List<TCourse> list = courseService.list(new QueryWrapper<TCourse>()
                 .in("id", courseIds)
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
index a40a5aa..498f6cb 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -5,6 +5,7 @@
 import com.dsh.course.entity.TCoursePackage;
 import com.dsh.course.entity.TCoursePackagePayment;
 import com.dsh.course.feignclient.model.CourseOfStoreVo;
+import com.dsh.course.feignclient.model.PurchaseRecordVo;
 import com.dsh.course.feignclient.model.StuCourseResp;
 import com.dsh.course.feignclient.model.StuSessionDetailsVo;
 import com.dsh.course.service.TCoursePackagePaymentService;
@@ -16,7 +17,9 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -35,6 +38,8 @@
     @Autowired
     private TCoursePackageService tcpService;
 
+    private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm");
+
     /**
      * 获取 没有学员信息的图片配置
      * @param stuId 学员id
@@ -43,7 +48,7 @@
     @PostMapping("/coursePack/queryPayment")
     public List<StuCourseResp> getStuCoursePackagePayment(@RequestBody Integer stuId,@RequestBody Integer appUserId){
         List<StuCourseResp> resps = new ArrayList<>();
-        List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(stuId,appUserId);
+        List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(null,null,stuId,appUserId);
         if (byUserId.size() > 0 ){
             for (TCoursePackagePayment tCoursePackagePayment : byUserId) {
                 TCoursePackage tCoursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId());
@@ -86,9 +91,9 @@
      * 课程名称列表
      */
     @PostMapping("/coursePack/sessionNames")
-    public List<StuSessionDetailsVo> getStuSessionList(@RequestParam("stuId") Integer stuId,@RequestParam("appUserId") Integer appUserId){
+    public List<StuSessionDetailsVo> getStuSessionList(@RequestBody Date startTime, @RequestBody Date  endTime, @RequestBody Integer stuId, @RequestBody Integer appUserId){
         List<StuSessionDetailsVo> detailsVos = new ArrayList<>();
-        List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(stuId,appUserId);
+        List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(startTime,endTime,stuId,appUserId);
         if (byUserId.size() > 0){
             List<Integer> collect = byUserId.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList());
             List<TCoursePackage> list = tcpService.list(new QueryWrapper<TCoursePackage>()
@@ -104,4 +109,22 @@
         }
         return detailsVos;
     }
+
+    @PostMapping("/coursePack/paymentCourse")
+    public List<PurchaseRecordVo> queryCourseDetails(@RequestBody Date startTime, @RequestBody Date  endTime,@RequestBody Integer stuId, @RequestBody Integer appUserId) {
+        List<PurchaseRecordVo> purchaseRecordVos = new ArrayList<>();
+        List<TCoursePackagePayment> coursePackage = packagePaymentService.queryAllCoursePackage(startTime,endTime,stuId, appUserId);
+        if (coursePackage.size() > 0 ){
+            coursePackage.forEach( cspackage -> {
+                PurchaseRecordVo recordVo = new PurchaseRecordVo();
+                recordVo.setPurchaseAmount("+"+cspackage.getClassHours());
+                recordVo.setPurchaseTime(format.format(cspackage.getInsertTime()));
+                recordVo.setPurchaseType("购买课包");
+                purchaseRecordVos.add(recordVo);
+            });
+        }
+        return purchaseRecordVos;
+    }
+
+
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/CancelledClasses.java b/cloud-server-course/src/main/java/com/dsh/course/entity/CancelledClasses.java
new file mode 100644
index 0000000..a5d4298
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/CancelledClasses.java
@@ -0,0 +1,58 @@
+package com.dsh.course.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 课包消课记录
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_cancelled_classes")
+public class CancelledClasses extends Model<CancelledClasses> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 课包id
+     */
+    private Integer coursePackageId;
+    /**
+     * 消课凭证
+     */
+    private String voucher;
+    /**
+     * 消课数量
+     */
+    private Integer cancelledClassesNumber;
+    /**
+     * 添加时间
+     */
+    private Date insertTime;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CancelListClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CancelListClient.java
new file mode 100644
index 0000000..cb7ef3e
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CancelListClient.java
@@ -0,0 +1,20 @@
+package com.dsh.course.feignclient;
+
+import com.dsh.course.feignclient.model.PurchaseRecordVo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.Date;
+import java.util.List;
+
+@FeignClient(value = "mb-cloud-course")
+public interface CancelListClient {
+
+    @PostMapping("/cancelSource/cancelList")
+    public List<PurchaseRecordVo> getCancelCourseList(@RequestBody Date startTime,
+                                                      @RequestBody Date  endTime,
+                                                      @RequestBody Integer stuId,
+                                                      @RequestBody Integer appUserId);
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseListClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseListClient.java
index 2111f68..aeadaab 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseListClient.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseListClient.java
@@ -4,6 +4,7 @@
 import com.dsh.course.feignclient.model.ExerciseVideo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
 
@@ -11,5 +12,5 @@
 public interface CourseListClient {
 
     @PostMapping("/course/queryList")
-    List<ExerciseVideo> queryStuCourseAfterVideos(List<Integer> courseIds);
+    List<ExerciseVideo> queryStuCourseAfterVideos(@RequestBody List<Integer> courseIds);
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseSessionNameClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseSessionNameClient.java
index 8bc5550..8f71d73 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseSessionNameClient.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseSessionNameClient.java
@@ -1,11 +1,13 @@
 package com.dsh.course.feignclient;
 
 
+import com.dsh.course.feignclient.model.PurchaseRecordVo;
 import com.dsh.course.feignclient.model.StuSessionDetailsVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RequestBody;
 
+import java.util.Date;
 import java.util.List;
 
 @FeignClient(value = "mb-cloud-course")
@@ -13,6 +15,16 @@
 
 
     @PostMapping("/coursePack/sessionNames")
-    List<StuSessionDetailsVo> getStuSessionList(@RequestParam("stuId") Integer stuId, @RequestParam("appUserId") Integer appUserId);
+    List<StuSessionDetailsVo> getStuSessionList(@RequestBody Date startTime,
+                                                @RequestBody Date  endTime,
+                                                @RequestBody Integer stuId,
+                                                @RequestBody Integer appUserId);
+
+
+    @PostMapping("/coursePack/paymentCourse")
+    public List<PurchaseRecordVo> queryCourseDetails(@RequestBody Date startTime,
+                                                     @RequestBody Date  endTime,
+                                                     @RequestBody Integer stuId,
+                                                     @RequestBody Integer appUserId);
 
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PurchaseRecordVo.java
similarity index 64%
copy from cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java
copy to cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PurchaseRecordVo.java
index bd79f49..6bcc31b 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PurchaseRecordVo.java
@@ -1,4 +1,4 @@
-package com.dsh.account.model.vo.classDetails.classInsVo;
+package com.dsh.course.feignclient.model;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -14,10 +14,10 @@
     @ApiModelProperty(value = "类型名称")
     private String purchaseType;
 
-    @ApiModelProperty(value = "类型变动时间 例如 06-29 10:48")
+    @ApiModelProperty(value = "类型变动时间")
     private String purchaseTime;
 
-    @ApiModelProperty(value = "类型涉及金额 例如 +100  -50")
+    @ApiModelProperty(value = "类型涉及金额")
     private String purchaseAmount;
 
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/CancelledClassesMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/CancelledClassesMapper.java
new file mode 100644
index 0000000..0b453c8
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/CancelledClassesMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.course.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.course.entity.CancelledClasses;
+
+/**
+ * <p>
+ * 课包消课记录 Mapper 接口
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+public interface CancelledClassesMapper extends BaseMapper<CancelledClasses> {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java
index b0c9d4f..884f2ab 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -16,7 +17,9 @@
  */
 public interface TCoursePackagePaymentMapper extends BaseMapper<TCoursePackagePayment> {
 
-    List<TCoursePackagePayment> queryAllCoursePackage(@Param("stuId") Integer stuId,
+    List<TCoursePackagePayment> queryAllCoursePackage(@Param("startTime")Date startTime,
+                                                      @Param("endTime")Date  endTime ,
+                                                      @Param("stuId") Integer stuId,
                                                       @Param("appUserId") Integer appUserId);
 
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/CancelledClassesService.java b/cloud-server-course/src/main/java/com/dsh/course/service/CancelledClassesService.java
new file mode 100644
index 0000000..c2c307c
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/CancelledClassesService.java
@@ -0,0 +1,16 @@
+package com.dsh.course.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.course.entity.CancelledClasses;
+
+/**
+ * <p>
+ * 课包消课记录 服务类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+public interface CancelledClassesService extends IService<CancelledClasses> {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java
index 106bdb0..41f170d 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java
@@ -1,8 +1,9 @@
 package com.dsh.course.service;
 
-import com.dsh.course.entity.TCoursePackagePayment;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.course.entity.TCoursePackagePayment;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -15,6 +16,6 @@
  */
 public interface TCoursePackagePaymentService extends IService<TCoursePackagePayment> {
 
-    List<TCoursePackagePayment> queryAllCoursePackage(Integer stuId,Integer appUserId);
+    List<TCoursePackagePayment> queryAllCoursePackage(Date startTime, Date  endTime ,Integer stuId, Integer appUserId);
 
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CancelledClassesServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CancelledClassesServiceImpl.java
new file mode 100644
index 0000000..648abbc
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CancelledClassesServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.course.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.course.entity.CancelledClasses;
+import com.dsh.course.mapper.CancelledClassesMapper;
+import com.dsh.course.service.CancelledClassesService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 课包消课记录 服务实现类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+@Service
+public class CancelledClassesServiceImpl extends ServiceImpl<CancelledClassesMapper, CancelledClasses> implements CancelledClassesService {
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
index f33f1f3..77c0928 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -20,7 +21,7 @@
 public class TCoursePackagePaymentServiceImpl extends ServiceImpl<TCoursePackagePaymentMapper, TCoursePackagePayment> implements TCoursePackagePaymentService {
 
     @Override
-    public List<TCoursePackagePayment> queryAllCoursePackage(Integer stuId,Integer appUserId) {
-        return this.baseMapper.queryAllCoursePackage(stuId,appUserId);
+    public List<TCoursePackagePayment> queryAllCoursePackage(Date startTime, Date  endTime , Integer stuId, Integer appUserId) {
+        return this.baseMapper.queryAllCoursePackage(startTime,endTime,stuId,appUserId);
     }
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/web/CancelledClassesController.java b/cloud-server-course/src/main/java/com/dsh/course/web/CancelledClassesController.java
new file mode 100644
index 0000000..87c1bd5
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/web/CancelledClassesController.java
@@ -0,0 +1,21 @@
+package com.dsh.course.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 课包消课记录 前端控制器
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-29
+ */
+@RestController
+@RequestMapping("/cancelled-classes")
+public class CancelledClassesController {
+
+}
+
diff --git a/cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml b/cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml
new file mode 100644
index 0000000..14a46b0
--- /dev/null
+++ b/cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.course.mapper.CancelledClassesMapper">
+
+</mapper>
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
index f49a1c7..00b7a4d 100644
--- a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -50,6 +50,9 @@
         <if test="appUserId != null">
             and appUserId = #{appUserId}
         </if>
+        <if test="startTime != null and endTime != null">
+            and (insertTime between #{startTime} and #{endTime})
+        </if>
     </select>
 
 </mapper>

--
Gitblit v1.7.1