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