SysUserMapper.xml 2.31 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.apple.erp.mapper.SysUserMapper">

    <!-- 根据用户名查询用户信息(包含角色和权限) -->
    <select id="findUserWithRolesAndPermissions" resultType="com.apple.erp.entity.SysUser">
        SELECT 
            u.user_id,
            u.username,
            u.real_name,
            u.password,
            u.phone,
            u.email,
            u.status,
            u.last_login_time,
            u.last_login_ip,
            u.remark,
            u.create_by,
            u.create_time,
            u.update_by,
            u.update_time,
            u.del_flag,
            r.role_code,
            r.role_name,
            m.perms
        FROM t_sys_user u
        LEFT JOIN t_sys_user_role ur ON u.user_id = ur.user_id AND ur.del_flag = '0'
        LEFT JOIN t_sys_role r ON ur.role_id = r.role_id AND r.del_flag = '0' AND r.status = 1
        LEFT JOIN t_sys_role_menu rm ON r.role_id = rm.role_id AND rm.del_flag = '0'
        LEFT JOIN t_sys_menu m ON rm.menu_id = m.menu_id AND m.del_flag = '0' AND m.status = 1
        WHERE u.username = #{username} AND u.del_flag = '0' AND u.status = 1
    </select>

    <!-- 根据用户名查询用户基本信息 -->
    <select id="findByUsername" resultType="com.apple.erp.entity.SysUser">
        SELECT * FROM t_sys_user 
        WHERE username = #{username} AND del_flag = '0' AND status = 1
    </select>

    <!-- 根据用户ID查询菜单权限标识列表 -->
    <select id="selectMenuPermsByUserId" parameterType="Long" resultType="String">
        SELECT DISTINCT m.perms
        FROM t_sys_menu m
        LEFT JOIN t_sys_role_menu rm ON m.menu_id = rm.menu_id
        LEFT JOIN t_sys_user_role ur ON rm.role_id = ur.role_id
        LEFT JOIN t_sys_user u ON ur.user_id = u.user_id
        WHERE u.user_id = #{userId} 
        AND m.menu_type IN ('1','2') 
        AND m.status = 1 
        AND m.del_flag = '0'
        AND m.perms IS NOT NULL 
        AND m.perms != ''
    </select>

    <!-- 更新用户最后登录信息 -->
    <update id="updateLastLoginInfo">
        UPDATE t_sys_user 
        SET last_login_time = NOW(), last_login_ip = #{ip} 
        WHERE user_id = #{userId}
    </update>

</mapper>