lisy
2023-07-13 711050ca38dcc0dfd3b31978372933cdf2e1640d
使用福利:本周福利的折扣详情接口
4个文件已修改
1个文件已添加
232 ■■■■■ 已修改文件
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/model/vo/response/ExchangeCoursePackageResponse.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/model/vo/response/WeekLimitedResponse.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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();
        }
    }
}
cloud-server-course/src/main/java/com/dsh/course/model/vo/response/ExchangeCoursePackageResponse.java
New file
@@ -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;
}
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;
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);
}
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);