4479f0ee69772e7f3a6398c85c7db180997cbbcf.svn-base 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="org.jeecg.modules.system.mapper.SysPermissionMapper">
  4. <resultMap id="TreeModel" type="org.jeecg.modules.system.model.TreeModel" >
  5. <result column="id" property="key" jdbcType="VARCHAR"/>
  6. <result column="name" property="title" jdbcType="VARCHAR"/>
  7. <result column="icon" property="icon" jdbcType="VARCHAR"/>
  8. <result column="parent_id" property="parentId" jdbcType="VARCHAR"/>
  9. <result column="leaf_flag" property="isLeaf" jdbcType="INTEGER"/>
  10. </resultMap>
  11. <!-- 通过<resultMap>映射实体类属性名和表的字段名对应关系 -->
  12. <resultMap id="SysPermission" type="org.jeecg.modules.system.entity.SysPermission">
  13. <!-- result属性映射非匹配字段 -->
  14. <result column="is_route" property="route"/>
  15. <result column="keep_alive" property="keepAlive"/>
  16. <result column="is_leaf" property="leaf"/>
  17. </resultMap>
  18. <select id="queryListByParentId" parameterType="Object" resultMap="TreeModel">
  19. SELECT
  20. id
  21. ,parent_id
  22. ,name
  23. ,icon
  24. ,leaf_flag
  25. FROM sys_permission
  26. WHERE 1=1
  27. <choose>
  28. <when test="parentId != null and parentId != ''">
  29. AND parent_id = #{parentId,jdbcType=VARCHAR}
  30. </when>
  31. <otherwise>
  32. AND parent_id is null
  33. </otherwise>
  34. </choose>
  35. </select>
  36. <!-- 获取登录用户拥有的权限 -->
  37. <select id="queryByUser" parameterType="Object" resultMap="SysPermission">
  38. SELECT * FROM (
  39. SELECT p.*
  40. FROM sys_permission p
  41. WHERE (exists(
  42. select a.id from sys_role_permission a
  43. join sys_role b on a.role_id = b.id
  44. join sys_user_role c on c.role_id = b.id
  45. join sys_user d on d.id = c.user_id
  46. where p.id = a.permission_id AND d.username = #{username,jdbcType=VARCHAR}
  47. )
  48. or (p.url like '%:code' and p.url like '/online%' and p.hidden = 1)
  49. or p.url = '/online')
  50. and p.del_flag = 0
  51. <!--update begin Author:lvdandan Date:20200213 for:加入部门权限 -->
  52. UNION
  53. SELECT p.*
  54. FROM sys_permission p
  55. WHERE exists(
  56. select a.id from sys_depart_role_permission a
  57. join sys_depart_role b on a.role_id = b.id
  58. join sys_depart_role_user c on c.drole_id = b.id
  59. join sys_user d on d.id = c.user_id
  60. where p.id = a.permission_id AND d.username = #{username,jdbcType=VARCHAR}
  61. )
  62. and p.del_flag = 0
  63. <!--update end Author:lvdandan Date:20200213 for:加入部门权限 -->
  64. ) h order by h.sort_no ASC
  65. </select>
  66. <!-- 根据用户账号查询菜单权限 -->
  67. <select id="queryCountByUsername" parameterType="Object" resultType="int">
  68. select sum(cnt) from (
  69. select count(*) as cnt
  70. from sys_role_permission a
  71. join sys_permission b on a.permission_id = b.id
  72. join sys_role c on a.role_id = c.id
  73. join sys_user_role d on d.role_id = c.id
  74. join sys_user e on d.user_id = e.id
  75. where e.username = #{username}
  76. <if test="permission.id !=null and permission.id != ''">
  77. and b.id = #{permission.id}
  78. </if>
  79. <if test="permission.url !=null and permission.url != ''">
  80. and b.url = #{permission.url}
  81. </if>
  82. union all
  83. select count(*) as cnt
  84. from sys_permission z
  85. join sys_depart_role_permission y on z.id = y.permission_id
  86. join sys_depart_role x on y.role_id = x.id
  87. join sys_depart_role_user w on w.drole_id = x.id
  88. join sys_user v on w.user_id = v.id
  89. where v.username = #{username}
  90. <if test="permission.id !=null and permission.id != ''">
  91. and z.id = #{permission.id}
  92. </if>
  93. <if test="permission.url !=null and permission.url != ''">
  94. and z.url = #{permission.url}
  95. </if>
  96. ) temp
  97. </select>
  98. </mapper>