From d061aa842106480f3a8991d83dc3b978441330ab Mon Sep 17 00:00:00 2001
From: lisy <linlangsur163@163.com>
Date: 星期四, 06 七月 2023 17:52:00 +0800
Subject: [PATCH] 修改续课详情页面的支付方式展示;开始上课-课后练习接口开发
---
cloud-server-course/src/main/java/com/dsh/course/service/impl/UserVideoDetailsServiceImpl.java | 20 +
cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PurchaseVo.java | 37 +
cloud-server-course/src/main/java/com/dsh/course/model/vo/request/UpdateCourseVideoStatusRequest.java | 20 +
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java | 226 ++++++++++
cloud-server-course/src/main/resources/mapper/PostCourseVideoMapper.xml | 26 +
cloud-server-course/src/main/java/com/dsh/course/feignclient/activity/BenefitVideoClient.java | 16
cloud-server-course/src/main/java/com/dsh/course/model/vo/response/AppUserVideoResponse.java | 34 +
cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml | 29 +
cloud-server-activity/src/main/java/com/dsh/activity/controller/BenefitVideoController.java | 29 +
cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseOfVideoResponse.java | 37 +
cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java | 2
cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java | 28 +
cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java | 39 +
cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java | 5
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 | 3
cloud-server-course/src/main/java/com/dsh/course/mapper/PostCourseVideoMapper.java | 5
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/BenefitVideoClient.java | 16
cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java | 2
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideosServiceImpl.java | 20 +
cloud-server-course/src/main/java/com/dsh/course/service/UserVideoDetailsService.java | 16
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/PurchaseVo.java | 37 +
cloud-server-course/src/main/resources/mapper/UserVideoDetailsMapper.xml | 32 +
cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideos.java | 74 +++
cloud-server-course/src/main/java/com/dsh/course/model/vo/request/CourseWithDetailsRequest.java | 16
cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java | 52 --
cloud-server-activity/src/main/java/com/dsh/activity/service/BenefitsVideosService.java | 16
cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java | 4
cloud-server-course/src/main/java/com/dsh/course/mapper/UserVideoDetailsMapper.java | 21 +
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CourseTypeResp.java | 16
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java | 3
/dev/null | 15
cloud-server-course/src/main/java/com/dsh/course/feignclient/activity/model/BenefitsVideos.java | 61 +++
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 5
cloud-server-activity/src/main/resources/mapper/BenefitsVideosMapper.xml | 6
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java | 131 ++++++
cloud-server-course/src/main/java/com/dsh/course/entity/UserVideoDetails.java | 63 +++
cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideosMapper.java | 16
cloud-server-course/src/main/java/com/dsh/course/model/vo/request/CourseOfAfterRequest.java | 17
39 files changed, 1,111 insertions(+), 88 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 6eafa94..7ff2d81 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
@@ -108,7 +108,6 @@
@PostMapping("/api/startCource/addData")
@ApiOperation(value = "添加学员信息", tags = {"APP-开始上课"})
@ApiImplicitParams({
- @ApiImplicitParam(value = "学员信息", name = "stu", required = true, dataType = "int"),
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
})
@Transactional
@@ -370,57 +369,6 @@
}catch (Exception e){
return ResultUtil.runErr();
}
- }
-
- /**
- * 课后视频课表
- */
- @ResponseBody
- @PostMapping("/api/startCource/afterSourceDetails")
- @ApiOperation(value = "课后视频课表", tags = {"APP-开始上课"})
- @ApiImplicitParams({
- @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
- @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"),
- })
- public ResultUtil queryAfterSourceDetails(@RequestParam("stuId") Integer stuId){
- try {
- Integer appUserId = tokenUtil.getUserIdFormRedis();
- if(null == appUserId){
- return ResultUtil.tokenErr();
- }
- // TODO: 2023/7/4
- return ResultUtil.success();
- }catch (Exception e){
- return ResultUtil.runErr();
- }
-
-
- }
-
-
-
- /**
- * 已报名课程列表
- */
- @ResponseBody
- @PostMapping("/api/startCource/registeredCourses")
- @ApiOperation(value = "已报名课程列表", tags = {"APP-开始上课"})
- @ApiImplicitParams({
- @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
- @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"),
- })
- public ResultUtil<List<RegisterCourseVo>> queryRegisteredCoursesDetails(@RequestParam("stuId") Integer stuId){
- try {
- Integer appUserId = tokenUtil.getUserIdFormRedis();
- if(null == appUserId){
- return ResultUtil.tokenErr();
- }
- return ResultUtil.success();
- }catch (Exception e){
- return ResultUtil.runErr();
- }
-
-
}
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 011f6ac..0b29b58 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
@@ -27,4 +27,7 @@
@PostMapping("/base/coursePack/afterCourseTwos")
List<AfterVideoVo> getAfterCourseTwos(@RequestParam("appUserId") Integer appUserId);
+
+ @PostMapping("/base/coursePack/courseOfPurchased")
+ List<PurchaseVo> getAppUsersCourseData(@RequestBody Integer appUserId);
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CourseTypeResp.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CourseTypeResp.java
new file mode 100644
index 0000000..92901f3
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CourseTypeResp.java
@@ -0,0 +1,16 @@
+package com.dsh.account.feignclient.course.model;
+
+
+import lombok.Data;
+
+@Data
+public class CourseTypeResp {
+
+ private Integer appUserId;
+
+ private Integer courseTypeId;
+
+
+ private String search;
+
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/PurchaseVo.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/PurchaseVo.java
new file mode 100644
index 0000000..50d3165
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/PurchaseVo.java
@@ -0,0 +1,37 @@
+package com.dsh.account.feignclient.course.model;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class PurchaseVo {
+
+ @ApiModelProperty(value = "课包id")
+ private Integer courseId;
+
+ @ApiModelProperty(value = "课包封面图")
+ private String packageImg;
+
+ @ApiModelProperty(value = "课包名称")
+ private String courseName;
+
+ @ApiModelProperty(value = "上课时间段")
+ private String courseTime;
+
+ @ApiModelProperty(value = "授课老师id")
+ private Integer teacherId;
+
+ @ApiModelProperty(value = "门店id")
+ private Integer storeId;
+
+ @ApiModelProperty(value = "已上课时数")
+ private Integer courseNums;
+
+ @ApiModelProperty(value = "课包状态 1=待支付 2=已购买")
+ private Integer courseStatus;
+
+ @ApiModelProperty(value = "课包类型id")
+ private Integer courseTypeId;
+
+}
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 3bcb4d5..13c01eb 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
@@ -8,6 +8,7 @@
import com.dsh.account.feignclient.activity.MerChandiseClient;
import com.dsh.account.feignclient.course.CoursePaymentClient;
import com.dsh.account.feignclient.course.model.CourseOfStoreVo;
+import com.dsh.account.feignclient.course.model.PurchaseVo;
import com.dsh.account.feignclient.course.model.QueryStoreList;
import com.dsh.account.feignclient.course.model.StuCourseResp;
import com.dsh.account.feignclient.other.ImgConfigClient;
@@ -25,6 +26,7 @@
import com.dsh.account.model.vo.classDetails.RegisteredCourse;
import com.dsh.account.model.vo.classDetails.WeekedCourse;
import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo;
+import com.dsh.account.model.vo.classDetails.classInsVo.RegisterCourseVo;
import com.dsh.account.model.vo.userBenefitDetail.BillingDetailsVo;
import com.dsh.account.model.vo.userBenefitDetail.IndexOfUserBenefirVo;
import com.dsh.account.service.TAppUserService;
@@ -477,7 +479,8 @@
@Override
public BillingDetailsVo queryUserBillingDetails(String yearMonth, Integer recordId) {
System.out.println("账单传参:yearMonth"+yearMonth+"|"+"recordId"+recordId);
- // TODO: 2023/7/4
+ // TODO: 2023/7/4 账单列表
return null;
}
+
}
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 3ec7783..3683a9d 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
@@ -354,7 +354,7 @@
@Override
public ResultUtil renewClassPayment(Integer userIdFormRedis, ClasspaymentRequest request) {
- // TODO: 2023/7/5
+ // TODO: 2023/7/5 续课支付
switch (request.getPayType()){
case 1:
WeChatPayment();
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/BenefitVideoController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/BenefitVideoController.java
new file mode 100644
index 0000000..971a10f
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/BenefitVideoController.java
@@ -0,0 +1,29 @@
+package com.dsh.activity.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dsh.activity.entity.BenefitsVideos;
+import com.dsh.activity.service.BenefitsVideosService;
+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;
+
+@RestController
+@RequestMapping("")
+public class BenefitVideoController {
+
+
+ @Autowired
+ private BenefitsVideosService bfvService;
+
+
+
+ @PostMapping("base/benefitVideo/getList")
+ public BenefitsVideos getVideosWithIds(@RequestBody Integer id){
+ return bfvService.getOne(new QueryWrapper<BenefitsVideos>().eq("id",id).eq("state",1));
+ }
+
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideos.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideos.java
new file mode 100644
index 0000000..b603c57
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideos.java
@@ -0,0 +1,74 @@
+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-07-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_benefits_videos")
+public class BenefitsVideos extends Model<BenefitsVideos> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 分类id
+ */
+ private Integer benefitsVideoClassificationId;
+ /**
+ * 视频名称
+ */
+ private String name;
+ /**
+ * 视频封面
+ */
+ private String cover;
+ /**
+ * 视频简介
+ */
+ private String introduction;
+ /**
+ * 视频地址
+ */
+ private String videos;
+ /**
+ * 可得积分
+ */
+ private String integral;
+ /**
+ * 状态(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/feignclient/BenefitVideoClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/BenefitVideoClient.java
new file mode 100644
index 0000000..3000806
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/BenefitVideoClient.java
@@ -0,0 +1,16 @@
+package com.dsh.activity.feignclient;
+
+import com.dsh.activity.entity.BenefitsVideos;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+@FeignClient(value = "mb-cloud-activity")
+public interface BenefitVideoClient {
+
+
+ @PostMapping("base/benefitVideo/getList")
+ BenefitsVideos getVideosWithIds(@RequestBody Integer id);
+
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideosMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideosMapper.java
new file mode 100644
index 0000000..eaa063c
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideosMapper.java
@@ -0,0 +1,16 @@
+package com.dsh.activity.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.activity.entity.BenefitsVideos;
+
+/**
+ * <p>
+ * 福利视频 Mapper 接口
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-06
+ */
+public interface BenefitsVideosMapper extends BaseMapper<BenefitsVideos> {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/BenefitsVideosService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/BenefitsVideosService.java
new file mode 100644
index 0000000..4727bae
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/BenefitsVideosService.java
@@ -0,0 +1,16 @@
+package com.dsh.activity.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.activity.entity.BenefitsVideos;
+
+/**
+ * <p>
+ * 福利视频 服务类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-06
+ */
+public interface BenefitsVideosService extends IService<BenefitsVideos> {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideosServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideosServiceImpl.java
new file mode 100644
index 0000000..1a7dc72
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideosServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.activity.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.activity.entity.BenefitsVideos;
+import com.dsh.activity.mapper.BenefitsVideosMapper;
+import com.dsh.activity.service.BenefitsVideosService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 福利视频 服务实现类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-06
+ */
+@Service
+public class BenefitsVideosServiceImpl extends ServiceImpl<BenefitsVideosMapper, BenefitsVideos> implements BenefitsVideosService {
+
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/web/PointsMerchandiseController.java b/cloud-server-activity/src/main/java/com/dsh/activity/web/PointsMerchandiseController.java
deleted file mode 100644
index df6ec49..0000000
--- a/cloud-server-activity/src/main/java/com/dsh/activity/web/PointsMerchandiseController.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.dsh.activity.web;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 积分商品 前端控制器
- * </p>
- *
- * @author jqs
- * @since 2023-07-04
- */
-@RestController
-@RequestMapping("/points-merchandise")
-public class PointsMerchandiseController {
-
-}
-
diff --git a/cloud-server-activity/src/main/resources/mapper/BenefitsVideosMapper.xml b/cloud-server-activity/src/main/resources/mapper/BenefitsVideosMapper.xml
new file mode 100644
index 0000000..8350761
--- /dev/null
+++ b/cloud-server-activity/src/main/resources/mapper/BenefitsVideosMapper.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.activity.mapper.BenefitsVideosMapper">
+
+
+</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 a31e3d3..8cfb4a1 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,20 +5,31 @@
import com.dsh.course.entity.TCoursePackage;
import com.dsh.course.entity.TCoursePackageDiscount;
import com.dsh.course.entity.TCoursePackagePayment;
+import com.dsh.course.entity.TCoursePackageType;
import com.dsh.course.feignclient.model.*;
+import com.dsh.course.model.BaseVo;
import com.dsh.course.model.dto.DiscountJsonDto;
import com.dsh.course.model.vo.CourseDetailRequest;
-import com.dsh.course.service.PostCourseVideoService;
-import com.dsh.course.service.TCoursePackageDiscountService;
-import com.dsh.course.service.TCoursePackagePaymentService;
-import com.dsh.course.service.TCoursePackageService;
+import com.dsh.course.model.vo.RegisterCourseVo;
+import com.dsh.course.model.vo.request.CourseOfAfterRequest;
+import com.dsh.course.model.vo.request.CourseWithDetailsRequest;
+import com.dsh.course.model.vo.request.UpdateCourseVideoStatusRequest;
+import com.dsh.course.model.vo.response.AppUserVideoResponse;
+import com.dsh.course.model.vo.response.CourseOfVideoResponse;
+import com.dsh.course.service.*;
import com.dsh.course.util.DateUtil;
+import com.dsh.course.util.ResultUtil;
import com.dsh.course.util.StrUtils;
+import com.dsh.course.util.TokenUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -49,6 +60,18 @@
@Autowired
private PostCourseVideoService pcvService;
+
+ @Autowired
+ private CoursePackageStudentService cpsService;
+
+ @Autowired
+ private CancelledClassesService cacService;
+
+ @Autowired
+ private TCoursePackageTypeService coursePackageTypeService;
+
+ @Autowired
+ private TokenUtil tokenUtil;
private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm");
@@ -221,7 +244,7 @@
}
courseVo.setCourseTime(coursePackage.getClassStartTime()+"-"+coursePackage.getClassEndTime());
- String payType = tCoursePackagePayment.getPayType();
+ Integer payType = tCoursePackagePayment.getPayType();
BigDecimal cashPayment = tCoursePackagePayment.getCashPayment();
double cashPaymentValue = cashPayment.doubleValue();
Integer playPaiCoin = tCoursePackagePayment.getPlayPaiCoin();
@@ -240,16 +263,12 @@
throw new RuntimeException(e);
}
switch (payType) {
- case "1;2":
- courseVo.setAmount(cashPaymentValue);
- courseVo.setVipAmount(discountMember);
- courseVo.setWpGold(playPaiCoin);
- break;
- case "1":
+ case 1:
+ case 2:
courseVo.setAmount(cashPaymentValue);
courseVo.setVipAmount(discountMember);
break;
- case "2":
+ case 3:
courseVo.setWpGold(playPaiCoin);
break;
}
@@ -266,11 +285,194 @@
List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.queryAllCoursePackage(null,null,null,null,appUserId);
List<Integer> coursePackageIds = tCoursePackagePayments.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList());
// List<PostCourseVideo> videoList = pcvService.queryAllVideoNoneShow(coursePackageIds);
+ // TODO: 2023/7/6 两个课后视频
return videoVos;
}
+ @ResponseBody
+ @PostMapping("/api/course/queryArrangeCourseList")
+ @ApiOperation(value = "获取布置课程列表", tags = {"APP-课程列表"})
+ @ApiImplicitParams({
+ })
+ public ResultUtil<List<BaseVo>> queryArrangePackageType(){
+ try {
+ Integer appUserId = tokenUtil.getUserIdFormRedis();
+ if(null == appUserId){
+ return ResultUtil.tokenErr();
+ }
+ List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.queryAllCoursePackage(null,null,null,null,appUserId);
+ List<BaseVo> list = new ArrayList<>();
+ tCoursePackagePayments.forEach(c -> {
+ BaseVo baseVo = new BaseVo();
+ baseVo.setId(c.getCoursePackageId());
+ TCoursePackage coursePackage = tcpService.getById(c.getCoursePackageId());
+ baseVo.setName(coursePackage.getName());
+ list.add(baseVo);
+ });
+ return ResultUtil.success();
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResultUtil.runErr();
+ }
+ }
+
+
+ /**
+ * 课后视频课表
+ */
+ @ResponseBody
+ @PostMapping("/api/startCource/afterSourceList")
+ @ApiOperation(value = "课后视频课表", tags = {"APP-开始上课"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+ @ApiImplicitParam(name = "search",value = "视频名称", required = true, dataType = "int"),
+ })
+ public ResultUtil<List<AppUserVideoResponse>> queryAfterSourceList(@RequestBody CourseOfAfterRequest search){
+ try {
+ Integer appUserId = tokenUtil.getUserIdFormRedis();
+
+ if(null == appUserId){
+ return ResultUtil.tokenErr();
+ }
+ List<Integer> courseIds = new ArrayList<>();
+ List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.queryAllCoursePackage(null,null,search.getCourseTypeId(),null,appUserId);
+ if (tCoursePackagePayments.size() > 0 ){
+ courseIds = tCoursePackagePayments.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList());
+ }
+ return ResultUtil.success(packagePaymentService.queryAfterVideo(search,courseIds));
+ }catch (Exception e){
+ return ResultUtil.runErr();
+ }
+ }
+
+ /**
+ * 课后视频详情
+ */
+ @ResponseBody
+ @PostMapping("/api/startCource/afterSourceDetail")
+ @ApiOperation(value = "课后视频详情", tags = {"APP-开始上课"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+ @ApiImplicitParam(name = "search",value = "视频名称", required = true, dataType = "int"),
+ })
+ public ResultUtil<CourseOfVideoResponse> queryAfterSourceDetails(@RequestBody CourseWithDetailsRequest detailsRequest){
+ try {
+ Integer appUserId = tokenUtil.getUserIdFormRedis();
+ if(null == appUserId){
+ return ResultUtil.tokenErr();
+ }
+ return ResultUtil.success(packagePaymentService.queryVideoDetails(detailsRequest,appUserId));
+ }catch (Exception e){
+ return ResultUtil.runErr();
+ }
+ }
+
+
+ /**
+ * 更新课后视频学习状态
+ */
+ @ResponseBody
+ @PostMapping("/api/startCource/updateVideoStatus")
+ @ApiOperation(value = "更新课后视频学习状态", tags = {"APP-开始上课"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+ @ApiImplicitParam(name = "search",value = "视频名称", required = true, dataType = "int"),
+ })
+ public ResultUtil updateVideoStatus(@RequestBody UpdateCourseVideoStatusRequest detailsRequest){
+ try {
+ Integer appUserId = tokenUtil.getUserIdFormRedis();
+ if(null == appUserId){
+ return ResultUtil.tokenErr();
+ }
+ return ResultUtil.success(packagePaymentService.updateVideoStatus(detailsRequest,appUserId));
+ }catch (Exception e){
+ return ResultUtil.runErr();
+ }
+ }
+
+
+
+ @ResponseBody
+ @PostMapping("/api/course/getCourseAppUserDetails")
+ @ApiOperation(value = "已报名课程-获取课程类型列表", tags = {"APP-课程列表"})
+ @ApiImplicitParams({
+ })
+ public ResultUtil<List<BaseVo>> queryCoursePackageType(){
+ try {
+ List<TCoursePackageType> coursePackageTypes = coursePackageTypeService.list(new QueryWrapper<TCoursePackageType>().eq("state", 1));
+ List<BaseVo> list = new ArrayList<>();
+ coursePackageTypes.forEach(c -> {
+ BaseVo baseVo = new BaseVo();
+ BeanUtils.copyProperties(c, baseVo);
+ list.add(baseVo);
+ });
+ return ResultUtil.success(list);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResultUtil.runErr();
+ }
+ }
+
+//
+// @PostMapping("/base/coursePack/courseOfPurchased")
+// public List<PurchaseVo> getAppUsersCourseData(@RequestBody Integer appUserId){
+// List<PurchaseVo> voList = new ArrayList<>();
+//// 查询够课包记录
+// List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.queryAllCoursePackage(null,null,null,null,appUserId);
+// //查询上课记录
+// List<Integer> coursePackageIds = tCoursePackagePayments.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList());
+// List<CoursePackageStudent> packageStudents = cpsService.queryAppUserOfStuAttendClass(appUserId,coursePackageIds);
+// Map<Integer, Long> collect = packageStudents.stream()
+// .collect(Collectors.groupingBy(CoursePackageStudent::getCoursePackageId, Collectors.counting()));
+//
+// if (tCoursePackagePayments.size() > 0){
+// for (TCoursePackagePayment tCoursePackagePayment : tCoursePackagePayments) {
+// TCoursePackage coursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId());
+// PurchaseVo purchaseVo = new PurchaseVo();
+// purchaseVo.setCourseId(tCoursePackagePayment.getCoursePackageId());
+// purchaseVo.setCourseName(coursePackage.getName());
+// purchaseVo.setCourseTime(coursePackage.getClassStartTime()+"-"+coursePackage.getClassEndTime());
+// purchaseVo.setStoreId(coursePackage.getStoreId());
+// purchaseVo.setTeacherId(coursePackage.getCoachId());
+// purchaseVo.setPackageImg(coursePackage.getCoverDrawing());
+// purchaseVo.setCourseStatus(tCoursePackagePayment.getPayStatus());
+// purchaseVo.setCourseTypeId(coursePackage.getCoursePackageTypeId());
+// for (Map.Entry<Integer, Long> entry : collect.entrySet()) {
+// int coursePackageId = entry.getKey();
+// if (tCoursePackagePayment.getCoursePackageId() == coursePackageId) {
+// purchaseVo.setCourseNums((int) (entry.getValue()*2));
+// }
+// }
+// voList.add(purchaseVo);
+// }
+// }
+// return voList;
+// }
+
+
+ /**
+ * 已报名课程列表
+ */
+ @ResponseBody
+ @PostMapping("/api/startCource/registeredCourses")
+ @ApiOperation(value = "已报名课程-课程列表", tags = {"APP-开始上课"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+ })
+ public ResultUtil<List<RegisterCourseVo>> queryRegisteredCoursesDetails(@RequestBody CourseOfAfterRequest courseTypeId){
+ try {
+ Integer appUserId = tokenUtil.getUserIdFormRedis();
+ if(null == appUserId){
+ return ResultUtil.tokenErr();
+ }
+ return ResultUtil.success(packagePaymentService.queryRegisteredCourseList(courseTypeId,appUserId));
+ }catch (Exception e){
+ return ResultUtil.runErr();
+ }
+
+ }
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
index 2869623..73366c1 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
@@ -43,9 +43,9 @@
*/
private Integer coursePackageId;
/**
- * 支付方式(1=现金,2=玩湃币)
+ * 支付方式(1=微信,2=支付宝,3=玩湃币)
*/
- private String payType;
+ private Integer payType;
/**
* 课时数
*/
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/UserVideoDetails.java b/cloud-server-course/src/main/java/com/dsh/course/entity/UserVideoDetails.java
new file mode 100644
index 0000000..fbbc9fe
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/UserVideoDetails.java
@@ -0,0 +1,63 @@
+package com.dsh.course.entity;
+
+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-07-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("t_user_video_details")
+public class UserVideoDetails extends Model<UserVideoDetails> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键id
+ */
+ private Integer id;
+ /**
+ * 用户id
+ */
+ private Integer appUserId;
+ /**
+ * 课包id
+ */
+ private Integer coursePackageId;
+ /**
+ * 课后视频id
+ */
+ private Integer courseId;
+ /**
+ * 状态(1未学习 2已学习)
+ */
+ private Integer state;
+ /**
+ * 添加时间
+ */
+ private Date insertTime;
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+
+
+ @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 467c16d..020e7b7 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
@@ -28,4 +28,8 @@
@PostMapping("/base/coursePack/afterCourseTwos")
List<AfterVideoVo> getAfterCourseTwos(@RequestParam("appUserId") Integer appUserId);
+
+ @PostMapping("/base/coursePack/courseOfPurchased")
+ public List<PurchaseVo> getAppUsersCourseData(@RequestBody Integer appUserId);
+
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/activity/BenefitVideoClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/activity/BenefitVideoClient.java
new file mode 100644
index 0000000..2910ddd
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/activity/BenefitVideoClient.java
@@ -0,0 +1,16 @@
+package com.dsh.course.feignclient.activity;
+
+import com.dsh.course.feignclient.activity.model.BenefitsVideos;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+@FeignClient(value = "mb-cloud-activity")
+public interface BenefitVideoClient {
+
+
+ @PostMapping("base/benefitVideo/getList")
+ BenefitsVideos getVideosWithIds(@RequestBody Integer id);
+
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/activity/model/BenefitsVideos.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/activity/model/BenefitsVideos.java
new file mode 100644
index 0000000..3382f47
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/activity/model/BenefitsVideos.java
@@ -0,0 +1,61 @@
+package com.dsh.course.feignclient.activity.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 福利视频
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-06
+ */
+@Data
+public class BenefitsVideos {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 分类id
+ */
+ private Integer benefitsVideoClassificationId;
+ /**
+ * 视频名称
+ */
+ private String name;
+ /**
+ * 视频封面
+ */
+ private String cover;
+ /**
+ * 视频简介
+ */
+ private String introduction;
+ /**
+ * 视频地址
+ */
+ private String videos;
+ /**
+ * 可得积分
+ */
+ private String integral;
+ /**
+ * 状态(1=正常,2=冻结,3=删除)
+ */
+ private Integer state;
+ /**
+ * 添加时间
+ */
+ private Date insertTime;
+
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PurchaseVo.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PurchaseVo.java
new file mode 100644
index 0000000..887dfde
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PurchaseVo.java
@@ -0,0 +1,37 @@
+package com.dsh.course.feignclient.model;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class PurchaseVo {
+
+ @ApiModelProperty(value = "课包id")
+ private Integer courseId;
+
+ @ApiModelProperty(value = "课包封面图")
+ private String packageImg;
+
+ @ApiModelProperty(value = "课包名称")
+ private String courseName;
+
+ @ApiModelProperty(value = "上课时间段")
+ private String courseTime;
+
+ @ApiModelProperty(value = "授课老师id")
+ private Integer teacherId;
+
+ @ApiModelProperty(value = "门店id")
+ private Integer storeId;
+
+ @ApiModelProperty(value = "已上课时数")
+ private Integer courseNums;
+
+ @ApiModelProperty(value = "课包状态 1=待支付 2=已购买")
+ private Integer courseStatus;
+
+ @ApiModelProperty(value = "课包类型id")
+ private Integer courseTypeId;
+
+}
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
index d686cf9..6cbe8f6 100644
--- 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
@@ -20,4 +20,7 @@
@Param("stuId") Integer stuId,
@Param("appUserId") Integer appUserId);
+ List<CoursePackageStudent> queryAppUserOfStuAttendClass(@Param("appUserId")Integer appUserId,
+ @Param("coursePackageIds")List<Integer> coursePackageIds);
+
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/PostCourseVideoMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/PostCourseVideoMapper.java
index e4a31e5..13370a0 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/mapper/PostCourseVideoMapper.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/PostCourseVideoMapper.java
@@ -2,6 +2,9 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.course.entity.PostCourseVideo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* <p>
@@ -13,4 +16,6 @@
*/
public interface PostCourseVideoMapper extends BaseMapper<PostCourseVideo> {
+ List<PostCourseVideo> queryPostCourseVideolist(@Param("courseIds") List<Integer> courseIds);
+
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/UserVideoDetailsMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/UserVideoDetailsMapper.java
new file mode 100644
index 0000000..e17bb0b
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/UserVideoDetailsMapper.java
@@ -0,0 +1,21 @@
+package com.dsh.course.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.course.entity.UserVideoDetails;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 用户观看视频记录 Mapper 接口
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-06
+ */
+public interface UserVideoDetailsMapper extends BaseMapper<UserVideoDetails> {
+
+ List<UserVideoDetails> queryAppUserWatchVideo(@Param("videoIds") List<Integer> videoIds);
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java
new file mode 100644
index 0000000..3dc6361
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java
@@ -0,0 +1,28 @@
+package com.dsh.course.model.vo;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class RegisterCourseVo {
+
+ @ApiModelProperty(value = "课包id")
+ private Integer coursePackageId;
+
+ @ApiModelProperty(value = "课包封面图")
+ private String packageImg;
+
+ @ApiModelProperty(value = "课包名称+门店名称")
+ private String courseNameStore;
+
+ @ApiModelProperty(value = "上课时间段")
+ private String courseTime;
+
+ @ApiModelProperty(value = "授课老师")
+ private String courseTeacher;
+
+ @ApiModelProperty(value = "已上课时数")
+ private Integer courseNums;
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/StuCourseRequest.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/StuCourseRequest.java
deleted file mode 100644
index 2a2eec6..0000000
--- a/cloud-server-course/src/main/java/com/dsh/course/model/vo/StuCourseRequest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.dsh.course.model.vo;
-
-
-import lombok.Data;
-
-@Data
-public class StuCourseRequest {
-
- Integer courseId;
-
- Integer stuId;
-
- Integer appUserId;
-
-}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/CourseOfAfterRequest.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/CourseOfAfterRequest.java
new file mode 100644
index 0000000..5feaa4d
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/CourseOfAfterRequest.java
@@ -0,0 +1,17 @@
+package com.dsh.course.model.vo.request;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class CourseOfAfterRequest {
+
+ @ApiModelProperty(value = "课程类型id",dataType = "int",required = false)
+ private Integer courseTypeId;
+
+ @ApiModelProperty(value = "课程名称/门店名称",dataType = "string",required = false)
+ private String search;
+
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/CourseWithDetailsRequest.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/CourseWithDetailsRequest.java
new file mode 100644
index 0000000..e10b741
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/CourseWithDetailsRequest.java
@@ -0,0 +1,16 @@
+package com.dsh.course.model.vo.request;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class CourseWithDetailsRequest {
+
+ @ApiModelProperty(value = "视频id")
+ private Integer videoId;
+
+ @ApiModelProperty(value = "课包id")
+ private Integer coursePackageId;
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/UpdateCourseVideoStatusRequest.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/UpdateCourseVideoStatusRequest.java
new file mode 100644
index 0000000..bee3540
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/UpdateCourseVideoStatusRequest.java
@@ -0,0 +1,20 @@
+package com.dsh.course.model.vo.request;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class UpdateCourseVideoStatusRequest {
+
+
+ @ApiModelProperty(value = "视频id")
+ private Integer videoId;
+
+ @ApiModelProperty(value = "课包id")
+ private Integer coursePackageId;
+
+ @ApiModelProperty(value = "是否看完 1是 2否")
+ private Integer isOver;
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/AppUserVideoResponse.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/AppUserVideoResponse.java
new file mode 100644
index 0000000..49065dc
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/AppUserVideoResponse.java
@@ -0,0 +1,34 @@
+package com.dsh.course.model.vo.response;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class AppUserVideoResponse {
+
+ @ApiModelProperty(value = "视频id")
+ private Integer videoId;
+
+ @ApiModelProperty(value = "课包id")
+ private Integer coursePackageId;
+
+ @ApiModelProperty(value = "封面图")
+ private String coverImage;
+
+ @ApiModelProperty(value = "视频名称")
+ private String videoName;
+
+ @ApiModelProperty(value = "布置课程名称")
+ private String packageName;
+
+ @ApiModelProperty(value = "简介")
+ private String synopsis;
+
+ @ApiModelProperty(value = "可得积分")
+ private String integral;
+
+ @ApiModelProperty(value = "学习状态 1未学习 2已学习")
+ private Integer studyStatus;
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseOfVideoResponse.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseOfVideoResponse.java
new file mode 100644
index 0000000..cc156f2
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseOfVideoResponse.java
@@ -0,0 +1,37 @@
+package com.dsh.course.model.vo.response;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class CourseOfVideoResponse {
+
+ @ApiModelProperty(value = "视频id")
+ private Integer videoId;
+
+ @ApiModelProperty(value = "课包id")
+ private Integer coursePackageId;
+
+ @ApiModelProperty(value = "视频url")
+ private String videoURL;
+
+ @ApiModelProperty(value = "视频名称")
+ private String videoName;
+
+ @ApiModelProperty(value = "可得积分")
+ private String integral;
+
+ @ApiModelProperty(value = "学习状态 1未学习 2已学习")
+ private Integer studyStatus;
+
+ @ApiModelProperty(value = "布置课程名称")
+ private String packageName;
+
+ @ApiModelProperty(value = "视频简介")
+ private String synopsis;
+
+ @ApiModelProperty(value = "课程介绍图片")
+ private String detailedDiagram;
+
+}
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
index ba01211..98b24c4 100644
--- 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
@@ -17,4 +17,6 @@
List<CoursePackageStudent> queryStuDeduClassHourNums(Integer courseId, Integer stuId, Integer appUserId);
+ List<CoursePackageStudent> queryAppUserOfStuAttendClass(Integer appUserId, List<Integer> coursePackageIds);
+
}
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 db11bfd..616f8ba 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
@@ -2,6 +2,12 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.course.entity.TCoursePackagePayment;
+import com.dsh.course.model.vo.RegisterCourseVo;
+import com.dsh.course.model.vo.request.CourseOfAfterRequest;
+import com.dsh.course.model.vo.request.CourseWithDetailsRequest;
+import com.dsh.course.model.vo.request.UpdateCourseVideoStatusRequest;
+import com.dsh.course.model.vo.response.AppUserVideoResponse;
+import com.dsh.course.model.vo.response.CourseOfVideoResponse;
import java.util.Date;
import java.util.List;
@@ -25,4 +31,37 @@
* @return
*/
Integer queryCountNumber(Integer coursePackageId);
+
+ /**
+ * 查询课包发布的课后视频列表
+ * @param search
+ * @param courseIds
+ * @return
+ */
+ List<AppUserVideoResponse> queryAfterVideo(CourseOfAfterRequest search,List<Integer> courseIds);
+
+ /**
+ * 获取课后视频详情
+ * @param detailsRequest
+ * @param appUserId
+ * @return
+ */
+ CourseOfVideoResponse queryVideoDetails(CourseWithDetailsRequest detailsRequest,Integer appUserId);
+
+ /**
+ * 更新视频学习状态
+ * @param detailsRequest
+ * @param appUserId
+ * @return
+ */
+ String updateVideoStatus(UpdateCourseVideoStatusRequest detailsRequest, Integer appUserId);
+
+ /**
+ * 获取用户已报名课程
+ * @param courseTypeId
+ * @param appUserId
+ * @return
+ */
+ List<RegisterCourseVo> queryRegisteredCourseList(CourseOfAfterRequest courseTypeId, Integer appUserId);
+
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/UserVideoDetailsService.java b/cloud-server-course/src/main/java/com/dsh/course/service/UserVideoDetailsService.java
new file mode 100644
index 0000000..6805af7
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/UserVideoDetailsService.java
@@ -0,0 +1,16 @@
+package com.dsh.course.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.course.entity.UserVideoDetails;
+
+/**
+ * <p>
+ * 用户观看视频记录 服务类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-06
+ */
+public interface UserVideoDetailsService extends IService<UserVideoDetails> {
+
+}
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
index ba33ad3..db6ace9 100644
--- 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
@@ -23,4 +23,9 @@
public List<CoursePackageStudent> queryStuDeduClassHourNums(Integer courseId, Integer stuId, Integer appUserId) {
return this.baseMapper.queryStuDeduClassHourNums(courseId,stuId,appUserId);
}
+
+ @Override
+ public List<CoursePackageStudent> queryAppUserOfStuAttendClass(Integer appUserId, List<Integer> coursePackageIds) {
+ return this.baseMapper.queryAppUserOfStuAttendClass(appUserId,coursePackageIds);
+ }
}
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 f61dff9..04628c9 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
@@ -1,13 +1,31 @@
package com.dsh.course.service.impl;
-import com.dsh.course.entity.TCoursePackagePayment;
-import com.dsh.course.mapper.TCoursePackagePaymentMapper;
-import com.dsh.course.service.TCoursePackagePaymentService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.course.entity.PostCourseVideo;
+import com.dsh.course.entity.TCoursePackage;
+import com.dsh.course.entity.TCoursePackagePayment;
+import com.dsh.course.entity.UserVideoDetails;
+import com.dsh.course.feignclient.activity.BenefitVideoClient;
+import com.dsh.course.feignclient.activity.model.BenefitsVideos;
+import com.dsh.course.mapper.PostCourseVideoMapper;
+import com.dsh.course.mapper.TCoursePackageMapper;
+import com.dsh.course.mapper.TCoursePackagePaymentMapper;
+import com.dsh.course.mapper.UserVideoDetailsMapper;
+import com.dsh.course.model.vo.RegisterCourseVo;
+import com.dsh.course.model.vo.request.CourseOfAfterRequest;
+import com.dsh.course.model.vo.request.CourseWithDetailsRequest;
+import com.dsh.course.model.vo.request.UpdateCourseVideoStatusRequest;
+import com.dsh.course.model.vo.response.AppUserVideoResponse;
+import com.dsh.course.model.vo.response.CourseOfVideoResponse;
+import com.dsh.course.service.TCoursePackagePaymentService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
/**
* <p>
@@ -19,6 +37,22 @@
*/
@Service
public class TCoursePackagePaymentServiceImpl extends ServiceImpl<TCoursePackagePaymentMapper, TCoursePackagePayment> implements TCoursePackagePaymentService {
+
+
+ @Autowired
+ BenefitVideoClient bfvoClient;
+
+
+ @Autowired
+ private UserVideoDetailsMapper uvdmapper;
+
+ @Autowired
+ private PostCourseVideoMapper pcvMapper;
+
+ @Autowired
+ private TCoursePackageMapper tcpmapper;
+
+
@Override
public List<TCoursePackagePayment> queryAllCoursePackage(Date startTime, Date endTime , Integer coursePackId, Integer stuId, Integer appUserId) {
@@ -34,4 +68,91 @@
public Integer queryCountNumber(Integer coursePackageId) {
return this.baseMapper.queryCountNumber(coursePackageId);
}
+
+ @Override
+ public List<AppUserVideoResponse> queryAfterVideo(CourseOfAfterRequest search,List<Integer> courseIds) {
+ List<AppUserVideoResponse> responses = new ArrayList<>();
+ List<PostCourseVideo> videoList = pcvMapper.queryPostCourseVideolist(courseIds);
+ if (videoList.size() > 0){
+ List<Integer> videoIds = videoList.stream().map(PostCourseVideo::getCourseId).collect(Collectors.toList());
+ List<UserVideoDetails> userVideoDetails = uvdmapper.queryAppUserWatchVideo(videoIds);
+ if (userVideoDetails.size() > 0){
+ for (UserVideoDetails userVideoDetail : userVideoDetails) {
+ AppUserVideoResponse response = new AppUserVideoResponse();
+ TCoursePackage coursePackage = tcpmapper.selectById(userVideoDetail.getCoursePackageId());
+ response.setPackageName(coursePackage.getName());
+ response.setCoursePackageId(userVideoDetail.getCoursePackageId());
+ BenefitsVideos videosWithIds = bfvoClient.getVideosWithIds(userVideoDetail.getCourseId());
+ response.setVideoId(userVideoDetail.getCourseId());
+ response.setCoverImage(videosWithIds.getCover());
+ if (null != search.getSearch()){
+// 根据正则模糊匹配
+ String pattern = ".*" + search.getSearch() + ".*";
+ Pattern regex = Pattern.compile(pattern);
+ Matcher matcher = regex.matcher(videosWithIds.getName());
+ if (matcher.matches()) {
+ response.setVideoName(videosWithIds.getName());
+ }
+ }else {
+ response.setVideoName(videosWithIds.getName());
+ }
+ response.setSynopsis(videosWithIds.getIntroduction());
+ response.setIntegral(videosWithIds.getIntegral());
+ response.setStudyStatus(userVideoDetail.getState());
+ responses.add(response);
+ }
+ Collections.sort(responses, Comparator.comparing(AppUserVideoResponse::getStudyStatus));
+ }
+ }
+ return responses;
+ }
+
+ @Override
+ public CourseOfVideoResponse queryVideoDetails(CourseWithDetailsRequest detailsRequest,Integer appUserId) {
+ CourseOfVideoResponse response = new CourseOfVideoResponse();
+ BenefitsVideos videosWithIds = bfvoClient.getVideosWithIds(detailsRequest.getVideoId());
+ TCoursePackage coursePackage = tcpmapper.selectById(detailsRequest.getCoursePackageId());
+ if (null != videosWithIds && null != coursePackage){
+ response.setCoursePackageId(coursePackage.getId());
+ response.setVideoId(videosWithIds.getId());
+ response.setVideoURL(videosWithIds.getVideos());
+ response.setVideoName(videosWithIds.getName());
+ response.setIntegral(videosWithIds.getIntegral());
+ UserVideoDetails userVideoDetails = uvdmapper.selectOne(new QueryWrapper<UserVideoDetails>()
+ .eq("appUserId",appUserId )
+ .eq("coursePackageId",coursePackage.getId())
+ .eq("courseId",videosWithIds.getId()));
+
+ response.setStudyStatus(userVideoDetails.getState());
+ response.setPackageName(coursePackage.getName());
+ response.setSynopsis(videosWithIds.getIntroduction());
+ response.setDetailedDiagram(coursePackage.getIntroduceDrawing());
+ }
+
+ return response;
+ }
+
+ @Override
+ public String updateVideoStatus(UpdateCourseVideoStatusRequest detailsRequest, Integer appUserId) {
+ UserVideoDetails userVideoDetails = uvdmapper.selectOne(new QueryWrapper<UserVideoDetails>()
+ .eq("appUserId",appUserId )
+ .eq("coursePackageId",detailsRequest.getCoursePackageId())
+ .eq("courseId",detailsRequest.getVideoId())
+ );
+ if (null != userVideoDetails && userVideoDetails.getState() ==1 && detailsRequest.getIsOver() == 1){
+ userVideoDetails.setState(2);
+ userVideoDetails.setUpdateTime(new Date());
+ uvdmapper.updateById(userVideoDetails);
+ return "SUCCESS";
+ }
+ return null;
+ }
+
+ @Override
+ public List<RegisterCourseVo> queryRegisteredCourseList(CourseOfAfterRequest courseTypeId, Integer appUserId) {
+ // TODO: 2023/7/6 已报名课程列表
+ return null;
+ }
+
+
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/UserVideoDetailsServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/UserVideoDetailsServiceImpl.java
new file mode 100644
index 0000000..bb6117d
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/UserVideoDetailsServiceImpl.java
@@ -0,0 +1,20 @@
+package com.dsh.course.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.course.entity.UserVideoDetails;
+import com.dsh.course.mapper.UserVideoDetailsMapper;
+import com.dsh.course.service.UserVideoDetailsService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户观看视频记录 服务实现类
+ * </p>
+ *
+ * @author jqs
+ * @since 2023-07-06
+ */
+@Service
+public class UserVideoDetailsServiceImpl extends ServiceImpl<UserVideoDetailsMapper, UserVideoDetails> implements UserVideoDetailsService {
+
+}
diff --git a/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml b/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml
index f9e2d0d..ebdebbe 100644
--- a/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml
@@ -32,4 +32,33 @@
and appUserId = #{appUserId}
</if>
</select>
+ <select id="queryAppUserOfStuAttendClass" 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 and reservationStatus = 1
+ <if test=" appUserId != null">
+ and appUserId = #{appUserId}
+ </if>
+ <if test="coursePackageIds.size >0">
+ and coursePackageId in
+ <foreach collection="coursePackageIds" close=")" index="index" open="(" separator="," item="item">
+ #{item}
+ </foreach>
+ </if>
+ </select>
</mapper>
diff --git a/cloud-server-course/src/main/resources/mapper/PostCourseVideoMapper.xml b/cloud-server-course/src/main/resources/mapper/PostCourseVideoMapper.xml
index 9d93eb3..e70fffa 100644
--- a/cloud-server-course/src/main/resources/mapper/PostCourseVideoMapper.xml
+++ b/cloud-server-course/src/main/resources/mapper/PostCourseVideoMapper.xml
@@ -2,4 +2,30 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsh.course.mapper.PostCourseVideoMapper">
+ <select id="queryPostCourseVideolist" resultType="com.dsh.course.entity.PostCourseVideo">
+ SELECT *
+ FROM t_post_course_video
+ UNION ALL
+ SELECT *
+ FROM t_post_course_video1
+ UNION ALL
+ SELECT *
+ FROM t_post_course_video2
+ UNION ALL
+ SELECT *
+ FROM t_post_course_video3
+ UNION ALL
+ SELECT *
+ FROM t_post_course_video4
+ UNION ALL
+ SELECT *
+ FROM t_post_course_video5
+ WHERE 1 = 1
+ <if test="courseIds.size > 0 ">
+ and coursePackageId in
+ <foreach collection="courseIds" item="item" separator="," open="(" index="index" close=")">
+ #{item}
+ </foreach>
+ </if>
+ </select>
</mapper>
diff --git a/cloud-server-course/src/main/resources/mapper/UserVideoDetailsMapper.xml b/cloud-server-course/src/main/resources/mapper/UserVideoDetailsMapper.xml
new file mode 100644
index 0000000..d59762b
--- /dev/null
+++ b/cloud-server-course/src/main/resources/mapper/UserVideoDetailsMapper.xml
@@ -0,0 +1,32 @@
+<?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.UserVideoDetailsMapper">
+
+
+ <select id="queryAppUserWatchVideo" resultType="com.dsh.course.entity.UserVideoDetails">
+ SELECT *
+ FROM t_user_video_details
+ UNION ALL
+ SELECT *
+ FROM t_user_video_details1
+ UNION ALL
+ SELECT *
+ FROM t_user_video_details2
+ UNION ALL
+ SELECT *
+ FROM t_user_video_details3
+ UNION ALL
+ SELECT *
+ FROM t_user_video_details4
+ UNION ALL
+ SELECT *
+ FROM t_user_video_details5
+ WHERE 1=1
+ <if test="videoIds.size > 0 ">
+ and courseId in
+ <foreach collection="videoIds" item="item" separator="," open="(" index="index" close=")">
+ #{item}
+ </foreach>
+ </if>
+ </select>
+</mapper>
--
Gitblit v1.7.1