Commit 375645d5 by 徐康

Merge branch 'feature/20200727_麦咖啡p1v2支付券码路由' into qa

parents 1f37088f 2b2e8d88
......@@ -1137,7 +1137,7 @@ public class OrderSdkAdapter {
public Integer getDiscountType(QueryOrderAccountType queryOrderAccountType) {
//老订单服务订单优惠类型 2=满减优惠, 5=代金券, 6=商品券, 7=折扣券, 21=限时折扣金额,22=加价购,23=第二件N折,24=买M赠N,
//0=其他优惠,1=新用户立减,2=满减,3=抵价券,4=套餐赠送,5=满赠,6=超时赔付,7=部分满减,9=使用红包,
//10=代金券,11=提前下单立减活动,16=满免配送费,20=单品折扣,23=买赠,46=外卖加价购,118=商品券,200=积分,
//10=代金券,11=提前下单立减活动,16=满免配送费,20=单品折扣,23=买赠,46=外卖加价购,47=超级加购,118=商品券,200=积分,
//201=折扣,202=现金,203=微信,204=支付宝,205=优惠总金额,206=单品特价,207=买一送一,208=折扣券,215=会员卡优惠;
// 新订单服务优惠类型枚举 OrderSettlementType
Integer type = 0;
......@@ -1162,6 +1162,9 @@ public class OrderSdkAdapter {
case "PREMIUM_EXCHANGE":
type = 46;
break;
case "SUPER_PURCHASE":
type = 47;
break;
case "SECOND_DISCOUNT":
type = 20;
break;
......
......@@ -27,6 +27,7 @@ public enum OldOrderAccountType {
PREMIUM_EXCHANGE(22, "加价购", "PREMIUM_EXCHANGE"),
SECOND_DISCOUNT(23, "第二件N折", "SECOND_DISCOUNT"),
BUYM_SENDN(24, "买M赠N", "BUYM_SENDN"),
SUPER_PURCHASE(25, "超值加购", "SUPER_PURCHASE"),
CUSTOMER_SCORE(4, "积分兑换", "CUSTOMER_SCORE"),
WEIXIN(203,"微信优惠","WECHAT_DISCOUNT"),
ALIPAY(204,"支付宝优惠","ALIPAY_DISCOUNT"),
......
......@@ -26,6 +26,7 @@ public enum QueryOrderAccountType {
DISCOUNT_COUPON("DISCOUNT_COUPON", "折扣券"),
DISCOUNT_AMOUNT("DISCOUNT_AMOUNT", "限时折扣金额"),
PREMIUM_EXCHANGE("PREMIUM_EXCHANGE", "加价购"),
SUPER_PURCHASE("SUPER_PURCHASE", "超值加购"),
SECOND_DISCOUNT("SECOND_DISCOUNT", "第二件N折"),
BUYM_SENDN("BUYM_SENDN", "买M赠N"),
CUSTOMER_SCORE("CUSTOMER_SCORE", "积分兑换"),
......
......@@ -101,6 +101,9 @@ public class OrderAdapter {
public static final String PAY_CODE_10102 = "10102"; // svc储值卡支付,可用于判断订单是否用储值卡支付
@Value("${mccafe.partner.id}")
private String mcCafePartnerId;
@Value("${saas.reverseNotifyiDcUrl}")
private String reverseNotifyiDcUrl;
@Value("${saas.refund.notify.callback}")
......@@ -158,7 +161,13 @@ public class OrderAdapter {
createOrderProductDto.setIgnoreProductPrice(1);
products.add(createOrderProductDto);
if (CollectionUtils.isNotEmpty(cartGoodsDetailDto.getActivityDiscountsDtos())) {
createOrderProductDto.setAccounts(getAccounts(createOrderProductDto, cartGoodsDetailDto.getActivityDiscountsDtos()));
List<CreateOrderAccountRequest> accounts = null;
if(mcCafePartnerId.equals(createOrderDto.getCompanyId())) {
accounts = getMCCafeAccounts(createOrderProductDto, cartGoodsDetailDto.getActivityDiscountsDtos());
} else {
accounts = getAccounts(createOrderProductDto, cartGoodsDetailDto.getActivityDiscountsDtos());
}
createOrderProductDto.setAccounts(accounts);
}
}
}
......@@ -320,6 +329,24 @@ public class OrderAdapter {
return orderAccountDtos;
}
public List<CreateOrderAccountRequest> getMCCafeAccounts(CreateOrderProductRequest createOrderProductDto, List<ActivityDiscountsDto> activityDiscountsDtos) {
List<CreateOrderAccountRequest> orderAccountDtos = new ArrayList<>();
for (ActivityDiscountsDto activityDiscountsDto : activityDiscountsDtos) {
CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder()
.accountId(activityDiscountsDto.getActivityCode())
.name(activityDiscountsDto.getActivityName())
.price(activityDiscountsDto.getDiscountAmount().longValue())
.accountType(getQueryOrderAccountType(getOrderAccountType(activityDiscountsDto.getActivityType())))
.sequence(createOrderProductDto.getSequence())
.productId(createOrderProductDto.getSpecification())
.discountQty((activityDiscountsDto.getActualActivityGoodsNumber()==null||activityDiscountsDto.getActualActivityGoodsNumber()==0)
?createOrderProductDto.getNumber():activityDiscountsDto.getActualActivityGoodsNumber())
.build();
orderAccountDtos.add(createOrderAccountDto);
}
return orderAccountDtos;
}
/**
* 计算用户收货地址实际配送费
......@@ -2104,7 +2131,7 @@ public class OrderAdapter {
createOrderProductDemoDto.setParentProductId(cartGoodsDetailDto.getParentProductId());
createOrderProductDemoDto.setIsFixedProduct(cartGoodsDetailDto.getIsFixedProduct());
createOrderProductDemoDto.setCustomerCode(cartGoodsDetailDto.getCustomerCode());
//createOrderProductDemoDto.setProductCode(cartGoodsDetailDto.getProductCode());
createOrderProductDemoDto.setProductCode(cartGoodsDetailDto.getProductCode());
createOrderProductDemoDto.setHasStockProudct(cartGoodsDetailDto.isStockLimit());
createOrderProductDemoDto.setWeight(cartGoodsDetailDto.getWeight());
createOrderProductDemoDto.setUnit(cartGoodsDetailDto.getUnit());
......@@ -2161,6 +2188,9 @@ public class OrderAdapter {
if (ActivityTypeEnum.TYPE_320.getCode().equals(activityType)){
return OldOrderAccountType.MEMBER_PRICE_DISCOUNT;
}
if (ActivityTypeEnum.TYPE_23.getCode().equals(activityType)){
return OldOrderAccountType.SUPER_PURCHASE;
}
return OldOrderAccountType.BUYM_SENDN;
}
......
......@@ -21,4 +21,5 @@ public class ActivityDiscountsDto {
private String activityName;
private Integer discountAmount;
private Integer activityType;
private Integer actualActivityGoodsNumber;
}
......@@ -173,7 +173,7 @@ public class ShoppingCartGoodsDto {
private String customerCode;
/**商品货号**/
// private String productCode;
private String productCode;
/** 商品统计分类编号**/
private String classificationId;
......
......@@ -41,6 +41,7 @@ public enum ActivityTypeEnum {
/**
* 加价购
*/
TYPE_23(23, "超值加购"),
TYPE_81(81, "满额换购"),
TYPE_82(82, "满额阶梯换购(满多少金额,加价换购)"),
TYPE_100(100, "阶梯满数量打折"),
......
......@@ -68,6 +68,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.awt.geom.Point2D;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
......@@ -218,6 +220,9 @@ public class CheckMCCafeOrder {
String takeMealFlag = createOrderVo.getTakeMealFlag();
String takeMealTime = createOrderVo.getTakeMealTime();
String expectTime = createOrderVo.getExpectTime();
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setLenient(false);
//立即送达
if("0".equals(takeMealFlag)) {
......@@ -226,10 +231,10 @@ public class CheckMCCafeOrder {
throw new ServiceException(ResponseResult.STORE_ITEM_CHECK_CLOSE);
}
// 校验下单时间是否在营业时间内
checkOrderExpectTime(storeResponseDto, new Date());
checkOrderExpectTime(storeResponseDto, now);
// 外卖单选择立即送达的话,下单时间必须在店铺外卖时间内
if(createOrderVo.getOrderType().compareTo(CreateOrderType.TAKE_OUT.getCode()) == 0) {
checkTakeOutTime(storeResponseDto, new Date());
checkTakeOutTime(storeResponseDto, now);
}
}
//有预约时间的自提单
......@@ -246,10 +251,15 @@ public class CheckMCCafeOrder {
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.setTime(now);
calendar.add(Calendar.MINUTE, minute);
Date takeMealDateTime = calendar.getTime();
//当顾客指定送达时间小于当前时间,订单记录类型为即时单
if (takeMealDateTime != null && takeMealDateTime.before(now)) {
takeMealDateTime = null;
}
if(takeMealDateTime != null){
//校验营业时间
checkOrderExpectTime(storeResponseDto, takeMealDateTime);
......@@ -261,7 +271,22 @@ public class CheckMCCafeOrder {
}
//有预约时间的外卖单
else if(CreateOrderType.TAKE_OUT.getCode().equals(createOrderVo.getOrderType()) && StringUtils.isNotBlank(expectTime)) {
Date takeOutDateTime = DateUtil.convert2Date(createOrderVo.getExpectTime(), "yyyy-MM-dd HH:mm:ss");
Date takeOutDateTime = null;
try {
takeOutDateTime = sdf.parse(createOrderVo.getExpectTime());
} catch (ParseException e) {
throw new ServiceException(ResponseResult.ORDER_TAKE_OUT_TIME_ERROR);
}
//当顾客指定送达时间小于当前时间,订单记录类型为即时单
if (takeOutDateTime != null && takeOutDateTime.before(now)) {
takeOutDateTime = null;
}
//当顾客指定送达时间小于当前时间+提前预约时间时,订单记录类型为即时单
if (takeOutDateTime != null && storeResponseDto.getServiceTime() != null
&& takeOutDateTime.before(DateUtil.addMinutes(now, storeResponseDto.getServiceTime()))) {
takeOutDateTime = null;
}
if(takeOutDateTime != null) {
//校验营业时间
checkOrderExpectTime(storeResponseDto, takeOutDateTime);
......
......@@ -30,6 +30,7 @@ public enum OrderSettlementType {
ITEM_DISCOUNT(20, "单品折扣"),
BUY_GIFT(23,"买赠"),
TAKEAWAY_ADD_PRICE(46, "外卖加价购"),
SUPER_PURCHASE(47, "超值加购"),
PRODUCT_COUPON(118, "商品券"),
POINTS(200, "积分"),
......
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