From 711050ca38dcc0dfd3b31978372933cdf2e1640d Mon Sep 17 00:00:00 2001 From: lisy <linlangsur163@163.com> Date: 星期四, 13 七月 2023 19:43:34 +0800 Subject: [PATCH] 使用福利:本周福利的折扣详情接口 --- cloud-server-course/src/main/java/com/dsh/course/model/vo/response/ExchangeCoursePackageResponse.java | 49 ++++++++++++ cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java | 6 + cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java | 47 +++++++++++ cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java | 127 ++++++++++++++++++++++++++++++- cloud-server-course/src/main/java/com/dsh/course/model/vo/response/WeekLimitedResponse.java | 3 5 files changed, 228 insertions(+), 4 deletions(-) diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java index 2159d03..ad053e0 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java @@ -1,6 +1,7 @@ package com.dsh.course.controller; import com.dsh.course.entity.TCoursePackage; +import com.dsh.course.model.vo.response.ExchangeCoursePackageResponse; import com.dsh.course.model.vo.response.WeekLimitedResponse; import com.dsh.course.service.TCoursePackageDiscountService; import com.dsh.course.service.TCoursePackageService; @@ -72,4 +73,50 @@ } } + + /** + * 折扣课包详情 + */ + @ResponseBody + @PostMapping("/api/useBenefit/discountCourseDatas") + @ApiOperation(value = "本周福利-折扣课包详情", tags = {"APP-使用福利"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(name = "coursePackageDiscountId",value = "限时折扣配置id/赠送课时配置id",dataType = "int"), + @ApiImplicitParam(name = "lon",value = "经度",dataType = "String"), + @ApiImplicitParam(name = "lat",value = "纬度",dataType = "String"), + }) + public ResultUtil<ExchangeCoursePackageResponse> discountCourseDatas(Integer coursePackageDiscountId,String lon,String lat){ + try { + return ResultUtil.success(tcpdService.getWeekFreeCourseDetails(coursePackageDiscountId,lat,lon)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + /** + * 折扣课包支付 + */ + @ResponseBody + @PostMapping("/api/useBenefit/paymentOfDiscountCoursePack") + @ApiOperation(value = "本周福利-折扣课包支付", tags = {"APP-使用福利"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(name = "coursePackageDiscountId",value = "限时折扣配置id/赠送课时配置id",dataType = "int"), + @ApiImplicitParam(name = "lon",value = "经度",dataType = "String"), + @ApiImplicitParam(name = "lat",value = "纬度",dataType = "String"), + }) + public ResultUtil paymentWeeksFreeCourse(Integer coursePackageDiscountId){ + try { + Integer appuserId = tokenUtil.getUserIdFormRedis(); + if(null == appuserId){ + return ResultUtil.tokenErr(); + } + return tcpdService.paymentDiscountCoursePack(coursePackageDiscountId,appuserId); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/ExchangeCoursePackageResponse.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/ExchangeCoursePackageResponse.java new file mode 100644 index 0000000..d07f170 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/ExchangeCoursePackageResponse.java @@ -0,0 +1,49 @@ +package com.dsh.course.model.vo.response; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class ExchangeCoursePackageResponse { + + @ApiModelProperty(value = "限时折扣配置id/赠送课时配置id") + private Integer coursePackageDiscountId; + + @ApiModelProperty(value = "课包封面图") + private String coverDrawing; + + @ApiModelProperty(value = "课包介绍图") + private String introduceDrawing; + + @ApiModelProperty(value = "课包名称") + private String coursePackageName; + + @ApiModelProperty(value = "门店名称+地址") + private String storeNameAddr; + + @ApiModelProperty(value = "门店距离 单位km") + private double distance; + + @ApiModelProperty(value = "课时数") + private Integer classHours; + + @ApiModelProperty(value = "赠送课时数") + private Integer freeClassHours; + + @ApiModelProperty(value = "上课周数") + private String weekTime; + + @ApiModelProperty(value = "上课时间") + private String time; + + @ApiModelProperty(value = "原价") + private Double costPrice; + + @ApiModelProperty(value = "折扣价/会员价") + private Double discountPrice; + + @ApiModelProperty(value = "玩湃币") + private Integer wanpaiGold; + +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/WeekLimitedResponse.java b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/WeekLimitedResponse.java index 7a1efae..297caa6 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/WeekLimitedResponse.java +++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/WeekLimitedResponse.java @@ -19,6 +19,9 @@ @Data public static class Details{ + @ApiModelProperty(value = "限时折扣配置id/赠送课时配置id") + private Integer coursePackageDiscountId; + @ApiModelProperty(value = "封面图") private String image; diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java index 852deda..c9ba179 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java @@ -2,7 +2,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.course.entity.TCoursePackageDiscount; +import com.dsh.course.model.vo.response.ExchangeCoursePackageResponse; import com.dsh.course.model.vo.response.WeekLimitedResponse; +import com.dsh.course.util.ResultUtil; /** @@ -17,4 +19,8 @@ WeekLimitedResponse getWeeksBenefitCourse(Integer appUserId,Integer discountType,String lon,String lat); + ExchangeCoursePackageResponse getWeekFreeCourseDetails(Integer coursePackageDiscountId,String lat,String lon); + + ResultUtil paymentDiscountCoursePack(Integer coursePackageDiscountId, Integer appuserId); + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java index 61796ac..aa8c8de 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java @@ -8,15 +8,21 @@ import com.dsh.course.entity.CoursePackagePaymentConfig; import com.dsh.course.entity.TCoursePackage; import com.dsh.course.entity.TCoursePackageDiscount; +import com.dsh.course.entity.TCoursePackagePayment; import com.dsh.course.feignclient.other.StoreClient; import com.dsh.course.feignclient.other.model.GetDistanceVo; +import com.dsh.course.feignclient.other.model.Store; import com.dsh.course.mapper.CoursePackagePaymentConfigMapper; import com.dsh.course.mapper.TCoursePackageDiscountMapper; import com.dsh.course.mapper.TCoursePackageMapper; +import com.dsh.course.mapper.TCoursePackagePaymentMapper; +import com.dsh.course.model.vo.response.ExchangeCoursePackageResponse; import com.dsh.course.model.vo.response.WeekLimitedResponse; import com.dsh.course.service.TCoursePackageDiscountService; import com.dsh.course.util.DateTimeHelper; import com.dsh.course.util.LocalDateTimeUtils; +import com.dsh.course.util.ResultUtil; +import com.dsh.course.util.StrUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -42,6 +48,8 @@ @Resource private TCoursePackageMapper tcpMapper; + @Resource + private TCoursePackagePaymentMapper tcppMapper; @Resource private CoursePackagePaymentConfigMapper cppcMapper; @@ -68,6 +76,15 @@ tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper); if (tCoursePackageDiscounts.size() > 0) { for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) { + TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId()); +// 判断预约人数是否已满 + Integer maxSubscribeNumber = coursePackage.getMaxSubscribeNumber(); + Integer integer = tcppMapper.selectCount(new QueryWrapper<TCoursePackagePayment>() + .eq("appUserId",appUserId ) + .eq("status",1)); + if (integer >= maxSubscribeNumber){ + continue; + } /** * [{ * "startDate": "2023-01-01 00:00:00", @@ -110,8 +127,8 @@ // 判断当前日期是否在开始时间和结束时间范围内 if (isDateWithinRange(localTime, parse1, parse2)) { WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details(); - TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId()); + resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId()); resde.setImage(coursePackage.getCoverDrawing()); resde.setCoursePackageName(coursePackage.getName()); CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId()); @@ -138,8 +155,8 @@ int weekNumOfDate = DateTimeHelper.getWeekNumOfDate(tempDate); if (isDateWithinRange(tempDate, parse1, parse2) && weeks.contains(weekNumOfDate)) { WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details(); - TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId()); + resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId()); resde.setImage(coursePackage.getCoverDrawing()); resde.setCoursePackageName(coursePackage.getName()); CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId()); @@ -175,6 +192,15 @@ tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper); if (tCoursePackageDiscounts.size() > 0) { for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) { + TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId()); +// 判断预约人数是否已满 + Integer maxSubscribeNumber = coursePackage.getMaxSubscribeNumber(); + Integer integer = tcppMapper.selectCount(new QueryWrapper<TCoursePackagePayment>() + .eq("appUserId",appUserId ) + .eq("status",1)); + if (integer >= maxSubscribeNumber){ + continue; + } // [{ // "startDate": "2023-01-01 00:00:00", // "endDate": "2023-12-31 23:59:59", @@ -216,8 +242,8 @@ // 判断当前日期是否在开始时间和结束时间范围内 if (isDateWithinRange(localTime, parse1, parse2)) { WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details(); - TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId()); + resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId()); resde.setImage(coursePackage.getCoverDrawing()); resde.setCoursePackageName(coursePackage.getName()); CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId()); @@ -244,8 +270,8 @@ int weekNumOfDate = DateTimeHelper.getWeekNumOfDate(tempDate); if (isDateWithinRange(tempDate, parse1, parse2) && weeks.contains(weekNumOfDate)) { WeekLimitedResponse.Details resde = new WeekLimitedResponse.Details(); - TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId()); + resde.setCoursePackageDiscountId(tCoursePackageDiscount.getId()); resde.setImage(coursePackage.getCoverDrawing()); resde.setCoursePackageName(coursePackage.getName()); CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(tCoursePackageDiscount.getCoursePackagePaymentConfigId()); @@ -281,6 +307,99 @@ return response; } + @Override + public ExchangeCoursePackageResponse getWeekFreeCourseDetails(Integer coursePackageDiscountId,String lat,String lon) { + ExchangeCoursePackageResponse packageResponse = new ExchangeCoursePackageResponse(); + TCoursePackageDiscount coursePackageDiscount = this.baseMapper.selectById(coursePackageDiscountId); + packageResponse.setCoursePackageDiscountId(coursePackageDiscount.getId()); + Integer coursePackageId = coursePackageDiscount.getCoursePackageId(); + + TCoursePackage coursePackage = tcpMapper.selectById(coursePackageId); + + packageResponse.setCoverDrawing(coursePackage.getCoverDrawing()); + packageResponse.setIntroduceDrawing(coursePackage.getIntroduceDrawing()); + packageResponse.setCoursePackageName(coursePackage.getName()); + + Store store = sreClient.queryStoreById(coursePackage.getStoreId()); + packageResponse.setStoreNameAddr(store.getName() +"(" +store.getAddress()+")"); + GetDistanceVo distanceVo = new GetDistanceVo(); + + distanceVo.setLatitude(lat); + distanceVo.setLongitude(lon); + distanceVo.setStoreId(coursePackage.getStoreId()); + long l = sreClient.calculateDistance(distanceVo); + packageResponse.setDistance(l); + + JSONArray jsonArray = JSON.parseArray(coursePackageDiscount.getContent()); + JSONObject jsonObject = jsonArray.getJSONObject(0); + CoursePackagePaymentConfig paymentConfig = cppcMapper.selectById(coursePackageDiscount.getCoursePackagePaymentConfigId()); + if (coursePackageDiscount.getType() == 3){ + Double cashPayment = jsonObject.getDouble("cashPayment"); + packageResponse.setClassHours(paymentConfig.getClassHours()); + packageResponse.setCostPrice(paymentConfig.getCashPayment()); + packageResponse.setDiscountPrice(cashPayment); + }else { + packageResponse.setClassHours(paymentConfig.getClassHours()); + + Integer cashPayment = jsonObject.getInteger("hour"); + packageResponse.setFreeClassHours(cashPayment); + + packageResponse.setCostPrice(paymentConfig.getCashPayment()); + TCoursePackageDiscount coursePackageDiscount1 = this.baseMapper.selectOne(new QueryWrapper<TCoursePackageDiscount>() + .eq("type", 1) + .eq("coursePackageId",coursePackage.getId())); + String content = coursePackageDiscount1.getContent(); + JSONObject jsonObject1 = JSON.parseObject(content); + Double vipPrice = jsonObject1.getDouble("num1"); + packageResponse.setDiscountPrice(vipPrice); + packageResponse.setWanpaiGold(paymentConfig.getPlayPaiCoin()); + } + List<Integer> weeks = StrUtils.dealStrToList(coursePackage.getClassWeeks()); + if (weeks.size() > 0){ + StringBuilder courWeeks = new StringBuilder("每"); + for (Integer integer : weeks) { + 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); + } + packageResponse.setWeekTime(courWeeks.toString()); + } + packageResponse.setTime(coursePackage.getClassStartTime()+"-"+coursePackage.getClassEndTime()); + + return packageResponse; + } + + @Override + public ResultUtil paymentDiscountCoursePack(Integer coursePackageDiscountId, Integer appuserId) { + // TODO: 2023/7/13 折扣课包支付 + return null; + } + private static boolean isDateWithinRange(Date date, Date startTime, Date endTime) { return date.after(startTime) && date.before(endTime); -- Gitblit v1.7.1