zoujiajian 1 ano atrás
pai
commit
cbf6522bea

+ 1 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserBalanceSourceRecord.java

@@ -45,6 +45,7 @@ public class UserBalanceSourceRecord extends BaseEntity {
 		wholesale_differ("返批发差价"),
 		wholesale_order("批发订单"),
 		vip_order("会员下单"),
+		vip_refund("会员退款"),
 		;
 		String desc;
 

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/request/OrderRefundReq.java

@@ -41,6 +41,9 @@ public class OrderRefundReq {
 	 */
 	private BigDecimal refundBalance;
 
+	/**
+	 * 仅仅退余额
+	 */
 	private Boolean isOnly;
 
 	private String operator;

+ 24 - 18
netflix-service/src/main/java/com/cyksj/service/mange/vip/impl/CmsVipOrderServiceImpl.java

@@ -5,23 +5,26 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.exception.BusinessRuntimeException;
-import com.cyksj.mapper.*;
+import com.cyksj.mapper.GoodsDonSkuMapper;
+import com.cyksj.mapper.GroupsMapper;
+import com.cyksj.mapper.GroupsRelationMapper;
 import com.cyksj.mapper.vip.RefundVipOrderDonMapper;
 import com.cyksj.mapper.vip.VipOrderDonMapper;
 import com.cyksj.mapper.vip.VipUserMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.request.OrderRefundReq;
-import com.cyksj.redis.RedisService;
 import com.cyksj.service.mange.MirrorUserCleatService;
 import com.cyksj.service.mange.vip.CmsVipOrderService;
 import com.cyksj.service.order.OrderRefundService;
 import com.cyksj.service.relation.GroupRelationClearService;
+import com.cyksj.service.user.UserBenefitsService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * 项目名: yhlxj2
@@ -40,22 +43,8 @@ public class CmsVipOrderServiceImpl implements CmsVipOrderService {
 
 	private final VipUserMapper vipUserMapper;
 
-	private final LumaUserMapper lumaUserMapper;
-
-	private final GrokUserMapper grokUserMapper;
-
-	private final MidjourneyUserMapper midjourneyUserMapper;
-
-	private final ChatgptUserMapper chatgptUserMapper;
-
-	private final ClaudeUserMapper claudeUserMapper;
-
-	private final RedisService redisService;
-
 	private final GroupsRelationMapper relationMapper;
 
-	private final GoodsDonMapper goodsDonMapper;
-
 	private final GoodsDonSkuMapper skuMapper;
 
 	private final GroupsMapper groupsMapper;
@@ -64,6 +53,8 @@ public class CmsVipOrderServiceImpl implements CmsVipOrderService {
 
 	private final GroupRelationClearService groupRelationClearService;
 
+	private final UserBenefitsService userBenefitsService;
+
 	@Override
 	public void refundOrders(OrderRefundReq refundReq) throws Exception {
 		VipOrderDon orderDon = vipOrderDonMapper.selectById(refundReq.getOrderId());
@@ -80,15 +71,30 @@ public class CmsVipOrderServiceImpl implements CmsVipOrderService {
 		}
 		orderDon.setRefundDesc(refundReq.getRefundDesc());
 		//记录退款信息
-		commonRefund(orderDon, refundReq.getRefundMoney(), refundReq.getOperator(), outNo, refundType, refundReq.getRefundBalance(), refundReq.getChatImg());
+		commonRefund(orderDon, refundReq.getRefundMoney(), refundReq.getOperator(), outNo, refundType, refundReq.getIsOnly(), refundReq.getRefundBalance(), refundReq.getChatImg(), refundReq.getDeductBalance());
 		//修改订单状态
 		orderDon.setStatus(VipOrderDon.Status.refund);
 		vipOrderDonMapper.updateById(orderDon);
 	}
 
-	private void commonRefund(VipOrderDon orderDon, BigDecimal refundMoney, String operator, String outNo, String refundType, BigDecimal refundBalance, String chatImg) {
+	private void commonRefund(VipOrderDon orderDon, BigDecimal refundMoney, String operator, String outNo, String refundType, Boolean isOnly, BigDecimal refundBalance, String chatImg, BigDecimal deductBalance) {
 		//记录退款
 		recordRefundOrder(orderDon, outNo, refundMoney, operator, chatImg, refundType);
+		//退等比例
+		if (isOnly != null && isOnly) {
+			userBenefitsService.addUserBalance(orderDon.getUserId(), refundBalance, UserBalanceSourceRecord.Source.vip_refund, null, orderDon.getId(), orderDon.getPayTitle() + UserBalanceSourceRecord.Source.vip_refund.getDesc(), true);
+			BigDecimal orderDonRefundBalance = Optional.ofNullable(orderDon.getRefundBalance()).orElse(BigDecimal.ZERO);
+			orderDon.setRefundBalance(orderDonRefundBalance.add(refundBalance));
+		}
+		//若存在余额支付,退还余额
+		if (isOnly == null && orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
+			BigDecimal addBalance = orderDon.getBalance();
+			//需额外扣除余额
+			if (deductBalance != null && deductBalance.compareTo(BigDecimal.ZERO) > 0) {
+				addBalance = addBalance.subtract(deductBalance);
+			}
+			userBenefitsService.addUserBalance(orderDon.getUserId(), addBalance, UserBalanceSourceRecord.Source.vip_refund, null, orderDon.getId(), orderDon.getPayTitle() + UserBalanceSourceRecord.Source.vip_refund.getDesc(), true);
+		}
 		//扣除会员时长
 		VipUser vipUser = vipUserMapper.selectById(orderDon.getUserId());
 		Date expiryTime = vipUser.getExpiryTime();