| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.fs.app.mapper.FsAppRoleMapper">
-
- <resultMap type="FsAppRole" id="FsAppRoleResult">
- <result property="id" column="id" />
- <result property="roleName" column="role_name" />
- <result property="registerRewardType" column="register_reward_type" />
- <result property="registerRedPacket" column="register_red_packet" />
- <result property="registerProductId" column="register_product_id" />
- <result property="registerProductType" column="register_product_type" />
- <result property="registerIntegral" column="register_integral" />
- <result property="courseDay" column="course_day" />
- <result property="courseRewardType" column="course_reward_type" />
- <result property="courseRedPacket" column="course_red_packet" />
- <result property="courseIntegral" column="course_integral" />
- <result property="courseProductType" column="course_product_type" />
- <result property="courseProductId" column="course_product_id" />
- <result property="courseNeedDay" column="course_need_day" />
- <result property="courseRewardRuleType" column="course_reward_rule_type" />
- <result property="courseRewardRule" column="course_reward_rule" />
- <result property="roleLevel" column="role_level" />
- <result property="roleTags" column="role_tags" />
- <result property="rolePackageProductIds" column="role_package_product_ids" />
- <result property="roleStoreProductIds" column="role_store_product_ids" />
- <result property="createTime" column="create_time" />
- <result property="updateTime" column="update_time" />
- </resultMap>
- <sql id="selectFsAppRoleVo">
- 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
- </sql>
- <select id="selectFsAppRoleList" parameterType="FsAppRole" resultMap="FsAppRoleResult">
- <include refid="selectFsAppRoleVo"/>
- <where>
- <if test="roleName != null and roleName != ''"> and role_name like concat('%', #{roleName}, '%')</if>
- <if test="registerRewardType != null and registerRewardType != ''"> and register_reward_type = #{registerRewardType}</if>
- <if test="registerRedPacket != null "> and register_red_packet = #{registerRedPacket}</if>
- <if test="registerProductId != null "> and register_product_id = #{registerProductId}</if>
- <if test="registerProductType != null "> and register_product_type = #{registerProductType}</if>
- <if test="registerIntegral != null "> and register_integral = #{registerIntegral}</if>
- <if test="courseDay != null "> and course_day = #{courseDay}</if>
- <if test="courseRewardType != null "> and course_reward_type = #{courseRewardType}</if>
- <if test="courseRedPacket != null "> and course_red_packet = #{courseRedPacket}</if>
- <if test="courseIntegral != null "> and course_integral = #{courseIntegral}</if>
- <if test="courseProductType != null "> and course_product_type = #{courseProductType}</if>
- <if test="courseProductId != null "> and course_product_id = #{courseProductId}</if>
- <if test="courseNeedDay != null "> and course_need_day = #{courseNeedDay}</if>
- <if test="courseRewardRuleType != null "> and course_reward_rule_type = #{courseRewardRuleType}</if>
- <if test="courseRewardRule != null and courseRewardRule != ''"> and course_reward_rule = #{courseRewardRule}</if>
- <if test="roleLevel != null "> and role_level = #{roleLevel}</if>
- <if test="roleTags != null and roleTags != ''"> and role_tags = #{roleTags}</if>
- <if test="rolePackageProductIds != null and rolePackageProductIds != ''"> and role_package_product_ids = #{rolePackageProductIds}</if>
- <if test="roleStoreProductIds != null and roleStoreProductIds != ''"> and role_store_product_ids = #{roleStoreProductIds}</if>
- </where>
- </select>
-
- <select id="selectFsAppRoleById" parameterType="Long" resultMap="FsAppRoleResult">
- <include refid="selectFsAppRoleVo"/>
- where id = #{id}
- </select>
- <select id="selectFsAppRoleAndRewardsById" resultType="com.fs.app.domain.FsAppRole">
- SELECT far.id, far.role_name, far.register_reward_type, far.register_red_packet,
- far.register_product_id, far.register_product_type, far.register_integral,
- far.course_day, far.course_reward_type, far.course_red_packet,
- far.course_integral, far.course_product_type, far.course_product_id,
- far.course_need_day, far.course_reward_rule_type, far.course_reward_rule,
- far.role_level, far.role_tags, far.role_package_product_ids,
- far.role_store_product_ids, far.create_time, far.update_time,
- -- 根据register_product_type选择不同的商品名称和图片
- CASE
- WHEN far.register_product_type = 1 THEN fp.package_name
- WHEN far.register_product_type = 2 THEN fsps.product_name
- ELSE NULL
- END AS goodsName,
- CASE
- WHEN far.register_product_type = 1 THEN fp.img_url
- WHEN far.register_product_type = 2 THEN fsps.image
- ELSE NULL
- END AS goodsUrl
- FROM fs_app_role far
- LEFT JOIN fs_package fp ON far.register_product_type = 1
- AND fp.package_id = far.register_product_id
- LEFT JOIN fs_store_product_scrm fsps ON far.register_product_type = 2
- AND fsps.product_id = far.register_product_id
- WHERE far.id = #{id}
- </select>
- <select id="selectHighestLevelAppRoleByUserId" parameterType="map" resultMap="FsAppRoleResult">
- SELECT
- r.id,
- r.role_name,
- r.role_type,
- r.register_reward_type,
- r.register_red_packet,
- r.register_product_id,
- r.register_product_type,
- r.register_integral,
- r.course_day,
- r.course_reward_type,
- r.course_red_packet,
- r.course_integral,
- r.course_product_type,
- r.course_product_id,
- r.course_need_day,
- r.course_reward_rule_type,
- r.course_reward_rule,
- r.role_level,
- r.role_tags,
- r.role_package_product_ids,
- r.role_store_product_ids,
- r.create_time,
- r.update_time
- FROM
- fs_user u
- JOIN
- JSON_TABLE(
- CASE
- -- 如果 app_roles 为空或为 NULL,则返回一个空数组的 JSON,避免错误
- WHEN u.app_roles IS NULL OR TRIM(u.app_roles) = '' THEN '[]'
- -- 否则,将其安全地转换为标准的 JSON 数组格式 ["id1", "id2", ...]
- ELSE CONCAT('["', REPLACE(u.app_roles, ',', '","'), '"]')
- END,
- '$[*]' COLUMNS ( role_id BIGINT PATH '$' )
- ) AS jt ON jt.role_id IS NOT NULL
- JOIN
- fs_app_role r ON r.id = jt.role_id
- WHERE
- u.user_id = #{userId}
- AND r.role_level = (
- -- 子查询:在用户拥有的所有角色中,查找最小的(即最高级的)role_level
- SELECT
- CASE
- WHEN #{levelSortAsc} = 'true' THEN MIN(r2.role_level)
- ELSE MAX(r2.role_level)
- END
- FROM
- fs_user u2
- JOIN
- JSON_TABLE(
- CASE
- -- 在子查询中也需要进行同样的处理
- WHEN u2.app_roles IS NULL OR TRIM(u2.app_roles) = '' THEN '[]'
- ELSE CONCAT('["', REPLACE(u2.app_roles, ',', '","'), '"]')
- END,
- '$[*]' COLUMNS ( role_id BIGINT PATH '$' )
- ) AS jt2 ON jt2.role_id IS NOT NULL
- JOIN
- fs_app_role r2 ON r2.id = jt2.role_id
- WHERE
- u2.user_id = u.user_id
- )
- </select>
- <insert id="insertFsAppRole" parameterType="FsAppRole" useGeneratedKeys="true" keyProperty="id">
- insert into fs_app_role
- <trim prefix="(" suffix=")" suffixOverrides=",">
- <if test="roleName != null">role_name,</if>
- <if test="registerRewardType != null">register_reward_type,</if>
- <if test="registerRedPacket != null">register_red_packet,</if>
- <if test="registerProductId != null">register_product_id,</if>
- <if test="registerProductType != null">register_product_type,</if>
- <if test="registerIntegral != null">register_integral,</if>
- <if test="courseDay != null">course_day,</if>
- <if test="courseRewardType != null">course_reward_type,</if>
- <if test="courseRedPacket != null">course_red_packet,</if>
- <if test="courseIntegral != null">course_integral,</if>
- <if test="courseProductType != null">course_product_type,</if>
- <if test="courseProductId != null">course_product_id,</if>
- <if test="courseNeedDay != null">course_need_day,</if>
- <if test="courseRewardRuleType != null">course_reward_rule_type,</if>
- <if test="courseRewardRule != null">course_reward_rule,</if>
- <if test="roleLevel != null">role_level,</if>
- <if test="roleTags != null">role_tags,</if>
- <if test="rolePackageProductIds != null">role_package_product_ids,</if>
- <if test="roleStoreProductIds != null">role_store_product_ids,</if>
- <if test="createTime != null">create_time,</if>
- <if test="updateTime != null">update_time,</if>
- </trim>
- <trim prefix="values (" suffix=")" suffixOverrides=",">
- <if test="roleName != null">#{roleName},</if>
- <if test="registerRewardType != null">#{registerRewardType},</if>
- <if test="registerRedPacket != null">#{registerRedPacket},</if>
- <if test="registerProductId != null">#{registerProductId},</if>
- <if test="registerProductType != null">#{registerProductType},</if>
- <if test="registerIntegral != null">#{registerIntegral},</if>
- <if test="courseDay != null">#{courseDay},</if>
- <if test="courseRewardType != null">#{courseRewardType},</if>
- <if test="courseRedPacket != null">#{courseRedPacket},</if>
- <if test="courseIntegral != null">#{courseIntegral},</if>
- <if test="courseProductType != null">#{courseProductType},</if>
- <if test="courseProductId != null">#{courseProductId},</if>
- <if test="courseNeedDay != null">#{courseNeedDay},</if>
- <if test="courseRewardRuleType != null">#{courseRewardRuleType},</if>
- <if test="courseRewardRule != null">#{courseRewardRule},</if>
- <if test="roleLevel != null">#{roleLevel},</if>
- <if test="roleTags != null">#{roleTags},</if>
- <if test="rolePackageProductIds != null">#{rolePackageProductIds},</if>
- <if test="roleStoreProductIds != null">#{roleStoreProductIds},</if>
- <if test="createTime != null">#{createTime},</if>
- <if test="updateTime != null">#{updateTime},</if>
- </trim>
- </insert>
- <update id="updateFsAppRole" parameterType="FsAppRole">
- update fs_app_role
- <trim prefix="SET" suffixOverrides=",">
- <if test="roleName != null">role_name = #{roleName},</if>
- <if test="registerRewardType != null">register_reward_type = #{registerRewardType},</if>
- <if test="registerRedPacket != null">register_red_packet = #{registerRedPacket},</if>
- <if test="registerProductId != null">register_product_id = #{registerProductId},</if>
- <if test="registerProductType != null">register_product_type = #{registerProductType},</if>
- <if test="registerIntegral != null">register_integral = #{registerIntegral},</if>
- <if test="courseDay != null">course_day = #{courseDay},</if>
- <if test="courseRewardType != null">course_reward_type = #{courseRewardType},</if>
- <if test="courseRedPacket != null">course_red_packet = #{courseRedPacket},</if>
- <if test="courseIntegral != null">course_integral = #{courseIntegral},</if>
- <if test="courseProductType != null">course_product_type = #{courseProductType},</if>
- <if test="courseProductId != null">course_product_id = #{courseProductId},</if>
- <if test="courseNeedDay != null">course_need_day = #{courseNeedDay},</if>
- <if test="courseRewardRuleType != null">course_reward_rule_type = #{courseRewardRuleType},</if>
- <if test="courseRewardRule != null">course_reward_rule = #{courseRewardRule},</if>
- <if test="roleLevel != null">role_level = #{roleLevel},</if>
- <if test="roleTags != null">role_tags = #{roleTags},</if>
- <if test="rolePackageProductIds != null">role_package_product_ids = #{rolePackageProductIds},</if>
- <if test="roleStoreProductIds != null">role_store_product_ids = #{roleStoreProductIds},</if>
- <if test="createTime != null">create_time = #{createTime},</if>
- <if test="updateTime != null">update_time = #{updateTime},</if>
- </trim>
- where id = #{id}
- </update>
- <delete id="deleteFsAppRoleById" parameterType="Long">
- delete from fs_app_role where id = #{id}
- </delete>
- <delete id="deleteFsAppRoleByIds" parameterType="String">
- delete from fs_app_role where id in
- <foreach item="id" collection="array" open="(" separator="," close=")">
- #{id}
- </foreach>
- </delete>
- </mapper>
|