退款类注释

This commit is contained in:
Jack 2025-07-03 00:05:20 +08:00
parent 87b15279b7
commit a39a0ab475
2 changed files with 114 additions and 20 deletions

View File

@ -26,6 +26,17 @@ mall-im
"sslkey_name": "apiclient_key.pem"
}
手动备份数据库
```shell
进入 docker 控制台
cd /var/lib/mysql
mysqldump -u root -p mall_prod | gzip > mall_prod_20250630.sql.gz
在宿主机找到:
/data/mysql/data/mall_prod_20250630.sql.gz
```
清除 docker 日志
查看哪个文件夹占空间

View File

@ -229,7 +229,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
}
/**
* 退款退货-发货退货,卖家也可以决定不退货退款买家申请退款不支持卖家可以主动退款列表数据
* 退款退货列表数据
*
* @return
*/
@ -257,7 +257,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
}
/**
* 读取退款退货-发货退货,卖家也可以决定不退货退款买家申请退款不支持卖家可以主动退款
* 读取退款退货一条数据
*
* @return
*/
@ -279,7 +279,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
}
/**
* 订单item详情,列出订单的item及退款详情
* 退货订单item详情,列出订单的item及退款详情
*
* @return
*/
@ -411,7 +411,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
public CommonResult addItem(OrderReturnInputVo orderReturnInputVo) {
Map data = new HashMap();
Integer user_id = null;
Integer user_id;
if (CheckUtil.isEmpty(orderReturnInputVo.getUser_id())) {
UserDto user = getCurrentUser();
if (user == null) {
@ -740,14 +740,19 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
@GlobalTransactional
public boolean refund(String return_id) {
UserDto user = getCurrentUser();
if (user == null || CheckUtil.isEmpty(user.getStore_id())) {
logger.error("无操作权限!");
return false;
}
Integer store_id = Convert.toInt(user.getStore_id());
ShopOrderReturn orderReturn = get(return_id);
if (CheckUtil.checkDataRights(store_id, orderReturn, ShopOrderReturn::getStore_id)) {
processReviewList(Collections.singletonList(return_id), Collections.singletonList(orderReturn), StateCode.RETURN_PROCESS_REFUND, null);
} else {
if (!CheckUtil.checkDataRights(store_id, orderReturn, ShopOrderReturn::getStore_id)) {
throw new ApiException(I18nUtil._("无操作权限!"));
}
processReviewList(Collections.singletonList(return_id), Collections.singletonList(orderReturn), StateCode.RETURN_PROCESS_REFUND, null);
return true;
}
@ -852,6 +857,13 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
return CommonResult.success(return_id);
}
/**
* 强制退货
*
* @param return_id
* @param return_flag
* @return
*/
@Override
@GlobalTransactional
public CommonResult doForceRefund(String return_id, Integer return_flag) {
@ -862,7 +874,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
Integer store_id = Convert.toInt(user.getStore_id());
if (user.isPlatform() || CheckUtil.checkDataRights(store_id, shopOrderReturn, ShopOrderReturn::getStore_id)) {
// 强制退款 想将退款订单状态给我待审核状态 直接执行修改状态 然后再走退款流程
//平台方 强制退款 想将退款订单状态设置待审核状态 直接执行修改状态 然后再走退款流程
ShopOrderReturn orderReturn = new ShopOrderReturn();
orderReturn.setReturn_state_id(StateCode.RETURN_PROCESS_CHECK);
editReturnNextState(return_ids, StateCode.RETURN_PROCESS_REFUSED, orderReturn);
@ -884,7 +896,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
}
/**
* 修改退款退货-未发货退款发货退货,卖家也可以决定不退货退款买家申请退款不支持卖家可以主动退款
* 修改退款退货记录
*
* @param return_id
* @param return_refund_amount
@ -1108,7 +1120,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
return_row.put("return_state_name", stateCodeService.getText(Convert.toInt(return_row.get("return_state_id")), "1"));
Integer plantform_return_state_id = Convert.toInt(return_row.get("plantform_return_state_id"));
return_row.put("plantform_return_state_name", getPlantformReturnStateId(plantform_return_state_id));
return_row.put("plantform_return_state_name", getPlantformReturnStateName(plantform_return_state_id));
return return_row;
@ -1245,17 +1257,23 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
String return_id = return_row.getReturn_id();
switch (state_id) {
case StateCode.RETURN_PROCESS_CHECK:
// 退单审核1ReturnReturn
if (ifReview(return_state_id)) {
review_ids.add(return_id);
}
break;
case StateCode.RETURN_PROCESS_RECEIVED:
// 收货确认0ReturnReturn
if (ifReceived(return_state_id)) {
review_ids.add(return_id);
}
break;
case StateCode.RETURN_PROCESS_REFUND:
// 退款确认0ReturnReturn
Integer return_is_paid = return_row.getReturn_is_paid();
if (ifRefund(return_state_id, return_is_paid)) {
review_ids.add(return_id);
@ -1278,7 +1296,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
}
/**
* 修改订单为下一个待处理状态
* 重要修改订单为下一个待处理状态并实时退款
*
* @param return_ids 退货订单id
* @param store_id 所属店铺
@ -1287,7 +1305,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
* RETURN_PROCESS_CHECK = 3105; //退单审核1ReturnReturn
* RETURN_PROCESS_RECEIVED = 3110; //收货确认0ReturnReturn
* RETURN_PROCESS_REFUND = 3115; //退款确认0ReturnReturn
* RETURN_PROCESS_RECEIPT_CONFIRMATION = 3120; //客户收款确认0ReturnReturn
* RETURN_PROCESS_RECEIPT_CONFIRMATION = 3120; //[客户收款确认0 ReturnReturn
* RETURN_PROCESS_FINISH = 3125; //完成1 ReturnReturn3130-商家拒绝退货
* RETURN_PROCESS_REFUSED = 3130; //-商家拒绝退货
* RETURN_PROCESS_CANCEL = 3135; //-买家取消
@ -1328,18 +1346,21 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
if (shopOrderItem == null) {
throw new ApiException(I18nUtil._("该订单商品表信息不存在!"));
}
// 已出库的订单商品库存需要回滚
// 库存相关已出库的订单商品库存需要回滚
Long itemId = shopOrderItem.getItem_id();
ShopProductItem productItem = shopProductItemService.get(itemId);
if (productItem == null) {
throw new ApiException(I18nUtil._("该订单商品表-SKU表信息不存在"));
}
productItem.setItem_quantity(productItem.getItem_quantity() + returnItem.getReturn_item_num());
if (!shopProductItemService.edit(productItem)) {
throw new ApiException(I18nUtil._("增加库存失败!"));
}
}
}
}
@ -1362,7 +1383,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
//修改退货订单及其相关商品为下一个待处理状态
editReturnNextState(return_ids, return_state_id, shopOrderReturn);
// 当前状态 - 旧状态
// 当前状态旧状态
if (ObjectUtil.equal(return_state_id, StateCode.RETURN_PROCESS_CHECK)) {
// 同意退款退货判断是否全部都退款退货修改订单状态
// todo 判断是否全部退货
@ -1376,6 +1397,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
QueryWrapper<ShopOrderItem> orderItemQueryWrapper = new QueryWrapper<>();
orderItemQueryWrapper.eq("order_id", order_id);
List<ShopOrderItem> orderItemList = shopOrderItemService.find(orderItemQueryWrapper);
// 累计订单项支付总金额
BigDecimal order_item_payment_amount = orderItemList.stream().map(s -> s.getOrder_item_payment_amount()).reduce(BigDecimal::add).get();
// 当前已经同意退款额度 = 所有单品退款额度
@ -1403,7 +1425,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
// todo 未发货退运费 - 判断运费是否存在
ShopOrderData order_data_row = shopOrderDataService.get(order_id);
if (order_data_row != null && order_data_row.getOrder_shipping_fee().compareTo(BigDecimal.ZERO) > 0) {
// todo 执行退运费操作, 有两种方案1生成退运费售后服务单 2直接执行退款
// 运费大于0的 执行退运费操作, 有两种方案1生成退运费售后服务单 2直接执行退款
// 1生成退运费售后服务单
UserDto user = getCurrentUser();
@ -1437,6 +1459,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
return_order_shipping_fee_row.setReturn_id(return_id);
if (!add(return_order_shipping_fee_row)) {
// 1生成退运费售后服务单
throw new ApiException(I18nUtil._("生成退运费订单失败!"));
}
@ -1444,6 +1467,8 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
ShopOrderData orderData = shopOrderDataService.get(order_id);
BigDecimal order_refund_amount = orderData.getOrder_refund_amount();
orderData.setOrder_refund_amount(NumberUtil.add(order_refund_amount, order_shipping_fee));
// RMK: 加上运费没有后续了吗
}
}
} else {
@ -1456,10 +1481,10 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
}
}
// 修改订单同步状态 重新同步
// 修改订单同步状态 重新同步
ShopOrderInfo orderInfo = new ShopOrderInfo();
orderInfo.setOrder_id(order_id);
orderInfo.setOrder_is_sync(0);
orderInfo.setOrder_is_sync(0); // 订单同步状态
if (!shopOrderInfoService.edit(orderInfo)) {
throw new ApiException(I18nUtil._("修改订单同步状态失败!"));
}
@ -1531,7 +1556,13 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
return return_process.contains(return_state_id) && CheckUtil.isEmpty(return_is_paid);
}
private String getPlantformReturnStateId(Integer plantform_return_state_id) {
/**
* 获取平台退货单状态名称
*
* @param plantform_return_state_id
* @return
*/
private String getPlantformReturnStateName(Integer plantform_return_state_id) {
String state_name;
switch (plantform_return_state_id) {
case StateCode.PLANTFORM_RETURN_STATE_WAITING:
@ -1709,22 +1740,34 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
return Convert.toList(String.class, findKey(queryWrapper));
}
/**
* (支付宝微信)在线原路退款
* <p>
* TODO 拉卡拉退款
*
* @param return_id
* @return
*/
@Override
public boolean doOnlineRefund(String return_id) {
ShopOrderReturn shopOrderReturn = get(return_id);
String return_channel_code = shopOrderReturn.getReturn_channel_code();
if (StrUtil.equals(return_channel_code, "alipay")) {
shopOrderReturn = payService.aliPayRefund(shopOrderReturn);
if (shopOrderReturn == null) {
return false;
}
return updateRefundOrderReturn(shopOrderReturn);
} else if (StrUtil.equals(return_channel_code, "wx_native")) {
shopOrderReturn = payService.wxPayRefund(get(return_id));
if (shopOrderReturn == null) {
return false;
}
return updateRefundOrderReturn(shopOrderReturn);
}
return false;
}
@ -1757,6 +1800,18 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
return false;
}
/**
* 该函数用于判断某个订单商品是否禁止退货
* 参数校验检查订单商品和商品信息是否为空若为空则抛出异常
* 商品是否禁止退货从商品信息中获取消费者保障类型如果包含禁止退货则标记为不可退货
* 订单状态是否超过退货期限
* 如果订单状态为已收货已完成并且当前时间超过允许提现时间则标记为不可退货
*
* @param shopOrderInfo
* @param shopOrderItem
* @param shopProductIndex
* @return
*/
public boolean ifDenyReturn(ShopOrderInfo shopOrderInfo, ShopOrderItem shopOrderItem, ShopProductIndex shopProductIndex) {
boolean is_denyreturn = false;
@ -1819,6 +1874,17 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
return is_denyreturn;
}
/**
* 该函数用于判断指定订单商品是否禁止退货
* 根据 order_item_id 获取订单商品信息
* 若订单商品为空抛出异常
* 获取订单商品对应的订单信息ShopOrderInfo和商品索引信息ShopProductIndex
* 若商品索引为空抛出异常
* 调用另一个重载方法 ifDenyReturn(...) 进行具体的退货规则判断
*
* @param order_item_id
* @return
*/
@Override
public boolean ifDenyReturn(Long order_item_id) {
ShopOrderItem shopOrderItem = shopOrderItemService.get(order_item_id);
@ -1835,10 +1901,21 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
throw new ApiException(I18nUtil._("此订单商品数据有误!"));
}
return ifDenyReturn(shopOrderInfo, shopOrderItem, shopProductIndex);
}
/**
* 该方法用于处理整单退货申请具体功能如下
* 根据订单ID获取订单信息若为空则抛异常
* 检查订单是否已付款未付款则不允许退货
* 查询该订单是否已有未取消的退款单如有则不能再次申请
* 获取订单对应的商品列表若为空则提示无商品
* 构建退货请求对象 OrderReturnInputVo包含订单商品信息每个商品的数量和金额
* 调用 addItem 方法提交退货申请
*
* @param order_id
* @return
*/
@Override
@Transactional
public CommonResult addWholeItems(String order_id) {
@ -1886,6 +1963,12 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
return addItem(orderReturnInputVo);
}
/**
* 订单流转到供应商
*
* @param return_id
* @return
*/
@Override
@GlobalTransactional
public boolean transferToSupplier(String return_id) {