MenuMapper.xml 8.93 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
		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 AND m.menuMobile = true
		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>