MenuMapper.xml 11.1 KB
<?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.huaheng.pc.system.menu.mapper.MenuMapper">

    <resultMap type="com.huaheng.pc.system.menu.domain.Menu" id="MenuResult">
        <id property="id" column="id"/>
        <result property="menuName" column="menuName"/>
        <result property="parentName" column="parent_name"/>
        <result property="parentId" column="parentId"/>
        <result property="orderNum" column="orderNum"/>
        <result property="url" column="url"/>
        <result property="menuType" column="menuType"/>
        <result property="visible" column="visible"/>
        <result property="menuMobile" column="menuMobile"/>
        <result property="perms" column="perms"/>
        <result property="icon" column="icon"/>
        <result property="createBy" column="createBy"/>
        <result property="createTime" column="createTime"/>
        <result property="updateTime" column="updateTime"/>
        <result property="updateBy" column="updateBy"/>
        <result property="remark" column="remark"/>
    </resultMap>

    <sql id="selectMenuVo">
        select id,
               menuName,
               parentId,
               orderNum,
               url,
               menuType,
               visible,
               menuMobile,
               perms,
               icon,
               createBy,
               createTime
        from sys_menu
    </sql>

    <select id="selectPCMenusByUserId" resultMap="MenuResult">
        select distinct m.id,
                        m.parentId,
                        m.menuName,
                        m.url,
                        m.perms,
                        m.menuType,
                        m.icon,
                        m.orderNum,
                        m.createTime
        from sys_menu m
                 left join sys_role_menu rm on m.id = rm.menuId
                 left join sys_user_role ur on rm.roleId = ur.roleId
                 LEFT JOIN sys_role ro on ur.roleId = ro.id
        where ur.userId = #{userId}
          AND m.warehouseCode = #{warehouseCode}
          and m.menuType in ('M', 'C')
          AND m.visible = 1
          AND ro.enable = 1
          AND m.menuMobile = false
        order by m.orderNum
    </select>

    <select id="selectMenusByUserId" resultMap="MenuResult">
        select distinct m.id,
                        m.parentId,
                        m.menuName,
                        m.url,
                        m.perms,
                        m.menuType,
                        m.icon,
                        m.orderNum,
                        m.createTime
        from sys_menu m
                 left join sys_role_menu rm on m.id = rm.menuId and warehouseCode = ''
                 left join sys_user_role ur on rm.roleId = ur.roleId
                 LEFT JOIN sys_role ro on ur.roleId = ro.id
        where ur.userId = #{userId}
          and m.menuType in ('M', 'C')
          AND m.visible = 1
          AND ro.enable = 1
          AND m.menuMobile = false
        order by m.orderNum
    </select>

    <select id="selectPermsByUserId" resultType="java.lang.String">
        select distinct m.perms
        from sys_menu m
                 left join sys_role_menu rm on m.id = rm.menuId
                 left join sys_user_role ur on rm.roleId = ur.roleId
        where ur.userId = #{userId}
          AND m.warehouseCode = #{warehouseCode}
    </select>

    <select id="selectPermsBywarehouseCode" resultType="java.lang.String">
        select distinct perms
        from sys_menu
        where warehouseCode = #{warehouseCode}
    </select>

    <select id="selectMenuTree" resultType="java.lang.String">
        select concat(m.id, m.perms) as perms
        from sys_menu m
                 left join sys_role_menu rm on m.id = rm.menuId
        where rm.roleId = #{roleId}
          AND m.warehouseCode = #{warehouseCode}
        order by m.parentId, m.orderNum
    </select>

    <select id="selectMenuList" resultMap="MenuResult">
        <include refid="selectMenuVo"/>
        <where>
            <if test="warehouseCode != null">
                AND warehouseCode = #{warehouseCode}
            </if>
            <if test="menuName != null and menuName != ''">
                AND menuName like concat('%', #{menuName}, '%')
            </if>
            <if test="parentId != null and parentId != ''">
                AND parentId = #{parentId}
            </if>
            <if test="perms != null and perms != ''">
                AND perms = #{perms}
            </if>
            <if test="visible != null">
                AND visible = #{visible}
            </if>
        </where>
        order by orderNum
    </select>

    <select id="selectMenu" resultMap="MenuResult">
        select * from sys_menu
        <where>
            <if test="perms != null">
                AND perms = #{perms}
            </if>
            and menuName = #{menuName} and warehouseCode=#{warehouseCode} and url=#{url}
            and orderNum=#{orderNum}
        </where>
        limit 1
    </select>

    <delete id="deleteMenuById">
        delete
        from sys_menu
        where id = #{id}
           or parentId = #{id} AND warehouseCode = #{warehouseCode}
    </delete>

    <select id="selectMenuById" resultMap="MenuResult">
        SELECT t.id,
               t.parentId,
               t.menuName,
               t.orderNum,
               t.url,
               t.menuType,
               t.visible,
               t.menuMobile,
               t.perms,
               t.icon,
               t.remark,
               (SELECT menuName FROM sys_menu WHERE id = t.parentId) parent_name
        FROM sys_menu t
        where t.id = #{id}
          AND t.warehouseCode = #{warehouseCode}
    </select>

    <select id="selectCountMenuByParentId" resultType="java.lang.Integer">
        select count(1)
        from sys_menu
        where parentId = #{parentId}
          AND warehouseCode = #{warehouseCode}
    </select>

    <select id="checkMenuNameUnique" resultMap="MenuResult">
        <include refid="selectMenuVo"/>
        where menuName=#{menuName} AND warehouseCode=#{warehouseCode} AND menuMobile=#{menuMobile}
    </select>

    <update id="updateMenu">
        update sys_menu
        <set>
            <if test="menuName != null and menuName != ''">menuName = #{menuName},</if>
            <if test="parentId != null and parentId != 0">parentId = #{parentId},</if>
            <if test="orderNum != null and orderNum != ''">orderNum = #{orderNum},</if>
            <if test="url != null and url != ''">url = #{url},</if>
            <if test="menuType != null and menuType != ''">menuType = #{menuType},</if>
            <if test="visible != null">visible = #{visible},</if>
            <if test="menuMobile != null">menuMobile = #{menuMobile},</if>
            <if test="perms !=null and perms != ''">perms = #{perms},</if>
            <if test="icon !=null and icon != ''">icon = #{icon},</if>
            <if test="remark != null and remark != ''">remark = #{remark},</if>
            <if test="updateBy != null and updateBy != ''">updateBy = #{updateBy},</if>
            updateTime = sysdate()
        </set>
        where id = #{id} AND warehouseCode = #{warehouseCode}
    </update>

    <insert id="insertMenu">
        insert into sys_menu(
        <if test="warehouseCode != null">warehouseCode,</if>
        <if test="parentId != null and parentId != 0">parentId,</if>
        <if test="parentName != null and parentName != ''">parentName,</if>
        <if test="menuName != null and menuName != ''">menuName,</if>
        <if test="orderNum != null and orderNum != ''">orderNum,</if>
        <if test="url != null and url != ''">url,</if>
        <if test="menuType != null and menuType != ''">menuType,</if>
        <if test="visible != null">visible,</if>
        <if test="menuMobile != null">menuMobile,</if>
        <if test="perms !=null and perms != ''">perms,</if>
        <if test="icon != null and icon != ''">icon,</if>
        <if test="remark != null and remark != ''">remark,</if>
        <if test="createBy != null and createBy != ''">createBy,</if>
        createTime
        )values(
        <if test="warehouseCode != null">#{warehouseCode},</if>
        <if test="parentId != null and parentId != 0">#{parentId},</if>
        <if test="parentName != null and parentName != ''">#{parentName},</if>
        <if test="menuName != null and menuName != ''">#{menuName},</if>
        <if test="orderNum != null and orderNum != ''">#{orderNum},</if>
        <if test="url != null and url != ''">#{url},</if>
        <if test="menuType != null and menuType != ''">#{menuType},</if>
        <if test="visible != null">#{visible},</if>
        <if test="menuMobile != null">#{menuMobile},</if>
        <if test="perms !=null and perms != ''">#{perms},</if>
        <if test="icon != null and icon != ''">#{icon},</if>
        <if test="remark != null and remark != ''">#{remark},</if>
        <if test="createBy != null and createBy != ''">#{createBy},</if>
        sysdate()
        )
    </insert>


    <select id="selectMobileMenusByUserId" resultMap="MenuResult">
        select distinct m.id,
                        m.parentId,
                        m.menuName,
                        m.url,
                        m.perms,
                        m.menuType,
                        m.icon,
                        m.orderNum,
                        m.createTime,
                        m.menuMobile
        from sys_menu m
                 left join sys_role_menu rm on m.id = rm.menuId
                 left join sys_user_role ur on rm.roleId = ur.roleId
                 LEFT JOIN sys_role ro on ur.roleId = ro.id
        where ur.userId = #{userId}
          AND m.warehouseCode = #{warehouseCode}
          AND m.visible = 1
          AND ro.enable = 1
        order by m.orderNum
    </select>

    <select id="selectMenuPageList" resultType="com.huaheng.pc.system.menu.domain.Menu">
        <include refid="selectMenuVo"/>
        where menuType in ('M', 'C')
        <if test="visible != null">
            AND visible = #{visible}
        </if>
        <if test="menuMobile != null">
            AND menuMobile = #{menuMobile}
        </if>
        order by orderNum
    </select>

    <insert id="menuCopy">
        insert into sys_menu(menuName, parentId, parentName, orderNum, url, menuType, menuMobile, visible, perms, icon,
                             warehouseCode, remark, createBy, updateBy)
        select menuName,
               parentId,
               parentName,
               orderNum,
               url,
               menuType,
               menuMobile,
               visible,
               perms,
               icon,
               #{newCode},
               remark,
               #{loginName},
               #{loginName}
        from sys_menu
        where warehouseCode = #{code}

    </insert>

    <update id="updateParentId">
        update sys_menu s
            inner join sys_menu m on s.warehouseCode = #{code} and s.warehouseCode = m.warehouseCode and
                                     s.parentName = m.menuName
        set s.parentId=m.id

    </update>

</mapper>