<?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.fuxi.ws.data.dao.WGuideMapper">
  <resultMap id="BaseResultMap" type="com.fuxi.ws.data.entity.WGuide">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Sun Jun 12 11:42:47 CST 2016.
    -->
    <id column="VIPID" jdbcType="VARCHAR" property="vipid" />
    <id column="EmployeeID" jdbcType="VARCHAR" property="employeeid" />
    <result column="Created" jdbcType="TIMESTAMP" property="created" />
    <result column="Pass" jdbcType="TINYINT" property="pass" />
    <result column="PassTime" jdbcType="TIMESTAMP" property="passtime" />
    <result column="PassReason" jdbcType="NVARCHAR" property="passreason" />
    <result column="LastChatDate" jdbcType="TIMESTAMP" property="lastchatdate" />
    <result column="IsDefault" jdbcType="TINYINT" property="isdefault" />
  </resultMap>
  <sql id="Example_Where_Clause">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Sun Jun 12 11:42:47 CST 2016.
    -->
    <where>
      <foreach collection="oredCriteria" item="criteria" separator="or">
        <if test="criteria.valid">
          <trim prefix="(" prefixOverrides="and" suffix=")">
            <foreach collection="criteria.criteria" item="criterion">
              <choose>
                <when test="criterion.noValue">
                  and ${criterion.condition}
                </when>
                <when test="criterion.singleValue">
                  and ${criterion.condition} #{criterion.value}
                </when>
                <when test="criterion.betweenValue">
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                </when>
                <when test="criterion.listValue">
                  and ${criterion.condition}
                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
                    #{listItem}
                  </foreach>
                </when>
              </choose>
            </foreach>
          </trim>
        </if>
      </foreach>
    </where>
  </sql>
  <sql id="Base_Column_List">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Sun Jun 12 11:42:47 CST 2016.
    -->
    VIPID, EmployeeID, Created, Pass, PassTime, PassReason, LastChatDate, IsDefault
  </sql>
  <select id="selectByExample" parameterType="com.fuxi.ws.data.entity.WGuideExample" resultMap="BaseResultMap">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Sun Jun 12 11:42:47 CST 2016.
    -->
    select
    <if test="distinct">
      distinct
    </if>
    'false' as QUERYID,
    <include refid="Base_Column_List" />
    from W_Guide
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
    <if test="orderByClause != null">
      order by ${orderByClause}
    </if>
  </select>
  <select id="selectByPrimaryKey" parameterType="com.fuxi.ws.data.entity.WGuideKey" resultMap="BaseResultMap">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Sun Jun 12 11:42:47 CST 2016.
    -->
    select 
    <include refid="Base_Column_List" />
    from W_Guide
    where VIPID = #{vipid,jdbcType=VARCHAR}
      and EmployeeID = #{employeeid,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="com.fuxi.ws.data.entity.WGuideKey">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Sun Jun 12 11:42:47 CST 2016.
    -->
    delete from W_Guide
    where VIPID = #{vipid,jdbcType=VARCHAR}
      and EmployeeID = #{employeeid,jdbcType=VARCHAR}
  </delete>
  <insert id="insert" parameterType="com.fuxi.ws.data.entity.WGuide">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Sun Jun 12 11:42:47 CST 2016.
    -->
    insert into W_Guide (VIPID, EmployeeID, Created, 
      Pass, PassTime, PassReason, 
      LastChatDate, IsDefault)
    values (#{vipid,jdbcType=VARCHAR}, #{employeeid,jdbcType=VARCHAR}, #{created,jdbcType=TIMESTAMP}, 
      #{pass,jdbcType=TINYINT}, #{passtime,jdbcType=TIMESTAMP}, #{passreason,jdbcType=NVARCHAR}, 
      #{lastchatdate,jdbcType=TIMESTAMP}, #{isdefault,jdbcType=TINYINT})
  </insert>
  <insert id="insertSelective" parameterType="com.fuxi.ws.data.entity.WGuide">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Sun Jun 12 11:42:47 CST 2016.
    -->
    insert into W_Guide
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="vipid != null">
        VIPID,
      </if>
      <if test="employeeid != null">
        EmployeeID,
      </if>
      <if test="created != null">
        Created,
      </if>
      <if test="pass != null">
        Pass,
      </if>
      <if test="passtime != null">
        PassTime,
      </if>
      <if test="passreason != null">
        PassReason,
      </if>
      <if test="lastchatdate != null">
        LastChatDate,
      </if>
      <if test="isdefault != null">
        IsDefault,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="vipid != null">
        #{vipid,jdbcType=VARCHAR},
      </if>
      <if test="employeeid != null">
        #{employeeid,jdbcType=VARCHAR},
      </if>
      <if test="created != null">
        #{created,jdbcType=TIMESTAMP},
      </if>
      <if test="pass != null">
        #{pass,jdbcType=TINYINT},
      </if>
      <if test="passtime != null">
        #{passtime,jdbcType=TIMESTAMP},
      </if>
      <if test="passreason != null">
        #{passreason,jdbcType=NVARCHAR},
      </if>
      <if test="lastchatdate != null">
        #{lastchatdate,jdbcType=TIMESTAMP},
      </if>
      <if test="isdefault != null">
        #{isdefault,jdbcType=TINYINT},
      </if>
    </trim>
  </insert>
  <select id="countByExample" parameterType="com.fuxi.ws.data.entity.WGuideExample" resultType="java.lang.Integer">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Sun Jun 12 11:42:47 CST 2016.
    -->
    select count(*) from W_Guide
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
  </select>
  <update id="updateByPrimaryKeySelective" parameterType="com.fuxi.ws.data.entity.WGuide">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Sun Jun 12 11:42:47 CST 2016.
    -->
    update W_Guide
    <set>
      <if test="created != null">
        Created = #{created,jdbcType=TIMESTAMP},
      </if>
      <if test="pass != null">
        Pass = #{pass,jdbcType=TINYINT},
      </if>
      <if test="passtime != null">
        PassTime = #{passtime,jdbcType=TIMESTAMP},
      </if>
      <if test="passreason != null">
        PassReason = #{passreason,jdbcType=NVARCHAR},
      </if>
      <if test="lastchatdate != null">
        LastChatDate = #{lastchatdate,jdbcType=TIMESTAMP},
      </if>
      <if test="isdefault != null">
        IsDefault = #{isdefault,jdbcType=TINYINT},
      </if>
    </set>
    where VIPID = #{vipid,jdbcType=VARCHAR}
      and EmployeeID = #{employeeid,jdbcType=VARCHAR}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.fuxi.ws.data.entity.WGuide">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Sun Jun 12 11:42:47 CST 2016.
    -->
    update W_Guide
    set Created = #{created,jdbcType=TIMESTAMP},
      Pass = #{pass,jdbcType=TINYINT},
      PassTime = #{passtime,jdbcType=TIMESTAMP},
      PassReason = #{passreason,jdbcType=NVARCHAR},
      LastChatDate = #{lastchatdate,jdbcType=TIMESTAMP},
      IsDefault = #{isdefault,jdbcType=TINYINT}
    where VIPID = #{vipid,jdbcType=VARCHAR}
      and EmployeeID = #{employeeid,jdbcType=VARCHAR}
  </update>
	<!--我的导购 -->
	<select id="queryMyguideBySql" resultType="java.util.LinkedHashMap">
		select g.EmployeeID,g.VIPID,d.Department,e.MobilPhone as MobilePhone,e.PhotoUrl,
		case when c.goodcom is null then 0 when c.goodcom=0 then 0 else convert(decimal(10,1),convert(decimal(10,1),goodsum)/convert(decimal(10,1),goodcom)) end as goodpoint,
		e.Name,'0' as news,g.LastChatDate,g.IsDefault
		from W_Guide as g (nolock)
		inner join Employee as e (nolock) on e.EmployeeID=g.EmployeeID
		inner join Department as d (nolock) on e.DepartmentID=d.DepartmentID
		left join (select EmployeeID,SUM(ISNULL(ComLevel,0)) as goodsum,COUNT(*) as goodcom from W_GuideComment (nolock) group by EmployeeID) as c on c.EmployeeID=g.EmployeeID
		where e.IsGuide=1 and e.StopFlag=0 and g.VIPID=#{ vipid }
	</select>

	<!--我的导购 总仓导购 -->
	<select id="queryguideByGeneralstore" resultType="java.util.LinkedHashMap">
		select * from (select  e.EmployeeID,d.Department,e.MobilPhone as MobilePhone,e.PhotoUrl,
		case when c.goodcom is null then 0 when c.goodcom=0 then 0 else convert(decimal(10,1),
		convert(decimal(10,1),goodsum)/convert(decimal(10,1),goodcom)) end as goodpoint,e.Name,'0' as news
		from W_Guide as g (nolock)right join Employee as e (nolock) on e.EmployeeID=g.EmployeeID
		inner join Department as d (nolock) on e.DepartmentID=d.DepartmentID
		left join (select EmployeeID,SUM(ISNULL(ComLevel,0)) as goodsum,COUNT(*) as 
		goodcom from W_GuideComment (nolock) group by EmployeeID) as c
		on c.EmployeeID=g.EmployeeID
		  where e.IsGuide=1 and e.StopFlag=0 and d.DefaultFlag=1
		   group by e.EmployeeID,d.Department,e.MobilPhone,e.PhotoUrl,c.goodcom,c.goodsum,e.Name
		   ) t
	</select>

	<!--我的导购 (按距离远近) -->
	<select id="queryguideByDistance" resultType="java.util.LinkedHashMap">
	<![CDATA[
		select
		g.EmployeeID,g.VIPID,d.Department,e.MobilPhone as MobilePhone,e.PhotoUrl,
		isnull(c.goodcom,0) as goodcom,e.Name,'0' as news,d.Distance
		from W_Guide as g
		inner join Employee as e on e.EmployeeID=g.EmployeeID
		inner join (select
		DepartmentID,Department,EShopSendFlag,(case when
		(sin(convert(decimal(9,6),#{ lat })*0.01745329252)*sin(convert(decimal(9,6),ISNULL(location_y,0))*0.01745329252)+cos(convert(decimal(9,6),#{ lat })*0.01745329252)*cos(convert(decimal(9,6),ISNULL(location_y,0))*0.01745329252)*cos(convert(decimal(9,6),#{ lang })*0.01745329252-convert(decimal(9,6),ISNULL(location_x,0))*0.01745329252))>1 
		then 6370693.5*ACOS(1)
		when
		(sin(convert(decimal(9,6),#{ lat })*0.01745329252)*sin(convert(decimal(9,6),ISNULL(location_y,0))*0.01745329252)+cos(convert(decimal(9,6),#{ lat })*0.01745329252)*cos(convert(decimal(9,6),ISNULL(location_y,0))*0.01745329252)*cos(convert(decimal(9,6),#{ lang })*0.01745329252-convert(decimal(9,6),ISNULL(location_x,0))*0.01745329252))<-1 
		then 6370693.5*ACOS(-1)
		else
		6370693.5*ACOS(sin(convert(decimal(9,6),#{ lat })*0.01745329252)*sin(convert(decimal(9,6),ISNULL(location_y,0))*0.01745329252)+cos(convert(decimal(9,6),#{ lat })*0.01745329252)*cos(convert(decimal(9,6),ISNULL(location_y,0))*0.01745329252)*cos(convert(decimal(9,6),#{ lang })*0.01745329252-convert(decimal(9,6),ISNULL(location_x,0))*0.01745329252))
		end) as Distance
		from Department) as d on e.DepartmentID=d.DepartmentID
		left join (select EmployeeID,COUNT(*) as goodcom from W_GuideComment where ComLevel=3
		group by EmployeeID) as c on c.EmployeeID=g.EmployeeID
		where e.IsGuide=1 and e.StopFlag=0 and g.VIPID=#{ vipid } and ${ distance } 
		]]>
	</select>

	<!--选择导购（不包括已选择的导购） -->
	<select id="queryAddguideBySql" resultType="java.util.LinkedHashMap">
		<![CDATA[
		select
		e.EmployeeID,e.Name,e.MobilPhone as MobilePhone,e.PhotoUrl,d.Department,d.DepartmentID,
		case when c.goodcom is null then 0.0 when c.goodcom=0.0 then 0.0 else convert(decimal(10,1),convert(decimal(10,1),goodsum)/convert(decimal(10,1),goodcom)) end as goodpoint,
		isnull(d.distance,0) as distance
		from (select Top 10000000
		DepartmentID,Department,(case when
		(sin(convert(decimal(9,6),#{ lat })*0.01745329252)*sin(convert(decimal(9,6),ISNULL(location_y,0))*0.01745329252)+cos(convert(decimal(9,6),#{ lat })*0.01745329252)*cos(convert(decimal(9,6),ISNULL(location_y,0))*0.01745329252)*cos(convert(decimal(9,6),#{ lang })*0.01745329252-convert(decimal(9,6),ISNULL(location_x,0))*0.01745329252))>1 
		then 6370693.5*ACOS(1)
		when
		(sin(convert(decimal(9,6),#{ lat })*0.01745329252)*sin(convert(decimal(9,6),ISNULL(location_y,0))*0.01745329252)+cos(convert(decimal(9,6),#{ lat })*0.01745329252)*cos(convert(decimal(9,6),ISNULL(location_y,0))*0.01745329252)*cos(convert(decimal(9,6),#{ lang })*0.01745329252-convert(decimal(9,6),ISNULL(location_x,0))*0.01745329252))<-1 
		then 6370693.5*ACOS(-1)
		else
		6370693.5*ACOS(sin(convert(decimal(9,6),#{ lat })*0.01745329252)*sin(convert(decimal(9,6),ISNULL(location_y,0))*0.01745329252)+cos(convert(decimal(9,6),#{ lat })*0.01745329252)*cos(convert(decimal(9,6),ISNULL(location_y,0))*0.01745329252)*cos(convert(decimal(9,6),#{ lang })*0.01745329252-convert(decimal(9,6),ISNULL(location_x,0))*0.01745329252))
		end) as
		distance,EShopSendFlag
		from Department order by distance) as d
		left join
		Employee as e on e.DepartmentID=d.DepartmentID
		left join (select EmployeeID,SUM(ISNULL(ComLevel,0)) as goodsum,COUNT(*) as goodcom from W_GuideComment (nolock) group by EmployeeID) as c on
		c.EmployeeID=e.EmployeeID
		where e.StopFlag=0 and e.IsGuide=1 and
		e.EmployeeID not in (select EmployeeID from
		W_Guide where VIPID=#{
		vipid }) and ${ distance } 
		order by d.distance,d.Department,e.Name
		]]>
	</select>

	<select id="theirGuiders" resultType="java.util.LinkedHashMap">
		<if test="vipid != null and vipid != ''">select
			a.VIPID,a.EmployeeID,b.DepartmentID,b.Name from
			W_Guide a
			join
			Employee
			b
			on a.EmployeeID=b.EmployeeID
			where
			a.VIPID=#{vipid} and
			b.DepartmentID=#{departmentid} and b.IsGuide='1'
		</if>
		<if test="vipid == null or vipid == ''">
			select * from Employee where DepartmentID=#{ departmentid
			} and IsGuide='1' order by zw
		</if>
	</select>

	<select id="getGuidersByVip" resultType="java.util.LinkedHashMap">
		select
		a.EmployeeID,c.Name,d.Department,count(b.EmployeeID) Comment from
		W_Guide a
		left join W_GuideComment b on a.EmployeeID=b.EmployeeID and
		b.ComLevel='3'
		join Employee c on a.EmployeeID=c.EmployeeID
		join
		Department d on c.DepartmentID=d.DepartmentID
		where a.VIPID=#{vipid}
		group by
		a.EmployeeID,c.Name,d.Department
	</select>
	
	<!-- 查询会员绑定的导购 -->
	<select id="getGuidersOfVip" resultType="java.util.LinkedHashMap">
		select
		a.EmployeeID,c.Name,IsDefault from
		W_Guide a inner	join Employee c on a.EmployeeID=c.EmployeeID
		where a.VIPID=#{vipid}
		order by IsDefault desc
	</select>

	<select id="getExistGuide" resultType="java.util.LinkedHashMap">
		select
		a.VIPID,a.EmployeeID from W_Guide a
		join Employee b on
		a.EmployeeID=b.EmployeeID
		where a.VIPID=#{vipid} and
		b.DepartmentID=#{departmentid}
	</select>

	<delete id="delSameDeptGuide">
		delete a from W_Guide a
		join Employee b on
		a.EmployeeID=b.EmployeeID
		where a.VIPID=#{vipid} and
		b.DepartmentID=#{departmentid}
	</delete>

	<delete id="sharevipdel">
		delete a from W_Guide a join Employee b on
		a.EmployeeID=b.EmployeeID
		where a.VIPID=#{vipid} and b.DepartmentID in
		(select DepartmentID from Employee where EmployeeID=#{employeeid})
	</delete>
	<delete id="allsharevipdel">
		delete a from W_Guide a where a.VIPID=#{vipid} 
	</delete>

	<!-- 导购未读消息 -->
	<select id="news" resultType="java.util.LinkedHashMap">
		${paramSQL}
	</select>

	<!-- 客户咨询 -->
	<select id="consultation" resultType="java.util.LinkedHashMap">
		${paramSQL}
	</select>

	<insert id="sendmaps">
		${paramSQL}
	</insert>

	<!-- 自动获取导购 -->
	<select id="autoguide" resultType="java.util.LinkedHashMap">
		select
		employeeid,code,name,vipid
		from Employee where VIPID!='' and VIPID is
		not null and IsGuide=1 and
		StopFlag=0
	</select>

	<select id="guideinfo" resultType="java.util.LinkedHashMap">
		select
		e.EmployeeID,e.DepartmentID,e.Name,isnull(e.PhotoUrl,'') as
		PhotoUrl,e.MobilPhone as MobilePhone,d.Department 
		from Employee
		as e
		left join
		Department as d on
		e.DepartmentID=d.DepartmentID
		where
		e.EmployeeID=#{employeeid}
	</select>

	<!-- 导购员中心——客户咨询——客户列表 -->
	<select id="selectvipsbyguideid" resultType="java.util.LinkedHashMap">
		select *
		from VIP
		<if test="conditions != null and conditions != ''">
			where
			${conditions}
		</if>
		order by VIP
	</select>
	
	<select id="guidevips" resultType="java.util.LinkedHashMap">
		${conditions}
	</select>
	
	<select id="guidecomment" resultType="java.util.LinkedHashMap">
		${paramSQL}
	</select>
	<select id="sendvips" resultType="java.util.LinkedHashMap">
		${paramSQL}
	</select>

	<!-- 群发消息列表 -->
	<select id="mapsrecord" resultType="java.util.LinkedHashMap">
		${paramSQL}
	</select>

	<!-- 收银台订单详情选择会员 -->
	<select id="guidevip" resultType="java.util.LinkedHashMap">
		select
		a.EmployeeID,a.VIPID,b.VIP,b.LineNickname,b.PhotoUrl,b.MobilePhone
		from W_Guide as a
		inner join VIP as b on a.VIPID=b.VIPID
		<if test="conditions != null and conditions != ''">
			where
			${conditions}
		</if>
		order by b.VIP
	</select>
	<select id="searchvip" resultType="java.util.LinkedHashMap">
		select b.VIPID,b.VIP,b.LineNickname,b.PhotoUrl,b.MobilePhone
		from VIP b
		<if test="conditions != null and conditions != ''">
			where
			${conditions}
		</if>
		order by b.VIP
	</select>
	
	<select id="selectByPrimaryVIPID"  parameterType="java.lang.String"  resultMap="BaseResultMap">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Sun Jun 12 11:42:47 CST 2016.
    -->
    select 
    <include refid="Base_Column_List" />
    from W_Guide
    where VIPID = #{vipid,jdbcType=VARCHAR} and Pass=0
  </select>
</mapper>