diff --git a/agileboot-api/src/main/java/com/agileboot/api/controller/OrderController.java b/agileboot-api/src/main/java/com/agileboot/api/controller/OrderController.java index 0634e1f..d30c3e5 100644 --- a/agileboot-api/src/main/java/com/agileboot/api/controller/OrderController.java +++ b/agileboot-api/src/main/java/com/agileboot/api/controller/OrderController.java @@ -84,8 +84,18 @@ public class OrderController extends BaseController { * @return 包含订单列表的响应 */ @GetMapping("/user/{openid}") - public ResponseDTO getOrdersByOpenId(@PathVariable String openid) { - GetOrdersByOpenIdDTO result = orderApplicationService.getOrdersByOpenId(openid); + public ResponseDTO getOrdersByOpenId(@PathVariable String openid, @RequestParam(required = false) String corpid) { + GetOrdersByOpenIdDTO result = orderApplicationService.getOrdersByOpenId(openid, corpid); + return ResponseDTO.ok(result); + } + + /** + * 根据用户openid获取订单列表 + * @return 包含订单列表的响应 + */ + @GetMapping("/user/qy/{qyUserId}") + public ResponseDTO getOrdersByOpenId(@PathVariable Long qyUserId) { + GetOrdersByOpenIdDTO result = orderApplicationService.getOrdersByQyUserId(qyUserId); return ResponseDTO.ok(result); } diff --git a/agileboot-api/src/main/java/com/agileboot/api/controller/PaymentController.java b/agileboot-api/src/main/java/com/agileboot/api/controller/PaymentController.java index 5a74aba..18ee840 100644 --- a/agileboot-api/src/main/java/com/agileboot/api/controller/PaymentController.java +++ b/agileboot-api/src/main/java/com/agileboot/api/controller/PaymentController.java @@ -255,6 +255,16 @@ public class PaymentController { return ResponseDTO.fail(new ApiException(ErrorCode.Client.COMMON_REQUEST_PARAMETERS_INVALID, "无效的openid参数")); } + try { + if (qyUser.getAb98UserId()!= null) { + Ab98UserEntity ab98User = ab98UserApplicationService.getByAb98UserId(qyUser.getAb98UserId()); + ab98User.setOpenid(openid); + ab98User.updateById(); + } + } catch (Exception e) { + log.error("更新汇邦云绑定的微信openid失败", e); + } + // 创建响应对象(假设GetBalanceResponse包含balance字段) GetBalanceResponse response = new GetBalanceResponse( qyUser.getUserid(), diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserService.java b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserService.java index e4b7bac..e49616d 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserService.java @@ -30,4 +30,6 @@ public interface QyUserService extends IService { List selectAdminUserIds(String corpid); QyUserStatsDTO selectTotalBalance(String corpid); + + QyUserEntity getUserByAb98UserId(Long ab98UserId, String corpid); } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserServiceImpl.java b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserServiceImpl.java index 5659a5b..87a6530 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserServiceImpl.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/qywx/user/db/QyUserServiceImpl.java @@ -68,4 +68,14 @@ public class QyUserServiceImpl extends ServiceImpl i return baseMapper.selectTotalBalanceByCorpid(corpid); } } + + @Override + public QyUserEntity getUserByAb98UserId(Long ab98UserId, String corpid) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(QyUserEntity::getAb98UserId, ab98UserId) + .eq(QyUserEntity::getCorpid, corpid) + .eq(QyUserEntity::getDeleted, false) + .last("LIMIT 1"); + return this.getOne(wrapper); + } } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java index 6ac98d7..d8b6179 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java @@ -6,6 +6,8 @@ import com.agileboot.common.constant.PayApiConstants; import com.agileboot.common.core.page.PageDTO; import com.agileboot.common.exception.ApiException; import com.agileboot.common.exception.error.ErrorCode; +import com.agileboot.domain.ab98.user.db.Ab98UserEntity; +import com.agileboot.domain.ab98.user.db.Ab98UserService; import com.agileboot.domain.cabinet.cell.db.CabinetCellEntity; import com.agileboot.domain.cabinet.cell.db.CabinetCellService; import com.agileboot.domain.cabinet.mainboard.db.CabinetMainboardEntity; @@ -62,6 +64,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -88,6 +91,7 @@ public class OrderApplicationService { private final AuthCorpInfoApplicationService authCorpInfoApplicationService; private final AccessTokenApplicationService accessTokenApplicationService; private final QyUserService qyUserService; + private final Ab98UserService ab98UserService; public PageDTO getOrderList(SearchShopOrderQuery query) { Page page = orderService.getOrderList(query); @@ -395,11 +399,106 @@ public class OrderApplicationService { } } - public GetOrdersByOpenIdDTO getOrdersByOpenId(String openid) { + /** + * 根据 openid 和 corpid 获取订单相关信息 + * + * @param openid 开放用户 ID + * @param corpid 企业微信 ID + * @return 包含订单列表、订单商品列表和商品列表的 DTO 对象 + */ + public GetOrdersByOpenIdDTO getOrdersByOpenId(String openid, String corpid) { + // 根据 openid 获取 Ab98 用户信息 + Ab98UserEntity ab98User = ab98UserService.getByOpenid(openid); + + // 构建订单查询条件 QueryWrapper orderQueryWrapper = new QueryWrapper<>(); + // 添加 openid 作为查询条件 orderQueryWrapper.eq("openid", openid); + // 如果 Ab98 用户信息存在 + if (ab98User != null) { + // 添加 or 条件,根据 Ab98 用户的 userid 查询订单 + orderQueryWrapper.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()); + } + } + } + // 根据查询条件获取订单列表 List orderList = orderService.list(orderQueryWrapper); + // 构建订单商品查询条件 + QueryWrapper orderGoodsQueryWrapper = new QueryWrapper<>(); + // 添加订单 ID 作为查询条件,查询属于这些订单的商品 + orderGoodsQueryWrapper.in("order_id", orderList.stream().map(ShopOrderEntity::getOrderId).collect(Collectors.toList())); + // 根据查询条件获取订单商品列表 + List orderGoods = orderGoodsService.list(orderGoodsQueryWrapper); + + // 构建商品查询条件 + QueryWrapper goodsQueryWrapper = new QueryWrapper<>(); + // 添加商品 ID 作为查询条件,查询这些商品信息 + goodsQueryWrapper.in("goods_id", orderGoods.stream().map(ShopOrderGoodsEntity::getGoodsId).collect(Collectors.toList())); + // 根据查询条件获取商品列表 + List goods = goodsService.list(goodsQueryWrapper); + + // 返回包含订单列表、订单商品列表和商品列表的 DTO 对象 + return new GetOrdersByOpenIdDTO(orderList, orderGoods, goods); + } + + /** + * 根据企业微信用户 ID 获取订单相关信息 + * + * @param qyUserId 企业微信用户 ID + * @return 包含订单列表、订单商品列表和商品列表的 DTO 对象 + */ + public GetOrdersByOpenIdDTO getOrdersByQyUserId(Long qyUserId) { + // 校验 qyUserId 是否为空,为空则抛出异常 + if (qyUserId == null) { + throw new ApiException(ErrorCode.Client.COMMON_REQUEST_PARAMETERS_INVALID, "qyUserId不能为空"); + } + // 根据企业微信用户 ID 获取企业微信用户信息 + QyUserEntity qyUser = qyUserService.getById(qyUserId); + + // 构建订单查询条件 + QueryWrapper 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()); + + // 如果 Ab98 用户的 openid 不为空 + if (StringUtils.isNotBlank(ab98User.getOpenid())) { + // 添加 or 条件,根据 Ab98 用户的 openid 查询订单 + orderQueryWrapper.or() + .eq("openid", ab98User.getOpenid()); + } + } + } + // 根据查询条件获取订单列表 + List orderList = orderService.list(orderQueryWrapper); + + // 构建订单商品查询条件 + // 返回包含订单列表、订单商品列表和商品列表的 DTO 对象 + // 根据查询条件获取商品列表 + // 添加商品 ID 作为查询条件,查询这些商品信息 + // 构建商品查询条件 + // 根据查询条件获取订单商品列表 + // 添加订单 ID 作为查询条件,查询属于这些订单的商品 QueryWrapper orderGoodsQueryWrapper = new QueryWrapper<>(); orderGoodsQueryWrapper.in("order_id", orderList.stream().map(ShopOrderEntity::getOrderId).collect(Collectors.toList())); List orderGoods = orderGoodsService.list(orderGoodsQueryWrapper);