| <?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="open_time" jdbcType="TIMESTAMP" property="openTime" /> | 
|     <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, open_time, 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, open_time, 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},#{openTime,jdbcType=TIMESTAMP},#{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="openTime != null"> | 
|         open_time, | 
|       </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="openTime != null"> | 
|         #{openTime,jdbcType=TIMESTAMP}, | 
|       </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="openTime != null"> | 
|         open_time = #{openTime,jdbcType=TIMESTAMP}, | 
|       </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}, | 
|       open_time = #{openTime,jdbcType=TIMESTAMP}, | 
|       create_time = #{createTime,jdbcType=TIMESTAMP} | 
|     where id = #{id,jdbcType=BIGINT} | 
|   </update> | 
|   <update id="updateVcCardNoUseStateByIntakeId"> | 
|     update se_virtual_card | 
|     set in_use = 0, | 
|       intake_id = null | 
|     where intake_id = #{intakeId,jdbcType=BIGINT} and open_time < #{now,jdbcType=TIMESTAMP} | 
|   </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,--> | 
|       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, | 
| <!--        ROUND(money / 100,2) AS money,--> | 
|         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> |