From 585ff1cd29e9875f5f2a0fa2b0fdc876c5c6301f Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 26 一月 2026 18:26:31 +0800
Subject: [PATCH] 小程序 接口开发
---
server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java | 185 ++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 177 insertions(+), 8 deletions(-)
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java
index 05105fe..408c6a2 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java
@@ -12,13 +12,11 @@
import com.doumee.core.utils.Utils;
import com.doumee.core.wx.WxMiniUtilService;
import com.doumee.dao.admin.response.AftersaleListResponse;
-import com.doumee.dao.business.AftersaleMapper;
-import com.doumee.dao.business.FundMapper;
-import com.doumee.dao.business.GoodsorderDetailMapper;
-import com.doumee.dao.business.GoodsorderMapper;
+import com.doumee.dao.business.*;
import com.doumee.dao.business.join.AftersaleJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.web.dto.MultiFileDTO;
+import com.doumee.dao.web.request.AfterSaleApplyRequest;
import com.doumee.dao.web.request.DealIntegralRequest;
import com.doumee.dao.web.request.goods.AftersaleCancelRequest;
import com.doumee.dao.web.request.goods.AftersaleCreateRequest;
@@ -43,10 +41,7 @@
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* 鍟嗗搧鍞悗淇℃伅琛⊿ervice瀹炵幇
@@ -64,6 +59,10 @@
@Autowired
private GoodsorderMapper goodsorderMapper;
@Autowired
+ private ShopMapper shopMapper;
+ @Autowired
+ private MemberMapper memberMapper;
+ @Autowired
private GoodsorderDetailMapper goodsorderDetailMapper;
@Autowired
private AftersaleJoinMapper aftersaleJoinMapper;
@@ -73,6 +72,9 @@
@Autowired
@Lazy
private IntegralService integralService;
+
+ @Autowired
+ private MemberCouponJoinMapper memberCouponJoinMapper;
@Autowired
private FundMapper fundMapper;
@@ -1004,4 +1006,171 @@
}
+
+ @Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+ public void afterSaleApply(AfterSaleApplyRequest afterSaleApplyRequest, Integer userId){
+ if(Objects.isNull(afterSaleApplyRequest)
+ || Objects.isNull(afterSaleApplyRequest.getOrderId())
+ || Objects.isNull(afterSaleApplyRequest.getReturnUseIntegralStatus())
+ || Objects.isNull(afterSaleApplyRequest.getReturnUseCouponStatus())
+ || Objects.isNull(afterSaleApplyRequest.getReturnShopSettlementStatus())
+ || Objects.isNull(afterSaleApplyRequest.getReturnShopIntegralStatus())
+ || Objects.isNull(afterSaleApplyRequest.getReturnIntegralStatus())
+ || Objects.isNull(afterSaleApplyRequest.getMoney())
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+
+ Goodsorder goodsorder = goodsorderMapper.selectById(afterSaleApplyRequest.getOrderId());
+ if(Objects.isNull(goodsorder)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ if(!(Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.WAIT_RECEIVE.getKey())
+ || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.DONE.getKey()))){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璁㈠崟鐘舵�佸凡娴佽浆锛屾棤娉曡繘琛岃鎿嶄綔锛�");
+ }
+ Aftersale aftersale = new Aftersale();
+ aftersale.setCreateDate(new Date());
+ aftersale.setIsdeleted(Constants.ZERO);
+ aftersale.setOrderId(goodsorder.getId());
+ aftersale.setType(Constants.ZERO);
+ aftersale.setContent(afterSaleApplyRequest.getRemark());
+ aftersale.setStatus(Constants.AftersaleStatus.DONE.getKey());
+ aftersale.setInfo(afterSaleApplyRequest.getRemark());
+ aftersale.setMoney(afterSaleApplyRequest.getMoney());
+ aftersale.setCoupon(goodsorder.getCouponPrice());
+ aftersale.setReturnShopIntegral(BigDecimal.ZERO);
+ aftersale.setReturnIntegral(BigDecimal.ZERO);
+ aftersale.setReturnShopSettlement(BigDecimal.ZERO);
+ aftersale.setCode(getNextInCode());
+
+ //璁㈠崟閫�鍥炶繑鍥炵粰缁忛攢鍟嗙殑绉垎
+ if(Objects.nonNull(goodsorder.getDistributionShopId())&&goodsorder.getReturnCustomerIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
+ Shop shop = shopMapper.selectById(goodsorder.getDistributionShopId());
+ //缁忛攢鍟嗗瓨鍦ㄥ墿浣欑Н鍒�
+ if(Objects.nonNull(shop)&&shop.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
+ //寮�鍚簡鎵i櫎杩旇繕缁忛攢鍟嗙Н鍒�
+ if(Constants.equalsInteger(afterSaleApplyRequest.getReturnShopIntegralStatus(),Constants.ONE)){
+ //璁板綍鎵i櫎缁忛攢鍟嗙Н鍒嗗��
+ aftersale.setReturnShopIntegral(shop.getIntegral().compareTo(goodsorder.getReturnCustomerIntegral())>Constants.ZERO
+ ?goodsorder.getReturnCustomerIntegral():shop.getIntegral());
+ DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
+ dealIntegralRequest.setIntegralNum(aftersale.getReturnShopIntegral());
+ dealIntegralRequest.setDealType(Constants.ONE);
+ dealIntegralRequest.setMemberId(goodsorder.getDistributionShopId());
+ dealIntegralRequest.setObjId(goodsorder.getId());
+ dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
+ dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER_REFUND_INTEGRAL);
+ integralService.dealShopIntegral(dealIntegralRequest);
+ }
+ }
+ }
+
+ //璁㈠崟閫�鍥� 缁忛攢鍟嗙粨绠椾綑棰�
+ if(Objects.nonNull(goodsorder.getDistributionShopId())&&goodsorder.getShopSettlement().compareTo(BigDecimal.ZERO)>Constants.ZERO){
+ Shop shop = shopMapper.selectById(goodsorder.getDistributionShopId());
+ //缁忛攢鍟嗗瓨鍦ㄥ墿浣欑Н鍒�
+ if(Objects.nonNull(shop)&&shop.getAmount().compareTo(BigDecimal.ZERO)>Constants.ZERO){
+ //寮�鍚簡鎵i櫎杩旇繕缁忛攢鍟嗙Н鍒�
+ if(Constants.equalsInteger(afterSaleApplyRequest.getReturnShopSettlementStatus(),Constants.ONE)){
+ //璁板綍鎵i櫎缁忛攢鍟嗙Н鍒嗗��
+ aftersale.setReturnShopSettlement(shop.getAmount().compareTo(goodsorder.getShopSettlement())>Constants.ZERO
+ ?goodsorder.getShopSettlement():shop.getAmount());
+ DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
+ dealIntegralRequest.setIntegralNum(aftersale.getReturnShopIntegral());
+ dealIntegralRequest.setDealType(Constants.ONE);
+ dealIntegralRequest.setMemberId(goodsorder.getDistributionShopId());
+ dealIntegralRequest.setObjId(goodsorder.getId());
+ dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
+ dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER_REFUND_CASH);
+ integralService.dealShopAmount(dealIntegralRequest);
+
+ }
+ }
+ }
+
+ //璁㈠崟閫�鍥� 杩旇繕缁欏鎴风殑绉垎
+ if(Objects.nonNull(goodsorder.getDistributionShopId())&&goodsorder.getReturnMemberIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
+ Member member = memberMapper.selectById(goodsorder.getMemberId());
+ //瀹㈡埛瀛樺湪鍓╀綑绉垎
+ if(Objects.nonNull(member)&&member.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
+ //寮�鍚簡鎵i櫎杩旇繕瀹㈡埛绉垎
+ if(Constants.equalsInteger(afterSaleApplyRequest.getReturnIntegralStatus(),Constants.ONE)){
+ //璁板綍鎵i櫎缁忛攢鍟嗙Н鍒嗗��
+ aftersale.setReturnIntegral(member.getIntegral().compareTo(goodsorder.getReturnCustomerIntegral())>Constants.ZERO
+ ?goodsorder.getReturnCustomerIntegral():member.getIntegral());
+ DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
+ dealIntegralRequest.setIntegralNum(aftersale.getReturnShopIntegral());
+ dealIntegralRequest.setDealType(Constants.ONE);
+ dealIntegralRequest.setMemberId(member.getId());
+ dealIntegralRequest.setObjId(goodsorder.getId());
+ dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
+ dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.MEMBER_ORDER_REFUND_RETURN);
+ integralService.dealIntegral(dealIntegralRequest);
+ }
+ }
+ }
+
+ //璁㈠崟閫�娆� 杩旇繕瀹㈡埛浣跨敤鐨勭Н鍒�
+ if(Constants.equalsInteger(afterSaleApplyRequest.getReturnIntegralStatus(),Constants.ONE)
+ && goodsorder.getUseIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
+ DealIntegralRequest dealIntegralRequest = new DealIntegralRequest();
+ dealIntegralRequest.setIntegralNum(aftersale.getReturnShopIntegral());
+ dealIntegralRequest.setDealType(Constants.ZERO);
+ dealIntegralRequest.setMemberId(goodsorder.getMemberId());
+ dealIntegralRequest.setObjId(goodsorder.getId());
+ dealIntegralRequest.setOrderCode(goodsorder.getCode().toString());
+ dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.MEMBER_ORDER_REFUND);
+ dealIntegralRequest.setParam1(goodsorder.getCode().toString());
+ integralService.dealIntegral(dealIntegralRequest);
+ }
+
+ //璁㈠崟閫�娆� 閫�鍥炲鎴蜂娇鐢ㄧ殑浼樻儬鍒�
+ if(Constants.equalsInteger(afterSaleApplyRequest.getReturnUseCouponStatus(),Constants.ONE)
+ && Objects.nonNull(goodsorder.getCouponId())){
+ memberCouponJoinMapper.update(new UpdateWrapper<MemberCoupon>().lambda()
+ .set(MemberCoupon::getStatus, Constants.ZERO)
+ .eq(MemberCoupon::getId, goodsorder.getCouponId())
+ );
+ }
+
+
+ if(afterSaleApplyRequest.getMoney().compareTo(BigDecimal.ZERO)>Constants.ZERO
+ && afterSaleApplyRequest.getMoney().compareTo(goodsorder.getPrice())<=Constants.ZERO){
+ //璁㈠崟閫�娆�
+ String refundCode = WxMiniUtilService.wxRefund(goodsorder.getCode().toString(), goodsorder.getPrice(), afterSaleApplyRequest.getMoney());
+ Fund fund = new Fund();
+ fund.setOrderCode(refundCode);
+ fund.setCreator(userId);
+ fund.setCreateDate(new Date());
+ fund.setIsdeleted(Constants.ZERO);
+ fund.setRemark(userId.toString());
+ fund.setMemberId(goodsorder.getCreator());
+ fund.setTitle("璁㈠崟閫�娆�");
+ fund.setContent(afterSaleApplyRequest.getRemark());
+ fund.setObjId(goodsorder.getId());
+ fund.setObjType(Constants.ONE);
+ fund.setType(Constants.ZERO);
+ fund.setNum(goodsorder.getPrice());
+ fundMapper.insert(fund);
+ aftersale.setDrawbackNo(refundCode);
+ aftersale.setDrawbackDate(new Date());
+ aftersale.setDrawbackInfo(afterSaleApplyRequest.getRemark());
+ aftersale.setDrawbackNo(refundCode);
+
+ }
+ aftersaleMapper.insert(aftersale);
+
+ goodsorderMapper.update(null,new UpdateWrapper<Goodsorder>().lambda()
+ .set(Goodsorder::getStatus, Constants.OrderStatus.REFUND.getKey())
+ .eq(Goodsorder::getId, goodsorder.getId())
+ );
+
+ }
+
+
+
+
+
}
--
Gitblit v1.9.3