|
|
@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
import com.cyksj.mapper.GroupsRelationMapper;
|
|
|
+import com.cyksj.mapper.manage.cms.CmsUserMapper;
|
|
|
import com.cyksj.mapper.manage.distribute.DistributeWaitingSendPointsMapper;
|
|
|
import com.cyksj.mapper.manage.distribute.UserDistributeMapper;
|
|
|
import com.cyksj.mapper.vip.RefundVipOrderDonMapper;
|
|
|
@@ -56,12 +57,16 @@ public class CmsVipOrderServiceImpl implements CmsVipOrderService {
|
|
|
|
|
|
private final UserDistributeMapper userDistributeMapper;
|
|
|
|
|
|
+ private final CmsUserMapper cmsUserMapper;
|
|
|
+
|
|
|
@Override
|
|
|
public void refundOrders(OrderRefundReq refundReq) throws Exception {
|
|
|
VipOrderDon orderDon = vipOrderDonMapper.selectById(refundReq.getOrderId());
|
|
|
if (StrUtil.isEmpty(refundReq.getRefundType())) {
|
|
|
refundReq.setRefundType("money");
|
|
|
}
|
|
|
+ Long adminId = refundReq.getAdminId();
|
|
|
+ Optional.ofNullable(cmsUserMapper.selectById(adminId)).ifPresent(cmsUser -> refundReq.setOperator(cmsUser.getNickname()));
|
|
|
String refundType = refundReq.getRefundType();
|
|
|
//校验订单是否符合退款
|
|
|
checkOrderRefund(orderDon, refundReq);
|
|
|
@@ -96,6 +101,10 @@ public class CmsVipOrderServiceImpl implements CmsVipOrderService {
|
|
|
// }
|
|
|
// userBenefitsService.addUserBalance(orderDon.getUserId(), addBalance, UserBalanceSourceRecord.Source.vip_refund, null, orderDon.getId(), orderDon.getPayTitle() + UserBalanceSourceRecord.Source.vip_refund.getDesc(), true);
|
|
|
// }
|
|
|
+ //余额现金混合退款
|
|
|
+ if (OrderRefundReq.RefundType.bxj.name().equals(refundType)) {
|
|
|
+ userBenefitsService.addUserBalance(orderDon.getUserId(), refundBalance, UserBalanceSourceRecord.Source.vip_refund, null, orderDon.getId(), orderDon.getPayTitle() + UserBalanceSourceRecord.Source.vip_refund.getDesc(), true);
|
|
|
+ }
|
|
|
//扣除会员时长
|
|
|
List<Long> userIdList = userBindRelationService.getRelationUserIdList(orderDon.getUserId(), null);
|
|
|
VipUser vipUser = vipUserMapper.selectOne(Wrappers.lambdaQuery(VipUser.class)
|
|
|
@@ -111,10 +120,6 @@ public class CmsVipOrderServiceImpl implements CmsVipOrderService {
|
|
|
Integer extendsDays = orderDon.getExtendsDays();
|
|
|
DateTime now = DateTime.now();
|
|
|
if (remainExpiryTime.compareTo(now) > 0 && extendsDays > 0) {
|
|
|
- Long remainDays = DateUtil.betweenDay(remainExpiryTime, now, false) + 1;
|
|
|
- BigDecimal daySingle = orderDon.getDeductMoney().divide(BigDecimal.valueOf(orderDon.getNum() * 30), 0, RoundingMode.UP);
|
|
|
- BigDecimal addBalance = daySingle.multiply(BigDecimal.valueOf(remainDays));
|
|
|
- userBenefitsService.addUserBalance(orderDon.getUserId(), addBalance, UserBalanceSourceRecord.Source.vip_refund, null, orderDon.getId(), orderDon.getPayTitle() + UserBalanceSourceRecord.Source.vip_refund.getDesc(), true);
|
|
|
subExpiryTime = now;
|
|
|
}
|
|
|
}
|
|
|
@@ -253,6 +258,9 @@ public class CmsVipOrderServiceImpl implements CmsVipOrderService {
|
|
|
orderDon.setRefundBalance(refundMoney);
|
|
|
orderDon.setRefundMoney(BigDecimal.ZERO);
|
|
|
} else if (OrderRefundReq.RefundType.bxj.name().equals(refundType)) {
|
|
|
+ //该订单实际可抵扣金额 可退成余额
|
|
|
+ BigDecimal actuallyDeductMoney = Optional.ofNullable(orderDon.getActuallyDeductMoney()).orElse(BigDecimal.ZERO);
|
|
|
+ balance = balance.add(actuallyDeductMoney);
|
|
|
refundBalance = refundBalance.add(orderDonRefundBalance);
|
|
|
if (refundBalance.compareTo(balance) > 0) {
|
|
|
throw BusinessRuntimeException.getInstance("退款余额大于订单支付余额");
|