|
|
@@ -0,0 +1,118 @@
|
|
|
+package com.etotem.cfc.service;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.etotem.cfc.common.Result;
|
|
|
+import com.etotem.cfc.entity.AfterSalesRequest;
|
|
|
+import com.etotem.cfc.entity.ProductOrder;
|
|
|
+import com.etotem.cfc.mapper.AfterSalesRequestMapper;
|
|
|
+import com.etotem.cfc.mapper.ProductOrderMapper;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class AfterSalesService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private AfterSalesRequestMapper afterSalesRequestMapper;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private ProductOrderMapper productOrderMapper;
|
|
|
+
|
|
|
+ public Result<AfterSalesRequest> create(AfterSalesRequest request, Long userId) {
|
|
|
+ ProductOrder order = productOrderMapper.selectById(request.getOrderId());
|
|
|
+ if (order == null) {
|
|
|
+ return Result.error("订单不存在");
|
|
|
+ }
|
|
|
+ if (!order.getBuyerId().equals(userId)) {
|
|
|
+ return Result.error("无权操作此订单");
|
|
|
+ }
|
|
|
+ if (!"paid".equals(order.getStatus())) {
|
|
|
+ return Result.error("仅已支付的订单可申请售后");
|
|
|
+ }
|
|
|
+ request.setUserId(userId);
|
|
|
+ request.setOrderNo(order.getOrderNo());
|
|
|
+ request.setRefundAmount(order.getTotalAmount());
|
|
|
+ request.setStatus("pending");
|
|
|
+ request.setCreatedAt(new Date());
|
|
|
+ request.setUpdatedAt(new Date());
|
|
|
+ afterSalesRequestMapper.insert(request);
|
|
|
+ return Result.success(request);
|
|
|
+ }
|
|
|
+
|
|
|
+ public Result<List<AfterSalesRequest>> list(Long userId) {
|
|
|
+ List<AfterSalesRequest> list = afterSalesRequestMapper.selectList(
|
|
|
+ new LambdaQueryWrapper<AfterSalesRequest>()
|
|
|
+ .eq(AfterSalesRequest::getUserId, userId)
|
|
|
+ .orderByDesc(AfterSalesRequest::getCreatedAt)
|
|
|
+ );
|
|
|
+ return Result.success(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ public Result<AfterSalesRequest> detail(Long id, Long userId) {
|
|
|
+ AfterSalesRequest request = afterSalesRequestMapper.selectById(id);
|
|
|
+ if (request == null) {
|
|
|
+ return Result.error("售后申请不存在");
|
|
|
+ }
|
|
|
+ if (!request.getUserId().equals(userId)) {
|
|
|
+ return Result.error("无权查看");
|
|
|
+ }
|
|
|
+ return Result.success(request);
|
|
|
+ }
|
|
|
+
|
|
|
+ public Result<List<AfterSalesRequest>> adminList(String status) {
|
|
|
+ LambdaQueryWrapper<AfterSalesRequest> wrapper = new LambdaQueryWrapper<AfterSalesRequest>()
|
|
|
+ .orderByDesc(AfterSalesRequest::getCreatedAt);
|
|
|
+ if (status != null && !status.isEmpty()) {
|
|
|
+ wrapper.eq(AfterSalesRequest::getStatus, status);
|
|
|
+ }
|
|
|
+ return Result.success(afterSalesRequestMapper.selectList(wrapper));
|
|
|
+ }
|
|
|
+
|
|
|
+ public Result<AfterSalesRequest> adminDetail(Long id) {
|
|
|
+ AfterSalesRequest request = afterSalesRequestMapper.selectById(id);
|
|
|
+ if (request == null) {
|
|
|
+ return Result.error("售后申请不存在");
|
|
|
+ }
|
|
|
+ return Result.success(request);
|
|
|
+ }
|
|
|
+
|
|
|
+ public Result<String> review(Long id, String action, String rejectReason, Long adminId) {
|
|
|
+ AfterSalesRequest request = afterSalesRequestMapper.selectById(id);
|
|
|
+ if (request == null) {
|
|
|
+ return Result.error("售后申请不存在");
|
|
|
+ }
|
|
|
+ if (!"pending".equals(request.getStatus())) {
|
|
|
+ return Result.error("仅待审核的申请可处理");
|
|
|
+ }
|
|
|
+ if ("approve".equals(action)) {
|
|
|
+ request.setStatus("approved");
|
|
|
+ } else if ("reject".equals(action)) {
|
|
|
+ request.setStatus("rejected");
|
|
|
+ request.setRejectReason(rejectReason);
|
|
|
+ } else {
|
|
|
+ return Result.error("无效操作");
|
|
|
+ }
|
|
|
+ request.setHandledBy(adminId);
|
|
|
+ request.setHandledAt(new Date());
|
|
|
+ request.setUpdatedAt(new Date());
|
|
|
+ afterSalesRequestMapper.updateById(request);
|
|
|
+ return Result.success("操作成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ public Result<String> complete(Long id) {
|
|
|
+ AfterSalesRequest request = afterSalesRequestMapper.selectById(id);
|
|
|
+ if (request == null) {
|
|
|
+ return Result.error("售后申请不存在");
|
|
|
+ }
|
|
|
+ if (!"approved".equals(request.getStatus())) {
|
|
|
+ return Result.error("仅已批准的申请可完成");
|
|
|
+ }
|
|
|
+ request.setStatus("completed");
|
|
|
+ request.setUpdatedAt(new Date());
|
|
|
+ afterSalesRequestMapper.updateById(request);
|
|
|
+ return Result.success("已完成");
|
|
|
+ }
|
|
|
+}
|