From 2555e23c828b603944f51883a580b401962b2209 Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期一, 12 八月 2024 17:32:51 +0800
Subject: [PATCH] 2024-08-12 朱宝民 4个查询统计接口

---
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/StartStopDateQO.java |   30 +++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVcOperateMapper.java                        |   38 ++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientStatistics.java                        |    4 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVcOperateMapper.xml                                       |   55 +++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardSv.java      |  111 ++++++++++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java    |   83 +++++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/TotalRechargeQO.java |   22 +++
 7 files changed, 333 insertions(+), 10 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVcOperateMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVcOperateMapper.java
index f58c98d..c8fca1a 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVcOperateMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeVcOperateMapper.java
@@ -2,7 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeVcOperate;
-import com.dy.pipIrrGlobal.voSt.VoClientRegisterVC;
+import com.dy.pipIrrGlobal.voSt.VoClientStatistics;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -41,5 +41,39 @@
      * @param params
      * @return
      */
-    List<VoClientRegisterVC> getRegisterVcClients(Map<?, ?> params);
+    List<VoClientStatistics> getRegisterVcClients(Map<?, ?> params);
+
+    /**
+     * 鎸囧畾鏃堕棿娈靛唴娉ㄥ唽鎬绘暟閲�
+     * @param params
+     * @return
+     */
+    Long getRegisterCount(Map<?, ?> params);
+
+    /**
+     * 鎸囧畾鏃堕棿娈靛厖鍊兼�绘暟閲�
+     * @param params
+     * @return
+     */
+    Long getRechargeCount(Map<?, ?> params);
+
+    /**
+     * 褰撳墠浣欓鎬婚噺
+     * @return
+     */
+    Double getTotalBalance();
+
+    /**
+     * 鎸囧畾鏃堕棿娈靛唴铏氭嫙鍗″厖鍊奸噾棰濊秴杩囨寚瀹氬�肩殑鍐滄埛璁板綍鏁伴噺
+     * @param params
+     * @return
+     */
+    Long getLargeRechargeClientsCount(Map<?, ?> params);
+
+    /**
+     * 鎸囧畾鏃堕棿娈靛唴铏氭嫙鍗″厖鍊奸噾棰濊秴杩囨寚瀹氬�肩殑鍐滄埛
+     * @param params
+     * @return
+     */
+    List<VoClientStatistics> getLargeRechargeClients(Map<?, ?> params);
 }
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientRegisterVC.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientStatistics.java
similarity index 85%
rename from pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientRegisterVC.java
rename to pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientStatistics.java
index 38f4990..ecec7ab 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientRegisterVC.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSt/VoClientStatistics.java
@@ -7,12 +7,12 @@
  * @author ZhuBaoMin
  * @date 2024-08-12 14:37
  * @LastEditTime 2024-08-12 14:37
- * @Description 鍐滄埛娉ㄥ唽铏氭嫙鍗¤鍥�
+ * @Description 缁熻妯″潡鍐滄埛瑙嗗浘
  */
 
 @Data
 @JsonPropertyOrder({"clientId","clientName"})
