2025-10-10 10:01:10 +08: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.bonus.system.mapper.SysUserMapper" >
<resultMap type= "SysUser" id= "SysUserResult" >
<id property= "userId" column= "user_id" />
<id property= "userCode" column= "user_code" />
<result property= "deptId" column= "dept_id" />
<result property= "companyId" column= "company_id" />
<result property= "userType" column= "user_type" />
<result property= "userName" column= "user_name" />
<result property= "nickName" column= "nick_name" />
<result property= "email" column= "email" />
<result property= "phonenumber" column= "phonenumber" />
<result property= "sex" column= "sex" />
<result property= "avatar" column= "avatar" />
<result property= "photoUrl" column= "photo_url" />
<result property= "faceStatus" column= "face_status" />
<result property= "birthday" column= "birthday" />
<result property= "password" column= "password" />
<result property= "status" column= "status" />
<result property= "delFlag" column= "del_flag" />
<result property= "loginIp" column= "login_ip" />
<result property= "loginDate" column= "login_date" />
<result property= "createBy" column= "create_by" />
<result property= "createTime" column= "create_time" />
<result property= "updateBy" column= "update_by" />
<result property= "updateTime" column= "update_time" />
<result property= "remark" column= "remark" />
<result property= "loginType" column= "login_type" />
<result property= "approvalStatus" column= "approval_status" />
<result property= "isPermanent" column= "is_permanent" />
<result property= "isBuiltIn" column= "is_built_in" />
<result property= "effectiveStartDay" column= "effective_start_day" />
<result property= "effectiveEndDay" column= "effective_end_day" />
<association property= "dept" javaType= "SysDept" resultMap= "deptResult" />
<collection property= "roles" javaType= "java.util.List" resultMap= "RoleResult" />
</resultMap>
<resultMap id= "deptResult" type= "SysDept" >
<id property= "deptId" column= "dept_id" />
<result property= "parentId" column= "parent_id" />
<result property= "deptName" column= "dept_name" />
<result property= "ancestors" column= "ancestors" />
<result property= "orderNum" column= "order_num" />
<result property= "leader" column= "leader" />
<result property= "status" column= "dept_status" />
</resultMap>
<resultMap id= "RoleResult" type= "SysRole" >
<id property= "roleId" column= "role_id" />
<result property= "roleName" column= "role_name" />
<result property= "roleKey" column= "role_key" />
<result property= "roleSort" column= "role_sort" />
<result property= "dataScope" column= "data_scope" />
<result property= "status" column= "role_status" />
</resultMap>
<sql id= "selectUserVo" >
select u.user_id,
u.user_code,
u.dept_id,
CASE d.ancestors
WHEN ('0') THEN
d.dept_id
ELSE
SUBSTRING_INDEX(SUBSTRING_INDEX(d.ancestors, ',', 2), ',', -1)
END as company_id,
u.user_type,
u.user_name,
u.nick_name,
u.email,
u.avatar,
uf.photo_url,
CASE
WHEN uf.photo_url is not null THEN '1'
WHEN u.photo_url is null THEN '0'
ELSE '2'
END AS face_status,
u.birthday,
u.phonenumber,
u.password,
u.sex,
u.status,
u.del_flag,
u.login_ip,
u.login_date,
u.create_by,
u.create_time,
u.remark,
u.approval_status,
u.is_permanent,
d.dept_id,
d.parent_id,
d.ancestors,
d.dept_name,
d.order_num,
d.leader,
d.status as dept_status,
r.role_id,
r.role_name,
r.role_key,
r.role_sort,
r.data_scope,
r.status as role_status,
u.login_type,
u.is_built_in,
u.effective_start_day,
u.effective_end_day
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id
left join sys_dept sd on r.company_id = sd.dept_id
left join user_face uf on uf.user_id = u.user_id
</sql>
<select id= "selectUserList" parameterType= "SysUser" resultMap= "SysUserResult" >
select u.user_id, u.user_code, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber,u.sex, u.status, u.birthday,
u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.approval_status,
u.is_permanent,u.is_built_in, u.effective_start_day, u.effective_end_day,
d.dept_name, d.leader,r.role_id,
r.role_name,
r.role_key,
r.role_sort,
r.data_scope,
r.status as role_status,
uf.photo_url,
CASE
WHEN uf.photo_url is not null THEN '1'
WHEN u.photo_url is null THEN '0'
ELSE '2'
END AS face_status
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id
left join user_face uf on uf.user_id = u.user_id
where u.del_flag = '0'
<if test= "userId != null and userId != 0" >
AND u.user_id = #{userId}
</if>
<if test= "userName != null and userName != ''" >
AND u.user_name like concat('%', #{userName}, '%')
</if>
<if test= "status != null and status != ''" >
AND u.status = #{status}
</if>
<if test= "isPermanent != null and isPermanent != ''" >
AND u.is_permanent = #{isPermanent}
</if>
<if test= "phonenumber != null and phonenumber != ''" >
AND u.phonenumber like concat('%', #{phonenumber}, '%')
</if>
<if test= "params.beginTime != null and params.beginTime != ''" > <!-- 开始时间检索 -->
AND date_format(u.create_time,'%y%m%d') > = date_format(#{params.beginTime},'%y%m%d')
</if>
<if test= "params.endTime != null and params.endTime != ''" > <!-- 结束时间检索 -->
AND date_format(u.create_time,'%y%m%d') < = date_format(#{params.endTime},'%y%m%d')
</if>
<if test= "companyId != null and companyId != 0" >
AND (find_in_set(#{companyId}, ancestors) or u.dept_id = #{companyId})
</if>
<if test= "deptId != null and deptId != 0" >
AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId},
ancestors) ))
</if>
2025-10-16 14:38:20 +08:00
<if test= 'isAdmin != null and isAdmin == "1"' >
and u.dept_id in (
select dept_id from sys_dept where dept_id=#{deptId}
union
select dept_id from sys_dept where parent_id=#{deptId}
union
select dept_id from sys_dept where parent_id in (select dept_id from sys_dept where parent_id=#{deptId})
union
select dept_id from sys_dept where parent_id in (select dept_id from sys_dept where parent_id in (select dept_id from sys_dept where parent_id=#{deptId}))
union
select dept_id from sys_dept where parent_id in (select dept_id from sys_dept where parent_id in (select dept_id from sys_dept where parent_id in (select dept_id from sys_dept where parent_id=#{deptId})))
)
</if>
2025-10-10 10:01:10 +08:00
<if test= "roleIds != null and roleIds.length > 0" >
and ur.role_id in
<foreach collection= "roleIds" item= "item" index= "index" separator= "," open= "(" close= ")" >
#{item}
</foreach>
</if>
<include refid= "com.bonus.system.mapper.DataScopeMapper.dataScopeFilter" />
GROUP BY u.user_id
</select>
<!-- <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult"> -->
<!-- <include refid="selectUserVo"/> -->
<!-- where u.del_flag = '0' AND -->
<!-- <if test="userId != null and userId != 0"> -->
<!-- AND u.user_id = #{userId} -->
<!-- </if> -->
<!-- <if test="userName != null and userName != ''"> -->
<!-- AND u.user_name like concat('%', #{userName}, '%') -->
<!-- </if> -->
<!-- <if test="status != null and status != ''"> -->
<!-- AND u.status = #{status} -->
<!-- </if> -->
<!-- <if test="phonenumber != null and phonenumber != ''"> -->
<!-- AND u.phonenumber like concat('%', #{phonenumber}, '%') -->
<!-- </if> -->
<!-- <if test="params.beginTime != null and params.beginTime != ''"><!– 开始时间检索 –> -->
<!-- AND date_format(u.create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') -->
<!-- </if> -->
<!-- <if test="params.endTime != null and params.endTime != ''"><!– 结束时间检索 –> -->
<!-- AND date_format(u.create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') -->
<!-- </if> -->
<!-- <if test="deptId != null and deptId != 0"> -->
<!-- AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, -->
<!-- ancestors) )) -->
<!-- </if> -->
<!-- <include refid="com.bonus.system.mapper.DataScopeMapper.dataScopeFilter"/> -->
<!-- </select> -->
<select id= "selectAllocatedList" parameterType= "SysUser" resultMap= "SysUserResult" >
select distinct u.user_id, u.user_code, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time,u.is_built_in
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id
where u.del_flag = '0' and r.role_id = #{roleId}
<if test= "userName != null and userName != ''" >
AND u.user_name like concat('%', #{userName}, '%')
</if>
<if test= "phonenumber != null and phonenumber != ''" >
AND u.phonenumber like concat('%', #{phonenumber}, '%')
</if>
<!-- 数据范围过滤 -->
<include refid= "com.bonus.system.mapper.DataScopeMapper.dataScopeFilter" />
</select>
<select id= "selectUnallocatedList" parameterType= "SysUser" resultMap= "SysUserResult" >
select distinct u.user_id, u.user_code, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time,u.is_built_in
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id
where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL)
and u.user_id not in (select u.user_id from sys_user u inner join sys_user_role ur on u.user_id = ur.user_id and
ur.role_id = #{roleId})
<if test= "userName != null and userName != ''" >
AND u.user_name like concat('%', #{userName}, '%')
</if>
<if test= "phonenumber != null and phonenumber != ''" >
AND u.phonenumber like concat('%', #{phonenumber}, '%')
</if>
<!-- 数据范围过滤 -->
<include refid= "com.bonus.system.mapper.DataScopeMapper.dataScopeFilter" />
</select>
<select id= "selectUserByUserName" parameterType= "String" resultMap= "SysUserResult" >
<include refid= "selectUserVo" />
where u.del_flag = '0' AND u.user_name = #{userName}
</select>
<select id= "selectUserByPhoneNumber" resultMap= "SysUserResult" >
<include refid= "selectUserVo" />
where u.del_flag = '0'AND u.phonenumber = #{phoneNumber} AND sd.del_flag = '0' AND sd.status = '0'
</select>
<select id= "selectKitchenStaffByPhoneNumber" resultMap= "SysUserResult" >
select staff_id as user_id,
mobile as phonenumber,
mobile as user_name,
staff_name as nick_name,
sex, `password`
from kitchen_staff_info
where mobile = #{phoneNumber}
</select>
<select id= "selectUserByEmail" resultMap= "SysUserResult" >
<include refid= "selectUserVo" />
where u.del_flag = '0'AND u.email = #{email}
</select>
<select id= "selectUserById" parameterType= "Long" resultMap= "SysUserResult" >
<include refid= "selectUserVo" />
where u.user_id = #{userId}
</select>
<select id= "selectUsersByIds" parameterType= "Long" resultMap= "SysUserResult" >
<include refid= "selectUserVo" />
where u.user_id in
<foreach collection= "array" item= "userId" open= "(" separator= "," close= ")" >
#{userId}
</foreach>
</select>
<select id= "checkUserNameUnique" parameterType= "String" resultMap= "SysUserResult" >
select user_id, user_name
from sys_user
where user_name = #{userName}
and del_flag = '0' limit 1
</select>
<select id= "checkPhoneUnique" parameterType= "String" resultMap= "SysUserResult" >
select user_id, phonenumber
from sys_user
where phonenumber = #{phonenumber}
and del_flag = '0' limit 1
</select>
<select id= "checkEmailUnique" parameterType= "String" resultMap= "SysUserResult" >
select user_id, email
from sys_user
where email = #{email}
and del_flag = '0' limit 1
</select>
<insert id= "insertUser" parameterType= "SysUser" useGeneratedKeys= "true" keyProperty= "userId" >
insert into sys_user(
<if test= "userId != null and userId != 0" > user_id,</if>
<if test= "userCode != null and userCode != 0" > user_code,</if>
<if test= "deptId != null and deptId != 0" > dept_id,</if>
<if test= "userType != null and userType != ''" > user_type,</if>
<if test= "userName != null and userName != ''" > user_name,</if>
<if test= "nickName != null and nickName != ''" > nick_name,</if>
<if test= "email != null and email != ''" > email,</if>
<if test= "avatar != null and avatar != ''" > avatar,</if>
<if test= "photoUrl != null and photoUrl != ''" > photo_url,</if>
<if test= "birthday != null and birthday != ''" > birthday,</if>
<if test= "phonenumber != null and phonenumber != ''" > phonenumber,</if>
<if test= "sex != null and sex != ''" > sex,</if>
<if test= "password != null and password != ''" > password,</if>
<if test= "status != null and status != ''" > status,</if>
<if test= "createBy != null and createBy != ''" > create_by,</if>
<if test= "remark != null and remark != ''" > remark,</if>
<if test= "loginType != null and loginType!=''" > login_type,</if>
<if test= "approvalStatus != null and approvalStatus!=''" > approval_status,</if>
<if test= "isPermanent != null and isPermanent!=''" > is_permanent,</if>
<if test= "isBuiltIn != null and isBuiltIn!=''" > is_built_in,</if>
<if test= "effectiveStartDay != null" > effective_start_day,</if>
<if test= "effectiveEndDay != null" > effective_end_day,</if>
create_time, update_time
)values(
<if test= "userId != null and userId != ''" > #{userId},</if>
<if test= "userCode != null and userCode != ''" > #{userCode},</if>
<if test= "deptId != null and deptId != ''" > #{deptId},</if>
<if test= "userType != null and userType != ''" > #{userType},</if>
<if test= "userName != null and userName != ''" > #{userName},</if>
<if test= "nickName != null and nickName != ''" > #{nickName},</if>
<if test= "email != null and email != ''" > #{email},</if>
<if test= "avatar != null and avatar != ''" > #{avatar},</if>
<if test= "photoUrl != null and photoUrl != ''" > #{photoUrl},</if>
<if test= "birthday != null and birthday != ''" > #{birthday},</if>
<if test= "phonenumber != null and phonenumber != ''" > #{phonenumber},</if>
<if test= "sex != null and sex != ''" > #{sex},</if>
<if test= "password != null and password != ''" > #{password},</if>
<if test= "status != null and status != ''" > #{status},</if>
<if test= "createBy != null and createBy != ''" > #{createBy},</if>
<if test= "remark != null and remark != ''" > #{remark},</if>
<if test= "loginType != null and loginType!=''" > #{loginType},</if>
<if test= "approvalStatus != null and approvalStatus!=''" > #{approvalStatus},</if>
<if test= "isPermanent != null and isPermanent!=''" > #{isPermanent},</if>
<if test= "isBuiltIn != null and isBuiltIn!=''" > #{isBuiltIn},</if>
<if test= "effectiveStartDay != null" > #{effectiveStartDay},</if>
<if test= "effectiveEndDay != null" > #{effectiveEndDay},</if>
sysdate(), sysdate()
)
</insert>
<update id= "updateUser" parameterType= "SysUser" >
update sys_user
<set >
<if test= "userCode != null" > user_code = #{userCode},</if>
<if test= "deptId != null and deptId != 0" > dept_id = #{deptId},</if>
<if test= "userType != null and userType != ''" > user_type = #{userType},</if>
<if test= "userName != null and userName != ''" > user_name = #{userName},</if>
<if test= "nickName != null and nickName != ''" > nick_name = #{nickName},</if>
<if test= "email != null " > email = #{email},</if>
<if test= "phonenumber != null " > phonenumber = #{phonenumber},</if>
<if test= "sex != null and sex != ''" > sex = #{sex},</if>
<if test= "avatar != null and avatar != ''" > avatar = #{avatar},</if>
<if test= "photoUrl != null and photoUrl != ''" > photo_url = #{photoUrl},</if>
<if test= "birthday != null and birthday != ''" > birthday = #{birthday},</if>
<if test= "password != null and password != ''" > password = #{password},</if>
<if test= "status != null and status != ''" > status = #{status},</if>
<if test= "loginIp != null and loginIp != ''" > login_ip = #{loginIp},</if>
<if test= "loginDate != null" > login_date = #{loginDate},</if>
<if test= "updateBy != null and updateBy != ''" > update_by = #{updateBy},</if>
<if test= "remark != null" > remark = #{remark},</if>
<if test= "loginType != null and loginType!=''" > login_type = #{loginType},</if>
<if test= "isPermanent != null and isPermanent!=''" > is_permanent = #{isPermanent},</if>
<if test= "isBuiltIn != null and isBuiltIn!=''" > is_built_in = #{isBuiltIn},</if>
<if test= "effectiveStartDay != null" > effective_start_day = #{effectiveStartDay},</if>
<if test= "effectiveEndDay != null" > effective_end_day = #{effectiveEndDay},</if>
update_time = sysdate()
</set>
where user_id = #{userId}
</update>
<update id= "updateUserStatus" parameterType= "SysUser" >
update sys_user
set status = #{status}
where user_id = #{userId}
</update>
<update id= "updateUserAvatar" parameterType= "SysUser" >
update sys_user
set avatar = #{avatar}
where user_name = #{userName}
</update>
<update id= "resetUserPwd" parameterType= "SysUser" >
update sys_user
set password = #{password}
where user_name = #{userName}
</update>
<update id= "approvalStatus" >
update sys_user
set approval_status = '1',
status='0'
where user_id = #{userId}
</update>
<update id= "systemUpdateUser" >
update sys_user
<set >
<if test= "status != null and status != ''" > status = #{status},</if>
<if test= "loginIp != null and loginIp != ''" > login_ip = #{loginIp},</if>
<if test= "loginDate != null" > login_date = #{loginDate},</if>
update_time = sysdate()
</set>
where user_id = #{userId}
</update>
<delete id= "deleteUserById" parameterType= "Long" >
update sys_user
set del_flag = '2'
where user_id = #{userId}
</delete>
<delete id= "deleteUserByIds" parameterType= "Long" >
update sys_user set del_flag = '2' where user_id in
<foreach collection= "array" item= "userId" open= "(" separator= "," close= ")" >
#{userId}
</foreach>
</delete>
<select id= "selectBindUserIds" resultType= "java.lang.Long" >
select supplier_user_id from ims_supplier WHERE del_flag = '0'
group by supplier_id
</select>
</mapper>