Commit 8edb7b84 by 王世昌

Merge branch 'feature/20210513-状态埋点监控查询-王世昌'

parents bf02e4aa d470bd2d
package com.freemud.sdk.api.assortment.order.adapter;
import com.google.common.collect.Lists;
import cn.freemud.base.constant.Version;
import com.alibaba.fastjson.JSON;
......@@ -3617,4 +3618,37 @@ public class OrderSdkAdapter {
orderConfirmRequest.setTimeout(timeOut);
return orderConfirmRequest;
}
public OrderStateInfoResp convent2OrderStateInfoResp(QueryByCodeResponse orderInfo) {
if (Objects.isNull(orderInfo)) {
return null;
}
OrderStateInfoResp orderStateInfoResp = new OrderStateInfoResp();
orderStateInfoResp.setErrcode(Integer.parseInt(orderInfo.getCode()));
orderStateInfoResp.setErrmsg(orderInfo.getMessage());
if (!Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, orderInfo.getCode()) || Objects.isNull(orderInfo.getResult()) || StringUtils.isBlank(orderInfo.getResult().getOrderCode())) {
return orderStateInfoResp;
}
OrderInfoReqs orderInfoReqs = orderInfo.getResult();
OrderStateInfoResp.OrderStateInfo info = new OrderStateInfoResp.OrderStateInfo();
info.setOrderCode(orderInfoReqs.getOrderCode());
info.setOrderState(orderInfoReqs.getOrderState());
info.setAfterSalesState(orderInfoReqs.getAfterSalesState());
info.setPayState(orderInfoReqs.getPayState());
info.setOrderOperationHistoryList(orderInfoReqs.getOrderOperationHistoryList());
// 获取当前状态最后一条匹配的操作时间
if (CollectionUtils.isNotEmpty(orderInfoReqs.getOrderOperationHistoryList())) {
List<OrderOperationHistoryResp> historyList = orderInfoReqs.getOrderOperationHistoryList();
for (int i = historyList.size() - 1; i >= 0; i--) {
OrderOperationHistoryResp historyResp = historyList.get(i);
if (Objects.equals(historyResp.getTargetOrderState(), orderInfoReqs.getOrderState())) {
info.setStateUpdateTimestamp(historyResp.getUpdateTimestamp());
info.setStateTimeout(historyResp.getTimeout());
break;
}
}
}
orderStateInfoResp.setData(info);
return orderStateInfoResp;
}
}
......@@ -4,6 +4,7 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderModifyRelatingCo
import com.freemud.application.sdk.api.ordercenter.request.QueryAfterSalesOrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.request.QueryLineUpOrderReq;
import com.freemud.application.sdk.api.ordercenter.response.AfterSalesListResp;
import com.freemud.application.sdk.api.ordercenter.response.OrderStateInfoResp;
import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.*;
......@@ -391,4 +392,10 @@ public interface OrderCenterSdkService {
BaseOrderResponse mallOrderRefundReject(CancelOrderRequest cancelOrderRequest);
/**
* 根据订单编号查询订单状态信息
*/
OrderStateInfoResp queryOrderStateInfo(String orderCode, String partnerId, Byte orderClient, String trackNo);
}
......@@ -2139,4 +2139,17 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
com.freemud.application.sdk.api.ordercenter.response.BaseResponse response = orderSdkService.adultReject(request, cancelOrderRequest.getTrackingNo());
return orderSdkAdapter.convent2BaseOrderResponse(response);
}
@Override
public OrderStateInfoResp queryOrderStateInfo(String orderCode, String partnerId, Byte orderClient, String trackNo) {
BaseQueryOrderRequest request = new BaseQueryOrderRequest();
request.setOrderId(orderCode);
request.setPartnerId(partnerId);
if (Objects.nonNull(orderClient) && !Objects.equals(orderClient,0) ){
request.setOrderClient(orderClient.toString());
}
QueryByCodeResponse orderInfo = orderSdkService.getOrderInfo(request.getOrderClient(), request.getOrderId(),
request.getThirdOrderCode(), 1, request.getTrackingNo());
return orderSdkAdapter.convent2OrderStateInfoResp(orderInfo);
}
}
package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.QueryStateMonitorInfoResp;
import cn.freemud.entities.vo.OrderStateMonitorInfoVo;
import cn.freemud.service.Orderservice;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
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.RestController;
/**
* 订单状态监控查询
*
* @version: 1.0
* @Description: TODO
* @author: wangshichang
* @date: 2021/5/13 下午4:01
* @Copyright: www.freemud.cn Inc.
*/
@Api(tags = "订单状态监控")
@Slf4j
@Validated
@RequestMapping("/order")
@RestController
public class OrderReportController {
private final Orderservice orderservice;
public OrderReportController(Orderservice orderservice) {
this.orderservice = orderservice;
}
/**
* 订单状态监控查询
* <p>用于提供给监控系统查询</p>
*
* @param queryResp 查询参数
* @return {@link BaseResponse< OrderStateMonitorInfoVo >}
*/
@ApiAnnotation(logMessage = "queryOrderStateMonitorInfo")
@GetMapping("/stateMonitorInfo")
public BaseResponse<OrderStateMonitorInfoVo> queryOrderStateMonitorInfo(@Validated QueryStateMonitorInfoResp queryResp) {
return orderservice.queryOrderStateMonitorInfo(queryResp.getOrderCode(), queryResp.getPartnerId(), queryResp.getOrderClient());
}
}
package cn.freemud.entities.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Objects;
/**
* 查询订单状态监控信息参数
*
* @version: 1.0
* @Description: TODO
* @author: WangShiChang
* @date: 2021/5/13 下午4:36
* @Copyright: www.freemud.cn Inc.
*/
@ApiModel("查询订单状态监控信息 参数")
@Data
public class QueryStateMonitorInfoResp implements Serializable {
private static final long serialVersionUID = -3946903275418853516L;
/**
* 订单编号
*/
@ApiModelProperty(value = "订单编号", required = true)
@NotBlank(message = "订单编号为空")
private String orderCode;
/**
* 订单下单渠道
*/
@ApiModelProperty(value = "订单下单渠道")
private Byte orderClient;
/**
* 商户ID
*/
@ApiModelProperty(value = "商户ID")
@NotBlank(message = "商户ID为空")
private String partnerId;
}
package cn.freemud.entities.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.Objects;
/**
* 订单状态监控信息
*
* @version: 1.0
* @Description: TODO
* @author: WangShiChang
* @date: 2021/5/13 下午4:36
* @Copyright: www.freemud.cn Inc.
*/
@Data
public class OrderStateMonitorInfoVo implements Serializable {
private static final long serialVersionUID = 2840452799139432761L;
/**
* 订单编号
*/
private String orderCode;
/**
* 订单状态
*/
private Integer orderState;
/**
* 状态超时时间
*/
private Long stateTimeout;
/**
* 是否需要监控
* 默认false
*/
private Boolean needMonitor;
/**
* 更新时间戳
*/
private Long updateTimestamp;
public Boolean getNeedMonitor() {
// 默认false
return Objects.isNull(needMonitor) ? Boolean.FALSE : Boolean.TRUE;
}
}
......@@ -5,7 +5,6 @@ import cn.freemud.entities.dto.ConfirmOrderDto;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.vo.*;
import com.freemud.application.sdk.api.ordercenter.response.OrderCountResp;
import com.freemud.sdk.api.assortment.order.enums.OrderSdkType;
import java.util.List;
import java.util.Map;
......@@ -177,4 +176,15 @@ public interface Orderservice {
* @return
*/
BaseResponse<List<OrderCountResp>> selectCountOrdersByPartnerIds(OrderCountRequestVo orderCountRequestVo, String trackingNo);
/**
* 通过订单号查询订单详情
*
* @param orderCode 订单编号
* @param partnerId 商户号
* @param orderClient 订单下单渠道
* @return
*/
BaseResponse<OrderStateMonitorInfoVo> queryOrderStateMonitorInfo(String orderCode, String partnerId, Byte orderClient);
}
......@@ -40,15 +40,12 @@ import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.order.FacePayRequestDto;
import cn.freemud.entities.dto.order.FacePayResponseDto;
import cn.freemud.entities.dto.pay.CombPayResponse;
import cn.freemud.entities.dto.product.*;
import cn.freemud.entities.dto.promotion.*;
import cn.freemud.entities.dto.product.AttributeValue;
import cn.freemud.entities.dto.product.GroupDetail;
import cn.freemud.entities.dto.product.ProductAttributeGroup;
import cn.freemud.entities.dto.product.ProductGroup;
import cn.freemud.entities.dto.shoppingCart.CollageOrderDto;
import cn.freemud.entities.dto.product.*;
import cn.freemud.entities.dto.promotion.*;
import cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
......@@ -73,7 +70,6 @@ import cn.freemud.service.BuriedPointService;
import cn.freemud.service.CouponActivityService;
import cn.freemud.service.OrderAdapterService;
import cn.freemud.service.Orderservice;
import cn.freemud.service.*;
import cn.freemud.service.order.OrderRelationFactory;
import cn.freemud.service.order.OrderRelationService;
import cn.freemud.service.thirdparty.*;
......@@ -91,7 +87,6 @@ import com.freemud.api.assortment.datamanager.meal.MealCacheManager;
import com.freemud.application.sdk.api.constant.ResponseConstant;
import com.freemud.application.sdk.api.constant.ResponseResultEnum;
import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService;
import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService;
//import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService;
//import com.freemud.application.sdk.api.deliverycenter.response.DeliveryInfoDto;
//import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
......@@ -109,14 +104,11 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.SdkUpdateAbnormalState;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum;
import com.freemud.application.sdk.api.ordercenter.request.*;
import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq;
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.OrderCountResp;
import com.freemud.application.sdk.api.ordercenter.response.OrderStateInfoResp;
import com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
......@@ -4504,5 +4496,30 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success(result.getResult());
}
@Override
public BaseResponse<OrderStateMonitorInfoVo> queryOrderStateMonitorInfo(String orderCode, String partnerId, Byte orderClient) {
BaseQueryOrderRequest request = new BaseQueryOrderRequest();
request.setOrderId(orderCode);
request.setPartnerId(partnerId);
if (Objects.nonNull(orderClient) && !Objects.equals(orderClient, 0)) {
request.setOrderClient(orderClient.toString());
}
// 实时查询,暂时不查询es
OrderStateInfoResp response = orderCenterSdkService.queryOrderStateInfo(orderCode, partnerId, orderClient, LogThreadLocal.getTrackingNo());
if (Objects.isNull(response) || !Objects.equals(RESPONSE_SUCCESS_CODE, response.getErrcode()) || response.getData() == null) {
LogUtil.info("订单详情实时查询错误,queryOrderStateInfoResp,", response, "");
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
OrderStateMonitorInfoVo infoVo = new OrderStateMonitorInfoVo();
infoVo.setOrderCode(response.getData().getOrderCode());
infoVo.setOrderState(response.getData().getOrderState());
infoVo.setStateTimeout(response.getData().getStateTimeout());
infoVo.setNeedMonitor(Objects.equals(response.getData().getStateTimeout(), 0L));
infoVo.setUpdateTimestamp(response.getData().getStateUpdateTimestamp());
return ResponseUtil.success(infoVo);
}
}
package com.freemud.application.sdk.api.ordercenter.response;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderOperationHistoryResp;
import lombok.Data;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
/**
* 订单状态监控信息
*
* @version: 1.0
* @Description: TODO
* @author: WangShiChang
* @date: 2021/5/13 下午4:36
* @Copyright: www.freemud.cn Inc.
*/
@Data
public class OrderStateInfoResp implements Serializable {
private static final long serialVersionUID = 2840452799139432761L;
private Integer errcode;
private String errmsg;
private OrderStateInfo data;
@Data
public static class OrderStateInfo {
/**
* 订单编号
*/
private String orderCode;
/**
* 订单状态
* 基础服务状态,未转换
*/
private Integer orderState;
/**
* 售后单状态
*/
private Integer afterSalesState;
/**
* 支付状态
*/
private Integer payState;
/**
* 订单操作历史
*/
private List<OrderOperationHistoryResp> orderOperationHistoryList;
/**
* 状态更新时间戳
*/
private Long stateUpdateTimestamp;
/**
* 状态超时时间 单位:秒
*/
private Long stateTimeout;
public Long getStateUpdateTimestamp() {
return Objects.isNull(stateUpdateTimestamp) ? 0 : stateUpdateTimestamp;
}
public Long getStateTimeout() {
return Objects.isNull(stateTimeout) ? 0 : stateTimeout;
}
private List<OrderOperationHistoryResp> getOrderOperationHistoryList() {
return Objects.isNull(this.orderOperationHistoryList) ? Collections.emptyList() : orderOperationHistoryList;
}
private boolean hasAfterSales() {
return Objects.isNull(afterSalesState) || Objects.equals(afterSalesState, 0);
}
}
}
......@@ -40,4 +40,19 @@ public class OrderOperationHistoryResp {
*/
private String operator;
/**
* 原状态
*/
private Integer originOrderState;
/**
* 目标状态
*/
private Integer targetOrderState;
/**
* 状态超时时间 单位:秒
*/
private Long 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