From 275b6c4986343c3e4230e1ad28ce9548b017d584 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 05 二月 2026 14:06:07 +0800
Subject: [PATCH] 代码初始化

---
 admin/.env                                                                               |    2 
 server/admin/pom.xml                                                                     |    2 
 server/services/src/main/java/com/doumee/dao/vo/IndexOrderCountVO.java                   |   68 +++
 server/services/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java |    2 
 admin/src/api/business/orders.js                                                         |    8 
 admin/src/assets/style/style.scss                                                        |    3 
 server/services/src/main/java/com/allinpay/syb/model/PayPublicModel.java                 |   24 +
 admin/.env.production                                                                    |    4 
 admin/vue.config.js                                                                      |    2 
 web/pages.json                                                                           |    4 
 server/services/src/main/resources/application-test.yml                                  |   46 +-
 server/admin/src/main/java/com/doumee/api/web/WebOrdersController.java                   |   11 
 admin/src/views/business/orders.vue                                                      |   31 +
 admin/src/views/system/user.vue                                                          |   11 
 web/utils/config.js                                                                      |    5 
 server/services/src/main/java/com/doumee/service/business/OrdersService.java             |   11 
 admin/.env.development                                                                   |    3 
 server/admin/src/main/java/com/doumee/api/business/OrdersController.java                 |   14 
 server/admin/src/main/resources/application.yml                                          |    6 
 server/startsh/admin_start.sh                                                            |    7 
 server/services/src/main/java/com/allinpay/syb/lib/SybUtil.java                          |    4 
 server/services/src/main/java/com/allinpay/syb/model/PayOrderResponse.java               |    2 
 web/pages/index/index.vue                                                                |   56 ++
 admin/src/views/index.vue                                                                |  515 +++++++++++++++++++++++++
 web/pages/success/success.vue                                                            |    3 
 web/unpackage/dist/build/web/index.html                                                  |    2 
 server/services/src/main/java/com/allinpay/syb/model/PayOrderNotifyParam.java            |    4 
 server/services/src/main/java/com/allinpay/syb/model/PayOrderParam.java                  |    2 
 server/services/src/main/resources/application-pro.yml                                   |   59 +-
 server/services/src/main/java/com/doumee/dao/business/model/Orders.java                  |    5 
 server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java    |  275 ++++++++++++
 server/admin/src/main/resources/logback-spring.xml                                       |    2 
 32 files changed, 1,060 insertions(+), 133 deletions(-)

diff --git a/admin/.env b/admin/.env
index 669020e..7f29338 100644
--- a/admin/.env
+++ b/admin/.env
@@ -7,4 +7,4 @@
 VUE_APP_ROUTER_MODE = 'hash'
 ddd
 # 鎺ュ彛鍓嶇紑
-VUE_APP_API_PREFIX = '/diandongche_admin_api'
+VUE_APP_API_PREFIX = '/admin_interface'
diff --git a/admin/.env.development b/admin/.env.development
index 90f18d8..2c3af74 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -4,3 +4,6 @@
 # 椤圭洰涓婁笅鏂囪矾寰�
 VUE_APP_CONTEXT_PATH = '/'
 VUE_APP_API_URL = 'http://localhost:12010'
+
+
+#VUE_APP_API_URL = 'https://pay.smartbee.run/admin_interface'
diff --git a/admin/.env.production b/admin/.env.production
index f681f22..096205e 100644
--- a/admin/.env.production
+++ b/admin/.env.production
@@ -3,5 +3,5 @@
 
 # 鍏抽棴DEBUG
 VUE_APP_DEBUG = 'off'
-VUE_APP_CONTEXT_PATH = '/diandongche_admin'
-VUE_APP_API_URL = ' '
+VUE_APP_CONTEXT_PATH = '/admin'
+VUE_APP_API_URL = 'https://pay.smartbee.run/admin_interface'
diff --git a/admin/src/api/business/orders.js b/admin/src/api/business/orders.js
index 4d24457..c8fce66 100644
--- a/admin/src/api/business/orders.js
+++ b/admin/src/api/business/orders.js
@@ -6,6 +6,11 @@
     trim: true
   })
 }
+export function getIndexData (data) {
+  return request.post('/business/orders/getIndexData', data, {
+    trim: true
+  })
+}
 export function commentList (data) {
   return request.post('/business/orders/commentList', data, {
     trim: true
@@ -23,6 +28,9 @@
 export function create (data) {
   return request.post('/business/orders/create', data)
 }
+export function updateByPayStatus (data) {
+  return request.post('/business/orders/updateByPayStatus', data)
+}
 export function cancel (id) {
   return request.get(`/business/orders/cancel?id=${id}`)
 }
diff --git a/admin/src/assets/style/style.scss b/admin/src/assets/style/style.scss
index a818cfb..9cd77af 100644
--- a/admin/src/assets/style/style.scss
+++ b/admin/src/assets/style/style.scss
@@ -63,6 +63,9 @@
 .grey{
   color: grey;
 }
+.black{
+  color: #333;
+}
 .green{
   color: green;
 }
diff --git a/admin/src/views/business/orders.vue b/admin/src/views/business/orders.vue
index a41d8d1..c5f770d 100644
--- a/admin/src/views/business/orders.vue
+++ b/admin/src/views/business/orders.vue
@@ -84,23 +84,21 @@
             <span v-if="row.type==1">寤舵湡娆�</span>
           </template>
         </el-table-column>
-        <el-table-column prop="remark" label="璁㈠崟澶囨敞"  width="100px"  ></el-table-column>
+        <el-table-column prop="remark" label="璁㈠崟澶囨敞"  width="200px"  ></el-table-column>
         <el-table-column prop="userRealname" label="鏀舵浜哄鍚�"  width="100px"  ></el-table-column>
         <el-table-column prop="username" label="璐熻矗浜鸿处鍙�"  width="120px"  ></el-table-column>
         <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="150px"></el-table-column>
         <el-table-column prop="payDate" label="浠樻鏃堕棿" min-width="150px"></el-table-column>
         <el-table-column prop="cancelDate" label="鍙栨秷鏃堕棿" min-width="150px"></el-table-column>
-<!--        <el-table-column
+  <el-table-column
           label="鎿嶄綔"
           align="center"
-          min-width="150"
-          fixed="right"
+          min-width="100"
         >
           <template slot-scope="{row}">
-            <el-button type="text" class="redstate" @click="cancelDo(row)" v-if="row.status!=5 && row.status!=4&& row.status!=99" icon="el-icon-delete" v-permissions="['business:orders:update']">鍙栨秷</el-button>
-            <el-button type="text" @click="openDetail( row)" icon="el-icon-info"  >璇︽儏</el-button>
+            <el-button type="text"   @click="payStatus(row)" icon="el-icon-refresh" v-permissions="['business:orders:update']">鍚屾鐘舵��</el-button>
           </template>
-        </el-table-column>-->
+        </el-table-column>
       </el-table>
       <pagination
         @size-change="handleSizeChange"
@@ -132,7 +130,7 @@
         status: null,
         type: null,
         starttime: null,
-        endTime: null,
+        endtime: null,
         username: null,
         userRealName: null,
         name: null,
@@ -169,6 +167,23 @@
               this.dealing = false
             })
         })
+    },
+    payStatus (row) {
+      this.$dialog.actionConfirm('鎮ㄧ‘璁ゃ�愬悓姝ャ�戣璁㈠崟鏈�鏂扮姸鎬佸悧锛�', '鎿嶄綔纭')
+        .then(() => {
+          this.dealing = true
+          this.api.updateByPayStatus({id:row.id})
+            .then(res => {
+              this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+              this.search()
+            })
+            .catch(e => {
+              this.$tip.apiFailed(e)
+            })
+            .finally(() => {
+              this.dealing = false
+            })
+        })
     }
   }
 }
diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index 574a893..ddcaa5e 100644
--- a/admin/src/views/index.vue
+++ b/admin/src/views/index.vue
@@ -6,6 +6,163 @@
         浠婂ぉ鏄� {{ nowDate }} {{ nowWeek }}锛屾杩庤闂櫤绉熻渹鍚庡彴绠$悊绯荤粺
       </div>
     </div>
