BUGFIX:订阅计划

This commit is contained in:
2025-12-17 13:18:24 +08:00
parent ca7121dcda
commit 8e984eb283
5 changed files with 27 additions and 7 deletions

View File

@@ -17,9 +17,11 @@ public interface SubscriptionPlanMapper extends BaseMapper<SubscriptionPlan> {
@Select(""" @Select("""
SELECT sp.*, SELECT sp.*,
a.user_email AS adminAccEmail, a.user_email AS adminAccEmail,
a.user_name AS adminAccName a.user_name AS adminAccName,
o.name AS organizationName
FROM t_subscription_plan sp FROM t_subscription_plan sp
LEFT JOIN t_account a ON sp.admin_acc_id = a.id LEFT JOIN t_account a ON sp.admin_acc_id = a.id
LEFT JOIN t_organization o on sp.organization_id = o.id
${ew.customSqlSegment} ${ew.customSqlSegment}
""") """)
Page<SubscriptionPlanVO> selectWithEmailPage(Page<SubscriptionPlanVO> page, Page<SubscriptionPlanVO> selectWithEmailPage(Page<SubscriptionPlanVO> page,

View File

@@ -45,4 +45,7 @@ public class SubscriptionPlanDTO {
@Schema(description = "订阅计划命名") @Schema(description = "订阅计划命名")
private String name; private String name;
@Schema(description = "订阅计划状态")
private String status;
} }

View File

@@ -15,6 +15,9 @@ public class SubscriptionPlanVO {
@Schema(description = "组织id") @Schema(description = "组织id")
private Long organizationId; private Long organizationId;
@Schema(description = "组织名称")
private String organizationName;
@Schema(description = "当前订阅开始时间") @Schema(description = "当前订阅开始时间")
private Long currentPeriodStart; private Long currentPeriodStart;

View File

@@ -269,9 +269,11 @@ public class CreditsServiceImpl extends ServiceImpl<CreditsDetailMapper, Credits
BigDecimal existingCredits = account.getCredits(); BigDecimal existingCredits = account.getCredits();
BigDecimal subtract = existingCredits.subtract(new BigDecimal(value)); BigDecimal subtract = existingCredits.subtract(new BigDecimal(value));
BigDecimal creditsUsage = null; BigDecimal creditsUsage = null;
if (!StringUtil.isNullOrEmpty(account.getOrganizationName())){ // if (!StringUtil.isNullOrEmpty(account.getOrganizationName())){
if (Objects.nonNull(account.getSubscriptionPlanId())){
creditsUsage = Objects.isNull(account.getCreditsUsage()) ? BigDecimal.ZERO : account.getCreditsUsage(); creditsUsage = Objects.isNull(account.getCreditsUsage()) ? BigDecimal.ZERO : account.getCreditsUsage();
creditsUsage = creditsUsage.add(new BigDecimal(value)); BigDecimal added = creditsUsage.add(new BigDecimal(value));
creditsUsage = added.compareTo(account.getCreditsUsageLimit()) > 0 ? account.getCreditsUsageLimit() : added;
} }
accountService.updateCreditsAndEndTime(account, subtract.toString(), null, creditsUsage); accountService.updateCreditsAndEndTime(account, subtract.toString(), null, creditsUsage);

View File

@@ -61,7 +61,9 @@ public class SubscriptionPlanServiceImpl extends ServiceImpl<SubscriptionPlanMap
validateCreatePlanParams(subscriptionPlanDTO); validateCreatePlanParams(subscriptionPlanDTO);
SubscriptionPlan subscriptionPlan = CopyUtil.copyObject(subscriptionPlanDTO, SubscriptionPlan.class); SubscriptionPlan subscriptionPlan = CopyUtil.copyObject(subscriptionPlanDTO, SubscriptionPlan.class);
subscriptionPlan.setStatus(SubscriptionPlan.SubscriptionStatus.PENDING.name()); if (StringUtils.isBlank(subscriptionPlanDTO.getStatus())) {
subscriptionPlan.setStatus(SubscriptionPlan.SubscriptionStatus.PENDING.name());
}
if (Objects.isNull(subscriptionPlan.getName())) { if (Objects.isNull(subscriptionPlan.getName())) {
subscriptionPlan.setName("DEFAULT_NAME"); subscriptionPlan.setName("DEFAULT_NAME");
} }
@@ -484,6 +486,13 @@ public class SubscriptionPlanServiceImpl extends ServiceImpl<SubscriptionPlanMap
* 更新账号信息(管理员和子账号) * 更新账号信息(管理员和子账号)
*/ */
private void updateAccount(Account account, SubscriptionPlan plan, boolean isAdmin) { private void updateAccount(Account account, SubscriptionPlan plan, boolean isAdmin) {
// 如果是管理员的切换,先再次记录一下已使用的积分
if (isAdmin) {
SubscriptionPlan currentPlan = baseMapper.selectById(account.getSubscriptionPlanId());
if (currentPlan.getCreditUsage().compareTo(account.getCreditsUsage()) < 0) {
updateSubscriptionPlanUsage(currentPlan, account.getCreditsUsage());
}
}
Account updateAccount = new Account(); Account updateAccount = new Account();
updateAccount.setId(account.getId()); updateAccount.setId(account.getId());
@@ -523,7 +532,7 @@ public class SubscriptionPlanServiceImpl extends ServiceImpl<SubscriptionPlanMap
// 仅子账号需要更新订阅计划的使用量 // 仅子账号需要更新订阅计划的使用量
if (!isAdmin) { if (!isAdmin) {
updateSubscriptionPlanUsage(plan, updateAccount); updateSubscriptionPlanUsage(plan, plan.getCreditUsage().add(updateAccount.getCreditsUsageLimit()));
} }
} }
@@ -586,8 +595,8 @@ public class SubscriptionPlanServiceImpl extends ServiceImpl<SubscriptionPlanMap
/** /**
* 更新订阅计划使用量(仅子账号) * 更新订阅计划使用量(仅子账号)
*/ */
private void updateSubscriptionPlanUsage(SubscriptionPlan plan, Account updatedAccount) { private void updateSubscriptionPlanUsage(SubscriptionPlan plan, BigDecimal newCreditsUsage) {
plan.setCreditUsage(plan.getCreditUsage().add(updatedAccount.getCreditsUsageLimit())); plan.setCreditUsage(newCreditsUsage);
plan.setUpdateTime(LocalDateTime.now()); plan.setUpdateTime(LocalDateTime.now());
baseMapper.updateById(plan); baseMapper.updateById(plan);
} }
@@ -717,6 +726,7 @@ public class SubscriptionPlanServiceImpl extends ServiceImpl<SubscriptionPlanMap
QueryWrapper<SubscriptionPlan> queryWrapper = new QueryWrapper<>(); QueryWrapper<SubscriptionPlan> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("is_deleted", 0) queryWrapper.eq("is_deleted", 0)
.ne("status", "EXPIRED")
.between("current_period_end", yesterday, now) // 过去24小时内到期 .between("current_period_end", yesterday, now) // 过去24小时内到期
.orderByAsc("current_period_end"); .orderByAsc("current_period_end");