package com.qianwen.smartman.modules.system.controller; import java.util.List; import java.util.Map; import javax.validation.Valid; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.qianwen.core.boot.ctrl.BladeController; import com.qianwen.core.cache.utils.CacheUtil; import com.qianwen.core.log.annotation.ApiLog; import com.qianwen.core.mp.support.Condition; import com.qianwen.core.scanner.modular.annotation.GetResource; import com.qianwen.core.scanner.modular.annotation.PostResource; import com.qianwen.core.scanner.modular.stereotype.ApiResource; import com.qianwen.core.secure.BladeUser; import com.qianwen.core.secure.annotation.PreAuth; import com.qianwen.core.tenant.annotation.NonDS; import com.qianwen.core.tool.api.R; import com.qianwen.core.tool.support.Kv; import com.qianwen.core.tool.utils.Func; import com.qianwen.smartman.common.cache.DictCache; import com.qianwen.smartman.common.cache.RegionCache; import com.qianwen.smartman.common.constant.ExtCacheConstant; import com.qianwen.smartman.common.enums.DictEnum; import com.qianwen.smartman.modules.system.entity.Dept; import com.qianwen.smartman.modules.system.service.IDataScopeManagerService; import com.qianwen.smartman.modules.system.vo.DataScopeGrantVO; import com.qianwen.smartman.modules.system.vo.DeptVO; import com.qianwen.smartman.modules.system.wrapper.DeptWrapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import springfox.documentation.annotations.ApiIgnore; @Api(value = "数据权限", tags = {"数据权限"}) @RestController @ApiResource({"blade-system/data-scope-manager"}) @NonDS /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/system/controller/DataScopeManagerController.class */ public class DataScopeManagerController extends BladeController { private final IDataScopeManagerService dataScopeManagerService; public DataScopeManagerController(final IDataScopeManagerService dataScopeManagerService) { this.dataScopeManagerService = dataScopeManagerService; } @ApiOperationSupport(order = 1) @ApiLog("数据权限详情") @GetResource({"/detail"}) @ApiOperation(value = "详情", notes = "传入dept") public R detail(Dept dept) { Dept detail = (Dept) this.dataScopeManagerService.getOne(Condition.getQueryWrapper(dept)); return R.data(DeptWrapper.build().entityVO(detail)); } @ApiOperationSupport(order = 2) @ApiImplicitParams({@ApiImplicitParam(name = "deptName", value = "数据权限名称", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "fullName", value = "数据权限全称", paramType = "query", dataType = "string")}) @ApiLog("数据权限列表") @GetResource({"/list"}) @ApiOperation(value = "列表", notes = "传入dept") public R> list(@RequestParam @ApiIgnore Map dept, BladeUser bladeUser) { QueryWrapper queryWrapper = Condition.getQueryWrapper(dept, Dept.class); if (!bladeUser.getTenantId().equals("000000")) { queryWrapper.lambda().eq(Dept::getTenantId, bladeUser.getTenantId()).orderByAsc(Dept::getSort); } else { queryWrapper.lambda().orderByAsc(Dept::getSort); } /* Wrapper wrapper; QueryWrapper queryWrapper = Condition.getQueryWrapper(dept, Dept.class); IDataScopeManagerService iDataScopeManagerService = this.dataScopeManagerService; if (!bladeUser.getTenantId().equals("000000")) { wrapper = (Wrapper) ((LambdaQueryWrapper) queryWrapper.lambda().eq((v0) -> { return v0.getTenantId(); }, bladeUser.getTenantId())).orderByAsc((v0) -> { return v0.getSort(); }); } else { wrapper = (Wrapper) queryWrapper.lambda().orderByAsc((v0) -> { return v0.getSort(); }); }*/ List list = dataScopeManagerService.list(queryWrapper); return R.data(DeptWrapper.build().listNodeVO(list)); } @ApiOperationSupport(order = 3) @ApiImplicitParams({@ApiImplicitParam(name = "deptName", value = "数据权限名称", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "fullName", value = "数据权限全称", paramType = "query", dataType = "string")}) @ApiLog("数据权限列表") @GetResource({"/lazy-list"}) @ApiOperation(value = "懒加载列表", notes = "传入dept") public R> lazyList(@RequestParam @ApiIgnore Map dept, Long parentId, BladeUser bladeUser) { List list = this.dataScopeManagerService.lazyList(bladeUser.getTenantId(), parentId, dept); return R.data(DeptWrapper.build().listNodeLazyVO(list)); } @ApiOperationSupport(order = 4) @ApiLog("获取数据权限树形结构") @GetResource({"/tree"}) @ApiOperation(value = "树形结构", notes = "树形结构") public R> tree(String tenantId, BladeUser bladeUser) { List tree = this.dataScopeManagerService.tree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId())); return R.data(tree); } @ApiOperationSupport(order = RegionCache.VILLAGE_LEVEL) @ApiLog("懒加载获取数据权限树形结构") @GetResource({"/lazy-tree"}) @ApiOperation(value = "懒加载树形结构", notes = "树形结构") public R> lazyTree(String tenantId, Long parentId, BladeUser bladeUser) { List tree = this.dataScopeManagerService.lazyTree(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()), parentId); return R.data(tree); } @ApiOperationSupport(order = 6) @PostResource({"/submit"}) @ApiLog("新增或修改数据权限") @ApiOperation(value = "新增或修改", notes = "传入dept") public R submit(@Valid @RequestBody Dept dept) { if (this.dataScopeManagerService.submit(dept)) { CacheUtil.clear("blade:sys", ExtCacheConstant.TENANT_MODE); Kv kv = Kv.create().set("id", String.valueOf(dept.getId())).set("tenantId", dept.getTenantId()).set("deptCategoryName", DictCache.getValue(DictEnum.DATA_SCOPE_CATEGORY, dept.getDeptCategory())); return R.data(kv); } return R.fail("操作失败"); } @ApiOperationSupport(order = 7) @PostResource({"/remove"}) @ApiLog("删除数据权限") @ApiOperation(value = "删除", notes = "传入ids") public R remove(@RequestParam @ApiParam(value = "主键集合", required = true) String ids) { CacheUtil.clear("blade:sys", ExtCacheConstant.TENANT_MODE); return R.status(this.dataScopeManagerService.removeDept(ids)); } @ApiOperationSupport(order = 8) @GetResource({"/select"}) @ApiOperation(value = "下拉数据源", notes = "传入id集合") @PreAuth("permitAll()") public R> select(String deptId) { List list = this.dataScopeManagerService.list(Wrappers.lambdaQuery().in(Dept::getId, Func.toLongList(deptId))); /* List list = this.dataScopeManagerService.list((Wrapper) Wrappers.lambdaQuery().in((v0) -> { return v0.getId(); }, Func.toLongList(deptId)));*/ return R.data(list); } @GetResource({"/grant-select"}) @ApiOperation("选中的权限") public R> grantSelect(String deptId) { return R.data(this.dataScopeManagerService.grantSelect(deptId)); } @PostResource({"/grant"}) @ApiOperation("设置数据权限") public R grant(@RequestBody DataScopeGrantVO grantVO) { CacheUtil.clear("blade:sys"); CacheUtil.clear("blade:sys", Boolean.FALSE); this.dataScopeManagerService.grant(grantVO); return R.status(true); } }