增加重新派单接口
This commit is contained in:
parent
7938cad0cc
commit
951a1f3cf7
@ -154,7 +154,7 @@ public class OrderPayedListener {
|
|||||||
&& !isBookingOrder) {
|
&& !isBookingOrder) {
|
||||||
|
|
||||||
// 如果是立即下单,将触发顺丰同城下单,否则(预约下单) redis+cron 定时触发顺丰同城下单
|
// 如果是立即下单,将触发顺丰同城下单,否则(预约下单) redis+cron 定时触发顺丰同城下单
|
||||||
Pair<Boolean, String> pairCreateSfOrder = sfExpressApiService.innerCreateSfExpressOrder(orderId, orderPickupNum);
|
Pair<Boolean, String> pairCreateSfOrder = sfExpressApiService.innerCreateSfExpressOrder(orderId, orderPickupNum, false);
|
||||||
if (pairCreateSfOrder == null) {
|
if (pairCreateSfOrder == null) {
|
||||||
logger.error("[订单支付监听] 顺丰同城下单失败,无返回值 订单ID: {}", orderId);
|
logger.error("[订单支付监听] 顺丰同城下单失败,无返回值 订单ID: {}", orderId);
|
||||||
continue;
|
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) {
|
if (sfResult == null) {
|
||||||
logger.error("[预约订单顺丰下单] 调用顺丰接口无返回值, orderId={}", orderId);
|
logger.error("[预约订单顺丰下单] 调用顺丰接口无返回值, orderId={}", orderId);
|
||||||
throw new RuntimeException("预约订单顺丰下单失败,接口无响应");
|
throw new RuntimeException("预约订单顺丰下单失败,接口无响应");
|
||||||
|
|||||||
@ -44,7 +44,7 @@ public class SFExpressAdminController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ApiOperation(value = "创建顺丰同城店铺", notes = "创建顺丰同城店铺")
|
@ApiOperation(value = "【测试补偿】创建顺丰同城店铺", notes = "创建顺丰同城店铺")
|
||||||
@RequestMapping(value = "/create-shop-inner", method = RequestMethod.POST)
|
@RequestMapping(value = "/create-shop-inner", method = RequestMethod.POST)
|
||||||
public CommonResult createSfExpressShopNotify(@RequestBody JSONObject requestBody) {
|
public CommonResult createSfExpressShopNotify(@RequestBody JSONObject requestBody) {
|
||||||
Pair<Boolean, String> result = sfExpressApiService.createSfExpressShopInner(
|
Pair<Boolean, String> result = sfExpressApiService.createSfExpressShopInner(
|
||||||
@ -64,4 +64,12 @@ public class SFExpressAdminController {
|
|||||||
}
|
}
|
||||||
return CommonResult.failed(result.getSecond());
|
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);
|
ThirdApiRes createSfExpressShopNotify(String jsonData, String sign);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建顺丰同城订单
|
||||||
|
*
|
||||||
|
* @param shopOrderId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
ThirdApiRes createOrder(String shopOrderId);
|
ThirdApiRes createOrder(String shopOrderId);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重新创建顺丰同城订单
|
||||||
|
*
|
||||||
|
* @param shopOrderId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
CommonResult recreateOrder(String shopOrderId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取顺丰同城店铺信息
|
* 获取顺丰同城店铺信息
|
||||||
*
|
*
|
||||||
@ -85,9 +100,10 @@ public interface SFExpressApiService {
|
|||||||
*
|
*
|
||||||
* @param orderId
|
* @param orderId
|
||||||
* @param orderPickupNum
|
* @param orderPickupNum
|
||||||
|
* @param ignoreExists 是否忽略已存在本地订单
|
||||||
* @return
|
* @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
|
@Autowired
|
||||||
private ShopMchEntryService shopMchEntryService;
|
private ShopMchEntryService shopMchEntryService;
|
||||||
|
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
@Autowired
|
@Autowired
|
||||||
private PushMessageService pushMessageService;
|
private PushMessageService pushMessageService;
|
||||||
@ -553,6 +552,60 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
|
|||||||
return JsonUtil.json2object(retRespStr, ThirdApiRes.class);
|
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 shopOrderId
|
||||||
* @param orderPickupNum
|
* @param orderPickupNum
|
||||||
|
* @param ignoreExists
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public Pair<Boolean, String> innerCreateSfExpressOrder(String shopOrderId, Long orderPickupNum) {
|
public Pair<Boolean, String> innerCreateSfExpressOrder(String shopOrderId, Long orderPickupNum, Boolean ignoreExists) {
|
||||||
logger.info("开始顺丰同城下单");
|
logger.info("开始顺丰同城下单");
|
||||||
if (StrUtil.isBlank(shopOrderId) || orderPickupNum == null) {
|
if (StrUtil.isBlank(shopOrderId) || CheckUtil.isEmpty(orderPickupNum)) {
|
||||||
return Pair.of(false, "顺丰同城下单时,缺少必要参数!");
|
return Pair.of(false, "顺丰同城下单时,缺少必要参数!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检查 shop_store_sf_order 订单是否已存在?
|
// 检查 shop_store_sf_order 订单是否已存在?
|
||||||
if (shopStoreSfOrderService.exists(devId, shopOrderId)) {
|
if (!ignoreExists && shopStoreSfOrderService.exists(devId, shopOrderId)) {
|
||||||
return Pair.of(true, "顺丰同城已下单过!");
|
return Pair.of(true, "顺丰同城已下单过!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -645,7 +699,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService {
|
|||||||
shopStoreSfOrder.setStatus_desc("已创建顺丰同城订单");
|
shopStoreSfOrder.setStatus_desc("已创建顺丰同城订单");
|
||||||
|
|
||||||
// 下单成功,保存顺丰同城订单记录到 shop_store_sf_order 表里
|
// 下单成功,保存顺丰同城订单记录到 shop_store_sf_order 表里
|
||||||
Boolean success = shopStoreSfOrderService.insertShopStoreSfOrder(shopStoreSfOrder);
|
Boolean success = shopStoreSfOrderService.saveShopStoreSfOrder(shopStoreSfOrder);
|
||||||
if (!success) {
|
if (!success) {
|
||||||
logger.error("顺丰下单返回的结果:{}", sfExpressApiRes.get("result").toString());
|
logger.error("顺丰下单返回的结果:{}", sfExpressApiRes.get("result").toString());
|
||||||
return Pair.of(false, "保存顺丰同城下单失败!");
|
return Pair.of(false, "保存顺丰同城下单失败!");
|
||||||
|
|||||||
@ -31,12 +31,12 @@ public interface ShopStoreSfOrderService extends IBaseService<ShopStoreSfOrder>
|
|||||||
String getSfOrderIdByShopOrderId(String shopOrderId);
|
String getSfOrderIdByShopOrderId(String shopOrderId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增一个顺丰同城订单记录
|
* 保存(新增或更新)一个顺丰同城订单记录
|
||||||
*
|
*
|
||||||
* @param record
|
* @param record
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Boolean insertShopStoreSfOrder(ShopStoreSfOrder record);
|
Boolean saveShopStoreSfOrder(ShopStoreSfOrder record);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -92,7 +92,7 @@ public class ShopStoreSfOrderServiceImpl extends BaseServiceImpl<ShopStoreSfOrde
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Boolean insertShopStoreSfOrder(ShopStoreSfOrder record) {
|
public Boolean saveShopStoreSfOrder(ShopStoreSfOrder record) {
|
||||||
if (record == null) {
|
if (record == null) {
|
||||||
logger.info("参数空值,保存失败!");
|
logger.info("参数空值,保存失败!");
|
||||||
return false;
|
return false;
|
||||||
@ -103,6 +103,13 @@ public class ShopStoreSfOrderServiceImpl extends BaseServiceImpl<ShopStoreSfOrde
|
|||||||
return false;
|
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);
|
return save(record);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user