Commit 68714607 by 徐康

Merge branch 'feature/xukang_20210321_麦咖啡p5v9'

# Conflicts:
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
parents 88f8a2b1 06b633c9
......@@ -968,6 +968,7 @@ public class OrderSdkAdapter {
productDiscount.setCustomerCode("");
productDiscount.setAddInfo(orderSettlementResp.getExtInfo());
productDiscount.setProductId(orderSettlementResp.getProductId());
productDiscount.setExtInfo(orderSettlementResp.getExtInfo());
discountList.add(productDiscount);
}
}
......@@ -1416,6 +1417,9 @@ public class OrderSdkAdapter {
case "FULL_BUYM_SENDN":
type=230;
break;
case "MONTH_CARD_TOTAL_DISCOUNT":
type=231;
break;
case "SINGLE_PRODUCT_REDUCTION":
type=22;
break;
......@@ -2035,6 +2039,9 @@ public class OrderSdkAdapter {
case 230:
newOrderAccountType=OldOrderAccountType.FULL_BUYM_SENDN.getCode();
break;
case 231:
newOrderAccountType=OldOrderAccountType.MONTH_CARD_TOTAL_DISCOUNT.getCode();
break;
case 22:
newOrderAccountType=OldOrderAccountType.SINGLE_PRODUCT_REDUCTION.getCode();
break;
......
......@@ -43,6 +43,7 @@ public enum OldOrderAccountType {
NEW_USER_DISCOUNT(101, "新用户立减", "NEW_USER_DISCOUNT"),
PRICE_DEDUCTION_COUPON(103, "抵价券", "PRICE_DEDUCTION_COUPON"),
TOTAL_DISCOUNT(205, "优惠总金额", "TOTAL_DISCOUNT"),
MONTH_CARD_TOTAL_DISCOUNT(231, "月享卡优惠总金额", "MONTH_CARD_TOTAL_DISCOUNT"),
GATHER_SPOT(221, "集点活动","GATHER_SPOT"),
MEMBER_PRICE_DISCOUNT(220, "会员价优惠", "MEMBER_PRICE_DISCOUNT"),
COCO_PRODUCT_CASH_COUPON(36, "coco商品代金券","COCO_PRODUCT_CASH_COUPON"),
......
......@@ -37,6 +37,7 @@ public enum QueryOrderAccountType {
CARD_DISCOUNT_AMOUNT("CARD_DISCOUNT_AMOUNT", "会员卡优惠金额"),
XY_DISCOUNT("XY_DISCOUNT", "x件y折"),
TOTAL_DISCOUNT("TOTAL_DISCOUNT", "优惠总金额"),
MONTH_CARD_TOTAL_DISCOUNT("MONTH_CARD_TOTAL_DISCOUNT", "月享卡优惠总金额"),
ONLINE_PAY("ONLINE_PAY", "线上支付"),
FULL_DISTRIBUTION_FEE("FULL_DISTRIBUTION_FEE", "满减配送费"),
OFFLINE_PAY("OFFLINE_PAY", "线下支付"),
......
......@@ -716,6 +716,8 @@ public class QueryOrdersResponse {
private String addInfo;
private String productId;
private String extInfo;
}
@NoArgsConstructor
......
......@@ -243,7 +243,8 @@ public class OrderAdapter {
if(ActivityTypeEnum.TYPE_11.getCode().equals(activityDiscountsDto.getActivityType())
|| ActivityTypeEnum.TYPE_12.getCode().equals(activityDiscountsDto.getActivityType())
|| ActivityTypeEnum.TYPE_32.getCode().equals(activityDiscountsDto.getActivityType())
|| ActivityTypeEnum.TYPE_37.getCode().equals(activityDiscountsDto.getActivityType())) {
|| ActivityTypeEnum.TYPE_37.getCode().equals(activityDiscountsDto.getActivityType())
|| ActivityTypeEnum.TYPE_38.getCode().equals(activityDiscountsDto.getActivityType())) {
jsonObject.put("tenderId", activityDiscountsDto.getTenderId());
} else if(ActivityTypeEnum.TYPE_34.getCode().equals(activityDiscountsDto.getActivityType())) {
jsonObject.put("customerCode", activityDiscountsDto.getTenderId());
......@@ -317,6 +318,16 @@ public class OrderAdapter {
.build();
orderAccountDtos.add(createOrderAccountDto);
}
if(shoppingCartGoodsDto.getMonthCardDiscount() != null && shoppingCartGoodsDto.getMonthCardDiscount().getDiscountAmount() != 0) {
CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder()
.accountId("")
.name(shoppingCartGoodsDto.getMonthCardDiscount().getDiscountDesc())
.price(shoppingCartGoodsDto.getMonthCardDiscount().getDiscountAmount())
.accountType(QueryOrderAccountType.MONTH_CARD_TOTAL_DISCOUNT)
.sequence(orderAccountIndex++)
.build();
orderAccountDtos.add(createOrderAccountDto);
}
createOrderDto.setAccounts(CollectionUtils.isNotEmpty(orderAccountDtos) ? orderAccountDtos : Collections.emptyList());
// update by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
......@@ -442,7 +453,8 @@ public class OrderAdapter {
.build();
JSONObject jsonObject = new JSONObject();
if(ActivityTypeEnum.TYPE_32.getCode().equals(activityDiscountsDto.getActivityType())
|| ActivityTypeEnum.TYPE_37.getCode().equals(activityDiscountsDto.getActivityType())) {
|| ActivityTypeEnum.TYPE_37.getCode().equals(activityDiscountsDto.getActivityType())
|| ActivityTypeEnum.TYPE_38.getCode().equals(activityDiscountsDto.getActivityType())) {
jsonObject.put("tenderId", activityDiscountsDto.getTenderId());
}
if(null != activityDiscountsDto.getExtendType()) {
......@@ -1356,7 +1368,7 @@ public class OrderAdapter {
String customerScorePrompt = null;
if (CollectionUtils.isNotEmpty(ordersBean.getAccountList())) {
for (QueryOrdersResponse.DataBean.OrderBean.AccountBean accountBean : ordersBean.getAccountList()) {
if (accountBean.getPrice() < 0) {
if (accountBean.getPrice() < 0 && !OldOrderAccountType.MONTH_CARD_TOTAL_DISCOUNT.getCode().equals(accountBean.getType())) {
discountTotalAmount = discountTotalAmount + (0 - accountBean.getPrice());
}
if (OrderAccountType.BUY_DISCOUNT.getCode().equals(accountBean.getType())) {
......@@ -1394,7 +1406,11 @@ public class OrderAdapter {
customerScorePrompt = decimalFormat.format(customerScoreAmount / 100.0);
// customerScorePrompt = "积分抵扣-¥" + customerScoreAmountStr;
}
if (Integer.valueOf(99).equals(accountBean.getType())) {
if (OldOrderAccountType.MONTH_CARD_TOTAL_DISCOUNT.getCode().equals(accountBean.getType())) {
responseVo.setMonthCardTotalDiscount(accountBean.getPrice());
responseVo.setMonthCardTotalDiscountName(accountBean.getName());
}
if (OldOrderAccountType.FREIGHT_COUPON.getCode().equals(accountBean.getType())) {
responseVo.setFreightCouponName(accountBean.getName());
}
}
......@@ -2175,16 +2191,15 @@ public class OrderAdapter {
discountTotalAmount = discountTotalAmount + productDiscount.getDiscountAmount()*productDiscount.getDiscountQty();
if (OrderAccountType.PRODUCT_COUPON.getCode().equals(productDiscount.getDiscountType())) {
hasProductCoupon = true;
if(StringUtils.isNotBlank(productDiscount.getExtInfo())) {
JSONObject productDiscountExtInfo = JSON.parseObject(productDiscount.getExtInfo());
Integer extendType = productDiscountExtInfo.getInteger("extendType");
if(null == extendType || extendType != 12) {
productVo.setCouponName(productDiscount.getDiscountDesc());
// Integer extendType = StringUtils.isBlank(productDiscount.getAddInfo())?null:JSON.parseObject(productDiscount.getAddInfo()).getInteger("extendType");
// if(null != extendType && (3 == extendType || 4 == extendType || 5 == extendType)) {
// productVo.setCouponName(productDiscount.getDiscountDesc());
// } else {
// productVo.setName(productDiscount.getDiscountDesc());
// productVo.setSpuName(productDiscount.getDiscountDesc());
// productVo.setExtras("");
// productVo.setSpecification("");
// }
} else {
productVo.setFinalPrice(productVo.getOriginalPrice());
}
}
}
if (OrderAccountType.BUYM_SENDN.getCode().equals(productDiscount.getDiscountType())) {
activityType = ActivityTypeEnum.TYPE_61.getCode();
......@@ -2634,6 +2649,9 @@ public class OrderAdapter {
if (ActivityTypeEnum.TYPE_32.getCode().equals(activityType)) {
return OldOrderAccountType.PRODUCT_COUPON;
}
if (ActivityTypeEnum.TYPE_38.getCode().equals(activityType)) {
return OldOrderAccountType.PRODUCT_COUPON;
}
if (ActivityTypeEnum.TYPE_37.getCode().equals(activityType)) {
return OldOrderAccountType.SEED_PRODUCT_COUPON;
}
......@@ -2687,6 +2705,9 @@ public class OrderAdapter {
if (ActivityTypeEnum.TYPE_230.getCode().equals(activityType)){
return OldOrderAccountType.FULL_BUYM_SENDN;
}
if (ActivityTypeEnum.TYPE_231.getCode().equals(activityType)){
return OldOrderAccountType.MONTH_CARD_TOTAL_DISCOUNT;
}
return OldOrderAccountType.BUYM_SENDN;
}
......
......@@ -107,6 +107,11 @@ public class ShoppingCartGoodsDto {
*/
private Long payCardFee;
/**
* 月享卡总优惠金额
*/
private MonthCardDiscount monthCardDiscount;
@Data
public static class CartGoodsDetailDto {
/**
......@@ -356,4 +361,28 @@ public class ShoppingCartGoodsDto {
private Integer type;
}
@Data
public static class MonthCardDiscount {
/**
* 月享卡2.0优惠总额
*/
private Long discountAmount;
/**
* 月享卡券号
*/
private String couponCode;
/**
* 券标识
*/
private String couponLogo;
/**
* 优惠标识
*/
private String discountLogo;
/**
* 优惠描述
*/
private String discountDesc;
}
}
......@@ -114,6 +114,14 @@ public class QueryOrderResponseVo {
*/
private String freightCouponName;
/**
* 月享卡优惠总金额
*/
private Long monthCardTotalDiscount;
/**
* 月享卡优惠总金额
*/
private String monthCardTotalDiscountName;
/**
* 限时折扣优惠金额
*/
private Long discountLimitAmount;
......
......@@ -34,6 +34,7 @@ public enum ActivityTypeEnum {
TYPE_34(34, "运费券"),
TYPE_35(35, "买1赠3券"),
TYPE_37(37, "种子券"),
TYPE_38(38, "月享卡2.0"),
TYPE_5(5, "整单满金额折"),
TYPE_51(51, "每满金额折"),
TYPE_52(52, "阶梯满金额折"),
......@@ -42,6 +43,7 @@ public enum ActivityTypeEnum {
TYPE_61(61, "单品买M赠N"),
TYPE_7(7, "满额赠券"),
TYPE_8(8, "满N件换购"),
TYPE_231(231, "月享卡总优惠"),
/**
* 加价购
*/
......
......@@ -80,15 +80,8 @@ import java.util.stream.Collectors;
public class CheckMCCafeOrder {
@Autowired
private StoreTableNumberManager storeTableNumberManager;
@Autowired
private AssortmentOpenPlatformIappWxappConfigManager openPlatformIappWxappConfigManager;
@Autowired
private AssortmentOpenPlatformPartnerStoreDeliveryConfigManager deliveryConfigManager;
// 缓存取用户数据用
// @Autowired
// private UserServiceImpl userService;
@Autowired
private AssortmentCustomerInfoManager customerInfoManager;
//门店SDK
@Autowired
......@@ -101,23 +94,15 @@ public class CheckMCCafeOrder {
private MemberPropertyService memberPropertyService;
@Autowired
private ShoppingCartClient shoppingCartClient;
// @Autowired
// private OrderAdapter orderAdapter;
@Autowired
private StoreServiceImpl storeService;
@Autowired
private StockClient stockClient;
@Autowired
private ItemServiceImpl itemService;
@Autowired
private CouponService couponService;
@Autowired
private CouponClientService couponClientService;
@Autowired
private DeliveryFeiginMCCafeClient deliveryFeiginMCCafeClient;
@Autowired
private DeliveryServiceFeiginMCCafeClient deliveryServiceFeiginMCCafeClient;
@Value("${mcCafe.withOrderBuy.cardId}")
private String withOrderBuyCardId;
@Value("${mccafe.universal.coupon.code}")
private String withOrderBuyCouponCode;
......@@ -563,8 +548,17 @@ public class CheckMCCafeOrder {
}
List<MCCafeCouponVo> mcCafeCouponVos = new ArrayList<>();
Map<String, String> mcCafeUsedCoupon = new HashMap<>();
List<String> seedCardList = shoppingCartGoodsDto.getProducts().stream().filter(o -> ProductTypeEnum.getVirtualProductType().contains(o.getProductType()))
.map(o -> o.getMonthCardInfo().getCardCode()).collect(Collectors.toList());
List<String> seedCardList = new ArrayList<>();
shoppingCartGoodsDto.getProducts().stream().filter(o -> ProductTypeEnum.getVirtualProductType().contains(o.getProductType()))
.forEach(o -> {
if(o.getMonthCardInfo() == null) {
ShoppingCartGoodsDto.MonthCardVo monthCardVo = new ShoppingCartGoodsDto.MonthCardVo();
monthCardVo.setCardCode(withOrderBuyCouponCode);
monthCardVo.setCardNo(withOrderBuyCardId);
o.setMonthCardInfo(monthCardVo);
}
seedCardList.add(o.getMonthCardInfo().getCardCode());
});
seedCardList.add(withOrderBuyCouponCode);
if(CollectionUtils.isNotEmpty(shoppingCartGoodsDto.getActivityDiscountsDtos())) {
shoppingCartGoodsDto.getActivityDiscountsDtos().forEach(o-> {
......
......@@ -593,8 +593,8 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
*/
public CreateOrderResponse createOrder(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto,
OrderExtendedReq orderExtendedReq, OrderClientType orderClient,String appId) {
processRepeatGoodsWithSeedCoupon(shoppingCartGoodsDto);
log.info("购物车拆行:"+JSON.toJSONString(shoppingCartGoodsDto));
// processRepeatGoodsWithSeedCoupon(shoppingCartGoodsDto);
// log.info("购物车拆行:"+JSON.toJSONString(shoppingCartGoodsDto));
BaseCreateOrderRequest baseCreateOrderRequest = orderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto, storeResponseDto);
//查询第三方商品编号
baseCreateOrderRequest = getProductCustomerCode(baseCreateOrderRequest);
......@@ -903,7 +903,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
// }
//麦咖啡随单购咖啡月卡
if(withOrderBuyCoupon(orderBean, orderExtInfoDto.getThirdPartyMemberId())) {
if(withOrderBuyCoupon2(orderBean, orderExtInfoDto.getThirdPartyMemberId())) {
orderBean = getOrderBean(confirmOrderDto);
}
......@@ -1739,4 +1739,115 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
return true;
}
/**
* 月享卡2.0发券
* @param orderBean
*/
public boolean withOrderBuyCoupon2(QueryOrdersResponseDto.DataBean.OrderBean orderBean, String thirdPartyMemberId){
LogUtil.info("发券入参:", thirdPartyMemberId, JSON.toJSONString(orderBean));
try{
List<String> cardIds = new ArrayList<>();
List<String> defaultCardCodes = new ArrayList<>();
for (OrderBean.ProductBean productBean : orderBean.getProductList()){
if(ProductTypeEnum.getVirtualProductType().contains(productBean.getProductType())) {
OrderProductAddInfoDto extInfo = JSON.parseObject(productBean.getExtInfo(), OrderProductAddInfoDto.class);
for(int i=0;i<productBean.getNumber();i++) {
cardIds.add(extInfo.getCardId());
}
defaultCardCodes.add(extInfo.getCardCode());
}
}
if(CollectionUtils.isEmpty(cardIds)){
return false;
}
SendCouponForqujiaRequestDto request = new SendCouponForqujiaRequestDto();
request.setReceivedId(orderBean.getOid());
request.setCardIds(cardIds);
request.setThirdPartyMemberId(thirdPartyMemberId);
SendCouponForqujiaDtoResponseDto responseDto = customerExtendClient.sendCouponForqujia(request);
if(!Objects.equals(responseDto.getCode(), ResponseResult.SUCCESS.getCode())){
LogUtil.error("sendCouponForqujia", JSON.toJSONString(request), JSON.toJSONString(responseDto));
return false;
}
if(responseDto.getData() == null || CollectionUtils.isEmpty(responseDto.getData().getCard_list())){
return false;
}
List<SendCouponForqujiaDtoResponseDto.Card> cardList = responseDto.getData().getCard_list();
MCCafeCouponRequest mcCafeCouponRequest = MCCafeCouponRequest.builder()
.ver(88)
.reqtype(CouponReqTypeEnum.BATCH_QUERY.getCode())
.partnerId(Integer.parseInt(orderBean.getCompanyId()))
.store_id(orderBean.getShopId())
.station_id("1")
.operator_id(orderBean.getUserId())
.channel(OrderSource.ALIPAY.getSource().equals(orderBean.getSource())?MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName())
.couponlist(cardList.stream().map(o -> new MCCafeCouponVo(o.getCard_code())).collect(Collectors.toList()))
.sign("skip")
.build();
McdNetBatchQueryResponse mcdNetBatchQueryResponse = couponClientService.batchQuery(mcCafeCouponRequest);
if (mcdNetBatchQueryResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS.equals(mcdNetBatchQueryResponse.getStatusCode())
|| CollectionUtils.isEmpty(mcdNetBatchQueryResponse.getCouponlist())) {
LogUtil.error("获取优惠券详情失败,发券失败", mcCafeCouponRequest, mcdNetBatchQueryResponse);
return false;
}
Map<String, Integer> cardStatusMap = mcdNetBatchQueryResponse.getCouponlist().stream()
.collect(Collectors.toMap(McdNetBatchQueryResponse.Coupon::getCode, McdNetBatchQueryResponse.Coupon::getStatusCode, (k1, k2) -> k1));
Map<String, String> cardMap = new HashMap<>();
UpdateCouponCodeReq req = new UpdateCouponCodeReq();
req.setOrderCode(orderBean.getOid());
req.setPartnerId(orderBean.getCompanyId());
req.setCouponReceiveInfoList(new ArrayList<>());
req.setCouponUpdateInfoList(new ArrayList<>());
LogUtil.info("准备开始生成参数:", orderBean, null);
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean : orderBean.getProductList()) {
if(ProductTypeEnum.getVirtualProductType().contains(productBean.getProductType())) {
UpdateCouponCodeReq.CouponReceiveInfo couponReceiveInfo = new UpdateCouponCodeReq.CouponReceiveInfo();
couponReceiveInfo.setGoodsId(productBean.getSpecification());
couponReceiveInfo.setProductSeq(productBean.getSequence());
OrderProductAddInfoDto extInfo = JSON.parseObject(productBean.getExtInfo(), OrderProductAddInfoDto.class);
String cardCodeStr = "";
numberFor:
for(int j=0;j<productBean.getNumber();j++) {
cardFor:
for(int i=0;i<cardList.size();i++) {
if(cardList.get(i).getCard_id().equals(extInfo.getCardId())) {
String couponCode = cardList.get(i).getCard_code();
cardCodeStr += couponCode+"/";
if(ResponseCodeConstant.RESPONSE_SUCCESS.equals(cardStatusMap.get(couponCode))) {
if(cardMap.get(extInfo.getCardCode()) == null) {
UpdateCouponCodeReq.CouponUpdateInfo couponUpdateInfo = new UpdateCouponCodeReq.CouponUpdateInfo();
couponUpdateInfo.setOldCouponCode(extInfo.getCardCode());
couponUpdateInfo.setCouponCode(couponCode);
req.getCouponUpdateInfoList().add(couponUpdateInfo);
cardMap.put(extInfo.getCardCode(), couponCode);
}
}
cardList.remove(i);
break cardFor;
}
}
}
couponReceiveInfo.setCouponCode(cardCodeStr.substring(0, cardCodeStr.length()-1));
req.getCouponReceiveInfoList().add(couponReceiveInfo);
}
}
LogUtil.info("生成参数完成:", req, null);
orderSdkService.updateCostCouponCodeNew(req, LogTreadLocal.getTrackingNo());
return true;
} catch (Exception e){
LogUtil.error("发券异常", null, null, e);
}
return true;
}
}
......@@ -229,6 +229,7 @@ public class InterfaceAddressConstant {
* 修改费用表购买的优惠券和优惠表使用的优惠券
*/
public static final String UPDATE_COST_COUPONCODE = "/order/v2/mcCafe/updateCostCouponCode";
public static final String UPDATE_COST_COUPONCODE_NEW = "/order/v2/mcCafe/updateCostCouponCodeNew";
/**
* 查询使用了优惠券的订单数量
......
......@@ -902,6 +902,19 @@ public class OrderSdkService {
}
/**
* 修改费用表购买的优惠券和优惠表使用的优惠券
* @param request
* @param trackingNo
* @return
*/
public BaseResponse updateCostCouponCodeNew(UpdateCouponCodeReq request, String trackingNo) {
OrderBaseResp responseDTO = RequestThirdPartyUtils.httpJsonReqComplexNew(restTemplate, UPDATE_COST_COUPONCODE_NEW,
createBaseRequest(request, trackingNo), new ParameterizedTypeReference<OrderBaseResp>() {
});
return responseHandle(responseDTO);
}
/**
* 查询使用了特定优惠券的订单数量
* @param request
* @param trackingNo
......
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