From 1be43a12511c0bc068e8bbf0c465c49af03ec8cc Mon Sep 17 00:00:00 2001 From: dzq Date: Thu, 29 May 2025 15:57:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=94=A8=E6=88=B7=E6=A8=A1=E5=9D=97):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7=E4=BD=99=E9=A2=9D=E9=A2=9D?= =?UTF-8?q?=E5=BA=A6=E5=AD=97=E6=AE=B5=E5=8F=8A=E7=9B=B8=E5=85=B3=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在用户表中新增balance_limit字段用于记录用户余额额度,并同步更新DTO、Entity及相关查询逻辑 修改用户更新逻辑,当只更新额度时自动计算剩余余额 更新统计查询SQL以包含额度字段的汇总 --- .../domain/qywx/user/QyUserApplicationService.java | 3 +++ .../com/agileboot/domain/qywx/user/db/QyUserEntity.java | 4 ++++ .../com/agileboot/domain/qywx/user/db/QyUserMapper.java | 4 ++-- .../java/com/agileboot/domain/qywx/user/dto/QyUserDTO.java | 3 +++ .../com/agileboot/domain/qywx/user/dto/QyUserStatsDTO.java | 5 ++++- sql/20250520_goods.sql | 6 +++++- 6 files changed, 21 insertions(+), 4 deletions(-) diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/QyUserApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/QyUserApplicationService.java index ecbfaa3..ede561a 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/QyUserApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/QyUserApplicationService.java @@ -75,6 +75,9 @@ public class QyUserApplicationService { public void updateUser(UpdateQyUserCommand command) { UserModel model = qyUserModelFactory.loadById(command.getId()); + if (command.getBalanceLimit() != null && command.getBalance() == null) { + command.setBalance(command.getBalanceLimit().subtract(model.getUseBalance())); + } model.loadUpdateCommand(command); model.updateById(); diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserEntity.java b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserEntity.java index 86faff6..447b0e3 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserEntity.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserEntity.java @@ -152,6 +152,10 @@ public class QyUserEntity extends BaseEntity { @TableField("use_balance") private BigDecimal useBalance; + @ApiModelProperty("用户余额额度") + @TableField("balance_limit") + private BigDecimal balanceLimit; + @ApiModelProperty("系统角色id") @TableField("sys_role_id") private Long sysRoleId; diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserMapper.java b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserMapper.java index 764f028..f37ea4c 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserMapper.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserMapper.java @@ -45,12 +45,12 @@ public interface QyUserMapper extends BaseMapper { "AND sr.role_key = 'admin'") List selectAdminUserIds(); - @Select("SELECT SUM(balance) AS balance, SUM(use_balance) AS useBalance " + + @Select("SELECT SUM(balance) AS balance, SUM(use_balance) AS useBalance, SUM(balance_limit) AS balanceLimit " + "FROM qy_user " + "WHERE deleted = 0") QyUserStatsDTO selectTotalBalance(); - @Select("SELECT SUM(balance) AS balance, SUM(use_balance) AS useBalance " + + @Select("SELECT SUM(balance) AS balance, SUM(use_balance) AS useBalance, SUM(balance_limit) AS balanceLimit " + "FROM qy_user " + "WHERE deleted = 0 AND corpid = #{corpid}") QyUserStatsDTO selectTotalBalanceByCorpid(@Param("corpid") String corpid); diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/dto/QyUserDTO.java b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/dto/QyUserDTO.java index 0205105..c40de7b 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/dto/QyUserDTO.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/dto/QyUserDTO.java @@ -109,6 +109,9 @@ public class QyUserDTO { @ExcelColumn(name = "已使用用户余额") private BigDecimal useBalance; + @ExcelColumn(name = "用户余额额度") + private BigDecimal balanceLimit; + @ExcelColumn(name = "系统角色ID") private Long sysRoleId; diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/dto/QyUserStatsDTO.java b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/dto/QyUserStatsDTO.java index 21e4c69..b85f951 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/dto/QyUserStatsDTO.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/dto/QyUserStatsDTO.java @@ -9,9 +9,12 @@ import java.math.BigDecimal; @Setter public class QyUserStatsDTO { - // 用户余额 + // 用户剩余余额 private BigDecimal balance; // 已使用余额 private BigDecimal useBalance; + + // 余额额度 + private BigDecimal balanceLimit; } diff --git a/sql/20250520_goods.sql b/sql/20250520_goods.sql index 378c0c7..e2440fa 100644 --- a/sql/20250520_goods.sql +++ b/sql/20250520_goods.sql @@ -8,4 +8,8 @@ AFTER `balance`; ALTER TABLE `qy_user` ADD COLUMN `use_balance` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '已使用用户余额' -AFTER `balance`; \ No newline at end of file +AFTER `balance`; + +ALTER TABLE `qy_user` +ADD COLUMN `balance_limit` DECIMAL(15,2) NOT NULL DEFAULT '0.00' COMMENT '余额额度' +AFTER `use_balance`; \ No newline at end of file