Commit d9646b66 by 徐康

买3赠一

parent ed1efe04
......@@ -481,7 +481,8 @@ public class OrderSdkAdapter {
if (QueryOrderAccountType.DELIVERY_AMOUNT.equals(accountRequest.getAccountType())
|| QueryOrderAccountType.PACK_AMOUNT.equals(accountRequest.getAccountType())
|| QueryOrderAccountType.CARD_ORIGINAL_AMOUNT.equals(accountRequest.getAccountType())
|| QueryOrderAccountType.MCCAFE_MONTH_CARD.equals(accountRequest.getAccountType())) {
|| QueryOrderAccountType.WITH_ORDER_BUY_COUPON_FEE.equals(accountRequest.getAccountType())
|| QueryOrderAccountType.WITH_ORDER_BUY3_SEND1_FEE.equals(accountRequest.getAccountType())) {
OrderCostCreateReq orderCostCreateReq = new OrderCostCreateReq();
orderCostCreateReq.setCostName(accountRequest.getName());
//新订单服务 1=包装费,2=运费,3=餐盒单价,4=餐盒数量
......@@ -493,6 +494,9 @@ public class OrderSdkAdapter {
//1=订单,2=订单商品,3=售后单
orderCostCreateReq.setBillType(1);
orderCostCreateReq.setProductId(accountRequest.getProductId());
if(StringUtils.isNotBlank(accountRequest.getAddInfo())) {
orderCostCreateReq.setExtInfo(accountRequest.getAddInfo());
}
orderCostCreateReqs.add(orderCostCreateReq);
} else {
OrderSettlementCreateReq orderSettlementCreateReq = new OrderSettlementCreateReq();
......@@ -536,9 +540,12 @@ public class OrderSdkAdapter {
case "CARD_ORIGINAL_AMOUNT":
type = 5;
break;
case "MCCAFE_MONTH_CARD":
case "WITH_ORDER_BUY_COUPON_FEE":
type = 10;
break;
case "WITH_ORDER_BUY3_SEND1_FEE":
type = 11;
break;
default:
break;
}
......@@ -840,6 +847,9 @@ public class OrderSdkAdapter {
if (orderCostResp.getCostType() == 10) {
accountBean.setType(OldOrderAccountType.WITH_ORDER_BUY_COUPON_FEE.getCode());
}
if (orderCostResp.getCostType() == 11) {
accountBean.setType(OldOrderAccountType.WITH_ORDER_BUY3_SEND1_FEE.getCode());
}
accountBean.setAddInfo("");
accountList.add(accountBean);
}
......@@ -1892,6 +1902,9 @@ public class OrderSdkAdapter {
case 10:
newOrderAccountType = OldOrderAccountType.COUPON.getCode();
break;
case 35:
newOrderAccountType = OldOrderAccountType.BUY3_SEND1.getCode();
break;
case 118:
newOrderAccountType = OldOrderAccountType.PRODUCT_COUPON.getCode();
break;
......@@ -1924,10 +1937,13 @@ public class OrderSdkAdapter {
break;
case 205:
newOrderAccountType=OldOrderAccountType.TOTAL_DISCOUNT.getCode();
break;
case 220:
newOrderAccountType=OldOrderAccountType.MEMBER_PRICE_DISCOUNT.getCode();
break;
case 99:
newOrderAccountType=OldOrderAccountType.FREIGHT_COUPON.getCode();
break;
default:
break;
}
......
......@@ -25,12 +25,13 @@ public enum OldOrderAccountType {
DISCOUNT_COUPON(7, "折扣券", "DISCOUNT_COUPON"),
DRIVER_FEE(7, "骑手小费", "DRIVER_FEE"),
WITH_ORDER_BUY_COUPON_FEE(10, "随单买月卡", "WITH_ORDER_BUY_COUPON_FEE"),
WITH_ORDER_BUY3_SEND1_FEE(11, "随单购买三赠一券", "WITH_ORDER_BUY3_SEND1_FEE"),
FREIGHT_COUPON(99, "运费券", "FREIGHT_COUPON"),
DISCOUNT_AMOUNT(21, "限时折扣", "DISCOUNT_AMOUNT"),
PREMIUM_EXCHANGE(22, "加价购", "PREMIUM_EXCHANGE"),
SECOND_DISCOUNT(23, "第二件N折", "SECOND_DISCOUNT"),
BUYM_SENDN(24, "买M赠N", "BUYM_SENDN"),
BUY3_SEND1(35, "买3赠1", "BUY3_SEND1"),
BUY3_SEND1(35, "买3赠1", "BUY3_SEND1"),
SUPER_PURCHASE(47, "超值加购", "SUPER_PURCHASE"),
CUSTOMER_SCORE(4, "积分兑换", "CUSTOMER_SCORE"),
WEIXIN(203,"微信优惠","WECHAT_DISCOUNT"),
......
......@@ -30,7 +30,7 @@ public enum QueryOrderAccountType {
SUPER_PURCHASE("SUPER_PURCHASE", "超值加购"),
SECOND_DISCOUNT("SECOND_DISCOUNT", "第二件N折"),
BUYM_SENDN("BUYM_SENDN", "买M赠N"),
BUY3_SEND1("BUY3_SEND1", "买3赠1"),
BUY3_SEND1("BUY3_SEND1", "买3赠1"),
CUSTOMER_SCORE("CUSTOMER_SCORE", "积分兑换"),
CARD_ORIGINAL_AMOUNT("CARD_ORIGINAL_AMOUNT", "会员卡原价"),
SET_MEAL("SET_MEAL", "套餐商品优惠"),
......@@ -41,8 +41,8 @@ public enum QueryOrderAccountType {
FULL_DISTRIBUTION_FEE("FULL_DISTRIBUTION_FEE", "满减配送费"),
OFFLINE_PAY("OFFLINE_PAY", "线下支付"),
MEMBER_PRICE_DISCOUNT("MEMBER_PRICE_DISCOUNT","会员价优惠"),
MCCAFE_MONTH_CARD("MCCAFE_MONTH_CARD","麦咖啡月卡"),
WITH_ORDER_BUY_COUPON_FEE("WITH_ORDER_BUY_COUPON_FEE", "随单月卡"),
WITH_ORDER_BUY3_SEND1_FEE("WITH_ORDER_BUY3_SEND1_FEE", "随单购买3赠1券"),
WITH_ORDER_BUY_COUPON_FEE("WITH_ORDER_BUY_COUPON_FEE", "随单月卡"),
;
private String code;
......
......@@ -659,11 +659,12 @@ public class CouponAdapter {
public MCCafeCouponRequest convert2MCCafeCouponRequest(QueryOrdersResponseDto.DataBean.OrderBean orderBean, QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean, McdNetBatchQueryResponse.Coupon coupon) {
List<MCCafeProductRedeemVo> products = new ArrayList<>();
//商品券核销核销参数
if (QueryOrderAccountType.PRODUCT_COUPON.equals(orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(accountBean.getType())))) {
if (QueryOrderAccountType.PRODUCT_COUPON.equals(orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(accountBean.getType())))
|| QueryOrderAccountType.BUY3_SEND1.equals(orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(accountBean.getType())))) {
for (int i = 0; i < orderBean.getProductList().size(); i++) {
QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean = orderBean.getProductList().get(i);
String pid = org.apache.commons.lang3.StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId();
if (!org.springframework.util.CollectionUtils.isEmpty(productBean.getDiscountList())) {
if (CollectionUtils.isNotEmpty(productBean.getDiscountList())) {
List<QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount> discounts = productBean.getDiscountList().stream().
filter(productDiscount -> productDiscount.getDiscountId().equals(accountBean.getAccountId())).collect(Collectors.toList());
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount productDiscount : discounts) {
......@@ -672,15 +673,8 @@ public class CouponAdapter {
}
MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo();
mcCafeProductRedeemVo.setPid(pid);
String extInfo = productDiscount.getAddInfo();
Integer extendType = StringUtils.isBlank(extInfo)?null: JSON.parseObject(extInfo).getInteger("extendType");
if(extendType != null && extendType == 4) {
mcCafeProductRedeemVo.setKeyProductCode(JSON.parseObject(extInfo).getString("tenderId"));
mcCafeProductRedeemVo.setCustomer_code(JSON.parseObject(extInfo).getString("tenderId"));
} else {
mcCafeProductRedeemVo.setKeyProductCode(productBean.getCustomerCode());
mcCafeProductRedeemVo.setCustomer_code(productBean.getCustomerCode());
}
mcCafeProductRedeemVo.setConsume_num(productDiscount.getDiscountQty());
mcCafeProductRedeemVo.setSeq(i + 1);
if(null != coupon && CollectionUtils.isNotEmpty(coupon.getCodeInfo().getGroups())) {
......@@ -740,26 +734,6 @@ public class CouponAdapter {
return mcCafeCouponRequest;
}
public MCCafeCouponLockRequest convert2MCCafeCouponLockRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, CreateOrderAccountRequest accountBean) {
MCCafeCouponLockRequest mcCafeCouponLockRequest = new MCCafeCouponLockRequest();
mcCafeCouponLockRequest.setVer(Integer.valueOf(Version.VERSION_1));
mcCafeCouponLockRequest.setReqType(CouponReqTypeEnum.UNLOCK.getCode());
mcCafeCouponLockRequest.setPartnerId(orderBean.getCompanyId());
mcCafeCouponLockRequest.setStoreId(orderBean.getShopId());
// 订单号
mcCafeCouponLockRequest.setTransId(orderBean.getOid());
mcCafeCouponLockRequest.setCoupon(accountBean.getAccountId());
mcCafeCouponLockRequest.setOfferId(accountBean.getAccountId());
mcCafeCouponLockRequest.setNumber("1");
mcCafeCouponLockRequest.setChannel(OrderSourceType.ALIPAY.getCode().equals(orderBean.getSource())?
MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName());
mcCafeCouponLockRequest.setOperatorId("-1");
mcCafeCouponLockRequest.setStationId("-1");
mcCafeCouponLockRequest.setSign("skip");
return mcCafeCouponLockRequest;
}
public MCCafeCouponLockRequest convert2MCCafeCouponLockRequest(QueryOrdersResponseDto.DataBean.OrderBean orderBean, QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean) {
MCCafeCouponLockRequest mcCafeCouponLockRequest = new MCCafeCouponLockRequest();
mcCafeCouponLockRequest.setVer(Integer.valueOf(Version.VERSION_1));
......@@ -770,7 +744,7 @@ public class CouponAdapter {
mcCafeCouponLockRequest.setTransId(orderBean.getOid());
mcCafeCouponLockRequest.setCoupon(accountBean.getAccountId());
mcCafeCouponLockRequest.setOfferId(accountBean.getAccountId());
mcCafeCouponLockRequest.setNumber("1");
mcCafeCouponLockRequest.setNumber(accountBean.getNumber().toString());
mcCafeCouponLockRequest.setChannel(OrderSourceType.ALIPAY.getCode().equals(orderBean.getSource())?
MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName());
mcCafeCouponLockRequest.setOperatorId("-1");
......
......@@ -206,6 +206,7 @@ public class OrderAdapter {
&& StringUtils.isNotBlank(createOrderVo.getBuyThreeGiveOneCouponCode())
&& createOrderVo.getBuyThreeGiveOneCouponCode().equals(activityDiscountsDto.getActivityCode())) {
jsonObject.put("buyThreeGiveOneActivityCode", createOrderVo.getBuyThreeGiveOneActivityCode());
jsonObject.put("buyThreeGiveOneCouponCode", createOrderVo.getBuyThreeGiveOneCouponCode());
}
createOrderAccountDto.setAddInfo(jsonObject.toJSONString());
}
......@@ -267,17 +268,35 @@ public class OrderAdapter {
.build();
orderAccountDtos.add(createOrderAccountDto);
}
if(null != shoppingCartGoodsDto.getPayCardFee() && 0l != shoppingCartGoodsDto.getPayCardFee() && StringUtils.isNotBlank(createOrderVo.getCardKeyCode())) {
if(null != shoppingCartGoodsDto.getPayCardFee() && 0l != shoppingCartGoodsDto.getPayCardFee()
&& StringUtils.isNotBlank(createOrderVo.getCardKeyCode())) {
CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder()
.accountId("")
.name("啡常月享卡")
.price(shoppingCartGoodsDto.getPayCardFee())
.accountType(QueryOrderAccountType.MCCAFE_MONTH_CARD)
.accountType(QueryOrderAccountType.WITH_ORDER_BUY_COUPON_FEE)
.sequence(orderAccountIndex++)
.productId(createOrderVo.getCardKeyCode())
.build();
orderAccountDtos.add(createOrderAccountDto);
}
if(null != shoppingCartGoodsDto.getBuyThreeGiveOneCouponFee() && 0l != shoppingCartGoodsDto.getBuyThreeGiveOneCouponFee()
&& StringUtils.isNotBlank(createOrderVo.getBuyThreeGiveOneCouponCode()) && StringUtils.isNotBlank(createOrderVo.getBuyThreeGiveOneActivityCode())
&& StringUtils.isNotBlank(createOrderVo.getBuyThreeGiveOneCardKeyCode())) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("buyThreeGiveOneActivityCode", createOrderVo.getBuyThreeGiveOneActivityCode());
jsonObject.put("buyThreeGiveOneCouponCode", createOrderVo.getBuyThreeGiveOneCouponCode());
CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder()
.accountId("")
.name("买三赠一券")
.price(shoppingCartGoodsDto.getBuyThreeGiveOneCouponFee())
.accountType(QueryOrderAccountType.WITH_ORDER_BUY3_SEND1_FEE)
.sequence(orderAccountIndex++)
.productId(createOrderVo.getBuyThreeGiveOneCardKeyCode())
.addInfo(jsonObject.toJSONString())
.build();
orderAccountDtos.add(createOrderAccountDto);
}
createOrderDto.setAccounts(CollectionUtils.isNotEmpty(orderAccountDtos) ? orderAccountDtos : Collections.emptyList());
//设置库存扣减
......@@ -1257,7 +1276,7 @@ public class OrderAdapter {
responseVo.setOrderAccounts(convent2OrderAccountVo(ordersBean.getApportionDetails()));
if(CollectionUtils.isNotEmpty(ordersBean.getOrderCostDetailList())) {
ordersBean.getOrderCostDetailList().forEach(o -> {
if(o.getCostType() == 10 && o.getBillType() == 1) {
if((o.getCostType() == 10 || o.getCostType() == 11) && o.getBillType() == 1) {
ProductVo productVo = new ProductVo();
productVo.setQty(1);
productVo.setName(o.getCostName());
......@@ -2065,22 +2084,19 @@ public class OrderAdapter {
productVo.setExtras("");
productVo.setSpecification("");
}
}
if (OrderAccountType.BUYM_SENDN.getCode().equals(productDiscount.getDiscountType())) {
} else if (OrderAccountType.BUYM_SENDN.getCode().equals(productDiscount.getDiscountType())) {
activityType = ActivityTypeEnum.TYPE_61.getCode();
}
if (OrderAccountType.PRODUCT_COUPON.getCode().equals(productDiscount.getDiscountType())) {
} else if (OrderAccountType.PRODUCT_COUPON.getCode().equals(productDiscount.getDiscountType())) {
activityType = ActivityTypeEnum.TYPE_32.getCode();
couponDiscount = productDiscount.getDiscountAmount();
}
if (OrderAccountType.DISCOUNT_COUPON.getCode().equals(productDiscount.getDiscountType())) {
} else if (OrderAccountType.DISCOUNT_COUPON.getCode().equals(productDiscount.getDiscountType())) {
couponDiscount = productDiscount.getDiscountAmount();
}
if (OrderAccountType.COUPON.getCode().equals(productDiscount.getDiscountType())) {
} else if (OrderAccountType.COUPON.getCode().equals(productDiscount.getDiscountType())) {
couponDiscount = productDiscount.getDiscountAmount();
}
if (OrderAccountType.BUY_DISCOUNT.getCode().equals(productDiscount.getDiscountType())) {
} else if (OrderAccountType.BUY_DISCOUNT.getCode().equals(productDiscount.getDiscountType())) {
fullReduction = productDiscount.getDiscountAmount();
} else if (OrderAccountType.BUY3_SEND1.getCode().equals(productDiscount.getDiscountType())) {
productVo.setCouponName(productDiscount.getDiscountDesc());
}
}
}
......
......@@ -108,14 +108,9 @@ public class ShoppingCartGoodsDto {
private Long payCardFee;
/**
* 麦咖啡-买三赠一券活动号
* 麦咖啡-买三赠一券费用
*/
private String buyThreeGiveOneActivityCode;
/**
* 麦咖啡-买三赠一券默认券号
*/
private String buyThreeGiveOneCouponCode;
private Long buyThreeGiveOneCouponFee;
@Data
......
......@@ -205,6 +205,11 @@ public class CreateOrderVo {
*/
private String cardKeyCode;
/**
* 随单购啡常月享卡键位
*/
private String buyThreeGiveOneCardKeyCode;
@ApiModelProperty(hidden = true)
private String sessionKey; // 存储sessionKey,异常补退使用
@ApiModelProperty(hidden = true)
......
......@@ -26,7 +26,9 @@ public enum OrderAccountType {
BUYM_SENDN(24, "买M赠N"),
CUSTOMER_SUB(4, "积分扣减"),
CARD_ORIGINAL_AMOUNT(25, "会员卡原价"),
CARD_DISCOUNT_AMOUNT(26, "会员卡优惠金额");
CARD_DISCOUNT_AMOUNT(26, "会员卡优惠金额"),
BUY3_SEND1(35, "买三赠1券"),
;
private Integer code;
private String desc;
......
......@@ -91,7 +91,9 @@ import com.freemud.sdk.api.assortment.message.enums.MessageEventType;
import com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRequest;
import com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest;
import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService;
import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType;
import com.freemud.sdk.api.assortment.order.enums.OldOrderType;
import com.freemud.sdk.api.assortment.order.enums.QueryOrderAccountType;
import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.*;
import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
......@@ -808,6 +810,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
OrderExtInfoDto orderExtInfoDto = null;
String wxappid = "";
String sessionId = "";
String thirdPartyMemberId = "";
// String openid = "";
// String ruleId = "";
String payCode = "";
......@@ -817,6 +820,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
// openid = orderExtInfoDto.getOpenid();
wxappid = orderExtInfoDto.getAppid();
sessionId = orderExtInfoDto.getSessionId();
thirdPartyMemberId = orderExtInfoDto.getThirdPartyMemberId();
// ruleId = orderExtInfoDto.getRuleId();
}
if (orderExtInfoDto != null && StringUtils.isNotBlank(orderExtInfoDto.getPayCode())
......@@ -830,7 +834,10 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
// }
//麦咖啡随单购咖啡月卡
withOrderBuyCoupon(orderBean,sessionId);
withOrderBuyCoupon(orderBean,thirdPartyMemberId);
//麦咖啡随单购买三赠一券
withOrderBuyBuy3Send1Coupon(orderBean,thirdPartyMemberId);
// 如果是到店,则冻结优惠券
// 如果是外卖,则核销优惠券
......@@ -1399,47 +1406,16 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
}
/**
* 开通会员卡
*
* @param partnerId 商户号
* @param ruleId 会员规则ID
* @param oid 订单号
* @param userId 用户ID
*/
private void activateMemberCard(String partnerId, String ruleId, String oid, String userId) {
PurchasePaidRequestDto purchasePaidRequestDto = new PurchasePaidRequestDto();
purchasePaidRequestDto.setPartnerId(partnerId);
purchasePaidRequestDto.setOperatorType(0);
purchasePaidRequestDto.setRuleId(ruleId);
purchasePaidRequestDto.setOrderId(oid);
purchasePaidRequestDto.setMemberId(userId);
// 尝试三次开通会员卡,中途成功则跳出
int count = 3;
for (int i = 1; i <= count; i++) {
BaseResponse baseResponse = customerApplicationClient.purchasePaid(purchasePaidRequestDto);
// 不以响应码为判断是否开通会员卡成功的标准
if (baseResponse != null && "SUCCESS".equals(baseResponse.getResult())) {
break;
}
// 尝试开通会员卡失败三次
if (i >= count) {
LogUtil.error("尝试开通会员卡失败" + count + "次", JSON.toJSONString(purchasePaidRequestDto), JSON.toJSONString(baseResponse));
}
}
}
/**
* 随单购月卡调会员发券与更新订单使用的优惠券与买的优惠券
* @param orderBean
*/
private void withOrderBuyCoupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean,String sessionId){
AssortmentCustomerInfoVo assortmentCustomerInfoVo = customerInfoManager.getCustomerInfoByObject(sessionId);
private void withOrderBuyCoupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean, String thirdPartyMemberId){
try{
boolean isWithOrderBuyCoupon = false;
if(CollectionUtils.isNotEmpty(orderBean.getOrderCostDetailList())){
for (OrderCostResp accountBean : orderBean.getOrderCostDetailList()){
if(accountBean.getCostType() == 10){
for (OrderCostResp orderCostResp : orderBean.getOrderCostDetailList()){
if(orderCostResp.getCostType() == 10){
isWithOrderBuyCoupon = true;
}
}
......@@ -1454,10 +1430,10 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
SendCouponForqujiaRequestDto request = new SendCouponForqujiaRequestDto();
request.setReceivedId(orderBean.getOid());
request.setCardIds(Arrays.asList(cardId));
request.setThirdPartyMemberId(assortmentCustomerInfoVo.getThirdPartyMemberID());
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),null);
LogUtil.error("sendCouponForqujia suidangou", JSON.toJSONString(request), JSON.toJSONString(responseDto),null);
return;
}
......@@ -1482,6 +1458,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
UpdateCouponCodeReq req = new UpdateCouponCodeReq();
req.setCouponCode(buyCouponCode);
req.setCostType(OldOrderAccountType.WITH_ORDER_BUY_COUPON_FEE.getCode());
if(useDiscount){
req.setOldCouponCode(notBuyCouponCode);
}
......@@ -1501,4 +1478,78 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
}
}
/**
* 随单购买三赠一券调会员发券与更新订单使用的优惠券与买的优惠券
* @param orderBean
*/
private void withOrderBuyBuy3Send1Coupon(QueryOrdersResponseDto.DataBean.OrderBean orderBean, String thirdPartyMemberId){
try{
String extInfo = "";
if(CollectionUtils.isNotEmpty(orderBean.getOrderCostDetailList())){
for (OrderCostResp orderCostResp : orderBean.getOrderCostDetailList()){
if(orderCostResp.getCostType() == 11){
extInfo = orderCostResp.getExtInfo();
}
}
}
if(StringUtils.isBlank(extInfo)){
return;
}
JSONObject jsonObject = JSON.parseObject(extInfo);
String buyThreeGiveOneActivityCode = jsonObject.getString("buyThreeGiveOneActivityCode");
SendCouponForqujiaRequestDto request = new SendCouponForqujiaRequestDto();
request.setReceivedId(orderBean.getOid());
request.setCardIds(Arrays.asList(buyThreeGiveOneActivityCode));
request.setThirdPartyMemberId(thirdPartyMemberId);
SendCouponForqujiaDtoResponseDto responseDto = customerExtendClient.sendCouponForqujia(request);
if(!Objects.equals(responseDto.getCode(), ResponseResult.SUCCESS.getCode())){
LogUtil.error("sendCouponForqujia buy3send1", JSON.toJSONString(request), JSON.toJSONString(responseDto),null);
return;
}
if(responseDto.getData() == null || CollectionUtils.isEmpty(responseDto.getData().getCard_list())){
return;
}
String buyCouponCode = responseDto.getData().getCard_list().get(0).getCard_code();
boolean useDiscount = false;
String buyThreeGiveOneCouponCode = jsonObject.getString("buyThreeGiveOneCouponCode");
if(CollectionUtils.isNotEmpty(orderBean.getProductList())){
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean : orderBean.getProductList()){
if(CollectionUtils.isNotEmpty(productBean.getDiscountList())){
for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount discount : productBean.getDiscountList()){
if(buyThreeGiveOneCouponCode.equals(discount.getDiscountId())){
discount.setDiscountId(buyCouponCode);
useDiscount = true;
}
}
}
}
}
UpdateCouponCodeReq req = new UpdateCouponCodeReq();
req.setCouponCode(buyCouponCode);
req.setCostType(OldOrderAccountType.WITH_ORDER_BUY3_SEND1_FEE.getCode());
if(useDiscount){
req.setOldCouponCode(buyThreeGiveOneCouponCode);
}
req.setOrderCode(orderBean.getOid());
orderSdkService.updateCostCouponCode(req,LogTreadLocal.getTrackingNo());
List<OrderBean.AccountBean> accountList = orderBean.getAccountList().stream().filter(
account -> (withOrderBuyCouponCode.equals(account.getAccountId()))
).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(accountList)) {
accountList.forEach(o -> o.setAccountId(buyCouponCode));
}
} catch (Exception e){
LogUtil.error("买券异常", null, null, e);
}
}
}
......@@ -74,8 +74,9 @@ public class CouponClientServiceImpl implements CouponClientService {
account -> (orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.COUPON)
|| orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.PRODUCT_COUPON)
|| orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.DISCOUNT_COUPON)
|| orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.FREIGHT_COUPON))
).collect(Collectors.toList());
|| orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.FREIGHT_COUPON)
|| orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(account.getType())).equals(QueryOrderAccountType.BUY3_SEND1)
)).collect(Collectors.toList());
if (CollectionUtils.isEmpty(accountList)) {
return null;
}
......@@ -146,7 +147,8 @@ public class CouponClientServiceImpl implements CouponClientService {
account -> (OldOrderAccountType.PRODUCT_COUPON.equals(OldOrderAccountType.getByCode(account.getType()))
|| OldOrderAccountType.COUPON.equals(OldOrderAccountType.getByCode(account.getType()))
|| OldOrderAccountType.DISCOUNT_COUPON.equals(OldOrderAccountType.getByCode(account.getType()))
) && account.getPrice() != 0l).collect(Collectors.toList());
|| OldOrderAccountType.BUY3_SEND1.equals(OldOrderAccountType.getByCode(account.getType()))
)).collect(Collectors.toList());
if (CollectionUtils.isEmpty(accountList)) {
return null;
}
......
......@@ -91,15 +91,8 @@ public class McCafeCouponAdapter {
}
MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo();
mcCafeProductRedeemVo.setPid(pid);
String extInfo = productDiscount.getAddInfo();
Integer extendType = StringUtils.isBlank(extInfo)?null: JSON.parseObject(extInfo).getInteger("extendType");
if(extendType != null && extendType == 4) {
mcCafeProductRedeemVo.setKeyProductCode(JSON.parseObject(extInfo).getString("tenderId"));
mcCafeProductRedeemVo.setCustomer_code(JSON.parseObject(extInfo).getString("tenderId"));
} else {
mcCafeProductRedeemVo.setKeyProductCode(productBean.getCustomerCode());
mcCafeProductRedeemVo.setCustomer_code(productBean.getCustomerCode());
}
mcCafeProductRedeemVo.setConsume_num(productDiscount.getDiscountQty());
mcCafeProductRedeemVo.setSeq(i + 1);
if(null != coupon && CollectionUtils.isNotEmpty(coupon.getCodeInfo().getGroups())) {
......
......@@ -25,4 +25,6 @@ public class UpdateCouponCodeReq {
//配置券号
private String oldCouponCode;
private Integer costType;
}
......@@ -41,4 +41,6 @@ public class OrderCostCreateReq {
private Long actualCostAmount;
private String extInfo;
}
......@@ -45,4 +45,6 @@ public class OrderCostResp {
//备注
private String note;
private String extInfo;
}
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