-public class VoClientRegisterVC {
+public class VoClientStatistics {
     private static final long serialVersionUID = 202408121438001L;
 
     /**
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVcOperateMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVcOperateMapper.xml
index 6093285..0bd1556 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVcOperateMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeVcOperateMapper.xml
@@ -143,7 +143,7 @@
     </select>
 
     <!--鎸囧畾鏃堕棿娈靛唴娉ㄥ唽铏氭嫙鍗$殑鍐滄埛-->
-    <select id="getRegisterVcClients" resultType="com.dy.pipIrrGlobal.voSt.VoClientRegisterVC">
+    <select id="getRegisterVcClients" resultType="com.dy.pipIrrGlobal.voSt.VoClientStatistics">
         SELECT cli.id   AS clientId,
                cli.name AS clientName
         FROM se_client cli
@@ -159,4 +159,57 @@
             </if>
         </trim>
     </select>
+
+    <!--鎸囧畾鏃堕棿娈靛唴娉ㄥ唽鎬绘暟閲�-->
+    <select id="getRegisterCount" resultType="java.lang.Long">
+        SELECT COUNT(*) AS recordCount
+        FROM se_vc_operate ope
+        WHERE ope.operate_type = 1
+          AND ope.operate_time BETWEEN #{timeStart} AND #{timeStop}
+    </select>
+
+    <!--鎸囧畾鏃堕棿娈靛厖鍊兼�绘暟閲�-->
+    <select id="getRechargeCount" resultType="java.lang.Long">
+        SELECT COUNT(*) AS recordCount
+        FROM se_vc_operate ope
+                 INNER JOIN se_vc_recharge rec ON rec.id = ope.recharge_id
+        WHERE ope.operate_type = 2
+          AND rec.order_state = 2
+          AND ope.operate_time BETWEEN #{timeStart} AND #{timeStop}
+    </select>
+
+    <!--褰撳墠浣欓鎬婚噺-->
+    <select id="getTotalBalance" resultType="java.lang.Double">
+        SELECT SUM(money) AS totalBalance
+        FROM se_virtual_card
+    </select>
+
+    <!--鎸囧畾鏃堕棿娈靛唴铏氭嫙鍗″厖鍊奸噾棰濊秴杩囨寚瀹氬�肩殑鍐滄埛璁板綍鏁伴噺-->
+    <select id="getLargeRechargeClientsCount" resultType="java.lang.Long">
+        SELECT COUNT(*) AS recordCount
+        FROM se_client cli
+        WHERE (SELECT SUM(recharge_amount)
+               FROM se_vc_recharge rec
+               WHERE rec.client_id = cli.id
+                 AND rec.order_state = 2
+                 AND rec.order_time BETWEEN #{timeStart} AND #{timeStop}) > #{totalRecharge}
+    </select>
+
+    <!--鎸囧畾鏃堕棿娈靛唴铏氭嫙鍗″厖鍊奸噾棰濊秴杩囨寚瀹氬�肩殑鍐滄埛-->
+    <select id="getLargeRechargeClients" resultType="com.dy.pipIrrGlobal.voSt.VoClientStatistics">
+        SELECT cli.id   AS clientId,
+               cli.name AS clientName
+        FROM se_client cli
+        WHERE (SELECT SUM(recharge_amount)
+               FROM se_vc_recharge rec
+               WHERE rec.client_id = cli.id
+                 AND rec.order_state = 2
+                 AND rec.order_time BETWEEN #{timeStart} AND #{timeStop}) > #{totalRecharge}
+        ORDER BY cli.id
+        <trim prefix="limit ">
+            <if test="start != null and count != null">
+                #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
+            </if>
+        </trim>
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java
index 2ecbfff..f544193 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardCtrl.java
@@ -4,8 +4,10 @@
 import com.dy.common.webUtil.BaseResponse;
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.common.webUtil.QueryResultVo;
-import com.dy.pipIrrGlobal.voSt.VoClientRegisterVC;
+import com.dy.pipIrrGlobal.voSt.VoClientStatistics;
 import com.dy.pipIrrStatistics.card.qo.CommonQO;
+import com.dy.pipIrrStatistics.card.qo.StartStopDateQO;
+import com.dy.pipIrrStatistics.card.qo.TotalRechargeQO;
 import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -39,7 +41,7 @@
      */
     @GetMapping(path = "/getRegisterVcClients")
     @SsoAop()
-    public BaseResponse<QueryResultVo<List<VoClientRegisterVC>>> getRegisterVcClients(@Valid CommonQO qo, BindingResult bindingResult) {
+    public BaseResponse<QueryResultVo<List<VoClientStatistics>>> getRegisterVcClients(@Valid CommonQO qo, BindingResult bindingResult) {
         if(bindingResult != null && bindingResult.hasErrors()){
             return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
         }
@@ -52,4 +54,81 @@
         }
     }
 
+    /**
+     * 鎸囧畾鏃堕棿娈靛唴娉ㄥ唽鎬绘暟閲�
+     * @param qo
+     * @param bindingResult
+     * @return
+     */
+    @GetMapping(path = "/getRegisterCount")
+    @SsoAop()
+    public BaseResponse<Boolean> getRegisterCount(@Valid StartStopDateQO qo, BindingResult bindingResult) {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        try {
+            return BaseResponseUtils.buildSuccess(virtualCardSv.getRegisterCount(qo));
+        } catch (Exception e) {
+            log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 鎸囧畾鏃堕棿娈靛厖鍊兼�绘暟閲�
+     * @param qo
+     * @param bindingResult
+     * @return
+     */
+    @GetMapping(path = "/getRechargeCount")
+    @SsoAop()
+    public BaseResponse<Boolean> getRechargeCount(@Valid StartStopDateQO qo, BindingResult bindingResult) {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        try {
+            return BaseResponseUtils.buildSuccess(virtualCardSv.getRechargeCount(qo));
+        } catch (Exception e) {
+            log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 褰撳墠浣欓鎬婚噺
+     * @return
+     */
+    @GetMapping(path = "/getTotalBalance")
+    @SsoAop()
+    public BaseResponse<Boolean> getTotalBalance() {
+        try {
+            return BaseResponseUtils.buildSuccess(virtualCardSv.getTotalBalance());
+        } catch (Exception e) {
+            log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    /**
+     * 鎸囧畾鏃堕棿娈靛唴铏氭嫙鍗″厖鍊奸噾棰濊秴杩囨寚瀹氬�肩殑鍐滄埛
+     * @param qo
+     * @param bindingResult
+     * @return
+     */
+    @GetMapping(path = "/getLargeRechargeClients")
+    @SsoAop()
+    public BaseResponse<QueryResultVo<List<VoClientStatistics>>> getLargeRechargeClients(@Valid TotalRechargeQO qo, BindingResult bindingResult) {
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        try {
+            return BaseResponseUtils.buildSuccess(virtualCardSv.getLargeRechargeClients(qo));
+        } catch (Exception e) {
+            log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardSv.java
index 7718163..0c6f032 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/VirtualCardSv.java
@@ -2,8 +2,10 @@
 
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.daoSe.SeVcOperateMapper;
-import com.dy.pipIrrGlobal.voSt.VoClientRegisterVC;
+import com.dy.pipIrrGlobal.voSt.VoClientStatistics;
 import com.dy.pipIrrStatistics.card.qo.CommonQO;
+import com.dy.pipIrrStatistics.card.qo.StartStopDateQO;
+import com.dy.pipIrrStatistics.card.qo.TotalRechargeQO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.common.utils.PojoUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -32,7 +34,7 @@
      * @param qo
      * @return
      */
-    public QueryResultVo<List<VoClientRegisterVC>> getRegisterVcClients(CommonQO qo) {
+    public QueryResultVo<List<VoClientStatistics>> getRegisterVcClients(CommonQO qo) {
         /**
          * 琛ラ綈璧锋鏃堕棿锛屽鏋滃紑濮嬫椂闂翠负绌猴紝鍒欓粯璁や负褰撳墠鏃ユ湡
          */
@@ -55,7 +57,7 @@
         // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟
         Long itemTotal = Optional.ofNullable(seVcOperateMapper.getRegisterVcClientsCount(params)).orElse(0L);
 
-        QueryResultVo<List<VoClientRegisterVC>> rsVo = new QueryResultVo<>() ;
+        QueryResultVo<List<VoClientStatistics>> rsVo = new QueryResultVo<>() ;
 
         rsVo.pageSize = qo.pageSize ;
         rsVo.pageCurr = qo.pageCurr ;
@@ -64,4 +66,107 @@
         rsVo.obj = seVcOperateMapper.getRegisterVcClients(params);
         return rsVo ;
     }
+
+    /**
+     * 鎸囧畾鏃堕棿娈靛唴娉ㄥ唽鎬绘暟閲�
+     * @param qo
+     * @return
+     */
+    public Long getRegisterCount(StartStopDateQO qo) {
+        /**
+         * 琛ラ綈璧锋鏃堕棿锛屽鏋滃紑濮嬫椂闂翠负绌猴紝鍒欓粯璁や负褰撳墠鏃ユ湡
+         */
+        String timeStart = qo.getTimeStart();
+        String timeStop = qo.getTimeStop();
+        if(timeStart != null) {
+            timeStart = timeStart + " 00:00:00";
+        }else {
+            timeStart = LocalDate.now() + " 00:00:00";
+        }
+        if(timeStop != null) {
+            timeStop = timeStop + " 23:59:59";
+        }
+        qo.setTimeStart(timeStart);
+        qo.setTimeStop(timeStop);
+
+        // 鐢熸垚鏌ヨ鍙傛暟
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
+
+        // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟
+        return Optional.ofNullable(seVcOperateMapper.getRegisterCount(params)).orElse(0L);
+    }
+
+    /**
+     * 鎸囧畾鏃堕棿娈靛厖鍊兼�绘暟閲�
+     * @param qo
+     * @return
+     */
+    public Long getRechargeCount(StartStopDateQO qo) {
+        /**
+         * 琛ラ綈璧锋鏃堕棿锛屽鏋滃紑濮嬫椂闂翠负绌猴紝鍒欓粯璁や负褰撳墠鏃ユ湡
+         */
+        String timeStart = qo.getTimeStart();
+        String timeStop = qo.getTimeStop();
+        if(timeStart != null) {
+            timeStart = timeStart + " 00:00:00";
+        }else {
+            timeStart = LocalDate.now() + " 00:00:00";
+        }
+        if(timeStop != null) {
+            timeStop = timeStop + " 23:59:59";
+        }
+        qo.setTimeStart(timeStart);
+        qo.setTimeStop(timeStop);
+
+        // 鐢熸垚鏌ヨ鍙傛暟
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
+
+        return Optional.ofNullable(seVcOperateMapper.getRechargeCount(params)).orElse(0L);
+    }
+
+    /**
+     * 褰撳墠浣欓鎬婚噺
+     * @return
+     */
+    public Double getTotalBalance() {
+        return Optional.ofNullable(seVcOperateMapper.getTotalBalance()).orElse(0.0);
+    }
+
+    /**
+     * 鎸囧畾鏃堕棿娈靛唴铏氭嫙鍗″厖鍊奸噾棰濊秴杩囨寚瀹氬�肩殑鍐滄埛
+     * @param qo
+     * @return
+     */
+    public QueryResultVo<List<VoClientStatistics>> getLargeRechargeClients(TotalRechargeQO qo) {
+        /**
+         * 琛ラ綈璧锋鏃堕棿锛屽鏋滃紑濮嬫椂闂翠负绌猴紝鍒欓粯璁や负褰撳墠鏃ユ湡
+         */
+        String timeStart = qo.getTimeStart();
+        String timeStop = qo.getTimeStop();
+        if(timeStart != null) {
+            timeStart = timeStart + " 00:00:00";
+        }else {
+            timeStart = LocalDate.now() + " 00:00:00";
+        }
+        if(timeStop != null) {
+            timeStop = timeStop + " 23:59:59";
+        }
+        qo.setTimeStart(timeStart);
+        qo.setTimeStop(timeStop);
+
+        // 鐢熸垚鏌ヨ鍙傛暟
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(qo) ;
+
+        // 鑾峰彇绗﹀悎鏉′欢鐨勮褰曟暟
+        Long itemTotal = Optional.ofNullable(seVcOperateMapper.getLargeRechargeClientsCount(params)).orElse(0L);
+
+        QueryResultVo<List<VoClientStatistics>> rsVo = new QueryResultVo<>() ;
+
+        rsVo.pageSize = qo.pageSize ;
+        rsVo.pageCurr = qo.pageCurr ;
+
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = seVcOperateMapper.getLargeRechargeClients(params);
+        return rsVo ;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/StartStopDateQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/StartStopDateQO.java
new file mode 100644
index 0000000..0c4211c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/StartStopDateQO.java
@@ -0,0 +1,30 @@
+package com.dy.pipIrrStatistics.card.qo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-08-12 15:52
+ * @LastEditTime 2024-08-12 15:52
+ * @Description
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class StartStopDateQO {
+    /**
+     * 寮�濮嬫椂闂�
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private String timeStart;
+
+    /**
+     * 缁撴潫鏃堕棿
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @NotBlank(message = "缁撴潫鏃堕棿涓嶈兘涓虹┖")
+    private String timeStop;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/TotalRechargeQO.java b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/TotalRechargeQO.java
new file mode 100644
index 0000000..6859e9e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-statistics/src/main/java/com/dy/pipIrrStatistics/card/qo/TotalRechargeQO.java
@@ -0,0 +1,22 @@
+package com.dy.pipIrrStatistics.card.qo;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-08-12 16:58
+ * @LastEditTime 2024-08-12 16:58
+ * @Description 鍏呭�奸噾棰濆悎璁℃煡璇㈠璞�
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TotalRechargeQO extends CommonQO {
+    /**
+     * 鍏呭�奸噾棰濆悎璁�
+     */
+    @NotNull(message = "鎸囧畾鍏呭�奸噾棰濅笉鑳戒负绌�")
+    private Double totalRecharge;
+}

--
Gitblit v1.8.0