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