FsAppRoleMapper.xml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.fs.app.mapper.FsAppRoleMapper">
  6. <resultMap type="FsAppRole" id="FsAppRoleResult">
  7. <result property="id" column="id" />
  8. <result property="roleName" column="role_name" />
  9. <result property="registerRewardType" column="register_reward_type" />
  10. <result property="registerRedPacket" column="register_red_packet" />
  11. <result property="registerProductId" column="register_product_id" />
  12. <result property="registerProductType" column="register_product_type" />
  13. <result property="registerIntegral" column="register_integral" />
  14. <result property="courseDay" column="course_day" />
  15. <result property="courseRewardType" column="course_reward_type" />
  16. <result property="courseRedPacket" column="course_red_packet" />
  17. <result property="courseIntegral" column="course_integral" />
  18. <result property="courseProductType" column="course_product_type" />
  19. <result property="courseProductId" column="course_product_id" />
  20. <result property="courseNeedDay" column="course_need_day" />
  21. <result property="courseRewardRuleType" column="course_reward_rule_type" />
  22. <result property="courseRewardRule" column="course_reward_rule" />
  23. <result property="roleLevel" column="role_level" />
  24. <result property="roleTags" column="role_tags" />
  25. <result property="rolePackageProductIds" column="role_package_product_ids" />
  26. <result property="roleStoreProductIds" column="role_store_product_ids" />
  27. <result property="createTime" column="create_time" />
  28. <result property="updateTime" column="update_time" />
  29. </resultMap>
  30. <sql id="selectFsAppRoleVo">
  31. select id, role_name, register_reward_type, register_red_packet, register_product_id, register_product_type, register_integral, course_day, course_reward_type, course_red_packet, course_integral, course_product_type, course_product_id, course_need_day, course_reward_rule_type, course_reward_rule, role_level, role_tags, role_package_product_ids, role_store_product_ids, create_time, update_time from fs_app_role
  32. </sql>
  33. <select id="selectFsAppRoleList" parameterType="FsAppRole" resultMap="FsAppRoleResult">
  34. <include refid="selectFsAppRoleVo"/>
  35. <where>
  36. <if test="roleName != null and roleName != ''"> and role_name like concat('%', #{roleName}, '%')</if>
  37. <if test="registerRewardType != null and registerRewardType != ''"> and register_reward_type = #{registerRewardType}</if>
  38. <if test="registerRedPacket != null "> and register_red_packet = #{registerRedPacket}</if>
  39. <if test="registerProductId != null "> and register_product_id = #{registerProductId}</if>
  40. <if test="registerProductType != null "> and register_product_type = #{registerProductType}</if>
  41. <if test="registerIntegral != null "> and register_integral = #{registerIntegral}</if>
  42. <if test="courseDay != null "> and course_day = #{courseDay}</if>
  43. <if test="courseRewardType != null "> and course_reward_type = #{courseRewardType}</if>
  44. <if test="courseRedPacket != null "> and course_red_packet = #{courseRedPacket}</if>
  45. <if test="courseIntegral != null "> and course_integral = #{courseIntegral}</if>
  46. <if test="courseProductType != null "> and course_product_type = #{courseProductType}</if>
  47. <if test="courseProductId != null "> and course_product_id = #{courseProductId}</if>
  48. <if test="courseNeedDay != null "> and course_need_day = #{courseNeedDay}</if>
  49. <if test="courseRewardRuleType != null "> and course_reward_rule_type = #{courseRewardRuleType}</if>
  50. <if test="courseRewardRule != null and courseRewardRule != ''"> and course_reward_rule = #{courseRewardRule}</if>
  51. <if test="roleLevel != null "> and role_level = #{roleLevel}</if>
  52. <if test="roleTags != null and roleTags != ''"> and role_tags = #{roleTags}</if>
  53. <if test="rolePackageProductIds != null and rolePackageProductIds != ''"> and role_package_product_ids = #{rolePackageProductIds}</if>
  54. <if test="roleStoreProductIds != null and roleStoreProductIds != ''"> and role_store_product_ids = #{roleStoreProductIds}</if>
  55. </where>
  56. </select>
  57. <select id="selectFsAppRoleById" parameterType="Long" resultMap="FsAppRoleResult">
  58. <include refid="selectFsAppRoleVo"/>
  59. where id = #{id}
  60. </select>
  61. <select id="selectFsAppRoleAndRewardsById" resultType="com.fs.app.domain.FsAppRole">
  62. SELECT far.id, far.role_name, far.register_reward_type, far.register_red_packet,
  63. far.register_product_id, far.register_product_type, far.register_integral,
  64. far.course_day, far.course_reward_type, far.course_red_packet,
  65. far.course_integral, far.course_product_type, far.course_product_id,
  66. far.course_need_day, far.course_reward_rule_type, far.course_reward_rule,
  67. far.role_level, far.role_tags, far.role_package_product_ids,
  68. far.role_store_product_ids, far.create_time, far.update_time,
  69. -- 根据register_product_type选择不同的商品名称和图片
  70. CASE
  71. WHEN far.register_product_type = 1 THEN fp.package_name
  72. WHEN far.register_product_type = 2 THEN fsps.product_name
  73. ELSE NULL
  74. END AS goodsName,
  75. CASE
  76. WHEN far.register_product_type = 1 THEN fp.img_url
  77. WHEN far.register_product_type = 2 THEN fsps.image
  78. ELSE NULL
  79. END AS goodsUrl
  80. FROM fs_app_role far
  81. LEFT JOIN fs_package fp ON far.register_product_type = 1
  82. AND fp.package_id = far.register_product_id
  83. LEFT JOIN fs_store_product_scrm fsps ON far.register_product_type = 2
  84. AND fsps.product_id = far.register_product_id
  85. WHERE far.id = #{id}
  86. </select>
  87. <select id="selectHighestLevelAppRoleByUserId" parameterType="map" resultMap="FsAppRoleResult">
  88. SELECT
  89. r.id,
  90. r.role_name,
  91. r.role_type,
  92. r.register_reward_type,
  93. r.register_red_packet,
  94. r.register_product_id,
  95. r.register_product_type,
  96. r.register_integral,
  97. r.course_day,
  98. r.course_reward_type,
  99. r.course_red_packet,
  100. r.course_integral,
  101. r.course_product_type,
  102. r.course_product_id,
  103. r.course_need_day,
  104. r.course_reward_rule_type,
  105. r.course_reward_rule,
  106. r.role_level,
  107. r.role_tags,
  108. r.role_package_product_ids,
  109. r.role_store_product_ids,
  110. r.create_time,
  111. r.update_time
  112. FROM
  113. fs_user u
  114. JOIN
  115. JSON_TABLE(
  116. CASE
  117. -- 如果 app_roles 为空或为 NULL,则返回一个空数组的 JSON,避免错误
  118. WHEN u.app_roles IS NULL OR TRIM(u.app_roles) = '' THEN '[]'
  119. -- 否则,将其安全地转换为标准的 JSON 数组格式 ["id1", "id2", ...]
  120. ELSE CONCAT('["', REPLACE(u.app_roles, ',', '","'), '"]')
  121. END,
  122. '$[*]' COLUMNS ( role_id BIGINT PATH '$' )
  123. ) AS jt ON jt.role_id IS NOT NULL
  124. JOIN
  125. fs_app_role r ON r.id = jt.role_id
  126. WHERE
  127. u.user_id = #{userId}
  128. AND r.role_level = (
  129. -- 子查询:在用户拥有的所有角色中,查找最小的(即最高级的)role_level
  130. SELECT
  131. CASE
  132. WHEN #{levelSortAsc} = 'true' THEN MIN(r2.role_level)
  133. ELSE MAX(r2.role_level)
  134. END
  135. FROM
  136. fs_user u2
  137. JOIN
  138. JSON_TABLE(
  139. CASE
  140. -- 在子查询中也需要进行同样的处理
  141. WHEN u2.app_roles IS NULL OR TRIM(u2.app_roles) = '' THEN '[]'
  142. ELSE CONCAT('["', REPLACE(u2.app_roles, ',', '","'), '"]')
  143. END,
  144. '$[*]' COLUMNS ( role_id BIGINT PATH '$' )
  145. ) AS jt2 ON jt2.role_id IS NOT NULL
  146. JOIN
  147. fs_app_role r2 ON r2.id = jt2.role_id
  148. WHERE
  149. u2.user_id = u.user_id
  150. )
  151. </select>
  152. <insert id="insertFsAppRole" parameterType="FsAppRole" useGeneratedKeys="true" keyProperty="id">
  153. insert into fs_app_role
  154. <trim prefix="(" suffix=")" suffixOverrides=",">
  155. <if test="roleName != null">role_name,</if>
  156. <if test="registerRewardType != null">register_reward_type,</if>
  157. <if test="registerRedPacket != null">register_red_packet,</if>
  158. <if test="registerProductId != null">register_product_id,</if>
  159. <if test="registerProductType != null">register_product_type,</if>
  160. <if test="registerIntegral != null">register_integral,</if>
  161. <if test="courseDay != null">course_day,</if>
  162. <if test="courseRewardType != null">course_reward_type,</if>
  163. <if test="courseRedPacket != null">course_red_packet,</if>
  164. <if test="courseIntegral != null">course_integral,</if>
  165. <if test="courseProductType != null">course_product_type,</if>
  166. <if test="courseProductId != null">course_product_id,</if>
  167. <if test="courseNeedDay != null">course_need_day,</if>
  168. <if test="courseRewardRuleType != null">course_reward_rule_type,</if>
  169. <if test="courseRewardRule != null">course_reward_rule,</if>
  170. <if test="roleLevel != null">role_level,</if>
  171. <if test="roleTags != null">role_tags,</if>
  172. <if test="rolePackageProductIds != null">role_package_product_ids,</if>
  173. <if test="roleStoreProductIds != null">role_store_product_ids,</if>
  174. <if test="createTime != null">create_time,</if>
  175. <if test="updateTime != null">update_time,</if>
  176. </trim>
  177. <trim prefix="values (" suffix=")" suffixOverrides=",">
  178. <if test="roleName != null">#{roleName},</if>
  179. <if test="registerRewardType != null">#{registerRewardType},</if>
  180. <if test="registerRedPacket != null">#{registerRedPacket},</if>
  181. <if test="registerProductId != null">#{registerProductId},</if>
  182. <if test="registerProductType != null">#{registerProductType},</if>
  183. <if test="registerIntegral != null">#{registerIntegral},</if>
  184. <if test="courseDay != null">#{courseDay},</if>
  185. <if test="courseRewardType != null">#{courseRewardType},</if>
  186. <if test="courseRedPacket != null">#{courseRedPacket},</if>
  187. <if test="courseIntegral != null">#{courseIntegral},</if>
  188. <if test="courseProductType != null">#{courseProductType},</if>
  189. <if test="courseProductId != null">#{courseProductId},</if>
  190. <if test="courseNeedDay != null">#{courseNeedDay},</if>
  191. <if test="courseRewardRuleType != null">#{courseRewardRuleType},</if>
  192. <if test="courseRewardRule != null">#{courseRewardRule},</if>
  193. <if test="roleLevel != null">#{roleLevel},</if>
  194. <if test="roleTags != null">#{roleTags},</if>
  195. <if test="rolePackageProductIds != null">#{rolePackageProductIds},</if>
  196. <if test="roleStoreProductIds != null">#{roleStoreProductIds},</if>
  197. <if test="createTime != null">#{createTime},</if>
  198. <if test="updateTime != null">#{updateTime},</if>
  199. </trim>
  200. </insert>
  201. <update id="updateFsAppRole" parameterType="FsAppRole">
  202. update fs_app_role
  203. <trim prefix="SET" suffixOverrides=",">
  204. <if test="roleName != null">role_name = #{roleName},</if>
  205. <if test="registerRewardType != null">register_reward_type = #{registerRewardType},</if>
  206. <if test="registerRedPacket != null">register_red_packet = #{registerRedPacket},</if>
  207. <if test="registerProductId != null">register_product_id = #{registerProductId},</if>
  208. <if test="registerProductType != null">register_product_type = #{registerProductType},</if>
  209. <if test="registerIntegral != null">register_integral = #{registerIntegral},</if>
  210. <if test="courseDay != null">course_day = #{courseDay},</if>
  211. <if test="courseRewardType != null">course_reward_type = #{courseRewardType},</if>
  212. <if test="courseRedPacket != null">course_red_packet = #{courseRedPacket},</if>
  213. <if test="courseIntegral != null">course_integral = #{courseIntegral},</if>
  214. <if test="courseProductType != null">course_product_type = #{courseProductType},</if>
  215. <if test="courseProductId != null">course_product_id = #{courseProductId},</if>
  216. <if test="courseNeedDay != null">course_need_day = #{courseNeedDay},</if>
  217. <if test="courseRewardRuleType != null">course_reward_rule_type = #{courseRewardRuleType},</if>
  218. <if test="courseRewardRule != null">course_reward_rule = #{courseRewardRule},</if>
  219. <if test="roleLevel != null">role_level = #{roleLevel},</if>
  220. <if test="roleTags != null">role_tags = #{roleTags},</if>
  221. <if test="rolePackageProductIds != null">role_package_product_ids = #{rolePackageProductIds},</if>
  222. <if test="roleStoreProductIds != null">role_store_product_ids = #{roleStoreProductIds},</if>
  223. <if test="createTime != null">create_time = #{createTime},</if>
  224. <if test="updateTime != null">update_time = #{updateTime},</if>
  225. </trim>
  226. where id = #{id}
  227. </update>
  228. <delete id="deleteFsAppRoleById" parameterType="Long">
  229. delete from fs_app_role where id = #{id}
  230. </delete>
  231. <delete id="deleteFsAppRoleByIds" parameterType="String">
  232. delete from fs_app_role where id in
  233. <foreach item="id" collection="array" open="(" separator="," close=")">
  234. #{id}
  235. </foreach>
  236. </delete>
  237. </mapper>