|
@@ -4569,6 +4569,14 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void mergeOrderAmount(LoginUser loginUser, MergeOrderAmountReqVO reqVO) {
|
|
public void mergeOrderAmount(LoginUser loginUser, MergeOrderAmountReqVO reqVO) {
|
|
|
LinkedHashSet<Long> orderIdSet = new LinkedHashSet<>(reqVO.getOrderIds());
|
|
LinkedHashSet<Long> orderIdSet = new LinkedHashSet<>(reqVO.getOrderIds());
|
|
|
|
|
+ Asserts.isTrue(!orderIdSet.isEmpty(), MERGE_ORDER_AMOUNT_ERROR + "请选择订单");
|
|
|
|
|
+ if (orderIdSet.size() == 1) {
|
|
|
|
|
+ Long orderId = orderIdSet.iterator().next();
|
|
|
|
|
+ Asserts.isTrue(Objects.equals(orderId, reqVO.getTargetOrderId()),
|
|
|
|
|
+ MERGE_ORDER_AMOUNT_ERROR + "目标订单必须为已选订单");
|
|
|
|
|
+ updateSingleOrderAmount(loginUser, orderId, reqVO);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
Asserts.isTrue(orderIdSet.size() >= 2, MERGE_ORDER_AMOUNT_ERROR + "至少选择两个不同的订单");
|
|
Asserts.isTrue(orderIdSet.size() >= 2, MERGE_ORDER_AMOUNT_ERROR + "至少选择两个不同的订单");
|
|
|
Asserts.isTrue(orderIdSet.contains(reqVO.getTargetOrderId()),
|
|
Asserts.isTrue(orderIdSet.contains(reqVO.getTargetOrderId()),
|
|
|
MERGE_ORDER_AMOUNT_ERROR + "目标订单必须在已选订单中");
|
|
MERGE_ORDER_AMOUNT_ERROR + "目标订单必须在已选订单中");
|
|
@@ -4657,6 +4665,54 @@ public class OtcTradeOrderServiceImpl implements OtcTradeOrderService {
|
|
|
reqVO.getMergedOrderAmount(), reqVO.getMergedPayAmount());
|
|
reqVO.getMergedOrderAmount(), reqVO.getMergedPayAmount());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private void updateSingleOrderAmount(LoginUser loginUser, Long orderId, MergeOrderAmountReqVO reqVO) {
|
|
|
|
|
+ TradeOrderDO order = tradeOrderMapper.selectOne(new LambdaQueryWrapper<TradeOrderDO>()
|
|
|
|
|
+ .eq(TradeOrderDO::getId, orderId)
|
|
|
|
|
+ .last("FOR UPDATE"));
|
|
|
|
|
+ Asserts.isTrue(order != null, MERGE_ORDER_AMOUNT_ERROR + "订单不存在或无权操作");
|
|
|
|
|
+ Asserts.isTrue(order.getOrderStatus() != null && order.getOrderStatus() >= 0,
|
|
|
|
|
+ MERGE_ORDER_AMOUNT_ERROR + "只允许修改订单状态大于等于 0 的订单");
|
|
|
|
|
+ Asserts.isTrue(Objects.equals(order.getPayStatus(), 0),
|
|
|
|
|
+ MERGE_ORDER_AMOUNT_ERROR + "只允许修改未支付订单");
|
|
|
|
|
+
|
|
|
|
|
+ TradeOrderTotalDO orderTotal = tradeOrderTotalMapper.selectOne(
|
|
|
|
|
+ new LambdaQueryWrapper<TradeOrderTotalDO>()
|
|
|
|
|
+ .eq(TradeOrderTotalDO::getOldOrderId, orderId)
|
|
|
|
|
+ .last("FOR UPDATE"));
|
|
|
|
|
+ Asserts.isTrue(orderTotal != null, MERGE_ORDER_AMOUNT_ERROR + "订单汇总信息不存在");
|
|
|
|
|
+
|
|
|
|
|
+ TradeOrderDO orderUpdate = new TradeOrderDO();
|
|
|
|
|
+ orderUpdate.setId(order.getId());
|
|
|
|
|
+ orderUpdate.setAmount(reqVO.getMergedOrderAmount());
|
|
|
|
|
+ orderUpdate.setPayAmount(reqVO.getMergedPayAmount());
|
|
|
|
|
+ tradeOrderMapper.updateById(orderUpdate);
|
|
|
|
|
+
|
|
|
|
|
+ TradeOrderTotalDO totalUpdate = new TradeOrderTotalDO();
|
|
|
|
|
+ totalUpdate.setId(orderTotal.getId());
|
|
|
|
|
+ totalUpdate.setOrderMoney(reqVO.getMergedOrderAmount());
|
|
|
|
|
+ totalUpdate.setRealMoney(reqVO.getMergedPayAmount());
|
|
|
|
|
+ tradeOrderTotalMapper.updateById(totalUpdate);
|
|
|
|
|
+
|
|
|
|
|
+ insertManualOrderAmountUpdateLog(loginUser, order, reqVO);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void insertManualOrderAmountUpdateLog(LoginUser loginUser, TradeOrderDO order,
|
|
|
|
|
+ MergeOrderAmountReqVO reqVO) {
|
|
|
|
|
+ TradeOrderLogDO logDO = new TradeOrderLogDO();
|
|
|
|
|
+ logDO.setId(IdWorker.getId());
|
|
|
|
|
+ logDO.setOrderId(order.getId());
|
|
|
|
|
+ logDO.setUserId(loginUser.getId());
|
|
|
|
|
+ logDO.setUserType(loginUser.getUserType());
|
|
|
|
|
+ logDO.setBeforeStatus(order.getOrderStatus());
|
|
|
|
|
+ logDO.setAfterStatus(order.getOrderStatus());
|
|
|
|
|
+ logDO.setOperateType(TradeOrderOperateTypeEnum.UPDATE_ORDER_INFO.getType());
|
|
|
|
|
+ logDO.setContent("手动修改订单金额;修改前订单金额:" + defaultMoney(order.getAmount())
|
|
|
|
|
+ + ",实际金额:" + defaultMoney(order.getPayAmount())
|
|
|
|
|
+ + ";修改后订单金额:" + reqVO.getMergedOrderAmount()
|
|
|
|
|
+ + ",实际金额:" + reqVO.getMergedPayAmount());
|
|
|
|
|
+ tradeOrderLogMapper.insert(logDO);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private void insertSourceMergeOrderLog(LoginUser loginUser, TradeOrderDO sourceOrder,
|
|
private void insertSourceMergeOrderLog(LoginUser loginUser, TradeOrderDO sourceOrder,
|
|
|
TradeOrderDO targetOrder) {
|
|
TradeOrderDO targetOrder) {
|
|
|
TradeOrderLogDO logDO = new TradeOrderLogDO();
|
|
TradeOrderLogDO logDO = new TradeOrderLogDO();
|