xiangpei
2025-05-14 47cd9ecc0eff38ffe6b3b794b2bf197e958f4403
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?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.mindskip.xzs.repository.TagMapper">
 
    <resultMap id="BaseResultMap" type="com.mindskip.xzs.domain.Tag">
        <id property="id" column="id" jdbcType="INTEGER"/>
        <result property="name" column="name" jdbcType="VARCHAR"/>
        <result property="deleted" column="deleted" jdbcType="BIT"/>
    </resultMap>
 
    <insert id="saveBatchUserTag">
        insert into t_user_tag (user_id, tag_id) values
        <foreach collection="list" item="item" separator=",">
            (#{item.userId},#{item.tagId})
        </foreach>
    </insert>
 
    <delete id="removeUserTagByUserId">
        delete from t_user_tag where user_id = #{id}
    </delete>
 
    <select id="selectTagIdsByUserId" resultType="java.lang.Integer">
        select tag_id from t_user_tag where user_id = #{id}
    </select>
 
    <select id="selectTagNamesByUserId" resultType="java.lang.String">
        select name from t_tag where deleted = 0 and id in (select tag_id from t_user_tag where user_id = #{id})
    </select>
    <select id="selectCountById" resultType="java.lang.String">
        select user_name from t_user where id in (select user_id from t_user_tag where tag_id = #{id}) and deleted = 0
    </select>
 
    <select id="page" resultType="com.mindskip.xzs.domain.vo.TagVO">
        SELECT
               tt.id, tt.name, td.name as deptName
        FROM
             t_tag tt
                 INNER JOIN t_department td ON tt.dept_id = td.id <if test="tag.deptId != null">AND tt.dept_id = #{tag.deptId}</if>
        <where>
            AND tt.deleted = 0
            <if test="tag.name != null and tag.name != ''">
                AND tt.name like concat('%', #{tag.name}, '%')
            </if>
        </where>
        UNION ALL
        SELECT
            tt.id, tt.name, '所有部门' as deptName
        FROM
            t_tag tt
        <where>
            tt.dept_id is null
            AND tt.deleted = 0
            <if test="tag.name != null and tag.name != ''">
                AND tt.name like concat('%', #{tag.name}, '%')
            </if>
        </where>
    </select>
 
</mapper>