|
@@ -5,23 +5,26 @@ import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
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.RefundVipOrderDonMapper;
|
|
|
import com.cyksj.mapper.vip.VipOrderDonMapper;
|
|
import com.cyksj.mapper.vip.VipOrderDonMapper;
|
|
|
import com.cyksj.mapper.vip.VipUserMapper;
|
|
import com.cyksj.mapper.vip.VipUserMapper;
|
|
|
import com.cyksj.model.entity.*;
|
|
import com.cyksj.model.entity.*;
|
|
|
import com.cyksj.model.request.OrderRefundReq;
|
|
import com.cyksj.model.request.OrderRefundReq;
|
|
|
-import com.cyksj.redis.RedisService;
|
|
|
|
|
import com.cyksj.service.mange.MirrorUserCleatService;
|
|
import com.cyksj.service.mange.MirrorUserCleatService;
|
|
|
import com.cyksj.service.mange.vip.CmsVipOrderService;
|
|
import com.cyksj.service.mange.vip.CmsVipOrderService;
|
|
|
import com.cyksj.service.order.OrderRefundService;
|
|
import com.cyksj.service.order.OrderRefundService;
|
|
|
import com.cyksj.service.relation.GroupRelationClearService;
|
|
import com.cyksj.service.relation.GroupRelationClearService;
|
|
|
|
|
+import com.cyksj.service.user.UserBenefitsService;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
+import java.util.Optional;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 项目名: yhlxj2
|
|
* 项目名: yhlxj2
|
|
@@ -40,22 +43,8 @@ public class CmsVipOrderServiceImpl implements CmsVipOrderService {
|
|
|
|
|
|
|
|
private final VipUserMapper vipUserMapper;
|
|
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 GroupsRelationMapper relationMapper;
|
|
|
|
|
|
|
|
- private final GoodsDonMapper goodsDonMapper;
|
|
|
|
|
-
|
|
|
|
|
private final GoodsDonSkuMapper skuMapper;
|
|
private final GoodsDonSkuMapper skuMapper;
|
|
|
|
|
|
|
|
private final GroupsMapper groupsMapper;
|
|
private final GroupsMapper groupsMapper;
|
|
@@ -64,6 +53,8 @@ public class CmsVipOrderServiceImpl implements CmsVipOrderService {
|
|
|
|
|
|
|
|
private final GroupRelationClearService groupRelationClearService;
|
|
private final GroupRelationClearService groupRelationClearService;
|
|
|
|
|
|
|
|
|
|
+ private final UserBenefitsService userBenefitsService;
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public void refundOrders(OrderRefundReq refundReq) throws Exception {
|
|
public void refundOrders(OrderRefundReq refundReq) throws Exception {
|
|
|
VipOrderDon orderDon = vipOrderDonMapper.selectById(refundReq.getOrderId());
|
|
VipOrderDon orderDon = vipOrderDonMapper.selectById(refundReq.getOrderId());
|
|
@@ -80,15 +71,30 @@ public class CmsVipOrderServiceImpl implements CmsVipOrderService {
|
|
|
}
|
|
}
|
|
|
orderDon.setRefundDesc(refundReq.getRefundDesc());
|
|
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);
|
|
orderDon.setStatus(VipOrderDon.Status.refund);
|
|
|
vipOrderDonMapper.updateById(orderDon);
|
|
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);
|
|
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());
|
|
VipUser vipUser = vipUserMapper.selectById(orderDon.getUserId());
|
|
|
Date expiryTime = vipUser.getExpiryTime();
|
|
Date expiryTime = vipUser.getExpiryTime();
|