增加重新派单接口
This commit is contained in:
parent
7938cad0cc
commit
951a1f3cf7
@ -69,7 +69,7 @@ public class OrderPayedListener {
|
||||
String dataStr = new String(data, StandardCharsets.UTF_8);
|
||||
listener(dataStr, channel, message);
|
||||
}
|
||||
|
||||
|
||||
public void listener(String data, Channel channel, Message message) throws IOException, InterruptedException {
|
||||
// String messageId = message.getMessageProperties().getMessageId();
|
||||
if (StrUtil.isBlank(data)) {
|
||||
@ -154,7 +154,7 @@ public class OrderPayedListener {
|
||||
&& !isBookingOrder) {
|
||||
|
||||
// 如果是立即下单,将触发顺丰同城下单,否则(预约下单) redis+cron 定时触发顺丰同城下单
|
||||
Pair<Boolean, String> pairCreateSfOrder = sfExpressApiService.innerCreateSfExpressOrder(orderId, orderPickupNum);
|
||||
Pair<Boolean, String> pairCreateSfOrder = sfExpressApiService.innerCreateSfExpressOrder(orderId, orderPickupNum, false);
|
||||
if (pairCreateSfOrder == null) {
|
||||
logger.error("[订单支付监听] 顺丰同城下单失败,无返回值 订单ID: {}", orderId);
|
||||
continue;
|
||||
|
||||
@ -907,7 +907,7 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl<ShopOrderInfoMappe
|
||||
}
|
||||
|
||||
// 调用顺丰接口创建订单
|
||||
Pair<Boolean, String> sfResult = sfExpressApiService.innerCreateSfExpressOrder(orderId, 0L);
|
||||
Pair<Boolean, String> sfResult = sfExpressApiService.innerCreateSfExpressOrder(orderId, 0L, false);
|
||||
if (sfResult == null) {
|
||||
logger.error("[预约订单顺丰下单] 调用顺丰接口无返回值, orderId={}", orderId);
|
||||
throw new RuntimeException("预约订单顺丰下单失败,接口无响应");
|
||||
|
||||
@ -44,7 +44,7 @@ public class SFExpressAdminController {
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "创建顺丰同城店铺", notes = "创建顺丰同城店铺")
|
||||
@ApiOperation(value = "【测试补偿】创建顺丰同城店铺", notes = "创建顺丰同城店铺")
|
||||
@RequestMapping(value = "/create-shop-inner", method = RequestMethod.POST)
|
||||
public CommonResult createSfExpressShopNotify(@RequestBody JSONObject requestBody) {
|
||||
Pair<Boolean, String> result = sfExpressApiService.createSfExpressShopInner(
|
||||
@ -64,4 +64,12 @@ public class SFExpressAdminController {
|
||||
}
|
||||
return CommonResult.failed(result.getSecond());
|
||||
}
|
||||
|
||||
@ApiOperation(value = "重新创建顺丰订单(重新派发)", notes = "重新创建顺丰订单(重新派发)")
|
||||
@RequestMapping(value = "/recreate-order", method = RequestMethod.POST)
|
||||
public CommonResult recreateOrder(@RequestBody JSONObject requestBody) {
|
||||
return sfExpressApiService.recreateOrder(
|
||||
requestBody.getStr("order_id")
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -70,8 +70,23 @@ public interface SFExpressApiService {
|
||||
ThirdApiRes createSfExpressShopNotify(String jsonData, String sign);
|
||||
|
||||
|
||||
/**
|
||||
* 创建顺丰同城订单
|
||||
*
|
||||
* @param shopOrderId
|
||||
* @return
|
||||
*/
|
||||
ThirdApiRes createOrder(String shopOrderId);
|
||||
|
||||
|
||||
/**
|
||||
* 重新创建顺丰同城订单
|
||||
*
|
||||
* @param shopOrderId
|
||||
* @return
|
||||
*/
|
||||
CommonResult recreateOrder(String shopOrderId);
|
||||
|
||||
/**
|
||||
* 获取顺丰同城店铺信息
|
||||
*
|
||||
@ -85,9 +100,10 @@ public interface SFExpressApiService {
|
||||
*
|
||||
* @param orderId
|
||||
* @param orderPickupNum
|
||||
* @param ignoreExists 是否忽略已存在本地订单
|
||||
* @return
|
||||
*/
|
||||
Pair<Boolean, String> innerCreateSfExpressOrder(String orderId, Long orderPickupNum);
|
||||
Pair<Boolean, String> innerCreateSfExpressOrder(String orderId, Long orderPickupNum, Boolean ignoreExists);
|
||||
|
||||
/**
|
||||
* 取消订单,当商家处发生异常需要取消配送时,可调用此接口对订单进行取消操作,同步返回结果。
|
||||
|
||||
@ -105,7 +105,6 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
|
||||
@Autowired
|
||||
private ShopMchEntryService shopMchEntryService;
|
||||
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
private PushMessageService pushMessageService;
|
||||
@ -553,6 +552,60 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
|
||||
return JsonUtil.json2object(retRespStr, ThirdApiRes.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新创建顺丰同城订单
|
||||
* 1、先获取顺丰同城订单的当前状态,如果没有取消的订单,则取消该订单
|
||||
* 2、取消成功,则重新创建顺丰同城订单,取消失败,则返回错误信息
|
||||
* 3、重新创建订单成功,更新订单轨迹
|
||||
*
|
||||
* @param shopOrderId 商城订单ID
|
||||
* @return CommonResult 操作结果
|
||||
*/
|
||||
@Override
|
||||
public CommonResult recreateOrder(String shopOrderId) {
|
||||
logger.info("[顺丰] 开始重新创建订单: shopOrderId={}", shopOrderId);
|
||||
|
||||
// 参数校验
|
||||
if (StrUtil.isBlank(shopOrderId)) {
|
||||
logger.warn("[顺丰] 重新创建订单失败: 订单ID为空");
|
||||
return CommonResult.failed("订单ID不能为空");
|
||||
}
|
||||
|
||||
// 获取顺丰订单ID
|
||||
String sfOrderId = shopStoreSfOrderService.getSfOrderIdByShopOrderId(shopOrderId);
|
||||
if (StrUtil.isBlank(sfOrderId)) {
|
||||
logger.warn("[顺丰] 重新创建订单失败: 未找到对应的顺丰订单, shopOrderId={}", shopOrderId);
|
||||
return CommonResult.failed("未找到对应的顺丰订单");
|
||||
}
|
||||
|
||||
try {
|
||||
// 取消原订单
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("order_id", sfOrderId);
|
||||
ThirdApiRes cancelOrderRes = cancelOrder(params);
|
||||
if (cancelOrderRes != null && !ObjectUtil.equal(cancelOrderRes.getError_code(), 0)) {
|
||||
logger.error("[顺丰] 取消原订单失败: errorCode={}, errorMsg={}",
|
||||
cancelOrderRes.getError_code(), cancelOrderRes.getError_msg());
|
||||
return CommonResult.failed(cancelOrderRes.getError_msg());
|
||||
}
|
||||
|
||||
// 重新创建订单,传递默认取货号1
|
||||
Pair<Boolean, String> createOrderRes = innerCreateSfExpressOrder(shopOrderId, 0L, true);
|
||||
if (createOrderRes.getFirst()) {
|
||||
logger.info("[顺丰] 重新创建订单成功: shopOrderId={}", shopOrderId);
|
||||
return CommonResult.success();
|
||||
}
|
||||
|
||||
logger.error("[顺丰] 重新创建订单失败: {}", createOrderRes.getSecond());
|
||||
return CommonResult.failed(createOrderRes.getSecond());
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("[顺丰] 重新创建订单过程中发生异常: shopOrderId={}", shopOrderId, e);
|
||||
return CommonResult.failed("系统异常: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取顺丰同城店铺信息
|
||||
*
|
||||
@ -592,18 +645,19 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
|
||||
*
|
||||
* @param shopOrderId
|
||||
* @param orderPickupNum
|
||||
* @param ignoreExists
|
||||
* @return
|
||||
*/
|
||||
@Transactional
|
||||
@Override
|
||||
public Pair<Boolean, String> innerCreateSfExpressOrder(String shopOrderId, Long orderPickupNum) {
|
||||
public Pair<Boolean, String> innerCreateSfExpressOrder(String shopOrderId, Long orderPickupNum, Boolean ignoreExists) {
|
||||
logger.info("开始顺丰同城下单");
|
||||
if (StrUtil.isBlank(shopOrderId) || orderPickupNum == null) {
|
||||
if (StrUtil.isBlank(shopOrderId) || CheckUtil.isEmpty(orderPickupNum)) {
|
||||
return Pair.of(false, "顺丰同城下单时,缺少必要参数!");
|
||||
}
|
||||
|
||||
// 检查 shop_store_sf_order 订单是否已存在?
|
||||
if (shopStoreSfOrderService.exists(devId, shopOrderId)) {
|
||||
if (!ignoreExists && shopStoreSfOrderService.exists(devId, shopOrderId)) {
|
||||
return Pair.of(true, "顺丰同城已下单过!");
|
||||
}
|
||||
|
||||
@ -645,7 +699,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
|
||||
shopStoreSfOrder.setStatus_desc("已创建顺丰同城订单");
|
||||
|
||||
// 下单成功,保存顺丰同城订单记录到 shop_store_sf_order 表里
|
||||
Boolean success = shopStoreSfOrderService.insertShopStoreSfOrder(shopStoreSfOrder);
|
||||
Boolean success = shopStoreSfOrderService.saveShopStoreSfOrder(shopStoreSfOrder);
|
||||
if (!success) {
|
||||
logger.error("顺丰下单返回的结果:{}", sfExpressApiRes.get("result").toString());
|
||||
return Pair.of(false, "保存顺丰同城下单失败!");
|
||||
|
||||
@ -31,12 +31,12 @@ public interface ShopStoreSfOrderService extends IBaseService<ShopStoreSfOrder>
|
||||
String getSfOrderIdByShopOrderId(String shopOrderId);
|
||||
|
||||
/**
|
||||
* 新增一个顺丰同城订单记录
|
||||
* 保存(新增或更新)一个顺丰同城订单记录
|
||||
*
|
||||
* @param record
|
||||
* @return
|
||||
*/
|
||||
Boolean insertShopStoreSfOrder(ShopStoreSfOrder record);
|
||||
Boolean saveShopStoreSfOrder(ShopStoreSfOrder record);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@ -92,7 +92,7 @@ public class ShopStoreSfOrderServiceImpl extends BaseServiceImpl<ShopStoreSfOrde
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertShopStoreSfOrder(ShopStoreSfOrder record) {
|
||||
public Boolean saveShopStoreSfOrder(ShopStoreSfOrder record) {
|
||||
if (record == null) {
|
||||
logger.info("参数空值,保存失败!");
|
||||
return false;
|
||||
@ -103,6 +103,13 @@ public class ShopStoreSfOrderServiceImpl extends BaseServiceImpl<ShopStoreSfOrde
|
||||
return false;
|
||||
}
|
||||
|
||||
ShopStoreSfOrder shopStoreSfOrder = getByShopOrderId(record.getShop_order_id());
|
||||
if (shopStoreSfOrder != null) {
|
||||
logger.warn("该商家订单已存在,进行更新操作:{}", record);
|
||||
record.setId(shopStoreSfOrder.getId());
|
||||
return updateById(record);
|
||||
}
|
||||
|
||||
return save(record);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user