refactor(mall): 根据系统配置选择不同的物流服务接口
- 在 AdminMallOrderService 和 CommonService 中添加了根据系统配置选择物流服务接口的逻辑
- 新增了 SENDER_STATE 数据字典项,用于控制使用测试环境还是生产环境的物流服务
- 根据系统配置,选择不同的 ClientParamEnum 实例来调用
3 files modified
42 ■■■■■ changed files
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java 29 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -9,6 +9,7 @@
    SENDER_NAME("SENDER_SET", "NAME"),
    SENDER_MOBILE("SENDER_SET", "MOBILE"),
    SENDER_ADDRESS("SENDER_SET", "ADDRESS"),
    SENDER_STATE("SENDER_SET", "STATE"),
    // 发票的通知回调路径
    FP_CALLBACK_URL("FP_CALLBACK_URL", "FP_CALLBACK_URL"),
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
@@ -3,6 +3,7 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.enumerates.*;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.ValidateEntityUtils;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.*;
@@ -546,8 +547,18 @@
        kdCreateWaybillOrderPdfNotifyReq.setItems(items);
        kdCreateWaybillOrderPdfNotifyReq.setPiece(1);
        KdCreateWaybillOrderPdfNotifyRsp pdfOrder = ClientParamService.getInstance(ClientParamEnum.TEST.name()).createPdfOrder(kdCreateWaybillOrderPdfNotifyReq);
        String state = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.SENDER_ADDRESS.getType(),
                DataDictionaryEnum.SENDER_ADDRESS.getCode()
        ).getValue();
        KdCreateWaybillOrderPdfNotifyRsp pdfOrder;
        if(state.equals("0")){
            pdfOrder = ClientParamService.getInstance(ClientParamEnum.TEST.name()).createPdfOrder(kdCreateWaybillOrderPdfNotifyReq);
        }else if(state.equals("1")){
            pdfOrder = ClientParamService.getInstance(ClientParamEnum.PRD.name()).createPdfOrder(kdCreateWaybillOrderPdfNotifyReq);
        }else{
            throw new FebsException("一键发货失败,系统配置异常");
        }
        ValidateEntityUtils.ensureEqual(pdfOrder.getResult(), true, "一键发货失败,创建PDF电子面单异常");
        //更新发货状态
        mallOrderInfoMapper.updateOrderStateAndDeliveryState(
@@ -575,7 +586,19 @@
        KdCancelOrderNotifyReq kdCancelOrderNotifyReq = new KdCancelOrderNotifyReq();
        kdCancelOrderNotifyReq.setTxLogisticId(mallOrderInfo.getOrderNo());
        kdCancelOrderNotifyReq.setReason("Don't want to buy");
        KdCancelOrderNotifyRsp kdCancelOrderNotifyRsp = ClientParamService.getInstance(ClientParamEnum.TEST.name()).cancelOrder(kdCancelOrderNotifyReq);
        String state = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.SENDER_ADDRESS.getType(),
                DataDictionaryEnum.SENDER_ADDRESS.getCode()
        ).getValue();
        KdCancelOrderNotifyRsp kdCancelOrderNotifyRsp;
        if(state.equals("0")){
            kdCancelOrderNotifyRsp = ClientParamService.getInstance(ClientParamEnum.TEST.name()).cancelOrder(kdCancelOrderNotifyReq);
        }else if(state.equals("1")){
            kdCancelOrderNotifyRsp = ClientParamService.getInstance(ClientParamEnum.PRD.name()).cancelOrder(kdCancelOrderNotifyReq);
        }else{
            throw new FebsException("取消发货失败,系统配置异常");
        }
        ValidateEntityUtils.ensureEqual(kdCancelOrderNotifyRsp.getResult(), true, "取消发货失败");
        //更新发货状态
src/main/java/cc/mrbird/febs/mall/service/impl/CommonService.java
@@ -1,5 +1,7 @@
package cc.mrbird.febs.mall.service.impl;
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.mall.dto.ApiCheckTraceInfoDto;
@@ -142,6 +144,16 @@
//    }
    @Override
    public KdTraceQueryRsp checkTraceInfo(ApiCheckTraceInfoDto checkTraceInfoDto) {
        String state = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.SENDER_ADDRESS.getType(),
                DataDictionaryEnum.SENDER_ADDRESS.getCode()
        ).getValue();
        if(state.equals("0")){
            return ClientParamService.getInstance(ClientParamEnum.TEST.name()).checkTraceInfo(checkTraceInfoDto);
        }else if(state.equals("1")){
        return ClientParamService.getInstance(ClientParamEnum.PRD.name()).checkTraceInfo(checkTraceInfoDto);
        }else{
            throw new FebsException("获取快递信息接口,系统配置异常");
        }
    }
}