From 60ef8b4a95540dfab9df0447364ee40c18354010 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期二, 04 七月 2023 08:48:57 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/CouponStuAvailableVo.java | 26 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CancelListClient.java | 20 cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/SysNotice.java | 20 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java | 20 cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml | 35 cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreInfo.java | 25 cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java | 47 cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.java | 22 cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java | 23 cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java | 14 cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/WeekedCourse.java | 11 cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDataDetails.java | 18 cloud-server-course/src/main/java/com/dsh/course/util/StrUtils.java | 13 cloud-server-other/src/main/java/com/dsh/other/service/impl/PhoneServiceImpl.java | 20 cloud-server-other/src/main/resources/mapper/PhoneMapper.xml | 6 cloud-server-course/src/main/java/com/dsh/course/mapper/CancelledClassesMapper.java | 16 cloud-server-other/src/main/java/com/dsh/other/controller/AskedQuestionsController.java | 64 cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java | 2 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java | 17 cloud-server-account/src/main/java/com/dsh/account/feignclient/other/QuestionClient.java | 19 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/IntroduceRewardsClient.java | 20 cloud-server-activity/src/main/resources/mapper/CouponMapper.xml | 16 cloud-server-account/src/main/java/com/dsh/account/model/vo/commentDetail/StuCommentsVo.java | 26 cloud-server-competition/src/main/java/com/dsh/competition/service/CompetitionService.java | 16 cloud-server-competition/src/main/resources/mapper/CompetitionMapper.xml | 6 cloud-server-course/src/main/java/com/dsh/course/util/DateUtil.java | 18 cloud-server-activity/src/main/java/com/dsh/activity/controller/IntroduceRewardsController.java | 46 cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java | 16 cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/RecordTimeRequest.java | 23 cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuWithCoursesListVo.java | 19 cloud-server-other/src/main/java/com/dsh/other/entity/Phone.java | 50 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StudentOfCourseVo.java | 46 cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java | 54 cloud-server-other/src/main/java/com/dsh/other/entity/FrequentlyAskedQuestions.java | 62 cloud-server-account/src/main/java/com/dsh/account/entity/EvaluateStudent.java | 66 cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackage.java | 8 cloud-server-other/src/main/java/com/dsh/other/model/vo/questionVo/QuestionDetailsVo.java | 17 cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java | 21 cloud-server-course/src/main/java/com/dsh/course/service/impl/CancelledClassesServiceImpl.java | 20 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuSessionDetailsVo.java | 18 cloud-server-activity/src/main/resources/mapper/IntroduceRewardsMapper.xml | 8 cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java | 17 cloud-server-other/src/main/java/com/dsh/other/feignclient/CustomerClient.java | 12 cloud-server-competition/src/main/java/com/dsh/competition/mapper/CompetitionMapper.java | 16 cloud-server-account/src/main/java/com/dsh/account/feignclient/other/StoreClient.java | 28 cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/IntroduceRewardsClient.java | 21 cloud-server-account/src/main/resources/mapper/EvaluateStudentMapper.xml | 5 cloud-server-activity/src/main/java/com/dsh/activity/service/IntroduceRewardsService.java | 16 cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java | 59 cloud-server-account/src/main/java/com/dsh/account/service/EvaluateStudentService.java | 21 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java | 163 + cloud-server-course/src/main/java/com/dsh/course/feignclient/CancelListClient.java | 20 cloud-server-other/src/main/java/com/dsh/other/model/vo/questionVo/QuestionIns.java | 22 cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDetailsInsVo.java | 41 cloud-server-course/src/main/java/com/dsh/course/feignclient/model/CourseHoursType.java | 16 cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/StuPhysicalVo.java | 9 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseRecordClient.java | 13 cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java | 26 cloud-server-other/src/main/java/com/dsh/other/feignclient/QuestionClient.java | 19 cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java | 16 cloud-server-other/src/main/java/com/dsh/other/mapper/NoticeMapper.java | 16 cloud-server-competition/src/main/java/com/dsh/competition/entity/Competition.java | 151 + cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreDetailOfCourse.java | 16 cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java | 16 cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/PurchaseRecordVo.java | 23 cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseRecordClient.java | 13 cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml | 38 cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java | 7 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuWithCoursesListVo.java | 19 cloud-server-activity/src/main/java/com/dsh/activity/entity/UserCoupon.java | 66 cloud-server-account/src/main/java/com/dsh/account/util/GDMapGeocodingUtil.java | 93 + cloud-server-course/src/main/java/com/dsh/course/service/CancelledClassesService.java | 16 cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java | 191 + cloud-server-other/src/main/java/com/dsh/other/entity/Notice.java | 66 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuAndAppuserIdsVo.java | 12 cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java | 2 cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java | 66 cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/ExploreDatasVo.java | 19 cloud-server-other/src/main/resources/mapper/FrequentlyAskedQuestionsMapper.xml | 6 cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java | 22 cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml | 5 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java | 12 cloud-server-other/src/main/java/com/dsh/other/service/impl/FrequentlyAskedQuestionsServiceImpl.java | 20 cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseSessionNameClient.java | 29 cloud-server-other/src/main/java/com/dsh/other/service/impl/NoticeServiceImpl.java | 20 cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java | 19 cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java | 5 cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml | 14 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/PurchaseRecordVo.java | 23 cloud-server-other/src/main/java/com/dsh/other/util/HttpResult.java | 31 cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/CourseHoursType.java | 16 cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java | 16 cloud-server-other/pom.xml | 6 cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreInfo.java | 25 cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java | 212 ++ cloud-server-activity/src/main/java/com/dsh/activity/controller/UserConponController.java | 73 cloud-server-other/src/main/resources/mapper/NoticeMapper.xml | 5 cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java | 10 cloud-server-course/src/main/java/com/dsh/course/entity/TCourse.java | 5 cloud-server-competition/src/main/java/com/dsh/competition/controller/UserCompetitionController.java | 20 cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java | 36 cloud-server-course/src/main/java/com/dsh/course/entity/CancelledClasses.java | 58 cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreLonLatList.java | 19 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java | 23 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java | 20 cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassInfoVo.java | 2 cloud-server-other/src/main/java/com/dsh/other/service/NoticeService.java | 16 cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PurchaseRecordVo.java | 23 cloud-server-other/src/main/java/com/dsh/other/service/PhoneService.java | 16 cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/CourseDetailsOfContinuationResp.java | 59 cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java | 26 cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/model/PurchaseRecordVo.java | 23 cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreLonLatList.java | 19 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java | 5 cloud-server-account/src/main/java/com/dsh/account/mapper/EvaluateStudentMapper.java | 16 cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java | 2 cloud-server-other/src/main/java/com/dsh/other/controller/SystemNoticeController.java | 80 cloud-server-other/src/main/java/com/dsh/other/util/HttpClientUtil.java | 269 +++ cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuSessionDetailsVo.java | 18 cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/LonLatRequest.java | 15 cloud-server-activity/src/main/java/com/dsh/activity/entity/JSONConpon.java | 43 cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseSessionNameClient.java | 30 cloud-server-account/src/main/java/com/dsh/account/feignclient/other/NoticeClient.java | 24 cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageStudent.java | 67 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java | 20 cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java | 183 ++ cloud-server-other/src/main/java/com/dsh/other/mapper/PhoneMapper.java | 16 cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetails/QuestionIns.java | 19 cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml | 8 cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java | 5 cloud-server-account/src/main/java/com/dsh/account/controller/ExploreWPController.java | 120 + cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetails/QuestionDetailsVo.java | 17 cloud-server-activity/src/main/java/com/dsh/activity/service/CouponService.java | 20 cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java | 28 cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java | 20 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/IntroduceRewardsServiceImpl.java | 20 cloud-server-competition/src/main/java/com/dsh/competition/entity/UserCompetition.java | 58 cloud-server-other/src/main/java/com/dsh/other/feignclient/NoticeClient.java | 25 cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java | 2 cloud-server-account/src/main/java/com/dsh/account/model/vo/medalDetail/StuMedalVo.java | 22 cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java | 66 cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseListClient.java | 3 cloud-server-activity/src/main/java/com/dsh/activity/mapper/IntroduceRewardsMapper.java | 16 cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/ClassDataDetails.java | 17 cloud-server-account/src/main/java/com/dsh/account/util/DateTimeHelper.java | 50 cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponStuAvailableVo.java | 26 cloud-server-activity/src/main/java/com/dsh/activity/entity/IntroduceRewards.java | 78 cloud-server-other/src/main/java/com/dsh/other/mapper/FrequentlyAskedQuestionsMapper.java | 16 cloud-server-other/src/main/java/com/dsh/other/service/FrequentlyAskedQuestionsService.java | 16 cloud-server-account/src/main/java/com/dsh/account/service/impl/EvaluateStudentServiceImpl.java | 56 cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java | 26 cloud-server-other/src/main/java/com/dsh/other/util/GDMapGeocodingUtil.java | 95 + cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 15 cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml | 8 cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreDetailOfCourse.java | 13 cloud-server-other/src/main/java/com/dsh/other/feignclient/model/SysNotice.java | 21 cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StudentOfCourseVo.java | 45 cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java | 65 158 files changed, 4,972 insertions(+), 130 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 87eb972..283299b 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 @@ -3,16 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.account.entity.TStudent; -import com.dsh.account.model.vo.classDetails.classInsVo.StuDetailsReq; -import com.dsh.account.model.vo.classDetails.classInsVo.StuListVo; -import com.dsh.account.model.vo.classDetails.classInsVo.StuPhysicalVo; +import com.dsh.account.feignclient.competition.model.PurchaseRecordVo; +import com.dsh.account.model.vo.classDetails.classInsVo.*; +import com.dsh.account.model.vo.commentDetail.StuCommentsVo; +import com.dsh.account.model.vo.medalDetail.StuMedalVo; +import com.dsh.account.model.vo.sourceDetail.CouponStuAvailableVo; +import com.dsh.account.model.vo.sourceDetail.CourseDetailsOfContinuationResp; +import com.dsh.account.model.vo.sourceDetail.RecordTimeRequest; +import com.dsh.account.service.EvaluateStudentService; import com.dsh.account.service.TAppUserService; import com.dsh.account.service.TStudentService; import com.dsh.account.util.DateUtil; import com.dsh.account.util.ResultUtil; import com.dsh.account.util.TokenUtil; import com.dsh.account.util.ToolUtil; -import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @@ -31,10 +35,8 @@ /** * 学员上课情况 接口 */ -@Api -@CrossOrigin @RestController -@RequestMapping("/base/startCource") +@RequestMapping("") public class ClassDetailsController { private Logger logger = LoggerFactory.getLogger("business-log"); @@ -46,19 +48,22 @@ private TAppUserService tappuService; @Autowired + private EvaluateStudentService evalstuService; + + @Autowired private TokenUtil tokenUtil; @ResponseBody - @PostMapping("/stu/queryStudentData") - @ApiOperation(value = "根据登录用户ID查询学员信息", tags = {"APP-开始上课-用户学员信息"}, notes = "") + @PostMapping("/base/startCource/queryStudentData") + @ApiOperation(value = "上课首页", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(value = "经度值", name = "longitude", required = true, dataType = "String"), @ApiImplicitParam(value = "纬度值", name = "latitude", required = true, dataType = "String"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) - public ResultUtil queryCouponRecord(String longitude,String latitude){ + public ResultUtil<ClassInfoVo> queryCouponRecord(@RequestBody String longitude, @RequestBody String latitude){ try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if(null == userIdFormRedis){ @@ -73,8 +78,8 @@ @ResponseBody - @PostMapping("/stu/queryPhysical") - @ApiOperation(value = "获取学员测试报告", tags = {"APP-开始上课-获取学员测试报告"}, notes = "") + @PostMapping("/base/startCource/queryPhysical") + @ApiOperation(value = "获取学员测试报告", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(value = "学员id", name = "id", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") @@ -95,8 +100,8 @@ * 添加学员信息 */ @ResponseBody - @PostMapping("/stu/addData") - @ApiOperation(value = "添加学员信息", tags = {"APP-开始上课-添加学员信息"}, notes = "") + @PostMapping("/base/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.....") @@ -119,12 +124,12 @@ * 该APP用户下的学员列表 */ @ResponseBody - @PostMapping("/stu/listOfStu") - @ApiOperation(value = "该APP用户下的学员列表", tags = {"APP-开始上课-学员列表"}, notes = "") + @PostMapping("/base/startCource/listOfStu") + @ApiOperation(value = "学员列表", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) - public ResultUtil queryStuList(){ + public ResultUtil<List<StuListVo>> queryStuList(){ try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if(null == userIdFormRedis){ @@ -148,7 +153,7 @@ } return ResultUtil.success(stuListVos); }catch (Exception e){ - return ResultUtil.runErr(ResultUtil.ERROR); + return ResultUtil.runErr(); } } @@ -156,15 +161,157 @@ * 课时详情 */ @ResponseBody - @PostMapping("/stu/lessonDetails") - @ApiOperation(value = "课时详情", tags = {"APP-开始上课-课时详情"}, notes = "") + @PostMapping("/base/startCource/lessonDetails") + @ApiOperation(value = "课时详情", tags = {"APP-开始上课"}) @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(value = "课包id", name = "lessonId", required = true, dataType = "int"), + @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"), }) - public void coursePackageDetails(@RequestBody Integer lessonId){ + public ResultUtil<ClassDetailsInsVo> coursePackageDetails(@RequestBody Integer lessonId, @RequestBody Integer stuId, HttpServletRequest request){ + try { + Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(request); + if(null == userIdFormRedis){ + return ResultUtil.tokenErr(); + } + + return ResultUtil.success(istuService.querySessionDetailsDt(userIdFormRedis,lessonId,stuId)); + }catch (Exception e){ + return ResultUtil.runErr(); + } } + /** + * 课时详情-记录列表 + */ + @ResponseBody + @PostMapping("/base/startCource/recordDetails") + @ApiOperation(value = "课时详情-记录列表", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil<List<PurchaseRecordVo>> recordList(@RequestBody RecordTimeRequest timeRequest, HttpServletRequest request){ + try { + Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(request); + if(null == userIdFormRedis){ + return ResultUtil.tokenErr(); + } + return ResultUtil.success(istuService.queryDeduRecordDetails(timeRequest,userIdFormRedis)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + /** + * 课时详情-续课课包详情 + */ + @ResponseBody + @PostMapping("/base/startCource/renewal") + @ApiOperation(value = "课时详情-续课课包详情", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<CourseDetailsOfContinuationResp> renewalOfCourses(@RequestBody Integer lessonId, @RequestBody Integer stuId, HttpServletRequest request){ + try { + Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(request); + if(null == userIdFormRedis){ + return ResultUtil.tokenErr(); + } + return ResultUtil.success(istuService.queryStuOfCourseDetails(lessonId,stuId,userIdFormRedis)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + + } + + + /** + * 课时详情-选择优惠券 + */ + @ResponseBody + @PostMapping("/base/startCource/conponList") + @ApiOperation(value = "课时详情-选择优惠券", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<List<CouponStuAvailableVo>> queryCouponList(HttpServletRequest request){ + try { + Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(request); + if(null == userIdFormRedis){ + return ResultUtil.tokenErr(); + } + return ResultUtil.success(istuService.queryStuOfConponDetails(userIdFormRedis)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + + } + + + + /** + * 课时详情-支付 + */ + @ResponseBody + @PostMapping("/base/startCource/payment") + @ApiOperation(value = "课时详情-支付", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<?> continuationOperation(@RequestBody Integer lessonId, @RequestBody Integer stuId, HttpServletRequest request){ + try { + + return ResultUtil.success(); + }catch (Exception e){ + return ResultUtil.runErr(); + } + + } + + + /** + * 学员评语 + */ + @ResponseBody + @PostMapping("/base/startCource/stuComment") + @ApiOperation(value = "学员评语", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<List<StuCommentsVo>> queryStuComment(@RequestParam("stuId") Integer stuId){ + try { + return ResultUtil.success(evalstuService.queryStuCommentsList(stuId)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + /** + * 学员勋章 + */ + @ResponseBody + @PostMapping("/base/startCource/stuMedal") + @ApiOperation(value = "学员勋章", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<StuMedalVo> queryStuMedal(@RequestParam("stuId") Integer stuId, HttpServletRequest request){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(request); + 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/ExploreWPController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/ExploreWPController.java new file mode 100644 index 0000000..cd8aaf7 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/controller/ExploreWPController.java @@ -0,0 +1,120 @@ +package com.dsh.account.controller; + + +import com.dsh.account.feignclient.other.model.SysNotice; +import com.dsh.account.model.vo.exploreDetail.ExploreDatasVo; +import com.dsh.account.model.vo.exploreDetail.LonLatRequest; +import com.dsh.account.model.vo.exploreDetails.QuestionDetailsVo; +import com.dsh.account.model.vo.exploreDetails.QuestionIns; +import com.dsh.account.service.TStudentService; +import com.dsh.account.util.ResultUtil; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 探索玩湃 控制器 + */ +@RestController +@RequestMapping("") +public class ExploreWPController { + + + @Autowired + private TStudentService tsService; + + @ResponseBody + @PostMapping("/base/exploreWP/noticeList") + @ApiOperation(value = "联系客服-探索首页", tags = {"APP-探索玩湃"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<ExploreDatasVo> indexOfExploreDetail(@RequestBody LonLatRequest llrequest){ + try { + return ResultUtil.success(tsService.queryIndexOfExplores(llrequest)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + + @ResponseBody + @PostMapping("/base/exploreWP/noticeList") + @ApiOperation(value = "联系客服-公告列表", tags = {"APP-探索玩湃"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<List<SysNotice>> queryNoticeListDatas(){ + try { + return ResultUtil.success(tsService.querySystemNoticeDetails()); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + @ResponseBody + @PostMapping("/base/exploreWP/noticeList") + @ApiOperation(value = "联系客服-公告详情", tags = {"APP-探索玩湃"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<SysNotice> queryNotice(@RequestBody Integer noId){ + try { + return ResultUtil.success(tsService.queryNoticeData(noId)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + @ResponseBody + @PostMapping("/base/exploreWP/noticeList") + @ApiOperation(value = "联系客服-常见问题列表", tags = {"APP-探索玩湃"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<QuestionDetailsVo> queryFrequentlyAskedQuestionDetails(){ + try { + return ResultUtil.success(tsService.queryQuestionData()); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + @ResponseBody + @PostMapping("/base/exploreWP/noticeList") + @ApiOperation(value = "联系客服-常见问题详情", tags = {"APP-探索玩湃"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<QuestionIns> queryQuestionData(@RequestBody Integer quesId){ + try { + return ResultUtil.success(tsService.queryQuestionDataInfo(quesId)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + @ResponseBody + @PostMapping("/base/exploreWP/noticeList") + @ApiOperation(value = "联系客服-客服电话列表", tags = {"APP-探索玩湃"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<List<String>> queryCustomerData(){ + try { + return ResultUtil.success(tsService.queryCustomerDetails()); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java new file mode 100644 index 0000000..fad5bff --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/controller/PaymentCallbackController.java @@ -0,0 +1,36 @@ +package com.dsh.account.controller; + + +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 支付回调控制器 + */ + + +@RestController +@RequestMapping("/payment/callback") +public class PaymentCallbackController { + + + /** + * 支付宝支付回调接口 + */ + @PostMapping("/v1") + public void alipayCallback(){ + + } + + + /** + * 微信支付回调接口 + */ + @PostMapping("/v2") + public void weChatCallback(){ + + } + + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/entity/EvaluateStudent.java b/cloud-server-account/src/main/java/com/dsh/account/entity/EvaluateStudent.java new file mode 100644 index 0000000..78248aa --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/entity/EvaluateStudent.java @@ -0,0 +1,66 @@ +package com.dsh.account.entity; + +import com.baomidou.mybatisplus.enums.IdType; +import java.util.Date; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * <p> + * 评价学员记录 + * </p> + * + * @author jqs + * @since 2023-07-03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_evaluate_student") +public class EvaluateStudent extends Model<EvaluateStudent> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 教练id + */ + private Integer coachId; + /** + * 学员id + */ + private Integer studentId; + /** + * 评语 + */ + private String content; + /** + * 图片 + */ + private String imgs; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + private Integer state; + /** + * 添加时间 + */ + private Date insertTime; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java b/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java index 5c64cd6..bceb756 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java +++ b/cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java @@ -1,8 +1,5 @@ package com.dsh.account.entity; -import java.util.Date; -import java.io.Serializable; - import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -10,6 +7,8 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import java.util.Date; + /** * <p> * 用户信息 diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/IntroduceRewardsClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/IntroduceRewardsClient.java new file mode 100644 index 0000000..d9e3390 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/IntroduceRewardsClient.java @@ -0,0 +1,21 @@ +package com.dsh.account.feignclient.activity; + + +import com.dsh.account.feignclient.competition.model.PurchaseRecordVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Date; +import java.util.List; + +@FeignClient(value = "mb-cloud-activity") +public interface IntroduceRewardsClient { + + + @PostMapping("/introduce/useOfRewards") + public List<PurchaseRecordVo> queryAppUsersofIntroduce(@RequestBody Date startTime, + @RequestBody Date endTime, + @RequestBody List<Integer> userIds); + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java new file mode 100644 index 0000000..f1192fb --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/UserConponClient.java @@ -0,0 +1,17 @@ +package com.dsh.account.feignclient.activity; + +import com.dsh.account.model.vo.sourceDetail.CouponStuAvailableVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +@FeignClient(value = "mb-cloud-activity") +public interface UserConponClient { + + + @PostMapping("/userConpon/getStuOfConpons") + public List<CouponStuAvailableVo> queryUserWithConponList(@RequestBody Integer appUserId); + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java new file mode 100644 index 0000000..66a66b2 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java @@ -0,0 +1,19 @@ +package com.dsh.account.feignclient.competition; + + +import com.dsh.account.feignclient.competition.model.PurchaseRecordVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Date; +import java.util.List; + +@FeignClient(value = "mb-cloud-competition") +public interface DeductionCompetitionsClient { + @PostMapping("/competition/getCompetitionsDetails") + public List<PurchaseRecordVo> getStuSourseList(@RequestBody Date startTime, + @RequestBody Date endTime, + @RequestBody Integer appUserId); + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/model/PurchaseRecordVo.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/model/PurchaseRecordVo.java new file mode 100644 index 0000000..c5f2c68 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/model/PurchaseRecordVo.java @@ -0,0 +1,23 @@ +package com.dsh.account.feignclient.competition.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 类型实体类: + * 类型:购买课包、消课、报名赛事、介绍有礼 + */ + +@Data +public class PurchaseRecordVo { + + @ApiModelProperty(value = "类型名称") + private String purchaseType; + + @ApiModelProperty(value = "类型变动时间 例如 06-29 10:48") + private String purchaseTime; + + @ApiModelProperty(value = "类型涉及金额 例如 +100 -50") + private String purchaseAmount; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CancelListClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CancelListClient.java new file mode 100644 index 0000000..59cf6ea --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CancelListClient.java @@ -0,0 +1,20 @@ +package com.dsh.account.feignclient.course; + +import com.dsh.account.feignclient.competition.model.PurchaseRecordVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Date; +import java.util.List; + +@FeignClient(value = "mb-cloud-course") +public interface CancelListClient { + + @PostMapping("/cancelSource/cancelList") + public List<PurchaseRecordVo> getCancelCourseList(@RequestBody Date startTime, + @RequestBody Date endTime, + @RequestBody Integer stuId, + @RequestBody Integer appUserId); + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java index dddf989..7b0264c 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java @@ -2,8 +2,11 @@ import com.dsh.account.feignclient.course.model.CourseOfStoreVo; import com.dsh.account.feignclient.course.model.StuCourseResp; +import com.dsh.account.feignclient.course.model.StuWithCoursesListVo; +import com.dsh.account.feignclient.course.model.StudentOfCourseVo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @@ -17,4 +20,13 @@ @PostMapping("/coursePack/storeOfCourse") List<CourseOfStoreVo> getStoreOfCourses(); + + @PostMapping("/coursePack/stuOfCourses") + StuWithCoursesListVo getStuOfCoursesDetails(@RequestBody Integer stuId, + @RequestBody Integer appUserId); + + @PostMapping("/coursePack/continuingCourse") + StudentOfCourseVo getStudentCourse(@RequestBody Integer courseId, + @RequestBody Integer stuId, + @RequestBody Integer appUserId); } diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseRecordClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseRecordClient.java new file mode 100644 index 0000000..20a19b2 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseRecordClient.java @@ -0,0 +1,13 @@ +package com.dsh.account.feignclient.course; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient(value = "mb-cloud-course") +public interface CourseRecordClient { + + @PostMapping("/courseRecord/queryDeduClassHours") + public Integer getDeductionClassHour(@RequestBody Integer courseId, @RequestBody Integer stuId, @RequestBody Integer appUserId); + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseSessionNameClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseSessionNameClient.java new file mode 100644 index 0000000..ef01dd4 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseSessionNameClient.java @@ -0,0 +1,29 @@ +package com.dsh.account.feignclient.course; + + +import com.dsh.account.feignclient.competition.model.PurchaseRecordVo; +import com.dsh.account.feignclient.course.model.StuSessionDetailsVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Date; +import java.util.List; + +@FeignClient(value = "mb-cloud-course") +public interface CourseSessionNameClient { + + + @PostMapping("/coursePack/sessionNames") + List<StuSessionDetailsVo> getStuSessionList(@RequestBody Date startTime, + @RequestBody Date endTime, + @RequestBody Integer stuId, + @RequestBody Integer appUserId); + + @PostMapping("/coursePack/paymentCourse") + public List<PurchaseRecordVo> queryCourseDetails(@RequestBody Date startTime, + @RequestBody Date endTime, + @RequestBody Integer stuId, + @RequestBody Integer appUserId); + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuAndAppuserIdsVo.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuAndAppuserIdsVo.java new file mode 100644 index 0000000..7fd0a91 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuAndAppuserIdsVo.java @@ -0,0 +1,12 @@ +package com.dsh.account.feignclient.course.model; + + +import lombok.Data; + +@Data +public class StuAndAppuserIdsVo { + + Integer stuId; + + Integer appUserId; +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuSessionDetailsVo.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuSessionDetailsVo.java new file mode 100644 index 0000000..9765201 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuSessionDetailsVo.java @@ -0,0 +1,18 @@ +package com.dsh.account.feignclient.course.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class StuSessionDetailsVo { + + @ApiModelProperty(value = "课时id") + private Integer sessionid; + + @ApiModelProperty(value = "课时名称") + private String sessionName; + + @ApiModelProperty(value = "课时有效期") + private String periodOfValidity; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuWithCoursesListVo.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuWithCoursesListVo.java new file mode 100644 index 0000000..0a5d372 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StuWithCoursesListVo.java @@ -0,0 +1,19 @@ +package com.dsh.account.feignclient.course.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StuWithCoursesListVo { + + @ApiModelProperty(value = "总学时数") + private Integer totalNums; + + @ApiModelProperty(value = "已扣学时数") + private Integer deductedNums; + + @ApiModelProperty(value = "剩余学时数") + private Integer remainingNums; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StudentOfCourseVo.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StudentOfCourseVo.java new file mode 100644 index 0000000..23c339b --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/StudentOfCourseVo.java @@ -0,0 +1,46 @@ +package com.dsh.account.feignclient.course.model; + + +import com.dsh.account.model.vo.sourceDetail.CourseHoursType; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class StudentOfCourseVo { + + @ApiModelProperty(value = "课包id") + private Integer coursePackageId; + + @ApiModelProperty(value = "课包封面图") + private String packageImg; + + @ApiModelProperty(value = "课包名称") + private String courseName; + + @ApiModelProperty(value = "授课老师/教练") + private Integer coachId; + + @ApiModelProperty(value = "上课周 例如:每周二") + private String courseWeek; + + @ApiModelProperty(value = "上课时间:例如 14:00-16:00") + private String courseTime; + + @ApiModelProperty(value = "课时列表: 50 70 90") + private List<CourseHoursType> typeList; + + @ApiModelProperty(value = "支付价格") + private double amount; + + @ApiModelProperty(value = "会员价") + private double vipAmount; + + @ApiModelProperty(value = "玩湃币") + private Integer wpGold; + + @ApiModelProperty(value = "门店id") + private Integer storeId; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/NoticeClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/NoticeClient.java new file mode 100644 index 0000000..159b15a --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/NoticeClient.java @@ -0,0 +1,24 @@ +package com.dsh.account.feignclient.other; + +import com.dsh.account.feignclient.other.model.SysNotice; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + + +@FeignClient(value = "mb-cloud-other") +public interface NoticeClient { + + + @PostMapping("/base/notice/queryNoticeDetails") + List<SysNotice> getSysNoticeDetails(); + + @PostMapping("/base/notice/queryNotice") + SysNotice getSysNoticeBuId(@RequestBody Integer noticeId); + + @PostMapping("/base/notice/sysTell") + List<String> queryCustomerTel(); + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/QuestionClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/QuestionClient.java new file mode 100644 index 0000000..9380603 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/QuestionClient.java @@ -0,0 +1,19 @@ +package com.dsh.account.feignclient.other; + +import com.dsh.account.model.vo.exploreDetails.QuestionDetailsVo; +import com.dsh.account.model.vo.exploreDetails.QuestionIns; +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 QuestionClient { + + @PostMapping("/base/notice/queryQuestionDetails") + QuestionDetailsVo getSysQuestionDetails(); + + @PostMapping("/base/notice/queryQuestion") + QuestionIns getSysQuestionBuId(@RequestBody Integer quesId); + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/StoreClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/StoreClient.java index 0495a35..0b60f71 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/StoreClient.java +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/StoreClient.java @@ -11,8 +11,22 @@ * @author zhibing.pu * @date 2023/6/24 15:54 */ +import com.dsh.account.feignclient.other.model.StoreDetailOfCourse; +import com.dsh.account.feignclient.other.model.StoreInfo; +import com.dsh.account.feignclient.other.model.StoreLonLatList; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + @FeignClient(value = "mb-cloud-other") public interface StoreClient { + + + + + /** @@ -21,4 +35,18 @@ */ @PostMapping("/store/queryStoreList") List<Store> queryStoreList(QueryStoreList queryStoreList); + + + + + @PostMapping("/storeDetail/courseOfSto") + public StoreDetailOfCourse getCourseOfStore(@RequestBody Integer storeId); + + + @PostMapping("/storeDetail/nearbyStore") + List<StoreInfo> getAllNearbyStoreList(@RequestBody String longitude, @RequestBody String latitude); + + + @PostMapping("/storeDetail/storeOfLonLat") + public List<StoreLonLatList> getAllStoreLonLats(@RequestBody String longitude, @RequestBody String latitude); } diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreDetailOfCourse.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreDetailOfCourse.java new file mode 100644 index 0000000..1abc5c7 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreDetailOfCourse.java @@ -0,0 +1,16 @@ +package com.dsh.account.feignclient.other.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class StoreDetailOfCourse { + + @ApiModelProperty(value = "门店名称") + String storeName; + + @ApiModelProperty(value = "门店地址") + String storeAddr; + + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreInfo.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreInfo.java new file mode 100644 index 0000000..5964072 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreInfo.java @@ -0,0 +1,25 @@ +package com.dsh.account.feignclient.other.model; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class StoreInfo { + + @ApiModelProperty(value = "门店id") + private Integer storeId; + + @ApiModelProperty(value = "门店背景图") + private String storeImg; + + @ApiModelProperty(value = "门店距离当前位置") + private long distance; + + @ApiModelProperty(value = "门店名称") + private String storeName; + + @ApiModelProperty(value = "门店详细地址") + private String storeAddr; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreLonLatList.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreLonLatList.java new file mode 100644 index 0000000..38646da --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/StoreLonLatList.java @@ -0,0 +1,19 @@ +package com.dsh.account.feignclient.other.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class StoreLonLatList { + + @ApiModelProperty(value = "门店id") + Integer storeId; + + @ApiModelProperty(value = "经度") + String longitude; + + @ApiModelProperty(value = "纬度") + String latitude; + + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/SysNotice.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/SysNotice.java new file mode 100644 index 0000000..8929709 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/SysNotice.java @@ -0,0 +1,20 @@ +package com.dsh.account.feignclient.other.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class SysNotice { + + @ApiModelProperty(value = "公告id") + private Integer noticeId; + + @ApiModelProperty(value = "公告标题") + private String noticeTitle; + + @ApiModelProperty(value = "公告内容") + private String noticeContents; + + @ApiModelProperty(value = "公告发布时间") + private String noticeTime; +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/mapper/EvaluateStudentMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/EvaluateStudentMapper.java new file mode 100644 index 0000000..207e1f1 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/EvaluateStudentMapper.java @@ -0,0 +1,16 @@ +package com.dsh.account.mapper; + +import com.dsh.account.entity.EvaluateStudent; +import com.baomidou.mybatisplus.mapper.BaseMapper; + +/** + * <p> + * 评价学员记录 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-07-03 + */ +public interface EvaluateStudentMapper extends BaseMapper<EvaluateStudent> { + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java index 407daca..f8e5036 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java +++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.account.entity.TAppUser; +import org.apache.ibatis.annotations.Mapper; /** @@ -12,6 +13,7 @@ * @author administrator * @since 2023-06-14 */ +@Mapper public interface TAppUserMapper extends BaseMapper<TAppUser> { diff --git a/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java index fda3fc3..587e07b 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java +++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.account.entity.TStudent; +import org.apache.ibatis.annotations.Mapper; /** @@ -12,6 +13,7 @@ * @author administrator * @since 2023-06-14 */ +@Mapper public interface TStudentMapper extends BaseMapper<TStudent> { } diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/WeekedCourse.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/WeekedCourse.java index 5c116da..ae04ba1 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/WeekedCourse.java +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/WeekedCourse.java @@ -8,17 +8,6 @@ @Data public class WeekedCourse { - @ApiModelProperty(value = "是否为当天 1 是 2 否") - private Integer isToday; - - @ApiModelProperty(value = "星期缩写") - private String weekStr; - - @ApiModelProperty(value = "星期数值") - private Integer weekNum; - - @ApiModelProperty(value = "日期") - private String dayStr; @ApiModelProperty(value = "课包列表") private List<CourseVenue> details; diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDataDetails.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDataDetails.java new file mode 100644 index 0000000..4f57652 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDataDetails.java @@ -0,0 +1,18 @@ +package com.dsh.account.model.vo.classDetails.classInsVo; + +import com.dsh.account.feignclient.competition.model.PurchaseRecordVo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +@Data +public class ClassDataDetails { + + @ApiModelProperty(value = "已扣课时数") + private Integer deductionClassHours; + + @ApiModelProperty(value = "类型变动记录") + private List<PurchaseRecordVo> recordVos; +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDetailsInsVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDetailsInsVo.java new file mode 100644 index 0000000..1c96459 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDetailsInsVo.java @@ -0,0 +1,41 @@ +package com.dsh.account.model.vo.classDetails.classInsVo; + +import com.dsh.account.feignclient.competition.model.PurchaseRecordVo; +import com.dsh.account.feignclient.course.model.StuSessionDetailsVo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class ClassDetailsInsVo { + + @ApiModelProperty(value = "学员id") + private Integer stuId; + + @ApiModelProperty(value = "学员头像") + private String stuImage; + + @ApiModelProperty(value = "学员姓名") + private String stuName; + + + @ApiModelProperty(value = "总学时数") + private Integer totalNums; + + @ApiModelProperty(value = "已扣学时数") + private Integer deductedNums; + + @ApiModelProperty(value = "剩余学时数") + private Integer remainingNums; + + @ApiModelProperty(value = "课包名称列表") + private List<StuSessionDetailsVo> sessionNames; + + @ApiModelProperty(value = "已扣课时数") + private Integer deductionClassHours; + + @ApiModelProperty(value = "课包列表") + private List<PurchaseRecordVo> details; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassInfoVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassInfoVo.java index 49cc40b..0ebd4b9 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassInfoVo.java +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassInfoVo.java @@ -19,7 +19,7 @@ private String imgs; @ApiModelProperty(value = "学员id") - private String stuId; + private Integer stuId; @ApiModelProperty(value = "学员头像") private String stuImg; diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/StuPhysicalVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/StuPhysicalVo.java index 343b8be..e07a661 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/StuPhysicalVo.java +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/StuPhysicalVo.java @@ -1,16 +1,17 @@ package com.dsh.account.model.vo.classDetails.classInsVo; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class StuPhysicalVo { - + @ApiModelProperty(value = "身高") private Double height; - + @ApiModelProperty(value = "体重") private Double weight; - + @ApiModelProperty(value = "BMI参数") private Double bmi; - + @ApiModelProperty(value = "图片链接") private String url; } diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/commentDetail/StuCommentsVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/commentDetail/StuCommentsVo.java new file mode 100644 index 0000000..95322aa --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/commentDetail/StuCommentsVo.java @@ -0,0 +1,26 @@ +package com.dsh.account.model.vo.commentDetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class StuCommentsVo { + + @ApiModelProperty(value = "学员头像") + private String headImg; + + @ApiModelProperty(value = "学员姓名") + private String stuName; + + @ApiModelProperty(value = "评价时间") + private String comTime; + + @ApiModelProperty(value = "评价内容") + private String contents; + + @ApiModelProperty(value = "评价上传图片地址列表") + private List<String> imgs; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/ExploreDatasVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/ExploreDatasVo.java new file mode 100644 index 0000000..bd52503 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/ExploreDatasVo.java @@ -0,0 +1,19 @@ +package com.dsh.account.model.vo.exploreDetail; + +import com.dsh.account.feignclient.other.model.StoreInfo; +import com.dsh.account.feignclient.other.model.StoreLonLatList; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class ExploreDatasVo { + + @ApiModelProperty(value = "前往玩湃-经度-纬度") + private List<StoreLonLatList> lonLatLists; + + @ApiModelProperty(value = "门店列表") + private List<StoreInfo> storeLists; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/LonLatRequest.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/LonLatRequest.java new file mode 100644 index 0000000..1c9c54a --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetail/LonLatRequest.java @@ -0,0 +1,15 @@ +package com.dsh.account.model.vo.exploreDetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class LonLatRequest { + + @ApiModelProperty(value = "用户经度") + private String longitude; + + @ApiModelProperty(value = "用户纬度") + private String latitude; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetails/QuestionDetailsVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetails/QuestionDetailsVo.java new file mode 100644 index 0000000..89044aa --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetails/QuestionDetailsVo.java @@ -0,0 +1,17 @@ +package com.dsh.account.model.vo.exploreDetails; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class QuestionDetailsVo { + + @ApiModelProperty(value = "banner图") + private String bannerImg; + + @ApiModelProperty(value = "问题列表") + private List<QuestionIns> sysS; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetails/QuestionIns.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetails/QuestionIns.java new file mode 100644 index 0000000..d1c3f66 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/exploreDetails/QuestionIns.java @@ -0,0 +1,19 @@ +package com.dsh.account.model.vo.exploreDetails; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class QuestionIns { + + @ApiModelProperty(value = "问题id") + private Integer noticeId; + + @ApiModelProperty(value = "问题标题") + private String noticeTitle; + + @ApiModelProperty(value = "答复内容") + private String noticeContents; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/medalDetail/StuMedalVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/medalDetail/StuMedalVo.java new file mode 100644 index 0000000..1e863f3 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/medalDetail/StuMedalVo.java @@ -0,0 +1,22 @@ +package com.dsh.account.model.vo.medalDetail; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class StuMedalVo { + + @ApiModelProperty(value = "勋章类型(1=俱乐部之星,2=运动达人,3=社区之王,4=深度玩家)") + private Integer medalType; + + @ApiModelProperty(value = "勋章名称 例如:俱乐部之星") + private String medalName; + + @ApiModelProperty(value = "当前等级") + private Integer levelNum; + + @ApiModelProperty(value = "升级条件") + private String upgradeConditions; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/CouponStuAvailableVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/CouponStuAvailableVo.java new file mode 100644 index 0000000..368cf82 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/CouponStuAvailableVo.java @@ -0,0 +1,26 @@ +package com.dsh.account.model.vo.sourceDetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CouponStuAvailableVo { + + @ApiModelProperty(value = "券id") + private Integer conponId; + + @ApiModelProperty(value = "券名称") + private String conponName; + + @ApiModelProperty(value = "券类型 1满减券(取 条件金额+扣减金额) 2代金券(取 扣减金额)") + private Integer conponType; + + @ApiModelProperty(value = "条件金额") + private double conditionalAmount; + + @ApiModelProperty(value = "扣减金额") + private double amount; + + @ApiModelProperty(value = "有效期至 yyyy-MM-dd") + private String lifespan; +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/CourseDetailsOfContinuationResp.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/CourseDetailsOfContinuationResp.java new file mode 100644 index 0000000..7fc190b --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/CourseDetailsOfContinuationResp.java @@ -0,0 +1,59 @@ +package com.dsh.account.model.vo.sourceDetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class CourseDetailsOfContinuationResp { + + @ApiModelProperty(value = "课包id") + private Integer coursePackageId; + + @ApiModelProperty(value = "学员id") + private Integer stuId; + + @ApiModelProperty(value = "课包封面图") + private String packageImg; + + @ApiModelProperty(value = "课包名称") + private String courseName; + + @ApiModelProperty(value = "授课老师") + private String teacherName; + + @ApiModelProperty(value = "上课周 例如:每周二") + private String courseWeek; + + @ApiModelProperty(value = "上课时间:例如 14:00-16:00") + private String courseTime; + + @ApiModelProperty(value = "门店名称") + private String storeName; + + @ApiModelProperty(value = "门店地址") + private String storeAddr; + + @ApiModelProperty(value = "课时列表: 50 70 90") + private List<CourseHoursType> typeList; + + @ApiModelProperty(value = "学员姓名") + private String stuName; + + @ApiModelProperty(value = "学员电话") + private String stuPhone; + + @ApiModelProperty(value = "学员年龄") + private Integer stuAge; + + @ApiModelProperty(value = "支付价格") + private double amount; + + @ApiModelProperty(value = "会员价") + private double vipAmount; + + @ApiModelProperty(value = "玩湃币") + private double wpGold; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/CourseHoursType.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/CourseHoursType.java new file mode 100644 index 0000000..8b75198 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/CourseHoursType.java @@ -0,0 +1,16 @@ +package com.dsh.account.model.vo.sourceDetail; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CourseHoursType { + + @ApiModelProperty(value = "课时id") + private Integer courseConfigId; + + @ApiModelProperty(value = "课时数") + private Integer courseHourNums; + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/RecordTimeRequest.java b/cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/RecordTimeRequest.java new file mode 100644 index 0000000..6d26c36 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/model/vo/sourceDetail/RecordTimeRequest.java @@ -0,0 +1,23 @@ +package com.dsh.account.model.vo.sourceDetail; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class RecordTimeRequest { + + @ApiModelProperty(value = "学员id", dataType = "int", required = true) + private Integer stuId; + + @ApiModelProperty(value = "课包id", dataType = "int") + private Integer lessonId; + + @ApiModelProperty(value = "开始时间 格式:yyyy-MM", dataType = "string") + private String startTime; + + @ApiModelProperty(value = "结束时间 格式:yyyy-MM", dataType = "string") + private String endTime; + + @ApiModelProperty(value = "类型:1购买课包 2消费扣除 3报名赛事 4介绍有礼 5全部", dataType = "int") + private Integer type; +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/EvaluateStudentService.java b/cloud-server-account/src/main/java/com/dsh/account/service/EvaluateStudentService.java new file mode 100644 index 0000000..431a503 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/service/EvaluateStudentService.java @@ -0,0 +1,21 @@ +package com.dsh.account.service; + +import com.dsh.account.entity.EvaluateStudent; +import com.baomidou.mybatisplus.service.IService; +import com.dsh.account.model.vo.commentDetail.StuCommentsVo; + +import java.util.List; + +/** + * <p> + * 评价学员记录 服务类 + * </p> + * + * @author jqs + * @since 2023-07-03 + */ +public interface EvaluateStudentService extends IService<EvaluateStudent> { + + List<StuCommentsVo> queryStuCommentsList(Integer stuId); + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java index 981ed67..e121355 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/TStudentService.java @@ -2,7 +2,19 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.account.entity.TStudent; +import com.dsh.account.feignclient.competition.model.PurchaseRecordVo; +import com.dsh.account.feignclient.other.model.SysNotice; +import com.dsh.account.model.vo.classDetails.classInsVo.ClassDetailsInsVo; import com.dsh.account.model.vo.classDetails.classInsVo.StuDetailsReq; +import com.dsh.account.model.vo.exploreDetail.ExploreDatasVo; +import com.dsh.account.model.vo.exploreDetail.LonLatRequest; +import com.dsh.account.model.vo.exploreDetails.QuestionDetailsVo; +import com.dsh.account.model.vo.exploreDetails.QuestionIns; +import com.dsh.account.model.vo.sourceDetail.CouponStuAvailableVo; +import com.dsh.account.model.vo.sourceDetail.CourseDetailsOfContinuationResp; +import com.dsh.account.model.vo.sourceDetail.RecordTimeRequest; + +import java.util.List; /** * <p> @@ -16,4 +28,39 @@ void addStuOfAppUser(StuDetailsReq stu,Integer appUserId); + ClassDetailsInsVo querySessionDetailsDt(Integer userIdFormRedis, Integer lessonId, Integer stuId); + + List<PurchaseRecordVo> queryDeduRecordDetails(RecordTimeRequest timeRequest,Integer appUserId); + + List<CouponStuAvailableVo> queryStuOfConponDetails(Integer appUserId); + + CourseDetailsOfContinuationResp queryStuOfCourseDetails(Integer lessonId, Integer stuId, Integer appUserId); + /** + * 查询探索-公告列表 + */ + List<SysNotice> querySystemNoticeDetails(); + /** + * 查询公告详情 + */ + SysNotice queryNoticeData(Integer noId); + /** + * 查询常见问题列表 + */ + QuestionDetailsVo queryQuestionData(); + + /** + * 查询常见问题详情 + */ + QuestionIns queryQuestionDataInfo(Integer quesId); + + /** + * 查询客服列表 + */ + List<String> queryCustomerDetails(); + + /** + * 查询探索页面首页 + */ + ExploreDatasVo queryIndexOfExplores(LonLatRequest llrequest); + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/EvaluateStudentServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/EvaluateStudentServiceImpl.java new file mode 100644 index 0000000..5d1b1d0 --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/EvaluateStudentServiceImpl.java @@ -0,0 +1,56 @@ +package com.dsh.account.service.impl; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.dsh.account.entity.EvaluateStudent; +import com.dsh.account.entity.TStudent; +import com.dsh.account.mapper.EvaluateStudentMapper; +import com.dsh.account.mapper.TStudentMapper; +import com.dsh.account.model.vo.commentDetail.StuCommentsVo; +import com.dsh.account.service.EvaluateStudentService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * <p> + * 评价学员记录 服务实现类 + * </p> + * + * @author jqs + * @since 2023-07-03 + */ +@Service +public class EvaluateStudentServiceImpl extends ServiceImpl<EvaluateStudentMapper, EvaluateStudent> implements EvaluateStudentService { + + @Autowired + private TStudentMapper tstuMapper; + + private final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + + @Override + public List<StuCommentsVo> queryStuCommentsList(Integer stuId) { + List<StuCommentsVo> stuCommentsVos = new ArrayList<>(); + TStudent tStudent = tstuMapper.selectById(stuId); + List<EvaluateStudent> evaluateStudents = this.baseMapper.selectList(new EntityWrapper<EvaluateStudent>() + .eq("studentId",stuId )); + if (evaluateStudents.size() > 0){ + for (EvaluateStudent evaluateStudent : evaluateStudents) { + StuCommentsVo vo = new StuCommentsVo(); + vo.setHeadImg(tStudent.getHeadImg()); + vo.setStuName(tStudent.getName()); + vo.setComTime(format.format(tStudent.getInsertTime())); + vo.setContents(evaluateStudent.getContent()); + String imgs = evaluateStudent.getImgs(); + String[] split = imgs.split(","); + vo.setImgs(Arrays.asList(split)); + stuCommentsVos.add(vo); + } + } + return stuCommentsVos; + } +} 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 6bb7506..0f0c56f 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 @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.account.entity.TAppUser; import com.dsh.account.entity.TStudent; -import com.dsh.account.enums.WeeksEnum; import com.dsh.account.feignclient.course.CoursePaymentClient; import com.dsh.account.feignclient.course.model.CourseOfStoreVo; import com.dsh.account.feignclient.course.model.QueryStoreList; @@ -30,6 +29,7 @@ import com.dsh.account.util.akeylogin.Md5Util; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; import javax.annotation.Resource; import java.util.ArrayList; @@ -88,6 +88,7 @@ .eq("isDefault",1)); if (tStudents.size() > 0 ){ TStudent tStudent = tStudents.get(0); + classInfoVo.setStuId(tStudent.getId()); classInfoVo.setIsThere(1); classInfoVo.setStuImg(tStudent.getHeadImg()); classInfoVo.setStuSex(tStudent.getSex()); @@ -147,21 +148,11 @@ * @param latitude * @return */ - public List<WeekedCourse> dealDatas(List<CourseOfStoreVo> storeOfCourses,String longitude ,String latitude){ + public List<WeekedCourse> dealDatas(List<CourseOfStoreVo> storeOfCourses,String longitude ,@RequestBody String latitude){ List<WeekedCourse> weekedCourses = new ArrayList<>(); - int weekStr = LocalDateTimeUtils.getWeekStr(); for (int i = 1; i < 8; i++) { WeekedCourse weekedCourse = new WeekedCourse(); - weekedCourse.setWeekNum(i); - weekedCourse.setWeekStr(WeeksEnum.getStr(i)); - String weekOfDays = LocalDateTimeUtils.getWeekOfDays(i); - weekedCourse.setDayStr(weekOfDays); List<CourseVenue> courseVenues = new ArrayList<>(); - if (weekStr == i) { - weekedCourse.setIsToday(1); - } else { - weekedCourse.setIsToday(2); - } Map<Integer, List<CourseOfStoreVo>> map = storeOfCourses.stream().collect(Collectors.groupingBy(CourseOfStoreVo::getStoreId)); for (Map.Entry<Integer, List<CourseOfStoreVo>> integerListEntry : map.entrySet()) { List<CourseOfStoreVo> value = integerListEntry.getValue(); 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 bd7438f..dc7cee2 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 @@ -1,15 +1,49 @@ package com.dsh.account.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.account.entity.TAppUser; import com.dsh.account.entity.TStudent; +import com.dsh.account.feignclient.activity.IntroduceRewardsClient; +import com.dsh.account.feignclient.activity.UserConponClient; +import com.dsh.account.feignclient.competition.DeductionCompetitionsClient; +import com.dsh.account.feignclient.competition.model.PurchaseRecordVo; +import com.dsh.account.feignclient.course.CancelListClient; +import com.dsh.account.feignclient.course.CoursePaymentClient; +import com.dsh.account.feignclient.course.CourseRecordClient; +import com.dsh.account.feignclient.course.CourseSessionNameClient; +import com.dsh.account.feignclient.course.model.StuSessionDetailsVo; +import com.dsh.account.feignclient.course.model.StuWithCoursesListVo; +import com.dsh.account.feignclient.course.model.StudentOfCourseVo; +import com.dsh.account.feignclient.other.NoticeClient; +import com.dsh.account.feignclient.other.QuestionClient; +import com.dsh.account.feignclient.other.StoreClient; +import com.dsh.account.feignclient.other.model.StoreDetailOfCourse; +import com.dsh.account.feignclient.other.model.StoreInfo; +import com.dsh.account.feignclient.other.model.StoreLonLatList; +import com.dsh.account.feignclient.other.model.SysNotice; +import com.dsh.account.mapper.TAppUserMapper; import com.dsh.account.mapper.TStudentMapper; +import com.dsh.account.model.vo.classDetails.classInsVo.ClassDetailsInsVo; import com.dsh.account.model.vo.classDetails.classInsVo.StuDetailsReq; +import com.dsh.account.model.vo.exploreDetail.ExploreDatasVo; +import com.dsh.account.model.vo.exploreDetail.LonLatRequest; +import com.dsh.account.model.vo.exploreDetails.QuestionDetailsVo; +import com.dsh.account.model.vo.exploreDetails.QuestionIns; +import com.dsh.account.model.vo.sourceDetail.CouponStuAvailableVo; +import com.dsh.account.model.vo.sourceDetail.CourseDetailsOfContinuationResp; +import com.dsh.account.model.vo.sourceDetail.RecordTimeRequest; import com.dsh.account.service.TStudentService; - +import com.dsh.account.util.DateTimeHelper; +import com.dsh.account.util.ToolUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; -import java.util.Date; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; /** * <p> @@ -22,15 +56,48 @@ @Service public class TStudentServiceImpl extends ServiceImpl<TStudentMapper, TStudent> implements TStudentService { + @Autowired + private CourseSessionNameClient sessionNameClient; + + @Autowired + private DeductionCompetitionsClient dcttClient; + + @Autowired + private CancelListClient cancelcClient; + + @Autowired + private IntroduceRewardsClient idrClient; + + @Autowired + private CourseRecordClient crClient; + + @Autowired + private CoursePaymentClient couPayClient; + + @Autowired + private UserConponClient userCClient; + + @Autowired + private StoreClient storeClient; + + @Autowired + private NoticeClient noClient; + + @Autowired + private QuestionClient quesClient; + + @Autowired + private TAppUserMapper tauMapper; + @Override public void addStuOfAppUser(StuDetailsReq stu,Integer appUserId) { TStudent student = new TStudent(); student.setAppUserId(appUserId); student.setName(stu.getName()); student.setHeadImg(stu.getHeadImg()); - student.setPhone(stu.getPhone()); + student.setPhone(ToolUtil.isNotEmpty(stu.getPhone()) ? stu.getPhone() : ""); student.setSex(stu.getSex()); - student.setIdCard(stu.getIdCard()); + student.setIdCard(ToolUtil.isNotEmpty(stu.getIdCard())?stu.getIdCard() : ""); student.setBirthday(new Date(stu.getBirthday())); student.setHeight(stu.getHeight()); student.setWeight(stu.getWeight()); @@ -42,4 +109,141 @@ student.setState(1); this.baseMapper.insert(student); } + + @Override + public ClassDetailsInsVo querySessionDetailsDt(Integer userIdFormRedis, Integer lessonId, Integer stuId) { + ClassDetailsInsVo insVo = new ClassDetailsInsVo(); + Date localMonthStart = DateTimeHelper.getCurrentMouthStart(); + Date localMonthEnd = DateTimeHelper.getCurrentMouthEnd(); + List<StuSessionDetailsVo> stuSessionList = sessionNameClient.getStuSessionList(localMonthStart,localMonthEnd,stuId,userIdFormRedis); + TStudent tStudent = this.baseMapper.selectById(stuId); + if (ToolUtil.isNotEmpty(tStudent)){ + insVo.setStuId(tStudent.getId()); + insVo.setStuName(tStudent.getName()); + insVo.setStuImage(tStudent.getHeadImg()); + + List<PurchaseRecordVo> purchaseRecordVoList = new ArrayList<>(); + + List<PurchaseRecordVo> stuSourseList = dcttClient.getStuSourseList(localMonthStart,localMonthEnd,userIdFormRedis); + purchaseRecordVoList.addAll(stuSourseList); + List<PurchaseRecordVo> cancelCourseList = cancelcClient.getCancelCourseList(localMonthStart,localMonthEnd,stuId,userIdFormRedis); + purchaseRecordVoList.addAll(cancelCourseList); + List<PurchaseRecordVo> purchaseRecordVos = sessionNameClient.queryCourseDetails(localMonthStart,localMonthEnd,stuId,userIdFormRedis); + purchaseRecordVoList.addAll(purchaseRecordVos); + List<TAppUser> tAppUsers = tauMapper.selectList(new QueryWrapper<TAppUser>() + .eq("referralUserId",userIdFormRedis ) + .between("insertTime",localMonthStart ,localMonthEnd)); + List<Integer> userIds = tAppUsers.stream().map(TAppUser::getId).collect(Collectors.toList()); + List<PurchaseRecordVo> purchaseRecordVos1 = idrClient.queryAppUsersofIntroduce(localMonthStart, localMonthEnd, userIds); + purchaseRecordVoList.addAll(purchaseRecordVos1); + insVo.setSessionNames(stuSessionList); + insVo.setDetails(dealDataOfTime(purchaseRecordVoList)); + StuWithCoursesListVo stuOfCoursesDetails = couPayClient.getStuOfCoursesDetails(stuId, userIdFormRedis); + insVo.setTotalNums(stuOfCoursesDetails.getTotalNums()); + insVo.setDeductedNums(stuOfCoursesDetails.getDeductedNums()); + insVo.setRemainingNums(stuOfCoursesDetails.getRemainingNums()); + Integer deductionClassHour = crClient.getDeductionClassHour(lessonId, stuId, userIdFormRedis); + insVo.setDeductionClassHours(deductionClassHour); + } + + return insVo; + } + + @Override + public List<PurchaseRecordVo> queryDeduRecordDetails(RecordTimeRequest timeRequest,Integer appUserId) { + List<PurchaseRecordVo> purchaseRecordVoList = new ArrayList<>(); + Date startTime = DateTimeHelper.getCurrentIdetMouthStart(timeRequest.getStartTime()); + Date endTime = DateTimeHelper.getCurrentIdeaMouthEnd(timeRequest.getEndTime()); + + List<PurchaseRecordVo> stuSourseList = dcttClient.getStuSourseList(startTime,endTime,appUserId); + purchaseRecordVoList.addAll(stuSourseList); + List<PurchaseRecordVo> cancelCourseList = cancelcClient.getCancelCourseList(startTime,endTime,timeRequest.getStuId(),appUserId); + purchaseRecordVoList.addAll(cancelCourseList); + List<PurchaseRecordVo> purchaseRecordVos = sessionNameClient.queryCourseDetails(startTime,endTime,timeRequest.getStuId(),appUserId); + purchaseRecordVoList.addAll(purchaseRecordVos); + List<TAppUser> tAppUsers = tauMapper.selectList(new QueryWrapper<TAppUser>() + .eq("referralUserId",appUserId ) + .between("insertTime",timeRequest.getStartTime() ,timeRequest.getEndTime())); + List<Integer> userIds = tAppUsers.stream().map(TAppUser::getId).collect(Collectors.toList()); + List<PurchaseRecordVo> purchaseRecordVos1 = idrClient.queryAppUsersofIntroduce(startTime, endTime, userIds); + purchaseRecordVoList.addAll(purchaseRecordVos1); + + purchaseRecordVoList = dealDataOfTime(purchaseRecordVoList); + return purchaseRecordVoList; + } + + @Override + public List<CouponStuAvailableVo> queryStuOfConponDetails(Integer appUserId) { + List<CouponStuAvailableVo> availableVos = new ArrayList<>(); + availableVos = userCClient.queryUserWithConponList(appUserId); + return availableVos; + } + + @Override + public CourseDetailsOfContinuationResp queryStuOfCourseDetails(Integer lessonId, Integer stuId, Integer appUserId) { + CourseDetailsOfContinuationResp resp = new CourseDetailsOfContinuationResp(); + + StudentOfCourseVo studentCourse = couPayClient.getStudentCourse(lessonId,stuId,appUserId); + + StoreDetailOfCourse courseOfStore = storeClient.getCourseOfStore(studentCourse.getStoreId()); + + return resp; + } + + @Override + public List<SysNotice> querySystemNoticeDetails() { + return noClient.getSysNoticeDetails(); + } + + @Override + public SysNotice queryNoticeData(Integer noId) { + return noClient.getSysNoticeBuId(noId); + } + + @Override + public QuestionDetailsVo queryQuestionData() { + return quesClient.getSysQuestionDetails(); + } + + @Override + public QuestionIns queryQuestionDataInfo(Integer quesId) { + return quesClient.getSysQuestionBuId(quesId); + } + + @Override + public List<String> queryCustomerDetails() { + return noClient.queryCustomerTel(); + } + + @Override + public ExploreDatasVo queryIndexOfExplores(LonLatRequest llrequest) { + ExploreDatasVo datasVo = new ExploreDatasVo(); + List<StoreInfo> allNearbyStoreList = storeClient.getAllNearbyStoreList(llrequest.getLongitude(),llrequest.getLatitude()); + List<StoreLonLatList> allStoreLonLats = storeClient.getAllStoreLonLats(llrequest.getLongitude(), llrequest.getLatitude()); + datasVo.setStoreLists(allNearbyStoreList); + datasVo.setLonLatLists(allStoreLonLats); + return datasVo; + } + + + public static List<PurchaseRecordVo> dealDataOfTime(List<PurchaseRecordVo> purchaseRecords) { + Collections.sort(purchaseRecords, new Comparator<PurchaseRecordVo>() { + @Override + public int compare(PurchaseRecordVo record1, PurchaseRecordVo record2) { + SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm"); + Date date1 = null; + Date date2 = null; + try { + date1 = dateFormat.parse(record1.getPurchaseTime()); + date2 = dateFormat.parse(record2.getPurchaseTime()); + } catch (ParseException e) { + e.printStackTrace(); + } + // 倒序排序 + return date2.compareTo(date1); + } + }); + return purchaseRecords; + } + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/DateTimeHelper.java b/cloud-server-account/src/main/java/com/dsh/account/util/DateTimeHelper.java index b77d912..03bb3d3 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/util/DateTimeHelper.java +++ b/cloud-server-account/src/main/java/com/dsh/account/util/DateTimeHelper.java @@ -2,9 +2,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.ZoneId; +import java.time.*; import java.util.*; @@ -1350,6 +1348,52 @@ } /** + * 获取指定月份开始时0点0分0秒 + * @param input 输入的时间,"yyyy-MM" + * @return + */ + public static Date getCurrentIdetMouthStart(String input) { + // 解析年月字符串 + YearMonth yearMonth = YearMonth.parse(input); + // 获取月份的开始时间(月初0点) + LocalDate startOfMonth = yearMonth.atDay(1); + LocalDateTime startDateTime = startOfMonth.atTime(LocalTime.MIN); + return Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant()); + } + + /** + * 获取当月结束时23点59分59秒 + * + * @return + */ + public static Date getCurrentMouthEnd() { + Date d = getSystemDate(); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(d); + int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); + calendar.set(Calendar.DAY_OF_MONTH, lastDay); + calendar.set(Calendar.HOUR_OF_DAY, 23); + calendar.set(Calendar.MINUTE, 59); + calendar.set(Calendar.SECOND, 59); + return calendar.getTime(); + } + + + /** + * 获取指定月份结束时23点59分59秒 + * @param input 输入的时间,"yyyy-MM" + * @return + */ + public static Date getCurrentIdeaMouthEnd(String input) { + // 解析年月字符串 + YearMonth yearMonth = YearMonth.parse(input); + // 获取月份的结束时间(月末23:59:59秒) + LocalDate endOfMonth = yearMonth.atEndOfMonth(); + LocalDateTime endDateTime = endOfMonth.atTime(23, 59, 59); + return Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant()); + } + + /** * 返回下月的这天 * * @param date diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/GDMapGeocodingUtil.java b/cloud-server-account/src/main/java/com/dsh/account/util/GDMapGeocodingUtil.java index 16d9bfb..a260b46 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/util/GDMapGeocodingUtil.java +++ b/cloud-server-account/src/main/java/com/dsh/account/util/GDMapGeocodingUtil.java @@ -8,6 +8,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -146,4 +153,90 @@ } return map; } + + + /** + * 功能描述: 根据两个定位点的经纬度算出两点间的距离(米/m) + * + * @param startLonLat 起始经纬度 + * @param endLonLat 结束经纬度(目标经纬度) + * @return java.lang.Long 两个定位点之间的距离 + */ + public Long getDistance(String startLonLat, String endLonLat) { + try { + // 返回起始地startAddr与目的地endAddr之间的距离,单位:米 + Long result = new Long(0); + String queryUrl = + "http://restapi.amap.com/v3/distance?key=" + key + "&origins=" + startLonLat + + "&destination=" + + endLonLat; + String queryResult = getResponse(queryUrl); + JSONObject job = JSONObject.parseObject(queryResult); + JSONArray ja = job.getJSONArray("results"); + JSONObject jobO = JSONObject.parseObject(ja.getString(0)); + result = Long.parseLong(jobO.get("distance").toString()); + return result; + } catch (Exception e) { + throw new RuntimeException(); + } + } + + + /** + * 功能描述: 根据两个定位点的经纬度算出两点间的距离(千米/km) + * + * @param startLonLat 起始经纬度 + * @param endLonLat 结束经纬度(目标经纬度) + * @return java.lang.Long 两个定位点之间的距离 + */ + public String getDistanceTOKilometer(String startLonLat, String endLonLat) { + try { + // 返回起始地startAddr与目的地endAddr之间的距离,单位:米 + Long result = new Long(0); + String queryUrl = + "http://restapi.amap.com/v3/distance?key=" + key + "&origins=" + startLonLat + + "&destination=" + + endLonLat; + String queryResult = getResponse(queryUrl); + JSONObject job = JSONObject.parseObject(queryResult); + JSONArray ja = job.getJSONArray("results"); + JSONObject jobO = JSONObject.parseObject(ja.getString(0)); + result = Long.parseLong(jobO.get("distance").toString()); + double kilDis = (double) result / 1000; + DecimalFormat decimalFormat = new DecimalFormat("#.00"); + return decimalFormat.format(kilDis); + } catch (Exception e) { + throw new RuntimeException(); + } + } + + /** + * 功能描述: 发送请求 + * + * @param serverUrl 请求地址 + * @return java.lang.String + * @author isymikasan + * @date 2022-01-26 09:15:01 + */ + private static String getResponse(String serverUrl) { + // 用JAVA发起http请求,并返回json格式的结果 + StringBuffer result = new StringBuffer(); + try { + URL url = new URL(serverUrl); + URLConnection conn = url.openConnection(); + BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); + String line; + while ((line = in.readLine()) != null) { + result.append(line); + } + in.close(); + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return result.toString(); + } + + } diff --git a/cloud-server-account/src/main/resources/mapper/EvaluateStudentMapper.xml b/cloud-server-account/src/main/resources/mapper/EvaluateStudentMapper.xml new file mode 100644 index 0000000..9730a83 --- /dev/null +++ b/cloud-server-account/src/main/resources/mapper/EvaluateStudentMapper.xml @@ -0,0 +1,5 @@ +<?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.account.mapper.EvaluateStudentMapper"> + +</mapper> 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 new file mode 100644 index 0000000..beaf70d --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/IntroduceRewardsController.java @@ -0,0 +1,46 @@ +package com.dsh.activity.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.dsh.activity.entity.IntroduceRewards; +import com.dsh.activity.feignclient.model.PurchaseRecordVo; +import com.dsh.activity.service.IntroduceRewardsService; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Api +@CrossOrigin +@RestController +@RequestMapping("") +public class IntroduceRewardsController { + + + @Autowired + private IntroduceRewardsService idrService; + + private final SimpleDateFormat mat = new SimpleDateFormat("MM-dd HH:mm"); + + + @PostMapping("/introduce/useOfRewards") + public List<PurchaseRecordVo> queryAppUsersofIntroduce(@RequestBody Date startTime, @RequestBody Date endTime, @RequestBody List<Integer> userIds){ + List<PurchaseRecordVo> recordVos = new ArrayList<>(); + List<IntroduceRewards> list = idrService.list(new QueryWrapper<IntroduceRewards>() + .ge("startTime",startTime) + .lt("endTime",endTime)); + IntroduceRewards introduceRewards = list.get(0); + userIds.forEach( userId -> { + PurchaseRecordVo recordVo = new PurchaseRecordVo(); + recordVo.setPurchaseAmount("+"+introduceRewards.getGiveClass()); + recordVo.setPurchaseType("介绍有礼"); + recordVos.add(recordVo); + } ); + return recordVos; + } + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserConponController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserConponController.java new file mode 100644 index 0000000..f988de1 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/UserConponController.java @@ -0,0 +1,73 @@ +package com.dsh.activity.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.dsh.activity.entity.Coupon; +import com.dsh.activity.entity.UserCoupon; +import com.dsh.activity.feignclient.model.CouponStuAvailableVo; +import com.dsh.activity.service.CouponService; +import com.dsh.activity.service.UserCouponService; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Api +@CrossOrigin +@RestController +@RequestMapping("") +public class UserConponController { + + @Autowired + private UserCouponService uconService; + + @Autowired + private CouponService cService; + + private final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM"); + + @PostMapping("/userConpon/getStuOfConpons") + public List<CouponStuAvailableVo> queryUserWithConponList(@RequestBody Integer appUserId){ + + List<CouponStuAvailableVo> availableVos = new ArrayList<>(); + + List<UserCoupon> list = uconService.list(new QueryWrapper<UserCoupon>() + .eq("userId", appUserId) + .eq("status",1)); + if (list.size() > 0){ + List<Integer> collect = list.stream().map(UserCoupon::getCouponId).collect(Collectors.toList()); + List<Coupon> conponList = cService.list(new QueryWrapper<Coupon>() + .in("id", collect)); + for (Coupon coupon : conponList) { + CouponStuAvailableVo availableVo = new CouponStuAvailableVo(); + availableVo.setConponId(coupon.getId()); + availableVo.setConponName(coupon.getName()); + availableVo.setConponType(coupon.getType()); + Map<String,Object> conponRuleMap = cService.queryConponRuleOfJson(coupon.getId()); + switch (coupon.getType()){ + case 1: + Object conditionalAmount = conponRuleMap.get("conditionalAmount"); + Object deductionAmount = conponRuleMap.get("deductionAmount"); + availableVo.setConditionalAmount((double) conditionalAmount); + availableVo.setAmount((double) deductionAmount); + break; + case 2: + Object amount = conponRuleMap.get("deductionAmount"); + availableVo.setAmount((double)amount); + break; + default: + break; + } + availableVo.setLifespan(format.format(coupon.getEndTime())); + availableVos.add(availableVo); + } + } + return availableVos; + } + + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java index d25f545..3f00b17 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java @@ -1,21 +1,33 @@ package com.dsh.activity.entity; import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; 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.math.BigDecimal; import java.util.Date; /** + * <p> * 优惠券 - * @author zhibing.pu - * @date 2023/6/24 11:04 + * </p> + * + * @author jqs + * @since 2023-06-29 */ @Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) @TableName("t_coupon") -public class Coupon { +public class Coupon extends Model<Coupon> { + + private static final long serialVersionUID = 1L; + /** * 主键 */ @@ -24,121 +36,104 @@ /** * 优惠券名称 */ - @TableField("name") private String name; /** * 优惠券类型(1=满减券,2=代金券,3=体验券) */ - @TableField("type") private Integer type; /** * 优惠券规则JSON */ - @TableField("content") private String content; /** * 优惠券说明 */ - @TableField("illustrate") private String illustrate; /** * 发放方式(1=积分购买,2=注册赠送,3=自动发券) */ - @TableField("distributionMethod") private Integer distributionMethod; /** * 兑换方式(1=积分,2=积分+现金) */ - @TableField("redemptionMethod") private Integer redemptionMethod; /** * 所需现金 */ - @TableField("cash") - private Double cash; + private BigDecimal cash; /** - * 所需积分 + * 所属积分 */ - @TableField("integral") - private Integer integral; + private BigDecimal integral; /** * 用户人群(1=全部用户,2=年度会员,3=已有学员用户) */ - @TableField("userPopulation") private Integer userPopulation; /** * 发放数量 */ - @TableField("quantityIssued") private Integer quantityIssued; /** * 限领数量 */ - @TableField("pickUpQuantity") private Integer pickUpQuantity; /** * 开始时间 */ - @TableField("startTime") private Date startTime; /** * 结束时间 */ - @TableField("endTime") private Date endTime; /** * 使用范围(1=全国,2=指定城市,3=指定门店) */ - @TableField("useScope") private Integer useScope; /** * 省 */ - @TableField("province") - private Integer province; + private String province; /** * 省编号 */ - @TableField("provinceCode") private String provinceCode; /** * 市 */ - @TableField("city") private String city; /** * 市编号 */ - @TableField("cityCode") private String cityCode; /** * 审核状态(1=待审核,2=已通过,3=已拒绝) */ - @TableField("auditStatus") private Integer auditStatus; /** * 审核人id */ - @TableField("auditUserId") private Integer auditUserId; /** * 审核备注 */ - @TableField("auditRemark") private String auditRemark; /** * 状态(1=未开始,2=已开始,3=已结束,4=已取消) */ - @TableField("status") private Integer status; /** * 状态(1=正常,2=冻结,3=删除) */ - @TableField("state") private Integer state; /** * 添加时间 */ - @TableField("insertTime") private Date insertTime; + + + @Override + protected Serializable pkVal() { + return this.id; + } + } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/IntroduceRewards.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/IntroduceRewards.java new file mode 100644 index 0000000..3ba4756 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/IntroduceRewards.java @@ -0,0 +1,78 @@ +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-06-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_introduce_rewards") +public class IntroduceRewards extends Model<IntroduceRewards> { + + 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; + /** + * 开始时间 + */ + private Date startTime; + /** + * 结束时间 + */ + private Date endTime; + /** + * 赠送课时 + */ + private Integer giveClass; + /** + * 状态(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/JSONConpon.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/JSONConpon.java new file mode 100644 index 0000000..dced410 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/JSONConpon.java @@ -0,0 +1,43 @@ +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/entity/UserCoupon.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserCoupon.java new file mode 100644 index 0000000..110f152 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserCoupon.java @@ -0,0 +1,66 @@ +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-06-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_user_coupon") +public class UserCoupon extends Model<UserCoupon> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 优惠券id + */ + private Integer couponId; + /** + * 用户id + */ + private Integer userId; + /** + * 状态(1=待核销,2=已核销) + */ + private Integer status; + /** + * 核销人员id + */ + private Integer verificationUserId; + /** + * 核销时间 + */ + private Date verificationTime; + /** + * 领取时间 + */ + private Date insertTime; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java new file mode 100644 index 0000000..1bba930 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java @@ -0,0 +1,66 @@ +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-06-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_user_points_merchandise") +public class UserPointsMerchandise extends Model<UserPointsMerchandise> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 优惠券id + */ + private Integer pointsMerchandiseId; + /** + * 用户id + */ + private Integer userId; + /** + * 状态(1=待核销,2=已核销) + */ + private Integer status; + /** + * 核销人员id + */ + private Integer verificationUserId; + /** + * 核销时间 + */ + private Date verificationTime; + /** + * 领取时间 + */ + private Date insertTime; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/IntroduceRewardsClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/IntroduceRewardsClient.java new file mode 100644 index 0000000..7839017 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/IntroduceRewardsClient.java @@ -0,0 +1,20 @@ +package com.dsh.activity.feignclient; + + +import com.dsh.activity.feignclient.model.PurchaseRecordVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Date; +import java.util.List; + +@FeignClient(value = "mb-cloud-activity") +public interface IntroduceRewardsClient { + + @PostMapping("/introduce/useOfRewards") + public List<PurchaseRecordVo> queryAppUsersofIntroduce(@RequestBody Date startTime, + @RequestBody Date endTime, + @RequestBody List<Integer> userIds); + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java new file mode 100644 index 0000000..d200c9d --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/UserConponClient.java @@ -0,0 +1,17 @@ +package com.dsh.activity.feignclient; + +import com.dsh.activity.feignclient.model.CouponStuAvailableVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +@FeignClient(value = "mb-cloud-activity") +public interface UserConponClient { + + + @PostMapping("/userConpon/getStuOfConpons") + public List<CouponStuAvailableVo> queryUserWithConponList(@RequestBody Integer appUserId); + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponStuAvailableVo.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponStuAvailableVo.java new file mode 100644 index 0000000..a34074f --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/CouponStuAvailableVo.java @@ -0,0 +1,26 @@ +package com.dsh.activity.feignclient.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CouponStuAvailableVo { + + @ApiModelProperty(value = "券id") + private Integer conponId; + + @ApiModelProperty(value = "券名称") + private String conponName; + + @ApiModelProperty(value = "券类型 1满减券(取 条件金额+扣减金额) 2代金券(取 扣减金额)") + private Integer conponType; + + @ApiModelProperty(value = "条件金额") + private double conditionalAmount; + + @ApiModelProperty(value = "扣减金额") + private double amount; + + @ApiModelProperty(value = "有效期至 yyyy-MM-dd") + private String lifespan; +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/PurchaseRecordVo.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/PurchaseRecordVo.java new file mode 100644 index 0000000..dbc16e0 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/PurchaseRecordVo.java @@ -0,0 +1,23 @@ +package com.dsh.activity.feignclient.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 类型实体类: + * 类型:购买课包、消课、报名赛事、介绍有礼 + */ + +@Data +public class PurchaseRecordVo { + + @ApiModelProperty(value = "类型名称") + private String purchaseType; + + @ApiModelProperty(value = "类型变动时间 例如 06-29 10:48") + private String purchaseTime; + + @ApiModelProperty(value = "类型涉及金额 例如 +100 -50") + private String purchaseAmount; + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java index 518fb49..c2cb1f9 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java @@ -2,10 +2,20 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dsh.activity.entity.Coupon; +import org.apache.ibatis.annotations.Param; + +import java.util.Map; /** - * @author zhibing.pu - * @date 2023/6/24 11:22 + * <p> + * 优惠券 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-06-29 */ public interface CouponMapper extends BaseMapper<Coupon> { + + Map<String, Object> queryConponRuleOfJson(@Param("id") Integer id); + } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/IntroduceRewardsMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/IntroduceRewardsMapper.java new file mode 100644 index 0000000..6253a3f --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/IntroduceRewardsMapper.java @@ -0,0 +1,16 @@ +package com.dsh.activity.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.activity.entity.IntroduceRewards; + +/** + * <p> + * 介绍奖励 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-06-29 + */ +public interface IntroduceRewardsMapper extends BaseMapper<IntroduceRewards> { + +} 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 new file mode 100644 index 0000000..d70eed1 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java @@ -0,0 +1,16 @@ +package com.dsh.activity.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.activity.entity.UserCoupon; + +/** + * <p> + * 用户优惠券领取记录 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-06-29 + */ +public interface UserCouponMapper extends BaseMapper<UserCoupon> { + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java new file mode 100644 index 0000000..3b5bbf0 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java @@ -0,0 +1,16 @@ +package com.dsh.activity.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.activity.entity.UserPointsMerchandise; + +/** + * <p> + * 用户积分商品领取记录 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-06-29 + */ +public interface UserPointsMerchandiseMapper extends BaseMapper<UserPointsMerchandise> { + +} 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 new file mode 100644 index 0000000..edb6926 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/ConponJsonRuleModel.java @@ -0,0 +1,22 @@ +package com.dsh.activity.model; + +import lombok.Data; + + + +@Data +public class ConponJsonRuleModel { + /** + * 条件金额 + */ + double conditionalAmount; + /** + * 抵扣金额(代金券 取 该字段) + */ + double deductionAmount; + /** + * 体验券名称 + */ + String experienceName; + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/CouponService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/CouponService.java new file mode 100644 index 0000000..cb92505 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/CouponService.java @@ -0,0 +1,20 @@ +package com.dsh.activity.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.activity.entity.Coupon; + +import java.util.Map; + +/** + * <p> + * 优惠券 服务类 + * </p> + * + * @author jqs + * @since 2023-06-29 + */ +public interface CouponService extends IService<Coupon> { + + Map<String, Object> queryConponRuleOfJson(Integer id); + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/IntroduceRewardsService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/IntroduceRewardsService.java new file mode 100644 index 0000000..ec2e0e7 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/IntroduceRewardsService.java @@ -0,0 +1,16 @@ +package com.dsh.activity.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.activity.entity.IntroduceRewards; + +/** + * <p> + * 介绍奖励 服务类 + * </p> + * + * @author jqs + * @since 2023-06-29 + */ +public interface IntroduceRewardsService extends IService<IntroduceRewards> { + +} 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 new file mode 100644 index 0000000..6a21198 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java @@ -0,0 +1,16 @@ +package com.dsh.activity.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.activity.entity.UserCoupon; + +/** + * <p> + * 用户优惠券领取记录 服务类 + * </p> + * + * @author jqs + * @since 2023-06-29 + */ +public interface UserCouponService extends IService<UserCoupon> { + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java new file mode 100644 index 0000000..b8c2f1e --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java @@ -0,0 +1,16 @@ +package com.dsh.activity.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.activity.entity.UserPointsMerchandise; + +/** + * <p> + * 用户积分商品领取记录 服务类 + * </p> + * + * @author jqs + * @since 2023-06-29 + */ +public interface UserPointsMerchandiseService extends IService<UserPointsMerchandise> { + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java index 294b9ab..a61bebf 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java @@ -1,5 +1,6 @@ package com.dsh.activity.service.impl; + import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -12,13 +13,13 @@ import com.dsh.activity.mapper.CouponMapper; import com.dsh.activity.model.CouponListVo; import com.dsh.activity.service.ICouponService; -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; /** * @author zhibing.pu @@ -48,14 +49,14 @@ public List<CouponListVo> queryCouponList(Integer uid, Integer distributionMethod) throws Exception { AppUser appUser = appUserClient.queryAppUser(uid); List<CouponListVo> listVos = new ArrayList<>(); - if(null != appUser){ + if (null != appUser) { List<Integer> userPopulation = new ArrayList<>(); userPopulation.add(1);//全部用户 - if(1 == appUser.getIsVip()){ + if (1 == appUser.getIsVip()) { userPopulation.add(2);//年度会员 } List<Student> students = studentClient.queryStudentList(uid); - if(students.size() > 0){ + if (students.size() > 0) { userPopulation.add(3);//已有学员用户 } List<Coupon> list = this.list(new QueryWrapper<Coupon>().eq("distributionMethod", distributionMethod).in("userPopulation", userPopulation) @@ -69,17 +70,17 @@ couponListVo.setType(coupon.getType()); couponListVo.setEffectiveTime(sdf.format(coupon.getStartTime()) + "-" + sdf.format(coupon.getEndTime())); String content = coupon.getContent(); - if(coupon.getType() == 1){//满减{"num1":1,"num2":1} + if (coupon.getType() == 1) {//满减{"num1":1,"num2":1} JSONObject jsonObject = JSON.parseObject(content); couponListVo.setUseCondition("满" + jsonObject.getDouble("num1") + "元可用"); couponListVo.setFavorable(jsonObject.getDouble("num2") + "元"); } - if(coupon.getType() == 2){//满减{"num1":1} + if (coupon.getType() == 2) {//满减{"num1":1} JSONObject jsonObject = JSON.parseObject(content); couponListVo.setUseCondition(""); couponListVo.setFavorable(jsonObject.getDouble("num1") + "元"); } - if(coupon.getType() == 3){//体验券{"num1":1} + if (coupon.getType() == 3) {//体验券{"num1":1} JSONObject jsonObject = JSON.parseObject(content); couponListVo.setUseCondition(""); couponListVo.setFavorable(jsonObject.getString("num1")); @@ -89,4 +90,12 @@ } return listVos; } + + + + @Override + public Map<String, Object> queryConponRuleOfJson(Integer id) { + return this.baseMapper.queryConponRuleOfJson(id); + } + } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/IntroduceRewardsServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/IntroduceRewardsServiceImpl.java new file mode 100644 index 0000000..c5f53b7 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/IntroduceRewardsServiceImpl.java @@ -0,0 +1,20 @@ +package com.dsh.activity.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.activity.entity.IntroduceRewards; +import com.dsh.activity.mapper.IntroduceRewardsMapper; +import com.dsh.activity.service.IntroduceRewardsService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 介绍奖励 服务实现类 + * </p> + * + * @author jqs + * @since 2023-06-29 + */ +@Service +public class IntroduceRewardsServiceImpl extends ServiceImpl<IntroduceRewardsMapper, IntroduceRewards> implements IntroduceRewardsService { + +} 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 new file mode 100644 index 0000000..d646a5b --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java @@ -0,0 +1,20 @@ +package com.dsh.activity.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.activity.entity.UserCoupon; +import com.dsh.activity.mapper.UserCouponMapper; +import com.dsh.activity.service.UserCouponService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 用户优惠券领取记录 服务实现类 + * </p> + * + * @author jqs + * @since 2023-06-29 + */ +@Service +public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCoupon> implements UserCouponService { + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java new file mode 100644 index 0000000..c989bb4 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java @@ -0,0 +1,20 @@ +package com.dsh.activity.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.activity.entity.UserPointsMerchandise; +import com.dsh.activity.mapper.UserPointsMerchandiseMapper; +import com.dsh.activity.service.UserPointsMerchandiseService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 用户积分商品领取记录 服务实现类 + * </p> + * + * @author jqs + * @since 2023-06-29 + */ +@Service +public class UserPointsMerchandiseServiceImpl extends ServiceImpl<UserPointsMerchandiseMapper, UserPointsMerchandise> implements UserPointsMerchandiseService { + +} diff --git a/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml b/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml new file mode 100644 index 0000000..142c094 --- /dev/null +++ b/cloud-server-activity/src/main/resources/mapper/CouponMapper.xml @@ -0,0 +1,16 @@ +<?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.CouponMapper"> + + <select id="queryConponRuleOfJson" resultType="java.util.Map"> + SELECT JSON_EXTRACT(content, "$.conditionalAmount") as conditionalAmount, + JSON_EXTRACT(content, "$.deductionAmount") as deductionAmount, + JSON_EXTRACT(content, "$.experienceName") as experienceName + FROM t_coupon + where 1=1 + <if test="id != null"> + and `id` = #{id} + </if> + </select> + +</mapper> diff --git a/cloud-server-activity/src/main/resources/mapper/IntroduceRewardsMapper.xml b/cloud-server-activity/src/main/resources/mapper/IntroduceRewardsMapper.xml new file mode 100644 index 0000000..ebf8e17 --- /dev/null +++ b/cloud-server-activity/src/main/resources/mapper/IntroduceRewardsMapper.xml @@ -0,0 +1,8 @@ +<?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.IntroduceRewardsMapper"> + + <!-- 开启二级缓存 --> + <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/> + +</mapper> diff --git a/cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml b/cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml new file mode 100644 index 0000000..9a81eac --- /dev/null +++ b/cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml @@ -0,0 +1,8 @@ +<?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.UserCouponMapper"> + + <!-- 开启二级缓存 --> + <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/> + +</mapper> diff --git a/cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml b/cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml new file mode 100644 index 0000000..c42864e --- /dev/null +++ b/cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml @@ -0,0 +1,8 @@ +<?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.UserPointsMerchandiseMapper"> + + <!-- 开启二级缓存 --> + <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/> + +</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 new file mode 100644 index 0000000..b08c9ec --- /dev/null +++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java @@ -0,0 +1,65 @@ +package com.dsh.competition.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.dsh.competition.entity.Competition; +import com.dsh.competition.entity.UserCompetition; +import com.dsh.competition.feignclient.model.PurchaseRecordVo; +import com.dsh.competition.service.CompetitionService; +import com.dsh.competition.service.UserCompetitionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * <p> + * 前端控制器 + * </p> + * + * @author jqs + * @since 2023-06-26 + */ +@RestController +@RequestMapping("") +public class CompetitionController { + + + @Autowired + private CompetitionService cttService; + + @Autowired + private UserCompetitionService ucttService; + + private final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm"); + + @PostMapping("/competition/getCompetitionsDetails") + public List<PurchaseRecordVo> getStuSourseList(@RequestBody Date startTime, @RequestBody Date endTime,@RequestParam("appUserId") Integer appUserId){ + + List<PurchaseRecordVo> recordVos = new ArrayList<>(); + + List<Competition> list = cttService.list(new QueryWrapper<Competition>() + .eq("payType",3 ) + .eq("auditStatus",2)); + List<Integer> comIds = list.stream().map(Competition::getId).collect(Collectors.toList()); + List<UserCompetition> userCompetitions = ucttService.queryUsersCompetetions(startTime,endTime,appUserId,comIds); + if (userCompetitions.size() > 0){ + userCompetitions.forEach(coms ->{ + PurchaseRecordVo recordVo = new PurchaseRecordVo(); + recordVo.setPurchaseType("报名赛事"); + recordVo.setPurchaseTime(dateFormat.format(coms.getInsertTime())); + Competition competition = cttService.getById(coms.getCompetitionId()); + recordVo.setPurchaseAmount("-"+competition.getPrice()); + recordVos.add(recordVo); + }); + } + return recordVos; + } + + +} + diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/controller/UserCompetitionController.java b/cloud-server-competition/src/main/java/com/dsh/competition/controller/UserCompetitionController.java new file mode 100644 index 0000000..7039dd2 --- /dev/null +++ b/cloud-server-competition/src/main/java/com/dsh/competition/controller/UserCompetitionController.java @@ -0,0 +1,20 @@ +package com.dsh.competition.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 赛事报名记录 前端控制器 + * </p> + * + * @author jqs + * @since 2023-06-26 + */ +@RestController +@RequestMapping("/user_competition") +public class UserCompetitionController { + +} + diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/entity/Competition.java b/cloud-server-competition/src/main/java/com/dsh/competition/entity/Competition.java new file mode 100644 index 0000000..1fc29a0 --- /dev/null +++ b/cloud-server-competition/src/main/java/com/dsh/competition/entity/Competition.java @@ -0,0 +1,151 @@ +package com.dsh.competition.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.math.BigDecimal; +import java.util.Date; + +/** + * <p> + * + * </p> + * + * @author jqs + * @since 2023-06-26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_competition") +public class Competition extends Model<Competition> { + + 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 storeId; + /** + * 赛事名称 + */ + private String name; + /** + * 开始时间 + */ + private Date startTime; + /** + * 结束时间 + */ + private Date endTime; + /** + * 报名结束时间 + */ + private Date registerEndTime; + /** + * 报名条件(1=全部用户,2=仅限年度会员参与,3=仅限学员参与) + */ + private Integer registerCondition; + /** + * 报名开始年龄 + */ + private Integer startAge; + /** + * 报名结束年龄 + */ + private Integer endAge; + /** + * 支付方式(1=现金,2=玩湃币支付,3=课时支付) + */ + private Integer payType; + /** + * 支付金额 + */ + private BigDecimal price; + /** + * 参加地址 + */ + private String address; + /** + * 经度 + */ + private String longitude; + /** + * 纬度 + */ + private String latitude; + /** + * 报名人数 + */ + private Integer applicantsNumber; + /** + * 基础人数 + */ + private Integer baseNumber; + /** + * 是否需要实名(0=否,1=是) + */ + private Integer realName; + /** + * 赛事简介 + */ + private String introduction; + /** + * 审核状态(1=待审核,2=已通过,3=已拒绝) + */ + private Integer auditStatus; + /** + * 审核人id + */ + private Integer auditUserId; + /** + * 审核备注 + */ + private String auditRemark; + /** + * 状态(1=未开始,2=已开始,3=已结束,4=已取消) + */ + private Integer status; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + private Integer state; + /** + * 添加时间 + */ + private Date insertTime; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/entity/UserCompetition.java b/cloud-server-competition/src/main/java/com/dsh/competition/entity/UserCompetition.java new file mode 100644 index 0000000..c80a11a --- /dev/null +++ b/cloud-server-competition/src/main/java/com/dsh/competition/entity/UserCompetition.java @@ -0,0 +1,58 @@ +package com.dsh.competition.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * <p> + * 赛事报名记录 + * </p> + * + * @author jqs + * @since 2023-06-26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_user_competition") +public class UserCompetition extends Model<UserCompetition> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 赛事id + */ + private Integer competitionId; + /** + * 用户id + */ + private Integer userId; + /** + * 状态(1=正常,2=取消) + */ + private Integer status; + /** + * 参加时间 + */ + private Date insertTime; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java new file mode 100644 index 0000000..3a92b86 --- /dev/null +++ b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java @@ -0,0 +1,21 @@ +package com.dsh.competition.feignclient; + + +import com.dsh.competition.feignclient.model.PurchaseRecordVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.Date; +import java.util.List; + +@FeignClient(value = "mb-cloud-competition") +public interface DeductionCompetitionsClient { + + @PostMapping("/competition/getCompetitionsDetails") + public List<PurchaseRecordVo> getStuSourseList(@RequestBody Date startTime, + @RequestBody Date endTime, + @RequestParam("appUserId") Integer appUserId); + +} diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/ClassDataDetails.java b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/ClassDataDetails.java new file mode 100644 index 0000000..dc6e069 --- /dev/null +++ b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/ClassDataDetails.java @@ -0,0 +1,17 @@ +package com.dsh.competition.feignclient.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +@Data +public class ClassDataDetails { + + @ApiModelProperty(value = "已扣课时数") + private Integer deductionClassHours; + + @ApiModelProperty(value = "类型变动记录") + private List<PurchaseRecordVo> recordVos; +} diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/PurchaseRecordVo.java b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/PurchaseRecordVo.java new file mode 100644 index 0000000..af0e9b8 --- /dev/null +++ b/cloud-server-competition/src/main/java/com/dsh/competition/feignclient/model/PurchaseRecordVo.java @@ -0,0 +1,23 @@ +package com.dsh.competition.feignclient.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 类型实体类: + * 类型:购买课包、消课、报名赛事、介绍有礼 + */ + +@Data +public class PurchaseRecordVo { + + @ApiModelProperty(value = "类型名称") + private String purchaseType; + + @ApiModelProperty(value = "类型变动时间") + private String purchaseTime; + + @ApiModelProperty(value = "类型涉及金额") + private String purchaseAmount; + +} diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/mapper/CompetitionMapper.java b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/CompetitionMapper.java new file mode 100644 index 0000000..851cb69 --- /dev/null +++ b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/CompetitionMapper.java @@ -0,0 +1,16 @@ +package com.dsh.competition.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.competition.entity.Competition; + +/** + * <p> + * Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-06-26 + */ +public interface CompetitionMapper extends BaseMapper<Competition> { + +} 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 new file mode 100644 index 0000000..f499608 --- /dev/null +++ b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java @@ -0,0 +1,26 @@ +package com.dsh.competition.mapper; + +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> + * 赛事报名记录 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-06-26 + */ +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/CompetitionService.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/CompetitionService.java new file mode 100644 index 0000000..5f12a48 --- /dev/null +++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/CompetitionService.java @@ -0,0 +1,16 @@ +package com.dsh.competition.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.competition.entity.Competition; + +/** + * <p> + * 服务类 + * </p> + * + * @author jqs + * @since 2023-06-26 + */ +public interface CompetitionService extends IService<Competition> { + +} 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 new file mode 100644 index 0000000..b4fcdb5 --- /dev/null +++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.java @@ -0,0 +1,22 @@ +package com.dsh.competition.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.competition.entity.UserCompetition; + +import java.util.Date; +import java.util.List; + +/** + * <p> + * 赛事报名记录 服务类 + * </p> + * + * @author jqs + * @since 2023-06-26 + */ +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/CompetitionServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java new file mode 100644 index 0000000..a7ccc96 --- /dev/null +++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java @@ -0,0 +1,20 @@ +package com.dsh.competition.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.competition.entity.Competition; +import com.dsh.competition.mapper.CompetitionMapper; +import com.dsh.competition.service.CompetitionService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 服务实现类 + * </p> + * + * @author jqs + * @since 2023-06-26 + */ +@Service +public class CompetitionServiceImpl extends ServiceImpl<CompetitionMapper, Competition> implements CompetitionService { + +} 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 new file mode 100644 index 0000000..8fd1b12 --- /dev/null +++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java @@ -0,0 +1,28 @@ +package com.dsh.competition.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.competition.entity.UserCompetition; +import com.dsh.competition.mapper.UserCompetitionMapper; +import com.dsh.competition.service.UserCompetitionService; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * <p> + * 赛事报名记录 服务实现类 + * </p> + * + * @author jqs + * @since 2023-06-26 + */ +@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/CompetitionMapper.xml b/cloud-server-competition/src/main/resources/mapper/CompetitionMapper.xml new file mode 100644 index 0000000..0a11da1 --- /dev/null +++ b/cloud-server-competition/src/main/resources/mapper/CompetitionMapper.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.competition.mapper.CompetitionMapper"> + + +</mapper> diff --git a/cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml b/cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml new file mode 100644 index 0000000..93a7fcc --- /dev/null +++ b/cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml @@ -0,0 +1,38 @@ +<?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.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 new file mode 100644 index 0000000..de4fec9 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java @@ -0,0 +1,66 @@ +package com.dsh.course.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.dsh.course.entity.CancelledClasses; +import com.dsh.course.entity.TCoursePackagePayment; +import com.dsh.course.feignclient.model.PurchaseRecordVo; +import com.dsh.course.service.CancelledClassesService; +import com.dsh.course.service.TCoursePackagePaymentService; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@Api +@CrossOrigin +@RestController +@RequestMapping("") +public class CancelSourceController { + + + @Autowired + private CancelledClassesService caceService; + + + @Autowired + private TCoursePackagePaymentService tcppService; + + private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm"); + + + /** + * 获取课包对应的消费记录 + * @param stuId 学员id + * @param appUserId 用户id + * @return + */ + @PostMapping("/cancelSource/cancelList") + public List<PurchaseRecordVo> getCancelCourseList(@RequestBody Date startTime,@RequestBody Date endTime,@RequestBody Integer stuId,@RequestBody Integer appUserId){ + List<PurchaseRecordVo> purchaseRecordVos = new ArrayList<>(); + + List<TCoursePackagePayment> tCoursePackagePayments = tcppService.queryAllCoursePackage(startTime,endTime,null,stuId, appUserId); + List<Integer> coursePackageIds = tCoursePackagePayments.stream().map(TCoursePackagePayment::getId).collect(Collectors.toList()); + + List<CancelledClasses> list = caceService.list(new QueryWrapper<CancelledClasses>() + .in("coursePackageId", coursePackageIds) + .between("insertTime",startTime,endTime)); + if (list.size() > 0){ + list.forEach( canse -> { + PurchaseRecordVo purchaseRecordVo = new PurchaseRecordVo(); + purchaseRecordVo.setPurchaseTime(format.format(canse.getInsertTime())); + purchaseRecordVo.setPurchaseType(""); + purchaseRecordVo.setPurchaseAmount("-"+canse.getCancelledClassesNumber()); + purchaseRecordVos.add(purchaseRecordVo); + }); + } + return purchaseRecordVos; + } + + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java index 076c79f..1953673 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java @@ -52,7 +52,7 @@ @PostMapping("/course/queryList") - public List<ExerciseVideo> queryStuCourseAfterVideos(List<Integer> courseIds){ + public List<ExerciseVideo> queryStuCourseAfterVideos(@RequestBody List<Integer> courseIds){ List<ExerciseVideo> videos = new ArrayList<>(); List<TCourse> list = courseService.list(new QueryWrapper<TCourse>() .in("id", courseIds) 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 d5fb9e5..ab7af9d 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java @@ -1,20 +1,26 @@ package com.dsh.course.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.course.entity.TCoursePackage; import com.dsh.course.entity.TCoursePackagePayment; -import com.dsh.course.feignclient.model.CourseOfStoreVo; -import com.dsh.course.feignclient.model.StuCourseResp; +import com.dsh.course.feignclient.model.*; import com.dsh.course.service.TCoursePackagePaymentService; import com.dsh.course.service.TCoursePackageService; +import com.dsh.course.util.DateUtil; +import com.dsh.course.util.StrUtils; import io.swagger.annotations.Api; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.stream.Collectors; @Api @CrossOrigin @@ -31,15 +37,17 @@ @Autowired private TCoursePackageService tcpService; + private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm"); + /** * 获取 没有学员信息的图片配置 * @param stuId 学员id * @return 课包列表 */ @PostMapping("/coursePack/queryPayment") - public List<StuCourseResp> getStuCoursePackagePayment(@RequestBody Integer stuId){ + public List<StuCourseResp> getStuCoursePackagePayment(@RequestBody Integer stuId,@RequestBody Integer appUserId){ List<StuCourseResp> resps = new ArrayList<>(); - List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(stuId); + List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(null,null,null,stuId,appUserId); if (byUserId.size() > 0 ){ for (TCoursePackagePayment tCoursePackagePayment : byUserId) { TCoursePackage tCoursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId()); @@ -76,4 +84,151 @@ return tcpService.queryStoreOfCourse(); } + + /** + * + * 课程名称列表 + */ + @PostMapping("/coursePack/sessionNames") + public List<StuSessionDetailsVo> getStuSessionList(@RequestBody Date startTime, @RequestBody Date endTime, @RequestBody Integer stuId, @RequestBody Integer appUserId){ + List<StuSessionDetailsVo> detailsVos = new ArrayList<>(); + List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(startTime,endTime,null,stuId,appUserId); + if (byUserId.size() > 0){ + List<Integer> collect = byUserId.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList()); + List<TCoursePackage> list = tcpService.list(new QueryWrapper<TCoursePackage>() + .in("id", collect)); + list.forEach(vo -> { + StuSessionDetailsVo detVo = new StuSessionDetailsVo(); + detVo.setSessionid(vo.getId()); + detVo.setSessionName(vo.getName()); + String afterDayDate = DateUtil.getAfterDayDate2(vo.getInsertTime(),vo.getValidDays() + ""); + detVo.setPeriodOfValidity(afterDayDate); + detailsVos.add(detVo); + }); + } + return detailsVos; + } + + @PostMapping("/coursePack/paymentCourse") + public List<PurchaseRecordVo> queryCourseDetails(@RequestBody Date startTime, @RequestBody Date endTime,@RequestBody Integer stuId, @RequestBody Integer appUserId) { + List<PurchaseRecordVo> purchaseRecordVos = new ArrayList<>(); + List<TCoursePackagePayment> coursePackage = packagePaymentService.queryAllCoursePackage(startTime,endTime,null,stuId, appUserId); + if (coursePackage.size() > 0 ){ + coursePackage.forEach( cspackage -> { + PurchaseRecordVo recordVo = new PurchaseRecordVo(); + recordVo.setPurchaseAmount("+"+cspackage.getClassHours()); + recordVo.setPurchaseTime(format.format(cspackage.getInsertTime())); + recordVo.setPurchaseType("购买课包"); + purchaseRecordVos.add(recordVo); + }); + } + return purchaseRecordVos; + } + + + + @PostMapping("/coursePack/stuOfCourses") + public StuWithCoursesListVo getStuOfCoursesDetails(@RequestBody Integer stuId, @RequestBody Integer appUserId){ + StuWithCoursesListVo lisco = new StuWithCoursesListVo(); + Integer totalNu = 0; + Integer dedutNu = 0; + Integer remainNu = 0; + List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(null,null,null,stuId,appUserId); + if (byUserId.size() > 0 ){ + for (TCoursePackagePayment tCoursePackagePayment : byUserId) { + totalNu = totalNu + tCoursePackagePayment.getTotalClassHours(); + dedutNu = dedutNu + tCoursePackagePayment.getLaveClassHours(); + remainNu = remainNu + (tCoursePackagePayment.getTotalClassHours()-tCoursePackagePayment.getLaveClassHours()); + } + lisco.setTotalNums(totalNu); + lisco.setDeductedNums(remainNu); + lisco.setRemainingNums(dedutNu); + } + return lisco; + } + + + + @PostMapping("/coursePack/continuingCourse") + public StudentOfCourseVo getStudentCourse(@RequestBody Integer courseId,@RequestBody Integer stuId,@RequestBody Integer appUserId){ + StudentOfCourseVo courseVo = new StudentOfCourseVo(); + List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.queryAllCoursePackage(null,null,courseId,stuId,appUserId); + if (tCoursePackagePayments.size() > 0 ){ + + List<CourseHoursType> typeList = new ArrayList<>(); + tCoursePackagePayments.forEach(cou -> { + CourseHoursType hoursType = new CourseHoursType(); + hoursType.setCourseConfigId(cou.getId()); + hoursType.setCourseConfigId(cou.getClassHours()); + typeList.add(hoursType); + }); + TCoursePackagePayment tCoursePackagePayment = tCoursePackagePayments.get(0); + courseVo.setCoursePackageId(tCoursePackagePayment.getCoursePackageId()); + courseVo.setTypeList(typeList); + + TCoursePackage coursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId()); + courseVo.setPackageImg(coursePackage.getCoverDrawing()); + courseVo.setCourseName(coursePackage.getName()); + courseVo.setCoachId(coursePackage.getCoachId()); + String classWeeks = coursePackage.getClassWeeks(); + List<Integer> integers = StrUtils.dealStrToList(classWeeks); + if (integers.size() > 0){ + StringBuilder courWeeks = new StringBuilder("每"); + for (Integer integer : integers) { + switch (integer){ + case 1: + courWeeks.append("周一、"); + break; + case 2: + courWeeks.append("周二、"); + break; + case 3: + courWeeks.append("周三、"); + break; + case 4: + courWeeks.append("周四、"); + break; + case 5: + courWeeks.append("周五、"); + break; + case 6: + courWeeks.append("周六、"); + break; + case 7: + courWeeks.append("周末、"); + break; + default: + break; + } + } + if (courWeeks.length() > 0 && courWeeks.charAt(courWeeks.length() - 1) == ','){ + courWeeks.deleteCharAt(courWeeks.length() - 1); + } + courseVo.setCourseWeek(courWeeks.toString()); + } + + courseVo.setCourseTime(coursePackage.getClassStartTime()+"-"+coursePackage.getClassEndTime()); + // TODO: 2023/6/30 查询会员折扣数据 + String payType = tCoursePackagePayment.getPayType(); + BigDecimal cashPayment = tCoursePackagePayment.getCashPayment(); + double cashPaymentValue = cashPayment.doubleValue(); + Integer playPaiCoin = tCoursePackagePayment.getPlayPaiCoin(); + switch (payType) { + case "1;2": + courseVo.setAmount(cashPaymentValue); + courseVo.setWpGold(playPaiCoin); + break; + case "1": + courseVo.setAmount(cashPaymentValue); + break; + case "2": + courseVo.setWpGold(playPaiCoin); + break; + } + + courseVo.setStoreId(coursePackage.getStoreId()); + } + + return courseVo; + } } diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java new file mode 100644 index 0000000..5416653 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseRecordController.java @@ -0,0 +1,54 @@ +package com.dsh.course.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.dsh.course.entity.CancelledClasses; +import com.dsh.course.entity.CoursePackageStudent; +import com.dsh.course.entity.TCoursePackage; +import com.dsh.course.service.CancelledClassesService; +import com.dsh.course.service.CoursePackageStudentService; +import com.dsh.course.service.TCoursePackageService; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api +@CrossOrigin +@RestController +@RequestMapping("") +public class CourseRecordController { + + + @Autowired + private CoursePackageStudentService cosService; + + @Autowired + private TCoursePackageService tcpService; + + @Autowired + private CancelledClassesService caccService; + + + + @PostMapping("/courseRecord/queryDeduClassHours") + public Integer getDeductionClassHour(@RequestBody Integer courseId,@RequestBody Integer stuId,@RequestBody Integer appUserId){ + Integer sult = 0; + TCoursePackage coursePackage = tcpService.getById(courseId); + if (null != coursePackage && coursePackage.getStatus() == 3){ + List<CoursePackageStudent> coursePackageStudents = cosService.queryStuDeduClassHourNums(courseId, stuId, appUserId); + if (coursePackageStudents.size() > 0){ + List<CancelledClasses> list = caccService.list(new QueryWrapper<CancelledClasses>() + .eq("coursePackageId",courseId )); + if (list.size() > 0){ + for (CancelledClasses cancelledClasses : list) { + sult = sult + cancelledClasses.getCancelledClassesNumber(); + } + } + } + } + return sult; + } + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/CancelledClasses.java b/cloud-server-course/src/main/java/com/dsh/course/entity/CancelledClasses.java new file mode 100644 index 0000000..a5d4298 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/entity/CancelledClasses.java @@ -0,0 +1,58 @@ +package com.dsh.course.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * <p> + * 课包消课记录 + * </p> + * + * @author jqs + * @since 2023-06-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_cancelled_classes") +public class CancelledClasses extends Model<CancelledClasses> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 课包id + */ + private Integer coursePackageId; + /** + * 消课凭证 + */ + private String voucher; + /** + * 消课数量 + */ + private Integer cancelledClassesNumber; + /** + * 添加时间 + */ + private Date insertTime; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageStudent.java b/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageStudent.java new file mode 100644 index 0000000..d18a280 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/entity/CoursePackageStudent.java @@ -0,0 +1,67 @@ +package com.dsh.course.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * <p> + * 学员上课记录 + * </p> + * + * @author jqs + * @since 2023-06-30 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_course_package_student") +public class CoursePackageStudent extends Model<CoursePackageStudent> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 用户id + */ + private Integer appUserId; + /** + * 学员id + */ + private Integer studentId; + /** + * 课包id + */ + private Integer coursePackageId; + /** + * 课包购买记录id + */ + private Integer coursePackagePaymentId; + /** + * 到课状态(0=否,1=是) + */ + private Integer signInOrNot; + /** + * 预约状态(0=取消,1=预约) + */ + private Integer reservationStatus; + private Date insertTime; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/TCourse.java b/cloud-server-course/src/main/java/com/dsh/course/entity/TCourse.java index 2b85182..bad6bde 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/entity/TCourse.java +++ b/cloud-server-course/src/main/java/com/dsh/course/entity/TCourse.java @@ -1,9 +1,6 @@ package com.dsh.course.entity; -import java.util.Date; -import java.io.Serializable; - import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -11,6 +8,8 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import java.util.Date; + /** * <p> * 课程 diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackage.java b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackage.java index e1cc65b..7d160ea 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackage.java +++ b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackage.java @@ -1,15 +1,13 @@ package com.dsh.course.entity; -import java.util.Date; - -import java.io.Serializable; - import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; + +import java.util.Date; /** * <p> @@ -102,7 +100,7 @@ /** * 支付方式(1=现金,2=玩湃币) */ - private Integer payType; + private String payType; /** * 有效天数 */ diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java index 98e53c1..5fa4ee6 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java +++ b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java @@ -45,7 +45,7 @@ /** * 支付方式(1=现金,2=玩湃币) */ - private Integer payType; + private String payType; /** * 课时数 */ diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CancelListClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CancelListClient.java new file mode 100644 index 0000000..cb7ef3e --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CancelListClient.java @@ -0,0 +1,20 @@ +package com.dsh.course.feignclient; + +import com.dsh.course.feignclient.model.PurchaseRecordVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Date; +import java.util.List; + +@FeignClient(value = "mb-cloud-course") +public interface CancelListClient { + + @PostMapping("/cancelSource/cancelList") + public List<PurchaseRecordVo> getCancelCourseList(@RequestBody Date startTime, + @RequestBody Date endTime, + @RequestBody Integer stuId, + @RequestBody Integer appUserId); + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseListClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseListClient.java index 2111f68..aeadaab 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseListClient.java +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseListClient.java @@ -4,6 +4,7 @@ import com.dsh.course.feignclient.model.ExerciseVideo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @@ -11,5 +12,5 @@ public interface CourseListClient { @PostMapping("/course/queryList") - List<ExerciseVideo> queryStuCourseAfterVideos(List<Integer> courseIds); + List<ExerciseVideo> queryStuCourseAfterVideos(@RequestBody List<Integer> courseIds); } diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java index 4b4b9e6..cc51aa7 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java @@ -5,6 +5,7 @@ import com.dsh.course.feignclient.model.*; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @@ -17,4 +18,13 @@ @PostMapping("/coursePack/storeOfCourse") List<CourseOfStoreVo> getStoreOfCourses(); + + @PostMapping("/coursePack/stuOfCourses") + StuWithCoursesListVo getStuOfCoursesDetails(@RequestBody Integer stuId,@RequestBody Integer appUserId); + + @PostMapping("/coursePack/continuingCourse") + StudentOfCourseVo getStudentCourse(@RequestBody Integer courseId, + @RequestBody Integer stuId, + @RequestBody Integer appUserId); + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseRecordClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseRecordClient.java new file mode 100644 index 0000000..ef52a27 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseRecordClient.java @@ -0,0 +1,13 @@ +package com.dsh.course.feignclient; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient(value = "mb-cloud-course") +public interface CourseRecordClient { + + @PostMapping("/courseRecord/queryDeduClassHours") + public Integer getDeductionClassHour(@RequestBody Integer courseId, @RequestBody Integer stuId, @RequestBody Integer appUserId); + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseSessionNameClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseSessionNameClient.java new file mode 100644 index 0000000..8f71d73 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseSessionNameClient.java @@ -0,0 +1,30 @@ +package com.dsh.course.feignclient; + + +import com.dsh.course.feignclient.model.PurchaseRecordVo; +import com.dsh.course.feignclient.model.StuSessionDetailsVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.Date; +import java.util.List; + +@FeignClient(value = "mb-cloud-course") +public interface CourseSessionNameClient { + + + @PostMapping("/coursePack/sessionNames") + List<StuSessionDetailsVo> getStuSessionList(@RequestBody Date startTime, + @RequestBody Date endTime, + @RequestBody Integer stuId, + @RequestBody Integer appUserId); + + + @PostMapping("/coursePack/paymentCourse") + public List<PurchaseRecordVo> queryCourseDetails(@RequestBody Date startTime, + @RequestBody Date endTime, + @RequestBody Integer stuId, + @RequestBody Integer appUserId); + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/CourseHoursType.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/CourseHoursType.java new file mode 100644 index 0000000..3877b72 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/CourseHoursType.java @@ -0,0 +1,16 @@ +package com.dsh.course.feignclient.model; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CourseHoursType { + + @ApiModelProperty(value = "课时id") + private Integer courseConfigId; + + @ApiModelProperty(value = "课时数") + private Integer courseHourNums; + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PurchaseRecordVo.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PurchaseRecordVo.java new file mode 100644 index 0000000..6bcc31b --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PurchaseRecordVo.java @@ -0,0 +1,23 @@ +package com.dsh.course.feignclient.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 类型实体类: + * 类型:购买课包、消课、报名赛事、介绍有礼 + */ + +@Data +public class PurchaseRecordVo { + + @ApiModelProperty(value = "类型名称") + private String purchaseType; + + @ApiModelProperty(value = "类型变动时间") + private String purchaseTime; + + @ApiModelProperty(value = "类型涉及金额") + private String purchaseAmount; + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuSessionDetailsVo.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuSessionDetailsVo.java new file mode 100644 index 0000000..b342323 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuSessionDetailsVo.java @@ -0,0 +1,18 @@ +package com.dsh.course.feignclient.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class StuSessionDetailsVo { + + @ApiModelProperty(value = "课时id") + private Integer sessionid; + + @ApiModelProperty(value = "课时名称") + private String sessionName; + + @ApiModelProperty(value = "课时有效期") + private String periodOfValidity; + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuWithCoursesListVo.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuWithCoursesListVo.java new file mode 100644 index 0000000..15e619c --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StuWithCoursesListVo.java @@ -0,0 +1,19 @@ +package com.dsh.course.feignclient.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class StuWithCoursesListVo { + + @ApiModelProperty(value = "总学时数") + private Integer totalNums; + + @ApiModelProperty(value = "已扣学时数") + private Integer deductedNums; + + @ApiModelProperty(value = "剩余学时数") + private Integer remainingNums; + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StudentOfCourseVo.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StudentOfCourseVo.java new file mode 100644 index 0000000..49b7dbc --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/model/StudentOfCourseVo.java @@ -0,0 +1,45 @@ +package com.dsh.course.feignclient.model; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class StudentOfCourseVo { + + @ApiModelProperty(value = "课包id") + private Integer coursePackageId; + + @ApiModelProperty(value = "课包封面图") + private String packageImg; + + @ApiModelProperty(value = "课包名称") + private String courseName; + + @ApiModelProperty(value = "授课老师/教练") + private Integer coachId; + + @ApiModelProperty(value = "上课周 例如:每周二") + private String courseWeek; + + @ApiModelProperty(value = "上课时间:例如 14:00-16:00") + private String courseTime; + + @ApiModelProperty(value = "课时列表: 50 70 90") + private List<CourseHoursType> typeList; + + @ApiModelProperty(value = "支付价格") + private double amount; + + @ApiModelProperty(value = "会员价") + private double vipAmount; + + @ApiModelProperty(value = "玩湃币") + private Integer wpGold; + + @ApiModelProperty(value = "门店id") + private Integer storeId; + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/CancelledClassesMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/CancelledClassesMapper.java new file mode 100644 index 0000000..0b453c8 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/CancelledClassesMapper.java @@ -0,0 +1,16 @@ +package com.dsh.course.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.course.entity.CancelledClasses; + +/** + * <p> + * 课包消课记录 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-06-29 + */ +public interface CancelledClassesMapper extends BaseMapper<CancelledClasses> { + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java new file mode 100644 index 0000000..d686cf9 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackageStudentMapper.java @@ -0,0 +1,23 @@ +package com.dsh.course.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.course.entity.CoursePackageStudent; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * <p> + * 学员上课记录 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-06-30 + */ +public interface CoursePackageStudentMapper extends BaseMapper<CoursePackageStudent> { + + List<CoursePackageStudent> queryStuDeduClassHourNums(@Param("courseId") Integer courseId, + @Param("stuId") Integer stuId, + @Param("appUserId") Integer appUserId); + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java index 2fa876a..efea10f 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import java.util.Date; import java.util.List; /** @@ -16,7 +17,11 @@ */ public interface TCoursePackagePaymentMapper extends BaseMapper<TCoursePackagePayment> { - List<TCoursePackagePayment> queryAllCoursePackage(@Param("stuId") Integer stuId); + 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/service/CancelledClassesService.java b/cloud-server-course/src/main/java/com/dsh/course/service/CancelledClassesService.java new file mode 100644 index 0000000..c2c307c --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/service/CancelledClassesService.java @@ -0,0 +1,16 @@ +package com.dsh.course.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.course.entity.CancelledClasses; + +/** + * <p> + * 课包消课记录 服务类 + * </p> + * + * @author jqs + * @since 2023-06-29 + */ +public interface CancelledClassesService extends IService<CancelledClasses> { + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java b/cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java new file mode 100644 index 0000000..ba01211 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/service/CoursePackageStudentService.java @@ -0,0 +1,20 @@ +package com.dsh.course.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.course.entity.CoursePackageStudent; + +import java.util.List; + +/** + * <p> + * 学员上课记录 服务类 + * </p> + * + * @author jqs + * @since 2023-06-30 + */ +public interface CoursePackageStudentService extends IService<CoursePackageStudent> { + + List<CoursePackageStudent> queryStuDeduClassHourNums(Integer courseId, Integer stuId, Integer appUserId); + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java index aa12dce..db11bfd 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 @@ -1,8 +1,9 @@ package com.dsh.course.service; -import com.dsh.course.entity.TCoursePackagePayment; import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.course.entity.TCoursePackagePayment; +import java.util.Date; import java.util.List; /** @@ -15,7 +16,7 @@ */ public interface TCoursePackagePaymentService extends IService<TCoursePackagePayment> { - List<TCoursePackagePayment> queryAllCoursePackage(Integer stuId); + List<TCoursePackagePayment> queryAllCoursePackage(Date startTime, Date endTime ,Integer lessionId,Integer stuId, Integer appUserId); /** diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CancelledClassesServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CancelledClassesServiceImpl.java new file mode 100644 index 0000000..648abbc --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CancelledClassesServiceImpl.java @@ -0,0 +1,20 @@ +package com.dsh.course.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.course.entity.CancelledClasses; +import com.dsh.course.mapper.CancelledClassesMapper; +import com.dsh.course.service.CancelledClassesService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 课包消课记录 服务实现类 + * </p> + * + * @author jqs + * @since 2023-06-29 + */ +@Service +public class CancelledClassesServiceImpl extends ServiceImpl<CancelledClassesMapper, CancelledClasses> implements CancelledClassesService { + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java new file mode 100644 index 0000000..ba33ad3 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageStudentServiceImpl.java @@ -0,0 +1,26 @@ +package com.dsh.course.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.course.entity.CoursePackageStudent; +import com.dsh.course.mapper.CoursePackageStudentMapper; +import com.dsh.course.service.CoursePackageStudentService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * <p> + * 学员上课记录 服务实现类 + * </p> + * + * @author jqs + * @since 2023-06-30 + */ +@Service +public class CoursePackageStudentServiceImpl extends ServiceImpl<CoursePackageStudentMapper, CoursePackageStudent> implements CoursePackageStudentService { + + @Override + public List<CoursePackageStudent> queryStuDeduClassHourNums(Integer courseId, Integer stuId, Integer appUserId) { + return this.baseMapper.queryStuDeduClassHourNums(courseId,stuId,appUserId); + } +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java index c4cb6b7..f61dff9 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 @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; /** @@ -20,8 +21,8 @@ public class TCoursePackagePaymentServiceImpl extends ServiceImpl<TCoursePackagePaymentMapper, TCoursePackagePayment> implements TCoursePackagePaymentService { @Override - public List<TCoursePackagePayment> queryAllCoursePackage(Integer stuId) { - return this.baseMapper.queryAllCoursePackage(stuId); + public List<TCoursePackagePayment> queryAllCoursePackage(Date startTime, Date endTime , Integer coursePackId, Integer stuId, Integer appUserId) { + return this.baseMapper.queryAllCoursePackage(startTime,endTime,coursePackId,stuId,appUserId); } /** diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/DateUtil.java b/cloud-server-course/src/main/java/com/dsh/course/util/DateUtil.java index b4de802..b890d08 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/util/DateUtil.java +++ b/cloud-server-course/src/main/java/com/dsh/course/util/DateUtil.java @@ -237,6 +237,24 @@ return dateStr; } + + /** + * 得到n天之后的日期 + */ + public static String getAfterDayDate2(Date date,String days) { + int daysInt = Integer.parseInt(days); + + Calendar canlendar = Calendar.getInstance(); // java.util包 + canlendar.setTime(date); + canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动 + Date afterDate = canlendar.getTime(); + + SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd"); + String dateStr = sdfd.format(afterDate); + + return dateStr; + } + /** * 得到n天之后是周几 */ diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/StrUtils.java b/cloud-server-course/src/main/java/com/dsh/course/util/StrUtils.java index f6ba9f9..edd6cf6 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/util/StrUtils.java +++ b/cloud-server-course/src/main/java/com/dsh/course/util/StrUtils.java @@ -99,4 +99,17 @@ return sBuilder.toString(); } + public static List<Integer> dealStrToList(String str){ + List<Integer> list = new ArrayList<>(); + if (null == str || str == "" || str.isEmpty()){ + return list; + } + String[] strArray = str.split(";"); + for (String numStr : strArray) { + int num = Integer.parseInt(numStr); + list.add(num); + } + return list; + } + } diff --git a/cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml b/cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml new file mode 100644 index 0000000..14a46b0 --- /dev/null +++ b/cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml @@ -0,0 +1,5 @@ +<?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.CancelledClassesMapper"> + +</mapper> diff --git a/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml b/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml new file mode 100644 index 0000000..f9e2d0d --- /dev/null +++ b/cloud-server-course/src/main/resources/mapper/CoursePackageStudentMapper.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.dsh.course.mapper.CoursePackageStudentMapper"> + + + <select id="queryStuDeduClassHourNums" resultType="com.dsh.course.entity.CoursePackageStudent"> + SELECT * + FROM t_course_package_student + UNION ALL + SELECT * + FROM t_course_package_student1 + UNION ALL + SELECT * + FROM t_course_package_student2 + UNION ALL + SELECT * + FROM t_course_package_student3 + UNION ALL + SELECT * + FROM t_course_package_student4 + UNION ALL + SELECT * + FROM t_course_package_student5 + WHERE signInOrNot = 1 + <if test="courseId != null"> + and coursePackageId = #{courseId} + </if> + <if test="stuId != null "> + and studentId = #{stuId} + </if> + <if test="appUserId != null"> + and appUserId = #{appUserId} + </if> + </select> +</mapper> diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml index 9aee0a7..41486fa 100644 --- a/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml +++ b/cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml @@ -43,7 +43,19 @@ UNION ALL SELECT * FROM t_course_package_payment5 - WHERE user_id = #{stuId} + 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> diff --git a/cloud-server-other/pom.xml b/cloud-server-other/pom.xml index ea54735..61cd8a3 100644 --- a/cloud-server-other/pom.xml +++ b/cloud-server-other/pom.xml @@ -76,6 +76,12 @@ <version>1.5.22</version> </dependency> + <!-- http--> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + <version>4.5.13</version> + </dependency> <!-- mybatis generertor--> diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/AskedQuestionsController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/AskedQuestionsController.java new file mode 100644 index 0000000..ae9072a --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/controller/AskedQuestionsController.java @@ -0,0 +1,64 @@ +package com.dsh.other.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.dsh.other.entity.FrequentlyAskedQuestions; +import com.dsh.other.model.vo.questionVo.QuestionDetailsVo; +import com.dsh.other.model.vo.questionVo.QuestionIns; +import com.dsh.other.service.FrequentlyAskedQuestionsService; +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; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +@RestController +@RequestMapping("") +public class AskedQuestionsController { + + + @Autowired + private FrequentlyAskedQuestionsService faqService; + + + private final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + + + @PostMapping("/base/notice/queryQuestionDetails") + public QuestionDetailsVo getSysQuestionDetails(){ + QuestionDetailsVo notices = new QuestionDetailsVo(); + List<QuestionIns> sysS = new ArrayList<>(); + List<FrequentlyAskedQuestions> list = faqService.list(new QueryWrapper<FrequentlyAskedQuestions>() + .eq("state", 1) + .orderByDesc("insertTime")); + if (list.size() > 0 ){ + list.forEach(noList -> { + QuestionIns notice = new QuestionIns(); + notice.setQuesId(noList.getId()); + notice.setQuesTitle(noList.getContent()); + notice.setQuesContents(noList.getAnswer()); + sysS.add(notice); + }); + notices.setSysS(sysS); + } + return notices; + } + + + @PostMapping("/base/notice/queryQuestion") + public QuestionIns getSysQuestionBuId(@RequestBody Integer quesId){ + QuestionIns sysNotice = new QuestionIns(); + FrequentlyAskedQuestions notice = faqService.getById(quesId); + if (null != notice){ + sysNotice.setQuesId(notice.getId()); + sysNotice.setQuesTitle(notice.getContent()); + sysNotice.setQuesContents(notice.getAnswer()); + sysNotice.setQuesTime(format.format(notice.getInsertTime())); + } + return sysNotice; + } +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java index 6b51f47..5c19204 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java +++ b/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java @@ -1,9 +1,14 @@ package com.dsh.other.controller; + import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.other.entity.Store; +import com.dsh.other.feignclient.model.StoreDetailOfCourse; +import com.dsh.other.feignclient.model.StoreInfo; +import com.dsh.other.feignclient.model.StoreLonLatList; import com.dsh.other.model.BaseVo; import com.dsh.other.service.StoreService; +import com.dsh.other.util.GDMapGeocodingUtil; import com.dsh.other.util.ResultUtil; import com.dsh.other.util.ToolUtil; import io.swagger.annotations.ApiImplicitParam; @@ -12,21 +17,185 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.List; +import java.util.*; -/** - * @author zhibing.pu - * @date 2023/6/24 15:42 - */ @RestController -@RequestMapping("") +@RequestMapping("/base/protocol") public class StoreController { @Autowired private StoreService storeService; + @Autowired + private GDMapGeocodingUtil gdMapGeocodingUtil; + + + + + @PostMapping("/storeDetail/courseOfSto") + public StoreDetailOfCourse getCourseOfStore(@RequestBody Integer storeId){ + StoreDetailOfCourse ofCourse = new StoreDetailOfCourse(); + Store store = stoService.getById(storeId); + if (null != store){ + ofCourse.setStoreName(store.getName()); + ofCourse.setStoreAddr(store.getAddress()); + } + return ofCourse; + } + + @PostMapping("/storeDetail/nearbyStore") + public List<StoreInfo> getAllNearbyStoreList(@RequestBody String longitude,@RequestBody String latitude){ + String current = longitude+","+latitude; + List<StoreInfo> storeInfos = new ArrayList<>(); + String cityCode = ""; + try { + Map<String, String> geocode = gdMapGeocodingUtil.geocode(longitude, latitude); + cityCode = geocode.get("cityCode"); + }catch (Exception e){ + e.printStackTrace(); + } + List<Store> storeList = stoService.list(new QueryWrapper<Store>() + .eq("state", 1) + .eq("cityCode",cityCode)); + if (storeList.size() > 0){ + for (Store store : storeList) { + String storeLon = store.getLon(); + String storeLat = store.getLat(); + String result = storeLon+","+storeLat; + String distanceTOKilometer = gdMapGeocodingUtil.getDistanceTOKilometer(current, result); + StoreInfo info = new StoreInfo(); + info.setStoreId(store.getId()); + info.setStoreName(store.getName()); + info.setStoreImg(store.getRealPicture()); + info.setDistance(Long.parseLong(distanceTOKilometer)); + info.setStoreAddr(store.getAddress()); + storeInfos.add(info); + } + Comparator<StoreInfo> distanceComparator = new Comparator<StoreInfo>() { + @Override + public int compare(StoreInfo store1, StoreInfo store2) { + return Long.compare(store1.getDistance(), store2.getDistance()); + } + }; + Collections.sort(storeInfos, distanceComparator); + } + return storeInfos; + } + + + @PostMapping("/storeDetail/storeOfLonLat") + public List<StoreLonLatList> getAllStoreLonLats(@RequestBody String longitude, @RequestBody String latitude){ + List<StoreLonLatList> storeInfos = new ArrayList<>(); + try { + Map<String, String> geocode = gdMapGeocodingUtil.geocode(longitude, latitude); + String cityCode = geocode.get("cityCode"); + List<Store> storeList = stoService.list(new QueryWrapper<Store>() + .eq("cityCode",cityCode)); + if (storeList.size() > 0){ + for (Store store : storeList) { + StoreLonLatList latList = new StoreLonLatList(); + latList.setStoreId(store.getId()); + latList.setLongitude(store.getLon()); + latList.setLatitude(store.getLat()); + storeInfos.add(latList); + } + } + }catch (Exception e){ + e.printStackTrace(); + } + + return storeInfos; + } + + + + + + + /** + * 获取门店列表 + * @param provinceCode + * @param cityCode + * @return + */ + @ResponseBody + @PostMapping("/store/queryStoreList") + public List<Store> queryStoreList(@RequestBody String provinceCode, @RequestBody String cityCode){ + try { + return storeService.queryStorsList(provinceCode, cityCode); + }catch (Exception e){ + e.printStackTrace(); + return new ArrayList<>(); + } + } + + + + + + @ResponseBody + @PostMapping("/base/store/queryStoreLists") + @ApiOperation(value = "获取门店列表", tags = {"APP-加入玩湃"}) + @ApiImplicitParams({ + @ApiImplicitParam(value = "经纬", name = "lon", dataType = "string", required = true), + @ApiImplicitParam(value = "纬度", name = "lat", dataType = "string", required = true), + }) + public ResultUtil<List<BaseVo>> queryStoreLists(@RequestBody String lon, @RequestBody String lat){ + if(ToolUtil.isEmpty(lon)){ + return ResultUtil.paranErr("lon"); + } + if(ToolUtil.isEmpty(lat)){ + return ResultUtil.paranErr("lat"); + } + try { + List<BaseVo> baseVos = storeService.queryStoreLists(lon, lat); + return ResultUtil.success(baseVos); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + + /** + * 根据门店模糊搜索店铺 + * @param name + * @return + */ + @ResponseBody + @PostMapping("/store/queryStoreListByName") + public List<Store> queryStoreListByName(@RequestBody String name){ + try { + List<Store> stores = storeService.list(new QueryWrapper<Store>().eq("state", 1).like("name", name)); + return stores; + }catch (Exception e){ + e.printStackTrace(); + return new ArrayList<>(); + } + } + + + /** + * 根据门店 + * @param id + * @return + */ + @ResponseBody + @PostMapping("/store/queryStoreById") + public Store queryStoreById(@RequestBody Integer id){ + try { + return storeService.getById(id); + }catch (Exception e){ + e.printStackTrace(); + return null; + } + } + + + + + /** * 获取门店列表 * @param provinceCode diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/SystemNoticeController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/SystemNoticeController.java new file mode 100644 index 0000000..04c441b --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/controller/SystemNoticeController.java @@ -0,0 +1,80 @@ +package com.dsh.other.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.dsh.other.entity.Notice; +import com.dsh.other.entity.Phone; +import com.dsh.other.feignclient.model.SysNotice; +import com.dsh.other.service.NoticeService; +import com.dsh.other.service.PhoneService; +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; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +@RestController +@RequestMapping("") +public class SystemNoticeController { + + @Autowired + private NoticeService noticeSers; + + @Autowired + private PhoneService phoneService; + + private final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + + + @PostMapping("/base/notice/queryNoticeDetails") + public List<SysNotice> getSysNoticeDetails(){ + List<SysNotice> notices = new ArrayList<>(); + List<Notice> list = noticeSers.list(new QueryWrapper<Notice>() + .eq("state", 1) + .eq("upOrDown", 1) + .orderByDesc("insertTime")); + if (list.size() > 0 ){ + list.forEach(noList -> { + SysNotice notice = new SysNotice(); + notice.setNoticeId(noList.getId()); + notice.setNoticeTitle(noList.getName()); + notice.setNoticeContents(noList.getContent()); + notice.setNoticeTime(format.format(noList.getInsertTime())); + notices.add(notice); + }); + } + return notices; + } + + + @PostMapping("/base/notice/queryNotice") + public SysNotice getSysNoticeBuId(@RequestBody Integer noticeId){ + SysNotice sysNotice = new SysNotice(); + Notice notice = noticeSers.getById(noticeId); + if (null != notice){ + sysNotice.setNoticeId(notice.getId()); + sysNotice.setNoticeTitle(notice.getName()); + sysNotice.setNoticeContents(notice.getContent()); + sysNotice.setNoticeTime(format.format(notice.getInsertTime())); + } + return sysNotice; + } + + + @PostMapping("/base/notice/sysTell") + public List<String> queryCustomerTel(){ + List<String> tellS = new ArrayList<>(); + List<Phone> list = phoneService.list(); + if (list.size() > 0 ){ + tellS = list.stream().map(Phone::getPhone).collect(Collectors.toList()); + } + return tellS; + + } + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/FrequentlyAskedQuestions.java b/cloud-server-other/src/main/java/com/dsh/other/entity/FrequentlyAskedQuestions.java new file mode 100644 index 0000000..ab07537 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/entity/FrequentlyAskedQuestions.java @@ -0,0 +1,62 @@ +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-03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_frequently_asked_questions") +public class FrequentlyAskedQuestions extends Model<FrequentlyAskedQuestions> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 常见问题 + */ + private String content; + /** + * 排序 + */ + private Integer sort; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + private Integer state; + /** + * 添加时间 + */ + private Date insertTime; + /** + * 答复内容 + */ + private String answer; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/Notice.java b/cloud-server-other/src/main/java/com/dsh/other/entity/Notice.java new file mode 100644 index 0000000..55be75b --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/entity/Notice.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-03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_notice") +public class Notice extends Model<Notice> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 功能名称 + */ + private String name; + /** + * 公告内容 + */ + private String content; + /** + * 排序 + */ + private Integer sort; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + private Integer state; + /** + * 添加时间 + */ + private Date insertTime; + /** + * 0下架1上架 + */ + private Integer upOrDown; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/Phone.java b/cloud-server-other/src/main/java/com/dsh/other/entity/Phone.java new file mode 100644 index 0000000..885b4f5 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/entity/Phone.java @@ -0,0 +1,50 @@ +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-03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_phone") +public class Phone extends Model<Phone> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 电话 + */ + private String phone; + /** + * 添加时间 + */ + private Date insertTime; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/CustomerClient.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/CustomerClient.java new file mode 100644 index 0000000..b917c98 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/CustomerClient.java @@ -0,0 +1,12 @@ +package com.dsh.other.feignclient; + +import org.springframework.cloud.openfeign.FeignClient; + +@FeignClient(value = "mb-cloud-other") +public interface CustomerClient { + + + + + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/NoticeClient.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/NoticeClient.java new file mode 100644 index 0000000..f42577e --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/NoticeClient.java @@ -0,0 +1,25 @@ +package com.dsh.other.feignclient; + +import com.dsh.other.feignclient.model.SysNotice; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + + +@FeignClient(value = "mb-cloud-other") +public interface NoticeClient { + + + @PostMapping("/base/notice/queryNoticeDetails") + List<SysNotice> getSysNoticeDetails(); + + @PostMapping("/base/notice/queryNotice") + SysNotice getSysNoticeBuId(@RequestBody Integer noticeId); + + @PostMapping("/base/notice/sysTell") + List<String> queryCustomerTel(); + + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/QuestionClient.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/QuestionClient.java new file mode 100644 index 0000000..a37da84 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/QuestionClient.java @@ -0,0 +1,19 @@ +package com.dsh.other.feignclient; + +import com.dsh.other.model.vo.questionVo.QuestionDetailsVo; +import com.dsh.other.model.vo.questionVo.QuestionIns; +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 QuestionClient { + + @PostMapping("/base/notice/queryQuestionDetails") + QuestionDetailsVo getSysQuestionDetails(); + + @PostMapping("/base/notice/queryQuestion") + QuestionIns getSysQuestionBuId(@RequestBody Integer quesId); + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java new file mode 100644 index 0000000..67097be --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java @@ -0,0 +1,26 @@ +package com.dsh.other.feignclient; + +import com.dsh.other.feignclient.model.StoreDetailOfCourse; +import com.dsh.other.feignclient.model.StoreInfo; +import com.dsh.other.feignclient.model.StoreLonLatList; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +@FeignClient(value = "mb-cloud-other") +public interface StoreClient { + + + @PostMapping("/storeDetail/courseOfSto") + public StoreDetailOfCourse getCourseOfStore(@RequestBody Integer storeId); + + + @PostMapping("/storeDetail/nearbyStore") + List<StoreInfo> getAllNearbyStoreList(@RequestBody String longitude, @RequestBody String latitude); + + + @PostMapping("/storeDetail/storeOfLonLat") + public List<StoreLonLatList> getAllStoreLonLats(@RequestBody String longitude, @RequestBody String latitude); +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreDetailOfCourse.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreDetailOfCourse.java new file mode 100644 index 0000000..d7f40fd --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreDetailOfCourse.java @@ -0,0 +1,13 @@ +package com.dsh.other.feignclient.model; + +import lombok.Data; + +@Data +public class StoreDetailOfCourse { + + String storeName; + + String storeAddr; + + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreInfo.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreInfo.java new file mode 100644 index 0000000..12f23b1 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreInfo.java @@ -0,0 +1,25 @@ +package com.dsh.other.feignclient.model; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class StoreInfo { + + @ApiModelProperty(value = "门店id") + private Integer storeId; + + @ApiModelProperty(value = "门店背景图") + private String storeImg; + + @ApiModelProperty(value = "门店距离当前位置") + private long distance; + + @ApiModelProperty(value = "门店名称") + private String storeName; + + @ApiModelProperty(value = "门店详细地址") + private String storeAddr; + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreLonLatList.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreLonLatList.java new file mode 100644 index 0000000..fffe6d1 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/StoreLonLatList.java @@ -0,0 +1,19 @@ +package com.dsh.other.feignclient.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class StoreLonLatList { + + @ApiModelProperty(value = "门店id") + Integer storeId; + + @ApiModelProperty(value = "经度") + String longitude; + + @ApiModelProperty(value = "纬度") + String latitude; + + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/SysNotice.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/SysNotice.java new file mode 100644 index 0000000..9335041 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/SysNotice.java @@ -0,0 +1,21 @@ +package com.dsh.other.feignclient.model; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class SysNotice { + + @ApiModelProperty(value = "公告id") + private Integer noticeId; + + @ApiModelProperty(value = "公告标题") + private String noticeTitle; + + @ApiModelProperty(value = "公告内容") + private String noticeContents; + + @ApiModelProperty(value = "公告发布时间") + private String noticeTime; + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/FrequentlyAskedQuestionsMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/FrequentlyAskedQuestionsMapper.java new file mode 100644 index 0000000..629c450 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/FrequentlyAskedQuestionsMapper.java @@ -0,0 +1,16 @@ +package com.dsh.other.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.other.entity.FrequentlyAskedQuestions; + +/** + * <p> + * 常见问题 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-07-03 + */ +public interface FrequentlyAskedQuestionsMapper extends BaseMapper<FrequentlyAskedQuestions> { + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/NoticeMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/NoticeMapper.java new file mode 100644 index 0000000..51dbcba --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/NoticeMapper.java @@ -0,0 +1,16 @@ +package com.dsh.other.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.other.entity.Notice; + +/** + * <p> + * 公告 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-07-03 + */ +public interface NoticeMapper extends BaseMapper<Notice> { + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/PhoneMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/PhoneMapper.java new file mode 100644 index 0000000..64d9a2b --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/PhoneMapper.java @@ -0,0 +1,16 @@ +package com.dsh.other.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.other.entity.Phone; + +/** + * <p> + * 客服电话 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-07-03 + */ +public interface PhoneMapper extends BaseMapper<Phone> { + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/model/vo/questionVo/QuestionDetailsVo.java b/cloud-server-other/src/main/java/com/dsh/other/model/vo/questionVo/QuestionDetailsVo.java new file mode 100644 index 0000000..8296138 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/model/vo/questionVo/QuestionDetailsVo.java @@ -0,0 +1,17 @@ +package com.dsh.other.model.vo.questionVo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class QuestionDetailsVo { + + @ApiModelProperty(value = "banner图") + private String bannerImg; + + @ApiModelProperty(value = "问题列表") + private List<QuestionIns> sysS; + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/model/vo/questionVo/QuestionIns.java b/cloud-server-other/src/main/java/com/dsh/other/model/vo/questionVo/QuestionIns.java new file mode 100644 index 0000000..9c2ccc6 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/model/vo/questionVo/QuestionIns.java @@ -0,0 +1,22 @@ +package com.dsh.other.model.vo.questionVo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@Data +public class QuestionIns { + + @ApiModelProperty(value = "问题id") + private Integer quesId; + + @ApiModelProperty(value = "问题标题") + private String quesTitle; + + @ApiModelProperty(value = "答复内容") + private String quesContents; + + @ApiModelProperty(value = "答复内容") + private String quesTime; + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/FrequentlyAskedQuestionsService.java b/cloud-server-other/src/main/java/com/dsh/other/service/FrequentlyAskedQuestionsService.java new file mode 100644 index 0000000..bc2f6e7 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/service/FrequentlyAskedQuestionsService.java @@ -0,0 +1,16 @@ +package com.dsh.other.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.other.entity.FrequentlyAskedQuestions; + +/** + * <p> + * 常见问题 服务类 + * </p> + * + * @author jqs + * @since 2023-07-03 + */ +public interface FrequentlyAskedQuestionsService extends IService<FrequentlyAskedQuestions> { + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/NoticeService.java b/cloud-server-other/src/main/java/com/dsh/other/service/NoticeService.java new file mode 100644 index 0000000..8778f4b --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/service/NoticeService.java @@ -0,0 +1,16 @@ +package com.dsh.other.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.other.entity.Notice; + +/** + * <p> + * 公告 服务类 + * </p> + * + * @author jqs + * @since 2023-07-03 + */ +public interface NoticeService extends IService<Notice> { + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/PhoneService.java b/cloud-server-other/src/main/java/com/dsh/other/service/PhoneService.java new file mode 100644 index 0000000..1749fe4 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/service/PhoneService.java @@ -0,0 +1,16 @@ +package com.dsh.other.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.other.entity.Phone; + +/** + * <p> + * 客服电话 服务类 + * </p> + * + * @author jqs + * @since 2023-07-03 + */ +public interface PhoneService extends IService<Phone> { + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/FrequentlyAskedQuestionsServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/FrequentlyAskedQuestionsServiceImpl.java new file mode 100644 index 0000000..0a60e66 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/FrequentlyAskedQuestionsServiceImpl.java @@ -0,0 +1,20 @@ +package com.dsh.other.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.other.entity.FrequentlyAskedQuestions; +import com.dsh.other.mapper.FrequentlyAskedQuestionsMapper; +import com.dsh.other.service.FrequentlyAskedQuestionsService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 常见问题 服务实现类 + * </p> + * + * @author jqs + * @since 2023-07-03 + */ +@Service +public class FrequentlyAskedQuestionsServiceImpl extends ServiceImpl<FrequentlyAskedQuestionsMapper, FrequentlyAskedQuestions> implements FrequentlyAskedQuestionsService { + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/NoticeServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/NoticeServiceImpl.java new file mode 100644 index 0000000..c3a512a --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/NoticeServiceImpl.java @@ -0,0 +1,20 @@ +package com.dsh.other.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.other.entity.Notice; +import com.dsh.other.mapper.NoticeMapper; +import com.dsh.other.service.NoticeService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 公告 服务实现类 + * </p> + * + * @author jqs + * @since 2023-07-03 + */ +@Service +public class NoticeServiceImpl extends ServiceImpl<NoticeMapper, Notice> implements NoticeService { + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/PhoneServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/PhoneServiceImpl.java new file mode 100644 index 0000000..6c5edfa --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/PhoneServiceImpl.java @@ -0,0 +1,20 @@ +package com.dsh.other.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.other.entity.Phone; +import com.dsh.other.mapper.PhoneMapper; +import com.dsh.other.service.PhoneService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 客服电话 服务实现类 + * </p> + * + * @author jqs + * @since 2023-07-03 + */ +@Service +public class PhoneServiceImpl extends ServiceImpl<PhoneMapper, Phone> implements PhoneService { + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/util/GDMapGeocodingUtil.java b/cloud-server-other/src/main/java/com/dsh/other/util/GDMapGeocodingUtil.java index 13f02f7..92ac86d 100644 --- a/cloud-server-other/src/main/java/com/dsh/other/util/GDMapGeocodingUtil.java +++ b/cloud-server-other/src/main/java/com/dsh/other/util/GDMapGeocodingUtil.java @@ -7,6 +7,14 @@ import com.dsh.other.util.httpClinet.HttpResult; import org.springframework.stereotype.Component; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -19,7 +27,6 @@ public class GDMapGeocodingUtil { private String key = "fb131ad2dbfb3f39d7d37d244b92aa2d"; - /** * 将行政区域名称转化为坐标 @@ -145,4 +152,90 @@ } return map; } + + + /** + * 功能描述: 根据两个定位点的经纬度算出两点间的距离(米/m) + * + * @param startLonLat 起始经纬度 + * @param endLonLat 结束经纬度(目标经纬度) + * @return java.lang.Long 两个定位点之间的距离 + */ + public Long getDistance(String startLonLat, String endLonLat) { + try { + // 返回起始地startAddr与目的地endAddr之间的距离,单位:米 + Long result = new Long(0); + String queryUrl = + "http://restapi.amap.com/v3/distance?key=" + key + "&origins=" + startLonLat + + "&destination=" + + endLonLat; + String queryResult = getResponse(queryUrl); + JSONObject job = JSONObject.parseObject(queryResult); + JSONArray ja = job.getJSONArray("results"); + JSONObject jobO = JSONObject.parseObject(ja.getString(0)); + result = Long.parseLong(jobO.get("distance").toString()); + return result; + } catch (Exception e) { + throw new RuntimeException(); + } + } + + + /** + * 功能描述: 根据两个定位点的经纬度算出两点间的距离(千米/km) + * + * @param startLonLat 起始经纬度 + * @param endLonLat 结束经纬度(目标经纬度) + * @return java.lang.Long 两个定位点之间的距离 + */ + public String getDistanceTOKilometer(String startLonLat, String endLonLat) { + try { + // 返回起始地startAddr与目的地endAddr之间的距离,单位:米 + Long result = new Long(0); + String queryUrl = + "http://restapi.amap.com/v3/distance?key=" + key + "&origins=" + startLonLat + + "&destination=" + + endLonLat; + String queryResult = getResponse(queryUrl); + JSONObject job = JSONObject.parseObject(queryResult); + JSONArray ja = job.getJSONArray("results"); + JSONObject jobO = JSONObject.parseObject(ja.getString(0)); + result = Long.parseLong(jobO.get("distance").toString()); + double kilDis = (double) result / 1000; + DecimalFormat decimalFormat = new DecimalFormat("#.00"); + return decimalFormat.format(kilDis); + } catch (Exception e) { + throw new RuntimeException(); + } + } + + /** + * 功能描述: 发送请求 + * + * @param serverUrl 请求地址 + * @return java.lang.String + * @author isymikasan + * @date 2022-01-26 09:15:01 + */ + private static String getResponse(String serverUrl) { + // 用JAVA发起http请求,并返回json格式的结果 + StringBuffer result = new StringBuffer(); + try { + URL url = new URL(serverUrl); + URLConnection conn = url.openConnection(); + BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); + String line; + while ((line = in.readLine()) != null) { + result.append(line); + } + in.close(); + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return result.toString(); + } + + } diff --git a/cloud-server-other/src/main/java/com/dsh/other/util/HttpClientUtil.java b/cloud-server-other/src/main/java/com/dsh/other/util/HttpClientUtil.java new file mode 100644 index 0000000..4d493ae --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/util/HttpClientUtil.java @@ -0,0 +1,269 @@ +package com.dsh.other.util; + +import com.alibaba.fastjson.JSON; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.http.NameValuePair; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.ssl.SSLContexts; +import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import javax.net.ssl.SSLContext; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.nio.charset.Charset; +import java.security.KeyStore; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; + +/** + * http工具类 + */ +@Component +public class HttpClientUtil { + + private static Logger logger = LoggerFactory.getLogger(HttpClientUtil.class); + + private PoolingHttpClientConnectionManager connectionManager; + + + public HttpClientUtil(){ + //1.创建连接池管理器 + connectionManager = new PoolingHttpClientConnectionManager(60000, + TimeUnit.MILLISECONDS); + connectionManager.setMaxTotal(1000); + connectionManager.setDefaultMaxPerRoute(50); + } + + /** + * 创建一个httpClient对象 + */ + private CloseableHttpClient getHttpCline(){ + return HttpClients.custom() + .setConnectionManager(connectionManager) + .disableAutomaticRetries() + .build(); + } + + private RequestConfig getRequestConfig(){ + RequestConfig.Builder builder = RequestConfig.custom(); + builder.setSocketTimeout(60000)//3.1设置客户端等待服务端返回数据的超时时间 + .setConnectTimeout(30000)//3.2设置客户端发起TCP连接请求的超时时间 + .setExpectContinueEnabled(true) + .setConnectionRequestTimeout(30000);//3.3设置客户端从连接池获取链接的超时时间 + return builder.build(); + } + + + + /** + * 创建一个POST请求实例 + * @param url 请求地址 + * @param params 请求参数 + */ + private CloseableHttpResponse setPostHttpRequset(String url, Map<String, Object> params, Map<String, String> header, String contentType) throws Exception{ + HttpPost httpPost = new HttpPost(url); + httpPost.setConfig(this.getRequestConfig()); + if(null != header){ + for(String key : header.keySet()){ + httpPost.setHeader(key, header.get(key)); + } + } + List<NameValuePair> list = new ArrayList<>(); + if(null != params){ + Set<String> keys = params.keySet(); + for(String key : keys){ + list.add(new BasicNameValuePair(key, null == params.get(key) ? null : params.get(key).toString())); + } + } + switch (contentType){ + case "form": + httpPost.setEntity(new UrlEncodedFormEntity(list, "UTF-8")); + break; + case "json": + ObjectMapper objectMapper = new ObjectMapper(); + String s =objectMapper.writeValueAsString(params); + httpPost.setEntity(new StringEntity(s, ContentType.create(ContentType.APPLICATION_JSON.getMimeType(), Charset.forName("UTF-8")))); + break; + } + return getHttpCline().execute(httpPost); + } + + + /** + * 获取get请求实例 + * @param url 请求地址 + * @param params 请求参数 + */ + private CloseableHttpResponse setGetHttpRequset(String url, Map<String, Object> params, Map<String, String> header) throws Exception{ + StringBuffer sb = new StringBuffer(); + String p = ""; + if(null != params){ + Set<String> keys = params.keySet(); + for(String key : keys){ + sb.append(key + "=" + params.get(key) + "&"); + } + p = "?" + sb.substring(0, sb.length() - 1); + } + HttpGet httpGet = new HttpGet(url + p); + httpGet.setConfig(getRequestConfig()); + if(null != header){ + for(String key : header.keySet()){ + httpGet.setHeader(key, header.get(key)); + } + } + return getHttpCline().execute(httpGet); + } + + + /** + * 发送http请求 + * @param mothed "GET、POST、PUT、HEAD、DELETE、HEAD、OPTIONS" + * @param url 请求地址 + * @param params 请求参数 + * @param header 请求头 + * @param contentType 参数请求方式form/json + * @return + */ + public HttpResult pushHttpRequset(String mothed, String url, Map<String, Object> params, Map<String, String> header, String contentType) throws Exception{ + String randome = UUID.randomUUID().toString(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); + logger.info(sdf.format(new Date()) + "----(" + randome + ")请求参数:" + JSON.toJSONString(params)); + CloseableHttpResponse httpResponse = null; + switch (mothed){ + case "GET": + httpResponse = this.setGetHttpRequset(url, params, header); + break; + case "POST": + httpResponse = setPostHttpRequset(url, params, header, contentType); + break; + } + int statusCode = httpResponse.getStatusLine().getStatusCode(); + String content = EntityUtils.toString(httpResponse.getEntity(), "UTF-8"); + logger.info(sdf.format(new Date()) + "----(" + randome + ")返回结果:" + content); + HttpResult httpResult = HttpResult.getHttpResult(statusCode, content); + this.close(httpResponse); + return httpResult; + } + + + /** + * 发送XML请求 + * @param url 请求地址 + * @param xml XML数据 + * @param header 自定义请求头 + * @return + */ + public HttpResult pushHttpRequsetXml(String url, String xml, Map<String, String> header) throws Exception{ + HttpPost httpPost = new HttpPost(url); + httpPost.setConfig(getRequestConfig()); + for(String key : header.keySet()){ + httpPost.setHeader(key, header.get(key)); + } + httpPost.setHeader("Content-Type", "application/xml"); + httpPost.setEntity(new StringEntity(xml, "UTF-8")); + CloseableHttpResponse httpResponse = getHttpCline().execute(httpPost); + int statusCode = httpResponse.getStatusLine().getStatusCode(); + String content = EntityUtils.toString(httpResponse.getEntity(), "UTF-8"); + HttpResult httpResult = HttpResult.getHttpResult(statusCode, content); + this.close(httpResponse); + return httpResult; + } + + + + /** + * 请求https发送XML请求 + * @param url 接口路径 + * @param xml 内容 + * @param header 请求头 + * @param certPassword 证书密码 + * @param certPath 证书路径 + * @param certType 证书类型 + * @return + * @throws Exception + */ + public String pushHttpsRequsetXml(String url, String xml, Map<String, String> header, String certPassword, String certPath, String certType) throws Exception{ + HttpPost httpPost = new HttpPost(url); + for(String key : header.keySet()){ + httpPost.setHeader(key, header.get(key)); + } + httpPost.setHeader("Content-Type", "application/xml"); + httpPost.setEntity(new StringEntity(xml, "UTF-8")); + CloseableHttpClient httpCline = this.initCert(certPassword, certPath, certType); + CloseableHttpResponse httpResponse = httpCline.execute(httpPost); + String content = null; + if(httpResponse.getStatusLine().getStatusCode() == 200){ + content = EntityUtils.toString(httpResponse.getEntity(), "UTF-8"); + }else{ + content = "返回状态码:" + httpResponse.getStatusLine() + "。" + EntityUtils.toString(httpResponse.getEntity()); + } + this.close(httpResponse); + httpCline.close(); + return content; + } + + + /** + * 初始化https对象(带证书) + * @param key 证书密码 + * @param certPath 证书路径 + * @param certType 证书类型 + * @throws Exception + */ + private CloseableHttpClient initCert(String key, String certPath, String certType) throws Exception { + KeyStore keyStore = KeyStore.getInstance(certType); + InputStream inputStream = new FileInputStream(new File(certPath)); + try { + keyStore.load(inputStream, key.toCharArray()); + } finally { + inputStream.close(); + } + SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, key.toCharArray()).build(); + SSLConnectionSocketFactory sslsf = + new SSLConnectionSocketFactory(sslcontext, new String[] {"TLSv1"}, null, + SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER); + return HttpClients.custom().setSSLSocketFactory(sslsf).build(); + } + + + + /** + * 关闭资源 + */ + private void close(CloseableHttpResponse httpResponse){ + try { + if(null != httpResponse){ + EntityUtils.consume(httpResponse.getEntity());//此处高能,通过源码分析,由EntityUtils是否回收HttpEntity + httpResponse.close(); + } + } catch (Exception e) { + e.printStackTrace(); + }finally { + try { + if(null != httpResponse){ + httpResponse.close(); + } + }catch (Exception e){ + e.printStackTrace(); + } + } + } + + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/util/HttpResult.java b/cloud-server-other/src/main/java/com/dsh/other/util/HttpResult.java new file mode 100644 index 0000000..8ff2602 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/util/HttpResult.java @@ -0,0 +1,31 @@ +package com.dsh.other.util; + +import lombok.Data; + +/** + * http请求返回封装 + */ +@Data +public class HttpResult { + /** + * 返回状态码 + */ + private Integer code; + /** + * 返回结果 + */ + private String data; + + /** + * 返回封装结果 + * @param code + * @param data + * @return + */ + public static HttpResult getHttpResult(Integer code, String data){ + HttpResult httpResult = new HttpResult(); + httpResult.setCode(code); + httpResult.setData(data); + return httpResult; + } +} diff --git a/cloud-server-other/src/main/resources/mapper/FrequentlyAskedQuestionsMapper.xml b/cloud-server-other/src/main/resources/mapper/FrequentlyAskedQuestionsMapper.xml new file mode 100644 index 0000000..084e295 --- /dev/null +++ b/cloud-server-other/src/main/resources/mapper/FrequentlyAskedQuestionsMapper.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.FrequentlyAskedQuestionsMapper"> + + +</mapper> diff --git a/cloud-server-other/src/main/resources/mapper/NoticeMapper.xml b/cloud-server-other/src/main/resources/mapper/NoticeMapper.xml new file mode 100644 index 0000000..7113ac5 --- /dev/null +++ b/cloud-server-other/src/main/resources/mapper/NoticeMapper.xml @@ -0,0 +1,5 @@ +<?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.NoticeMapper"> + +</mapper> diff --git a/cloud-server-other/src/main/resources/mapper/PhoneMapper.xml b/cloud-server-other/src/main/resources/mapper/PhoneMapper.xml new file mode 100644 index 0000000..2f5221f --- /dev/null +++ b/cloud-server-other/src/main/resources/mapper/PhoneMapper.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.PhoneMapper"> + + +</mapper> -- Gitblit v1.7.1