Commit 69bef832 authored by shiyu's avatar shiyu

退款后恢复库存

parent f6727afa
...@@ -115,6 +115,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { ...@@ -115,6 +115,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
@Autowired @Autowired
DistributorProfitService distributorProfitService; DistributorProfitService distributorProfitService;
@Transactional @Transactional
@Override @Override
public Result createDistributionOrder(DistributionOrderRequestDto dto) { public Result createDistributionOrder(DistributionOrderRequestDto dto) {
...@@ -1094,6 +1095,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { ...@@ -1094,6 +1095,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
@Override @Override
public Result refund(DistributionOrderRequestDto dto) { public Result refund(DistributionOrderRequestDto dto) {
RLock lock = null;
try { try {
String refundId = IdUtils.getOrderNumber(REFUND_ORDER_PREFIX); String refundId = IdUtils.getOrderNumber(REFUND_ORDER_PREFIX);
//判断订单状态 //判断订单状态
...@@ -1128,14 +1130,30 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { ...@@ -1128,14 +1130,30 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
refundOrder.setUpdateTime(now); refundOrder.setUpdateTime(now);
refundOrder.setState(DistributionEnum.RefundOrderStateEnum.PROCESSING.getCode()); refundOrder.setState(DistributionEnum.RefundOrderStateEnum.PROCESSING.getCode());
refundOrderDao.insert(refundOrder); refundOrderDao.insert(refundOrder);
//退款受理成功,订单的状态改为退款受理中 //退款受理成功,订单的状态改为退款受理中
distributionOrderDao.updateState(distributionOrderId, DistributionEnum.DistributionOrderStateEnum.REFUNDING.getCode()); distributionOrderDao.updateState(distributionOrderId, DistributionEnum.DistributionOrderStateEnum.REFUNDING.getCode());
//恢复商品库存
long itemId = distributionOrder.getItemId();
String itemIdKey = String.valueOf(itemId);
lock = redissonClient.getLock(itemIdKey);
if (lock.tryLock(5, 5, TimeUnit.SECONDS)) {
SupplierItem supplierItem = supplierItemDao.findById(itemId);
int updateStock = supplierItem.getStock().intValue() + distributionOrder.getItemNum().intValue();
supplierItemDao.updateStock(itemId, updateStock);
} else {
logger.error(">>>>>>>>> 未能获取到锁,退款后恢复库存失败 <<<<<<<<<<");
return Result.failed("退款后恢复库存失败");
}
logger.info(">>>>>>>> 分销单号:{}, 退款单号:{}, 退款申请成功,创建退款单 <<<<<<<<<", distributionOrderId, refundId); logger.info(">>>>>>>> 分销单号:{}, 退款单号:{}, 退款申请成功,创建退款单 <<<<<<<<<", distributionOrderId, refundId);
return Result.success(refundId); return Result.success(refundId);
} }
} catch (Exception e) { } catch (Exception e) {
logger.error("退款申请失败 error : {}", e); logger.error("退款申请失败 error : {}", e);
} finally {
if (lock != null && lock.isHeldByCurrentThread()) {
lock.unlock();
}
} }
return Result.failed(); return Result.failed();
} }
......
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