|
@@ -29,6 +29,9 @@ import cn.newfeifan.mall.module.trade.service.aftersale.AfterSaleService;
|
|
|
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 cn.newfeifan.mall.module.trade.service.ordercallbacklogs.OrderCallbackLogsService;
|
|
|
+import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.google.common.collect.Maps;
|
|
|
import com.google.gson.Gson;
|
|
|
import com.kuaidi100.sdk.response.SubscribeResp;
|
|
@@ -55,6 +58,7 @@ import static cn.newfeifan.mall.framework.common.util.collection.CollectionUtils
|
|
|
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;
|
|
|
import static cn.newfeifan.mall.module.trade.enums.ErrorCodeConstants.CALLBACK_PARAMETER_ERROR;
|
|
|
+import static cn.newfeifan.mall.module.trade.enums.ErrorCodeConstants.CREATE_TRADE_ORDER_LOGS_ERROR;
|
|
|
|
|
|
@Tag(name = "管理后台 - 交易订单")
|
|
|
@RestController
|
|
@@ -81,6 +85,9 @@ public class TradeOrderController {
|
|
|
@Resource
|
|
|
private PayAppService appService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private OrderCallbackLogsService orderCallbackLogsService;
|
|
|
+
|
|
|
@GetMapping("/page")
|
|
|
@Operation(summary = "获得交易订单分页")
|
|
|
@PreAuthorize("@ss.hasPermission('trade:order:query')")
|
|
@@ -160,7 +167,7 @@ public class TradeOrderController {
|
|
|
@Operation(summary = "订单订阅回调")
|
|
|
public SubscribeResp callBackUrl(HttpServletRequest request) {
|
|
|
String param = request.getParameter("param");
|
|
|
- if(param == null){
|
|
|
+ if (param == null) {
|
|
|
throw exception(CALLBACK_PARAMETER_ERROR);
|
|
|
}
|
|
|
String sign = request.getParameter("sign");
|
|
@@ -170,11 +177,12 @@ public class TradeOrderController {
|
|
|
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");
|
|
|
+ TradeOrderDO order = tradeOrderQueryService.getOrderById(Long.valueOf(orderId));
|
|
|
|
|
|
//建议记录一下这个回调的内容,方便出问题后双方排查问题
|
|
|
log.debug("快递100订阅推送回调结果|{}|{}", param, sign);
|
|
|
//订阅时传的salt,没有可以忽略
|
|
|
- String salt = "";
|
|
|
+ String salt = order.getLogisticsNo();
|
|
|
String ourSign = SignUtils.sign(param + salt);
|
|
|
log.info("订单:{},回调param:{}", orderId, param);
|
|
|
SubscribeResp subscribeResp = new SubscribeResp();
|
|
@@ -183,23 +191,26 @@ public class TradeOrderController {
|
|
|
subscribeResp.setMessage("成功");
|
|
|
//加密如果相等,属于快递100推送;否则可以忽略掉当前请求
|
|
|
if (ourSign.equals(sign)) {
|
|
|
- //TODO 业务处理
|
|
|
-
|
|
|
//判断订单状态是否是已签收
|
|
|
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);
|
|
|
- }
|
|
|
+ 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);
|
|
|
}
|
|
|
|
|
|
+ //添加到日志
|
|
|
+ ObjectMapper mapper = new ObjectMapper();
|
|
|
+ try {
|
|
|
+ orderCallbackLogsService.create(orderId,param,mapper.writeValueAsString(lastResult),lastResult.get("status").toString());
|
|
|
+ } catch (JsonProcessingException e) {
|
|
|
+ throw exception(CREATE_TRADE_ORDER_LOGS_ERROR);
|
|
|
+ }
|
|
|
return subscribeResp;
|
|
|
}
|
|
|
+ orderCallbackLogsService.create(orderId,param,null,lastResult.get("status").toString());
|
|
|
return null;
|
|
|
}
|
|
|
|