Commit 397d9326 by 徐康

Merge branch 'feature/20210128_xukang_麦咖啡p5v5'

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/service/delivery/ThirdDeliveryServiceImpl.java
parents 5afbf75b ec55ef0a
package cn.freemud.entities.dto.ecology;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Data
@Builder
public class MccafeCompleteOrder {
/**
* 订单金额
*/
private String orderAmount;
/**
* 订单编号
*/
private String orderId;
/**
* 完成时间
*/
private String utcTime;
}
package cn.freemud.entities.dto.ecology;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Data
@Builder
public class MccafeDeliveryOrder {
/**
* 收货地址
*/
private String address;
/**
* 订单编号
*/
private String orderId;
/**
* 商品名称
*/
private String productName;
}
package cn.freemud.entities.dto.ecology;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Data
@Builder
public class MccafePickupFood {
/**
* 餐品详情
*/
private String foodDetail;
/**
* 订单信息
*/
private String orderDetail;
/**
* 订单编号
*/
private String orderId;
/**
* 订单类型
*/
private String orderType;
/**
* 取餐地址
*/
private String pickupAddress;
/**
* 取餐号
*/
private String serialNo;
/**
* 门店地址
*/
private String storeAddress;
/**
* 门店名称
*/
private String storeName;
}
package cn.freemud.entities.dto.ecology;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Data
@Builder
public class MccafeTransactionReminder {
/**
* 交易金额
*/
private String amount;
/**
* 交易商户
*/
private String merchantName;
/**
* 订单编号
*/
private String orderId;
/**
* 交易类型
*/
private String transactionType;
/**
* 交易时间
*/
private String utcTime;
}
...@@ -9,6 +9,7 @@ import java.util.List; ...@@ -9,6 +9,7 @@ import java.util.List;
@Getter @Getter
public class SubscribeMessageRequest { public class SubscribeMessageRequest {
private String orderCode;
/** /**
* 预约单下单成功通知 * 预约单下单成功通知
...@@ -94,6 +95,14 @@ public class SubscribeMessageRequest { ...@@ -94,6 +95,14 @@ public class SubscribeMessageRequest {
private SelfDeliveryOrderPayedScene selfDeliveryOrderPayedScene; private SelfDeliveryOrderPayedScene selfDeliveryOrderPayedScene;
private MccafeCompleteOrder mccafeCompleteOrder;
private MccafeDeliveryOrder mccafeDeliveryOrder;
private MccafePickupFood mccafePickupFood;
private MccafeTransactionReminder mccafeTransactionReminder;
......
...@@ -13,6 +13,14 @@ public enum MessageEventTypeEnum { ...@@ -13,6 +13,14 @@ public enum MessageEventTypeEnum {
INSTANT_ORDER_TAKE_REMINDER(35, "INSTANT_ORDER_TAKE_REMINDER", "即时单取单通知"), INSTANT_ORDER_TAKE_REMINDER(35, "INSTANT_ORDER_TAKE_REMINDER", "即时单取单通知"),
GROUP_BUYING_STATUS_REMINDER(36, "GROUP_BUYING_STATUS_REMINDER", "拼单提醒"), GROUP_BUYING_STATUS_REMINDER(36, "GROUP_BUYING_STATUS_REMINDER", "拼单提醒"),
DELIVERY_ERROR_REMINDER(37, "DELIVERY_ERROR_REMINDER", "配送异常提醒"), DELIVERY_ERROR_REMINDER(37, "DELIVERY_ERROR_REMINDER", "配送异常提醒"),
MCCAFE_PICKUP_FOOD(40, "MCCAFE_PICKUP_FOOD", "麦咖啡取餐提醒"),
MCCAFE_DELIVERY_ORDER(41, "MCCAFE_DELIVERY_ORDER", "麦咖啡订单配送通知"),
MCCAFE_COMPLETE_ORDER(42, "MCCAFE_COMPLETE_ORDER", "麦咖啡订单完成通知"),
MCCAFE_TRANSACTION_REMINDER(43, "MCCAFE_TRANSACTION_REMINDER", "麦咖啡交易提醒"),
; ;
......
package cn.freemud.enums;
public enum MessageSceneEnum {
MCCAFE_PICKUP_FOOD(40, "mccafe_pickup_food"),
MCCAFE_DELIVERY_ORDER(41, "mccafe_delivery_order"),
MCCAFE_COMPLETE_ORDER(42, "mccafe_complete_order"),
MCCAFE_TRANSACTION_REMINDER(43, "mccafe_transaction_reminder"),
;
private Integer index;
private String desc;
MessageSceneEnum(Integer index, String desc) {
this.index = index;
this.desc = desc;
}
public Integer getIndex() {
return index;
}
public void setIndex(Integer index) {
this.index = index;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
...@@ -4,14 +4,12 @@ import cn.freemud.adapter.MessageNoticeAdapter; ...@@ -4,14 +4,12 @@ import cn.freemud.adapter.MessageNoticeAdapter;
import cn.freemud.amp.service.ProduceMQService; import cn.freemud.amp.service.ProduceMQService;
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.base.util.DateUtil;
import cn.freemud.entities.dto.delivery.*; import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.ecology.*; import cn.freemud.entities.dto.ecology.*;
import cn.freemud.entities.dto.pos.PosBaseRequestDto; import cn.freemud.entities.dto.pos.PosBaseRequestDto;
import cn.freemud.entities.vo.delivery.DeliveryAmountVo; import cn.freemud.entities.vo.delivery.DeliveryAmountVo;
import cn.freemud.enums.DeliveryReviewStatus; import cn.freemud.enums.*;
import cn.freemud.enums.DeliveryStatus;
import cn.freemud.enums.OrderStatus;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
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;
...@@ -25,6 +23,7 @@ import cn.freemud.service.thirdparty.PosClient; ...@@ -25,6 +23,7 @@ import cn.freemud.service.thirdparty.PosClient;
import cn.freemud.utils.DateTimeUtil; import cn.freemud.utils.DateTimeUtil;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.freemud.application.sdk.api.constant.ResponseConstant; import com.freemud.application.sdk.api.constant.ResponseConstant;
...@@ -33,6 +32,7 @@ import com.freemud.application.sdk.api.deliverycenter.response.DeliveryInfoDto; ...@@ -33,6 +32,7 @@ import com.freemud.application.sdk.api.deliverycenter.response.DeliveryInfoDto;
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.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType; import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.ordercenter.request.OrderCollectReq; import com.freemud.application.sdk.api.ordercenter.request.OrderCollectReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
...@@ -58,7 +58,9 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -58,7 +58,9 @@ 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.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -98,6 +100,8 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -98,6 +100,8 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
private MessageCenterClient messageNoticeClient; private MessageCenterClient messageNoticeClient;
@Value("${delivery.micro.message.partner}") @Value("${delivery.micro.message.partner}")
private String deliveryMicroMessagePartner; private String deliveryMicroMessagePartner;
@Value("${mccafe.partner.id}")
private String mcCafePartnerId;
@Autowired @Autowired
private EcologyAdminApplicationClient ecologyAdminApplicationClient; private EcologyAdminApplicationClient ecologyAdminApplicationClient;
@Autowired @Autowired
...@@ -225,6 +229,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -225,6 +229,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
if(ResponseConstant.SUCCESS_RESPONSE_CODE_STR.equals(baseResponse.getCode())) { if(ResponseConstant.SUCCESS_RESPONSE_CODE_STR.equals(baseResponse.getCode())) {
updateDeliveryStatus(request); updateDeliveryStatus(request);
} }
sendMcCafeMicroMessage(request.getPartnerId(), request.getOrderId(), request.getDeliveryStatus());
return baseResponse; return baseResponse;
} else if (deliveryStatus == DeliveryStatus.DELIVERYARRIVED.getCode() ){ } else if (deliveryStatus == DeliveryStatus.DELIVERYARRIVED.getCode() ){
orderManagerRequest.setOperateType(OperateType.ORDER_AFFIRM.getOpType()); orderManagerRequest.setOperateType(OperateType.ORDER_AFFIRM.getOpType());
...@@ -232,6 +237,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -232,6 +237,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
if(ResponseConstant.SUCCESS_RESPONSE_CODE_STR.equals(baseResponse.getCode())) { if(ResponseConstant.SUCCESS_RESPONSE_CODE_STR.equals(baseResponse.getCode())) {
updateDeliveryStatus(request); updateDeliveryStatus(request);
} }
sendMcCafeMicroMessage(request.getPartnerId(), request.getOrderId(), request.getDeliveryStatus());
return baseResponse; return baseResponse;
} else if(deliveryStatus == DeliveryStatus.WATINGORDER.getCode() || deliveryStatus == DeliveryStatus.SYSTEMGETORDER.getCode() } else if(deliveryStatus == DeliveryStatus.WATINGORDER.getCode() || deliveryStatus == DeliveryStatus.SYSTEMGETORDER.getCode()
|| deliveryStatus == DeliveryStatus.ALLOTRIDER.getCode()|| deliveryStatus == DeliveryStatus.RIDERARRIVESTORE.getCode()) { || deliveryStatus == DeliveryStatus.ALLOTRIDER.getCode()|| deliveryStatus == DeliveryStatus.RIDERARRIVESTORE.getCode()) {
...@@ -397,6 +403,67 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -397,6 +403,67 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
} }
/** /**
* 麦咖啡配送消息推送
*/
public void sendMcCafeMicroMessage(String partnerId,String orderId,int deliveryStatus) {
if((deliveryStatus != DeliveryStatus.RIDERSTARTDELIVERY.getCode() && deliveryStatus != DeliveryStatus.DELIVERYARRIVED.getCode())
|| !mcCafePartnerId.equals(partnerId)) {
log.info("不发消息", orderId);
return;
}
try {
SubscribeMessageRequest request = new SubscribeMessageRequest();
request.setOrderCode(orderId);
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(orderId);
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if(!ResponseConstant.SUCCESS_RESPONSE_CODE.equals(response.getErrcode())) {
log.error("麦咖啡订阅消息推送失败,查询订单信息失败:"+JSON.toJSONString(response));
}
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
if(OrderClientType.SAAS.getIndex().toString().equals(orderBean.getOrderClient())) {
request.setChannel(1);
} else {
return;
}
OrderExtInfoDto extInfoDto = JSONObject.parseObject(orderBean.getExtInfo(), new TypeReference<OrderExtInfoDto>() {});
request.setMiniAppId(extInfoDto.getAppid());
List<String> userList = new ArrayList<>();
userList.add(extInfoDto.getOpenid());
request.setOpenIdList(userList);
if(deliveryStatus == DeliveryStatus.RIDERSTARTDELIVERY.getCode()) {
request.setMessageEventType(MessageEventTypeEnum.MCCAFE_DELIVERY_ORDER.getType());
request.setScene(MessageSceneEnum.MCCAFE_DELIVERY_ORDER.getDesc());
request.setMccafeDeliveryOrder(MccafeDeliveryOrder
.builder()
.orderId(orderBean.getOid())
.address(orderBean.getAddress().length()>20?orderBean.getAddress().substring(0,17)+"...":orderBean.getAddress())
.build());
} else if(deliveryStatus == DeliveryStatus.DELIVERYARRIVED.getCode()) {
request.setMessageEventType(MessageEventTypeEnum.MCCAFE_COMPLETE_ORDER.getType());
request.setScene(MessageSceneEnum.MCCAFE_COMPLETE_ORDER.getDesc());
request.setMccafeCompleteOrder(MccafeCompleteOrder
.builder()
.orderId(orderBean.getOid())
.orderAmount(new BigDecimal(orderBean.getActualPayAmount()).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP).toString())
.utcTime(cn.freemud.base.util.DateUtil.convert2String(new Date(), "yyyy-MM-dd HH:mm:ss"))
.build());
} else {
return;
}
ecologyAdminApplicationClient.subscribeMessage(request);
}catch (Exception e){
log.error("麦咖啡订阅消息推送失败:"+orderId, e);
}
}
/**
* 配送消息推送 * 配送消息推送
*/ */
public void sendMicroMessage(String partnerId,String orderId,int deliveryStatus){ public void sendMicroMessage(String partnerId,String orderId,int deliveryStatus){
......
...@@ -80,6 +80,13 @@ public class McCafeMangerServiceImpl implements OrderManagerService { ...@@ -80,6 +80,13 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
if (!OrderStatus.TAKE_ORDER.getCode().equals(orderBean.getStatus()) && !OrderStatus.RECEIPT.getCode().equals(orderBean.getStatus())){ if (!OrderStatus.TAKE_ORDER.getCode().equals(orderBean.getStatus()) && !OrderStatus.RECEIPT.getCode().equals(orderBean.getStatus())){
return ResponseUtil.error(ResponseResult.ORDER_STATUS_FAILED); return ResponseUtil.error(ResponseResult.ORDER_STATUS_FAILED);
} }
if (StringUtils.isNotEmpty(request.getPickUpGoodsNo())){
//更新取餐码
BaseResponse baseResponse = saasOrderHandle.updatePickUpGoodNo(request, orderBean);
if (!ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode())){
return ResponseUtil.error(ResponseResult.ORDER_UPDATE_PICKUP_FAILED);
}
}
if (OrderStatus.TAKE_ORDER.getCode().equals(orderBean.getStatus())) { if (OrderStatus.TAKE_ORDER.getCode().equals(orderBean.getStatus())) {
// 订单接单 // 订单接单
saasOrderHandle.orderConfirm(orderManagerRequest, orderBean); saasOrderHandle.orderConfirm(orderManagerRequest, orderBean);
...@@ -89,11 +96,6 @@ public class McCafeMangerServiceImpl implements OrderManagerService { ...@@ -89,11 +96,6 @@ public class McCafeMangerServiceImpl implements OrderManagerService {
couponHandle.asyncVerificationCoupon(orderBean); couponHandle.asyncVerificationCoupon(orderBean);
} }
if (StringUtils.isNotEmpty(request.getPickUpGoodsNo())){ if (StringUtils.isNotEmpty(request.getPickUpGoodsNo())){
//更新取餐码
BaseResponse baseResponse = saasOrderHandle.updatePickUpGoodNo(request, orderBean);
if (!ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode())){
return ResponseUtil.error(ResponseResult.ORDER_UPDATE_PICKUP_FAILED);
}
if (Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) { if (Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
......
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