## 调换货物进行校验,原订单价格和调换完货之后的价格不相同,就不让进行换货

This commit is contained in:
zhangheng 2025-09-05 11:45:50 +08:00 committed by cabbage
parent 8bd19b58af
commit 40bdd85423
2 changed files with 15 additions and 35 deletions

View File

@ -608,12 +608,12 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
// 查询订单信息
SaOrderExt saOrder = iSaOrderService.queryOrderByCode(orderCode, pkCountry);
if (null == saOrder) {
return TransactionUtils.getContent(CommonMsgConstants.OPERATION_FAILED) + "" + orderCode + SaOrderMsgConstants.ORDER_NOT_EXIST;
return CommonMsgConstants.OPERATION_FAILED + "" + orderCode + SaOrderMsgConstants.ORDER_NOT_EXIST;
}
// 订单支付日期 < 当前日期-7天
Date beforeDate = DateUtils.addDate(DateUtils.getStartTime(nowDate), -7);
if (beforeDate.compareTo(saOrder.getPayTime()) > 0) {
return TransactionUtils.getContent(DocumentMsgConstants.DOCUMENT_ORDER_SETTLED);
return DocumentMsgConstants.DOCUMENT_ORDER_SETTLED;
}
// 操作日志内容
@ -679,16 +679,13 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
return "订单已经发货,不能进行调换货物";
}
// 是否扣款
boolean orderCostFlag = false;
// 修改前的订单金额 + 邮费
BigDecimal beforeAmount = saOrder.getOrderAmount().add(saOrder.getPostage()).setScale(2, BigDecimal.ROUND_HALF_UP);
// 修改后的订单金额 + 邮费
BigDecimal afterAmount = afterData.getOrderAmount().add(param.getPostage()).setScale(2, BigDecimal.ROUND_HALF_UP);
// 对比修改前后订单价格处理是否补差价
// 校验订单原订单价格和调换完货之后的价格不相同不进行换货
if (beforeAmount.compareTo(afterAmount) != 0) {
// 修改前后金额不相同则进行处理
orderCostFlag = true;
return CommonMsgConstants.OPERATION_FAILED + "" + param.getOrderCode() + SaOrderMsgConstants.PRODUCT_CONFIRM_PRICE;
}
if (iSaOrderChargeLogService.save(saOrderChargeLog)) {
@ -697,13 +694,7 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
changeIdList, noChangeIdList,
userId, pkCountry, nowDate);
if (orderCostFlag) {
// 订单调换货物扣费处理
R resultR = iMemberAccountServiceApi.orderChangeProduct(saOrder, updateOrder, userId, dto);
if (!resultR.isSuccess()) {
throw new BaseException(resultR.getMsg());
}
} else if (null != dto) {
if (null != dto) {
// 订单总价未变化但是需要手续费
R resultR = iMemberAccountServiceApi.orderChangeProduct(null, null, userId, dto);
if (!resultR.isSuccess()) {
@ -736,12 +727,12 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
// 查询订单收货地址信息
SaOrderExt saOrder = iSaOrderService.queryOrderByCode(orderCode, pkCountry);
if (null == saOrder) {
return TransactionUtils.getContent(CommonMsgConstants.OPERATION_FAILED) + "" + orderCode + SaOrderMsgConstants.ORDER_NOT_EXIST;
return CommonMsgConstants.OPERATION_FAILED + "" + orderCode + SaOrderMsgConstants.ORDER_NOT_EXIST;
}
// 订单支付日期 < 当前日期-7天
Date beforeDate = DateUtils.addDate(DateUtils.getStartTime(nowDate), -7);
if (beforeDate.compareTo(saOrder.getPayTime()) > 0) {
return TransactionUtils.getContent(DocumentMsgConstants.DOCUMENT_ORDER_SETTLED);
return DocumentMsgConstants.DOCUMENT_ORDER_SETTLED;
}
// 涉及会员ID列表
@ -786,24 +777,9 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
BigDecimal beforeAmount = saOrder.getOrderAmount().add(saOrder.getPostage()).setScale(2, BigDecimal.ROUND_HALF_UP);
// 修改后的订单金额 + 邮费
BigDecimal afterAmount = afterData.getOrderAmount().add(param.getPostage()).setScale(2, BigDecimal.ROUND_HALF_UP);
// 对比修改前后订单价格处理是否补差价
if (beforeAmount.compareTo(afterAmount) < 0) {
// 存在差额
// 封装订单数据
SaOrder updateOrder = BeanUtil.copyProperties(saOrder, SaOrder.class);
updateOrder.setPkId(saOrder.getPkId());
updateOrder.setOrderAmount(afterData.getOrderAmount());
updateOrder.setOrderAchieve(afterData.getOrderAchieve());
updateOrder.setOrderAssAchieve(afterData.getOrderAssAchieve());
updateOrder.setPostage(param.getPostage());
updateOrder.setPkModified(userId);
updateOrder.setModifiedTime(nowDate);
// 校验订单支付金额是否足够
R resultR = iMemberAccountServiceApi.orderChangeProductPre(saOrder, updateOrder);
if (!resultR.isSuccess()) {
return resultR.getMsg();
}
//校验订单原订单价格和调换完货之后的价格不相同不进行换货
if (beforeAmount.compareTo(afterAmount) != 0) {
return CommonMsgConstants.OPERATION_FAILED + "" + param.getOrderCode() + SaOrderMsgConstants.PRODUCT_CONFIRM_PRICE;
}
if (iSaOrderChargeLogService.save(saOrderChargeLog)) {
@ -817,7 +793,7 @@ public class OrderBusinessServiceImpl implements IOrderBusinessService {
}
return submitStr;
}
return TransactionUtils.getContent(CommonMsgConstants.OPERATION_FAILED);
return CommonMsgConstants.OPERATION_FAILED;
}
@Transactional(rollbackFor = Exception.class)

View File

@ -173,4 +173,8 @@ public class SaOrderMsgConstants {
*/
public static final String WARES_PRE_SALE_QUANTITY_LACK = "商品预售数量不足";
/**
* 原订单价格和调换完货之后的价格不相同 -- 不允许货物调换
*/
public static final String PRODUCT_CONFIRM_PRICE = "原订单价格和调换完货之后的价格不相同";
}