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/controller/CoursePackagePaymentController.java | 437 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 424 insertions(+), 13 deletions(-) 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 b240beb..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 @@ -1,23 +1,44 @@ package com.dsh.course.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.course.entity.TCoursePackage; +import com.dsh.course.entity.TCoursePackageDiscount; import com.dsh.course.entity.TCoursePackagePayment; -import com.dsh.course.feignclient.model.CourseOfStoreVo; -import com.dsh.course.feignclient.model.StuCourseResp; -import com.dsh.course.service.TCoursePackageService; -import com.dsh.course.servs.CoursePackagePaymentRepository; +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.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.CrossOrigin; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.stream.Collectors; @Api @CrossOrigin @@ -27,21 +48,42 @@ private Logger logger = LoggerFactory.getLogger("business-log"); + @Autowired - private CoursePackagePaymentRepository coursePackagePaymentRepository; + private TCoursePackagePaymentService packagePaymentService; @Autowired private TCoursePackageService tcpService; + + @Autowired + private TCoursePackageDiscountService tcpdService; + + @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"); /** * 获取 没有学员信息的图片配置 * @param stuId 学员id * @return 课包列表 */ - @PostMapping("/coursePack/queryPayment") - public List<StuCourseResp> getStuCoursePackagePayment(Integer stuId){ + @PostMapping("/base/coursePack/queryPayment") + public List<StuCourseResp> getStuCoursePackagePayment(@RequestParam("stuId") Integer stuId,@RequestParam("appUserId") Integer appUserId){ List<StuCourseResp> resps = new ArrayList<>(); - List<TCoursePackagePayment> byUserId = coursePackagePaymentRepository.findByUserId(stuId); + List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(null,null,null,stuId,appUserId); if (byUserId.size() > 0 ){ for (TCoursePackagePayment tCoursePackagePayment : byUserId) { TCoursePackage tCoursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId()); @@ -51,6 +93,7 @@ resp.setTotalCourseNums(tCoursePackagePayment.getTotalClassHours()); resp.setResidueNums(tCoursePackagePayment.getLaveClassHours()); resp.setDeductionNums(tCoursePackagePayment.getTotalClassHours()-tCoursePackagePayment.getLaveClassHours()); + resps.add(resp); } } return resps; @@ -60,9 +103,377 @@ * * 获取发布的 课包列表 */ - @PostMapping("/coursePack/storeOfCourse") + @PostMapping("/base/coursePack/storeOfCourse") public List<CourseOfStoreVo> getStuCourseWithStores(){ + List<CourseOfStoreVo> courseOfStoreVos = tcpService.queryStoreOfCourse(); + if (courseOfStoreVos.size() > 0){ + for (CourseOfStoreVo courseOfStoreVo : courseOfStoreVos) { + String[] split = courseOfStoreVo.getClassWeeks().split(";"); + List<Integer> integers = new ArrayList<>(); + for (String s : split) { + int num = Integer.parseInt(s); + integers.add(num); + } + courseOfStoreVo.setClassWeekList(integers); + } + } return tcpService.queryStoreOfCourse(); } + + /** + * + * 课程名称列表 + */ + @PostMapping("/base/coursePack/sessionNames") + public List<StuSessionDetailsVo> getStuSessionList(@RequestBody CourseDetailRequest request){ + List<StuSessionDetailsVo> detailsVos = new ArrayList<>(); + List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(request.getStartTime(),request.getEndTime(),null,request.getStuId(),request.getAppUserId()); + if (byUserId.size() > 0){ + List<Integer> collect = byUserId.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList()); + List<TCoursePackage> list = tcpService.list(new QueryWrapper<TCoursePackage>() + .in("id", collect)); + list.forEach(vo -> { + StuSessionDetailsVo detVo = new StuSessionDetailsVo(); + detVo.setSessionid(vo.getId()); + detVo.setSessionName(vo.getName()); + String afterDayDate = DateUtil.getAfterDayDate2(vo.getInsertTime(),vo.getValidDays() + ""); + detVo.setPeriodOfValidity(afterDayDate); + detailsVos.add(detVo); + }); + } + return detailsVos; + } + + @PostMapping("/base/coursePack/paymentCourse") + public List<PurchaseRecordVo> queryCourseDetails(@RequestParam("startTime") Date startTime, @RequestParam("endTime") Date endTime,@RequestParam("stuId") Integer stuId, @RequestParam("appUserId") Integer appUserId) { + List<PurchaseRecordVo> purchaseRecordVos = new ArrayList<>(); + List<TCoursePackagePayment> coursePackage = packagePaymentService.queryAllCoursePackage(startTime,endTime,null,stuId, appUserId); + if (coursePackage.size() > 0 ){ + coursePackage.forEach( cspackage -> { + PurchaseRecordVo recordVo = new PurchaseRecordVo(); + recordVo.setPurchaseAmount("+"+cspackage.getClassHours()); + recordVo.setPurchaseTime(format.format(cspackage.getInsertTime())); + recordVo.setPurchaseType("购买课包"); + purchaseRecordVos.add(recordVo); + }); + } + return purchaseRecordVos; + } + + + + @PostMapping("/base/coursePack/stuOfCourses") + public StuWithCoursesListVo getStuOfCoursesDetails(@RequestBody GetStuOfCoursesDetails getStuOfCoursesDetails){ + StuWithCoursesListVo lisco = new StuWithCoursesListVo(); + Integer totalNu = 0; + Integer dedutNu = 0; + Integer remainNu = 0; + List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(null,null,null,getStuOfCoursesDetails.getStuId(),getStuOfCoursesDetails.getAppUserId()); + if (byUserId.size() > 0 ){ + for (TCoursePackagePayment tCoursePackagePayment : byUserId) { + 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; + } + + + + @PostMapping("/base/coursePack/continuingCourse") + public StudentOfCourseVo getStudentCourse(@RequestBody GetStudentCourse getStudentCourse){ + StudentOfCourseVo courseVo = new StudentOfCourseVo(); + List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.queryAllCoursePackage(null,null,getStudentCourse.getCourseId(),getStudentCourse.getStuId(),getStudentCourse.getAppUserId()); + if (tCoursePackagePayments.size() > 0 ){ + + List<CourseHoursType> typeList = new ArrayList<>(); + tCoursePackagePayments.forEach(cou -> { + CourseHoursType hoursType = new CourseHoursType(); + hoursType.setCourseConfigId(cou.getId()); + hoursType.setCourseHourNums(cou.getClassHours()); + typeList.add(hoursType); + }); + TCoursePackagePayment tCoursePackagePayment = tCoursePackagePayments.get(0); + courseVo.setCoursePackageId(tCoursePackagePayment.getCoursePackageId()); + courseVo.setTypeList(typeList); + + TCoursePackage coursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId()); + courseVo.setPackageImg(coursePackage.getCoverDrawing()); + courseVo.setCourseName(coursePackage.getName()); + courseVo.setCoachId(coursePackage.getCoachId()); + String classWeeks = coursePackage.getClassWeeks(); + List<Integer> integers = StrUtils.dealStrToList(classWeeks); + if (integers.size() > 0){ + StringBuilder courWeeks = new StringBuilder("每"); + for (Integer integer : integers) { + switch (integer){ + case 1: + courWeeks.append("周一、"); + break; + case 2: + courWeeks.append("周二、"); + break; + case 3: + courWeeks.append("周三、"); + break; + case 4: + courWeeks.append("周四、"); + break; + case 5: + courWeeks.append("周五、"); + break; + case 6: + courWeeks.append("周六、"); + break; + case 7: + courWeeks.append("周末、"); + break; + default: + break; + } + } + if (courWeeks.length() > 0 && courWeeks.charAt(courWeeks.length() - 1) == ','){ + courWeeks.deleteCharAt(courWeeks.length() - 1); + } + courseVo.setCourseWeek(courWeeks.toString()); + } + + courseVo.setCourseTime(coursePackage.getClassStartTime()+"-"+coursePackage.getClassEndTime()); + Integer payType = tCoursePackagePayment.getPayType(); + BigDecimal cashPayment = tCoursePackagePayment.getCashPayment(); + double cashPaymentValue = cashPayment.doubleValue(); + Integer playPaiCoin = tCoursePackagePayment.getPlayPaiCoin(); + TCoursePackageDiscount coursePackageDiscount = tcpdService.getOne(new QueryWrapper<TCoursePackageDiscount>() + .eq("coursePackageId",coursePackage.getId() ) + .eq("type",1) + .eq("auditStatus",2)); + ObjectMapper objectMapper = new ObjectMapper(); + String content = coursePackageDiscount.getContent(); + double discountMember = 0.0; + DiscountJsonDto discountJsonDto = null; + try { + discountJsonDto = objectMapper.readValue(content, DiscountJsonDto.class); + discountMember = discountJsonDto.getDiscountMember(); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + switch (payType) { + case 1: + case 2: + courseVo.setAmount(cashPaymentValue); + courseVo.setVipAmount(discountMember); + break; + case 3: + courseVo.setWpGold(playPaiCoin); + break; + } + courseVo.setStoreId(coursePackage.getStoreId()); + } + + return courseVo; + } + + + @PostMapping("/base/coursePack/afterCourseTwos") + public List<AfterVideoVo> getAfterCourseTwos(@RequestParam("appUserId") Integer appUserId){ + List<AfterVideoVo> videoVos = new ArrayList<>(); + 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(); + } + + } + + + } -- Gitblit v1.7.1