权限控制

This commit is contained in:
钱涛 2024-08-22 15:37:50 +08:00
parent 25321bb357
commit a22aa624db
19 changed files with 149 additions and 70 deletions

View File

@ -14,13 +14,20 @@
</page>
</module>
<module name="н×ʺËËã" key="salaryAcct">
<module name="戟栗뵙炬" key="salaryAcct" >
<page name="薪资核算" key="salaryAcct">
<opt name="查询" key="query"/>
<opt name="管理" key="admin"/>
</page>
</module>
<module name="묏栗데" key="salaryBill" >
<page name="묏栗데" key="salaryBill">
<opt name="꿴璂" key="query"/>
<opt name="밗잿" key="admin"/>
</page>
</module>
<module name="个税申报" key="taxdeclaration">
<page name="个税申报" key="taxdeclaration">
<opt name="查询" key="query"/>

View File

@ -1,6 +1,7 @@
package com.engine.salary.entity.auth.dto;
import com.engine.salary.annotation.TableTitle;
import com.engine.salary.enums.auth.DataLinkEnum;
import com.engine.salary.enums.auth.DataTargetTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
@ -15,7 +16,15 @@ public class AuthDataDTO {
private Long id;
@TableTitle(title = "对象类型",dataIndex = "targetType",key = "targetType")
/**
* 连接符
*/
@TableTitle(title = "连接",dataIndex = "linkName",key = "linkName")
private String linkName;
private DataLinkEnum link;
@TableTitle(title = "对象类型",dataIndex = "targetTypeName",key = "targetTypeName")
private String targetTypeName;
private DataTargetTypeEnum targetType;
@ -23,4 +32,7 @@ public class AuthDataDTO {
private String targetName;
private String target;
@TableTitle(title = "批次",dataIndex = "sortedIndex",key = "sortedIndex")
private Integer sortedIndex;
}

View File

@ -15,7 +15,7 @@ public class AuthMemberDTO {
private Long id;
@TableTitle(title = "对象类型",dataIndex = "targetType",key = "targetType")
@TableTitle(title = "对象类型",dataIndex = "targetTypeName",key = "targetTypeName")
private String targetTypeName;
private MemberTargetTypeEnum targetType;

View File

@ -50,6 +50,10 @@ public class AuthOptDTO {
@XStreamAsAttribute
private String key;
@XStreamAlias("limit")
@XStreamAsAttribute
private String limit;
@XStreamImplicit(itemFieldName = "opt")
private List<Opt> opts;

View File

@ -3,6 +3,8 @@ package com.engine.salary.entity.auth.param;
import com.engine.salary.enums.auth.DataLinkEnum;
import com.engine.salary.enums.auth.DataTargetTypeEnum;
import com.engine.salary.util.valid.Modify;
import com.engine.salary.util.valid.ModifyTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -21,6 +23,7 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
public class AuthDataSaveParam {
private Long id;
private Long roleId;
@ -28,8 +31,10 @@ public class AuthDataSaveParam {
private DataTargetTypeEnum targetType;
@Modify(modifyType = ModifyTypeEnum.RESTORE_SQL)
private String target;
@Modify(modifyType = ModifyTypeEnum.RESTORE_SQL)
private String targetName;
private Integer sortedIndex;

View File

@ -15,6 +15,8 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
public class AuthMemberSaveParam {
private Long id;
private Long roleId;
private MemberTargetTypeEnum targetType;

View File

@ -18,6 +18,7 @@ public class AuthOptSaveParam {
@Data
public static class Opt {
private String page;
private String opt;

View File

@ -24,7 +24,7 @@ public class AuthRoleSaveParam {
private String name;
@DataCheck(require = true, max = 400, message = "名称不允许为空,名称不能超过400个字符")
@DataCheck(require = false, max = 400, message = "描述不能超过400个字符")
private String description;
/**

View File

@ -1,6 +1,7 @@
package com.engine.salary.entity.auth.po;
import com.engine.hrmelog.annotation.ElogTransform;
import com.engine.salary.enums.auth.DataLinkEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -28,6 +29,7 @@ public class AuthDataPO {
/**
* 连接符
* @see DataLinkEnum
*/
@ElogTransform(name = "连接符,交、并、补")
private Integer link;

View File

@ -20,19 +20,19 @@ import java.util.Set;
public enum DataLinkEnum implements BaseEnum<Integer> {
OR(1, "", 87627) {
OR(1, "集运算", 87627) {
@Override
public Set<Long> calculation(Collection<Long> coll1, Collection<Long> coll2) {
return new HashSet<>(CollectionUtil.union(coll1, coll2));
}
},
AND(2, "", 87626) {
AND(2, "集运算", 87626) {
@Override
public Set<Long> calculation(Collection<Long> coll1, Collection<Long> coll2) {
return new HashSet<>(CollectionUtil.intersection(coll1, coll2));
}
},
NOT_IN(3, "", 87626) {
NOT_IN(3, "集运算", 87626) {
@Override
public Set<Long> calculation(Collection<Long> coll1, Collection<Long> coll2) {
return new HashSet<>(CollectionUtil.disjunction(coll1, coll2));

View File

@ -64,22 +64,37 @@ public class AuthDataServiceImpl extends Service implements AuthDataService {
throw new SalaryRunTimeException("角色不存在!");
}
AuthDataPO dataPO = AuthDataPO.builder()
.id(IdGenerator.generate())
.roleId(param.getRoleId())
.link(param.getLink().getValue())
.targetType(param.getTargetType().getValue())
.target(param.getTarget())
.targetName(param.getTargetName())
.sortedIndex(param.getSortedIndex())
.creator((long) user.getUID())
.createTime(now)
.updateTime(now)
.deleteType(0)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build();
getAuthDataMapper().insertIgnoreNull(dataPO);
if(param.getId() == null){
AuthDataPO dataPO = AuthDataPO.builder()
.id(IdGenerator.generate())
.roleId(param.getRoleId())
.link(param.getLink().getValue())
.targetType(param.getTargetType().getValue())
.target(param.getTarget())
.targetName(param.getTargetName())
.sortedIndex(param.getSortedIndex())
.creator((long) user.getUID())
.createTime(now)
.updateTime(now)
.deleteType(0)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build();
getAuthDataMapper().insertIgnoreNull(dataPO);
}else{
getAuthDataMapper().getById(param.getId());
AuthDataPO dataPO = AuthDataPO.builder()
.id(param.getId())
.link(param.getLink().getValue())
.targetType(param.getTargetType().getValue())
.target(param.getTarget())
.targetName(param.getTargetName())
.sortedIndex(param.getSortedIndex())
.creator((long) user.getUID())
.updateTime(now)
.deleteType(0)
.build();
getAuthDataMapper().updateIgnoreNull(dataPO);
}
});
}

View File

@ -65,29 +65,55 @@ public class AuthMemberServiceImpl extends Service implements AuthMemberService
}
Date now = new Date();
AuthMemberPO po = AuthMemberPO.builder()
.id(IdGenerator.generate())
.roleId(param.getRoleId())
.target(param.getTarget())
.targetType(param.getTargetType().getValue())
.targetName(param.getTargetName())
.creator((long) user.getUID())
.createTime(now)
.updateTime(now)
.deleteType(0)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build();
getAuthMemberMapper().insertIgnoreNull(po);
if (param.getId() == null) {
AuthMemberPO po = AuthMemberPO.builder()
.id(IdGenerator.generate())
.roleId(param.getRoleId())
.target(param.getTarget())
.targetType(param.getTargetType().getValue())
.targetName(param.getTargetName())
.creator((long) user.getUID())
.createTime(now)
.updateTime(now)
.deleteType(0)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build();
getAuthMemberMapper().insertIgnoreNull(po);
LoggerContext<TaxAgentPO> loggerContext = new LoggerContext<>();
loggerContext.setUser(user);
loggerContext.setTargetId(rolePO.getTaxAgentId() + "");
loggerContext.setTargetName(rolePO.getName() + "成员:" + po.getId());
loggerContext.setOperateType(OperateTypeEnum.ADD.getValue());
loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "新增成员"));
loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "新增成员"));
loggerContext.setNewValues(po);
SalaryElogConfig.taxAgentLoggerTemplate.write(loggerContext);
} else {
AuthMemberPO oldPO = getAuthMemberMapper().getById(param.getId());
AuthMemberPO newPo = AuthMemberPO.builder()
.id(param.getId())
.target(param.getTarget())
.targetType(param.getTargetType().getValue())
.targetName(param.getTargetName())
.creator((long) user.getUID())
.updateTime(now)
.deleteType(0)
.build();
getAuthMemberMapper().updateIgnoreNull(newPo);
LoggerContext<TaxAgentPO> loggerContext = new LoggerContext<>();
loggerContext.setUser(user);
loggerContext.setTargetId(rolePO.getTaxAgentId() + "");
loggerContext.setTargetName(rolePO.getName() + "成员:" + newPo.getId());
loggerContext.setOperateType(OperateTypeEnum.ADD.getValue());
loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "编辑成员"));
loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "编辑成员"));
loggerContext.setOldValues(oldPO);
loggerContext.setNewValues(newPo);
SalaryElogConfig.taxAgentLoggerTemplate.write(loggerContext);
}
LoggerContext<TaxAgentPO> loggerContext = new LoggerContext<>();
loggerContext.setUser(user);
loggerContext.setTargetId(rolePO.getTaxAgentId() + "");
loggerContext.setTargetName(rolePO.getName() + "成员:" + po.getId());
loggerContext.setOperateType(OperateTypeEnum.ADD.getValue());
loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "新增成员"));
loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "新增成员"));
loggerContext.setNewValues(po);
SalaryElogConfig.taxAgentLoggerTemplate.write(loggerContext);
});
}

