BUGFIX:订阅计划
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -45,4 +45,7 @@ public class SubscriptionPlanDTO {
|
|||||||
@Schema(description = "订阅计划命名")
|
@Schema(description = "订阅计划命名")
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
@Schema(description = "订阅计划状态")
|
||||||
|
private String status;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user