From d0fe90adfae626158a431b038395caa908e48e8c Mon Sep 17 00:00:00 2001
From: java <linlangsur163@163.com>
Date: 星期五, 30 六月 2023 11:34:05 +0800
Subject: [PATCH] 课程信息:课时详情的数据处理

---
 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuWithCoursesListVo.java |   19 ++
 cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageStudent.java                     |   67 +++++++++
 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java       |   27 +++
 cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuWithCoursesListVo.java          |   19 ++
 cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml                          |   35 +++++
 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java        |    6 
 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseRecordClient.java         |   13 +
 cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java               |   54 +++++++
 /dev/null                                                                                             |   21 ---
 cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java              |   20 ++
 cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java    |   26 +++
 cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java                 |    4 
 cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java               |   23 +++
 cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java             |   20 ++
 cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseRecordClient.java                  |   13 +
 15 files changed, 337 insertions(+), 30 deletions(-)

diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java
index dddf989..28c10d6 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java
@@ -2,8 +2,10 @@
 
 import com.dsh.account.feignclient.course.model.CourseOfStoreVo;
 import com.dsh.account.feignclient.course.model.StuCourseResp;
+import com.dsh.account.feignclient.course.model.StuWithCoursesListVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
 
@@ -17,4 +19,8 @@
 
     @PostMapping("/coursePack/storeOfCourse")
     List<CourseOfStoreVo> getStoreOfCourses();
+
+    @PostMapping("/coursePack/stuOfCourses")
+    StuWithCoursesListVo getStuOfCoursesDetails(@RequestBody Integer stuId,
+                                                      @RequestBody Integer appUserId);
 }
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseRecordClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseRecordClient.java
new file mode 100644
index 0000000..20a19b2
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseRecordClient.java
@@ -0,0 +1,13 @@
+package com.dsh.account.feignclient.course;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+@FeignClient(value = "mb-cloud-course")
+public interface CourseRecordClient {
+
+    @PostMapping("/courseRecord/queryDeduClassHours")
+    public Integer getDeductionClassHour(@RequestBody Integer courseId, @RequestBody Integer stuId, @RequestBody Integer appUserId);
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuWithCoursesListVo.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuWithCoursesListVo.java
new file mode 100644
index 0000000..0a5d372
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuWithCoursesListVo.java
@@ -0,0 +1,19 @@
+package com.dsh.account.feignclient.course.model;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+public class StuWithCoursesListVo {
+
+    @ApiModelProperty(value = "总学时数")
+    private Integer totalNums;
+
+    @ApiModelProperty(value = "已扣学时数")
+    private Integer deductedNums;
+
+    @ApiModelProperty(value = "剩余学时数")
+    private Integer remainingNums;
+
+}
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 68ba9a8..5be7f68 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
@@ -8,8 +8,11 @@
 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.CoursePaymentClient;
+import com.dsh.account.feignclient.course.CourseRecordClient;
 import com.dsh.account.feignclient.course.CourseSessionNameClient;
 import com.dsh.account.feignclient.course.model.StuSessionDetailsVo;
+import com.dsh.account.feignclient.course.model.StuWithCoursesListVo;
 import com.dsh.account.mapper.TAppUserMapper;
 import com.dsh.account.mapper.TStudentMapper;
 import com.dsh.account.model.vo.classDetails.classInsVo.ClassDetailsInsVo;
@@ -48,6 +51,12 @@
 
     @Autowired
     private IntroduceRewardsClient idrClient;
+
+    @Autowired
+    private CourseRecordClient crClient;
+
+    @Autowired
+    private CoursePaymentClient couPayClient;
 
     @Autowired
     private TAppUserMapper tauMapper;
@@ -101,11 +110,12 @@
             purchaseRecordVoList.addAll(purchaseRecordVos1);
             insVo.setSessionNames(stuSessionList);
             insVo.setDetails(dealDataOfTime(purchaseRecordVoList));
-
-            insVo.setTotalNums(0);
-            insVo.setDeductedNums(0);
-            insVo.setRemainingNums(0);
-            insVo.setDeductionClassHours(0);
+            StuWithCoursesListVo stuOfCoursesDetails = couPayClient.getStuOfCoursesDetails(stuId, userIdFormRedis);
+            insVo.setTotalNums(stuOfCoursesDetails.getTotalNums());
+            insVo.setDeductedNums(stuOfCoursesDetails.getDeductedNums());
+            insVo.setRemainingNums(stuOfCoursesDetails.getRemainingNums());
+            Integer deductionClassHour = crClient.getDeductionClassHour(lessonId, stuId, userIdFormRedis);
+            insVo.setDeductionClassHours(deductionClassHour);
         }
 
         return insVo;
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 498f6cb..6ba4f0a 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
@@ -4,10 +4,7 @@
 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.PurchaseRecordVo;
