veve-batch-material/target/root-0.0.1-SNAPSHOT/WEB-INF/classes/mapper/RoleMapper.xml
2025-07-21 11:43:14 +07:00

109 lines
3.6 KiB
XML

<?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.veve_plus.root.mapper.RoleMapper">
<resultMap id="roleResponseResultMap" type="com.veve_plus.root.dto.role.RoleResponse">
<id property="roleId" column="role_id" />
<result property="name" column="name" />
<result property="description" column="description" />
<result property="status" column="status" />
<result property="createdBy" column="created_by" />
<result property="updatedBy" column="updated_by" />
<result property="createdTime" column="created_time" />
<result property="updatedTime" column="updated_time" />
<collection property="menuIds" ofType="java.lang.Long">
<result column="menu_id" javaType="java.lang.Long" />
</collection>
</resultMap>
<select id="findAllRolesByCondition" parameterType="com.veve_plus.root.dto.role.RoleSearchRequest" resultMap="roleResponseResultMap">
SELECT
r.role_id,
r.name,
r.description,
r.status,
rm.menu_id,
r.created_by,
r.updated_by,
r.created_time,
r.updated_time
FROM
tb_role r
LEFT JOIN
tb_roles_menus rm ON r.role_id = rm.role_id
<where>
<if test="keyword != null and keyword != ''">
AND (
r.name LIKE concat('%',#{keyword},'%')
OR rm.name LIKE concat('%',#{keyword},'%')
)
</if>
<if test="status != null">
AND r.status = #{status}
</if>
</where>
</select>
<insert id="insert" parameterType="com.veve_plus.root.dto.role.Role" useGeneratedKeys="true" keyProperty="roleId">
INSERT INTO tb_role (
role_id,
name,
description,
status,
created_by,
updated_by,
created_time,
updated_time
) VALUES (
#{roleId},
#{name},
#{description},
#{status},
#{createdBy},
#{updatedBy},
#{createdTime},
#{updatedTime}
)
</insert>
<update id="update" parameterType="com.veve_plus.root.dto.role.Role">
UPDATE tb_role
SET
name = #{name},
description = #{description},
status = #{status},
updated_by = #{updatedBy},
updated_time = #{updatedTime}
WHERE
role_id = #{roleId}
</update>
<insert id="insertRoleMenu" parameterType="com.veve_plus.root.dto.role.RoleMenu">
INSERT INTO tb_roles_menus (
role_id,
menu_id,
created_by,
updated_by,
created_time,
updated_time
) VALUES (
#{roleId},
#{menuId},
#{createdBy},
#{updatedBy},
#{createdTime},
#{updatedTime}
)
</insert>
<delete id="deleteByRoleId">
DELETE FROM tb_roles_menus WHERE role_id = #{roleId}
</delete>
<select id="findRolesByEmail" resultType="com.veve_plus.root.dto.role.RoleUser">
SELECT tu.user_id AS userId
, tr.role_id AS roleId
FROM tb_user tu
INNER JOIN tb_users_roles tur
ON tur.user_id = tu.user_id
INNER JOIN tb_role tr
ON tr.role_id = tur.role_id
WHERE tu.email = #{email}
</select>
</mapper>