feat(用户模块): 添加用户余额额度字段及相关逻辑

在用户表中新增balance_limit字段用于记录用户余额额度,并同步更新DTO、Entity及相关查询逻辑
修改用户更新逻辑,当只更新额度时自动计算剩余余额
更新统计查询SQL以包含额度字段的汇总
This commit is contained in:
dzq 2025-05-29 15:57:31 +08:00
parent 12fa1dce42
commit 1be43a1251
6 changed files with 21 additions and 4 deletions

View File

@ -75,6 +75,9 @@ public class QyUserApplicationService {
public void updateUser(UpdateQyUserCommand command) { public void updateUser(UpdateQyUserCommand command) {
UserModel model = qyUserModelFactory.loadById(command.getId()); UserModel model = qyUserModelFactory.loadById(command.getId());
if (command.getBalanceLimit() != null && command.getBalance() == null) {
command.setBalance(command.getBalanceLimit().subtract(model.getUseBalance()));
}
model.loadUpdateCommand(command); model.loadUpdateCommand(command);
model.updateById(); model.updateById();

View File

@ -152,6 +152,10 @@ public class QyUserEntity extends BaseEntity<QyUserEntity> {
@TableField("use_balance") @TableField("use_balance")
private BigDecimal useBalance; private BigDecimal useBalance;
@ApiModelProperty("用户余额额度")
@TableField("balance_limit")
private BigDecimal balanceLimit;
@ApiModelProperty("系统角色id") @ApiModelProperty("系统角色id")
@TableField("sys_role_id") @TableField("sys_role_id")
private Long sysRoleId; private Long sysRoleId;

View File

@ -45,12 +45,12 @@ public interface QyUserMapper extends BaseMapper<QyUserEntity> {
"AND sr.role_key = 'admin'") "AND sr.role_key = 'admin'")
List<String> selectAdminUserIds(); List<String> 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 " + "FROM qy_user " +
"WHERE deleted = 0") "WHERE deleted = 0")
QyUserStatsDTO selectTotalBalance(); 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 " + "FROM qy_user " +
"WHERE deleted = 0 AND corpid = #{corpid}") "WHERE deleted = 0 AND corpid = #{corpid}")
QyUserStatsDTO selectTotalBalanceByCorpid(@Param("corpid") String corpid); QyUserStatsDTO selectTotalBalanceByCorpid(@Param("corpid") String corpid);

View File

@ -109,6 +109,9 @@ public class QyUserDTO {
@ExcelColumn(name = "已使用用户余额") @ExcelColumn(name = "已使用用户余额")
private BigDecimal useBalance; private BigDecimal useBalance;
@ExcelColumn(name = "用户余额额度")
private BigDecimal balanceLimit;
@ExcelColumn(name = "系统角色ID") @ExcelColumn(name = "系统角色ID")
private Long sysRoleId; private Long sysRoleId;

View File

@ -9,9 +9,12 @@ import java.math.BigDecimal;
@Setter @Setter
public class QyUserStatsDTO { public class QyUserStatsDTO {
// 用户余额 // 用户剩余余额
private BigDecimal balance; private BigDecimal balance;
// 已使用余额 // 已使用余额
private BigDecimal useBalance; private BigDecimal useBalance;
// 余额额度
private BigDecimal balanceLimit;
} }

View File

@ -8,4 +8,8 @@ AFTER `balance`;
ALTER TABLE `qy_user` ALTER TABLE `qy_user`
ADD COLUMN `use_balance` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '已使用用户余额' ADD COLUMN `use_balance` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '已使用用户余额'
AFTER `balance`; AFTER `balance`;
ALTER TABLE `qy_user`
ADD COLUMN `balance_limit` DECIMAL(15,2) NOT NULL DEFAULT '0.00' COMMENT '余额额度'
AFTER `use_balance`;