View File

@ -39,6 +39,7 @@ public class AuthOptServiceImpl extends Service implements AuthOptService {
XStream xStream = new XStream();
String resource = GCONST.getRootPath() + "WEB-INF" + File.separatorChar + "salaryoptconfig.xml";
File file = new File("H:\\code\\salary\\resource\\WEB-INF\\salaryoptconfig.xml");
// File file = new File(resource);
xStream.addPermission(AnyTypePermission.ANY);
xStream.processAnnotations(AuthOptDTO.class);

View File

@ -8,6 +8,7 @@ import com.engine.salary.entity.auth.dto.AuthDTO;
import com.engine.salary.entity.auth.dto.EmpOpt;
import com.engine.salary.entity.auth.dto.Opt;
import com.engine.salary.enums.auth.AuthCheckTypeEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.auth.AuthMapper;
import com.engine.salary.service.TaxAgentService;
import com.engine.salary.service.impl.TaxAgentServiceImpl;
@ -53,12 +54,6 @@ public class AuthServiceImpl extends Service implements AuthService {
if (isChief) {
list.forEach(t -> {
try {
Method taxAgentIdFieldGetterMethod = t.getClass().getMethod(taxAgentIdFieldGetter);
Long taxAgentId = (Long) taxAgentIdFieldGetterMethod.invoke(t);
Method employeeIdFieldGetterMethod = t.getClass().getMethod(employeeIdFieldGetter);
Long employeeId = (Long) employeeIdFieldGetterMethod.invoke(t);
Method optsFieldGetterMethod = t.getClass().getMethod(optsFieldGetter);
Set<String> opts = (Set<String>) optsFieldGetterMethod.invoke(t);
if (opts == null) {
@ -71,7 +66,7 @@ public class AuthServiceImpl extends Service implements AuthService {
optsFieldSetterMethod.invoke(t, opts);
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
e.printStackTrace();
throw new SalaryRunTimeException(e);
}
});
@ -103,11 +98,9 @@ public class AuthServiceImpl extends Service implements AuthService {
iterator.remove();
}
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
e.printStackTrace();
throw new SalaryRunTimeException(e);
}
}
return list;
}
@ -149,7 +142,7 @@ public class AuthServiceImpl extends Service implements AuthService {
}
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
e.printStackTrace();
throw new SalaryRunTimeException(e);
}
}

