<?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.iformall.mapper.WxBillOtherDepositMapper">
	<resultMap id="BaseResultMap" type="com.iformall.domain.po.WxBillOtherDeposit">
		<id column="id" jdbcType="BIGINT" property="id"/>
		<result column="receive_pay" jdbcType="BIGINT" property="receivePay"/>
		<result column="pay" jdbcType="BIGINT" property="pay"/>
		<result column="receive_date" jdbcType="TIMESTAMP" property="receiveDate"/>
		<result column="pay_date" jdbcType="TIMESTAMP" property="payDate"/>
		<result column="createtime" jdbcType="TIMESTAMP" property="createtime"/>
		<result column="expired_day" jdbcType="INTEGER" property="expiredDay"/>
		<result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/>
		<result column="owe" jdbcType="BIGINT" property="owe"/>
		<result column="status" jdbcType="INTEGER" property="status"/>
		<result column="is_del" jdbcType="INTEGER" property="isDel"/>
		<result column="merchant_id" jdbcType="BIGINT" property="merchantId"/>
		<result column="user_id" jdbcType="BIGINT" property="userId"/>
		<result column="shop_id" jdbcType="BIGINT" property="shopId"/>
		<result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/>
		<result column="name" jdbcType="VARCHAR" property="name"/>
		<result column="comments" jdbcType="VARCHAR" property="comments"/>
		<result column="rent_shop_type" jdbcType="INTEGER" property="rentShopType"/>
		<result column="return_price" jdbcType="BIGINT" property="returnPrice"/>
		<result column="pay_way" jdbcType="INTEGER" property="payWay"/>
		
		<result column="merchant_name" property="merchantName"/>
		
		<result column="starttime" property="starttime"/>
		<result column="endtime" property="endtime"/>
		<result column="freeze" property="freeze"/>

	</resultMap>
	
	<sql id="allColumns">
	    `id`,`receive_pay`,`pay`,`receive_date`,`pay_date`,`createtime`,`expired_day`,
	    `tenant_id`,`owe`,`status`,`is_del`,`merchant_id`,`user_id`,`shop_id`,`updatetime`,`name`,`comments`,
	    `rent_shop_type`,`return_price`,`pay_way`,`starttime`,`endtime`,freeze
	</sql>
	
	<sql id="dynamicWhereConditions">
		where 1 = 1
		<if test=" null != id ">and `id` = #{id}</if>
		<if test=" null != receivePay ">and `receive_pay` = #{receivePay}</if>
		<if test=" null != pay ">and `pay` = #{pay}</if>
		<if test=" null != receiveDate ">and `receive_date` = #{receiveDate}</if>
		<if test=" null != payDate ">and `pay_date` = #{payDate}</if>
		<if test=" null != createtime ">and `createtime` = #{createtime}</if>
		<if test=" null != expiredDay ">and `expired_day` = #{expiredDay}</if>
		<if test=" null != tenantId ">and `tenant_id` = #{tenantId}</if>
		<if test=" null != owe ">and `owe` = #{owe}</if>
		<if test=" null != status ">and `status` = #{status}</if>
		<if test=" null != isDel ">and `is_del` = #{isDel}</if>
		<if test=" null != merchantId ">and `merchant_id` = #{merchantId}</if>
		<if test=" null != userId ">and `user_id` = #{userId}</if>
		<if test=" null != starttime and null!=endtime ">and br.`receive_date` between #{starttime} and #{endtime}</if>
		
		<if test=" null != shopId ">and `shop_id` = #{shopId}</if>
		<if test=" null != updatetime ">and `updatetime` = #{updatetime}</if>
		<if test=" null != name ">and `name` = #{name}</if>
		<if test=" null != rentShopType ">and `rent_shop_type` = #{rentShopType}</if>
		<if test=" null != payWay ">and `pay_way` = #{payWay}</if>
		
		<if test=" null != ids ">
			and id in
			<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
				#{idItem}
			</foreach>
		</if>
		<if test=" null != sortColumns">order by ${sortColumns}</if>
	</sql>
	
	<select id="findList" parameterType="com.iformall.domain.po.WxBillOtherDeposit" resultMap="BaseResultMap">
		select
		<include refid="allColumns"/>
		from wx_bill_other_deposit
		<include refid="dynamicWhereConditions"/>
	</select>
	
	<select id="queryBillList" parameterType="com.iformall.domain.po.WxBillOtherDeposit" resultMap="BaseResultMap">
		select br.`id`,br.`receive_pay`,br.`pay`,br.`receive_date`,br.`pay_date`,br.`createtime`,br.`expired_day`,
		br.`owe`,br.`status`,m.`name` merchant_name,s.shop_number,br.`updatetime`,br.`return_price`,br.`merchant_id`,
		br.shop_id,br.name,br.comments,br.`rent_shop_type`,br.pay_way,br.`starttime`,br.`endtime`,br.freeze
		from wx_bill_other_deposit br left join wx_merchant m on br.merchant_id=m.id
		left join wx_shop s on br.shop_id=s.id
		<where>
			<if test=" null != id ">and br.`id` = #{id}</if>
			<if test=" null != freeze ">and br.`freeze` = #{freeze}</if>
			<if test=" null != merchantId ">and br.`merchant_id` = #{merchantId}</if>
			<if test=" null != merchantName and ''!=merchantName ">and m.`name` like concat('%',#{merchantName},'%')</if>
			<if test=" null != status ">and br.`status` = #{status}</if>
			<if test=" null != isDel ">and br.`is_del` = #{isDel}</if>
			<if test=" null != name and ''!=name">and br.`name` = #{name}</if>
			<if test=" null != rentShopType ">and br.`rent_shop_type` = #{rentShopType}</if>
			<if test=" null != payWay ">and br.`pay_way` = #{payWay}</if>
			<if test=" null != comments and ''!=comments">and br.`comments` like concat('%',#{comments},'%')</if>
			<if test=" null != starttime and null!=endtime ">and br.`receive_date` between #{starttime} and #{endtime}</if>
		</where>
		<if test=" null != sortColumns"> order by ${sortColumns} </if>
		<if test=" null == sortColumns"> order by id desc </if>
	</select>
	
	<update id="updateNotPaidStatus" parameterType="hashmap">
		update wx_bill_other_deposit set status=#{notPaid},expired_day=DATEDIFF(now(),receive_date)
		where tenant_id=#{tenantId} and status!=#{paid} and status!=5 and DATEDIFF(now(),receive_date)>0
	</update>
	
	<update id="updateWaitPayStatus" parameterType="hashmap">
		update wx_bill_other_deposit set status=#{waitPay} where tenant_id=#{tenantId} and status!=5
		and status!=#{paid} and DATEDIFF(now(),receive_date) &lt;=0
	</update>


</mapper>
