Commit db534d41 by chongfu.liang

Merge branch 'feature/2.0.9-购物车检查券是否可用' into develop

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
#	order-application-service/src/main/resources/logback.xml
#	shopping-cart-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
parents 65d9f2a5 88b0ef45
...@@ -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{
...@@ -126,4 +131,32 @@ public class GetCouponDetailResponseDto { ...@@ -126,4 +131,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;
}
} }
...@@ -193,6 +193,7 @@ public enum ResponseResult { ...@@ -193,6 +193,7 @@ public enum ResponseResult {
COUPON_INVAILD("46014", "优惠券失效"), COUPON_INVAILD("46014", "优惠券失效"),
COUPON_TYPE_ERROR("46015","优惠类型错误"), COUPON_TYPE_ERROR("46015","优惠类型错误"),
PAY_ERROR("46016","支付类型错误"), PAY_ERROR("46016","支付类型错误"),
COUPON_DATETIME_INVAILD("46017", "优惠券在当前时间不可用"),
/** /**
* 加价购商品 * 加价购商品
*/ */
......
...@@ -74,6 +74,9 @@ import java.awt.geom.Point2D; ...@@ -74,6 +74,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;
...@@ -559,6 +562,8 @@ public class CheckOrder { ...@@ -559,6 +562,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());
...@@ -655,6 +660,49 @@ public class CheckOrder { ...@@ -655,6 +660,49 @@ public class CheckOrder {
return shoppingCartGoodsDto; return shoppingCartGoodsDto;
} }
private void checkCouonRedeemTime(List<GetCouponDetailResponseDto.ActiveRedeemTimeInterval> activeRedeemTimeIntervalList) {
boolean verificationPassed = false;
if (CollectionUtils.isNotEmpty(activeRedeemTimeIntervalList)){
for (GetCouponDetailResponseDto.ActiveRedeemTimeInterval dateLimit : activeRedeemTimeIntervalList){
boolean dayCheck = true;
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){ //限制
dayCheck = false;
}
}
boolean timeCheck = true;
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)){
timeCheck = false;
}
}
if (dayCheck && timeCheck){
verificationPassed = true;
break;
}
}
} else {
verificationPassed = true;
}
if (!verificationPassed){
throw new ServiceException(ResponseResult.COUPON_DATETIME_INVAILD);
}
}
/** /**
* 获取门店配送信息 * 获取门店配送信息
*/ */
......
...@@ -360,7 +360,6 @@ public class OrderServiceImpl implements Orderservice { ...@@ -360,7 +360,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) {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<configuration> <configuration>
<property resource="application.properties"/> <property resource="application.properties"/>
<property name="PROJECT_NAME" value="${spring.application.name}" /> <property name="PROJECT_NAME" value="${spring.application.name}" />
<property name="LOG_HOME" value="/tmp/logs" /> <property name="LOG_HOME" value="/data/logs" />
<!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, --> <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
...@@ -79,12 +79,6 @@ ...@@ -79,12 +79,6 @@
<logger name="com.freemud" level="debug" additivity="false"> <logger name="com.freemud" level="debug" additivity="false">
<appender-ref ref="FREEMUD_TEST_DEBUG"/> <appender-ref ref="FREEMUD_TEST_DEBUG"/>
</logger> </logger>
<logger name="cn.freemud" level="debug" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
<logger name="com.freemud" level="debug" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
</springProfile> </springProfile>
<springProfile name="pro"> <springProfile name="pro">
......
...@@ -102,6 +102,7 @@ public enum ResponseResult { ...@@ -102,6 +102,7 @@ public enum ResponseResult {
SHOPPING_CART_REQUEST_NOT_EMPTY("44029", "购物车查询条件不能为空"), SHOPPING_CART_REQUEST_NOT_EMPTY("44029", "购物车查询条件不能为空"),
SHOPPING_CART_BUY_ONE_SEND_GOODS_NOT_EMPTY("44030", "未查询到寄件活动商品"), SHOPPING_CART_BUY_ONE_SEND_GOODS_NOT_EMPTY("44030", "未查询到寄件活动商品"),
SHOPPING_CART_BUY_ONE_SEND_GOODS_ERR("44031", "寄件活动商品错误"), SHOPPING_CART_BUY_ONE_SEND_GOODS_ERR("44031", "寄件活动商品错误"),
SHOPPING_CART_COUPON_NOT_USE("44032", "优惠券不可用"),
// SHOPPING_CART_PRODUCT_CAN_NOT_USE("44023", "商品不可用"), // SHOPPING_CART_PRODUCT_CAN_NOT_USE("44023", "商品不可用"),
// SHOPPING_CART_COUPON_CAN_NOT_USE("44024", "商品券不可用"), // SHOPPING_CART_COUPON_CAN_NOT_USE("44024", "商品券不可用"),
......
...@@ -647,6 +647,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -647,6 +647,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
// 在原价、现价、折扣价上增加第一次使用会员卡的费用 // 在原价、现价、折扣价上增加第一次使用会员卡的费用
this.addNeedCardAmount(shoppingCartInfoRequestVo, shoppingCartGoodsResponseVo); this.addNeedCardAmount(shoppingCartInfoRequestVo, shoppingCartGoodsResponseVo);
} }
// 校验入参券是否可用
if (!checkAvailableCoupon(shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo.getCouponCode())){
return ResponseUtil.error(ResponseResult.SHOPPING_CART_COUPON_NOT_USE);
};
return ResponseUtil.success(shoppingCartGoodsResponseVo); return ResponseUtil.success(shoppingCartGoodsResponseVo);
} }
...@@ -670,9 +675,16 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -670,9 +675,16 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
if (goodsList == null || !ResponseResult.SUCCESS.getCode().equals(goodsList.getCode())) { if (goodsList == null || !ResponseResult.SUCCESS.getCode().equals(goodsList.getCode())) {
return goodsList; return goodsList;
} }
String partnerId = shoppingCartInfoRequestVo.getPartnerId(); String partnerId = shoppingCartInfoRequestVo.getPartnerId();
String storeId = shoppingCartInfoRequestVo.getShopId(); String storeId = shoppingCartInfoRequestVo.getShopId();
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = goodsList.getResult(); ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = goodsList.getResult();
// 校验入参券是否可用
if (!checkAvailableCoupon(shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo.getCouponCode())){
return ResponseUtil.error(ResponseResult.SHOPPING_CART_COUPON_NOT_USE);
};
//SVC卡支付 //SVC卡支付
SVCCardPay(shoppingCartInfoRequestVo.getCardCode(), shoppingCartInfoRequestVo.getReceiveId(), partnerId, storeId, shoppingCartGoodsResponseVo); SVCCardPay(shoppingCartInfoRequestVo.getCardCode(), shoppingCartInfoRequestVo.getReceiveId(), partnerId, storeId, shoppingCartGoodsResponseVo);
return ResponseUtil.success(shoppingCartGoodsResponseVo); return ResponseUtil.success(shoppingCartGoodsResponseVo);
...@@ -2137,4 +2149,20 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2137,4 +2149,20 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
return false; return false;
} }
} }
private boolean checkAvailableCoupon(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, String couponCode) {
if (StringUtils.isBlank(couponCode)){
return true;
}
if (shoppingCartGoodsResponseVo == null || shoppingCartGoodsResponseVo.getAvailableCoupon() == null || shoppingCartGoodsResponseVo.getAvailableCoupon().getDisableCoupons() == null){
return true;
}
List<ActivityCouponBean> disableCoupons = shoppingCartGoodsResponseVo.getAvailableCoupon().getDisableCoupons();
ActivityCouponBean activityCouponBean = disableCoupons.stream().filter(p -> p.getCouponCode().equals(couponCode)).findFirst().orElse(null);
if (activityCouponBean == null){
return true;
} else {
return false;
}
}
} }
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