|
@@ -22,6 +22,7 @@ import cn.newfeifan.mall.module.trade.convert.order.TradeOrderConvert;
|
|
|
import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderDO;
|
|
|
import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderItemDO;
|
|
|
import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderLogDO;
|
|
|
+import cn.newfeifan.mall.module.trade.enums.order.TradeOrderStateEnum;
|
|
|
import cn.newfeifan.mall.module.trade.enums.order.TradeOrderStatusEnum;
|
|
|
import cn.newfeifan.mall.module.trade.mq.producer.order.DistriOrderProducer;
|
|
|
import cn.newfeifan.mall.module.trade.service.aftersale.AfterSaleService;
|
|
@@ -29,6 +30,7 @@ import cn.newfeifan.mall.module.trade.service.order.TradeOrderLogService;
|
|
|
import cn.newfeifan.mall.module.trade.service.order.TradeOrderQueryService;
|
|
|
import cn.newfeifan.mall.module.trade.service.order.TradeOrderUpdateService;
|
|
|
import com.google.common.collect.Maps;
|
|
|
+import com.google.gson.Gson;
|
|
|
import com.kuaidi100.sdk.response.SubscribeResp;
|
|
|
import com.kuaidi100.sdk.utils.SignUtils;
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
@@ -42,12 +44,15 @@ import org.springframework.web.bind.annotation.*;
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.validation.Valid;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static cn.newfeifan.mall.framework.common.pojo.CommonResult.success;
|
|
|
import static cn.newfeifan.mall.framework.common.util.collection.CollectionUtils.convertList;
|
|
|
import static cn.newfeifan.mall.framework.common.util.collection.CollectionUtils.convertSet;
|
|
|
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
|
|
|
|
|
@Tag(name = "管理后台 - 交易订单")
|
|
|
@RestController
|
|
@@ -148,25 +153,44 @@ public class TradeOrderController {
|
|
|
tradeOrderUpdateService.deliveryOrder(deliveryReqVO);
|
|
|
return success(true);
|
|
|
}
|
|
|
+
|
|
|
@PostMapping("/callBackUrl")
|
|
|
@Operation(summary = "订单订阅回调")
|
|
|
- public SubscribeResp callBackUrl(HttpServletRequest request){
|
|
|
+ public SubscribeResp callBackUrl(HttpServletRequest request) {
|
|
|
String param = request.getParameter("param");
|
|
|
String sign = request.getParameter("sign");
|
|
|
String orderId = request.getParameter("orderId");
|
|
|
|
|
|
+ Gson gson = new Gson();
|
|
|
+ Map<String, Object> map = gson.fromJson(param, Map.class);
|
|
|
+ Map<String, Object> lastResult = (Map<String, Object>) map.get("lastResult");
|
|
|
+ String state = (String) lastResult.get("state");
|
|
|
+
|
|
|
+ //判断订单状态是否是已签收
|
|
|
+ if (state.equals(TradeOrderStateEnum.RECEIVED.getState())) {
|
|
|
+ TradeOrderDO order = tradeOrderQueryService.getOrderById(Long.valueOf(orderId));
|
|
|
+ if (order != null) {
|
|
|
+ List<Map<String, Object>> dataList = (List<Map<String, Object>>) lastResult.get("data");
|
|
|
+ Map<String, Object> firstData = dataList.get(0);
|
|
|
+ //保存签收时间
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern(FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
|
|
|
+ order.setReceivingTime(LocalDateTime.parse(firstData.get("time").toString(), formatter));
|
|
|
+ tradeOrderUpdateService.updateOrderById(order);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//建议记录一下这个回调的内容,方便出问题后双方排查问题
|
|
|
- log.debug("快递100订阅推送回调结果|{}|{}",param,sign);
|
|
|
+ log.debug("快递100订阅推送回调结果|{}|{}", param, sign);
|
|
|
//订阅时传的salt,没有可以忽略
|
|
|
String salt = "";
|
|
|
String ourSign = SignUtils.sign(param + salt);
|
|
|
- log.info("订单:{},回调param:{}",orderId,param);
|
|
|
+ log.info("订单:{},回调param:{}", orderId, param);
|
|
|
SubscribeResp subscribeResp = new SubscribeResp();
|
|
|
subscribeResp.setResult(Boolean.TRUE);
|
|
|
subscribeResp.setReturnCode("200");
|
|
|
subscribeResp.setMessage("成功");
|
|
|
//加密如果相等,属于快递100推送;否则可以忽略掉当前请求
|
|
|
- if (ourSign.equals(sign)){
|
|
|
+ if (ourSign.equals(sign)) {
|
|
|
//TODO 业务处理
|
|
|
return subscribeResp;
|
|
|
}
|