Commit c38e5e1a by 邓杰

Merge branch '20201127_coco配送进程' into qa

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/service/Orderservice.java
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
#	order-application-service/src/main/java/cn/freemud/service/thirdparty/DeliveryFeiginClient.java
parents 972ba660 d2377b22
......@@ -1029,7 +1029,9 @@ public class OrderSdkAdapter {
*/
public QueryOrdersResponse.DataBean.OrderBean convent2NEWOrderInfo(OrderInfoReqs orderInfoReqs) {
QueryOrdersResponse.DataBean.OrderBean data = new QueryOrdersResponse.DataBean.OrderBean();
if(Objects.nonNull(orderInfoReqs.getEstimateDeliveryCompleteTime())){
data.setEstimateDeliveryCompleteTime(Long.parseLong(orderInfoReqs.getEstimateDeliveryCompleteTime()));
}
data.setOrderClient(orderInfoReqs.getOrderClient().toString());
data.setCompanyId(orderInfoReqs.getPartnerId());
data.setShopId(orderInfoReqs.getStoreId());
......
......@@ -429,6 +429,9 @@ public class QueryOrdersResponse {
*/
private List<OrderPayItem> orderPayItem;
// 预计到达时间
private Long estimateDeliveryCompleteTime;
@NoArgsConstructor
@Data
public static class AddDeliveryInfo {
......
......@@ -87,8 +87,8 @@
<!-- 商户门店sdk -->
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<version>3.3.5-SNAPSHOT</version>
<artifactId>storecenter-sdk</artifactId>
<version>3.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>cn.freemud</groupId>
......
......@@ -13,6 +13,8 @@
package cn.freemud.constant;
import cn.freemud.utils.DateTimeUtil;
public class RedisKeyConstant {
/**
* userInfoMap的redisKey前缀
......@@ -51,7 +53,7 @@ public class RedisKeyConstant {
* 支付回掉标记在redis的key前缀
*/
public final static String KGD_PAYMENT_CALLBACK_FMID = "kgd:payment:callback:fmid:";
/**
* 点餐门店绑定的商城门店redis的key前缀
*/
......@@ -67,4 +69,24 @@ public class RedisKeyConstant {
*/
public final static String KGD_SENDPOINT_ORDERID = "kgd:sendpoint:orderid:";
private final static String REDIS_KEY_SEP = ":";
/**
* cocoNotMadeGoods:商户号:门店号:yyyy-MM-dd
*
* @param partnerId
* @param storeId
* @return
*/
public static String notMadeGoodsNumber(String partnerId, String storeId) {
StringBuilder sb = new StringBuilder("cocoNotMadeGoods");
sb.append(REDIS_KEY_SEP);
sb.append(partnerId).append(REDIS_KEY_SEP);
sb.append(storeId).append(REDIS_KEY_SEP);
sb.append(DateTimeUtil.getCurrentDateStr());
return sb.toString();
}
}
package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.TakeMealNoticesVO;
import cn.freemud.service.CallerService;
import cn.freemud.utils.ResponseUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 叫号器
*/
@Slf4j
@RequestMapping("/caller")
@RestController
@Validated
public class CallerController {
private CallerService callerService;
public CallerController(CallerService callerService) {
this.callerService = callerService;
}
/**
* 取餐通知
* @return
*/
public BaseResponse takeMealNotices(TakeMealNoticesVO vo){
return callerService.takeMealNotices(vo);
}
}
......@@ -375,5 +375,15 @@ public class OrderController {
return orderservice.mcCafePollingPickUpCode(vo);
}
/**
* 根据订单号查询配送操作日志及骑手位置
* @param requestVo
* @return
*/
@ApiAnnotation(logMessage = "queryOrderRider")
@PostMapping("/queryOrderRider")
public BaseResponse<OrderRiderResponseVo> queryOrderRider(@Validated @LogParams @RequestBody OrderRiderRequestVo requestVo){
return orderservice.queryOrderRider(requestVo);
}
}
......@@ -42,7 +42,7 @@ public class DeliveryController {
@ApiOperation(value = "配送回调", notes = "配送回调", produces = "application/json")
@PostMapping("/delivery/callbackUrl")
public BaseResponse callbackUrl(@Valid @LogParams @RequestBody CallbackUrlRequestDto request) {
return deliveryService. callbackUrl(request);
return deliveryService.callbackUrl(request);
}
@ApiAnnotation(logMessage = "麦咖啡配送回调")
......
package cn.freemud.entities.dto.delivery;
import lombok.Data;
@Data
public class DeliveryBaseResponse<T> {
private Integer code;
private String msg;
private T data;
}
package cn.freemud.entities.dto.delivery;
import lombok.Data;
@Data
public class DeliveryStatusAndRiderPositionDto {
/**
* 订单号
*/
private String orderId;
/**
* 配送号
*/
private String deliveryId;
/**
* 骑手经纬度
*/
private String currentPoint;
/**
* 门店经纬度
*/
private String storePoint;
/**
* 配送状态
*/
private Integer devlieryStatus;
/**
* 距离
*/
private Integer distance;
/**
* 门店联系电话
*/
private String storePhone;
}
package cn.freemud.entities.dto.delivery;
import lombok.Data;
@Data
public class QueryDeliveryBaseRequest {
private String deliveryId;
private Integer openDistance;
}
package cn.freemud.entities.dto.ecology;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class BookingOrderPayedScene {
/**
* 商户地址
*/
private String merchantAddress;
/**
* 商户名
*/
private String merchantName;
/**
* 取单号
*/
private String orderNo;
/**
* 订单类型
*/
private String orderType;
/**
* 预计取单时间
*/
private String takeOrderTime;
}
package cn.freemud.entities.dto.ecology;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class DeliveryErrorReminder {
/**
* 配送地址
*/
private String address;
/**
* 下单时间
*/
private String createTime;
/**
* 商户电话
*/
private String merchantPhone;
/**
* 订单号
*/
private String orderId;
/**
* 备注
*/
private String remark;
}
package cn.freemud.entities.dto.ecology;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class GroupBuyingStatusReminder {
/**
* 温馨提示
*/
private String friendlyTips;
/**
* 商户地址
*/
private String merchantAddress;
/**
* 商户名
*/
private String merchantName;
/**
* 完成点单人数
*/
private String peopleNumber;
}
package cn.freemud.entities.dto.ecology;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class InstantOrderPayedScene {
/**
* 温馨提示
*/
private String friendlyTips;
/**
* 商户地址
*/
private String merchantAddress;
/**
* 商户名
*/
private String merchantName;
/**
* 订单号
*/
private String orderNo;
/**
* 订单类型
*/
private String orderType;
}
package cn.freemud.entities.dto.ecology;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class OrderDeliveryScene {
/**
* 配送地址
*/
private String address;
/**
* 预计达到时间
*/
private String estimateArrivalTime;
/**
* 商户电话
*/
private String merchantPhone;
/**
* 订单编号
*/
private String orderNo;
}
package cn.freemud.entities.dto.ecology;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class SceneCouponRequest {
/**
* 券名称,
*/
private String couponName;
/**
* 备注
*/
private String remark;
}
package cn.freemud.entities.dto.ecology;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class SceneInviteGiftRequest {
/**
* 活动id,
*/
private String activityId;
/**
* 被邀请人
*/
private String inviteeName;
/**
* 通过时间,
*/
private String passTime;
/**
* relationId,
*/
private String relationId;
/**
* remark,
*/
private String 备注;
}
package cn.freemud.entities.dto.ecology;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class SceneMemberCardExpiredRequest {
/**
* 到期时间
*/
private Integer expiredAt;
/**
* 备注说明 / 温馨提示
*/
private String remark;
}
package cn.freemud.entities.dto.ecology;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class SceneMemberLevelChangedRequest {
/**
* 等级变更时间
*/
private Integer changedAt;
/**
* 备注
*/
private String remark;
}
package cn.freemud.entities.dto.ecology;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class SceneOrderPayedRequest {
/**
* 地址
*/
private String address;
/**
* 金额
*/
private Integer amount;
/**
* 序号 必填
*/
private Integer daySeq;
/**
* 备注
*/
private String formId;
/**
* 创建时间
*/
private Long gmtCreate;
/**
* 预约时间
*/
private Long gmtExpect;
/**
* 订单号
*/
private String orderId;
/**
* 订单类型
*/
private String orderType;
/**
* 取餐码
*/
private String otherCode;
/**
* prepayId
*/
private String prepayId;
/**
* 积分变动
*/
private String scoreChangedNum;
/**
* 积分变动原因
*/
private String scoreChangedReason;
/**
* 门店名称
*/
private String shopName;
}
package cn.freemud.entities.dto.ecology;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class SelfDeliveryOrderPayedScene {
/**
* 配送地址
*/
private String address;
/**
* 预计达到时间
*/
private String estimateArrivalTime;
/**
* 商户电话
*/
private String merchantPhone;
/**
* 订单编号
*/
private String orderNo;
/**
* 订单类型
*/
private String orderType;
}
package cn.freemud.entities.dto.ecology;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Setter
@Getter
public class SubscribeMessageRequest {
private BookingOrderPayedScene bookingOrderPayedScene;
private BookingOrderPayedScene bookingOrderTakeReminderScene;
/**
* 渠道
*/
private Integer channel;
/**
*
*/
private String scene;
private DeliveryErrorReminder deliveryErrorReminder;
private GroupBuyingStatusReminder groupBuyingStatusReminder;
private InstantOrderPayedScene instantOrderPayedScene;
private InstantOrderPayedScene instantOrderTakeReminderScene;
private String messageEventType;
/**
* 小程序id
*/
private String miniAppId;
/**
* 小程序集合
*/
private List<String> openIdList;
private OrderDeliveryScene orderDeliveryScene;
private SceneCouponRequest sceneCouponExpiredRequest;
private SceneCouponRequest sceneCouponReceiveRequest;
private SceneInviteGiftRequest sceneInviteGiftRequest;
private SceneMemberCardExpiredRequest sceneMemberCardExpiredRequest;
private SceneMemberLevelChangedRequest sceneMemberLevelChangedRequest;
private SceneOrderPayedRequest sceneOrderPayedRequest;
private SelfDeliveryOrderPayedScene selfDeliveryOrderPayedScene;
}
package cn.freemud.entities.dto.ecology;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class SubscribeMessageResponse {
private Integer code;
private String message;
private String subMsg;
private String ver;
}
package cn.freemud.entities.vo;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
@Data
public class OrderRiderRequestVo {
@NotEmpty(message = "sessionId 不能为空")
private String sessionId;
@NotEmpty(message = "订单ID 不能为空")
private String oid;
}
package cn.freemud.entities.vo;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import lombok.Data;
import org.omg.PortableInterceptor.INACTIVE;
import java.util.List;
@Data
public class OrderRiderResponseVo {
/**
* 订单号
*/
private String orderId;
/**
* 配送号
*/
private String deliveryId;
/**
* 门店联系电话
*/
private String storePhone;
/**
* 骑手经度
*/
private String riderLongitude;
/**
* 骑手纬度
*/
private String riderLatitude;
/**
* 用户经度
*/
private String userLongitude;
/**
* 用户纬度
*/
private String userLatitude;
/**
* 门店经度
*/
private String shopLongitude;
/**
* 门店纬度
*/
private String shopLatitude;
/**
* 配送状态
*/
private Integer devlieryStatus;
/**
* 距离
*/
private Integer distance;
/**
* 操作日志
*/
private List<Operation> operationList;
@Data
public static class Operation{
private String createTime;
private String operationDesc;
private String operationMethod;
private String operator;
}
}
package cn.freemud.entities.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @author freemud
*/
@Getter
@Setter
public class TakeMealNoticesVO {
@ApiModelProperty(value = "商户Id")
private String partnerId;
@ApiModelProperty(value = "门店id")
private String storeCode;
@ApiModelProperty(value = "订单数量")
private Integer orderTotalNum;
@ApiModelProperty(value = "待制作杯数")
private Integer cupTotalNum;
@ApiModelProperty(value = "订单")
private String[] orders;
}
......@@ -164,6 +164,9 @@ public enum ResponseResult {
ORDER_NOT_CREATE_ERROR("45065", "请不要重复创建订单"),
MULTIORDER__ERRORREFUND("45005", "订单申请退款失败"),
ORDER_CANCEL_ERROR_EXPECT_TIME("45067", "预约时间还剩15分钟,无法取消"),
ORDER_CANCEL_ERROR_ESTIMATE_TIME("45068", "预计送达还剩30分钟,无法取消"),
/**
* 支付
......@@ -212,6 +215,7 @@ public enum ResponseResult {
DELIVERY_QUERY_RIDER_STATUS_ERROR("53014", "订单状态不是配送中,不能查询骑手位置"),
DELIVERY_REMINDER_ERROR("53015","催单失败"),
DELIVERY_QUERY_RIDER_ERROR("53016","查询骑手位置失败"),
DELIVERY_NOT_EXIST("53017","当前订单不是没有配送单"),
/**
* 配送信息
......
package cn.freemud.service;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.entities.vo.TakeMealNoticesVO;
import cn.freemud.utils.ResponseUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.concurrent.TimeUnit;
@Service
public class CallerService {
@Autowired
private RedisTemplate redisTemplate;
/**
* 缓存 待制作杯数量
* @param vo
*/
private void cacheTakeMealNotices(TakeMealNoticesVO vo){
String redisKey = RedisKeyConstant.notMadeGoodsNumber(vo.getPartnerId(), vo.getStoreCode());
redisTemplate.boundValueOps(redisKey).set(vo.getCupTotalNum(),1, TimeUnit.DAYS);
}
public BaseResponse takeMealNotices(TakeMealNoticesVO vo){
cacheTakeMealNotices(vo);
//发送取餐通知消息 cc 生态
return ResponseUtil.success();
}
}
......@@ -4,6 +4,7 @@ import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.ConfirmOrderDto;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.vo.*;
import com.freemud.sdk.api.assortment.order.enums.OrderSdkType;
import java.util.Map;
......@@ -141,4 +142,6 @@ public interface Orderservice {
* @return
*/
BaseResponse queryCollageOrderById(Integer operation,String sessionId, String oid, String partnerId,String channel);
BaseResponse queryOrderRider(OrderRiderRequestVo requestVo);
}
......@@ -5,6 +5,9 @@ import cn.freemud.amp.service.ProduceMQService;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.ecology.DeliveryErrorReminder;
import cn.freemud.entities.dto.ecology.OrderDeliveryScene;
import cn.freemud.entities.dto.ecology.SubscribeMessageRequest;
import cn.freemud.entities.dto.pos.PosBaseRequestDto;
import cn.freemud.entities.vo.delivery.DeliveryAmountVo;
import cn.freemud.enums.DeliveryReviewStatus;
......@@ -18,23 +21,34 @@ import cn.freemud.management.service.adapter.OrderManagerAdapter;
import cn.freemud.service.Orderservice;
import cn.freemud.service.ThirdDeliveryService;
import cn.freemud.service.thirdparty.DeliveryFeiginClient;
import cn.freemud.service.thirdparty.EcologyAdminApplicationClient;
import cn.freemud.service.thirdparty.PosClient;
import cn.freemud.utils.DateTimeUtil;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.freemud.application.sdk.api.constant.ResponseConstant;
import com.freemud.application.sdk.api.deliverycenter.dto.CancelDeliveryOrderRequestDto;
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.service.DeliveryService;
import com.freemud.application.sdk.api.log.LogThreadLocal;
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.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
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.structure.request.PushMessageNoticeDto;
import com.freemud.application.sdk.api.structure.service.MessageCenterClient;
import com.freemud.sdk.api.assortment.order.request.order.AssortmentUpdateDeliveryAbnormalRequest;
import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
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.response.order.QueryOrderByIdResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
......@@ -42,8 +56,11 @@ 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.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
......@@ -80,6 +97,12 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
private MessageNoticeAdapter messageNoticeAdapter;
@Autowired
private MessageCenterClient messageNoticeClient;
@Value("${delivery.micro.message.partner}")
private String deliveryMicroMessagePartner;
@Autowired
private EcologyAdminApplicationClient ecologyAdminApplicationClient;
@Autowired
private StoreCenterService storeCenterService;
@Override
public BaseResponse callbackUrl(CallbackUrlRequestDto request) {
......@@ -102,6 +125,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
requestDto.setExpressChannelName(request.getChannelName());
requestDto.setExpressNo(request.getChannelDeliveryId());
requestDto.setOrderSubState(deliveryStatus);
requestDto.setRemark(request.getRemark());
if (StringUtils.isNotBlank(request.getRemark()))
{
requestDto.setRemark("配送:"+request.getRemark());
......@@ -137,7 +161,6 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
sendPosDeliveryStatus = 81;
}
sendPosMessage(partnerId, storeCode, request.getOrderId(), sendPosDeliveryStatus, request.getRemark());
// 取消外卖中台配送单 订单异常
// 如果 "配送单异常并且顾客更改配送地址" 不取消配送单
if (!isDeliveryAbnormalAndCustomerChangedAddress(request)) {
......@@ -154,6 +177,9 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
produceMQService.sendOfDeliveryInfo(request);
produceMQService.sendRocketMqOfDeliveryInfo(request);
}
//配送订阅消息
sendMicroMessage(partnerId,request.getOrderId(),deliveryStatus);
// else {
// return ResponseUtil.error(ResponseResult.SYSTEM_ERROR.getCode(), "订单回调状态有误");
// }
......@@ -369,5 +395,71 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
messageNoticeClient.createMessage(pushMessageNoticeDto, LogThreadLocal.getTrackingNo());
}
/**
* 配送消息推送
*/
public void sendMicroMessage(String partnerId,String orderId,int deliveryStatus){
//如果商户配置了配送订阅消息推送
if(deliveryMicroMessagePartner.contains(partnerId)){
try {
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(orderId);
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
SubscribeMessageRequest request = new SubscribeMessageRequest();
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);
request.setScene("scene_delivery");
//默认微信
request.setChannel(1);
//支付宝
if("3".equals(orderBean.getOrderClient())){
request.setChannel(2);
}
//配送订阅模板消息
if(deliveryStatus == DeliveryStatus.ALLOTRIDER.getCode()){
request.setMessageEventType("ORDER_DELIVERY");
OrderDeliveryScene orderDeliveryScene = new OrderDeliveryScene();
orderDeliveryScene.setAddress(orderBean.getAddress());
Long createTime = orderBean.getGmtCreate();
// 获取门店信息
StoreInfoRequest storeInfoRequest = new StoreInfoRequest(partnerId, orderBean.getShopId(),null);
StoreResponse storeResponse = storeCenterService.getStoreInfo(storeInfoRequest, LogThreadLocal.getTrackingNo());
//立即单外卖
if (OrderType.GENERAL_EXPRESS.getIndex()==orderBean.getNewOrderType()) {
if(storeResponse != null && storeResponse.getBizVO() != null && storeResponse.getBizVO().getServiceTime() != null){
createTime = createTime + storeResponse.getBizVO().getServiceTime()*1000*60;
orderDeliveryScene.setEstimateArrivalTime(DateTimeUtil.timeStampToTime(createTime));
}
}//预约单外卖
if(OrderType.RESERVED_EXPRESS.getIndex()==orderBean.getNewOrderType()&&orderBean.getGmtExpect()!=null){
orderDeliveryScene.setEstimateArrivalTime(DateTimeUtil.timeStampToTime(orderBean.getGmtExpect()));
}
orderDeliveryScene.setMerchantPhone(storeResponse.getBizVO().getPhone());
orderDeliveryScene.setOrderNo(orderId);
request.setOrderDeliveryScene(orderDeliveryScene);
ecologyAdminApplicationClient.subscribeMessage(request);
}
//配送异常模板消息
if(deliveryStatus == DeliveryStatus.DELIVERYCANCEL.getCode() || deliveryStatus == DeliveryStatus.DELIVERYERROR.getCode()){
request.setMessageEventType("DELIVERY_ERROR_REMINDER");
DeliveryErrorReminder deliveryErrorReminder = new DeliveryErrorReminder();
deliveryErrorReminder.setCreateTime(DateTimeUtil.timeStampToTime(orderBean.getGmtCreate()));
deliveryErrorReminder.setOrderId(orderId);
deliveryErrorReminder.setMerchantPhone(orderBean.getShopPhone());
deliveryErrorReminder.setAddress(orderBean.getAddress());
deliveryErrorReminder.setRemark("订单配送异常,请电话联系门店确认哦");
request.setDeliveryErrorReminder(deliveryErrorReminder);
ecologyAdminApplicationClient.subscribeMessage(request);
}
}catch (Exception e){
log.error("配送订阅消息推送失败:{},失败原因:{}",orderId,e.getMessage());
}
}
}
}
......@@ -27,4 +27,7 @@ public interface DeliveryFeiginClient {
@PostMapping("/delivery/create")
CreateDeliveryOrderResponseDto deliveryOrderAdd(@RequestBody CreateDeliveryVo request);
@PostMapping("/delivery/getDeliveryStatusAndRiderPosition")
DeliveryBaseResponse<DeliveryStatusAndRiderPositionDto> queryDeliveryStatusAndRiderPosition(@RequestBody QueryDeliveryBaseRequest queryDeliveryBaseRequest);
}
package cn.freemud.service.thirdparty;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.ecology.SubscribeMessageRequest;
import cn.freemud.entities.dto.ecology.SubscribeMessageResponse;
import cn.freemud.entities.dto.ecology.VirtualBindStoreResponse;
import cn.freemud.entities.dto.ecology.VirtualStoreRequest;
import cn.freemud.entities.dto.wechat.GetAuthorizerRequestDto;
......@@ -28,4 +30,7 @@ public interface EcologyAdminApplicationClient {
@PostMapping(value = "/ecology/api/getAuthorizerAccessToken")
GetTokenResponseDto getAuthorizerAccessToken(@RequestBody GetAuthorizerRequestDto request);
@PostMapping(value = "/ecology/api/subscribeMessage/send")
SubscribeMessageResponse subscribeMessage(SubscribeMessageRequest request);
}
package cn.freemud.utils;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
......@@ -280,5 +281,16 @@ public class DateTimeUtil {
public static String getCurDateAfterTwentyYear() {
return getCurrentLocalDate().plus(2, ChronoUnit.DECADES).format(DATE_FORMATTER);
}
/**
* 时间戳转换成时间
* @param l 传入的时间戳
* @return 返回格式化时间
*/
public static String timeStampToTime(Long l){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(l);
String res = simpleDateFormat.format(date);
return res;
}
}
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