<?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.dy.pipIrrGlobal.daoSe.SeVirtualCardMapper"> 
 | 
  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> 
 | 
    <!--@mbg.generated--> 
 | 
    <!--@Table se_virtual_card--> 
 | 
    <id column="id" jdbcType="BIGINT" property="id" /> 
 | 
    <result column="vc_num" jdbcType="BIGINT" property="vcNum" /> 
 | 
    <result column="client_id" jdbcType="BIGINT" property="clientId" /> 
 | 
    <result column="money" jdbcType="FLOAT" property="money" /> 
 | 
    <result column="state" jdbcType="TINYINT" property="state" /> 
 | 
    <result column="last_operate" jdbcType="TINYINT" property="lastOperate" /> 
 | 
    <result column="last_operate_time" jdbcType="TIMESTAMP" property="lastOperateTime" /> 
 | 
    <result column="in_use" jdbcType="TINYINT" property="inUse" /> 
 | 
    <result column="intake_id" jdbcType="BIGINT" property="intakeId" /> 
 | 
    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" /> 
 | 
  </resultMap> 
 | 
  <sql id="Base_Column_List"> 
 | 
    <!--@mbg.generated--> 
 | 
    id, vc_num, client_id, money, state, last_operate, last_operate_time, in_use, intake_id, create_time 
 | 
  </sql> 
 | 
  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> 
 | 
    <!--@mbg.generated--> 
 | 
    select  
 | 