+    <div class="main">
+      <div class="app_content">
+        <div class="static_card">
+          <div class="card">
+            <div class="header" >
+              <div class="left">
+                <div class="fs15">浠婃棩鎬讳氦鏄擄紙閲戦 | 璁㈠崟閲忥級</div>
+                <div class="num ">
+                  <span  class=" orange" style="display: inline;">锟{( (headerData.todayMoney ||0 )/100).toFixed(2)}}</span>
+                  <span   > | </span>
+                  <span  >  {{ headerData.todayNum || 0}}</span>
+                </div>
+              </div>
+              <!--              <img src="@/assets/images/bg_a.png" alt="" />-->
+            </div>
+            <div class="content">
+              <div>绛夊緟鏀粯锛�
+                <span  class=" orange">锟{ ((headerData.todayWaitMoney ||0 )/100).toFixed(2)}}</span>
+                <span  class="split"> | </span>
+                <span class="numtxt">  {{ headerData.todayWaitNum || 0}}</span>
+              </div>
+              <div>浜ゆ槗鎴愬姛锛�
+                <span  class=" orange"  >锟{( (headerData.todayDoneMoney ||0 )/100).toFixed(2)}}</span>
+                <span  class="split" > | </span>
+                <span class="numtxt">  {{ headerData.todayDoneNum || 0}}</span>
+              </div>
+              <div>浜ゆ槗澶辫触锛�
+                <span  class=" orange">锟{ ((headerData.todayFailMoney ||0 )/100).toFixed(2)}}</span>
+                <span class="split" > | </span>
+                <span class="numtxt">  {{ headerData.todayFailNum || 0}}</span>
+              </div>
+            </div>
+          </div>
+          <div class="card">
+            <div class="header" >
+              <div class="left">
+                <div class="fs15">浠婃棩杞︽浜ゆ槗锛堥噾棰� | 璁㈠崟閲忥級</div>
+                <div class="num ">
+                  <span class=" orange"   style="display: inline;">锟{( (headerData.todayMoney0 ||0 )/100).toFixed(2)}}</span>
+                  <span class=" " > | </span>
+                  <span class=" ">  {{ headerData.todayNum0 || 0}}</span>
+                </div>
+              </div>
+              <!--              <img src="@/assets/images/bg_a.png" alt="" />-->
+            </div>
+            <div class="content">
+              <div>绛夊緟鏀粯锛�
+                <span class=" orange">锟{( (headerData.todayWaitMoney0 ||0 )/100).toFixed(2)}}</span>
+                <span  class="split"> | </span>
+                <span class="numtxt">  {{ headerData.todayWaitNum0 || 0}}</span>
+              </div>
+              <div>浜ゆ槗鎴愬姛锛�
+                <span  class=" orange">锟{ ((headerData.todayDoneMoney0 ||0 )/100).toFixed(2)}}</span>
+                <span  class="split"> | </span>
+                <span class="numtxt">  {{ headerData.todayDoneNum0 || 0}}</span>
+              </div>
+              <div>浜ゆ槗澶辫触锛�
+                <span  class=" orange">锟{ ((headerData.todayFailMoney0 ||0 )/100).toFixed(2)}}</span>
+                <span class="split" > | </span>
+                <span class="numtxt">  {{ headerData.todayFailNum0 || 0}}</span>
+              </div>
+            </div>
+          </div>
+          <div class="card">
+            <div class="header" >
+              <div class="left">
+                <div class="fs15">浠婃棩寤舵湡娆句氦鏄擄紙閲戦 | 璁㈠崟閲忥級</div>
+                <div class="num ">
+                  <span  class=" orange"   style="display: inline;">锟{( (headerData.todayMoney1 ||0 )/100).toFixed(2)}}</span>
+                  <span  > | </span>
+                  <span >  {{ headerData.todayNum1 || 0}}</span>
+                </div>
+              </div>
+              <!--              <img src="@/assets/images/bg_a.png" alt="" />-->
+            </div>
+            <div class="content">
+              <div>绛夊緟鏀粯锛�
+                <span  class=" orange">锟{ ((headerData.todayWaitMoney1 ||0 )/100).toFixed(2)}}</span>
+                <span  class="split"> | </span>
+                <span class="numtxt">  {{ headerData.todayWaitNum1 || 0}}</span>
+              </div>
+              <div>浜ゆ槗鎴愬姛锛�
+                <span  class=" orange">锟{ ((headerData.todayDoneMoney1 ||0 )/100).toFixed(2)}}</span>
+                <span  class="split"> | </span>
+                <span class="numtxt">  {{ headerData.todayDoneNum1 || 0}}</span>
+              </div>
+              <div>浜ゆ槗澶辫触锛�
+                <span  class=" orange">锟{ ((headerData.todayFailMoney1 ||0 )/100).toFixed(2)}}</span>
+                <span  class="split"> | </span>
+                <span class="numtxt">  {{ headerData.todayFailNum1 || 0}}</span>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="static_wrap">
+<!--          <div class="df mb50" >
+            <div class="wrap static1">
+              <div class="header" style="text-align: center">
+                <div class="home_title"  style="text-align: center;width: 80%">鍚勭被鍨嬩氦鏄撶粺璁★紙{{searchForm.timeName}}锛�</div>
+                <div style="text-align: right;width: 150px;font-size: 12px;height: 25px">
+                  <el-form   :model="searchForm" label-width="100px" inline >
+                    <el-select v-model="searchForm.timeType"  :popper-append-to-body="true" clearable   placeholder="鏃堕棿鑼冨洿"   @change="reloadDataByType()">
+                      <el-option value="0" label="鏈懆"/>
+                      <el-option value="1" label="鏈湀"/>
+                      <el-option value="2" label="鏈搴�"/>
+                      <el-option value="3" label="鏈勾"/>
+                    </el-select>
+                  </el-form>
+                </div>
+              </div>
+              <div class="echart"  style="height: 400px" >
+                <div  id="circleChart0"></div>
+                <div  id="circleChart1"></div>
+              </div>
+            </div>
+          </div>-->
+<!--          <div class="df mb50" >
+            <div class="wrap static1">
+              <div class="header">
+                <div class="home_title">1.SHE浜嬩欢涓婃姤</div>
+              </div>
+              <div class="echart" >
+                <div  id="echart0"></div>
+                <div  id="echart01"></div>
+              </div>
+            </div>
+            <div class="wrap static2">
+              <div class="header">
+                <div class="home_title">2.娣卞害绗﹀悎鎬у鏌CA涓婃姤璁板綍</div>
+              </div>
+              <div class="echart" >
+                <div  id="echart1">  </div>
+                <div  id="echart11">   </div>
+              </div>
+            </div>
+            <div class="wrap static3">
+              <div class="header">
+                <div class="home_title">3.娣卞害绗﹀悎鎬у鏌CA浜嬩欢宸ュ崟</div>
+              </div>
+              <div class="echart" >
+                <div  id="echart2">  </div>
+                <div  id="echart21">   </div>
+              </div>
+            </div>
+            <div class="wrap static4">
+              <div class="header">
+                <div class="home_title">4.璺岀粖婊戦闄╀笂鎶�</div>
+              </div>
+              <div class="echart" >
+                <div  id="echart3">  </div>
+                <div  id="echart31">   </div>
+              </div>
+            </div>
+          </div>-->
+        </div>
+      </div>
+    </div>
   </div>
 </template>
 
@@ -13,6 +170,7 @@
 import dayjs from 'dayjs'
 import * as echarts from 'echarts'
 import { weeks } from '@/utils/config'
