feat(订单查询): 重构订单查询逻辑并添加余额信息

- 使用 and/or 包装器重构订单查询条件,提高查询逻辑清晰度
- 在支付控制器中添加 ab98 用户余额信息返回
- 移除 hasReturn 条件,统一查询已支付订单
This commit is contained in:
dzq 2025-07-07 17:48:25 +08:00
parent 9b95bc75e7
commit 234441ff43
3 changed files with 47 additions and 39 deletions

View File

@ -334,6 +334,11 @@ public class PaymentController {
public ResponseDTO<GetBalanceResponse> getBalanceByQyUserid(@RequestParam String corpid, @RequestParam String userid) {
QyUserEntity qyUser = qyUserApplicationService.getUserByUserIdAndCorpid(userid, corpid);
Ab98UserEntity ab98User = null;
if (qyUser.getAb98UserId()!= null) {
ab98User = ab98UserApplicationService.getByAb98UserId(qyUser.getAb98UserId());
}
// 创建响应对象假设GetBalanceResponse包含balance字段
GetBalanceResponse response = new GetBalanceResponse(
qyUser.getUserid(),
@ -341,7 +346,7 @@ public class PaymentController {
qyUser.getBalance(),
qyUser.getUseBalance(),
qyUser.getBalanceLimit(),
null);
ab98User);
return ResponseDTO.ok(response);
}

View File

@ -417,29 +417,29 @@ public class OrderApplicationService {
// 构建订单查询条件
QueryWrapper<ShopOrderEntity> orderQueryWrapper = new QueryWrapper<>();
// 添加 openid 作为查询条件
orderQueryWrapper.eq("openid", openid);
// 如果 Ab98 用户信息存在
if (ab98User != null) {
// 添加 or 条件根据 Ab98 用户的 userid 查询订单
orderQueryWrapper.or()
.eq("userid", ab98User.getUserid());
orderQueryWrapper.and(wrapper -> {
wrapper.eq("openid", openid);
// 如果 Ab98 用户信息存在
if (ab98User != null) {
// 添加 or 条件根据 Ab98 用户的 userid 查询订单
wrapper.or()
.eq("userid", ab98User.getUserid());
// 如果 corpid 不为空
if (StringUtils.isNotBlank(corpid)) {
// 根据 Ab98 用户的 ab98UserId corpid 获取企业微信用户信息
QyUserEntity qyUser = qyUserService.getUserByAb98UserId(ab98User.getAb98UserId(), corpid);
// 如果企业微信用户信息存在
if (qyUser!= null) {
// 添加 or 条件根据企业微信用户的 userid 查询订单
orderQueryWrapper.or()
.eq("userid", qyUser.getUserid());
// 如果 corpid 不为空
if (StringUtils.isNotBlank(corpid)) {
// 根据 Ab98 用户的 ab98UserId corpid 获取企业微信用户信息
QyUserEntity qyUser = qyUserService.getUserByAb98UserId(ab98User.getAb98UserId(), corpid);
// 如果企业微信用户信息存在
if (qyUser!= null) {
// 添加 or 条件根据企业微信用户的 userid 查询订单
wrapper.or()
.eq("userid", qyUser.getUserid());
}
}
}
}
});
// 根据查询条件获取订单列表
if (Integer.valueOf(1).equals(hasReturn)) {
orderQueryWrapper.eq("pay_status", 2);
}
orderQueryWrapper.eq("pay_status", 2);
List<ShopOrderEntity> orderList = orderService.list(orderQueryWrapper);
// 构建订单商品查询条件
@ -487,29 +487,29 @@ public class OrderApplicationService {
// 构建订单查询条件
QueryWrapper<ShopOrderEntity> orderQueryWrapper = new QueryWrapper<>();
// 添加企业微信用户的 userid 作为查询条件
orderQueryWrapper.eq("userid", qyUser.getUserid());
// 如果企业微信用户的 ab98UserId 不为空
if (qyUser.getAb98UserId() != null) {
// 根据 ab98UserId 获取 Ab98 用户信息
Ab98UserEntity ab98User = ab98UserService.getById(qyUser.getAb98UserId());
// 如果 Ab98 用户信息存在
if (ab98User!= null) {
// 添加 or 条件根据 Ab98 用户的 userid 查询订单
orderQueryWrapper.or()
.eq("userid", ab98User.getUserid());
orderQueryWrapper.and(wrapper -> {
wrapper.eq("userid", qyUser.getUserid());
// 如果企业微信用户的 ab98UserId 不为空
if (qyUser.getAb98UserId() != null) {
// 根据 ab98UserId 获取 Ab98 用户信息
Ab98UserEntity ab98User = ab98UserService.getById(qyUser.getAb98UserId());
// 如果 Ab98 用户信息存在
if (ab98User!= null) {
// 添加 or 条件根据 Ab98 用户的 userid 查询订单
wrapper.or()
.eq("userid", ab98User.getUserid());
// 如果 Ab98 用户的 openid 不为空
if (StringUtils.isNotBlank(ab98User.getOpenid())) {
// 添加 or 条件根据 Ab98 用户的 openid 查询订单
orderQueryWrapper.or()
.eq("openid", ab98User.getOpenid());
// 如果 Ab98 用户的 openid 不为空
if (StringUtils.isNotBlank(ab98User.getOpenid())) {
// 添加 or 条件根据 Ab98 用户的 openid 查询订单
wrapper.or()
.eq("openid", ab98User.getOpenid());
}
}
}
}
});
// 根据查询条件获取订单列表
if (Integer.valueOf(1).equals(hasReturn)) {
orderQueryWrapper.eq("pay_status", 2);
}
orderQueryWrapper.eq("pay_status", 2);
List<ShopOrderEntity> orderList = orderService.list(orderQueryWrapper);
// 构建订单商品查询条件

View File

@ -19,3 +19,6 @@ CREATE TABLE `user_balance_record` (
ALTER TABLE `ab98_user`
ADD COLUMN `ab98_balance` INT NOT NULL DEFAULT 0 COMMENT '用户余额(单位:分)';
ALTER TABLE `ab98_user`
ADD COLUMN `ab98_balance` INT NOT NULL DEFAULT 0 COMMENT '用户余额(单位:分)';