大调整

This commit is contained in:
zhangchenbiao
2023-06-08 15:58:05 +08:00
parent af7188f223
commit 665cb2190f
5 changed files with 249 additions and 304 deletions

View File

@@ -1,6 +1,5 @@
package com.cool.store.mapper;
import com.cool.store.dto.enterprise.EnterpriseUserRole;
import com.cool.store.entity.SysRoleDO;
import org.apache.ibatis.annotations.Param;
@@ -8,26 +7,30 @@ import java.util.List;
/**
* @author zhangchenbiao
* @date 2023-05-19 03:00
* @date 2023-06-08 10:54
*/
public interface SysRoleMapper {
/**
*
* 默认插入方法,只会给有值的字段赋值
* 会对传进来的字段做判空处理如果字段为空则使用数据库默认字段或者null
* dateTime:2023-05-19 03:00
* dateTime:2023-06-08 10:54
*/
int insertSelective(@Param("record") SysRoleDO record);
int batchInsertSelective(@Param("insertOrUpdateList") List<SysRoleDO> insertOrUpdateList);
/**
*
* 默认更新方法根据主键更新不会把null值更新到数据库避免覆盖之前有值的
* dateTime:2023-05-19 03:00
* dateTime:2023-06-08 10:54
*/
int updateByPrimaryKeySelective(@Param("record") SysRoleDO record);
int updateByPrimaryKeySelective(SysRoleDO record);
Integer deleteRole(@Param("roleType")Integer roleType, @Param("roleIds") List<String> roleIds);
SysRoleDO getHighestPrioritySysRoleDoByUserId(@Param("userId") String userId);
SysRoleDO getRoleByRoleEnum(@Param("roleEnum") String roleEnum);
/**
* 获取用户权限
* @param userId
* @return
*/
SysRoleDO getHighestPriorityRoleByUserId(@Param("userId") String userId);
}

View File

