package com.qianwen.smartman.modules.system.controller;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
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 java.lang.invoke.SerializedLambda;
|
import java.util.List;
|
import java.util.Map;
|
import javax.validation.Valid;
|
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.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.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 org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
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;
|
|
private static /* synthetic */ Object $deserializeLambda$(SerializedLambda lambda) {
|
String implMethodName = lambda.getImplMethodName();
|
boolean z = true;
|
switch (implMethodName.hashCode()) {
|
case -75145708:
|
if (implMethodName.equals("getSort")) {
|
z = false;
|
break;
|
}
|
break;
|
case 98245393:
|
if (implMethodName.equals("getId")) {
|
z = true;
|
break;
|
}
|
break;
|
case 771206363:
|
if (implMethodName.equals("getTenantId")) {
|
z = true;
|
break;
|
}
|
break;
|
}
|
switch (z) {
|
case false:
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/Dept") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) {
|
return (v0) -> {
|
return v0.getSort();
|
};
|
}
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/Dept") && lambda.getImplMethodSignature().equals("()Ljava/lang/Integer;")) {
|
return (v0) -> {
|
return v0.getSort();
|
};
|
}
|
break;
|
case true:
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/Dept") && lambda.getImplMethodSignature().equals("()Ljava/lang/Long;")) {
|
return (v0) -> {
|
return v0.getId();
|
};
|
}
|
break;
|
case true:
|
if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/Dept") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
|
return (v0) -> {
|
return v0.getTenantId();
|
};
|
}
|
break;
|
}
|
throw new IllegalArgumentException("Invalid lambda deserialization");
|
}
|
|
public DataScopeManagerController(final IDataScopeManagerService dataScopeManagerService) {
|
this.dataScopeManagerService = dataScopeManagerService;
|
}
|
|
@ApiOperationSupport(order = 1)
|
@ApiLog("数据权限详情")
|
@GetResource({"/detail"})
|
@ApiOperation(value = "详情", notes = "传入dept")
|
public R<DeptVO> 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<DeptVO>> list(@RequestParam @ApiIgnore Map<String, Object> dept, BladeUser bladeUser) {
|
Wrapper wrapper;
|
QueryWrapper<Dept> 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<Dept> list = iDataScopeManagerService.list(wrapper);
|
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<List<DeptVO>> lazyList(@RequestParam @ApiIgnore Map<String, Object> dept, Long parentId, BladeUser bladeUser) {
|
List<DeptVO> 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<List<DeptVO>> tree(String tenantId, BladeUser bladeUser) {
|
List<DeptVO> 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<List<DeptVO>> lazyTree(String tenantId, Long parentId, BladeUser bladeUser) {
|
List<DeptVO> 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<List<Dept>> select(String deptId) {
|
List<Dept> 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<List<String>> grantSelect(String deptId) {
|
return R.data(this.dataScopeManagerService.grantSelect(deptId));
|
}
|
|
@PostResource({"/grant"})
|
@ApiOperation("设置数据权限")
|
public R<Boolean> grant(@RequestBody DataScopeGrantVO grantVO) {
|
CacheUtil.clear("blade:sys");
|
CacheUtil.clear("blade:sys", Boolean.FALSE);
|
this.dataScopeManagerService.grant(grantVO);
|
return R.status(true);
|
}
|
}
|