Commit 69bef832 authored by shiyu's avatar shiyu

退款后恢复库存

parent f6727afa
......@@ -115,6 +115,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
@Autowired
DistributorProfitService distributorProfitService;
@Transactional
@Override
public Result createDistributionOrder(DistributionOrderRequestDto dto) {
......@@ -1094,6 +1095,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
@Override
public Result refund(DistributionOrderRequestDto dto) {
RLock lock = null;
try {
String refundId = IdUtils.getOrderNumber(REFUND_ORDER_PREFIX);
//判断订单状态
......@@ -1128,14 +1130,30 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
refundOrder.setUpdateTime(now);
refundOrder.setState(DistributionEnum.RefundOrderStateEnum.PROCESSING.getCode());
refundOrderDao.insert(refundOrder);
//退款受理成功,订单的状态改为退款受理中
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);
return Result.success(refundId);
}
} catch (Exception e) {
logger.error("退款申请失败 error : {}", e);
} finally {
if (lock != null && lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
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