From 6dd90a95c5dff764f7ea6e8f61a36fc0e3bf6aa3 Mon Sep 17 00:00:00 2001
From: wuzeyu <1223318623@qq.com>
Date: 星期一, 16 十二月 2024 17:20:10 +0800
Subject: [PATCH] 优化接口 获得一个取水口接口 优化传参方式、增加片区名称和地址两个字段

---
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml |  173 ++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 102 insertions(+), 71 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
index 8935aee..2753352 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -61,10 +61,13 @@
     </delete>
 
     <!--渚濇嵁姘村崱鍦板潃鑾峰彇姘村崱缂栧彿锛�12鏈�19鏃ュ簾寮冿級-->
+    <!--2024-06-30鍙栨秷搴熷純锛屾仮澶嶄娇鐢�-->
     <select id="getCardIdByAddr" resultType="java.lang.Long">
         SELECT id AS cardId
         FROM se_client_card
         WHERE cardAddr = #{cardAddr}
+        ORDER BY id DESC
+        LIMIT 1
     </select>
 
     <!--鏍规嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿紙12鏈�19鏃ユ坊鍔犲悗搴熷純锛�-->
@@ -346,47 +349,67 @@
     <!--鏍规嵁鍐滄埛涓婚敭鑾峰彇姘村崱鍒楄〃锛堢墿鐞嗗崱+铏氭嫙鍗★級-->
     <select id="getCardInfoByClientId" resultType="com.dy.pipIrrGlobal.voSe.VoCardInfo">
         SELECT *
-        FROM (SELECT '鐗╃悊鍗�'        AS cardType,
-                     card.cardNum AS cardNum,
-                     card.money   AS money,
-                     (CASE
-                          WHEN card.state = 1 THEN '姝e父'
-                          WHEN card.state = 2 THEN '宸叉敞閿�'
-                          ELSE '宸叉寕澶�'
-                         END)     AS state
+        FROM (SELECT
+                '鐗╃悊鍗�' AS cardType,
+                card.cardNum AS cardNum,
+                card.money   AS money,
+                (CASE
+                    WHEN card.state = 1 THEN '姝e父'
+                    WHEN card.state = 2 THEN '宸叉敞閿�'
+                    ELSE '宸叉寕澶�'
+                END) AS state
               FROM se_client_card card
-                       INNER JOIN se_client cli ON cli.id = card.clientId
-              WHERE card.clientId = #{clientId,jdbcType=BIGINT}
+                INNER JOIN se_client cli ON cli.id = card.clientId
+              WHERE state != 4 AND card.clientId = #{clientId,jdbcType=BIGINT}
               UNION ALL
-              SELECT '铏氭嫙鍗�'     AS cardType,
-                     vc.vc_num AS cardNum,
-                     vc.money  AS money,
-                     (CASE
-                          WHEN vc.in_use = 0 THEN '鏈娇鐢�'
-                          WHEN vc.in_use = 1 THEN '浣跨敤涓�'
-                         END)  AS state
+              SELECT
+                '铏氭嫙鍗�' AS cardType,
+                vc.vc_num AS cardNum,
+                ROUND(vc.money /100, 2)  AS money,
+                (CASE
+                    WHEN vc.in_use = 0 THEN '鏈娇鐢�'
+                    WHEN vc.in_use = 1 THEN '浣跨敤涓�'
+                END) AS state
               FROM se_virtual_card vc
-                       INNER JOIN se_client cli ON cli.id = vc.client_id
-              WHERE vc.client_id = #{clientId,jdbcType=BIGINT}
-        <!--              SELECT '铏氭嫙鍗�'              AS cardType,-->
-        <!--                     virtualCard.vc_num AS CardNum,-->
-        <!--                     virtualCard.money  AS vcMoney,-->
-        <!--                     (CASE-->
-        <!--                          WHEN virtualCard.in_use = 0 THEN '鏈娇鐢�'-->
-        <!--                          WHEN virtualCard.in_use = 1 THEN '浣跨敤涓�'-->
-        <!--                         END)           AS State-->
-        <!--              FROM se_client client-->
-        <!--                       LEFT JOIN se_virtual_card virtualCard ON client.id = virtualCard.client_id-->
-        <!--              WHERE client.id = #{clientId,jdbcType=BIGINT}-->
+                INNER JOIN se_client cli ON cli.id = vc.client_id
+              WHERE vc.state = 1 AND vc.client_id = #{clientId,jdbcType=BIGINT}
         ) card
         ORDER BY card.Money DESC, card.State DESC
     </select>
 
     <!--鏍规嵁姘村崱缂栧彿鑾峰彇鎿嶄綔璁板綍鍒楄〃-->
     <select id="getOperateRecordsByCardNum" resultType="java.util.HashMap">
-        SELECT *
-        FROM v_operate
-        WHERE cardNum = #{cardNum,jdbcType=BIGINT}
+        SELECT
+            ope.id AS orderNumber,
+            cli.villageId,
+            cli.districtTitle,
+            cli.clientNum,
+            cli.`name`,
+            card.cardNum,
+            cli.idCard,
+            cli.phone,
+            IFNULL(ope.money,0) AS money,
+            IFNULL(ope.gift,0) AS gift,
+            IFNULL(ope.card_cost,0) AS cardCost,
+            IFNULL((ope.money + ope.trade_amount + ope.gift),0) AS afterRecharge,
+            ope.payment_id AS paymentId,
+            pay.name AS paymentMethod,
+            CASE
+            WHEN ope.operate_type = 1 THEN '寮�鍗�'
+            WHEN ope.operate_type = 2 THEN '鍏呭��'
+            WHEN ope.operate_type = 3 THEN '閿�鍗�'
+            END AS operateType,
+            ope.operate_dt AS operateDt,
+            user.name AS operatorName
+        FROM se_card_operate ope
+            LEFT JOIN se_client cli ON cli.id = ope.client_id
+            LEFT JOIN se_client_card card ON card.id = ope.card_id
+            LEFT JOIN se_payment_method pay ON pay.id = ope.payment_id
+            LEFT JOIN ba_user user ON user.id = ope.operator
+        WHERE ope.operate_valid = 2 AND ope.operate_type in (1,2,3) AND cardNum = #{cardNum,jdbcType=BIGINT}
+<!--        SELECT *-->
+<!--        FROM v_operate-->
+<!--        WHERE cardNum = #{cardNum,jdbcType=BIGINT}-->
     </select>
 
     <!--鏍规嵁姘村崱缂栧彿鑾峰彇浣欓-->
@@ -423,6 +446,7 @@
                     WHEN state = 1 THEN '姝e父'
                     WHEN state = 2 THEN '宸叉敞閿�'
                     WHEN state = 3 THEN '宸叉寕澶�'
+                    WHEN state = 4 THEN '鏃犳晥鍗$墖'
             END) AS stateName
         FROM se_client_card
         WHERE cardNum = #{cardNum,jdbcType=BIGINT}
