From 0d17b6a250e455af9abd0b61b6de0004a296e98d Mon Sep 17 00:00:00 2001
From: java <linlangsur163@163.com>
Date: 星期二, 27 六月 2023 05:24:51 +0800
Subject: [PATCH] 课程信息:课时详情展示

---
 cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseSessionNameClient.java                   |   17 +
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java             |   32 ++
 cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml                               |    8 
 cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java   |   23 +
 cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDetailsInsVo.java  |   39 +++
 cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java                             |    3 
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java                    |   31 ++
 cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.java              |   21 +
 cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java                  |    2 
 cloud-server-competition/src/main/java/com/dsh/competition/controller/UserCompetitionController.java        |   48 +++
 cloud-server-competition/src/main/java/com/dsh/competition/entity/Competition.java                          |  151 +++++++++++
 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java     |   40 +++
 cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/WeekedCourse.java                  |   11 
 cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDataDetails.java   |   17 +
 cloud-server-competition/src/main/java/com/dsh/competition/entity/UserCompetition.java                      |   58 ++++
 cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/PurchaseRecordVo.java          |   23 +
 cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml                                |    9 
 cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java                    |    3 
 cloud-server-competition/src/main/java/com/dsh/competition/service/CompetitionService.java                  |   16 +
 cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java                   |   14 
 cloud-server-competition/src/main/resources/mapper/CompetitionMapper.xml                                    |    6 
 cloud-server-course/src/main/java/com/dsh/course/util/DateUtil.java                                         |   18 +
 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java         |   20 +
 cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassInfoVo.java        |    2 
 cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/ClassDataDetails.java          |   17 +
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java                    |   12 
 cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java     |   11 
 cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java                |   20 +
 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseSessionNameClient.java          |   17 +
 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuSessionDetailsVo.java        |   18 +
 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java         |    4 
 cloud-server-competition/src/main/java/com/dsh/competition/mapper/CompetitionMapper.java                    |   16 +
 cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuSessionDetailsVo.java                 |   18 +
 cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java |   11 
 cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java            |   21 +
 35 files changed, 742 insertions(+), 35 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 7980814..e71152b 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
@@ -58,7 +58,7 @@
             @ApiImplicitParam(value = "纬度值", name = "latitude", required = true, dataType = "String"),
             @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
     })
