Commit 9012fd7b by 周晓航

Merge branch 'KA-华莱士抽奖跳转百世新增接口' into qa

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderAdapterServiceImpl.java
parents 59decf26 182781f6
...@@ -556,5 +556,16 @@ public class OrderController { ...@@ -556,5 +556,16 @@ public class OrderController {
return ResponseUtil.success(orderAdapterService.getOrderConfig(request)); return ResponseUtil.success(orderAdapterService.getOrderConfig(request));
} }
/**
* 华莱士临时对接百事抽奖活动
* @param request
* @return 是否需要弹框,跳转百事
*/
@ApiAnnotation(logMessage = "/order/temp/activity")
@PostMapping("/temp/activity/query")
public BaseResponse wallaceTempActivity(@Validated @LogParams @RequestBody WallaceTempActivityRequest request) {
return orderAdapterService.wallaceTempActivity(request);
}
} }
package cn.freemud.entities; package cn.freemud.entities;
public class EdenResponse<T> { public class EdenResponse<T> {
private static final String SUCCESSCODE ="200"; public static final String SUCCESSCODE ="200";
protected String statusCode; protected String statusCode;
protected String message; protected String message;
......
package cn.freemud.entities.dto.wallace.request;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/7/15 17:06
* @description :
*/
@Data
public class PepsiOrderSubmitRequest {
/**
* 商户号
*/
private String partnerId;
/**
* 用户id
*/
private String memberId;
/**
* 订单号
*/
private String orderCode;
}
package cn.freemud.entities.vo.order;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/7/15 11:18
* @description :
*/
@Data
public class WallaceTempActivityRequest {
/**
* 商户号
*/
private String parentId;
/**
* 订单号
*/
private String orderCode;
private String sessionId;
}
...@@ -4,6 +4,7 @@ import cn.freemud.adapter.OrderAdapter; ...@@ -4,6 +4,7 @@ import cn.freemud.adapter.OrderAdapter;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.config.ApolloVariableConfig; import cn.freemud.config.ApolloVariableConfig;
import cn.freemud.constant.RedisLockKey; import cn.freemud.constant.RedisLockKey;
import cn.freemud.entities.EdenResponse;
import cn.freemud.entities.bo.CreateOrderBONew; import cn.freemud.entities.bo.CreateOrderBONew;
import cn.freemud.entities.db.OpenPlatformOrderConfig; import cn.freemud.entities.db.OpenPlatformOrderConfig;
import cn.freemud.entities.dto.ConfirmOrderDto; import cn.freemud.entities.dto.ConfirmOrderDto;
...@@ -11,11 +12,9 @@ import cn.freemud.entities.dto.ecology.ReportActivityBehaviorsRequest; ...@@ -11,11 +12,9 @@ import cn.freemud.entities.dto.ecology.ReportActivityBehaviorsRequest;
import cn.freemud.entities.dto.order.CreateCashierOrderDto; import cn.freemud.entities.dto.order.CreateCashierOrderDto;
import cn.freemud.entities.dto.pay.SvcPayItem; import cn.freemud.entities.dto.pay.SvcPayItem;
import cn.freemud.entities.dto.pay.svc.ConsumeHistoryCreateRequest; import cn.freemud.entities.dto.pay.svc.ConsumeHistoryCreateRequest;
import cn.freemud.entities.dto.wallace.request.PepsiOrderSubmitRequest;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.order.CashierCheckResponseVo; import cn.freemud.entities.vo.order.*;
import cn.freemud.entities.vo.order.GetOrderConfigRequestVo;
import cn.freemud.entities.vo.order.PaymentConfigVo;
import cn.freemud.entities.vo.order.PlugInParameter;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.service.handle.PaymentHandle; import cn.freemud.management.service.handle.PaymentHandle;
...@@ -26,6 +25,7 @@ import cn.freemud.redis.RedisCache; ...@@ -26,6 +25,7 @@ import cn.freemud.redis.RedisCache;
import cn.freemud.service.*; import cn.freemud.service.*;
import cn.freemud.service.thirdparty.EcologyProgramApplicationClient; import cn.freemud.service.thirdparty.EcologyProgramApplicationClient;
import cn.freemud.service.thirdparty.SvcTransactionClient; import cn.freemud.service.thirdparty.SvcTransactionClient;
import cn.freemud.service.thirdparty.WallaceApplicationClient;
import cn.freemud.service.universal.factory.CreateOrderServiceFactory; import cn.freemud.service.universal.factory.CreateOrderServiceFactory;
import cn.freemud.utils.RedisUtil; import cn.freemud.utils.RedisUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
...@@ -35,6 +35,8 @@ import com.freemud.api.assortment.datamanager.enums.IappIdType; ...@@ -35,6 +35,8 @@ import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.log.ApiLog; import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog; import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.adapter.OrderCenterSdkAdapter;
import com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties; import com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.v1.ProductBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.ProductBeanV1;
...@@ -43,7 +45,10 @@ import com.freemud.application.sdk.api.ordercenter.enums.BizTypeEnum; ...@@ -43,7 +45,10 @@ import com.freemud.application.sdk.api.ordercenter.enums.BizTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.MarketTypeEnum; import com.freemud.application.sdk.api.ordercenter.enums.MarketTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.NewOrderStatus; import com.freemud.application.sdk.api.ordercenter.enums.NewOrderStatus;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType; import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.service.EmailAlertService; import com.freemud.application.sdk.api.service.EmailAlertService;
import com.freemud.sdk.api.assortment.order.util.LockUtils; import com.freemud.sdk.api.assortment.order.util.LockUtils;
import com.google.gson.Gson; import com.google.gson.Gson;
...@@ -56,10 +61,7 @@ import org.springframework.context.annotation.Lazy; ...@@ -56,10 +61,7 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.Arrays; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -84,6 +86,18 @@ public class OrderAdapterServiceImpl { ...@@ -84,6 +86,18 @@ public class OrderAdapterServiceImpl {
@Value("${weixin.pay.success.goods:}") @Value("${weixin.pay.success.goods:}")
private String weixinPayGoods; private String weixinPayGoods;
//华莱士百事抽奖 一次性活动,结束即可删除 格式(商户号,用逗号分割):2690,2581
@Value("${baishi.activity.partner:2581,2692,2690}")
private String baishiActivityPartner;
//华莱士百事抽奖 一次性活动,结束即可删除 格式(商户号,用逗号分割):2690,2581
@Value("${baishi.activity.amount:10000000000}")
private Integer baishiActivityAmount;
//华莱士百事抽奖 一次性活动,结束即可删除 格式(商户号@商品,用逗号分割):13981711,34343345
@Value("${baishi.activity.good:}")
private String baishiActivityGood;
private final String PAY_SUCCESS_KEY = "pay_success_key:"; private final String PAY_SUCCESS_KEY = "pay_success_key:";
/** /**
...@@ -171,6 +185,12 @@ public class OrderAdapterServiceImpl { ...@@ -171,6 +185,12 @@ public class OrderAdapterServiceImpl {
private EmailAlertService emailAlertService; private EmailAlertService emailAlertService;
@Autowired @Autowired
private PaymentHandle paymentHandle; private PaymentHandle paymentHandle;
@Autowired
private OrderSdkService orderSdkService;
@Autowired
private OrderCenterSdkAdapter orderCenterSdkAdapter;
@Autowired
private WallaceApplicationClient wallaceApplicationClient;
//获取下单实现对象 //获取下单实现对象
private OrderFactoryService getCreateOrderBean(AssortmentCustomerInfoVo assortmentCustomerInfoVo, CreateOrderVo createOrderVo) { private OrderFactoryService getCreateOrderBean(AssortmentCustomerInfoVo assortmentCustomerInfoVo, CreateOrderVo createOrderVo) {
...@@ -583,4 +603,84 @@ public class OrderAdapterServiceImpl { ...@@ -583,4 +603,84 @@ public class OrderAdapterServiceImpl {
} }
return false; return false;
} }
/**
* 华莱士临时需求,
* @param request
* @return
*/
public BaseResponse wallaceTempActivity(WallaceTempActivityRequest request) {
AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(request.getSessionId());
if (assortmentCustomerInfoVo == null || StringUtils.isEmpty(assortmentCustomerInfoVo.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
// 校验订单
QueryByCodeResponse orderDetailResponse = orderSdkService.getOrderInfo(null, request.getOrderCode(), null, null, LogThreadLocal.getTrackingNo());
if (orderDetailResponse == null || !ResponseResult.SUCCESS.getCode().equals(orderDetailResponse.getCode() + "") || orderDetailResponse.getResult() == null) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
OrderInfoReqs orderInfoReqs = orderDetailResponse.getResult();
if (!Objects.equals(orderInfoReqs.getUserId(), assortmentCustomerInfoVo.getMemberId())) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
Map<String, Object> respVo = new HashMap<>();
respVo.put("skip", false);
// 校验 是否可以参加活动
// step1 调用敬轩, 是否能参加活动
OrderBeanV1 orderBeanV1 = orderCenterSdkAdapter.convent2NEWOrderInfo(orderInfoReqs);
boolean skip = this.canJoinActivity(orderInfoReqs.getPartnerId(), orderBeanV1.getProductList(), orderBeanV1.getSettlementAmount().intValue());
if (!skip) {
return ResponseUtil.success(respVo);
}
// stpe2 调用光兴, 是否成功 +1
try {
PepsiOrderSubmitRequest pepsiOrderSubmitRequest = new PepsiOrderSubmitRequest();
pepsiOrderSubmitRequest.setMemberId(orderInfoReqs.getUserId());
pepsiOrderSubmitRequest.setOrderCode(orderInfoReqs.getOrderCode());
pepsiOrderSubmitRequest.setPartnerId(orderInfoReqs.getPartnerId());
EdenResponse edenResponse = wallaceApplicationClient.pepsiOrderSubmit(pepsiOrderSubmitRequest);
skip = Objects.equals(edenResponse.getStatusCode(), EdenResponse.SUCCESSCODE);
respVo.put("error", edenResponse.getMessage());
} catch (Exception e) {
skip = false;
respVo.put("error", e.getMessage());
}
respVo.put("skip", skip);
return ResponseUtil.success(respVo);
}
private boolean canJoinActivity(String partnerId,List<ProductBeanV1> productList,Integer payAmount){
List<String> partnerList = Arrays.asList(baishiActivityPartner.split(","));
if(!partnerList.contains(partnerId)){
return false;
}
if(payAmount >= baishiActivityAmount){
return true;
}
List<String> goodsList = Arrays.asList(baishiActivityGood.split(","));
if(CollectionUtils.isNotEmpty(goodsList) && CollectionUtils.isNotEmpty(productList)){
return productList.stream().anyMatch(productBeanV1 -> {
boolean mainProduct = goodsList.contains(StringUtils.isBlank(productBeanV1.getSpecification())?productBeanV1.getProductId():productBeanV1.getSpecification());
if(mainProduct){
return true;
}
if(CollectionUtils.isNotEmpty(productBeanV1.getSendProduct())){
boolean sendProduct = productBeanV1.getSendProduct().stream().anyMatch(send->goodsList.contains(StringUtils.isBlank(send.getSpecification())?send.getProductId():send.getSpecification()));
if(sendProduct){
return true;
}
}
if(CollectionUtils.isNotEmpty(productBeanV1.getComboProduct())){
boolean comboProduct = productBeanV1.getComboProduct().stream().anyMatch(combo->goodsList.contains(StringUtils.isBlank(combo.getSpecification())?combo.getProductId():combo.getSpecification()));
if(comboProduct){
return true;
}
}
return false;
});
}
return false;
}
} }
package cn.freemud.service.thirdparty;
import cn.freemud.entities.EdenResponse;
import cn.freemud.entities.dto.wallace.request.PepsiOrderSubmitRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/7/15 17:04
* @description :
*/
@FeignClient(name = "wallace-application")
@RequestMapping(produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
public interface WallaceApplicationClient {
/**
* 请求百事 设置抽奖次数+1
*
* @param request
* @return
*/
@PostMapping(value = "/pass/wallace/pepsi/order/submit")
EdenResponse pepsiOrderSubmit(@RequestBody PepsiOrderSubmitRequest request);
}
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