Commit 1cbe44c2 by 周晓航

Merge branch 'qa' of gitlab.freemud.com:order-group-application/order-group into qa

parents 745dfc00 80e55c83
......@@ -4,6 +4,8 @@ import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import lombok.Data;
import java.math.BigDecimal;
/**
* All rights Reserved, Designed By www.freemud.cn
*
......@@ -93,4 +95,9 @@ public class UpdateDeliveryInfoByIdRequest extends BaseConfig {
*/
public Long estimateArriveTime;
/**
* 商家承担的配送费(单位:分)
*/
public BigDecimal businessDeliveryAmount;
}
......@@ -3,6 +3,8 @@ package cn.freemud.entities.dto.delivery;
import cn.freemud.base.util.DateUtil;
import lombok.Data;
import java.math.BigDecimal;
/**
* All rights Reserved, Designed By www.freemud.cn
*
......@@ -91,4 +93,9 @@ public class CallbackUrlRequestDto {
*/
public Long estimateArriveTime;
/**
* 商家承担的配送费(单位:分)
*/
public BigDecimal businessDeliveryAmount;
}
......@@ -13,6 +13,9 @@
package cn.freemud.enums;
import java.util.Arrays;
import java.util.List;
/**
* 应该是下面这个type对应
* @see com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType
......@@ -39,6 +42,18 @@ public enum OrderAccountType {
private String desc;
/**
* 需要 核销的 券 归类
* 代金券
* 商品券
* 运费全
* 折扣券
*/
public static List<Integer> verificationCoupon = Arrays.asList(OrderAccountType.COUPON.getCode(),
OrderAccountType.PRODUCT_COUPON.getCode(),
OrderAccountType.FREIGHT_COUPON.getCode(),
OrderAccountType.DISCOUNT_COUPON.getCode());
OrderAccountType(Integer code, String desc) {
this.code = code;
this.desc = desc;
......
......@@ -20,28 +20,21 @@ import cn.freemud.amqp.MQService;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.util.JsonUtil;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.QueryOrderResponseVo;
import cn.freemud.enums.*;
import cn.freemud.management.enums.OrderSource;
import cn.freemud.service.coupon.CouponRelationFactory;
import cn.freemud.service.coupon.CouponRelationService;
import cn.freemud.service.impl.StoreServiceImpl;
import cn.freemud.service.order.OrderRelationService;
import cn.freemud.service.thirdparty.CouponOfflineClient;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.PropertyConvertUtil;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.log.ThirdPartyLog;
import com.freemud.application.sdk.api.service.EmailAlertService;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse;
import com.google.common.base.Throwables;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
......@@ -51,7 +44,6 @@ 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")
......@@ -76,7 +68,13 @@ 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) {
LogUtil.info("fiserhman 券码核销 begin", JSON.toJSONString(accountList), JSON.toJSONString(orderBean));
if (CollectionUtils.isEmpty(accountList)) {
return ResponseUtil.success();
}
// 需要判断 accountList 里面 是都 同时包含 配送券+ other券
boolean isDoubleCoupon = checkAccountList(accountList);
if (isDoubleCoupon) {
Integer code = OrderAccountType.FREIGHT_COUPON.getCode();
// 运费券 塞进 核销接口里面, 这里真的是贼恶心 逻辑不敢动
QueryOrdersResponseDto.DataBean.OrderBean.AccountBean freightCouponAccountBean = accountList.stream().filter(accountBean -> code.equals(accountBean.getType())).findFirst().orElse(null);
......@@ -95,6 +93,28 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService
}
/**
* 要校验一遍是否 使用了 需要核销的券 代金券 商品券 运费全 折扣券 需要核销
*
* @param accountList 这里会传递 多张券 和其他的计算 类型
* @return
*/
private boolean checkAccountList(List<QueryOrdersResponseDto.DataBean.OrderBean.AccountBean> accountList) {
// 里面只有一个值 直接使用老逻辑 不管是 什么券
if (accountList.size() == 1) {
return false;
}
// 拿出 所有的使用券信息 代金券 商品券 运费全 折扣券 需要核销
int count = 0;
for (QueryOrdersResponseDto.DataBean.OrderBean.AccountBean accountBean : accountList) {
if (OrderAccountType.verificationCoupon.contains(accountBean.getType())){
count ++;
}
}
// 说明使用了 2张以上的优惠券 需要核销
return count > 1;
}
/**
* 原有逻辑没变动的基础上 加上 配送券信息对象
*
* @param couponCodeVerificationTransDto 配送券信息对象 如果为null 就是原来的逻辑
......@@ -155,6 +175,9 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService
couponCodeVerificationDto.setOrderDiscountAmount(Math.abs(accountBean.getPrice()));
// 核销券新增参数:组织机构ID
couponCodeVerificationDto.setChannel_ids(storeService.getOrgIdsArr(orderBean.getCompanyId(), orderBean.getShopId()));
boolean ok = false;
Exception lastException = null;
CouponCodeResponseDto couponCodeResponseDto = null;
// 设置配送券的 transactions
if (couponCodeVerificationTransDto != null) {
List<CouponCodeVerificationTransDto> transactions = couponCodeVerificationDto.getTransactions();
......@@ -162,9 +185,6 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService
//只 传递一次, 防止后续开发 多张优惠券使用情况
couponCodeVerificationTransDto = null;
}
boolean ok = false;
Exception lastException = null;
CouponCodeResponseDto couponCodeResponseDto = null;
try {
//71.券核销
// todo 这循环有啥用-.-
......
......@@ -137,6 +137,8 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
requestDto.setExceptionId(request.getExceptionId());
//【ID1031049】 订单接受配送分配骑手状态回调
requestDto.setEstimateArriveTime(request.getEstimateArriveTime());
// 【ID1032317】外卖配送完成回调订单基础服务接口添加商户承担运费字段
requestDto.setBusinessDeliveryAmount(request.getBusinessDeliveryAmount());
if (StringUtils.isNotBlank(request.getRemark())) {
requestDto.setRemark("配送:" + request.getRemark());
}
......
......@@ -15,6 +15,8 @@ package com.freemud.application.sdk.api.ordercenter.request;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class OrderExpressReq {
......@@ -88,5 +90,10 @@ public class OrderExpressReq {
*/
public Long estimateArriveTime;
/**
* 商家承担的配送费(单位:分)
*/
public BigDecimal businessDeliveryAmount;
}
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