feat:企标新权限

This commit is contained in:
2023-11-01 15:05:54 +08:00
parent 5b58db29b2
commit 974eb5be0e
8 changed files with 115 additions and 16 deletions
@@ -62,6 +62,11 @@ public class FieldCommon {
public static final String COLLECTION_FLAG = "collectionFlag";
// 查看详情权限标识
public static final String DETAIL_FLAG = "detailFlag";
// 编辑删除权限标识
public static final String EDIT_FLAG = "editFlag";
// 创建人字段
public static final String CREATE_BY = "create_by";
// 我的收藏
public static final String MY_COLLECTION = "MyCollection";
// 主键
@@ -63,5 +63,7 @@ public class ResultCommon {
public static final String TASK_HANDLER_ERROR = "task.handler.error"; // 只有处理人可以操作
public static final String NO_AUTH = "no.auth"; // 只有处理人可以操作
}
@@ -36,6 +36,7 @@ import com.jero.modules.personal.service.ILawsBrowsingHistoryService;
import com.jero.modules.personal.service.ILawsStandardCollectionService;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import com.jero.modules.sys.utils.UserUtils;
import com.jero.modules.system.entity.SysDepart;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysUser;
@@ -166,6 +167,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
if (module.equals(TableNameEnum.ENTERPRISE_STANDARDS.getValue())) {
// 是否能查看详情
esAuthUserService.detailFlagSet(infoPage.getRecords());
// 是否能编辑删除
esAuthUserService.editFlagSet(infoPage.getRecords());
}
// 是否收藏判断标识
collectionFlag(infoPage.getRecords());
@@ -1047,6 +1050,14 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
**/
@Override
public String deleteByIdsAndModule(String ids, String module) {
// 如果是企标的话 校验删除的ids是否有权限
if (TableNameEnum.ENTERPRISE_STANDARDS.getValue().equals(module)) {
boolean auth = esAuthUserService.verifyESDeleteAuth(ids, UserUtils.getUserId());
if (!auth) {
throw new JeroBootException(MessageUtils.getMessage(ResultCommon.NO_AUTH));
}
}
// 获取要操作的表名
String tableName = TableNameEnum.getTableName(module);
// 获取要删除的id集合
@@ -16,7 +16,19 @@ public interface EnterpriseStandardAuthUserService extends IService<EnterpriseSt
void saveTempPermission(LawsStandardTempPermission lawsStandardTempPermission);
/**
* 查看详情权限设置
* @param records
*/
void detailFlagSet(List<Map<String, Object>> records);
/**
* 编辑权限设置
* @param records
*/
void editFlagSet(List<Map<String, Object>> records);
boolean detailPermissionByUser(String standardNumber, String userId, String user);
boolean verifyESDeleteAuth(String ids, String userId);
}
@@ -18,10 +18,14 @@ import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.sys.entity.LawsEnterpriseStandardLevel;
import com.jero.modules.sys.service.ILawsEnterpriseStandardLevelService;
import com.jero.modules.sys.utils.UserUtils;
import com.jero.modules.system.entity.SysDepart;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysDepartService;
import com.jero.modules.system.service.ISysRoleService;
import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -45,12 +49,23 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
@Resource
private ISysUserService sysUserService;
@Resource
private ISysDepartService sysDepartService;
@Resource
private ILawsEnterpriseStandardService enterpriseStandardService;
@Resource
private ILawsEnterpriseStandardLevelService standardLevelService;
@Resource
private ISysRoleService sysRoleService;
// 注入draftDepartName
@Value("${draftDepartName}")
private String draftDepartName;
@Override
public void saveTempPermission(LawsStandardTempPermission lawsStandardTempPermission) {
List<EnterpriseStandardAuthUser> esAuthUsers = new ArrayList<>();
@@ -74,6 +89,7 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
SysUser currentUser = sysUserService.getById(UserUtils.getUserId());
String userId = currentUser.getId();
String deptId = currentUser.getDepartIds();
SysDepart dept = sysDepartService.getById(deptId);
List<String> standardIds = new ArrayList<>();
records.forEach(kv -> standardIds.add(String.valueOf(kv.get(FieldCommon.ID))));
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list(new LambdaQueryWrapper<LawsEnterpriseStandard>()
@@ -103,11 +119,22 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
List<LawsEnterpriseStandardLevel> standardLevelList = standardLevelService.list();
List<String> levelDeptIds = standardLevelList.stream().map(LawsEnterpriseStandardLevel::getDeptId).collect(Collectors.toList());
// 起草部门有所有企标的查看权限
if (dept.getDepartName().equals(draftDepartName)) {
// 全部设置为有权限
records.forEach(kv -> kv.put(FieldCommon.DETAIL_FLAG, true));
}
for (Map<String, Object> map : records) {
String standardId = (String) map.get(FieldCommon.ID);
LawsEnterpriseStandard es = esMap.get(standardId);
// 等级分类
String gradeClassification = es.getGradeClassification();
String mainDraftUser = es.getMainDraftingUser();
// 主起草人可以看
if (userId.equals(mainDraftUser)) {
map.put(FieldCommon.DETAIL_FLAG, true);
continue;
}
// 全公司可以看
if (gradeClassification.equals("1")) {
map.put(FieldCommon.DETAIL_FLAG, true);
@@ -132,21 +159,40 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
map.put(FieldCommon.DETAIL_FLAG, true);
continue;
}
// 起草部门
String mainDraftDeptId = es.getMainDraftingUnit();
if (deptId.equals(mainDraftDeptId)) {
map.put(FieldCommon.DETAIL_FLAG, true);
continue;
}
map.put(FieldCommon.DETAIL_FLAG, false);
}
}
@Override
public void editFlagSet(List<Map<String, Object>> records) {
// 只有创建人和管理员才有维护的权限
String userId = UserUtils.getUserId();
SysUser currentUser = sysUserService.getById(userId);
if (currentUser.getRoleCode().equals(FieldCommon.ROLE_ADMIN)) {
records.forEach(kv -> kv.put(FieldCommon.EDIT_FLAG, true));
return;
}
for (Map<String, Object> map : records) {
String createBy = (String) map.get(FieldCommon.CREATE_BY);
if (userId.equals(createBy)) {
map.put(FieldCommon.EDIT_FLAG, true);
} else {
map.put(FieldCommon.EDIT_FLAG, false);
}
}
}
@Override
public boolean detailPermissionByUser(String standardId, String standardNumber, String userId) {
SysUser user = sysUserService.getById(userId);
String deptId = user.getDepartIds();
SysDepart dept = sysDepartService.getById(deptId);
// 起草部门有全部企标的查看权限
if (dept.getDepartName().equals(draftDepartName)) {
return true;
}
if (StringUtils.isBlank(standardId) && StringUtils.isBlank(standardNumber)) {
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "id和标准号不能同时为空");
}
@@ -168,12 +214,6 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
if (levelDeptIds.contains(deptId)) {
return true;
}
} else {
// 主起草部门
String mainDraftDeptId = es.getMainDraftingUnit();
if (deptId.equals(mainDraftDeptId)) {
return true;
}
}
// 查询临时授权人员
@@ -197,6 +237,32 @@ public class EnterpriseStandardAuthUserServiceImpl extends ServiceImpl<Enterpris
}
return false;
}
/**
* 校验用户是否有删除权限
* @param ids
* @param userId
* @return
*/
public boolean verifyESDeleteAuth(String ids, String userId) {
if (StringUtils.isBlank(ids)) {
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "ids不能为空");
}
// 管理员有所有权限
SysUser user = sysUserService.getById(userId);
if (user.getRoleCode().equals("admin")) {
return true;
}
// 创建人可以删除
List<LawsEnterpriseStandard> list = enterpriseStandardService.list(new LambdaQueryWrapper<LawsEnterpriseStandard>().in(LawsEnterpriseStandard::getId, ids));
// 如果不是创建人,则直接返回false
for (LawsEnterpriseStandard es : list) {
if (!es.getCreateBy().equals(userId)) {
return false;
}
}
return true;
}
}
@@ -47,4 +47,5 @@ select.level.two.tree.node=\u8BF7\u5148\u9009\u62E9\u4E8C\u7EA7\u53CA\u4EE5\u4E0
export.error=\u5BFC\u51FA\u9519\u8BEF
import.error=\u5BFC\u5165\u9519\u8BEF
please.upload.zip.archive=\u6570\u636E\u5BFC\u5165\u5931\u8D25\uFF0C\u8BF7\u4E0A\u4F20zip\u538B\u7F29\u5305
task.handler.error=\u53EA\u6709\u5904\u7406\u4EBA\u53EF\u4EE5\u64CD\u4F5C
task.handler.error=\u53EA\u6709\u5904\u7406\u4EBA\u53EF\u4EE5\u64CD\u4F5C
no.auth=\u6CA1\u6709\u64CD\u4F5C\u6743\u9650
@@ -50,4 +50,5 @@ select.level.two.tree.node=Please select a level 2 or lower system first
export.error=Export error
import.error=Import error
please.upload.zip.archive=Data import failed, please upload zip archive
task.handler.error=Only the handler can operate
task.handler.error=Only the handler can operate
no.auth=No permission to operate
@@ -16,7 +16,7 @@ message.exists.standard.number=\u6807\u51C6\u7F16\u53F7\u5DF2\u7ECF\u5B58\u5728
message.no.exists.param=\u53C2\u6570{0}\u4E0D\u5B58\u5728
message.no.permission=\u6CA1\u6709\u6570\u636E\u64CD\u4F5C\u6743\u9650
message.select.data=\u8BF7\u9009\u62E9\u6570\u636E
message.exist.sub.folders=文件夹下有子文件夹 ,该文件夹不允许删除
message.exist.sub.folders=\u6587\u4EF6\u5939\u4E0B\u6709\u5B50\u6587\u4EF6\u5939 \uFF0C\u8BE5\u6587\u4EF6\u5939\u4E0D\u5141\u8BB8\u5220\u9664
successfully.cleared=\u6E05\u9664\u6210\u529F
successfully.deleted=\u5220\u9664\u6210\u529F
@@ -49,4 +49,5 @@ select.level.two.tree.node=\u8BF7\u5148\u9009\u62E9\u4E8C\u7EA7\u53CA\u4EE5\u4E0
export.zip.archive.error=\u5BFC\u51FA\u9519\u8BEF
import.zip.archive.error=\u5BFC\u5165\u9519\u8BEF
please.upload.zip.archive=\u6570\u636E\u5BFC\u5165\u5931\u8D25\uFF0C\u8BF7\u4E0A\u4F20zip\u538B\u7F29\u5305
task.handler.error=\u53EA\u6709\u5904\u7406\u4EBA\u53EF\u4EE5\u64CD\u4F5C
task.handler.error=\u53EA\u6709\u5904\u7406\u4EBA\u53EF\u4EE5\u64CD\u4F5C
no.auth=\u6CA1\u6709\u64CD\u4F5C\u6743\u9650