Commit a87eb950 by renyizhao

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

parent 33b37714
...@@ -193,6 +193,7 @@ public class AppAiModelController { ...@@ -193,6 +193,7 @@ public class AppAiModelController {
vo.setIcon((String) item.get("icon")); vo.setIcon((String) item.get("icon"));
vo.setStatus(toInteger(item.get("status"))); vo.setStatus(toInteger(item.get("status")));
vo.setDescription((String) item.get("description")); vo.setDescription((String) item.get("description"));
vo.setTags((String) item.get("tags"));
// endpoints // endpoints
Object ep = item.get("endpoints"); Object ep = item.get("endpoints");
......
...@@ -56,4 +56,7 @@ public class AppModelPricingVO { ...@@ -56,4 +56,7 @@ public class AppModelPricingVO {
@Schema(description = "模型描述(未设置则为空)") @Schema(description = "模型描述(未设置则为空)")
private String description; private String description;
@Schema(description = "模型标签,多个用逗号分隔")
private String tags;
} }
...@@ -51,4 +51,11 @@ public class MemberRechargeController { ...@@ -51,4 +51,11 @@ public class MemberRechargeController {
return CommonResult.success(success); 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; ...@@ -7,6 +7,7 @@ import lombok.EqualsAndHashCode;
import lombok.ToString; import lombok.ToString;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 充值记录分页请求 VO") @Schema(description = "管理后台 - 充值记录分页请求 VO")
@Data @Data
...@@ -17,12 +18,21 @@ public class MemberRechargePageReqVO extends PageParam { ...@@ -17,12 +18,21 @@ public class MemberRechargePageReqVO extends PageParam {
@Schema(description = "用户ID", example = "1") @Schema(description = "用户ID", example = "1")
private Long userId; 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") @Schema(description = "支付渠道", example = "wx")
private String payChannel; private String payChannel;
@Schema(description = "支付状态", example = "1") @Schema(description = "支付状态", example = "1")
private Integer payStatus; 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]") @Schema(description = "创建时间", example = "[2024-01-01 00:00:00, 2024-12-31 23:59:59]")
private LocalDateTime[] createTime; private LocalDateTime[] createTime;
......
...@@ -30,8 +30,10 @@ public interface MemberRechargeMapper extends BaseMapperX<MemberRechargeDO> { ...@@ -30,8 +30,10 @@ public interface MemberRechargeMapper extends BaseMapperX<MemberRechargeDO> {
default PageResult<MemberRechargeDO> selectPage(MemberRechargePageReqVO reqVO) { default PageResult<MemberRechargeDO> selectPage(MemberRechargePageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<MemberRechargeDO>() return selectPage(reqVO, new LambdaQueryWrapperX<MemberRechargeDO>()
.eqIfPresent(MemberRechargeDO::getUserId, reqVO.getUserId()) .eqIfPresent(MemberRechargeDO::getUserId, reqVO.getUserId())
.inIfPresent(MemberRechargeDO::getUserId, reqVO.getUserIds())
.eqIfPresent(MemberRechargeDO::getPayChannel, reqVO.getPayChannel()) .eqIfPresent(MemberRechargeDO::getPayChannel, reqVO.getPayChannel())
.eqIfPresent(MemberRechargeDO::getPayStatus, reqVO.getPayStatus()) .eqIfPresent(MemberRechargeDO::getPayStatus, reqVO.getPayStatus())
.eqIfPresent(MemberRechargeDO::getRedeemed, reqVO.getRedeemed())
.betweenIfPresent(MemberRechargeDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(MemberRechargeDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(MemberRechargeDO::getId)); .orderByDesc(MemberRechargeDO::getId));
} }
...@@ -45,4 +47,9 @@ public interface MemberRechargeMapper extends BaseMapperX<MemberRechargeDO> { ...@@ -45,4 +47,9 @@ public interface MemberRechargeMapper extends BaseMapperX<MemberRechargeDO> {
.orderByDesc(MemberRechargeDO::getId)); .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> { ...@@ -26,6 +26,11 @@ public interface MemberUserMapper extends BaseMapperX<MemberUserDO> {
return selectOne(MemberUserDO::getMobile, mobile); 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) { default List<MemberUserDO> selectListByNicknameLike(String nickname) {
return selectList(new LambdaQueryWrapperX<MemberUserDO>() return selectList(new LambdaQueryWrapperX<MemberUserDO>()
.likeIfPresent(MemberUserDO::getNickname, nickname)); .likeIfPresent(MemberUserDO::getNickname, nickname));
......
...@@ -69,4 +69,9 @@ public interface MemberRechargeService { ...@@ -69,4 +69,9 @@ public interface MemberRechargeService {
*/ */
boolean manualRecharge(Long rechargeId, Long operatorId, String redemptionCode); boolean manualRecharge(Long rechargeId, Long operatorId, String redemptionCode);
/**
* 获取待充值数量
*/
long getPendingRechargeCount();
} }
...@@ -11,6 +11,8 @@ import com.luhu.computility.module.member.dal.dataobject.recharge.MemberRecharge ...@@ -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.dataobject.user.MemberUserDO;
import com.luhu.computility.module.member.dal.mysql.recharge.MemberRechargeMapper; import com.luhu.computility.module.member.dal.mysql.recharge.MemberRechargeMapper;
import com.luhu.computility.module.member.service.user.MemberUserService; 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.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -30,6 +32,7 @@ public class MemberRechargeServiceImpl implements MemberRechargeService { ...@@ -30,6 +32,7 @@ public class MemberRechargeServiceImpl implements MemberRechargeService {
private final MemberUserService memberUserService; private final MemberUserService memberUserService;
private final MemberNewApiClient memberNewApiClient; private final MemberNewApiClient memberNewApiClient;
private final MemberNewApiProperties newApiProperties; private final MemberNewApiProperties newApiProperties;
private final AdminUserApi adminUserApi;
private static final Map<String, String> PAY_CHANNEL_NAMES = Map.of( private static final Map<String, String> PAY_CHANNEL_NAMES = Map.of(
"wx", "微信支付", "wx", "微信支付",
...@@ -122,15 +125,36 @@ public class MemberRechargeServiceImpl implements MemberRechargeService { ...@@ -122,15 +125,36 @@ public class MemberRechargeServiceImpl implements MemberRechargeService {
@Override @Override
public PageResult<MemberRechargeRespVO> getRechargePage(MemberRechargePageReqVO reqVO) { 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) .map(MemberRechargeDO::getUserId)
.distinct() .distinct()
.collect(Collectors.toList()); .collect(Collectors.toList());
java.util.Map<Long, MemberUserDO> userMap = new java.util.HashMap<>(); java.util.Map<Long, MemberUserDO> userMap = new java.util.HashMap<>();
for (Long uid : userIds) { for (Long uid : rechargeUserIds) {
if (uid != null) { if (uid != null) {
MemberUserDO user = memberUserService.getUser(uid); MemberUserDO user = memberUserService.getUser(uid);
if (user != null) { if (user != null) {
...@@ -139,9 +163,27 @@ public class MemberRechargeServiceImpl implements MemberRechargeService { ...@@ -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, MemberUserDO> finalUserMap = userMap;
final java.util.Map<Long, AdminUserRespDTO> finalAdminUserMap = adminUserMap;
List<MemberRechargeRespVO> voList = pageResult.getList().stream() 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()); .collect(Collectors.toList());
return new PageResult<>(voList, pageResult.getTotal()); return new PageResult<>(voList, pageResult.getTotal());
} }
...@@ -165,9 +207,27 @@ public class MemberRechargeServiceImpl implements MemberRechargeService { ...@@ -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, MemberUserDO> finalUserMap = userMap;
final java.util.Map<Long, AdminUserRespDTO> finalAdminUserMap = adminUserMap;
List<MemberRechargeRespVO> voList = pageResult.getList().stream() 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()); .collect(Collectors.toList());
return new PageResult<>(voList, pageResult.getTotal()); return new PageResult<>(voList, pageResult.getTotal());
} }
...@@ -328,8 +388,14 @@ public class MemberRechargeServiceImpl implements MemberRechargeService { ...@@ -328,8 +388,14 @@ public class MemberRechargeServiceImpl implements MemberRechargeService {
return true; 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(); MemberRechargeRespVO vo = new MemberRechargeRespVO();
vo.setId(recharge.getId());
vo.setUserId(recharge.getUserId()); vo.setUserId(recharge.getUserId());
vo.setUserMobile(user != null ? user.getMobile() : null); vo.setUserMobile(user != null ? user.getMobile() : null);
vo.setAmount(recharge.getAmount()); vo.setAmount(recharge.getAmount());
...@@ -353,6 +419,7 @@ public class MemberRechargeServiceImpl implements MemberRechargeService { ...@@ -353,6 +419,7 @@ public class MemberRechargeServiceImpl implements MemberRechargeService {
vo.setRedemptionCode(recharge.getRedemptionCode()); vo.setRedemptionCode(recharge.getRedemptionCode());
vo.setRedemptionQuota(recharge.getRedemptionQuota()); vo.setRedemptionQuota(recharge.getRedemptionQuota());
vo.setManualOperatorId(recharge.getManualOperatorId()); vo.setManualOperatorId(recharge.getManualOperatorId());
vo.setManualOperatorName(adminUser != null ? adminUser.getNickname() : null);
vo.setManualProcessTime(recharge.getManualProcessTime()); vo.setManualProcessTime(recharge.getManualProcessTime());
return vo; return vo;
} }
......
...@@ -28,6 +28,14 @@ public interface MemberUserService { ...@@ -28,6 +28,14 @@ public interface MemberUserService {
MemberUserDO getUserByMobile(String mobile); MemberUserDO getUserByMobile(String mobile);
/** /**
* 基于手机号,模糊匹配用户列表
*
* @param mobile 手机号,模糊匹配
* @return 用户信息的列表
*/
List<MemberUserDO> getUserListByMobileLike(String mobile);
/**
* 基于用户昵称,模糊匹配用户列表 * 基于用户昵称,模糊匹配用户列表
* *
* @param nickname 用户昵称,模糊匹配 * @param nickname 用户昵称,模糊匹配
......
...@@ -70,6 +70,11 @@ public class MemberUserServiceImpl implements MemberUserService { ...@@ -70,6 +70,11 @@ public class MemberUserServiceImpl implements MemberUserService {
} }
@Override @Override
public List<MemberUserDO> getUserListByMobileLike(String mobile) {
return memberUserMapper.selectListByMobileLike(mobile);
}
@Override
public List<MemberUserDO> getUserListByNickname(String nickname) { public List<MemberUserDO> getUserListByNickname(String nickname) {
return memberUserMapper.selectListByNicknameLike(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