feat: 增加退款状态(部分退款、全部退款)

This commit is contained in:
lele0521
2024-01-05 17:29:34 +08:00
parent b40533c553
commit c9a0ce7985
10 changed files with 125 additions and 15 deletions

View File

@@ -9,6 +9,7 @@ import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
@Data
@TableName("li_file_directory")
@@ -26,7 +27,9 @@ public class FileDirectory extends BaseEntity {
private String ownerId;
@ApiModelProperty(value = "父分类ID")
private String parentId;
@ApiModelProperty(value = "层级")
@NotNull(message = "层级不能为空")
@Min(value = 0, message = "层级最小为0")
@Max(value = 2, message = "层级最大为2")
private Integer level;

View File

@@ -2,6 +2,7 @@ package cn.lili.modules.order.aftersale.serviceimpl;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
@@ -22,10 +23,7 @@ import cn.lili.modules.order.aftersale.mapper.AfterSaleMapper;
import cn.lili.modules.order.aftersale.service.AfterSaleService;
import cn.lili.modules.order.order.entity.dos.Order;
import cn.lili.modules.order.order.entity.dos.OrderItem;
import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderTypeEnum;
import cn.lili.modules.order.order.entity.enums.PayStatusEnum;
import cn.lili.modules.order.order.entity.enums.*;
import cn.lili.modules.order.order.service.OrderItemService;
import cn.lili.modules.order.order.service.OrderService;
import cn.lili.modules.order.trade.entity.enums.AfterSaleRefundWayEnum;
@@ -461,8 +459,9 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
case APPLY: {
// 买家申请售后时已经输入了订单售后数量,这里不需要(+x)处理
orderItem.setReturnGoodsNumber(orderItem.getReturnGoodsNumber() + afterSale.getNum());
orderItem.setRefundPrice(CurrencyUtil.add(orderItem.getRefundPrice(), afterSale.getApplyRefundPrice()));
//修改orderItem订单
this.updateOrderItem(orderItem);
this.updateOrderItem(orderItem, afterSale);
break;
}
@@ -471,8 +470,9 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
case BUYER_CANCEL:
case SELLER_TERMINATION: {
orderItem.setReturnGoodsNumber(orderItem.getReturnGoodsNumber() - afterSale.getNum());
orderItem.setRefundPrice(CurrencyUtil.sub(orderItem.getRefundPrice(), afterSale.getApplyRefundPrice()));
//修改orderItem订单
this.updateOrderItem(orderItem);
this.updateOrderItem(orderItem, afterSale);
break;
}
default:
@@ -627,7 +627,7 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
* @return void
* @author ftyy
**/
private void updateOrderItem(OrderItem orderItem) {
private void updateOrderItem(OrderItem orderItem, AfterSale afterSale) {
//订单状态不能为新订单,已失效订单或未申请订单才可以去修改订单信息
OrderItemAfterSaleStatusEnum afterSaleTypeEnum = OrderItemAfterSaleStatusEnum.valueOf(orderItem.getAfterSaleStatus());
switch (afterSaleTypeEnum) {
@@ -652,10 +652,27 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
default:
break;
}
orderItemService.update(new LambdaUpdateWrapper<OrderItem>()
LambdaUpdateWrapper<OrderItem> lambdaUpdateWrapper = new LambdaUpdateWrapper<OrderItem>()
.eq(OrderItem::getSn, orderItem.getSn())
.set(OrderItem::getAfterSaleStatus, orderItem.getAfterSaleStatus())
.set(OrderItem::getReturnGoodsNumber, orderItem.getReturnGoodsNumber()));
.set(OrderItem::getReturnGoodsNumber, orderItem.getReturnGoodsNumber());
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
if (orderItem.getReturnGoodsNumber().equals(orderItem.getNum())) {
lambdaUpdateWrapper.set(OrderItem::getIsRefund, RefundStatusEnum.ALL_REFUND.name());
} else {
lambdaUpdateWrapper.set(OrderItem::getIsRefund, RefundStatusEnum.PART_REFUND.name());
}
} else if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.APPLY.name())) {
lambdaUpdateWrapper.set(OrderItem::getIsRefund, RefundStatusEnum.REFUNDING.name());
} else if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.REFUSE.name()) ||
afterSale.getServiceStatus().equals(AfterSaleStatusEnum.BUYER_CANCEL.name()) ||
afterSale.getServiceStatus().equals(AfterSaleStatusEnum.SELLER_TERMINATION.name())) {
lambdaUpdateWrapper.set(OrderItem::getIsRefund, RefundStatusEnum.NO_REFUND.name());
}
orderItemService.update(lambdaUpdateWrapper);
}
}

View File

@@ -11,6 +11,7 @@ import cn.lili.modules.order.order.entity.dto.PriceDetailDTO;
import cn.lili.modules.order.order.entity.enums.CommentStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum;
import cn.lili.modules.order.order.entity.enums.RefundStatusEnum;
import cn.lili.modules.promotion.entity.vos.PromotionSkuVO;
import cn.lili.mybatis.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
@@ -115,6 +116,14 @@ public class OrderItem extends BaseEntity {
@ApiModelProperty(value = "退货商品数量")
private Integer returnGoodsNumber;
/**
* @see cn.lili.modules.order.order.entity.enums.RefundStatusEnum
*/
@ApiModelProperty(value = "退款状态")
private String isRefund;
@ApiModelProperty(value = "退款金额")
private Double refundPrice;
public OrderItem(CartSkuVO cartSkuVO, CartVO cartVO, TradeDTO tradeDTO) {
String oldId = this.getId();
@@ -146,6 +155,13 @@ public class OrderItem extends BaseEntity {
}
public String getIsRefund() {
if (isRefund == null) {
return RefundStatusEnum.NO_REFUND.name();
}
return isRefund;
}
public PriceDetailDTO getPriceDetailDTO() {
return JSONUtil.toBean(priceDetail, PriceDetailDTO.class);
}

View File

@@ -21,7 +21,7 @@ public enum OrderStatusEnum {
* 虚拟订单需要核验商品
*/
TAKE("待核验"),
CANCELLED("取消");
CANCELLED("关闭");
private final String description;

View File

@@ -0,0 +1,34 @@
package cn.lili.modules.order.order.entity.enums;
/**
* 退款状态枚举
*
* @author Lele
* @since 2024-1-5 10:59:22
*/
public enum RefundStatusEnum {
/**
* 退款状态
*/
ALL_REFUND("全部退款"),
PART_REFUND("部分退款"),
NO_REFUND("未退款"),
REFUNDING("退款中");
private final String description;
RefundStatusEnum(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
public String description() {
return this.description;
}
}

View File

@@ -33,6 +33,12 @@ public interface OrderItemService extends IService<OrderItem> {
*/
void updateAfterSaleStatus(String orderItemSn, OrderItemAfterSaleStatusEnum orderItemAfterSaleStatusEnum);
/**
* 更新售后状态
* @param orderItem
*/
void updateByAfterSale(OrderItem orderItem);
/**
* 更新订单可投诉状态
*

View File

@@ -44,6 +44,15 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
this.update(lambdaUpdateWrapper);
}
@Override
public void updateByAfterSale(OrderItem orderItem) {
LambdaUpdateWrapper<OrderItem> lambdaUpdateWrapper = new LambdaUpdateWrapper<OrderItem>()
.eq(OrderItem::getSn, orderItem.getSn())
.set(OrderItem::getIsRefund, orderItem.getIsRefund())
.set(OrderItem::getRefundPrice, orderItem.getRefundPrice());
this.update(lambdaUpdateWrapper);
}
/**
* 更新订单可投诉状态
*