From 6e78d2b1b00eceac3ee6222b713f749e21428f9a Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 30 十月 2023 09:09:07 +0800
Subject: [PATCH] Merge branch 'dev' of http://139.186.142.91:10010/r/productDev/parkBike into dev

---
 server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java       |   33 +++++
 admin/src/components/system/user/OperaUserWindow.vue                                       |    9 
 server/services/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java      |    9 +
 server/services/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java   |    5 
 admin/src/views/business/bikeLocation.vue                                                  |   33 ++++-
 admin/src/views/business/goodsorder.vue                                                    |    6 
 admin/src/components/business/billDetail.vue                                               |   12 +-
 server/services/src/main/java/com/doumee/service/business/SitesService.java                |    4 
 admin/src/api/business/bikeRepair.js                                                       |    2 
 admin/src/views/business/wxBillDetail.vue                                                  |   15 ++
 server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java |   11 +
 admin/src/views/business/memberRides.vue                                                   |    3 
 admin/src/views/business/bikeRetakeRecord.vue                                              |    3 
 admin/src/components/business/RepairDetailWindow.vue                                       |    4 
 admin/src/views/business/sites.vue                                                         |    8 
 admin/src/views/system/user.vue                                                            |   21 +--
 server/services/src/main/java/com/doumee/dao/business/web/response/BikeLogDTO.java         |    6 
 admin/.env.development                                                                     |    4 
 server/platform/src/main/java/com/doumee/config/shiro/ShiroRealm.java                      |    2 
 admin/src/components/business/OperaPriceConfigWindow.vue                                   |   47 ++++++-
 admin/src/views/business/bikeRepair.vue                                                    |    6 
 admin/src/views/business/sitesBike.vue                                                     |    6 
 admin/src/components/business/OperaSitesWindow.vue                                         |    4 
 admin/src/views/business/wxBill.vue                                                        |   31 +++-
 server/platform/src/main/java/com/doumee/task/ScheduleTool.java                            |   20 +++
 server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java                |    7 
 admin/src/views/business/backgroundRefund.vue                                              |   11 -
 admin/src/components/business/backGoodsorderWindow.vue                                     |   15 +
 server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderExportVO.java           |    2 
 server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java  |    9 +
 30 files changed, 246 insertions(+), 102 deletions(-)

diff --git a/admin/.env.development b/admin/.env.development
index bbc103c..12a9035 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -7,10 +7,10 @@
 
 #鐒︽澗鏈湴
 # http://192.168.0.36:10012/doc.html#/home
-VUE_APP_API_BASE_URL='http://192.168.0.188:10026'
+VUE_APP_API_BASE_URL='http://192.168.0.190:10026'
 
 # # 娴嬭瘯鏈嶅姟
 # VUE_APP_API_PREFIX='/bike_admin_api'
 
 # # 鍚庣鎺ュ彛鍦板潃锛歨ttps://dmtest.ahapp.net/bike_admin_api/doc.html
-# VUE_APP_API_BASE_URL='https://dmtest.ahapp.net/bike_admin_api'
+VUE_APP_API_BASE_URL='https://dmtest.ahapp.net/bike_admin_api'
diff --git a/admin/src/api/business/bikeRepair.js b/admin/src/api/business/bikeRepair.js
index 2a3f99f..1bf80c4 100644
--- a/admin/src/api/business/bikeRepair.js
+++ b/admin/src/api/business/bikeRepair.js
@@ -14,5 +14,5 @@
 
 // 淇敼
 export function getFileList (id) {
-  return request.post(`/business/bikeRepair/getFileList/${id}`)
+  return request.get(`/business/bikeRepair/getFileList/${id}`)
 }
diff --git a/admin/src/components/business/OperaPriceConfigWindow.vue b/admin/src/components/business/OperaPriceConfigWindow.vue
index 0015476..88b841f 100644
--- a/admin/src/components/business/OperaPriceConfigWindow.vue
+++ b/admin/src/components/business/OperaPriceConfigWindow.vue
@@ -11,7 +11,7 @@
       <el-form-item label="杞﹀瀷鍚嶇О" prop="bikeTypeName">
         {{ form.bikeTypeName }}
       </el-form-item>
-      <el-form-item label="宸ヤ綔鏃ヨ璐�">
+      <el-form-item label="宸ヤ綔鏃ヨ璐�" prop="base">
         <el-select v-model="form.baseType" @change="selectBaseType">
           <el-option
             v-for="item in priceType"
@@ -35,7 +35,7 @@
           </div>
         </div>
       </el-form-item>
-      <el-form-item label="鑺傚亣鏃ヨ璐�">
+      <el-form-item label="鑺傚亣鏃ヨ璐�" prop="holiday">
         <el-select v-model="form.holidayBaseType" @change="selectHolidayBaseType">
           <el-option
             v-for="item in priceType"
@@ -68,12 +68,45 @@
 import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
 import { updatePricingDetailById } from '@/api/business/pricingParam'
 // import { findList } from '@/api/business/roomTime'
