| <?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.matrix.system.hive.dao.SysVipInfoDao"> | 
|   | 
|     <resultMap type="SysVipInfo" id="SysVipInfoMap"> | 
|         <id property="id" column="ID"/> | 
|         <result property="vipNo" column="VIP_NO"/> | 
|         <result property="vipName" column="VIP_NAME"/> | 
|         <result property="phone" column="PHONE"/> | 
|         <result property="sex" column="SEX"/> | 
|         <result property="birthday1" column="BIRTHDAY1"/> | 
|         <result property="addr" column="ADDR"/> | 
|         <result property="constell" column="CONSTELL"/> | 
|         <result property="animalSign" column="ANIMAL_SIGN"/> | 
|         <result property="arrivalWay" column="ARRIVAL_WAY"/> | 
|         <result property="vipType" column="VIP_TYPE"/> | 
|         <result property="vipState" column="VIP_STATE"/> | 
|         <result property="pointAll" column="POINT_ALL"/> | 
|         <result property="commissionAll" column="COMMISSION_ALL"/> | 
|         <result property="inDate" column="IN_DATE"/> | 
|         <result property="remark" column="REMARK"/> | 
|         <result property="staffId" column="STAFF_ID"/> | 
|         <result property="shopId" column="SHOP_ID"/> | 
|         <result property="passWord" column="PASSWORD"/> | 
|         <result property="email" column="EMAIL"/> | 
|         <result property="beatuyId" column="BEATUY_ID"/> | 
|         <result property="createTime" column="CREATE_TIME"/> | 
|         <result property="levelId" column="LEVEL_ID"/> | 
|         <result property="uuid" column="UUID"/> | 
|         <result property="balance" column="BALANCE"/> | 
|         <result property="photo" column="photo"/> | 
|         <result property="openId" column="openid"/> | 
|         <result property="disease" column="disease"/> | 
|         <result property="zjm" column="zjm"/> | 
|         <result property="companyId" column="company_id"/> | 
|         <result property="province" column="province"/> | 
|         <result property="city" column="city"/> | 
|         <result property="area" column="area"/> | 
|         <result property="recommendId" column="recommend_id"/> | 
|   | 
|         <result property="statu" column="statu"/> | 
|         <result property="birthdayType" column="birthdayType"/> | 
|         <result property="blood" column="blood"/> | 
|         <result property="sfCard" column="sfCard"/> | 
|         <result property="link" column="link"/> | 
|         <result property="marry" column="marry"/> | 
|         <result property="vocation" column="vocation"/> | 
|         <result property="handleTime" column="handle_time"/> | 
|         <result property="parentId" column="parent_id"/> | 
|         <result property="isDeal" column="is_deal"/> | 
|         <result property="createDistributionTime" column="create_distribution_time"/> | 
|   | 
|   | 
|         <!-- 扩展属性 --> | 
|         <result property="staffName" column="STAFF_NAME"/> | 
|         <result property="shopName" column="SHOP_NAME"/> | 
|         <association property="vipLevel" column="{id=LEVEL_ID}" | 
|                      select="com.matrix.system.hive.dao.SysVipLevelDao.selectById"></association> | 
|   | 
|         <collection property="beauticains" column="{vipId=ID}" | 
|                     select="com.matrix.system.hive.dao.MyBeaticianDao.selectByVipId"></collection> | 
|     </resultMap> | 
|   | 
|     <resultMap type="SysVipInfo" id="SysVipInfoMapSimple"> | 
|         <id property="id" column="ID"/> | 
|         <result property="vipNo" column="VIP_NO"/> | 
|         <result property="vipName" column="VIP_NAME"/> | 
|         <result property="phone" column="PHONE"/> | 
|         <result property="sex" column="SEX"/> | 
|         <result property="birthday1" column="BIRTHDAY1"/> | 
|         <result property="addr" column="ADDR"/> | 
|         <result property="constell" column="CONSTELL"/> | 
|         <result property="animalSign" column="ANIMAL_SIGN"/> | 
|         <result property="arrivalWay" column="ARRIVAL_WAY"/> | 
|         <result property="vipType" column="VIP_TYPE"/> | 
|         <result property="vipState" column="VIP_STATE"/> | 
|         <result property="pointAll" column="POINT_ALL"/> | 
|         <result property="commissionAll" column="COMMISSION_ALL"/> | 
|         <result property="inDate" column="IN_DATE"/> | 
|         <result property="remark" column="REMARK"/> | 
|         <result property="staffId" column="STAFF_ID"/> | 
|         <result property="shopId" column="SHOP_ID"/> | 
|         <result property="passWord" column="PASSWORD"/> | 
|         <result property="email" column="EMAIL"/> | 
|         <result property="beatuyId" column="BEATUY_ID"/> | 
|         <result property="createTime" column="CREATE_TIME"/> | 
|         <result property="levelId" column="LEVEL_ID"/> | 
|         <result property="uuid" column="UUID"/> | 
|         <result property="balance" column="BALANCE"/> | 
|         <result property="zjm" column="zjm"/> | 
|         <result property="photo" column="photo"/> | 
|         <result property="statu" column="statu"/> | 
|         <result property="blood" column="blood"/> | 
|         <result property="sfCard" column="sfCard"/> | 
|         <result property="link" column="link"/> | 
|         <result property="marry" column="marry"/> | 
|         <result property="vocation" column="vocation"/> | 
|         <result property="openId" column="openid"/> | 
|         <result property="handleTime" column="handle_time"/> | 
|         <result property="parentId" column="parent_id"/> | 
|         <result property="isDeal" column="is_deal"/> | 
|         <result property="birthdayType" column="birthdayType"/> | 
|         <result property="createDistributionTime" column="create_distribution_time"/> | 
|         <result property="disease" column="disease"/> | 
|         <result property="companyId" column="company_id"/> | 
|         <!-- 扩展属性 --> | 
|         <result property="staffName" column="STAFF_NAME"/> | 
|         <result property="shopName" column="SHOP_NAME"/> | 
|         <association property="vipLevel" javaType="com.matrix.system.hive.bean.SysVipLevel" > | 
|             <result property="levelName" column="levelName"/> | 
|             <result property="vipLevel" column="vipLevel"/> | 
|         </association> | 
|     </resultMap> | 
|   | 
|     <!-- 查询几天内过生日的会员 --> | 
|     <select id="selectByBirthday" resultMap="SysVipInfoMapSimple"> | 
|         select | 
|         ID,VIP_NO,VIP_NAME,PHONE,SEX,BIRTHDAY1,disease,is_deal, | 
|         ADDR,CONSTELL,ANIMAL_SIGN,ARRIVAL_WAY,VIP_TYPE,VIP_STATE,POINT_ALL, | 
|         COMMISSION_ALL,IN_DATE,STAFF_ID,SHOP_ID,IS_DELETE,REMARK,PASSWORD, | 
|         EMAIL,CREATE_TIME,UUID,BALANCE,blood,sfCard,link,marry,vocation,handleTime from | 
|         sys_vip_info | 
|         WHERE company_id=#{companyId} | 
|         and (STAFF_ID = #{staffId} or BEATUY_ID = #{staffId}) | 
|         AND datediff(date_add(concat( | 
|         date_format(BIRTHDAY1, "%Y"), | 
|         date_format(curdate(), "%m%d") | 
|         ),INTERVAL #{day} DAY),BIRTHDAY1) BETWEEN 0 AND #{day} | 
|         OR | 
|         datediff(date_add(concat( | 
|         date_format(BIRTHDAY1, "%Y"), | 
|         date_format(curdate(), "%m%d") | 
|         ),INTERVAL #{day} DAY),BIRTHDAY1) >=365 | 
|         <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> | 
|             <if test="pageVo.sort !=null  and pageVo.order !=null"> | 
|                 order by | 
|                 ${pageVo.sort} ${pageVo.order} | 
|             </if> | 
|             <if test="pageVo.offset >=0  and pageVo.limit >0"> | 
|                 limit | 
|                 #{pageVo.offset},#{pageVo.limit} | 
|             </if> | 
|         </if> | 
|     </select> | 
|     <select id="selectByBirthdayCount" resultType="java.lang.Integer"> | 
|         select count(*) from | 
|         sys_vip_info | 
|         WHERE | 
|         company_id=#{companyId} | 
|         AND (STAFF_ID = #{staffId}  or BEATUY_ID = #{staffId}) | 
|         AND datediff(date_add(concat( | 
|         date_format(BIRTHDAY1, "%Y"), | 
|         date_format(curdate(), "%m%d") | 
|         ),INTERVAL #{day} DAY),BIRTHDAY1) BETWEEN 0 AND #{day} | 
|         OR | 
|         datediff(date_add(concat( | 
|         date_format(BIRTHDAY1, "%Y"), | 
|         date_format(curdate(), "%m%d") | 
|         ),INTERVAL #{day} DAY),BIRTHDAY1) >=365; | 
|     </select> | 
|   | 
|     <!-- 查询几天内存在跟进的会员 --> | 
|     <select id="selectByServiceRocord" resultMap="SysVipInfoMapSimple"> | 
|         select a.* from | 
|         sys_vip_info a | 
|         LEFT JOIN service_record b ON a.ID | 
|         = b.vip_id | 
|         WHERE company_id=#{companyId} | 
|         and (a.STAFF_ID = #{staffId} or a.BEATUY_ID = #{staffId}) | 
|         AND b.follow_time BETWEEN curdate() | 
|         AND | 
|         date_add(curdate(), INTERVAL #{day} DAY) | 
|         <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> | 
|             <if test="pageVo.sort !=null  and pageVo.order !=null"> | 
|                 order by | 
|                 ${pageVo.sort} ${pageVo.order} | 
|             </if> | 
|             <if test="pageVo.offset >=0  and pageVo.limit >0"> | 
|                 limit | 
|                 #{pageVo.offset},#{pageVo.limit} | 
|             </if> | 
|         </if> | 
|     </select> | 
|   | 
|     <select id="selectByServiceRocordCount" resultType="java.lang.Integer"> | 
|         select count(*) from | 
|         sys_vip_info a | 
|         LEFT JOIN service_record b ON a.ID | 
|         = b.vip_id | 
|         WHERE | 
|         company_id=#{companyId} | 
|         and | 
|         (a.STAFF_ID = #{staffId}  or a.BEATUY_ID = #{staffId}) | 
|         AND b.follow_time BETWEEN curdate() | 
|         AND | 
|         date_add(curdate(), INTERVAL #{day} DAY) | 
|     </select> | 
|   | 
|     <!-- 查询几天内存在预约的会员 --> | 
|     <select id="selectByProjService" resultMap="SysVipInfoMapSimple"> | 
|         select a.* FROM | 
|         sys_vip_info a | 
|         LEFT JOIN sys_proj_services b ON a.ID = b.VIP_ID | 
|         WHERE | 
|         company_id=#{companyId} | 
|         and | 
|         (a.STAFF_ID = #{staffId} or a.BEATUY_ID = #{staffId}) | 
|         AND b.YY_TIME BETWEEN curdate() | 
|         AND date_add(curdate(), INTERVAL #{day} DAY) | 
|         AND (b.STATE = '预约成功待处理' or b.STATE = '待预约') | 
|         <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> | 
|             <if test="pageVo.sort !=null  and pageVo.order !=null"> | 
|                 order by | 
|                 ${pageVo.sort} ${pageVo.order} | 
|             </if> | 
|             <if test="pageVo.offset >=0  and pageVo.limit >0"> | 
|                 limit | 
|                 #{pageVo.offset},#{pageVo.limit} | 
|             </if> | 
|         </if> | 
|     </select> | 
|   | 
|     <select id="selectByProjServiceCount" resultType="java.lang.Integer"> | 
|         select count(*)  FROM | 
|         sys_vip_info a | 
|   | 
|         LEFT JOIN sys_proj_services b ON a.ID = b.VIP_ID | 
|         WHERE | 
|         company_id=#{companyId} | 
|         and | 
|         (a.STAFF_ID = #{staffId}  or a.BEATUY_ID = #{staffId}) | 
|         AND b.YY_TIME BETWEEN curdate() | 
|         AND date_add(curdate(), INTERVAL #{day} DAY) | 
|         AND (b.STATE = '预约成功待处理' or b.STATE = '待预约') | 
|     </select> | 
|   | 
|     <!-- 插入方法 --> | 
|     <insert id="insert" parameterType="SysVipInfo" useGeneratedKeys="true" | 
|             keyProperty="id"> | 
|         <selectKey resultType="Long" order="AFTER" keyProperty="id"> | 
|             SELECT LAST_INSERT_ID() AS ID | 
|         </selectKey> | 
|         INSERT INTO sys_vip_info ( | 
|         ID, | 
|         VIP_NO, | 
|         VIP_NAME, | 
|         PHONE, | 
|         SEX, | 
|         BIRTHDAY1, | 
|         ADDR, | 
|         CONSTELL, | 
|         ANIMAL_SIGN, | 
|         ARRIVAL_WAY, | 
|         VIP_TYPE, | 
|         VIP_STATE, | 
|         POINT_ALL, | 
|         COMMISSION_ALL, | 
|         IN_DATE, | 
|         STAFF_ID, | 
|         SHOP_ID, | 
|         IS_DELETE, | 
|         REMARK, | 
|         PASSWORD, | 
|         EMAIL, | 
|         CREATE_TIME, | 
|         UUID, | 
|         BALANCE, | 
|         photo, | 
|         LEVEL_ID, | 
|         openid, | 
|         BEATUY_ID, | 
|         blood, | 
|         sfCard, | 
|         link, | 
|         marry, | 
|         vocation, | 
|         parent_id, | 
|         create_distribution_time, | 
|         birthdayType, | 
|         disease, | 
|         is_deal, | 
|         zjm, | 
|         company_id, | 
|         province, | 
|         city, | 
|         area, | 
|         recommend_id | 
|         ) | 
|   | 
|   | 
|         VALUES ( | 
|         #{id}, | 
|         #{vipNo}, | 
|         #{vipName}, | 
|         #{phone}, | 
|         #{sex}, | 
|         #{birthday1}, | 
|         #{addr}, | 
|         #{constell}, | 
|         #{animalSign}, | 
|         #{arrivalWay}, | 
|         #{vipType}, | 
|         #{vipState}, | 
|         #{pointAll}, | 
|         #{commissionAll}, | 
|         #{inDate}, | 
|         #{staffId}, | 
|         #{shopId}, | 
|         #{isDelete}, | 
|         #{remark}, | 
|         #{passWord}, | 
|         #{email}, | 
|         #{createTime}, | 
|         #{uuid}, | 
|         #{balance}, | 
|         #{photo}, | 
|         #{levelId}, | 
|         #{openId}, | 
|         #{beatuyId}, | 
|         #{blood}, | 
|         #{sfCard}, | 
|         #{link}, | 
|         #{marry}, | 
|         #{vocation}, | 
|         #{parentId}, | 
|         #{createDistributionTime}, | 
|         #{birthdayType}, | 
|         #{disease}, | 
|         #{isDeal}, | 
|         #{zjm}, | 
|         #{companyId}, | 
|         #{province}, | 
|         #{city}, | 
|         #{area}, | 
|         #{recommendId} | 
|         ) | 
|   | 
|     </insert> | 
|   | 
|     <!-- 根据id更新 部分更新 --> | 
|     <update id="update"> | 
|         UPDATE sys_vip_info | 
|         <set> | 
|             <if test="vipNo != null and vipNo !='' "> | 
|                 VIP_NO = #{vipNo}, | 
|             </if> | 
|             <if test="vipName != null and vipName !='' "> | 
|                 VIP_NAME = #{vipName}, | 
|             </if> | 
|             <if test="zjm != null and zjm !='' "> | 
|                 zjm = #{zjm}, | 
|             </if> | 
|             <if test="phone != null and phone !='' "> | 
|                 PHONE = #{phone}, | 
|             </if> | 
|             <if test="sex != null and sex !='' "> | 
|                 SEX = #{sex}, | 
|             </if> | 
|             <if test="birthday1 != null   "> | 
|                 BIRTHDAY1 = #{birthday1}, | 
|             </if> | 
|             <if test="addr != null and addr !='' "> | 
|                 ADDR = #{addr}, | 
|             </if> | 
|             <if test="constell != null and constell !='' "> | 
|                 CONSTELL = #{constell}, | 
|             </if> | 
|             <if test="animalSign != null and animalSign !='' "> | 
|                 ANIMAL_SIGN = #{animalSign}, | 
|             </if> | 
|             <if test="arrivalWay != null and arrivalWay !='' "> | 
|                 ARRIVAL_WAY = #{arrivalWay}, | 
|             </if> | 
|             <if test="vipType != null and vipType !='' "> | 
|                 VIP_TYPE = #{vipType}, | 
|             </if> | 
|             <if test="vipState != null and vipState !='' "> | 
|                 VIP_STATE = #{vipState}, | 
|             </if> | 
|             <if test="pointAll != null or pointAll == 0 "> | 
|                 POINT_ALL = #{pointAll}, | 
|             </if> | 
|             <if test="commissionAll != null or commissionAll == 0 "> | 
|                 COMMISSION_ALL = #{commissionAll}, | 
|             </if> | 
|             <if test="inDate != null   "> | 
|                 IN_DATE = #{inDate}, | 
|             </if> | 
|             <if test="remark != null and remark !='' "> | 
|                 REMARK = #{remark}, | 
|             </if> | 
|             <if test="staffId != null and staffId !='' "> | 
|                 STAFF_ID = #{staffId}, | 
|             </if> | 
|             <if test="shopId != null and shopId !='' "> | 
|                 SHOP_ID = #{shopId}, | 
|             </if> | 
|             <if test="isDelete != null and isDelete !='' "> | 
|                 IS_DELETE = #{isDelete}, | 
|             </if> | 
|             <if test="passWord != null and passWord !='' "> | 
|                 PASSWORD = #{passWord}, | 
|             </if> | 
|             <if test="email != null and email !='' "> | 
|                 EMAIL = #{email}, | 
|             </if> | 
|             <if test="uuid != null and uuid !='' "> | 
|                 UUID = #{uuid}, | 
|             </if> | 
|             <if test="balance != null or balance==0"> | 
|                 BALANCE = #{balance}, | 
|             </if> | 
|             <if test="levelId != null "> | 
|                 LEVEL_ID = #{levelId}, | 
|             </if> | 
|             <if test="photo != null and photo !='' "> | 
|                 photo = #{photo}, | 
|             </if> | 
|             <if test="openId != null and openId !='' "> | 
|                 openId = #{openId}, | 
|             </if> | 
|             <if test="beatuyId != null and beatuyId !='' "> | 
|                 BEATUY_ID = #{beatuyId}, | 
|             </if> | 
|             <if test="blood != null and blood !='' "> | 
|                 blood = #{blood}, | 
|             </if> | 
|             <if test="sfCard != null and sfCard !='' "> | 
|                 sfCard = #{sfCard}, | 
|             </if> | 
|             <if test="link != null and link !='' "> | 
|                 link = #{link}, | 
|             </if> | 
|             <if test="marry != null and marry !='' "> | 
|                 marry = #{marry}, | 
|             </if> | 
|             <if test="vocation != null and vocation !='' "> | 
|                 vocation = #{vocation}, | 
|             </if> | 
|             <if test="handleTime != null  "> | 
|                 handle_time = #{handleTime}, | 
|             </if> | 
|             <if test="statu != null and statu !='' "> | 
|                 statu = #{statu}, | 
|             </if> | 
|   | 
|             <if test="parentId != null and parentId !='' "> | 
|                 parent_id = #{parentId}, | 
|             </if> | 
|             <if test="createDistributionTime != null  "> | 
|                 create_distribution_time = #{createDistributionTime}, | 
|             </if> | 
|             <if test="birthdayType != null  "> | 
|                 birthdayType = #{birthdayType}, | 
|             </if> | 
|             <if test="disease != null  "> | 
|                 disease = #{disease}, | 
|             </if> | 
|             <if test="isDeal != null  "> | 
|                 is_deal = #{isDeal}, | 
|             </if> | 
|             <if test="recommendId != null  "> | 
|                 recommend_id = #{recommendId}, | 
|             </if> | 
|             <if test="province != null and province !=''  "> | 
|                 province = #{province}, | 
|             </if> | 
|             <if test="city != null and city !=''  "> | 
|                 city = #{city}, | 
|             </if> | 
|             <if test="area != null and area !=''  "> | 
|                 area = #{area}, | 
|             </if> | 
|   | 
|   | 
|         </set> | 
|         WHERE ID=#{id} | 
|     </update> | 
|     <!-- 积分清空 --> | 
|     <update id="pointClose"> | 
|         UPDATE sys_vip_info set POINT_ALL = 0 | 
|     </update> | 
|   | 
|     <!-- 批量删除 --> | 
|     <delete id="deleteByIds" parameterType="java.util.List"> | 
|         delete from sys_vip_info where ID in | 
|         <foreach collection="list" index="index" item="item" open="(" | 
|                  separator="," close=")"> | 
|             #{item} | 
|         </foreach> | 
|     </delete> | 
|   | 
|     <!-- 根据id删除 --> | 
|     <delete id="deleteById"> | 
|         DELETE FROM sys_vip_info | 
|         where ID=#{id} | 
|     </delete> | 
|   | 
|   | 
|   | 
|     <!-- 分页查询 --> | 
|     <select id="selectInPage" resultMap="SysVipInfoMapSimple"> | 
|         <include refid="select"></include> | 
|         <include refid="from"></include> | 
|         <include refid="where"></include> | 
|         <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> | 
|             <if test="pageVo.sort !=null  and pageVo.order !=null"> | 
|                 order by | 
|                 ${pageVo.sort} ${pageVo.order} | 
|             </if> | 
|             <if test="pageVo.offset >=0  and pageVo.limit >0"> | 
|                 limit | 
|                 #{pageVo.offset},#{pageVo.limit} | 
|             </if> | 
|         </if> | 
|     </select> | 
|   | 
|     <select id="selectAll" resultMap="SysVipInfoMapSimple"> | 
|         <include refid="select"></include> | 
|         <include refid="from"></include> | 
|         <include refid="where"></include> | 
|     </select> | 
|   | 
|     <!-- 查询总条数 --> | 
|     <select id="selectTotalRecord" resultType="java.lang.Integer"> | 
|         select count(*) | 
|         <include refid="from"></include> | 
|         <include refid="where"></include> | 
|     </select> | 
|   | 
|   | 
|     <!-- 根据id查询 --> | 
|     <select id="selectById" resultMap="SysVipInfoMap"> | 
|         <include refid="select"></include> | 
|         <include refid="from"></include> | 
|         where a.ID=#{id} | 
|     </select> | 
|   | 
|   | 
|   | 
|     <!-- 根据手机和密码查询 --> | 
|     <select id="selectVipByPhonePassWord" resultMap="SysVipInfoMap"> | 
|         <include refid="select"></include> | 
|         <include refid="from"></include> | 
|         where a.company_id=#{record.companyId}  and a.PHONE =#{record.phone} and a.PASSWORD = #{record.passWord} | 
|     </select> | 
|     <!-- 判断是否为唯一 --> | 
|     <select id="selectTotalByField" resultType="java.lang.Integer"> | 
|         select count(*) from | 
|         sys_vip_info where ${field} = #{value} | 
|     </select> | 
|   | 
|     <!-- 根据对象查询 --> | 
|     <select id="findListByVo" resultMap="SysVipInfoMap"> | 
|         select | 
|         DISTINCT a.ID, | 
|         a.VIP_NO, | 
|         a.VIP_NAME, | 
|         a.PHONE, | 
|         a.SEX, | 
|         a.BIRTHDAY1, | 
|         a.photo, | 
|         a.ADDR, | 
|         a.CONSTELL, | 
|         a.ANIMAL_SIGN, | 
|         a.ARRIVAL_WAY, | 
|         a.VIP_TYPE, | 
|         a.VIP_STATE, | 
|         a.POINT_ALL, | 
|         a.COMMISSION_ALL, | 
|         a.IN_DATE, | 
|         a.REMARK, | 
|         a.SHOP_ID, | 
|         a.IS_DELETE, | 
|         a.PASSWORD, | 
|         a.EMAIL, | 
|         a.STAFF_ID, | 
|         a.CREATE_TIME, | 
|         a.LEVEL_ID, | 
|         a.UUID, | 
|         a.openid, | 
|         a.BALANCE, | 
|         a.BEATUY_ID, | 
|         c.su_name as STAFF_NAME, | 
|         d.SHOP_NAME, | 
|         a.blood, | 
|         a.sfCard, | 
|         a.link, | 
|         a.marry, | 
|         a.vocation, | 
|         a.statu, | 
|         a.disease, | 
|         a.is_deal | 
|         from sys_vip_info a | 
|         left join sys_users c on c.su_id =a.STAFF_ID | 
|         left join sys_shop_info d ON d.ID=a.SHOP_ID | 
|         LEFT JOIN my_beatician e on e.vip_id = a.id | 
|         <include refid="whereVo"></include> | 
|   | 
|         <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> | 
|             <if test="pageVo.sort !=null  and pageVo.order !=null"> | 
|                 order by | 
|                 ${pageVo.sort} ${pageVo.order} | 
|             </if> | 
|             <if test="pageVo.offset >=0  and pageVo.limit >0"> | 
|                 limit | 
|                 #{pageVo.offset},#{pageVo.limit} | 
|             </if> | 
|         </if> | 
|     </select> | 
|   | 
|     <select id="findListByVoCount" resultType="java.lang.Integer"> | 
|         select count(DISTINCT a.ID) | 
|         from sys_vip_info a | 
|         left join sys_users c on c.su_id =a.STAFF_ID | 
|         left join sys_shop_info d ON d.ID=a.SHOP_ID | 
|         LEFT JOIN my_beatician e on e.vip_id = a.id | 
|         <include refid="whereVo"></include> | 
|     </select> | 
|   | 
|   | 
|     <!-- 根据电话号码模糊查询 --> | 
|     <select id="selectUserByPhoto" resultMap="SysVipInfoMapSimple"> | 
|         select ID,disease,is_deal, | 
|         ID,VIP_NO,VIP_NAME,PHONE,SEX,BIRTHDAY1,photo, | 
|         ADDR,CONSTELL,ANIMAL_SIGN,ARRIVAL_WAY,VIP_TYPE,VIP_STATE,POINT_ALL, | 
|         COMMISSION_ALL,IN_DATE,STAFF_ID,SHOP_ID,IS_DELETE,REMARK,PASSWORD, | 
|         EMAIL,CREATE_TIME,UUID,BALANCE  | 
|          from sys_vip_info where | 
|          company_id=#{companyId} | 
|          and PHONE like concat('%',#{keyWord},'%') limit 0,10 | 
|   | 
|     </select> | 
|   | 
|     <!-- 根据电话号码模糊查询 --> | 
|     <select id="selectUserByKey" resultMap="SysVipInfoMapSimple"> | 
|         select ID,disease,is_deal, | 
|         ID,VIP_NO,VIP_NAME,PHONE,SEX,BIRTHDAY1,photo, | 
|         ADDR,CONSTELL,ANIMAL_SIGN,ARRIVAL_WAY,VIP_TYPE,VIP_STATE,POINT_ALL, | 
|         COMMISSION_ALL,IN_DATE,STAFF_ID,SHOP_ID,IS_DELETE,REMARK,PASSWORD, | 
|         EMAIL,CREATE_TIME,UUID,BALANCE,blood,sfCard,link,marry,vocation  | 
|          from sys_vip_info  | 
|          where company_id=#{companyId} | 
|        and (instr(PHONE,#{keyWord}) | 
|           or instr(VIP_NAME ,#{keyWord}) | 
|           or instr(zjm ,#{keyWord}) | 
|             or instr(VIP_NO ,#{keyWord})) | 
|           limit 0,15 | 
|     </select> | 
|   | 
|   | 
|     <!-- 根据对象查询 --> | 
|     <select id="selectByModel" resultMap="SysVipInfoMap"> | 
|         <include refid="select"></include> | 
|         <include refid="from"></include> | 
|         <include refid="where"></include> | 
|     </select> | 
|   | 
|     <select id="selectByModel1" resultMap="SysVipInfoMap"> | 
|         <include refid="select"></include> | 
|         <include refid="from"></include> | 
|         <include refid="where1"></include> | 
|     </select> | 
|   | 
|     <select id="selectByVipNoOrTel" resultMap="SysVipInfoMap"> | 
|         <include refid="select"></include> | 
|         <include refid="from"></include> | 
|         where 1=1 | 
|         and | 
|         (a.VIP_NO =#{key} or | 
|         a.VIP_NAME =#{key} or | 
|         a.PHONE =#{key}) | 
|     </select> | 
|   | 
|     <select id="getLevelIdByMoney" resultMap="SysVipInfoMap"> | 
|   | 
|         SELECT * from sys_vip_level where FUND_MIN   <![CDATA[ <= ]]> | 
|         #{fundMin} | 
|         ORDER BY FUND_MIN DESC | 
|     </select> | 
|   | 
|     <sql id="whereVo"> | 
|        <where> | 
|         <if test="record!=null"> | 
|             <if test="record.keyWord != null and record.keyWord !='' "> | 
|                 and (a.VIP_NO like CONCAT('%',#{record.keyWord},'%') or | 
|                 a.PHONE like CONCAT('%',#{record.keyWord},'%') or | 
|                 a.VIP_NAME like | 
|                 CONCAT('%',#{record.keyWord},'%') ) | 
|             </if> | 
|             <if test="record.shopId != null and record.shopId !='' "> | 
|                 and a.SHOP_ID = #{record.shopId} | 
|             </if> | 
|             <if test="record.jkgwId != null and record.jkgwId !='' "> | 
|                 and a.STAFF_ID = #{record.jkgwId} | 
|             </if> | 
|             <if test="record.mlsId != null and record.mlsId !='' "> | 
|                 and e.beauticain_id = #{record.mlsId} | 
|             </if> | 
|             <if test="record.levelId != null and record.levelId !='' "> | 
|                 and a.LEVEL_ID = #{record.levelId} | 
|             </if> | 
|             <if test="record.vipState != null and record.vipState!='' "> | 
|                 and a.VIP_STATE = #{record.vipState} | 
|             </if> | 
|             <if test="(record.companyId!=null and record.companyId!='') "> | 
|                 and a.company_id = #{record.companyId} | 
|             </if> | 
|         </if> | 
|        </where> | 
|     </sql> | 
|   | 
|     <sql id="where"> | 
|         where 1=1 | 
|         <if test="record!=null"> | 
|             <if test="record.id != null and record.id !='' "> | 
|                 and a.ID = #{record.id} | 
|             </if> | 
|             <!-- 根据编号 --> | 
|             <if test="record.vipNo != null and record.vipNo !='' "> | 
|                 and a.VIP_NO like CONCAT('%',#{record.vipNo},'%') | 
|             </if> | 
|             <!-- 根据姓名 --> | 
|             <if test="record.vipName != null and record.vipName !='' "> | 
|                 and  (instr(a.VIP_NAME ,#{record.vipName}) or instr(a.zjm ,#{record.vipName})) | 
|             </if> | 
|             <if test="record.phone != null and record.phone !='' "> | 
|                 and a.PHONE like CONCAT('%',#{record.phone},'%') | 
|             </if> | 
|             <if test="record.sex != null and record.sex !='' "> | 
|                 and a.SEX = #{record.sex} | 
|             </if> | 
|             <if test="record.birthday1 != null  "> | 
|                 and a.BIRTHDAY1 = #{record.birthday1} | 
|             </if> | 
|             <if test="record.addr != null and record.addr !='' "> | 
|                 and a.ADDR = #{record.addr} | 
|             </if> | 
|             <if test="record.constell != null and record.constell !='' "> | 
|                 and a.CONSTELL = #{record.constell} | 
|             </if> | 
|             <if test="record.animalSign != null and record.animalSign !='' "> | 
|                 and a.ANIMAL_SIGN = #{record.animalSign} | 
|             </if> | 
|             <if test="record.arrivalWay != null and record.arrivalWay !='' "> | 
|                 and a.ARRIVAL_WAY = #{record.arrivalWay} | 
|             </if> | 
|             <if test="record.vipType != null and record.vipType !='' "> | 
|                 and a.VIP_TYPE = #{record.vipType} | 
|             </if> | 
|             <if test="record.vipState != null and record.vipState !='' "> | 
|                 and a.VIP_STATE = #{record.vipState} | 
|             </if> | 
|             <if test="record.pointAll != null or record.pointAll==0 "> | 
|                 and a.POINT_ALL = #{record.pointAll} | 
|             </if> | 
|             <if test="record.commissionAll != null and record.commissionAll !='' "> | 
|                 and a.COMMISSION_ALL = #{record.commissionAll} | 
|             </if> | 
|             <if test="record.inDate != null  "> | 
|                 and a.IN_DATE like CONCAT('%',#{record.inDate},'%') | 
|             </if> | 
|             <if test="record.remark != null and record.remark !='' "> | 
|                 and a.REMARK like CONCAT('%',#{record.remark},'%') | 
|             </if> | 
|             <if test="record.staffId != null and record.staffId !='' "> | 
|                 and a.STAFF_ID = #{record.staffId} | 
|             </if> | 
|             <if test="record.shopId != null and record.shopId !='' "> | 
|                 and a.SHOP_ID = #{record.shopId} | 
|             </if> | 
|             <if test="record.isDelete != null and record.isDelete !='' "> | 
|                 and a.IS_DELETE = #{record.isDelete} | 
|             </if> | 
|             <if test="record.passWord != null and record.passWord !='' "> | 
|                 and a.PASSWORD = #{record.passWord} | 
|             </if> | 
|             <if test="record.email != null and record.email !='' "> | 
|                 and a.EMAIL = #{record.email} | 
|             </if> | 
|             <if test="record.uuid != null and record.uuid !='' "> | 
|                 and a.UUID = #{record.uuid} | 
|             </if> | 
|             <if test="record.balance != null and record.balance !='' "> | 
|                 and a.BALANCE = #{record.balance} | 
|             </if> | 
|             <if test="record.openId != null and record.openId !='' "> | 
|                 and a.openid = #{record.openId} | 
|             </if> | 
|             <if test="record.blood != null and record.blood !='' "> | 
|                 and a.blood = #{record.blood} | 
|             </if> | 
|             <if test="record.sfCard != null and record.sfCard !='' "> | 
|                 and a.sfCard = #{record.sfCard} | 
|             </if> | 
|             <if test="record.link != null and record.link !='' "> | 
|                 and a.link = #{record.link} | 
|             </if> | 
|             <if test="record.marry != null and record.marry !='' "> | 
|                 and a.marry = #{record.marry} | 
|             </if> | 
|             <if test="record.vocation != null and record.vocation !='' "> | 
|                 and a.vocation = #{record.vocation} | 
|             </if> | 
|             <if test="record.statu != null and record.statu !='' "> | 
|                 and a.statu = #{record.statu} | 
|             </if> | 
|             <if test="record.isDeal != null and record.isDeal !='' "> | 
|                 and a.is_deal = #{record.isDeal} | 
|             </if> | 
|             <if test="(record.companyId!=null and record.companyId!='') "> | 
|                 and a.company_id = #{record.companyId} | 
|             </if> | 
|         </if> | 
|     </sql> | 
|   | 
|   | 
|     <sql id="where1"> | 
|         where 1=1 | 
|         <if test="record!=null"> | 
|             <if test="record.id != null and record.id !='' "> | 
|                 and a.ID = #{record.id} | 
|             </if> | 
|             <!-- 根据编号 --> | 
|             <if test="record.vipNo != null and record.vipNo !='' "> | 
|                 and a.VIP_NO = #{record.vipNo} | 
|             </if> | 
|             <!-- 根据姓名 --> | 
|             <if test="record.vipName != null and record.vipName !='' "> | 
|                 and  (instr(a.VIP_NAME ,#{record.vipName}) or instr(a.zjm ,#{record.vipName})) | 
|             </if> | 
|   | 
|             <if test="record.phone != null and record.phone !='' "> | 
|                 and a.PHONE =#{record.phone} | 
|             </if> | 
|   | 
|             <if test="record.sex != null and record.sex !='' "> | 
|                 and a.SEX = #{record.sex} | 
|             </if> | 
|             <if test="record.birthday1 != null   "> | 
|                 and a.BIRTHDAY1 = #{record.birthday1} | 
|             </if> | 
|             <if test="record.addr != null and record.addr !='' "> | 
|                 and a.ADDR = #{record.addr} | 
|             </if> | 
|             <if test="record.constell != null and record.constell !='' "> | 
|                 and a.CONSTELL = #{record.constell} | 
|             </if> | 
|             <if test="record.animalSign != null and record.animalSign !='' "> | 
|                 and a.ANIMAL_SIGN = #{record.animalSign} | 
|             </if> | 
|             <if test="record.arrivalWay != null and record.arrivalWay !='' "> | 
|                 and a.ARRIVAL_WAY = #{record.arrivalWay} | 
|             </if> | 
|             <if test="record.vipType != null and record.vipType !='' "> | 
|                 and a.VIP_TYPE = #{record.vipType} | 
|             </if> | 
|             <if test="record.vipState != null and record.vipState !='' "> | 
|                 and a.VIP_STATE = #{record.vipState} | 
|             </if> | 
|             <if test="(record.companyId!=null and record.companyId!='') "> | 
|                 and a.company_id = #{record.companyId} | 
|             </if> | 
|             <if test="record.pointAll != null or record.pointAll==0 "> | 
|                 and a.POINT_ALL = #{record.pointAll} | 
|             </if> | 
|             <if test="record.commissionAll != null and record.commissionAll !='' "> | 
|                 and a.COMMISSION_ALL = #{record.commissionAll} | 
|             </if> | 
|             <if test="record.inDate != null  "> | 
|                 and a.IN_DATE like CONCAT('%',#{record.inDate},'%') | 
|             </if> | 
|             <if test="record.remark != null and record.remark !='' "> | 
|                 and a.REMARK like CONCAT('%',#{record.remark},'%') | 
|             </if> | 
|             <if test="record.staffId != null and record.staffId !='' "> | 
|                 and a.STAFF_ID = #{record.staffId} | 
|             </if> | 
|             <if test="record.shopId != null and record.shopId !='' "> | 
|                 and a.SHOP_ID = #{record.shopId} | 
|             </if> | 
|             <if test="record.isDelete != null and record.isDelete !='' "> | 
|                 and a.IS_DELETE = #{record.isDelete} | 
|             </if> | 
|             <if test="record.passWord != null and record.passWord !='' "> | 
|                 and a.PASSWORD = #{record.passWord} | 
|             </if> | 
|             <if test="record.email != null and record.email !='' "> | 
|                 and a.EMAIL = #{record.email} | 
|             </if> | 
|             <if test="record.uuid != null and record.uuid !='' "> | 
|                 and a.UUID = #{record.uuid} | 
|             </if> | 
|             <if test="record.balance != null and record.balance !='' "> | 
|                 and a.BALANCE = #{record.balance} | 
|             </if> | 
|             <if test="record.statu != null and record.statu !='' "> | 
|                 and a.statu = #{record.statu} | 
|             </if> | 
|             <if test="record.blood != null and record.blood !='' "> | 
|                 and a.blood = #{record.blood} | 
|             </if> | 
|             <if test="record.sfCard != null and record.sfCard !='' "> | 
|                 and a.sfCard = #{record.sfCard} | 
|             </if> | 
|             <if test="record.link != null and record.link !='' "> | 
|                 and a.link = #{record.link} | 
|             </if> | 
|             <if test="record.marry != null and record.marry !='' "> | 
|                 and a.marry = #{record.marry} | 
|             </if> | 
|             <if test="record.vocation != null and record.vocation !='' "> | 
|                 and a.vocation = #{record.vocation} | 
|             </if> | 
|   | 
|             <if test="record.isDeal != null and record.isDeal !='' "> | 
|                 and a.is_deal = #{record.isDeal} | 
|             </if> | 
|         </if> | 
|     </sql> | 
|   | 
|     <sql id="select"> | 
|         select | 
|          a.ID, | 
|         a.VIP_NO, | 
|         a.VIP_NAME, | 
|         a.PHONE, | 
|         a.SEX, | 
|         a.BIRTHDAY1, | 
|         a.photo, | 
|         a.ADDR, | 
|         a.CONSTELL, | 
|         a.ANIMAL_SIGN, | 
|         a.ARRIVAL_WAY, | 
|         a.VIP_TYPE, | 
|         a.VIP_STATE, | 
|         a.POINT_ALL, | 
|         a.COMMISSION_ALL, | 
|         a.IN_DATE, | 
|         a.REMARK, | 
|         a.SHOP_ID, | 
|         a.IS_DELETE, | 
|         a.EMAIL, | 
|         a.STAFF_ID, | 
|         a.CREATE_TIME, | 
|         a.LEVEL_ID, | 
|         a.UUID, | 
|         a.BALANCE, | 
|         a.BEATUY_ID, | 
|         a.PASSWORD, | 
|         c.su_name as STAFF_NAME, | 
|         d.SHOP_NAME, | 
|         a.blood, | 
|         a.sfCard, | 
|         a.link, | 
|         a.marry, | 
|         a.vocation, | 
|         a.handle_time, | 
|         a.statu, | 
|         a.openid, | 
|         a.parent_id, | 
|         a.create_distribution_time, | 
|         a.birthdayType, | 
|         a.disease, | 
|         a.is_deal, | 
|         a.province, | 
|         a.city, | 
|         a.area, | 
|         a.recommend_id, | 
|         e.level_name levelName, | 
|         e.vip_level vipLevel | 
|     </sql> | 
|     <sql id="from"> | 
|         from sys_vip_info a | 
|         left join sys_users c on c.su_id =a.STAFF_ID | 
|         left join sys_shop_info d ON d.ID=a.SHOP_ID | 
|         left join sys_vip_level e on a.level_id=e.id | 
|         | 
|     </sql> | 
|   | 
|     <select id="automaticUpdate"> | 
|         call vipInfoUpdate(); | 
|     </select> | 
|   | 
|     <!-- 所有分销商分页查询 --> | 
|     <select id="selectAllInPage" resultMap="SysVipInfoMapSimple"> | 
|         select | 
|         g.*, | 
|         h.vip_name as name | 
|         from | 
|         (select b.* from sys_vip_info b where b.parent_id in | 
|   | 
|         (select a.id from sys_vip_info a | 
|   | 
|         where 1=1 | 
|         <if test="record.parentId != null and record.parentId !='' "> | 
|             and a.parent_id = #{record.parentId} | 
|         </if> | 
|         ) )g LEFT JOIN sys_vip_info h on g.parent_id = h.id | 
|   | 
|         UNION | 
|   | 
|         select | 
|         d.*, | 
|         f.vip_name as name | 
|         from sys_vip_info d | 
|         LEFT JOIN sys_vip_info f on d.parent_id = f.id | 
|         where 1=1 | 
|         <if test="record.parentId != null and record.parentId !='' "> | 
|             and d.parent_id = #{record.parentId} | 
|         </if> | 
|         <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> | 
|             <if test="pageVo.sort !=null  and pageVo.order !=null"> | 
|                 order by | 
|                 ${pageVo.sort} ${pageVo.order} | 
|             </if> | 
|             <if test="pageVo.offset >=0  and pageVo.limit >0"> | 
|                 limit | 
|                 #{pageVo.offset},#{pageVo.limit} | 
|             </if> | 
|         </if> | 
|     </select> | 
|   | 
|     <!-- 所有分销商查询总条数 --> | 
|     <select id="selectAllTotalRecord" resultType="java.lang.Integer"> | 
|         select count(*) | 
|         from | 
|         (select | 
|         g.*, | 
|         h.vip_name as name | 
|         from | 
|         (select b.* from sys_vip_info b where b.parent_id in | 
|   | 
|         (select a.id from sys_vip_info a | 
|   | 
|         where 1=1 | 
|         <if test="record.parentId != null and record.parentId !='' "> | 
|             and a.parent_id = #{record.parentId} | 
|         </if> | 
|         ) )g LEFT JOIN sys_vip_info h on g.parent_id = h.id | 
|   | 
|         UNION | 
|   | 
|         select | 
|         d.*, | 
|         f.vip_name as name | 
|         from sys_vip_info d | 
|         LEFT JOIN sys_vip_info f on d.parent_id = f.id | 
|         where 1=1 | 
|         <if test="record.parentId != null and record.parentId !='' "> | 
|             and d.parent_id = #{record.parentId} | 
|         </if>)k | 
|     </select> | 
|   | 
|     <!-- 一级分销商分页查询 --> | 
|     <select id="selectFristInPage" resultMap="SysVipInfoMapSimple"> | 
|         select | 
|         d.*, | 
|         f.vip_name as name | 
|         from sys_vip_info d | 
|         LEFT JOIN sys_vip_info f on d.parent_id = f.id | 
|         where 1=1 | 
|         <if test="record.parentId != null and record.parentId !='' "> | 
|             and d.parent_id = #{record.parentId} | 
|         </if> | 
|         <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> | 
|             <if test="pageVo.sort !=null  and pageVo.order !=null"> | 
|                 order by | 
|                 ${pageVo.sort} ${pageVo.order} | 
|             </if> | 
|             <if test="pageVo.offset >=0  and pageVo.limit >0"> | 
|                 limit | 
|                 #{pageVo.offset},#{pageVo.limit} | 
|             </if> | 
|         </if> | 
|     </select> | 
|   | 
|     <!-- 一级分销商查询总条数 --> | 
|     <select id="selectFristTotalRecord" resultType="java.lang.Integer"> | 
|         select | 
|         count(*) | 
|         from sys_vip_info d | 
|         LEFT JOIN sys_vip_info f on d.parent_id = f.id | 
|         where 1=1 | 
|         <if test="record.parentId != null and record.parentId !='' "> | 
|             and d.parent_id = #{record.parentId} | 
|         </if> | 
|     </select> | 
|   | 
|     <!-- 二级分销商分页查询 --> | 
|     <select id="selectSecondInPage" resultMap="SysVipInfoMapSimple"> | 
|         select | 
|         g.*, | 
|         h.vip_name as name | 
|         from | 
|         (select b.* from sys_vip_info b where b.parent_id in | 
|   | 
|         (select a.id from sys_vip_info a | 
|   | 
|         where 1=1 | 
|         <if test="record.parentId != null and record.parentId !='' "> | 
|             and a.parent_id = #{record.parentId} | 
|         </if> | 
|         ) )g LEFT JOIN sys_vip_info h on g.parent_id = h.id | 
|         <if test="pageVo !=null"><!-- 判断pageVo对象是否为空 --> | 
|             <if test="pageVo.sort !=null  and pageVo.order !=null"> | 
|                 order by | 
|                 ${pageVo.sort} ${pageVo.order} | 
|             </if> | 
|             <if test="pageVo.offset >=0  and pageVo.limit >0"> | 
|                 limit | 
|                 #{pageVo.offset},#{pageVo.limit} | 
|             </if> | 
|         </if> | 
|     </select> | 
|   | 
|     <!-- 二级分销商查询总条数 --> | 
|     <select id="selectSecondTotalRecord" resultType="java.lang.Integer"> | 
|         select | 
|         count(*) | 
|         from | 
|         (select b.* from sys_vip_info b where b.parent_id in | 
|   | 
|         (select a.id from sys_vip_info a | 
|   | 
|         where 1=1 | 
|         <if test="record.parentId != null and record.parentId !='' "> | 
|             and a.parent_id = #{record.parentId} | 
|         </if> | 
|         ) )g LEFT JOIN sys_vip_info h on g.parent_id = h.id | 
|   | 
|     </select> | 
|   | 
|     <select id="selectByPhone" resultMap="SysVipInfoMapSimple"> | 
|   | 
|         select * from sys_vip_info where  PHONE = #{phone} | 
|     </select> | 
|   | 
|   | 
|     <select id="selectVipTelphoneByIds" resultType="java.lang.String"> | 
|         select phone from sys_vip_info | 
|         where phone is not null and id in | 
|         <foreach collection="list" index="index" item="item" open="(" | 
|                  separator="," close=")"> | 
|             #{item} | 
|         </foreach> | 
|     </select> | 
|   | 
|     <select id="selectAllVipPhone" resultType="java.lang.String"> | 
|         select phone from sys_vip_info | 
|         where | 
|          company_id=#{companyId} | 
|          and phone is not null | 
|   | 
|     </select> | 
|   | 
|     <select id="selectVipPhoneWithShop" resultType="java.lang.String"> | 
|         select phone from sys_vip_info | 
|         where phone is not null and shop_id=#{shopId} | 
|     </select> | 
|   | 
|     <select id="selectOldUserByTelphone" resultMap="SysVipInfoMap"> | 
|         select * from sys_vip_info where  phone=#{telphone} and is_deal=1 | 
|     </select> | 
|   | 
|   | 
|     <insert id="batchInsert" parameterType="java.util.List"> | 
|         INSERT INTO sys_vip_info | 
|         (ID, | 
|         VIP_NO, | 
|         VIP_NAME, | 
|         PHONE, | 
|         SEX, | 
|         BIRTHDAY1, | 
|         ADDR, | 
|         CONSTELL, | 
|         ANIMAL_SIGN, | 
|         ARRIVAL_WAY, | 
|         VIP_TYPE, | 
|         VIP_STATE, | 
|         POINT_ALL, | 
|         COMMISSION_ALL, | 
|         IN_DATE, | 
|         STAFF_ID, | 
|         SHOP_ID, | 
|         IS_DELETE, | 
|         REMARK, | 
|         PASSWORD, | 
|         EMAIL, | 
|         CREATE_TIME, | 
|         UUID, | 
|         BALANCE, | 
|         photo, | 
|         LEVEL_ID, | 
|         openid, | 
|         BEATUY_ID, | 
|         blood, | 
|         sfCard, | 
|         link, | 
|         marry, | 
|         vocation, | 
|         parent_id, | 
|         create_distribution_time, | 
|         birthdayType, | 
|         disease, | 
|         is_deal | 
|         ) | 
|         VALUES | 
|         <foreach collection="list" item="item" index="index" separator=",">( | 
|             #{item.id}, | 
|             #{item.vipNo}, | 
|             #{item.vipName}, | 
|             #{item.phone}, | 
|             #{item.sex}, | 
|             #{item.birthday1}, | 
|             #{item.addr}, | 
|             #{item.constell}, | 
|             #{item.animalSign}, | 
|             #{item.arrivalWay}, | 
|             #{item.vipType}, | 
|             #{item.vipState}, | 
|             #{item.pointAll}, | 
|             #{item.commissionAll}, | 
|             #{item.inDate}, | 
|             #{item.staffId}, | 
|             #{item.shopId}, | 
|             #{item.isDelete}, | 
|             #{item.remark}, | 
|             #{item.passWord}, | 
|             #{item.email}, | 
|             #{item.createTime}, | 
|             #{item.uuid}, | 
|             #{item.balance}, | 
|             #{item.photo}, | 
|             #{item.levelId}, | 
|             #{item.openId}, | 
|             #{item.beatuyId}, | 
|             #{item.blood}, | 
|             #{item.sfCard}, | 
|             #{item.link}, | 
|             #{item.marry}, | 
|             #{item.vocation}, | 
|             #{item.parentId}, | 
|             #{item.createDistributionTime}, | 
|             #{item.birthdayType}, | 
|             #{item.disease}, | 
|             #{item.isDeal} | 
|             )</foreach> | 
|     </insert> | 
|   | 
|     <select id="selectVipInfoByVipNo" resultMap="SysVipInfoMapSimple"> | 
|         select * from sys_vip_info where company_id=#{companyId} and vip_no=#{vipNo} | 
|     </select> | 
|   | 
|     <select id="selectVipAddressBookByList" resultType="com.matrix.system.app.vo.VipInfoListVo"> | 
|         select | 
|                a.ID id, | 
|                a.VIP_NAME vipName, | 
|                a.PHONE phone, | 
|                a.photo photo, | 
|                b.arriveCnt arriveCnt, | 
|                g.shop_short_name shopName, | 
|                z.level_name vipLevel | 
|         from sys_vip_info a | 
|         left join ( | 
|             select x.vip_id, count(1) arriveCnt from ( | 
|                                                  select vip_id, date_format(datatime, '%Y-%m-%d') | 
|                                                  from achieve_new | 
|                                                  where 1=1 | 
|                                                  <!-- 本月到店次数 --> | 
|                                                  <if test="record.sort == 'monthArrived'"> | 
|                                                      and date_format(curdate(), '%Y-%m') = date_format(datatime, '%Y-%m') | 
|                                                  </if> | 
|                                                  <!-- 本年到店次数 --> | 
|                                                  <if test="record.sort == 'yearArrived'"> | 
|                                                      and date_format(curdate(), '%Y') = date_format(datatime, '%Y') | 
|                                                  </if> | 
|                                                  group by date_format(datatime, '%Y-%m-%d'), vip_id | 
|                                              ) x group by x.vip_id | 
|             ) b on a.ID=b.vip_id | 
|         left join sys_vip_level z on a.level_id=z.id | 
|         <!-- 本月消费 --> | 
|         <if test="record.sort == 'used'"> | 
|             left join ( | 
|             select y.vip_id, sum(IFNULL(card_cash, 0) + IFNULL(proj_cash,0) + IFNULL(goods_cash, 0)) used from achieve_new y where date_format(datatime,'%Y-%m') = date_format(curdate(), '%Y-%m') group by y.vip_id | 
|             ) c on a.id=c.vip_id | 
|         </if> | 
|         <!-- 本月消耗 --> | 
|         <if test="record.sort == 'consume'"> | 
|         left join ( | 
|             select z.vip_id, SUM(IFNULL(free_consume, 0) + IFNULL(his_consume, 0) + IFNULL(consume, 0)) consume from achieve_new z where date_format(datatime,'%Y-%m') = date_format(curdate(), '%Y-%m') group by z.vip_id | 
|             ) d on a.ID = d.vip_id | 
|         </if> | 
|         <!-- 上次到店时间 --> | 
|         <if test="record.sort == 'arriveTime'"> | 
|         left join ( | 
|             select m.vip_id, MAX(datatime) arriveTime from achieve_new m group by m.vip_id | 
|             ) e on a.ID=e.vip_id | 
|         </if> | 
|         <!-- 会员级别排序 --> | 
|         <if test="record.sort == 'vipLevel'"> | 
|         left join ( | 
|             select n.VIP_LEVEL vipLevel, n.ID from sys_vip_level n | 
|             ) f on a.LEVEL_ID = f.ID | 
|         </if> | 
|         left join sys_shop_info g on a.shop_id = g.id | 
|         left join sys_vip_level h on a.level_id=h.id | 
|         where 1=1 | 
|         <if test="record.queryKey != null and record.queryKey != ''"> | 
|             and (instr(PHONE,#{record.queryKey}) | 
|                 or instr(VIP_NAME ,#{record.queryKey}) | 
|                 or instr(zjm ,#{record.queryKey}) | 
|                 or instr(VIP_NO ,#{record.queryKey})) | 
|         </if> | 
|         <if test="record.shopId != null"> | 
|             and a.shop_id=#{record.shopId} | 
|         </if> | 
|         <if test="record.companyId != null"> | 
|             and a.company_id=#{record.companyId} | 
|         </if> | 
|         <if test='record.birthType=="1"'> | 
|             and a.BIRTHDAY1 between curdate() and DATE_ADD(CURDATE(), INTERVAL 3 DAY) | 
|         </if> | 
|         <if test='record.birthType=="2"'> | 
|             and date_format(a.BIRTHDAY1, '%Y-%m') = date_format(CURDATE(), '%Y-%m') | 
|         </if> | 
|         <if test='record.birthType=="3"'> | 
|             and PERIOD_DIFF(date_format(now() ,'%Y-%m') , date_format(a.BIRTHDAY1, '%Y-%m')) =1 | 
|         </if> | 
|         <if test="record.vipType != null"> | 
|             and a.level_id=#{record.vipType} | 
|         </if> | 
|         <if test="record.other != null and record.other!=''"> | 
|             and a.is_deal=#{record.other} | 
|         </if> | 
|   | 
|         <if test="record.sort == 'monthArrived' or record.sort == 'yearArrived'"> | 
|             order by arriveCnt ${record.order} | 
|         </if> | 
|         <if test="record.sort != 'monthArrived' and record.sort != 'yearArrived'"> | 
|             order by ${record.sort} ${record.order} | 
|         </if> | 
|         <if test="record.offset >=0  and record.limit >0"> | 
|             limit #{record.offset},#{record.limit} | 
|         </if> | 
|     </select> | 
|   | 
|     <select id="selectVipInfoById" resultType="com.matrix.system.app.vo.VipInfoVo"> | 
|         select | 
|                a.ID id, | 
|                a.photo photo, | 
|                a.PHONE phone, | 
|                a.VIP_NAME vipName, | 
|                a.VIP_NO vipNo, | 
|                c.LEVEL_NAME vipLevel, | 
|                a.POINT_ALL integral, | 
|                e.shop_short_name shopName, | 
|                sum(IFNULL(b.gift_money, 0) + IFNULL(b.real_money, 0)) totalBalance, | 
|                sum(IFNULL(b.gift_money, 0)) giftBalance, | 
|                (select sum(IFNULL(d.goods_cash, 0) + IFNULL(d.proj_cash, 0) + IFNULL(d.card_cash, 0)) from achieve_new d where d.vip_id=a.id) totalShopping | 
|         from sys_vip_info a | 
|         left join money_card_use b on a.ID = b.vip_id and b.status='有效' | 
|         left join sys_vip_level c on  a.LEVEL_ID = c.ID | 
|         left join sys_shop_info e on a.SHOP_ID=e.ID | 
|         where a.ID=#{id} | 
|     </select> | 
| </mapper> | 
|      |