fix(system): 修复微信公众号平台相关 API 的数据权限问题

- 在 getOpenIdByCondition 和 getByCondition 方法中添加数据权限忽略逻辑
- 使用 AtomicReference 和 DataPermissionUtils.executeIgnore 包装原有逻辑,以忽略数据权限检查
- 优化代码结构,提高可读性和维护性
This commit is contained in:
aikai 2024-12-19 18:33:46 +08:00
parent 3b4b422aea
commit 8b08872062

View File

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
import cn.iocoder.yudao.module.system.api.auth.dto.AdminOauthUserOtherInfoApiDTO;
import cn.iocoder.yudao.module.system.api.auth.vo.AdminOauthUserOtherInfoApiVO;
import cn.iocoder.yudao.module.system.dal.dataobject.auth.AdminOauthUserOtherInfoDO;
@ -13,7 +14,9 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
@RestController // 提供 RESTful API 接口 Feign 调用
@Validated
@ -24,20 +27,24 @@ public class AdminOauthUserOtherInfoApiImpl implements AdminOauthUserOtherInfoAp
@Override
@DataPermission(enable = false)
public CommonResult<List<AdminOauthUserOtherInfoApiVO>> getOpenIdByCondition(AdminOauthUserOtherInfoApiDTO dto) {
AdminOauthUserOtherInfoDTO adminOauthUserOtherInfoDTO = BeanUtil.copyProperties(dto, AdminOauthUserOtherInfoDTO.class);
List<AdminOauthUserOtherInfoDO> list = adminOauthUserOtherInfoService.getOpenIdByCondition(adminOauthUserOtherInfoDTO);
return CommonResult.success(BeanUtil.copyToList(list, AdminOauthUserOtherInfoApiVO.class));
AtomicReference<List<AdminOauthUserOtherInfoDO>> list = new AtomicReference<>(new ArrayList<>());
DataPermissionUtils.executeIgnore(
() -> list.set(adminOauthUserOtherInfoService.getOpenIdByCondition(adminOauthUserOtherInfoDTO))
);
return CommonResult.success(BeanUtil.copyToList(list.get(), AdminOauthUserOtherInfoApiVO.class));
}
@Override
@DataPermission(enable = false)
public CommonResult<AdminOauthUserOtherInfoApiVO> getByCondition(AdminOauthUserOtherInfoApiDTO dto) {
AdminOauthUserOtherInfoDTO adminOauthUserOtherInfoDTO = BeanUtil.copyProperties(dto, AdminOauthUserOtherInfoDTO.class);
List<AdminOauthUserOtherInfoDO> list = adminOauthUserOtherInfoService.getOpenIdByCondition(adminOauthUserOtherInfoDTO);
if (CollUtil.isNotEmpty(list)) {
return CommonResult.success(BeanUtil.copyProperties(list.get(0), AdminOauthUserOtherInfoApiVO.class));
AtomicReference<List<AdminOauthUserOtherInfoDO>> list = new AtomicReference<>(new ArrayList<>());
DataPermissionUtils.executeIgnore(
() -> list.set(adminOauthUserOtherInfoService.getOpenIdByCondition(adminOauthUserOtherInfoDTO))
);
if (CollUtil.isNotEmpty(list.get())) {
return CommonResult.success(BeanUtil.copyProperties(list.get().get(0), AdminOauthUserOtherInfoApiVO.class));
}
return CommonResult.success(null);
}