wg-basic/service-user/src/main/resources/mybatis/mapper/user-mapper.xml
2021-02-17 18:53:45 +08:00

411 lines
15 KiB
XML

<?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="ink.wgink.service.user.dao.IUserDao">
<cache flushInterval="3600000"/>
<resultMap id="userPO" type="ink.wgink.service.user.pojo.pos.UserPO">
<id property="userId" column="user_id"/>
<result property="userUsername" column="user_username"/>
<result property="userPassword" column="user_password"/>
<result property="userName" column="user_name"/>
<result property="userPhone" column="user_phone"/>
<result property="userEmail" column="user_email"/>
<result property="userUKey" column="user_ukey"/>
<result property="userAvatar" column="user_avatar"/>
<result property="userType" column="user_type"/>
<result property="userState" column="user_state"/>
<result property="lastLoginAddress" column="last_login_address"/>
<result property="lastLoginTime" column="last_login_time"/>
<result property="userLongitude" column="user_longitude"/>
<result property="userLatitude" column="user_latitude"/>
<result property="loginType" column="login_type"/>
</resultMap>
<resultMap id="userDTO" type="ink.wgink.pojo.dtos.user.UserDTO">
<id property="userId" column="user_id"/>
<result property="userUsername" column="user_username"/>
<result property="userName" column="user_name"/>
<result property="userPhone" column="user_phone"/>
<result property="userEmail" column="user_email"/>
<result property="userUKey" column="user_ukey"/>
<result property="userAvatar" column="user_avatar"/>
<result property="userType" column="user_type"/>
<result property="userState" column="user_state"/>
<result property="lastLoginAddress" column="last_login_address"/>
<result property="lastLoginTime" column="last_login_time"/>
<result property="userLongitude" column="user_longitude"/>
<result property="userLatitude" column="user_latitude"/>
<result property="departmentIds" column="department_ids"/>
<result property="departmentNames" column="department_names"/>
<result property="roleIds" column="role_ids"/>
<result property="roleNames" column="role_names"/>
<result property="positionIds" column="position_ids"/>
<result property="positionNames" column="position_names"/>
<result property="loginType" column="login_type"/>
<result property="gmtCreate" column="gmt_create"/>
</resultMap>
<update id="createTable">
CREATE TABLE IF NOT EXISTS `sys_user` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_id` char(36) NOT NULL,
`user_username` varchar(255) NOT NULL COMMENT '用户名',
`user_password` varchar(255) DEFAULT NULL COMMENT '密码',
`user_name` varchar(255) DEFAULT NULL COMMENT '姓名',
`user_phone` varchar(20) DEFAULT NULL COMMENT '电话',
`user_email` varchar(255) DEFAULT NULL COMMENT '邮箱',
`user_ukey` varchar(32) DEFAULT NULL COMMENT 'UKey',
`user_ukey_electronic_secret_key` text COMMENT '用户UKey电子秘钥',
`user_type` int(2) DEFAULT '2',
`user_state` int(2) DEFAULT '0' COMMENT '用户状态',
`user_avatar` char(36) DEFAULT NULL COMMENT '头像',
`user_longitude` varchar(255) DEFAULT '0' COMMENT '经度',
`user_latitude` varchar(255) DEFAULT '0' COMMENT '纬度',
`last_login_address` varchar(255) DEFAULT NULL COMMENT '最后登录地址',
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
`login_type` int(1) DEFAULT '1' COMMENT '登录类型',
`gmt_password_modified` date DEFAULT NULL COMMENT '密码修改时间',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注',
`creator` char(36) DEFAULT NULL,
`gmt_create` datetime DEFAULT NULL,
`modifier` char(36) DEFAULT NULL,
`gmt_modified` datetime DEFAULT NULL,
`is_delete` int(2) DEFAULT '0',
PRIMARY KEY (`id`,`user_id`,`user_username`),
UNIQUE KEY `user_username` (`user_username`) USING BTREE,
UNIQUE KEY `user_id` (`user_id`) USING BTREE,
KEY `user_name` (`user_name`) USING BTREE,
KEY `user_id_2` (`user_id`,`user_username`,`user_name`) USING BTREE,
KEY `user_id_3` (`user_id`,`user_name`) USING BTREE,
KEY `user_id_4` (`user_id`,`user_name`,`user_avatar`) USING BTREE,
KEY `is_delete_idx` (`is_delete`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</update>
<!-- 保存用户 -->
<insert id="save" parameterType="map" flushCache="true">
INSERT INTO sys_user(
user_id,
user_username,
user_password,
user_name,
user_phone,
user_email,
user_type,
user_state,
user_avatar,
creator,
gmt_create,
modifier,
gmt_modified,
is_delete
) VALUES(
#{userId},
#{userUsername},
#{userPassword},
#{userName},
#{userPhone},
#{userEmail},
#{userType},
#{userState},
#{userAvatar},
#{creator},
#{gmtCreate},
#{modifier},
#{gmtModified},
#{isDelete}
)
</insert>
<!-- 删除用户 -->
<update id="remove" parameterType="map" flushCache="true">
UPDATE
sys_user
SET
is_delete = 1,
modifier = #{modifier},
gmt_modified = #{gmtModified}
WHERE
user_id IN
<foreach collection="userIds" index="index" open="(" separator="," close=")">
#{userIds[${index}]}
</foreach>
</update>
<!-- 修改菜单 -->
<update id="update" parameterType="map" flushCache="true">
UPDATE
sys_user
SET
<if test="userPassword != null and userPassword != ''">
user_password = #{userPassword},
</if>
<if test="userName != null and userName != ''">
user_name = #{userName},
</if>
<if test="userPhone != null and userPhone != ''">
user_phone = #{userPhone},
</if>
<if test="userEmail != null and userEmail != ''">
user_email = #{userEmail},
</if>
<if test="userType != null">
user_type = #{userType},
</if>
<if test="userState != null">
user_state = #{userState},
</if>
<if test="userAvatar != null and userAvatar != ''">
user_avatar = #{userAvatar},
</if>
<if test="lastLoginAddress != null and lastLoginAddress != ''">
last_login_address = #{lastLoginAddress},
</if>
<if test="lastLoginTime != null and lastLoginTime != ''">
last_login_time = #{lastLoginTime},
</if>
<if test="gmtPasswordModified != null and gmtPasswordModified != ''">
gmt_password_modified = #{gmtPasswordModified},
</if>
<if test="userUKey != null and userUKey != ''">
user_ukey = #{userUKey},
</if>
<if test="userUKeyElectronicSecretKey != null and userUKeyElectronicSecretKey != ''">
user_ukey_electronic_secret_key = #{userUKeyElectronicSecretKey},
</if>
<if test="loginType != null">
login_type = #{loginType},
</if>
modifier = #{modifier},
gmt_modified = #{gmtModified}
WHERE
user_id = #{userId}
</update>
<!-- 更新用户密码 -->
<update id="updatePassword" parameterType="map" flushCache="true">
UPDATE
sys_user
SET
user_password = #{userPassword}
WHERE
user_id = #{userId}
</update>
<!-- 更新用户名 -->
<update id="updateUsername" parameterType="map" flushCache="true">
UPDATE
sys_user
SET
user_username = #{userUsername}
WHERE
user_id = #{userId}
</update>
<!-- 获取用户 -->
<select id="getPO" parameterType="map" resultMap="userPO" useCache="true">
SELECT
user_id,
user_password,
user_username,
user_name,
user_phone,
user_email,
user_ukey,
user_ukey_electronic_secret_key,
user_type,
user_state,
user_avatar,
user_longitude,
user_latitude,
last_login_address,
LEFT(last_login_time, 19) last_login_time,
login_type,
gmt_password_modified,
remarks,
LEFT(gmt_create, 19) gmt_create
FROM
sys_user
WHERE
is_delete = 0
<if test="userId != null and userId != ''">
AND
user_id = #{userId}
</if>
<if test="userUsername != null and userUsername != ''">
AND
user_username = #{userUsername}
</if>
<if test="userUKey != null and userUKey != ''">
AND
user_ukey = #{userUKey}
</if>
</select>
<!-- 获取用户 -->
<select id="get" parameterType="map" resultMap="userDTO" useCache="true">
SELECT
user_id,
user_password,
user_username,
user_name,
user_phone,
user_email,
user_ukey,
user_ukey_electronic_secret_key,
user_type,
user_state,
user_avatar,
user_longitude,
user_latitude,
last_login_address,
LEFT(last_login_time, 19) last_login_time,
login_type,
gmt_password_modified,
remarks,
LEFT(gmt_create, 19) gmt_create
FROM
sys_user
WHERE
is_delete = 0
<if test="userId != null and userId != ''">
AND
user_id = #{userId}
</if>
<if test="userUsername != null and userUsername != ''">
AND
user_username = #{userUsername}
</if>
<if test="userUKey != null and userUKey != ''">
AND
user_ukey = #{userUKey}
</if>
</select>
<!-- 用户列表 -->
<select id="list" parameterType="map" resultMap="userDTO" useCache="true">
SELECT
user_id,
user_password,
user_username,
user_name,
user_phone,
user_email,
user_ukey,
user_ukey_electronic_secret_key,
user_type,
user_state,
user_avatar,
user_longitude,
user_latitude,
last_login_address,
LEFT(last_login_time, 19) last_login_time,
login_type,
gmt_password_modified,
remarks,
LEFT(gmt_create, 19) gmt_create
FROM
sys_user
WHERE
is_delete = 0
AND
user_username != 'admin'
<if test="userIds != null and userIds.size > 0">
AND
user_id IN
<foreach collection="userIds" index="index" open="(" separator="," close=")">
#{userIds[${index}]}
</foreach>
</if>
<if test="excludeUserIds != null and excludeUserIds.size > 0">
AND
user_id NOT IN
<foreach collection="excludeUserIds" index="index" open="(" separator="," close=")">
#{excludeUserIds[${index}]}
</foreach>
</if>
<if test="keywords != null and keywords != ''">
AND (
user_username LIKE CONCAT('%', #{keywords}, '%')
OR
user_name LIKE CONCAT('%', #{keywords}, '%')
OR
user_phone LIKE CONCAT('%', #{keywords}, '%')
OR
user_email LIKE CONCAT('%', #{keywords}, '%')
)
</if>
<choose>
<when test="sort != null and (sort == 'userUsername' or sort == 'userName' or sort == 'userPhone' or sort == 'userEmail' or sort == 'userState' or sort == 'lastLoginAddress' or sort == 'lastLoginTime')">
ORDER BY
<if test="sort == 'userUsername'">
user_username ${order}
</if>
<if test="sort == 'userName'">
user_name ${order}
</if>
<if test="sort == 'userPhone'">
user_phone ${order}
</if>
<if test="sort == 'userEmail'">
user_email ${order}
</if>
<if test="sort == 'userState'">
user_state ${order}
</if>
<if test="sort == 'lastLoginAddress'">
last_login_address ${order}
</if>
<if test="sort == 'lastLoginTime'">
last_login_time ${order}
</if>
</when>
</choose>
</select>
<!-- 统计用户数量 -->
<select id="count" parameterType="map" resultType="java.lang.Integer" useCache="true">
SELECT
count(*)
FROM
sys_user
WHERE
is_delete = 0
AND
user_username != 'admin'
<if test="startDay != null and startDay != ''">
AND
LEFT(gmt_create, 10) <![CDATA[ >= ]]> #{startDay}
</if>
<if test="endDay != null and endDay != ''">
AND
LEFT(gmt_create, 10) <![CDATA[ <= ]]> #{endDay}
</if>
<if test="today != null and today != ''">
AND
LEFT(gmt_create, 10) = #{today}
</if>
<if test="userType != null">
AND
user_type = #{userType}
</if>
<if test="userState != null">
AND
user_state = #{userState}
</if>
<if test="errorUserType != null">
AND
(user_type <![CDATA[<>]]> 1 AND user_type <![CDATA[<>]]> 2 OR user_type IS NULL)
</if>
<if test="loginType != null">
AND
login_type = #{loginType}
</if>
<if test="errorLoginType != null">
AND
(login_type <![CDATA[<>]]> 1 AND login_type <![CDATA[<>]]> 2 AND login_type <![CDATA[<>]]> 3 OR login_type IS NULL)
</if>
</select>
</mapper>