@@ -3,198 +3,130 @@
<mapper namespace="com.cool.store.mapper.SysRoleMapper">
<resultMap id="BaseResultMap" type="com.cool.store.entity.SysRoleDO">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="role_id" jdbcType="VARCHAR" property="roleId"/>
<result column="role_name" jdbcType="VARCHAR" property="roleName"/>
<result column="is_internal" jdbcType="BIT" property="isInternal"/>
<result column="role_auth" jdbcType="VARCHAR" property="roleAuth"/>
<result column="source" jdbcType="CHAR" property="source"/>
<result column="position_type" jdbcType="VARCHAR" property="positionType"/>
<result column="app_menu" jdbcType="VARCHAR" property="appMenu"/>
<result column="syn_ding_role_id" jdbcType="BIGINT" property="synDingRoleId"/>
<result column="priority" jdbcType="INTEGER" property="priority"/>
<result column="role_type" jdbcType="TINYINT" property="roleType"/>
<result column="third_unique_id" jdbcType="VARCHAR" property="thirdUniqueId"/>
<result column="deleted" jdbcType="BIT" property="deleted"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
<result column="role_enum" jdbcType="VARCHAR" property="roleEnum"/>
<result column="create_user" jdbcType="VARCHAR" property="createUser"/>
<result column="update_user" jdbcType="VARCHAR" property="updateUser"/>
<result column="third_unique_id" jdbcType="VARCHAR" property="thirdUniqueId"/>
</resultMap>
<sql id="Base_Column_List">
id, role_name, is_internal, role_auth, source, position_type, app_menu, syn_ding_role_id,
priority, create_time, update_time, role_enum, create_user, update_user, third_unique_id
id, role_id, role_name, role_type, third_unique_id, deleted, create_time, update_time, create_user,
update_user
</sql>
<insert id="insertSelective" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true">
insert into sys_role
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="record.roleName != null">
role_name,
</if>
<if test="record.isInternal != null">
is_internal,
</if>
<if test="record.roleAuth != null">
role_auth,
</if>
<if test="record.source != null">
source,
</if>
<if test="record.positionType != null">
position_type,
</if>
<if test="record.appMenu != null">
app_menu,
</if>
<if test="record.synDingRoleId != null">
syn_ding_role_id,
</if>
<if test="record.priority != null">
priority,
</if>
<if test="record.createTime != null">
create_time,
</if>
<if test="record.updateTime != null">
update_time,
</if>
<if test="record.roleEnum != null">
role_enum,
</if>
<if test="record.createUser != null">
create_user,
</if>
<if test="record.updateUser != null">
update_user,
</if>
<if test="record.thirdUniqueId != null">
third_unique_id,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="record.roleName != null">
#{record.roleName},
</if>
<if test="record.isInternal != null">
#{record.isInternal},
</if>
<if test="record.roleAuth != null">
#{record.roleAuth},
</if>
<if test="record.source != null">
#{record.source},
</if>
<if test="record.positionType != null">
#{record.positionType},
</if>
<if test="record.appMenu != null">
#{record.appMenu},
</if>
<if test="record.synDingRoleId != null">
#{record.synDingRoleId},
</if>
<if test="record.priority != null">
#{record.priority},
</if>
<if test="record.createTime != null">
#{record.createTime},
</if>
<if test="record.updateTime != null">
#{record.updateTime},
</if>
<if test="record.roleEnum != null">
#{record.roleEnum},
</if>
<if test="record.createUser != null">
#{record.createUser},
</if>
<if test="record.updateUser != null">
#{record.updateUser},
</if>
<if test="record.thirdUniqueId != null">
#{record.thirdUniqueId},
</if>
</trim>
<insert id="batchInsertSelective">
<foreach collection="insertOrUpdateList" separator=";" item="record">
insert into sys_role
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="record.roleId != null">
role_id,
</if>
<if test="record.roleName != null">
role_name,
</if>
<if test="record.roleType != null">
role_type,
</if>
<if test="record.thirdUniqueId != null">
third_unique_id,
</if>
<if test="record.deleted != null">
deleted,
</if>
<if test="record.createTime != null">
create_time,
</if>
<if test="record.updateTime != null">
update_time,
</if>
<if test="record.createUser != null">
create_user,
</if>
<if test="record.updateUser != null">
update_user,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="record.roleId != null">
#{record.roleId},
</if>
<if test="record.roleName != null">
#{record.roleName},
</if>
<if test="record.roleType != null">
#{record.roleType},
</if>
<if test="record.thirdUniqueId != null">
#{record.thirdUniqueId},
</if>
<if test="record.deleted != null">
#{record.deleted},
</if>
<if test="record.createTime != null">
#{record.createTime},
</if>
<if test="record.updateTime != null">
#{record.updateTime},
</if>
<if test="record.createUser != null">
#{record.createUser},
</if>
<if test="record.updateUser != null">
#{record.updateUser},
</if>
</trim>
ON DUPLICATE KEY UPDATE role_name = values(role_name), deleted = values(deleted)
</foreach>
</insert>
<update id="updateByPrimaryKeySelective">
update sys_role
<set>
<if test="record.roleName != null">
role_name = #{record.roleName},
<if test="roleId != null">
role_id = #{roleId},
</if>
<if test="record.isInternal != null">
is_internal = #{record.isInternal},
<if test="roleName != null">
role_name = #{roleName},
</if>
<if test="record.roleAuth != null">
role_auth = #{record.roleAuth},
<if test="roleType != null">
role_type = #{roleType},
</if>
<if test="record.source != null">
source = #{record.source},
<if test="thirdUniqueId != null">
third_unique_id = #{thirdUniqueId},
</if>
<if test="record.positionType != null">
position_type = #{record.positionType},
<if test="deleted != null">
deleted = #{deleted},
</if>
<if test="record.appMenu != null">
app_menu = #{record.appMenu},
<if test="createTime != null">
create_time = #{createTime},
</if>
<if test="record.synDingRoleId != null">
syn_ding_role_id = #{record.synDingRoleId},
<if test="updateTime != null">
update_time = #{updateTime},
</if>
<if test="record.priority != null">
priority = #{record.priority},
<if test="createUser != null">
create_user = #{createUser},
</if>
<if test="record.createTime != null">
create_time = #{record.createTime},
</if>
<if test="record.updateTime != null">
update_time = #{record.updateTime},
</if>
<if test="record.roleEnum != null">
role_enum = #{record.roleEnum},
</if>
<if test="record.createUser != null">
create_user = #{record.createUser},
</if>
<if test="record.updateUser != null">
update_user = #{record.updateUser},
</if>
<if test="record.thirdUniqueId != null">
third_unique_id = #{record.thirdUniqueId},
<if test="updateUser != null">
update_user = #{updateUser},
</if>
</set>
where id = #{record.id}
where id = #{id}
</update>
<select id="getHighestPrioritySysRoleDoByUserId" resultMap="BaseResultMap">
select
c.id as id,
c.role_name as roleName,
c.role_auth as roleAuth,
c.position_type as positionType,
c.app_menu as appMenu,
c.role_enum as roleEnum
from
enterprise_user a
left join enterprise_user_role b on a.user_id =b.user_id
left join sys_role c on c.id=b.role_id
where
a.user_id= #{userId} and a.active = true
order by
c.priority is null, c.priority, position_type desc
LIMIT 1
</select>
<update id="deleteRole">
update sys_role set deleted = 1 where role_type = #{roleType} and role_id not in
<foreach collection="roleIds" open="(" close=")" separator="," item="roleId">#{roleId}</foreach>
</update>
<select id="getRoleByRoleEnum" resultMap="BaseResultMap">
<select id="getHighestPriorityRoleByUserId" resultMap="BaseResultMap">
select
id as id,
role_name as roleName,
role_auth as roleAuth,
is_internal as isInternal,
`source` as source,
priority as priority,
app_menu as appMenu,
position_type as positionType,
role_enum as roleEnum
r.*
from
sys_role
sys_role r inner join enterprise_user_role e on r.role_id = e.role_id
where
role_enum = #{roleEnum}
e.user_id = #{userId}
limit 1
</select>
</mapper>