@@ -432,7 +456,7 @@
     <select id="getCardsCount" parameterType="java.util.Map" resultType="java.lang.Long">
         SELECT COUNT(*) AS recordCount
         FROM se_client_card card
-                 INNER JOIN se_client cli ON card.clientId = cli.id
+            LEFT JOIN se_client cli ON card.clientId = cli.id
         <where>
             AND card.state = 1
             <if test="clientNum != null and clientNum != ''">
@@ -452,25 +476,16 @@
     <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇姘村崱鍒楄〃锛屽簲鐢ㄧ▼搴忎娇鐢�-->
     <select id="getCards" resultType="com.dy.pipIrrGlobal.voSe.VoCards">
         SELECT cli.clientNum,
-               cli.name AS clientName,
-               cardNum,
-        <!--        CASE-->
-        <!--            WHEN card.cardNum LIKE '10%' THEN CONCAT(SUBSTRING(card.cardNum, 7, 6),SUBSTRING(card.cardNum, 14, 4))-->
-        <!--            ELSE card.cardNum-->
-        <!--        END AS cardNum,-->
-        cli.phone,
-        cli.idCard,
-        card.state AS cardState,
-        <!--        (CASE-->
-        <!--            WHEN card.state = 1 THEN '姝e父'-->
-        <!--            WHEN card.state = 2 THEN '宸叉敞閿�'-->
-        <!--            WHEN card.state = 3 THEN '宸叉寕澶�'-->
-        <!--        End) AS stateName,-->
-        '姝e父'                  AS stateName,
-        '鍐滄埛鍗�'                 AS cardType,
-        FORMAT(card.money, 2) AS money
+            cli.name AS clientName,
+            cardNum,
+            cli.phone,
+            cli.idCard,
+            card.state AS cardState,
+            '姝e父' AS stateName,
+            '鍐滄埛鍗�' AS cardType,
+            FORMAT(card.money, 2) AS money
         FROM se_client_card card
-                 INNER JOIN se_client cli ON card.clientId = cli.id
+            LEFT JOIN se_client cli ON card.clientId = cli.id
         <where>
             AND card.state = 1
             <if test="clientNum != null and clientNum != ''">
@@ -504,23 +519,20 @@
 
     <!--鑾峰彇宸叉寕澶辨湭琛ュ崱鐨勮褰�-->
     <select id="getUnreplaced" resultType="com.dy.pipIrrGlobal.voSe.VoCards">
