Commit 36e664b4 by 姜海波

合并最新master分支

parents 5edf0984 ac91ec33
......@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.2.2.RELEASE</version>
<version>1.2.4.RELEASE</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -38,7 +38,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>ordercenter-sdk</artifactId>
<version>1.1.6.RELEASE</version>
<version>1.1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......@@ -55,7 +55,7 @@
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>storecenter-sdk</artifactId>
<version>2.2.1.RELEASE</version>
<version>2.3.3-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
......
......@@ -14,4 +14,8 @@
| 1.1.9.RELEASE| pos渠道 | 丁凯 | 2020-02-22 |
| 1.2.0.RELEASE| 开放平台创建订单 | 姜海波 | 2020-02-24 |
| 1.2.1.RELEASE| 基于1.2.0.RELEASE | 丁凯 | 2020-03-04 |
| 1.2.2.RELEASE| 升级RELEASE | wuping | 2020-03-04 |
\ No newline at end of file
| 1.2.2.RELEASE| 升级RELEASE | wuping | 2020-03-04 |
| 1.1.7-SNAPSHOT| 预约单支付成功接口增加预约任务 | wuping | 2020-03-10 |
| 1.1.8-SNAPSHOT| 预约单接单接口增加预约任务 | wuping | 2020-03-17 |
| 1.2.3.RELEASE | 预约单升级RELEASE | wuping | 2020-03-18 |
| 1.2.4.RELEASE | 紧急需求 增加骑手电话 | 海波 | 2020-03-19 |
\ No newline at end of file
......@@ -808,6 +808,8 @@ public class OrderSdkAdapter {
addInfo.setDeliveryType(deliveryContactInfoResp.getAddressDetail());
addInfo.setExpress(orderInfoReqs.getExpressChannelName());
addInfo.setDeliverStatus(orderInfoReqs.getDeliveryState());
addInfo.setRiderName(deliveryContactInfoResp.getContactsName());
addInfo.setRiderPhone(deliveryContactInfoResp.getMobile());
data.setAddInfo(addInfo);
}
}
......@@ -2753,4 +2755,43 @@ public class OrderSdkAdapter {
return totalWeight;
}
/**
* 匹配订单类型
*
* @param orderType
* @return
*/
public OrderType getNewOrderTypeEnum(Integer orderType, Long gmtExpect) {
if (orderType == null) {
return null;
}
switch (orderType) {
case 1:
// 外卖
if (gmtExpect == null || gmtExpect == 0L) {
return OrderType.GENERAL_EXPRESS;
} else {
return OrderType.RESERVED_EXPRESS;
}
case 4:
// 自取
if (gmtExpect == null || gmtExpect == 0L) {
return OrderType.GENERAL_SELF_PICKUP;
} else {
return OrderType.RESERVED_SELF_PICKUP;
}
case 5:
// 堂食
if (gmtExpect == null || gmtExpect == 0L) {
return OrderType.GENERAL_DINE_IN;
} else {
return OrderType.RESERVED_DINE_IN;
}
default:
return null;
}
}
}
......@@ -56,4 +56,7 @@ public class BaseQueryOrderRequest extends BaseConfig {
//操作人
private String operator;
//用户预约时间,仅为预约单时存放
private String expectTime;
}
......@@ -52,6 +52,10 @@ public class ConfirmOrderRequest extends BaseConfig {
//操作人
private String operator;
private List<OrderSettlement>orderSettlements;
//用户预约时间,仅为预约单时存放
private String expectTime;
@Data
public static class OrderSettlement{
/**
......
......@@ -346,6 +346,10 @@ public class QueryOrdersResponse {
* -2默认值 -1:创建失败 0:待接单 1:系统接单 2:分配骑手 3:骑手到店 4:骑手取餐 5:开始配送 6:运单送达 7:运单异常 8:运单取消 9:创建配送单成功
*/
private Integer deliverStatus;
private String RiderName;
private String RiderPhone;
}
@NoArgsConstructor
......
......@@ -71,17 +71,17 @@
<dependency>
<groupId>com.freemud.sdk.api.assortment</groupId>
<artifactId>assortment-orderdistributor-sdk</artifactId>
<version>2.4.RELEASE</version>
<version>2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>com.freemud.sdk.api.assortment</groupId>
<artifactId>assortment-data-manager</artifactId>
<version>2.8.RELEASE</version>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>com.freemud.sdk.api.assortment</groupId>
<artifactId>assortment-dynamic-queue</artifactId>
<version>1.3.RELEASE</version>
<version>1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>cn.freemud</groupId>
......
......@@ -29,6 +29,9 @@ public class OrderCallBackConfig {
public static final String OPEN_PLATFORM_ORDER_STATUS_CHANGE_PUSH_ROUTING_KEY = "open-platform-order-status-change-routing-key";
public static final String WECHAT_REPORT_QUEUE_ROUTING_KEY="wechat-report-queue-routing-key";
//微信订单上传
public static final String WECHAT_ORDER_REPORT_QUEUE_ROUTING_KEY="wechat-order-report-queue-routing-key";
public static final String WECHAT_ORDER_REPORT_QUEUE="wechat-order-report-queue";
/**
* 定义基于Fanout 的Exchange。
......@@ -78,6 +81,16 @@ public class OrderCallBackConfig {
return BindingBuilder.bind(orderStatusChangeQueue).to(topicExchange).with(OPEN_PLATFORM_ORDER_STATUS_CHANGE_PUSH_ROUTING_KEY).noargs();
}
@Bean(name = "wechatOrderReportQueue")
public Queue wechatOrderReportQueue() {
return QueueBuilder.durable(WECHAT_ORDER_REPORT_QUEUE).build();
}
@Bean
Binding bindingWechatOrderReportQueue(@Qualifier("wechatOrderReportQueue") Queue wechatOrderReportQueue, @Qualifier("topicExchange") Exchange topicExchange) {
return BindingBuilder.bind(wechatOrderReportQueue).to(topicExchange).with(WECHAT_ORDER_REPORT_QUEUE_ROUTING_KEY).noargs();
}
@Bean
public OrderCallBackMQService orderMQService() {
return new OrderCallBackMQService();
......
......@@ -28,6 +28,7 @@ import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWx
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager;
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.ordercenter.enums.NewOrderStatus;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
......@@ -37,9 +38,12 @@ import com.freemud.sdk.api.assortment.orderdistributor.request.DisRequest;
import com.freemud.sdk.api.assortment.orderdistributor.service.OrderDistributionService;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
......@@ -48,6 +52,7 @@ import java.util.Map;
@Component
public class OrderCallBackMQService {
private static ApplicationContext context;
private static Logger logger = LoggerFactory.getLogger(OrderCallBackMQService.class);
@Autowired
private MQService mqService;
......@@ -83,7 +88,8 @@ public class OrderCallBackMQService {
Header header = new Header(MQAction.UPDATE.getAction(), "call-back-service-api",
OrderCallBackConfig.QUEUE_ROUTING_KEY, OrderCallBackConfig.QUEUE_NAME);
MQMessage<WechatReportOrderDto> message = new MQMessage<>(header, wechatReportOrderDto);
mqService.convertAndSend(OrderCallBackConfig.TOPIC_EXCHANGE_NAME, OrderCallBackConfig.WECHAT_REPORT_QUEUE_ROUTING_KEY, message);
mqService.convertAndSend(OrderCallBackConfig.TOPIC_EXCHANGE_NAME, OrderCallBackConfig.WECHAT_ORDER_REPORT_QUEUE_ROUTING_KEY, message);
logger.info("orderCode:{} queue:{} content:{}", new Object[]{orderInfoReqs.getOrderCode(), "wechat-report-queue", JSONObject.toJSONString(message)});
}
} catch (Exception ex) {
ErrorLog.printErrorLog("sendWechatReportMQError",body.getOrderCode(),body,ex);
......@@ -172,12 +178,27 @@ public class OrderCallBackMQService {
wechatReportOrderDto.setOutShopNo(orderInfoReqs.getStoreId());
wechatReportOrderDto.setSubOpenId(userLoginInfoDto.getOpenId());
wechatReportOrderDto.setLoginToken(userLoginInfoDto.getSessionKey());
wechatReportOrderDto.setUserAmount(orderInfoReqs.getActualPayAmount().intValue());
wechatReportOrderDto.setUserAmount(orderInfoReqs.getSettlementAmount().intValue());
wechatReportOrderDto.setOutOrderNo(orderInfoReqs.getOrderCode());
wechatReportOrderDto.setTransactionId(orderExtInfoDto.getPaid_no());
wechatReportOrderDto.setOutTradeNo(orderExtInfoDto.getPayTransId());
wechatReportOrderDto.setTotalAmount(orderInfoReqs.getOriginalAmount().intValue());
wechatReportOrderDto.setDiscountAmount(orderInfoReqs.getSettlementAmount().intValue());
// 计算优惠金额
int discountAmount = 0;
List<OrderSettlementResp> accountList = orderInfoReqs.getOrderSettlementDetailList();
if(accountList != null && !CollectionUtils.isEmpty(accountList)) {
for(OrderSettlementResp accountBean : accountList) {
try {
Long price = accountBean.getSettlementAmount() == null ? 0 : accountBean.getSettlementAmount().longValue();
if(price < 0) {
discountAmount = discountAmount - price.intValue();
}
} catch (Exception e) {
}
}
}
wechatReportOrderDto.setTotalAmount(discountAmount+orderInfoReqs.getSettlementAmount().intValue());
wechatReportOrderDto.setDiscountAmount(discountAmount);
//订单状态 (2—用户下单;1—支付完成)
wechatReportOrderDto.setStatus(NewOrderStatus.PENDING_PAYMENT.getIndex().equals(orderInfoReqs.getOrderState()) ? 2 : 1);
// 菜品列表
......@@ -191,15 +212,6 @@ public class OrderCallBackMQService {
dishList.add(dishInfo);
}
wechatReportOrderDto.setDishList(dishList);
//优惠列表
List<WechatReportOrderDto.AccountBean> accountList = new ArrayList<>();
for (OrderSettlementResp orderSettlementResp :orderInfoReqs.getOrderSettlementDetailList()) {
WechatReportOrderDto.AccountBean accountBean = new WechatReportOrderDto.AccountBean();
accountBean.setAccountId(orderSettlementResp.getExternalObjectId());
accountBean.setPrice(orderSettlementResp.getAgentDiscountAmount());
accountList.add(accountBean);
}
wechatReportOrderDto.setAccountList(accountList);
return wechatReportOrderDto;
}
}
......@@ -40,7 +40,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.2.2.RELEASE</version>
<version>1.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......@@ -88,7 +88,7 @@
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>storecenter-sdk</artifactId>
<version>2.2.1.RELEASE</version>
<version>2.3.3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>cn.freemud</groupId>
......
......@@ -50,7 +50,7 @@ public enum ResponseResult {
STORE_ITEM_CHECK_VAILD_ERROR("43005", "门店商品校验失败"),
STORE_ITEM_CHECK_INVAILD("43006", "商品无效"),
STORE_ITEM_CHECK_DISCOUNT_CHANGE("43010", "商品限购活动已变更"),
STORE_ITEM_CHECK_CLOSE("43007", "门店已打烊"),
STORE_ITEM_CHECK_CLOSE("43007", "门店已打烊,请预约点餐"),
STORE_ITEM_STOP_BUSINESS("43010", "门店已停业"),
STORE_ITEM_NOT_DELIVERY("43008", "门店不支持外卖配送"),
STORE_ITEM_NOT_IN_DELIVERY_LIMIT_AMOUNT("43009", "订单金额未满足门店起送费"),
......
......@@ -30,13 +30,14 @@ import com.freemud.sdk.api.assortment.order.request.order.AssortmentUpdateDelive
import com.freemud.sdk.api.assortment.order.request.order.UpdateDeliveryInfoByIdRequest;
import com.freemud.sdk.api.assortment.order.response.order.OrderBaseResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
......@@ -88,6 +89,10 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
requestDto.setExpressChannelName(request.getChannelName());
requestDto.setExpressNo(request.getChannelDeliveryId());
requestDto.setOrderSubState(deliveryStatus);
if (StringUtils.isNotBlank(request.getRemark()))
{
requestDto.setRemark("配送:"+request.getRemark());
}
OrderBaseResponse orderBaseResponseDto = orderCenterSdkService.updateDeliveryInfoById(requestDto);
//订单服务修改配送单信息失败
if (!SUCCESS_RESPONSE_CODE.equals(orderBaseResponseDto.getErrcode())) {
......@@ -112,8 +117,12 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
// 订单已完成
sendPosService(deliveryStatus,posBaseRequestDto);
} else if (deliveryStatus == DeliveryStatus.DELIVERYERROR.getCode() || deliveryStatus == DeliveryStatus.DELIVERYCANCEL.getCode()) {
// 取消外卖中台配送单 订单异常
partnerCancelOrder(request.getDeliveryId());
// 如果 "配送单异常并且顾客更改配送地址" 不取消配送单
if (!isDeliveryAbnormalAndCustomerChangedAddress(request)) {
partnerCancelOrder(request.getDeliveryId());
}
// 运单异常,取消订单
posBaseRequestDto.setReason("没有骑手接单");
posBaseRequestDto.setDeliveryId(request.getDeliveryId());
......@@ -132,6 +141,25 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
return ResponseUtil.success();
}
/**
* 配送单异常并且顾客更改配送地址
*
* @return
*/
public boolean isDeliveryAbnormalAndCustomerChangedAddress(CallbackUrlRequestDto request) {
if (DeliveryStatus.DELIVERYERROR.getCode() != request.getDeliveryStatus()) return false;
if (StringUtils.isBlank(request.getRemark())) return false;
List<String> abnormalDesc = Lists.newArrayList("顾客更改配送地址", "顾客更改收货地址");
for (String str : abnormalDesc) {
if (request.getRemark().contains(str)) {
log.info("isDeliveryAbnormalAndCustomerChangedAddress.true of {}", JSONObject.toJSONString(request));
return true;
}
}
return false;
}
@Override
public BaseResponse mallCallbackUrl(CallbackUrlRequestDto request) {
return ResponseUtil.success();
......
......@@ -143,7 +143,8 @@ public class CheckOrder {
if (storeResponseDto.getActiveFlag() == null || storeResponseDto.getActiveFlag() != 1) {
throw new ServiceException(ResponseResult.STORE_ITEM_STOP_BUSINESS);
}
if (!StoreConstant.BUSINESS.equals(storeResponseDto.getState())) {
//未营业无预约时间无法下单
if (!StoreConstant.BUSINESS.equals(storeResponseDto.getState()) && StringUtils.isBlank(createOrderVo.getTakeMealTime())) {
throw new ServiceException(ResponseResult.STORE_ITEM_CHECK_CLOSE);
}
//设置营业开始和结束时间
......@@ -154,15 +155,20 @@ public class CheckOrder {
}
Date date = new Date();
String startDateTimeStr = DateUtil.convert2String(date, DateUtil.FORMAT_YMD) + " " + businessHours[0] + ":00";
Date startDateTime = DateUtil.convert2Date(startDateTimeStr, DateUtil.FORMAT_YYYY_MM_DD_HHMMSS);
String endDateTimeStr = DateUtil.convert2String(date, DateUtil.FORMAT_YMD) + " " + businessHours[1] + ":00";
Date startDateTime ;
Date endDateTime ;
startDateTime = DateUtil.convert2Date(startDateTimeStr, DateUtil.FORMAT_YYYY_MM_DD_HHMMSS);
SimpleDateFormat hhmmss = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date endDateTime;
try {
endDateTime = hhmmss.parse(endDateTimeStr);
} catch (ParseException e) {
throw new ServiceException(ResponseResult.STORE_BUSINESS_HOUR_ERROR);
}
//隔天营业时间处理
if(startDateTime.after(endDateTime)){
endDateTime = DateUtil.addDays(endDateTime,1);
}
storeResponseDto.setBusinessHoursDayStartTime(startDateTime);
storeResponseDto.setBusinessHoursDayEndTime(endDateTime);
......@@ -197,6 +203,20 @@ public class CheckOrder {
.append(" ").append(createOrderVo.getTakeMealTime()).append(":00");
takeMealDateTime = DateUtil.convert2Date(takeMealTime.toString(), "yyyy-MM-dd HH:mm:ss");
}
// System.out.println(takeMealDateTime.before(storeResponseDto.getBusinessHoursDayStartTime()));
// Date convert2Date = DateUtil.convert2Date(storeResponseDto.getBusinessHoursDayStartTime(), "yyyy-MM-dd");
// boolean before = takeMealDateTime.before(DateUtil.addDays(convert2Date, 1));
//隔天预约时间处理 8:00-2:00 预约1:00 ,下单时间在2:00 - 23:59加1天,00:00-1:59不加
if(takeMealDateTime != null && takeMealDateTime.before(storeResponseDto.getBusinessHoursDayStartTime())
&& takeMealDateTime.before(DateUtil.addDays(DateUtil.convert2Date(storeResponseDto.getBusinessHoursDayStartTime(),"yyyy-MM-dd"),1))){
takeMealDateTime = DateUtil.addDays(takeMealDateTime,1);
}
//有预约时间,预约时间要在营业时间范围内
if (takeMealDateTime != null && (takeMealDateTime.before(storeResponseDto.getBusinessHoursDayStartTime())
|| takeMealDateTime.after(storeResponseDto.getBusinessHoursDayEndTime()))) {
throw new ServiceException(ResponseResult.ORDER_TAKEMEALTIME_INVAILD);
}
String appId = userLoginInfoDto.getWxAppId();
// 校验小程序是否支持到店或者外卖
OpenPlatformIappWxappConfig config = openPlatformIappWxappConfigManager.selectIappWxappConfigByWxAppId(appId);
......@@ -208,12 +228,6 @@ public class CheckOrder {
if (storeResponseDto.getIsSelfMention() == null || storeResponseDto.getIsSelfMention() != 1) {
throw new ServiceException(ResponseResult.STORE_NOT_ENABLE_COLLECT_GOODS);
}
//有预约时间,预约时间要在营业时间范围内
if (takeMealDateTime != null && (takeMealDateTime.before(storeResponseDto.getBusinessHoursDayStartTime())
|| takeMealDateTime.after(storeResponseDto.getBusinessHoursDayEndTime()))) {
throw new ServiceException(ResponseResult.ORDER_TAKEMEALTIME_INVAILD);
}
createOrderVo.setUserName(userLoginInfoDto.getNickName());
createOrderVo.setMobile(userLoginInfoDto.getMobile());
}
......@@ -256,14 +270,11 @@ public class CheckOrder {
if (startDate == null || endDate == null || date.after(endDate)) {
throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY);
}
if (StringUtils.isNotBlank(createOrderVo.getTakeMealTime())) {
storeDeliveryInfoDto.setPushOrderTime(30);
}
// 校验预约配送时间
if (StringUtils.isBlank(createOrderVo.getTakeMealTime()) && date.before(startDate)) {
long takeAwayTime = startDate.getTime() + storeResponseDto.getServiceTime() * 60 * 1000L;
takeMealDateTime = new Date(takeAwayTime);
createOrderVo.setTakeMealTime(DateUtil.convert2Str(takeMealDateTime, "HH:mm"));
// createOrderVo.setTakeMealTime(DateUtil.convert2Str(takeMealDateTime, "HH:mm"));
}
if (takeMealDateTime != null && (takeMealDateTime.before(startDate) || takeMealDateTime.after(endDate))) {
throw new ServiceException(ResponseResult.ORDER_CREATE_TIME_NOT_DELIVERY);
......@@ -271,7 +282,10 @@ public class CheckOrder {
storeDeliveryInfoDto.setEnableTakeaway(true);
// 校验收货地址是否可配送
checkReceiveAddress(storeDeliveryInfoDto, createOrderVo);
pushOrderTime = storeDeliveryInfoDto.getPushOrderTime();
}
//重新赋值为yyyy-MM-dd HH:mm:ss格式字符串时间
if(takeMealDateTime != null){
createOrderVo.setTakeMealTime(DateUtil.convert2String(takeMealDateTime, "yyyy-MM-dd HH:mm:ss"));
}
//非到店或者外卖,类型错误
if (!(CreateOrderType.COLLECT_GOODS.getCode().equals(createOrderVo.getOrderType()) ||
......
......@@ -393,7 +393,9 @@ public class OrderServiceImpl implements Orderservice {
var1.setPayDate(DateUtil.convert2String(new Date(), "yyyy-MM-dd HH:mm:ss"));
var1.setPayTransId(message.getOut_trade_no());
var1.setOperator(orderBean.getUserName());
if(orderBean.getGmtExpect() != null && orderBean.getGmtExpect() != 0){
var1.setExpectTime(DateUtil.convert2String(new Date(orderBean.getGmtExpect()),DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
}
// 订单支付成功
com.freemud.sdk.api.assortment.order.response.order.PayAccessResponse payAccessRes = orderCenterSdkService.payAccess(var1);
String string2 = JSONObject.toJSONString(payAccessRes);
......@@ -976,6 +978,9 @@ public class OrderServiceImpl implements Orderservice {
orderBean.setSendTime(result.getSendTime());
orderBean.setCompleteTime(result.getCompleteTime());
}
if(orderBean.getAddInfo()!=null&&StringUtils.isNotEmpty(orderBean.getAddInfo().getRiderPhone())) {
orderBean.setRiderPhone(orderBean.getAddInfo().getRiderPhone());
}
}
/**
......@@ -1725,7 +1730,7 @@ public class OrderServiceImpl implements Orderservice {
//创建普通订单
OrderClientType finalOrderClient = orderClient;
Function<Object, CreateOrderResponse> createOrder = (var -> {
BaseCreateOrderRequest baseCreateOrderRequest = orderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto,orderWarnTime);
BaseCreateOrderRequest baseCreateOrderRequest = orderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto, storeResponseDto);
//查询第三方商品编号
baseCreateOrderRequest = getProductCustomerCode(baseCreateOrderRequest);
//保存门店渠道信息
......@@ -1743,7 +1748,7 @@ public class OrderServiceImpl implements Orderservice {
});
//创建父子订单
Function<Object, CreateFatherSonOrderResponse> createFatherSonOrder = (var -> {
CreateFatherSonOrderRequest createFatherSonOrderRequest = orderAdapter.convertFatherSonOrderRequest(createOrderVo, shoppingCartGoodsDto, orderExtendedReq,orderWarnTime);
CreateFatherSonOrderRequest createFatherSonOrderRequest = orderAdapter.convertFatherSonOrderRequest(createOrderVo, shoppingCartGoodsDto, orderExtendedReq,storeResponseDto);
//查询第三方商品编号
createFatherSonOrderRequest = getProductCustomerCodeNew(createFatherSonOrderRequest);
MqMessageRequest mqMessageRequest = new MqMessageRequest();
......@@ -2237,7 +2242,7 @@ public class OrderServiceImpl implements Orderservice {
String orderWarnTime = storeResponseDto.getOrderWarnTime();
//创建普通订单
Function<Object, CreateOrderResponse> createOrder = (var -> {
BaseCreateOrderRequest baseCreateOrderRequest = orderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto,orderWarnTime);
BaseCreateOrderRequest baseCreateOrderRequest = orderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto,storeResponseDto);
//查询第三方商品编号
baseCreateOrderRequest = getProductCustomerCode(baseCreateOrderRequest);
//保存门店渠道信息
......@@ -2254,7 +2259,7 @@ public class OrderServiceImpl implements Orderservice {
});
//创建父子订单
Function<Object, CreateFatherSonOrderResponse> createFatherSonOrder = (var -> {
CreateFatherSonOrderRequest createFatherSonOrderRequest = orderAdapter.convertFatherSonOrderRequest(createOrderVo, shoppingCartGoodsDto, orderExtendedReq,orderWarnTime);
CreateFatherSonOrderRequest createFatherSonOrderRequest = orderAdapter.convertFatherSonOrderRequest(createOrderVo, shoppingCartGoodsDto, orderExtendedReq,storeResponseDto);
//查询第三方商品编号
createFatherSonOrderRequest = getProductCustomerCodeNew(createFatherSonOrderRequest);
MqMessageRequest mqMessageRequest = new MqMessageRequest();
......
......@@ -35,7 +35,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.1.5.RELEASE</version>
<version>1.2.3.RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
......
package cn.freemud.management.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.DeliveryOrderRequest;
import cn.freemud.management.service.OrderDeliveryService;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
/**
* 创建配送单
......@@ -31,4 +30,12 @@ public class DeliveryOrderController {
, @RequestParam(value = "operator", required = false) String operator) {
return orderDeliveryService.createDelivery(orderCode, operator);
}
@ApiAnnotation(logMessage = "cancelDeliveryOrder")
@ApiOperation(value = "取消配送单", notes = "取消配送单", produces = "application/json")
@PostMapping("/delivery/cancel")
public BaseResponse cancelDeliveryOrder(@Validated @LogParams @RequestBody DeliveryOrderRequest request) {
return orderDeliveryService.cancelDeliveryOrder(request);
}
}
package cn.freemud.management.entities;
import lombok.Data;
/**
* Created by wuping27 on 2020/3/11.
*/
@Data
public class DeliveryOrderRequest {
private String orderCode;
private String operator;
}
......@@ -2,11 +2,16 @@ package cn.freemud.management.service;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.management.entities.DeliveryOrderRequest;
import cn.freemud.management.enums.DeliveryStatus;
import cn.freemud.management.util.CheckException;
import cn.freemud.management.util.CommonResp;
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.response.CreateDeliveryOrderResponseDto;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService;
import com.freemud.application.sdk.api.log.LogThreadLocal;
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;
......@@ -15,6 +20,7 @@ import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.google.common.base.Throwables;
import javafx.util.Pair;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
......@@ -163,7 +169,9 @@ public class OrderDeliveryService {
deliveryOrderRequestDto.setOrderTime(new Date(order.getGmtCreate()));
deliveryOrderRequestDto.setCallbackUrl(deliveryCallBackUrl);
// 预约单预计送到时间
deliveryOrderRequestDto.setExpectTime(new Date(order.getGmtCreate()));
if (order.getGmtExpect() != null && order.getGmtExpect() != 0) {
deliveryOrderRequestDto.setExpectTime(new Date(order.getGmtExpect()));
}
deliveryOrderRequestDto.setIsPre(order.getGmtExpect() != null ? 1 : 0);
List<CreateDeliveryOrderRequestDto.DeliveryProductInfo> productInfos = new ArrayList<>();
order.getProductList().forEach(productList -> {
......@@ -179,4 +187,48 @@ public class OrderDeliveryService {
deliveryOrderRequestDto.setProductInfos(productInfos);
return deliveryOrderRequestDto;
}
/**
* 取消外卖配送单
* @return
*/
public BaseResponse cancelDeliveryOrder(DeliveryOrderRequest request) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.setCode(SUCCESS + "");
QueryOrdersResponse.DataBean.OrderBean data = orderBaseService.getByOrderCode(request.getOrderCode());
if (null == data) {
baseResponse.setCode("101");
baseResponse.setMessage("订单不存在");
return baseResponse;
}
if (data.getType() == 1 && data.getAddInfo() != null && ObjectUtils.equals(data.getAddInfo().getDeliveryType(), "third")) {
Integer deliverStatus = data.getAddInfo().getDeliverStatus();
//运单异常或取消时,无需作废三方配送运单
if (ObjectUtils.equals(DeliveryStatus.DELIVERYERROR.getCode(), deliverStatus)
|| ObjectUtils.equals(DeliveryStatus.DELIVERYCANCEL.getCode(), deliverStatus)
|| ObjectUtils.equals(DeliveryStatus.DELIVERYARRIVED.getCode(), deliverStatus)) {
return baseResponse;
}
//运单状态非待接单或系统接单时,不能取消运单
if (ObjectUtils.equals(DeliveryStatus.RIDERSTARTDELIVERY.getCode(), deliverStatus)) {
baseResponse.setCode("101");
baseResponse.setMessage("配送单不能取消");
return baseResponse;
}
CancelDeliveryOrderRequestDto cancelDeliveryOrderRequestDto = new CancelDeliveryOrderRequestDto();
cancelDeliveryOrderRequestDto.setDeliveryId(data.getAddInfo().getDeliveryId());
cancelDeliveryOrderRequestDto.setOrderCancelCode(4);
//商家退款取消配送
cancelDeliveryOrderRequestDto.setOrderCancelDescription("顾客取消订单");
DeliveryResponseDto deliveryResponse = deliveryService.deliveryOrderCancel(cancelDeliveryOrderRequestDto, LogThreadLocal.getTrackingNo());
if (deliveryResponse == null || SUCCESS != deliveryResponse.getCode()) {
baseResponse.setCode("101");
baseResponse.setMessage("取消配送单异常,不能操作");
return baseResponse;
}
}
return baseResponse;
}
}
......@@ -8,7 +8,7 @@
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<version>1.1.6.RELEASE</version>
<version>1.1.8.RELEASE</version>
<artifactId>ordercenter-sdk</artifactId>
<dependencies>
......
......@@ -9,4 +9,7 @@
| 1.1.3.RELEASE| 开放平台创建订单 | 姜海波 | 2020-02-24 |
| 1.1.4-SNAPSHOT | 优化活动订单 | 胡超 | 2020-02-10 |
| 1.1.6-SNAPSHOT | OrderExtInfo新增formId | wuping | 2020-02-27 |
| 1.1.6.RELEASE | 升级RELEASE | wuping | 2020-03-04 |
\ No newline at end of file
| 1.1.6.RELEASE | 升级RELEASE | wuping | 2020-03-04 |
| 1.1.7-SNAPSHOT | 预约单支付成功接口增加预约任务 | wuping | 2020-03-10 |
| 1.1.8-SNAPSHOT | 预约单接单接口增加预约任务 | wuping | 2020-03-17 |
| 1.1.8.RELEASE | 预约单升级RELEASE | wuping | 2020-03-18 |
\ No newline at end of file
......@@ -12,6 +12,7 @@
*/
package com.freemud.application.sdk.api.ordercenter.request;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import lombok.Data;
@Data
......@@ -24,4 +25,7 @@ public class POSOrderOperationBaseReq {
//从接单、制作完成、送出开始计时,超时的时间(单位:分钟)
private Integer timeout;
//预约单任务(处理提醒时拉单的)接单接口时传
private OrderTaskReq orderTask;
}
......@@ -13,6 +13,7 @@
package com.freemud.application.sdk.api.ordercenter.request;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderSettlementCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import lombok.Data;
import java.util.List;
......@@ -48,4 +49,7 @@ public class PaySuccessReq {
//操作人
private String operator;
//预订单任务
private OrderTaskReq orderTask;
}
......@@ -24,6 +24,10 @@ public class OrderTaskReq {
private String taskTime;
//任务类型:1预约单 (OrderType设置为2预约堂食,4预约外送,6预约自取 默认为预约单)
//2 超时回调
//3 拉单队列
private Integer taskType;
private Integer timeout;
}
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