View File

@@ -5,128 +5,109 @@
<id column="id" jdbcType="INTEGER" property="id"/>
<result column="region_id" jdbcType="VARCHAR" property="regionId"/>
<result column="user_id" jdbcType="VARCHAR" property="userId"/>
<result column="type" jdbcType="INTEGER" property="type"/>
<result column="deleted" jdbcType="BIT" property="deleted"/>
<result column="create_id" jdbcType="VARCHAR" property="createId"/>
<result column="create_time" jdbcType="BIGINT" property="createTime"/>
<result column="update_id" jdbcType="VARCHAR" property="updateId"/>
<result column="update_time" jdbcType="BIGINT" property="updateTime"/>
</resultMap>
<sql id="Base_Column_List">
id, region_id, user_id, create_id, create_time, update_id, update_time
id, region_id, user_id, type, deleted, create_id, create_time, update_id, update_time
</sql>
<insert id="insertSelective" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true">
insert into user_region_mapping
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="record.regionId != null">
region_id,
</if>
<if test="record.userId != null">
user_id,
</if>
<if test="record.createId != null">
create_id,
</if>
<if test="record.createTime != null">
create_time,
</if>
<if test="record.updateId != null">
update_id,
</if>
<if test="record.updateTime != null">
update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="record.regionId != null">
#{record.regionId},
</if>
<if test="record.userId != null">
#{record.userId},
</if>
<if test="record.createId != null">
#{record.createId},
</if>
<if test="record.createTime != null">
#{record.createTime},
</if>
<if test="record.updateId != null">
#{record.updateId},
</if>
<if test="record.updateTime != null">
#{record.updateTime},
</if>
</trim>
<insert id="batchInsertOrUpdateUserRegion">
<foreach collection="insertOrUpdateList" item="record" separator=";">
insert into user_region_mapping
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="record.regionId != null">
region_id,
</if>
<if test="record.userId != null">
user_id,
</if>
<if test="record.type != null">
type,
</if>
<if test="record.deleted != null">
deleted,
</if>
<if test="record.createId != null">
create_id,
</if>
<if test="record.createTime != null">
create_time,
</if>
<if test="record.updateId != null">
update_id,
</if>
<if test="record.updateTime != null">
update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="record.regionId != null">
#{record.regionId},
</if>
<if test="record.userId != null">
#{record.userId},
</if>
<if test="record.type != null">
#{record.type},
</if>
<if test="record.deleted != null">
#{record.deleted},
</if>
<if test="record.createId != null">
#{record.createId},
</if>
<if test="record.createTime != null">
#{record.createTime},
</if>
<if test="record.updateId != null">
#{record.updateId},
</if>
<if test="record.updateTime != null">
#{record.updateTime},
</if>
</trim>
ON DUPLICATE KEY UPDATE type = values(type), deleted = values(deleted)
</foreach>
</insert>
<update id="updateByPrimaryKeySelective">
update user_region_mapping
<set>
<if test="record.regionId != null">
region_id = #{record.regionId},
<if test="regionId != null">
region_id = #{regionId},
</if>
<if test="record.userId != null">
user_id = #{record.userId},
<if test="userId != null">
user_id = #{userId},
</if>
<if test="record.createId != null">
create_id = #{record.createId},
<if test="type != null">
type = #{type},
</if>
<if test="record.createTime != null">
create_time = #{record.createTime},
<if test="deleted != null">
deleted = #{deleted},
</if>
<if test="record.updateId != null">
update_id = #{record.updateId},
<if test="createId != null">
create_id = #{createId},
</if>
<if test="record.updateTime != null">
update_time = #{record.updateTime},
<if test="createTime != null">
create_time = #{createTime},
</if>
<if test="updateId != null">
update_id = #{updateId},
</if>
<if test="updateTime != null">
update_time = #{updateTime},
</if>
</set>
where id = #{record.id}
where id = #{id}
</update>
<delete id="deletedByUserIds">
delete from user_region_mapping where user_id in
<foreach collection="userIds" open="(" close=")" separator="," item="userId">
#{userId}
</foreach>
</delete>
<insert id="batchInsertRegionMapping">
insert into user_region_mapping
(
region_id,
user_id,
create_time,
update_time,
create_id,
update_id
)
values
<foreach collection="userRegionMappingDOS" item="entity" separator=",">
(
#{entity.regionId},
#{entity.userId},
#{entity.createTime},
#{entity.updateTime},
#{entity.createId},
#{entity.updateId}
)
</foreach>
</insert>
<select id="listUserRegionMappingByUserId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from user_region_mapping
<if test="userIds !=null and userIds.size >0">
where user_id in
<foreach collection="userIds" open="(" close=")" separator="," item="userId">
#{userId}
</foreach>
<delete id="deleteUserRegion">
update user_region_mapping set deleted = 1 where region_id = #{regionId} and type = #{type}
<if test="excludeUserIds != null and excludeUserIds.size() > 0">
and user_id not in <foreach collection="excludeUserIds" separator="," open="(" close=")" item="userId" >#{userId}</foreach>
</if>
</select>
<delete id="deletedByIds">
delete from user_region_mapping where id in
<foreach collection="ids" open="(" close=")" separator="," item="id">
#{id}
</foreach>
</delete>
</mapper>