+import { getIndexData} from '@/api/business/orders'
 const colors = ['#52a4f7', '#7678f7', '#5fc6d5']
 export default {
   components: {
@@ -43,15 +201,344 @@
     }
   },
   created () {
+    this.initData()
   },
   mounted () {
     this.updateDate()
     // this.initData()
   },
   methods: {
+    initData () {
+      this.updateDate()
+      this.getWorkHead()
+      this.getWorkBody0()
+      this.getWorkBody1()
+      this.getWorkBody2()
+      this.getWorkBody3()
+      // this.getWorkBody()
+    },
+    reloadDataByType () {
+      getIndexData({timeType: this.searchForm.timeType }).then(res => {
+        if (this.searchForm.timeType == '0') {
+          this.searchForm.timeName = '鏈懆'
+        } else if (this.searchForm.timeType =='1') {
+          this.searchForm.timeName = '鏈湀'
+        } else if (this.searchForm.timeType =='2') {
+          this.searchForm.timeName = '鏈搴�'
+        } else if (this.searchForm.timeType == '3') {
+          this.searchForm.timeName = '鏈勾'
+        } else {
+          this.searchForm.timeName = '鍏ㄩ儴'
+        }
+        this.headerData1 =res || []
+        this.initAllData()
+      })
+    },
+    getWorkBody0 () {
+      getWorkOrderData({ queryType: 0, orderType: 0 }).then(res => {
+        this.staticData0 = res || []
+        this.initEchart0()
+      })
+      getWorkOrderData({ queryType: 1, orderType: 0 }).then(res => {
+        this.staticData01 = res || []
+        this.initEchart01()
+      })
+    },
+    getWorkBody1 () {
+      getWorkOrderData({ queryType: 0, orderType: 1 }).then(res => {
+        this.staticData1 = res || []
+        this.initEchart1()
+      })
+      getWorkOrderData({ queryType: 1, orderType: 1 }).then(res => {
+        this.staticData11 = res || []
+        this.initEchart11()
+      })
+    },
+    getWorkBody2 () {
+      getWorkOrderData({ queryType: 0, orderType: 2 }).then(res => {
+        this.staticData2 = res || []
+        this.initEchart2()
+      })
+      getWorkOrderData({ queryType: 1, orderType: 2 }).then(res => {
+        this.staticData21 = res || []
+        this.initEchart21()
+      })
+    },
+    getWorkBody3 () {
+      getWorkOrderData({ queryType: 0, orderType: 3 }).then(res => {
+        this.staticData3 = res || []
+        this.initEchart3()
+      })
+      getWorkOrderData({ queryType: 1, orderType: 3 }).then(res => {
+        this.staticData31 = res || []
+        this.initEchart31()
+      })
+    },
+    getWorkHead () {
+      getIndexData({ }).then(res => {
+        this.headerData = res || {}
+        this.headerData1 = res || {}
+        this.initAllData()
+      })
+    },
+    initAllData(){
+      var cdata = []
+      cdata.push({ name: '璺岀粖婊戜簨浠�', value: this.headerData1.dbhNum || 0 })
+      cdata.push({ name: 'DCA浜嬩欢', value: this.headerData1.dcaChildNum || 0 })
+      cdata.push({ name: 'SHE浜嬩欢', value: this.headerData1.sheNum || 0 })
+      this.initEchartCircleDo('circleChart0', '鍚勭被鍨嬩簨浠跺伐鍗曚笂鎶ョ粺璁�', '', cdata)
+      var xdata = ['SHE浜嬩欢', '璺岀粖婊戜簨浠�', 'DCA浜嬩欢']
+      var ydata = []
+      ydata.push({ name: '宸茶В鍐�', stack: 'cateNum', type: 'bar', unit: '椤�', color: '#f07e6f', data: [this.headerData1.sheNum || 0, this.headerData1.dbhYesNum || 0, this.headerData1.dcaChildYesNum || 0] })
+      ydata.push({ name: '鏈В鍐�', stack: 'cateNum', type: 'bar', unit: '椤�', color: '#8383ff', data: [0, this.headerData1.dbhNoNum || 0, this.headerData1.dcaChildNoNum || 0] })
+      ydata.push({ name: '鎬诲崟閲�', type: 'bar', unit: '娆�', color: '#29aeff', data: [this.headerData1.sheNum || 0, this.headerData1.dbhNum || 0, this.headerData1.dcaChildNum || 0] })
+      this.initEchartDataDo('鍚勭被鍨嬩簨浠剁姸鎬佺粺璁�', 'circleChart1', xdata, ydata)
+    },
     updateDate () {
       this.nowDate = dayjs().format('YYYY骞碝鏈圖鏃�')
       this.nowWeek = weeks[new Date().getDay()]
+    },
+    initEchart0 () {
+      var ydata = [{ name: '宸ュ崟鏁伴噺', type: 'line', unit: '鍗�', color: '#29aeff', data: this.staticData0.map(i => i.total) }]
+      this.initEchartDataDo('鏈堝害缁熻', 'echart0', this.staticData0.map(i => i.dateStr), ydata)
+    },
+    initEchart01 () {
+      var ydata = [{ name: '宸ュ崟鏁伴噺', type: 'bar', unit: '鍗�', color: '#29aeff', data: this.staticData01.map(i => i.total) }]
+      this.initEchartDataDo('瀛e害缁熻', 'echart01', this.staticData01.map(i => i.dateStr), ydata)
+    },
+    initEchart1 () {
+      var ydata = []
+      ydata.push({ name: '绗﹀悎椤�', type: 'line', unit: '椤�', color: '#f07e6f', data: this.staticData1.map(i => i.dcaYesTotal) })
+      ydata.push({ name: '涓嶇鍚堥」', type: 'line', unit: '椤�', color: '#8383ff', data: this.staticData1.map(i => i.dcaNoTotal) })
+      ydata.push({ name: '涓婃姤娆℃暟', type: 'bar', unit: '娆�', color: '#29aeff', data: this.staticData1.map(i => i.total) })
+      this.initEchartDataDo('鏈堝害缁熻', 'echart1', this.staticData1.map(i => i.dateStr), ydata)
+    },
+    initEchart11 () {
+      var ydata = []
+      ydata.push({ name: '绗﹀悎椤�', type: 'line', unit: '椤�', color: '#f07e6f', data: this.staticData11.map(i => i.dcaYesTotal) })
+      ydata.push({ name: '涓嶇鍚堥」', type: 'line', unit: '椤�', color: '#8383ff', data: this.staticData11.map(i => i.dcaNoTotal) })
+      ydata.push({ name: '涓婃姤娆℃暟', type: 'bar', unit: '娆�', color: '#29aeff', data: this.staticData11.map(i => i.total) })
+      this.initEchartDataDo('瀛e害缁熻', 'echart11', this.staticData11.map(i => i.dateStr), ydata)
+    },
+    initEchart2 () {
+      var ydata = []
+      ydata.push({ name: '宸ョ▼甯堝叧闂崟閲�', type: 'line', unit: '鍗�', color: '#f0ee6f', data: this.staticData2.map(i => i.gcsTotal) })
+      ydata.push({ name: 'WTS鍏抽棴鍗曢噺', type: 'line', unit: '鍗�', color: '#29aeff', data: this.staticData2.map(i => i.wtsTotal) })
+      ydata.push({ name: 'SHE鍏抽棴鍗曢噺', type: 'line', unit: '鍗�', color: '#e75314', data: this.staticData2.map(i => i.sheTotal) })
+      ydata.push({ name: '鏈В鍐冲崟閲�', type: 'line', unit: '鍗�', color: '#8383ff', data: this.staticData2.map(i => i.unCloseTotal) })
+      ydata.push({ name: '宸ュ崟鎬婚噺', type: 'line', unit: '鍗�', color: '#30d3de', data: this.staticData2.map(i => i.total) })
+      this.initEchartDataDo('鏈堝害缁熻', 'echart2', this.staticData2.map(i => i.dateStr), ydata)
+    },
+    initEchart21 () {
+      var ydata = []
+      ydata.push({ name: '宸ョ▼甯堝叧闂崟閲�', type: 'bar', unit: '鍗�', color: '#f0ee6f', data: this.staticData21.map(i => i.gcsTotal) })
+      ydata.push({ name: 'WTS鍏抽棴鍗曢噺', type: 'bar', unit: '鍗�', color: '#29aeff', data: this.staticData21.map(i => i.wtsTotal) })
+      ydata.push({ name: 'SHE鍏抽棴鍗曢噺', type: 'bar', unit: '鍗�', color: '#e75314', data: this.staticData21.map(i => i.sheTotal) })
+      ydata.push({ name: '鏈В鍐冲崟閲�', type: 'bar', unit: '鍗�', color: '#8383ff', data: this.staticData21.map(i => i.unCloseTotal) })
+      ydata.push({ name: '宸ュ崟鎬婚噺', type: 'line', unit: '鍗�', color: '#30d3de', data: this.staticData21.map(i => i.total) })
+      this.initEchartDataDo('瀛e害缁熻', 'echart21', this.staticData21.map(i => i.dateStr), ydata)
+    },
+    initEchart3 () {
+      var ydata = []
+      ydata.push({ name: '宸ョ▼甯堝叧闂崟閲�', type: 'line', unit: '鍗�', color: '#6feef0', data: this.staticData3.map(i => i.gcsTotal) })
+      ydata.push({ name: 'WTS鍏抽棴鍗曢噺', type: 'line', unit: '鍗�', color: 'rgba(217,4,34,0.83)', data: this.staticData3.map(i => i.wtsTotal) })
+      ydata.push({ name: 'SHE鍏抽棴鍗曢噺', type: 'line', unit: '鍗�', color: '#e75314', data: this.staticData3.map(i => i.sheTotal) })
+      ydata.push({ name: '鏈В鍐冲崟閲�', type: 'line', unit: '鍗�', color: '#8383ff', data: this.staticData3.map(i => i.unCloseTotal) })
+      ydata.push({ name: '宸ュ崟鎬婚噺', type: 'line', unit: '鍗�', color: '#30d3de', data: this.staticData3.map(i => i.total) })
+      this.initEchartDataDo('鏈堝害缁熻', 'echart3', this.staticData3.map(i => i.dateStr), ydata)
+    },
+    initEchart31 () {
+      var ydata = []
+      ydata.push({ name: '宸ョ▼甯堝叧闂崟閲�', type: 'bar', unit: '鍗�', color: '#6feef0', data: this.staticData31.map(i => i.gcsTotal) })
+      ydata.push({ name: 'WTS鍏抽棴鍗曢噺', type: 'bar', unit: '鍗�', color: 'rgba(217,4,34,0.83)', data: this.staticData31.map(i => i.wtsTotal) })
+      ydata.push({ name: 'SHE鍏抽棴鍗曢噺', type: 'bar', unit: '鍗�', color: '#e75314', data: this.staticData31.map(i => i.sheTotal) })
+      ydata.push({ name: '鏈В鍐冲崟閲�', type: 'bar', unit: '鍗�', color: '#8383ff', data: this.staticData31.map(i => i.unCloseTotal) })
+      ydata.push({ name: '宸ュ崟鎬婚噺', type: 'line', unit: '鍗�', color: '#30d3de', data: this.staticData31.map(i => i.total) })
+      this.initEchartDataDo('瀛e害缁熻', 'echart31', this.staticData31.map(i => i.dateStr), ydata)
+    },
+    initEchartDataDo (title, id, xdata, ydata) {
+      const myChart = echarts.init(document.getElementById(id))
+      myChart.setOption({
+        title: {
+          text: (title || ''),
+          textStyle: {
+            fontSize: 12,
+            fontStyle: 'normal',
+            fontWeight: 'bold'
+          }
+        },
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'shadow'
+          },
+          textStyle: {
+            fontSize: 10,
+            fontStyle: 'normal',
+            fontWeight: 'normal'
+          }
+        },
+        legend: {
+          orient: 'vertical',
+          left: 'right',
+          textStyle: {
+            fontSize: 10,
+            fontStyle: 'normal',
+            fontWeight: 'normal'
+          }
+        },
+        xAxis: {
+          type: 'category',
+          // boundaryGap: false,
+          data: xdata
+        },
+        yAxis: {
+          type: 'value',
+          name: '',
+          min: 0,
+          axisLabel: {
+            formatter: function (value) {
+              return Number.isInteger(value) ? value : ''
+            }
+          },
+          textStyle: {
+            fontSize: 10,
+            fontStyle: 'normal',
+            fontWeight: 'normal'
+          },
+          nameTextStyle: {
+            padding: [0, 0, 4, -30] // 鍥涗釜鏁板瓧鍒嗗埆涓轰笂鍙充笅宸︿笌鍘熶綅缃窛绂�
+          },
+          splitLine: {
+            show: true,
+            lineStyle: {
+              // 杩欓噷杈撳叆绾挎潯鐨勬牱寮�
+              color: 'rgba(255,255,255,0.14)'
+            }
+          }
+        },
+        grid: {
+          top: '16%',
+          left: '2%',
+          right: '8%',
+          bottom: '2%',
+          containLabel: true
+        },
+        series: this.seriesInitData(ydata)
+      })
+      window.addEventListener('resize', function () { // 鎵ц
+        myChart.resize()
+      })
+    },
+    seriesInitData (ydata) {
+      var array = []
+      for (let i = 0; i < ydata.length; i++) {
+        array.push({
+          data: ydata[i].data,
+          name: ydata[i].name,
+          stack: ydata[i].stack || '',
+          type: ydata[i].type || 'line',
+          areaStyle: {
+            normal: {
+              color: {
+                x: 0,
+                y: 0,
+                x2: 0,
+                y2: 1,
+                colorStops: [{
+                  offset: 0,
+                  color: ydata[i].color || '#207FF7' // 0% 澶勭殑棰滆壊
+                }, {
+                  offset: 1,
+                  color: 'rgba(255,255,255,.2)' // 100% 澶勭殑棰滆壊
+                }],
+                globalCoord: false // 缂虹渷涓� false
+              }
+            }
+          },
+          lineStyle: { // 绾挎潯鏍峰紡
+            color: {
+              type: 'linear',
+              x: 0,
+              y: 0,
+              x2: 0,
+              y2: 1,
+              colorStops: [{
+                offset: 0, color: ydata[i].color || '#207FF7' // 0% 澶勭殑棰滆壊
+              }, {
+                offset: 1, color: ydata[i].color || '#207FF7' // 100% 澶勭殑棰滆壊
+              }]
+            },
+            width: 2 // 绾挎潯绮楃粏
+          },
+          symbol: 'circle',
+          symbolSize: 10,
+          itemStyle: {
+            borderWidth: 1,
+            borderColor: '#fff',
+            color: ydata[i].color || '#207FF7'
+          },
+          smooth: false
+        })
+      }
+
+      return array
+    },
+    initEchartCircleDo (id, title, subTitle, data) {
+      var option = {
+        title: {
+          text: '',
+          subtext: '',
+          left: 'center',
+          bottom: 'bottom',
+          textStyle: {
+            fontSize: 10,
+            fontStyle: 'normal',
+            fontWeight: 'bold'
+          }
+        },
+        tooltip: {
+          trigger: 'item'
+        },
+        legend: {
+          orient: 'vertical',
+          left: 'left',
+          textStyle: {
+            fontSize: 10,
+            fontStyle: 'normal',
+            fontWeight: 'normal'
+          }
+        },
+        series: [
+          {
+            name: title || '',
+            type: 'pie',
+            radius: '50%',
+            data: data,
+            label: {
+              show: true,
+              formatter: '{b}:{d}%',
+              textStyle: {
+                fontSize: 10,
+                fontStyle: 'normal',
+                fontWeight: 'normal'
+              }
+            },
+            labelLine: {
+              show: true
+            },
+            emphasis: {
+              itemStyle: {
+                shadowBlur: 10,
+                shadowOffsetX: 0,
+                shadowColor: 'rgba(0, 0, 0, 0.5)'
+              }
+            }
+          }
+        ]
+      }
+      const myChart = echarts.init(document.getElementById(id))
+      myChart.setOption(option)
     }
   }
 }
