From c2d3591648b215ab29fc14cab1c747ba58798412 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 16 七月 2025 10:10:39 +0800
Subject: [PATCH] 前端
---
admin/src/components/business/OperaOrderDetailWindow.vue | 336 +++++++++++++++++++++++++++++++++++++
admin/src/layouts/TableLayout.vue | 10 +
server/services/src/main/java/com/doumee/core/utils/huaweiOBS/ObsUtil.java | 8
admin/src/api/business/orders.js | 14 +
admin/src/views/business/orders.vue | 70 +++++--
admin/src/components/business/orderProgress.vue | 57 ++++++
server/services/src/main/java/com/doumee/dao/business/model/Orders.java | 2
server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java | 14 +
8 files changed, 480 insertions(+), 31 deletions(-)
diff --git a/admin/src/api/business/orders.js b/admin/src/api/business/orders.js
index b35da85..4d24457 100644
--- a/admin/src/api/business/orders.js
+++ b/admin/src/api/business/orders.js
@@ -11,10 +11,20 @@
trim: true
})
}
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+ return request.post('/business/orders/exportExcel', data, {
+ download: true,
+ trim: true
+ })
+}
// 鍒涘缓
export function create (data) {
return request.post('/business/orders/create', data)
+}
+export function cancel (id) {
+ return request.get(`/business/orders/cancel?id=${id}`)
}
// 淇敼
@@ -26,6 +36,10 @@
export function deleteById (id) {
return request.get(`/business/orders/delete/${id}`)
}
+// 鍒犻櫎
+export function getById (id) {
+ return request.get(`/business/orders/${id}`)
+}
// 鎵归噺鍒犻櫎
export function deleteByIdInBatch (ids) {
diff --git a/admin/src/components/business/OperaOrderDetailWindow.vue b/admin/src/components/business/OperaOrderDetailWindow.vue
new file mode 100644
index 0000000..36eb0f9
--- /dev/null
+++ b/admin/src/components/business/OperaOrderDetailWindow.vue
@@ -0,0 +1,336 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ :visible.sync="visible"
+ :withFooter="false"
+ width="calc(100% - 250px)"
+ :confirm-working="isWorking"
+ @close="close"
+ @confirm="confirm">
+ <div class="main">
+ <div class="renzheng" >
+ <div class="info" >
+ <span class="m10">璁㈠崟淇℃伅</span>
+ <el-tag type="primary" class="ml10 tag2" v-if="info.status == 0||info.status == 1||info.status == 3">{{ info.statusName }}</el-tag>
+ <el-tag type="success" class="ml10 tag2" v-if="info.status == 4">{{ info.statusName }}</el-tag>
+ <el-tag type="danger" class="ml10 tag2" v-if="info.status == 99">{{ info.statusName }}</el-tag>
+ </div>
+ <div class="detail" >
+ <div class="line">
+ <div class="cont"><span class="label"> 璁㈠崟鍙凤細</span> <span class="txt">{{info.code }}</span></div>
+ <div class="cont"> <span class="label"> 涓嬪崟鏃堕棿锛�</span> <span class="txt">{{info.createTime }}</span></div>
+ <div class="cont"><span class="label"> 鎺ュ崟鏃堕棿锛�</span> <span class="txt">{{info.acceptTime || '' }}</span></div>
+ </div>
+ <div class="line">
+ <div class="cont"><span class="label">寮�濮嬫椂闂达細</span> <span class="txt">{{info.workStartTime || '' }}</span></div>
+ <div class="cont" style="flex: 2"><span class="label">瀹屾垚鏃堕棿锛�</span><span class="txt">{{info.finishTime || '' }}</span></div>
+ </div>
+ </div>
+ </div>
+ <div class="renzheng" >
+ <div class="info" >
+ <span class="m10">鏀粯淇℃伅</span>
+ </div>
+ <div class="detail" >
+ <div class="line">
+ <div class="cont"><span class="label"> 瀹炰粯閲戦锛�</span> <span class="txt yellowbtn">{{((info.payAccount||0)/100).toFixed(2) }}鍏�</span></div>
+ <div class="cont"><span class="label">骞冲彴鎵嬬画璐癸細</span> <span class="txt yellowbtn">{{(((info.payAccount||0) - (info.receiveAccount||0))/100).toFixed(2) }}鍏�</span></div>
+ <div class="cont"><span class="label">鎺ュ崟鏂规敹鍒伴噾棰濓細</span> <span class="txt yellowbtn">{{((info.receiveAccount||0)/100).toFixed(2) }}鍏�</span></div>
+ </div>
+ <div class="line">
+ <div class="cont"><span class="label">鏀粯鏃堕棿锛�</span> <span class="txt">{{info.payTime || '' }}</span></div>
+ <div class="cont"><span class="label">鏀粯鏂瑰紡锛�</span><span class="txt">{{info.payMethod==0?'寰俊鏀粯':'鍏朵粬' }}</span></div>
+ <div class="cont"><span class="label">浜ゆ槗鍗曞彿锛�</span><span class="txt">{{info.wxExternalNo || '' }}</span></div>
+ </div>
+ </div>
+ </div>
+ <div class="renzheng" >
+ <div class="info" >
+ <span class="m10">闇�姹備俊鎭�</span>
+ </div>
+ <div class="detail" v-if="info.type==0">
+ <div class="line">
+ <div class="cont"><span class="label"> 璁㈠崟绫诲瀷锛�</span> <span class="txt">{{(info.type==0?'鐢ㄥ伐鍗�':(info.type==1?'璐ц繍鍗�':'璁㈠崟鍗�')) }}</span></div>
+ <div class="cont"><span class="label">宸ョ锛�</span>
+ <span class="txt" v-if="info.type==0">{{(info.workType==0?'閲囨憳宸�':(info.workType==1?'鍒嗘嫞宸�':'鍖呰宸�')) }}</span>
+ <span v-else>-</span>
+ </div>
+ <div class="cont"><span class="label">閲囨憳鍝佺锛�</span> <span class="txt">{{info.categoryName || ''}}</span></div>
+ </div>
+ <div class="line">
+ <div class="cont"><span class="label">閲囨憳閲嶉噺锛�</span> <span class="txt">{{info.priceNum1 || '' }}鏂�</span></div>
+ <div class="cont"><span class="label">鐢ㄥ伐鏃堕棿锛�</span><span class="txt">{{info.startDate|| '' }}-{{info.endDate|| '' }}</span></div>
+ <div class="cont"><span class="label">鐢ㄥ伐澶╂暟锛�</span><span class="txt">{{info.totalDays || 0 }}</span></div>
+ </div>
+ <div class="line">
+ <div class="cont"><span class="label">鐢ㄥ伐鍦扮偣锛�</span> <span class="txt">{{info.location || '' }}</span></div>
+ <div class="cont"><span class="label">璐圭敤鏍囧噯锛�</span><span class="txt">{{((info.price||0)/100).toFixed(2) }}{{info.priceUnit || '' }}</span></div>
+ <div class="cont"><span class="label">棰勪及鎬昏垂鐢細</span><span class="txt yellowbtn">{{((info.estimatedAccount||0)/100).toFixed(2) }}鍏�</span></div>
+ </div>
+ <div class="line">
+ <div class="cont"><span class="label">鍦扮偣鎻忚堪锛�</span><span class="txt">{{info.locationRemark || '' }}</span></div>
+ </div>
+ <div class="line">
+ <div class="cont" ><span class="label">闇�姹傛弿杩帮細</span><span class="txt">{{info.supplement || '' }}</span></div>
+ </div>
+ <div class="line">
+ <div class="cont">
+ <span class="label">鍥剧墖锛�</span>
+ <span class="txt" v-if="!info.multifileList || info.multifileList.length ==0">鏃�</span>
+ </div>
+ </div>
+ <div class="line" v-if="info.multifileList && info.multifileList.length>0">
+ <div class="cont">
+ <template v-if="info.multifileList && info.multifileList.length>0">
+ <div v-for="item in info.multifileList" style="display: inline-block" :key="item">
+ <el-image v-if="item.fileurlFull" style="width: 50px; height: 50px; margin-right: 10px" :src="item.fileurlFull"
+ :preview-src-list="[info.fileurlFull]">
+ </el-image>
+ </div>
+ </template>
+ </div>
+ </div>
+ <div class="line" v-if="info.auditStatus == 3 || info.auditStatus == 2" :style="'background-color: '+(info.auditStatus==2?'#eff8ea':'rgb(253 226 226)')+';padding: 20px'">
+ <span class="label"> 瀹℃牳浜猴細</span> <span class="txt">{{info.editorName}} </span><span class="label">{{info.auditTime || '' }} </span>
+ <div style="margin-top: 20px"> <span class="label"> 瀹℃牳淇℃伅锛�</span> <span class="txt">{{info.auditRemark || '' }}</span></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import BaseOpera from '@/components/base/BaseOpera'
+import { getById,cancel } from '@/api/business/orders'
+export default {
+ components: {
+ GlobalWindow
+ },
+ extends: BaseOpera,
+ data () {
+ return {
+ id: '',
+ info: {},
+ loading: false
+ }
+ },
+ methods: {
+ open (title, row) {
+ this.title = title
+ this.visible = true
+ this.tableData2 = []
+ this.id = row.id
+ this.getData()
+ },
+ getData () {
+ getById(this.id)
+ .then(res => {
+ this.info = res
+ this.visible = true
+ console.log(this.info)
+ })
+ },
+ close () {
+
+ },
+ checkDo (status) {
+ console.log(this.$refs.formCheck.length)
+ this.$refs.formCheck.validate((valid) => {
+ if (!valid) {
+ return
+ }
+ this.$dialog.actionConfirm('鎮ㄧ‘璁ゃ�愬彇娑堛�戣鐢宠鍚楋紵', '鎿嶄綔纭')
+ .then(() => {
+ this.dealing = true
+ cancel({
+ id: this.id,
+ auditStatus: status,
+ auditRemark: this.form.auditRemark
+ })
+ .then(res => {
+ this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+ this.getData()
+ this.$emit('success')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.dealing = false
+ })
+ })
+ })
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+@import '@/assets/style/variables.scss';
+.bottom{
+ text-align: center;
+ display: block;
+ height: auto;
+ background-color: #e4ecfe;
+ width: calc(100% - 32px);
+ z-index: 999;
+ padding: 16px;
+}
+.renzheng{
+ margin: 0px 0px 50px 20px;
+ width: calc(100% - 60px);
+ .detail{
+ font-size: 14px;
+ .label{
+ //color: #8c939d;
+ }
+ .txt{
+ margin-right: 30px;
+ }
+ .line{
+ font-size: 12px;
+ margin-top: 15px;
+ display: flex;
+ width: calc(100% - 60px);
+ .cont{
+ flex: 1;
+ }
+ }
+ }
+ .ml10{
+ margin-left: 10px;
+ }
+ .info{
+ font-size: 14px;
+ font-weight: bold;
+ color: #5a72c5;
+ }
+ .tag2{
+ font-size: 12px;
+ }
+}
+.home_title {
+ .mr10{
+ margin-right: 10px;
+ }
+ .m10{
+ margin: 10px;
+ }
+ .bluebtn{
+ color: #2985f7;
+ }
+ .tag1{
+ border-radius: 10px;
+ font-size: 10px;
+ padding: 0px 15px;
+ height: 24px;
+ }
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ .left {
+ font-weight: 500;
+ font-size: 14px;
+ margin-right: 10px;
+ display: flex;
+ align-items: center;
+ .status {
+ padding: 0 6px;
+ height: 22px;
+ line-height: 22px;
+ border-radius: 2px;
+ border: 1px solid #00BA92;
+ color: #00BA92;
+ font-weight: 400;
+ font-size: 12px;
+ color: #00BA92;
+ }
+ }
+}
+.tab{
+ width: 20%;
+}
+.remark {
+ //background: #E8EBF7;
+ border-radius: 2px;
+ font-size: 14px;
+ margin: 10px 10px 0px -10px;
+ button{
+ border: none;
+ cursor: default;
+ margin-right: 20px;
+ background: #e4ecfe;
+ }
+}
+.bluebtn{
+ font-weight: bold;
+ color: #2985f7;
+}
+
+.redbtn{
+ font-weight: bold;
+ color: #ff1b1b;
+}
+.yellowbtn{
+ font-weight: bold;
+ color: #fc9d20;
+}
+
+.tabs {
+ border-bottom: 1px solid #DFE2E8;
+ display: flex;
+ margin-bottom: 20px;
+ .tab {
+ height: 58px;
+ line-height: 58px;
+ font-size: 14px;
+ color: #666666;
+ margin-right: 30px;
+ cursor: pointer;
+ }
+
+ .active {
+ font-weight: 500;
+ color: $primary-color;
+ border-bottom: 2px solid $primary-color;
+ }
+}
+
+.main {
+ padding: 12px 16px;
+ .title {
+ font-weight: 500;
+ font-size: 12px;
+ color: $primary-color;
+ margin-bottom: 15px;
+ }
+ /deep/ .el-form-item__label{
+ font-size: 12px;
+ }
+ .list {
+ display: flex;
+ flex-wrap: wrap;
+ /*background: #F7F7F7;*/
+ border-radius: 2px;
+ /*padding: 15px 20px;*/
+ margin-bottom: 20px;
+
+ .item {
+ font-size: 14px;
+ width: 25%;
+ margin-bottom: 16px;
+
+ .la {
+ color: #7f7f7f;
+ margin-bottom: 10px;
+ }
+ }
+ }
+}
+
+/deep/ .window__body {
+ padding: 0px !important;
+}
+</style>
diff --git a/admin/src/components/business/orderProgress.vue b/admin/src/components/business/orderProgress.vue
new file mode 100644
index 0000000..06de68c
--- /dev/null
+++ b/admin/src/components/business/orderProgress.vue
@@ -0,0 +1,57 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ width="50%"
+ :withFooter="false"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ >
+ <el-timeline reverse>
+ <el-timeline-item v-for="(item, index) in list" :key="index" :hide-timestamp="true">
+ <div style="display: flex; flex-direction: column;">
+ <span class="a">{{item.title}}</span>
+ <span class="b">{{item.creatorName}} {{item.companyName || '骞冲彴鐞嗚禂鍛�'}} {{item.createDate }}</span>
+ <span class="c" v-if="index >0 && item.content">璇存槑锛歿{item.content}}</span>
+ </div>
+ </el-timeline-item>
+ </el-timeline>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+ name: 'orderProgress',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data () {
+ return {
+ list: []
+ }
+ },
+ methods: {
+ open (title, target) {
+ this.title = title
+ this.list = target
+ this.visible = true
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+ .a {
+ color: rgba(16,16,16,1);
+ font-size: 14px;
+ }
+ .b {
+ color: rgba(154,154,154,1);
+ font-size: 14px;
+ margin: 10px 0;
+ }
+ .c {
+ color: rgba(16,16,16,1);
+ font-size: 14px;
+ }
+</style>
diff --git a/admin/src/layouts/TableLayout.vue b/admin/src/layouts/TableLayout.vue
index 650bfea..9a34b4a 100644
--- a/admin/src/layouts/TableLayout.vue
+++ b/admin/src/layouts/TableLayout.vue
@@ -201,4 +201,14 @@
.yellowstate{
color: #fc9d20;
}
+
+.orderstate4{
+ color: #157713;
+}
+.orderstate0,.orderstate1,.orderstate2,.orderstate3{
+ color: #2080f7;
+}
+.orderstate99{
+ color: #5d6269;
+}
</style>
diff --git a/admin/src/views/business/orders.vue b/admin/src/views/business/orders.vue
index e449613..bca5db6 100644
--- a/admin/src/views/business/orders.vue
+++ b/admin/src/views/business/orders.vue
@@ -28,27 +28,34 @@
<el-option label="宸插彇娑�" :value="99"></el-option>
</el-select>
</el-form-item>
- <el-form-item label="鍙戝竷鏃堕棿" style="width: 380px;" label-width="100px" >
- <el-date-picker type="datetime" style="width: 120px" v-model="searchForm.createTimeStart" clearable value-format="yyyy-MM-dd HH:mm:ss"
- placeholder="寮�濮嬫椂闂�" />-
- <el-date-picker type="datetime" style="width: 120px" v-model="searchForm.createTimeEnd" clearable value-format="yyyy-MM-dd HH:mm:ss"
+ <el-form-item label="鍙戝竷鏃堕棿" prop="createTimeStart" label-width="100px" >
+ <el-date-picker type="datetime" style="width: 150px" v-model="searchForm.createTimeStart" clearable value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="寮�濮嬫椂闂�" /> -
+ </el-form-item>
+ <el-form-item label="" prop="createTimeEnd" label-width="0px" >
+ <el-date-picker type="datetime" style="width: 150px" v-model="searchForm.createTimeEnd" clearable value-format="yyyy-MM-dd HH:mm:ss"
placeholder="缁撴潫鏃堕棿" />
</el-form-item>
- <el-form-item label="鎺ュ崟鏃堕棿" style="width: 380px;" label-width="100px" >
- <el-date-picker type="datetime" style="width: 120px" v-model="searchForm.acceptTimeStart" clearable value-format="yyyy-MM-dd HH:mm:ss"
- placeholder="寮�濮嬫椂闂�" />-
- <el-date-picker type="datetime" style="width: 120px" v-model="searchForm.acceptTimeEnd" clearable value-format="yyyy-MM-dd HH:mm:ss"
+ <el-form-item label="鎺ュ崟鏃堕棿" prop="acceptTimeStart" label-width="100px" >
+ <el-date-picker type="datetime" style="width: 150px" v-model="searchForm.acceptTimeStart" clearable value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="寮�濮嬫椂闂�" /> -
+ </el-form-item>
+ <el-form-item label="" prop="acceptTimeEnd" label-width="0px" >
+ <el-date-picker type="datetime" style="width: 150px" v-model="searchForm.acceptTimeEnd" clearable value-format="yyyy-MM-dd HH:mm:ss"
placeholder="缁撴潫鏃堕棿" />
</el-form-item>
- <el-form-item label="瀹屾垚鏃堕棿" style="width: 380px;" label-width="100px" >
- <el-date-picker type="datetime" style="width: 120px" v-model="searchForm.doneTimeStart" clearable value-format="yyyy-MM-dd HH:mm:ss"
- placeholder="寮�濮嬫椂闂�" />-
- <el-date-picker type="datetime" style="width: 120px" v-model="searchForm.doneTimeEnd" clearable value-format="yyyy-MM-dd HH:mm:ss"
+ <el-form-item label="瀹屾垚鏃堕棿" prop="doneTimeStart" label-width="100px" >
+ <el-date-picker type="datetime" style="width: 150px" v-model="searchForm.doneTimeStart" clearable value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="寮�濮嬫椂闂�" /> -
+ </el-form-item>
+ <el-form-item label="" prop="doneTimeEnd" label-width="0px" >
+ <el-date-picker type="datetime" style="width: 150px" v-model="searchForm.doneTimeEnd" clearable value-format="yyyy-MM-dd HH:mm:ss"
placeholder="缁撴潫鏃堕棿" />
</el-form-item>
<section>
<el-button type="primary" @click="search">鎼滅储</el-button>
<el-button @click="reset">閲嶇疆</el-button>
+ <el-button type="primary" :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button>
</section>
</el-form>
<!-- 琛ㄦ牸鍜屽垎椤� -->
@@ -69,7 +76,11 @@
<span style="cursor: pointer;color: #2E68EC" @click="openDetail(row)">{{row.code}}</span>
</template>
</el-table-column>
- <el-table-column prop="statusName" label="璁㈠崟鐘舵��" min-width="100px" > </el-table-column>
+ <el-table-column prop="statusName" label="璁㈠崟鐘舵��" min-width="100px" >
+ <template slot-scope="{row}">
+ <span :class="'orderstate'+row.status">{{row.statusName}}</span>
+ </template>
+ </el-table-column>
<el-table-column prop="type" label="璁㈠崟绫诲瀷" min-width="100px">
<template slot-scope="{row}">
<span v-if="row.type==0">鐢ㄥ伐鍗�</span>
@@ -114,7 +125,7 @@
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" class="redstate" @click="cancenDo(row)" v-if="row.status>-1 && row.status<4" icon="el-icon-delete" v-permissions="['business:orders:update']">鍙栨秷</el-button>
+ <el-button type="text" class="redstate" @click="cancelDo(row)" v-if="row.status>-1 && row.status<4" icon="el-icon-delete" v-permissions="['business:orders:update']">鍙栨秷</el-button>
<el-button type="text" @click="openDetail( row)" icon="el-icon-info" >璇︽儏</el-button>
</template>
</el-table-column>
@@ -127,7 +138,7 @@
</pagination>
</template>
<!-- 鏂板缓/淇敼 -->
- <OperaOrdersWindow ref="operaOrdersWindow" @success="handlePageChange"/>
+ <OperaOrderDetailWindow ref="OperaOrderDetailWindow" @success="handlePageChange"/>
</TableLayout>
</template>
@@ -135,11 +146,12 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
-import OperaOrdersWindow from '@/components/business/OperaOrdersWindow'
+import OperaOrderDetailWindow from '@/components/business/OperaOrderDetailWindow'
+import { cancel } from '@/api/business/orders'
export default {
name: 'Orders',
extends: BaseTable,
- components: { TableLayout, Pagination, OperaOrdersWindow },
+ components: { TableLayout, Pagination, OperaOrderDetailWindow },
data () {
return {
// 鎼滅储
@@ -154,7 +166,7 @@
doneTimeStart: null,
doneTimeEnd: null,
status: null,
- code:null
+ code: null
}
}
},
@@ -167,12 +179,26 @@
})
this.search()
},
- methods:{
+ methods: {
openDetail (row) {
- // this.$refs.OperaMemberDetailWindow.open('鐢ㄦ埛璇︽儏', row.id)
+ this.$refs.OperaOrderDetailWindow.open('璁㈠崟璇︽儏', row )
},
- cancenDo(row){
-
+ cancelDo (row) {
+ this.$dialog.actionConfirm('鎮ㄧ‘璁ゃ�愬彇娑堛�戣璁㈠崟鍚楋紵', '鎿嶄綔纭')
+ .then(() => {
+ this.dealing = true
+ cancel(row.id)
+ .then(res => {
+ this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+ this.search()
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.dealing = false
+ })
+ })
}
}
}
diff --git a/server/services/src/main/java/com/doumee/core/utils/huaweiOBS/ObsUtil.java b/server/services/src/main/java/com/doumee/core/utils/huaweiOBS/ObsUtil.java
index 369f029..e7911c4 100644
--- a/server/services/src/main/java/com/doumee/core/utils/huaweiOBS/ObsUtil.java
+++ b/server/services/src/main/java/com/doumee/core/utils/huaweiOBS/ObsUtil.java
@@ -119,10 +119,10 @@
public static void main(String[] args) {
ObsUtil blobUtil = new ObsUtil("HPUAQVBRXX9A9TLZ3RTA","uHC2uoFh42Z2xgQmCBBtG8rNZ4Caf85qQ2DQqZZf","obs.cn-south-1.myhuaweicloud.com");
- blobUtil.uploadLocalFile(new File("D://static/1.png"),"jinkuai","member/1.png");
-// blobUtil.uploadLocalFile(new File("D://static/2.png"),"jinkuai","identity/2.png");
-// blobUtil.uploadLocalFile(new File("D://static/3.png"),"jinkuai","identity/3.png");
-// blobUtil.uploadLocalFile(new File("D://static/4.png"),"jinkuai","identity/4.png");
+ blobUtil.uploadLocalFile(new File("D://static/1.png"),"jinkuai","orders/1.png");
+ blobUtil.uploadLocalFile(new File("D://static/2.png"),"jinkuai","orders/2.png");
+ blobUtil.uploadLocalFile(new File("D://static/3.png"),"jinkuai","orders/3.png");
+ blobUtil.uploadLocalFile(new File("D://static/4.png"),"jinkuai","orders/4.png");
}
public static Integer uploadNetFile(ObsClient obsClient,String bucketName,String url, String objectKey) throws IOException {
InputStream is = new URL(url).openStream();
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 f17f61e..5cbb6b3 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
@@ -55,9 +55,11 @@
private Integer type;
@ApiModelProperty(value = "寮�濮嬫椂闂� yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd")
private Date startDate;
@ApiModelProperty(value = "缁撴潫鏃堕棿 yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy-MM-dd")
private Date endDate;
@ApiModelProperty(value = "鍦扮偣淇℃伅/鐢ㄨ溅璧风偣/鐢ㄩ鍦扮偣")
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 6ad3885..cf260c4 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
@@ -958,17 +958,21 @@
}
//鍑忓皯鍙戝崟閲�
- memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getPublishNum,"publish_num - 1").eq(Member::getId,orders.getReleaseMemberId()));
+ memberMapper.update(new UpdateWrapper<Member>().lambda()
+ .setSql("publish_num = ifnull(publish_num,0) - 1")
+ .eq(Member::getId,orders.getReleaseMemberId()));
if(Constants.equalsInteger(orders.getStatus(),Constants.TWO)||Constants.equalsInteger(orders.getStatus(),Constants.THREE)){
//鍑忓皯鎺ュ崟閲�
- memberMapper.update(new UpdateWrapper<Member>().lambda().set(Member::getReceiveNum,"receive_num - 1").eq(Member::getId,orders.getAcceptMemberId()));
+ memberMapper.update(new UpdateWrapper<Member>().lambda()
+ .setSql("receive_num = ifnull(receive_num,0) - 1")
+ .eq(Member::getId,orders.getAcceptMemberId()));
}
-
+Date date = new Date();
ordersMapper.update(new UpdateWrapper<Orders>().lambda()
.set(Orders::getStatus,Constants.ordersStatus.cancel.getKey())
- .set(Orders::getUpdateTime,"now()")
- .set(Orders::getCancelTime,"now()")
+ .set(Orders::getUpdateTime,date)
+ .set(Orders::getCancelTime,date)
.set(Orders::getCancelType,Constants.TWO)
.eq(Orders::getId,orders.getId())
);
--
Gitblit v1.9.3