zhubaomin
2025-04-07 ecef3df4890be54c1da2a8a4fc1c8c1f50f1c263
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVirtualCardMapper.xml
@@ -8,15 +8,17 @@
    <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, last_operate, last_operate_time, in_use, intake_id, create_time
    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-->
@@ -34,11 +36,11 @@
  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeVirtualCard">
    <!--@mbg.generated-->
    insert into se_virtual_card (id, vc_num, client_id, 
      money, last_operate, last_operate_time,
      in_use, intake_id, create_time)
      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}, #{lastOperate,jdbcType=TINYINT}, #{lastOperateTime,jdbcType=TIMESTAMP},
      #{inUse,jdbcType=TINYINT}, #{intakeId,jdbcType=BIGINT},#{createTime,jdbcType=TIMESTAMP})
      #{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-->
@@ -56,6 +58,9 @@
      <if test="money != null">
        money,
      </if>
      <if test="state != null">
        state,
      </if>
      <if test="lastOperate != null">
        last_operate,
      </if>
@@ -67,6 +72,9 @@
      </if>
      <if test="intakeId != null">
        intake_id,
      </if>
      <if test="openTime != null">
        open_time,
      </if>
      <if test="createTime != null">
        create_time,
@@ -85,6 +93,9 @@
      <if test="money != null">
        #{money,jdbcType=FLOAT},
      </if>
      <if test="state != null">
        #{state,jdbcType=TINYINT},
      </if>
      <if test="lastOperate != null">
        #{lastOperate,jdbcType=TINYINT},
      </if>
@@ -96,6 +107,9 @@
      </if>
      <if test="intakeId != null">
        #{intakeId,jdbcType=BIGINT},
      </if>
      <if test="openTime != null">
        #{openTime,jdbcType=TIMESTAMP},
      </if>
      <if test="createTime != null">
        #{createTime,jdbcType=TIMESTAMP},
@@ -115,6 +129,9 @@
      <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>
@@ -126,6 +143,9 @@
      </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},
@@ -139,24 +159,32 @@
    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" parameterType="java.lang.Long">
  <update id="updateVcCardNoUseStateByIntakeId">
    update se_virtual_card
    set in_use = 0,
      intake_id = null
    where intake_id = #{intakeId,jdbcType=BIGINT}
    where intake_id = #{intakeId,jdbcType=BIGINT} and open_time &lt; #{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>
@@ -170,22 +198,23 @@
  <!--获取农户全部虚拟卡-->
  <select id="getVCs" resultType="com.dy.pipIrrGlobal.voSe.VoVirtualCard">
    SELECT
<!--      CAST(id AS char) AS id,-->
      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
        WHEN money &lt;= #{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
    ORDER BY in_use, money DESC
  </select>
  <!--根据虚拟卡ID获取虚拟卡对象-->
@@ -193,76 +222,109 @@
    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 "使用中"
            WHEN in_use = 0 THEN '未使用'
            WHEN in_use = 1 THEN '使用中'
        END) AS inUseName
    FROM se_virtual_card
    WHERE id = #{vcId}
    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 vc_num = #{vcNum}
    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 vc_num = #{vcNum}
    SELECT id FROM se_virtual_card WHERE state = 1 AND vc_num = #{vcNum}
  </select>
  <!--根据虚拟卡编号获取虚拟卡ID-->
  <!--根据虚拟卡编号获取农户id、姓名、地址-->
  <select id="getClientIdAndNameByVsCardNo" resultType="java.util.Map">
    SELECT
    cli.id AS clientId,
    cli.name AS clientName
    cli.name AS clientName,
    cli.address AS clientAddress
    FROM se_virtual_card card
    INNER JOIN se_client cli ON card.client_id = cli.id
    WHERE card.vc_num = #{vcNum}
    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 vc_num LIKE CONCAT('%',#{areaCode},'%')
    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
      CAST(id AS char) AS id,
      CAST(vc_id AS char) AS vcId,
      CAST(client_id AS char) AS clientId,
      money,
      after_recharge AS afterRecharge,
      order_number AS orderNumber,
      recharge_amount AS rechargeAmount,
      order_time AS orderTime,
      recharge_time AS rechargeTime,
      order_state AS orderState,
      (CASE
      WHEN order_state = 1 THEN "未支付"
      WHEN order_state = 2 THEN "已支付"
      END) AS orderStateName
    FROM se_vc_recharge
    where order_state = 2
    order by recharge_time DESC
    <if test="pageCurr != null and pageSize != null">
      LIMIT ${(pageCurr-1)*pageSize}, ${pageSize}
        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
    where order_state = 2
    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>