cloud-server-account/src/main/java/com/dsh/account/controller/CoachController.java
New file @@ -0,0 +1,31 @@ package com.dsh.account.controller; import com.dsh.account.entity.Coach; import com.dsh.account.service.CoachService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("") public class CoachController { @Autowired private CoachService service; /** * 根据门店 * @param id * @return */ @ResponseBody @PostMapping("/coach/queryCoachById") public Coach queryCoachById(@RequestBody Integer id){ try { return service.getById(id); }catch (Exception e){ e.printStackTrace(); return null; } } } cloud-server-account/src/main/java/com/dsh/account/feignclient/CoachClient.java
New file @@ -0,0 +1,15 @@ package com.dsh.account.feignclient; import com.dsh.account.entity.Coach; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @FeignClient(value = "mb-cloud-account") public interface CoachClient { @PostMapping("/coach/queryCoachById") Coach queryCoachById(@RequestBody Integer id); } cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -11,10 +11,12 @@ import com.dsh.course.model.dto.DiscountJsonDto; import com.dsh.course.model.vo.CourseDetailRequest; import com.dsh.course.model.vo.RegisterCourseVo; import com.dsh.course.model.vo.request.ClasspaymentRequest; 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.CourseDetailsResponse; import com.dsh.course.model.vo.response.CourseOfVideoResponse; import com.dsh.course.service.*; import com.dsh.course.util.DateUtil; @@ -327,7 +329,6 @@ @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 { @@ -355,7 +356,6 @@ @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 { @@ -378,7 +378,6 @@ @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 { @@ -415,42 +414,6 @@ } } // // @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; // } /** * 已报名课程列表 @@ -475,5 +438,50 @@ } /** * 已报名课程详情 */ @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....."), }) public ResultUtil<CourseDetailsResponse> getRegisteredData(@RequestBody Integer coursePackageId){ try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if(null == appUserId){ return ResultUtil.tokenErr(); } return ResultUtil.success(packagePaymentService.queryRegisteredCourseDetails(coursePackageId,appUserId)); }catch (Exception e){ return ResultUtil.runErr(); } } /** * 已报名课程-支付 */ @ResponseBody @PostMapping("/api/startCource/payment") @ApiOperation(value = "已报名课程-支付", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) public ResultUtil continuationOperation(@RequestBody ClasspaymentRequest request){ try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if(null == userIdFormRedis){ return ResultUtil.tokenErr(); } return packagePaymentService.ContinuationOrpaymentCourse(userIdFormRedis,request); }catch (Exception e){ return ResultUtil.runErr(); } } } cloud-server-course/src/main/java/com/dsh/course/feignclient/account/CoachClient.java
New file @@ -0,0 +1,15 @@ package com.dsh.course.feignclient.account; import com.dsh.course.feignclient.account.model.Coach; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @FeignClient(value = "mb-cloud-account") public interface CoachClient { @PostMapping("/coach/queryCoachById") Coach queryCoachById(@RequestBody Integer id); } cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Coach.java
New file @@ -0,0 +1,104 @@ package com.dsh.course.feignclient.account.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-05 */ @Data public class Coach { 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 cityManagerId; /** * 教练类型id */ private Integer coachTypeId; /** * 姓名 */ private String name; /** * 生日 */ private Date birthday; /** * 性别(1=男,2=女) */ private Integer gender; /** * 电话 */ private String phone; /** * 身份证号码 */ private String idcard; /** * 身高(厘米) */ private Double height; /** * 体重(KG) */ private Double weight; /** * 毕业院校 */ private String graduateSchool; /** * 毕业证照片 */ private String diploma; /** * 资格证书(多个逗号分隔) */ private String certificate; /** * 证书照片 */ private String certificateImg; /** * 状态(1=正常,2=冻结,3=删除) */ private Integer state; /** * 添加时间 */ private Date insertTime; } cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java
@@ -25,4 +25,7 @@ @ApiModelProperty(value = "已上课时数") private Integer courseNums; @ApiModelProperty(value = "支付状态 1未支付 2已支付") private Integer payStatus; } cloud-server-course/src/main/java/com/dsh/course/model/vo/request/ClasspaymentRequest.java
New file @@ -0,0 +1,29 @@ package com.dsh.course.model.vo.request; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class ClasspaymentRequest { @ApiModelProperty(value = "课包id") private Integer lessonId; @ApiModelProperty(value = "学员id") private Integer stuId; @ApiModelProperty(value = "支付方式(1=微信 2=支付宝 3=玩湃币)") private Integer payType; @ApiModelProperty(value = "是否使用优惠券 1是 2否") private Integer useConpon; @ApiModelProperty(value = "优惠券Id") private Integer conponId; @ApiModelProperty(value = "课时id") private Long courseConfigId; } cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseDetailsResponse.java
New file @@ -0,0 +1,41 @@ package com.dsh.course.model.vo.response; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class CourseDetailsResponse { @ApiModelProperty(value = "课包id") private Integer coursePackageId; @ApiModelProperty(value = "课包封面图") private String coverDrawing; @ApiModelProperty(value = "课包名称") private String coursePackageName; @ApiModelProperty(value = "上课周 (每周一、周二 )") private String weeks; @ApiModelProperty(value = "上课时间范围") private String courseTimeFrame; @ApiModelProperty(value = "课包介绍图片") private String introduceDrawing; @ApiModelProperty(value = "支付价格") private double amount; @ApiModelProperty(value = "会员价") private double vipAmount; @ApiModelProperty(value = "玩湃币") private double wpGold; @ApiModelProperty(value = "支付状态 1未支付 2续课") private Integer payStatus; } cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java
@@ -3,11 +3,14 @@ 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.ClasspaymentRequest; 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.CourseDetailsResponse; import com.dsh.course.model.vo.response.CourseOfVideoResponse; import com.dsh.course.util.ResultUtil; import java.util.Date; import java.util.List; @@ -64,4 +67,16 @@ */ List<RegisterCourseVo> queryRegisteredCourseList(CourseOfAfterRequest courseTypeId, Integer appUserId); /** * 获取已报名课包详情 * @param coursePackageId * @param appUserId * @return */ CourseDetailsResponse queryRegisteredCourseDetails(Integer coursePackageId, Integer appUserId); ResultUtil ContinuationOrpaymentCourse(Integer userIdFormRedis, ClasspaymentRequest request); } cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
@@ -2,23 +2,24 @@ 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.entity.*; import com.dsh.course.feignclient.account.CoachClient; import com.dsh.course.feignclient.account.model.Coach; 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.feignclient.other.StoreClient; import com.dsh.course.feignclient.other.model.Store; import com.dsh.course.mapper.*; import com.dsh.course.model.vo.RegisterCourseVo; import com.dsh.course.model.vo.request.ClasspaymentRequest; 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.CourseDetailsResponse; import com.dsh.course.model.vo.response.CourseOfVideoResponse; import com.dsh.course.service.TCoursePackagePaymentService; import com.dsh.course.util.ResultUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -40,7 +41,7 @@ @Autowired BenefitVideoClient bfvoClient; private BenefitVideoClient bfvoClient; @Autowired @@ -51,6 +52,18 @@ @Autowired private TCoursePackageMapper tcpmapper; @Autowired private StoreClient stoClient; @Autowired private CoachClient coachClient; @Autowired private CoursePackageStudentMapper cpsMapper; @Autowired private CancelledClassesMapper cacMapper; @@ -150,9 +163,66 @@ @Override public List<RegisterCourseVo> queryRegisteredCourseList(CourseOfAfterRequest courseTypeId, Integer appUserId) { // TODO: 2023/7/6 已报名课程列表 List<RegisterCourseVo> courseVos = new ArrayList<>(); List<TCoursePackagePayment> tCoursePackagePayments = this.queryAllCoursePackage(null,null,null,null,appUserId); if (tCoursePackagePayments.size() > 0){ for (TCoursePackagePayment tCoursePackagePayment : tCoursePackagePayments) { TCoursePackage coursePackage = tcpmapper.selectById(tCoursePackagePayment.getCoursePackageId()); Store store = stoClient.queryStoreById(coursePackage.getStoreId()); RegisterCourseVo registerCourseVo = new RegisterCourseVo(); registerCourseVo.setCoursePackageId(tCoursePackagePayment.getCoursePackageId()); registerCourseVo.setPackageImg(coursePackage.getCoverDrawing()); String storeAndCourse = coursePackage.getName()+"("+ store.getName() +")"; registerCourseVo.setCourseNameStore(storeAndCourse); registerCourseVo.setCourseTime(coursePackage.getClassStartTime()+"-"+coursePackage.getClassEndTime()); Coach coach = coachClient.queryCoachById(coursePackage.getCoachId()); registerCourseVo.setCourseTeacher(coach.getName()); List<CoursePackageStudent> coursePackageStudents = cpsMapper.queryStuDeduClassHourNums(coursePackage.getId(),null,appUserId); registerCourseVo.setCourseNums(coursePackageStudents.size() * 2); registerCourseVo.setPayStatus(tCoursePackagePayment.getPayStatus()); courseVos.add(registerCourseVo); } } return courseVos; } @Override public CourseDetailsResponse queryRegisteredCourseDetails(Integer coursePackageId, Integer appUserId) { // TODO: 2023/7/6 已报名课程详情 return null; } @Override public ResultUtil ContinuationOrpaymentCourse(Integer userIdFormRedis, ClasspaymentRequest request) { // TODO: 2023/7/5 报名课程支付 switch (request.getPayType()){ case 1: WeChatPayment(); break; case 2: AlipayPayment(); break; case 3: PlaypaiGoldPayment(); break; default: break; } return ResultUtil.success(); } public void WeChatPayment(){ } public void AlipayPayment(){ } public void PlaypaiGoldPayment(){ } }