@@ -103,13 +590,14 @@
         }
 
         &:nth-of-type(3) {
+
           background: linear-gradient(270deg, #42d49d 0%, #12bb8b 100%);
         }
 
         &:nth-of-type(4) {
           margin-right: 0;
           background: linear-gradient(270deg, #c430dee3 0%, #cd04b9cf 100%);
-        //linear-gradient(270deg, #de3049b8 0%, #cd0421d4 100%);
+          //linear-gradient(270deg, #de3049b8 0%, #cd0421d4 100%);
           //background: linear-gradient(270deg, #30d3de 0%, #04b7cd 100%);
         }
 
@@ -120,19 +608,27 @@
           align-items: center;
           padding: 20px 20px 12px;
           border-bottom: 1px solid rgba(255, 255, 255, 0.2);
-
-          img {
-            width: 40px;
-            height: 40px;
-          }
-
-          .num {
+          .num{
             font-weight: 600;
             font-size: 30px;
             margin-top: 12px;
           }
         }
-
+        .orange{
+          display: inline-block;
+          width: 100px;
+          text-shadow: 2px 2px 5px #606266;;
+          font-weight: 600;
+        }
+        .split{
+          display: inline-block;
+          width: 40px;
+          font-size: 10px;
+        }
+        .numtxt{
+          display: inline-block;
+          text-shadow: 2px 2px 5px #606266;
+        }
         .content {
           height: 82px;
           display: flex;
@@ -275,4 +771,5 @@
     background: linear-gradient(180deg, #076ae5 0%, rgba(32, 127, 247, 0) 100%);
   }
 }
+
 </style>
diff --git a/admin/src/views/system/user.vue b/admin/src/views/system/user.vue
index e8c12fb..d56e375 100644
--- a/admin/src/views/system/user.vue
+++ b/admin/src/views/system/user.vue
@@ -32,7 +32,7 @@
         @sort-change="handleSortChange"
       >
         <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="avatar" label="鏀舵鐮�" width="100px" class-name="table-column-avatar"  >
+        <el-table-column prop="avatar" label="鏀舵鐮�" width="220px" class-name="table-column-avatar"  >
           <template slot-scope="{ row }">
               <div class="qrcodediv" :id="`qrcode${row.id}`" :ref="`qrcode${row.id}`"></div>
           </template>
@@ -67,7 +67,6 @@
           v-if="containPermissions(['system:user:update', 'system:user:createUserRole', 'system:user:resetPwd', 'system:user:delete'])"
           label="鎿嶄綔"
           width="270"
-          fixed="right"
         >
           <template v-if="isAdmin || (row.id !== userInfo.id && row.roles.findIndex(r => r.code === adminCode) === -1)" slot-scope="{row}">
             <el-button type="text" icon="el-icon-edit" @click="$refs.operaUserWindow.open('缂栬緫鐢ㄦ埛', row)" v-permissions="['system:user:update']">缂栬緫</el-button>
@@ -189,11 +188,9 @@
         return
       }
       return new QRCode(div, {
-        width: 80,
-        height: 80,
-        text: qrcode1,
-        correctLevel: QRCode.CorrectLevel.H,
-        useSVG: true
+        width: 200,
+        height: 200,
+        text: qrcode1
       })
     }
   }
diff --git a/admin/vue.config.js b/admin/vue.config.js
index aba396c..0708e91 100644
--- a/admin/vue.config.js
+++ b/admin/vue.config.js
@@ -7,7 +7,7 @@
 }
 module.exports = {
   publicPath: process.env.VUE_APP_CONTEXT_PATH,
-  outputDir: 'dianjiang_admin',
+  outputDir: 'admin',
   assetsDir: 'static',
   lintOnSave: false,
   devServer: {
diff --git a/server/admin/pom.xml b/server/admin/pom.xml
index ab08150..710d3b9 100644
--- a/server/admin/pom.xml
+++ b/server/admin/pom.xml
@@ -39,7 +39,7 @@
      </dependencies>
 
     <build>
-        <finalName>dianjiang_admin</finalName>
+        <finalName>diandongche_admin</finalName>
         <resources>
             <resource>
                 <directory>src/main/resources</directory>
diff --git a/server/admin/src/main/java/com/doumee/api/business/OrdersController.java b/server/admin/src/main/java/com/doumee/api/business/OrdersController.java
index d0c1918..88b786d 100644
--- a/server/admin/src/main/java/com/doumee/api/business/OrdersController.java
+++ b/server/admin/src/main/java/com/doumee/api/business/OrdersController.java
@@ -8,6 +8,7 @@
 import com.doumee.core.model.PageWrap;
 import com.doumee.dao.business.model.Orders;
 import com.doumee.core.utils.Utils;
+import com.doumee.dao.vo.IndexOrderCountVO;
 import com.doumee.service.business.OrdersService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -61,6 +62,13 @@
         ordersService.updateById(orders);
         return ApiResponse.success(null);
     }
+    @ApiOperation("鏍规嵁ID鏌ヨ浜ゆ槗娴佹按淇℃伅鏇存柊鏈�鏂颁氦鏄撶姸鎬�")
+    @PostMapping("/updateByPayStatus")
+    @RequiresPermissions("business:orders:update")
+    public ApiResponse updateByPayStatus(@RequestBody Orders orders) {
+        ordersService.updateByPayStatus(orders);
+        return ApiResponse.success(null);
+    }
 
     @ApiOperation("鍒嗛〉鏌ヨ")
     @PostMapping("/page")
@@ -69,6 +77,12 @@
         return ApiResponse.success(ordersService.findPage(pageWrap));
     }
 
+    @ApiOperation("鏁版嵁缁熻")
+    @PostMapping("/getIndexData")
+    public ApiResponse<IndexOrderCountVO> getIndexData (@RequestBody Orders pageWrap) {
+        return ApiResponse.success(ordersService.getIndexData(pageWrap));
+    }
+
     @ApiOperation("瀵煎嚭Excel")
     @PostMapping("/exportExcel")
     @RequiresPermissions("business:orders:exportExcel")
diff --git a/server/admin/src/main/java/com/doumee/api/web/WebOrdersController.java b/server/admin/src/main/java/com/doumee/api/web/WebOrdersController.java
index ad0d3b1..9626b1b 100644
--- a/server/admin/src/main/java/com/doumee/api/web/WebOrdersController.java
+++ b/server/admin/src/main/java/com/doumee/api/web/WebOrdersController.java
@@ -1,15 +1,11 @@
 package com.doumee.api.web;
 
-import com.allinpay.syb.lib.SybConstants;
-import com.allinpay.syb.lib.SybUtil;
 import com.doumee.api.BaseController;
 import com.doumee.core.model.ApiResponse;
-import com.doumee.dao.business.dto.PayOrderNotifyParam;
-import com.doumee.dao.business.dto.PayOrderParam;
-import com.doumee.dao.business.dto.PayOrderResponse;
+import com.allinpay.syb.model.PayOrderParam;
+import com.allinpay.syb.model.PayOrderResponse;
 import com.doumee.dao.business.model.Orders;
 import com.doumee.service.business.OrdersService;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -17,7 +13,6 @@
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
-import javax.servlet.ServletException;
 import javax.servlet.ServletInputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -25,8 +20,6 @@
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.net.URLDecoder;
-import java.util.Map;
-import java.util.TreeMap;
 
 /**
  * 璁㈠崟璁板綍琛ㄤ俊鎭〃Controller瀹氫箟
diff --git a/server/admin/src/main/resources/application.yml b/server/admin/src/main/resources/application.yml
index 7b6d530..80562ae 100644
--- a/server/admin/src/main/resources/application.yml
+++ b/server/admin/src/main/resources/application.yml
@@ -5,14 +5,10 @@
 project:
   name: 璞嗙背鐢靛姩杞�
   version: 1.0.0
-  # 鐜锛岀敓浜х幆澧僷roduction锛屽紑鍙戠幆澧僤evelopment
-  env: production
-  # 妯″紡锛宼esting娴嬭瘯妯″紡
-  mode: testing
 
 spring:
   profiles:
-    active: dev
+    active: pro
   # JSON杩斿洖閰嶇疆
   jackson:
     # 榛樿鏃跺尯
diff --git a/server/admin/src/main/resources/logback-spring.xml b/server/admin/src/main/resources/logback-spring.xml
index 899ec7a..09713c7 100644
--- a/server/admin/src/main/resources/logback-spring.xml
+++ b/server/admin/src/main/resources/logback-spring.xml
@@ -5,7 +5,7 @@
             <pattern>%highlight(%date{yyyy-MM-dd HH:mm:ss}) | %highlight(%-5level) | %highlight(%thread) | %highlight(%logger) | %msg%n</pattern>
         </layout>
     </appender>
-    <property name="log.path" value="/usr/local/jars/logs/admin"></property>
+    <property name="log.path" value="/www/server/dmpay/logs/admin"></property>
     <property name="log.fileSize" value="100MB"></property>
     <property name="log.historyDays" value="7"></property>
     <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
diff --git a/server/services/src/main/java/com/allinpay/syb/lib/SybUtil.java b/server/services/src/main/java/com/allinpay/syb/lib/SybUtil.java
index 928e2dd..3fda1e5 100644
--- a/server/services/src/main/java/com/allinpay/syb/lib/SybUtil.java
+++ b/server/services/src/main/java/com/allinpay/syb/lib/SybUtil.java
@@ -1,6 +1,5 @@
 package com.allinpay.syb.lib;
 
-import java.io.UnsupportedEncodingException;
 import java.security.KeyFactory;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
@@ -8,14 +7,13 @@
 import java.security.PublicKey;
 import java.security.spec.PKCS8EncodedKeySpec;
 import java.security.spec.X509EncodedKeySpec;
-import java.util.List;
 import java.util.Map;
 import java.util.Random;
 import java.util.TreeMap;
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
-import com.doumee.dao.business.dto.PayOrderNotifyParam;
+import com.allinpay.syb.model.PayOrderNotifyParam;
 import org.apache.commons.codec.binary.Base64;
 
 public class SybUtil {
diff --git a/server/services/src/main/java/com/doumee/dao/business/dto/PayOrderNotifyParam.java b/server/services/src/main/java/com/allinpay/syb/model/PayOrderNotifyParam.java
similarity index 95%
rename from server/services/src/main/java/com/doumee/dao/business/dto/PayOrderNotifyParam.java
rename to server/services/src/main/java/com/allinpay/syb/model/PayOrderNotifyParam.java
index 89dacb9..5e9fa47 100644
--- a/server/services/src/main/java/com/doumee/dao/business/dto/PayOrderNotifyParam.java
+++ b/server/services/src/main/java/com/allinpay/syb/model/PayOrderNotifyParam.java
@@ -1,4 +1,4 @@
-package com.doumee.dao.business.dto;
+package com.allinpay.syb.model;
 
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
@@ -12,6 +12,8 @@
 @ApiModel("璁㈠崟鏀粯鍙傛暟寮傛閫氱煡杩斿洖")
 public class PayOrderNotifyParam {
 
+   private String retcode;//	string	鍚�	鏀堕摱瀹滱PPID	8
+   private String retmsg;//	string	鍚�	鏀堕摱瀹滱PPID	8
    private String appid;//	string	鍚�	鏀堕摱瀹滱PPID	8
     private String    outtrxid	;//	string	鍚�	绗笁鏂逛氦鏄撳彿	50	鏆傛湭鍚敤
     private String   trxcode;//		string	鍚�	浜ゆ槗绫诲瀷	8	璇﹁闄勫綍浜ゆ槗绫诲瀷
diff --git a/server/services/src/main/java/com/doumee/dao/business/dto/PayOrderParam.java b/server/services/src/main/java/com/allinpay/syb/model/PayOrderParam.java
similarity index 93%
rename from server/services/src/main/java/com/doumee/dao/business/dto/PayOrderParam.java
rename to server/services/src/main/java/com/allinpay/syb/model/PayOrderParam.java
index 7bc196f..1f68543 100644
--- a/server/services/src/main/java/com/doumee/dao/business/dto/PayOrderParam.java
+++ b/server/services/src/main/java/com/allinpay/syb/model/PayOrderParam.java
@@ -1,4 +1,4 @@
-package com.doumee.dao.business.dto;
+package com.allinpay.syb.model;
 
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
diff --git a/server/services/src/main/java/com/doumee/dao/business/dto/PayOrderResponse.java b/server/services/src/main/java/com/allinpay/syb/model/PayOrderResponse.java
similarity index 88%
rename from server/services/src/main/java/com/doumee/dao/business/dto/PayOrderResponse.java
rename to server/services/src/main/java/com/allinpay/syb/model/PayOrderResponse.java
index d47fdfb..8fac915 100644
--- a/server/services/src/main/java/com/doumee/dao/business/dto/PayOrderResponse.java
+++ b/server/services/src/main/java/com/allinpay/syb/model/PayOrderResponse.java
@@ -1,4 +1,4 @@
-package com.doumee.dao.business.dto;
+package com.allinpay.syb.model;
 
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
diff --git a/server/services/src/main/java/com/allinpay/syb/model/PayPublicModel.java b/server/services/src/main/java/com/allinpay/syb/model/PayPublicModel.java
new file mode 100644
index 0000000..b80eb8a
--- /dev/null
+++ b/server/services/src/main/java/com/allinpay/syb/model/PayPublicModel.java
@@ -0,0 +1,24 @@
+package com.allinpay.syb.model;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 鍛樺伐淇℃伅瀵煎叆琛�
+ * @author 姹熻箘韫�
+ * @date 2024/01/16 10:03
+ */
+@Data
+@ApiModel("閫氳仈鍏叡閰嶇疆鍙傛暟")
+public class PayPublicModel {
+
+    private String appid;
+    private String cusid;
+    private String version;
+    private String signtype;
+    private String appkey;
+    private String url;
+    private String appPubkey;
+
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Orders.java b/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
index 33469be..46058a1 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
@@ -102,7 +102,7 @@
     private Date cancelDate;
     @ApiModelProperty("鍙栨秷鏂瑰紡  0鑷姩鍙栨秷;1鎵嬪姩鍙栨秷")
     @ExcelColumn(name="鍙栨秷鏂瑰紡  0鑷姩鍙栨秷;1鎵嬪姩鍙栨秷",index=22 ,width=10)
-    private String cancelWay;
+    private Integer cancelWay;
     @ApiModelProperty("鍙栨秷澶囨敞")
     @ExcelColumn(name="鍙栨秷澶囨敞",index=23 ,width=10)
     private String cancelInfo;
@@ -127,4 +127,7 @@
     @ApiModelProperty("璐熻矗浜哄鍚�")
     @TableField(exist = false)
     private String userRealname;
+    @ApiModelProperty("缁熻閲�")
+    @TableField(exist = false)
+    private Long num;
 }
