فهرست منبع

fix 会员订单延长时间退款

zoujiajian 1 سال پیش
والد
کامیت
d779d30c98

+ 14 - 1
netflix-service/src/main/java/com/cyksj/service/mange/vip/impl/CmsVipOrderServiceImpl.java

@@ -105,8 +105,21 @@ public class CmsVipOrderServiceImpl implements CmsVipOrderService {
 			int offsetMonths = orderDon.getNum();
 			Date expiryTime = vipUser.getExpiryTime();
 			DateTime subExpiryTime = DateUtil.offsetMonth(expiryTime, -offsetMonths);
-			vipUser.setExpiryTime(subExpiryTime);
+			//主订单退款
+			if (orderDon.getOrderType() == 1) {
+				Date remainExpiryTime = subExpiryTime;
+				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;
+				}
+			}
 			//若会员过期清除镜像user
+			vipUser.setExpiryTime(subExpiryTime);
 			clearVipMirrorUser(vipUser.getUserId(), subExpiryTime);
 			vipUserMapper.updateById(vipUser);
 		}

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/vip/impl/VipFrontServiceImpl.java

@@ -193,7 +193,7 @@ public class VipFrontServiceImpl implements VipFrontService {
 			BigDecimal overMoney = deductMoney.subtract(vipMoney);
 			//超过抵扣金额可换延长会员多少天
 			//每天单价
-			BigDecimal daySingle = vipMoney.divide(BigDecimal.valueOf(30), 0, RoundingMode.DOWN);
+			BigDecimal daySingle = vipMoney.divide(BigDecimal.valueOf(months)).divide(BigDecimal.valueOf(30), 0, RoundingMode.DOWN);
 			//超出部分可换取多少天 低于每天单价为0天
 			BigDecimal extendsDays = overMoney.divide(daySingle, 0, RoundingMode.UP);
 			vipDeductDto.setExtendsDays(extendsDays.intValue());