diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMapper.java index 930eb25f6..36c8cea0a 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMapper.java @@ -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 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 roleIds); - SysRoleDO getHighestPrioritySysRoleDoByUserId(@Param("userId") String userId); - - SysRoleDO getRoleByRoleEnum(@Param("roleEnum") String roleEnum); + /** + * 获取用户权限 + * @param userId + * @return + */ + SysRoleDO getHighestPriorityRoleByUserId(@Param("userId") String userId); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/SysRoleMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/SysRoleMapper.xml index 33143da57..a3abf7759 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/SysRoleMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/SysRoleMapper.xml @@ -3,198 +3,130 @@ + - - - - - - - + + + - - - 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 - - insert into sys_role - - - 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, - - - - - #{record.roleName}, - - - #{record.isInternal}, - - - #{record.roleAuth}, - - - #{record.source}, - - - #{record.positionType}, - - - #{record.appMenu}, - - - #{record.synDingRoleId}, - - - #{record.priority}, - - - #{record.createTime}, - - - #{record.updateTime}, - - - #{record.roleEnum}, - - - #{record.createUser}, - - - #{record.updateUser}, - - - #{record.thirdUniqueId}, - - + + + insert into sys_role + + + role_id, + + + role_name, + + + role_type, + + + third_unique_id, + + + deleted, + + + create_time, + + + update_time, + + + create_user, + + + update_user, + + + + + #{record.roleId}, + + + #{record.roleName}, + + + #{record.roleType}, + + + #{record.thirdUniqueId}, + + + #{record.deleted}, + + + #{record.createTime}, + + + #{record.updateTime}, + + + #{record.createUser}, + + + #{record.updateUser}, + + + ON DUPLICATE KEY UPDATE role_name = values(role_name), deleted = values(deleted) + update sys_role - - role_name = #{record.roleName}, + + role_id = #{roleId}, - - is_internal = #{record.isInternal}, + + role_name = #{roleName}, - - role_auth = #{record.roleAuth}, + + role_type = #{roleType}, - - source = #{record.source}, + + third_unique_id = #{thirdUniqueId}, - - position_type = #{record.positionType}, + + deleted = #{deleted}, - - app_menu = #{record.appMenu}, + + create_time = #{createTime}, - - syn_ding_role_id = #{record.synDingRoleId}, + + update_time = #{updateTime}, - - priority = #{record.priority}, + + create_user = #{createUser}, - - create_time = #{record.createTime}, - - - update_time = #{record.updateTime}, - - - role_enum = #{record.roleEnum}, - - - create_user = #{record.createUser}, - - - update_user = #{record.updateUser}, - - - third_unique_id = #{record.thirdUniqueId}, + + update_user = #{updateUser}, - where id = #{record.id} + where id = #{id} - + + update sys_role set deleted = 1 where role_type = #{roleType} and role_id not in + #{roleId} + - 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 \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml index 1d841bc44..d163b4600 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/UserRegionMappingMapper.xml @@ -5,128 +5,109 @@ + + - 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 - - insert into user_region_mapping - - - region_id, - - - user_id, - - - create_id, - - - create_time, - - - update_id, - - - update_time, - - - - - #{record.regionId}, - - - #{record.userId}, - - - #{record.createId}, - - - #{record.createTime}, - - - #{record.updateId}, - - - #{record.updateTime}, - - + + + insert into user_region_mapping + + + region_id, + + + user_id, + + + type, + + + deleted, + + + create_id, + + + create_time, + + + update_id, + + + update_time, + + + + + #{record.regionId}, + + + #{record.userId}, + + + #{record.type}, + + + #{record.deleted}, + + + #{record.createId}, + + + #{record.createTime}, + + + #{record.updateId}, + + + #{record.updateTime}, + + + ON DUPLICATE KEY UPDATE type = values(type), deleted = values(deleted) + update user_region_mapping - - region_id = #{record.regionId}, + + region_id = #{regionId}, - - user_id = #{record.userId}, + + user_id = #{userId}, - - create_id = #{record.createId}, + + type = #{type}, - - create_time = #{record.createTime}, + + deleted = #{deleted}, - - update_id = #{record.updateId}, + + create_id = #{createId}, - - update_time = #{record.updateTime}, + + create_time = #{createTime}, + + + update_id = #{updateId}, + + + update_time = #{updateTime}, - where id = #{record.id} + where id = #{id} - - delete from user_region_mapping where user_id in - - #{userId} - - - - - insert into user_region_mapping - ( - region_id, - user_id, - create_time, - update_time, - create_id, - update_id - ) - values - - ( - #{entity.regionId}, - #{entity.userId}, - #{entity.createTime}, - #{entity.updateTime}, - #{entity.createId}, - #{entity.updateId} - ) - - - - - - - delete from user_region_mapping where id in - - #{id} - \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/SysRoleDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/SysRoleDO.java index 00347d8a4..3bae1ec36 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/SysRoleDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/SysRoleDO.java @@ -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; + } } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/UserRegionMappingDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/UserRegionMappingDO.java index b83839fcf..c15fbeebe 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/UserRegionMappingDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/UserRegionMappingDO.java @@ -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 convertSyncDO(String regionId, List departmentUsers){ + if(CollectionUtils.isEmpty(departmentUsers)){ + return Lists.newArrayList(); + } + List 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; + } } \ No newline at end of file