View File

@@ -1,5 +1,8 @@
package com.cool.store.entity;
import cn.hutool.crypto.digest.MD5;
import com.cool.store.constants.CommonConstants;
import com.cool.store.enums.DataSourceEnum;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
@@ -11,40 +14,30 @@ import lombok.NoArgsConstructor;
/**
*
* @author zhangchenbiao
* @date 2023-05-19 03:00
* @date 2023-06-08 10:54
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SysRoleDO implements Serializable {
@ApiModelProperty("自增id")
private Long id;
@ApiModelProperty("")
@ApiModelProperty("角色id")
private String roleId;
@ApiModelProperty("角色名称")
private String roleName;
@ApiModelProperty("是否预制")
private Boolean isInternal;
@ApiModelProperty("角色类型 0-同步 1-自建")
private Integer roleType;
@ApiModelProperty("角色权限范围all全企业数据include_subordinate(所在组织架构包含下级) not_include_subordinate(所在的组织架构不包含下级) personal (仅自己的数据) ")
private String roleAuth;
@ApiModelProperty("第三方唯一id")
private String thirdUniqueId;
@ApiModelProperty("岗位来源:(create:自建岗位, sync:从钉钉同步的角色sync_position从钉钉同步的职位, ehr 从第三方ehr同步的)")
private String source;
@ApiModelProperty("职位类型store_outside-店外store_inside-店内")
private String positionType;
@ApiModelProperty("移动端菜单")
private String appMenu;
@ApiModelProperty("钉钉角色id")
private Long synDingRoleId;
@ApiModelProperty("角色排序 1.管理员 1-99.门店职位 100+.钉钉角色")
private Integer priority;
@ApiModelProperty("删除标识")
private Boolean deleted;
@ApiModelProperty("创建时间")
private Date createTime;
@@ -52,15 +45,20 @@ public class SysRoleDO implements Serializable {
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("角色枚举用于判定逻辑")
private String roleEnum;
@ApiModelProperty("创建人")
private String createUser;
@ApiModelProperty("更新人")
private String updateUser;
@ApiModelProperty("第三方唯一id")
private String thirdUniqueId;
public static SysRoleDO convertSyncDO(String roleName){
SysRoleDO role = new SysRoleDO();
role.setRoleId(MD5.create().digestHex(roleName));
role.setRoleName(roleName);
role.setRoleType(DataSourceEnum.SYNC.getCode());
role.setDeleted(Boolean.FALSE);
role.setCreateTime(new Date());
role.setUpdateTime(new Date());
return role;
}
}

View File

@@ -1,23 +1,30 @@
package com.cool.store.entity;
import com.cool.store.constants.CommonConstants;
import com.cool.store.dto.enterprise.EnterpriseUserDTO;
import com.cool.store.enums.DataSourceEnum;
import com.google.common.collect.Lists;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
/**
*
* @author zhangchenbiao
* @date 2023-05-19 03:00
* @date 2023-06-07 02:07
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserRegionMappingDO implements Serializable {
@ApiModelProperty("主键")
private Integer id;
@@ -27,6 +34,12 @@ public class UserRegionMappingDO implements Serializable {
@ApiModelProperty("用户ID")
private String userId;
@ApiModelProperty("类型")
private Integer type;
@ApiModelProperty("删除标识")
private Boolean deleted;
@ApiModelProperty("创建人")
private String createId;
@@ -38,4 +51,22 @@ public class UserRegionMappingDO implements Serializable {
@ApiModelProperty("更新时间")
private Long updateTime;
public static List<UserRegionMappingDO> convertSyncDO(String regionId, List<EnterpriseUserDTO> departmentUsers){
if(CollectionUtils.isEmpty(departmentUsers)){
return Lists.newArrayList();
}
List<UserRegionMappingDO> resultList = new ArrayList<>();
for (EnterpriseUserDTO departmentUser : departmentUsers) {
UserRegionMappingDO userRegion = new UserRegionMappingDO();
userRegion.setRegionId(regionId);
userRegion.setUserId(departmentUser.getUserId());
userRegion.setType(DataSourceEnum.SYNC.getCode());
userRegion.setCreateTime(System.currentTimeMillis());
userRegion.setUpdateTime(System.currentTimeMillis());
userRegion.setDeleted(Boolean.FALSE);
resultList.add(userRegion);
}
return resultList;
}
}