From 4d9f1e6ff426eca47eeb57bf780f30d892da3f0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 5 Sep 2024 17:31:01 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B3=E6=8A=A5=E6=9D=83=E9=99=90=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/entity/auth/dto/SobOptAuth.java | 19 +++++ .../dto/{AuthDTO.java => TaxEmpOptAuth.java} | 2 +- .../salary/entity/auth/dto/TaxOptAuth.java | 19 +++++ .../engine/salary/mapper/auth/AuthMapper.java | 10 ++- .../engine/salary/mapper/auth/AuthMapper.xml | 79 +++++++++++++++---- .../salary/service/auth/AuthService.java | 3 - .../salary/service/auth/AuthServiceImpl.java | 45 +++++++---- .../engine/salary/wrapper/AuthWrapper.java | 2 +- 8 files changed, 143 insertions(+), 36 deletions(-) create mode 100644 src/com/engine/salary/entity/auth/dto/SobOptAuth.java rename src/com/engine/salary/entity/auth/dto/{AuthDTO.java => TaxEmpOptAuth.java} (91%) create mode 100644 src/com/engine/salary/entity/auth/dto/TaxOptAuth.java diff --git a/src/com/engine/salary/entity/auth/dto/SobOptAuth.java b/src/com/engine/salary/entity/auth/dto/SobOptAuth.java new file mode 100644 index 000000000..cbae0bfd7 --- /dev/null +++ b/src/com/engine/salary/entity/auth/dto/SobOptAuth.java @@ -0,0 +1,19 @@ +package com.engine.salary.entity.auth.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Set; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SobOptAuth { + private Long sobId; + + private Set opts; +} + diff --git a/src/com/engine/salary/entity/auth/dto/AuthDTO.java b/src/com/engine/salary/entity/auth/dto/TaxEmpOptAuth.java similarity index 91% rename from src/com/engine/salary/entity/auth/dto/AuthDTO.java rename to src/com/engine/salary/entity/auth/dto/TaxEmpOptAuth.java index f2ebaef7b..fffb519db 100644 --- a/src/com/engine/salary/entity/auth/dto/AuthDTO.java +++ b/src/com/engine/salary/entity/auth/dto/TaxEmpOptAuth.java @@ -11,7 +11,7 @@ import java.util.List; @Builder @NoArgsConstructor @AllArgsConstructor -public class AuthDTO { +public class TaxEmpOptAuth { private Long taxAgentId; private List emps; diff --git a/src/com/engine/salary/entity/auth/dto/TaxOptAuth.java b/src/com/engine/salary/entity/auth/dto/TaxOptAuth.java new file mode 100644 index 000000000..57b4765c7 --- /dev/null +++ b/src/com/engine/salary/entity/auth/dto/TaxOptAuth.java @@ -0,0 +1,19 @@ +package com.engine.salary.entity.auth.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Set; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxOptAuth { + private Long taxAgentId; + + private Set opts; +} + diff --git a/src/com/engine/salary/mapper/auth/AuthMapper.java b/src/com/engine/salary/mapper/auth/AuthMapper.java index 1e3d64acc..7d941690d 100644 --- a/src/com/engine/salary/mapper/auth/AuthMapper.java +++ b/src/com/engine/salary/mapper/auth/AuthMapper.java @@ -1,13 +1,19 @@ package com.engine.salary.mapper.auth; -import com.engine.salary.entity.auth.dto.AuthDTO; +import com.engine.salary.entity.auth.dto.SobOptAuth; +import com.engine.salary.entity.auth.dto.TaxEmpOptAuth; +import com.engine.salary.entity.auth.dto.TaxOptAuth; import org.apache.ibatis.annotations.Param; import java.util.List; public interface AuthMapper { - List getAuth(@Param("uid") Long uid, @Param("page") String page); + List getTaxEmpOptAuth(@Param("uid") Long uid, @Param("page") String page); + + List getTaxOptAuth(@Param("uid") Long uid, @Param("page") String page); + + List getSobOptAuth(@Param("uid") Long uid, @Param("page") String page); List getLimitSobs(@Param("uid") Long uid); diff --git a/src/com/engine/salary/mapper/auth/AuthMapper.xml b/src/com/engine/salary/mapper/auth/AuthMapper.xml index 1ed2dcb4a..f6c482e16 100644 --- a/src/com/engine/salary/mapper/auth/AuthMapper.xml +++ b/src/com/engine/salary/mapper/auth/AuthMapper.xml @@ -1,7 +1,7 @@ - + @@ -13,30 +13,76 @@ - + select resource.target as tax_agent_id, d.employee_id, o.opt from hrsa_auth_role_emp emp - left join hrsa_auth_role role on emp.role_id = role.id and emp.delete_type = 0 and role.delete_type = 0 - left join hrsa_auth_resource resource on resource.role_id = role.id and resource.target_type=1 and resource.delete_type = 0 - left join hrsa_auth_role_data d on emp.role_id = d.role_id and d.delete_type = 0 - left join hrsa_auth_opt o on d.role_id = o.role_id and o.delete_type = 0 - where emp.employee_id = #{uid} and o.page = #{page} + left join hrsa_auth_role role on emp.role_id = role.id and emp.delete_type = 0 and role.delete_type = 0 + left join hrsa_auth_resource resource + on resource.role_id = role.id and resource.target_type = 1 and resource.delete_type = 0 + left join hrsa_auth_role_data d on emp.role_id = d.role_id and d.delete_type = 0 + left join hrsa_auth_opt o on d.role_id = o.role_id and o.delete_type = 0 + where emp.employee_id = #{uid} + and o.page = #{page} + + + + + + + + + + + + + + + + + + + + + + + + + @@ -45,9 +91,12 @@ select o.opt from hrsa_auth_role_emp emp left join hrsa_auth_role role on emp.role_id = role.id - left join hrsa_auth_opt o on role.id = o.role_id - where emp.delete_type = 0 and role.delete_type = 0 and o.delete_type = 0 - and emp.employee_id = #{uid} and o.page = #{page} + left join hrsa_auth_opt o on role.id = o.role_id + where emp.delete_type = 0 + and role.delete_type = 0 + and o.delete_type = 0 + and emp.employee_id = #{uid} + and o.page = #{page} diff --git a/src/com/engine/salary/service/auth/AuthService.java b/src/com/engine/salary/service/auth/AuthService.java index 693bc243d..d29f21a03 100644 --- a/src/com/engine/salary/service/auth/AuthService.java +++ b/src/com/engine/salary/service/auth/AuthService.java @@ -1,6 +1,5 @@ package com.engine.salary.service.auth; -import com.engine.salary.entity.auth.dto.AuthDTO; import com.engine.salary.entity.auth.vo.Permission; import com.engine.salary.enums.auth.AuthFilterTypeEnum; @@ -18,7 +17,5 @@ public interface AuthService { List auth(List list, AuthFilterTypeEnum filterType, Class clazz); - List auth(String page); - Permission permission(String page); } diff --git a/src/com/engine/salary/service/auth/AuthServiceImpl.java b/src/com/engine/salary/service/auth/AuthServiceImpl.java index cb6638e62..7f6c966fa 100644 --- a/src/com/engine/salary/service/auth/AuthServiceImpl.java +++ b/src/com/engine/salary/service/auth/AuthServiceImpl.java @@ -4,8 +4,10 @@ import cn.hutool.core.collection.CollectionUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.annotation.Auth; -import com.engine.salary.entity.auth.dto.AuthDTO; import com.engine.salary.entity.auth.dto.EmpOpt; +import com.engine.salary.entity.auth.dto.SobOptAuth; +import com.engine.salary.entity.auth.dto.TaxEmpOptAuth; +import com.engine.salary.entity.auth.dto.TaxOptAuth; import com.engine.salary.entity.auth.vo.Permission; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.enums.auth.AuthCheckTypeEnum; @@ -155,13 +157,13 @@ public class AuthServiceImpl extends Service implements AuthService { list.removeAll(resultList); //给各角色赋权 - List authDTOS = getAuthMapper().getAuth((long) user.getUID(), page); - Map> authMap = SalaryEntityUtil.convert2Map(authDTOS, AuthDTO::getTaxAgentId, AuthDTO::getEmps); - try { Iterator iterator = list.iterator(); if (checkType == AuthCheckTypeEnum.TAX_EMP) { + List authDTOS = getAuthMapper().getTaxEmpOptAuth((long) user.getUID(), page); + Map> authMap = SalaryEntityUtil.convert2Map(authDTOS, TaxEmpOptAuth::getTaxAgentId, TaxEmpOptAuth::getEmps); + while (iterator.hasNext()) { T t = iterator.next(); //混合验证 @@ -191,30 +193,50 @@ public class AuthServiceImpl extends Service implements AuthService { } } } else if (checkType == AuthCheckTypeEnum.SOB) { - List limits = getAuthMapper().getLimitSobs((long) user.getUID()); - + List sobOptAuth = getAuthMapper().getSobOptAuth((long) user.getUID(), page); + Map> sobOpts = SalaryEntityUtil.convert2Map(sobOptAuth, SobOptAuth::getSobId, SobOptAuth::getOpts); while (iterator.hasNext()) { T t = iterator.next(); Method sobIdFieldGetterMethod = t.getClass().getMethod(sobIdFieldGetter); Long sobId = (Long) sobIdFieldGetterMethod.invoke(t); - if (limits.contains(sobId)) { + if (sobOpts.containsKey(sobId)) { if (filterType == AuthFilterTypeEnum.DATA_OPT) { + Set optSets = sobOpts.getOrDefault(sobId, new HashSet<>()); + Method optsFieldGetterMethod = t.getClass().getMethod(optsFieldGetter); + Set opts = (Set) optsFieldGetterMethod.invoke(t); + if (opts == null) { + opts = new HashSet<>(); + } + opts.addAll(optSets); + Method optsFieldSetterMethod = t.getClass().getMethod(optsFieldSetter, Set.class); + optsFieldSetterMethod.invoke(t, opts); } resultList.add(t); } } } else if (checkType == AuthCheckTypeEnum.TAX) { - List limits = getAuthMapper().getLimitTaxAgents((long) user.getUID()); + List authDTOS = getAuthMapper().getTaxOptAuth((long) user.getUID(), page); + Map> taxOpts = SalaryEntityUtil.convert2Map(authDTOS, TaxOptAuth::getTaxAgentId, TaxOptAuth::getOpts); while (iterator.hasNext()) { T t = iterator.next(); Method taxAgentIdFieldGetterMethod = t.getClass().getMethod(taxAgentIdFieldGetter); Long taxAgentId = (Long) taxAgentIdFieldGetterMethod.invoke(t); - if (limits.contains(taxAgentId)) { + if (taxOpts.containsKey(taxAgentId)) { if (filterType == AuthFilterTypeEnum.DATA_OPT) { + Set optSets = taxOpts.getOrDefault(taxAgentId, new HashSet<>()); + Method optsFieldGetterMethod = t.getClass().getMethod(optsFieldGetter); + Set opts = (Set) optsFieldGetterMethod.invoke(t); + if (opts == null) { + opts = new HashSet<>(); + } + opts.addAll(optSets); + + Method optsFieldSetterMethod = t.getClass().getMethod(optsFieldSetter, Set.class); + optsFieldSetterMethod.invoke(t, opts); } resultList.add(t); @@ -227,11 +249,6 @@ public class AuthServiceImpl extends Service implements AuthService { return resultList; } - @Override - public List auth(String page) { - return getAuthMapper().getAuth((long) user.getUID(), page); - } - @Override public Permission permission(String page) { long uid = user.getUID(); diff --git a/src/com/engine/salary/wrapper/AuthWrapper.java b/src/com/engine/salary/wrapper/AuthWrapper.java index d75e86efb..9f0485f56 100644 --- a/src/com/engine/salary/wrapper/AuthWrapper.java +++ b/src/com/engine/salary/wrapper/AuthWrapper.java @@ -147,7 +147,7 @@ public class AuthWrapper extends Service { } public Object auth(String page) { - return getAuthMapper().getAuth((long) user.getUID(), page); + return getAuthMapper().getTaxEmpOptAuth((long) user.getUID(), page); } public Permission permission(String page) {