<!--    <include refid="Base_Column_List" />--> 
 | 
    * 
 | 
    from se_virtual_card 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </select> 
 | 
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> 
 | 
    <!--@mbg.generated--> 
 | 
    delete from se_virtual_card 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </delete> 
 | 
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> 
 | 
    <!--@mbg.generated--> 
 | 
    insert into se_virtual_card (id, vc_num, client_id,  
 | 
      money, state, last_operate, last_operate_time, 
 | 
      in_use, intake_id, create_time) 
 | 
    values (#{id,jdbcType=BIGINT}, #{vcNum,jdbcType=BIGINT}, #{clientId,jdbcType=BIGINT},  
 | 
      #{money,jdbcType=FLOAT}, #{state,jdbcType=TINYINT}, #{lastOperate,jdbcType=TINYINT}, #{lastOperateTime,jdbcType=TIMESTAMP}, 
 | 
      #{inUse,jdbcType=TINYINT}, #{intakeId,jdbcType=BIGINT},#{createTime,jdbcType=TIMESTAMP}) 
 | 
  </insert> 
 | 
  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> 
 | 
    <!--@mbg.generated--> 
 | 
    insert into se_virtual_card 
 | 
    <trim prefix="(" suffix=")" suffixOverrides=","> 
 | 
      <if test="id != null"> 
 | 
        id, 
 | 
      </if> 
 | 
      <if test="vcNum != null"> 
 | 
        vc_num, 
 | 
      </if> 
 | 
      <if test="clientId != null"> 
 | 
        client_id, 
 | 
      </if> 
 | 
      <if test="money != null"> 
 | 
        money, 
 | 
      </if> 
 | 
      <if test="state != null"> 
 | 
        state, 
 | 
      </if> 
 | 
      <if test="lastOperate != null"> 
 | 
        last_operate, 
 | 
      </if> 
 | 
      <if test="lastOperateTime != null"> 
 | 
        last_operate_time, 
 | 
      </if> 
 | 
      <if test="inUse != null"> 
 | 
        in_use, 
 | 
      </if> 
 | 
      <if test="intakeId != null"> 
 | 
        intake_id, 
 | 
      </if> 
 | 
      <if test="createTime != null"> 
 | 
        create_time, 
 | 
      </if> 
 | 
    </trim> 
 | 
    <trim prefix="values (" suffix=")" suffixOverrides=","> 
 | 
      <if test="id != null"> 
 | 
        #{id,jdbcType=BIGINT}, 
 | 
      </if> 
 | 
      <if test="vcNum != null"> 
 | 
        #{vcNum,jdbcType=BIGINT}, 
 | 
      </if> 
 | 
      <if test="clientId != null"> 
 | 
        #{clientId,jdbcType=BIGINT}, 
 | 
      </if> 
 | 
      <if test="money != null"> 
 | 
        #{money,jdbcType=FLOAT}, 
 | 
      </if> 
 | 
      <if test="state != null"> 
 | 
        #{state,jdbcType=TINYINT}, 
 | 
      </if> 
 | 
      <if test="lastOperate != null"> 
 | 
        #{lastOperate,jdbcType=TINYINT}, 
 | 
      </if> 
 | 
      <if test="lastOperateTime != null"> 
 | 
        #{lastOperateTime,jdbcType=TIMESTAMP}, 
 | 
      </if> 
 | 
      <if test="inUse != null"> 
 | 
        #{inUse,jdbcType=TINYINT}, 
 | 
      </if> 
 | 
      <if test="intakeId != null"> 
 | 
        #{intakeId,jdbcType=BIGINT}, 
 | 
      </if> 
 | 
      <if test="createTime != null"> 
 | 
        #{createTime,jdbcType=TIMESTAMP}, 
 | 
      </if> 
 | 
    </trim> 
 | 
  </insert> 
 | 
  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> 
 | 
    <!--@mbg.generated--> 
 | 
    update se_virtual_card 
 | 
    <set> 
 | 
      <if test="vcNum != null"> 
 | 
        vc_num = #{vcNum,jdbcType=BIGINT}, 
 | 
      </if> 
 | 
      <if test="clientId != null"> 
 | 
        client_id = #{clientId,jdbcType=BIGINT}, 
 | 
      </if> 
 | 
      <if test="money != null"> 
 | 
        money = #{money,jdbcType=FLOAT}, 
 | 
      </if> 
 | 
      <if test="state != null"> 
 | 
        state = #{state,jdbcType=TINYINT}, 
 | 
      </if> 
 | 
      <if test="lastOperate != null"> 
 | 
        last_operate = #{lastOperate,jdbcType=TINYINT}, 
 | 
      </if> 
 | 
      <if test="lastOperateTime != null"> 
 | 
        last_operate_time = #{lastOperateTime,jdbcType=TIMESTAMP}, 
 | 
      </if> 
 | 
      <if test="inUse != null"> 
 | 
        in_use = #{inUse,jdbcType=TINYINT}, 
 | 
      </if> 
 | 
      <if test="intakeId != null"> 
 | 
        intake_id = #{intakeId,jdbcType=BIGINT}, 
 | 
      </if> 
 | 
      <if test="createTime != null"> 
 | 
        create_time = #{createTime,jdbcType=TIMESTAMP}, 
 | 
      </if> 
 | 
    </set> 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </update> 
 | 
  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> 
 | 
    <!--@mbg.generated--> 
 | 
    update se_virtual_card 
 | 
    set vc_num = #{vcNum,jdbcType=BIGINT}, 
 | 
      client_id = #{clientId,jdbcType=BIGINT}, 
 | 
      money = #{money,jdbcType=FLOAT}, 
 | 
      state = #{state,jdbcType=TINYINT}, 
 | 
      last_operate = #{lastOperate,jdbcType=TINYINT}, 
 | 
      last_operate_time = #{lastOperateTime,jdbcType=TIMESTAMP}, 
 | 
      in_use = #{inUse,jdbcType=TINYINT}, 
 | 
      intake_id = #{intakeId,jdbcType=BIGINT}, 
 | 
      create_time = #{createTime,jdbcType=TIMESTAMP} 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </update> 
 | 
  <update id="updateVcCardNoUseStateByIntakeId" parameterType="java.lang.Long"> 
 | 
    update se_virtual_card 
 | 
    set in_use = 0, 
 | 
      intake_id = null 
 | 
    where intake_id = #{intakeId,jdbcType=BIGINT} 
 | 
  </update> 
 | 
  <update id="updateMoney" > 
 | 
    update se_virtual_card 
 | 
    set money = #{money,jdbcType=FLOAT} 
 | 
    where id = #{id,jdbcType=BIGINT} 
 | 
  </update> 
 | 
  <!--验证农户是否拥有指定名称的虚拟卡--> 
 | 
  <select id="getRecordCountByName" resultType="java.lang.Integer"> 
 | 
    SELECT COUNT(*) AS recordCount 
 | 
    FROM se_virtual_card 
 | 
    <where> 
 | 
      AND state = 1 
 | 
      <if test = "clientId != null and clientId > 0"> 
 | 
        AND client_id = #{clientId} 
 | 
      </if> 
 | 
  
 | 
      <if test = "vcName != null and vcName !=''"> 
 | 
        AND vc_num = #{vcName} 
 | 
      </if> 
 | 
    </where> 
 | 
  </select> 
 | 
  
 | 
  <!--获取农户全部虚拟卡--> 
 | 
  <select id="getVCs" resultType="com.dy.pipIrrGlobal.voSe.VoVirtualCard"> 
 | 
    SELECT 
 | 
      id, 
 | 
      vc_num AS vcNum, 
 | 
      ROUND(money / 100, 2) AS money, 
 | 
      in_use AS inUse, 
 | 
      (CASE 
 | 
        WHEN money <= #{alarmValue} THEN true 
 | 
        ELSE FALSE 
 | 
      END) AS isAlarmValue 
 | 
    FROM se_virtual_card 
 | 
    <where> 
 | 
      AND state = 1 
 | 
      <if test = "clientId != null"> 
 | 
        AND client_id = #{clientId} 
 | 
      </if> 
 | 
    </where> 
 | 
    ORDER BY in_use, money DESC 
 | 
  </select> 
 | 
  
 | 
  <!--根据虚拟卡ID获取虚拟卡对象--> 
 | 
  <select id="getVcById" resultType="com.dy.pipIrrGlobal.voSe.VoVirtualCard"> 
 | 
    SELECT 
 | 
        id, 
 | 
        vc_num AS vcNum, 
 | 
        money, 
 | 
        in_use AS inUse, 
 | 
        (CASE 
 | 
            WHEN in_use = 0 THEN '未使用' 
 | 
            WHEN in_use = 1 THEN '使用中' 
 | 
        END) AS inUseName 
 | 
    FROM se_virtual_card 
 | 
    WHERE state = 1 AND id = #{vcId} 
 | 
  </select> 
 | 
  
 | 
  <!--根据虚拟卡编号获取虚拟卡--> 
 | 
  <select id="getVcCardByNum" resultType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> 
 | 
    select 
 | 
    <include refid="Base_Column_List" /> 
 | 
    FROM se_virtual_card WHERE state = 1 AND vc_num = #{vcNum} 
 | 
  </select> 
 | 
  
 | 
  <!--根据虚拟卡编号获取虚拟卡ID--> 
 | 
  <select id="getVcIdByNum" resultType="java.lang.Long"> 
 | 
    SELECT id FROM se_virtual_card WHERE state = 1 AND vc_num = #{vcNum} 
 | 
  </select> 
 | 
  
 | 
  <!--根据虚拟卡编号获取虚拟卡ID--> 
 | 
  <select id="getClientIdAndNameByVsCardNo" resultType="java.util.Map"> 
 | 
    SELECT 
 | 
    cli.id AS clientId, 
 | 
    cli.name AS clientName 
 | 
    FROM se_virtual_card card 
 | 
    INNER JOIN se_client cli ON card.client_id = cli.id 
 | 
    WHERE card.state = 1 AND card.vc_num = #{vcNum} 
 | 
  </select> 
 | 
  
 | 
  <!-- 根据水卡编号获取虚拟水卡 --> 
 | 
  <select id="getCardsByNum"  resultType="com.dy.pipIrrGlobal.voSe.VoCardInfo1"> 
 | 
    SELECT 
 | 
    id, 
 | 
    money 
 | 
    FROM se_virtual_card 
 | 
    WHERE state = 1 AND vc_num = #{cardNum} 
 | 
  </select> 
 | 
  
 | 
  <!--根据行政区划串模糊查询虚拟卡编号--> 
 | 
  <select id="getVcCardNumOfMax"  resultType="java.lang.String"> 
 | 
    SELECT vc_num 
 | 
    FROM se_virtual_card 
 | 
    WHERE state = 1 AND vc_num LIKE CONCAT('%',#{areaCode},'%') 
 | 
    ORDER BY vc_num desc 
 | 
    LIMIT 0,1 
 | 
  </select> 
 | 
  
 | 
  <!--获取虚拟卡充值记录,不包括已已注销卡的充值记录--> 
 | 
  <select id="getVcRechargeRecords" resultType="com.dy.pipIrrGlobal.voSe.VoVcRecharge" > 
 | 
    SELECT 
 | 
        rec.vc_id AS vcId, 
 | 
        rec.client_id AS clientId, 
 | 
        rec.recharge_time AS rechargeTime, 
 | 
        rec.recharge_amount AS rechargeAmount, 
 | 
        rec.after_recharge AS afterRecharge, 
 | 
        '微信支付' AS rechargeType 
 | 
    <!--        CASE--> 
 | 
    <!--            WHEN card.state = 1 THEN '正常销虚拟卡'--> 
 | 
    <!--            WHEN card.state = 2 THEN '已注销虚拟卡'--> 
 | 
    <!--        END AS cardState,--> 
 | 
    FROM se_vc_recharge rec 
 | 
        INNER JOIN se_virtual_card card ON card.id = rec.vc_id 
 | 
    <where> 
 | 
      AND card.state = 1 
 | 
      AND rec.order_state = 2 
 | 
      <if test = "vcId != null and vcId > 0"> 
 | 
        AND rec.vc_id = #{vcId} 
 | 
      </if> 
 | 
    </where> 
 | 
    order by rec.recharge_time DESC 
 | 
    <if test="start != null and count != null"> 
 | 
      LIMIT #{start}, #{count} 
 | 
    </if> 
 | 
  </select> 
 | 
  
 | 
  <select id="getRechargeRecordCount" resultType="java.lang.Long"> 
 | 
    SELECT 
 | 
      COUNT(*) 
 | 
    FROM se_vc_recharge rec 
 | 
        INNER JOIN se_virtual_card card ON card.id = rec.vc_id 
 | 
    <where> 
 | 
      AND card.state = 1 
 | 
      AND rec.order_state = 2 
 | 
      <if test = "vcId != null and vcId > 0"> 
 | 
        AND rec.vc_id = #{vcId} 
 | 
      </if> 
 | 
    </where> 
 | 
  </select> 
 | 
  
 | 
  <!--根据农户ID及虚拟卡ID获取正常状态的虚拟卡对象,销卡使用--> 
 | 
  <select id="getVcByClientIdAndVcId" resultType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard"> 
 | 
    SELECT * FROM se_virtual_card 
 | 
    WHERE state = 1 AND client_id = #{clientId} AND id = #{vcId} 
 | 
  </select> 
 | 
  
 | 
  <!--注销虚拟卡--> 
 | 
  <update id="cancelVc"> 
 | 
    UPDATE se_virtual_card SET state = 2,  last_operate = 4 , last_operate_time = NOW() 
 | 
    WHERE id = #{vcId} AND client_id = #{clientId} 
 | 
  </update> 
 | 
</mapper> 
 |