diff --git a/server/services/src/main/java/com/doumee/dao/vo/IndexOrderCountVO.java b/server/services/src/main/java/com/doumee/dao/vo/IndexOrderCountVO.java
new file mode 100644
index 0000000..e598e29
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/vo/IndexOrderCountVO.java
@@ -0,0 +1,68 @@
+package com.doumee.dao.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2026/1/28 10:43
+ */
+@Data
+@ApiModel("宸ヤ綔鍙版暟鎹粺璁″璞�")
+public class IndexOrderCountVO {
+
+    @ApiModelProperty(value = "鎬讳氦鏄撻")
+    private BigDecimal todayMoney;
+    @ApiModelProperty(value = "杞︽浜ゆ槗棰�")
+    private BigDecimal todayMoney0;
+    @ApiModelProperty(value = "寤舵湡娆句氦鏄撻")
+    private BigDecimal todayMoney1;
+    @ApiModelProperty(value = "鎬讳氦鏄撻锛堟湭鏀粯锛�")
+    private BigDecimal todayWaitMoney;
+    @ApiModelProperty(value = "杞︽浜ゆ槗棰濓紙鏈敮浠橈級")
+    private BigDecimal todayWaitMoney0;
+    @ApiModelProperty(value = "寤舵湡娆句氦鏄撻锛堟湭鏀粯锛�")
+    private BigDecimal todayWaitMoney1;
+    @ApiModelProperty(value = "鎬讳氦鏄撻锛堝畬鎴愭敮浠橈級")
+    private BigDecimal todayDoneMoney;
+    @ApiModelProperty(value = "杞︽浜ゆ槗棰濓紙瀹屾垚鏀粯锛�")
+    private BigDecimal todayDoneMoney0;
+    @ApiModelProperty(value = "寤舵湡娆句氦鏄撻锛堝畬鎴愭敮浠橈級")
+    private BigDecimal todayDoneMoney1;
+    @ApiModelProperty(value = "鎬讳氦鏄撻锛堟敮浠樺け璐ワ級")
+    private BigDecimal todayFailMoney;
+    @ApiModelProperty(value = "杞︽浜ゆ槗棰濓紙鏀粯澶辫触锛�")
+    private BigDecimal todayFailMoney0;
+    @ApiModelProperty(value = "寤舵湡娆句氦鏄撻锛堟敮浠樺け璐ワ級")
+    private BigDecimal todayFailMoney1;
+    @ApiModelProperty(value = "鎬讳氦鏄撴暟閲�")
+    private Long todayNum;
+    @ApiModelProperty(value = "杞︽浜ゆ槗鏁伴噺")
+    private Long todayNum0;
+    @ApiModelProperty(value = "寤舵湡娆句氦鏄撴暟閲�")
+    private Long todayNum1;
+    @ApiModelProperty(value = "鎬讳氦鏄撴暟閲忥紙鏈敮浠橈級")
+    private Long todayWaitNum;
+    @ApiModelProperty(value = "杞︽浜ゆ槗鏁伴噺锛堟湭鏀粯锛�")
+    private Long todayWaitNum0;
+    @ApiModelProperty(value = "寤舵湡娆句氦鏄撴暟閲忥紙鏈敮浠橈級")
+    private Long todayWaitNum1;
+    @ApiModelProperty(value = "鎬讳氦鏄撴暟閲忥紙瀹屾垚鏀粯锛�")
+    private Long todayDoneNum;
+    @ApiModelProperty(value = "杞︽浜ゆ槗鏁伴噺锛堝畬鎴愭敮浠橈級")
+    private Long todayDoneNum0;
+    @ApiModelProperty(value = "寤舵湡娆句氦鏄撴暟閲忥紙瀹屾垚鏀粯锛�")
+    private Long todayDoneNum1;
+    @ApiModelProperty(value = "鎬讳氦鏄撴暟閲忥紙鏀粯澶辫触锛�")
+    private Long todayFailNum;
+    @ApiModelProperty(value = "杞︽浜ゆ槗鏁伴噺锛堟敮浠樺け璐ワ級")
+    private Long todayFailNum0;
+    @ApiModelProperty(value = "寤舵湡娆句氦鏄撴暟閲忥紙鏀粯澶辫触锛�")
+    private Long todayFailNum1;
+
+}
diff --git a/server/services/src/main/java/com/doumee/service/business/OrdersService.java b/server/services/src/main/java/com/doumee/service/business/OrdersService.java
index 3fb6490..4e56ce1 100644
--- a/server/services/src/main/java/com/doumee/service/business/OrdersService.java
+++ b/server/services/src/main/java/com/doumee/service/business/OrdersService.java
@@ -2,12 +2,12 @@
 
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
-import com.doumee.dao.business.dto.PayOrderNotifyParam;
-import com.doumee.dao.business.dto.PayOrderParam;
-import com.doumee.dao.business.dto.PayOrderResponse;
+import com.allinpay.syb.model.PayOrderParam;
+import com.allinpay.syb.model.PayOrderResponse;
 import com.doumee.dao.business.model.Orders;
+import com.doumee.dao.vo.IndexOrderCountVO;
+import io.swagger.models.auth.In;
 
-import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
@@ -108,4 +108,7 @@
     void returnPage(PayOrderParam param, HttpServletResponse response) throws IOException;
 
     void autoCancelNoPay();
+    void updateByPayStatus(Orders orders);
+
+    IndexOrderCountVO getIndexData(Orders pageWrap);
 }
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
index beb566a..9f9db40 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
@@ -5,6 +5,8 @@
 import com.alibaba.fastjson.TypeReference;
 import com.allinpay.syb.lib.SybConstants;
 import com.allinpay.syb.lib.SybUtil;
+import com.allinpay.syb.model.PayPublicModel;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.Constants;
 import com.doumee.core.constants.ResponseStatus;
@@ -12,20 +14,23 @@
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.DateUtil;
-import com.doumee.dao.business.dto.PayOrderNotifyParam;
-import com.doumee.dao.business.dto.PayOrderParam;
-import com.doumee.dao.business.dto.PayOrderResponse;
+import com.doumee.core.utils.HttpsUtil;
+import com.allinpay.syb.model.PayOrderNotifyParam;
+import com.allinpay.syb.model.PayOrderParam;
+import com.allinpay.syb.model.PayOrderResponse;
 import com.doumee.dao.business.model.Orders;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.OrdersMapper;
 import com.doumee.dao.system.SystemUserMapper;
 import com.doumee.dao.system.model.SystemUser;
+import com.doumee.dao.vo.IndexOrderCountVO;
 import com.doumee.service.business.OrdersService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +42,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.math.BigDecimal;