-    public ResultUtil queryCouponRecord(String longitude,String latitude,HttpServletRequest request){
+    public ResultUtil queryCouponRecord( @RequestBody String longitude, @RequestBody String latitude,HttpServletRequest request){
         try {
             Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(request);
             if(null == userIdFormRedis){
@@ -161,7 +161,17 @@
     @ApiImplicitParams({
             @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
     })
-    public void coursePackageDetails(@RequestBody Integer lessonId){
+    public ResultUtil coursePackageDetails(@RequestBody Integer lessonId, @RequestBody Integer stuId, HttpServletRequest request){
+        try {
+            Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(request);
+            if(null == userIdFormRedis){
+                return ResultUtil.tokenErr();
+            }
+
+            return ResultUtil.success(istuService.querySessionDetailsDt(userIdFormRedis,lessonId,stuId));
+        }catch (Exception e){
+            return ResultUtil.runErr(ResultUtil.ERROR);
+        }
 
     }
 
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
new file mode 100644
index 0000000..ec1bfc9
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java
@@ -0,0 +1,11 @@
+package com.dsh.account.feignclient.competition;
+
+
+import org.springframework.cloud.openfeign.FeignClient;
+
+@FeignClient(value = "mb-cloud-competition")
+public interface DeductionCompetitionsClient {
+
+
+
+}
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
new file mode 100644
index 0000000..ca96e73
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseSessionNameClient.java
@@ -0,0 +1,17 @@
+package com.dsh.account.feignclient.course;
+
+
+import com.dsh.account.feignclient.course.model.StuSessionDetailsVo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.List;
+
+@FeignClient(value = "mb-cloud-course")
+public interface CourseSessionNameClient {
+
+
+    @PostMapping("/coursePack/sessionNames")
+    List<StuSessionDetailsVo> getStuSessionList(Integer stuId, Integer appUserId);
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuSessionDetailsVo.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuSessionDetailsVo.java
new file mode 100644
index 0000000..9765201
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuSessionDetailsVo.java
@@ -0,0 +1,18 @@
+package com.dsh.account.feignclient.course.model;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class StuSessionDetailsVo {
+
+    @ApiModelProperty(value = "课时id")
+    private Integer sessionid;
+
+    @ApiModelProperty(value = "课时名称")
+    private String sessionName;
+
+    @ApiModelProperty(value = "课时有效期")
+    private String periodOfValidity;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/WeekedCourse.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/WeekedCourse.java
index 5c116da..ae04ba1 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/WeekedCourse.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/WeekedCourse.java
@@ -8,17 +8,6 @@
 @Data
 public class WeekedCourse {
 
-    @ApiModelProperty(value = "是否为当天 1 是 2 否")
-    private Integer isToday;
-
-    @ApiModelProperty(value = "星期缩写")
-    private String weekStr;
-
-    @ApiModelProperty(value = "星期数值")
-    private Integer weekNum;
-
-    @ApiModelProperty(value = "日期")
-    private String dayStr;
 
     @ApiModelProperty(value = "课包列表")
     private List<CourseVenue> details;
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
new file mode 100644
index 0000000..3a828f1
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDataDetails.java
@@ -0,0 +1,17 @@
+package com.dsh.account.model.vo.classDetails.classInsVo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+@Data
+public class ClassDataDetails {
+
+    @ApiModelProperty(value = "已扣课时数")
+    private Integer deductionClassHours;
+
+    @ApiModelProperty(value = "类型变动记录")
+    private List<PurchaseRecordVo> recordVos;
+}
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
new file mode 100644
index 0000000..afac200
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDetailsInsVo.java
@@ -0,0 +1,39 @@
+package com.dsh.account.model.vo.classDetails.classInsVo;
+
+import com.dsh.account.feignclient.course.model.StuSessionDetailsVo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ClassDetailsInsVo {
+
+    @ApiModelProperty(value = "学员id")
+    private Integer stuId;
+
+    @ApiModelProperty(value = "学员头像")
+    private String stuImage;
+
+    @ApiModelProperty(value = "学员姓名")
+    private String stuName;
+
+    @ApiModelProperty(value = "课时有效期(xxxx-xx-xx)")
+    private String periodOfValidity;
+
+    @ApiModelProperty(value = "总学时数")
+    private Integer totalNums;
+
+    @ApiModelProperty(value = "已扣学时数")
+    private Integer deductedNums;
+
+    @ApiModelProperty(value = "剩余学时数")
+    private Integer remainingNums;
+
+    @ApiModelProperty(value = "课包名称列表")
+    private List<StuSessionDetailsVo> sessionNames;
+
+    @ApiModelProperty(value = "课包列表")
+    private List<ClassDataDetails> details;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassInfoVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassInfoVo.java
index 49cc40b..0ebd4b9 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassInfoVo.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassInfoVo.java
@@ -19,7 +19,7 @@
     private String imgs;
 
     @ApiModelProperty(value = "学员id")
-    private String stuId;
+    private Integer stuId;
 
     @ApiModelProperty(value = "学员头像")
     private String stuImg;
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/model/vo/classDetails/classInsVo/PurchaseRecordVo.java
new file mode 100644
index 0000000..40c88a4
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java
@@ -0,0 +1,23 @@
+package com.dsh.account.model.vo.classDetails.classInsVo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 类型实体类:
+ * 类型:购买课包、消课、报名赛事、介绍有礼
+ */
+
+@Data
+public class PurchaseRecordVo {
+
+    @ApiModelProperty(value = "类型名称")
+    private String purchaseType;
+
+    @ApiModelProperty(value = "类型变动时间")
+    private String purchaseTime;
+
+    @ApiModelProperty(value = "类型涉及金额")
+    private String purchaseAmount;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java
index 981ed67..b5b37db 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.dsh.account.entity.TStudent;
+import com.dsh.account.model.vo.classDetails.classInsVo.ClassDetailsInsVo;
 import com.dsh.account.model.vo.classDetails.classInsVo.StuDetailsReq;
 
 /**
@@ -16,4 +17,6 @@
 
     void addStuOfAppUser(StuDetailsReq stu,Integer appUserId);
 
+    ClassDetailsInsVo querySessionDetailsDt(Integer userIdFormRedis, Integer lessonId, Integer stuId);
+
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
index 0a3793d..29debd2 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -5,7 +5,6 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dsh.account.entity.TAppUser;
 import com.dsh.account.entity.TStudent;
-import com.dsh.account.enums.WeeksEnum;
 import com.dsh.account.feignclient.course.CoursePaymentClient;
 import com.dsh.account.feignclient.course.model.CourseOfStoreVo;
 import com.dsh.account.feignclient.course.model.StuCourseResp;
@@ -80,6 +79,7 @@
                     .eq("isDefault",1));
             if (tStudents.size() > 0 ){
                 TStudent tStudent = tStudents.get(0);
+                classInfoVo.setStuId(tStudent.getId());
                 classInfoVo.setIsThere(1);
                 classInfoVo.setStuImg(tStudent.getHeadImg());
                 classInfoVo.setStuSex(tStudent.getSex());
@@ -141,19 +141,9 @@
      */
     public List<WeekedCourse> dealDatas(List<CourseOfStoreVo> storeOfCourses,String longitude ,String latitude){
         List<WeekedCourse> weekedCourses = new ArrayList<>();
-        int weekStr = LocalDateTimeUtils.getWeekStr();
         for (int i = 1; i < 8; i++) {
             WeekedCourse weekedCourse = new WeekedCourse();
-            weekedCourse.setWeekNum(i);
-            weekedCourse.setWeekStr(WeeksEnum.getStr(i));
-            String weekOfDays = LocalDateTimeUtils.getWeekOfDays(i);
-            weekedCourse.setDayStr(weekOfDays);
             List<CourseVenue> courseVenues = new ArrayList<>();
-            if (weekStr == i) {
-                weekedCourse.setIsToday(1);
-            } else {
-                weekedCourse.setIsToday(2);
-            }
             Map<Integer, List<CourseOfStoreVo>> map = storeOfCourses.stream().collect(Collectors.groupingBy(CourseOfStoreVo::getStoreId));
             for (Map.Entry<Integer, List<CourseOfStoreVo>> integerListEntry : map.entrySet()) {
                 List<CourseOfStoreVo> value = integerListEntry.getValue();
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 bd7438f..b96ad10 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
@@ -2,14 +2,19 @@
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dsh.account.entity.TStudent;
+import com.dsh.account.feignclient.course.CourseSessionNameClient;
+import com.dsh.account.feignclient.course.model.StuSessionDetailsVo;
 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.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;
 
 /**
  * <p>
@@ -22,15 +27,18 @@
 @Service
 public class TStudentServiceImpl extends ServiceImpl<TStudentMapper, TStudent> implements TStudentService {
 
+    @Autowired
+    private CourseSessionNameClient sessionNameClient;
+
     @Override
     public void addStuOfAppUser(StuDetailsReq stu,Integer appUserId) {
         TStudent student = new TStudent();
         student.setAppUserId(appUserId);
         student.setName(stu.getName());
         student.setHeadImg(stu.getHeadImg());
-        student.setPhone(stu.getPhone());
+        student.setPhone(ToolUtil.isNotEmpty(stu.getPhone()) ? stu.getPhone() : "");
         student.setSex(stu.getSex());
-        student.setIdCard(stu.getIdCard());
+        student.setIdCard(ToolUtil.isNotEmpty(stu.getIdCard())?stu.getIdCard() : "");
         student.setBirthday(new Date(stu.getBirthday()));
         student.setHeight(stu.getHeight());
         student.setWeight(stu.getWeight());
@@ -42,4 +50,21 @@
         student.setState(1);
         this.baseMapper.insert(student);
     }
+
+    @Override
+    public ClassDetailsInsVo querySessionDetailsDt(Integer userIdFormRedis, Integer lessonId, Integer stuId) {
+        ClassDetailsInsVo insVo = new ClassDetailsInsVo();
+        List<StuSessionDetailsVo> stuSessionList = sessionNameClient.getStuSessionList(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);
+
+        }
+
+        return insVo;
+    }
 }
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
new file mode 100644
index 0000000..6cb3e3d
--- /dev/null
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
@@ -0,0 +1,21 @@
+package com.dsh.competition.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-26
+ */
+@RestController
+@RequestMapping("/competition")
+public class CompetitionController {
+
+}
+
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/controller/UserCompetitionController.java b/cloud-server-competition/src/main/java/com/dsh/competition/controller/UserCompetitionController.java
new file mode 100644
index 0000000..3f9c80f
--- /dev/null
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/UserCompetitionController.java
@@ -0,0 +1,48 @@
+package com.dsh.competition.controller;
+
+
+import com.dsh.competition.feignclient.model.ClassDataDetails;
+import com.dsh.competition.feignclient.model.PurchaseRecordVo;
+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.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 赛事报名记录 前端控制器
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-26
+ */
+@RestController
+@RequestMapping("/user-competition")
+public class UserCompetitionController {
+
+
+    @Autowired
+    private UserCompetitionService ucService;
+
+    /**
+     * 获取报名赛事的课时扣减记录
+     */
+    @PostMapping("/deRecord")
+    public List<ClassDataDetails> getDeductionRecordOfRegistrationEvent(@RequestBody Integer appUserId,@RequestBody String startTime,@RequestBody String endTime){
+        List<ClassDataDetails> details = new ArrayList<>();
+        List<PurchaseRecordVo> recordVos = ucService.queryDeRecordDetails(appUserId,startTime,endTime);
+
+
+        return details;
+
+
+    }
+
+
+}
+
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/entity/Competition.java b/cloud-server-competition/src/main/java/com/dsh/competition/entity/Competition.java
new file mode 100644
index 0000000..1fc29a0
--- /dev/null
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/entity/Competition.java
@@ -0,0 +1,151 @@
+package com.dsh.competition.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-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_competition")
+public class Competition extends Model<Competition> {
+
+    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;
+    /**
+     * 门店id
+     */
+    private Integer storeId;
+    /**
+     * 赛事名称
+     */
+    private String name;
+    /**
+     * 开始时间
+     */
+    private Date startTime;
+    /**
+     * 结束时间
+     */
+    private Date endTime;
+    /**
+     * 报名结束时间
+     */
+    private Date registerEndTime;
+    /**
+     * 报名条件(1=全部用户,2=仅限年度会员参与,3=仅限学员参与)
+     */
+    private Integer registerCondition;
+    /**
+     * 报名开始年龄
+     */
+    private Integer startAge;
+    /**
+     * 报名结束年龄
+     */
+    private Integer endAge;
+    /**
+     * 支付方式(1=现金,2=玩湃币支付,3=课时支付)
+     */
+    private Integer payType;
+    /**
+     * 支付金额
+     */
+    private BigDecimal price;
+    /**
+     * 参加地址
+     */
+    private String address;
+    /**
+     * 经度
+     */
+    private String longitude;
+    /**
+     * 纬度
+     */
+    private String latitude;
+    /**
+     * 报名人数
+     */
+    private Integer applicantsNumber;
+    /**
+     * 基础人数
+     */
+    private Integer baseNumber;
+    /**
+     * 是否需要实名(0=否,1=是)
+     */
+    private Integer realName;
+    /**
+     * 赛事简介
+     */
+    private String introduction;
+    /**
+     * 审核状态(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-competition/src/main/java/com/dsh/competition/entity/UserCompetition.java b/cloud-server-competition/src/main/java/com/dsh/competition/entity/UserCompetition.java
new file mode 100644
index 0000000..c80a11a
--- /dev/null
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/entity/UserCompetition.java
@@ -0,0 +1,58 @@
+package com.dsh.competition.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-26
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_user_competition")
+public class UserCompetition extends Model<UserCompetition> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 赛事id
+     */
+    private Integer competitionId;
+    /**
+     * 用户id
+     */
+    private Integer userId;
+    /**
+     * 状态(1=正常,2=取消)
+     */
+    private Integer status;
+    /**
+     * 参加时间
+     */
+    private Date insertTime;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
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
new file mode 100644
index 0000000..666ce61
--- /dev/null
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java
@@ -0,0 +1,11 @@
+package com.dsh.competition.feignclient;
+
+
+import org.springframework.cloud.openfeign.FeignClient;
+
+@FeignClient(value = "mb-cloud-competition")
+public interface DeductionCompetitionsClient {
+
+
+
+}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/ClassDataDetails.java b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/ClassDataDetails.java
new file mode 100644
index 0000000..dc6e069
--- /dev/null
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/ClassDataDetails.java
@@ -0,0 +1,17 @@
+package com.dsh.competition.feignclient.model;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+@Data
+public class ClassDataDetails {
+
+    @ApiModelProperty(value = "已扣课时数")
+    private Integer deductionClassHours;
+
+    @ApiModelProperty(value = "类型变动记录")
+    private List<PurchaseRecordVo> recordVos;
+}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/PurchaseRecordVo.java b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/PurchaseRecordVo.java
new file mode 100644
index 0000000..af0e9b8
--- /dev/null
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/PurchaseRecordVo.java
@@ -0,0 +1,23 @@
+package com.dsh.competition.feignclient.model;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 类型实体类:
+ * 类型:购买课包、消课、报名赛事、介绍有礼
+ */
+
+@Data
+public class PurchaseRecordVo {
+
+    @ApiModelProperty(value = "类型名称")
+    private String purchaseType;
+
+    @ApiModelProperty(value = "类型变动时间")
+    private String purchaseTime;
+
+    @ApiModelProperty(value = "类型涉及金额")
+    private String purchaseAmount;
+
+}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/mapper/CompetitionMapper.java b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/CompetitionMapper.java
new file mode 100644
index 0000000..851cb69
--- /dev/null
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/CompetitionMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.competition.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.competition.entity.Competition;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-26
+ */
+public interface CompetitionMapper extends BaseMapper<Competition> {
+
+}
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
new file mode 100644
index 0000000..62a4713
--- /dev/null
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java
@@ -0,0 +1,20 @@
+package com.dsh.competition.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.competition.entity.UserCompetition;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 赛事报名记录 Mapper 接口
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-26
+ */
+public interface UserCompetitionMapper extends BaseMapper<UserCompetition> {
+
+    List<UserCompetition> queryDeRecordDetails(Integer appUserId,List<Integer> collect,String startTime, String endTime);
+
+}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/CompetitionService.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/CompetitionService.java
new file mode 100644
index 0000000..5f12a48
--- /dev/null
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/CompetitionService.java
@@ -0,0 +1,16 @@
+package com.dsh.competition.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.competition.entity.Competition;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-26
+ */
+public interface CompetitionService extends IService<Competition> {
+
+}
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
new file mode 100644
index 0000000..0dc6ffe
--- /dev/null
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.java
@@ -0,0 +1,21 @@
+package com.dsh.competition.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.competition.entity.UserCompetition;
+import com.dsh.competition.feignclient.model.PurchaseRecordVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 赛事报名记录 服务类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-26
+ */
+public interface UserCompetitionService extends IService<UserCompetition> {
+
+    List<PurchaseRecordVo> queryDeRecordDetails(Integer appUserId,String startTime, String endTime);
+
+}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java
new file mode 100644
index 0000000..a7ccc96
--- /dev/null
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.competition.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.competition.entity.Competition;
+import com.dsh.competition.mapper.CompetitionMapper;
+import com.dsh.competition.service.CompetitionService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-26
+ */
+@Service
+public class CompetitionServiceImpl extends ServiceImpl<CompetitionMapper, Competition> implements CompetitionService {
+
+}
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
new file mode 100644
index 0000000..340c55e
--- /dev/null
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java
@@ -0,0 +1,40 @@
+package com.dsh.competition.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.competition.entity.Competition;
+import com.dsh.competition.entity.UserCompetition;
+import com.dsh.competition.feignclient.model.PurchaseRecordVo;
+import com.dsh.competition.mapper.CompetitionMapper;
+import com.dsh.competition.mapper.UserCompetitionMapper;
+import com.dsh.competition.service.UserCompetitionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 赛事报名记录 服务实现类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-26
+ */
+@Service
+public class UserCompetitionServiceImpl extends ServiceImpl<UserCompetitionMapper, UserCompetition> implements UserCompetitionService {
+
+    @Autowired
+    CompetitionMapper comMapper;
+
+    @Override
+    public List<PurchaseRecordVo> queryDeRecordDetails(Integer appUserId,String startTime, String endTime) {
+        List<Competition> competitions = comMapper.selectList(new QueryWrapper<Competition>()
+                .eq("payType", 3)
+                .eq("auditStatus",2));
+        List<Integer> collect = competitions.stream().map(Competition::getId).collect(Collectors.toList());
+        List<UserCompetition> purchaseRecordVos = this.baseMapper.queryDeRecordDetails(appUserId, collect, startTime, endTime);
+        return null;
+    }
+}
diff --git a/cloud-server-competition/src/main/resources/mapper/CompetitionMapper.xml b/cloud-server-competition/src/main/resources/mapper/CompetitionMapper.xml
new file mode 100644
index 0000000..0a11da1
--- /dev/null
+++ b/cloud-server-competition/src/main/resources/mapper/CompetitionMapper.xml
@@ -0,0 +1,6 @@
+<?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.competition.mapper.CompetitionMapper">
+
+
+</mapper>
diff --git a/cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml b/cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml
new file mode 100644
index 0000000..65f6df0
--- /dev/null
+++ b/cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml
@@ -0,0 +1,9 @@
+<?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.competition.mapper.UserCompetitionMapper">
+
+    <select id="queryDeRecordDetails" resultType="com.dsh.competition.entity.UserCompetition">
+
+    </select>
+
+</mapper>
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 d5fb9e5..e26735e 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
@@ -1,12 +1,15 @@
 package com.dsh.course.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.StuCourseResp;
+import com.dsh.course.feignclient.model.StuSessionDetailsVo;
 import com.dsh.course.service.TCoursePackagePaymentService;
 import com.dsh.course.service.TCoursePackageService;
+import com.dsh.course.util.DateUtil;
 import io.swagger.annotations.Api;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -15,6 +18,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Api
 @CrossOrigin
@@ -37,9 +41,9 @@
      * @return  课包列表
      */
     @PostMapping("/coursePack/queryPayment")
-    public List<StuCourseResp> getStuCoursePackagePayment(@RequestBody Integer stuId){
+    public List<StuCourseResp> getStuCoursePackagePayment(@RequestBody Integer stuId,@RequestBody Integer appUserId){
         List<StuCourseResp> resps = new ArrayList<>();
-        List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(stuId);
+        List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(stuId,appUserId);
         if (byUserId.size() > 0 ){
             for (TCoursePackagePayment tCoursePackagePayment : byUserId) {
                 TCoursePackage tCoursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId());
@@ -76,4 +80,28 @@
         return tcpService.queryStoreOfCourse();
     }
 
+
+    /**
+     *
+     * 课程名称列表
+     */
+    @PostMapping("/coursePack/sessionNames")
+    public List<StuSessionDetailsVo> getStuSessionList(@RequestBody Integer stuId,@RequestBody Integer appUserId){
+        List<StuSessionDetailsVo> detailsVos = new ArrayList<>();
+        List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(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>()
+                    .in("id", collect));
+            list.forEach(vo -> {
+                StuSessionDetailsVo detVo = new StuSessionDetailsVo();
+                detVo.setSessionid(vo.getId());
+                detVo.setSessionName(vo.getName());
+                String afterDayDate = DateUtil.getAfterDayDate2(vo.getInsertTime(),vo.getValidDays() + "");
+                detVo.setPeriodOfValidity(afterDayDate);
+                detailsVos.add(detVo);
+            });
+        }
+        return detailsVos;
+    }
 }
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
new file mode 100644
index 0000000..b72e59e
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseSessionNameClient.java
@@ -0,0 +1,17 @@
+package com.dsh.course.feignclient;
+
+
+import com.dsh.course.feignclient.model.StuSessionDetailsVo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import java.util.List;
+
+@FeignClient(value = "mb-cloud-course")
+public interface CourseSessionNameClient {
+
+
+    @PostMapping("/coursePack/sessionNames")
+    List<StuSessionDetailsVo> getStuSessionList(Integer stuId,Integer appUserId);
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuSessionDetailsVo.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuSessionDetailsVo.java
new file mode 100644
index 0000000..b342323
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuSessionDetailsVo.java
@@ -0,0 +1,18 @@
+package com.dsh.course.feignclient.model;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class StuSessionDetailsVo {
+
+    @ApiModelProperty(value = "课时id")
+    private Integer sessionid;
+
+    @ApiModelProperty(value = "课时名称")
+    private String sessionName;
+
+    @ApiModelProperty(value = "课时有效期")
+    private String periodOfValidity;
+
+}
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 4d8799c..b0c9d4f 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
@@ -16,6 +16,7 @@
  */
 public interface TCoursePackagePaymentMapper extends BaseMapper<TCoursePackagePayment> {
 
-    List<TCoursePackagePayment> queryAllCoursePackage(@Param("stuId") Integer stuId);
+    List<TCoursePackagePayment> queryAllCoursePackage(@Param("stuId") Integer stuId,
+                                                      @Param("appUserId") Integer appUserId);
 
 }
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 de97a51..106bdb0 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
@@ -15,6 +15,6 @@
  */
 public interface TCoursePackagePaymentService extends IService<TCoursePackagePayment> {
 
-    List<TCoursePackagePayment> queryAllCoursePackage(Integer stuId);
+    List<TCoursePackagePayment> queryAllCoursePackage(Integer stuId,Integer appUserId);
 
 }
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 a868ba2..f33f1f3 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
@@ -20,7 +20,7 @@
 public class TCoursePackagePaymentServiceImpl extends ServiceImpl<TCoursePackagePaymentMapper, TCoursePackagePayment> implements TCoursePackagePaymentService {
 
     @Override
-    public List<TCoursePackagePayment> queryAllCoursePackage(Integer stuId) {
-        return this.baseMapper.queryAllCoursePackage(stuId);
+    public List<TCoursePackagePayment> queryAllCoursePackage(Integer stuId,Integer appUserId) {
+        return this.baseMapper.queryAllCoursePackage(stuId,appUserId);
     }
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/DateUtil.java b/cloud-server-course/src/main/java/com/dsh/course/util/DateUtil.java
index b4de802..b890d08 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/util/DateUtil.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/util/DateUtil.java
@@ -237,6 +237,24 @@
         return dateStr;
     }
 
+
+    /**
+     * 得到n天之后的日期
+     */
+    public static String getAfterDayDate2(Date date,String days) {
+        int daysInt = Integer.parseInt(days);
+
+        Calendar canlendar = Calendar.getInstance(); // java.util包
+        canlendar.setTime(date);
+        canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
+        Date afterDate = canlendar.getTime();
+
+        SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd");
+        String dateStr = sdfd.format(afterDate);
+
+        return dateStr;
+    }
+
     /**
      * 得到n天之后是周几
      */
diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
index 7bbff13..5124aea 100644
--- a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -43,7 +43,13 @@
         UNION ALL
         SELECT *
         FROM t_course_package_payment5
-        WHERE user_id = #{stuId}
+        WHERE 1=1
+        <if test=" stuId != null">
+            and appUserId = #{stuId}
+        </if>
+        <if test="appUserId != null">
+            and studentId = #{appUserId}
+        </if>
     </select>
 
 </mapper>

--
Gitblit v1.7.1