-import com.dsh.course.feignclient.model.StuCourseResp;
-import com.dsh.course.feignclient.model.StuSessionDetailsVo;
+import com.dsh.course.feignclient.model.*;
 import com.dsh.course.service.TCoursePackagePaymentService;
 import com.dsh.course.service.TCoursePackageService;
 import com.dsh.course.util.DateUtil;
@@ -127,4 +124,26 @@
     }
 
 
+
+    @PostMapping("/coursePack/stuOfCourses")
+    public StuWithCoursesListVo getStuOfCoursesDetails(@RequestBody Integer stuId, @RequestBody Integer appUserId){
+        StuWithCoursesListVo lisco = new StuWithCoursesListVo();
+        Integer totalNu = 0;
+        Integer dedutNu = 0;
+        Integer remainNu = 0;
+        List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(null,null,stuId,appUserId);
+        if (byUserId.size() > 0 ){
+            for (TCoursePackagePayment tCoursePackagePayment : byUserId) {
+                StuWithCoursesListVo resp = new StuWithCoursesListVo();
+                totalNu = totalNu + tCoursePackagePayment.getTotalClassHours();
+                dedutNu = dedutNu + tCoursePackagePayment.getLaveClassHours();
+                remainNu = remainNu + (tCoursePackagePayment.getTotalClassHours()-tCoursePackagePayment.getLaveClassHours());
+            }
+            lisco.setTotalNums(totalNu);
+            lisco.setDeductedNums(remainNu);
+            lisco.setRemainingNums(dedutNu);
+        }
+        return lisco;
+    }
+
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java
new file mode 100644
index 0000000..5416653
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java
@@ -0,0 +1,54 @@
+package com.dsh.course.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dsh.course.entity.CancelledClasses;
+import com.dsh.course.entity.CoursePackageStudent;
+import com.dsh.course.entity.TCoursePackage;
+import com.dsh.course.service.CancelledClassesService;
+import com.dsh.course.service.CoursePackageStudentService;
+import com.dsh.course.service.TCoursePackageService;
+import io.swagger.annotations.Api;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Api
+@CrossOrigin
+@RestController
+@RequestMapping("")
+public class CourseRecordController {
+
+
+    @Autowired
+    private CoursePackageStudentService cosService;
+
+    @Autowired
+    private TCoursePackageService tcpService;
+
+    @Autowired
+    private CancelledClassesService caccService;
+
+
+
+    @PostMapping("/courseRecord/queryDeduClassHours")
+    public Integer getDeductionClassHour(@RequestBody Integer courseId,@RequestBody Integer stuId,@RequestBody Integer appUserId){
+        Integer sult = 0;
+        TCoursePackage coursePackage = tcpService.getById(courseId);
+        if (null != coursePackage && coursePackage.getStatus() == 3){
+            List<CoursePackageStudent> coursePackageStudents = cosService.queryStuDeduClassHourNums(courseId, stuId, appUserId);
+            if (coursePackageStudents.size() > 0){
+                List<CancelledClasses> list = caccService.list(new QueryWrapper<CancelledClasses>()
+                        .eq("coursePackageId",courseId ));
+                if (list.size() > 0){
+                    for (CancelledClasses cancelledClasses : list) {
+                        sult = sult + cancelledClasses.getCancelledClassesNumber();
+                    }
+                }
+            }
+        }
+        return sult;
+    }
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageStudent.java b/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageStudent.java
new file mode 100644
index 0000000..d18a280
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageStudent.java
@@ -0,0 +1,67 @@
+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-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_course_package_student")
+public class CoursePackageStudent extends Model<CoursePackageStudent> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 用户id
+     */
+    private Integer appUserId;
+    /**
+     * 学员id
+     */
+    private Integer studentId;
+    /**
+     * 课包id
+     */
+    private Integer coursePackageId;
+    /**
+     * 课包购买记录id
+     */
+    private Integer coursePackagePaymentId;
+    /**
+     * 到课状态(0=否,1=是)
+     */
+    private Integer signInOrNot;
+    /**
+     * 预约状态(0=取消,1=预约)
+     */
+    private Integer reservationStatus;
+    private Date insertTime;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java
index 4b4b9e6..d6aea0a 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java
@@ -5,6 +5,7 @@
 import com.dsh.course.feignclient.model.*;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
 
@@ -17,4 +18,7 @@
 
     @PostMapping("/coursePack/storeOfCourse")
     List<CourseOfStoreVo> getStoreOfCourses();
+
+    @PostMapping("/coursePack/stuOfCourses")
+    StuWithCoursesListVo getStuOfCoursesDetails(@RequestBody Integer stuId,@RequestBody Integer appUserId);
 }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseRecordClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseRecordClient.java