+import java.net.URLEncoder;
 import java.util.*;
 
 /**
@@ -95,14 +101,21 @@
             param.setCusid(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_SYB_CUSID).getCode());
             param.setVersion(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_VERSION).getCode());
             param.setCharset("utf-8");
-            param.setTrxamt("1");//鍗曚綅鍒�
+            param.setTrxamt(orders.getMoney().intValue()+"");//鍗曚綅鍒�
             param.setRandomstr(UUID.randomUUID().toString().replace("-",""));
             param.setReqsn(""+orders.getId());
             param.setReturl(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_RETURN_URL).getCode());
             param.setNotify_url( systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_NOTIFY_URL).getCode());
-            param.setBody(StringUtils.defaultString(orders.getName(),"") +"-"
-                    + StringUtils.defaultString(orders.getPhone(),"")+ "-"
-                    +StringUtils.defaultString(orders.getRemark(),""));
+            String remark = (Constants.equalsInteger(orders.getType(),Constants.ZERO)?"杞︽":"寤舵湡娆�")
+                    +"-"+ StringUtils.defaultString(orders.getName(),"") +"-"
+                    + StringUtils.defaultString(orders.getPhone(),"");
+            if(StringUtils.isNotBlank(orders.getRemark())){
+                remark += "-"+StringUtils.defaultString(orders.getRemark(),"");
+            }
+            if(remark.length()>300){
+                remark = remark.substring(0,300);
+            }
+            param.setBody(remark);
             param.setValidtime(  systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_VALID_TIME).getCode());
             param.setSigntype(  systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_SIGN_TYPE).getCode());
 
@@ -218,7 +231,7 @@
         queryWrapper.eq(pageWrap.getModel().getPayMethod() != null,Orders::getPayMethod, pageWrap.getModel().getPayMethod());
         queryWrapper.eq(pageWrap.getModel().getPayOrderId() != null,Orders::getPayOrderId, pageWrap.getModel().getPayOrderId());
         queryWrapper.ge(pageWrap.getModel().getStarttime()!=null,Orders::getCreateTime , pageWrap.getModel().getStarttime());
-        queryWrapper.ne(pageWrap.getModel().getEndtime()!=null,Orders::getCreateTime , pageWrap.getModel().getEndtime());
+        queryWrapper.le(pageWrap.getModel().getEndtime()!=null,Orders::getCreateTime , pageWrap.getModel().getEndtime());
         queryWrapper.eq(pageWrap.getModel().getCancelWay() != null,Orders::getCancelWay, pageWrap.getModel().getCancelWay());
         queryWrapper.eq(pageWrap.getModel().getCancelInfo() != null,Orders::getCancelInfo, pageWrap.getModel().getCancelInfo());
         queryWrapper.eq(pageWrap.getModel().getCancelUserId() != null,Orders::getCancelUserId, pageWrap.getModel().getCancelUserId());
@@ -227,6 +240,107 @@
         queryWrapper.orderByDesc(Orders::getId);
         return PageData.from(ordersMapper.selectJoinPage(page,Orders.class, queryWrapper));
     }
+    @Override
+    public IndexOrderCountVO getIndexData(Orders pageWrap) {
+        IndexOrderCountVO data = initIndexOrderCountMoel();
+       List<Orders> list = ordersMapper.selectList(new QueryWrapper<Orders>()
+                .select("status,type,count(id) as num,sum(money) as money")
+                .lambda()
+                .eq(Orders::getDeleted,Constants.ZERO )
+                .apply("to_days(create_time) =to_days(now())")
+                .groupBy(Orders::getType,Orders::getStatus));//鎸夌被鍨嬪拰鐘舵�佸垎缁�
+        if(list!=null){
+            for(Orders model:list){
+                data.setTodayNum(data.getTodayNum()+Constants.formatLongNum(model.getNum()));
+                data.setTodayMoney(data.getTodayMoney().add(Constants.formatBigDecimal(model.getMoney())));
+                if(Constants.equalsInteger(model.getType(),Constants.ONE)){
+                    data.setTodayNum1(data.getTodayNum1()+Constants.formatLongNum(model.getNum()));
+                    data.setTodayMoney1(data.getTodayMoney1().add(Constants.formatBigDecimal(model.getMoney())));
+                    //寤舵湡娆�
+                    if(Constants.equalsInteger(model.getStatus(),Constants.ONE)){
+                        //浜ゆ槗鎴愬姛
+                        data.setTodayDoneNum(data.getTodayDoneNum()+Constants.formatLongNum(model.getNum()));
+                        data.setTodayDoneMoney(data.getTodayDoneMoney().add(Constants.formatBigDecimal(model.getMoney())));
+                        data.setTodayDoneNum1(data.getTodayDoneNum1()+Constants.formatLongNum(model.getNum()));
+                        data.setTodayDoneMoney1(data.getTodayDoneMoney1().add(Constants.formatBigDecimal(model.getMoney())));
+                    }else  if(Constants.equalsInteger(model.getStatus(),Constants.ZERO)){
+                        //浜ゆ槗涓�
+                        data.setTodayWaitNum(data.getTodayWaitNum()+Constants.formatLongNum(model.getNum()));
+                        data.setTodayWaitMoney(data.getTodayWaitMoney().add(Constants.formatBigDecimal(model.getMoney())));
+                        data.setTodayWaitNum1(data.getTodayWaitNum1()+Constants.formatLongNum(model.getNum()));
+                        data.setTodayWaitMoney1(data.getTodayWaitMoney1().add(Constants.formatBigDecimal(model.getMoney())));
+                    }else {
+                        //浜ゆ槗澶辫触
+                        data.setTodayFailNum1(data.getTodayFailNum1()+Constants.formatLongNum(model.getNum()));
+                        data.setTodayFailMoney1(data.getTodayFailMoney1().add(Constants.formatBigDecimal(model.getMoney())));
+                        data.setTodayFailNum(data.getTodayFailNum()+Constants.formatLongNum(model.getNum()));
+                        data.setTodayFailMoney(data.getTodayFailMoney().add(Constants.formatBigDecimal(model.getMoney())));
+                    }
+                }else{
+                    //杞︽
+                    data.setTodayNum0(data.getTodayNum0()+Constants.formatLongNum(model.getNum()));
+                    data.setTodayMoney0(data.getTodayMoney0().add(Constants.formatBigDecimal(model.getMoney())));
+                    //寤舵湡娆�
+                    if(Constants.equalsInteger(model.getStatus(),Constants.ONE)){
+                        //浜ゆ槗鎴愬姛
+                        data.setTodayDoneNum(data.getTodayDoneNum()+Constants.formatLongNum(model.getNum()));
+                        data.setTodayDoneMoney(data.getTodayDoneMoney().add(Constants.formatBigDecimal(model.getMoney())));
+                        data.setTodayDoneNum0(data.getTodayDoneNum0()+Constants.formatLongNum(model.getNum()));
+                        data.setTodayDoneMoney0(data.getTodayDoneMoney0().add(Constants.formatBigDecimal(model.getMoney())));
+                    }else  if(Constants.equalsInteger(model.getStatus(),Constants.ZERO)){
+                        //浜ゆ槗涓�
+                        data.setTodayWaitNum(data.getTodayWaitNum()+Constants.formatLongNum(model.getNum()));
+                        data.setTodayWaitMoney(data.getTodayWaitMoney().add(Constants.formatBigDecimal(model.getMoney())));
+                        data.setTodayWaitNum0(data.getTodayWaitNum0()+Constants.formatLongNum(model.getNum()));
+                        data.setTodayWaitMoney0(data.getTodayWaitMoney0().add(Constants.formatBigDecimal(model.getMoney())));
+                    }else {
+                        //浜ゆ槗澶辫触
+                        data.setTodayFailNum(data.getTodayFailNum()+Constants.formatLongNum(model.getNum()));
+                        data.setTodayFailMoney(data.getTodayFailMoney().add(Constants.formatBigDecimal(model.getMoney())));
+                        data.setTodayFailNum0(data.getTodayFailNum0()+Constants.formatLongNum(model.getNum()));
+                        data.setTodayFailMoney0(data.getTodayFailMoney0().add(Constants.formatBigDecimal(model.getMoney())));
+                    }
+                }
+            }
+        }
+
+        return  data;
+    }
+
+    private IndexOrderCountVO initIndexOrderCountMoel() {
+        IndexOrderCountVO data = new IndexOrderCountVO();
+        data.setTodayMoney(new BigDecimal(0));
+        data.setTodayMoney0(new BigDecimal(0));
+        data.setTodayMoney1(new BigDecimal(0));
+        data.setTodayNum(0l);
+        data.setTodayNum0(0l);
+        data.setTodayNum1(0l);
+
+        data.setTodayDoneMoney(new BigDecimal(0));
+        data.setTodayDoneMoney0(new BigDecimal(0));
+        data.setTodayDoneMoney1(new BigDecimal(0));
+        data.setTodayDoneNum(0l);
+        data.setTodayDoneNum0(0l);
+        data.setTodayDoneNum1(0l);
+
+        data.setTodayWaitMoney(new BigDecimal(0));
+        data.setTodayWaitMoney0(new BigDecimal(0));
+        data.setTodayWaitMoney1(new BigDecimal(0));
+        data.setTodayWaitNum(0l);
+        data.setTodayWaitNum0(0l);
+        data.setTodayWaitNum1(0l);
+
+        data.setTodayFailMoney(new BigDecimal(0));
+        data.setTodayFailMoney0(new BigDecimal(0));
+        data.setTodayFailMoney1(new BigDecimal(0));
+        data.setTodayFailNum(0l);
+        data.setTodayFailNum0(0l);
+        data.setTodayFailNum1(0l);
+
+        return data;
+
+    }
+
     @Override
     public long count(Orders orders) {
         QueryWrapper<Orders> wrapper = new QueryWrapper<>(orders);
@@ -238,17 +352,142 @@
         try {
             time = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_VALID_TIME).getCode());
         }catch (Exception e){
-
         }
-        Date date = new Date();
-        ordersMapper.update(null,new UpdateWrapper<Orders>().lambda()
-                .set(Orders::getStatus,Constants.TWO)
-                .set(Orders::getCancelInfo,"瓒呮椂鏈敮浠橈紝鑷姩鍙栨秷")
-                .set(Orders::getCancelWay,Constants.ZERO)
-                .set(Orders::getCancelDate,date)
-                .set(Orders::getUpdateTime,date)
+        List<Orders> orderList =  ordersMapper.selectList(new QueryWrapper<Orders>().lambda()
                 .eq(Orders::getStatus,Constants.ZERO)
                 .apply("TIMESTAMPDIFF(MINUTE, create_time ,now()) > "+time));
+        if(orderList !=null && orderList.size()>0){
+            PayPublicModel publicModel = initPayPublicModel();
+            Date date = new Date();
+            for(Orders model : orderList){
+                queryPayOrderDetailBiz(model,publicModel,date,time);
+            }
+        }
+    }
+    @Override
+    public  void updateByPayStatus(Orders param) {
+        int time = 30;
+        try {
+            time = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_VALID_TIME).getCode());
+        }catch (Exception e){
+        }
+        Orders  model =  ordersMapper.selectById(param.getId());
+        if(model !=null ){
+            PayPublicModel publicModel = initPayPublicModel();
+            Date date = new Date();
+            queryPayOrderDetailBiz(model,publicModel,date,time);
+        }
+    }
+
+    private void queryPayOrderDetailBiz(Orders model, PayPublicModel publicModel, Date date,int time) {
+        TreeMap<String,String> params = new TreeMap<String,String>();
+        params.put("cusid",publicModel.getCusid());
+        params.put("appid",publicModel.getAppid());
+        params.put("version",publicModel.getVersion());
+        params.put("trxid", "");
+        params.put("randomstr", SybUtil.getValidatecode(8));
+        params.put("signtype", publicModel.getSigntype());
+        String appkey = publicModel.getAppkey();
+        String url =  publicModel.getUrl();
+        String appPubkey = publicModel.getAppPubkey();
+        params.remove("sign");
+        params.put("reqsn", model.getId()+"");
+        PayOrderNotifyParam map = query(params,url,appkey,appPubkey);
+        int status = Constants.TWO;
+        if(map!=null){
+            String info = SybUtil.getPayInfoByStatus(map);
+            if(StringUtils.equals(map.getTrxcode(),"VSP501")
+                    ||StringUtils.equals(map.getTrxcode(),"VSP511")
+                    ||StringUtils.equals(map.getTrxcode(),"VSP551")){
+                //浜ゆ槗绫诲瀷鏄� 寰俊鏀粯 銆佹敮浠樺疂鏀粯鎴栬�呴摱鑱旀壂鐮佹敮浠橈紝璁板綍鏀粯鐘舵��
+                if(StringUtils.equals(map.getTrxstatus(),"0000")){
+                    //浜ゆ槗鎴愬姛
+                    model.setPayStatus(Constants.ONE);
+                    status = Constants.ONE;
+                } else if (StringUtils.equals(map.getTrxstatus(),"2000") || StringUtils.equals(map.getTrxstatus(),"2008")) {
+                    //濡傛灉浜ゆ槗鏈敮浠橈紝骞朵笖鏈秴杩囧崐灏忔椂锛屼笉澶勭悊
+                    if(date.getTime() - model.getCreateTime().getTime() < 30*60*1000){
+                        return;
+                    }
+                }
+            }
+            model.setPayFee(map.getFee());
+            model.setStatus(status);
+            model.setPayDate(DateUtil.fromStringToDate("yyyyMMddHHmmss",map.getPaytime()));
+            model.setPayOrderId(map.getSrctrxid());//閫氳仈璁㈠崟鍙�
+            model.setPayThirdOrderId(map.getChnltrxid());//鏀粯瀹濆井淇¤鍗曞彿
+            model.setPayThirdOrderData(map.getChnldata());//涓夋柟浜ゆ槗娓犻亾鏁版嵁
+            model.setPayInfo(info);
+            model.setPayCode(map.getTrxcode());
+        }else{
+            model.setCancelDate(date);
+            model.setCancelInfo("瓒呮椂鏈敮浠橈紝鑷姩鍙栨秷");
+            model.setCancelWay(Constants.ZERO);
+            model.setStatus(Constants.TWO);
+        }
+        model.setUpdateTime(date);
+        ordersMapper.updateById(model) ;
+    }
+
+    private PayPublicModel initPayPublicModel() {
+        PayPublicModel model = new PayPublicModel();
+        model.setUrl(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_SYB_CUSID).getCode());
+        model.setCusid( systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_SYB_CUSID).getCode());
+        model.setAppid(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_SYB_APPID).getCode());
+        model.setVersion(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_VERSION).getCode());
+        model.setSigntype( systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_SIGN_TYPE).getCode());
+        model.setAppkey(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_APPKEY).getCode());
+        model.setUrl(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_SYB_APIURL).getCode());
+        model.setAppPubkey( systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PAY_SYB_RSATLPUBKEY).getCode());
+        return model;
+    }
+
+    public  PayOrderNotifyParam query( TreeMap<String,String> params,String url,String appkey,String pubKey )  {
+        try {
+            params.put("sign", SybUtil.unionSign(params,appkey,SybConstants.SIGN_TYPE));
+            String data =getHttpParamsStr(params);
+            log.error("璁㈠崟鏌ヨ鏁版嵁璇锋眰================{}",data);
+            String result =  HttpsUtil.post(url+"/tranx/query",data,"application/x-www-form-urlencoded",true);
+            log.error("璁㈠崟鏌ヨ鏁版嵁杩斿洖================{}",result);
+            PayOrderNotifyParam map = handleResult(result,pubKey,params.get("signtype"));
+            return map;
+        }catch (Exception e){
+            log.error("閫氳仈璁㈠崟鏌ヨ寮傚父================{}",e);
+        }
+        return  null;
+    }
+    public String getHttpParamsStr(Map<String, String> params ) throws IOException {
+        StringBuilder outBuf = new StringBuilder();
+        boolean isNotFirst = false;
+        for (Map.Entry<String, String> entry: params.entrySet()){
+            if (isNotFirst)
+                outBuf.append('&');
+            isNotFirst = true;
+            outBuf
+                    .append(entry.getKey())
+                    .append('=')
+                    .append(URLEncoder.encode(entry.getValue(), "UTF-8"));
+        }
+        System.out.println("鍙傛暟:"+outBuf.toString());
+        return outBuf.toString();
+    }
+
+    public static PayOrderNotifyParam handleResult(String result,String pubKey,String signType) throws Exception{
+        log.error("杩斿洖鏁版嵁杩斿洖================{}",result);
+        Map map = SybUtil.json2ObjMap(result);
+        if(map == null){
+            log.error("杩斿洖鏁版嵁杩斿洖閿欒================{}",result);
+            throw new Exception("杩斿洖鏁版嵁閿欒");
+        }
+        if("SUCCESS".equals(map.get("retcode"))){
+            TreeMap tmap = new TreeMap();
+            tmap.putAll(map);
+            if(SybUtil.validSign(tmap, pubKey, signType)){
+                PayOrderNotifyParam param = JSONObject.toJavaObject(JSONObject.parseObject(result),PayOrderNotifyParam.class);
+                return param;
+            }
+        }
+        return null;
     }
     @Override
     public void returnPage(PayOrderParam param, HttpServletResponse response) throws IOException {
@@ -281,7 +520,7 @@
                     r ="鏀粯缁撴灉寮傚父锛岃鍗曟煡璇㈠け璐ワ紝濡傛湁鐤戦棶璇疯仈绯诲鏈嶄汉鍛�";
                     return;
                 }
-                if(Constants.equalsInteger(model.getPayStatus(),Constants.ONE)){
+                 if(Constants.equalsInteger(model.getPayStatus(),Constants.ONE)){
                     log.error("鏀粯澶勭悊======璁㈠崟宸叉敮浠�"+map.getCusorderid());
                     return;
                 }
@@ -338,4 +577,6 @@
         return map;
     }
 
+
+
 }
diff --git a/server/services/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java b/server/services/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
index 8f1b81f..bcdd47b 100644
--- a/server/services/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -52,7 +52,7 @@
         loginLog.setClientInfo(Utils.User_Client.getBrowser(request));
         loginLog.setOsInfo(Utils.User_Client.getOS(request));
         loginLog.setServerIp(Utils.Server.getIP());
-        if(StringUtils.equals(projectEnv,"development")){
+        if(!StringUtils.equals(projectEnv,"development")){
             // 鏍¢獙楠岃瘉鐮�
             try {
                 captchaService.check(dto.getUuid(), dto.getCode());
diff --git a/server/services/src/main/resources/application-pro.yml b/server/services/src/main/resources/application-pro.yml
index 23888bc..fab2b8f 100644
--- a/server/services/src/main/resources/application-pro.yml
+++ b/server/services/src/main/resources/application-pro.yml
@@ -1,60 +1,77 @@
 spring:
   # 鏁版嵁婧愰厤缃�
   datasource:
-    url: jdbc:mysql://192.168.0.211:3306/diandongche?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
-    username: root
-    password: Doumee@168
+    url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/diandongche?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
+    username: test
+    password: doumee@168
     driver-class-name: com.mysql.cj.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
   redis:
     #    database: 0
     host: 127.0.0.1
     port: 6379
-    password:
+    password: ms!123!
     timeout: 5000      # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
   jackson:
     time-zone: GMT+8
     date-format: yyyy-MM-dd HH:mm:ss
+
   mail:
-    host: smtp.aliyun.com
-    port: 465
-    username: your_email@aliyun.com
-    password: your_password
+    host: smtp.exmail.qq.com
+    username: jp@doumee.com
+    password: 2Jz9HFW2U7vRnCRu
+    default-encoding: UTF-8
     properties:
       mail:
         smtp:
           auth: true
-          starttls:
-            enable: true
-            required: true
-          ssl:
-            enable: true
-debug_model: false
+        starttls:
+          enable: true
+          required: true
+
+debug_model: true
 
 # Swagger閰嶇疆
 swagger:
-  host: 127.0.0.1
+  host:
   title: ${project.name}鎺ュ彛鏂囨。
   description: ${project.name}鎺ュ彛鏂囨。
+  # 鍚敤Swagger锛岀敓浜х幆澧冨缓璁叧闂�
   enabled: true
-  context-path: 
+  # 鍚敤swagger鍔犲瘑
+  enable-encrypt: true
   # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
   redirect-uri: /
 
-des_pwd: 123456SDFKDJF
 
+des_pwd: 123456SDFKDJF
 knife4j:
   enable: true
   basic:
     enable: true
     username: admin
-    password: doumee@168
-upload:
-  type: blob
+    password: 111111
 
+aes:
+  encrypt:
+    open: true # 鏄惁寮�鍚姞瀵� true  or  false
+    showLog: true # 鏄惁鎵撳嵃鍔犺В瀵唋og true  or  false
+    publicKey: mN4Yn8Or8r7SH1w3 # AES瀵嗛挜
+    privateKey:  # RSA绉侀挜
+    time: 600000
+
+upload:
+  type: ftp
 
 project:
   # 鐜锛岀敓浜х幆澧僷roduction锛屽紑鍙戠幆澧僤evelopment
   env: production
   # 妯″紡锛宼esting娴嬭瘯妯″紡
-  mode: production
\ No newline at end of file
+  mode: production
+
+dingtalk:
+  clientId: dingulzemj5bynjciapg
+  clientSecret: tLnWtSmmTuqjX9a1MvJzYxI1iXVJxEwtyZZYYFQ5cLg57pzzCZ4J8VsVwvmRNtkK
+
+
+
diff --git a/server/services/src/main/resources/application-test.yml b/server/services/src/main/resources/application-test.yml
index 4b89b4b..4ee53da 100644
--- a/server/services/src/main/resources/application-test.yml
+++ b/server/services/src/main/resources/application-test.yml
@@ -1,9 +1,9 @@
 spring:
   # 鏁版嵁婧愰厤缃�
   datasource:
-    url: jdbc:mysql://192.168.0.211:3306/diandongche?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
-    username: root
-    password: Doumee@168
+    url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/diandongche?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
+    username: test
+    password: doumee@168
     driver-class-name: com.mysql.cj.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
   redis:
@@ -15,24 +15,7 @@
   jackson:
     time-zone: GMT+8
     date-format: yyyy-MM-dd HH:mm:ss
-#  mail:
-#    username: jiangping0849@outlook.com
-#    password: mwzaislgioyhxnig
-#    host: smtp-mail.outlook.com
-#    port: 587
-#    default-encoding: UTF-8
-#    properties:
-#      mail:
-#        debug: true
-#        smtp:
-#          ssl:
-#            socketFactory:
-#              class: com.sun.mail.util.MailSSLSocketFactory
-#              fallback: false
-#          auth: true
-#          starttls:
-#            enable: true
-#            required: true
+
   mail:
     host: smtp.exmail.qq.com
     username: jp@doumee.com
@@ -69,13 +52,26 @@
     username: admin
     password: 111111
 
+aes:
+  encrypt:
+    open: true # 鏄惁寮�鍚姞瀵� true  or  false
+    showLog: true # 鏄惁鎵撳嵃鍔犺В瀵唋og true  or  false
+    publicKey: mN4Yn8Or8r7SH1w3 # AES瀵嗛挜
+    privateKey:  # RSA绉侀挜
+    time: 600000
 
 upload:
-  type: blob
-
+  type: ftp
 
 project:
   # 鐜锛岀敓浜х幆澧僷roduction锛屽紑鍙戠幆澧僤evelopment
-  env: production
+  env: development
   # 妯″紡锛宼esting娴嬭瘯妯″紡
-  mode: testing
\ No newline at end of file
+  mode: testing
+
+dingtalk:
+  clientId: dingulzemj5bynjciapg
+  clientSecret: tLnWtSmmTuqjX9a1MvJzYxI1iXVJxEwtyZZYYFQ5cLg57pzzCZ4J8VsVwvmRNtkK
+
+
+
diff --git a/server/startsh/admin_start.sh b/server/startsh/admin_start.sh
index 60219c0..5b512fa 100644
--- a/server/startsh/admin_start.sh
+++ b/server/startsh/admin_start.sh
@@ -2,8 +2,7 @@
 
 killall java
 
-nohup java -jar /usr/local/jars/jinkuai/jinkuai_admin.jar > /dev/null 2>&1 &
-nohup java -jar /usr/local/jars/jinkuai/jinkuai_web.jar > /dev/null 2>&1 &
+nohup java -jar /www/server/dmpay/diandongche_admin.jar > /dev/null 2>&1 &
 
-cd  /data/jars/lianhelihua/logs
-tail -f /data/jars/lianhelihua/logs/info.2025-05-19.1.log
\ No newline at end of file
+cd  /www/server/dmpay/logs
+tail -f /www/server/dmpay/logs/info.2025-05-19.1.log
\ No newline at end of file
diff --git a/web/pages.json b/web/pages.json
index 9a9dae8..7eb2248 100644
--- a/web/pages.json
+++ b/web/pages.json
@@ -3,7 +3,7 @@
 		{
 			"path": "pages/index/index",
 			"style": {
-				"navigationBarTitleText": "鐢靛姩杞︽敹娆�",
+				"navigationBarTitleText": "鏅虹铚�",
 				"navigationStyle": "custom"
 			}
 		},
@@ -17,7 +17,7 @@
 	],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
-		"navigationBarTitleText": "鐢靛姩杞︽敹娆�",
+		"navigationBarTitleText": "鏅虹铚�",
 		"navigationBarBackgroundColor": "#F8F8F8",
 		"backgroundColor": "#F8F8F8"
 	},
diff --git a/web/pages/index/index.vue b/web/pages/index/index.vue
index 3f023c0..b71fd03 100644
--- a/web/pages/index/index.vue
+++ b/web/pages/index/index.vue
@@ -1,5 +1,5 @@
 <template>
-	<view class="content">
+	<view class="content" v-if="validPath">
 		<view class="banner">
 			<image src="/static/banner.png" mode="widthFix"></image>
 		</view>
@@ -38,6 +38,10 @@
 		</view>
 		<view class="btn" @click="sendSave">鍘绘敮浠�</view>
 	</view>
+	<view class="box" v-else>
+		<image src="/static/ic_payfail.png" mode="widthFix" class="icon"></image> 
+		<view class="title" >璇蜂娇鐢ㄥ井淇℃垨鑰呮敮浠樺疂搴旂敤鎵爜鎵撳紑</view> 
+	</view>
 </template>
 
 <script>
@@ -46,6 +50,7 @@
 		data() {
 			return {
 				flag:'name',
+				validPath : true,
 				form: {
 					type: 0,
 					name: '',
@@ -59,9 +64,26 @@
 		},
 		mounted() {
 			this.loading=false
+			this.validPath = this.isWeChatBrowser() || this.isAlipayBrowser()
 			this.form.userId = this.fetchParams("userId",window.location.href)
 		},
 		methods: {
+			// 鍒ゆ柇鏄惁鍦ㄥ井淇℃祻瑙堝櫒涓墦寮�
+			isWeChatBrowser() {
+			  // #ifdef H5
+			  const userAgent = navigator.userAgent.toLowerCase();
+			  return userAgent.indexOf('micromessenger') !== -1;
+			  // #endif
+			  return false;
+			},
+			// 鍒ゆ柇鏄惁鍦ㄦ敮浠樺疂娴忚鍣ㄤ腑鎵撳紑
+			isAlipayBrowser() {
+			  // #ifdef H5
+			  const userAgent = navigator.userAgent.toLowerCase();
+			  return userAgent.indexOf('alipayclient') !== -1;
+			  // #endif
+			  return false;
+			},
 			toSuccess() {
 				uni.navigateTo({
 					url: '/pages/success/success'
@@ -78,7 +100,7 @@
 			},
 			async sendSave() {
 				if(this.loading){
-					return
+					// return
 				}
 				this.loading=true
 				var that = this
@@ -92,6 +114,13 @@
 				if(!this.form.phone){
 					uni.showToast({
 						'title': '璇疯緭鍏ユ墜鏈哄彿',icon:'none'
+					})
+					this.loading=false
+					return
+				}
+				if(this.form.phone.length != 11){
+					uni.showToast({
+						'title': '璇疯緭鍏ユ纭殑11浣嶆墜鏈哄彿',icon:'none'
 					})
 					this.loading=false
 					return
@@ -133,7 +162,7 @@
 					   demo_form.submit() 
 					   
 					// this.toSuccess()
-				}
+				} 
 				this.loading=false
 			},
 		}
@@ -141,6 +170,25 @@
 </script>
 
 <style lang="scss" scoped>
+	.box {
+		width: 100%;
+		padding: 0 40rpx;
+		box-sizing: border-box;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		flex-direction: column;
+		.icon {
+			width: 180rpx;
+			height: 180rpx;
+			margin-top: 54rpx;
+		}
+		.title { 
+			font-size: 32rpx;
+			color: #222222;
+			margin-top: 32rpx;
+		}
+	}
 	.content {
 		width: 100%;
 		padding: 20rpx 30rpx;
@@ -223,7 +271,7 @@
 						width: 100%;
 						font-weight: 400;
 						font-size: 28rpx;
-						color: #999999;
+						//color: #999999;
 						text-align: right;
 					}
 				}
diff --git a/web/pages/success/success.vue b/web/pages/success/success.vue
index 89a07fb..490a748 100644
--- a/web/pages/success/success.vue
+++ b/web/pages/success/success.vue
@@ -6,7 +6,8 @@
 			<image v-else src="/static/ic_paysuccess@2x.png" mode="widthFix" class="icon"></image>
 	
 		</template>
-		<view class="title">{{info.status==0?'绛夊緟鏀粯':(info.status==1?'鏀粯鎴愬姛':'鏀粯澶辫触')}}</view>
+		<view class="title" v-if="info.id">{{info.status==0?'绛夊緟鏀粯':(info.status==1?'鏀粯鎴愬姛':'鏀粯澶辫触')}}</view> 
+		<view class="title" v-if="!info.id">鏌ヨ涓�</view>
 		<view class="info">
 			<view class="info-item">
 				<view class="info-item-label">浠樻浜嬬敱</view>
diff --git a/web/unpackage/dist/build/web/index.html b/web/unpackage/dist/build/web/index.html
index fa1d40c..ff99d7f 100644
--- a/web/unpackage/dist/build/web/index.html
+++ b/web/unpackage/dist/build/web/index.html
@@ -1,2 +1,2 @@
 <!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><title>鏅虹铚�</title><script>var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
-            document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=/web/static/index.883130ca.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/web/static/js/chunk-vendors.b176ace3.js></script><script src=/web/static/js/index.a2491d9d.js></script></body></html>
\ No newline at end of file
+            document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=/web/static/index.883130ca.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/web/static/js/chunk-vendors.b176ace3.js></script><script src=/web/static/js/index.8a442d3d.js></script></body></html>
\ No newline at end of file
diff --git a/web/utils/config.js b/web/utils/config.js
index ca1d4c1..c61fdaf 100644
--- a/web/utils/config.js
+++ b/web/utils/config.js
@@ -1,5 +1,6 @@
 //export const baseUrl = 'http://localhost:11010/'
-export const baseUrl = 'http://t569e369.natappfree.cc/admin_interface/'
-export const app_url = 'https://atwl.ahzyssl.com/zhyq_h5/#/'
+//export const baseUrl = 'http://t569e369.natappfree.cc/admin_interface/'
+export const baseUrl = 'https://pay.smartbee.run/admin_interface/'
+export const app_url = 'https://pay.smartbee.run/web/#/'
 
  
\ No newline at end of file

--
Gitblit v1.9.3