-        SELECT cli.clientNum,
-               cli.name AS clientName,
-               cardNum,
-        <!--        CASE-->
-        <!--          WHEN card.cardNum LIKE '10%' THEN CONCAT(SUBSTRING(card.cardNum, 7, 6),SUBSTRING(card.cardNum, 14, 4))-->
-        <!--          ELSE card.cardNum-->
-        <!--        END AS cardNum,-->
-        cli.phone,
-        cli.idCard,
-        card.state            AS cardState,
-        '宸叉寕澶�'                 AS stateName,
-        '鍐滄埛鍗�'                 AS cardType,
-        FORMAT(card.money, 2) AS money
+        SELECT
+            cli.clientNum,
+            cli.name AS clientName,
+            cardNum,
+            cli.phone,
+            cli.idCard,
+            card.state AS cardState,
+            '宸叉寕澶�' AS stateName,
+            '鍐滄埛鍗�' AS cardType,
+            FORMAT(card.money, 2) AS money
         FROM se_client_card card
-                 INNER JOIN se_client cli ON card.clientId = cli.id
+            INNER JOIN se_client cli ON card.clientId = cli.id
         WHERE card.state = 3
-          AND NOT EXISTS(SELECT * FROM se_client_card card2 WHERE card2.original_card_id = card.id)
+            AND NOT EXISTS(SELECT * FROM se_client_card card2 WHERE card2.original_card_id = card.id)
         ORDER BY card.id
         <trim prefix="limit ">
             <if test="start != null and count != null">
@@ -529,7 +541,7 @@
         </trim>
     </select>
 
-    <!--鏍规嵁鎸囧畾姘村崱缂栧彿鑾峰彇鎸傚け浜嬭褰曟暟閲忥紙琛ュ崱銆佽В閿佷娇鐢級-->
+    <!--鏍规嵁鎸囧畾姘村崱缂栧彿鑾峰彇鎸傚け璁板綍鏁伴噺锛堣ˉ鍗°�佽В閿佷娇鐢級-->
     <select id="getLostCount" resultType="java.lang.Integer">
         SELECT COUNT(*) AS recordCount
         FROM se_client_card card
@@ -556,7 +568,7 @@
     <select id="getCardsByClientNameAndPhoneCount" resultType="java.lang.Long">
         SELECT COUNT(*) AS recordCount
         FROM se_client_card card
-                 INNER JOIN se_client cli ON card.clientId = cli.id
+            INNER JOIN se_client cli ON card.clientId = cli.id
         <where>
             card.state = 1
             <if test="clientName != null and clientName != ''">
@@ -586,7 +598,7 @@
                '鍐滄埛鍗�'                 AS cardType,
                FORMAT(card.money, 2) AS money
         FROM se_client_card card
-                 INNER JOIN se_client cli ON card.clientId = cli.id
+            LEFT JOIN se_client cli ON card.clientId = cli.id
         <where>
             card.state = 1
             <if test="clientName != null and clientName != ''">
@@ -636,11 +648,11 @@
         WHERE state = 1
     </select>
 
-    <!--鏍规嵁姘村崱鍦板潃鑾峰彇姘村崱鏁伴噺-->
+    <!--鏍规嵁姘村崱鍦板潃鑾峰彇姘村崱鏁伴噺锛屾棤鏁堝崱鐗囨帓闄ゅ湪澶�-->
     <select id="getCountByCardAddr" resultType="java.lang.Long">
         SELECT COUNT(*) AS recordCount
         FROM se_client_card
-        WHERE cardAddr = #{cardAddr}
+        WHERE cardAddr = #{cardAddr} AND se_client_card.state != 4
     </select>
 
     <!--鏍规嵁姘村崱鍦板潃鑾峰彇鎸囧畾鐘舵�佺殑姘村崱鏁伴噺-->
@@ -722,4 +734,23 @@
         FROM rm_open_close_valve_history
         WHERE cl_dt BETWEEN #{timeStart} AND #{timeStop}
     </select>
+
+    <!--渚濇嵁姘村崱鍦板潃灏嗘渶鍚庝竴鏉℃棤鏁堢姸鎬佺殑鎸囧畾鎿嶄綔璁板綍鏀逛负鏈夋晥-->
+    <update id="turnCardValidByAddr">
+        UPDATE se_client_card
+        SET state = 1
+        WHERE id = (
+            SELECT id FROM (
+                SELECT id
+                FROM se_client_card
+                WHERE state = 4 AND cardAddr = #{cardAddr} AND lastOper  = #{operateType}
+                ORDER BY id DESC
+                LIMIT 1) AS subquery
+        );
+    </update>
+
+    <!--鏍规嵁姘村崱ID鑾峰彇鍘熸按鍗D锛岃ˉ鍗¢�氱煡涓娇鐢�-->
+    <select id="getOriginalCardIdByCardId" resultType="java.lang.Long">
+        SELECT original_card_id AS originalCardId FROM se_client_card WHERE id = #{cardId};
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0