From 394a1245a800017f93ec8249ce57c8bc6f8cfbf4 Mon Sep 17 00:00:00 2001 From: b2baccline <23131013+b2baccline@users.noreply.github.com> Date: Tue, 22 Dec 2020 00:06:44 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=B6=88=E6=81=AF=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E6=8E=A5=E6=94=B6=E4=BA=BA=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constants/NotifyRecipientFilterType.java | 28 ++++++++++++ .../listener/AnnouncementEventListener.java | 14 +++--- .../notify/recipient/AllRecipientFilter.java | 41 ++++++++++++++++++ .../notify/recipient/RecipientFilter.java | 29 +++++++++++++ .../notify/recipient/RecipientHandler.java | 37 ++++++++++++++++ .../SpecifyOrganizationRecipientFilter.java | 43 +++++++++++++++++++ .../recipient/SpecifyRoleRecipientFilter.java | 43 +++++++++++++++++++ .../recipient/SpecifyUserRecipientFilter.java | 43 +++++++++++++++++++ .../SpecifyUserTypeRecipientFilter.java | 43 +++++++++++++++++++ .../modules/sys/mapper/SysUserMapper.java | 4 +- .../modules/sys/service/SysUserService.java | 30 ++++++++++++- .../sys/service/impl/SysUserServiceImpl.java | 42 +++++++++++++++++- .../resources/mapper/sys/SysUserMapper.xml | 35 ++++++++------- 13 files changed, 406 insertions(+), 26 deletions(-) create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/constants/NotifyRecipientFilterType.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/AllRecipientFilter.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/RecipientFilter.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/RecipientHandler.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyOrganizationRecipientFilter.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyRoleRecipientFilter.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyUserRecipientFilter.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyUserTypeRecipientFilter.java diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/constants/NotifyRecipientFilterType.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/constants/NotifyRecipientFilterType.java new file mode 100644 index 00000000..a3dcd759 --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/constants/NotifyRecipientFilterType.java @@ -0,0 +1,28 @@ +package com.hccake.ballcat.admin.constants; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 通知接收者筛选类型 + * @author Hccake 2020/12/21 + * @version 1.0 + */ +@Getter +@RequiredArgsConstructor +public enum NotifyRecipientFilterType { + + // 全部 + ALL(1), + // 指定用户 + SPECIFY_ROLE(2), + // 指定组织 + SPECIFY_ORGANIZATION(3), + // 指定用户类型 + SPECIFY_USER_TYPE(4), + // 指定用户 + SPECIFY_USER(5),; + + private final int value; + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/listener/AnnouncementEventListener.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/listener/AnnouncementEventListener.java index afc0ac14..2dcc5333 100644 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/listener/AnnouncementEventListener.java +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/listener/AnnouncementEventListener.java @@ -3,13 +3,13 @@ package com.hccake.ballcat.admin.modules.notify.listener; import com.hccake.ballcat.admin.modules.notify.event.AnnouncementPublishEvent; import com.hccake.ballcat.admin.modules.notify.model.entity.Announcement; import com.hccake.ballcat.admin.modules.notify.push.NotifyPushRunner; +import com.hccake.ballcat.admin.modules.notify.recipient.RecipientHandler; import com.hccake.ballcat.admin.modules.sys.model.entity.SysUser; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; -import java.util.ArrayList; import java.util.List; /** @@ -23,6 +23,8 @@ import java.util.List; @RequiredArgsConstructor public class AnnouncementEventListener { + private final RecipientHandler recipientHandler; + private final NotifyPushRunner notifyPusherRunner; /** @@ -33,11 +35,11 @@ public class AnnouncementEventListener { public void onAnnouncementPublishEvent(AnnouncementPublishEvent event) { Announcement announcement = event.getAnnouncement(); - // TODO 根据接收人条件筛选 - List userList = new ArrayList<>(); - SysUser sysUser = new SysUser(); - sysUser.setEmail("chengbohua@foxmail.com"); - userList.add(sysUser); + // 获取通知接收人 + Integer recipientFilterType = announcement.getRecipientFilterType(); + List recipientFilterCondition = announcement.getRecipientFilterCondition(); + List userList = recipientHandler.query(recipientFilterType, recipientFilterCondition); + log.trace("公告接收用户:[{}]", userList); // 推送通知 notifyPusherRunner.run(announcement, userList, announcement.getReceiveMode()); diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/AllRecipientFilter.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/AllRecipientFilter.java new file mode 100644 index 00000000..f970d1d2 --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/AllRecipientFilter.java @@ -0,0 +1,41 @@ +package com.hccake.ballcat.admin.modules.notify.recipient; + +import com.hccake.ballcat.admin.constants.NotifyRecipientFilterType; +import com.hccake.ballcat.admin.modules.sys.model.entity.SysUser; +import com.hccake.ballcat.admin.modules.sys.service.SysUserService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author Hccake 2020/12/21 + * @version 1.0 + */ +@Component +@RequiredArgsConstructor +public class AllRecipientFilter implements RecipientFilter { + + private final SysUserService sysUserService; + + /** + * 当前筛选器对应的筛选类型 + * @return 筛选类型对应的标识 + * @see NotifyRecipientFilterType + */ + @Override + public Integer filterType() { + return NotifyRecipientFilterType.ALL.getValue(); + } + + /** + * 接收者筛选 + * @param filterCondition 筛选条件 + * @return 接收者集合 + */ + @Override + public List filter(List filterCondition) { + return sysUserService.list(); + } + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/RecipientFilter.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/RecipientFilter.java new file mode 100644 index 00000000..1392888e --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/RecipientFilter.java @@ -0,0 +1,29 @@ +package com.hccake.ballcat.admin.modules.notify.recipient; + +import com.hccake.ballcat.admin.modules.sys.model.entity.SysUser; + +import java.util.List; + +/** + * 接收者筛选器 + * + * @author Hccake 2020/12/21 + * @version 1.0 + */ +public interface RecipientFilter { + + /** + * 当前筛选器对应的筛选类型 + * @see com.hccake.ballcat.admin.constants.NotifyRecipientFilterType + * @return 筛选类型对应的标识 + */ + Integer filterType(); + + /** + * 接收者筛选 + * @param filterCondition 筛选条件 + * @return 接收者集合 + */ + List filter(List filterCondition); + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/RecipientHandler.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/RecipientHandler.java new file mode 100644 index 00000000..e17e6e92 --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/RecipientHandler.java @@ -0,0 +1,37 @@ +package com.hccake.ballcat.admin.modules.notify.recipient; + +import com.hccake.ballcat.admin.modules.sys.model.entity.SysUser; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Hccake 2020/12/21 + * @version 1.0 + */ +@Slf4j +@Component +public class RecipientHandler { + + private final Map recipientFilterMap = new LinkedHashMap<>(); + + public RecipientHandler(List recipientFilterList) { + for (RecipientFilter recipientFilter : recipientFilterList) { + this.recipientFilterMap.put(recipientFilter.filterType(), recipientFilter); + } + } + + public List query(Integer filterType, List filterCondition) { + RecipientFilter recipientFilter = recipientFilterMap.get(filterType); + if (recipientFilter == null) { + log.error("Unknown recipient filter:[{}],filterCondition:{}", filterType, filterCondition); + return new ArrayList<>(); + } + return recipientFilter.filter(filterCondition); + } + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyOrganizationRecipientFilter.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyOrganizationRecipientFilter.java new file mode 100644 index 00000000..57d59761 --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyOrganizationRecipientFilter.java @@ -0,0 +1,43 @@ +package com.hccake.ballcat.admin.modules.notify.recipient; + +import com.hccake.ballcat.admin.constants.NotifyRecipientFilterType; +import com.hccake.ballcat.admin.modules.sys.model.entity.SysUser; +import com.hccake.ballcat.admin.modules.sys.service.SysUserService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author Hccake 2020/12/21 + * @version 1.0 + */ +@Component +@RequiredArgsConstructor +public class SpecifyOrganizationRecipientFilter implements RecipientFilter { + + private final SysUserService sysUserService; + + /** + * 当前筛选器对应的筛选类型 + * @return 筛选类型对应的标识 + * @see NotifyRecipientFilterType + */ + @Override + public Integer filterType() { + return NotifyRecipientFilterType.SPECIFY_ORGANIZATION.getValue(); + } + + /** + * 接收者筛选 + * @param filterCondition 筛选条件 + * @return 接收者集合 + */ + @Override + public List filter(List filterCondition) { + List organizationIds = filterCondition.stream().map(x -> (Integer) x).collect(Collectors.toList()); + return sysUserService.selectUsersByOrganizationIds(organizationIds); + } + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyRoleRecipientFilter.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyRoleRecipientFilter.java new file mode 100644 index 00000000..3dafae6b --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyRoleRecipientFilter.java @@ -0,0 +1,43 @@ +package com.hccake.ballcat.admin.modules.notify.recipient; + +import com.hccake.ballcat.admin.constants.NotifyRecipientFilterType; +import com.hccake.ballcat.admin.modules.sys.model.entity.SysUser; +import com.hccake.ballcat.admin.modules.sys.service.SysUserService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author Hccake 2020/12/21 + * @version 1.0 + */ +@Component +@RequiredArgsConstructor +public class SpecifyRoleRecipientFilter implements RecipientFilter { + + private final SysUserService sysUserService; + + /** + * 当前筛选器对应的筛选类型 + * @return 筛选类型对应的标识 + * @see NotifyRecipientFilterType + */ + @Override + public Integer filterType() { + return NotifyRecipientFilterType.SPECIFY_ROLE.getValue(); + } + + /** + * 接收者筛选 + * @param filterCondition 筛选条件 + * @return 接收者集合 + */ + @Override + public List filter(List filterCondition) { + List roleCodes = filterCondition.stream().map(x -> (String) x).collect(Collectors.toList()); + return sysUserService.selectUsersByRoleCodes(roleCodes); + } + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyUserRecipientFilter.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyUserRecipientFilter.java new file mode 100644 index 00000000..83e56306 --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyUserRecipientFilter.java @@ -0,0 +1,43 @@ +package com.hccake.ballcat.admin.modules.notify.recipient; + +import com.hccake.ballcat.admin.constants.NotifyRecipientFilterType; +import com.hccake.ballcat.admin.modules.sys.model.entity.SysUser; +import com.hccake.ballcat.admin.modules.sys.service.SysUserService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author Hccake 2020/12/21 + * @version 1.0 + */ +@Component +@RequiredArgsConstructor +public class SpecifyUserRecipientFilter implements RecipientFilter { + + private final SysUserService sysUserService; + + /** + * 当前筛选器对应的筛选类型 + * @return 筛选类型对应的标识 + * @see NotifyRecipientFilterType + */ + @Override + public Integer filterType() { + return NotifyRecipientFilterType.SPECIFY_USER.getValue(); + } + + /** + * 接收者筛选 + * @param filterCondition 筛选条件 用户ID集合 + * @return 接收者集合 + */ + @Override + public List filter(List filterCondition) { + List userIds = filterCondition.stream().map(x -> (Integer) x).collect(Collectors.toList()); + return sysUserService.selectUsersByUserIds(userIds); + } + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyUserTypeRecipientFilter.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyUserTypeRecipientFilter.java new file mode 100644 index 00000000..04e8ecc0 --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/notify/recipient/SpecifyUserTypeRecipientFilter.java @@ -0,0 +1,43 @@ +package com.hccake.ballcat.admin.modules.notify.recipient; + +import com.hccake.ballcat.admin.constants.NotifyRecipientFilterType; +import com.hccake.ballcat.admin.modules.sys.model.entity.SysUser; +import com.hccake.ballcat.admin.modules.sys.service.SysUserService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author Hccake 2020/12/21 + * @version 1.0 + */ +@Component +@RequiredArgsConstructor +public class SpecifyUserTypeRecipientFilter implements RecipientFilter { + + private final SysUserService sysUserService; + + /** + * 当前筛选器对应的筛选类型 + * @return 筛选类型对应的标识 + * @see NotifyRecipientFilterType + */ + @Override + public Integer filterType() { + return NotifyRecipientFilterType.SPECIFY_USER_TYPE.getValue(); + } + + /** + * 接收者筛选 + * @param filterCondition 筛选条件 + * @return 接收者集合 + */ + @Override + public List filter(List filterCondition) { + List userTypes = filterCondition.stream().map(x -> (Integer) x).collect(Collectors.toList()); + return sysUserService.selectUsersByUserTypes(userTypes); + } + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysUserMapper.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysUserMapper.java index 6d47c4b5..e946cbd6 100644 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysUserMapper.java +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysUserMapper.java @@ -28,10 +28,10 @@ public interface SysUserMapper extends BaseMapper { /** * 根据RoleCode 查询对应用户 - * @param roleCode 角色标识 + * @param roleCodes 角色标识 * @return List 该角色标识对应的用户列表 */ - List selectUsersByRoleCode(String roleCode); + List selectUsersByRoleCodes(@Param("roleCodes") List roleCodes); /** * 返回用户的select数据 name=> username value => userId diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysUserService.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysUserService.java index 2d4e6c90..87f8525d 100644 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysUserService.java +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysUserService.java @@ -4,9 +4,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.hccake.ballcat.admin.modules.sys.model.dto.SysUserDTO; import com.hccake.ballcat.admin.modules.sys.model.dto.SysUserScope; +import com.hccake.ballcat.admin.modules.sys.model.dto.UserInfoDTO; import com.hccake.ballcat.admin.modules.sys.model.entity.SysUser; import com.hccake.ballcat.admin.modules.sys.model.qo.SysUserQO; -import com.hccake.ballcat.admin.modules.sys.model.dto.UserInfoDTO; import com.hccake.ballcat.admin.modules.sys.model.vo.SysUserVO; import com.hccake.ballcat.common.core.vo.SelectData; import org.springframework.web.multipart.MultipartFile; @@ -105,6 +105,34 @@ public interface SysUserService extends IService { */ List selectUsersByRoleCode(String roleCode); + /** + * 根据角色查询用户 + * @param roleCodes 角色标识集合 + * @return List 用户集合 + */ + List selectUsersByRoleCodes(List roleCodes); + + /** + * 根据组织机构ID查询用户 + * @param organizationIds 组织机构id集合 + * @return 用户集合 + */ + List selectUsersByOrganizationIds(List organizationIds); + + /** + * 根据用户类型查询用户 + * @param userTypes 用户类型集合 + * @return 用户集合 + */ + List selectUsersByUserTypes(List userTypes); + + /** + * 根据用户Id集合查询用户 + * @param userIds 用户Id集合 + * @return 用户集合 + */ + List selectUsersByUserIds(List userIds); + /** * 返回用户的select数据 * @param type 为空时返回所有客户为1返回系统客户 name=> username value => userId diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysUserServiceImpl.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysUserServiceImpl.java index 8ee1ef73..a8cf63b7 100644 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysUserServiceImpl.java +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysUserServiceImpl.java @@ -274,7 +274,47 @@ public class SysUserServiceImpl extends ServiceImpl impl */ @Override public List selectUsersByRoleCode(String roleCode) { - return baseMapper.selectUsersByRoleCode(roleCode); + return selectUsersByRoleCodes(Collections.singletonList(roleCode)); + } + + /** + * 根据角色查询用户 + * @param roleCodes 角色标识集合 + * @return List + */ + @Override + public List selectUsersByRoleCodes(List roleCodes) { + return baseMapper.selectUsersByRoleCodes(roleCodes); + } + + /** + * 根据组织机构ID查询用户 + * @param organizationIds 组织机构id集合 + * @return 用户集合 + */ + @Override + public List selectUsersByOrganizationIds(List organizationIds) { + return baseMapper.selectList(Wrappers.lambdaQuery().in(SysUser::getOrganizationId, organizationIds)); + } + + /** + * 根据用户类型查询用户 + * @param userTypes 用户类型集合 + * @return 用户集合 + */ + @Override + public List selectUsersByUserTypes(List userTypes) { + return baseMapper.selectList(Wrappers.lambdaQuery().in(SysUser::getType, userTypes)); + } + + /** + * 根据用户Id集合查询用户 + * @param userIds 用户Id集合 + * @return 用户集合 + */ + @Override + public List selectUsersByUserIds(List userIds) { + return baseMapper.selectList(Wrappers.lambdaQuery().in(SysUser::getUserId, userIds)); } /** diff --git a/ballcat-admin/ballcat-admin-core/src/main/resources/mapper/sys/SysUserMapper.xml b/ballcat-admin/ballcat-admin-core/src/main/resources/mapper/sys/SysUserMapper.xml index aa17c74b..a3d91728 100644 --- a/ballcat-admin/ballcat-admin-core/src/main/resources/mapper/sys/SysUserMapper.xml +++ b/ballcat-admin/ballcat-admin-core/src/main/resources/mapper/sys/SysUserMapper.xml @@ -3,7 +3,10 @@ - su.user_id, + su + . + user_id + , su.username, su.nickname, su.avatar, @@ -23,26 +26,28 @@ , so.name as organization_name FROM sys_user su LEFT JOIN - sys_organization so + sys_organization so ON su.organization_id = so.id ${ew.customSqlSegment} - + SELECT - FROM - sys_user su + FROM + sys_user su left join - sys_user_role ur - on su.user_id = ur.user_id - left join - sys_role r - on r.code = ur.role_code - WHERE r.`code` = #{0} - and su.deleted = 0 - + sys_user_role ur + on su.user_id = ur.user_id + WHERE + ur.`role_code` + in + + #{roleCode} + + and su.deleted = 0 + - -