new file mode 100644
index 0000000..ef52a27
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseRecordClient.java
@@ -0,0 +1,13 @@
+package com.dsh.course.feignclient;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+@FeignClient(value = "mb-cloud-course")
+public interface CourseRecordClient {
+
+    @PostMapping("/courseRecord/queryDeduClassHours")
+    public Integer getDeductionClassHour(@RequestBody Integer courseId, @RequestBody Integer stuId, @RequestBody Integer appUserId);
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuWithCoursesListVo.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuWithCoursesListVo.java
new file mode 100644
index 0000000..15e619c
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuWithCoursesListVo.java
@@ -0,0 +1,19 @@
+package com.dsh.course.feignclient.model;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+public class StuWithCoursesListVo {
+
+    @ApiModelProperty(value = "总学时数")
+    private Integer totalNums;
+
+    @ApiModelProperty(value = "已扣学时数")
+    private Integer deductedNums;
+
+    @ApiModelProperty(value = "剩余学时数")
+    private Integer remainingNums;
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java
new file mode 100644
index 0000000..d686cf9
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java
@@ -0,0 +1,23 @@
+package com.dsh.course.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.course.entity.CoursePackageStudent;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 学员上课记录 Mapper 接口
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-30
+ */
+public interface CoursePackageStudentMapper extends BaseMapper<CoursePackageStudent> {
+
+    List<CoursePackageStudent> queryStuDeduClassHourNums(@Param("courseId") Integer courseId,
+                                                         @Param("stuId") Integer stuId,
+                                                         @Param("appUserId") Integer appUserId);
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java b/cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java
new file mode 100644
index 0000000..ba01211
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java
@@ -0,0 +1,20 @@
+package com.dsh.course.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.course.entity.CoursePackageStudent;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 学员上课记录 服务类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-30
+ */
+public interface CoursePackageStudentService extends IService<CoursePackageStudent> {
+
+    List<CoursePackageStudent> queryStuDeduClassHourNums(Integer courseId, Integer stuId, Integer appUserId);
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java
new file mode 100644
index 0000000..ba33ad3
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java
@@ -0,0 +1,26 @@
+package com.dsh.course.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.course.entity.CoursePackageStudent;
+import com.dsh.course.mapper.CoursePackageStudentMapper;
+import com.dsh.course.service.CoursePackageStudentService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 学员上课记录 服务实现类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-06-30
+ */
+@Service
+public class CoursePackageStudentServiceImpl extends ServiceImpl<CoursePackageStudentMapper, CoursePackageStudent> implements CoursePackageStudentService {
+
+    @Override
+    public List<CoursePackageStudent> queryStuDeduClassHourNums(Integer courseId, Integer stuId, Integer appUserId) {
+        return this.baseMapper.queryStuDeduClassHourNums(courseId,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
deleted file mode 100644
index 87c1bd5..0000000
--- a/cloud-server-course/src/main/java/com/dsh/course/web/CancelledClassesController.java
+++ /dev/null
@@ -1,21 +0,0 @@
-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/CoursePackageStudentMapper.xml b/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml
new file mode 100644
index 0000000..f9e2d0d
--- /dev/null
+++ b/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml
@@ -0,0 +1,35 @@
+<?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.CoursePackageStudentMapper">
+
+
+    <select id="queryStuDeduClassHourNums" resultType="com.dsh.course.entity.CoursePackageStudent">
+        SELECT *
+        FROM t_course_package_student
+        UNION ALL
+        SELECT *
+        FROM t_course_package_student1
+        UNION ALL
+        SELECT *
+        FROM t_course_package_student2
+        UNION ALL
+        SELECT *
+        FROM t_course_package_student3
+        UNION ALL
+        SELECT *
+        FROM t_course_package_student4
+        UNION ALL
+        SELECT *
+        FROM t_course_package_student5
+        WHERE signInOrNot = 1
+        <if test="courseId != null">
+            and coursePackageId = #{courseId}
+        </if>
+        <if test="stuId != null ">
+            and studentId = #{stuId}
+        </if>
+        <if test="appUserId != null">
+            and appUserId = #{appUserId}
+        </if>
+    </select>
+</mapper>

--
Gitblit v1.7.1