View File

@ -216,9 +216,6 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
}.start();
}
Boolean needAuth = getTaxAgentService(user).isNeedAuth(currentEmployeeId);
//排序配置
OrderRuleVO orderRule = getSalarySysConfService(user).orderRule();
queryParam.setOrderRule(orderRule);
@ -1067,16 +1064,9 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
@Override
public Map<String, Long> queryTabTotal() {
long currentEmployeeId = user.getUID();
// tab页签数量
Map<String, Long> result = new HashMap<>();
Boolean needAuth = getTaxAgentService(user).isNeedAuth(currentEmployeeId);
//获取管理的人员范围
List<TaxAgentManageRangeEmployeeDTO> taxAgentEmployeeDTOS = getTaxAgentService(user).listTaxAgentAndEmployeeTree(currentEmployeeId);
Map<Long, List<TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee>> taxAgentEmployeesMap = SalaryEntityUtil.convert2Map(taxAgentEmployeeDTOS, TaxAgentManageRangeEmployeeDTO::getTaxAgentId, TaxAgentManageRangeEmployeeDTO::getEmployeeList);
List<SalaryArchivePO> list = getSalaryArchiveMapper().listAll();
list = getAuthService(user).auth(list,SalaryArchivePO.class);

View File

@ -87,6 +87,17 @@ public class SalarySobController {
return new ResponseResult<SalarySobListQueryParam, PageInfo<SalarySobListDTO>>(user).run(getSalarySobWrapper(user)::listPage, queryParam);
}
/**
* 薪资账套列表
*/
@GET
@Path("/listByTaxAgent")
@Produces(MediaType.APPLICATION_JSON)
public String listSalarySob(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "taxAgentId") Long taxAgentId) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, List<SalarySobPO>>(user).run(getSalarySobWrapper(user)::listByTaxAgent, taxAgentId);
}
/**
* 薪资账套列表
*/

