From a6ef8f0dd977a30abd878f8e6106630b97d6e5b0 Mon Sep 17 00:00:00 2001
From: lisy <linlangsur163@163.com>
Date: 星期一, 10 七月 2023 16:49:14 +0800
Subject: [PATCH] 本周福利:接口开发
---
cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java | 2
cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java | 3
cloud-server-other/src/main/java/com/dsh/other/feignclient/StoreClient.java | 9 +
cloud-server-course/src/main/java/com/dsh/course/util/DateTimeHelper.java | 26 +++--
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageController.java | 37 +++++++
cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java | 5 +
cloud-server-course/src/main/java/com/dsh/course/model/dto/DiscountJsonDto.java | 6 +
cloud-server-other/src/main/java/com/dsh/other/feignclient/model/GetDistanceVo.java | 19 +++
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java | 89 +++++++++++++++++
cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java | 20 +++-
cloud-server-course/src/main/java/com/dsh/course/model/vo/response/WeekLimitedResponse.java | 54 ++++++++++
cloud-server-course/src/main/java/com/dsh/course/feignclient/other/model/GetDistanceVo.java | 19 +++
12 files changed, 269 insertions(+), 20 deletions(-)
diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
index 24ef20b..cbe0d58 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java
@@ -206,7 +206,7 @@
}
/**
- * 课时详情-支付
+ * 充值中心-支付
*/
@ResponseBody
@PostMapping("/api/useBenefit/payment")
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 3c83277..1cc67b4 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,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();
+ }
+ }
+
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java
index eb27313..447b5ae 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/StoreClient.java
+++ b/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);
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/model/GetDistanceVo.java b/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/model/GetDistanceVo.java
new file mode 100644
index 0000000..26de9c2
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/feignclient/other/model/GetDistanceVo.java
@@ -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;
+
+}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/dto/DiscountJsonDto.java b/cloud-server-course/src/main/java/com/dsh/course/model/dto/DiscountJsonDto.java
index 3eba0a3..35f34af 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/model/dto/DiscountJsonDto.java
+++ b/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,为限时折扣现金支付金额
*/
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
new file mode 100644
index 0000000..0e55ce8
--- /dev/null
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/vo/response/WeekLimitedResponse.java
@@ -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;
+
+ }
+
+}
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 bb3d830..852deda 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,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);
+
}
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 112efa9..3d92269 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
@@ -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;
+ }
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/DateTimeHelper.java b/cloud-server-course/src/main/java/com/dsh/course/util/DateTimeHelper.java
index ea6f35b..97688c4 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/util/DateTimeHelper.java
+++ b/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());
+ }
}
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 344a813..375e825 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
@@ -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 ){
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
index 035d317..0dc55b4 100644
--- 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
@@ -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);
}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/GetDistanceVo.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/GetDistanceVo.java
new file mode 100644
index 0000000..057f265
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/GetDistanceVo.java
@@ -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;
+
+}
--
Gitblit v1.7.1