Commit 4fa350c7 by 周晓航

Merge branch 'KA-支持门店手动创建运单,通知骑手到店取餐20210915-zxh'

parents 1ed62631 a4ad05ad
...@@ -64,4 +64,10 @@ public class BaseQueryOrderRequest extends BaseConfig { ...@@ -64,4 +64,10 @@ public class BaseQueryOrderRequest extends BaseConfig {
// 合阔pos 商户订单状态不自动扭转 // 合阔pos 商户订单状态不自动扭转
private Boolean notAutomaticTwist; private Boolean notAutomaticTwist;
/**
* 派单模式(0-系统自动派单;1-手动派单)
* 内置传参使用
*/
private String dispatchType;
} }
...@@ -62,13 +62,11 @@ import com.freemud.application.sdk.api.structure.service.MessageCenterClient; ...@@ -62,13 +62,11 @@ import com.freemud.application.sdk.api.structure.service.MessageCenterClient;
import com.freemud.sdk.api.assortment.order.adapter.*; import com.freemud.sdk.api.assortment.order.adapter.*;
import com.freemud.sdk.api.assortment.order.constant.CommonConstant; import com.freemud.sdk.api.assortment.order.constant.CommonConstant;
import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant; import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant;
import com.freemud.sdk.api.assortment.order.entities.OrderEditInfo;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.enums.*;
import com.freemud.sdk.api.assortment.order.request.order.CreateOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.CreateOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.OrderDownloadRequest; import com.freemud.sdk.api.assortment.order.request.order.OrderDownloadRequest;
import com.freemud.sdk.api.assortment.order.request.order.*; 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.order.*;
//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.service.OrderCenterSdkService;
import com.freemud.sdk.api.assortment.order.util.AssortOrderLogUtil; import com.freemud.sdk.api.assortment.order.util.AssortOrderLogUtil;
import com.freemud.sdk.api.assortment.order.vo.AssortmentOrderProductVo; import com.freemud.sdk.api.assortment.order.vo.AssortmentOrderProductVo;
...@@ -87,6 +85,8 @@ import java.util.stream.Collectors; ...@@ -87,6 +85,8 @@ import java.util.stream.Collectors;
import static com.freemud.application.sdk.api.membercenter.constant.InterfaceAddressConstant.MEMBER_EXTEND_INFO; import static com.freemud.application.sdk.api.membercenter.constant.InterfaceAddressConstant.MEMBER_EXTEND_INFO;
import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS; import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS;
import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR; import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR;
//import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
@Import(ManagerOrderBeanConfig.class) @Import(ManagerOrderBeanConfig.class)
@Service @Service
public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
...@@ -878,6 +878,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -878,6 +878,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
POSOrderOperationBaseReq request = new POSOrderOperationBaseReq(); POSOrderOperationBaseReq request = new POSOrderOperationBaseReq();
request.setOrderCode(baseQueryOrderRequest.getOrderId()); request.setOrderCode(baseQueryOrderRequest.getOrderId());
request.setOperator(baseQueryOrderRequest.getOperator()); request.setOperator(baseQueryOrderRequest.getOperator());
request.setDispatchType(baseQueryOrderRequest.getDispatchType());
// 引入门店基础服务 查询自动制作完成配置时间 // 引入门店基础服务 查询自动制作完成配置时间
setTimeout(baseQueryOrderRequest,request); setTimeout(baseQueryOrderRequest,request);
com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp response = orderSdkService.acceptOrder(request, baseQueryOrderRequest.getTrackingNo()); com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp response = orderSdkService.acceptOrder(request, baseQueryOrderRequest.getTrackingNo());
......
...@@ -51,9 +51,6 @@ import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderReq ...@@ -51,9 +51,6 @@ import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderReq
import com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContactInfoCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContactInfoCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderSettlementCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderSettlementCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.DeliveryContactInfoCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderItemCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderSettlementCreateReq;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp; import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
......
package cn.freemud.management.adapter; package cn.freemud.management.adapter;
import cn.freemud.management.entities.dto.request.console.BizDTO;
import cn.freemud.management.entities.dto.request.console.ConsoleResponseDTO;
import cn.freemud.management.entities.dto.request.console.StoreInfoDTO;
import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto; import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto;
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.enums.OrderType; import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import org.apache.commons.lang.math.NumberUtils; import org.apache.commons.lang.math.NumberUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -20,13 +22,13 @@ public class DeliverySdkAdapter { ...@@ -20,13 +22,13 @@ public class DeliverySdkAdapter {
* 创建配送单请求对象 * 创建配送单请求对象
* *
* @param order * @param order
* @param storeInfo * @param bizDTO
* @param deliveryCallBackUrl * @param deliveryCallBackUrl
* @return * @return
*/ */
public CreateDeliveryOrderRequestDto buildDeliveryOrderRequestDto(OrderBeanV1 order public CreateDeliveryOrderRequestDto buildDeliveryOrderRequestDto(OrderBeanV1 order
, StoreResponse storeInfo, String deliveryCallBackUrl) { , ConsoleResponseDTO<BizDTO> bizDTO, String deliveryCallBackUrl) {
StoreInfoDTO storeInfo = bizDTO.getBizVO().getStoreInfo();
CreateDeliveryOrderRequestDto deliveryOrderRequestDto = new CreateDeliveryOrderRequestDto(); CreateDeliveryOrderRequestDto deliveryOrderRequestDto = new CreateDeliveryOrderRequestDto();
deliveryOrderRequestDto.setDepatchWeight(new BigDecimal(1)); deliveryOrderRequestDto.setDepatchWeight(new BigDecimal(1));
deliveryOrderRequestDto.setSerialNumber(order.getOtherCode()); deliveryOrderRequestDto.setSerialNumber(order.getOtherCode());
...@@ -36,23 +38,23 @@ public class DeliverySdkAdapter { ...@@ -36,23 +38,23 @@ public class DeliverySdkAdapter {
deliveryOrderRequestDto.setOrderActualAmount(order.getAmount().intValue()); deliveryOrderRequestDto.setOrderActualAmount(order.getAmount().intValue());
deliveryOrderRequestDto.setPartnerId(order.getCompanyId()); deliveryOrderRequestDto.setPartnerId(order.getCompanyId());
deliveryOrderRequestDto.setOrderChannel(order.getSource()); deliveryOrderRequestDto.setOrderChannel(order.getSource());
deliveryOrderRequestDto.setStoreId(storeInfo.getBizVO().getStoreId()); deliveryOrderRequestDto.setStoreId(storeInfo.getStoreId());
deliveryOrderRequestDto.setStoreCode(storeInfo.getBizVO().getStoreCode()); deliveryOrderRequestDto.setStoreCode(storeInfo.getStoreCode());
StringBuffer address = new StringBuffer(storeInfo.getBizVO().getCity()) StringBuffer address = new StringBuffer(storeInfo.getCity())
.append(storeInfo.getBizVO().getProvince()) .append(storeInfo.getProvince())
.append(storeInfo.getBizVO().getRegion()) .append(storeInfo.getRegion())
.append(storeInfo.getBizVO().getAddress()); .append(storeInfo.getAddress());
deliveryOrderRequestDto.setStoreAddress(address.toString()); deliveryOrderRequestDto.setStoreAddress(address.toString());
deliveryOrderRequestDto.setStoreLng(new BigDecimal(storeInfo.getBizVO().getLongitude())); deliveryOrderRequestDto.setStoreLng(new BigDecimal(storeInfo.getLongitude()));
deliveryOrderRequestDto.setStoreLat(new BigDecimal(storeInfo.getBizVO().getLatitude())); deliveryOrderRequestDto.setStoreLat(new BigDecimal(storeInfo.getLatitude()));
deliveryOrderRequestDto.setStorePhone(storeInfo.getBizVO().getPhone()); deliveryOrderRequestDto.setStorePhone(storeInfo.getPhone());
deliveryOrderRequestDto.setStoreName(order.getShopName()); deliveryOrderRequestDto.setStoreName(order.getShopName());
deliveryOrderRequestDto.setCityName(storeInfo.getBizVO().getCity()); deliveryOrderRequestDto.setCityName(storeInfo.getCity());
deliveryOrderRequestDto.setReceiverName(order.getUserName()); deliveryOrderRequestDto.setReceiverName(order.getUserName());
deliveryOrderRequestDto.setReceiverPrimaryPhone(order.getPhone()); deliveryOrderRequestDto.setReceiverPrimaryPhone(order.getPhone());
deliveryOrderRequestDto.setReceiverAddress(order.getAddress()); deliveryOrderRequestDto.setReceiverAddress(order.getAddress());
deliveryOrderRequestDto.setReceiverLng(new BigDecimal(order.getLongitude())); deliveryOrderRequestDto.setReceiverLng(BigDecimal.valueOf(order.getLongitude()));
deliveryOrderRequestDto.setReceiverLat(new BigDecimal(order.getLatitude())); deliveryOrderRequestDto.setReceiverLat(BigDecimal.valueOf(order.getLatitude()));
deliveryOrderRequestDto.setOrderTime(new Date(order.getGmtCreate())); deliveryOrderRequestDto.setOrderTime(new Date(order.getGmtCreate()));
deliveryOrderRequestDto.setCallbackUrl(deliveryCallBackUrl); deliveryOrderRequestDto.setCallbackUrl(deliveryCallBackUrl);
deliveryOrderRequestDto.setOrderClient(NumberUtils.toInt(order.getOrderClient())); deliveryOrderRequestDto.setOrderClient(NumberUtils.toInt(order.getOrderClient()));
......
...@@ -63,6 +63,10 @@ public class OrderManagerController { ...@@ -63,6 +63,10 @@ public class OrderManagerController {
return orderManagerAdapter.orderRejectRefund(request); return orderManagerAdapter.orderRejectRefund(request);
case ORDER_CANCEL: case ORDER_CANCEL:
return orderManagerAdapter.orderCancel(request); return orderManagerAdapter.orderCancel(request);
case ORDER_CREATE_DELIVERY:
return orderManagerAdapter.orderCreateDelivery(request);
case ORDER_CANCEL_DELIVERY:
return orderManagerAdapter.orderCancelDelivery(request);
default: default:
return ResponseUtil.error(ResponseResult.ORDER_OPERATE_TYPE_NOT_VALIDATE); return ResponseUtil.error(ResponseResult.ORDER_OPERATE_TYPE_NOT_VALIDATE);
} }
......
package cn.freemud.management.entities.dto.request.console;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/7/22 下午3:38
* @description :
*/
@Data
public class BizDTO {
/**
* 业务配置信息
*/
private BusinessInfoDTO businessInfo;
/**
* 配送信息
*/
private DeliveryInfoDTO deliveryInfo;
/**
*
*/
private StoreInfoDTO storeInfo;
}
package cn.freemud.management.entities.dto.request.console;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/7/22 下午3:01
* @description : 业务配置信息
*/
@Data
public class BusinessInfoDTO {
/**
* 预约自建外卖制作完成后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer appointAutoDeliveryTakeOrderWorkflowFinishTime;
/**
* 预约自提单制作完成后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer appointAutoSelfmentionMakerWorkflowFinishTime;
/**
* 预约自提单接单后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer appointAutoSelfmentionTakeOrderWorkflowFinishTime;
/**
* 预约自建外卖接单后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer appointAutoTakeOutTakeOrderWorkflowFinishTime;
/**
* 三方外卖预订单自动拣货完成时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;7:3分钟;8:2分钟;
*/
private Integer appointThirdDeliveryPickCompleteWorkflowFinishTime;
/**
* 预约三方外卖制作完成后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;7:3分钟;8:2分钟
*/
private Integer appointThirdDeliveryTakeOrderWorkflowFinishTime;
/**
* 自动退单时间
*/
private Integer autoChargebackOrderTime;
/**
* 退单模式 1手动退单 2自动退单
*/
private Integer autoChargebackOrderType;
/**
* 自建外卖制作完成后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer autoDeliveryTakeOrderWorkflowFinishTime;
/**
* 自提单制作完成后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer autoSelfmentionMakerWorkflowFinishTime;
/**
* 自提单接单后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer autoSelfmentionTakeOrderWorkflowFinishTime;
/**
* 自建外卖接单后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;
*/
private Integer autoTakeOutTakeOrderWorkflowFinishTime;
/**
* 三方外卖订单自动拣货完成时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;7:3分钟;8:2分钟
*/
private Integer autoThirdDeliveryPickCompleteWorkflowFinishTime;
/**
* 实时三方外卖制作完成后自动流程时间 1:2小时;2:1小时;3:30分钟;4:15分钟;5:10分钟;6:5分钟;7:3分钟;8:2分钟
*/
private Integer autoThirdDeliveryTakeOrderWorkflowFinishTime;
/**
* 是否自动同意退款(同意:1,不同意:0)
*/
private Integer automaticRefund;
/**
* 外卖预约单开关(0:关闭,1:开启)
*/
private Integer deliveryAppoint;
/**
* 外卖预约单时间(分钟) 65分钟、90分钟、120分钟
*/
private Integer deliveryAppointTime;
/**
* 自建外卖订单,商家自配送xx分钟后,订单状态更改为【已完成】
*/
private Integer deliveryFinishedAfterMinute;
/**
* 外卖时间:00:00-23:59
*/
private String deliveryHours;
/**
* 外卖预订单提醒时间{1:15分钟;2:30分钟;3:45分钟;4:60分钟;5:5分钟;6:10分钟}
*/
private String deliveryOrderWarnTime;
/**
* 自建外卖订单-实时单,商家自配送,门店接单xx分钟后,订单状态变更为配送中
*/
private Integer deliveryProcessingAfterMinute;
/**
* 自建外卖订单-预约单,商家自配送,预约商家前xx分钟,订单更改为配送中
*/
private Integer deliveryProcessingBeforeMinute;
/**
* 预计送达时间(分钟)
*/
private Integer expectedTime;
/**
* 商品平均制作时常(分钟)
*/
private Integer goodsAvgTimeOfMaking;
/**
* 是否支持发票 1是 0否
*/
private Integer invoice;
/**
* 发票特殊说明
*/
private String invoiceExplain;
/**
* 是否支持自动接单(1是2否)
*/
private Integer isAutoTakeOrder;
/**
* 最大接单量,单位笔
*/
private Integer maxOrderQuantity;
/**
* 可开票的最小价格
*/
private Integer minPriceForInvoice;
/**
* 预订单打印时间{1:提醒时打印;2:接单时打印}
*/
private String orderPrintConfig;
/**
* 订单进度条,1 开启,2 关闭
*/
private Integer orderProgressBarStatus;
/**
* 点餐方式(,隔开):pickup,delivery
*/
private String orderType;
/**
* 预订单提醒时间{1:15分钟;2:30分钟;3:45分钟;4:60分钟;5:5分钟;6:10分钟}
*/
private String orderWarnTime;
/**
* 超时关单 1开启 2关闭
*/
private Integer overTimeCloseOrder;
/**
* 接单超时关单时间,默认30分钟
*/
private Integer overTimeCloseOrderTime;
/**
* 自提-服务端自动接单时间 1:立即;2:1分钟;3:5分钟(顾客下单XX后,订单状态自动更改为已接单)
*/
private Integer pickupAutomaticOrderTime;
/**
* 自提预约单开关(0:关闭,1:开启)
*/
private Integer selfMentionSwitch;
/**
* 是否需要餐具 1 需要 0 不需要
*/
private Integer tableware;
/**
* 参与结算(1:是、2:否)
*/
private Integer takePartInSettleAccounts;
/**
* 外卖-服务端自动接单时间 1:立即;2:1分钟;3:5分钟(顾客下单XX后,订单状态自动更改为已接单)
*/
private Integer takeoutAutomaticOrderTime;
/**
* 所属商户号
*/
private String partnerId;
/**
* 退款时间,time_type_of_refund 为1时格式为HH:mm:ss,为2时默认48小时
*/
private String timeOfRefund;
/**
* 退款时间类型:1指定时间,2默认48小时后
*/
private Integer timeTypeOfRefund;
/**
* 开启制作时间 1 :是 , 2 :否
*/
private Integer turnOnTimeOfMaking;
/**
* 拓展业务字段
*/
private ExpandFieldsDTO expandFields;
}
package cn.freemud.management.entities.dto.request.console;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/7/22 下午2:57
* @description : 门店服务 响应基类
*/
@Data
public class ConsoleResponseDTO<T> {
/**
* 状态码
*/
private String statusCode;
/**
*状态码描述
*/
private String msg;
private T bizVO;
}
package cn.freemud.management.entities.dto.request.console;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/7/22 下午3:12
* @description :
*/
@Data
public class DeliveryInfoDTO {
/**
* 每增加公里(单位米)
*/
private String addRange;
/**
* 每增加公里增加配送费(单位分)
*/
private Integer addRangeAmount;
/**
* 基础配送费(分)
*/
private Integer deliveryAmount;
/**
* 配送方式:1-三方物流配送、2-商家自配送
*/
private Integer deliveryMethod;
/**
* 配送半径
*/
private Integer deliveryRadius;
/**
* 基础配送距离(单位米)
*/
private String deliveryRange;
/**
* 手绘经纬度集合
*/
private String deliveryScope;
/**
* 外卖起送条件(1:杯数,2:金额)
*/
private Integer deliveryType;
/**
* 起送杯数
*/
private Integer freeDeliveryCup;
/**
* 起送价格(单位分)
*/
private Integer freeDeliveryPrice;
/**
* 所属商户号
*/
private String partnerId;
/**
* 配送范围类型 1 自定义 2 半径
*/
private Integer scopeConfig;
}
package cn.freemud.management.entities.dto.request.console;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/7/22 下午4:30
* @description :
*/
@Data
public class ExpandFieldsDTO {
/**
* 是 or 开启
*/
public static String STR_TRUE = "1";
/**
* 否 or 关闭
*/
public static String STR_FALSE = "0";
/**
* 月销量配置值
*/
private String monthlySalesConfigValue;
/**
* 月销量是否展示(1-是;0-否)
*/
private String monthlySalesShow;
/**
* 点赞数是否展示(1-是;0-否)
*/
private String likesShow;
/**
* 点赞数配置值
*/
private String likesConfigValue;
/**
* 扫桌码下单(1-开启;0-关闭) 开启该配置的门店在下单的时候,需要判断有没有桌号,如果没有桌号需要扫码获取桌号后再下单
*/
private String scanOrderSwitch;
// TODO 省略了 高峰时间配送时间 List<Map> 字段对接 peakTimeDelivery
/**
* 每增加一公里增加的时长(分钟)
*/
private String appendMinutePerKilometer;
/**
* 自提打包是否收取餐具费(1-开启;0-关闭)
*/
private String pickupPackageFeeSwitch;
/**
* 外卖打包是否收取餐具费(1-开启;0-关闭)
*/
private String deliveryPackageFeeSwitch;
/**
* 派单模式(0-系统自动派单;1-手动派单)
*/
private String dispatchType;
}
package cn.freemud.management.entities.dto.request.console;
import lombok.Builder;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/7/22 下午2:49
* @description : http://yapi.sandload.cn:3000/project/257/interface/api/60053 接口调用使用
*/
@Data
@Builder
public class GetStoreMixRequest {
/**
* 商户ID
*/
private String partnerId;
/**
* 门店号
*/
private String storeCode;
/**
* 查询数据标志位
*/
private QueryFlag query;
}
package cn.freemud.management.entities.dto.request.console;
import lombok.Builder;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/7/22 下午2:53
* @description :
*/
@Data
@Builder
public class QueryFlag {
/**
* 查询门店基本信息
*/
private boolean queryStoreInfo;
/**
* 查询门店的渠道上级列表
*/
private boolean queryParentUntilTop;
/**
* 查询配送设置信息
*/
private boolean queryDeliveryInfo;
/**
* 查询业务设置信息
*/
private boolean queryBusinessInfo;
/**
* 查询门店图片
*/
private boolean queryStoreImage;
/**
* 查询门店繁忙时间
*/
private boolean queryStoreBusyTime;
}
package cn.freemud.management.entities.dto.request.console;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/7/22 下午3:28
* @description :
*/
@Data
public class StoreInfoDTO {
/**
* 是否繁忙置休,1-是,0-否
*/
private Integer activeFlag;
/**
* 门店地址
*/
private String address;
/**
* 英文门店地址
*/
private String addressEn;
/**
* 门店简称
*/
private String briefName;
/**
* 营业时间
*/
private String businessHours;
/**
* 当日营业时间
*/
private String businessHoursDay;
/**
* 营业时间类型:1-按天,2-按周
*/
private String businessType;
/**
* 市
*/
private String city;
/**
* 是否开通Delivery{1.是;2.否}
*/
private String delivery;
/**
* 配送时间
*/
private String deliveryHours;
/**
* 当日外卖营业时间
*/
private String deliveryHoursDay;
/**
* 到店自取(1是 2否)
*/
private Integer isSelfMention;
/**
* 纬度
*/
private String latitude;
/**
* 门店logo
*/
private String logoUrl;
/**
* 经度
*/
private String longitude;
/**
* 父级商户编码
*/
private String parentCode;
/**
* 父级商户编号
*/
private String parentId;
/**
* 父级商户名称
*/
private String parentName;
/**
* 商户号
*/
private String partnerId;
/**
* 电话
*/
private String phone;
/**
* 省
*/
private String province;
/**
* 区
*/
private String region;
/**
* 备注
*/
private String remark;
/**
* 是否展示优惠(0-不展示; 1-展示)
*/
private Integer showDiscount;
/**
* 营业状态
*/
private String state;
/**
* 门店营运状态(营运1,停运-2,删除-3)
*/
private String status;
/**
* 门店编号
*/
private String storeCode;
/**
* 门店id
*/
private String storeId;
/**
* 门店名称
*/
private String storeName;
/**
* 英文门店名称
*/
private String storeNameEn;
/**
* 门店公告
*/
private String storeNotice;
/**
* 第三方门店编号
*/
private String thirdPartCode;
}
...@@ -62,4 +62,10 @@ public class OrderManagerRequest { ...@@ -62,4 +62,10 @@ public class OrderManagerRequest {
private String remark; private String remark;
private Boolean horseman; private Boolean horseman;
/**
* 派单模式(0-系统自动派单;1-手动派单)
* 内置传参使用
*/
private String dispatchType;
} }
...@@ -11,7 +11,9 @@ public enum OperateType { ...@@ -11,7 +11,9 @@ public enum OperateType {
ORDER_AFFIRM("orderAffirm","完成"), ORDER_AFFIRM("orderAffirm","完成"),
ORDER_AGREE_REFUND("orderAgreeRefund","同意退款"), ORDER_AGREE_REFUND("orderAgreeRefund","同意退款"),
ORDER_REJECT_REFUND("orderRejectRefund","拒绝退款"), ORDER_REJECT_REFUND("orderRejectRefund","拒绝退款"),
ORDER_CANCEL("orderCancel","订单取消"); ORDER_CANCEL("orderCancel","订单取消"),
ORDER_CREATE_DELIVERY("orderCreateDelivery","创建配送"),
ORDER_CANCEL_DELIVERY("orderCancelDelivery","取消配送");
/** /**
* 操作类型 * 操作类型
......
...@@ -172,6 +172,7 @@ public enum ResponseResult { ...@@ -172,6 +172,7 @@ public enum ResponseResult {
AGREE_REFUND_APPLY_ORDER_FAIL("45087", "同意退款申请失败"), AGREE_REFUND_APPLY_ORDER_FAIL("45087", "同意退款申请失败"),
AGREE_REFUND_APPLY_ORDER_NOT_ALLOW("45088", "商户配置不允许退款,请检查商户配置"), AGREE_REFUND_APPLY_ORDER_NOT_ALLOW("45088", "商户配置不允许退款,请检查商户配置"),
PARTNER_ORDER_CANCEL_ERROR("45089", "取消订单失败"), PARTNER_ORDER_CANCEL_ERROR("45089", "取消订单失败"),
ORDER_DELIVERY_EDIT_FAILED("45090", "修改配送状态失败"),
/** /**
* 支付 * 支付
......
...@@ -89,9 +89,9 @@ public class OrderBaseService { ...@@ -89,9 +89,9 @@ public class OrderBaseService {
* @param orderCode * @param orderCode
* @param deliveryId * @param deliveryId
*/ */
public void updateDeliveryAbnormal(String partnerId, String orderCode, String deliveryId, String operator) { public void updateDeliveryAbnormal(String partnerId, String orderCode, String deliveryId, String operator,String msg) {
AssortmentUpdateDeliveryAbnormalRequest request = AssortmentUpdateDeliveryAbnormalRequest.builder() AssortmentUpdateDeliveryAbnormalRequest request = AssortmentUpdateDeliveryAbnormalRequest.builder()
.abnormalDesc("配送异常") .abnormalDesc("配送异常"+ msg)
.deliveryId(deliveryId) .deliveryId(deliveryId)
.orderCode(orderCode) .orderCode(orderCode)
.partnerId(partnerId) .partnerId(partnerId)
......
...@@ -89,4 +89,25 @@ public interface OrderManagerService { ...@@ -89,4 +89,25 @@ public interface OrderManagerService {
} }
/**
* 创建配送单
* 【ID1036616】【野萃山】【万象&小助手】支持门店手动创建运单,通知骑手到店取餐
* @param request
* @param orderBean
* @return
*/
default BaseResponse<OrderManagerResponse> orderCreateDelivery(OrderManagerRequest request, OrderBeanV1 orderBean){
return ResponseUtil.success();
}
/**
* 取消配送
* 【ID1036616】【野萃山】【万象&小助手】支持门店手动创建运单,通知骑手到店取餐
* @param request
* @param orderBean
* @return
*/
default BaseResponse<OrderManagerResponse> orderCancelDelivery(OrderManagerRequest request, OrderBeanV1 orderBean){
return ResponseUtil.success();
};
} }
...@@ -20,6 +20,8 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -20,6 +20,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Objects;
@Component @Component
public class OrderManagerAdapter { public class OrderManagerAdapter {
...@@ -41,11 +43,11 @@ public class OrderManagerAdapter { ...@@ -41,11 +43,11 @@ public class OrderManagerAdapter {
*/ */
public BaseResponse<OrderManagerResponse> orderConfirmTake(OrderManagerRequest request) { public BaseResponse<OrderManagerResponse> orderConfirmTake(OrderManagerRequest request) {
//查询订单 //查询订单
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId()); BaseResponse<OrderBeanV1> orderBeanResp = this.getOrderBean(request.getOrderId());
// 防止NPE if (!Objects.equals(orderBeanResp.getCode(), ResponseResult.SUCCESS.getCode())) {
if (orderBean == null) { return ResponseUtil.error(orderBeanResp.getMessage());
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
} }
OrderBeanV1 orderBean = orderBeanResp.getResult();
//订单接单参数校验 //订单接单参数校验
String companyId = orderBean.getCompanyId(); String companyId = orderBean.getCompanyId();
if (!macCafePartnerId.equals(companyId)) { if (!macCafePartnerId.equals(companyId)) {
...@@ -278,4 +280,50 @@ public class OrderManagerAdapter { ...@@ -278,4 +280,50 @@ public class OrderManagerAdapter {
result.setResult(new OrderManagerResponse(orderStatus,refundStatus)); result.setResult(new OrderManagerResponse(orderStatus,refundStatus));
return result; return result;
} }
/**
* 创建配送单
* @param request
* @return
*/
public BaseResponse orderCreateDelivery(OrderManagerRequest request) {
//查询订单
BaseResponse<OrderBeanV1> orderBeanResp = this.getOrderBean(request.getOrderId());
if (!Objects.equals(orderBeanResp.getCode(), ResponseResult.SUCCESS.getCode())) {
return ResponseUtil.error(orderBeanResp.getMessage());
}
OrderBeanV1 orderBean = orderBeanResp.getResult();
//订单接单参数校验
if (orderBean == null) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderCreateDelivery(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse);
}
private BaseResponse<OrderBeanV1> getOrderBean(String orderId){
//查询订单
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(orderId);
// 防止NPE
if (orderBean == null) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
return ResponseUtil.success(orderBean);
}
/**
* 取消配送
* @param request
* @return
*/
public BaseResponse orderCancelDelivery(OrderManagerRequest request) {
//查询订单
BaseResponse<OrderBeanV1> orderBeanResp = this.getOrderBean(request.getOrderId());
if (!Objects.equals(orderBeanResp.getCode(), ResponseResult.SUCCESS.getCode())) {
return ResponseUtil.error(orderBeanResp.getMessage());
}
OrderBeanV1 orderBean = orderBeanResp.getResult();
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderCancelDelivery(request, orderBean);
return handleResponse(request,orderBean,orderManagerResponse);
}
} }
...@@ -2,6 +2,10 @@ package cn.freemud.management.service.handle; ...@@ -2,6 +2,10 @@ package cn.freemud.management.service.handle;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.adapter.DeliverySdkAdapter; import cn.freemud.management.adapter.DeliverySdkAdapter;
import cn.freemud.management.entities.dto.request.console.BizDTO;
import cn.freemud.management.entities.dto.request.console.BusinessInfoDTO;
import cn.freemud.management.entities.dto.request.console.ConsoleResponseDTO;
import cn.freemud.management.entities.dto.request.console.ExpandFieldsDTO;
import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderHaltedRequest; import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderHaltedRequest;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.enums.DeliveryStatus; import cn.freemud.management.enums.DeliveryStatus;
...@@ -9,22 +13,25 @@ import cn.freemud.management.enums.ResponseResult; ...@@ -9,22 +13,25 @@ import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.service.OrderBaseService; import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.thirdparty.DeliveryMCCafeClient; import cn.freemud.management.thirdparty.DeliveryMCCafeClient;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.deliverycenter.dto.CancelDeliveryOrderRequestDto; import com.freemud.application.sdk.api.deliverycenter.dto.CancelDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto; import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.deliverycenter.response.CreateDeliveryOrderResponseDto; import com.freemud.application.sdk.api.deliverycenter.response.CreateDeliveryOrderResponseDto;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto; import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService; import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
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.service.EmailAlertService; import com.freemud.application.sdk.api.service.EmailAlertService;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Objects;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
...@@ -64,15 +71,26 @@ public class DeliveryHandle { ...@@ -64,15 +71,26 @@ public class DeliveryHandle {
/** /**
* 创建配送单 * 创建配送单
* * 【ID1036616】 【野萃山】【万象&小助手】支持门店手动创建运单,通知骑手到店取餐
* @param orderBean * @param orderBean
* @param request * @param request
* @return * @return
*/ */
public BaseResponse createDelivery(OrderBeanV1 orderBean, OrderManagerRequest request, StoreResponse storeInfo) { public BaseResponse createDelivery(OrderBeanV1 orderBean, OrderManagerRequest request, ConsoleResponseDTO<BizDTO> storeInfo,boolean idAutoCreate) {
if (storeInfo == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), storeInfo.getStatusCode().toString()) || storeInfo.getBizVO() == null) { if (storeInfo == null || ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), storeInfo.getStatusCode()) || storeInfo.getBizVO() == null || storeInfo.getBizVO().getStoreInfo() == null) {
return ResponseUtil.error(ResponseResult.STORE_INFO_NOT_FOUND); return ResponseUtil.error(ResponseResult.STORE_INFO_NOT_FOUND);
} }
// 【ID1036616】 【野萃山】【万象&小助手】支持门店手动创建运单,通知骑手到店取餐
BusinessInfoDTO businessInfo = storeInfo.getBizVO().getBusinessInfo();
if (idAutoCreate && Objects.nonNull(businessInfo) && Objects.nonNull(businessInfo.getExpandFields())) {
ExpandFieldsDTO expandFields = businessInfo.getExpandFields();
String dispatchType = expandFields.getDispatchType();
// 1. 手动派单
if (Objects.equals(dispatchType, "1")) {
ApiLog.printLog("oms 门店自动创建运单->", JSON.toJSONString(orderBean.getOid()),null,null);
return ResponseUtil.success();
}
}
if (!checkOrderOfDelivery(orderBean)) { if (!checkOrderOfDelivery(orderBean)) {
return ResponseUtil.success(); return ResponseUtil.success();
} }
...@@ -84,8 +102,8 @@ public class DeliveryHandle { ...@@ -84,8 +102,8 @@ public class DeliveryHandle {
//创建配送单失败,更新订单为异常单 //创建配送单失败,更新订单为异常单
if (deliveryResponse == null || SUCCESS != deliveryResponse.getCode() || deliveryResponse.getData() == null) { if (deliveryResponse == null || SUCCESS != deliveryResponse.getCode() || deliveryResponse.getData() == null) {
String deliveryId = deliveryResponse != null && deliveryResponse.getData() != null ? deliveryResponse.getData().getDeliveryId() : ""; String deliveryId = deliveryResponse != null && deliveryResponse.getData() != null ? deliveryResponse.getData().getDeliveryId() : "";
orderBaseService.updateDeliveryAbnormal(orderBean.getCompanyId(), orderBean.getOid(), deliveryId, operator); orderBaseService.updateDeliveryAbnormal(orderBean.getCompanyId(), orderBean.getOid(), deliveryId, operator, deliveryResponse == null ? "" : deliveryResponse.getMsg());
return ResponseUtil.success(); return ResponseUtil.error(deliveryResponse == null ? "调用配送服务失败" : deliveryResponse.getMsg());
} }
// 创建配送单成功 // 创建配送单成功
orderBaseService.updateDeliverySuccess(orderBean.getOid(), deliveryResponse.getData().getDeliveryId(), operator); orderBaseService.updateDeliverySuccess(orderBean.getOid(), deliveryResponse.getData().getDeliveryId(), operator);
......
...@@ -95,7 +95,9 @@ public class PaymentHandle { ...@@ -95,7 +95,9 @@ public class PaymentHandle {
if(ResponseResult.NOT_SUFFICIENT_FUNDS.getCode().equals(orderRefundResponse.getCode())){ if(ResponseResult.NOT_SUFFICIENT_FUNDS.getCode().equals(orderRefundResponse.getCode())){
throw new OrderServiceException(ResponseResult.NOT_SUFFICIENT_FUNDS); throw new OrderServiceException(ResponseResult.NOT_SUFFICIENT_FUNDS);
} }
throw new OrderServiceException(ResponseResult.REFUND_FAIL,orderRefundResponse.getMessage()); ResponseResult refundFail = ResponseResult.REFUND_FAIL;
refundFail.setMessage(orderRefundResponse.getMessage());
throw new OrderServiceException(refundFail);
} }
refundStatus=ObjectUtils.equals( PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getRefundStatus())?PayRefundStatus.SUCCESS:PayRefundStatus.RUNNING; refundStatus=ObjectUtils.equals( PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getRefundStatus())?PayRefundStatus.SUCCESS:PayRefundStatus.RUNNING;
return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId()); return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId());
......
...@@ -72,6 +72,7 @@ public class SaasOrderHandle { ...@@ -72,6 +72,7 @@ public class SaasOrderHandle {
public BaseResponse orderConfirm(OrderManagerRequest request, OrderBeanV1 orderBean) { public BaseResponse orderConfirm(OrderManagerRequest request, OrderBeanV1 orderBean) {
//订单接单 //订单接单
BaseQueryOrderRequest orderConfirmRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean); BaseQueryOrderRequest orderConfirmRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean);
orderConfirmRequest.setDispatchType(request.getDispatchType());
orderSdkAdapter.convert2wmDeliveryTimeOut(orderConfirmRequest,this.wmDeliveryTimeOut); orderSdkAdapter.convert2wmDeliveryTimeOut(orderConfirmRequest,this.wmDeliveryTimeOut);
//合阔pos 商户订单状态不自动扭转 //合阔pos 商户订单状态不自动扭转
// 2021-07-07 合阔自动 // 2021-07-07 合阔自动
......
package cn.freemud.management.service.impl; package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.console.BizDTO;
import cn.freemud.management.entities.dto.request.console.ConsoleResponseDTO;
import cn.freemud.management.entities.dto.request.console.GetStoreMixRequest;
import cn.freemud.management.entities.dto.request.console.QueryFlag;
import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderRequest; import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderRequest;
import cn.freemud.management.enums.ResponseResult; import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.service.OrderBaseService; import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.service.handle.DeliveryHandle; import cn.freemud.management.service.handle.DeliveryHandle;
import cn.freemud.management.thirdparty.ConsoleApiClient;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.log.LogThreadLocal;
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.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -23,6 +26,8 @@ public class OrderDeliveryService { ...@@ -23,6 +26,8 @@ public class OrderDeliveryService {
private OrderBaseService orderBaseService; private OrderBaseService orderBaseService;
@Autowired @Autowired
private DeliveryHandle deliveryHandle; private DeliveryHandle deliveryHandle;
@Autowired
private ConsoleApiClient consoleApiClient;
private static final int SUCCESS = 100; private static final int SUCCESS = 100;
...@@ -37,11 +42,14 @@ public class OrderDeliveryService { ...@@ -37,11 +42,14 @@ public class OrderDeliveryService {
if (null == orderBean) { if (null == orderBean) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST); return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
} }
StoreResponse storeInfo = storeCenterService.getStoreInfo(new StoreInfoRequest(orderBean.getCompanyId(), orderBean.getShopId()), LogThreadLocal.getTrackingNo()); GetStoreMixRequest getStoreMixRequest = GetStoreMixRequest.builder().partnerId(orderBean.getCompanyId()).storeCode(orderBean.getShopId()).build();
if (SUCCESS != storeInfo.getStatusCode() || storeInfo.getBizVO() == null) { QueryFlag query = QueryFlag.builder().queryBusinessInfo(true).queryStoreInfo(true).build();
getStoreMixRequest.setQuery(query);
ConsoleResponseDTO<BizDTO> storeMix = consoleApiClient.getStoreMix(getStoreMixRequest);
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), storeMix.getStatusCode()) || storeMix.getBizVO() == null || storeMix.getBizVO().getStoreInfo()== null) {
return ResponseUtil.error(ResponseResult.STORE_INFO_NOT_FOUND); return ResponseUtil.error(ResponseResult.STORE_INFO_NOT_FOUND);
} }
return deliveryHandle.createDelivery(orderBean, null, storeInfo); return deliveryHandle.createDelivery(orderBean, null, storeMix,false);
} }
......
package cn.freemud.management.service.impl; package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.constant.ResponseCodeConstant;
import cn.freemud.management.entities.dto.request.console.*;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse; import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse; import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.CreateEventEnum; import cn.freemud.management.enums.*;
import cn.freemud.management.enums.OperateType;
import cn.freemud.management.enums.RefundStatus;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.OrderServiceException; import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.service.OrderBaseService; import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.service.OrderManagerService; import cn.freemud.management.service.OrderManagerService;
import cn.freemud.management.service.handle.*; import cn.freemud.management.service.handle.*;
import cn.freemud.management.thirdparty.ConsoleApiClient;
import cn.freemud.management.thirdparty.OrderCallbackClient; import cn.freemud.management.thirdparty.OrderCallbackClient;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.log.ApiLog; import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
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.vo.OrderCallBackRequestVo; import com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType; import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq; import com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExpressReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp; import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; 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.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.order.enums.OldOrderStatus; import com.freemud.sdk.api.assortment.order.enums.OldOrderStatus;
import com.freemud.sdk.api.assortment.order.enums.OrderSourceType; import com.freemud.sdk.api.assortment.order.enums.OrderSourceType;
...@@ -90,6 +90,8 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -90,6 +90,8 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
@Autowired @Autowired
private OrderCallbackClient orderCallbackClient; private OrderCallbackClient orderCallbackClient;
@Autowired
private ConsoleApiClient consoleApiClient;
/** /**
* 接单 * 接单
* *
...@@ -99,12 +101,20 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -99,12 +101,20 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
*/ */
@Override @Override
public BaseResponse<OrderManagerResponse> orderConfirm(OrderManagerRequest request, OrderBeanV1 orderBean) { public BaseResponse<OrderManagerResponse> orderConfirm(OrderManagerRequest request, OrderBeanV1 orderBean) {
QueryFlag query = QueryFlag.builder().queryBusinessInfo(true).queryStoreInfo(true).build();
ConsoleResponseDTO<BizDTO> storeMix = this.getStoreMix(query, orderBean.getCompanyId(), orderBean.getShopId());
if (storeMix!=null && ObjectUtils.equals(ResponseResult.SUCCESS.getCode(), storeMix.getStatusCode())) {
BizDTO bizVO = storeMix.getBizVO();
if (bizVO!=null && bizVO.getBusinessInfo() !=null) {
ExpandFieldsDTO expandFields = bizVO.getBusinessInfo().getExpandFields();
request.setDispatchType(expandFields.getDispatchType());
}
}
// 订单接单 // 订单接单
BaseResponse baseResponse = saasOrderHandle.orderConfirm(request, orderBean); BaseResponse baseResponse = saasOrderHandle.orderConfirm(request, orderBean);
//获取门店信息 // 使用feign调用 获取门店信息
StoreResponse storeInfo = storeCenterService.getStoreInfo(new StoreInfoRequest(orderBean.getCompanyId(), orderBean.getShopId()), "");
// 创建配送单 // 创建配送单
deliveryHandle.createDelivery(orderBean, request, storeInfo); deliveryHandle.createDelivery(orderBean, request, storeMix, true);
// 推送pos、微信消息中心 重复接单不重复推消息(针对蜜雪做的修改) // 推送pos、微信消息中心 重复接单不重复推消息(针对蜜雪做的修改)
if(baseResponse != null && baseResponse.getResult() == null){ if(baseResponse != null && baseResponse.getResult() == null){
orderBaseService.sendMessage(orderBean, OperateType.ORDER_CONFIRM, request.getReason()); orderBaseService.sendMessage(orderBean, OperateType.ORDER_CONFIRM, request.getReason());
...@@ -115,7 +125,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -115,7 +125,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
ApiLog.infoMessage("紧急方案 接单成功直接调用callback,orderCode:{},requestId:{}",requestVo.getOrderCode(),requestVo.getRequestId()); ApiLog.infoMessage("紧急方案 接单成功直接调用callback,orderCode:{},requestId:{}",requestVo.getOrderCode(),requestVo.getRequestId());
orderCallbackClient.callbackOrder(requestVo); orderCallbackClient.callbackOrder(requestVo);
} }
return ResponseUtil.success(new OrderManagerResponse(storeInfo.getBizVO().getOrderPrintConfig(), orderBean.getGmtExpect(), return ResponseUtil.success(new OrderManagerResponse(storeMix.getBizVO().getBusinessInfo().getOrderPrintConfig(), orderBean.getGmtExpect(),
CollectionUtils.isEmpty(orderBean.getRefundList()) ? null : RefundStatus.getByCode(orderBean.getRefundList().get(0).getStatus()))); CollectionUtils.isEmpty(orderBean.getRefundList()) ? null : RefundStatus.getByCode(orderBean.getRefundList().get(0).getStatus())));
} }
...@@ -357,4 +367,45 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -357,4 +367,45 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
private void commonSendEmailAlert(OrderBeanV1 order, OrderBaseResp baseResponse,String desc){ private void commonSendEmailAlert(OrderBeanV1 order, OrderBaseResp baseResponse,String desc){
emailAlertService.sendEmailAlert(desc, "请求json:" + JSONObject.toJSONString(order) + "返回msg:" + baseResponse.getMessage()); emailAlertService.sendEmailAlert(desc, "请求json:" + JSONObject.toJSONString(order) + "返回msg:" + baseResponse.getMessage());
} }
@Override
public BaseResponse<OrderManagerResponse> orderCreateDelivery(OrderManagerRequest request, OrderBeanV1 orderBean) {
// 使用feign调用 获取门店信息
QueryFlag query = QueryFlag.builder().queryBusinessInfo(true).queryStoreInfo(true).build();
ConsoleResponseDTO<BizDTO> storeMix = this.getStoreMix(query, orderBean.getCompanyId(), orderBean.getShopId());
// 创建配送单
return deliveryHandle.createDelivery(orderBean, request, storeMix, false);
}
@Override
public BaseResponse orderCancelDelivery(OrderManagerRequest request, OrderBeanV1 orderBean) {
BaseResponse response = deliveryHandle.cancelDelivery(orderBean,request);
if (!Objects.equals(response.getCode(), ResponseCodeConstant.RESPONSE_SUCCESS_STR)){
return response;
}
OrderExpressReq expressReq = new OrderExpressReq();
expressReq.setOrderCode(orderBean.getOid());
expressReq.setPartnerId(orderBean.getCompanyId());
expressReq.setOrderSubState(DeliveryStatus.DELIVERYCANCEL.getCode());
OrderBaseResp orderBaseResp = orderSdkService.updateDeliveryInfo(expressReq, LogThreadLocal.getTrackingNo());
if (!Objects.equals(orderBaseResp.getCode(), ResponseCodeConstant.RESPONSE_SUCCESS_STR)){
this.commonSendEmailAlert(orderBean,orderBaseResp,"取消配送,修改订单配送状态失败");
return ResponseUtil.error(ResponseResult.ORDER_DELIVERY_EDIT_FAILED);
}
return ResponseUtil.success();
}
/**
*
* @param query
* @param partnerId
* @param storeId
* @return
*/
private ConsoleResponseDTO<BizDTO> getStoreMix(QueryFlag query, String partnerId, String storeId) {
GetStoreMixRequest getStoreMixRequest = GetStoreMixRequest.builder().partnerId(partnerId).storeCode(storeId).build();
getStoreMixRequest.setQuery(query);
ConsoleResponseDTO<BizDTO> storeMix = consoleApiClient.getStoreMix(getStoreMixRequest);
return storeMix;
}
} }
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: StoreItemClient
* @Package cn.freemud.service.thirdparty
* @Description:
* @author: liming.guo
* @date: 2018/5/16 9:39
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.management.thirdparty;
import cn.freemud.management.entities.dto.request.console.BizDTO;
import cn.freemud.management.entities.dto.request.console.ConsoleResponseDTO;
import cn.freemud.management.entities.dto.request.console.GetStoreMixRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient("CONSOLE-API")
@RequestMapping(produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
public interface ConsoleApiClient {
/**
* v2获取门店信息
* http://yapi.sandload.cn:3000/project/257/interface/api/60053 接口调用使用
*
* @param request
* @return
*/
@PostMapping(value = "/api/v2/organization/getStoreMix")
ConsoleResponseDTO<BizDTO> getStoreMix(GetStoreMixRequest request);
}
...@@ -17,6 +17,7 @@ import lombok.Data; ...@@ -17,6 +17,7 @@ import lombok.Data;
@Data @Data
public class OrderExpressReq { public class OrderExpressReq {
private String partnerId;
//订单编号 //订单编号
private String orderCode; private String orderCode;
......
...@@ -27,4 +27,9 @@ public class POSOrderOperationBaseReq { ...@@ -27,4 +27,9 @@ public class POSOrderOperationBaseReq {
//预约单接单提醒时间 提醒触发时间=预约时间-提醒时间 //预约单接单提醒时间 提醒触发时间=预约时间-提醒时间
private Integer remindTime; private Integer remindTime;
/**
* 派单模式(0-系统自动派单;1-手动派单)
* 内置传参使用
*/
private String dispatchType;
} }
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