SysUserDao.xml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  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="com.backendsys.modules.system.dao.SysUserDao">
  4. <sql id="includeUser">
  5. u.id id,
  6. COALESCE(u.username, '') username,
  7. COALESCE(u.phone, '') phone,
  8. COALESCE(u.phone_area_code, '') phone_area_code,
  9. uf.user_id user_id,
  10. COALESCE(uf.nickname, '') nickname,
  11. COALESCE(uf.email, '') email,
  12. COALESCE(uf.gender, '') gender,
  13. COALESCE(uf.avatar, '') AS avatar,
  14. COALESCE(uf.last_login_ip, '') last_login_ip,
  15. COALESCE(uf.last_login_uuid, '') last_login_uuid,
  16. COALESCE(uf.last_login_time, '') last_login_time,
  17. uf.is_super is_super,
  18. uf.point_balance point_balance,
  19. uf.invite_code invite_code,
  20. uf.status status,
  21. uf.audit_status audit_status,
  22. uf.audit_note audit_note,
  23. uf.create_time create_time,
  24. uf.update_time update_time,
  25. uf.del_flag del_flag
  26. </sql>
  27. <resultMap id="resultMapUserList" type="java.util.LinkedHashMap">
  28. <id property="id" column="id" jdbcType="BIGINT" />
  29. <result property="user_id" column="user_id" />
  30. <result property="username" column="username" />
  31. <result property="phone" column="phone" />
  32. <result property="phone_area_code" column="phone_area_code" />
  33. <result property="nickname" column="nickname" />
  34. <result property="email" column="email" />
  35. <result property="gender" column="gender" javaType="java.lang.Integer"/>
  36. <result property="avatar" column="avatar" />
  37. <result property="last_login_ip" column="last_login_ip" />
  38. <result property="last_login_uuid" column="last_login_uuid" />
  39. <result property="last_login_time" column="last_login_time" />
  40. <result property="is_super" column="is_super" javaType="java.lang.Integer"/>
  41. <result property="point_balance" column="point_balance" javaType="java.lang.Float"/>
  42. <result property="invite_code" column="invite_code" />
  43. <result property="status" column="status" javaType="java.lang.Integer"/>
  44. <result property="audit_status" column="audit_status" javaType="java.lang.Integer"/>
  45. <result property="audit_note" column="audit_note" />
  46. <result property="create_time" column="create_time" />
  47. <result property="update_time" column="update_time" />
  48. <result property="del_flag" column="del_flag" javaType="java.lang.Integer"/>
  49. <collection property="role_ids" javaType="java.util.List"
  50. ofType="java.lang.Long" column="role_id">
  51. <id property="role_id" column="role_id" />
  52. </collection>
  53. </resultMap>
  54. <resultMap id="resultMapUserDetail" type="java.util.LinkedHashMap">
  55. <id property="id" column="id" jdbcType="BIGINT" />
  56. <result property="user_id" column="user_id" />
  57. <result property="username" column="username" />
  58. <result property="phone" column="phone" />
  59. <result property="phone_area_code" column="phone_area_code" />
  60. <result property="nickname" column="nickname" />
  61. <result property="email" column="email" />
  62. <result property="gender" column="gender" javaType="java.lang.Integer"/>
  63. <result property="avatar" column="avatar" />
  64. <result property="last_login_ip" column="last_login_ip" />
  65. <result property="last_login_uuid" column="last_login_uuid" />
  66. <result property="last_login_time" column="last_login_time" />
  67. <result property="is_super" column="is_super" javaType="java.lang.Integer"/>
  68. <result property="point_balance" column="point_balance" javaType="java.lang.Float"/>
  69. <result property="invite_code" column="invite_code" />
  70. <result property="status" column="status" javaType="java.lang.Integer"/>
  71. <result property="audit_status" column="audit_status" javaType="java.lang.Integer"/>
  72. <result property="audit_note" column="audit_note" />
  73. <result property="create_time" column="create_time" />
  74. <result property="update_time" column="update_time" />
  75. <result property="del_flag" column="del_flag" javaType="java.lang.Integer"/>
  76. <collection property="roles" javaType="java.util.List" ofType="java.util.LinkedHashMap"
  77. select="queryRoleById" column="id">
  78. <id property="id" column="id" />
  79. <result property="role_name" column="role_name" />
  80. <result property="sort" column="sort" />
  81. </collection>
  82. </resultMap>
  83. <!-- [多对多,使用子查询] -->
  84. <!-- [嵌套查询] 用户角色 / 角色模块 -->
  85. <select id="queryRoleById" resultType="java.util.LinkedHashMap">
  86. SELECT ur.id, ur.role_name,
  87. GROUP_CONCAT(m.id) AS module_ids
  88. FROM sys_user_role_relation urr
  89. LEFT JOIN sys_user_role ur ON urr.role_id = ur.id
  90. LEFT JOIN sys_user_role_module_relation mr ON urr.role_id = mr.role_id
  91. LEFT JOIN sys_user_role_module m ON mr.module_id = m.id
  92. WHERE urr.user_id = #{userId}
  93. GROUP BY ur.id
  94. ORDER BY ur.sort ASC
  95. </select>
  96. <!--, um.module_code-->
  97. <!-- <select id="queryModulesByRoleId" resultType="java.util.LinkedHashMap">-->
  98. <!-- SELECT id, um.module_name-->
  99. <!-- FROM sys_user_role_module um-->
  100. <!-- WHERE um.id IN (-->
  101. <!-- SELECT module_id FROM sys_user_role_module_relation-->
  102. <!-- WHERE role_id IN-->
  103. <!-- <foreach collection="roles" item="role" open="(" separator="," close=")">-->
  104. <!-- #{role.id}-->
  105. <!-- </foreach>-->
  106. <!-- )-->
  107. <!-- </select>-->
  108. <!--WHERE role_id = #{roleId}-->
  109. <!-- 根据 ID 或 账号 查询是否存在 (用于校验密码是否正确) -->
  110. <select id="queryUserByIdOrName" resultType="java.util.LinkedHashMap">
  111. SELECT id, username, phone, password FROM sys_user
  112. <where>
  113. <if test="username != null and username != ''">
  114. AND username = #{username}
  115. </if>
  116. <if test="phone != null and phone != ''">
  117. AND phone = #{phone}
  118. </if>
  119. <if test="phone_area_code != null and phone_area_code != ''">
  120. AND phone_area_code = #{phone_area_code}
  121. </if>
  122. <if test="id != null and id != ''">
  123. AND id = #{id}
  124. </if>
  125. </where>
  126. </select>
  127. <!-- 逻辑删除时,查询加这一段判断
  128. AND id IN (
  129. SELECT user_id FROM sys_user_info WHERE del_flag = -1
  130. )
  131. -->
  132. <!-- 查询 用户列表 (分页) (嵌套查询) -->
  133. <select id="queryUserList" resultMap="resultMapUserList">
  134. SELECT
  135. <include refid="includeUser" />,
  136. urr.role_id role_id
  137. FROM sys_user u
  138. LEFT JOIN sys_user_info uf ON u.id = uf.user_id
  139. LEFT JOIN sys_user_role_relation urr ON uf.user_id = urr.user_id
  140. <where>
  141. AND uf.del_flag != 1
  142. <if test="username != null and username != ''">
  143. AND u.username LIKE CONCAT('%', #{username}, '%')
  144. </if>
  145. <if test="phone != null and phone != ''">
  146. AND u.phone LIKE CONCAT('%', #{phone}, '%')
  147. </if>
  148. <if test="phone_area_code != null and phone_area_code != ''">
  149. AND u.phone_area_code = #{phone_area_code}
  150. </if>
  151. <if test="nickname != null and nickname != ''">
  152. AND uf.nickname LIKE CONCAT('%', #{nickname}, '%')
  153. </if>
  154. <if test="email != null and email != ''">
  155. AND uf.email LIKE CONCAT('%', #{email}, '%')
  156. </if>
  157. <if test="status != null and status != ''">
  158. AND uf.status = #{status}
  159. </if>
  160. <if test="audit_status != null and audit_status != ''">
  161. AND uf.audit_status = #{audit_status}
  162. </if>
  163. <if test="role_id != null and role_id != ''">
  164. AND urr.role_id IN
  165. <foreach collection="role_id" item="role" open="(" separator="," close=")">
  166. #{role}
  167. </foreach>
  168. </if>
  169. <if test="is_super != null and is_super != ''">
  170. AND uf.is_super = #{is_super}
  171. </if>
  172. AND uf.id != 1
  173. </where>
  174. ORDER BY uf.create_time DESC
  175. </select>
  176. <!-- 查询 用户详情 -->
  177. <select id="queryUserDetail" resultMap="resultMapUserDetail">
  178. SELECT
  179. <include refid="includeUser" />
  180. FROM sys_user u
  181. LEFT JOIN sys_user_info uf ON u.id = uf.user_id
  182. WHERE u.id = #{user_id}
  183. AND uf.del_flag = -1
  184. </select>
  185. <select id="queryUserUUIDSByIds" resultType="java.util.LinkedHashMap">
  186. SELECT last_login_uuid
  187. FROM sys_user_info
  188. WHERE user_id IN
  189. <foreach item="id" collection="ids" open="(" separator="," close=")">
  190. #{id}
  191. </foreach>
  192. </select>
  193. <!-- 查询当前在线用户的信息 -->
  194. <select id="queryUserWithLogined" resultType="java.util.LinkedHashMap">
  195. SELECT
  196. u.id id,
  197. COALESCE(u.username, '') username,
  198. COALESCE(u.phone, '') phone,
  199. COALESCE(u.phone_area_code, '') phone_area_code,
  200. COALESCE(uf.nickname, '') nickname,
  201. COALESCE(uf.email, '') email,
  202. COALESCE(uf.avatar, '') avatar,
  203. uf.is_super is_super,
  204. uf.status status,
  205. uf.audit_status audit_status,
  206. uf.audit_note audit_note
  207. FROM sys_user u
  208. LEFT JOIN sys_user_info uf ON u.id = uf.user_id
  209. WHERE uf.last_login_uuid IN
  210. <foreach collection="last_login_uuids" item="last_login_uuid" open="(" separator="," close=")">
  211. #{last_login_uuid}
  212. </foreach>
  213. </select>
  214. <!-- 创建用户 -->
  215. <insert id="insertUser" parameterType="com.backendsys.entity.System.SysUserDTO" useGeneratedKeys="true" keyProperty="id">
  216. INSERT INTO sys_user (password
  217. <if test="username != null and username != ''">, username</if>
  218. <if test="phone != null and phone != ''">, phone</if>
  219. <if test="phone_area_code != null and phone_area_code != ''">, phone_area_code</if>
  220. )
  221. VALUES (#{password}
  222. <if test="username != null and username != ''">, #{username}</if>
  223. <if test="phone != null and phone != ''">, #{phone}</if>
  224. <if test="phone_area_code != null and phone_area_code != ''">, #{phone_area_code}</if>
  225. );
  226. SET @last_user_id = LAST_INSERT_ID();
  227. INSERT INTO sys_user_info (user_id
  228. <if test="nickname != null and nickname != ''">, nickname</if>
  229. <if test="email != null and email != ''">, email</if>
  230. <if test="gender != null and gender != ''">, gender</if>
  231. <if test="avatar != null and avatar != ''">, avatar</if>
  232. <if test="status != null and status != ''">, status</if>
  233. <if test="invite_code != null and invite_code != ''">, invite_code</if>
  234. ) VALUES (@last_user_id
  235. <if test="nickname != null and nickname != ''">, #{nickname}</if>
  236. <if test="email != null and email != ''">, #{email}</if>
  237. <if test="gender != null and gender != ''">, #{gender}</if>
  238. <if test="avatar != null and avatar != ''">, #{avatar}</if>
  239. <if test="status != null and status != ''">, #{status}</if>
  240. <if test="invite_code != null and invite_code != ''">, #{invite_code}</if>
  241. );
  242. <if test="role_id != null and role_id.size() > 0">
  243. INSERT INTO sys_user_role_relation (user_id, role_id)
  244. VALUES
  245. <foreach collection="role_id" item="id" separator=",">
  246. (@last_user_id, #{id})
  247. </foreach>
  248. </if>
  249. </insert>
  250. <!-- <if test="roles != null and roles.size() > 0">-->
  251. <!-- INSERT INTO sys_user_role_relation (user_id, role_id)-->
  252. <!-- VALUES-->
  253. <!-- <foreach collection="roles" item="role" separator=",">-->
  254. <!-- (@last_user_id, #{role.id})-->
  255. <!-- </foreach>-->
  256. <!-- </if>-->
  257. <!-- 编辑 用户信息 -->
  258. <update id="updateUserInfo" parameterType="com.backendsys.entity.System.SysUserDTO" useGeneratedKeys="true" keyProperty="id">
  259. UPDATE sys_user_info SET
  260. <trim suffixOverrides="," suffix=" ">
  261. <if test="nickname != null and nickname != ''">nickname = #{nickname},</if>
  262. <if test="email != null and email != ''">email = #{email},</if>
  263. <if test="gender != null and gender != ''">gender = #{gender},</if>
  264. <if test="avatar != null and avatar != ''">avatar = #{avatar},</if>
  265. <if test="point_balance != null">point_balance = #{point_balance},</if>
  266. <if test="invite_code != null">invite_code = #{invite_code},</if>
  267. <if test="status != null and status != ''">status = #{status},</if>
  268. <if test="last_login_ip != null">last_login_ip = #{last_login_ip},</if>
  269. <if test="last_login_uuid != null">last_login_uuid = #{last_login_uuid},</if>
  270. <if test="last_login_time != null">last_login_time = #{last_login_time},</if>
  271. </trim>
  272. WHERE user_id = #{user_id};
  273. <!--判断是否有新的数据需要插入-->
  274. <if test="role_id != null and role_id.size() > 0">
  275. <!--删除符合条件的数据-->
  276. DELETE FROM sys_user_role_relation WHERE user_id = #{user_id};
  277. <!--插入-->
  278. INSERT INTO sys_user_role_relation (user_id, role_id)
  279. VALUES
  280. <foreach collection="role_id" item="id" separator=",">
  281. (#{user_id}, #{id})
  282. </foreach>
  283. </if>
  284. </update>
  285. <!--删掉全部关联,再重新关联-->
  286. <!-- 审核用户 -->
  287. <update id="auditUser" parameterType="com.backendsys.entity.System.SysUserDTO">
  288. UPDATE sys_user_info SET
  289. <trim suffixOverrides="," suffix=" ">
  290. <if test="audit_status != null and audit_status != ''">audit_status = #{audit_status},</if>
  291. <if test="audit_note != null and audit_note != ''">audit_note = #{audit_note},</if>
  292. </trim>
  293. WHERE user_id = #{user_id};
  294. </update>
  295. <!-- 查询 用户密码 -->
  296. <select id="queryUserPassword" parameterType="com.backendsys.entity.System.SysUserDTO">
  297. SELECT password FROM sys_user WHERE id = #{user_id}
  298. </select>
  299. <!-- 编辑 用户密码 -->
  300. <update id="updateUserPassword" parameterType="com.backendsys.entity.System.SysUserDTO">
  301. UPDATE sys_user SET password = #{password} WHERE id = #{user_id}
  302. </update>
  303. <!-- 编辑 用户积分 -->
  304. <update id="updateUserPoint" parameterType="com.backendsys.entity.System.SysUserPointsDTO">
  305. UPDATE sys_user_info SET point_balance = #{point_balance} WHERE user_id = #{target_user_id}
  306. </update>
  307. <!-- 查询 用户积分 -->
  308. <select id="queryUserPoint" resultType="java.util.LinkedHashMap">
  309. SELECT point_balance FROM sys_user_info WHERE user_id = #{target_user_id}
  310. </select>
  311. <!-- 创建 用户积分操作记录 -->
  312. <insert id="insertUserPointHistory" parameterType="com.backendsys.entity.System.SysUserPointsDTO"
  313. useGeneratedKeys="true" keyProperty="target_user_id">
  314. INSERT INTO sys_user_points_history (
  315. target_user_id, point_adjustment, point_balance, activity_type, activity_type_description, operator_type
  316. <if test="activity_detail != null and activity_detail != ''">, activity_detail</if>
  317. <if test="operator_user_id != null and operator_user_id != ''">, operator_user_id</if>
  318. ) VALUES (
  319. #{target_user_id}, #{point_adjustment}, #{point_balance}, #{activity_type}, #{activity_type_description}, #{operator_type}
  320. <if test="activity_detail != null and activity_detail != ''">, #{activity_detail}</if>
  321. <if test="operator_user_id != null and operator_user_id != ''">, #{operator_user_id}</if>
  322. )
  323. </insert>
  324. </mapper>