Commit a87eb950 by renyizhao

充值订单筛选修改 模型列表标签问题

parent 33b37714
......@@ -193,6 +193,7 @@ public class AppAiModelController {
vo.setIcon((String) item.get("icon"));
vo.setStatus(toInteger(item.get("status")));
vo.setDescription((String) item.get("description"));
vo.setTags((String) item.get("tags"));
// endpoints
Object ep = item.get("endpoints");
......
......@@ -56,4 +56,7 @@ public class AppModelPricingVO {
@Schema(description = "模型描述(未设置则为空)")
private String description;
@Schema(description = "模型标签,多个用逗号分隔")
private String tags;
}
......@@ -51,4 +51,11 @@ public class MemberRechargeController {
return CommonResult.success(success);
}
@GetMapping("/pending-count")
@Operation(summary = "获取待充值数量")
@PreAuthorize("@ss.hasPermission('member:recharge:query')")
public CommonResult<Long> getPendingRechargeCount() {
return CommonResult.success(rechargeService.getPendingRechargeCount());
}
}
......@@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 充值记录分页请求 VO")
@Data
......@@ -17,12 +18,21 @@ public class MemberRechargePageReqVO extends PageParam {
@Schema(description = "用户ID", example = "1")
private Long userId;
@Schema(description = "用户ID列表", example = "[1, 2, 3]")
private List<Long> userIds;
@Schema(description = "用户手机号", example = "13800138000")
private String userMobile;
@Schema(description = "支付渠道", example = "wx")
private String payChannel;
@Schema(description = "支付状态", example = "1")
private Integer payStatus;
@Schema(description = "充值状态", example = "1")
private Integer redeemed;
@Schema(description = "创建时间", example = "[2024-01-01 00:00:00, 2024-12-31 23:59:59]")
private LocalDateTime[] createTime;
......
......@@ -30,8 +30,10 @@ public interface MemberRechargeMapper extends BaseMapperX<MemberRechargeDO> {
default PageResult<MemberRechargeDO> selectPage(MemberRechargePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MemberRechargeDO>()
.eqIfPresent(MemberRechargeDO::getUserId, reqVO.getUserId())
.inIfPresent(MemberRechargeDO::getUserId, reqVO.getUserIds())
.eqIfPresent(MemberRechargeDO::getPayChannel, reqVO.getPayChannel())
.eqIfPresent(MemberRechargeDO::getPayStatus, reqVO.getPayStatus())
.eqIfPresent(MemberRechargeDO::getRedeemed, reqVO.getRedeemed())
.betweenIfPresent(MemberRechargeDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MemberRechargeDO::getId));
}
......@@ -45,4 +47,9 @@ public interface MemberRechargeMapper extends BaseMapperX<MemberRechargeDO> {
.orderByDesc(MemberRechargeDO::getId));
}
default long selectPendingCount() {
return selectCount(new LambdaQueryWrapperX<MemberRechargeDO>()
.eq(MemberRechargeDO::getRedeemed, 2));
}
}
......@@ -26,6 +26,11 @@ public interface MemberUserMapper extends BaseMapperX<MemberUserDO> {
return selectOne(MemberUserDO::getMobile, mobile);
}
default List<MemberUserDO> selectListByMobileLike(String mobile) {
return selectList(new LambdaQueryWrapperX<MemberUserDO>()
.likeIfPresent(MemberUserDO::getMobile, mobile));
}
default List<MemberUserDO> selectListByNicknameLike(String nickname) {
return selectList(new LambdaQueryWrapperX<MemberUserDO>()
.likeIfPresent(MemberUserDO::getNickname, nickname));
......
......@@ -69,4 +69,9 @@ public interface MemberRechargeService {
*/
boolean manualRecharge(Long rechargeId, Long operatorId, String redemptionCode);
/**
* 获取待充值数量
*/
long getPendingRechargeCount();
}
......@@ -11,6 +11,8 @@ import com.luhu.computility.module.member.dal.dataobject.recharge.MemberRecharge
import com.luhu.computility.module.member.dal.dataobject.user.MemberUserDO;
import com.luhu.computility.module.member.dal.mysql.recharge.MemberRechargeMapper;
import com.luhu.computility.module.member.service.user.MemberUserService;
import com.luhu.computility.module.system.api.user.AdminUserApi;
import com.luhu.computility.module.system.api.user.dto.AdminUserRespDTO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
......@@ -30,6 +32,7 @@ public class MemberRechargeServiceImpl implements MemberRechargeService {
private final MemberUserService memberUserService;
private final MemberNewApiClient memberNewApiClient;
private final MemberNewApiProperties newApiProperties;
private final AdminUserApi adminUserApi;
private static final Map<String, String> PAY_CHANNEL_NAMES = Map.of(
"wx", "微信支付",
......@@ -122,15 +125,36 @@ public class MemberRechargeServiceImpl implements MemberRechargeService {
@Override
public PageResult<MemberRechargeRespVO> getRechargePage(MemberRechargePageReqVO reqVO) {
PageResult<MemberRechargeDO> pageResult = rechargeMapper.selectPage(reqVO);
// 如果有手机号,先查用户ID列表
List<Long> userIds = null;
if (reqVO.getUserMobile() != null && !reqVO.getUserMobile().isEmpty()) {
List<MemberUserDO> users = memberUserService.getUserListByMobileLike(reqVO.getUserMobile());
if (users.isEmpty()) {
// 用户不存在,直接返回空结果
return new PageResult<>(java.util.Collections.emptyList(), 0L);
}
userIds = users.stream().map(MemberUserDO::getId).collect(Collectors.toList());
}
// 构建查询条件
MemberRechargePageReqVO queryVO = new MemberRechargePageReqVO();
queryVO.setPageNo(reqVO.getPageNo());
queryVO.setPageSize(reqVO.getPageSize());
queryVO.setUserIds(userIds);
queryVO.setPayChannel(reqVO.getPayChannel());
queryVO.setPayStatus(reqVO.getPayStatus());
queryVO.setRedeemed(reqVO.getRedeemed());
queryVO.setCreateTime(reqVO.getCreateTime());
PageResult<MemberRechargeDO> pageResult = rechargeMapper.selectPage(queryVO);
// 批量获取所有用户信息
List<Long> userIds = pageResult.getList().stream()
List<Long> rechargeUserIds = pageResult.getList().stream()
.map(MemberRechargeDO::getUserId)
.distinct()
.collect(Collectors.toList());
java.util.Map<Long, MemberUserDO> userMap = new java.util.HashMap<>();
for (Long uid : userIds) {
for (Long uid : rechargeUserIds) {
if (uid != null) {
MemberUserDO user = memberUserService.getUser(uid);
if (user != null) {
......@@ -139,9 +163,27 @@ public class MemberRechargeServiceImpl implements MemberRechargeService {
}
}
// 批量获取管理员用户信息
List<Long> adminUserIds = pageResult.getList().stream()
.map(MemberRechargeDO::getManualOperatorId)
.filter(id -> id != null)
.distinct()
.collect(Collectors.toList());
java.util.Map<Long, AdminUserRespDTO> adminUserMap = new java.util.HashMap<>();
if (!adminUserIds.isEmpty()) {
List<AdminUserRespDTO> adminUsers = adminUserApi.getUserList(adminUserIds);
for (AdminUserRespDTO adminUser : adminUsers) {
if (adminUser != null) {
adminUserMap.put(adminUser.getId(), adminUser);
}
}
}
final java.util.Map<Long, MemberUserDO> finalUserMap = userMap;
final java.util.Map<Long, AdminUserRespDTO> finalAdminUserMap = adminUserMap;
List<MemberRechargeRespVO> voList = pageResult.getList().stream()
.map(recharge -> convertToRespVO(recharge, finalUserMap.get(recharge.getUserId())))
.map(recharge -> convertToRespVO(recharge, finalUserMap.get(recharge.getUserId()),
finalAdminUserMap.get(recharge.getManualOperatorId())))
.collect(Collectors.toList());
return new PageResult<>(voList, pageResult.getTotal());
}
......@@ -165,9 +207,27 @@ public class MemberRechargeServiceImpl implements MemberRechargeService {
}
}
// 批量获取管理员用户信息
List<Long> adminUserIds = pageResult.getList().stream()
.map(MemberRechargeDO::getManualOperatorId)
.filter(id -> id != null)
.distinct()
.collect(Collectors.toList());
java.util.Map<Long, AdminUserRespDTO> adminUserMap = new java.util.HashMap<>();
if (!adminUserIds.isEmpty()) {
List<AdminUserRespDTO> adminUsers = adminUserApi.getUserList(adminUserIds);
for (AdminUserRespDTO adminUser : adminUsers) {
if (adminUser != null) {
adminUserMap.put(adminUser.getId(), adminUser);
}
}
}
final java.util.Map<Long, MemberUserDO> finalUserMap = userMap;
final java.util.Map<Long, AdminUserRespDTO> finalAdminUserMap = adminUserMap;
List<MemberRechargeRespVO> voList = pageResult.getList().stream()
.map(recharge -> convertToRespVO(recharge, finalUserMap.get(recharge.getUserId())))
.map(recharge -> convertToRespVO(recharge, finalUserMap.get(recharge.getUserId()),
finalAdminUserMap.get(recharge.getManualOperatorId())))
.collect(Collectors.toList());
return new PageResult<>(voList, pageResult.getTotal());
}
......@@ -328,8 +388,14 @@ public class MemberRechargeServiceImpl implements MemberRechargeService {
return true;
}
private MemberRechargeRespVO convertToRespVO(MemberRechargeDO recharge, MemberUserDO user) {
@Override
public long getPendingRechargeCount() {
return rechargeMapper.selectPendingCount();
}
private MemberRechargeRespVO convertToRespVO(MemberRechargeDO recharge, MemberUserDO user, AdminUserRespDTO adminUser) {
MemberRechargeRespVO vo = new MemberRechargeRespVO();
vo.setId(recharge.getId());
vo.setUserId(recharge.getUserId());
vo.setUserMobile(user != null ? user.getMobile() : null);
vo.setAmount(recharge.getAmount());
......@@ -353,6 +419,7 @@ public class MemberRechargeServiceImpl implements MemberRechargeService {
vo.setRedemptionCode(recharge.getRedemptionCode());
vo.setRedemptionQuota(recharge.getRedemptionQuota());
vo.setManualOperatorId(recharge.getManualOperatorId());
vo.setManualOperatorName(adminUser != null ? adminUser.getNickname() : null);
vo.setManualProcessTime(recharge.getManualProcessTime());
return vo;
}
......
......@@ -28,6 +28,14 @@ public interface MemberUserService {
MemberUserDO getUserByMobile(String mobile);
/**
* 基于手机号,模糊匹配用户列表
*
* @param mobile 手机号,模糊匹配
* @return 用户信息的列表
*/
List<MemberUserDO> getUserListByMobileLike(String mobile);
/**
* 基于用户昵称,模糊匹配用户列表
*
* @param nickname 用户昵称,模糊匹配
......
......@@ -70,6 +70,11 @@ public class MemberUserServiceImpl implements MemberUserService {
}
@Override
public List<MemberUserDO> getUserListByMobileLike(String mobile) {
return memberUserMapper.selectListByMobileLike(mobile);
}
@Override
public List<MemberUserDO> getUserListByNickname(String nickname) {
return memberUserMapper.selectListByNicknameLike(nickname);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment