WorkTicketType权限修复
This commit is contained in:
parent
4d41de5d08
commit
004a5f4844
@ -129,6 +129,12 @@ public class DataScopeHandler implements DataPermissionHandler {
|
||||
return tables;
|
||||
}
|
||||
|
||||
private HashMap<String, String> getFieldHeadquartersSnTables() {
|
||||
HashMap<String, String> tables = new HashMap<>(16);
|
||||
tables.put("work_ticket_type", "sn");
|
||||
return tables;
|
||||
}
|
||||
|
||||
private HashMap<String, String> getFieldProjectSnTables() {
|
||||
HashMap<String, String> tables = new HashMap<>(16);
|
||||
tables.put("notice_remind_sound", getProjectSn());
|
||||
@ -221,15 +227,19 @@ public class DataScopeHandler implements DataPermissionHandler {
|
||||
if (Objects.equals(user.getAccountType(), SystemUserAccountTypeEnum.ENTERPRISE_ADMINISTRATOR_ACCOUNT.getValue())) {
|
||||
filterForCompanyOrProject(plainSelect, ds, expressions, SecurityUtils.getUser().getUserId(), (userFilterItem) -> get1CompanySql(SecurityUtils.getUser().getUserId(), userFilterItem), jo);
|
||||
filterProjectForCompany(plainSelect, user, ds, jo);
|
||||
filterHeadquartersSnForCompany(plainSelect, jo, ds);
|
||||
} else if (Objects.equals(user.getAccountType(), SystemUserAccountTypeEnum.ENTERPRISE_DISTRICT_ACCOUNT.getValue())) {
|
||||
filterForCompanyOrProject(plainSelect, ds, expressions, SecurityUtils.getUser().getUserId(), (userFilterItem) -> get2CompanySql(SecurityUtils.getUser().getUserId(), userFilterItem), jo);
|
||||
filterProjectForCompany(plainSelect, user, ds, jo);
|
||||
filterHeadquartersSnForCompany(plainSelect, jo, ds);
|
||||
} else if (Objects.equals(user.getAccountType(), SystemUserAccountTypeEnum.ENTERPRISE_CITY_ACCOUNT.getValue())) {
|
||||
filterForCompanyOrProject(plainSelect, ds, expressions, SecurityUtils.getUser().getUserId(), (userFilterItem) -> get3CompanySql(SecurityUtils.getUser().getUserId(), userFilterItem), jo);
|
||||
filterProjectForCompany(plainSelect, user, ds, jo);
|
||||
filterHeadquartersSnForCompany(plainSelect, jo, ds);
|
||||
} else if (Objects.equals(user.getAccountType(), SystemUserAccountTypeEnum.ENTERPRISE_SUB_ACCOUNT.getValue())) {
|
||||
filterForCompanyOrProject(plainSelect, ds, expressions, SecurityUtils.getUser().getUserId(), (userFilterItem) -> get4CompanySql(SecurityUtils.getUser().getUserId(), userFilterItem), jo);
|
||||
filterProjectForCompany(plainSelect, user, ds, jo);
|
||||
filterHeadquartersSnForCompany(plainSelect, jo, ds);
|
||||
} else if (Objects.equals(user.getAccountType(), SystemUserAccountTypeEnum.PROJECT_ACCOUNT.getValue())) {
|
||||
filterForCompanyOrProject(plainSelect, ds, expressions, SecurityUtils.getUser().getUserId(), (userFilterItem) -> {
|
||||
return StrUtil.format(" \n" +
|
||||
@ -240,8 +250,10 @@ public class DataScopeHandler implements DataPermissionHandler {
|
||||
" ) and {}.account_type = 6", userFilterItem, SecurityUtils.getUser().getUserId(), StrUtil.subBefore(userFilterItem, ".", true));
|
||||
}, jo);
|
||||
filterProjectForProject(plainSelect, ds, jo);
|
||||
filterHeadquartersSnForProject(plainSelect, jo, ds);
|
||||
} else if (Objects.equals(user.getAccountType(), SystemUserAccountTypeEnum.PROJECT_SUB_ACCOUNT.getValue())) {
|
||||
filterByProjectSubAccount(plainSelect, ds, expressions, jo);
|
||||
filterHeadquartersSnForProject(plainSelect, jo, ds);
|
||||
} else if (Objects.equals(user.getAccountType(), SystemUserAccountTypeEnum.SUPPLIER.getValue())) {
|
||||
filterBySupplier(plainSelect, ds, expressions, jo);
|
||||
}
|
||||
@ -313,6 +325,40 @@ public class DataScopeHandler implements DataPermissionHandler {
|
||||
return plainSelect;
|
||||
}
|
||||
|
||||
/**
|
||||
* 企业过滤总公司sn
|
||||
*
|
||||
* @param plainSelect
|
||||
* @param jo
|
||||
* @param ds
|
||||
*/
|
||||
private void filterHeadquartersSnForCompany(PlainSelect plainSelect, JSONObject jo, DataScope ds) {
|
||||
List<String> filterHeadquartersSnItems = getNeedFilterLeftExpression(plainSelect, getFieldHeadquartersSnTables(), ds, jo);
|
||||
if (CollUtil.isNotEmpty(filterHeadquartersSnItems)) {
|
||||
String headquartersSn = companyService.getHeadquartersSnByCompanySn(SecurityUtils.getUser().getSn());
|
||||
for (String item : filterHeadquartersSnItems) {
|
||||
equalsTo(item, headquartersSn, plainSelect);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 项目过滤总公司sn
|
||||
*
|
||||
* @param plainSelect
|
||||
* @param jo
|
||||
* @param ds
|
||||
*/
|
||||
private void filterHeadquartersSnForProject(PlainSelect plainSelect, JSONObject jo, DataScope ds) {
|
||||
List<String> filterHeadquartersSnItems = getNeedFilterLeftExpression(plainSelect, getFieldHeadquartersSnTables(), ds, jo);
|
||||
if (CollUtil.isNotEmpty(filterHeadquartersSnItems)) {
|
||||
String headquartersSn = companyService.getHeadquartersSnByProjectSn(SecurityUtils.getUser().getSn());
|
||||
for (String item : filterHeadquartersSnItems) {
|
||||
equalsTo(item, headquartersSn, plainSelect);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 企业过滤项目sn
|
||||
*
|
||||
@ -321,12 +367,12 @@ public class DataScopeHandler implements DataPermissionHandler {
|
||||
* @param ds
|
||||
*/
|
||||
private void filterProjectForCompany(PlainSelect plainSelect, UserInfo user, DataScope ds, JSONObject param) {
|
||||
List<String> projectSns = companyService.getProjectSnsBySn(SecurityUtils.getUser().getSn(), user.getAccountType());
|
||||
if (CollUtil.isEmpty(projectSns)) {
|
||||
projectSns.add("0");
|
||||
}
|
||||
List<String> filterProjectItems = getNeedFilterLeftExpression(plainSelect, getFieldProjectSnTables(), ds, param);
|
||||
if (CollUtil.isNotEmpty(filterProjectItems)) {
|
||||
List<String> projectSns = companyService.getProjectSnsBySn(SecurityUtils.getUser().getSn(), user.getAccountType());
|
||||
if (CollUtil.isEmpty(projectSns)) {
|
||||
projectSns.add("0");
|
||||
}
|
||||
for (String item : filterProjectItems) {
|
||||
inExpression(item, projectSns, plainSelect);
|
||||
}
|
||||
@ -381,10 +427,10 @@ public class DataScopeHandler implements DataPermissionHandler {
|
||||
*/
|
||||
private void filterByProjectSubAccount(PlainSelect plainSelect, DataScope ds, List<Expression> expressions, JSONObject param) {
|
||||
filterProjectForProject(plainSelect, ds, param);
|
||||
List<String> authEnterpriseIds = userEnterpriseService.getEnterpriseIdsIfSubProject();
|
||||
authEnterpriseIds.add("0");
|
||||
List<String> filterEnterprises = getNeedFilterLeftExpression(plainSelect, getFieldEnterpriseTables(), ds, param);
|
||||
if (CollUtil.isNotEmpty(filterEnterprises)) {
|
||||
List<String> authEnterpriseIds = userEnterpriseService.getEnterpriseIdsIfSubProject();
|
||||
authEnterpriseIds.add("0");
|
||||
for (String filterEnterprise : filterEnterprises) {
|
||||
inExpression(filterEnterprise, authEnterpriseIds, plainSelect);
|
||||
}
|
||||
@ -417,6 +463,8 @@ public class DataScopeHandler implements DataPermissionHandler {
|
||||
ocrBuildLogTables.put("ocr_build_log", "id");
|
||||
List<String> filterOcrBuildLogTables = getNeedFilterLeftExpression(plainSelect, ocrBuildLogTables, ds, param);
|
||||
if (CollUtil.isNotEmpty(filterOcrBuildLogTables)) {
|
||||
List<String> authEnterpriseIds = userEnterpriseService.getEnterpriseIdsIfSubProject();
|
||||
authEnterpriseIds.add("0");
|
||||
for (String filterEnterprise : filterOcrBuildLogTables) {
|
||||
String uploaderIdField = StrUtil.subBefore(filterEnterprise, ".", false) + "." + "uploader_id";
|
||||
String sql = StrUtil.format(" ( ({} in (select ocr_build_log_id from ocr_build_log_enterprise where enterprise_id in ({}))) OR ( {} = {}))",
|
||||
|
||||
@ -47,7 +47,6 @@ public class NoticeRemindSoundController {
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"),
|
||||
})
|
||||
@PostMapping(value = "/list")
|
||||
@PreAuthorize("@perm.hasProjectSnAccess(#map['projectSn'])")
|
||||
public Result<List<NoticeRemindSound>> selectList(@RequestBody Map<String, Object> map) {
|
||||
QueryWrapper<NoticeRemindSound> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(NoticeRemindSound::getProjectSn, MapUtils.getString(map, "projectSn"));
|
||||
|
||||
@ -196,6 +196,8 @@ public interface ICompanyService extends IService<Company> {
|
||||
*/
|
||||
String getHeadquartersSnByProjectSn(String projectSn);
|
||||
|
||||
String getHeadquartersSnByCompanySn(String companySn);
|
||||
|
||||
boolean hasCompanySnAccessBy1(Long userId, String sn);
|
||||
|
||||
boolean hasCompanySnAccessBy2(Long userId, String sn);
|
||||
|
||||
@ -966,14 +966,24 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> impl
|
||||
@Override
|
||||
public String getHeadquartersSnByProjectSn(String projectSn) {
|
||||
Project project = projectService.getOne(new LambdaQueryWrapper<Project>()
|
||||
.eq(Project::getProjectSn, projectSn));
|
||||
.eq(Project::getProjectSn, projectSn).last(Cts.IGNORE_DATA_SCOPE_CONDITION));
|
||||
if (project == null) {
|
||||
throw new OpenAlertException("查询企业失败");
|
||||
throw new OpenAlertException("查询项目失败");
|
||||
}
|
||||
return this.getOne(new LambdaQueryWrapper<Company>()
|
||||
.eq(Company::getCompanySn, project.getCompanySn())).getHeadquartersSn();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getHeadquartersSnByCompanySn(String companySn) {
|
||||
Company company = this.getOne(new LambdaQueryWrapper<Company>()
|
||||
.eq(Company::getCompanySn, companySn));
|
||||
if (company == null) {
|
||||
throw new OpenAlertException("查询企业失败");
|
||||
}
|
||||
return company.getHeadquartersSn();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCompanySnAccessBy1(Long userId, String sn) {
|
||||
return baseMapper.hasCompanySnAccessBy1(userId, sn);
|
||||
|
||||
@ -133,6 +133,8 @@ public class WorkTicketTypeController {
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "pageNo", value = "第几页", paramType = "query", required = true, dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", paramType = "query", required = true, dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "query", required = false, dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "sn", value = "总企业sn", paramType = "query", required = false, dataType = "Integer"),
|
||||
})
|
||||
@GetMapping(value = "/tree/page")
|
||||
public Result<IPage<WorkTicketTypeVo>> queryTreePage(@ApiIgnore @RequestParam HashMap<String, Object> param) {
|
||||
|
||||
@ -21,6 +21,7 @@ import java.util.List;
|
||||
* @version: V1.0
|
||||
*/
|
||||
@Mapper
|
||||
@DataScope
|
||||
public interface WorkTicketTypeMapper extends BaseMapper<WorkTicketType> {
|
||||
|
||||
/**
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user