View File

@ -8,6 +8,7 @@ import com.engine.salary.entity.auth.dto.AuthOptDTO;
import com.engine.salary.entity.auth.param.*;
import com.engine.salary.entity.auth.po.AuthDataPO;
import com.engine.salary.entity.auth.po.AuthMemberPO;
import com.engine.salary.enums.auth.DataLinkEnum;
import com.engine.salary.enums.auth.DataTargetTypeEnum;
import com.engine.salary.enums.auth.MemberTargetTypeEnum;
import com.engine.salary.mapper.auth.AuthMapper;
@ -64,7 +65,8 @@ public class AuthWrapper extends Service {
.target(po.getTarget())
.build())
.collect(Collectors.toList());
PageInfo<AuthMemberDTO> authMemberDTOPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), dtos, AuthMemberDTO.class);
PageInfo<AuthMemberDTO> authMemberDTOPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), AuthMemberDTO.class);
authMemberDTOPageInfo.setList(dtos);
authMemberDTOPageInfo.setTotal(total);
return authMemberDTOPageInfo;
}
@ -98,20 +100,26 @@ public class AuthWrapper extends Service {
list = SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), list);
List<AuthDataDTO> dtos = list.stream().map(po -> AuthDataDTO.builder()
.id(po.getId())
.link(DataLinkEnum.parseByValue(po.getLink()))
.linkName(DataLinkEnum.parseByValue(po.getLink()).getDefaultLabel())
.targetTypeName(DataTargetTypeEnum.parseByValue(po.getTargetType()).getDefaultLabel())
.targetType(DataTargetTypeEnum.parseByValue(po.getTargetType()))
.targetName(po.getTargetName())
.target(po.getTarget())
.sortedIndex(po.getSortedIndex())
.build())
.collect(Collectors.toList());
PageInfo<AuthDataDTO> page = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), dtos, AuthDataDTO.class);
PageInfo<AuthDataDTO> page = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), AuthDataDTO.class);
page.setList(dtos);
page.setTotal(total);
return page;
}
public void saveData(List<AuthDataSaveParam> params) {
params.forEach(ValidUtil::modify);
getAuthDataService(user).save(params);
}

View File

@ -198,8 +198,7 @@ public class SalaryArchiveWrapper extends Service {
* @return
*/
public Map<String, Object> listPage(SalaryArchiveQueryParam queryParam) {
Map<String, Object> list = list(queryParam);
return list;
return list(queryParam);
}

View File

@ -278,4 +278,7 @@ public class SalarySobWrapper extends Service {
return taxAgentIds.contains(salarySobPO.getTaxAgentId())||Objects.isNull(salarySobPO.getTaxAgentId());
}
public List<SalarySobPO> listByTaxAgent(Long taxAgentId) {
return getSalarySobService(user).listByTaxAgentId(taxAgentId);
}
}