<?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.goafanti.common.dao.UserFollowMapper">
  <resultMap id="BaseResultMap" type="com.goafanti.common.model.UserFollow">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
    -->
    <id column="id" jdbcType="VARCHAR" property="id" />
    <result column="uid" jdbcType="VARCHAR" property="uid" />
    <result column="aid" jdbcType="VARCHAR" property="aid" />
    <result column="paid" jdbcType="VARCHAR" property="paid" />
    <result column="result" jdbcType="VARCHAR" property="result" />
    <result column="attachment_url" jdbcType="VARCHAR" property="attachmentUrl" />
    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
    <result column="ocb_id" jdbcType="VARCHAR" property="ocbId" />
    <result column="contact_type" jdbcType="INTEGER" property="contactType" />
    <result column="effective" jdbcType="INTEGER" property="effective" />
    <result column="time_stamp" jdbcType="TIMESTAMP" property="timeStamp" />
    <result column="follow_count" jdbcType="INTEGER" property="followCount" />
    <result column="guidance" jdbcType="VARCHAR" property="guidance" />
    <result column="guidance_time" jdbcType="TIMESTAMP" property="guidanceTime" />
    <result column="guidance_aid" jdbcType="VARCHAR" property="guidanceAid" />
    <result column="guidance_name" jdbcType="VARCHAR" property="guidanceName" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
    -->
    id, `uid`, aid, paid, `result`, attachment_url, create_time, ocb_id, contact_type,
    effective, time_stamp, follow_count, guidance, guidance_time, guidance_aid, guidance_name
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
    -->
    select
    <include refid="Base_Column_List" />
    from user_follow
    where id = #{id,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
    -->
    delete from user_follow
    where id = #{id,jdbcType=VARCHAR}
  </delete>
  <insert id="insert" parameterType="com.goafanti.common.model.UserFollow">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
    -->
    insert into user_follow (id, `uid`, aid,
      paid, `result`, attachment_url,
      create_time, ocb_id, contact_type,
      effective, time_stamp, follow_count,
      guidance, guidance_time, guidance_aid,
      guidance_name,follow_name,follow_dep)
    values (#{id,jdbcType=VARCHAR}, #{uid,jdbcType=VARCHAR}, #{aid,jdbcType=VARCHAR},
      #{paid,jdbcType=VARCHAR}, #{result,jdbcType=VARCHAR}, #{attachmentUrl,jdbcType=VARCHAR},
      #{createTime,jdbcType=TIMESTAMP}, #{ocbId,jdbcType=VARCHAR}, #{contactType,jdbcType=INTEGER},
      #{effective,jdbcType=INTEGER}, #{timeStamp,jdbcType=TIMESTAMP}, #{followCount,jdbcType=INTEGER},
      #{guidance,jdbcType=VARCHAR}, #{guidanceTime,jdbcType=TIMESTAMP}, #{guidanceAid,jdbcType=VARCHAR},
      #{guidanceName,jdbcType=VARCHAR},#{followName},#{followDep})
  </insert>
  <insert id="insertSelective" parameterType="com.goafanti.common.model.UserFollow">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
    -->
    insert into user_follow
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="uid != null">
        `uid`,
      </if>
      <if test="aid != null">
        aid,
      </if>
      <if test="paid != null">
        paid,
      </if>
      <if test="result != null">
        `result`,
      </if>
      <if test="attachmentUrl != null">
        attachment_url,
      </if>
      <if test="createTime != null">
        create_time,
      </if>
      <if test="ocbId != null">
        ocb_id,
      </if>
      <if test="contactType != null">
        contact_type,
      </if>
      <if test="effective != null">
        effective,
      </if>
      <if test="timeStamp != null">
        time_stamp,
      </if>
      <if test="followCount != null">
        follow_count,
      </if>
      <if test="guidance != null">
        guidance,
      </if>
      <if test="guidanceTime != null">
        guidance_time,
      </if>
      <if test="guidanceAid != null">
        guidance_aid,
      </if>
      <if test="guidanceName != null">
        guidance_name,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=VARCHAR},
      </if>
      <if test="uid != null">
        #{uid,jdbcType=VARCHAR},
      </if>
      <if test="aid != null">
        #{aid,jdbcType=VARCHAR},
      </if>
      <if test="paid != null">
        #{paid,jdbcType=VARCHAR},
      </if>
      <if test="result != null">
        #{result,jdbcType=VARCHAR},
      </if>
      <if test="attachmentUrl != null">
        #{attachmentUrl,jdbcType=VARCHAR},
      </if>
      <if test="createTime != null">
        #{createTime,jdbcType=TIMESTAMP},
      </if>
      <if test="ocbId != null">
        #{ocbId,jdbcType=VARCHAR},
      </if>
      <if test="contactType != null">
        #{contactType,jdbcType=INTEGER},
      </if>
      <if test="effective != null">
        #{effective,jdbcType=INTEGER},
      </if>
      <if test="timeStamp != null">
        #{timeStamp,jdbcType=TIMESTAMP},
      </if>
      <if test="followCount != null">
        #{followCount,jdbcType=INTEGER},
      </if>
      <if test="guidance != null">
        #{guidance,jdbcType=VARCHAR},
      </if>
      <if test="guidanceTime != null">
        #{guidanceTime,jdbcType=TIMESTAMP},
      </if>
      <if test="guidanceAid != null">
        #{guidanceAid,jdbcType=VARCHAR},
      </if>
      <if test="guidanceName != null">
        #{guidanceName,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.UserFollow">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
    -->
    update user_follow
    <set>
      <if test="uid != null">
        `uid` = #{uid,jdbcType=VARCHAR},
      </if>
      <if test="aid != null">
        aid = #{aid,jdbcType=VARCHAR},
      </if>
      <if test="paid != null">
        paid = #{paid,jdbcType=VARCHAR},
      </if>
      <if test="result != null">
        `result` = #{result,jdbcType=VARCHAR},
      </if>
      <if test="attachmentUrl != null">
        attachment_url = #{attachmentUrl,jdbcType=VARCHAR},
      </if>
      <if test="createTime != null">
        create_time = #{createTime,jdbcType=TIMESTAMP},
      </if>
      <if test="ocbId != null">
        ocb_id = #{ocbId,jdbcType=VARCHAR},
      </if>
      <if test="contactType != null">
        contact_type = #{contactType,jdbcType=INTEGER},
      </if>
      <if test="effective != null">
        effective = #{effective,jdbcType=INTEGER},
      </if>
      <if test="timeStamp != null">
        time_stamp = #{timeStamp,jdbcType=TIMESTAMP},
      </if>
      <if test="followCount != null">
        follow_count = #{followCount,jdbcType=INTEGER},
      </if>
      <if test="guidance != null">
        guidance = #{guidance,jdbcType=VARCHAR},
      </if>
      <if test="guidanceTime != null">
        guidance_time = #{guidanceTime,jdbcType=TIMESTAMP},
      </if>
      <if test="guidanceAid != null">
        guidance_aid = #{guidanceAid,jdbcType=VARCHAR},
      </if>
      <if test="guidanceName != null">
        guidance_name = #{guidanceName,jdbcType=VARCHAR},
      </if>
    </set>
    where id = #{id,jdbcType=VARCHAR}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.goafanti.common.model.UserFollow">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
    -->
    update user_follow
    set `uid` = #{uid,jdbcType=VARCHAR},
      aid = #{aid,jdbcType=VARCHAR},
      paid = #{paid,jdbcType=VARCHAR},
      `result` = #{result,jdbcType=VARCHAR},
      attachment_url = #{attachmentUrl,jdbcType=VARCHAR},
      create_time = #{createTime,jdbcType=TIMESTAMP},
      ocb_id = #{ocbId,jdbcType=VARCHAR},
      contact_type = #{contactType,jdbcType=INTEGER},
      effective = #{effective,jdbcType=INTEGER},
      time_stamp = #{timeStamp,jdbcType=TIMESTAMP},
      follow_count = #{followCount,jdbcType=INTEGER},
      guidance = #{guidance,jdbcType=VARCHAR},
      guidance_time = #{guidanceTime,jdbcType=TIMESTAMP},
      guidance_aid = #{guidanceAid,jdbcType=VARCHAR},
      guidance_name = #{guidanceName,jdbcType=VARCHAR}
    where id = #{id,jdbcType=VARCHAR}
  </update>
	<update id="pushUserGuidance">
		update user_follow b, `user` a
		set a.guidance= #{guidance}
		where a.id=b.uid and b.id= #{id}
	</update>
	<select id="selectbyUid" resultMap="BaseResultMap">

		select
		<include refid="Base_Column_List" />
		from user_follow a
		where a.uid= #{uid}
		and a.aid= #{aid}
	</select>


	<select id="userFollowList" resultType="com.goafanti.user.bo.outUserFollowList">
      select b.nickname,b.share_type shareType ,b.channel,b.id,date_format(b.transfer_time,'%Y-%m-%d %H:%i:%s')startTimes,
      a.contact_type contactType,a.follow_name followName ,a.follow_dep followDep,a.`result` ,a.follow_count followCount,
      date_format(a.create_time ,'%Y-%m-%d %H:%i:%s')followTimes,a.guidance_name guidanceName, a.guidance ,
      date_format(a.guidance_time,'%Y-%m-%d %H:%i:%s') guidanceTimes,c.contacts ,c.contact_mobile contactMobile,
      c.location_province province ,c.location_city city ,c.location_area area,
      c.intended_project intendedProject ,c.business_scope businessScope
      from user_follow a left join `user`b on a.uid =b.id left join organization_identity c on a.uid=c.uid
      left join admin d on a.aid =d.id
      where 1=1
      <if test="shiroType == 0">
      and a.aid= #{aid}
      </if>
      <if test="shiroType == 1">
        and a.aid in
        <foreach close=")" collection="aids" item="id" open="(" separator=",">
          #{id}
        </foreach>
      </if>
      <if test="followName != null">
        and a.follow_name  like concat('%',#{followName},'%')
      </if>
      <if test="userName != null">
		  and b.nickname like concat('%',#{userName},'%')
		</if>
		<if test="userType == 1">
		  and b.share_type =0
		</if>
		<if test="userType == 2">
		  and b.share_type =1
		</if>
      <if test="userType == 3">
        and b.share_type =2
      </if>
      <if test="userType == 4">
        and b.share_type =3
      </if>
		<if test="contactType != null">
			and a.contact_type = #{contactType}
		</if>
		<if test="followStartTime !=null and followEndTime !=null">
		    and a.create_time between #{followStartTime} and #{followEndTime}
        </if>
        <if test="createStartTime !=null and createEndTime !=null">
		and b.transfer_time between #{createStartTime} and #{createEndTime}
		</if>
        <if test="guidanceStartTime !=null and guidanceEndTime !=null">
		and a.guidance_time between #{guidanceStartTime} and #{guidanceEndTime}
		</if>
        <if test="deps != null">
          and d.department_id in
          <foreach close=")" collection="deps" item="depId" open="(" separator=",">
            #{depId}
          </foreach>
        </if>
		order by  a.create_time desc
		<if test="page_sql != null">
			${page_sql}
		</if>
	</select>
	<select id="userFollowCount" resultType="java.lang.Integer">
		select count(*)
      from user_follow a left join `user`b on a.uid =b.id
      left join admin d on a.aid =d.id where 1=1
      <if test="shiroType == 0">
        and a.aid= #{aid}
      </if>
      <if test="shiroType == 1">
        and a.aid in
        <foreach close=")" collection="aids" item="id" open="(" separator=",">
          #{id}
        </foreach>
      </if>
      <if test="followName != null">
        and a.follow_name  like concat('%',#{followName},'%')
      </if>
      <if test="userName != null">
        and b.nickname like concat('%',#{userName},'%')
      </if>
      <if test="userType == 1">
        and b.share_type =0
      </if>
      <if test="userType == 2">
        and b.share_type =1
      </if>
      <if test="userType == 3">
        and b.share_type =2
      </if>
      <if test="userType == 4">
        and b.share_type =3
      </if>
      <if test="contactType != null">
        and a.contact_type = #{contactType}
      </if>
      <if test="followStartTime !=null and followEndTime !=null">
        and a.create_time between #{followStartTime} and #{followEndTime}
      </if>
      <if test="createStartTime !=null and createEndTime !=null">
        and b.transfer_time between #{createStartTime} and #{createEndTime}
      </if>
      <if test="guidanceStartTime !=null and guidanceEndTime !=null">
        and a.guidance_time between #{guidanceStartTime} and #{guidanceEndTime}
      </if>
      <if test="deps != null">
        and d.department_id in
        <foreach close=")" collection="deps" item="depId" open="(" separator=",">
          #{depId}
        </foreach>
      </if>
	</select>
</mapper>
