Commit 9119245f by chongfu.liang

创建订单添加券校验

parent 116adeb2
...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; ...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.List; import java.util.List;
@Data @Data
...@@ -31,6 +32,10 @@ public class GetCouponDetailResponseDto { ...@@ -31,6 +32,10 @@ public class GetCouponDetailResponseDto {
private Active active; private Active active;
private List<ActiveProduct> activeProduct; private List<ActiveProduct> activeProduct;
private List<ActiveRestrictionVOS> activeRestrictionVOS; private List<ActiveRestrictionVOS> activeRestrictionVOS;
/**
* 可核销周,时间段设置
*/
private List<ActiveRedeemTimeInterval> activeRedeemTimeIntervalList;
} }
@Data @Data
public static class Active{ public static class Active{
...@@ -122,4 +127,32 @@ public class GetCouponDetailResponseDto { ...@@ -122,4 +127,32 @@ public class GetCouponDetailResponseDto {
private String errorCode; private String errorCode;
private String parameter; private String parameter;
} }
@Data
public static class ActiveRedeemTimeInterval{
private Long id;
private Integer partnerid;
private Integer activeid;
/**
* 启用时间 时分秒
*/
private String begintime;
/**
* 结束时间 时分秒
*/
private String endtime;
private Integer status;
private Date createdate;
private String createuser;
/**
* 周几可用, 7位数字,第一位为周日
*/
private String weekday;
/**
* 限制使用日期, 年-月-, 多个竖线分割,仅在列表内的日期可用
*/
private String limitdates;
}
} }
...@@ -185,6 +185,7 @@ public enum ResponseResult { ...@@ -185,6 +185,7 @@ public enum ResponseResult {
COUPON_VERIFICATION_FAIL("46012","优惠券核销失败"), COUPON_VERIFICATION_FAIL("46012","优惠券核销失败"),
COUPON_CALLBACK_FAIL("46013","优惠券移除卡包失败"), COUPON_CALLBACK_FAIL("46013","优惠券移除卡包失败"),
COUPON_INVAILD("46014", "优惠券失效"), COUPON_INVAILD("46014", "优惠券失效"),
COUPON_DATETIME_INVAILD("46015", "优惠券在当前时间不可用"),
/** /**
* 加价购商品 * 加价购商品
*/ */
......
...@@ -67,6 +67,9 @@ import java.awt.geom.Point2D; ...@@ -67,6 +67,9 @@ import java.awt.geom.Point2D;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -498,6 +501,8 @@ public class CheckOrder { ...@@ -498,6 +501,8 @@ public class CheckOrder {
throw new ServiceException(ResponseResult.COUPON_GETINFO_INVAILD); throw new ServiceException(ResponseResult.COUPON_GETINFO_INVAILD);
} }
} }
List<GetCouponDetailResponseDto.ActiveRedeemTimeInterval> activeRedeemTimeIntervalList = getCouponDetailResponseDto.getDetails().get(0).getActiveRedeemTimeIntervalList();
checkCouonRedeemTime(activeRedeemTimeIntervalList);
String activeCode = getCouponDetailResponseDto.getDetails().get(0).getActive().getActiveCode(); String activeCode = getCouponDetailResponseDto.getDetails().get(0).getActive().getActiveCode();
// 校验点餐方式,查询购物车接口内部已校验 // 校验点餐方式,查询购物车接口内部已校验
shoppingCartInfoRequestVo.setCouponCode(createOrderVo.getCouponCode()); shoppingCartInfoRequestVo.setCouponCode(createOrderVo.getCouponCode());
...@@ -525,6 +530,36 @@ public class CheckOrder { ...@@ -525,6 +530,36 @@ public class CheckOrder {
return shoppingCartGoodsDto; return shoppingCartGoodsDto;
} }
private void checkCouonRedeemTime(List<GetCouponDetailResponseDto.ActiveRedeemTimeInterval> activeRedeemTimeIntervalList) {
if (CollectionUtils.isNotEmpty(activeRedeemTimeIntervalList)){
for (GetCouponDetailResponseDto.ActiveRedeemTimeInterval dateLimit : activeRedeemTimeIntervalList){
String weekday = dateLimit.getWeekday(); // 日期限制 0011100 周日开始,0表示不可用
if (StringUtils.isNotBlank(weekday)){ // 存在校验周几
char[] chars = weekday.toCharArray();
int dayOfWeek = LocalDate.now().getDayOfWeek().getValue(); // 从周一开始
if (dayOfWeek == 7){
dayOfWeek = 0;
}
if (Integer.parseInt(String.valueOf(chars[dayOfWeek])) == 0){ //限制
throw new ServiceException(ResponseResult.COUPON_DATETIME_INVAILD);
}
}
String begintime = dateLimit.getBegintime(); // 开始时间 00:00:00
String endtime = dateLimit.getEndtime(); // 结束时间 12:59:59
if (StringUtils.isNotBlank(begintime) && StringUtils.isNotBlank(endtime)){ // 存在校验时段
String[] beginTimeArr = begintime.split(":");
String[] endTimeArr = endtime.split(":");
LocalTime beginLocalTime = LocalTime.of(Integer.valueOf(beginTimeArr[0]), Integer.valueOf(beginTimeArr[1]), Integer.valueOf(beginTimeArr[2]));
LocalTime endLocalTime = LocalTime.of(Integer.valueOf(endTimeArr[0]), Integer.valueOf(endTimeArr[1]), Integer.valueOf(endTimeArr[2]));
LocalTime now = LocalTime.now();
if (now.isBefore(beginLocalTime) || now.isAfter(endLocalTime)){
throw new ServiceException(ResponseResult.COUPON_DATETIME_INVAILD);
}
}
}
}
}
/** /**
* 获取门店配送信息 * 获取门店配送信息
*/ */
......
...@@ -325,7 +325,6 @@ public class OrderServiceImpl implements Orderservice { ...@@ -325,7 +325,6 @@ public class OrderServiceImpl implements Orderservice {
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件 // 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto, shoppingCartGoodsDto, trackingNo); Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto, shoppingCartGoodsDto, trackingNo);
OrderExtInfoDto extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo, shoppingCartGoodsDto); OrderExtInfoDto extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo, shoppingCartGoodsDto);
//1.9.2套餐需求同步优化创建订单代码 //1.9.2套餐需求同步优化创建订单代码
BaseResponse createOrderOperateDtoResponse = this.sdkCreateOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, userLoginInfoDto); BaseResponse createOrderOperateDtoResponse = this.sdkCreateOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, userLoginInfoDto);
if(createOrderOperateDtoResponse == null || !ResponseResult.SUCCESS.getCode().equals(createOrderOperateDtoResponse.getCode()) || createOrderOperateDtoResponse.getResult() == null ) { if(createOrderOperateDtoResponse == null || !ResponseResult.SUCCESS.getCode().equals(createOrderOperateDtoResponse.getCode()) || createOrderOperateDtoResponse.getResult() == null ) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment