| <?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.SysFollowupDao" > | 
|     <!-- 定义SysFollowup 的复杂关联map --> | 
|     <resultMap type="com.matrix.system.hive.bean.SysFollowup" id="SysFollowupMap"> | 
|         <id property="id" column="id" /> | 
|         <result property="createBy" column="create_by" /> | 
|         <result property="createTime" column="create_time" /> | 
|         <result property="updateBy" column="update_by" /> | 
|         <result property="updateTime" column="update_time" /> | 
|             <result property="staffId" column="staff_id" /> | 
|             <result property="vipId" column="vip_id" /> | 
|             <result property="orderId" column="order_id" /> | 
|             <result property="serviceId" column="service_id" /> | 
|             <result property="shopId" column="shop_id" /> | 
|             <result property="companyId" column="company_id" /> | 
|             <result property="nextNotifyTime" column="next_notify_time" /> | 
|             <result property="content" column="content" /> | 
|             <result property="visible" column="visible" /> | 
|             <result property="orderAbstract" column="order_abstract" /> | 
|             <result property="zans" column="zans" /> | 
|   | 
|             <result property="staffPhoto" column="staffPhoto" /> | 
|             <result property="staffName" column="staffName" /> | 
|             <result property="vipName" column="vipName" /> | 
|   | 
|             <collection property="albums" column="{sourceId=id}" select="com.matrix.system.hive.dao.SysVipAlbumDao.selectBySourceId"  /> | 
|   | 
|             <collection property="followupComments" column="{follId=id}"  select="com.matrix.system.hive.dao.SysFollowupCommentDao.selectByfollId" ></collection> | 
|   | 
|             <collection property="zanUsers"         column="{zans=zans}"   select="selectUserByZaqns" ></collection> | 
|   | 
|   | 
|     </resultMap> | 
|   | 
|     <select id="selectUserByZaqns" resultMap="com.matrix.system.common.dao.SysUsersDao.SysUsersMap" > | 
|          select su_id,su_name from sys_users where  FIND_IN_SET(su_id,#{zans}) | 
|     </select> | 
|      | 
|     <!-- 定义SysFollowup 的简单map  ,本map不添加其他的关联属性 --> | 
|     <resultMap type="com.matrix.system.hive.bean.SysFollowup" id="SysFollowupSimpleMap"> | 
|         <id property="id" column="id" /> | 
|         <result property="createBy" column="create_by" /> | 
|         <result property="createTime" column="create_time" /> | 
|         <result property="updateBy" column="update_by" /> | 
|         <result property="updateTime" column="update_time" /> | 
|             <result property="staffId" column="staff_id" /> | 
|             <result property="vipId" column="vip_id" /> | 
|             <result property="orderId" column="order_id" /> | 
|             <result property="serviceId" column="service_id" /> | 
|             <result property="shopId" column="shop_id" /> | 
|             <result property="companyId" column="company_id" /> | 
|             <result property="nextNotifyTime" column="next_notify_time" /> | 
|             <result property="content" column="content" /> | 
|             <result property="visible" column="visible" /> | 
|             <result property="orderAbstract" column="order_abstract" /> | 
|             <result property="zans" column="zans" /> | 
|     </resultMap> | 
|      | 
|     <!-- 字段sql --> | 
|     <sql id="columns"> | 
|         create_by, | 
|         create_time, | 
|         update_by, | 
|         update_time, | 
|             id, | 
|             staff_id, | 
|             vip_id, | 
|             order_id, | 
|             service_id, | 
|             shop_id, | 
|             company_id, | 
|             next_notify_time, | 
|             content, | 
|             visible, | 
|             order_abstract, | 
|             zans | 
|     </sql> | 
|      | 
|     <!-- 属性sql --> | 
|     <sql id="propertys"> | 
|         #{item.createBy}, | 
|         now(), | 
|         #{item.updateBy}, | 
|         now(), | 
|             #{item.id}, | 
|             #{item.staffId}, | 
|             #{item.vipId}, | 
|             #{item.orderId}, | 
|             #{item.serviceId}, | 
|             #{item.shopId}, | 
|             #{item.companyId}, | 
|             #{item.nextNotifyTime}, | 
|             #{item.content}, | 
|             #{item.visible}, | 
|             #{item.orderAbstract}, | 
|             #{item.zans} | 
|     </sql> | 
|      | 
|     <!-- where sql --> | 
|     <sql id="where_sql"> | 
|           | 
|          <if test="record!=null"> | 
|             <if test="(record.id!=null and record.id!='') or  (record.id!='' and record.id==0)  "> | 
|                 and id  = #{record.id}  | 
|             </if> | 
|             <if test="(record.staffId!=null and record.staffId!='') or  (record.staffId!='' and record.staffId==0)  "> | 
|                 and staff_id  = #{record.staffId}  | 
|             </if> | 
|             <if test="(record.vipId!=null and record.vipId!='') or  (record.vipId!='' and record.vipId==0)  "> | 
|                 and vip_id  = #{record.vipId}  | 
|             </if> | 
|             <if test="(record.orderId!=null and record.orderId!='') or  (record.orderId!='' and record.orderId==0)  "> | 
|                 and order_id  = #{record.orderId}  | 
|             </if> | 
|             <if test="(record.serviceId!=null and record.serviceId!='') or  (record.serviceId!='' and record.serviceId==0)  "> | 
|                 and service_id  = #{record.serviceId}  | 
|             </if> | 
|             <if test="(record.shopId!=null and record.shopId!='') or  (record.shopId!='' and record.shopId==0)  "> | 
|                 and shop_id  = #{record.shopId}  | 
|             </if> | 
|             <if test="(record.companyId!=null and record.companyId!='') or  (record.companyId!='' and record.companyId==0)  "> | 
|                 and company_id  = #{record.companyId}  | 
|             </if> | 
|             <if test="(record.nextNotifyTime!=null and record.nextNotifyTime!='') or  (record.nextNotifyTime!='' and record.nextNotifyTime==0)  "> | 
|                 and next_notify_time  = #{record.nextNotifyTime}  | 
|             </if> | 
|             <if test="(record.content!=null and record.content!='') or  (record.content!='' and record.content==0)  "> | 
|                 and content  = #{record.content}  | 
|             </if> | 
|             <if test="(record.visible!=null and record.visible!='') or  (record.visible!='' and record.visible==0)  "> | 
|                 and visible  = #{record.visible} | 
|             </if> | 
|             <if test="(record.orderAbstract!=null and record.orderAbstract!='') or  (record.orderAbstract!='' and record.orderAbstract==0)  "> | 
|                 and order_abstract  = #{record.orderAbstract}  | 
|             </if> | 
|             <if test="(record.zans!=null and record.zans!='') or  (record.zans!='' and record.zans==0)  "> | 
|                 and zans  = #{record.zans}  | 
|             </if> | 
|         </if> | 
|           | 
|     </sql> | 
|      | 
|     <!--  插入方法   --> | 
|     <insert id="insert" parameterType="com.matrix.system.hive.bean.SysFollowup" | 
|         useGeneratedKeys="true" keyProperty="item.id"> | 
|         INSERT INTO sys_followup ( | 
|              <include refid="columns"></include> | 
|         ) | 
|     VALUES ( | 
|          <include refid="propertys"></include> | 
|     ) | 
|     </insert> | 
|      | 
|      | 
|      | 
|     <!--  批量插入   --> | 
|     <insert id="batchInsert" parameterType="java.util.List"> | 
|         INSERT INTO sys_followup ( | 
|         <include refid="columns"></include>     | 
|         ) | 
|     VALUES  | 
|     <foreach collection="list" item="item" index="index" separator=",">( | 
|         <include refid="propertys"></include>     | 
|     )</foreach> | 
|     </insert> | 
|      | 
|      | 
|      | 
|      | 
|      | 
|     <!--  根据Map更新 部分更新   --> | 
|     <update id="updateByMap" parameterType="java.util.HashMap" > | 
|         UPDATE sys_followup | 
|         <set> | 
|             <if test="_parameter.containsKey('staffId')"> | 
|                     staff_id = #{staffId}, | 
|                 </if>         | 
|             <if test="_parameter.containsKey('vipId')"> | 
|                     vip_id = #{vipId}, | 
|                 </if>         | 
|             <if test="_parameter.containsKey('orderId')"> | 
|                     order_id = #{orderId}, | 
|                 </if>         | 
|             <if test="_parameter.containsKey('serviceId')"> | 
|                     service_id = #{serviceId}, | 
|                 </if>         | 
|             <if test="_parameter.containsKey('shopId')"> | 
|                     shop_id = #{shopId}, | 
|                 </if>         | 
|             <if test="_parameter.containsKey('companyId')"> | 
|                     company_id = #{companyId}, | 
|                 </if>         | 
|             <if test="_parameter.containsKey('nextNotifyTime')"> | 
|                     next_notify_time = #{nextNotifyTime}, | 
|                 </if>         | 
|             <if test="_parameter.containsKey('content')"> | 
|                     content = #{content}, | 
|                 </if>         | 
|             <if test="_parameter.containsKey('visible')"> | 
|                     visible = #{visible}, | 
|                 </if>         | 
|             <if test="_parameter.containsKey('orderAbstract')"> | 
|                     order_abstract = #{orderAbstract}, | 
|                 </if>         | 
|             <if test="_parameter.containsKey('zans')"> | 
|                     zans = #{zans}, | 
|                 </if>         | 
|         </set> | 
|         WHERE id=#{id}  | 
|     </update>  | 
|      | 
|      | 
|     <!--  根据对象更新 部分更新   --> | 
|     <update id="updateByModel" parameterType="Integer"> | 
|         UPDATE sys_followup | 
|         <set> | 
|             <if test="record.staffId != null "> | 
|                 staff_id  = #{record.staffId},  | 
|             </if> | 
|             <if test="record.vipId != null "> | 
|                 vip_id  = #{record.vipId},  | 
|             </if> | 
|             <if test="record.orderId != null "> | 
|                 order_id  = #{record.orderId},  | 
|             </if> | 
|             <if test="record.serviceId != null "> | 
|                 service_id  = #{record.serviceId},  | 
|             </if> | 
|             <if test="record.shopId != null "> | 
|                 shop_id  = #{record.shopId},  | 
|             </if> | 
|             <if test="record.companyId != null "> | 
|                 company_id  = #{record.companyId},  | 
|             </if> | 
|             <if test="record.nextNotifyTime != null "> | 
|                 next_notify_time  = #{record.nextNotifyTime},  | 
|             </if> | 
|             <if test="record.content != null and record.content != '' "> | 
|                 content  = #{record.content},  | 
|             </if> | 
|             <if test="record.visible != null "> | 
|                 visible  = #{record.visible}, | 
|             </if> | 
|             <if test="record.orderAbstract != null and record.orderAbstract != '' "> | 
|                 order_abstract  = #{record.orderAbstract},  | 
|             </if> | 
|             <if test="record.zans != null and record.zans != '' "> | 
|                 zans  = #{record.zans},  | 
|             </if> | 
|         </set> | 
|         WHERE id=#{record.id}  | 
|     </update> | 
|   | 
|     <!-- 更新点赞人数 --> | 
|     <update id="updateZan"> | 
|         update sys_followup set zans=#{zans} where id=#{id} | 
|     </update> | 
|   | 
|     <!-- 批量删除 --> | 
|     <delete id="deleteByIds" parameterType="java.util.List"> | 
|         delete from sys_followup where  id in | 
|         <foreach collection="list" index="index" item="item" open="(" | 
|             separator="," close=")"> | 
|             #{item} | 
|         </foreach> | 
|     </delete> | 
|          | 
|     <!-- 根据id删除--> | 
|     <delete id="deleteById" parameterType="Integer"> | 
|         DELETE FROM sys_followup | 
|         where  id=#{id}  | 
|     </delete> | 
|      | 
|     <!-- 根据对象删除--> | 
|     <delete id="deleteByModel" parameterType="com.matrix.system.hive.bean.SysFollowup"> | 
|         DELETE FROM sys_followup | 
|         <where> | 
|         <include refid="where_sql" ></include> | 
|         </where> | 
|     </delete> | 
|      | 
|      | 
|      | 
|     <!-- 分页查询 --> | 
|     <select id="selectInPage" resultMap="SysFollowupMap"> | 
|         select  | 
|         <include refid="columns" ></include> | 
|         from sys_followup | 
|         <where> | 
|           <include refid="where_sql"></include> | 
|          </where> | 
|         <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="selectTotalRecord" parameterType="long"   resultType="java.lang.Integer"> | 
|     select count(*) | 
|     from sys_followup | 
|         <where> | 
|            <include refid="where_sql"></include> | 
|         </where> | 
|     </select> | 
|   | 
|     <!-- 根据id查询--> | 
|     <select id="selectById" resultMap="SysFollowupMap"> | 
|         select  | 
|         <include refid="columns" ></include> | 
|         from sys_followup | 
|         where  id=#{id}  | 
|     </select>     | 
|      | 
|      | 
|     <!-- 根据id 锁表查询--> | 
|     <select id="selectForUpdate" resultMap="SysFollowupMap"> | 
|         select  | 
|         <include refid="columns" ></include> | 
|         from sys_followup | 
|         where  id=#{id}  | 
|         for update | 
|     </select>     | 
|      | 
|      | 
|      | 
|     <!-- 根据对象查询--> | 
|     <select id="selectByModel" resultMap="SysFollowupMap"> | 
|         select  | 
|         <include refid="columns" ></include> | 
|         from sys_followup | 
|         <where> | 
|           <include refid="where_sql"></include> | 
|          </where> | 
|     </select> | 
|   | 
|   | 
|     <select id="selectByAppDto" resultMap="SysFollowupMap"> | 
|         select a.*, | 
|          b.su_photo as staffPhoto, | 
|          b.su_name as staffName, | 
|          c.vip_name as vipName | 
|          from sys_followup  a | 
|          left join  sys_users b on a.staff_id= b.su_id | 
|          left join  sys_vip_info c on a.vip_id=c.id | 
|         <where> | 
|             and a.company_id=#{companyId} | 
|   | 
|             <if test="shopId != null "> | 
|                 and a.shop_id=#{shopId} | 
|             </if> | 
|             <if test="queryType == 1 "> | 
|                 and (visible=1 or ( visible!=1 and a.staff_id=#{selfStaff})) | 
|             </if> | 
|             <if test="queryType == 2 "> | 
|                 and a.staff_id=#{selfStaff} | 
|             </if> | 
|             <if test="queryType == 3 "> | 
|                 and( visible=1 and a.staff_id!=#{selfStaff}) | 
|             </if> | 
|   | 
|             <if test="startTime != null "> | 
|                 and a.create_time <![CDATA[ >= ]]> #{startTime} | 
|             </if> | 
|             <if test="endTime != null "> | 
|                 and a.create_time <![CDATA[ <= ]]> #{endTime} | 
|             </if> | 
|   | 
|             <if test="vipIds!=null and vipIds.size()!=0"> | 
|                 and    a.vip_id in | 
|                 <foreach collection="vipIds" index="index" item="item" open="(" | 
|                          separator="," close=")"> | 
|                     #{item} | 
|                 </foreach> | 
|             </if> | 
|   | 
|             <if test="staffIds!=null and staffIds.size()!=0"> | 
|                 and    a.staff_id in | 
|                 <foreach collection="staffIds" index="index" item="item" open="(" | 
|                          separator="," close=")"> | 
|                     #{item} | 
|                 </foreach> | 
|             </if> | 
|   | 
|   | 
|         </where> | 
|   | 
|   | 
|         order by a.create_time desc | 
|   | 
|   | 
|           limit ${offset},${limit} | 
|     </select> | 
|   | 
|   | 
| </mapper> |