-import { numRule } from '@/utils/form'
 export default {
   name: 'OperaPriceConfigWindow',
   extends: BaseOpera,
   components: { GlobalAlertWindow },
   data () {
+    const baseRule = (rule, value, callback) => {
+      if (this.form.baseType==1) {
+        if (!this.form.basePrice || this.form.basePrice<0) {
+          callback(new Error())
+        } else {
+          callback()
+        }
+      } else {
+        if (!this.form.basePrice || this.form.basePrice<0 || !this.form.baseTime || this.form.baseTime <0
+          || !this.form.unitPrice || this.form.unitPrice<0 || !this.form.unitTime || this.form.unitTime <0
+        ) {
+          callback(new Error())
+        } else {
+          callback()
+        }
+      }
+    }
+    const holidayRule = (rule, value, callback) => {
+      if (this.form.holidayBaseType==1) {
+        if (!this.form.holidayBasePrice || this.form.holidayBasePrice<0) {
+          callback(new Error())
+        } else {
+          callback()
+        }
+      } else {
+        if (!this.form.holidayBasePrice || this.form.holidayBasePrice<0 || !this.form.holidayBaseTime || this.form.holidayBaseTime <0
+          || !this.form.holidayBasePrice || this.form.holidayBasePrice<0 || !this.form.holidayUnitTime || this.form.holidayUnitTime <0
+        ) {
+          callback(new Error())
+        } else {
+          callback()
+        }
+      }
+    }
     return {
       // 琛ㄥ崟鏁版嵁
       form: {
@@ -99,11 +132,11 @@
       backInfoRequired: false,
       // 楠岃瘉瑙勫垯
       rules: {
-        duration: [
-         { required: true, validator: numRule, message: '璇疯緭鍏ヨ璐规椂闀�', tigger: 'blur' }
+        base: [
+         { required: true, validator: baseRule, message: '璇峰畬鍠勫伐浣滄棩璁′环淇℃伅', tigger: 'blur' }
         ],
-        backReason: [
-          { required: true, message: '璇烽�夋嫨璋冩暣鍘熷洜', tigger: 'change'},
+        holiday: [
+          { required: true, validator: holidayRule, message: '璇峰畬鍠勮妭鍋囨棩璁′环淇℃伅', tigger: 'blur'},
         ]
       },
       
diff --git a/admin/src/components/business/OperaSitesWindow.vue b/admin/src/components/business/OperaSitesWindow.vue
index 0c10fb9..a5655fe 100644
--- a/admin/src/components/business/OperaSitesWindow.vue
+++ b/admin/src/components/business/OperaSitesWindow.vue
@@ -13,12 +13,12 @@
       <el-form-item label="绔欑偣鍚嶇О" prop="name">
         <el-input v-model="form.name" placeholder="璇疯緭鍏ョ珯鐐瑰悕绉�" v-trim/>
       </el-form-item>
-      <el-form-item label="绔欑偣ip" prop="ip">
+      <!-- <el-form-item label="绔欑偣ip" prop="ip">
         <el-input v-model="form.ip" placeholder="璇疯緭鍏ョ珯鐐筰p鍦板潃" v-trim/>
       </el-form-item>
       <el-form-item label="绔欑偣绔彛鍙�" prop="port">
         <el-input v-model="form.port" placeholder="璇疯緭鍏ョ珯鐐圭鍙e彿" v-trim/>
-      </el-form-item>
+      </el-form-item> -->
       
       <!-- <el-form-item label="澶囨敞" prop="info">
         <el-input v-model="form.info" placeholder="璇疯緭鍏ュ娉�" v-trim/>
diff --git a/admin/src/components/business/RepairDetailWindow.vue b/admin/src/components/business/RepairDetailWindow.vue
index f0a1c6c..128f7b0 100644
--- a/admin/src/components/business/RepairDetailWindow.vue
+++ b/admin/src/components/business/RepairDetailWindow.vue
@@ -7,8 +7,8 @@
       </el-form-item>
       <el-form-item label="鍥剧墖/瑙嗛" prop="dealInfo">
         <el-image v-for="(url, index) in form.imgList" :key="index"
-          style="width: 100px; height: 100px; margin-right: 5px;" :src="url" fit="contain"
-          :prediv-src-list="form.imgList"></el-image>
+          style="width: 100px; height: 100px; margin-right: 5px;" :src="url" :initial-index="index" fit="contain"
+          :preview-src-list="form.imgList"></el-image>
       </el-form-item>
     </el-form>
     <div slot="footer">
diff --git a/admin/src/components/business/backGoodsorderWindow.vue b/admin/src/components/business/backGoodsorderWindow.vue
index cb98785..f2e6ce6 100644
--- a/admin/src/components/business/backGoodsorderWindow.vue
+++ b/admin/src/components/business/backGoodsorderWindow.vue
@@ -15,7 +15,7 @@
     <el-form :model="form" ref="form" :rules="rules" label-suffix="锛�">
       <el-form-item label="閫�娆鹃噾棰�" prop="money">
         <div style="display: flex;">
-          <el-input style="flex: 1;" v-model="form.money" placeholder="璇疯緭鍏ラ��娆鹃噾棰�" v-trim/>
+          <el-input style="flex: 1;" v-model="form.money" type="number" placeholder="璇疯緭鍏ラ��娆鹃噾棰�" v-trim/>
         </div>
       </el-form-item>
       <el-form-item label="閫�娆惧師鍥�" prop="reason">
@@ -23,7 +23,7 @@
           type="textarea"
           :autosize="{ minRows: 2, maxRows: 4}"
           v-model="form.reason"
-          placeholder="璇疯緭鍏ヨ皟鏁村娉�"
+          placeholder="璇疯緭鍏ヨ皟鏁村娉�1"
           v-trim
         />
       </el-form-item>
@@ -41,6 +41,13 @@
   extends: BaseOpera,
   components: { GlobalAlertWindow },
   data () {
+    const moneyRule = (rule, value, callback) => {
+      if (value <=0 ) {
+        callback(new Error('閫�娆鹃噾棰濆繀椤诲ぇ浜�0'))
+      } else {
+        callback()
+      }
+    }
     return {
       // 琛ㄥ崟鏁版嵁
       form: {
@@ -55,8 +62,8 @@
       },
       // 楠岃瘉瑙勫垯
       rules: {
-        duration: [
-         { required: true, validator: numRule, message: '璇疯緭鍏ラ��娆鹃噾棰�', tigger: 'blur' }
+        money: [
+         { required: true, validator: moneyRule, tigger: 'blur' }
         ]
       },
       
diff --git a/admin/src/components/business/billDetail.vue b/admin/src/components/business/billDetail.vue
index 1dcee63..7b9c974 100644
--- a/admin/src/components/business/billDetail.vue
+++ b/admin/src/components/business/billDetail.vue
@@ -10,13 +10,13 @@
         stripe
         border
       >
-        <el-table-column prop="memberOpenid" label="鐢ㄦ埛" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="preOrderid" label="璁㈠崟缂栧彿" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="openid" label="鐢ㄦ埛" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="code" label="璁㈠崟缂栧彿" min-width="100px" align="center"></el-table-column>
         <el-table-column prop="payDate" label="鏀粯鏃堕棿" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="money" label="鏀粯閲戦" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="refundDate" label="閫�娆炬椂闂�" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="refundMoney" label="閫�娆鹃噾棰�" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="closeDate" label="缁撶畻閲戦" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="money" label="鏀粯閲戦" width="80px" align="center"></el-table-column>
+        <el-table-column prop="refundDate" label="閫�娆炬椂闂�" width="150px" align="center"></el-table-column>
+        <el-table-column prop="refundMoney" label="閫�娆鹃噾棰�" width="80px" align="center"></el-table-column>
+        <el-table-column prop="closeMoney" label="缁撶畻閲戦" width="80px" align="center"></el-table-column>
       </el-table>
       <pagination
         @size-change="handleSizeChange"
diff --git a/admin/src/components/system/user/OperaUserWindow.vue b/admin/src/components/system/user/OperaUserWindow.vue
index 87277d0..f7275f1 100644
--- a/admin/src/components/system/user/OperaUserWindow.vue
+++ b/admin/src/components/system/user/OperaUserWindow.vue
@@ -4,9 +4,10 @@
     :title="title"
     :visible.sync="visible"
     :confirm-working="isWorking"
+    width="600px"
     @confirm="confirm"
   >
-    <el-form :model="form" ref="form" :rules="rules">
+    <el-form :model="form" ref="form" :rules="rules" label-width="100px" label-suffix="锛�">
       <!-- <el-form-item label="鐢ㄦ埛鍚�" prop="username" required>
         <el-input v-model="form.username" placeholder="璇疯緭鍏ョ敤鎴峰悕" v-trim maxlength="50"/>
       </el-form-item> -->
@@ -34,10 +35,10 @@
       <el-form-item label="宸ュ彿" prop="empNo">
         <el-input v-model="form.empNo" placeholder="璇疯緭鍏ュ伐鍙�" v-trim maxlength="50"/>
       </el-form-item>
-      <el-form-item label="鎵�灞為儴闂�" prop="departmentId">
+      <!-- <el-form-item label="鎵�灞為儴闂�" prop="departmentId">
         <DepartmentSelect v-model="form.departmentId" placeholder="璇烽�夋嫨鐢ㄦ埛鎵�灞為儴闂�" :inline="false" clearable/>
-      </el-form-item>
-      <div v-if="!form.id" style="color: red">鏂板缓鐢ㄦ埛鐨勯粯璁ゅ瘑鐮佷负鎵嬫満鍙峰悗鍏綅</div>
+      </el-form-item> -->
+      <div v-if="!form.id" style="color: red">鏂板缓鐢ㄦ埛鐨勮处鍙蜂负鎵嬫満鍙枫�侀粯璁ゅ瘑鐮佷负鎵嬫満鍙峰悗鍏綅</div>
       <!-- <el-form-item label="宀椾綅" prop="positionId">
         <PositionSelect v-model="form.positionIds" placeholder="璇烽�夋嫨鐢ㄦ埛鎵�鍦ㄥ矖浣�" :inline="false" :multiple="true" clearable/>
       </el-form-item>
diff --git a/admin/src/views/business/backgroundRefund.vue b/admin/src/views/business/backgroundRefund.vue
index 786037b..fe30b0c 100644
--- a/admin/src/views/business/backgroundRefund.vue
+++ b/admin/src/views/business/backgroundRefund.vue
@@ -43,9 +43,9 @@
             <div class="long-title-style">{{ row.openid }}</div>
           </template>
         </el-table-column>
-        <el-table-column prop="id" label="绯荤粺鍗曞彿" min-width="140px" align="center" show-overflow-tooltip>
+        <el-table-column prop="objId" label="绯荤粺鍗曞彿" min-width="140px" align="center" show-overflow-tooltip>
           <template slot-scope="{row}">
-            <div class="long-title-style">{{ row.id }}</div>
+            <div class="long-title-style">{{ row.objId }}</div>
           </template>
         </el-table-column>
         <!-- payOnlineOrderid  鏀粯鎶奸噾浜ゆ槗鍗曞彿 -->
@@ -57,14 +57,9 @@
           </template>
         </el-table-column>
         <el-table-column prop="canBalance" label="褰撳墠鍙��鍥炴娂閲�(鍏�)" min-width="140px" align="center">
-          <template slot-scope="{row}">
-            {{ (row.canBalance / 100).toFixed(2) }}
-          </template>
+          
         </el-table-column>
         <el-table-column prop="money" label="閫�鍥炴娂閲�(鍏�)" min-width="140px" align="center">
-          <template slot-scope="{row}">
-            {{ (row.money / 100).toFixed(2) }}
-          </template>
         </el-table-column>
         <el-table-column prop="createDate" label="鎿嶄綔鏃堕棿" min-width="140px" align="center"></el-table-column>
         <el-table-column prop="creatorName" label="鎿嶄綔浜�" min-width="100px" align="center"></el-table-column>
diff --git a/admin/src/views/business/bikeLocation.vue b/admin/src/views/business/bikeLocation.vue
index 35a4e74..0fd9a9b 100644
--- a/admin/src/views/business/bikeLocation.vue
+++ b/admin/src/views/business/bikeLocation.vue
@@ -2,11 +2,30 @@
   <TableLayout :permissions="['business:sites:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
     <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="绔欑偣缂栧彿" prop="code">
-        <el-input v-model="searchForm.code" placeholder="璇疯緭鍏ョ珯鐐圭紪鍙�" @keypress.enter.native="search"></el-input>
+      <el-form-item label="绔欑偣缂栧彿" prop="siteId">
+        <el-input v-model="searchForm.siteId" placeholder="璇疯緭鍏ョ珯鐐圭紪鍙�" @keypress.enter.native="search"></el-input>
       </el-form-item>
-      <el-form-item label="绔欑偣鍚嶇О" prop="name">
-        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ョ珯鐐瑰悕绉�" @keypress.enter.native="search"></el-input>
+      <el-form-item label="绔欑偣鍚嶇О" prop="siteName">
+        <el-input v-model="searchForm.siteName" placeholder="璇疯緭鍏ョ珯鐐瑰悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="閿佹鍣ㄥ彿" prop="lockId">
+        <el-input v-model="searchForm.lockId" placeholder="璇疯緭鍏ョ珯鐐瑰悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鏄惁鏈夎溅" prop="hasBike">
+        <el-select v-model="searchForm.hasBike" placeholder="璇烽�夋嫨">
+          <el-option
+            label="鍏ㄩ儴"
+            :value="0">
+          </el-option>
+          <el-option
+            label="鏃犺溅"
+            :value="1">
+          </el-option>
+          <el-option
+            label="鏈夎溅"
+            :value="2">
+          </el-option>
+        </el-select>
       </el-form-item>
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
@@ -51,8 +70,10 @@
     return {
       // 鎼滅储
       searchForm: {
-        name: '',
-        code: '',
+        siteName: '',
+        siteId: '',
+        lockId: '',
+        hasBike: 0,
       }
     }
   },
diff --git a/admin/src/views/business/bikeRepair.vue b/admin/src/views/business/bikeRepair.vue
index 28685f0..2323ce0 100644
--- a/admin/src/views/business/bikeRepair.vue
+++ b/admin/src/views/business/bikeRepair.vue
@@ -2,8 +2,8 @@
   <TableLayout :permissions="['business:bikerepair:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
     <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="鐢ㄦ埛" prop="creator">
-        <el-input v-model="searchForm.creator" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
+      <el-form-item label="鐢ㄦ埛" prop="openid">
+        <el-input v-model="searchForm.openid" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
       </el-form-item>
       <el-form-item label="杞﹁締缂栫爜" prop="bikeCode">
         <el-input v-model="searchForm.bikeCode" placeholder="璇疯緭鍏ヨ溅杈嗙紪鍙�" @keypress.enter.native="search"></el-input>
@@ -112,7 +112,7 @@
       searchForm: {
         id: '',
         createDate: '',
-        creator: '',
+        openid: '',
         editDate: '',
         editor: '',
         isdeleted: '',
diff --git a/admin/src/views/business/bikeRetakeRecord.vue b/admin/src/views/business/bikeRetakeRecord.vue
index 0706ce2..bcee59b 100644
--- a/admin/src/views/business/bikeRetakeRecord.vue
+++ b/admin/src/views/business/bikeRetakeRecord.vue
@@ -116,7 +116,7 @@
       searchForm: {
         id: '',
         createDate: '',
-        creator: '',
+        hasBack: '',
         editDate: '',
         editor: '',
         isdeleted: '',
@@ -165,6 +165,7 @@
       'field.main': 'id'
     })
     this.searchForm.startDate = formatDateTime(new Date(), 'yyyy-MM-dd') + ' 00:00:00'
+    this.searchForm.endDate = formatDateTime(new Date(), 'yyyy-MM-dd') + ' 23:59:59'
     this.search()
   },
   methods: {
diff --git a/admin/src/views/business/goodsorder.vue b/admin/src/views/business/goodsorder.vue
index 0cf5dd2..ef5d8ef 100644
--- a/admin/src/views/business/goodsorder.vue
+++ b/admin/src/views/business/goodsorder.vue
@@ -87,8 +87,8 @@
         >
           <template slot-scope="{row}">
             <el-button type="text" @click="showDetail(row)">璁㈠崟璇︽儏</el-button>
-            <el-button type="text" @click="statement(row)" v-if="row.status != 4" style="color: red">缁撶畻</el-button>
-            <el-button type="text" @click="refenMoney(row)" v-else>閫�娆�</el-button>
+            <el-button type="text" @click="statement(row)" v-if="row.status != 4 && (row.memberRidesStatus>1 || !row.memberRidesStatus)" style="color: red">缁撶畻</el-button>
+            <el-button type="text" @click="refenMoney(row)"  v-if="row.status == 4">閫�娆�</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -184,7 +184,7 @@
       
     },
     statement({id}) {
-      this.$dialog.messageWaring('褰撳墠璁㈠崟鍙兘鏈夋湭瀹屾垚鐨勯獞琛岋紝纭畾寮哄埗缁撶畻锛�', '寮哄埗缁撶畻')
+      this.$dialog.messageWaring('纭畾寮哄埗缁撶畻鐮侊紵缁撶畻鍚庤鍗曡嚜鍔ㄥ畬鎴�', '寮哄埗缁撶畻')
         .then(() => {
           closerGoodsorder(id)
             .then(() => {
diff --git a/admin/src/views/business/memberRides.vue b/admin/src/views/business/memberRides.vue
index b29a13a..6562f71 100644
--- a/admin/src/views/business/memberRides.vue
+++ b/admin/src/views/business/memberRides.vue
@@ -13,7 +13,7 @@
         <el-select v-model="searchForm.closeStatus" placeholder="璇烽�夋嫨">
           <el-option
             label="鏈粨绠�"
-            :value="1">
+            :value="0">
           </el-option>
           <el-option
             label="宸茬粨绠�"
@@ -166,6 +166,7 @@
       'field.main': 'id'
     })
     this.searchForm.startDate = formatDateTime(new Date(), 'yyyy-MM-dd') + ' 00:00:00'
+    this.searchForm.endDate = formatDateTime(new Date(), 'yyyy-MM-dd') + ' 23:59:59'
     this.search()
   },
   methods: {
diff --git a/admin/src/views/business/sites.vue b/admin/src/views/business/sites.vue
index 5b16c16..3a4770e 100644
--- a/admin/src/views/business/sites.vue
+++ b/admin/src/views/business/sites.vue
@@ -51,7 +51,7 @@
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
       <ul class="toolbar" v-permissions="['business:sites:create']">
-        <li><el-button type="primary" @click="$refs.operaSitesWindow.open('鏂板缓绔欑偣淇℃伅琛�')" icon="el-icon-plus" v-permissions="['business:sites:create']">鏂板缓</el-button></li>
+        <li><el-button type="primary" @click="$refs.operaSitesWindow.open('鏂板缓绔欑偣')" icon="el-icon-plus" v-permissions="['business:sites:create']">鏂板缓</el-button></li>
       </ul>
       <el-table
         v-loading="isWorking.search"
@@ -61,8 +61,8 @@
       >
         <el-table-column prop="code" label="绔欑偣缂栧彿" min-width="100px" align="center"></el-table-column>
         <el-table-column prop="name" label="绔欑偣鍚嶇О" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="ip" label="绔欑偣ip" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="port" label="绔彛鍙�" min-width="100px" align="center"></el-table-column>
+        <!-- <el-table-column prop="ip" label="绔欑偣ip" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="port" label="绔彛鍙�" min-width="100px" align="center"></el-table-column> -->
         <el-table-column prop="editDate" label="鏈�鍚庨�氳鏃堕棿" min-width="100px" align="center"></el-table-column>
         <el-table-column prop="status" label="鐘舵��" min-width="100px" align="center">
           <template slot-scope="{row}">
@@ -85,7 +85,7 @@
           fixed="right"
         >
           <template slot-scope="{row}">
-            <el-button type="text" @click="$refs.operaSitesWindow.open('缂栬緫绔欑偣淇℃伅琛�', row)" icon="el-icon-edit" v-permissions="['business:sites:update']">缂栬緫</el-button>
+            <el-button type="text" @click="$refs.operaSitesWindow.open('缂栬緫绔欑偣', row)" icon="el-icon-edit" v-permissions="['business:sites:update']">缂栬緫</el-button>
             <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:sites:delete']">鍒犻櫎</el-button>
           </template>
         </el-table-column>
diff --git a/admin/src/views/business/sitesBike.vue b/admin/src/views/business/sitesBike.vue
index 5fa4e26..dd19e08 100644
--- a/admin/src/views/business/sitesBike.vue
+++ b/admin/src/views/business/sitesBike.vue
@@ -23,9 +23,9 @@
       >
         <el-table-column prop="code" label="绔欑偣缂栧彿" min-width="100px" align="center"></el-table-column>
         <el-table-column prop="name" label="绔欑偣鍚嶇О" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="lockNum" label="閿佸ご鏁伴噺" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="ip" label="鍦ㄦ灦杞︽暟閲�" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="ip" label="婊℃灦鐜�" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="allLockNum" label="閿佸ご鏁伴噺" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="bikeCount" label="鍦ㄦ灦杞︽暟閲�" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="rate" label="婊℃灦鐜�" min-width="100px" align="center"></el-table-column>
         <el-table-column prop="editDate" label="鏈�鍚庨�氳鏃堕棿" min-width="100px" align="center"></el-table-column>
       </el-table>
       <pagination
diff --git a/admin/src/views/business/wxBill.vue b/admin/src/views/business/wxBill.vue
index 983a1ca..61198a1 100644
--- a/admin/src/views/business/wxBill.vue
+++ b/admin/src/views/business/wxBill.vue
@@ -9,6 +9,7 @@
           range-separator="鑷�"
           start-placeholder="寮�濮嬫棩鏈�"
           end-placeholder="缁撴潫鏃ユ湡"
+          :picker-options="pickerOptions"
           format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"
           @change="selectDate"
         ></el-date-picker>
@@ -59,20 +60,21 @@
         :data="tableData.list"
         stripe
         border
+        show-summary
       >
-        <el-table-column prop="createDate" label="鏃ユ湡" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="id" label="鏃ユ湡" min-width="100px" align="center"></el-table-column>
         <el-table-column prop="sumBill" label="鏀舵绗旀暟" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="sumTotalFee" label="鏀舵閲戦" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="sumCmmsAmt" label="鏀舵鎵嬬画璐�" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="sumTotalFee" label="鏀舵閲戦(鍏�)" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="sumCmmsAmt" label="鏀舵鎵嬬画璐�(鍏�)" min-width="100px" align="center"></el-table-column>
         <el-table-column prop="sumRefundBill" label="閫�娆剧瑪鏁�" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="sumRefundFee" label="閫�娆鹃噾棰�" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="sumRefundCmmsAmt" label="閫�娆炬墜缁垂" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="sumRefundFee" label="閫�娆鹃噾棰�(鍏�)" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="sumRefundCmmsAmt" label="閫�娆炬墜缁垂(鍏�)" min-width="100px" align="center"></el-table-column>
 
         <!-- <el-table-column prop="sumSuccessFee" label="搴旂粨璁㈠崟鎬婚噾棰�" min-width="100px" align="center"></el-table-column>
         <el-table-column prop="sumCouponRefundFee" label="鍏呭�煎埜閫�娆炬�婚噾棰�" min-width="100px" align="center"></el-table-column>
         <el-table-column prop="sumApplyRefundFee" label="鐢宠閫�娆炬�婚噾棰�" min-width="100px" align="center"></el-table-column> -->
-        <el-table-column prop="total" label="缁撶畻閲戦" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="bikeFee" label="鑷杞︽敹鍏�" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="total" label="缁撶畻閲戦(鍏�)" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="bikeFee" label="鑷杞︽敹鍏�(鍏�)" min-width="100px" align="center"></el-table-column>
       </el-table>
       <pagination
         @size-change="handleSizeChange"
@@ -95,7 +97,7 @@
   components: { TableLayout, Pagination },
   data () {
     return {
-      value1: [new Date(), new Date()],
+      value1: [],
       // 鎼滅储
       searchForm: {
         endDate: '',
@@ -103,7 +105,8 @@
       },
       sumData: {
 
-      }
+      },
+      pickerOptions: {}
     }
   },
   created () {
@@ -113,7 +116,15 @@
       'field.id': 'id',
       'field.main': 'id'
     })
-    this.searchForm.startDate = formatDateTime(new Date(), 'yyyy-MM-dd') + ' 00:00:00'
+    this.pickerOptions.disabledDate = (time) => {
+	    // 涓�澶�
+      let tempTime = 3600 * 1000 * 24 
+      return time.getTime() > new Date() - tempTime
+    }
+    // let tempTime = new Date().getTime() - 3600 * 1000 * 24 
+    // this.searchForm.startDate = formatDateTime(new Date(tempTime), 'yyyy-MM-dd') + ' 00:00:00'
+    // this.searchForm.endDate = formatDateTime(new Date(tempTime), 'yyyy-MM-dd') + ' 23:59:59'
+    // this.value1 = [this.searchForm.startDate, this.searchForm.endDate]
     this.search()
   },
   methods: {
diff --git a/admin/src/views/business/wxBillDetail.vue b/admin/src/views/business/wxBillDetail.vue
index f152f2a..121ea0e 100644
--- a/admin/src/views/business/wxBillDetail.vue
+++ b/admin/src/views/business/wxBillDetail.vue
@@ -9,6 +9,7 @@
           range-separator="鑷�"
           start-placeholder="寮�濮嬫棩鏈�"
           end-placeholder="缁撴潫鏃ユ湡"
+          :picker-options="pickerOptions"
           format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"
           @change="selectDate"
         ></el-date-picker>
@@ -73,12 +74,13 @@
   components: { TableLayout, BillDetailWindow },
   data () {
     return {
-      value1: [new Date(), new Date()],
+      value1: [],
       // 鎼滅储
       searchForm: {
         endDate: '',
         startDate: '',
       },
+      pickerOptions: {}
     }
   },
   created () {
@@ -88,7 +90,16 @@
       'field.id': 'id',
       'field.main': 'id'
     })
-    this.searchForm.startDate = formatDateTime(new Date(), 'yyyy-MM-dd') + ' 00:00:00'
+    this.pickerOptions.disabledDate = (time) => {
+	    // 涓�澶�
+      let tempTime = 3600 * 1000 * 24 
+      return time.getTime() > new Date() - tempTime
+    }
+    // let tempTime = new Date().getTime() - 3600 * 1000 * 24 
+    // this.searchForm.startDate = formatDateTime(new Date(tempTime), 'yyyy-MM-dd') + ' 00:00:00'
+    // this.searchForm.endDate = formatDateTime(new Date(tempTime), 'yyyy-MM-dd') + ' 23:59:59'
+    // this.value1 = [this.searchForm.startDate, this.searchForm.endDate]
+
     this.search()
   },
   methods: {
diff --git a/admin/src/views/system/user.vue b/admin/src/views/system/user.vue
index 82b7c6f..f19448d 100644
--- a/admin/src/views/system/user.vue
+++ b/admin/src/views/system/user.vue
@@ -44,15 +44,9 @@
     </el-form>
     <!-- 琛ㄦ牸鍜屽垎椤� -->
     <template v-slot:table-wrap>
-      <div style="display: flex;">
-        <div style="width: 15%; border-right: 1px solid #ececec;">
-          <Tree
-            :list="data"
-            :defaultProps="defaultProps"
-            @callback="callback"
-          ></Tree>
-        </div>
-        <div style="width: 84%; margin-left: 1%;">
+      
+        
+        <div>
           <div class="zdy_box">
             <div style="display: flex; align-items: center;">
               <span>{{name ? name : '鍏ㄩ儴'}} 锛坽{tableData.pagination.total}}锛�</span>
@@ -68,7 +62,7 @@
                 />
               </li>
               <li v-permissions="['system:user:create']"><el-button type="primary" @click="$refs.operaUserWindow.open('鏂板缓鐢ㄦ埛')">娣诲姞鐢ㄦ埛</el-button></li>
-              <li v-permissions="['system:user:create']"><el-button type="primary" @click="changeZZ">鏇存崲缁勭粐</el-button></li>
+              <!-- <li v-permissions="['system:user:create']"><el-button type="primary" @click="changeZZ">鏇存崲缁勭粐</el-button></li> -->
               <li v-permissions="['system:user:delete']"><el-button @click="deleteByIdInBatch">鍒犻櫎</el-button></li>
             </ul>
           </div>
@@ -137,7 +131,6 @@
             :pagination="tableData.pagination"
           ></pagination>
         </div>
-      </div>
     </template>
     <!-- 鏂板缓/淇敼 -->
     <OperaUserWindow ref="operaUserWindow" @success="handlePageChange(tableData.pagination.pageIndex)"/>
@@ -275,7 +268,11 @@
         id: item.id,
         status: item.status
       }).then(res => {
-        this.search()
+        
+      }).catch(e => {
+        this.$tip.apiFailed(e)
+      }).finally(() => {
+        this.handlePageChange()
       })
     },
     resPwd() {
diff --git a/server/platform/src/main/java/com/doumee/config/shiro/ShiroRealm.java b/server/platform/src/main/java/com/doumee/config/shiro/ShiroRealm.java
index 94a7e98..a5bb579 100644
--- a/server/platform/src/main/java/com/doumee/config/shiro/ShiroRealm.java
+++ b/server/platform/src/main/java/com/doumee/config/shiro/ShiroRealm.java
@@ -84,7 +84,7 @@
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璐﹀彿鎴栧瘑鐮佷笉姝g‘锛�");
         }
         if(Objects.equals(user.getStatus(),Constants.ONE)){
-            throw new AuthenticationException("鐢ㄦ埛宸茶绂佺敤锛岃鑱旂郴绠$悊鍛�");
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐧诲綍璐﹀彿宸茬鐢紝璇疯仈绯荤鐞嗗憳锛�");
         }
         // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
         List<SystemRole> roles = systemRoleService.findByUserId(user.getId());
diff --git a/server/platform/src/main/java/com/doumee/task/ScheduleTool.java b/server/platform/src/main/java/com/doumee/task/ScheduleTool.java
index 44151a4..f9fa9ea 100644
--- a/server/platform/src/main/java/com/doumee/task/ScheduleTool.java
+++ b/server/platform/src/main/java/com/doumee/task/ScheduleTool.java
@@ -8,6 +8,7 @@
 import com.doumee.dao.business.model.Goodsorder;
 import com.doumee.service.business.GoodsorderService;
 import com.doumee.service.business.MemberRidesService;
+import com.doumee.service.business.SitesService;
 import com.doumee.service.business.WxBillService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -41,9 +42,12 @@
     @Autowired
     private GoodsorderService goodsorderService;
 
-
     @Autowired
     private MemberRidesService memberRidesService;
+
+    @Autowired
+    private SitesService sitesService;
+
     /**
      * @throws Exception
      */
@@ -76,6 +80,18 @@
         log.info("=====================寮�濮嬫瘡澶╄嚜鍔ㄧ粨绠�=======================");
         memberRidesService.autoRefreshLockStatus();
         log.info("=====================缁撴潫姣忓ぉ鑷姩缁撶畻=======================");
-
     }
+
+
+    /**
+     * 绔欑偣杞﹁締婊℃灦鐜囬璀�
+     * @throws Exception
+     */
+    @Scheduled(fixedDelay = 1000L * 60L * 3L)
+    public void siteReserves() throws Exception {
+        log.info("=====================寮�濮� 绔欑偣杞﹁締婊℃灦鐜囬璀�=======================");
+        sitesService.siteReservesNotice();;
+        log.info("=====================缁撴潫 绔欑偣杞﹁締婊℃灦鐜囬璀�=======================");
+    }
+
 }
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java b/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java
index 6482088..3fd1618 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java
@@ -47,7 +47,6 @@
     private Integer isdeleted;
 
     @ApiModelProperty(value = "澶囨敞")
-    @ExcelColumn(name="澶囨敞")
     private String info;
 
     @ApiModelProperty(value = "璁㈠崟缂栫爜")
@@ -80,7 +79,7 @@
     private Integer payWay;
 
     @ApiModelProperty(value = "鏀粯鏃堕棿")
-    @ExcelColumn(name="浜ゆ娂閲戞椂闂�",index = 5,width = 10,align = HorizontalAlignment.CENTER)
+    @ExcelColumn(name="浜ゆ娂閲戞椂闂�",index = 5,width = 10,align = HorizontalAlignment.CENTER,dateFormat = "yyyy-MM-dd HH:mm:ss" )
     private Date payDate;
 
     @ApiModelProperty(value = "浜ゆ槗绫诲瀷 0绉熻溅鎶奸噾")
@@ -94,7 +93,7 @@
     private String closeId;
 
     @ApiModelProperty(value = "缁撶畻鏃堕棿")
-    @ExcelColumn(name="缁撶畻鏃堕棿",index = 8,width = 10,align = HorizontalAlignment.CENTER)
+    @ExcelColumn(name="缁撶畻鏃堕棿",index = 8,width = 10,align = HorizontalAlignment.CENTER,dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date closeDate;
     @ApiModelProperty(value = "缁撶畻澶囨敞")
     private String closeInfo;
@@ -129,7 +128,7 @@
 
     @ApiModelProperty(value = "鏈�鍚庨��娆炬椂闂�")
     @TableField(exist = false)
-    @ExcelColumn(name="閫�娆剧粨绠楁椂闂�",index = 9,width = 10,align = HorizontalAlignment.CENTER)
+    @ExcelColumn(name="閫�娆剧粨绠楁椂闂�",index = 9,width = 10,align = HorizontalAlignment.CENTER,dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date refundDate;
 
     @ApiModelProperty(value = "鏈�杩戦獞琛岀姸鎬�")
diff --git a/server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderExportVO.java b/server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderExportVO.java
index 12f64b8..699add8 100644
--- a/server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderExportVO.java
+++ b/server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderExportVO.java
@@ -46,7 +46,7 @@
     private BigDecimal closeMoney;
 
     @ApiModelProperty(value = "缁撶畻鏃堕棿")
-    @ExcelColumn(name="缁撶畻鏃堕棿",width = 10,index = 6,align = HorizontalAlignment.CENTER,dateFormat = "yyyy-MM-dd HH:mm:ss")
+//    @ExcelColumn(name="缁撶畻鏃堕棿",width = 10,index = 6,align = HorizontalAlignment.CENTER,dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date closeDate;
 
     @ApiModelProperty(value = "閫�娆鹃噾棰�(鍒嗭級")
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/response/BikeLogDTO.java b/server/services/src/main/java/com/doumee/dao/business/web/response/BikeLogDTO.java
index 513d3ec..ed5a011 100644
--- a/server/services/src/main/java/com/doumee/dao/business/web/response/BikeLogDTO.java
+++ b/server/services/src/main/java/com/doumee/dao/business/web/response/BikeLogDTO.java
@@ -37,7 +37,7 @@
     private String rentLockId;
 
     @ApiModelProperty(value = "楠戣鏃堕暱")
-    @ExcelColumn(name="鍊熷嚭鏃堕暱",index = 8,width = 10,align = HorizontalAlignment.CENTER)
+    @ExcelColumn(name="鍊熷嚭鏃堕暱(鍒�)",index = 8,width = 10,align = HorizontalAlignment.CENTER)
     private Integer rideTime;
     @ApiModelProperty(value = "璁¤垂鏃堕暱")
 //    @ExcelColumn(name="璁¤垂鏃堕暱",index = 8,width = 10,align = HorizontalAlignment.CENTER)
@@ -60,10 +60,10 @@
     private Date backDate;
 
     @ApiModelProperty(value = "鐘舵�� 0璇锋眰寮�閿佷腑 1楠戣涓� 2宸茶繕杞�  3寮�閿佸け璐�")
-    @ExcelColumn(name="鐘舵�� ", valueMapping = "0=璇锋眰寮�閿佷腑;1=楠戣涓�;2=宸茶繕杞�;3=寮�閿佸け璐�;" ,width = 10,align = HorizontalAlignment.CENTER)
+//    @ExcelColumn(name="鐘舵�� ", valueMapping = "0=璇锋眰寮�閿佷腑;1=楠戣涓�;2=宸茶繕杞�;3=寮�閿佸け璐�;" ,width = 10,align = HorizontalAlignment.CENTER)
     private Integer status;
 
     @ApiModelProperty(value = "缁撶畻鐘舵��")
-    @ExcelColumn(name="缁撶畻鐘舵�� ", valueMapping = "0=鏈粨绠�;1=宸茬粨绠�;" ,width = 10,align = HorizontalAlignment.CENTER)
+//    @ExcelColumn(name="缁撶畻鐘舵�� ", valueMapping = "0=鏈粨绠�;1=宸茬粨绠�;" ,width = 10,align = HorizontalAlignment.CENTER)
     private Integer closeStatus;
 }
diff --git a/server/services/src/main/java/com/doumee/service/business/SitesService.java b/server/services/src/main/java/com/doumee/service/business/SitesService.java
index 20d0712..cb77062 100644
--- a/server/services/src/main/java/com/doumee/service/business/SitesService.java
+++ b/server/services/src/main/java/com/doumee/service/business/SitesService.java
@@ -103,10 +103,8 @@
 
     /**
      * 绔欑偣棰勮
-     * @param siteId
-     * @throws Exception
      */
-    void siteReservesNotice(String siteId) throws Exception;
+    void siteReservesNotice()  throws Exception;
 
 
     /**
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index 189e8c6..b1737da 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -520,6 +520,7 @@
 
         MPJLambdaWrapper<MemberRides> wrapper = new MPJLambdaWrapper<>();
         wrapper.eq(MemberRides::getOrdreId,id);
+        wrapper.ne(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.LOCKING_DEFEAT.getKey());
         wrapper.selectAll(MemberRides.class).selectAs(BaseParam::getName, MemberRides::getParamName);
         wrapper.leftJoin(BaseParam.class, BaseParam::getId, MemberRides::getParamId);
         wrapper.orderByDesc(BaseParam::getSortnum);
@@ -634,8 +635,12 @@
                 }
             }
         QueryWrapper<Refund> queryWrapper2 = new QueryWrapper<>();
-        queryWrapper2.lambda().ge(param.getStartDate() !=null,Refund::getDoneDate,Utils.Date.getStart(param.getStartDate()));
-        queryWrapper2.lambda().le(param.getEndDate() !=null,Refund::getDoneDate,Utils.Date.getEnd(param.getEndDate()));
+        if(Objects.nonNull(param.getStartDate())) {
+            queryWrapper2.lambda().ge(Refund::getDoneDate, Utils.Date.getStart(param.getStartDate()));
+        }
+        if(Objects.nonNull(param.getEndDate())) {
+            queryWrapper2.lambda().le(Refund::getDoneDate, Utils.Date.getEnd(param.getEndDate()));
+        }
         queryWrapper2.lambda().eq(Refund::getIsdeleted, Constants.ZERO);
         queryWrapper2.select( "count(id) as count_num"
                 ,"sum(money) as money" );
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
index cb690aa..7fe93bc 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
@@ -189,6 +189,15 @@
     public PageData<BikeLogDTO> findBikeLog(PageWrap<MemberRidesQuery> pageWrap) {
         IPage<MemberRides> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         MPJLambdaWrapper<MemberRides> queryWrapper = initQueryParamByModel(pageWrap.getModel());
+        MemberRidesQuery model = pageWrap.getModel();
+        //宸茶繕杞�
+        if (Objects.nonNull(model.getHasBack()) && model.getHasBack()){
+            queryWrapper.eq(MemberRides::getStatus,Constants.TWO);
+        }
+        //鏈綊杩樼殑
+        if (Objects.nonNull(model.getHasBack()) && !model.getHasBack()){
+            queryWrapper.eq(MemberRides::getStatus,Constants.ONE);
+        }
         IPage<BikeLogDTO> bikeLogDTOIPage = memberRidesJoinMapper.selectJoinPage(page, BikeLogDTO.class, queryWrapper);
         initBikeLogObj(bikeLogDTOIPage.getRecords());
         return PageData.from(bikeLogDTOIPage);
@@ -221,7 +230,7 @@
             queryWrapper.ge(MemberRides::getRentDate, Utils.Date.getStart(model.getStartDate()));
         }
         if (Objects.nonNull(model.getEndDate())) {
-            queryWrapper.le(MemberRides::getRentDate, Utils.Date.getStart(model.getEndDate()));
+            queryWrapper.le(MemberRides::getRentDate, Utils.Date.getEnd(model.getEndDate()));
         }
         queryWrapper.eq(model.getCloseStatus()!=null,MemberRides::getCloseStatus, model.getCloseStatus());
         queryWrapper.eq(model.getStatus()!=null,MemberRides::getStatus, model.getStatus());
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java
index be2807e..2cbe6d2 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java
@@ -109,8 +109,13 @@
         queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getCreatorName())
                 ,SystemUser::getRealname
                 ,pageWrap.getModel().getCreatorName());
-
-        return PageData.from(refundJoinMapper.selectJoinPage(page, Refund.class,queryWrapper));
+        IPage<Refund> refundIPage = refundJoinMapper.selectJoinPage(page, Refund.class, queryWrapper);
+        if (!CollectionUtils.isEmpty(refundIPage.getRecords())){
+            refundIPage.getRecords().forEach(s->{
+                    s.setMoney(Constants.translateMoney(s.getMoney()));
+            });
+        }
+        return PageData.from(refundIPage);
     }
     @Override
     public List<RefundPlatExportVO>  findPlatExportPage( Refund pageWrap) {
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java
index 804bfcd..97c7d10 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java
@@ -30,6 +30,7 @@
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -235,7 +236,37 @@
     }
 
     @Override
-    public void siteReservesNotice(String siteId) throws Exception {
+    public void siteReservesNotice()  throws Exception{
+        QueryWrapper<Sites> queryWrapper = new QueryWrapper<>();
+        queryWrapper.select(" *, " +
+                " (select count(r.id) from locks r where r.site_id = sites.id) as all_lock_num ," +
+                "(select count(l.bike_code) from locks l where l.site_id = sites.id and l.bike_code IS NOT NULL and l.bike_code !='' ) as bikeCount");
+        queryWrapper.lambda().eq(Sites::getStatus,Constants.ZERO);
+        queryWrapper.lambda().eq(Sites::getIsdeleted,Constants.ZERO);
+        queryWrapper.lambda().orderByAsc(Sites::getCode);
+        List<Sites> sitesList = sitesMapper.selectList(queryWrapper);
+        if (!CollectionUtils.isEmpty(sitesList)){
+                for (Sites s:sitesList) {
+                    if(Constants.formatIntegerNum(s.getAllLockNum())<=Constants.ZERO){
+                        continue;
+                    }
+                    BigDecimal warnMin = new BigDecimal(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.WARN_MIN).getCode());
+                    BigDecimal warnMax = new BigDecimal(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.WARN_MAX).getCode());
+                    BigDecimal rata = new BigDecimal(s.getBikeCount()).divide(new BigDecimal(s.getAllLockNum()),2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100L));
+                    if(rata.compareTo(warnMax)>Constants.ZERO){
+                        //鍙戦�侀拤閽夐�氱煡
+                        DingDingNotice.reservesNotice(StringUtils.isBlank(s.getName())?s.getId() + " - 鏈煡" :s.getId() + " - " + s.getName(),
+                                systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_URL).getCode(),
+                                systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_SECRET).getCode(),Constants.ZERO,warnMax);
+                    }else if(rata.compareTo(warnMin)<Constants.ZERO){
+                        //鍙戦�侀拤閽夐�氱煡
+                        DingDingNotice.reservesNotice(StringUtils.isBlank(s.getName())?s.getId() + " - 鏈煡" :s.getId() + " - " + s.getName(),
+                                systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_URL).getCode(),
+                                systemDictDataBiz.queryByCode(Constants.DINGDING,Constants.DINGDING_SECRET).getCode(),Constants.ONE,warnMin);
+                    }
+                }
+        }
+
 
     }
 }
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 2c509ff..18b2ecc 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
@@ -120,7 +120,10 @@
             loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage());
             loginLog.setSuccess(Constants.ONE);
             systemLoginLogService.create(loginLog);
-            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(),e.getCause().getMessage());
+            if (e.getCause() instanceof BusinessException) {
+                throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(), e.getCause().getMessage());
+            }
+            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(), "鎻愮ず瀵逛笉璧凤紝璐﹀彿鎴栧瘑鐮侀敊璇紒");
         }
     }
 

--
Gitblit v1.9.3