| | |
| | | <result property="updateBy" column="update_by" /> |
| | | <result property="updateTime" column="update_time" /> |
| | | <result property="remark" column="remark" /> |
| | | <result property="userCount" column="user_count" /> |
| | | </resultMap> |
| | | |
| | | <sql id="selectRoleVo"> |
| | |
| | | </sql> |
| | | |
| | | <select id="selectRoleList" parameterType="SysRole" resultMap="SysRoleResult"> |
| | | <include refid="selectRoleVo"/> |
| | | <!-- |
| | | 列表没有复用上面的 selectRoleVo:那个片段还被登录鉴权用的 selectRolePermissionByUserId、 |
| | | 角色下拉用的 selectRoleAll 一起共用,而「关联员工数」只有列表页要, |
| | | 放进公共片段等于让每次登录都白跑一遍子查询。 |
| | | |
| | | distinct 与三个 join 一个都不能少:join 到 sys_user_role 会把一行角色放大成「其名下用户数」行 |
| | | (不 distinct 列表就出现重复角色),而 join 出来的 d 正是 ${params.dataScope} |
| | | (Service 上的 @DataScope(deptAlias = "d"))拼条件时要用的别名,删 d 会报未知列。 |
| | | |
| | | user_count 必须显式写进下面的 resultMap:本项目没开 map-underscore-to-camel-case, |
| | | 否则这个列会静默丢成 null。 |
| | | --> |
| | | select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly, |
| | | r.status, r.del_flag, r.create_time, r.remark, |
| | | (select count(1) from sys_user_role ur2 where ur2.role_id = r.role_id) as user_count |
| | | from sys_role r |
| | | left join sys_user_role ur on ur.role_id = r.role_id |
| | | left join sys_user u on u.user_id = ur.user_id |
| | | left join sys_dept d on u.dept_id = d.dept_id |
| | | where r.del_flag = '0' |
| | | <if test="roleId != null and roleId != 0"> |
| | | AND r.role_id = #{roleId} |
| | |
| | | ${params.dataScope} |
| | | order by r.role_sort |
| | | </select> |
| | | |
| | | <!-- |
| | | 新增角色时的「显示顺序」取现有最大值 + 1,让新角色落在列表末尾。 |
| | | role_sort 是 NOT NULL 且无默认值的列,而角色表单已经不收这个字段, |
| | | 所以这里没有值可给时必须能算出一个:ifnull 兜住「一条角色都没有」的空表。 |
| | | --> |
| | | <select id="selectMaxRoleSort" resultType="Integer"> |
| | | select ifnull(max(role_sort), 0) from sys_role where del_flag = '0' |
| | | </select> |
| | | |
| | | <select id="selectRolePermissionByUserId" parameterType="Long" resultMap="SysRoleResult"> |
| | | <include refid="selectRoleVo"/> |