veve-batch-material/target/classes/mapper/MenuMapper.xml

88 lines
3.2 KiB
XML
Raw Normal View History

2025-07-21 04:43:14 +00:00
<?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.MenuMapper">
<resultMap id="menuResultMap" type="com.veve_plus.root.dto.menu.MenuResponse">
<id property="menuId" column="menu_id" />
<result property="deptId" column="dept_id" />
<result property="type" column="type" />
<result property="name" column="name" />
<result property="icon" column="icon" />
<result property="url" column="url" />
<result property="permission" column="permission" />
<result property="pid" column="pid" />
<result property="menuSort" column="menu_sort" />
<result property="status" column="status" />
</resultMap>
<insert id="insert" parameterType="com.veve_plus.root.dto.menu.Menu" useGeneratedKeys="true" keyProperty="menuId" >
INSERT INTO tb_menu (pid, type, name, url, menu_sort, icon, status, permission, created_by, updated_by, created_time, updated_time)
VALUES (
#{pid},
#{type},
#{name},
#{url},
#{menuSort},
#{icon},
#{status},
#{permission},
#{createdBy},
#{updatedBy},
#{createdTime},
#{updatedTime}
)
</insert>
<update id="update" parameterType="com.veve_plus.root.dto.menu.Menu">
UPDATE tb_menu
SET
pid = #{pid},
type = #{type},
name = #{name},
url = #{url},
menu_sort = #{menuSort},
icon = #{icon},
status= #{status},
permission = #{permission},
updated_by = #{updatedBy},
updated_time = #{updatedTime}
WHERE
menu_id = #{menuId}
</update>
<select id="findAll" parameterType="com.veve_plus.root.dto.menu.MenuSearchRequest" resultType="com.veve_plus.root.dto.menu.MenuResponse">
WITH RECURSIVE menu_hierarchy AS (
SELECT menu_id as menuId, pid, name, menu_sort as menuSort, status, url, permission, type, icon
FROM tb_menu
<where>
<if test="keyword != null and keyword != ''">
AND name LIKE CONCAT('%', #{keyword}, '%')
</if>
<if test="status != null">
AND status = #{status}
</if>
</where>
UNION ALL
SELECT d.menu_id as menuId, d.pid, d.name, d.menu_sort as menuSort, d.status, d.url, d.permission, d.type, d.icon
FROM tb_menu d
JOIN menu_hierarchy h ON d.menu_id = h.pid
)
SELECT distinct *
FROM menu_hierarchy
ORDER BY menuSort
</select>
<select id="getMenusByEmail">
SELECT distinct C.menu_id
FROM
tb_users_roles A,
tb_roles_menus B,
tb_menu C,
tb_user D
WHERE A.role_id = B.role_id
AND B.menu_id = C.menu_id
AND C.status = 1
AND A.user_id = D.user_id
AND D.email = #{email}
</select>
</mapper>