Commit ec9bfab6 by 周晓航

Merge branch 'feature/20210609-v2.0.34-下单锁定配送券ID1030707-周晓航-合并张悦33版本'

# Conflicts:
#	assortment-ordercenter-sdk/pom.xml
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
#	order-application-service/src/main/java/cn/freemud/service/coupon/impl/PlatformCouponRelationServiceImpl.java
parents ee4c60b3 f6f012e7
......@@ -26,7 +26,7 @@
<dependency>
<artifactId>couponcenter-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId>
<version>4.1.1.RELEASE</version>
<version>4.1.3-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
......
package com.freemud.sdk.api.assortment.order.adapter;
import com.freemud.application.sdk.api.log.ApiLog;
import com.google.common.collect.Lists;
import cn.freemud.base.constant.Version;
......@@ -32,6 +34,7 @@ import com.freemud.sdk.api.assortment.order.response.order.*;
import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
import com.freemud.sdk.api.assortment.order.util.ClassUtils;
import com.freemud.sdk.api.assortment.order.util.WeightUtils;
import com.mysql.cj.util.LogUtils;
import ma.glasnost.orika.MapperFacade;
import ma.glasnost.orika.impl.DefaultMapperFactory;
import org.apache.commons.collections4.CollectionUtils;
......@@ -56,11 +59,12 @@ public class OrderSdkAdapter {
/**
* 接单request
*
* @param operator
* @param orderBean
* @return
*/
public BaseQueryOrderRequest getOrderConfirmRequest(String operator, QueryOrdersResponse.DataBean.OrderBean orderBean){
public BaseQueryOrderRequest getOrderConfirmRequest(String operator, QueryOrdersResponse.DataBean.OrderBean orderBean) {
BaseQueryOrderRequest orderRequest = new BaseQueryOrderRequest();
orderRequest.setOrderId(orderBean.getOid());
orderRequest.setShopId(orderBean.getShopId());
......@@ -68,7 +72,7 @@ public class OrderSdkAdapter {
orderRequest.setPartnerId(orderBean.getCompanyId());
// orderRequest.setOrderType(getNewOrderTypeEnum(orderBean.getType(), orderBean.getGmtExpect()));
orderRequest.setOrderType(OrderType.getOrderType(orderBean.getNewOrderType()));
if(orderBean.getGmtExpect() != null && orderBean.getGmtExpect() != 0){
if (orderBean.getGmtExpect() != null && orderBean.getGmtExpect() != 0) {
orderRequest.setExpectTime(cn.freemud.base.util.DateUtil.convert2String(new Date(orderBean.getGmtExpect()), cn.freemud.base.util.DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
}
orderRequest.setOperator(operator);
......@@ -77,8 +81,7 @@ public class OrderSdkAdapter {
//配送信息为空,自配送
if (orderBean.getAddInfo() == null || orderBean.getAddInfo().getDeliveryType() == null) {
orderRequest.setDeliveryType(QueryDeliveryType.SELF.getCode());
}
else {
} else {
orderRequest.setDeliveryType(orderBean.getAddInfo().getDeliveryType());
}
return orderRequest;
......@@ -102,6 +105,7 @@ public class OrderSdkAdapter {
/**
* 拒单request
*
* @param operator
* @param reason
* @param refundStatus
......@@ -109,7 +113,7 @@ public class OrderSdkAdapter {
* @param orderBean
* @return
*/
public CancelOrderRequest getCancelOrderRequest(String operator,String reason,PayRefundStatus refundStatus,String refundId,QueryOrdersResponse.DataBean.OrderBean orderBean){
public CancelOrderRequest getCancelOrderRequest(String operator, String reason, PayRefundStatus refundStatus, String refundId, QueryOrdersResponse.DataBean.OrderBean orderBean) {
CancelOrderRequest var1 = new CancelOrderRequest();
var1.setPartnerId(orderBean.getCompanyId());
var1.setOrderId(orderBean.getOid());
......@@ -128,7 +132,8 @@ public class OrderSdkAdapter {
var1.setReason(reason);
return var1;
}
public CancelOrderRequest getRejectRefundRequest(String operator,String reason,QueryOrdersResponse.DataBean.OrderBean orderBean){
public CancelOrderRequest getRejectRefundRequest(String operator, String reason, QueryOrdersResponse.DataBean.OrderBean orderBean) {
CancelOrderRequest var1 = new CancelOrderRequest();
var1.setOrderId(orderBean.getOid());
var1.setReason(reason);
......@@ -158,7 +163,7 @@ public class OrderSdkAdapter {
return cancelOrderRequest;
}
public BaseQueryOrderRequest getRefundAgreeRequest(String refund_id,String reason,String operator, QueryOrdersResponse.DataBean.OrderBean orderBean){
public BaseQueryOrderRequest getRefundAgreeRequest(String refund_id, String reason, String operator, QueryOrdersResponse.DataBean.OrderBean orderBean) {
BaseQueryOrderRequest var1 = new BaseQueryOrderRequest();
var1.setPartnerId(orderBean.getCompanyId());
var1.setOrderId(orderBean.getOid());
......@@ -174,7 +179,7 @@ public class OrderSdkAdapter {
}
/**
* 老订单服务创建订单对象 转换成 新订单服务请求对象
* 老订单服务创建订单对象 转换成 新订单服务请求对象 fisherman
*/
public com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest convent2NEWCreateOrderRequest(BaseCreateOrderRequest requestVO) {
com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest request = new com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest();
......@@ -210,10 +215,10 @@ public class OrderSdkAdapter {
request.setSettlementAmount(requestVO.getAmount());
//实际支付现金金额,扣除支付自生优惠,单位分
request.setActualPayAmount(requestVO.getAmount());
if(requestVO.getOrderClient() != null){
if (requestVO.getOrderClient() != null) {
request.setOrderClient(requestVO.getOrderClient().getIndex());
}else {
request.setOrderClient(StringUtils.isEmpty(requestVO.getSource())? OrderClientType.SAAS.getIndex():getNewOrderClient(requestVO.getSource()));
} else {
request.setOrderClient(StringUtils.isEmpty(requestVO.getSource()) ? OrderClientType.SAAS.getIndex() : getNewOrderClient(requestVO.getSource()));
}
//订单业务类型 1:普通订单 2:虚拟订单
request.setBizType(1);
......@@ -284,7 +289,7 @@ public class OrderSdkAdapter {
request.setWeight(orderWeight);
// 买一赠一寄件信息
if(requestVO.getChooseGoods() != null && !requestVO.getChooseGoods().isEmpty()){
if (requestVO.getChooseGoods() != null && !requestVO.getChooseGoods().isEmpty()) {
request.setOrderSendCouponRespList(JSONArray.parseArray(JSONObject.toJSONString(requestVO.getChooseGoods()), CreateOrderRequest.ChooseGood.class));
}
// 【ID1030916】订单查询门店获取预计送达时间
......@@ -347,10 +352,10 @@ public class OrderSdkAdapter {
request.setSettlementAmount(requestVO.getAmount());
//实际支付现金金额,扣除支付自生优惠,单位分
request.setActualPayAmount(requestVO.getAmount());
if(requestVO.getOrderClient() != null){
if (requestVO.getOrderClient() != null) {
request.setOrderClient(requestVO.getOrderClient().getIndex());
}else {
request.setOrderClient(StringUtils.isEmpty(requestVO.getSource())? OrderClientType.SAAS.getIndex():getNewOrderClient(requestVO.getSource()));
} else {
request.setOrderClient(StringUtils.isEmpty(requestVO.getSource()) ? OrderClientType.SAAS.getIndex() : getNewOrderClient(requestVO.getSource()));
}
//订单业务类型 1:普通订单 2:虚拟订单
request.setBizType(1);
......@@ -525,6 +530,7 @@ public class OrderSdkAdapter {
private Long convertCreateOrderCost(Long originalAmount, List<OrderSettlementCreateReq> orderSettlementCreateReqList, List<OrderCostCreateReq> orderCostCreateReqs, List<CreateOrderAccountRequest> accounts) {
if (!CollectionUtils.isEmpty(accounts)) {
ApiLog.info("fisherman 构建order_cost_detail数据",accounts,JSON.toJSONString(accounts));
for (CreateOrderAccountRequest accountRequest : accounts) {
//老订单服务 1=配送费;3=包装费
if (QueryOrderAccountType.DELIVERY_AMOUNT.equals(accountRequest.getAccountType())
......@@ -535,7 +541,7 @@ public class OrderSdkAdapter {
orderCostCreateReq.setCostName(accountRequest.getName());
//新订单服务 1=包装费,2=运费,3=餐盒单价,4=餐盒数量
orderCostCreateReq.setCostType(getCostType(accountRequest.getAccountType()));
orderCostCreateReq.setActualCostAmount(accountRequest.getActualPrice()!=null?accountRequest.getActualPrice():accountRequest.getPrice());
orderCostCreateReq.setActualCostAmount(accountRequest.getActualPrice() != null ? accountRequest.getActualPrice() : accountRequest.getPrice());
orderCostCreateReq.setCostAmount(accountRequest.getPrice());
originalAmount += accountRequest.getPrice();
orderCostCreateReq.setProductSeq(accountRequest.getSequence());
......@@ -683,7 +689,7 @@ public class OrderSdkAdapter {
orderConditionsReq.setOrderCodes(request.getOrderIds());
orderConditionsReq.setPartnerId(request.getCompanyId());
orderConditionsReq.setPageSize(request.getPageSize());
orderConditionsReq.setPageNum(request.getPageNumber()>0?request.getPageNumber():0);
orderConditionsReq.setPageNum(request.getPageNumber() > 0 ? request.getPageNumber() : 0);
orderConditionsReq.setMobile(request.getPhoneNo());
orderConditionsReq.setStoreIds(request.getShopIds());
orderConditionsReq.setPayStatuses(request.getPayStatuses());
......@@ -854,7 +860,7 @@ public class OrderSdkAdapter {
accountBean.setNumber(1);
accountBean.setPrice(orderSettlementResp.getSettlementAmount() == null ? 0L : orderSettlementResp.getSettlementAmount().longValue());
//处理第三方外卖单优惠金额信息
if(orderSettlementResp.getSettlementAmount() != null && orderSettlementResp.getSettlementAmount().intValue() > 0){
if (orderSettlementResp.getSettlementAmount() != null && orderSettlementResp.getSettlementAmount().intValue() > 0) {
long discountFee = 0 - Math.abs(orderSettlementResp.getSettlementAmount().longValue());
accountBean.setPrice(discountFee);
}
......@@ -917,9 +923,9 @@ public class OrderSdkAdapter {
String partnerProductId = orderItem.getProductId() + "_" + orderItem.getProductSeq();
List<OrderItemResp> comboProducts = orderItemList.stream().filter(item -> ObjectUtils.equals(partnerProductId, item.getParentProductId())).collect(Collectors.toList());
comboProducts.forEach(combo -> productBean.getComboProduct().add(getOldOrderProduct(orderSettlementResps, combo)));
if(CollectionUtils.isNotEmpty(productBean.getComboProduct())) {
for(QueryOrdersResponse.DataBean.OrderBean.ProductBean comboProductBean : productBean.getComboProduct()) {
if(ObjectUtils.equals(ProductTypeEnum.MATERIAL_PRODUCT.getCode(), comboProductBean.getProductType())) {
if (CollectionUtils.isNotEmpty(productBean.getComboProduct())) {
for (QueryOrdersResponse.DataBean.OrderBean.ProductBean comboProductBean : productBean.getComboProduct()) {
if (ObjectUtils.equals(ProductTypeEnum.MATERIAL_PRODUCT.getCode(), comboProductBean.getProductType())) {
comboProductBean.setMaterialProduct(new ArrayList<>());
String addProductId = comboProductBean.getProductId() + "_" + comboProductBean.getOpid();
List<OrderItemResp> materialProducts = orderItemList.stream().filter(item -> ObjectUtils.equals(addProductId, item.getParentProductId())).collect(Collectors.toList());
......@@ -936,7 +942,7 @@ public class OrderSdkAdapter {
materialProducts.forEach(material -> productBean.getMaterialProduct().add(getOldOrderProduct(orderSettlementResps, material)));
}
if(StringUtils.isNotEmpty(productBean.getExtInfo())) {
if (StringUtils.isNotEmpty(productBean.getExtInfo())) {
OrderProductAddInfoDto extInfo = JSONObject.parseObject(productBean.getExtInfo(), OrderProductAddInfoDto.class);
productBean.setIsSendGoods(null == extInfo.getIsSendGoods() ? false : extInfo.getIsSendGoods());
productBean.setCartGoodsUid(StringUtils.isEmpty(extInfo.getCartGoodsUid()) ? "" : extInfo.getCartGoodsUid());
......@@ -946,16 +952,16 @@ public class OrderSdkAdapter {
productList.add(productBean);
}
if(null != productList && productList.size() >0) {
if (null != productList && productList.size() > 0) {
for (QueryOrdersResponse.DataBean.OrderBean.ProductBean sendProductBean : productList) {
sendProductBean.setIsPrint(true);
if(null !=sendProductBean.getIsSendGoods() && sendProductBean.getIsSendGoods() && StringUtils.isNotEmpty(sendProductBean.getOriginalGoodsUid())){
if (null != sendProductBean.getIsSendGoods() && sendProductBean.getIsSendGoods() && StringUtils.isNotEmpty(sendProductBean.getOriginalGoodsUid())) {
sendProductBean.setIsPrint(false);
}
if (StringUtils.isNotEmpty(sendProductBean.getCartGoodsUid()) && null !=sendProductBean.getIsSendGoods() && !sendProductBean.getIsSendGoods() ) {
if (StringUtils.isNotEmpty(sendProductBean.getCartGoodsUid()) && null != sendProductBean.getIsSendGoods() && !sendProductBean.getIsSendGoods()) {
sendProductBean.setSendProduct(productList.stream()
.filter(productBean ->productBean.getOriginalGoodsUid().equalsIgnoreCase(sendProductBean.getCartGoodsUid())
&& productBean.getIsSendGoods() == true)
.filter(productBean -> productBean.getOriginalGoodsUid().equalsIgnoreCase(sendProductBean.getCartGoodsUid())
&& productBean.getIsSendGoods() == true)
.map(o -> JSON.parseObject(JSON.toJSONString(o), QueryOrdersResponse.DataBean.OrderBean.ProductBean.class))
.collect(Collectors.toList()));
}
......@@ -1114,7 +1120,7 @@ public class OrderSdkAdapter {
*/
public QueryOrdersResponse.DataBean.OrderBean convent2NEWOrderInfo(OrderInfoReqs orderInfoReqs) {
QueryOrdersResponse.DataBean.OrderBean data = new QueryOrdersResponse.DataBean.OrderBean();
if(Objects.nonNull(orderInfoReqs.getEstimateDeliveryCompleteTime())){
if (Objects.nonNull(orderInfoReqs.getEstimateDeliveryCompleteTime())) {
data.setEstimateDeliveryCompleteTime(Long.parseLong(orderInfoReqs.getEstimateDeliveryCompleteTime()));
}
data.setOrderClient(orderInfoReqs.getOrderClient().toString());
......@@ -1192,9 +1198,9 @@ public class OrderSdkAdapter {
}
data.setOperator(orderInfoReqs.getOperator());
data.setOperateTime(orderInfoReqs.getUpdateTimestamp());
if (CollectionUtils.isNotEmpty(orderInfoReqs.getOrderOperationHistoryList())){
List<OrderOperationHistoryResp> historyList = orderInfoReqs.getOrderOperationHistoryList();
OrderOperationHistoryResp historyResp = historyList.get(historyList.size()-1);
if (CollectionUtils.isNotEmpty(orderInfoReqs.getOrderOperationHistoryList())) {
List<OrderOperationHistoryResp> historyList = orderInfoReqs.getOrderOperationHistoryList();
OrderOperationHistoryResp historyResp = historyList.get(historyList.size() - 1);
data.setOperator(historyResp.getOperator());
data.setOperateTime(historyResp.getUpdateTime());
}
......@@ -1226,16 +1232,16 @@ public class OrderSdkAdapter {
if (orderInfoReqs.getPayTime() != null) {
data.setGmtPay(Long.parseLong(orderInfoReqs.getPayTime()));
}
if(orderInfoReqs.getReceiveTime()!=null){
if (orderInfoReqs.getReceiveTime() != null) {
data.setGmtCompleteTime(Long.parseLong(orderInfoReqs.getReceiveTime()));
data.setGmtReceiveTime(Long.parseLong(orderInfoReqs.getReceiveTime()));
}
if(orderInfoReqs.getDeliveryTime() != null){
if (orderInfoReqs.getDeliveryTime() != null) {
data.setGmtDelivery(Long.decode(orderInfoReqs.getDeliveryTime()));
}
if(null != orderInfoReqs.getAfterSalesOrderList() && orderInfoReqs.getAfterSalesOrderList().size()>0){
if (null != orderInfoReqs.getAfterSalesOrderList() && orderInfoReqs.getAfterSalesOrderList().size() > 0) {
AfterSalesOrderResp afterSalesOrderResp = orderInfoReqs.getAfterSalesOrderList().get(0);
if(AfterSalesStatus.COMPLETE.getIndex() == afterSalesOrderResp.getAfterSalesStatus()){
if (AfterSalesStatus.COMPLETE.getIndex() == afterSalesOrderResp.getAfterSalesStatus()) {
data.setGmtRefundFinish(Long.parseLong(afterSalesOrderResp.getUpdateTime()));
}
}
......@@ -1302,9 +1308,9 @@ public class OrderSdkAdapter {
data.setOrderOperationHistoryList(getOrderOperationHistory(orderInfoReqs.getOrderOperationHistoryList()));
data.setApportionDetails(getApportionDetails(orderInfoReqs));
data.setOrderSettlementDetailList(orderInfoReqs.getOrderSettlementDetailList());
if (Objects.nonNull(orderInfoReqs.getOrderSettlementDetailList())){
if (Objects.nonNull(orderInfoReqs.getOrderSettlementDetailList())) {
orderInfoReqs.getOrderSettlementDetailList().stream()
.filter(e -> Objects.equals(OrderSettlementType.SPELL_GROUP.getIndex(),e.getSettlementType())).findFirst().ifPresent(e->data.setSpellGroupActivityCode(e.getExternalObjectId()));
.filter(e -> Objects.equals(OrderSettlementType.SPELL_GROUP.getIndex(), e.getSettlementType())).findFirst().ifPresent(e -> data.setSpellGroupActivityCode(e.getExternalObjectId()));
}
//费用信息
data.setOrderCostDetailList(orderInfoReqs.getOrderCostDetailList());
......@@ -1334,6 +1340,7 @@ public class OrderSdkAdapter {
/**
* 混合支付转换
*
* @param OrderPayItemReqs
*/
private List<QueryOrdersResponse.DataBean.OrderBean.OrderPayItem> getOrderItemPayList(List<OrderPayItemReqs> OrderPayItemReqs) {
......@@ -1349,6 +1356,7 @@ public class OrderSdkAdapter {
}
return OrderPayItemList;
}
public QueryOrdersResponse convent2QueryOrdersResponse(BaseResponse<QueryOrderForUserResp> baseResponse) {
QueryOrdersResponse response = new QueryOrdersResponse();
response.setErrcode(Integer.parseInt(baseResponse.getCode()));
......@@ -1494,34 +1502,34 @@ public class OrderSdkAdapter {
type = 104;
break;
case "TOTAL_DISCOUNT":
type=205;
type = 205;
break;
case "ONLINE_PAY":
type=218;
type = 218;
break;
case "OFFLINE_PAY":
type=219;
type = 219;
break;
case "FULL_DISTRIBUTION_FEE":
type=1014;
type = 1014;
break;
case "MEMBER_PRICE_DISCOUNT":
type=220;
type = 220;
break;
case "GATHER_SPOT":
type=221;
type = 221;
break;
case "COCO_PRODUCT_CASH_COUPON":
type=36;
type = 36;
break;
case "FULL_BUYM_SENDN":
type=230;
type = 230;
break;
case "MONTH_CARD_TOTAL_DISCOUNT":
type=231;
type = 231;
break;
case "SINGLE_PRODUCT_REDUCTION":
type=22;
type = 22;
break;
default:
break;
......@@ -1773,7 +1781,7 @@ public class OrderSdkAdapter {
* @param stockChangeType 库存改变类型
* @return
*/
public UpdateStocksRequest getUpdateProductStock(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderProductRequest> products, StockChangeType stockChangeType,String menuType) {
public UpdateStocksRequest getUpdateProductStock(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderProductRequest> products, StockChangeType stockChangeType, String menuType) {
UpdateStocksRequest updateStocksRequest = new UpdateStocksRequest();
updateStocksRequest.setChannel(menuType);
updateStocksRequest.setChangeType(stockChangeType.getCode());
......@@ -2131,25 +2139,25 @@ public class OrderSdkAdapter {
newOrderAccountType = OldOrderAccountType.XY_DISCOUNT.getCode();
break;
case 205:
newOrderAccountType=OldOrderAccountType.TOTAL_DISCOUNT.getCode();
newOrderAccountType = OldOrderAccountType.TOTAL_DISCOUNT.getCode();
break;
case 220:
newOrderAccountType=OldOrderAccountType.MEMBER_PRICE_DISCOUNT.getCode();
newOrderAccountType = OldOrderAccountType.MEMBER_PRICE_DISCOUNT.getCode();
break;
case 99:
newOrderAccountType=OldOrderAccountType.FREIGHT_COUPON.getCode();
newOrderAccountType = OldOrderAccountType.FREIGHT_COUPON.getCode();
break;
case 36:
newOrderAccountType=OldOrderAccountType.COCO_PRODUCT_CASH_COUPON.getCode();
newOrderAccountType = OldOrderAccountType.COCO_PRODUCT_CASH_COUPON.getCode();
break;
case 230:
newOrderAccountType=OldOrderAccountType.FULL_BUYM_SENDN.getCode();
newOrderAccountType = OldOrderAccountType.FULL_BUYM_SENDN.getCode();
break;
case 231:
newOrderAccountType=OldOrderAccountType.MONTH_CARD_TOTAL_DISCOUNT.getCode();
newOrderAccountType = OldOrderAccountType.MONTH_CARD_TOTAL_DISCOUNT.getCode();
break;
case 22:
newOrderAccountType=OldOrderAccountType.SINGLE_PRODUCT_REDUCTION.getCode();
newOrderAccountType = OldOrderAccountType.SINGLE_PRODUCT_REDUCTION.getCode();
break;
default:
break;
......@@ -2476,12 +2484,12 @@ public class OrderSdkAdapter {
return userScoreRequest;
}
public CouponRequest convert2CouponVerificationRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts){
public CouponRequest convert2CouponVerificationRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts) {
if (CollectionUtils.isEmpty(accounts)) {
return null;
}
Optional<CreateOrderAccountRequest> accountRequest = accounts.stream().filter(account -> account.getAccountType().equals(QueryOrderAccountType.COUPON) || account.getAccountType().equals(QueryOrderAccountType.PRODUCT_COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.DISCOUNT_COUPON)).findFirst();
Optional<CreateOrderAccountRequest> accountRequest = accounts.stream().filter(account -> account.getAccountType().equals(QueryOrderAccountType.COUPON) || account.getAccountType().equals(QueryOrderAccountType.PRODUCT_COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.DISCOUNT_COUPON)).findFirst();
if (!accountRequest.isPresent() || accountRequest.get().getPrice() == 0) {
return null;
}
......@@ -2508,7 +2516,7 @@ public class OrderSdkAdapter {
}
}
}
ActivityChannelEnum activityChannelEnum = Objects.equals(OldOrderType.TAKE_OUT.getCode(), orderBean.getType())?ActivityChannelEnum.delivery:ActivityChannelEnum.pickup;
ActivityChannelEnum activityChannelEnum = Objects.equals(OldOrderType.TAKE_OUT.getCode(), orderBean.getType()) ? ActivityChannelEnum.delivery : ActivityChannelEnum.pickup;
CouponRequest couponCodeVerificationDto = new CouponRequest();
couponCodeVerificationDto.setVer(Integer.valueOf(Version.VERSION_1));
couponCodeVerificationDto.setReqtype(71);
......@@ -2797,7 +2805,7 @@ public class OrderSdkAdapter {
* @return 订单金额
*/
public Long updateOrderItemsAndSettlements(List<OrderItemCreateReq> orderItemList, List<OrderSettlementCreateReq> orderSettlementCreateReqList, List<OrderCostCreateReq> orderCostCreateReqs,
List<CreateOrderProductRequest> products, List<CreateOrderAccountRequest> accounts, String partnerId) {
List<CreateOrderProductRequest> products, List<CreateOrderAccountRequest> accounts, String partnerId) {
Long originalAmount = 0L;
// 更新订单费用信息
originalAmount = convertCreateOrderCost(originalAmount, orderSettlementCreateReqList, orderCostCreateReqs, accounts);
......@@ -2814,7 +2822,7 @@ public class OrderSdkAdapter {
if (CollectionUtils.isNotEmpty(productRequest.getMaterialProduct())) {
// 父类商品productId=productId+seq
String partnerProductId = productRequest.getProductId() + "_" + index;
for (CreateOrderProductRequest material: productRequest.getMaterialProduct()){
for (CreateOrderProductRequest material : productRequest.getMaterialProduct()) {
index++;
material.setOpid(index);
material.setSpecification(material.getProductId());
......@@ -2837,7 +2845,7 @@ public class OrderSdkAdapter {
}
private Long updateMCCafeOrderItemsAndSettlements(List<OrderItemCreateReq> orderItemList, List<OrderSettlementCreateReq> orderSettlementCreateReqList, List<OrderCostCreateReq> orderCostCreateReqs,
List<CreateOrderProductRequest> products, List<CreateOrderAccountRequest> accounts, String partnerId) {
List<CreateOrderProductRequest> products, List<CreateOrderAccountRequest> accounts, String partnerId) {
Long originalAmount = 0L;
// 更新订单费用信息
originalAmount = convertCreateOrderCost(originalAmount, orderSettlementCreateReqList, orderCostCreateReqs, accounts);
......@@ -2856,12 +2864,12 @@ public class OrderSdkAdapter {
// 父类商品productId=productId+seq
String parentProductId = productRequest.getProductId() + "_" + index;
if (CollectionUtils.isNotEmpty(productRequest.getComboProduct())) {
for(CreateOrderProductRequest combo : productRequest.getComboProduct()) {
for (CreateOrderProductRequest combo : productRequest.getComboProduct()) {
combo.setOpid(comboIndex);
updateMCCafeOrderItemAndSettlement(productRequest, orderItemList, orderSettlementCreateReqList, combo, partnerId, parentProductId, false);
if(CollectionUtils.isNotEmpty(combo.getMaterialProduct())) {
if (CollectionUtils.isNotEmpty(combo.getMaterialProduct())) {
String addProductId = combo.getProductId() + "_" + comboIndex;
for(CreateOrderProductRequest material : combo.getMaterialProduct()) {
for (CreateOrderProductRequest material : combo.getMaterialProduct()) {
material.setSpecification(material.getProductId());
material.setSpecificationName(material.getProductName());
updateMCCafeOrderItemAndSettlement(productRequest, orderItemList, orderSettlementCreateReqList, material, partnerId, addProductId, true);
......@@ -2870,10 +2878,10 @@ public class OrderSdkAdapter {
comboIndex++;
}
}
} else if(CollectionUtils.isNotEmpty(productRequest.getMaterialProduct())) {
} else if (CollectionUtils.isNotEmpty(productRequest.getMaterialProduct())) {
// 父类商品productId=productId+seq
String addProductId = productRequest.getProductId() + "_" + index;
for (CreateOrderProductRequest material: productRequest.getMaterialProduct()){
for (CreateOrderProductRequest material : productRequest.getMaterialProduct()) {
material.setSpecification(material.getProductId());
material.setSpecificationName(material.getProductName());
updateMCCafeOrderItemAndSettlement(productRequest, orderItemList, orderSettlementCreateReqList, material, partnerId, addProductId, true);
......@@ -2941,7 +2949,7 @@ public class OrderSdkAdapter {
Long setmealTotalSettlementPrice = 0L;
for (CreateOrderProductRequest createOrderProductRequest : product.getComboProduct()) {
// 删除的不计算在内
if(createOrderProductRequest.getIsDeleted() != null && createOrderProductRequest.getIsDeleted()) {
if (createOrderProductRequest.getIsDeleted() != null && createOrderProductRequest.getIsDeleted()) {
continue;
}
Long comboProductTotalDiscountAmount = createOrderProductRequest.getTotalDiscountAmount() == null ? 0L : createOrderProductRequest.getTotalDiscountAmount();
......@@ -2972,7 +2980,7 @@ public class OrderSdkAdapter {
orderItemCreateReq.setProductUnit(product.getUnit());
//获取商品属性
OrderProductAddInfoDto addInfo = JSONObject.parseObject(product.getAddInfo(), OrderProductAddInfoDto.class);
if (addInfo !=null ) {
if (addInfo != null) {
orderItemCreateReq.setProductProperty(addInfo.getAttributeNames());
orderItemCreateReq.setProductForeignProperty(addInfo.getAttributeForeignNames());
}
......@@ -3000,29 +3008,29 @@ public class OrderSdkAdapter {
if (StringUtils.isNotBlank(product.getThirdProductPropertyId())) {
extInfo.setThirdProductPropertyId(product.getThirdProductPropertyId());
}
if (StringUtils.isNotBlank(product.getThirdCategoryId())){
if (StringUtils.isNotBlank(product.getThirdCategoryId())) {
extInfo.setThirdCategoryId(product.getThirdCategoryId());
}
if (StringUtils.isNotBlank(product.getClassificationId())){
if (StringUtils.isNotBlank(product.getClassificationId())) {
extInfo.setThirdCensusCategoryId(product.getClassificationId());
extInfo.setThirdCensusCategoryName(product.getClassificationName());
}
if(CollectionUtils.isNotEmpty(product.getSpecialAttrs())) {
if (CollectionUtils.isNotEmpty(product.getSpecialAttrs())) {
extInfo.setSpecialAttrs(product.getSpecialAttrs());
}
if (0 != product.getTax()){
if (0 != product.getTax()) {
extInfo.setTax(product.getTax());
}
if (StringUtils.isNotBlank(product.getTaxId())){
if (StringUtils.isNotBlank(product.getTaxId())) {
extInfo.setTaxId(product.getTaxId());
}
if (StringUtils.isNotBlank(product.getCardId())){
if (StringUtils.isNotBlank(product.getCardId())) {
extInfo.setCardId(product.getCardId());
}
if (StringUtils.isNotBlank(product.getCardCode())){
if (StringUtils.isNotBlank(product.getCardCode())) {
extInfo.setCardCode(product.getCardCode());
}
if (StringUtils.isNotBlank(product.getSplitIndex())){
if (StringUtils.isNotBlank(product.getSplitIndex())) {
extInfo.setSplitIndex(product.getSplitIndex());
}
extInfo.setStapleFood(product.getStapleFood());
......@@ -3034,7 +3042,7 @@ public class OrderSdkAdapter {
extInfo.setIsSendGoods(product.getIsSendGoods());
// 是否需要积分,农工商发送积分需要判断商品是否是送积分的商品
// 发积分的操作移到消费者,所以这个值需要保存下来
if(product.getNeedBonus() != null){
if (product.getNeedBonus() != null) {
extInfo.setNeedBonus(product.getNeedBonus());
}
......@@ -3138,7 +3146,7 @@ public class OrderSdkAdapter {
orderItemCreateReq.setProductUnit(product.getUnit());
//获取商品属性
OrderProductAddInfoDto addInfo = JSONObject.parseObject(product.getAddInfo(), OrderProductAddInfoDto.class);
if (addInfo !=null ) {
if (addInfo != null) {
orderItemCreateReq.setProductProperty(addInfo.getAttributeNames());
orderItemCreateReq.setProductForeignProperty(addInfo.getAttributeForeignNames());
}
......@@ -3166,29 +3174,29 @@ public class OrderSdkAdapter {
if (StringUtils.isNotBlank(product.getThirdProductPropertyId())) {
extInfo.setThirdProductPropertyId(product.getThirdProductPropertyId());
}
if (StringUtils.isNotBlank(product.getThirdCategoryId())){
if (StringUtils.isNotBlank(product.getThirdCategoryId())) {
extInfo.setThirdCategoryId(product.getThirdCategoryId());
}
if (StringUtils.isNotBlank(product.getClassificationId())){
if (StringUtils.isNotBlank(product.getClassificationId())) {
extInfo.setThirdCensusCategoryId(product.getClassificationId());
extInfo.setThirdCensusCategoryName(product.getClassificationName());
}
if(CollectionUtils.isNotEmpty(product.getSpecialAttrs())) {
if (CollectionUtils.isNotEmpty(product.getSpecialAttrs())) {
extInfo.setSpecialAttrs(product.getSpecialAttrs());
}
if (0 != product.getTax()){
if (0 != product.getTax()) {
extInfo.setTax(product.getTax());
}
if (StringUtils.isNotBlank(product.getTaxId())){
if (StringUtils.isNotBlank(product.getTaxId())) {
extInfo.setTaxId(product.getTaxId());
}
if (StringUtils.isNotBlank(product.getCardId())){
if (StringUtils.isNotBlank(product.getCardId())) {
extInfo.setCardId(product.getCardId());
}
if (StringUtils.isNotBlank(product.getCardCode())){
if (StringUtils.isNotBlank(product.getCardCode())) {
extInfo.setCardCode(product.getCardCode());
}
if (StringUtils.isNotBlank(product.getSplitIndex())){
if (StringUtils.isNotBlank(product.getSplitIndex())) {
extInfo.setSplitIndex(product.getSplitIndex());
}
if (null != product.getProductGroupId()) {
......@@ -3207,7 +3215,7 @@ public class OrderSdkAdapter {
extInfo.setProductGroupList(product.getProductGroupList());
// 是否需要积分,农工商发送积分需要判断商品是否是送积分的商品
// 发积分的操作移到消费者,所以这个值需要保存下来
if(product.getNeedBonus() != null){
if (product.getNeedBonus() != null) {
extInfo.setNeedBonus(product.getNeedBonus());
}
......@@ -3332,15 +3340,15 @@ public class OrderSdkAdapter {
createOrderProductRequest.setSequence(productBean.getSequence());
createOrderProductRequest.setPrice(productBean.getPrice());
Long orginalTotalAmount = productBean.getPrice() * productBean.getNumber();
if(Objects.equals(productBean.getProductType(), ProductTypeEnum.WEIGHT_PRODUCT.getCode())) {
orginalTotalAmount = new BigDecimal(productBean.getPrice()+"").multiply(productBean.getWeight()).longValue();
if (Objects.equals(productBean.getProductType(), ProductTypeEnum.WEIGHT_PRODUCT.getCode())) {
orginalTotalAmount = new BigDecimal(productBean.getPrice() + "").multiply(productBean.getWeight()).longValue();
}
createOrderProductRequest.setTotalDiscountAmount(orginalTotalAmount - productBean.getSettlementPrice());
createOrderProductRequest.setUnit(productBean.getUnit());
createOrderProductRequest.setId(productBean.getId());
createOrderProductRequest.setProductType(productBean.getProductType());
OrderProductAddInfoDto extInfo = JSONObject.parseObject(productBean.getExtInfo(), OrderProductAddInfoDto.class);
if(extInfo != null) {
if (extInfo != null) {
createOrderProductRequest.setIsFixedProduct(extInfo.getIsFixedProduct());
createOrderProductRequest.setThirdProductSpecId(extInfo.getThirdProductSpecId());
createOrderProductRequest.setThirdProductPropertyId(extInfo.getThirdProductPropertyId());
......@@ -3400,10 +3408,9 @@ public class OrderSdkAdapter {
orderSettlement.setCarrierDiscountAmount(orderSettlementResp.getCarrierDiscountAmount());
orderSettlement.setShopAmount(orderSettlementResp.getShopAmount());
orderSettlement.setPlatformServiceAmount(orderSettlementResp.getPlatformServiceAmount());
if (orderSettlementResp.getProspectiveAmount()!=null) {
if (orderSettlementResp.getProspectiveAmount() != null) {
orderSettlement.setProspectiveAmount(orderSettlementResp.getProspectiveAmount().longValue());
}
else {
} else {
orderSettlement.setProspectiveAmount(0L);
}
orderSettlementList.add(orderSettlement);
......@@ -3538,7 +3545,8 @@ public class OrderSdkAdapter {
}
/**
* 异常单转换
* 异常单转换
*
* @param abnormalState
* @return
*/
......@@ -3550,15 +3558,15 @@ public class OrderSdkAdapter {
break;
}
case 1: {
name ="系统接单异常";
name = "系统接单异常";
break;
}
case 2: {
name="骑手上报异常";
name = "骑手上报异常";
break;
}
case 3: {
name ="系统退单异常";
name = "系统退单异常";
break;
}
}
......@@ -3566,7 +3574,8 @@ public class OrderSdkAdapter {
}
/**
* 获取订单信息
* 获取订单信息
*
* @param orderStatus
* @return
*/
......@@ -3578,15 +3587,15 @@ public class OrderSdkAdapter {
break;
}
case 6: {
name="审核通过";
name = "审核通过";
break;
}
case 7: {
name ="审核未通过";
name = "审核未通过";
break;
}
case 8: {
name ="撤单";
name = "撤单";
break;
}
}
......@@ -3594,7 +3603,8 @@ public class OrderSdkAdapter {
}
/**
* 获取订单信息
* 获取订单信息
*
* @param sourceList
* @return
*/
......@@ -3620,21 +3630,35 @@ public class OrderSdkAdapter {
return bizTypes;
}
public CouponLockRequest convert2CouponLockRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts){
public CouponLockRequest convert2CouponLockRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts) {
if (CollectionUtils.isEmpty(accounts)) {
return null;
}
Optional<CreateOrderAccountRequest> accountRequest = accounts.stream().filter(account -> account.getAccountType().equals(QueryOrderAccountType.COUPON) || account.getAccountType().equals(QueryOrderAccountType.PRODUCT_COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.DISCOUNT_COUPON)).findFirst();
if (!accountRequest.isPresent() || accountRequest.get().getPrice() == 0) {
// fisherman 支持 批量锁券逻辑, 配送券+other券
List<CreateOrderAccountRequest> couponList = accounts.stream().filter(account ->
account.getAccountType().equals(QueryOrderAccountType.COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.PRODUCT_COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.DISCOUNT_COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.FREIGHT_COUPON)
).collect(Collectors.toList());
ApiLog.info("优惠券转换,用于锁券操作 orderbean : accounts", orderBean, accounts);
if (CollectionUtils.isEmpty(couponList)) {
return null;
}
CreateOrderAccountRequest accountBean = accountRequest.get();
List<String> couponCodes = couponList.stream().map(CreateOrderAccountRequest::getAccountId).collect(Collectors.toList());
CouponLockRequest couponLockRequest = new CouponLockRequest();
// 订单号 替换成唯一序号
couponLockRequest.setPartnerId(orderBean.getCompanyId());
couponLockRequest.setOrderId(orderBean.getOid());
//couponLockRequest.setCouponCode(accountBean.getAccountId());
List<CouponLockRequest.CouponLockInfo> infos = new ArrayList<>();
couponCodes.forEach(s -> {
CouponLockRequest.CouponLockInfo info = new CouponLockRequest.CouponLockInfo();
info.setCouponCode(s);
infos.add(info);
});
couponLockRequest.setCouponLockInfos(infos);
return couponLockRequest;
}
......@@ -3650,7 +3674,7 @@ public class OrderSdkAdapter {
return response;
}
public BaseQueryOrderRequest convert2wmDeliveryTimeOut(BaseQueryOrderRequest orderConfirmRequest ,Integer timeOut) {
public BaseQueryOrderRequest convert2wmDeliveryTimeOut(BaseQueryOrderRequest orderConfirmRequest, Integer timeOut) {
orderConfirmRequest.setTimeout(timeOut);
return orderConfirmRequest;
}
......@@ -3688,16 +3712,44 @@ public class OrderSdkAdapter {
return orderStateInfoResp;
}
public CouponRequest convert2PreCheckRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts,String openId) {
public CouponRequest convert2PreCheckRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, List<CreateOrderAccountRequest> accounts, String openId) {
if (CollectionUtils.isEmpty(accounts)) {
return null;
}
Optional<CreateOrderAccountRequest> accountRequest = accounts.stream().filter(account -> account.getAccountType().equals(QueryOrderAccountType.COUPON) || account.getAccountType().equals(QueryOrderAccountType.PRODUCT_COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.DISCOUNT_COUPON)).findFirst();
if (!accountRequest.isPresent() || accountRequest.get().getPrice() == 0) {
// fisherman begin
List<CreateOrderAccountRequest> couponList = accounts.stream().filter(account ->
account.getAccountType().equals(QueryOrderAccountType.COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.PRODUCT_COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.DISCOUNT_COUPON)
|| account.getAccountType().equals(QueryOrderAccountType.FREIGHT_COUPON)
).collect(Collectors.toList());
ApiLog.info("优惠券转换,用于锁券操作 orderbean : accounts", orderBean, accounts);
if (CollectionUtils.isEmpty(couponList)) {
return null;
}
CreateOrderAccountRequest accountBean = accountRequest.get();
// fisherman end
if (couponList.size() > 1) {
// 找出 配送券
CreateOrderAccountRequest freightCouponAccountBean = couponList.stream().filter(account -> account.getAccountType().equals(QueryOrderAccountType.FREIGHT_COUPON)).findFirst().orElse(null);
TransactionVO couponCodeVerificationTransDto = null;
if (!Objects.isNull(freightCouponAccountBean)) {
couponCodeVerificationTransDto = new TransactionVO();
couponCodeVerificationTransDto.setCode(freightCouponAccountBean.getAccountId());
couponCodeVerificationTransDto.setTotalAmount(freightCouponAccountBean.getPrice());
}
// 过滤出 配送券
List<CreateOrderAccountRequest> collect = couponList.stream().filter(account -> !account.getAccountType().equals(QueryOrderAccountType.FREIGHT_COUPON)).collect(Collectors.toList());
return commonMethodVerification(couponCodeVerificationTransDto, collect, orderBean, openId);
} else {
return commonMethodVerification(null, couponList, orderBean, openId);
}
}
private CouponRequest commonMethodVerification(TransactionVO freightCouponAccountBean,
List<CreateOrderAccountRequest> collect,
QueryOrdersResponse.DataBean.OrderBean orderBean,
String openId) {
CreateOrderAccountRequest accountBean = collect.get(0);
CouponRequest couponRequest = new CouponRequest();
couponRequest.setReqtype(71);
couponRequest.setVer(Integer.valueOf(Version.VERSION_1));
......@@ -3750,6 +3802,11 @@ public class OrderSdkAdapter {
couponCodeVerificationTransDto.setProducts(products);
}
transactions.add(couponCodeVerificationTransDto);
// 配送券逻辑加入
if (freightCouponAccountBean != null) {
transactions.add(freightCouponAccountBean);
}
// 配送券逻辑 end
couponRequest.setTransactions(transactions);
return couponRequest;
}
......@@ -3759,7 +3816,7 @@ public class OrderSdkAdapter {
return ActivityChannelEnum.delivery;
} else if (Objects.equals(OldOrderType.COLLECT_GOODS.getCode(), orderType) || Objects.equals(OldOrderType.EAT_IN.getCode(), orderType)) {
return ActivityChannelEnum.pickup;
}else if (Objects.equals(OldCreateOrderType.SAASMALL.getCode(), orderType)) {
} else if (Objects.equals(OldCreateOrderType.SAASMALL.getCode(), orderType)) {
return ActivityChannelEnum.saasmall;
} else {
return ActivityChannelEnum.pickup;
......
......@@ -74,6 +74,7 @@ import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import com.freemud.sdk.api.assortment.order.vo.AssortmentOrderProductVo;
import com.google.gson.Gson;
import com.mysql.cj.util.LogUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
......@@ -129,6 +130,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
@Override
public CreateOrderResponse createOrderFlow(CreateOrderRequest config) {
com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest request = orderSdkAdapter.convent2NEWCreateOrderRequest(config.getBaseCreateOrderRequest());
ApiLog.info("fisherman 请求基础服务,最终构建 04",config,null);
com.freemud.application.sdk.api.ordercenter.response.BaseResponse<OrderInfoReqs> order = orderSdkService.createOrder(request, config.getTrackingNo());
CreateOrderResponse createOrderResponse = orderSdkAdapter.convent2NEWOrderInfoReqs(order);
if (!RESPONSE_SUCCESS.equals(createOrderResponse.getErrcode())
......
......@@ -46,7 +46,7 @@
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>couponcenter-sdk</artifactId>
<version>4.0.0-SNAPSHOT</version>
<version>4.1.2-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
......
......@@ -1484,6 +1484,7 @@ public class CreateOrderAdapter {
}
public CouponLockRequest convert2CouponLockRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, ShoppingCartGoodsDto shoppingCartGoodsDto) {
//fisherman 已经废弃 20210616
if (CollectionUtils.isEmpty(shoppingCartGoodsDto.getActivityDiscountsDtos())) {
return null;
}
......@@ -1499,7 +1500,7 @@ public class CreateOrderAdapter {
// 订单号 替换成唯一序号
couponLockRequest.setPartnerId(orderBean.getCompanyId());
couponLockRequest.setOrderId(orderBean.getOid());
couponLockRequest.setCouponCode(activityDiscountsDto.getActivityCode());
//couponLockRequest.setCouponCode(activityDiscountsDto.getActivityCode());
return couponLockRequest;
}
......
......@@ -26,6 +26,7 @@ import cn.freemud.entities.dto.pay.CombPayResponse;
import cn.freemud.entities.dto.promotion.OrderBeanRequest;
import cn.freemud.entities.dto.promotion.ShoppingCartGoodsResponse;
import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto;
import cn.freemud.entities.dto.shoppingCart.CollageOrderDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.ttpay.OrderInfo;
import cn.freemud.entities.vo.*;
......@@ -182,17 +183,30 @@ public class OrderAdapter {
ArrayList<CreateOrderAccountRequest> orderAccountDtos = new ArrayList<>();
long deliveryAmount = 0;
long discountDeliveryAmount = 0;
ApiLog.info("fisherman 计算discountDeliveryAmount 的操作 begin",shoppingCartGoodsDto,createOrderVo);
if (createOrderVo.getMenuType().equals(BusinessTypeEnum.SAAS_DELIVERY.getCode())) {
deliveryAmount = shoppingCartGoodsDto.getDeliveryAmount() == null ? 9l : shoppingCartGoodsDto.getDeliveryAmount();
discountDeliveryAmount = shoppingCartGoodsDto.getDeliveryAmount() == null ? 9l : shoppingCartGoodsDto.getDeliveryAmount();
if (shoppingCartGoodsDto.getIsDiscountDelivery() && deliveryAmount > shoppingCartGoodsDto.getDiscountDeliveryAmount()) {
// 参加满减活动 || 有运费券
boolean isUseFreightCoupon = false;
List<ActivityDiscountsDto> activityDiscountsDtos = shoppingCartGoodsDto.getActivityDiscountsDtos();
if (CollectionUtils.isNotEmpty(activityDiscountsDtos)) {
ActivityDiscountsDto activityDiscountsDto = activityDiscountsDtos.stream().filter(a -> a.getActivityType() != null && a.getActivityType().equals(ActivityTypeEnum.TYPE_34.getCode())).findFirst().orElse(null);
if (activityDiscountsDto !=null) {
isUseFreightCoupon= true;
}
}
if ((shoppingCartGoodsDto.getIsDiscountDelivery() || isUseFreightCoupon)
&& deliveryAmount > shoppingCartGoodsDto.getDiscountDeliveryAmount()) {
discountDeliveryAmount = shoppingCartGoodsDto.getDiscountDeliveryAmount();
}
}else if( createOrderVo.getMenuType().equals(BusinessTypeEnum.SAAS_MALL.getCode())){
deliveryAmount = shoppingCartGoodsDto.getDeliveryAmount() == null ? 0 : shoppingCartGoodsDto.getDeliveryAmount();
discountDeliveryAmount = shoppingCartGoodsDto.getDeliveryAmount() == null ? 0 : shoppingCartGoodsDto.getDeliveryAmount();
}
Long packageAmount = shoppingCartGoodsDto.getPackageAmount() == null ? 0L : shoppingCartGoodsDto.getPackageAmount();
ApiLog.info("fisherman 计算discountDeliveryAmount 的操作 end",deliveryAmount,discountDeliveryAmount);
//商城实付无需加上配送费用和包装费
if( createOrderVo.getMenuType().equals(BusinessTypeEnum.SAAS_MALL.getCode())) {
createOrderDto.setAmount(shoppingCartGoodsDto.getTotalAmount());
......@@ -241,6 +255,7 @@ public class OrderAdapter {
createOrderDto.setProducts(products);
boolean hasDeliveryMonthCard = false;
for (ActivityDiscountsDto activityDiscountsDto : activityDiscountsDtos) {
// fisherman 3.0.34 运费券 这里塞进去的
CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder()
.accountId(activityDiscountsDto.getActivityCode())
.name(activityDiscountsDto.getActivityName())
......@@ -1519,6 +1534,7 @@ public class OrderAdapter {
responseVo.setAfterSalesOrderResp(ordersBean.getAfterSalesOrderResp());
list.add(responseVo);
});
LogUtil.info("fisherman orderBean:", JSON.toJSONString(ordersBeans),JSON.toJSONString(list));
return list;
}
......@@ -2177,7 +2193,7 @@ public class OrderAdapter {
return orderAccountVos;
}
List<Integer> list = Arrays.asList(OrderSettlementType.FULL_REDUCTION.getIndex(),OrderSettlementType.CASH_COUPON.getIndex(),
OrderSettlementType.PRODUCT_COUPON.getIndex(),OrderSettlementType.DISCOUNT_COUPON.getIndex(),OrderSettlementType.POINTS.getIndex());
OrderSettlementType.PRODUCT_COUPON.getIndex(),OrderSettlementType.DISCOUNT_COUPON.getIndex(),OrderSettlementType.POINTS.getIndex(),OrderSettlementType.FREIGHT_COUPON.getIndex());
for (QueryOrdersResponse.DataBean.OrderBean.OrderSettlement orderSettlement : orderSettlements){
if(list.contains(orderSettlement.getSettlementType())){
OrderAccountVo accountVo = new OrderAccountVo();
......@@ -2190,6 +2206,8 @@ public class OrderAdapter {
accountVo.setTypeName("满减");
} else if(type == OrderSettlementType.POINTS.getIndex()){
accountVo.setTypeName("积分抵扣");
}else if(type == OrderSettlementType.FREIGHT_COUPON.getIndex()) {
accountVo.setTypeName("配送券");
}
int value = orderSettlement.getSettlementAmount().intValue();
accountVo.setDiscountAmount(value < 0 ? -value : value);
......
......@@ -22,6 +22,7 @@ public class GetCouponDetailResponseDto {
private String code;
private String activeCode;
private String title;
//券类型:0商品券,1代金券,3折扣券,4换购券 5.配送券
private Integer type;
private Integer status;
private String create_time;
......
......@@ -436,6 +436,11 @@ public class CreateOrderVo {
* 顺序
*/
private Integer index;
/**
* 优惠券类型
*/
private Integer couponType;
}
/**
......
......@@ -199,6 +199,11 @@ public class ShoppingCartInfoRequestVo {
* 顺序
*/
private Integer index;
/**
* 优惠券类型
*/
private Integer couponType;
}
/**
......
......@@ -12,6 +12,11 @@
*/
package cn.freemud.enums;
/**
* 应该是下面这个type对应
* @see com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType
*/
public enum OrderAccountType {
DELIVERY_AMOUNT(1, "配送费"),
......@@ -25,6 +30,7 @@ public enum OrderAccountType {
SECOND_DISCOUNT(23, "第二件N折"),
BUYM_SENDN(24, "买M赠N"),
CUSTOMER_SUB(4, "积分扣减"),
FREIGHT_COUPON(99, "运费券"),
CARD_ORIGINAL_AMOUNT(25, "会员卡原价"),
CARD_DISCOUNT_AMOUNT(26, "会员卡优惠金额"),
COCO_PRODUCT_CASH_COUPON(36, "coco商品代金券"),
......
......@@ -21,6 +21,13 @@ import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.util.JsonUtil;
import cn.freemud.entities.dto.*;
import cn.freemud.enums.*;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.QueryOrderResponseVo;
import cn.freemud.enums.ActivityChannelEnum;
import cn.freemud.enums.CouponReqType;
import cn.freemud.enums.OrderAccountType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.management.enums.OrderSource;
import cn.freemud.service.coupon.CouponRelationService;
import cn.freemud.service.impl.StoreServiceImpl;
......@@ -44,6 +51,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
@Service("platformCouponRelationService")
......@@ -68,6 +76,33 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService
@Override
public BaseResponse verificationCoupon(List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList, QueryOrdersResponseDto.DataBean.OrderBean orderBean, CouponReqType couponReqType) {
if (accountList.size() > 1) {
Integer code = OrderAccountType.FREIGHT_COUPON.getCode();
// 运费券 塞进 核销接口里面, 这里真的是贼恶心 逻辑不敢动
QueryOrdersResponseDto.DataBean.OrderBean.AccountBean freightCouponAccountBean = accountList.stream().filter(accountBean -> code.equals(accountBean.getType())).findFirst().orElse(null);
CouponCodeVerificationTransDto couponCodeVerificationTransDto = null;
if (!Objects.isNull(freightCouponAccountBean)) {
couponCodeVerificationTransDto = new CouponCodeVerificationTransDto();
couponCodeVerificationTransDto.setCode(freightCouponAccountBean.getAccountId());
couponCodeVerificationTransDto.setTotalAmount(freightCouponAccountBean.getPrice().intValue());
}
// 过滤出配送券
List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> collect = accountList.stream().filter(accountBean -> code.equals(accountBean.getType())).collect(Collectors.toList());
return commonMethodVerification(couponCodeVerificationTransDto, collect, orderBean, couponReqType);
} else {
return commonMethodVerification(null, accountList, orderBean, couponReqType);
}
}
/**
* 原有逻辑没变动的基础上 加上 配送券信息对象
*
* @param couponCodeVerificationTransDto 配送券信息对象 如果为null 就是原来的逻辑
* @param accountList
* @param orderBean
* @param couponReqType
*/
private BaseResponse commonMethodVerification(CouponCodeVerificationTransDto couponCodeVerificationTransDto, List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList, QueryOrdersResponseDto.DataBean.OrderBean orderBean, CouponReqType couponReqType) {
for (QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean : accountList) {
List<CouponCodeVerificationProductDto> products = new ArrayList<>();
//商品券核销核销参数
......@@ -102,10 +137,18 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService
activityChannelEnum = ActivityChannelEnum.pickup;
}
// 核销优惠券 需要一起核销 配送券
if (OrderAccountType.COUPON.getCode().equals(accountBean.getType())
|| OrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType())
// 运费券
|| OrderAccountType.FREIGHT_COUPON.getCode().equals(accountBean.getType())
|| OrderAccountType.DISCOUNT_COUPON.getCode().equals(accountBean.getType())) {
CouponCodeVerificationDto couponCodeVerificationDto = couponAdapter.convert2CouponCodeVerificationDto(activityChannelEnum, accountBean.getAccountId(), orderBean.getOid(), orderBean.getCompanyId(), orderBean.getShopId(), orderBean.getUserId(), products, accountBean.getPrice().intValue(), couponReqType);
CouponCodeVerificationDto couponCodeVerificationDto = couponAdapter.convert2CouponCodeVerificationDto(activityChannelEnum,
// 这里是活动code
accountBean.getAccountId(), orderBean.getOid(), orderBean.getCompanyId(),
orderBean.getShopId(), orderBean.getUserId(), products, accountBean.getPrice().intValue(), couponReqType);
couponCodeVerificationDto.setOrderTotalAmount(orderBean.getOriginalAmount() == null ? 0L : orderBean.getOriginalAmount().longValue());
couponCodeVerificationDto.setOrderPaymentAmount(orderBean.getAmount());
// KA 【ID1032412】【订单聚合层】核销传入优惠金额之传劵优惠只设置券的优惠金额进行上报
......@@ -115,6 +158,13 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService
boolean ok = false;
Exception lastException = null;
CouponCodeResponseDto couponCodeResponseDto = null;
// 设置配送券的 transactions
if (couponCodeVerificationTransDto != null) {
List<CouponCodeVerificationTransDto> transactions = couponCodeVerificationDto.getTransactions();
transactions.add(couponCodeVerificationTransDto);
//只 传递一次, 防止后续开发 多张优惠券使用情况
couponCodeVerificationTransDto = null;
}
try {
//71.券核销
// todo 这循环有啥用-.-
......@@ -185,4 +235,84 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService
LogUtil.error(trackingNo, "sendMessage COUPON_VERIFICATION error!!! routingKey = order-resource-push-log-routing-key", JSONObject.toJSONString(dto), null, e);
}
}
// @Override
// public BaseResponse verificationCoupon(List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList, QueryOrdersResponseDto.DataBean.OrderBean orderBean, CouponReqType couponReqType) {
// for (QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean : accountList) {
// List<CouponCodeVerificationProductDto> products = new ArrayList<>();
// //商品券核销核销参数
// if (OrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType())) {
// for (int i = 0; i < orderBean.getProductList().size(); i++) {
// QueryOrdersResponseDto.DataBean.OrderBean.ProductBean productBean = orderBean.getProductList().get(i);
// String pid = StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId();
// if (!org.springframework.util.CollectionUtils.isEmpty(orderBean.getProductList().get(i).getDiscountList())) {
// List<QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount> discounts = orderBean.getProductList().get(i).getDiscountList().stream().
// filter(productDiscount -> productDiscount.getDiscountId().equals(accountBean.getAccountId())).collect(Collectors.toList());
// for (QueryOrdersResponseDto.DataBean.OrderBean.ProductBean.ProductDiscount productDiscount : discounts) {
// if (productDiscount.getDiscountType() == null || productDiscount.getDiscountType() == 0) {
// continue;
// }
// CouponCodeVerificationProductDto couponCodeVerificationProductDto = new CouponCodeVerificationProductDto();
// couponCodeVerificationProductDto.setPID(pid);
// couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty());
// couponCodeVerificationProductDto.setSeq(i + 1);
// products.add(couponCodeVerificationProductDto);
// }
// }
// }
// }
//
// Integer orderType = orderBean.getType();
// //商城单子用NewOrderType
// if(Objects.equals(OrderSource.MALL.getSource(),orderBean.getSource())){
// orderType = orderBean.getNewOrderType();
// }
// ActivityChannelEnum activityChannelEnum = PropertyConvertUtil.orderTypeEnumConvert2ActivityChannel(orderType);
// if (activityChannelEnum == null) {
// activityChannelEnum = ActivityChannelEnum.pickup;
// }
//
// // 核销优惠券 需要一起核销 配送券
// if (OrderAccountType.COUPON.getCode().equals(accountBean.getType())
// || OrderAccountType.PRODUCT_COUPON.getCode().equals(accountBean.getType())
// // 运费券
// || OrderAccountType.FREIGHT_COUPON.getCode().equals(accountBean.getType())
// || OrderAccountType.DISCOUNT_COUPON.getCode().equals(accountBean.getType())) {
//
// CouponCodeVerificationDto couponCodeVerificationDto = couponAdapter.convert2CouponCodeVerificationDto(activityChannelEnum,
// // 这里是活动code
// accountBean.getAccountId(), orderBean.getOid(), orderBean.getCompanyId(),
// orderBean.getShopId(), orderBean.getUserId(), products, accountBean.getPrice().intValue(),couponReqType);
//
// couponCodeVerificationDto.setOrderTotalAmount(orderBean.getOriginalAmount()==null ? 0L: orderBean.getOriginalAmount().longValue());
// couponCodeVerificationDto.setOrderPaymentAmount(orderBean.getAmount());
// couponCodeVerificationDto.setOrderDiscountAmount(orderBean.getOriginalAmount().longValue()-orderBean.getAmount());
// // 核销券新增参数:组织机构ID
// couponCodeVerificationDto.setChannel_codes(storeService.getOrgIdsArr(orderBean.getCompanyId(), orderBean.getShopId()));
// try {
// //71.券核销
// for (int i = 2; i >= 0; i--) {
// LogUtil.info("核销券码开始==", JSON.toJSONString(couponCodeVerificationDto), null);
// CouponCodeResponseDto couponCodeResponseDto = couponOfflineClient.verification(couponCodeVerificationDto);
// LogUtil.info("核销券码返回==", JSON.toJSONString(couponCodeVerificationDto), null);
// ThirdPartyLog.infoConvertJson(System.currentTimeMillis(), System.currentTimeMillis(), "/api", couponCodeVerificationDto, couponCodeResponseDto);
// if (Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
// LogUtil.info("CouponReverseServiceImpl", JSON.toJSONString(couponCodeVerificationDto), JSON.toJSONString(couponCodeResponseDto));
// break;
// }
// if (!Objects.equals(couponCodeResponseDto.getStatusCode(), ResponseResult.SUCCESS.getCode())) {
// emailAlertService.sendEmailAlert("核销券码失败", String.format("request:%s \r\nresponse:%s", JSONObject.toJSONString(couponCodeVerificationDto), JSONObject.toJSONString(couponCodeResponseDto)));
// return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
// }
// }
//
// } catch (Exception ex) {
// emailAlertService.sendEmailAlert("核销券码异常", String.format("request:%s \r\nexception:%s", JSONObject.toJSONString(couponCodeVerificationDto), Throwables.getStackTraceAsString(ex)));
// ErrorLog.printErrorLog("verification_error", "/api", couponCodeVerificationDto, ex);
// return ResponseUtil.error(ResponseResult.COUPON_VERIFICATION_FAIL);
// }
// }
// }
// return ResponseUtil.success();
// }
}
......@@ -594,6 +594,7 @@ public class CheckOrder {
coupon.setCouponCode(couponCode.getCouponCode());
coupon.setActivityCode(activeCode);
coupon.setIndex(couponCode.getIndex());
coupon.setCouponType(getCouponDetailResponseDto.getDetails().get(0).getType());
couponCodes.add(coupon);
});
......
......@@ -2763,6 +2763,9 @@ public class OrderServiceImpl implements Orderservice {
*/
public CreateOrderResponse createOrder(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto,
OrderExtendedReq orderExtendedReq, OrderClientType orderClient, String appId,String openId) {
ApiLog.info("fisherman 请求基础服务,最终构建 01 ",createOrderVo,storeResponseDto);
ApiLog.info("fisherman 请求基础服务,最终构建 02 ",shoppingCartGoodsDto,orderExtendedReq);
ApiLog.info("fisherman 请求基础服务,最终构建 03 ",orderClient,null);
BaseCreateOrderRequest baseCreateOrderRequest = orderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto, storeResponseDto);
//查询第三方商品编号
baseCreateOrderRequest = getProductCustomerCode(baseCreateOrderRequest);
......
......@@ -34,6 +34,7 @@ public enum OrderSettlementType {
SPELL_GROUP(25,"拼团"),
TAKEAWAY_ADD_PRICE(46, "外卖加价购"),
SUPER_PURCHASE(47, "超值加购"),
FREIGHT_COUPON(99, "配送券"),
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