diff --git a/src/com/engine/salary/mapper/auth/AuthRoleDataMapper.java b/src/com/engine/salary/mapper/auth/AuthRoleDataMapper.java index c88fb74a1..2918cb8c5 100644 --- a/src/com/engine/salary/mapper/auth/AuthRoleDataMapper.java +++ b/src/com/engine/salary/mapper/auth/AuthRoleDataMapper.java @@ -75,5 +75,10 @@ public interface AuthRoleDataMapper { * @param ids 主键id集合 */ void deleteByIds(@Param("ids") Collection ids); - + + /** + * 根据角色id删除 + * @param roleId roleId + */ + void deleteByRoleId(Long roleId); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/auth/AuthRoleDataMapper.xml b/src/com/engine/salary/mapper/auth/AuthRoleDataMapper.xml new file mode 100644 index 000000000..4abe3f1eb --- /dev/null +++ b/src/com/engine/salary/mapper/auth/AuthRoleDataMapper.xml @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + t + . + id + , t.role_id + , t.employee_id + , t.creator + , t.create_time + , t.update_time + , t.delete_type + , t.tenant_key + + + + + + + + + + + + + + + INSERT INTO hrsa_auth_role_data + + + + id, + + + role_id, + + + employee_id, + + + creator, + + + create_time, + + + update_time, + + + delete_type, + + + tenant_key, + + + + + #{id}, + + + #{roleId}, + + + #{employeeId}, + + + #{creator}, + + + #{createTime}, + + + #{updateTime}, + + + #{deleteType}, + + + #{tenantKey}, + + + + + + + + INSERT INTO hrsa_auth_role_data + ( + id, + role_id, + employee_id, + creator, + create_time, + update_time, + delete_type, + tenant_key + ) + VALUES + + + ( + #{item.id}, + #{item.roleId}, + #{item.employeeId}, + #{item.creator}, + #{item.createTime}, + #{item.updateTime}, + #{item.deleteType}, + #{item.tenantKey} + ) + + + + + + + INSERT INTO hrsa_auth_role_data ( + id, + role_id, + employee_id, + creator, + create_time, + update_time, + delete_type, + tenant_key + ) + + + select + #{item.id,jdbcType=DOUBLE}, + #{item.roleId,jdbcType=DOUBLE}, + #{item.employeeId,jdbcType=DOUBLE}, + #{item.creator,jdbcType=DOUBLE}, + #{item.createTime,jdbcType=DATE}, + #{item.updateTime,jdbcType=DATE}, + #{item.deleteType,jdbcType=INTEGER}, + #{item.tenantKey,jdbcType=VARCHAR} + from dual + + + + + + + INSERT INTO hrsa_auth_role_data ( + id, + role_id, + employee_id, + creator, + create_time, + update_time, + delete_type, + tenant_key + ) + VALUES + ( + #{item.id}, + #{item.roleId}, + #{item.employeeId}, + #{item.creator}, + #{item.createTime}, + #{item.updateTime}, + #{item.deleteType}, + #{item.tenantKey} + ) + + + + + + UPDATE hrsa_auth_role_data + + role_id=#{roleId}, + employee_id=#{employeeId}, + creator=#{creator}, + create_time=#{createTime}, + update_time=#{updateTime}, + delete_type=#{deleteType}, + tenant_key=#{tenantKey}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_auth_role_data + + + role_id=#{roleId}, + + + employee_id=#{employeeId}, + + + creator=#{creator}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + delete_type=#{deleteType}, + + + tenant_key=#{tenantKey}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_auth_role_data + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_auth_role_data + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + UPDATE hrsa_auth_role_data + SET delete_type=1 + WHERE role_id = #{roleId} AND delete_type = 0 + + \ No newline at end of file diff --git a/src/com/engine/salary/service/auth/AuthDataServiceImpl.java b/src/com/engine/salary/service/auth/AuthDataServiceImpl.java index a0538a259..7cb54fa82 100644 --- a/src/com/engine/salary/service/auth/AuthDataServiceImpl.java +++ b/src/com/engine/salary/service/auth/AuthDataServiceImpl.java @@ -1,24 +1,26 @@ package com.engine.salary.service.auth; -import cn.hutool.core.collection.CollUtil; import com.engine.core.impl.Service; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.auth.param.AuthDataSaveParam; -import com.engine.salary.entity.auth.po.*; +import com.engine.salary.entity.auth.po.AuthDataPO; +import com.engine.salary.entity.auth.po.AuthRoleDataPO; +import com.engine.salary.entity.auth.po.AuthRolePO; 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.exception.SalaryRunTimeException; import com.engine.salary.mapper.auth.AuthDataMapper; import com.engine.salary.mapper.auth.AuthRoleDataMapper; import com.engine.salary.mapper.auth.AuthRoleEmpMapper; import com.engine.salary.mapper.auth.AuthRoleMapper; -import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; import com.google.common.collect.Lists; -import java.util.*; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; import java.util.stream.Collectors; public class AuthDataServiceImpl extends Service implements AuthDataService { @@ -35,6 +37,7 @@ public class AuthDataServiceImpl extends Service implements AuthDataService { private AuthRoleEmpMapper getAuthRoleEmpMapper() { return MapperProxyFactory.getProxy(AuthRoleEmpMapper.class); } + private AuthRoleDataMapper getAuthRoleDataMapper() { return MapperProxyFactory.getProxy(AuthRoleDataMapper.class); } @@ -78,49 +81,10 @@ public class AuthDataServiceImpl extends Service implements AuthDataService { @Override public void sync(Long roleId) { - - - AuthRolePO rolePO = getAuthRoleMapper().getById(roleId); - if (rolePO == null) { - throw new SalaryRunTimeException("角色不存在!"); - } - - //1、获取成员 - List members = getAuthMemberMapper().listSome(AuthMemberPO.builder().roleId(roleId).build()); - Map> targetTypeMap = SalaryEntityUtil.group2Map(members, AuthMemberPO::getTargetType, AuthMemberPO::getTarget); - - //2、获取人员 - Set empIds = new HashSet<>(); - for (Integer targetType : targetTypeMap.keySet()) { - Set targetIds = targetTypeMap.get(targetType); - List ids = MemberTargetTypeEnum.parseByValue(targetType).getEmpIds(targetIds); - empIds.addAll(ids); - } - - //3、更新成员关系 - getAuthRoleEmpMapper().deleteByRoleId(roleId); Date now = new Date(); - List roleEmpPOS = empIds.stream() - .map(empId -> AuthRoleEmpPO.builder() - .id(IdGenerator.generate()) - .employeeId(empId) - .roleId(roleId) - .creator((long) user.getUID()) - .createTime(now) - .updateTime(now) - .deleteType(0) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build()) - .collect(Collectors.toList()); - if (CollUtil.isNotEmpty(roleEmpPOS)) { - List> partition = Lists.partition(roleEmpPOS, 100); - partition.forEach(list -> getAuthRoleEmpMapper().batchInsert(list)); - } - - List list = list(roleId); - Set ids = null; + Set ids = new HashSet<>(); for (int i = 0; i < list.size(); i++) { AuthDataPO dataPO = list.get(i); DataTargetTypeEnum dataTargetTypeEnum = DataTargetTypeEnum.parseByValue(dataPO.getTargetType()); @@ -133,22 +97,22 @@ public class AuthDataServiceImpl extends Service implements AuthDataService { } } - getAuthDataMapper().deleteByRoleId(roleId); + getAuthRoleDataMapper().deleteByRoleId(roleId); - List collect = ids.stream().map(empId -> AuthRoleDataPO.builder() - .id(IdGenerator.generate()) - .employeeId(empId) - .roleId(roleId) - .creator((long) user.getUID()) - .createTime(now) - .updateTime(now) - .deleteType(0) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build()) + List collect = ids.stream().map(empId -> + AuthRoleDataPO.builder() + .id(IdGenerator.generate()) + .roleId(roleId) + .employeeId(empId) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(0) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()) .collect(Collectors.toList()); List> partition = Lists.partition(collect, 100); - partition.forEach(list -> getAuthRoleDataMapper().batchInsert(list)); - + partition.forEach(pos -> getAuthRoleDataMapper().batchInsert(pos)); } }