Commit 6983d0d5 by huiyang.chen

macafe 订单查询

parent 4e2cad1a
...@@ -105,6 +105,10 @@ public class OrderAdapter { ...@@ -105,6 +105,10 @@ public class OrderAdapter {
private String backOrdersChangeOrderStatusConsumerQueue; private String backOrdersChangeOrderStatusConsumerQueue;
@Value("${program.backorders_notify_activity_exchange}") @Value("${program.backorders_notify_activity_exchange}")
private String backOrdersNotifyActivityExchange; private String backOrdersNotifyActivityExchange;
@Value("${macafe.waimai.tag}")
private String maCafeWaimaiTag;
@Value("${macafe.pick.tag}")
private String maCafePickTag;
@Autowired @Autowired
private ShoppingCartAdapter shoppingCartAdapter; private ShoppingCartAdapter shoppingCartAdapter;
@Autowired @Autowired
...@@ -791,6 +795,9 @@ public class OrderAdapter { ...@@ -791,6 +795,9 @@ public class OrderAdapter {
if (QueryOrderStatus.NO_PAY.getCode().equals(queryOrderDto.getQueryOrderStatus())) { if (QueryOrderStatus.NO_PAY.getCode().equals(queryOrderDto.getQueryOrderStatus())) {
queryOrdersDto.setPayStatus(new Integer[]{PayStatus.NOT_PAY.getCode()}); queryOrdersDto.setPayStatus(new Integer[]{PayStatus.NOT_PAY.getCode()});
} }
if (QueryOrderStatus.ORDER_CANCEL.getCode().equals(queryOrderDto.getQueryOrderStatus())) {
queryOrdersDto.setStatus(new Integer[]{OrderStatus.CALCEL.getCode()});
}
} }
// 兼容历史版本,如果传参是4 查询拆程4和5 // 兼容历史版本,如果传参是4 查询拆程4和5
...@@ -892,6 +899,12 @@ public class OrderAdapter { ...@@ -892,6 +899,12 @@ public class OrderAdapter {
responseVo.setTakeOut(0); responseVo.setTakeOut(0);
responseVo.setTakeOutDesc(""); responseVo.setTakeOutDesc("");
} }
//配置麦咖啡文案
if (OrderType.TAKE_OUT.getCode().equals(ordersBean.getType())){
responseVo.setMcCafeOrderTag(maCafeWaimaiTag);
}else {
responseVo.setMcCafeOrderTag(maCafePickTag);
}
responseVo.setTableNumber(ordersBean.getBarCounter()); responseVo.setTableNumber(ordersBean.getBarCounter());
responseVo.setPayStatus(ordersBean.getPayStatus()); responseVo.setPayStatus(ordersBean.getPayStatus());
responseVo.setPayStatusDesc(Optional.ofNullable(PayStatus.getByCode(ordersBean.getPayStatus())) responseVo.setPayStatusDesc(Optional.ofNullable(PayStatus.getByCode(ordersBean.getPayStatus()))
......
...@@ -15,17 +15,15 @@ package cn.freemud.controller; ...@@ -15,17 +15,15 @@ package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.encircle.CreateReserveOrderVo; import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.entities.vo.encircle.EmptyTableNumberVo;
import cn.freemud.entities.vo.encircle.EncircleReserveBaseVo; import cn.freemud.entities.vo.encircle.EncircleReserveBaseVo;
import cn.freemud.monitorcenter.tools.HealthUtil; import cn.freemud.monitorcenter.tools.HealthUtil;
import cn.freemud.service.EncircleOrderService; import cn.freemud.service.EncircleOrderService;
import cn.freemud.service.OrderAdapterService; import cn.freemud.service.OrderAdapterService;
import cn.freemud.service.Orderservice; import cn.freemud.service.Orderservice;
import cn.freemud.utils.ResponseUtil;
import cn.freemud.service.impl.MallOrderServiceImpl; import cn.freemud.service.impl.MallOrderServiceImpl;
import cn.freemud.utils.ResponseUtil;
import com.freemud.application.sdk.api.log.ApiAnnotation; import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams; import com.freemud.application.sdk.api.log.LogParams;
import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -130,6 +128,15 @@ public class OrderController { ...@@ -130,6 +128,15 @@ public class OrderController {
} }
/** /**
* 查询麦咖啡订单列表
*/
@ApiAnnotation(logMessage = "maCafeQueryOrders")
@PostMapping("/maCafeQueryOrders")
public BaseResponse maCafeQueryOrders(@Validated @LogParams @RequestBody QueryOrderVo queryOrderVo) {
return orderservice.queryOrders(queryOrderVo);
}
/**
* 围餐-预览订单 * 围餐-预览订单
* @param queryOrderVo * @param queryOrderVo
* @return * @return
...@@ -172,6 +179,16 @@ public class OrderController { ...@@ -172,6 +179,16 @@ public class OrderController {
return orderservice.queryOrderById(queryOrderVo.getOperation(),queryOrderVo.getSessionId(), queryOrderVo.getOid(),queryOrderVo.getPartnerId(),queryOrderVo.getChannelType()); return orderservice.queryOrderById(queryOrderVo.getOperation(),queryOrderVo.getSessionId(), queryOrderVo.getOid(),queryOrderVo.getPartnerId(),queryOrderVo.getChannelType());
} }
/**
* 麦咖啡 获取订单详情
*/
@ApiAnnotation(logMessage = "mcCafeQueryOrderById")
@PostMapping("/mcCafeQueryOrderById")
public BaseResponse mcCafeQueryOrderById(@Validated @LogParams @RequestBody MaCafeQueryOrderVo queryOrderVo) {
return orderservice.mcCafeQueryOrderById(queryOrderVo);
}
/** /**
* 取消支付删除订单 * 取消支付删除订单
*/ */
......
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: QueryOrderVo
* @Package cn.freemud.entities.vo
* @Description:
* @author: liming.guo
* @date: 2018/5/22 17:35
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.entities.vo;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
@Data
public class MaCafeQueryOrderVo {
@NotEmpty(message = "sessionId 不能为空")
private String sessionId;
/**
* 商户ID
*/
private String partnerId;
/**
* 订单ID
*/
private String oid;
/**
* 订单状态 enum queryOrderStatus 全部订单 1 待取餐 2 已完成 3 全部 4.退款,5 待支付 ,6 已取消
*/
private Integer queryOrderStatus;
/**
* 查询订单状态 1 外卖 4 门店自提
*/
private Integer queryOrderType;
/**
* 每页显示几条数据
*/
private Integer pageSize;
/**
* 第几页
*/
private Integer pageNumber;
private String startDate;
private String endDate;
/**
* 渠道信息 saas; img; iwc; saasmall
*/
private String channelType;
}
...@@ -205,6 +205,10 @@ public class QueryOrderResponseVo { ...@@ -205,6 +205,10 @@ public class QueryOrderResponseVo {
* 退款文案提示 若48小时后商家未处理,自动同意/拒绝退款 * 退款文案提示 若48小时后商家未处理,自动同意/拒绝退款
*/ */
private String refundTips; private String refundTips;
/*
* 麦咖啡 外卖单或者自提单文案提示
*/
private String mcCafeOrderTag;
/** /**
* 退款单 * 退款单
*/ */
......
...@@ -34,7 +34,7 @@ public class QueryOrderVo { ...@@ -34,7 +34,7 @@ public class QueryOrderVo {
*/ */
private String oid; private String oid;
/** /**
* 订单状态 enum queryOrderStatus 全部订单 1 待取餐 2 已完成 3 全部 4.退款,5 待支付 * 订单状态 enum queryOrderStatus 全部订单 1 待取餐 2 已完成 3 全部 4.退款,5 待支付 ,6 已取消
*/ */
private Integer queryOrderStatus; private Integer queryOrderStatus;
/** /**
......
...@@ -19,7 +19,8 @@ public enum QueryOrderStatus { ...@@ -19,7 +19,8 @@ public enum QueryOrderStatus {
FINISH(2, "已完成"), FINISH(2, "已完成"),
ALL_BILL(3, "全部"), ALL_BILL(3, "全部"),
REFUND_BILL(4, "退款"), REFUND_BILL(4, "退款"),
NO_PAY(5, "待支付"); NO_PAY(5, "待支付"),
ORDER_CANCEL(6, "已取消");
private Integer code; private Integer code;
......
...@@ -186,6 +186,10 @@ public enum ResponseResult { ...@@ -186,6 +186,10 @@ public enum ResponseResult {
*/ */
DELIVERY_QUERY_ERROR("50024","查询配送单失败"), DELIVERY_QUERY_ERROR("50024","查询配送单失败"),
DELIVERY_CANCEL_ORDER_ERROR("53012", "取消配送单失败"), DELIVERY_CANCEL_ORDER_ERROR("53012", "取消配送单失败"),
DELIVERY_REMINDER_ORDER_ERROR("53013", "订单状态不是配送中,不能催单"),
DELIVERY_QUERY_RIDER_STATUS_ERROR("53014", "订单状态不是配送中,不能查询骑手位置"),
DELIVERY_REMINDER_ERROR("53015","催单失败"),
DELIVERY_QUERY_RIDER_ERROR("53016","查询骑手位置失败"),
/** /**
* 配送信息 * 配送信息
...@@ -193,8 +197,6 @@ public enum ResponseResult { ...@@ -193,8 +197,6 @@ public enum ResponseResult {
DELIVERY_INFO_NOT_DELIVERY("60001", "当前地址不可配送"), DELIVERY_INFO_NOT_DELIVERY("60001", "当前地址不可配送"),
DELIVERY_INFO_ERROR("60002","配送地址不正确"), DELIVERY_INFO_ERROR("60002","配送地址不正确"),
DELIVERY_CREATE_ERROR("60003","运单不足,配送失败"), DELIVERY_CREATE_ERROR("60003","运单不足,配送失败"),
DELIVERY_REMINDER_ERROR("60004","催单失败"),
DELIVERY_QUERY_RIDER_ERROR("60005","查询骑手位置失败"),
; ;
......
...@@ -120,4 +120,7 @@ public interface Orderservice { ...@@ -120,4 +120,7 @@ public interface Orderservice {
BaseResponse reminder(ReminderVo reminderVo); BaseResponse reminder(ReminderVo reminderVo);
BaseResponse listFreeRider(FreeRiderPositionVo vo); BaseResponse listFreeRider(FreeRiderPositionVo vo);
BaseResponse mcCafeQueryOrderById(MaCafeQueryOrderVo queryOrderVo);
} }
...@@ -172,6 +172,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -172,6 +172,7 @@ public class OrderServiceImpl implements Orderservice {
@Value("${mq.cloud_print_exchange}") @Value("${mq.cloud_print_exchange}")
private String cloud_print_exchange; private String cloud_print_exchange;
@Autowired @Autowired
private AssortmentCloudPrinterManager cloudPrinterManager; private AssortmentCloudPrinterManager cloudPrinterManager;
// @Autowired // @Autowired
...@@ -1012,6 +1013,98 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1012,6 +1013,98 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success(queryOrderResponseVo); return ResponseUtil.success(queryOrderResponseVo);
} }
/**
* 麦咖啡查询订单详情
*
* @param queryOrderVo
* @return
*/
@Override
public BaseResponse mcCafeQueryOrderById(MaCafeQueryOrderVo queryOrderVo) {
AssortmentCustomerInfoVo userInfo = customerInfoManager.getCustomerInfoByObject(queryOrderVo.getSessionId());
if (userInfo == null || StringUtils.isEmpty(userInfo.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
String oid =queryOrderVo.getOid();
if (StringUtils.isBlank(oid)) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "oid不能为空");
}
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(oid);
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if (!RESPONSE_SUCCESS_CODE.equals(response.getErrcode()) || response.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
String storeId = orderBean.getShopId();
StoreInfoRequest request = new StoreInfoRequest();
request.setPartnerId(queryOrderVo.getPartnerId());
request.setStoreCode(storeId);
StoreResponse storeInfo = storeCenterService.getStoreInfo(request, LogTreadLocal.getTrackingNo());
if (storeInfo != null && storeInfo.getBizVO() != null) {
StoreResponse.BizVO storeResponseDto = storeInfo.getBizVO();
orderBean.setShopAddress(storeResponseDto.getAddress());
orderBean.setShopPhone(storeResponseDto.getPhone());
orderBean.setShopImageUrl(storeResponseDto.getLogoUrl());
//默认骑手头像显示为门店首页图片
orderBean.setRiderPhoto(storeResponseDto.getLogoUrl());
orderBean.setShopPhone(storeResponseDto.getPhone());
orderBean.setLatitude(Double.valueOf(storeResponseDto.getLatitude()));
orderBean.setLongitude(Double.valueOf(storeResponseDto.getLongitude()));
}
BaseQueryOrderRequest var1 = new BaseQueryOrderRequest();
var1.setOrderId(orderBean.getOid());
var1.setTrackingNo(LogTreadLocal.getTrackingNo());
BaseOrderResponse baseOrderResponse = orderCenterSdkService.queryOrderQueueIndex(var1);
QueryOrderQueueIndexResponse response1 = new QueryOrderQueueIndexResponse();
response1.setErrcode(baseOrderResponse.getErrcode());
response1.setErrmsg(baseOrderResponse.getErrmsg());
if (RESPONSE_SUCCESS_CODE.equals(response1.getErrcode())) {
String queueIndex = response1.getData() == null ? "" : response1.getData().toString();
orderBean.setQueueIndex(queueIndex);
}
// 获取订单运单号,如果有运单则是第三方外卖单
if (orderBean.getAddInfo() != null && StringUtils.isNotEmpty(orderBean.getAddInfo().getDeliveryId())) {
hasThirdDelivery(orderBean);
}
// 查询订单的操作状态
OrderStatusTrackingInfoResponse statusTrackingInfoByOid = orderCenterSdkService.getOrderStatusTrackingInfoByOid(var1);
String string2 = JSONObject.toJSONString(statusTrackingInfoByOid);
JSONObject jsonObject2 = JSONObject.parseObject(string2);
OrderStatusTrackingInfoDto orderStatusTrackingInfoByOid = jsonObject2.toJavaObject(OrderStatusTrackingInfoDto.class);
if (RESPONSE_SUCCESS_CODE.equals(orderStatusTrackingInfoByOid.getErrcode())) {
orderStatusTracking(orderBean, orderStatusTrackingInfoByOid);
}
List<QueryOrderResponseVo> queryOrderResponseVos = orderAdapter.convent2QueryOrderResponseVos(Collections.singletonList(orderBean), userInfo.getWxAppId(), userInfo.getIappId());
if (CollectionUtils.isEmpty(queryOrderResponseVos)) {
throw new ServiceException(ResponseResult.ORDER_QUERYORDER_ERROR);
}
QueryOrderResponseVo queryOrderResponseVo = queryOrderResponseVos.get(0);
/*if (queryOrderResponseVo.getTakeMealType() == 1) {
//麦咖啡预单重新封装取餐时间
queryOrderResponseVo.setTakeMealTime();
}*/
//48小时自动退款描述
if (storeInfo != null && storeInfo.getBizVO() != null && storeInfo.getBizVO().getStoreConfig()!= null
&& queryOrderResponseVo.getRefundStatus() != null && queryOrderResponseVo.getRefundStatus() == 1) {
Integer automaticRefund = storeInfo.getBizVO().getStoreConfig().getAutomaticRefund();
if(automaticRefund != null && automaticRefund == 1){
queryOrderResponseVo.setRefundTips("若48小时后商家未处理,自动同意");
}else {
queryOrderResponseVo.setRefundTips("若48小时后商家未处理,拒绝退款");
}
}
return ResponseUtil.success(queryOrderResponseVo);
}
/** /**
* 如果有第三方配送,返回值添加第三方配送信息 * 如果有第三方配送,返回值添加第三方配送信息
*/ */
...@@ -2483,6 +2576,19 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2483,6 +2576,19 @@ public class OrderServiceImpl implements Orderservice {
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) { if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN); return ResponseUtil.error(ResponseResult.NOT_LOGIN);
} }
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(reminderVo.getOid());
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if (!RESPONSE_SUCCESS_CODE.equals(response.getErrcode()) || response.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
//判断订单状态
if (!cn.freemud.management.enums.OrderStatus.DISTRIBUTION.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.DELIVERY_REMINDER_ORDER_ERROR);
}
//调用配送服务进行催单 //调用配送服务进行催单
OrderRemindRequestDto dto =new OrderRemindRequestDto(); OrderRemindRequestDto dto =new OrderRemindRequestDto();
dto.setOrderKey(reminderVo.getOid()); dto.setOrderKey(reminderVo.getOid());
...@@ -2505,11 +2611,23 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2505,11 +2611,23 @@ public class OrderServiceImpl implements Orderservice {
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) { if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN); return ResponseUtil.error(ResponseResult.NOT_LOGIN);
} }
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(vo.getOid());
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if (!RESPONSE_SUCCESS_CODE.equals(response.getErrcode()) || response.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
//判断订单状态
if (!cn.freemud.management.enums.OrderStatus.DISTRIBUTION.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.DELIVERY_QUERY_RIDER_STATUS_ERROR);
}
QueryLocusRiderTrackDto dto =new QueryLocusRiderTrackDto(); QueryLocusRiderTrackDto dto =new QueryLocusRiderTrackDto();
dto.setDeliveryChannel("CanDao"); dto.setDeliveryChannel("CanDao");
dto.setOrderId(vo.getOid()); dto.setOrderId(vo.getOid());
BaseResponse<ResRiderTrackDto> response = deliveryFeiginClient.listFreeRider(dto); BaseResponse<ResRiderTrackDto> responses = deliveryFeiginClient.listFreeRider(dto);
if(response == null || RESPONSE_SUCCESS_CODE != Integer.valueOf(response.getCode()) || response.getResult() ==null ) { if(responses == null || RESPONSE_SUCCESS_CODE != Integer.valueOf(responses.getCode()) || responses.getResult() ==null ) {
return ResponseUtil.error(ResponseResult.DELIVERY_QUERY_RIDER_ERROR); return ResponseUtil.error(ResponseResult.DELIVERY_QUERY_RIDER_ERROR);
} }
return ResponseUtil.success(); return ResponseUtil.success();
......
package cn.freemud.utils;
import java.util.Calendar;
import java.util.Date;
public class DateUtils {
/**
* 对传入的时间翻译星期
* @param date
* @return
*/
public String getDayWeek(Date date){
if (date == null ){
return null;
}
String[] week={"周一","周二","周三","周四","周五","周六","周日"};
Calendar calendar =Calendar.getInstance();
calendar.setTime(date);
int w = calendar.get(Calendar.DAY_OF_WEEK) -1 ;
if (w < 0 ){
w =0;
}
return week[w];
}
}
...@@ -13,7 +13,7 @@ import java.util.List; ...@@ -13,7 +13,7 @@ import java.util.List;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class MCCafeConponRequest { public class MCCafeCouponRequest {
/** /**
* 接口版本 * 接口版本
*/ */
......
package cn.freemud.management.entities.dto.request.delivery;
import lombok.Data;
@Data
public class DeliveryOrderHaltedRequest {
//订单原因
private String haltedReason;
//订单ID
private String orderKey;
//ECP通用门店
private String storeId;
}
...@@ -24,7 +24,7 @@ public interface OrderManagerService { ...@@ -24,7 +24,7 @@ public interface OrderManagerService {
* @param orderBean 订单实体 * @param orderBean 订单实体
* @return * @return
*/ */
BaseResponse<OrderManagerResponse> mcCafeOrderConfirm(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean); BaseResponse mcCafeOrderConfirm(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean);
/** /**
* 制作完成 * 制作完成
...@@ -64,7 +64,7 @@ public interface OrderManagerService { ...@@ -64,7 +64,7 @@ public interface OrderManagerService {
* @param orderBean * @param orderBean
* @return * @return
*/ */
BaseResponse<OrderManagerResponse> mcCafeOrderReject(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean); BaseResponse mcCafeOrderReject(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean);
/** /**
* 同意退款 * 同意退款
......
package cn.freemud.management.service.handle;
import cn.freemud.management.adapter.McCafeCouponAdapter;
import cn.freemud.management.entities.dto.request.coupon.MCCafeCouponLockRequest;
import cn.freemud.management.entities.dto.request.coupon.MCCafeCouponRequest;
import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@Slf4j
public class CouponHandle {
public final static Integer RESPONSE_SUCCESS = 100;
@Autowired
private McCafeCouponAdapter mcCafeCouponAdapter;
@Autowired
private CouponOfflineMCCafeClient couponOfflineMCCafeClient;
/**
* 异步核销券码
* @param orderBean
*/
@Async("couponExecutor")
public void asyncVerificationCoupon(QueryOrdersResponse.DataBean.OrderBean orderBean){
List<MCCafeCouponRequest> list = mcCafeCouponAdapter.convertOrderBean2CouponLockRequest(orderBean);
if (CollectionUtils.isNotEmpty(list)) {
for (MCCafeCouponRequest mcCafeCouponRequest: list) {
//重试3次
for (int i = 2; i >= 0; i--) {
CouponRedeemResponse redeem = couponOfflineMCCafeClient.redeem(mcCafeCouponRequest);
if (RESPONSE_SUCCESS.equals(redeem.getStatusCode())) {
break;
}
if (i == 0 && !RESPONSE_SUCCESS.equals(redeem.getStatusCode())) {
log.error("核销券码异常,入参{},出参:{}", JSONObject.toJSONString(mcCafeCouponRequest), JSONObject.toJSON(redeem));
}
}
}
}
}
/**
* 解锁券码
* @param orderBean
*/
public void unlock(QueryOrdersResponse.DataBean.OrderBean orderBean){
List<MCCafeCouponLockRequest> list = mcCafeCouponAdapter.convertOrderBean2UnlockCoupon(orderBean);
if (CollectionUtils.isNotEmpty(list)) {
for (MCCafeCouponLockRequest mcCafeCouponLockRequest: list) {
//重试3次
for (int i = 2; i >= 0; i--) {
CouponBaseResponse response = couponOfflineMCCafeClient.unlock(mcCafeCouponLockRequest);
if (RESPONSE_SUCCESS.equals(response.getStatusCode())) {
break;
}
if (i == 0 && !RESPONSE_SUCCESS.equals(response.getStatusCode())) {
log.error("解锁券码异常,入参{},出参:{}", JSONObject.toJSONString(mcCafeCouponLockRequest), JSONObject.toJSON(response));
}
}
}
}
}
}
...@@ -3,13 +3,16 @@ package cn.freemud.management.service.handle; ...@@ -3,13 +3,16 @@ package cn.freemud.management.service.handle;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal; import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.management.adapter.DeliverySdkAdapter; import cn.freemud.management.adapter.DeliverySdkAdapter;
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;
import cn.freemud.management.enums.ResponseResult; import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.DeliveryServiceException; import cn.freemud.management.intercept.DeliveryServiceException;
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.thirdparty.DeliveryMCCafeClient;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
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;
...@@ -56,6 +59,8 @@ public class DeliveryHandle { ...@@ -56,6 +59,8 @@ public class DeliveryHandle {
private DeliverySdkAdapter deliverySdkAdapter; private DeliverySdkAdapter deliverySdkAdapter;
@Autowired @Autowired
private OrderBaseService orderBaseService; private OrderBaseService orderBaseService;
@Autowired
private DeliveryMCCafeClient deliveryMCCafeClient;
/** /**
...@@ -121,6 +126,28 @@ public class DeliveryHandle { ...@@ -121,6 +126,28 @@ public class DeliveryHandle {
return ResponseUtil.success(); return ResponseUtil.success();
} }
/**
* 配送停单
*
* @param data
* @return
*/
public BaseResponse haltedDelivery(QueryOrdersResponse.DataBean.OrderBean data) {
if (data.getType() == 1 && data.getAddInfo() != null && ObjectUtils.equals(data.getAddInfo().getDeliveryType(), THIRD)) {
DeliveryOrderHaltedRequest deliveryOrderHaltedRequest =new DeliveryOrderHaltedRequest();
deliveryOrderHaltedRequest.setHaltedReason("foe入机失败");
deliveryOrderHaltedRequest.setOrderKey(data.getOid());
deliveryOrderHaltedRequest.setStoreId(data.getShopId());
DeliveryResponseDto deliveryResponse = deliveryMCCafeClient.halted(deliveryOrderHaltedRequest);
if (deliveryResponse == null || !StringUtils.equals(ResponseResult.SUCCESS.getCode(), deliveryResponse.getCode()+"")) {
return ResponseUtil.error(ResponseResult.DELIVERY_CANCEL_ORDER_ERROR);
}
}
return ResponseUtil.success();
}
/** /**
* 校验是否要创建配送单 * 校验是否要创建配送单
......
...@@ -2,7 +2,7 @@ package cn.freemud.management.service.impl; ...@@ -2,7 +2,7 @@ package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.adapter.McCafeCouponAdapter; import cn.freemud.management.adapter.McCafeCouponAdapter;
import cn.freemud.management.entities.dto.request.coupon.MCCafeConponRequest; import cn.freemud.management.entities.dto.request.coupon.MCCafeCouponLockRequest;
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;
...@@ -12,13 +12,9 @@ import cn.freemud.management.enums.ResponseResult; ...@@ -12,13 +12,9 @@ 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.DeliveryHandle; import cn.freemud.management.service.handle.*;
import cn.freemud.management.service.handle.PaymentHandle;
import cn.freemud.management.service.handle.SaasOrderHandle;
import cn.freemud.management.service.handle.StockHandle;
import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient; import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; 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.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
...@@ -26,7 +22,6 @@ import com.freemud.sdk.api.assortment.message.enums.OrderType; ...@@ -26,7 +22,6 @@ import com.freemud.sdk.api.assortment.message.enums.OrderType;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Objects; import java.util.Objects;
...@@ -46,8 +41,6 @@ import java.util.Objects; ...@@ -46,8 +41,6 @@ import java.util.Objects;
@Service @Service
public class SaasOrderMangerServiceImpl implements OrderManagerService { public class SaasOrderMangerServiceImpl implements OrderManagerService {
public final static Integer RESPONSE_SUCCESS = 100;
@Autowired @Autowired
private SaasOrderHandle saasOrderHandle; private SaasOrderHandle saasOrderHandle;
@Autowired @Autowired
...@@ -64,6 +57,8 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -64,6 +57,8 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
private CouponOfflineMCCafeClient couponOfflineMCCafeClient; private CouponOfflineMCCafeClient couponOfflineMCCafeClient;
@Autowired @Autowired
private McCafeCouponAdapter mcCafeCouponAdapter; private McCafeCouponAdapter mcCafeCouponAdapter;
@Autowired
private CouponHandle couponHandle;
/** /**
...@@ -95,34 +90,17 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -95,34 +90,17 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
* @return * @return
*/ */
@Override @Override
public BaseResponse<OrderManagerResponse> mcCafeOrderConfirm(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) { public BaseResponse mcCafeOrderConfirm(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
// 订单接单 // 订单接单
saasOrderHandle.orderConfirm(request, orderBean); saasOrderHandle.orderConfirm(request, orderBean);
//获取门店信息 //支付成功已经 创建配送单
StoreResponse storeInfo = storeCenterService.getStoreInfo(new StoreInfoRequest(orderBean.getCompanyId(), orderBean.getShopId()), "");
// 创建配送单
deliveryHandle.createDelivery(orderBean, request, storeInfo);
if (!Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) { if (!Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) {
// 异步核销券码 // 异步核销券码
asyncVerificationCoupon(orderBean); couponHandle.asyncVerificationCoupon(orderBean);
} }
return ResponseUtil.success(); return ResponseUtil.success();
} }
/**
* 异步核销券码
* @param orderBean
*/
@Async("couponExecutor")
public void asyncVerificationCoupon(QueryOrdersResponse.DataBean.OrderBean orderBean){
MCCafeConponRequest mcCafeConponRequest = mcCafeCouponAdapter.convertOrderBean2CouponLockRequest(orderBean);
CouponRedeemResponse redeem = couponOfflineMCCafeClient.redeem(mcCafeConponRequest);
if(!RESPONSE_SUCCESS.equals(redeem.getStatusCode())) {
//todo 失败重试
}
}
/** /**
...@@ -207,14 +185,14 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -207,14 +185,14 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
* @return * @return
*/ */
@Override @Override
public BaseResponse<OrderManagerResponse> mcCafeOrderReject(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) { public BaseResponse mcCafeOrderReject(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//根据是否是外卖单来判断 //根据是否是外卖单来判断
if (Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) { if (Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) {
// 订单接单 // 订单接单
BaseResponse<OrderManagerResponse> orderManagerResponseBaseResponse = mcCafeOrderConfirm(request, orderBean); BaseResponse<OrderManagerResponse> orderManagerResponseBaseResponse = mcCafeOrderConfirm(request, orderBean);
if (ResponseResult.SUCCESS.equals(orderManagerResponseBaseResponse.getCode())){ if (ResponseResult.SUCCESS.equals(orderManagerResponseBaseResponse.getCode())){
//todo 通知配送服务停单 //通知配送服务停单
deliveryHandle.haltedDelivery(orderBean);
} }
}else { }else {
...@@ -225,7 +203,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -225,7 +203,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
//冲正库存 //冲正库存
stockHandle.revert(request, orderBean); stockHandle.revert(request, orderBean);
// 券码解冻 // 券码解冻
couponOfflineMCCafeClient.unlock(null); couponHandle.unlock(orderBean);
} }
return ResponseUtil.success(); return ResponseUtil.success();
} }
......
...@@ -55,6 +55,11 @@ public class WaimaiOrderMangerServiceImpl implements OrderManagerService { ...@@ -55,6 +55,11 @@ public class WaimaiOrderMangerServiceImpl implements OrderManagerService {
return ResponseUtil.success(); return ResponseUtil.success();
} }
@Override
public BaseResponse mcCafeOrderConfirm(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
return null;
}
/** /**
* 制作完成 * 制作完成
* *
...@@ -118,6 +123,11 @@ public class WaimaiOrderMangerServiceImpl implements OrderManagerService { ...@@ -118,6 +123,11 @@ public class WaimaiOrderMangerServiceImpl implements OrderManagerService {
return ResponseUtil.success(); return ResponseUtil.success();
} }
@Override
public BaseResponse mcCafeOrderReject(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
return null;
}
/** /**
* 同意退款 * 同意退款
* *
......
package cn.freemud.management.thirdparty; package cn.freemud.management.thirdparty;
import cn.freemud.management.entities.dto.request.coupon.MCCafeConponRequest;
import cn.freemud.management.entities.dto.request.coupon.MCCafeCouponLockRequest; import cn.freemud.management.entities.dto.request.coupon.MCCafeCouponLockRequest;
import cn.freemud.management.entities.dto.request.coupon.MCCafeCouponRequest;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
...@@ -15,13 +15,13 @@ public interface CouponOfflineMCCafeClient { ...@@ -15,13 +15,13 @@ public interface CouponOfflineMCCafeClient {
// 核销优惠券 // 核销优惠券
@PostMapping("/mccafe/redeem") @PostMapping("/mccafe/redeem")
CouponRedeemResponse redeem(MCCafeConponRequest mcCafeConponRequest); CouponRedeemResponse redeem(MCCafeCouponRequest mcCafeConponRequest);
@PostMapping("/mccafe/cancelRedeem") @PostMapping("/mccafe/cancelRedeem")
CouponRedeemResponse cancelRedeem(MCCafeConponRequest mcCafeConponRequest); CouponRedeemResponse cancelRedeem(MCCafeCouponRequest mcCafeConponRequest);
@PostMapping("/mccafe/query") @PostMapping("/mccafe/query")
CouponQueryResponse query(MCCafeConponRequest mcCafeConponRequest); CouponQueryResponse query(MCCafeCouponRequest mcCafeConponRequest);
// 优惠券锁定 // 优惠券锁定
@PostMapping("/mccafe/lock") @PostMapping("/mccafe/lock")
......
package cn.freemud.management.thirdparty;
import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderHaltedRequest;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "Delivery_maCafe",url="XXXX")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface DeliveryMCCafeClient {
// 核销优惠券
@PostMapping("/delivery/halted")
DeliveryResponseDto halted(DeliveryOrderHaltedRequest deliveryOrderHaltedRequest);
}
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