<?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.WDistributerMapper">
  <resultMap id="BaseResultMap" type="com.fuxi.ws.data.entity.WDistributer">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Mon Aug 17 11:04:41 CST 2015.
    -->
    <id column="VIP" jdbcType="VARCHAR" property="vip" />
    <result column="wxId" jdbcType="NVARCHAR" property="wxid" />
    <result column="RecommenderVIP" jdbcType="VARCHAR" property="recommendervip" />
    <result column="TotalSale" jdbcType="DECIMAL" property="totalsale" />
    <result column="TatalRebate" jdbcType="DECIMAL" property="tatalrebate" />
    <result column="CurrRebate" jdbcType="DECIMAL" property="currrebate" />
    <result column="OutRebate" jdbcType="DECIMAL" property="outrebate" />
    <result column="DepartmentID" jdbcType="VARCHAR" property="departmentid" />
    <result column="ShopName" jdbcType="NVARCHAR" property="shopname" />
    <result column="VipBank" jdbcType="NVARCHAR" property="vipbank" />
    <result column="VipBankNo" jdbcType="VARCHAR" property="vipbankno" />
    <result column="HoldName" jdbcType="NVARCHAR" property="holdname" />
    <result column="Created" jdbcType="TIMESTAMP" property="created" />
    <result column="Confirmed" jdbcType="TIMESTAMP" property="confirmed" />
    <result column="Status" jdbcType="TINYINT" property="status" />
  </resultMap>
  <sql id="Example_Where_Clause">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Mon Aug 17 11:04:41 CST 2015.
    -->
    <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 Mon Aug 17 11:04:41 CST 2015.
    -->
    VIP, wxId, RecommenderVIP, TotalSale, TatalRebate, CurrRebate, OutRebate, DepartmentID, 
    ShopName, VipBank, VipBankNo, HoldName, Created, Confirmed, Status
  </sql>
  <select id="selectByExample" parameterType="com.fuxi.ws.data.entity.WDistributerExample" resultMap="BaseResultMap">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Mon Aug 17 11:04:41 CST 2015.
    -->
    select
    <if test="distinct">
      distinct
    </if>
    'false' as QUERYID,
    <include refid="Base_Column_List" />
    from W_Distributer
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
    <if test="orderByClause != null">
      order by ${orderByClause}
    </if>
  </select>
  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Mon Aug 17 11:04:41 CST 2015.
    -->
    select 
    <include refid="Base_Column_List" />
    from W_Distributer
    where VIP = #{vip,jdbcType=VARCHAR}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Mon Aug 17 11:04:41 CST 2015.
    -->
    delete from W_Distributer
    where VIP = #{vip,jdbcType=VARCHAR}
  </delete>
  <insert id="insert" parameterType="com.fuxi.ws.data.entity.WDistributer">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Mon Aug 17 11:04:41 CST 2015.
    -->
    insert into W_Distributer (VIP, wxId, RecommenderVIP, 
      TotalSale, TatalRebate, CurrRebate, 
      OutRebate, DepartmentID, ShopName, 
      VipBank, VipBankNo, HoldName, 
      Created, Confirmed, Status
      )
    values (#{vip,jdbcType=VARCHAR}, #{wxid,jdbcType=NVARCHAR}, #{recommendervip,jdbcType=VARCHAR}, 
      #{totalsale,jdbcType=DECIMAL}, #{tatalrebate,jdbcType=DECIMAL}, #{currrebate,jdbcType=DECIMAL}, 
      #{outrebate,jdbcType=DECIMAL}, #{departmentid,jdbcType=VARCHAR}, #{shopname,jdbcType=NVARCHAR}, 
      #{vipbank,jdbcType=NVARCHAR}, #{vipbankno,jdbcType=VARCHAR}, #{holdname,jdbcType=NVARCHAR}, 
      #{created,jdbcType=TIMESTAMP}, #{confirmed,jdbcType=TIMESTAMP}, #{status,jdbcType=TINYINT}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.fuxi.ws.data.entity.WDistributer">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Mon Aug 17 11:04:41 CST 2015.
    -->
    insert into W_Distributer
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="vip != null">
        VIP,
      </if>
      <if test="wxid != null">
        wxId,
      </if>
      <if test="recommendervip != null">
        RecommenderVIP,
      </if>
      <if test="totalsale != null">
        TotalSale,
      </if>
      <if test="tatalrebate != null">
        TatalRebate,
      </if>
      <if test="currrebate != null">
        CurrRebate,
      </if>
      <if test="outrebate != null">
        OutRebate,
      </if>
      <if test="departmentid != null">
        DepartmentID,
      </if>
      <if test="shopname != null">
        ShopName,
      </if>
      <if test="vipbank != null">
        VipBank,
      </if>
      <if test="vipbankno != null">
        VipBankNo,
      </if>
      <if test="holdname != null">
        HoldName,
      </if>
      <if test="created != null">
        Created,
      </if>
      <if test="confirmed != null">
        Confirmed,
      </if>
      <if test="status != null">
        Status,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="vip != null">
        #{vip,jdbcType=VARCHAR},
      </if>
      <if test="wxid != null">
        #{wxid,jdbcType=NVARCHAR},
      </if>
      <if test="recommendervip != null">
        #{recommendervip,jdbcType=VARCHAR},
      </if>
      <if test="totalsale != null">
        #{totalsale,jdbcType=DECIMAL},
      </if>
      <if test="tatalrebate != null">
        #{tatalrebate,jdbcType=DECIMAL},
      </if>
      <if test="currrebate != null">
        #{currrebate,jdbcType=DECIMAL},
      </if>
      <if test="outrebate != null">
        #{outrebate,jdbcType=DECIMAL},
      </if>
      <if test="departmentid != null">
        #{departmentid,jdbcType=VARCHAR},
      </if>
      <if test="shopname != null">
        #{shopname,jdbcType=NVARCHAR},
      </if>
      <if test="vipbank != null">
        #{vipbank,jdbcType=NVARCHAR},
      </if>
      <if test="vipbankno != null">
        #{vipbankno,jdbcType=VARCHAR},
      </if>
      <if test="holdname != null">
        #{holdname,jdbcType=NVARCHAR},
      </if>
      <if test="created != null">
        #{created,jdbcType=TIMESTAMP},
      </if>
      <if test="confirmed != null">
        #{confirmed,jdbcType=TIMESTAMP},
      </if>
      <if test="status != null">
        #{status,jdbcType=TINYINT},
      </if>
    </trim>
  </insert>
  <select id="countByExample" parameterType="com.fuxi.ws.data.entity.WDistributerExample" resultType="java.lang.Integer">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Mon Aug 17 11:04:41 CST 2015.
    -->
    select count(*) from W_Distributer
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
  </select>
  <update id="updateByPrimaryKeySelective" parameterType="com.fuxi.ws.data.entity.WDistributer">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Mon Aug 17 11:04:41 CST 2015.
    -->
    update W_Distributer
    <set>
      <if test="wxid != null">
        wxId = #{wxid,jdbcType=NVARCHAR},
      </if>
      <if test="recommendervip != null">
        RecommenderVIP = #{recommendervip,jdbcType=VARCHAR},
      </if>
      <if test="totalsale != null">
        TotalSale = #{totalsale,jdbcType=DECIMAL},
      </if>
      <if test="tatalrebate != null">
        TatalRebate = #{tatalrebate,jdbcType=DECIMAL},
      </if>
      <if test="currrebate != null">
        CurrRebate = #{currrebate,jdbcType=DECIMAL},
      </if>
      <if test="outrebate != null">
        OutRebate = #{outrebate,jdbcType=DECIMAL},
      </if>
      <if test="departmentid != null">
        DepartmentID = #{departmentid,jdbcType=VARCHAR},
      </if>
      <if test="shopname != null">
        ShopName = #{shopname,jdbcType=NVARCHAR},
      </if>
      <if test="vipbank != null">
        VipBank = #{vipbank,jdbcType=NVARCHAR},
      </if>
      <if test="vipbankno != null">
        VipBankNo = #{vipbankno,jdbcType=VARCHAR},
      </if>
      <if test="holdname != null">
        HoldName = #{holdname,jdbcType=NVARCHAR},
      </if>
      <if test="created != null">
        Created = #{created,jdbcType=TIMESTAMP},
      </if>
      <if test="confirmed != null">
        Confirmed = #{confirmed,jdbcType=TIMESTAMP},
      </if>
      <if test="status != null">
        Status = #{status,jdbcType=TINYINT},
      </if>
    </set>
    where VIP = #{vip,jdbcType=VARCHAR}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.fuxi.ws.data.entity.WDistributer">
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Mon Aug 17 11:04:41 CST 2015.
    -->
    update W_Distributer
    set wxId = #{wxid,jdbcType=NVARCHAR},
      RecommenderVIP = #{recommendervip,jdbcType=VARCHAR},
      TotalSale = #{totalsale,jdbcType=DECIMAL},
      TatalRebate = #{tatalrebate,jdbcType=DECIMAL},
      CurrRebate = #{currrebate,jdbcType=DECIMAL},
      OutRebate = #{outrebate,jdbcType=DECIMAL},
      DepartmentID = #{departmentid,jdbcType=VARCHAR},
      ShopName = #{shopname,jdbcType=NVARCHAR},
      VipBank = #{vipbank,jdbcType=NVARCHAR},
      VipBankNo = #{vipbankno,jdbcType=VARCHAR},
      HoldName = #{holdname,jdbcType=NVARCHAR},
      Created = #{created,jdbcType=TIMESTAMP},
      Confirmed = #{confirmed,jdbcType=TIMESTAMP},
      Status = #{status,jdbcType=TINYINT}
    where VIP = #{vip,jdbcType=VARCHAR}
  </update>
  
  <!-- 获取分销商的团队信息 -->
  <select id="selectMyTeam" parameterType="java.util.HashMap" resultType="java.util.LinkedHashMap">   
    select a.VIP,a.wxId,a.RecommenderVIP,a.TotalSale,a.TatalRebate,a.CurrRebate,a.OutRebate,a.Created,
    	a.Confirmed,a.Status,b.VIP NickName,b.MobilePhone
    from W_Distributer a inner join
    vip b on a.VIP=b.VIPID
    where a.RecommenderVIP = #{vipid,jdbcType=VARCHAR}
    <if test="status != -1">
    	and a.Status = #{status,jdbcType=TINYINT}
    </if>
  </select>
  
  <!-- 后台分销商列表 -->
  <select id="selectCorpTeam" parameterType="java.util.HashMap" resultType="java.util.LinkedHashMap">   
    select a.VIP,a.wxId,a.RecommenderVIP,a.TotalSale,a.TatalRebate,a.CurrRebate,a.OutRebate,e.IsGuide,
		case when a.Created is null then '' else 
		convert(varchar(10),a.Created,121) + '<![CDATA[<br/>]]>'
		+ convert(varchar(8),a.Created,108) end as Created,
		case when a.Confirmed is null then ''  else 
		convert(varchar(10),a.Confirmed,121) + '<![CDATA[<br/>]]>'
		+ convert(varchar(8),a.Confirmed,108) end as Confirmed,
    	isnull(b.PhotoUrl,'') PhotoUrl,case when b.VIP is not null and b.VIP<![CDATA[<>]]>'' then b.VIP + '<![CDATA[<br/>]]>' else '' end + ISNULL(b.MobilePhone,'') NickName,
    	isnull(c.Department,'') Department,a.Status,
    	case when b.IsDistribute=1 then case a.Status when 0 then '未审核' when 1 then '已通过' when 2 then '已拒绝' end else '未审核' end StatusName,
    	case when t.VIP is not null and t.VIP<![CDATA[<>]]>'' then t.VIP + '<![CDATA[<br/>]]>' else '' end + ISNULL(t.MobilePhone,'') RecommenderName
    from W_Distributer a inner join
    vip b on a.VIP=b.VIPID left join
    vip t on t.VIPID=a.RecommenderVIP left join
    Department c on c.DepartmentID=a.DepartmentID
       left join Employee e on e.VIPID=a.VIP
    <if test="conditions != null and conditions != ''">
		where			
		${conditions}
	</if>
	order by a.Created desc
  </select>
  
  <!-- 英雄榜销售数据排名 -->
  <select id="wdistributerSalesRanking" resultType="java.util.LinkedHashMap">
		${textSQL}
  </select>
  
  <!-- 获取可升级的分销商信息 -->
  <select id="selectRise" parameterType="java.util.HashMap"  resultType="java.util.LinkedHashMap">   
    select a.VIPID,a.wxId,a.VIP,a.MobilePhone 
	from VIP a inner join
	(
		select t.VIPID  from W_Distributer inner join
		(
			select SUM(a.TotalSale-a.TotalReturn) as RealSale,a.VIPID from W_Profitshar a inner join 
			W_Distributer b on a.VIPID=b.VIP 
			where b.RecommenderVIP<![CDATA[<>]]>'' and a.Created>= DATEADD(d,-30,#{sdate}) and a.Created<![CDATA[<]]>#{sdate}
			group by a.VIPID
		) t on  W_Distributer.VIP=t.VIPID
		where t.RealSale >= #{realsale}
	) tb on tb.VIPID=a.VIPID
  </select>
  
  <!-- 升级分销商 -->
  <select id="riseDistribute" >
 	update W_Distributer set RecommenderOld = RecommenderVIP
    where VIP in 
    <if test="list.size() &gt;0">
		<foreach close=")" collection="list" index="index" item="item" open="(" separator=",">
			#{item}
		</foreach>
	</if>
    update W_Distributer set RecommenderVIP = '',RiseDate=#{curdate}
    where VIP in 
    <if test="list.size() &gt;0">
		<foreach close=")" collection="list" index="index" item="item" open="(" separator=",">
			#{item}
		</foreach>
	</if>
  </select>
</mapper>