lisy
2023-07-10 a6ef8f0dd977a30abd878f8e6106630b97d6e5b0
本周福利:接口开发
9个文件已修改
3个文件已添加
289 ■■■■■ 已修改文件
cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/other/model/GetDistanceVo.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/model/dto/DiscountJsonDto.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/model/vo/response/WeekLimitedResponse.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/util/DateTimeHelper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/feignclient/model/GetDistanceVo.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
@@ -206,7 +206,7 @@
    }
    /**
     * 课时详情-支付
     * 充值中心-支付
     */
    @ResponseBody
    @PostMapping("/api/useBenefit/payment")
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java
@@ -1,7 +1,14 @@
package com.dsh.course.controller;
import com.dsh.course.entity.TCoursePackage;
import com.dsh.course.model.vo.response.WeekLimitedResponse;
import com.dsh.course.service.TCoursePackageDiscountService;
import com.dsh.course.service.TCoursePackageService;
import com.dsh.course.util.ResultUtil;
import com.dsh.course.util.TokenUtil;
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.*;
@@ -16,6 +23,13 @@
    @Autowired
    private TCoursePackageService coursePackageService;
    @Autowired
    private TCoursePackageDiscountService tcpdService;
    @Autowired
    private TokenUtil tokenUtil;
    /**
     * 根据id获取课包
@@ -33,4 +47,27 @@
            return null;
        }
    }
    /**
     * 本周福利列表
     */
    @ResponseBody
    @PostMapping("/api/useBenefit/weekLimitedBenefit")
    @ApiOperation(value = "使用福利-本周福利限时折扣列表", tags = {"APP-开始上课"})
    @ApiImplicitParams({
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
            @ApiImplicitParam(name = "discountType",value = "默认显示 限时折扣 (1限时折扣 2赠送课时)")
    })
    public ResultUtil<WeekLimitedResponse> thisWeeksBenefitList(Integer discountType,String lon,String lat){
        try {
            Integer appUserId = tokenUtil.getUserIdFormRedis();
            if(null == appUserId){
                return ResultUtil.tokenErr();
            }
            return ResultUtil.success(tcpdService.getWeeksBenefitCourse(appUserId,discountType,lon,lat));
        }catch (Exception e){
            return ResultUtil.runErr();
        }
    }
}
cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java
@@ -1,8 +1,10 @@
package com.dsh.course.feignclient.other;
import com.dsh.course.feignclient.other.model.GetDistanceVo;
import com.dsh.course.feignclient.other.model.Store;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@@ -30,4 +32,7 @@
     */
    @PostMapping("/store/queryStoreById")
    Store queryStoreById(Integer id);
    @PostMapping("/base/protocol/storeDetail/distanceCal")
    public long calculateDistance(@RequestBody GetDistanceVo distanceVo);
}
cloud-server-course/src/main/java/com/dsh/course/feignclient/other/model/GetDistanceVo.java
New file
@@ -0,0 +1,19 @@
package com.dsh.course.feignclient.other.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class GetDistanceVo {
    @ApiModelProperty(value = "经度")
    private String longitude;
    @ApiModelProperty(value = "纬度")
    private String latitude;
    @ApiModelProperty(value = "门店id")
    private Integer storeId;
}
cloud-server-course/src/main/java/com/dsh/course/model/dto/DiscountJsonDto.java
@@ -10,6 +10,12 @@
@Data
public class DiscountJsonDto {
    /**
     * type为1,为会员折扣现金支付金额;type为3,为限时折扣现金支付金额
     */
    @ApiModelProperty(value = "课时数")
    private Integer courseHours;
    /**
     * type为1,为会员折扣现金支付金额;type为3,为限时折扣现金支付金额
     */
cloud-server-course/src/main/java/com/dsh/course/model/vo/response/WeekLimitedResponse.java
New file
@@ -0,0 +1,54 @@
package com.dsh.course.model.vo.response;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class WeekLimitedResponse {
    @ApiModelProperty(value = "折扣类型 1限时折扣 2赠送课时")
    private Integer discountType;
    @ApiModelProperty(value = "数据列表")
    private List<Details> list;
    @Data
    public static class Details{
        @ApiModelProperty(value = "封面图")
        private String image;
        @ApiModelProperty(value = "课包名称")
        private String coursePackageName;
        @ApiModelProperty(value = "课包课时数")
        private Integer courseHours;
        @ApiModelProperty(value = "赠送课时数(赠送课时取改字段)")
        private Integer donateHours;
        @ApiModelProperty(value = "今日/明日/周x")
        private String dataTime;
        @ApiModelProperty(value = "日期")
        private Date date;
        @ApiModelProperty(value = "原价")
        private Integer originalPrice;
        @ApiModelProperty(value = "折后价")
        private Integer discountPrice;
        @ApiModelProperty(value = "状态")
        private Integer status;
        @ApiModelProperty(value = "门店距离")
        private long storeDistance;
    }
}
cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.course.entity.TCoursePackageDiscount;
import com.dsh.course.model.vo.response.WeekLimitedResponse;
/**
@@ -14,4 +15,6 @@
 */
public interface TCoursePackageDiscountService extends IService<TCoursePackageDiscount> {
    WeekLimitedResponse getWeeksBenefitCourse(Integer appUserId,Integer discountType,String lon,String lat);
}
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java
@@ -1,10 +1,25 @@
package com.dsh.course.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.course.entity.TCoursePackage;
import com.dsh.course.entity.TCoursePackageDiscount;
import com.dsh.course.feignclient.other.StoreClient;
import com.dsh.course.feignclient.other.model.GetDistanceVo;
import com.dsh.course.mapper.TCoursePackageDiscountMapper;
import com.dsh.course.mapper.TCoursePackageMapper;
import com.dsh.course.model.vo.response.WeekLimitedResponse;
import com.dsh.course.service.TCoursePackageDiscountService;
import com.dsh.course.util.DateTimeHelper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * <p>
@@ -17,4 +32,78 @@
@Service
public class TCoursePackageDiscountServiceImpl extends ServiceImpl<TCoursePackageDiscountMapper, TCoursePackageDiscount> implements TCoursePackageDiscountService {
    @Resource
    private TCoursePackageMapper tcpMapper;
    @Resource
    private StoreClient sreClient;
    @Override
    public WeekLimitedResponse getWeeksBenefitCourse(Integer appUserId,Integer discountType,String lon,String lat) {
        Date start = DateTimeHelper.getTodayTime();
        Date lastTime = DateTimeHelper.getWeekOfLastDay();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        WeekLimitedResponse response= new WeekLimitedResponse();
        List<WeekLimitedResponse.Details> list = new ArrayList<>();
        QueryWrapper<TCoursePackageDiscount> tCoursePackageDiscountQueryWrapper = new QueryWrapper<>();
        tCoursePackageDiscountQueryWrapper.eq("auditStatus",2 );
        List<TCoursePackageDiscount> tCoursePackageDiscounts = new ArrayList<>();
        if (null == discountType || discountType == 1){
            tCoursePackageDiscountQueryWrapper.eq("type",3);
            response.setDiscountType(1);
            tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper);
            if (tCoursePackageDiscounts.size() > 0){
                for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
                    WeekLimitedResponse.Details ls = new WeekLimitedResponse.Details();
                    try {
                        ObjectMapper objectMapper = new ObjectMapper();
                        JsonNode rootNode = null;
                        rootNode = objectMapper.readTree(tCoursePackageDiscount.getContent());
                        String courseHours = rootNode.get("courseHours").asText();
                        String lifespanEnd = rootNode.get("lifespanEnd").asText();
                        Date endTime = simpleDateFormat.parse(lifespanEnd);
                        if (endTime.compareTo(lastTime) < 0){
                            continue;
                        }
                        TCoursePackage coursePackage = tcpMapper.selectById(tCoursePackageDiscount.getCoursePackageId());
                        GetDistanceVo distanceVo = new GetDistanceVo();
                        distanceVo.setLatitude(lat);
                        distanceVo.setLongitude(lon);
                        distanceVo.setStoreId(coursePackage.getStoreId());
                        ls.setStoreDistance(sreClient.calculateDistance(distanceVo));
                        // TODO: 2023/7/10 限时折扣查询
                        list.add(ls);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }else {
            tCoursePackageDiscountQueryWrapper.eq("type",4);
            response.setDiscountType(2);
            tCoursePackageDiscounts = this.baseMapper.selectList(tCoursePackageDiscountQueryWrapper);
            if (tCoursePackageDiscounts.size() > 0){
                for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
                    try {
                        ObjectMapper objectMapper = new ObjectMapper();
                        JsonNode rootNode = null;
                        rootNode = objectMapper.readTree(tCoursePackageDiscount.getContent());
                        String courseHours = rootNode.get("courseHours").asText();
                        String lifespanStart = rootNode.get("lifespanStart").asText();
                        String lifespanEnd = rootNode.get("lifespanEnd").asText();
                        String classHours = rootNode.get("classHours").asText();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        return response;
    }
}
cloud-server-course/src/main/java/com/dsh/course/util/DateTimeHelper.java
@@ -2,9 +2,8 @@
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.time.temporal.TemporalAdjusters;
import java.util.*;
@@ -1757,13 +1756,20 @@
        return list;
    }
    /*public static void main(String[] args) throws ParseException {
        List<Date> allTheDateOftheMonth = getAllTheDateOftheMonth(new Date());
        Date date = allTheDateOftheMonth.get(11);
        System.out.println(date.toLocaleString());
        int i = daysBetween(new Date(), date);
        System.out.println(i);
    }*/
    public static Date getTodayTime(){
        // 获取当天的开始时间(0点)
        LocalDate today = LocalDate.now();
        LocalDateTime startOfDay = LocalDateTime.of(today, LocalTime.MIN);
        return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());
    }
    public static Date getWeekOfLastDay(){
        // 获取本周的最后一天的时间(23点59分59秒)
        LocalDate today = LocalDate.now();
        LocalDate lastDayOfWeek = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
        LocalDateTime endOfDay = LocalDateTime.of(lastDayOfWeek, LocalTime.MAX);
        return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
    }
}
cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java
@@ -3,16 +3,12 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.other.entity.Store;
import com.dsh.other.feignclient.model.GetAllNearbyStoreList;
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.feignclient.model.*;
import com.dsh.other.model.BaseVo;
import com.dsh.other.model.QueryStoreList;
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;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
@@ -85,6 +81,20 @@
        return storeInfos;
    }
    /**
     * 根据门店坐标与传入坐标,计算距离
     * @param distanceVo
     * @return
     */
    @PostMapping("/base/protocol/storeDetail/distanceCal")
    public long calculateDistance(@RequestBody GetDistanceVo distanceVo){
        String current = distanceVo.getLongitude()+","+distanceVo.getLatitude();
        Store store = storeService.getById(distanceVo.getStoreId());
        String result = store.getLon()+","+store.getLat();
        String distanceTOKilometer = gdMapGeocodingUtil.getDistanceTOKilometer(current, result);
        return Long.parseLong(distanceTOKilometer);
    }
    @PostMapping("/base/protocol/storeDetail/storeOfLonLat")
    public List<StoreLonLatList> getAllStoreLonLats(@RequestBody GetAllNearbyStoreList list ){
cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java
@@ -1,9 +1,6 @@
package com.dsh.other.feignclient;
import com.dsh.other.feignclient.model.GetAllNearbyStoreList;
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.feignclient.model.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -25,4 +22,8 @@
    @PostMapping("/base/protocol/storeDetail/storeOfLonLat")
     List<StoreLonLatList> getAllStoreLonLats(@RequestBody GetAllNearbyStoreList list);
    @PostMapping("/base/protocol/storeDetail/distanceCal")
    public long calculateDistance(@RequestBody GetDistanceVo distanceVo);
}
cloud-server-other/src/main/java/com/dsh/other/feignclient/model/GetDistanceVo.java
New file
@@ -0,0 +1,19 @@
package com.dsh.other.feignclient.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class GetDistanceVo {
    @ApiModelProperty(value = "经度")
    private String longitude;
    @ApiModelProperty(value = "纬度")
    private String latitude;
    @ApiModelProperty(value = "门店id")
    private Integer storeId;
}