From 0be58dbf7774fef98ddac83c3f454b49c6d5a6c1 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期五, 07 七月 2023 18:18:26 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- 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/resources/mapper/TCoursePackagePaymentMapper.xml | 32 cloud-server-other/src/main/java/com/dsh/other/mapper/SysLoginLogMapper.java | 16 cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java | 4 cloud-server-course/src/main/java/com/dsh/course/model/vo/response/AppUserVideoResponse.java | 34 cloud-server-account/src/main/java/com/dsh/account/feignclient/other/SysLogClient.java | 16 cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml | 29 cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java | 2 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/StoreClient.java | 14 cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.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 | 6 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/BenefitVideoClient.java | 16 cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponStoreMapper.java | 16 cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java | 60 + cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java | 32 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponStoreServiceImpl.java | 20 cloud-server-activity/src/main/java/com/dsh/activity/controller/IntroduceRewardsController.java | 2 cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java | 2 cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java | 41 + cloud-server-course/src/main/java/com/dsh/course/mapper/UserVideoDetailsMapper.java | 17 cloud-server-account/src/main/java/com/dsh/account/controller/CoachController.java | 31 cloud-server-other/src/main/java/com/dsh/other/service/impl/SysLoginLogServiceImpl.java | 20 cloud-server-other/src/main/java/com/dsh/other/feignclient/SysLogClient.java | 16 cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java | 7 cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java | 9 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java | 295 +++++++ 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 cloud-server-other/src/main/resources/mapper/SysLoginLogMapper.xml | 6 cloud-server-activity/src/main/java/com/dsh/activity/entity/CouponStore.java | 49 + cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/StoreDetailOfCourse.java | 13 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java | 257 ++++++ cloud-server-other/src/main/java/com/dsh/other/entity/SysLoginLog.java | 66 + cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java | 125 +++ cloud-server-course/src/main/java/com/dsh/course/feignclient/activity/BenefitVideoClient.java | 16 cloud-server-account/src/main/java/com/dsh/account/feignclient/CoachClient.java | 15 cloud-server-activity/src/main/resources/mapper/CouponStoreMapper.xml | 6 cloud-server-activity/src/main/java/com/dsh/activity/model/request/CouponPackageReq.java | 16 cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseDetailsResponse.java | 41 + cloud-server-other/src/main/java/com/dsh/other/service/SysLoginLogService.java | 16 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-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java | 31 cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java | 56 + cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java | 7 cloud-server-course/src/main/java/com/dsh/course/mapper/PostCourseVideoMapper.java | 1 cloud-server-account/src/main/java/com/dsh/account/controller/ExploreWPController.java | 4 cloud-server-account/src/main/java/com/dsh/account/util/TokenUtil.java | 18 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java | 5 cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java | 4 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-competition/src/main/resources/mapper/UserCompetitionMapper.xml | 32 cloud-server-course/src/main/resources/mapper/UserVideoDetailsMapper.xml | 6 cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java | 10 cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideos.java | 74 + cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Coach.java | 104 ++ 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/CouponStoreService.java | 16 cloud-server-activity/src/main/java/com/dsh/activity/service/BenefitsVideosService.java | 16 cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java | 6 cloud-server-other/src/main/java/com/dsh/other/controller/UserLoginLogController.java | 44 + cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CourseTypeResp.java | 16 cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java | 8 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 | 26 cloud-server-activity/src/main/resources/mapper/BenefitsVideosMapper.xml | 6 cloud-server-course/src/main/java/com/dsh/course/feignclient/account/CoachClient.java | 15 cloud-server-course/src/main/java/com/dsh/course/entity/UserVideoDetails.java | 63 + cloud-server-course/src/main/java/com/dsh/course/model/vo/request/ClasspaymentRequest.java | 29 cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java | 6 cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java | 5 79 files changed, 2,134 insertions(+), 242 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 5996ede..d371b09 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/controller/CoachController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/CoachController.java new file mode 100644 index 0000000..baaf327 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/controller/CoachController.java @@ -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( Integer id){ + try { + return service.getById(id); + }catch (Exception e){ + e.printStackTrace(); + return null; + } + } +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/ExploreWPController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/ExploreWPController.java index 4a43283..b195abe 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/controller/ExploreWPController.java +++ b/cloud-server-account/src/main/java/com/dsh/account/controller/ExploreWPController.java @@ -58,7 +58,7 @@ @ResponseBody @PostMapping("/base/exploreWP/noticeDetail") @ApiOperation(value = "联系客服-公告详情", tags = {"APP-探索玩湃"}) - public ResultUtil<SysNotice> queryNotice(@RequestBody Integer noId){ + public ResultUtil<SysNotice> queryNotice(Integer noId){ try { return ResultUtil.success(tsService.queryNoticeData(noId)); }catch (Exception e){ @@ -82,7 +82,7 @@ @ResponseBody @PostMapping("/base/exploreWP/exceptionDetail") @ApiOperation(value = "联系客服-常见问题详情", tags = {"APP-探索玩湃"}) - public ResultUtil<QuestionIns> queryQuestionData(@RequestBody Integer quesId){ + public ResultUtil<QuestionIns> queryQuestionData(Integer quesId){ try { return ResultUtil.success(tsService.queryQuestionDataInfo(quesId)); }catch (Exception e){ diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java index d761685..cd1133f 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java +++ b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java @@ -2,6 +2,7 @@ import com.dsh.account.entity.TAppUser; +import com.dsh.account.feignclient.other.SysLogClient; import com.dsh.account.model.vo.userBenefitDetail.AppUserDetailsVo; import com.dsh.account.model.vo.userBenefitDetail.BillingDetailsVo; import com.dsh.account.model.vo.userBenefitDetail.IndexOfUserBenefirVo; @@ -16,6 +17,10 @@ import java.text.SimpleDateFormat; +/** + * 使用福利 控制器 + */ + @RestController @RequestMapping("") public class UseBenefitsController { @@ -26,6 +31,9 @@ @Autowired private TokenUtil tokenUtil; + + @Autowired + private SysLogClient slClient; private final SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); @@ -78,6 +86,58 @@ } } + + + @ResponseBody + @PostMapping("/api/useBenefit/cancellation") + @ApiOperation(value = "个人信息-注销账号", tags = {"APP-使用福利"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil cancellationAccount(){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + if(null == appUserId){ + return ResultUtil.tokenErr(); + } +// 变更账号的状态为删除 + tauService.cancellation(appUserId); +// 增加一条注销账号的日志 + slClient.cancellation(appUserId); +// 删除redis中用户key + tokenUtil.logout(); + return ResultUtil.success(); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + + @ResponseBody + @PostMapping("/api/useBenefit/logOut") + @ApiOperation(value = "个人信息-退出登录", tags = {"APP-使用福利"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil logOutAccount(){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + if(null == appUserId){ + return ResultUtil.tokenErr(); + } + // 增加一条退出账号的日志 + slClient.logOut(appUserId); + // 删除redis中用户key + tokenUtil.logout(); + return ResultUtil.success(); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + @ResponseBody @PostMapping("/api/useBenefit/userBilling") @ApiOperation(value = "账单", tags = {"APP-使用福利"}) diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/CoachClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/CoachClient.java new file mode 100644 index 0000000..9b9504d --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/CoachClient.java @@ -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); + +} 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/feignclient/other/SysLogClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/SysLogClient.java new file mode 100644 index 0000000..d027cbe --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/SysLogClient.java @@ -0,0 +1,16 @@ +package com.dsh.account.feignclient.other; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient(value = "mb-cloud-other") +public interface SysLogClient { + + @PostMapping("/appUser/logOut") + void logOut(@RequestBody Integer appUserId); + + @PostMapping("/appUser/cancellation") + void cancellation(@RequestBody Integer appUserId); + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java index 22f4e1b..138a47f 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java @@ -109,4 +109,10 @@ */ BillingDetailsVo queryUserBillingDetails(String yearMonth, Integer recordId); + /** + * 注销账号 + * @param appUserId + */ + void cancellation(Integer appUserId); + } 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 39f368d..2111e73 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 @@ -463,8 +463,28 @@ @Override public BillingDetailsVo queryUserBillingDetails(String yearMonth, Integer recordId) { - System.out.println("账单传参:yearMonth"+yearMonth+"|"+"recordId"+recordId); - // TODO: 2023/7/4 - return null; + BillingDetailsVo vo = new BillingDetailsVo(); + if (null != yearMonth){ + Date monthStart = DateTimeHelper.getCurrentIdetMouthStart(yearMonth); + Date monthEnd = DateTimeHelper.getCurrentIdeaMouthEnd(yearMonth); + + + }else { + Date currentMouthStart = DateTimeHelper.getCurrentMouthStart(); + Date currentMouthEnd = DateTimeHelper.getCurrentMouthEnd(); + + + } + return vo; } + + @Override + public void cancellation(Integer appUserId) { + TAppUser tAppUser = this.baseMapper.selectById(appUserId); + if (null != tAppUser){ + tAppUser.setState(3); + this.baseMapper.updateById(tAppUser); + } + } + } 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 a23d53c..4ab69ac 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 @@ -374,7 +374,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-account/src/main/java/com/dsh/account/util/TokenUtil.java b/cloud-server-account/src/main/java/com/dsh/account/util/TokenUtil.java index 5397637..775a29d 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/util/TokenUtil.java +++ b/cloud-server-account/src/main/java/com/dsh/account/util/TokenUtil.java @@ -33,4 +33,22 @@ return null; } } + + public void logout() { + ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletRequest request = servletRequestAttributes.getRequest(); + String requestHeader = request.getHeader("Authorization"); + if (requestHeader != null && requestHeader.startsWith("Bearer ")) { + requestHeader = requestHeader.substring(requestHeader.indexOf(" ") + 1); + String key = null; + int length = requestHeader.length(); + if (length > 32) { + key = requestHeader.substring(length - 32); + } else { + key = requestHeader; + } + redisUtil.remove(key); // 删除存储在Redis中的对应用户信息 + } + } + } 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/controller/CouponController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java index 6b622ca..c1fceaf 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/CouponController.java @@ -2,7 +2,10 @@ import com.dsh.activity.entity.Coupon; import com.dsh.activity.model.CouponListVo; +import com.dsh.activity.model.request.CouponPackageReq; +import com.dsh.activity.model.response.CouponPackageResp; import com.dsh.activity.service.ICouponService; +import com.dsh.activity.service.UserCouponService; import com.dsh.activity.util.ResultUtil; import com.dsh.activity.util.TokenUtil; import io.swagger.annotations.ApiImplicitParam; @@ -26,6 +29,9 @@ @Autowired private TokenUtil tokenUtil; + + @Autowired + private UserCouponService ucService; @@ -71,4 +77,30 @@ return null; } } + + + /** + * 我的券包列表 + * @param req + * @return + */ + @ResponseBody + @PostMapping("/api/coupon/queryCouponPackage") + @ApiOperation(value = "我的券包列表", tags = {"APP-使用福利"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<List<CouponPackageResp>> queryAppuserCouponList( CouponPackageReq req){ + try { + Integer uid = tokenUtil.getUserIdFormRedis(); + if(null == uid){ + return ResultUtil.tokenErr(); + } + return ResultUtil.success(ucService.queryCouponPackagesList(uid, req)); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.success(); + } + } + } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/IntroduceRewardsController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/IntroduceRewardsController.java index ec98b26..be27639 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/IntroduceRewardsController.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/IntroduceRewardsController.java @@ -28,7 +28,7 @@ @PostMapping("/base/introduce/useOfRewards") - public List<PurchaseRecordVo> queryAppUsersofIntroduce(@RequestBody IntrduceOfUserRequest request){ + public List<PurchaseRecordVo> queryAppUsersofIntroduce( IntrduceOfUserRequest request){ List<PurchaseRecordVo> recordVos = new ArrayList<>(); List<IntroduceRewards> list = idrService.list(new QueryWrapper<IntroduceRewards>() .ge("startTime",request.getStartTime()) 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/entity/CouponStore.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/CouponStore.java new file mode 100644 index 0000000..29b4192 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/CouponStore.java @@ -0,0 +1,49 @@ +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; + +/** + * <p> + * 优惠券使用门店关系数据 + * </p> + * + * @author jqs + * @since 2023-07-07 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_coupon_store") +public class CouponStore extends Model<CouponStore> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 优惠券id + */ + private Integer couponId; + /** + * 门店id + */ + private Integer storeId; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/JSONConpon.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/JSONConpon.java deleted file mode 100644 index dced410..0000000 --- a/cloud-server-activity/src/main/java/com/dsh/activity/entity/JSONConpon.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.dsh.activity.entity; - -public class JSONConpon { - - double conditionalAmount; - - double deductionAmount; - - String experienceName; - - public JSONConpon(double conditionalAmount, double deductionAmount, String experienceName) { - this.conditionalAmount = conditionalAmount; - this.deductionAmount = deductionAmount; - this.experienceName = experienceName; - } - - public JSONConpon() { - } - - public double getConditionalAmount() { - return conditionalAmount; - } - - public void setConditionalAmount(double conditionalAmount) { - this.conditionalAmount = conditionalAmount; - } - - public double getDeductionAmount() { - return deductionAmount; - } - - public void setDeductionAmount(double deductionAmount) { - this.deductionAmount = deductionAmount; - } - - public String getExperienceName() { - return experienceName; - } - - public void setExperienceName(String experienceName) { - this.experienceName = experienceName; - } -} 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/feignclient/other/StoreClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/StoreClient.java new file mode 100644 index 0000000..b23ad64 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/StoreClient.java @@ -0,0 +1,14 @@ +package com.dsh.activity.feignclient.other; + +import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@FeignClient(value = "mb-cloud-other") +public interface StoreClient { + + + @PostMapping("/base/protocol/storeDetail/courseOfSto") + StoreDetailOfCourse getCourseOfStore(@RequestParam("storeId") Integer storeId); +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/StoreDetailOfCourse.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/StoreDetailOfCourse.java new file mode 100644 index 0000000..40cf0a7 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/StoreDetailOfCourse.java @@ -0,0 +1,13 @@ +package com.dsh.activity.feignclient.other.model; + +import lombok.Data; + +@Data +public class StoreDetailOfCourse { + + String storeName; + + String storeAddr; + + +} 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/mapper/CouponStoreMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponStoreMapper.java new file mode 100644 index 0000000..366e2f2 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponStoreMapper.java @@ -0,0 +1,16 @@ +package com.dsh.activity.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.activity.entity.CouponStore; + +/** + * <p> + * 优惠券使用门店关系数据 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-07-07 + */ +public interface CouponStoreMapper extends BaseMapper<CouponStore> { + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java index 62546d5..7b40f7e 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.activity.entity.UserCoupon; -import com.dsh.activity.model.CouponListVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -30,4 +29,5 @@ List<Map<String, Object>> queryAvailableCouponList(@Param("uid") Integer uid, @Param("storeId") Integer storeId, @Param("provinceCode") String provinceCode, @Param("cityCode") String cityCode); + } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java index edb6926..f2671df 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java @@ -1,5 +1,6 @@ package com.dsh.activity.model; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -9,14 +10,17 @@ /** * 条件金额 */ - double conditionalAmount; + @ApiModelProperty("条件金额(例如 :满xx可用)") + String conditionalAmount; /** * 抵扣金额(代金券 取 该字段) */ - double deductionAmount; + @ApiModelProperty("抵扣金额(代金券 取 该字段) 例如:¥ xxx") + String deductionAmount; /** * 体验券名称 */ + @ApiModelProperty("体验券名称 ") String experienceName; } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/request/CouponPackageReq.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/CouponPackageReq.java new file mode 100644 index 0000000..ce3246b --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/CouponPackageReq.java @@ -0,0 +1,16 @@ +package com.dsh.activity.model.request; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CouponPackageReq { + + @ApiModelProperty(value = "(1=满减券,2=代金券,3=体验券)") + Integer couponType; + + @ApiModelProperty(value = "(1=未使用 2=已使用 3=已过期)") + Integer useStatus; + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java new file mode 100644 index 0000000..a33a3fc --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/CouponPackageResp.java @@ -0,0 +1,41 @@ +package com.dsh.activity.model.response; + + +import com.dsh.activity.model.ConponJsonRuleModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CouponPackageResp { + + @ApiModelProperty("优惠券id") + private Integer id; + + @ApiModelProperty("优惠券名称") + private String name; + + @ApiModelProperty("优惠券类型(1=满减券,2=代金券,3=体验券)") + private Integer type; + + @ApiModelProperty("适用范围1全国通用 2指定城市可用 3指定门店可用") + private Integer useCondition; + + @ApiModelProperty("适用范围名称") + private String available; + + @ApiModelProperty("useCondition = 2,为地址字符串;useCondition = 3,为门店名称+地址字符串") + private String cityOrStore; + + @ApiModelProperty("优惠券说明(使用说明)") + private String instructionsForUse; + + @ApiModelProperty("金额条件封装") + private ConponJsonRuleModel ruleModel; + + @ApiModelProperty("有效时间(2021-05-05)") + private String effectiveTime; + + @ApiModelProperty("使用状态(1未使用 2已使用 3已过期)") + private Integer useStatus; + +} 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/CouponStoreService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/CouponStoreService.java new file mode 100644 index 0000000..230e568 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/CouponStoreService.java @@ -0,0 +1,16 @@ +package com.dsh.activity.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.activity.entity.CouponStore; + +/** + * <p> + * 优惠券使用门店关系数据 服务类 + * </p> + * + * @author jqs + * @since 2023-07-07 + */ +public interface CouponStoreService extends IService<CouponStore> { + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java index 2d73f97..784588f 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.activity.entity.UserCoupon; import com.dsh.activity.model.CouponListVo; +import com.dsh.activity.model.request.CouponPackageReq; +import com.dsh.activity.model.response.CouponPackageResp; import java.util.List; @@ -24,4 +26,6 @@ * @return */ List<CouponListVo> queryAvailableCouponList(Integer uid, Integer coursePackageId, Double price, String lon, String lat) throws Exception; + + List<CouponPackageResp> queryCouponPackagesList(Integer uid, CouponPackageReq req); } 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/service/impl/CouponStoreServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponStoreServiceImpl.java new file mode 100644 index 0000000..defdba9 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponStoreServiceImpl.java @@ -0,0 +1,20 @@ +package com.dsh.activity.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.activity.entity.CouponStore; +import com.dsh.activity.mapper.CouponStoreMapper; +import com.dsh.activity.service.CouponStoreService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 优惠券使用门店关系数据 服务实现类 + * </p> + * + * @author jqs + * @since 2023-07-07 + */ +@Service +public class CouponStoreServiceImpl extends ServiceImpl<CouponStoreMapper, CouponStore> implements CouponStoreService { + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java index c8441cd..0a9b304 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java @@ -4,20 +4,35 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.activity.entity.Coupon; +import com.dsh.activity.entity.CouponStore; import com.dsh.activity.entity.UserCoupon; +import com.dsh.activity.feignclient.account.AppUserClient; +import com.dsh.activity.feignclient.account.StudentClient; +import com.dsh.activity.feignclient.account.model.AppUser; import com.dsh.activity.feignclient.course.CoursePackageClient; import com.dsh.activity.feignclient.course.model.CoursePackage; +import com.dsh.activity.feignclient.other.StoreClient; +import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse; +import com.dsh.activity.mapper.CouponMapper; +import com.dsh.activity.mapper.CouponStoreMapper; import com.dsh.activity.mapper.UserCouponMapper; +import com.dsh.activity.model.ConponJsonRuleModel; import com.dsh.activity.model.CouponListVo; +import com.dsh.activity.model.request.CouponPackageReq; +import com.dsh.activity.model.response.CouponPackageResp; import com.dsh.activity.service.UserCouponService; +import com.dsh.activity.util.DateUtil; import com.dsh.activity.util.GDMapGeocodingUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * <p> @@ -36,6 +51,20 @@ @Autowired private GDMapGeocodingUtil gdMapGeocodingUtil; + @Autowired + private AppUserClient appClient; + + @Autowired + private StudentClient studentClient; + + @Autowired + private CouponMapper couponMapper; + + @Autowired + private StoreClient storeClient; + + @Autowired + private CouponStoreMapper csMapper; /** * 获取购买课程可用优惠券列表 @@ -87,4 +116,100 @@ } return listVos; } + + @Override + public List<CouponPackageResp> queryCouponPackagesList(Integer uid, CouponPackageReq req) { + List<CouponPackageResp> respList = new ArrayList<>(); + AppUser appUser = appClient.queryAppUser(uid); + if (null != appUser) { + List<UserCoupon> userCoupons = this.baseMapper.selectList(new QueryWrapper<UserCoupon>() + .eq("userId",appUser.getId() ) + .orderByDesc("insertTime")); + if (userCoupons.size() > 0){ + for (UserCoupon userCoupon : userCoupons) { + Coupon coupon = couponMapper.selectById(userCoupon.getCouponId()); + CouponPackageResp packageResp = new CouponPackageResp(); + packageResp.setId(coupon.getId()); + packageResp.setName(coupon.getName()); + packageResp.setType(coupon.getType()); + packageResp.setUseCondition(coupon.getUseScope()); + switch (coupon.getUseScope()){ + case 1: + packageResp.setAvailable("全国通用"); + break; + case 2: + packageResp.setAvailable("指定城市可用"); + packageResp.setCityOrStore(""); + break; + case 3: + packageResp.setAvailable("指定门店可用"); + CouponStore couponStore = csMapper.selectOne(new QueryWrapper<CouponStore>() + .eq("couponId",coupon.getId())); + StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(couponStore.getStoreId()); + packageResp.setCityOrStore(courseOfStore.getStoreName()+","+courseOfStore.getStoreAddr()); + break; + default: + break; + } + packageResp.setInstructionsForUse(coupon.getIllustrate()); + ConponJsonRuleModel ruleModel = new ConponJsonRuleModel(); + JSONObject jsonObject = JSON.parseObject(coupon.getContent()); + switch (coupon.getType()) { + case 1: +// 满减券 + Double num1 = jsonObject.getDouble("num1"); + Double num2 = jsonObject.getDouble("num2"); + ruleModel.setConditionalAmount("满"+num1+"可用"); + ruleModel.setDeductionAmount("¥ "+num2); + ruleModel.setExperienceName(""); + break; + case 2: +// 代金券 + Double jsonObjectDouble = jsonObject.getDouble("num1"); + ruleModel.setConditionalAmount(""); + ruleModel.setDeductionAmount("¥ "+jsonObjectDouble); + ruleModel.setExperienceName(""); + break; + case 3: +// 体验券 + ruleModel.setConditionalAmount(""); + ruleModel.setDeductionAmount(""); + ruleModel.setExperienceName(jsonObject.getString("num1")); + break; + default: + break; + } + packageResp.setRuleModel(ruleModel); + + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + packageResp.setEffectiveTime(simpleDateFormat.format(coupon.getEndTime())); + + if (userCoupon.getStatus() == 1){ + if (DateUtil.getDate().before(coupon.getEndTime())){ + packageResp.setUseStatus(1); + }else { + packageResp.setUseStatus(3); + } + } + if (userCoupon.getStatus() == 2){ + packageResp.setUseStatus(2); + } + respList.add(packageResp); + } + if (null != req.getCouponType()){ + respList = respList.stream() + .filter(couponPackageResp -> couponPackageResp.getType().equals(req.getCouponType())) + .collect(Collectors.toList()); + } + if (null != req.getUseStatus()){ + respList = respList.stream() + .filter(couponPackageResp -> couponPackageResp.getUseStatus().equals(req.getUseStatus())) + .collect(Collectors.toList()); + } + } + + } + return respList; + } + } 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-activity/src/main/resources/mapper/CouponStoreMapper.xml b/cloud-server-activity/src/main/resources/mapper/CouponStoreMapper.xml new file mode 100644 index 0000000..b92cbce --- /dev/null +++ b/cloud-server-activity/src/main/resources/mapper/CouponStoreMapper.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.CouponStoreMapper"> + + +</mapper> diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java index c42a1a1..15f82ac 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java @@ -59,7 +59,10 @@ .eq("payType",3 ) .eq("auditStatus",2)); List<Integer> comIds = list.stream().map(Competition::getId).collect(Collectors.toList()); - List<UserCompetition> userCompetitions = ucttService.queryUsersCompetetions(sourseList.getStartTime(),sourseList.getEndTime(),sourseList.getAppUserId(),comIds); + List<UserCompetition> userCompetitions = ucttService.list(new QueryWrapper<UserCompetition>() + .between("insertTime", sourseList.getStartTime(),sourseList.getEndTime() ) + .eq("userId", sourseList.getAppUserId()) + .in("competitionId",comIds )); if (userCompetitions.size() > 0){ userCompetitions.forEach(coms ->{ PurchaseRecordVo recordVo = new PurchaseRecordVo(); diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java index f499608..862d515 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java @@ -2,10 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.competition.entity.UserCompetition; -import org.apache.ibatis.annotations.Param; - -import java.util.Date; -import java.util.List; /** * <p> @@ -17,10 +13,5 @@ */ public interface UserCompetitionMapper extends BaseMapper<UserCompetition> { - - List<UserCompetition> queryUsersCompetetions(@Param("startTime") Date startTime, - @Param("endTime") Date endTime , - @Param("appUserId") Integer appUserId, - @Param("comIds") List<Integer> comIds); } diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.java index b4fcdb5..dab1424 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.java @@ -3,9 +3,6 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.competition.entity.UserCompetition; -import java.util.Date; -import java.util.List; - /** * <p> * 赛事报名记录 服务类 @@ -16,7 +13,5 @@ */ public interface UserCompetitionService extends IService<UserCompetition> { - - List<UserCompetition> queryUsersCompetetions(Date startTime, Date endTime ,Integer appUserId, List<Integer> comIds); } diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java index 8fd1b12..7ad920b 100644 --- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java +++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java @@ -20,9 +20,4 @@ @Service public class UserCompetitionServiceImpl extends ServiceImpl<UserCompetitionMapper, UserCompetition> implements UserCompetitionService { - - @Override - public List<UserCompetition> queryUsersCompetetions(Date startTime, Date endTime , Integer appUserId, List<Integer> comIds) { - return this.baseMapper.queryUsersCompetetions(startTime,endTime,appUserId,comIds); - } } diff --git a/cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml b/cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml index 93a7fcc..9b31cc5 100644 --- a/cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml +++ b/cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml @@ -2,37 +2,5 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dsh.competition.mapper.UserCompetitionMapper"> - <select id="queryUsersCompetetions" resultType="com.dsh.competition.entity.UserCompetition"> - SELECT * - FROM t_user_competition - UNION ALL - SELECT * - FROM t_user_competition1 - UNION ALL - SELECT * - FROM t_user_competition2 - UNION ALL - SELECT * - FROM t_user_competition3 - UNION ALL - SELECT * - FROM t_user_competition4 - UNION ALL - SELECT * - FROM t_user_competition5 - WHERE 1 = 1 - <if test=" stuId != null"> - and studentId = #{stuId} - </if> - <if test="appUserId != null"> - and competitionId in - <foreach collection="comIds" item="item" separator="," open="(" index="index" close=")"> - #{item} - </foreach> - </if> - <if test="startTime != null and endTime != null"> - and (insertTime between #{startTime} and #{endTime}) - </if> - </select> </mapper> diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java index e6e427f..e66f5f1 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java @@ -42,8 +42,10 @@ @PostMapping("/base/cancelSource/cancelList") public List<PurchaseRecordVo> getCancelCourseList(@RequestBody GetStuSessionList sessionList){ List<PurchaseRecordVo> purchaseRecordVos = new ArrayList<>(); - - List<TCoursePackagePayment> tCoursePackagePayments = tcppService.queryAllCoursePackage(sessionList.getStartTime(),sessionList.getEndTime(),null,sessionList.getStuId(), sessionList.getAppUserId()); + List<TCoursePackagePayment> tCoursePackagePayments = tcppService.list(new QueryWrapper<TCoursePackagePayment>() + .between("insertTime", sessionList.getStartTime(),sessionList.getEndTime()) + .eq("appUserId",sessionList.getAppUserId()) + .eq("studentId",sessionList.getStuId())); List<Long> coursePackageIds = tCoursePackagePayments.stream().map(TCoursePackagePayment::getId).collect(Collectors.toList()); List<CancelledClasses> list = caceService.list(new QueryWrapper<CancelledClasses>() 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 1a26b08..06f3da1 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 @@ -6,20 +6,33 @@ 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.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; +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.*; @@ -51,6 +64,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"); /** @@ -61,7 +86,10 @@ @PostMapping("/base/coursePack/queryPayment") public List<StuCourseResp> getStuCoursePackagePayment(@RequestParam("stuId") Integer stuId,@RequestParam("appUserId") Integer appUserId){ List<StuCourseResp> resps = new ArrayList<>(); - List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(null,null,null,stuId,appUserId); + List<TCoursePackagePayment> byUserId = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .eq("appUserId",appUserId) + .eq("studentId",stuId)); + if (byUserId.size() > 0 ){ for (TCoursePackagePayment tCoursePackagePayment : byUserId) { TCoursePackage tCoursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId()); @@ -106,7 +134,10 @@ @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()); + List<TCoursePackagePayment> byUserId = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .between("insertTime", request.getStartTime(),request.getEndTime()) + .eq("appUserId",request.getAppUserId()) + .eq("studentId",request.getStuId())); if (byUserId.size() > 0){ List<Integer> collect = byUserId.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList()); List<TCoursePackage> list = tcpService.list(new QueryWrapper<TCoursePackage>() @@ -126,7 +157,11 @@ @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); + + List<TCoursePackagePayment> coursePackage = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .between("insertTime", startTime,endTime) + .eq("appUserId",appUserId) + .eq("studentId",stuId)); if (coursePackage.size() > 0 ){ coursePackage.forEach( cspackage -> { PurchaseRecordVo recordVo = new PurchaseRecordVo(); @@ -147,7 +182,9 @@ Integer totalNu = 0; Integer dedutNu = 0; Integer remainNu = 0; - List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(null,null,null,getStuOfCoursesDetails.getStuId(),getStuOfCoursesDetails.getAppUserId()); + List<TCoursePackagePayment> byUserId = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .eq("appUserId",getStuOfCoursesDetails.getAppUserId()) + .eq("studentId",getStuOfCoursesDetails.getStuId())); if (byUserId.size() > 0 ){ for (TCoursePackagePayment tCoursePackagePayment : byUserId) { totalNu = totalNu + tCoursePackagePayment.getTotalClassHours(); @@ -166,7 +203,10 @@ @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()); + List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .eq("appUserId", getStudentCourse.getAppUserId()) + .eq("coursePackageId", getStudentCourse.getCourseId()) + .eq("studentId", getStudentCourse.getStuId())); if (tCoursePackagePayments.size() > 0 ){ List<CourseHoursType> typeList = new ArrayList<>(); @@ -242,10 +282,6 @@ } switch (payType) { case 1: - courseVo.setAmount(cashPaymentValue); - courseVo.setVipAmount(discountMember); - courseVo.setWpGold(playPaiCoin); - break; case 2: courseVo.setAmount(cashPaymentValue); courseVo.setVipAmount(discountMember); @@ -264,14 +300,207 @@ @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<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .eq("appUserId", 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.list(new QueryWrapper<TCoursePackagePayment>() + .eq("appUserId",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....."), + }) + public ResultUtil<List<AppUserVideoResponse>> queryAfterSourceList( CourseOfAfterRequest search){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + + if(null == appUserId){ + return ResultUtil.tokenErr(); + } + List<Integer> courseIds = new ArrayList<>(); + List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .eq("coursePackageId",search.getCourseTypeId()) + .eq("appUserId",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....."), + }) + public ResultUtil<CourseOfVideoResponse> queryAfterSourceDetails( 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....."), + }) + public ResultUtil updateVideoStatus( 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(); + } + } + + + /** + * 已报名课程列表 + */ + @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( 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(); + } + + } + + + /** + * 已报名课程详情 + */ + @ResponseBody + @PostMapping("/api/startCource/RegisteredData") + @ApiOperation(value = "已报名课程详情", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil<CourseDetailsResponse> getRegisteredData( 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( ClasspaymentRequest request){ + try { + Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); + if(null == userIdFormRedis){ + return ResultUtil.tokenErr(); + } + return packagePaymentService.ContinuationOrpaymentCourse(userIdFormRedis,request); + }catch (Exception e){ + return ResultUtil.runErr(); + } + + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java index 237d8e6..81e2384 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java @@ -38,7 +38,12 @@ Integer sult = 0; TCoursePackage coursePackage = tcpService.getById(course.getCourseId()); if (null != coursePackage && coursePackage.getStatus() == 3){ - List<CoursePackageStudent> coursePackageStudents = cosService.queryStuDeduClassHourNums(course.getCourseId(), course.getStuId(), course.getAppUserId()); + List<CoursePackageStudent> coursePackageStudents = cosService.list(new QueryWrapper<CoursePackageStudent>() + .eq("coursePackageId",course.getCourseId() ) + .eq("studentId",course.getStuId() ) + .eq("appUserId", course.getAppUserId()) + .eq("signInOrNot",1)); + if (coursePackageStudents.size() > 0){ List<CancelledClasses> list = caccService.list(new QueryWrapper<CancelledClasses>() .eq("coursePackageId",course.getCourseId() )); 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/account/CoachClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/CoachClient.java new file mode 100644 index 0000000..bca45cd --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/CoachClient.java @@ -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); + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Coach.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Coach.java new file mode 100644 index 0000000..a961475 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/Coach.java @@ -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; + +} 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..d6057a6 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 @@ -2,9 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.course.entity.CoursePackageStudent; -import org.apache.ibatis.annotations.Param; - -import java.util.List; /** * <p> @@ -16,8 +13,5 @@ */ public interface CoursePackageStudentMapper extends BaseMapper<CoursePackageStudent> { - List<CoursePackageStudent> queryStuDeduClassHourNums(@Param("courseId") Integer courseId, - @Param("stuId") Integer stuId, - @Param("appUserId") Integer appUserId); } diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/PostCourseVideoMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/PostCourseVideoMapper.java index e4a31e5..4bbfdc8 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 @@ -13,4 +13,5 @@ */ public interface PostCourseVideoMapper extends BaseMapper<PostCourseVideo> { + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java index efea10f..63917a7 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java +++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java @@ -1,11 +1,8 @@ package com.dsh.course.mapper; -import com.dsh.course.entity.TCoursePackagePayment; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.course.entity.TCoursePackagePayment; import org.apache.ibatis.annotations.Param; - -import java.util.Date; -import java.util.List; /** * <p> @@ -17,11 +14,6 @@ */ public interface TCoursePackagePaymentMapper extends BaseMapper<TCoursePackagePayment> { - List<TCoursePackagePayment> queryAllCoursePackage(@Param("startTime")Date startTime, - @Param("endTime")Date endTime , - @Param("coursePackId") Integer coursePackId, - @Param("stuId") Integer stuId, - @Param("appUserId") Integer appUserId); /** 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..42e206c --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/UserVideoDetailsMapper.java @@ -0,0 +1,17 @@ +package com.dsh.course.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.course.entity.UserVideoDetails; + +/** + * <p> + * 用户观看视频记录 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-07-06 + */ +public interface UserVideoDetailsMapper extends BaseMapper<UserVideoDetails> { + + +} 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..c9dc4d5 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/RegisterCourseVo.java @@ -0,0 +1,31 @@ +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; + + @ApiModelProperty(value = "支付状态 1未支付 2已支付") + private Integer payStatus; + +} 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/ClasspaymentRequest.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/ClasspaymentRequest.java new file mode 100644 index 0000000..e8cada9 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/request/ClasspaymentRequest.java @@ -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; + + +} 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/CourseDetailsResponse.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseDetailsResponse.java new file mode 100644 index 0000000..820d95d --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/CourseDetailsResponse.java @@ -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; + + +} 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..3f623f4 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 @@ -3,8 +3,6 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.course.entity.CoursePackageStudent; -import java.util.List; - /** * <p> * 学员上课记录 服务类 @@ -15,6 +13,6 @@ */ public interface CoursePackageStudentService extends IService<CoursePackageStudent> { - List<CoursePackageStudent> queryStuDeduClassHourNums(Integer courseId, Integer stuId, Integer appUserId); + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java index db11bfd..35a855e 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,8 +2,16 @@ 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; /** @@ -16,7 +24,6 @@ */ public interface TCoursePackagePaymentService extends IService<TCoursePackagePayment> { - List<TCoursePackagePayment> queryAllCoursePackage(Date startTime, Date endTime ,Integer lessionId,Integer stuId, Integer appUserId); /** @@ -25,4 +32,49 @@ * @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); + + /** + * 获取已报名课包详情 + * @param coursePackageId + * @param appUserId + * @return + */ + CourseDetailsResponse queryRegisteredCourseDetails(Integer coursePackageId, Integer appUserId); + + + + ResultUtil ContinuationOrpaymentCourse(Integer userIdFormRedis, ClasspaymentRequest request); + } 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..7d1f58c 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 @@ -6,8 +6,6 @@ import com.dsh.course.service.CoursePackageStudentService; import org.springframework.stereotype.Service; -import java.util.List; - /** * <p> * 学员上课记录 服务实现类 @@ -19,8 +17,5 @@ @Service public class CoursePackageStudentServiceImpl extends ServiceImpl<CoursePackageStudentMapper, CoursePackageStudent> implements CoursePackageStudentService { - @Override - public List<CoursePackageStudent> queryStuDeduClassHourNums(Integer courseId, Integer stuId, Integer appUserId) { - return this.baseMapper.queryStuDeduClassHourNums(courseId,stuId,appUserId); - } + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java index f61dff9..9c9e572 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,37 @@ 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.*; +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.feignclient.other.StoreClient; +import com.dsh.course.feignclient.other.model.Store; +import com.dsh.course.mapper.*; +import com.dsh.course.model.dto.DiscountJsonDto; +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 com.dsh.course.util.StrUtils; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.List; +import java.math.BigDecimal; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; /** * <p> @@ -20,10 +44,36 @@ @Service public class TCoursePackagePaymentServiceImpl extends ServiceImpl<TCoursePackagePaymentMapper, TCoursePackagePayment> implements TCoursePackagePaymentService { - @Override - public List<TCoursePackagePayment> queryAllCoursePackage(Date startTime, Date endTime , Integer coursePackId, Integer stuId, Integer appUserId) { - return this.baseMapper.queryAllCoursePackage(startTime,endTime,coursePackId,stuId,appUserId); - } + + @Autowired + private BenefitVideoClient bfvoClient; + + + @Autowired + private UserVideoDetailsMapper uvdmapper; + + @Autowired + private PostCourseVideoMapper pcvMapper; + + @Autowired + private TCoursePackageMapper tcpmapper; + + @Autowired + private StoreClient stoClient; + + @Autowired + private CoachClient coachClient; + + @Autowired + private CoursePackageStudentMapper cpsMapper; + + @Autowired + private CancelledClassesMapper cacMapper; + + @Autowired + private TCoursePackageDiscountMapper tcpdMapper; + + /** * 获取课包购买人数 @@ -34,4 +84,231 @@ 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.selectList(new QueryWrapper<PostCourseVideo>() + .eq("coursePackageId", courseIds)); + + if (videoList.size() > 0){ + List<Integer> videoIds = videoList.stream().map(PostCourseVideo::getCourseId).collect(Collectors.toList()); + List<UserVideoDetails> userVideoDetails = uvdmapper.selectList(new QueryWrapper<UserVideoDetails>() + .in("courseId", 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) { + List<RegisterCourseVo> courseVos = new ArrayList<>(); + List<TCoursePackagePayment> tCoursePackagePayments = this.list(new QueryWrapper<TCoursePackagePayment>() + .eq("appUserId",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.selectList(new QueryWrapper<CoursePackageStudent>() + .eq("coursePackageId",coursePackage.getId()) + .eq("studentId",appUserId )); + registerCourseVo.setCourseNums(coursePackageStudents.size() * 2); + registerCourseVo.setPayStatus(tCoursePackagePayment.getPayStatus()); + courseVos.add(registerCourseVo); + } + } + return courseVos; + } + + @Override + public CourseDetailsResponse queryRegisteredCourseDetails(Integer coursePackageId, Integer appUserId) { + CourseDetailsResponse response = new CourseDetailsResponse(); + List<TCoursePackagePayment> tCoursePackagePayments = this.list(new QueryWrapper<TCoursePackagePayment>() + .eq("coursePackageId",coursePackageId ) + .eq("appUserId",appUserId)); + + if (tCoursePackagePayments.size() > 0){ + TCoursePackagePayment tCoursePackagePayment = tCoursePackagePayments.get(0); + TCoursePackage coursePackage = tcpmapper.selectById(tCoursePackagePayment.getCoursePackageId()); + response.setCoursePackageId(tCoursePackagePayment.getCoursePackageId()); + response.setCoverDrawing(coursePackage.getCoverDrawing()); + response.setCoursePackageName(coursePackage.getName()); + List<Integer> integers = StrUtils.dealStrToList(coursePackage.getClassWeeks()); + 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); + } + response.setWeeks(courWeeks.toString()); + } + response.setCourseTimeFrame(coursePackage.getClassStartTime()+"-"+coursePackage.getClassEndTime()); + response.setIntroduceDrawing(coursePackage.getIntroduceDrawing()); + + Integer payType = tCoursePackagePayment.getPayType(); + BigDecimal cashPayment = tCoursePackagePayment.getCashPayment(); + double cashPaymentValue = cashPayment.doubleValue(); + Integer playPaiCoin = tCoursePackagePayment.getPlayPaiCoin(); + TCoursePackageDiscount coursePackageDiscount = tcpdMapper.selectOne(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: + response.setAmount(cashPaymentValue); + response.setVipAmount(discountMember); + break; + case 3: + response.setWpGold(playPaiCoin); + break; + } + response.setPayStatus(tCoursePackagePayment.getPayStatus()); + } + return response; + } + + @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(){ + + } + } 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..63b7bd3 100644 --- a/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml +++ b/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml @@ -3,33 +3,4 @@ <mapper namespace="com.dsh.course.mapper.CoursePackageStudentMapper"> - <select id="queryStuDeduClassHourNums" resultType="com.dsh.course.entity.CoursePackageStudent"> - SELECT * - FROM t_course_package_student - UNION ALL - SELECT * - FROM t_course_package_student1 - UNION ALL - SELECT * - FROM t_course_package_student2 - UNION ALL - SELECT * - FROM t_course_package_student3 - UNION ALL - SELECT * - FROM t_course_package_student4 - UNION ALL - SELECT * - FROM t_course_package_student5 - WHERE signInOrNot = 1 - <if test="courseId != null"> - and coursePackageId = #{courseId} - </if> - <if test="stuId != null "> - and studentId = #{stuId} - </if> - <if test="appUserId != null"> - and appUserId = #{appUserId} - </if> - </select> </mapper> diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml index 41486fa..67802be 100644 --- a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml +++ b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml @@ -25,38 +25,6 @@ <result column="state" property="state" /> <result column="insertTime" property="insertTime" /> </resultMap> - <select id="queryAllCoursePackage" resultType="com.dsh.course.entity.TCoursePackagePayment"> - SELECT * - FROM t_course_package_payment - UNION ALL - SELECT * - FROM t_course_package_payment1 - UNION ALL - SELECT * - FROM t_course_package_payment2 - UNION ALL - SELECT * - FROM t_course_package_payment3 - UNION ALL - SELECT * - FROM t_course_package_payment4 - UNION ALL - SELECT * - FROM t_course_package_payment5 - WHERE 1=1 - <if test=" stuId != null"> - and studentId = #{stuId} - </if> - <if test="appUserId != null"> - and appUserId = #{appUserId} - </if> - <if test="startTime != null and endTime != null"> - and (insertTime between #{startTime} and #{endTime}) - </if> - <if test="coursePackId != null "> - and coursePackageId = #{coursePackId} - </if> - </select> <select id="queryCountNumber" resultType="int"> 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..d98aac9 --- /dev/null +++ b/cloud-server-course/src/main/resources/mapper/UserVideoDetailsMapper.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.course.mapper.UserVideoDetailsMapper"> + + +</mapper> diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/UserLoginLogController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/UserLoginLogController.java new file mode 100644 index 0000000..7bddb2c --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/controller/UserLoginLogController.java @@ -0,0 +1,44 @@ +package com.dsh.other.controller; + + +import com.dsh.other.entity.SysLoginLog; +import com.dsh.other.service.SysLoginLogService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; + +@RestController +@RequestMapping("") +public class UserLoginLogController { + + + @Autowired + private SysLoginLogService ssllService; + + + @PostMapping("/appUser/logOut") + public void logOut(@RequestBody Integer appUserId){ + SysLoginLog sysLoginLog = new SysLoginLog(); + sysLoginLog.setCreatetime(new Date()); + sysLoginLog.setUserid(appUserId); + sysLoginLog.setSucceed("执行成功"); + sysLoginLog.setMessage("退出成功"); + sysLoginLog.setLogname("APP用户退出账号"); + ssllService.save(sysLoginLog); + } + + @PostMapping("/appUser/cancellation") + public void cancellation(@RequestBody Integer appUserId){ + SysLoginLog sysLoginLog = new SysLoginLog(); + sysLoginLog.setCreatetime(new Date()); + sysLoginLog.setUserid(appUserId); + sysLoginLog.setSucceed("执行成功"); + sysLoginLog.setMessage("注销成功"); + sysLoginLog.setLogname("APP用户注销账号"); + ssllService.save(sysLoginLog); + } + + + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/SysLoginLog.java b/cloud-server-other/src/main/java/com/dsh/other/entity/SysLoginLog.java new file mode 100644 index 0000000..d9922ab --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/entity/SysLoginLog.java @@ -0,0 +1,66 @@ +package com.dsh.other.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-07 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("sys_login_log") +public class SysLoginLog extends Model<SysLoginLog> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 日志名称 + */ + private String logname; + /** + * 管理员id + */ + private Integer userid; + /** + * 创建时间 + */ + private Date createtime; + /** + * 是否执行成功 + */ + private String succeed; + /** + * 具体消息 + */ + private String message; + /** + * 登录ip + */ + private String ip; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/SysLogClient.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/SysLogClient.java new file mode 100644 index 0000000..e9b6592 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/SysLogClient.java @@ -0,0 +1,16 @@ +package com.dsh.other.feignclient; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient(value = "mb-cloud-other") +public interface SysLogClient { + + @PostMapping("/appUser/logOut") + void logOut(@RequestBody Integer appUserId); + + @PostMapping("/appUser/cancellation") + void cancellation(@RequestBody Integer appUserId); + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/SysLoginLogMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/SysLoginLogMapper.java new file mode 100644 index 0000000..0d2fb06 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/SysLoginLogMapper.java @@ -0,0 +1,16 @@ +package com.dsh.other.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.other.entity.SysLoginLog; + +/** + * <p> + * 登录记录 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-07-07 + */ +public interface SysLoginLogMapper extends BaseMapper<SysLoginLog> { + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/SysLoginLogService.java b/cloud-server-other/src/main/java/com/dsh/other/service/SysLoginLogService.java new file mode 100644 index 0000000..7ba050c --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/service/SysLoginLogService.java @@ -0,0 +1,16 @@ +package com.dsh.other.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.other.entity.SysLoginLog; + +/** + * <p> + * 登录记录 服务类 + * </p> + * + * @author jqs + * @since 2023-07-07 + */ +public interface SysLoginLogService extends IService<SysLoginLog> { + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SysLoginLogServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SysLoginLogServiceImpl.java new file mode 100644 index 0000000..750061f --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SysLoginLogServiceImpl.java @@ -0,0 +1,20 @@ +package com.dsh.other.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.other.entity.SysLoginLog; +import com.dsh.other.mapper.SysLoginLogMapper; +import com.dsh.other.service.SysLoginLogService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 登录记录 服务实现类 + * </p> + * + * @author jqs + * @since 2023-07-07 + */ +@Service +public class SysLoginLogServiceImpl extends ServiceImpl<SysLoginLogMapper, SysLoginLog> implements SysLoginLogService { + +} diff --git a/cloud-server-other/src/main/resources/mapper/SysLoginLogMapper.xml b/cloud-server-other/src/main/resources/mapper/SysLoginLogMapper.xml new file mode 100644 index 0000000..f5e0333 --- /dev/null +++ b/cloud-server-other/src/main/resources/mapper/SysLoginLogMapper.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.other.mapper.SysLoginLogMapper"> + + +</mapper> -- Gitblit v1.7.1