From 7857bc9539fb74006e3a904c52d724c802c648b1 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期三, 24 十二月 2025 21:29:04 +0800
Subject: [PATCH] feat:经销商订单相关接口
---
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TRefundApplicationServiceImpl.java | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 108 insertions(+), 2 deletions(-)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TRefundApplicationServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TRefundApplicationServiceImpl.java
index f8afec4..50bd961 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TRefundApplicationServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TRefundApplicationServiceImpl.java
@@ -1,15 +1,29 @@
package com.ruoyi.system.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.system.dto.RefundApplyDTO;
+import com.ruoyi.system.enums.BigGiftPackageOrderStatusEnum;
+import com.ruoyi.system.model.TAppUser;
+import com.ruoyi.system.model.TBigGiftPackage;
import com.ruoyi.system.model.TBigGiftPackageOrder;
import com.ruoyi.system.model.TRefundApplication;
import com.ruoyi.system.mapper.TRefundApplicationMapper;
import com.ruoyi.system.query.BigGiftPackageQuery;
+import com.ruoyi.system.query.RefundApplicationQuery;
+import com.ruoyi.system.service.TAppUserService;
+import com.ruoyi.system.service.TBigGiftPackageOrderService;
+import com.ruoyi.system.service.TBigGiftPackageService;
import com.ruoyi.system.service.TRefundApplicationService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.system.vo.TRefundApplicationVo;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
-import java.util.Collections;
+import java.time.LocalDateTime;
import java.util.List;
/**
@@ -21,10 +35,15 @@
* @since 2025-12-08
*/
@Service
+@RequiredArgsConstructor(onConstructor_ = @Lazy)
public class TRefundApplicationServiceImpl extends ServiceImpl<TRefundApplicationMapper, TRefundApplication> implements TRefundApplicationService {
+ private final TBigGiftPackageOrderService tBigGiftPackageOrderService;
+ private final TAppUserService tAppUserService;
+ private final TBigGiftPackageService tBigGiftPackageService;
+
@Override
- public Page<TBigGiftPackageOrder> pageRefundList(BigGiftPackageQuery query) {
+ public Page<TBigGiftPackageOrder> pageRefundList(RefundApplicationQuery query) {
Page<TBigGiftPackageOrder> page = new Page<>(query.getPageNum(), query.getPageSize());
return this.baseMapper.pageRefundList(page, query);
}
@@ -33,4 +52,91 @@
public List<TBigGiftPackageOrder> pageRefundExportList(BigGiftPackageQuery query) {
return this.baseMapper.pageRefundExportList(query);
}
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void applyRefund(RefundApplyDTO dto, Integer userId) {
+ // 校验订单是否存在
+ TBigGiftPackageOrder order = tBigGiftPackageOrderService.getById(dto.getOrderId());
+ if (order == null) {
+ throw new ServiceException("订单不存在");
+ }
+
+ // 校验订单状态:只有已付订金、完成支付、确认收货的订单可以申请退款
+ Integer status = order.getStatus();
+ boolean canApplyRefund = status.equals(BigGiftPackageOrderStatusEnum.DEPOSIT_PAID.getCode())
+ || status.equals(BigGiftPackageOrderStatusEnum.PAID.getCode())
+ || status.equals(BigGiftPackageOrderStatusEnum.CONFIRM_RECEIPT.getCode());
+ if (!canApplyRefund) {
+ throw new ServiceException("当前订单状态不支持退款申请");
+ }
+
+ // 校验是否已存在待审核的退款申请
+ long pendingCount = this.count(new LambdaQueryWrapper<TRefundApplication>()
+ .eq(TRefundApplication::getBigGiftPackageOrderId, dto.getOrderId())
+ .eq(TRefundApplication::getStatus, 1)
+ .eq(TRefundApplication::getDelFlag, 0));
+ if (pendingCount > 0) {
+ throw new ServiceException("该订单已存在待审核的退款申请");
+ }
+
+ // 创建退款申请记录
+ TRefundApplication refundApplication = new TRefundApplication();
+ refundApplication.setBigGiftPackageOrderId(dto.getOrderId());
+ refundApplication.setApplicantUserId(userId);
+ refundApplication.setApplicantTime(LocalDateTime.now());
+ refundApplication.setRefundReason(dto.getRefundReason());
+ refundApplication.setVoucherPicture(dto.getVoucherPicture());
+ refundApplication.setStatus(1); // 待审核
+ refundApplication.setDelFlag(0);
+ this.save(refundApplication);
+ }
+
+ @Override
+ public TRefundApplicationVo refundDetail(Integer id) {
+ TRefundApplication refundApplication = this.getById(id);
+ TRefundApplicationVo vo = new TRefundApplicationVo();
+ vo.setId(refundApplication.getId());
+ vo.setBigGiftPackageOrderId(refundApplication.getBigGiftPackageOrderId());
+
+ // 订单信息
+ TBigGiftPackageOrder order = tBigGiftPackageOrderService.getById(refundApplication.getBigGiftPackageOrderId());
+ vo.setCode(order.getCode());
+ vo.setCreateTime(order.getCreateTime());
+ vo.setOrderPrice(order.getOrderPrice());
+
+ // 用户信息
+ TAppUser appUser = tAppUserService.getById(order.getAppUserId());
+ vo.setUserName(appUser.getName());
+ vo.setPhone(appUser.getPhone());
+
+
+ // 商品信息
+ TBigGiftPackage tBigGiftPackage = tBigGiftPackageService.getById(order.getBigGiftPackageId());
+ vo.setBigGiftPackageName(tBigGiftPackage.getName());
+ vo.setBigGiftPackageCover(tBigGiftPackage.getCoverImage());
+ vo.setBigGiftPackagePrice(tBigGiftPackage.getTotalPrice());
+ vo.setBigGiftPackageIntro(tBigGiftPackage.getIntroduction());
+
+ // 销量
+ long count = tBigGiftPackageOrderService.count(new LambdaQueryWrapper<TBigGiftPackageOrder>().eq(TBigGiftPackageOrder::getBigGiftPackageId, order.getBigGiftPackageId()).ne(TBigGiftPackageOrder::getStatus, 5));
+ vo.setBigGiftPackageSales((int)count);
+
+ // 支付信息
+ vo.setStatus(order.getStatus());
+ vo.setOrderAmount(order.getOrderPrice());
+ vo.setFinalPayment(order.getFinalPayment());
+ vo.setPaidTime(order.getFinalPaymentTime());
+ vo.setRemark(order.getRemark());
+
+ // 退款信息
+ vo.setRefundReason(refundApplication.getRefundReason());
+ vo.setVoucherPicture(refundApplication.getVoucherPicture());
+ vo.setRefundStatus(refundApplication.getStatus());
+
+ // 审核信息
+ vo.setAuditRemark(refundApplication.getAuditRemark());
+ vo.setAuditTime(refundApplication.getAuditTime());
+ return vo;
+ }
}
--
Gitblit v1.7.1