<?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.UserMapper">
  <resultMap id="BaseResultMap" type="com.goafanti.common.model.User">
    <id column="id" jdbcType="VARCHAR" property="id" />
    <result column="mobile" jdbcType="VARCHAR" property="mobile" />
    <result column="password" jdbcType="VARCHAR" property="password" />
    <result column="nickname" jdbcType="VARCHAR" property="nickname" />
    <result column="email" jdbcType="VARCHAR" property="email" />
    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
    <result column="number" jdbcType="BIGINT" property="number" />
    <result column="lvl" jdbcType="INTEGER" property="lvl" />
    <result column="type" jdbcType="INTEGER" property="type" />
    <result column="aid" jdbcType="VARCHAR" property="aid" />
    <result column="mid" jdbcType="VARCHAR" property="mid" />
    <result column="status" jdbcType="INTEGER" property="status" />
    <result column="source" jdbcType="INTEGER" property="source" />
    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
    <result column="company_logo_url" jdbcType="VARCHAR" property="companyLogoUrl" />
    <result column="head_portrait_url" jdbcType="VARCHAR" property="headPortraitUrl" />
    <result column="society_tag" jdbcType="VARCHAR" property="societyTag" />
    <result column="introduction" jdbcType="VARCHAR" property="introduction" />
    <result column="value_added_tag" jdbcType="VARCHAR" property="valueAddedTag" />
    <result column="organization_id" jdbcType="VARCHAR" property="organizationId" />
    <result column="share_type" jdbcType="INTEGER" property="shareType" />
    <result column="identify_name" jdbcType="VARCHAR" property="identifyName" />
    <result column="background_url" jdbcType="VARCHAR" property="backgroundUrl" />
    <result column="audit_status" jdbcType="INTEGER" property="auditStatus" />
    <result column="audit_opinion" jdbcType="VARCHAR" property="auditOpinion" />
    <result column="transfer_time" jdbcType="TIMESTAMP" property="transferTime" />
    <result column="information_maintainer" jdbcType="VARCHAR" property="informationMaintainer" />
    <result column="core_technology" jdbcType="VARCHAR" property="coreTechnology" />
    <result column="accomplish_situation" jdbcType="VARCHAR" property="accomplishSituation" />
    <result column="intellectual_property" jdbcType="VARCHAR" property="intellectualProperty" />
    <result column="credit_rating" jdbcType="INTEGER" property="creditRating" />
    <result column="level" jdbcType="INTEGER" property="level" />
    <result column="authentication" jdbcType="INTEGER" property="authentication" />
    <result column="username" jdbcType="VARCHAR" property="username" />
    <result column="integrity" jdbcType="FLOAT" property="integrity" />
    <result column="to_invite_code" jdbcType="VARCHAR" property="toInviteCode" />
    <result column="be_invite_code" jdbcType="VARCHAR" property="beInviteCode" />
    <result column="guidance" jdbcType="INTEGER" property="guidance" />
    <result column="sign_bills" jdbcType="INTEGER" property="signBills" />
    <result column="channel" jdbcType="INTEGER" property="channel" />
    <result column="new_channel" jdbcType="INTEGER" property="newChannel" />
  </resultMap>
  <sql id="Base_Column_List">
    id, mobile, `password`, nickname, email, create_time, `number`, lvl, `type`, aid,
    mid, `status`, `source`, update_time, company_logo_url, head_portrait_url, society_tag,
    introduction, value_added_tag, organization_id, share_type, identify_name, background_url,
    audit_status, audit_opinion, transfer_time, information_maintainer, core_technology,
    accomplish_situation, intellectual_property, credit_rating, `level`, authentication,
    username, `integrity`, to_invite_code, be_invite_code, guidance, sign_bills, channel,
    new_channel
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from user
    where id = #{id,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
    delete from user
    where id = #{id,jdbcType=VARCHAR}
  </delete>
  <insert id="insert" parameterType="com.goafanti.common.model.User">
    insert into user (id, mobile, `password`,
      nickname, email, create_time,
      `number`, lvl, `type`, aid,
      mid, `status`, `source`,
      update_time, company_logo_url, head_portrait_url,
      society_tag, introduction, value_added_tag,
      organization_id, share_type, identify_name,
      background_url, audit_status, audit_opinion,
      transfer_time, information_maintainer,
      core_technology, accomplish_situation, intellectual_property,
      credit_rating, `level`, authentication,
      username, `integrity`, to_invite_code,
      be_invite_code, guidance, sign_bills,
      channel, new_channel)
    values (#{id,jdbcType=VARCHAR}, #{mobile,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},
      #{nickname,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
      #{number,jdbcType=BIGINT}, #{lvl,jdbcType=INTEGER}, #{type,jdbcType=INTEGER}, #{aid,jdbcType=VARCHAR},
      #{mid,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{source,jdbcType=INTEGER},
      #{updateTime,jdbcType=TIMESTAMP}, #{companyLogoUrl,jdbcType=VARCHAR}, #{headPortraitUrl,jdbcType=VARCHAR},
      #{societyTag,jdbcType=VARCHAR}, #{introduction,jdbcType=VARCHAR}, #{valueAddedTag,jdbcType=VARCHAR},
      #{organizationId,jdbcType=VARCHAR}, #{shareType,jdbcType=INTEGER}, #{identifyName,jdbcType=VARCHAR},
      #{backgroundUrl,jdbcType=VARCHAR}, #{auditStatus,jdbcType=INTEGER}, #{auditOpinion,jdbcType=VARCHAR},
      #{transferTime,jdbcType=TIMESTAMP}, #{informationMaintainer,jdbcType=VARCHAR},
      #{coreTechnology,jdbcType=VARCHAR}, #{accomplishSituation,jdbcType=VARCHAR}, #{intellectualProperty,jdbcType=VARCHAR},
      #{creditRating,jdbcType=INTEGER}, #{level,jdbcType=INTEGER}, #{authentication,jdbcType=INTEGER},
      #{username,jdbcType=VARCHAR}, #{integrity,jdbcType=FLOAT}, #{toInviteCode,jdbcType=VARCHAR},
      #{beInviteCode,jdbcType=VARCHAR}, #{guidance,jdbcType=INTEGER}, #{signBills,jdbcType=INTEGER},
      #{channel,jdbcType=INTEGER}, #{newChannel,jdbcType=INTEGER})
  </insert>
  <insert id="insertSelective" parameterType="com.goafanti.common.model.User">
    insert into user
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="mobile != null">
        mobile,
      </if>
      <if test="password != null">
        `password`,
      </if>
      <if test="nickname != null">
        nickname,
      </if>
      <if test="email != null">
        email,
      </if>
      <if test="createTime != null">
        create_time,
      </if>
      <if test="number != null">
        `number`,
      </if>
      <if test="lvl != null">
        lvl,
      </if>
      <if test="type != null">
        `type`,
      </if>
      <if test="aid != null">
        aid,
      </if>
      <if test="mid != null">
        mid,
      </if>
      <if test="status != null">
        `status`,
      </if>
      <if test="source != null">
        `source`,
      </if>
      <if test="updateTime != null">
        update_time,
      </if>
      <if test="companyLogoUrl != null">
        company_logo_url,
      </if>
      <if test="headPortraitUrl != null">
        head_portrait_url,
      </if>
      <if test="societyTag != null">
        society_tag,
      </if>
      <if test="introduction != null">
        introduction,
      </if>
      <if test="valueAddedTag != null">
        value_added_tag,
      </if>
      <if test="organizationId != null">
        organization_id,
      </if>
      <if test="shareType != null">
        share_type,
      </if>
      <if test="identifyName != null">
        identify_name,
      </if>
      <if test="backgroundUrl != null">
        background_url,
      </if>
      <if test="auditStatus != null">
        audit_status,
      </if>
      <if test="auditOpinion != null">
        audit_opinion,
      </if>
      <if test="transferTime != null">
        transfer_time,
      </if>
      <if test="informationMaintainer != null">
        information_maintainer,
      </if>
      <if test="coreTechnology != null">
        core_technology,
      </if>
      <if test="accomplishSituation != null">
        accomplish_situation,
      </if>
      <if test="intellectualProperty != null">
        intellectual_property,
      </if>
      <if test="creditRating != null">
        credit_rating,
      </if>
      <if test="level != null">
        `level`,
      </if>
      <if test="authentication != null">
        authentication,
      </if>
      <if test="username != null">
        username,
      </if>
      <if test="integrity != null">
        `integrity`,
      </if>
      <if test="toInviteCode != null">
        to_invite_code,
      </if>
      <if test="beInviteCode != null">
        be_invite_code,
      </if>
      <if test="guidance != null">
        guidance,
      </if>
      <if test="signBills != null">
        sign_bills,
      </if>
      <if test="channel != null">
        channel,
      </if>
      <if test="newChannel != null">
        new_channel,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=VARCHAR},
      </if>
      <if test="mobile != null">
        #{mobile,jdbcType=VARCHAR},
      </if>
      <if test="password != null">
        #{password,jdbcType=VARCHAR},
      </if>
      <if test="nickname != null">
        #{nickname,jdbcType=VARCHAR},
      </if>
      <if test="email != null">
        #{email,jdbcType=VARCHAR},
      </if>
      <if test="createTime != null">
        #{createTime,jdbcType=TIMESTAMP},
      </if>
      <if test="number != null">
        #{number,jdbcType=BIGINT},
      </if>
      <if test="lvl != null">
        #{lvl,jdbcType=INTEGER},
      </if>
      <if test="type != null">
        #{type,jdbcType=INTEGER},
      </if>
      <if test="aid != null">
        #{aid,jdbcType=VARCHAR},
      </if>
      <if test="mid != null">
        #{mid,jdbcType=VARCHAR},
      </if>
      <if test="status != null">
        #{status,jdbcType=INTEGER},
      </if>
      <if test="source != null">
        #{source,jdbcType=INTEGER},
      </if>
      <if test="updateTime != null">
        #{updateTime,jdbcType=TIMESTAMP},
      </if>
      <if test="companyLogoUrl != null">
        #{companyLogoUrl,jdbcType=VARCHAR},
      </if>
      <if test="headPortraitUrl != null">
        #{headPortraitUrl,jdbcType=VARCHAR},
      </if>
      <if test="societyTag != null">
        #{societyTag,jdbcType=VARCHAR},
      </if>
      <if test="introduction != null">
        #{introduction,jdbcType=VARCHAR},
      </if>
      <if test="valueAddedTag != null">
        #{valueAddedTag,jdbcType=VARCHAR},
      </if>
      <if test="organizationId != null">
        #{organizationId,jdbcType=VARCHAR},
      </if>
      <if test="shareType != null">
        #{shareType,jdbcType=INTEGER},
      </if>
      <if test="identifyName != null">
        #{identifyName,jdbcType=VARCHAR},
      </if>
      <if test="backgroundUrl != null">
        #{backgroundUrl,jdbcType=VARCHAR},
      </if>
      <if test="auditStatus != null">
        #{auditStatus,jdbcType=INTEGER},
      </if>
      <if test="auditOpinion != null">
        #{auditOpinion,jdbcType=VARCHAR},
      </if>
      <if test="transferTime != null">
        #{transferTime,jdbcType=TIMESTAMP},
      </if>
      <if test="informationMaintainer != null">
        #{informationMaintainer,jdbcType=VARCHAR},
      </if>
      <if test="coreTechnology != null">
        #{coreTechnology,jdbcType=VARCHAR},
      </if>
      <if test="accomplishSituation != null">
        #{accomplishSituation,jdbcType=VARCHAR},
      </if>
      <if test="intellectualProperty != null">
        #{intellectualProperty,jdbcType=VARCHAR},
      </if>
      <if test="creditRating != null">
        #{creditRating,jdbcType=INTEGER},
      </if>
      <if test="level != null">
        #{level,jdbcType=INTEGER},
      </if>
      <if test="authentication != null">
        #{authentication,jdbcType=INTEGER},
      </if>
      <if test="username != null">
        #{username,jdbcType=VARCHAR},
      </if>
      <if test="integrity != null">
        #{integrity,jdbcType=FLOAT},
      </if>
      <if test="toInviteCode != null">
        #{toInviteCode,jdbcType=VARCHAR},
      </if>
      <if test="beInviteCode != null">
        #{beInviteCode,jdbcType=VARCHAR},
      </if>
      <if test="guidance != null">
        #{guidance,jdbcType=INTEGER},
      </if>
      <if test="signBills != null">
        #{signBills,jdbcType=INTEGER},
      </if>
      <if test="channel != null">
        #{channel,jdbcType=INTEGER},
      </if>
      <if test="newChannel != null">
        #{newChannel,jdbcType=INTEGER},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.User">
    update user
    <set>
      <if test="mobile != null">
        mobile = #{mobile,jdbcType=VARCHAR},
      </if>
      <if test="password != null">
        `password` = #{password,jdbcType=VARCHAR},
      </if>
      <if test="nickname != null">
        nickname = #{nickname,jdbcType=VARCHAR},
      </if>
      <if test="email != null">
        email = #{email,jdbcType=VARCHAR},
      </if>
      <if test="createTime != null">
        create_time = #{createTime,jdbcType=TIMESTAMP},
      </if>
      <if test="number != null">
        `number` = #{number,jdbcType=BIGINT},
      </if>
      <if test="lvl != null">
        lvl = #{lvl,jdbcType=INTEGER},
      </if>
      <if test="type != null">
        `type` = #{type,jdbcType=INTEGER},
      </if>
      <if test="aid != null">
        aid = #{aid,jdbcType=VARCHAR},
      </if>
      <if test="mid != null">
        mid = #{mid,jdbcType=VARCHAR},
      </if>
      <if test="status != null">
        `status` = #{status,jdbcType=INTEGER},
      </if>
      <if test="source != null">
        `source` = #{source,jdbcType=INTEGER},
      </if>
      <if test="updateTime != null">
        update_time = #{updateTime,jdbcType=TIMESTAMP},
      </if>
      <if test="companyLogoUrl != null">
        company_logo_url = #{companyLogoUrl,jdbcType=VARCHAR},
      </if>
      <if test="headPortraitUrl != null">
        head_portrait_url = #{headPortraitUrl,jdbcType=VARCHAR},
      </if>
      <if test="societyTag != null">
        society_tag = #{societyTag,jdbcType=VARCHAR},
      </if>
      <if test="introduction != null">
        introduction = #{introduction,jdbcType=VARCHAR},
      </if>
      <if test="valueAddedTag != null">
        value_added_tag = #{valueAddedTag,jdbcType=VARCHAR},
      </if>
      <if test="organizationId != null">
        organization_id = #{organizationId,jdbcType=VARCHAR},
      </if>
      <if test="shareType != null">
        share_type = #{shareType,jdbcType=INTEGER},
      </if>
      <if test="identifyName != null">
        identify_name = #{identifyName,jdbcType=VARCHAR},
      </if>
      <if test="backgroundUrl != null">
        background_url = #{backgroundUrl,jdbcType=VARCHAR},
      </if>
      <if test="auditStatus != null">
        audit_status = #{auditStatus,jdbcType=INTEGER},
      </if>
      <if test="auditOpinion != null">
        audit_opinion = #{auditOpinion,jdbcType=VARCHAR},
      </if>
      <if test="transferTime != null">
        transfer_time = #{transferTime,jdbcType=TIMESTAMP},
      </if>
      <if test="informationMaintainer != null">
        information_maintainer = #{informationMaintainer,jdbcType=VARCHAR},
      </if>
      <if test="coreTechnology != null">
        core_technology = #{coreTechnology,jdbcType=VARCHAR},
      </if>
      <if test="accomplishSituation != null">
        accomplish_situation = #{accomplishSituation,jdbcType=VARCHAR},
      </if>
      <if test="intellectualProperty != null">
        intellectual_property = #{intellectualProperty,jdbcType=VARCHAR},
      </if>
      <if test="creditRating != null">
        credit_rating = #{creditRating,jdbcType=INTEGER},
      </if>
      <if test="level != null">
        `level` = #{level,jdbcType=INTEGER},
      </if>
      <if test="authentication != null">
        authentication = #{authentication,jdbcType=INTEGER},
      </if>
      <if test="username != null">
        username = #{username,jdbcType=VARCHAR},
      </if>
      <if test="integrity != null">
        `integrity` = #{integrity,jdbcType=FLOAT},
      </if>
      <if test="toInviteCode != null">
        to_invite_code = #{toInviteCode,jdbcType=VARCHAR},
      </if>
      <if test="beInviteCode != null">
        be_invite_code = #{beInviteCode,jdbcType=VARCHAR},
      </if>
      <if test="guidance != null">
        guidance = #{guidance,jdbcType=INTEGER},
      </if>
      <if test="signBills != null">
        sign_bills = #{signBills,jdbcType=INTEGER},
      </if>
      <if test="channel != null">
        channel = #{channel,jdbcType=INTEGER},
      </if>
      <if test="newChannel != null">
        new_channel = #{newChannel,jdbcType=INTEGER},
      </if>
    </set>
    where id = #{id,jdbcType=VARCHAR}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.goafanti.common.model.User">
    update user
    set mobile = #{mobile,jdbcType=VARCHAR},
      `password` = #{password,jdbcType=VARCHAR},
      nickname = #{nickname,jdbcType=VARCHAR},
      email = #{email,jdbcType=VARCHAR},
      create_time = #{createTime,jdbcType=TIMESTAMP},
      `number` = #{number,jdbcType=BIGINT},
      lvl = #{lvl,jdbcType=INTEGER},
      `type` = #{type,jdbcType=INTEGER},
      aid = #{aid,jdbcType=VARCHAR},
      mid = #{mid,jdbcType=VARCHAR},
      `status` = #{status,jdbcType=INTEGER},
      `source` = #{source,jdbcType=INTEGER},
      update_time = #{updateTime,jdbcType=TIMESTAMP},
      company_logo_url = #{companyLogoUrl,jdbcType=VARCHAR},
      head_portrait_url = #{headPortraitUrl,jdbcType=VARCHAR},
      society_tag = #{societyTag,jdbcType=VARCHAR},
      introduction = #{introduction,jdbcType=VARCHAR},
      value_added_tag = #{valueAddedTag,jdbcType=VARCHAR},
      organization_id = #{organizationId,jdbcType=VARCHAR},
      share_type = #{shareType,jdbcType=INTEGER},
      identify_name = #{identifyName,jdbcType=VARCHAR},
      background_url = #{backgroundUrl,jdbcType=VARCHAR},
      audit_status = #{auditStatus,jdbcType=INTEGER},
      audit_opinion = #{auditOpinion,jdbcType=VARCHAR},
      transfer_time = #{transferTime,jdbcType=TIMESTAMP},
      information_maintainer = #{informationMaintainer,jdbcType=VARCHAR},
      core_technology = #{coreTechnology,jdbcType=VARCHAR},
      accomplish_situation = #{accomplishSituation,jdbcType=VARCHAR},
      intellectual_property = #{intellectualProperty,jdbcType=VARCHAR},
      credit_rating = #{creditRating,jdbcType=INTEGER},
      `level` = #{level,jdbcType=INTEGER},
      authentication = #{authentication,jdbcType=INTEGER},
      username = #{username,jdbcType=VARCHAR},
      `integrity` = #{integrity,jdbcType=FLOAT},
      to_invite_code = #{toInviteCode,jdbcType=VARCHAR},
      be_invite_code = #{beInviteCode,jdbcType=VARCHAR},
      guidance = #{guidance,jdbcType=INTEGER},
      sign_bills = #{signBills,jdbcType=INTEGER},
      channel = #{channel,jdbcType=INTEGER},
      new_channel = #{newChannel,jdbcType=INTEGER}
    where id = #{id,jdbcType=VARCHAR}
  </update>

  <resultMap id="UserPageHomeBo" type="com.goafanti.user.bo.UserPageHomeBo">
    <result column="uid" jdbcType="VARCHAR" property="uid" />
    <result column="lvl" jdbcType="INTEGER" property="lvl" />
    <result column="nickname" jdbcType="VARCHAR" property="nickname" />
    <result column="email" jdbcType="VARCHAR" property="email" />
    <result column="number" jdbcType="INTEGER" property="number" />
    <result column="type" jdbcType="INTEGER" property="type" />
    <result column="person_portrait_url" jdbcType="VARCHAR" property="personPortraitUrl" />
    <result column="logo_url" jdbcType="VARCHAR" property="logoUrl" />
    <result column="grade_name" jdbcType="VARCHAR" property="gradeName" />
  </resultMap>

  <resultMap id="UserDownLoadBo" type="com.goafanti.user.bo.UserDownLoadBo">
    <id column="id" jdbcType="VARCHAR" property="id" />
    <result column="diploma_url" jdbcType="VARCHAR" property="diplomaUrl" />
    <result column="degree_diploma_url" jdbcType="VARCHAR" property="degreeDiplomaUrl" />
    <result column="professional_certificate_url" jdbcType="VARCHAR" property="professionalCertificateUrl" />
    <result column="qualification_certificate_url" jdbcType="VARCHAR" property="qualificationCertificateUrl" />
    <result column="positive_id_url" jdbcType="VARCHAR" property="positiveIdUrl" />
    <result column="opposite_id_url" jdbcType="VARCHAR" property="oppositeIdUrl" />
  </resultMap>

  <select id="selectByMobieAndType" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from user
    where mobile = #{0} and type=#{1} and source = 0
  </select>

  <select id="selectUserPageHomeBoByUserId" parameterType="java.lang.String" resultMap="UserPageHomeBo">
    select
      u.lvl,mg.grade_name , u.nickname, u.email,
      u.number, u.type, u.head_portrait_url as person_portrait_url,
      u.company_logo_url as logo_url, u.id as uid, adc.achievement_count as achievementNum,
      adc.demand_count as demandNum
    from user u
           LEFT JOIN achievement_demand_count adc on adc.uid = u.id
           LEFT JOIN  member_grade mg ON mg.member_rank=u.lvl
    where u.id = #{uid,jdbcType = VARCHAR}
  </select>

  <select id="selectUserDownLoadBoByUserId" parameterType="java.lang.String" resultMap="UserDownLoadBo">
    select u.id,i.positive_id_url ,i.opposite_id_url,c.professional_certificate_url,c.qualification_certificate_url,
           e.diploma_url, e.degree_diploma_url
    from user u
           LEFT JOIN user_identity i on u.id = i.uid
           LEFT JOIN user_career c on u.id = c.uid
           LEFT JOIN user_edu e on u.id = e.uid
    where u.id =#{id,jdbcType=VARCHAR}
  </select>

  <select id="findUserListByPage" parameterType="String" resultType="com.goafanti.user.bo.UserListBo">
    select
    u.id ,
    u.mobile,
    u.email,
    u.create_time as createTime,
    u.number ,
    i.username,
    i.audit_status as auditStatus,
    a.name as adminName,
    ad.name as managerName
    from user u
    LEFT JOIN admin a on a.id = u.aid
    LEFT JOIN admin ad on ad.id = u.mid
    LEFT JOIN user_identity i
    ON u.id = i.uid  where u.type = 0
    <if test="mobile != null">
      and u.mobile = #{mobile,jdbcType=VARCHAR}
    </if>
    <if test="email != null">
      and u.email = #{email,jdbcType=VARCHAR}
    </if>
    <if test="pStart != null">
      and u.create_time <![CDATA[ > ]]> #{pStart,jdbcType=TIMESTAMP}
    </if>
    <if test="pEnd != null">
      and u.create_time <![CDATA[ < ]]> #{pEnd,jdbcType=TIMESTAMP}
    </if>
    <if test=" number != null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="username != null">
      and i.username like CONCAT ('%',#{username,jdbcType=VARCHAR},'%')
    </if>
    <if test="auditStatus != null">
      and i.audit_status= #{auditStatus,jdbcType=INTEGER}
    </if>
    order by u.number desc
    <if test="page_sql!=null">
      ${page_sql}
    </if>
  </select>

  <select id="findUserCount" parameterType="String" resultType="java.lang.Integer">
    select count(1)
    from user u LEFT JOIN user_identity i
    ON u.id = i.uid
    WHERE u.type = 0
    <if test="mobile != null">
      and u.mobile = #{mobile,jdbcType=VARCHAR}
    </if>
    <if test="email != null">
      and u.email = #{email,jdbcType=VARCHAR}
    </if>
    <if test="pStart != null">
      and u.create_time <![CDATA[ > ]]> #{pStart,jdbcType=TIMESTAMP}
    </if>
    <if test="pEnd != null">
      and u.create_time <![CDATA[ < ]]> #{pEnd,jdbcType=TIMESTAMP}
    </if>
    <if test="number != null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="username != null">
      and i.username like CONCAT ('%',#{username,jdbcType=VARCHAR},'%')
    </if>
    <if test="auditStatus != null">
      and i.audit_status= #{auditStatus,jdbcType=INTEGER}
    </if>
  </select>

  <select id="findOrgListByPage" parameterType="String" resultType="com.goafanti.user.bo.OrgListBo">
    select u.id ,u.mobile, u.email, u.create_time as createTime,
    u.number, o.audit_status as orgAuditStatus, a.name as adminName,
    o.unit_name as unitName, ad.name as managerName
    from user u
    LEFT JOIN admin a on a.id = u.aid
    LEFT JOIN admin ad on ad.id = u.mid
    LEFT JOIN organization_identity o
    ON u.id = o.uid
    WHERE u.type = 1

    <if test="mobile != null">
      and u.mobile = #{mobile,jdbcType=VARCHAR}
    </if>
    <if test="uid != null">
      and u.id = #{uid,jdbcType=VARCHAR}
    </if>
    <if test="email != null">
      and u.email = #{email,jdbcType=VARCHAR}
    </if>
    <if test="pStart != null">
      and u.create_time <![CDATA[ >= ]]> #{pStart,jdbcType=TIMESTAMP}
    </if>
    <if test="pEnd != null">
      and u.create_time <![CDATA[ < ]]> #{pEnd,jdbcType=TIMESTAMP}
    </if>
    <if test=" number != null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="unitName != null">
      and o.unit_name = #{unitName,jdbcType=VARCHAR}
    </if>
    <if test="auditStatus != null">
      and o.audit_status= #{auditStatus,jdbcType=INTEGER}
    </if>
    order by u.number desc
    <if test="page_sql!=null">
      ${page_sql}
    </if>
  </select>

  <select id="findOrgCount" parameterType="String" resultType="java.lang.Integer">
    select count(1)
    from user u LEFT JOIN organization_identity o
    ON u.id = o.uid
    WHERE u.type = 1
    <if test="uid != null">
      and u.id = #{uid,jdbcType=VARCHAR}
    </if>
    <if test="mobile != null">
      and u.mobile = #{mobile,jdbcType=VARCHAR}
    </if>
    <if test="email != null">
      and u.email = #{email,jdbcType=VARCHAR}
    </if>
    <if test="pStart != null">
      and u.create_time <![CDATA[ >= ]]> #{pStart,jdbcType=TIMESTAMP}
    </if>
    <if test="pEnd != null">
      and u.create_time <![CDATA[ < ]]> #{pEnd,jdbcType=TIMESTAMP}
    </if>
    <if test=" number != null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="unitName != null">
      and o.unit_name = #{unitName,jdbcType=VARCHAR}
    </if>
    <if test="auditStatus != null">
      and o.audit_status= #{auditStatus,jdbcType=INTEGER}
    </if>
  </select>

  <select id="findUserByAidWithParamsListByPage" parameterType="java.lang.String" resultType="com.goafanti.user.bo.OrgListBo">
    select
    u.id ,
    u.mobile,
    u.email,
    u.create_time as createTime,
    u.number ,
    a.name as adminName,
    ma.name as managerName,
    u.type,
    i.username,
    i.audit_status as userAuditStatus
    from user u
    LEFT JOIN admin a on a.id = u.aid
    LEFT JOIN admin ma on ma.id = u.mid
    LEFT JOIN user_identity i on u.id = i.uid
    where u.type = 0
    <if test="aid != null">
      and u.aid = #{aid,jdbcType=VARCHAR}
    </if>
    <if test="number !=null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="mobile !=null">
      and u.mobile= #{mobile,jdbcType=VARCHAR}
    </if>
    <if test="auditStatus !=null">
      and i.audit_status = #{auditStatus,jdbcType=INTEGER}
    </if>
    <if test="auditName !=null">
      and i.username like CONCAT('%',#{auditName,jdbcType=VARCHAR},'%')
    </if>
    <if test="email !=null">
      and u.email = #{email,jdbcType=VARCHAR}
    </if>
    <if test="startCreateTime !=null">
      and u.create_time <![CDATA[ >= ]]> #{startCreateTime,jdbcType=TIMESTAMP}
    </if>
    <if test="endCreateTime !=null">
      and u.create_time <![CDATA[ < ]]> #{endCreateTime,jdbcType=TIMESTAMP}
    </if>
    order by u.number desc
    <if test="page_sql!=null">
      ${page_sql}
    </if>
  </select>

  <select id="findUserByAidWithParamsCount" parameterType="String" resultType="java.lang.Integer">
    select
    count(1)
    from user u
    LEFT JOIN admin a on a.id = u.aid
    LEFT JOIN user_identity i on u.id = i.uid
    where u.type = 0
    <if test="aid != null">
      and u.aid = #{aid,jdbcType=VARCHAR}
    </if>
    <if test="number !=null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="mobile !=null">
      and u.mobile= #{mobile,jdbcType=VARCHAR}
    </if>
    <if test="auditStatus !=null">
      and i.audit_status = #{auditStatus,jdbcType=INTEGER}
    </if>
    <if test="auditName !=null">
      and i.username like CONCAT('%',#{auditName,jdbcType=VARCHAR},'%')
    </if>
    <if test="email !=null">
      and u.email = #{email,jdbcType=VARCHAR}
    </if>
    <if test="startCreateTime !=null">
      and u.create_time <![CDATA[ >= ]]> #{startCreateTime,jdbcType=TIMESTAMP}
    </if>
    <if test="endCreateTime !=null">
      and u.create_time <![CDATA[ < ]]> #{endCreateTime,jdbcType=TIMESTAMP}
    </if>
  </select>


  <select id="findOrgByAidWithParamsListByPage" parameterType="java.lang.String" resultType="com.goafanti.user.bo.OrgListBo">
    select
    u.id ,
    u.mobile,
    u.email,
    u.create_time as createTime,
    u.number ,
    a.name as adminName,
    ma.name as managerName,
    u.type,
    i.unit_name as unitName,
    i.audit_status as orgAuditStatus
    from user u
    LEFT JOIN admin a on a.id = u.aid
    LEFT JOIN admin ma on ma.id = u.mid
    LEFT JOIN organization_identity i on u.id = i.uid
    where u.type = 1
    <if test="aid != null">
      and u.aid = #{aid,jdbcType=VARCHAR}
    </if>
    <if test="number !=null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="mobile !=null">
      and u.mobile= #{mobile,jdbcType=VARCHAR}
    </if>
    <if test="auditStatus !=null">
      and i.audit_status = #{auditStatus,jdbcType=INTEGER}
    </if>
    <if test="auditName !=null">
      and i.unit_name like CONCAT('%',#{auditName,jdbcType=VARCHAR},'%')
    </if>
    <if test="email !=null">
      and u.email = #{email,jdbcType=VARCHAR}
    </if>
    <if test="startCreateTime !=null">
      and u.create_time <![CDATA[ >= ]]> #{startCreateTime,jdbcType=TIMESTAMP}
    </if>
    <if test="endCreateTime !=null">
      and u.create_time <![CDATA[ < ]]> #{endCreateTime,jdbcType=TIMESTAMP}
    </if>
    order by u.number desc
    <if test="page_sql!=null">
      ${page_sql}
    </if>
  </select>

  <select id="findOrgByAidWithParamsCount" parameterType="String" resultType="java.lang.Integer">
    select
    count(1)
    from user u
    LEFT JOIN admin a on a.id = u.aid
    LEFT JOIN organization_identity i on u.id = i.uid
    where u.type = 1
    <if test="aid != null">
      and u.aid = #{aid,jdbcType=VARCHAR}
    </if>
    <if test="number !=null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="mobile !=null">
      and u.mobile= #{mobile,jdbcType=VARCHAR}
    </if>
    <if test="auditStatus !=null">
      and i.audit_status = #{auditStatus,jdbcType=INTEGER}
    </if>
    <if test="auditName !=null">
      and i.unit_name like CONCAT('%',#{auditName,jdbcType=VARCHAR},'%')
    </if>
    <if test="email !=null">
      and u.email = #{email,jdbcType=VARCHAR}
    </if>
    <if test="startCreateTime !=null">
      and u.create_time <![CDATA[ >= ]]> #{startCreateTime,jdbcType=TIMESTAMP}
    </if>
    <if test="endCreateTime !=null">
      and u.create_time <![CDATA[ < ]]> #{endCreateTime,jdbcType=TIMESTAMP}
    </if>
  </select>



  <select id="findUserByNameAndMobile" resultType="java.lang.String">
    select
    ui.username
    from user u
    left join user_identity ui on u.id = ui.uid
    where u.lvl &gt; 0 and u.type = 0 and ui.audit_status = 5
    <if test="name != null">
      and ui.username = #{name,jdbcType=VARCHAR}
    </if>
    <if test="mobile != null">
      and u.mobile = #{mobile,jdbcType=VARCHAR}
    </if>
  </select>

  <select id="findOrgByNameAndMobile" resultType="java.lang.String">
    select
    oi.unit_name
    from user u
    left join organization_identity oi on u.id = oi.uid
    where u.lvl &gt; 0 and u.type = 1 and oi.audit_status = 5
    <if test="name != null">
      and oi.unit_name = #{name,jdbcType=VARCHAR}
    </if>
    <if test="mobile != null">
      and u.mobile = #{mobile,jdbcType=VARCHAR}
    </if>
  </select>

  <select id="findAreaManagerUserListByPage" parameterType="String" resultType="com.goafanti.user.bo.UserListBo">
    select
    u.id ,
    u.mobile,
    u.email,
    u.create_time as createTime,
    u.number ,
    i.audit_status as auditStatus,
    i.username,
    a.name as adminName,
    ad.name as managerName
    from user u
    LEFT JOIN admin a on a.id = u.aid
    LEFT JOIN admin ad on ad.id = u.mid
    LEFT JOIN user_identity i on u.id = i.uid
    where u.type = 0
    <if test="mobile != null">
      and u.mobile = #{mobile,jdbcType=VARCHAR}
    </if>
    <if test="email != null">
      and u.email = #{email,jdbcType=VARCHAR}
    </if>
    <if test="pStart != null">
      and u.create_time <![CDATA[ > ]]> #{pStart,jdbcType=TIMESTAMP}
    </if>
    <if test="pEnd != null">
      and u.create_time <![CDATA[ < ]]> #{pEnd,jdbcType=TIMESTAMP}
    </if>
    <if test=" number != null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="username != null">
      and i.username like CONCAT('%',#{username,jdbcType=VARCHAR},'%')
    </if>
    <if test="auditStatus != null">
      and i.audit_status= #{auditStatus,jdbcType=INTEGER}
    </if>

    <if test="provinceList != null">
      and  i.province in
      <foreach close=")" collection="provinceList" item="plist" open="(" separator=",">
        #{plist}
      </foreach>
    </if>
    <if test="cityList != null">
      and i.city in
      <foreach close=")" collection="cityList" item="clist" open="(" separator=",">
        #{clist}
      </foreach>
    </if>

    order by u.number desc
    <if test="page_sql!=null">
      ${page_sql}
    </if>
  </select>

  <select id="findAreaManagerUserCount" parameterType="String" resultType="java.lang.Integer">
    select count(1)
    from user u LEFT JOIN user_identity i
    ON u.id = i.uid
    WHERE u.type = 0
    <if test="mobile != null">
      and u.mobile = #{mobile,jdbcType=VARCHAR}
    </if>
    <if test="email != null">
      and u.email = #{email,jdbcType=VARCHAR}
    </if>
    <if test="pStart != null">
      and u.create_time <![CDATA[ > ]]> #{pStart,jdbcType=TIMESTAMP}
    </if>
    <if test="pEnd != null">
      and u.create_time <![CDATA[ < ]]> #{pEnd,jdbcType=TIMESTAMP}
    </if>
    <if test="number != null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="username != null">
      and i.username like CONCAT('%',#{username,jdbcType=VARCHAR},'%')
    </if>
    <if test="auditStatus != null">
      and i.audit_status= #{auditStatus,jdbcType=INTEGER}
    </if>

    <if test="provinceList != null">
      and  i.province in
      <foreach close=")" collection="provinceList" item="plist" open="(" separator=",">
        #{plist}
      </foreach>
    </if>
    <if test="cityList != null">
      and i.city in
      <foreach close=")" collection="cityList" item="clist" open="(" separator=",">
        #{clist}
      </foreach>
    </if>
  </select>

  <select id="findAreaManagerOrgListByPage" parameterType="String" resultType="com.goafanti.user.bo.OrgListBo">
    select
    u.id ,
    u.mobile,
    u.email,
    u.create_time as createTime,
    u.number ,
    o.audit_status as orgAuditStatus,
    a.name as adminName,
    o.unit_name as unitName,
    ad.name as managerName
    from user u
    LEFT JOIN admin a on a.id = u.aid
    LEFT JOIN admin ad on ad.id = u.mid
    LEFT JOIN organization_identity o on u.id = o.uid
    WHERE u.type = 1
    <if test="mobile != null">
      and u.mobile = #{mobile,jdbcType=VARCHAR}
    </if>
    <if test="uid != null">
      and u.id = #{uid,jdbcType=VARCHAR}
    </if>
    <if test="email != null">
      and u.email = #{email,jdbcType=VARCHAR}
    </if>
    <if test="pStart != null">
      and u.create_time <![CDATA[ >= ]]> #{pStart,jdbcType=TIMESTAMP}
    </if>
    <if test="pEnd != null">
      and u.create_time <![CDATA[ < ]]> #{pEnd,jdbcType=TIMESTAMP}
    </if>
    <if test=" number != null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="unitName != null">
      and o.unit_name like '%'#{unitName,jdbcType=VARCHAR}'%'
    </if>
    <if test="auditStatus != null">
      and o.audit_status= #{auditStatus,jdbcType=INTEGER}
    </if>
    <if test="provinceList != null">
      and  o.licence_province in
      <foreach close=")" collection="provinceList" item="plist" open="(" separator=",">
        #{plist}
      </foreach>
    </if>
    <if test="cityList != null">
      and o.licence_city in
      <foreach close=")" collection="cityList" item="clist" open="(" separator=",">
        #{clist}
      </foreach>
    </if>
    order by u.number desc
    <if test="page_sql!=null">
      ${page_sql}
    </if>
  </select>

  <select id="findAreaManagerOrgCount" parameterType="String" resultType="java.lang.Integer">
    select count(1)
    from user u LEFT JOIN organization_identity o
    ON u.id = o.uid
    WHERE u.type = 1
    <if test="uid != null">
      and u.id = #{uid,jdbcType=VARCHAR}
    </if>
    <if test="mobile != null">
      and u.mobile = #{mobile,jdbcType=VARCHAR}
    </if>
    <if test="email != null">
      and u.email = #{email,jdbcType=VARCHAR}
    </if>
    <if test="pStart != null">
      and u.create_time <![CDATA[ >= ]]> #{pStart,jdbcType=TIMESTAMP}
    </if>
    <if test="pEnd != null">
      and u.create_time <![CDATA[ < ]]> #{pEnd,jdbcType=TIMESTAMP}
    </if>
    <if test=" number != null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="unitName != null">
      and o.unit_name like '%'#{unitName,jdbcType=VARCHAR}'%'
    </if>
    <if test="auditStatus != null">
      and o.audit_status= #{auditStatus,jdbcType=INTEGER}
    </if>
    <if test="provinceList != null">
      and  i.province in
      <foreach close=")" collection="provinceList" item="plist" open="(" separator=",">
        #{plist}
      </foreach>
    </if>
    <if test="cityList != null">
      and i.city in
      <foreach close=")" collection="cityList" item="clist" open="(" separator=",">
        #{clist}
      </foreach>
    </if>
  </select>

  <select id="findUserPartnerDetail" parameterType="java.lang.String" resultType="com.goafanti.user.bo.UserPartnerDetailBo">
    select
    u.id,i.username,i.work_unit as workUnit,i.professional_title as position,u.introduction as achievement,
    u.head_portrait_url as personPortraitUrl,
    i.province,
    u.introduction as personalProfile,
    ua.ability_label as abilityLabel,i.qualification,
    i.graduate_school,i.major_category,i.work_unit as workUnit,
    ic.name as engagedField
    from `user` u
    left join user_identity i on u.id=i.uid
    left join
    user_career c on u.id=c.uid
    <!-- left join user_info info on u.id=info.uid -->
    left join user_ability ua on u.id=ua.uid
    left join user_edu e on u.id=e.uid
    left join industry_category ic on i.industry=ic.id
    WHERE
    u.type = 0
    <if test="_parameter!= null">
      and u.id= #{_parameter,jdbcType=VARCHAR}
    </if>
  </select>

  <select id="findOrgPartnerDetail" parameterType="java.lang.String" resultType="com.goafanti.user.bo.OrgPartnerDetailBo">
    select
    u.id,i.username,c.work_unit as work_unit,c.position,c.achievement,
    u.head_portrait_url as personPortraitUrl,
    i.province,u.introduction as personalProfile,
    ua.ability_label as abilityLabel
    from `user` u
    left join user_identity i on u.id=i.uid
    left join
    user_career c on u.id=c.uid
    <!-- left join user_info info on u.id=info.uid -->
    left join user_ability ua on u.id=ua.uid
    WHERE
    u.type = 1
    <if test="_parameter!= null">
      and u.id= #{_parameter,jdbcType=VARCHAR}
    </if>
  </select>

  <select id="findStarListByPage" parameterType="String" resultType="com.goafanti.user.bo.StarListBo">
    select
    u.id as uid,
    u.number,
    ui.username,
    uc.engaged_field as engagedField,
    uc.professional_title as professionalTitle,
    uc.work_unit as workUnit,
    adc.achievement_count as achievementNum
    from user u
    left join user_identity ui on ui.uid = u.id
    left join user_career uc on uc.uid = u.id
    left join achievement_demand_count adc on adc.uid = u.id
    where
    ui.celebrity = 1
    <if test="number != null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="engagedField != null">
      and uc.engaged_field like CONCAT(#{engagedField,jdbcType=VARCHAR},'%')
    </if>
    <if test="username != null">
      and ui.username like CONCAT('%',#{username,jdbcType=VARCHAR},'%')
    </if>
    <if test="professionalTitle != null">
      and uc.professional_title like CONCAT('%',#{professionalTitle,jdbcType=VARCHAR},'%')
    </if>
    <if test="workUnit != null">
      and uc.work_unit like CONCAT('%',#{workUnit,jdbcType=VARCHAR},'%')
    </if>
    ORDER BY adc.achievement_count DESC
    <if test="page_sql!=null">
      ${page_sql}
    </if>

  </select>

  <select id="findStarCount" parameterType="String" resultType="java.lang.Integer">
    select
    count(1)
    from user u
    left join user_identity ui on ui.uid = u.id
    left join user_career uc on uc.uid = u.id
    where
    ui.celebrity = 1
    <if test="number != null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="engagedField != null">
      and uc.engaged_field like CONCAT(#{engagedField,jdbcType=VARCHAR},'%')
    </if>
    <if test="username != null">
      and ui.username like CONCAT('%',#{username,jdbcType=VARCHAR},'%')
    </if>
    <if test="professionalTitle != null">
      and uc.professional_title like CONCAT('%',#{professionalTitle,jdbcType=VARCHAR},'%')
    </if>
    <if test="workUnit != null">
      and uc.work_unit like CONCAT('%',#{workUnit,jdbcType=VARCHAR},'%')
    </if>
  </select>

  <select id="findStarAndExpertListByPage" parameterType="String" resultType="com.goafanti.user.bo.StarAndExpertListBo">
    select
    u.id as uid,
    u.number,
    ui.username,
    uc.engaged_field as engagedField,
    uc.professional_title as professionalTitle,
    uc.work_unit as workUnit,
    adc.achievement_count as achievementNum
    from user u
    left join user_identity ui on ui.uid = u.id
    left join user_career uc on uc.uid = u.id
    left join achievement_demand_count adc on adc.uid = u.id
    where
    (ui.celebrity = 1 or ui.expert = 1)
    <if test="number != null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="engagedField != null">
      and uc.engaged_field like CONCAT(#{engagedField,jdbcType=VARCHAR},'%')
    </if>
    <if test="username != null">
      and ui.username like CONCAT('%',#{username,jdbcType=VARCHAR},'%')
    </if>
    <if test="professionalTitle != null">
      and uc.professional_title like CONCAT('%',#{professionalTitle,jdbcType=VARCHAR},'%')
    </if>
    <if test="workUnit != null">
      and uc.work_unit like CONCAT('%',#{workUnit,jdbcType=VARCHAR},'%')
    </if>
    ORDER BY adc.achievement_count DESC
    <if test="page_sql!=null">
      ${page_sql}
    </if>

  </select>

  <select id="findStarAndExpertCount" parameterType="String" resultType="java.lang.Integer">
    select
    count(1)
    from user u
    left join user_identity ui on ui.uid = u.id
    left join user_career uc on uc.uid = u.id
    where
    (ui.celebrity = 1 or ui.expert = 1)
    <if test="number != null">
      and u.number = #{number,jdbcType=INTEGER}
    </if>
    <if test="engagedField != null">
      and uc.engaged_field like CONCAT(#{engagedField,jdbcType=VARCHAR},'%')
    </if>
    <if test="username != null">
      and ui.username like CONCAT('%',#{username,jdbcType=VARCHAR},'%')
    </if>
    <if test="professionalTitle != null">
      and uc.professional_title like CONCAT('%',#{professionalTitle,jdbcType=VARCHAR},'%')
    </if>
    <if test="workUnit != null">
      and uc.work_unit like CONCAT('%',#{workUnit,jdbcType=VARCHAR},'%')
    </if>
  </select>

  <select id="selectNumberByPrimaryKey" parameterType="String" resultType="java.lang.Long">
    select number
    from user
    where id = #{id,jdbcType=VARCHAR}
  </select>

  <select id="findUserPartner" parameterType="String" resultType="com.goafanti.user.bo.UserPartnerDetailBo">
    select
    u.id,i.username,c.work_unit as work_unit,c.position,c.achievement,
    u.head_portrait_url as personPortraitUrl,
    i.province,
    u.introduction as personalProfile,
    ua.ability_label as abilityLabel,i.uid,u.type
    from `user` u
    left join user_identity i on u.id=i.uid
    left join
    user_career c on u.id=c.uid
    <!-- left join user_info info on u.id=info.uid -->
    left join user_ability ua on u.id=ua.uid
    WHERE
    u.type = 0
    limit 0,50
  </select>

  <select id="checkUser" resultMap="BaseResultMap">
    select
    id
    from
    user
    where status <![CDATA[!= ]]> 1
    <if test="id != null and id != ''">
      and id = #{id,jdbcType=VARCHAR}
    </if>
    <if test="identifyName != null and identifyName != ''">
      and identify_name = #{identifyName,jdbcType=VARCHAR}
    </if>
    <if test="mobile != null and mobile !=''">
      and mobile = #{mobile,jdbcType=VARCHAR}
    </if>
    <if test="type != null">
      and type = #{type,jdbcType=INTEGER}
    </if>
    <if test="source != null">
      and source = #{source,jdbcType=INTEGER}
    </if>
    <if test="nickname != null and nickname != ''">
      and nickname = #{nickname,jdbcType=INTEGER}
    </if>

  </select>

  <select id="userInterest" resultType="com.goafanti.user.bo.UserInterestBo">
    select
      t.to_uid as id,y.username as name,y.work_unit as workUnit,y.professional_title as professionalTitle,t.create_time as createTime
    from user_interest t
           LEFT  join user_identity y on t.to_uid=y.uid
           LEFT  join user u on t.to_uid=u.id
    where t.from_uid=#{uid,jdbcType=VARCHAR}

  </select>
  <select id="selectBaseInfo" parameterType="java.lang.String" resultType="com.goafanti.app.bo.UserBasicInfo">
    select
      a.id,
      a.mobile,
      a.nickname,
      a.email,
      a.number,
      a.type,
      a.company_logo_url as companyLogoUrl,
      a.head_portrait_url as headPortraitUrl,
      a.introduction,
      b.registration_id as registrationId,
      b.easemob_name as easemobName,
      b.easemob_pass as easemobPass
    from user a left join jpush_easemob_account b
                          on a.id = b.uid
    where
      a.id = #{id,jdbcType=VARCHAR}
  </select>

  <select id="selectByNumber" parameterType="java.lang.String" resultMap="BaseResultMap">
    select nickname,head_portrait_url from user where number = #{easemobName,jdbcType=VARCHAR}
  </select>

  <update id="updateEnteringAudit" parameterType="com.goafanti.common.model.User">
    update user
    <set>
      <if test="auditStatus != null">
        audit_status = #{auditStatus,jdbcType=INTEGER},
      </if>
      <if test="auditOpinion != null">
        audit_opinion = #{auditOpinion,jdbcType=VARCHAR},
      </if>
    </set>
    where id = #{id,jdbcType=VARCHAR}
  </update>

  <select id="selectUserByRoleName" parameterType="java.lang.String" resultMap="BaseResultMap">
    select DISTINCT  c.id from role a left join user_role b on a.id = b.rid left join admin c on b.uid = c.id where a.role_name in(#{roleName1},#{roleName2})
  </select>
  <update id="updateDimissionTransfer">
    update user
    set aid=#{transferId,jdbcType=VARCHAR},
        information_maintainer=#{transferId,jdbcType=VARCHAR},
        source=3
    where aid=#{aid,jdbcType=VARCHAR}
  </update>
  <select id="getAidAndUser" resultType="java.lang.Integer">
    select count(*) from `user`
    where aid=#{aid,jdbcType=VARCHAR} and id=#{uid,jdbcType=VARCHAR}
  </select>
  <update id="pushUserGuidance">
    update user set guidance=#{guidance} where id=#{id}
  </update>
  <update id="updateList">
    update user
    <set>
      <if test="source != null">
        source = #{source,jdbcType=INTEGER},
      </if>
      <if test="level != null">
        level= #{level,jdbcType=INTEGER},
      </if>
      <if test="aid != null">
        aid = #{aid,jdbcType=VARCHAR},
      </if>
      <if test="data ==1">
        information_maintainer = #{aid,jdbcType=VARCHAR},
      </if>
      <if test="transferTime != null">
        transfer_time = #{transferTime,jdbcType=TIMESTAMP},
      </if>
      <if test="shareType != null">
        share_type = #{shareType,jdbcType=VARCHAR}
      </if>
    </set>
    where id in
    <foreach item="item" collection="list" separator="," open="(" close=")" index="">
      #{item}
    </foreach>
  </update>
  <select id="selectByName" parameterType="java.lang.String" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from user
    where nickname  = #{name} limit 1
  </select>

  <select id="selectPrivateOrganizationCustomerList" resultType="com.goafanti.customer.bo.CustomerListOut">
    select a.id uid,a.aid,a.nickname name,a.society_tag societyTag,a.`level`,b.name aName,dg1.name as province,dg2.name as city,
    a.guidance, dg3.name as area,d.intended_project  intendedProject,d.business_scope businessScope,d.org_code orgCode,
    date_format(um.last_sign_time,'%Y-%m-%d %H:%i:%S') lastSignTime,
    date_format(a.transfer_time,'%Y-%m-%d %H:%i:%S') as transferTime,
    date_format(a.create_time,'%Y-%m-%d %H:%i:%S') as createTime,
    date_format(um.last_follow_time,'%Y-%m-%d %H:%i:%S') lastFollowTime,
    if(a.transfer_time &lt; um.last_follow_time,um.last_follow_time,a.transfer_time) as orderTime
    from user a left join admin b on a.aid=b.id left join organization_identity d on a.id = d.uid
    left join district_glossory dg1 on d.location_province = dg1.id
    left join district_glossory dg2 on d.location_city = dg2.id
    left join district_glossory dg3 on d.location_area = dg3.id
    left join user_mid um on um.aid=a.aid and um.uid=a.id
    where a.type= 1   and a.source in(1,2,3) and a.share_type = 0 and a.new_channel=0
    <if test="power ==0">
      and a.aid = #{aid,jdbcType=VARCHAR}
    </if>
    <if test="power ==1  or power ==2">
      and a.aid
      <if test="alist != null">
        in
        <foreach item="item" collection="alist" separator="," open="(" close=")" index="">
          #{item}
        </foreach>
      </if>
      <if test="alist == null">
        is null
      </if>
    </if>
    <if test="name != null and name != ''">
      and a.nickname like concat('%',#{name},'%')
    </if>
    <if test="startDate != null and endDate != null">
      and a.transfer_time BETWEEN #{startDate} and #{endDate}
    </if>
    <if test="province != null">
      and d.location_province = #{province,jdbcType=INTEGER}
    </if>
    <if test="city != null">
      and d.location_city = #{city,jdbcType=INTEGER}
    </if>
    <if test="area != null">
      and d.location_area = #{area,jdbcType=INTEGER}
    </if>
    <if test="level != null">
      and a.level = #{level,jdbcType=INTEGER}
    </if>
    <if test="sort != 1">
      order by orderTime
    </if>
    <if test="sort == 1">
      order by a.create_time
    </if>
    <if test="sortType == 1">
      desc
    </if>
    ,a.transfer_time desc
    <if test="page_sql != null">
      ${page_sql}
    </if>
  </select>
  <select id="selectPrivateOrganizationCustomerCount" resultType="java.lang.Integer">
    select count(*)
    from user a left join admin b on a.aid=b.id left join organization_identity d on a.id = d.uid
    left join district_glossory dg1 on d.location_province = dg1.id
    left join district_glossory dg2 on d.location_city = dg2.id
    left join district_glossory dg3 on d.location_area = dg3.id
    left join user_mid um on um.aid=a.aid and um.uid=a.id
    /*inner join (select aid,uid from user_follow uf group by aid,uid) t0
    on a.id=t0.uid and a.aid =t0.aid*/
    where a.type= 1   and a.source in(1,2,3) and a.share_type = 0 and a.new_channel=0
    <if test="power ==0">
      and a.aid = #{aid,jdbcType=VARCHAR}
    </if>
    <if test="power ==1  or power ==2">
      and a.aid
      <if test="alist != null">
        in
        <foreach item="item" collection="alist" separator="," open="(" close=")" index="">
          #{item}
        </foreach>
      </if>
      <if test="alist == null">
        is null
      </if>
    </if>
    <if test="name != null and name != ''">
      and a.nickname like concat('%',#{name},'%')
    </if>
    <if test="startDate != null and endDate != null">
      and a.transfer_time BETWEEN #{startDate} and #{endDate}
    </if>
    <if test="province != null">
      and d.location_province = #{province,jdbcType=INTEGER}
    </if>
    <if test="city != null">
      and d.location_city = #{city,jdbcType=INTEGER}
    </if>
    <if test="area != null">
      and d.location_area = #{area,jdbcType=INTEGER}
    </if>
    <if test="level != null">
      and a.level = #{level,jdbcType=INTEGER}
    </if>
  </select>
  <select id="findMainProductsList" resultType="com.goafanti.customer.bo.OutUserMianProducts">
    select oi.id ,u.id uid, u.nickname userName, oi.business_scope businessScope,
    um.update_name updateName,um.update_aid updateAid,u.share_type shareType,
    <if test="shiroType ==2">
      a.name adminName,d.name depName,dg.name province,
    </if>
    date_format(u.transfer_time ,'%Y-%m-%d %H:%i:%s')transferTimes,
    date_format(um.date_update_time,'%Y-%m-%d %H:%i:%s')dateUpdateTimes
    from `user` u
    <if test="shiroType==0">
      inner join (select b.buyer_id from t_order_task a left join t_order_new b
      on a.order_no = b.order_no where a.main = 1 and a.split_status in (0, 1)
      and a.task_receiver = #{aid} group by b.buyer_id) t0 on t0.buyer_id = u.id
    </if>
    left join organization_identity oi on u.id = oi.uid left join user_mid um on u.id=um.uid
    <if test="shiroType==2">
      left join admin a on u.aid=a.id left join department d on a.department_id =d.id
      left join district_glossory dg on oi.location_province =dg.id
    </if>
    where  u.`type` =1 and u.status=0 and u.new_channel=0
    <if test="shiroType==1">
      and u.information_maintainer = #{aid}
    </if>
    <if test="shiroType==2">
      <if test="adminName !=null">
        and  a.name like concat('%', #{adminName},'%')
      </if>
      <if test="depId !=null">
        and d.id= #{depId}
      </if>

    </if>
    <if test="shareType !=null">
      and u.share_type = #{shareType}
    </if>
    <if test="userName != null">
      and u.nickname like concat('%',#{userName},'%')
    </if>
    <if test="key !=null">
      and oi.business_scope like concat('%',#{key},'%')
    </if>
    <if test="startTime !=null and endTime !=null">
      and u.transfer_time between #{startTime} and #{endTime}
    </if>
    <if test="page_sql != null">
      ${page_sql}
    </if>
  </select>
  <select id="findMainProductsCount" resultType="java.lang.Integer">
    select count(*) from `user` u
    <if test="shiroType==0">
      inner join (select b.buyer_id from t_order_task a left join t_order_new b
      on a.order_no = b.order_no where a.main = 1 and a.split_status in (0, 1)
      and a.task_receiver = #{aid} group by b.buyer_id) t0 on t0.buyer_id = u.id
    </if>
    left join organization_identity oi on u.id = oi.uid
    <if test="shiroType==2">
      <if test="adminName !=null or depId !=null">
        left join admin a on u.aid=a.id left join department d on a.department_id =d.id
      </if>
    </if>
    where  u.`type` =1 and u.status=0 and u.new_channel=0
    <if test="shiroType==1">
      and u.information_maintainer = #{aid}
    </if>
    <if test="shiroType==2">
      <if test="adminName !=null">
        and  a.name like concat('%', #{adminName},'%')
      </if>
      <if test="depId !=null">
        and d.id= #{depId}
      </if>

    </if>
    <if test="shareType !=null">
      and u.share_type = #{shareType}
    </if>
    <if test="userName != null">
      and u.nickname like concat('%',#{userName},'%')
    </if>
    <if test="key !=null">
      and oi.business_scope like concat('%',#{key},'%')
    </if>
    <if test="startTime !=null and endTime !=null">
      and u.transfer_time between #{startTime} and #{endTime}
    </if>
  </select>

</mapper>
