jyy
2021-03-08 0a426c08ac419c558334d89ab79fbbef4e7e3af8
zq-erp/src/main/resources/mybatis/mapper/hive/SysFollowupDao.xml
New file
@@ -0,0 +1,405 @@
<?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>