UsrUserMapper.xml 4.19 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.example.erp.module.usr.mapper.UsrUserMapper">

    <!-- REQ-USR-003: 查询用户 -->
    <select id="selectUserList" resultType="com.example.erp.module.usr.vo.UserListItemVO">
        SELECT u.sId, u.sUsername, u.sUserCode, u.sUserType, u.sLanguage,
               u.bIsDisabled, u.tLastLoginDate, u.sCreatorUsername, u.tCreateDate,
               s.sStaffName, s.sDepartment
        FROM usr_user u
        LEFT JOIN tStaff s ON u.sEmployeeId = s.sId
                           AND s.sBrandsId = u.sBrandsId
                           AND s.bDeleted = 0
        WHERE u.sBrandsId = #{brandId}
        <if test="queryValue != null and queryValue != ''">
            <choose>
                <when test="queryField == 'username'">
                    <choose>
                        <when test="matchType == 'contains'">AND u.sUsername LIKE CONCAT('%', #{queryValue}, '%')</when>
                        <when test="matchType == 'notContains'">AND u.sUsername NOT LIKE CONCAT('%', #{queryValue}, '%')</when>
                        <otherwise>AND u.sUsername = #{queryValue}</otherwise>
                    </choose>
                </when>
                <when test="queryField == 'staffName'">
                    <choose>
                        <when test="matchType == 'contains'">AND s.sStaffName LIKE CONCAT('%', #{queryValue}, '%')</when>
                        <when test="matchType == 'notContains'">AND (s.sStaffName IS NULL OR s.sStaffName NOT LIKE CONCAT('%', #{queryValue}, '%'))</when>
                        <otherwise>AND s.sStaffName = #{queryValue}</otherwise>
                    </choose>
                </when>
                <when test="queryField == 'userCode'">
                    <choose>
                        <when test="matchType == 'contains'">AND u.sUserCode LIKE CONCAT('%', #{queryValue}, '%')</when>
                        <when test="matchType == 'notContains'">AND u.sUserCode NOT LIKE CONCAT('%', #{queryValue}, '%')</when>
                        <otherwise>AND u.sUserCode = #{queryValue}</otherwise>
                    </choose>
                </when>
                <when test="queryField == 'department'">
                    <choose>
                        <when test="matchType == 'contains'">AND s.sDepartment LIKE CONCAT('%', #{queryValue}, '%')</when>
                        <when test="matchType == 'notContains'">AND (s.sDepartment IS NULL OR s.sDepartment NOT LIKE CONCAT('%', #{queryValue}, '%'))</when>
                        <otherwise>AND s.sDepartment = #{queryValue}</otherwise>
                    </choose>
                </when>
                <when test="queryField == 'userType'">
                    <choose>
                        <when test="matchType == 'contains'">AND u.sUserType LIKE CONCAT('%', #{queryValue}, '%')</when>
                        <when test="matchType == 'notContains'">AND u.sUserType NOT LIKE CONCAT('%', #{queryValue}, '%')</when>
                        <otherwise>AND u.sUserType = #{queryValue}</otherwise>
                    </choose>
                </when>
                <when test="queryField == 'creator'">
                    <choose>
                        <when test="matchType == 'contains'">AND u.sCreatorUsername LIKE CONCAT('%', #{queryValue}, '%')</when>
                        <when test="matchType == 'notContains'">AND u.sCreatorUsername NOT LIKE CONCAT('%', #{queryValue}, '%')</when>
                        <otherwise>AND u.sCreatorUsername = #{queryValue}</otherwise>
                    </choose>
                </when>
                <when test="queryField == 'disabled'">
                    <choose>
                        <when test="queryValue == '是'">AND u.bIsDisabled = 1</when>
                        <when test="queryValue == '否'">AND u.bIsDisabled = 0</when>
                    </choose>
                </when>
                <when test="queryField == 'lastLoginDate'">
                    AND DATE(u.tLastLoginDate) = #{queryValue}
                </when>
            </choose>
        </if>
        ORDER BY u.tCreateDate DESC
    </select>

</mapper>