feat(qywx): 添加根据appid和corpid查询企业授权信息接口

添加selectByAppidAndCorpid方法用于精确查询企业授权信息
优化getBalance接口逻辑,直接使用传入的corpid参数
修复AssetApplicationService中monthlyPurchaseLimit的判断条件
This commit is contained in:
dzq 2025-06-10 17:12:54 +08:00
parent cf5e5fa673
commit 7f45b1cf79
6 changed files with 32 additions and 32 deletions

View File

@ -245,43 +245,23 @@ public class PaymentController {
* 3. 返回余额最大的用户信息 * 3. 返回余额最大的用户信息
*/ */
@GetMapping("/getBalance") @GetMapping("/getBalance")
public ResponseDTO<GetBalanceResponse> getBalance(@RequestParam String openid) { public ResponseDTO<GetBalanceResponse> getBalance(@RequestParam String corpid, @RequestParam String openid) {
String appid = "QWTONG_YS_WXSHOP"; String appid = "QWTONG_YS_WXSHOP";
List<QyAuthCorpInfoEntity> qyAuthCorpInfoEntityList = authCorpInfoApplicationService.getByAppid(appid);
List<QyUserEntity> qyUserEntityList = new ArrayList<>();
for (QyAuthCorpInfoEntity qyAuthCorpInfoEntity : qyAuthCorpInfoEntityList) {
String corpid = qyAuthCorpInfoEntity.getCorpid();
if (!corpid.equals(WeixinConstants.corpid)) {
continue;
}
QyAccessTokenEntity accessToken = accessTokenApplicationService.getByAppid(appid, corpid);
UserIdResponse userIdResponse = QywxApiUtil.convertToUserid(accessToken.getAccessToken(), openid);
QyUserEntity qyUser = qyUserApplicationService.getUserByUserIdAndCorpid(userIdResponse.getUserid(), corpid);
if (qyUser == null) {
continue;
}
qyUserEntityList.add(qyUser);
}
if (qyUserEntityList.isEmpty()) {
return ResponseDTO.fail(new ApiException(ErrorCode.Client.COMMON_REQUEST_PARAMETERS_INVALID, "无效的openid参数"));
}
// 找出余额最大的用户
QyUserEntity maxBalanceUser = qyUserEntityList.stream()
.filter(user -> user.getBalance() != null)
.max(Comparator.comparing(QyUserEntity::getBalance))
.orElse(null);
if (maxBalanceUser == null) { QyAccessTokenEntity accessToken = accessTokenApplicationService.getByAppid(appid, corpid);
return ResponseDTO.fail(new ApiException(ErrorCode.Client.COMMON_REQUEST_PARAMETERS_INVALID, "未找到有效余额信息")); UserIdResponse userIdResponse = QywxApiUtil.convertToUserid(accessToken.getAccessToken(), openid);
QyUserEntity qyUser = qyUserApplicationService.getUserByUserIdAndCorpid(userIdResponse.getUserid(), corpid);
if (qyUser == null) {
return ResponseDTO.fail(new ApiException(ErrorCode.Client.COMMON_REQUEST_PARAMETERS_INVALID, "无效的openid参数"));
} }
// 创建响应对象假设GetBalanceResponse包含balance字段 // 创建响应对象假设GetBalanceResponse包含balance字段
GetBalanceResponse response = new GetBalanceResponse( GetBalanceResponse response = new GetBalanceResponse(
maxBalanceUser.getUserid(), qyUser.getUserid(),
maxBalanceUser.getCorpid(), qyUser.getCorpid(),
BigDecimal.ZERO, qyUser.getBalance(),
BigDecimal.ZERO, qyUser.getUseBalance(),
BigDecimal.ZERO); qyUser.getBalanceLimit());
return ResponseDTO.ok(response); return ResponseDTO.ok(response);
} }

View File

@ -1,5 +1,6 @@
package com.agileboot.domain.asset; package com.agileboot.domain.asset;
import cn.hutool.json.JSONUtil;
import com.agileboot.common.constant.WeixinConstants; import com.agileboot.common.constant.WeixinConstants;
import com.agileboot.domain.asset.command.PostAssetApprovalCommand; import com.agileboot.domain.asset.command.PostAssetApprovalCommand;
import com.agileboot.domain.asset.command.PostAssetGoodsCommand; import com.agileboot.domain.asset.command.PostAssetGoodsCommand;
@ -45,6 +46,7 @@ public class AssetApplicationService {
private final CabinetCellService cabinetCellService; private final CabinetCellService cabinetCellService;
public void pushExternalGoods(PostAssetGoodsCommand postAssetGoodsCommand) { public void pushExternalGoods(PostAssetGoodsCommand postAssetGoodsCommand) {
log.info("postAssetGoodsCommand: {}", JSONUtil.toJsonStr(postAssetGoodsCommand));
if (postAssetGoodsCommand == null || postAssetGoodsCommand.getGoodsInfoList() == null || postAssetGoodsCommand.getGoodsInfoList().isEmpty()) { if (postAssetGoodsCommand == null || postAssetGoodsCommand.getGoodsInfoList() == null || postAssetGoodsCommand.getGoodsInfoList().isEmpty()) {
throw new IllegalArgumentException("GoodsInfoList cannot be null or empty"); throw new IllegalArgumentException("GoodsInfoList cannot be null or empty");
} }
@ -67,7 +69,7 @@ public class AssetApplicationService {
if (command.getStock() != null) { if (command.getStock() != null) {
shopGoodsEntity.setStock(command.getStock()); shopGoodsEntity.setStock(command.getStock());
} }
if (command.getStock() != null) { if (command.getMonthlyPurchaseLimit() != null) {
shopGoodsEntity.setMonthlyPurchaseLimit(command.getMonthlyPurchaseLimit()); shopGoodsEntity.setMonthlyPurchaseLimit(command.getMonthlyPurchaseLimit());
} }
if (command.getAutoApproval() != null) { if (command.getAutoApproval() != null) {
@ -98,6 +100,7 @@ public class AssetApplicationService {
goodsModel.setGoodsDetail(command.getGoodsDetail()); goodsModel.setGoodsDetail(command.getGoodsDetail());
goodsModel.setUsageInstruction(command.getUsageInstruction()); goodsModel.setUsageInstruction(command.getUsageInstruction());
goodsModel.setBelongType(command.getBelongType()); goodsModel.setBelongType(command.getBelongType());
goodsModel.setMonthlyPurchaseLimit(command.getMonthlyPurchaseLimit());
goodsModel.initBaseEntity(); goodsModel.initBaseEntity();
goodsModel.setCategoryId(0L); goodsModel.setCategoryId(0L);
goodsModel.setStatus(1); goodsModel.setStatus(1);

View File

@ -54,4 +54,8 @@ public class AuthCorpInfoApplicationService {
public List<QyAuthCorpInfoEntity> getByAppid(String appid) { public List<QyAuthCorpInfoEntity> getByAppid(String appid) {
return authCorpInfoService.getByAppid(appid); return authCorpInfoService.getByAppid(appid);
} }
public QyAuthCorpInfoEntity selectByAppidAndCorpid(String appid, String corpid) {
return authCorpInfoService.selectByAppidAndCorpid(appid, corpid);
}
} }

View File

@ -34,4 +34,8 @@ public interface QyAuthCorpInfoMapper extends BaseMapper<QyAuthCorpInfoEntity> {
@Select("SELECT * FROM qy_auth_corp_info WHERE appid = #{appid}") @Select("SELECT * FROM qy_auth_corp_info WHERE appid = #{appid}")
List<QyAuthCorpInfoEntity> selectByAppid(@Param("appid")String appid); List<QyAuthCorpInfoEntity> selectByAppid(@Param("appid")String appid);
@Select("SELECT * FROM qy_auth_corp_info WHERE appid = #{appid} AND corpid = #{corpid} LIMIT 1")
QyAuthCorpInfoEntity selectByAppidAndCorpid(@Param("appid")String appid, @Param("corpid")String corpid);
} }

View File

@ -3,6 +3,8 @@ package com.agileboot.domain.qywx.authCorpInfo.db;
import com.agileboot.common.core.page.AbstractPageQuery; import com.agileboot.common.core.page.AbstractPageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
/** /**
@ -20,4 +22,6 @@ public interface QyAuthCorpInfoService extends IService<QyAuthCorpInfoEntity> {
List<QyAuthCorpInfoEntity> selectAll(); List<QyAuthCorpInfoEntity> selectAll();
List<QyAuthCorpInfoEntity> getByAppid(String appid); List<QyAuthCorpInfoEntity> getByAppid(String appid);
QyAuthCorpInfoEntity selectByAppidAndCorpid(String appid, String corpid);
} }

View File

@ -33,4 +33,9 @@ public class QyAuthCorpInfoServiceImpl extends ServiceImpl<QyAuthCorpInfoMapper,
public List<QyAuthCorpInfoEntity> getByAppid(String appid) { public List<QyAuthCorpInfoEntity> getByAppid(String appid) {
return baseMapper.selectByAppid(appid); return baseMapper.selectByAppid(appid);
} }
@Override
public QyAuthCorpInfoEntity selectByAppidAndCorpid(String appid, String corpid) {
return baseMapper.selectByAppidAndCorpid(appid, corpid);
}
} }