feat(用户): 添加用户余额相关字段及查询功能

在用户模块中添加余额、可用余额和余额限制字段,支持通过corpid查询用户余额信息
新增getUserListWithBalance接口用于查询带余额信息的用户列表
修改用户详情接口支持传入corpid参数获取对应余额信息
This commit is contained in:
dzq 2025-11-24 16:26:17 +08:00
parent 0e262bd324
commit cc78eceda4
9 changed files with 74 additions and 8 deletions

View File

@ -48,8 +48,8 @@ public class Ab98UserController extends BaseController {
@Operation(summary = "用户详情")
@GetMapping("/detail/{id}")
public ResponseDTO<Ab98UserDetailDTO> detail(@PathVariable Long id) {
Ab98UserDetailDTO ab98UserDetail = userApplicationService.getAb98UserDetail(id);
public ResponseDTO<Ab98UserDetailDTO> detail(@PathVariable Long id, String corpid) {
Ab98UserDetailDTO ab98UserDetail = userApplicationService.getAb98UserDetail(id, corpid);
return ResponseDTO.ok(ab98UserDetail);
}

View File

@ -8,6 +8,8 @@ import com.agileboot.domain.ab98.api.Ab98UserDto;
import com.agileboot.domain.ab98.api.SsoLoginUserinfo;
import com.agileboot.domain.ab98.user.command.BindQyUserCommand;
import com.agileboot.domain.ab98.user.dto.Ab98UserDetailDTO;
import com.agileboot.domain.ab98.user_balance.db.UserBalanceEntity;
import com.agileboot.domain.ab98.user_balance.db.UserBalanceService;
import com.agileboot.domain.common.command.BulkOperationCommand;
import com.agileboot.domain.ab98.user.command.AddAb98UserCommand;
import com.agileboot.domain.ab98.user.command.UpdateAb98UserCommand;
@ -43,6 +45,7 @@ public class Ab98UserApplicationService {
private final QyUserService qyUserService;
private final SysUserQyUserService sysUserQyUserService;
private final SysUserService sysUserService;
private final UserBalanceService userBalanceService;
public PageDTO<Ab98UserDTO> getUserList(SearchAb98UserQuery<Ab98UserEntity> query) {
Page<Ab98UserEntity> page = userService.getUserListWithTagFilter(query);
@ -84,9 +87,20 @@ public class Ab98UserApplicationService {
}
public Ab98UserDetailDTO getAb98UserDetail(Long ab98UserId) {
public Ab98UserDetailDTO getAb98UserDetail(Long ab98UserId, String corpid) {
Ab98UserEntity ab98UserEntity = userService.getById(ab98UserId);
return new Ab98UserDetailDTO(ab98UserEntity);
UserBalanceEntity userBalanceEntity = null;
if (ab98UserEntity != null && StringUtils.isNotBlank(corpid)) {
userBalanceEntity = userBalanceService.getByCorpidAndAb98UserId(corpid, ab98UserId);
if (userBalanceEntity != null) {
ab98UserEntity.setBalance(userBalanceEntity.getBalance());
ab98UserEntity.setUseBalance(userBalanceEntity.getUseBalance());
ab98UserEntity.setBalanceLimit(userBalanceEntity.getBalanceLimit());
}
}
Ab98UserDetailDTO dto = new Ab98UserDetailDTO(ab98UserEntity);
dto.setUserBalanceEntity(userBalanceEntity);
return dto;
}

View File

@ -79,6 +79,18 @@ public class Ab98UserEntity extends BaseEntity<Ab98UserEntity> {
@TableField("ab98_balance")
private Integer ab98Balance;
@ApiModelProperty("用户余额来自user_balance表单位")
@TableField(exist = false)
private Long balance;
@ApiModelProperty("可用余额来自user_balance表单位")
@TableField(exist = false)
private Long useBalance;
@ApiModelProperty("余额限制来自user_balance表单位")
@TableField(exist = false)
private Long balanceLimit;
@Override
public Serializable pkVal() {

View File

@ -50,12 +50,21 @@ public interface Ab98UserMapper extends BaseMapper<Ab98UserEntity> {
@Select("SELECT * FROM ab98_user WHERE openid = #{openid} AND userid = #{userid} LIMIT 1")
Ab98UserEntity selectByOpenidAndUserid(@Param("openid")String openid, @Param("userid")String userid);
@Select("SELECT DISTINCT u.* " +
@Select("SELECT DISTINCT u.*, ub.balance, ub.use_balance, ub.balance_limit " +
"FROM ab98_user u " +
"LEFT JOIN ab98_user_tag t ON u.ab98_user_id = t.ab98_user_id " +
"LEFT JOIN user_balance ub ON u.ab98_user_id = ub.ab98_user_id " +
"${ew.customSqlSegment}")
Page<Ab98UserEntity> getUserListWithTagFilter(
Page<Ab98UserEntity> page,
@Param(Constants.WRAPPER) Wrapper<Ab98UserEntity> queryWrapper
);
@Select("SELECT DISTINCT u.*, ub.balance, ub.use_balance, ub.balance_limit " +
"FROM ab98_user u " +
"LEFT JOIN user_balance ub ON u.ab98_user_id = ub.ab98_user_id " +
"${ew.customSqlSegment}")
List<Ab98UserEntity> getUserListWithBalance(
@Param(Constants.WRAPPER) Wrapper<Ab98UserEntity> queryWrapper
);
}

View File

@ -20,6 +20,8 @@ import java.util.List;
public interface Ab98UserService extends IService<Ab98UserEntity> {
Page<Ab98UserEntity> getUserListWithTagFilter(AbstractPageQuery<Ab98UserEntity> query);
List<Ab98UserEntity> getUserListWithBalance(Wrapper<Ab98UserEntity> wrapper);
List<Ab98UserEntity> selectAll();
Ab98UserEntity getByOpenid(String openid);

View File

@ -1,6 +1,7 @@
package com.agileboot.domain.ab98.user.db;
import com.agileboot.common.core.page.AbstractPageQuery;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -58,4 +59,9 @@ public class Ab98UserServiceImpl extends ServiceImpl<Ab98UserMapper, Ab98UserEnt
public Ab98UserEntity selectByOpenidAndUserid(String openid, String userid) {
return baseMapper.selectByOpenidAndUserid(openid, userid);
}
@Override
public List<Ab98UserEntity> getUserListWithBalance(Wrapper<Ab98UserEntity> wrapper) {
return baseMapper.getUserListWithBalance(wrapper);
}
}

View File

@ -61,6 +61,15 @@ public class Ab98UserDTO {
@ExcelColumn(name = "用户余额(单位:分)")
private Integer ab98Balance;
@ExcelColumn(name = "余额user_balance表单位")
private Long balance;
@ExcelColumn(name = "可用余额user_balance表单位")
private Long useBalance;
@ExcelColumn(name = "余额限制user_balance表单位")
private Long balanceLimit;
@ExcelColumn(name = "注册状态")
private String registeredStatus;

View File

@ -5,6 +5,7 @@ import com.agileboot.common.annotation.ExcelColumn;
import com.agileboot.common.annotation.ExcelSheet;
import com.agileboot.common.core.base.BaseEntity;
import com.agileboot.domain.ab98.user.db.Ab98UserEntity;
import com.agileboot.domain.ab98.user_balance.db.UserBalanceEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -62,6 +63,17 @@ public class Ab98UserDetailDTO extends BaseEntity<Ab98UserDetailDTO> {
@ExcelColumn(name = "用户余额(单位:分)")
private Integer ab98Balance;
@ExcelColumn(name = "余额user_balance表单位")
private Long balance;
@ExcelColumn(name = "可用余额user_balance表单位")
private Long useBalance;
@ExcelColumn(name = "余额限制user_balance表单位")
private Long balanceLimit;
private UserBalanceEntity userBalanceEntity;
@ExcelColumn(name = "注册状态")
private String registeredStatus;
}

View File

@ -22,6 +22,7 @@ public class SearchAb98UserQuery<T> extends AbstractPageQuery<T> {
private Date startTime;
private Date endTime;
private String tagName;
private String corpid;
@Override
public QueryWrapper<T> addQueryCondition() {
@ -37,6 +38,7 @@ public class SearchAb98UserQuery<T> extends AbstractPageQuery<T> {
.eq(StrUtil.isNotEmpty(tagName), "t.tag_name", tagName)
.eq(StrUtil.isNotEmpty(sex), "u.sex", sex)
.eq(registered != null, "u.registered", registered)
.eq(StrUtil.isNotEmpty(corpid), "ub.corpid", corpid)
.between(startTime != null && endTime != null, "u.create_time", startTime, endTime);
this.timeRangeColumn = "create_time";