From 8a73355593d64009e1243fd4ddc4aadb9010bb71 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 02 二月 2026 18:20:11 +0800
Subject: [PATCH] 代码初始化
---
admin/.env | 2
server/admin/pom.xml | 2
admin/src/components/common/Menu.vue | 2
server/admin/src/main/java/com/doumee/api/web/WebController.java | 44 +
admin/.env.production | 4
server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java | 3
admin/public/favicon.ico | 0
server/services/src/main/java/com/allinpay/syb/test/NotifyServlet.java | 68 ++
server/services/src/main/resources/application-test.yml | 2
server/services/src/main/java/com/allinpay/syb/lib/SybPayService.java | 124 ++++
server/services/src/main/java/com/doumee/api/common/PublicController.java | 7
server/services/src/main/java/com/doumee/service/business/OrdersService.java | 36
server/services/src/main/java/com/allinpay/syb/lib/SybConstants.java | 39 +
server/admin/src/main/java/com/doumee/api/business/OrdersController.java | 85 +++
server/admin/src/main/resources/application.yml | 2
server/services/src/main/java/com/allinpay/syb/lib/HttpConnectionUtil.java | 124 ++++
server/services/src/main/java/com/allinpay/syb/lib/SSLUtil.java | 54 ++
admin/src/views/login.vue | 2
server/services/pom.xml | 10
server/services/src/main/java/com/allinpay/syb/test/ApiTestV2.java | 47 +
server/admin/src/main/java/com/doumee/init/InitService.java | 10
server/services/src/main/resources/application-dev.yml | 21
server/startsh/admin_start.sh | 9
server/services/src/main/java/com/allinpay/syb/lib/SybUtil.java | 242 ++++++++
admin/package.json | 2
server/services/src/main/java/com/allinpay/syb/lib/SmUtil.java | 138 +++++
README.md | 2
/dev/null | 80 --
admin/src/components/business/OperaCategoryWindow.vue | 4
admin/src/views/business/category.vue | 15
admin/src/views/index.vue | 2
server/pom.xml | 5
admin/.env.test | 4
server/services/src/main/java/com/doumee/dao/business/dto/PayOrderParam.java | 29 +
server/services/src/main/resources/application-pro.yml | 2
server/services/src/main/java/com/doumee/dao/business/model/Orders.java | 103 +++
server/services/src/main/java/com/doumee/dao/business/dto/PayOrderResponse.java | 17
admin/public/index.html | 2
server/services/src/main/java/com/doumee/dao/business/OrdersMapper.java | 12
server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java | 233 ++++++++
admin/src/assets/logo.png | 0
41 files changed, 1,423 insertions(+), 166 deletions(-)
diff --git a/README.md b/README.md
index 25d00cf..3914ce1 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
## diandongche
-鐢靛姩杞﹂」鐩�
+蹇楅偊鐐瑰皢绯荤粺
diff --git a/admin/.env b/admin/.env
index e67efde..669020e 100644
--- a/admin/.env
+++ b/admin/.env
@@ -7,4 +7,4 @@
VUE_APP_ROUTER_MODE = 'hash'
ddd
# 鎺ュ彛鍓嶇紑
-VUE_APP_API_PREFIX = '/dianjiang_admin_api'
+VUE_APP_API_PREFIX = '/diandongche_admin_api'
diff --git a/admin/.env.production b/admin/.env.production
index 3b94b60..f681f22 100644
--- a/admin/.env.production
+++ b/admin/.env.production
@@ -3,5 +3,5 @@
# 鍏抽棴DEBUG
VUE_APP_DEBUG = 'off'
-VUE_APP_CONTEXT_PATH = '/dianjiang_admin'
-VUE_APP_API_URL = 'https://jinkuai.832smartfarm.com/jinkuai_admin'
+VUE_APP_CONTEXT_PATH = '/diandongche_admin'
+VUE_APP_API_URL = ' '
diff --git a/admin/.env.test b/admin/.env.test
index bdba26c..c56928f 100644
--- a/admin/.env.test
+++ b/admin/.env.test
@@ -1,5 +1,5 @@
# 寮�鍙戠幆澧冮厤缃�
NODE_ENV = 'development'
-VUE_APP_CONTEXT_PATH = '/dianjiang_admin'
-VUE_APP_API_URL = 'http://192.168.0.7:10010/dianjiang_admin_interface'
+VUE_APP_CONTEXT_PATH = '/diandongche_admin'
+VUE_APP_API_URL = 'http://192.168.0.7:10010/diandongche_admin_api'
diff --git a/admin/package.json b/admin/package.json
index 4965988..8c5fdb3 100644
--- a/admin/package.json
+++ b/admin/package.json
@@ -1,5 +1,5 @@
{
- "name": "zbom_dianjiang",
+ "name": "diandongche",
"version": "1.0.0",
"private": true,
"scripts": {
diff --git a/admin/public/favicon.ico b/admin/public/favicon.ico
index 271e35f..59b2257 100644
--- a/admin/public/favicon.ico
+++ b/admin/public/favicon.ico
Binary files differ
diff --git a/admin/public/index.html b/admin/public/index.html
index b90b5b8..a9f6cca 100644
--- a/admin/public/index.html
+++ b/admin/public/index.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
- <title>蹇楅偊鐐瑰皢鍚庡彴绠$悊绯荤粺</title>
+ <title>璞嗙背鐢靛姩杞﹀悗鍙扮鐞嗙郴缁�</title>
</head>
<body>
<div id="app"></div>
diff --git a/admin/src/api/business/cases.js b/admin/src/api/business/cases.js
deleted file mode 100644
index 51c2de3..0000000
--- a/admin/src/api/business/cases.js
+++ /dev/null
@@ -1,52 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
- return request.post('/business/cases/page', data, {
- trim: true
- })
-}
-export function findAll (data) {
- return request.post('/business/cases/list', data, {
- trim: true
- })
-}
-
-// 鍒涘缓
-export function create (data) {
- return request.post('/business/cases/create', data)
-}
-export function updateStatus (data) {
- return request.post('/business/cases/updateStatus', data)
-}
-// 瀵煎嚭Excel
-export function exportExcel (data) {
- return request.post('/business/cases/exportExcel', data, {
- download: true
- })
-}
-export function importExcel (data) {
- return request.post('/business/cases/importExcel', data)
-}
-
-// 淇敼
-export function updateById (data) {
- return request.post('/business/cases/updateById', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
- return request.get(`/business/cases/delete/${id}`)
-}
-export function getById (id) {
- return request.get(`/business/cases/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
- return request.get('/business/cases/delete/batch', {
- params: {
- ids
- }
- })
-}
diff --git a/admin/src/api/business/identityInfo.js b/admin/src/api/business/identityInfo.js
deleted file mode 100644
index ea68bee..0000000
--- a/admin/src/api/business/identityInfo.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
- return request.post('/business/identityInfo/page', data, {
- trim: true
- })
-}
-export function allList (data) {
- return request.post('/business/identityInfo/memberList', data, {
- trim: true
- })
-}
-
-// 瀵煎嚭Excel
-export function exportExcel (data) {
- return request.post('/business/identityInfo/exportExcel', data, {
- download: true
- })
-}
-
-// 鍒涘缓
-export function create (data) {
- return request.post('/business/identityInfo/create', data)
-}
-export function audit (data) {
- return request.post('/business/identityInfo/audit', data)
-}
-
-// 淇敼
-export function updateById (data) {
- return request.post('/business/identityInfo/updateById', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
- return request.get(`/business/identityInfo/delete/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
- return request.get('/business/identityInfo/delete/batch', {
- params: {
- ids
- }
- })
-}
diff --git a/admin/src/api/business/importRecord.js b/admin/src/api/business/importRecord.js
deleted file mode 100644
index 82a5f2e..0000000
--- a/admin/src/api/business/importRecord.js
+++ /dev/null
@@ -1,48 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
- return request.post('/business/importRecord/page', data, {
- trim: true
- })
-}
-
-// 鍒涘缓
-export function create (data) {
- return request.post('/business/importRecord/create', data)
-}
-export function updateStatus (data) {
- return request.post('/business/importRecord/updateStatus', data)
-}
-
-// 瀵煎嚭Excel
-export function exportExcel (data) {
- return request.post('/business/importRecord/exportExcel', data, {
- download: true
- })
-}
-export function importExcel (data) {
- return request.post('/business/importRecord/importExcel', data)
-}
-
-// 淇敼
-export function updateById (data) {
- return request.post('/business/importRecord/updateById', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
- return request.get(`/business/importRecord/delete/${id}`)
-}
-export function getById (id) {
- return request.get(`/business/importRecord/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
- return request.get('/business/importRecord/delete/batch', {
- params: {
- ids
- }
- })
-}
diff --git a/admin/src/api/business/member.js b/admin/src/api/business/member.js
deleted file mode 100644
index 1c96abd..0000000
--- a/admin/src/api/business/member.js
+++ /dev/null
@@ -1,52 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
- return request.post('/business/member/page', data, {
- trim: true
- })
-}
-export function findAll (data) {
- return request.post('/business/member/list', data, {
- trim: true
- })
-}
-
-// 鍒涘缓
-export function create (data) {
- return request.post('/business/member/create', data)
-}
-export function updateStatus (data) {
- return request.post('/business/member/updateStatus', data)
-}
-// 瀵煎嚭Excel
-export function exportExcel (data) {
- return request.post('/business/member/exportExcel', data, {
- download: true
- })
-}
-export function importExcel (data) {
- return request.post('/business/member/importExcel', data)
-}
-
-// 淇敼
-export function updateById (data) {
- return request.post('/business/member/updateById', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
- return request.get(`/business/member/delete/${id}`)
-}
-export function getById (id) {
- return request.get(`/business/member/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
- return request.get('/business/member/delete/batch', {
- params: {
- ids
- }
- })
-}
diff --git a/admin/src/api/business/memberRevenue.js b/admin/src/api/business/memberRevenue.js
deleted file mode 100644
index 1c158e0..0000000
--- a/admin/src/api/business/memberRevenue.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
- return request.post('/business/memberRevenue/page', data, {
- trim: true
- })
-}
-
-// 鍒涘缓
-export function create (data) {
- return request.post('/business/memberRevenue/create', data)
-}
-
-// 淇敼
-export function updateById (data) {
- return request.post('/business/memberRevenue/updateById', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
- return request.get(`/business/memberRevenue/delete/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
- return request.get('/business/memberRevenue/delete/batch', {
- params: {
- ids
- }
- })
-}
-// 瀵煎嚭Excel
-export function exportExcel (data) {
- return request.post('/business/memberRevenue/exportExcel', data, {
- download: true
- })
-}
diff --git a/admin/src/api/business/receiveWeight.js b/admin/src/api/business/receiveWeight.js
deleted file mode 100644
index 91b91b5..0000000
--- a/admin/src/api/business/receiveWeight.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
- return request.post('/business/receiveWeight/page', data, {
- trim: true
- })
-}
-
-// 鍒涘缓
-export function create (data) {
- return request.post('/business/receiveWeight/create', data)
-}
-
-// 淇敼
-export function updateById (data) {
- return request.post('/business/receiveWeight/updateById', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
- return request.get(`/business/receiveWeight/delete/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
- return request.get('/business/receiveWeight/delete/batch', {
- params: {
- ids
- }
- })
-}
diff --git a/admin/src/api/business/withdrawalOrders.js b/admin/src/api/business/withdrawalOrders.js
deleted file mode 100644
index 6362282..0000000
--- a/admin/src/api/business/withdrawalOrders.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import request from '../../utils/request'
-
-// 鏌ヨ
-export function fetchList (data) {
- return request.post('/business/withdrawalOrders/page', data, {
- trim: true
- })
-}
-
-// 鍒涘缓
-export function create (data) {
- return request.post('/business/withdrawalOrders/create', data)
-}
-
-// 淇敼
-export function updateById (data) {
- return request.post('/business/withdrawalOrders/updateById', data)
-}
-
-// 鍒犻櫎
-export function deleteById (id) {
- return request.get(`/business/withdrawalOrders/delete/${id}`)
-}
-
-// 鎵归噺鍒犻櫎
-export function deleteByIdInBatch (ids) {
- return request.get('/business/withdrawalOrders/delete/batch', {
- params: {
- ids
- }
- })
-}
diff --git a/admin/src/assets/logo.png b/admin/src/assets/logo.png
index 271e35f..59b2257 100644
--- a/admin/src/assets/logo.png
+++ b/admin/src/assets/logo.png
Binary files differ
diff --git a/admin/src/components/business/OperaCasesImportWindow.vue b/admin/src/components/business/OperaCasesImportWindow.vue
deleted file mode 100644
index f8b6ab8..0000000
--- a/admin/src/components/business/OperaCasesImportWindow.vue
+++ /dev/null
@@ -1,87 +0,0 @@
-<template>
- <el-dialog
- class="center-title"
- :title="title"
- width="500px"
- top="30vh"
- :visible.sync="visible"
- :confirm-working="isWorking"
- @confirm="confirm"
- >
- <p class="tip-warn"><i class="el-icon-warning"></i>瀵煎叆璇存槑锛�<br>
- 1.璇峰厛涓嬭浇鏂囦欢妯℃澘锛屽苟鎸夌収妯℃澘瑕佸幓濉啓琛ㄦ牸鍐呭;<br>
- </p>
- <el-form class="demo-form-inline" >
- <el-form-item label="妗堜緥鏁版嵁" required>
- <div style="width: 100%;display: flex;align-items: center;">
- <el-button type="primary" :loading="importing" @click="clickRef">鐐瑰嚮涓婁紶</el-button>
- <el-button type="text" @click="exportTemplate">鐐瑰嚮涓嬭浇妯$増.EXCEL</el-button>
- </div>
- <div style="font-size: 14px; color: black;" v-if="fileName">{{fileName}}</div>
- </el-form-item>
- </el-form>
- <input type="file" style="position: fixed; left: 0; top: -50px;" accept=".xlsx" ref="fileExcel" @change="result" />
- <template v-slot:footer>
- <el-button @click="visible=false">杩斿洖</el-button>
- </template>
- </el-dialog>
-</template>
-
-<script>
-import BaseOpera from '@/components/base/BaseOpera'
-import GlobalWindow from '@/components/common/GlobalWindow'
-import { importExcel } from '@/api/business/importRecord'
-export default {
- name: 'OperaCasesImportWindow',
- extends: BaseOpera,
- // eslint-disable-next-line vue/no-unused-components
- components: { GlobalWindow },
- data () {
- return {
- importing: false,
- fileName: '',
- type: 1
- }
- },
- methods: {
- open (title) {
- this.title = title
- this.fileName = ''
- this.visible = true
- this.type = 1
- },
- // 瀵煎嚭妯℃澘
- exportTemplate () {
- // 鎶曚繚鐢宠
- window.open('/template/cases.xlsx')
- },
- clickRef () {
- this.$refs.fileExcel.click()
- },
- result (e) {
- this.importing=true
- const data = new FormData()
- data.append('file', e.target.files[0])
- data.append('type', this.type)
- importExcel(data)
- .then(res => {
- this.$message.success('鏁版嵁宸蹭笂浼犳垚鍔燂紝鍙墠寰�銆愬鍏ヨ褰曘�戣彍鍗曟煡鐪嬩换鍔℃墽琛岃繘搴︺��')
- this.$emit('success')
- this.visible = false
- })
- .catch(err => {
- this.fileName = ''
- this.$message.error(err)
- })
- .finally(() => {
- this.$refs.fileExcel.value = null
- this.importing=false
- })
- }
- }
-}
-</script>
-
-<style lang="scss" scoped>
-
-</style>
diff --git a/admin/src/components/business/OperaCasesListWindow.vue b/admin/src/components/business/OperaCasesListWindow.vue
deleted file mode 100644
index 0d8225b..0000000
--- a/admin/src/components/business/OperaCasesListWindow.vue
+++ /dev/null
@@ -1,185 +0,0 @@
-<template>
- <GlobalWindow
- :title="title"
- :visible.sync="visible"
- width="100%"
- >
- <TableLayout :permissions="['business:cases:query']">
- <!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" id="curSearchForm" label-width="100px" inline>
- <el-form-item label="鏍囬" prop="name">
- <el-input v-model="searchForm.name" style="width: 150px" placeholder="璇疯緭鍏ユ爣棰�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鐘舵��" prop="status">
- <el-select
- v-model="searchForm.status"
- placeholder="鐘舵��"
- clearable
- style="width: 150px"
- @change="search"
- >
- <el-option :key="0" :value="0" label="鍚敤"></el-option>
- <el-option :key="1" :value="1" label="绂佺敤"></el-option>
- </el-select>
- </el-form-item>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
-<!-- <ul class="toolbar" v-permissions="['business:cases:create', 'business:cases:delete']">
- <li><el-button type="primary" @click="$refs.operaCasesWindow.open('鏂板缓妗堜緥',null)" icon="el-icon-plus" v-permissions="['business:cases:create']">鏂板缓</el-button></li>
- <li><el-button type="primary" icon="el-icon-refresh" v-permissions="['business:cases:create']" @click="$refs.OperaCasesImportWindow.open('妗堜緥瀵煎叆')">鎵归噺瀵煎叆</el-button></li>
- <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:cases:delete']">鍒犻櫎</el-button></li>
- </ul>-->
- <el-table
- :height="tableHeight"
- v-loading="isWorking.search"
- :data="tableData.list"
- :cell-class-name="setRowClassName"
- border
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column prop="name" label="妗堜緥鏍囬" min-width="200px"></el-table-column>
- <el-table-column prop="icon" label="鎺掕姒滃浘闆�" min-width="220px">
- <template slot-scope="{row}">
- <div style="display: flex; flex-wrap: wrap;width: 200px;" v-if="row.fileList && row.fileList.length">
- <div v-for="item in row.fileList" :key="row.id+'_img'+item.id" style=" box-sizing: border-box; margin-right: 10px; " >
- <el-image style="width: 50px; height: 50px;" :src="item.url"
- :preview-src-list="[item.url]">
- </el-image>
- </div>
- </div>
- </template>
- </el-table-column>
- <el-table-column prop="memberName" label="鑰佸笀" min-width="220px">
- <template slot-scope="{row}">
- <span class="orange" style="margin-right: 10px"> {{row.memberCode}}</span> <span>{{row.memberName||''}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="startDate" label="寮�濮嬫棩鏈�" min-width="140px"></el-table-column>
- <el-table-column prop="endDate" label="缁撴潫鏃ユ湡" min-width="140px"></el-table-column>
- <el-table-column prop="detail" label="妗堜緥鎻忚堪" min-width="230px" ></el-table-column>
- <el-table-column label="鐘舵��" >
- <template slot-scope="{row}">
- <span class="orange" v-if="row.status==0" >鍚敤</span>
- <span class="red" v-if="row.status==1">绂佺敤</span>
- </template>
- </el-table-column>
- <el-table-column label="鏄惁鍒犻櫎" >
- <template slot-scope="{row}">
- <span class="red" v-if="row.deleted==1" >宸插垹闄�</span>
- <span class="green" v-else>鏈垹闄�</span>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
- </template>
- </TableLayout>
- <template v-slot:footer>
- <el-button @click="visible=false">杩斿洖</el-button>
- </template>
- </GlobalWindow>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import GlobalWindow from '@/components/common/GlobalWindow'
-import { findAll as memberList } from '@/api/business/member'
-import {findAll as cateList} from "@/api/business/category";
-export default {
- name: 'OperaCasesListWindow',
- extends: BaseTable,
- components: { GlobalWindow, TableLayout, Pagination },
- data () {
- return {
- title: '',
- visible: false,
- tableHeight: null,
- searchForm: {
- containDeleted: 1,
- name: '',
- importId: '',
- status: null
- },
- memberList: []
- }
- },
- created () {
- this.config({
- api: '/business/cases',
- 'field.id': 'id'
- })
- window.addEventListener('resize', () => {
- this.getTableHeight()
- })
- cateList({
- }).then(res => {
- this.cateList = res
- })
- },
- methods: {
- setRowClassName({row, rowIndex}) {
- if (row.deleted == 1) {
- return 'warning-row'
- }
- return '' // 濡傛灉涓嶉渶瑕佷换浣曠壒娈婃牱寮忥紝杩斿洖绌哄瓧绗︿覆鎴� null
- },
- getTableHeight(){
- this.$nextTick(() => {
- this.tableHeight = window.innerHeight - 180;
- if(document.getElementById('curSearchForm')){
- this.tableHeight = this.tableHeight - document.getElementById('curSearchForm').clientHeight
- }
- })
- },
- open (title, memberId, importId) {
- this.title = title
- this.visible = true
- this.getTableHeight()
- this.tableData = {
- // 宸查�変腑鐨勬暟鎹�
- selectedRows: [],
- // 鎺掑簭鐨勫瓧娈�
- sorts: [],
- // 褰撳墠椤垫暟鎹�
- list: [],
- // 鍒嗛〉
- pagination: {
- pageIndex: 1,
- pageSize: 10,
- total: 0
- }
- }
- this.searchForm.importId = importId
- this.search()
- }
- }
-}
-</script>
-<style scoped lang="scss">
-/deep/ .window__body {
- overflow-y: hidden !important;
-}
-.table-content .table-wrap .el-table{
- overflow-y: hidden !important;
-}
-</style>
-<style >
-.success-row {
- background: #f0f9eb !important; /* 娴呯豢鑹茶儗鏅� */
-}
-.warning-row {
- background: rgba(161, 14, 14, 0.35) !important; /* 娴呯孩鑹茶儗鏅� */
-}
-</style>
diff --git a/admin/src/components/business/OperaCasesWindow.vue b/admin/src/components/business/OperaCasesWindow.vue
deleted file mode 100644
index a2d5568..0000000
--- a/admin/src/components/business/OperaCasesWindow.vue
+++ /dev/null
@@ -1,169 +0,0 @@
-<template>
- <GlobalWindow
- :title="title"
- :visible.sync="visible"
- :confirm-working="isWorking"
- @confirm="confirm"
- >
- <el-form :model="form" ref="form" :rules="rules">
- <el-form-item label="鍚嶇О" prop="name">
- <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
- </el-form-item>
- <el-form-item label="鑰佸笀" prop="memberId" >
- <el-select v-model="form.memberId" placeholder="閫夋嫨鑰佸笀" clearable filterable
- >
- <el-option
- v-for="item in memberList"
- :key="item.id"
- :value="item.id"
- :label="item.name+' 銆�'+item.code+'銆�'"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="鍥鹃泦" prop="icon">
- <UploadImage
- :fileList="tempfileList"
- :uploadData="uploadData"
- @beginUpload="isUploading=true"
- @endUpload="isUploading=false"/>
- <p class="tip-warn">
- 寤鸿灏哄锛�750px X 750px
- 鏀寔png銆乯pg銆乯peg鏍煎紡锛屽ぇ灏忎笉瓒呰繃2M锛屼笂浼犲浘鐗囦笉鍏佽娑夊強鏀挎不鏁忔劅涓庤壊鎯�,
- </p>
- </el-form-item>
- <el-form-item label="寮�濮嬫椂闂�" prop="startDate" >
- <el-date-picker
- clearable
- v-model="form.startDate"
- type="date"
- value-format="yyyy-MM-dd"
- format="yyyy-MM-dd"
- placeholder="寮�濮嬫椂闂�"
- ></el-date-picker>
- </el-form-item>
- <el-form-item label="瀵煎叆鏃堕棿" prop="endDate" >
- <el-date-picker
- clearable
- v-model="form.endDate"
- type="date"
- value-format="yyyy-MM-dd"
- format="yyyy-MM-dd"
- placeholder="缁撴潫鏃堕棿"
- ></el-date-picker>
- </el-form-item>
- <el-form-item label="鎺掑簭鐮�" prop="sortnum">
- <el-input v-model="form.sortnum" type="" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
- </el-form-item>
- <el-form-item label="鎻忚堪" prop="detail">
- <el-input type="textarea" v-model="form.detail" placeholder="璇疯緭鍏ユ弿杩�" v-trim/>
- </el-form-item>
- </el-form>
- </GlobalWindow>
-</template>
-
-<script>
-import BaseOpera from '@/components/base/BaseOpera'
-import GlobalWindow from '@/components/common/GlobalWindow'
-import UploadImage from '@/components/common/UploadImage'
-import { findAll as memberList } from '@/api/business/member'
-export default {
- name: 'OperaCasesWindow',
- extends: BaseOpera,
- components: { GlobalWindow, UploadImage },
- data () {
- return {
- isUploading: false,
- uploadData: {
- folder: 'dianjiang/cases'
- },
- // 琛ㄥ崟鏁版嵁
- form: {
- id: null,
- status: 0,
- sortnum: null,
- name: '',
- detail: null,
- remark: null,
- fileList: [],
- memberId: null,
- startDate: null,
- endDate: null
- },
- tempfileList: [],
- memberList: [],
- // 楠岃瘉瑙勫垯
- rules: {
- name: [{ required: true, message: '璇疯緭鍏ユ爣棰�' }],
- detail: [{ required: true, message: '璇疯緭鍏ユ弿杩�' }],
- memberId: [{ required: true, message: '璇烽�夋嫨鑰佸笀' }],
- startDate: [{ required: true, message: '璇烽�夋嫨寮�濮嬫棩鏈�' }],
- endDate: [{ required: true, message: '璇疯緭鍏ョ粨鏉熸棩鏈�' }]
- }
- }
- },
- created () {
- this.config({
- api: '/business/cases',
- 'field.id': 'id'
- })
- },
- methods: {
- loadMemberList () {
- memberList({
- }).then(res => {
- this.memberList = res
- })
- },
-
- confirm () {
- this.form.fileList = this.tempfileList
- if (this.form[this.configData['field.id']] == null || this.form[this.configData['field.id']] === '') {
- this.__confirmCreate()
- return
- }
- this.__confirmEdit()
- },
- open (title, target, type) {
- this.title = title
- this.visible = true
- this.loadMemberList()
- this.tempfileList = []
- this.form = {
- id: null,
- status: 0,
- sortnum: null,
- name: '',
- detail: null,
- remark: null,
- fileList: [],
- memberId: null,
- startDate: null,
- endDate: null
- }
- // 鏂板缓
- if (target == null) {
- this.$nextTick(() => {
- this.$refs.form.resetFields()
- this.form[this.configData['field.id']] = null
- this.form.type = type
- })
- return
- }
- // 缂栬緫
- this.$nextTick(() => {
- for (const key in this.form) {
- this.form[key] = target[key]
- }
- this.form.fileList = this.form.fileList || []
- this.form.fileList.forEach(item => {
- this.tempfileList.push({
- fileurl: item.fileurl,
- name: item.name,
- url: item.url
- })
- })
- })
- }
- }
-}
-</script>
diff --git a/admin/src/components/business/OperaCategoryWindow.vue b/admin/src/components/business/OperaCategoryWindow.vue
index c897b92..15df679 100644
--- a/admin/src/components/business/OperaCategoryWindow.vue
+++ b/admin/src/components/business/OperaCategoryWindow.vue
@@ -9,10 +9,10 @@
<el-form-item label="鍚嶇О" prop="name">
<el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
</el-form-item>
- <el-form-item label="鎴樺尯缂栫爜" prop="detail" v-if="form.type ==0" >
+ <el-form-item label="缂栫爜" prop="detail" v-if="form.type ==3" >
<el-input v-model="form.detail" placeholder="璇疯緭鍏ユ垬鍖虹紪鐮�" v-trim/>
</el-form-item>
- <el-form-item v-if="form.type == 3" label="鍥炬爣" prop="icon">
+ <el-form-item v-if="form.type == 0" label="鍥炬爣" prop="icon">
<UploadAvatarImage
:file="{ imgurlfull: form.iconFull, imgurl: form.icon }"
:uploadData="uploadData"
diff --git a/admin/src/components/common/Menu.vue b/admin/src/components/common/Menu.vue
index 4559e83..01a99a3 100644
--- a/admin/src/components/common/Menu.vue
+++ b/admin/src/components/common/Menu.vue
@@ -2,7 +2,7 @@
<div class="menu" :class="{collapse: menuData.collapse}">
<div class="logo">
<div><img src="@/assets/logo.png"></div>
- <h1 :class="{hidden: menuData.collapse}">蹇楅偊鐐瑰皢鍚庡彴绠$悊绯荤粺</h1>
+ <h1 :class="{hidden: menuData.collapse}">璞嗙背鐢靛姩杞﹀悗鍙扮鐞嗙郴缁�</h1>
</div>
<scrollbar>
<el-menu
diff --git a/admin/src/views/business/cases.vue b/admin/src/views/business/cases.vue
deleted file mode 100644
index ec782ec..0000000
--- a/admin/src/views/business/cases.vue
+++ /dev/null
@@ -1,163 +0,0 @@
-<template>
- <TableLayout :permissions="['business:cases:query']">
- <!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="鏍囬" prop="name">
- <el-input v-model="searchForm.name" style="width: 150px" placeholder="璇疯緭鍏ユ爣棰�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鑰佸笀" prop="memberId">
- <el-select
- v-model="searchForm.memberId"
- style="width: 150px"
- placeholder="鑰佸笀"
- clearable
- filterable
- @change="search"
- >
- <el-option
- v-for="item in memberList"
- :key="item.id"
- :value="item.id"
- :label="item.name+' 銆�'+item.code+'銆�'"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="鐘舵��" prop="status">
- <el-select
- v-model="searchForm.status"
- placeholder="鐘舵��"
- clearable
- style="width: 150px"
- @change="search"
- >
- <el-option :key="0" :value="0" label="鍚敤"></el-option>
- <el-option :key="1" :value="1" label="绂佺敤"></el-option>
- </el-select>
- </el-form-item>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:cases:create', 'business:cases:delete']">
- <li><el-button type="primary" @click="$refs.operaCasesWindow.open('鏂板缓妗堜緥',null)" icon="el-icon-plus" v-permissions="['business:cases:create']">鏂板缓</el-button></li>
- <li><el-button type="primary" icon="el-icon-refresh" v-permissions="['business:cases:create']" @click="$refs.OperaCasesImportWindow.open('妗堜緥瀵煎叆')">鎵归噺瀵煎叆</el-button></li>
- <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:cases:delete']">鍒犻櫎</el-button></li>
- </ul>
- <el-table
- :height="tableHeightNew"
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="name" label="妗堜緥鏍囬" min-width="200px"></el-table-column>
- <el-table-column prop="icon" label="鎺掕姒滃浘闆�" min-width="220px">
- <template slot-scope="{row}">
- <div style="display: flex; flex-wrap: wrap;width: 200px;" v-if="row.fileList && row.fileList.length">
- <div v-for="item in row.fileList" :key="row.id+'_img'+item.id" style=" box-sizing: border-box; margin-right: 10px; " >
- <el-image style="width: 50px; height: 50px;" :src="item.url"
- :preview-src-list="[item.url]">
- </el-image>
- </div>
- </div>
- </template>
- </el-table-column>
- <el-table-column prop="memberName" label="鑰佸笀" min-width="220px">
- <template slot-scope="{row}">
- <span class="orange" style="margin-right: 10px"> {{row.memberCode}}</span> <span>{{row.memberName||''}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="startDate" label="寮�濮嬫棩鏈�" min-width="140px"></el-table-column>
- <el-table-column prop="endDate" label="缁撴潫鏃ユ湡" min-width="140px"></el-table-column>
- <el-table-column prop="detail" label="妗堜緥鎻忚堪" min-width="230px" ></el-table-column>
- <el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
- <el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
- <el-table-column label="鐘舵��" fixed="right">
- <template slot-scope="{row}">
- <el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
- inactive-color="#ff4949" :active-value="0" :inactive-value="1">
- </el-switch>
- </template>
- </el-table-column>
- <el-table-column
- v-if="containPermissions(['business:cases:update', 'business:cases:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaCasesWindow.open('缂栬緫妗堜緥', row)" icon="el-icon-edit" v-permissions="['business:cases:update']">缂栬緫</el-button>
- <el-button type="text" style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:cases:delete']">鍒犻櫎</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
- </template>
- <!-- 鏂板缓/淇敼 -->
- <OperaCasesWindow ref="operaCasesWindow" @success="search"/>
- <OperaCasesImportWindow ref="OperaCasesImportWindow" @success="handlePageChange" />
- </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCasesWindow from '@/components/business/OperaCasesWindow'
-import OperaCasesImportWindow from '@/components/business/OperaCasesImportWindow'
-import { findAll as memberList } from '@/api/business/member'
-export default {
- name: 'cases',
- extends: BaseTable,
- components: { TableLayout, Pagination, OperaCasesWindow ,OperaCasesImportWindow},
- data () {
- return {
- // 鎼滅储
- searchForm: {
- name: '',
- memberId: '',
- status: null
- },
- memberList:[]
- }
- },
- created () {
- this.config({
- module: '妗堜緥淇℃伅琛�',
- api: '/business/cases',
- 'field.id': 'id',
- 'field.main': 'id'
- })
- this.search()
- memberList({
- }).then(res => {
- this.memberList = res
- })
- },
- methods: {
- changeStatus (e, row) {
- this.working = true
- this.api.updateStatus({ id: row.id, status: e })
- .then(res => {
- this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
- this.handlePageChange()
- })
- .catch(e => {
- this.$tip.apiFailed(e)
- })
- .finally(() => {
- this.working = false
- })
- }
- }
-}
-</script>
diff --git a/admin/src/views/business/category.vue b/admin/src/views/business/category.vue
index c202c48..be0ee16 100644
--- a/admin/src/views/business/category.vue
+++ b/admin/src/views/business/category.vue
@@ -13,7 +13,7 @@
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
- <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鎴樺尯',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
+ <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鍝佺墝',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
<li><el-button type="primary" icon="el-icon-refresh" v-permissions="['business:category:create']">鍚屾</el-button></li>
<li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
</ul>
@@ -25,8 +25,15 @@
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="name" label="鎴樺尯鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column prop="detail" label="鎴樺尯缂栫爜" min-width="100px"></el-table-column>
+ <el-table-column prop="name" label="鍝佺墝鍚嶇О" min-width="100px"></el-table-column>
+<!-- <el-table-column prop="icon" label="鍥炬爣" min-width="100px">
+ <template slot-scope="{row}">
+ <el-image v-if="row.iconFull" style="width: 50px; height: 50px; margin-right: 10px" :src="row.iconFull"
+ :preview-src-list="[row.iconFull]">
+ </el-image>
+ </template>
+ </el-table-column>-->
+ <el-table-column prop="detail" label="鍝佺墝缂栫爜" min-width="100px"></el-table-column>
<el-table-column label="鐘舵��">
<template slot-scope="{row}">
<el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
@@ -44,7 +51,7 @@
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鎴樺尯', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
+ <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鍝佺墝', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
<el-button type="text" style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
diff --git a/admin/src/views/business/categoryBusType.vue b/admin/src/views/business/categoryBusType.vue
deleted file mode 100644
index e952fe4..0000000
--- a/admin/src/views/business/categoryBusType.vue
+++ /dev/null
@@ -1,125 +0,0 @@
-<template>
- <TableLayout :permissions="['business:category:query']">
- <!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="鍚嶇О" prop="name">
- <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
- <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鍟嗕笟鍖栫被鍨�',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
- </ul>
- <el-table
- :height="tableHeightNew"
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" :selectable="isChangeSelected" width="55"></el-table-column>
- <el-table-column prop="name" label="鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column prop="icon" label="鎺掕姒滃浘闆�" min-width="220px">
- <template slot-scope="{row}">
- <div style="display: flex; flex-wrap: wrap;width: 200px;" v-if="row.fileList && row.fileList.length">
- <div v-for="item in row.fileList" :key="row.id+'_img'+item.id" style=" box-sizing: border-box; margin-right: 10px; " >
- <el-image style="width: 50px; height: 50px;" :src="item.url"
- :preview-src-list="[item.url]">
- </el-image>
- </div>
- </div>
- </template>
- </el-table-column>
-
- <el-table-column label="鐘舵��">
- <template slot-scope="{row}">
- <el-switch :disabled="row.isFixed ==1" @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
- inactive-color="#ff4949" :active-value="0" :inactive-value="1">
- </el-switch>
- </template>
- </el-table-column>
- <el-table-column prop="remark" label="鎻忚堪" min-width="100px"></el-table-column>
- <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
- <el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
- <el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
- <el-table-column
- v-if="containPermissions(['business:category:update', 'business:category:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鍟嗕笟鍖栫被鍨�', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
- </template>
- <!-- 鏂板缓/淇敼 -->
- <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange"/>
- </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCategoryWindow from '@/components/business/OperaCategoryWindow'
-export default {
- name: 'Category',
- extends: BaseTable,
- components: { TableLayout, Pagination, OperaCategoryWindow },
- data () {
- return {
- // 鎼滅储
- searchForm: {
- name: '',
- type: 1
- }
- }
- },
- created () {
- this.config({
- module: '鍒嗙被淇℃伅琛�',
- api: '/business/category',
- 'field.id': 'id',
- 'field.main': 'id'
- })
- this.search()
- },
- methods: {
- isChangeSelected(row,index){
- // if(row.isFixed ==1) {
- // return false
- // }
- return true
- },
- changeStatus (e, row) {
- this.working = true
- this.api.updateStatus({ id: row.id, status: e })
- .then(res => {
- this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
- this.search()
- })
- .catch(e => {
- this.$tip.apiFailed(e)
- })
- .finally(() => {
- this.working = false
- })
- }
- }
-}
-</script>
diff --git a/admin/src/views/business/categoryField.vue b/admin/src/views/business/categoryField.vue
deleted file mode 100644
index 3b6135c..0000000
--- a/admin/src/views/business/categoryField.vue
+++ /dev/null
@@ -1,113 +0,0 @@
-<template>
- <TableLayout :permissions="['business:category:query']">
- <!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="鍚嶇О" prop="name">
- <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
- <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鎿呴暱棰嗗煙',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
- </ul>
- <el-table
- :height="tableHeightNew"
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" :selectable="isChangeSelected" width="55"></el-table-column>
- <el-table-column prop="name" label="鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column label="鐘舵��">
- <template slot-scope="{row}">
- <el-switch :disabled="row.isFixed ==1" @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
- inactive-color="#ff4949" :active-value="0" :inactive-value="1">
- </el-switch>
- </template>
- </el-table-column>
- <el-table-column prop="remark" label="鎻忚堪" min-width="100px"></el-table-column>
- <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
- <el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
- <el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
- <el-table-column
- v-if="containPermissions(['business:category:update', 'business:category:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鎿呴暱棰嗗煙', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
- </template>
- <!-- 鏂板缓/淇敼 -->
- <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange"/>
- </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCategoryWindow from '@/components/business/OperaCategoryWindow'
-export default {
- name: 'Category',
- extends: BaseTable,
- components: { TableLayout, Pagination, OperaCategoryWindow },
- data () {
- return {
- // 鎼滅储
- searchForm: {
- name: '',
- type: 2
- }
- }
- },
- created () {
- this.config({
- module: '鍒嗙被淇℃伅琛�',
- api: '/business/category',
- 'field.id': 'id',
- 'field.main': 'id'
- })
- this.search()
- },
- methods: {
- isChangeSelected(row,index){
- // if(row.isFixed ==1) {
- // return false
- // }
- return true
- },
- changeStatus (e, row) {
- this.working = true
- this.api.updateStatus({ id: row.id, status: e })
- .then(res => {
- this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
- this.search()
- })
- .catch(e => {
- this.$tip.apiFailed(e)
- })
- .finally(() => {
- this.working = false
- })
- }
- }
-}
-</script>
diff --git a/admin/src/views/business/categoryLevel.vue b/admin/src/views/business/categoryLevel.vue
deleted file mode 100644
index e080855..0000000
--- a/admin/src/views/business/categoryLevel.vue
+++ /dev/null
@@ -1,121 +0,0 @@
-<template>
- <TableLayout :permissions="['business:category:query']">
- <!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="鍚嶇О" prop="name">
- <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
- <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('鏂板缓鑰佸笀绛夌骇',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:category:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button></li>
- </ul>
- <el-table
- :height="tableHeightNew"
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" :selectable="isChangeSelected" width="55"></el-table-column>
- <el-table-column prop="name" label="鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column prop="icon" label="鍥炬爣" min-width="100px">
- <template slot-scope="{row}">
- <el-image v-if="row.iconFull" style="width: 50px; height: 50px; margin-right: 10px" :src="row.iconFull"
- :preview-src-list="[row.iconFull]">
- </el-image>
- </template>
- </el-table-column>
-
- <el-table-column label="鐘舵��">
- <template slot-scope="{row}">
- <el-switch :disabled="row.isFixed ==1" @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
- inactive-color="#ff4949" :active-value="0" :inactive-value="1">
- </el-switch>
- </template>
- </el-table-column>
- <el-table-column prop="remark" label="鎻忚堪" min-width="100px"></el-table-column>
- <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="100px"></el-table-column>
- <el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
- <el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
- <el-table-column
- v-if="containPermissions(['business:category:update', 'business:category:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaCategoryWindow.open('缂栬緫鑰佸笀绛夌骇', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:category:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">鍒犻櫎</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
- </template>
- <!-- 鏂板缓/淇敼 -->
- <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange"/>
- </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaCategoryWindow from '@/components/business/OperaCategoryWindow'
-export default {
- name: 'Category',
- extends: BaseTable,
- components: { TableLayout, Pagination, OperaCategoryWindow },
- data () {
- return {
- // 鎼滅储
- searchForm: {
- name: '',
- type: 3
- }
- }
- },
- created () {
- this.config({
- module: '鍒嗙被淇℃伅琛�',
- api: '/business/category',
- 'field.id': 'id',
- 'field.main': 'id'
- })
- this.search()
- },
- methods: {
- isChangeSelected(row,index){
- // if(row.isFixed ==1) {
- // return false
- // }
- return true
- },
- changeStatus (e, row) {
- this.working = true
- this.api.updateStatus({ id: row.id, status: e })
- .then(res => {
- this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
- this.search()
- })
- .catch(e => {
- this.$tip.apiFailed(e)
- })
- .finally(() => {
- this.working = false
- })
- }
- }
-}
-</script>
diff --git a/admin/src/views/business/importRecord.vue b/admin/src/views/business/importRecord.vue
deleted file mode 100644
index 145e518..0000000
--- a/admin/src/views/business/importRecord.vue
+++ /dev/null
@@ -1,152 +0,0 @@
-<template>
- <TableLayout :permissions="['business:importrecord:query']">
- <!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="鎿嶄綔浜�" prop="name">
- <el-input v-model="searchForm.updateUserName" placeholder="璇疯緭鍏ユ搷浣滀汉濮撳悕" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="涓氬姟绫诲瀷" prop="type">
- <el-select v-model="searchForm.type" placeholder="璇烽�夋嫨涓氬姟绫诲瀷" clearable @change="search" >
- <el-option :key="0" :value="0" label="鑰佸笀瀵煎叆"></el-option>
- <el-option :key="1" :value="1" label="妗堜緥瀵煎叆"></el-option>
- </el-select>
- </el-form-item>
- <div class="date-style" style="display: inline">
- <el-form-item label="瀵煎叆鏃堕棿" prop="starttime" >
- <el-date-picker
- style="width: 160px"
- clearable
- @change="search"
- v-model="searchForm.starttime"
- type="datetime"
- value-format="yyyy-MM-dd HH:mm:ss"
- format="yyyy-MM-dd HH:mm:ss"
- range-separator="鑷�"
- placeholder="寮�濮嬫椂闂�"
- ></el-date-picker>
- </el-form-item>
- <el-form-item label="-" label-width="10px" prop="endtime" >
- <el-date-picker
- style="width: 160px"
- clearable
- v-model="searchForm.endtime"
- type="datetime"
- @change="search"
- value-format="yyyy-MM-dd HH:mm:ss"
- format="yyyy-MM-dd HH:mm:ss"
- range-separator="鑷�"
- placeholder="鎴鏃堕棿"
- ></el-date-picker>
- </el-form-item>
- </div>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
- <el-table
- :height="tableHeightNew"
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column prop="title" label="鍐呭" min-width="200px" show-overflow-tooltip></el-table-column>
- <el-table-column label="涓氬姟绫诲瀷">
- <template slot-scope="{row}">
- <span v-if="row.type ==0 " class="green">鑰佸笀瀵煎叆</span>
- <span v-if="row.type == 1" class="orange" >妗堜緥瀵煎叆</span>
- </template>
- </el-table-column>
- <el-table-column label="鐘舵��">
- <template slot-scope="{row}">
- <span v-if="row.status ==0 " class="blue">鏈鐞�</span>
- <span v-if="row.status == 1" class="red">澶勭悊涓�</span>
- <span v-if="row.status == 2" class="grey">宸插鐞�</span>
- </template>
- </el-table-column>
- <el-table-column prop="totalNum" label="鎬昏褰曟暟" min-width="100px"></el-table-column>
- <el-table-column prop="doneNum" label="鎴愬姛褰曞叆鏁伴噺" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.status == 1" class="red">{{row.ingNum}}</span>
- <span v-else>{{ row.doneNum }}</span>
- </template>
- </el-table-column>
- <el-table-column prop="errorNum" label="褰曞叆澶辫触鏁伴噺" min-width="100px"></el-table-column>
- <el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
- <el-table-column prop="createTime" label="瀵煎叆鏃堕棿" min-width="150px"></el-table-column>
- <el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
- <el-table-column
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" v-if="row.type ==1" style="color: orange" @click="$refs.OperaCasesListWindow.open('鏌ョ湅瀵煎叆妗堜緥銆�'+row.title+'銆�',null, row.id)" icon="el-icon-open">鏌ョ湅瀵煎叆妗堜緥</el-button>
- <el-button type="text" v-if="row.type ==0" style="color: green" @click="$refs.OperaMemberListWindow.open('鏌ョ湅瀵煎叆妗堜緥銆�'+row.title+'銆�', row.id)" icon="el-icon-open">鏌ョ湅瀵煎叆鑰佸笀</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
- </template>
- <!-- 鏂板缓/淇敼 -->
- <OperaMemberListWindow ref="OperaMemberListWindow" @success="handlePageChange"/>
- <OperaCasesListWindow ref="OperaCasesListWindow" @success="handlePageChange"/>
- </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaMemberListWindow from '@/components/business/OperaMemberListWindow'
-import OperaCasesListWindow from '@/components/business/OperaCasesListWindow'
-export default {
- name: 'Category',
- extends: BaseTable,
- components: { TableLayout, Pagination, OperaCasesListWindow,OperaMemberListWindow},
- data () {
- return {
- // 鎼滅储
- searchForm: {
- updateUserName: '',
- starttime: null,
- endtime: null,
- type: ''
- }
- }
- },
- created () {
- this.config({
- module: '鍒嗙被淇℃伅琛�',
- api: '/business/importRecord',
- 'field.id': 'id',
- 'field.main': 'id'
- })
- this.search()
- },
- methods: {
- changeStatus (e, row) {
- this.working = true
- this.api.updateStatus({ id: row.id, status: e })
- .then(res => {
- this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
- this.search()
- })
- .catch(e => {
- this.$tip.apiFailed(e)
- })
- .finally(() => {
- this.working = false
- })
- }
- }
-}
-</script>
diff --git a/admin/src/views/business/member.vue b/admin/src/views/business/member.vue
deleted file mode 100644
index df448f1..0000000
--- a/admin/src/views/business/member.vue
+++ /dev/null
@@ -1,254 +0,0 @@
-<template>
- <TableLayout :permissions="['business:member:query']">
- <!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="鍚嶇О" prop="name">
- <el-input v-model="searchForm.name" style="width: 150px" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="宸ュ彿" prop="code">
- <el-input v-model="searchForm.code" style="width: 150px" placeholder="璇疯緭鍏ュ伐鍙�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鎴樺尯" prop="zhanquIds">
- <el-select
- v-model="searchForm.zhanquIds"
- style="width: 150px"
- placeholder="鎴樺尯"
- clearable
- @change="search"
- >
- <el-option
- v-for="item in cateList.filter(item=>{return item.type==0})"
- :key="item.id"
- :value="item.id"
- :label="item.name"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="鍟嗕笟鍖栫被鍨�" prop="bustypeIds">
- <el-select
- v-model="searchForm.bustypeIds"
- style="width: 150px"
- placeholder="鍟嗕笟鍖栫被鍨�"
- clearable
- @change="search"
- >
- <el-option
- v-for="item in cateList.filter(item=>{return item.type==1})"
- :key="item.id"
- :value="item.id"
- :label="item.name"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="鎿呴暱棰嗗煙" prop="fieldIdList">
- <el-select
- v-model="searchForm.fieldIdList"
- style="width: 150px"
- placeholder="鎿呴暱棰嗗煙"
- clearable
- multiple
- @change="search"
- >
- <el-option
- v-for="item in cateList.filter(item=>{return item.type==2})"
- :key="item.id"
- :value="item.id"
- :label="item.name"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="鑰佸笀绛夌骇" prop="levelId">
- <el-select
- v-model="searchForm.levelId"
- style="width: 150px"
- placeholder="鑰佸笀绛夌骇"
- clearable
- @change="search"
- >
- <el-option
- v-for="item in cateList.filter(item=>{return item.type==3})"
- :key="item.id"
- :value="item.id"
- :label="item.name"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="鐘舵��" prop="status">
- <el-select
- v-model="searchForm.status"
- placeholder="鐘舵��"
- clearable
- style="width: 150px"
- @change="search"
- >
- <el-option :key="0" :value="0" label="鍚敤"></el-option>
- <el-option :key="1" :value="1" label="绂佺敤"></el-option>
- </el-select>
- </el-form-item>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:member:create', 'business:member:delete']">
- <li><el-button type="primary" @click="$refs.operaMemberWindow.open('鏂板缓鑰佸笀',null)" icon="el-icon-plus" v-permissions="['business:member:create']">鏂板缓</el-button></li>
- <li><el-button type="primary" icon="el-icon-refresh" v-permissions="['business:member:create']" @click="$refs.OperaMemberImportWindow.open('鑰佸笀瀵煎叆', searchForm.companyType)">鎵归噺瀵煎叆</el-button></li>
- <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:member:delete']">鍒犻櫎</el-button></li>
- </ul>
- <el-table
- :height="tableHeightNew"
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="imgurl" label="鍥剧墖" min-width="100px">
- <template slot-scope="{row}">
- <el-image v-if="row.fullImgurl" style="width: 50px; height: 50px; margin-right: 10px" :src="row.fullImgurl"
- :preview-src-list="[row.fullImgurl]">
- </el-image>
- </template>
- </el-table-column>
- <el-table-column prop="code" label="宸ュ彿" min-width="100px"></el-table-column>
- <el-table-column prop="name" label="濮撳悕" min-width="100px"></el-table-column>
- <el-table-column prop="sex" label="鎬у埆" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.sex ==0">鐢�</span>
- <span v-if="row.sex ==1">濂�</span>
- </template>
- </el-table-column>
- <el-table-column prop="positon" label="宀椾綅" min-width="120px"></el-table-column>
- <el-table-column prop="levelName" label="绛夌骇" min-width="100px"></el-table-column>
- <el-table-column prop="jobYear" label="浠庝笟骞翠唤" min-width="100px"></el-table-column>
- <el-table-column prop="serveNum" label="鏈嶅姟鍟嗗満" min-width="100px">
- <template slot-scope="{row}">
- <span v-if="row.serveNum">{{row.serveNum}}涓�</span>
- </template>
- </el-table-column>
- <el-table-column prop="caseNum" label="鏍囨潌妗堜緥" min-width="100px">
- <template slot-scope="{row}">
- <span >{{row.caseNum || 0}}涓�</span>
- </template>
- </el-table-column>
- <el-table-column prop="busTypeNames" label="鍟嗕笟鍖栫被鍨�" min-width="200px">
- <template slot-scope="{row}">
- <div v-if="row.typeList && row.typeList.length">
- <div style="display:inline-block;" v-for="(item,index) in row.typeList">{{item.name||''}} <span v-if="index < row.typeList.length-1" style="display:inline-block;padding: 0px 3px;">/</span></div>
- </div>
- </template>
- </el-table-column>
- <el-table-column prop="areaNames" label="鏈嶅姟鎴樺尯" min-width="200px">
- <template slot-scope="{row}">
- <div v-if="row.zqList && row.zqList.length">
- <div style="display:inline-block;" v-for="(item,index) in row.zqList">{{item.name||''}} <span v-if="index < row.zqList.length-1" style="display:inline-block;padding: 0px 3px;">/</span></div>
- </div>
- </template>
- </el-table-column>
- <el-table-column prop="fieldNames" label="鎿呴暱棰嗗煙" min-width="200px">
- <template slot-scope="{row}">
- <div v-if="row.fieldList && row.fieldList.length">
- <div style="display:inline-block;" v-for="(item,index) in row.fieldList">{{item.name||''}} <span v-if="index < row.fieldList.length-1" style="display:inline-block;padding: 0px 3px;">/</span></div>
- </div>
- </template>
- </el-table-column>
- <el-table-column prop="fee" label="璐圭敤鏍囧噯(鍏�/鍛�)" min-width="130px"></el-table-column>
- <el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
- <el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
- <el-table-column label="鐘舵��" fixed="right">
- <template slot-scope="{row}">
- <el-switch @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
- inactive-color="#ff4949" :active-value="0" :inactive-value="1">
- </el-switch>
- </template>
- </el-table-column>
- <el-table-column
- v-if="containPermissions(['business:member:update', 'business:member:delete'])"
- label="鎿嶄綔"
- min-width="180"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaMemberWindow.open('缂栬緫鑰佸笀', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:member:update']">缂栬緫</el-button>
- <el-button type="text" @click="$refs.OperaCasesListWindow.open('鏌ョ湅鑰佸笀妗堜緥銆�'+row.name+'銆�', row.id)" icon="el-icon-open">妗堜緥</el-button>
- <el-button type="text" style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:member:delete']">鍒犻櫎</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
- </template>
- <!-- 鏂板缓/淇敼 -->
- <OperaMemberWindow ref="operaMemberWindow" @success="handlePageChange"/>
- <OperaMemberImportWindow ref="OperaMemberImportWindow" @success="handlePageChange" />
- <OperaCasesListWindow ref="OperaCasesListWindow" @success="handlePageChange" />
- </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaMemberWindow from '@/components/business/OperaMemberWindow'
-import OperaMemberImportWindow from '@/components/business/OperaMemberImportWindow'
-import OperaCasesListWindow from '@/components/business/OperaCasesListWindow'
-import { findAll as cateList } from '@/api/business/category'
-export default {
- name: 'Category',
- extends: BaseTable,
- components: { TableLayout, Pagination, OperaMemberWindow ,OperaMemberImportWindow,OperaCasesListWindow},
- data () {
- return {
- // 鎼滅储
- searchForm: {
- name: '',
- queryFlag:1,
- code: '',
- status: null,
- levelId:null,
- fieldIdList: [],
- zhanquIds:null,
- bustypeIds:null,
- type: 0
- },
- cateList:[]
- }
- },
- created () {
- this.config({
- module: '璁插笀淇℃伅琛�',
- api: '/business/member',
- 'field.id': 'id',
- 'field.main': 'id'
- })
- this.search()
- cateList({
- }).then(res => {
- this.cateList = res
- })
-
- },
- methods: {
- changeStatus (e, row) {
- this.working = true
- this.api.updateStatus({ id: row.id, status: e })
- .then(res => {
- this.$tip.apiSuccess(res || '鎿嶄綔鎴愬姛')
- this.handlePageChange()
- })
- .catch(e => {
- this.$tip.apiFailed(e)
- })
- .finally(() => {
- this.working = false
- })
- }
- }
-}
-</script>
diff --git a/admin/src/views/business/orderLog.vue b/admin/src/views/business/orderLog.vue
deleted file mode 100644
index e0c4d29..0000000
--- a/admin/src/views/business/orderLog.vue
+++ /dev/null
@@ -1,149 +0,0 @@
-<template>
- <TableLayout :permissions="['business:orderlog:query']">
- <!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="涓婚敭" prop="id">
- <el-input v-model="searchForm.id" placeholder="璇疯緭鍏ヤ富閿�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�" prop="deleted">
- <el-input v-model="searchForm.deleted" placeholder="璇疯緭鍏ユ槸鍚﹀凡鍒犻櫎 0鏈垹闄� 1宸插垹闄�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鍒涘缓浜虹紪鐮�" prop="createUser">
- <el-input v-model="searchForm.createUser" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鍒涘缓鏃堕棿" prop="createTime">
- <el-date-picker v-model="searchForm.createTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" @change="search"/>
- </el-form-item>
- <el-form-item label="鏇存柊浜虹紪鐮�" prop="updateUser">
- <el-input v-model="searchForm.updateUser" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鏇存柊鏃堕棿" prop="updateTime">
- <el-date-picker v-model="searchForm.updateTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" @change="search"/>
- </el-form-item>
- <el-form-item label="澶囨敞" prop="remark">
- <el-input v-model="searchForm.remark" placeholder="璇疯緭鍏ュ娉�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="璁㈠崟涓婚敭锛坥rders锛�" prop="orderId">
- <el-input v-model="searchForm.orderId" placeholder="璇疯緭鍏ヨ鍗曚富閿紙orders锛�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鏍囬" prop="title">
- <el-input v-model="searchForm.title" placeholder="璇疯緭鍏ユ爣棰�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鏃ュ織鍐呭" prop="logInfo">
- <el-input v-model="searchForm.logInfo" placeholder="璇疯緭鍏ユ棩蹇楀唴瀹�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鎿嶄綔绫诲瀷" prop="objType">
- <el-input v-model="searchForm.objType" placeholder="璇疯緭鍏ユ搷浣滅被鍨�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鎿嶄綔浜�" prop="memberId">
- <el-input v-model="searchForm.memberId" placeholder="璇疯緭鍏ユ搷浣滀汉" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鎿嶄綔鍓嶆暟鎹�" prop="beforeInfo">
- <el-input v-model="searchForm.beforeInfo" placeholder="璇疯緭鍏ユ搷浣滃墠鏁版嵁" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鎿嶄綔鍚庢暟鎹�" prop="afterInfo">
- <el-input v-model="searchForm.afterInfo" placeholder="璇疯緭鍏ユ搷浣滃悗鏁版嵁" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="璁㈠崟鐘舵��:0=寰呮帴鍗曪紱1=宸叉帴鍗曪紱2=杩涜涓紱3=宸插畬鎴愶紱99=宸插彇娑堬紱" prop="orderStatus">
- <el-input v-model="searchForm.orderStatus" placeholder="璇疯緭鍏ヨ鍗曠姸鎬�:0=寰呮帴鍗曪紱1=宸叉帴鍗曪紱2=杩涜涓紱3=宸插畬鎴愶紱99=宸插彇娑堬紱" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:orderlog:create', 'business:orderlog:delete']">
- <li><el-button type="primary" @click="$refs.operaOrderLogWindow.open('鏂板缓璁㈠崟鎿嶄綔鏃ュ織')" icon="el-icon-plus" v-permissions="['business:orderlog:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:orderlog:delete']">鍒犻櫎</el-button></li>
- </ul>
- <el-table
- :height="tableHeightNew"
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="id" label="涓婚敭" min-width="100px"></el-table-column>
- <el-table-column prop="deleted" label="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�" min-width="100px"></el-table-column>
- <el-table-column prop="createUser" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
- <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="updateUser" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
- <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
- <el-table-column prop="orderId" label="璁㈠崟涓婚敭锛坥rders锛�" min-width="100px"></el-table-column>
- <el-table-column prop="title" label="鏍囬" min-width="100px"></el-table-column>
- <el-table-column prop="logInfo" label="鏃ュ織鍐呭" min-width="100px"></el-table-column>
- <el-table-column prop="objType" label="鎿嶄綔绫诲瀷" min-width="100px"></el-table-column>
- <el-table-column prop="memberId" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
- <el-table-column prop="beforeInfo" label="鎿嶄綔鍓嶆暟鎹�" min-width="100px"></el-table-column>
- <el-table-column prop="afterInfo" label="鎿嶄綔鍚庢暟鎹�" min-width="100px"></el-table-column>
- <el-table-column prop="orderStatus" label="璁㈠崟鐘舵��:0=寰呮帴鍗曪紱1=宸叉帴鍗曪紱2=杩涜涓紱3=宸插畬鎴愶紱99=宸插彇娑堬紱" min-width="100px"></el-table-column>
- <el-table-column
- v-if="containPermissions(['business:orderlog:update', 'business:orderlog:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaOrderLogWindow.open('缂栬緫璁㈠崟鎿嶄綔鏃ュ織', row)" icon="el-icon-edit" v-permissions="['business:orderlog:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:orderlog:delete']">鍒犻櫎</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
- </template>
- <!-- 鏂板缓/淇敼 -->
- <OperaOrderLogWindow ref="operaOrderLogWindow" @success="handlePageChange"/>
- </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaOrderLogWindow from '@/components/business/OperaOrderLogWindow'
-export default {
- name: 'OrderLog',
- extends: BaseTable,
- components: { TableLayout, Pagination, OperaOrderLogWindow },
- data () {
- return {
- // 鎼滅储
- searchForm: {
- id: '',
- deleted: '',
- createUser: '',
- createTime: '',
- updateUser: '',
- updateTime: '',
- remark: '',
- orderId: '',
- title: '',
- logInfo: '',
- objType: '',
- memberId: '',
- beforeInfo: '',
- afterInfo: '',
- orderStatus: ''
- }
- }
- },
- created () {
- this.config({
- module: '璁㈠崟鎿嶄綔鏃ュ織',
- api: '/business/orderLog',
- 'field.id': 'id',
- 'field.main': 'id'
- })
- this.search()
- }
-}
-</script>
diff --git a/admin/src/views/business/orderSet.vue b/admin/src/views/business/orderSet.vue
deleted file mode 100644
index dab87ff..0000000
--- a/admin/src/views/business/orderSet.vue
+++ /dev/null
@@ -1,178 +0,0 @@
-<template>
- <div class="box" style="max-height:calc(100% - 60px);margin-bottom:50px;overflow-y: auto" >
- <el-form :model="form" ref="form">
- <div style="margin: 20px 0 20px 0;background-color: rgba(140,147,157,0.61)">
- <span style="font-size: 15px; font-weight: bold">銆�1銆戝彂鍗曟柟鍙栨秷璁㈠崟閰嶇疆</span>
- </div>
- <el-form-item label="" label-width="10px" prop="releaseCancelTime">
- 鎺ュ崟鍚庯紝璺濈浠诲姟寮�濮嬪墠
- <el-input
- style="width: 100px;margin: 0px 20px"
- type="number"
- v-model="form.releaseCancelTime"
- placeholder="璇疯緭鍏�"
- v-trim
- />灏忔椂锛屼笉鍙彇娑�
- </el-form-item>
- <el-form-item label="" label-width="10px" prop="releaseCancelTimes">
- 姣忔棩鍙富鍔ㄥ彇娑�
- <el-input
- style="width: 100px;margin: 0px 20px"
- type="number"
- v-model="form.releaseCancelTimes"
- placeholder="璇疯緭鍏�"
- v-trim
- />娆�<span style="font-size: 12px;color: #8c939d">锛堟敞锛氳鍗曟帴鍗曞悗鍙彇娑堟椂闂磋寖鍥村唴锛�</span>
- </el-form-item>
- <div style="margin:50px 0 20px 0;background-color: rgba(140,147,157,0.61)">
- <span style="font-size: 15px; font-weight: bold">銆�2銆戞帴鍗曟柟鍙栨秷璁㈠崟閰嶇疆锛�</span>
- </div>
- <el-form-item label="" label-width="10px" prop="receiveCancelTime">
- 鎺ュ崟鍚庯紝璺濈浠诲姟寮�濮嬪墠
- <el-input
- style="width: 100px;margin: 0px 20px"
- type="number"
- v-model="form.receiveCancelTime"
- placeholder="璇疯緭鍏�"
- v-trim
- />灏忔椂锛屼笉鍙彇娑�
- </el-form-item>
- <el-form-item label="" label-width="10px" prop="receiveCancelTimes">
- 姣忔棩鍙富鍔ㄥ彇娑�
- <el-input
- style="width: 100px;margin: 0px 20px"
- type="number"
- v-model="form.receiveCancelTimes"
- placeholder="璇疯緭鍏�"
- v-trim
- />娆�<span style="font-size: 12px;color: #8c939d">锛堟敞锛氳鍗曟帴鍗曞悗鍙彇娑堟椂闂磋寖鍥村唴锛�</span>
- </el-form-item>
- <div style="margin:50px 0 20px 0;background-color: rgba(140,147,157,0.61)">
- <span style="font-size: 15px; font-weight: bold">銆�3銆戣嚜鍔ㄦ淳鍗曪細</span>
- </div>
- <el-form-item label="" label-width="10px" prop="autoDispatch">
- <el-input
- style="width: 100px;margin: 0px 20px"
- type="number"
- v-model="form.autoDispatch"
- placeholder="璇疯緭鍏�"
- v-trim
- />鍒嗛挓鏃犱汉鎺ュ崟锛岀郴缁熻嚜鍔ㄦ淳鍗�
- </el-form-item>
- <div style="margin:50px 0 20px 0;background-color: rgba(140,147,157,0.61)">
- <span style="font-size: 15px; font-weight: bold">銆�4銆戞淳鍗曡寖鍥达細</span>
- </div>
- <el-form-item label="" label-width="10px" prop="autoDispatchDistance">
- 璺濈鐢ㄥ伐鍦扮偣<el-input
- style="width: 100px;margin: 0px 20px"
- type="number"
- v-model="form.autoDispatchDistance"
- placeholder="璇疯緭鍏�"
- v-trim
- />km鑼冨洿鍐咃紝杩涜娲惧崟
- </el-form-item>
- <div style="margin:50px 0 20px 0;background-color: rgba(140,147,157,0.61)">
- <span style="font-size: 15px; font-weight: bold">銆�5銆戣鍗曚慨鏀癸細</span>
- </div>
- <el-form-item label="" label-width="10px" prop="autoConfirm">
- 璁㈠崟淇敼鍚庯紝鎺ュ崟鏂�<el-input
- style="width: 100px;margin: 0px 20px"
- type="number"
- v-model="form.autoConfirm"
- placeholder="璇疯緭鍏�"
- v-trim
- />鍒嗛挓鍚庢湭纭锛岀郴缁熻嚜鍔ㄥ悓鎰�
- </el-form-item>
- <el-form-item style="margin-top: 100px;width: 100%;text-align: center">
- <el-button type="primary" style="width: 300px" :loading="working" @click="submit">淇濆瓨閰嶇疆椤�</el-button>
- </el-form-item>
- </el-form>
- </div>
-</template>
-
-<script>
-import { getPlatformConfig, updPlatformConfig } from '@/api/system/dictData'
-export default {
- name: '',
- data () {
- return {
- uploadData: {
- folder: ''
- },
- isUploading: false,
- working: false,
- form: {
- releaseCancelTimes: null,
- releaseCancelTime: null,
- receiveCancelTimes: null,
- receiveCancelTime: null,
- autoDispatch: null,
- autoDispatchDistance: null,
- autoConfirm: null
- }
- }
- },
-
- created () {
- this.getData()
- },
-
- methods: {
- getData () {
- getPlatformConfig({})
- .then(res => {
- if (res) {
- this.form ={
- releaseCancelTimes: res.releaseCancelTimes || null,
- releaseCancelTime: res.releaseCancelTime|| null,
- receiveCancelTimes: res.receiveCancelTimes|| null,
- receiveCancelTime: res.receiveCancelTime|| null,
- autoDispatch: res.autoDispatch|| null,
- autoDispatchDistance: res.autoDispatchDistance|| null,
- autoConfirm: res.autoConfirm|| null
- }
- }
- })
- },
- submit () {
- console.log(this.form)
- this.$refs.form.validate((valid) => {
- if (!valid) {
- return
- }
- // 璋冪敤鏂板缓鎺ュ彛
- this.isWorking = true
- updPlatformConfig(this.form).then(res => {
- this.$message.success('淇濆瓨鎴愬姛')
- this.getData()
- })
- .catch(e => {
- this.$tip.apiFailed(e)
- })
- .finally(() => {
- this.isWorking = false
- })
- })
- }
- }
-}
-</script>
-<style lang="scss" scoped>
-.el-container /deep/ .el-main{
- width: 100%;
- overflow-y: auto !important ;
- height: calc(100% - 94px);
-}
-/deep/ .el-main{
- width: 100%;
- //height: 100%;
- overflow-y: auto !important ;
- height: calc(100% - 94px);
-}
-.box {
- width: 100%;
- padding: 30px;
- box-sizing: border-box;
- background: #ffffff;
-}
-</style>
diff --git a/admin/src/views/business/receiveWeight.vue b/admin/src/views/business/receiveWeight.vue
deleted file mode 100644
index 5168e36..0000000
--- a/admin/src/views/business/receiveWeight.vue
+++ /dev/null
@@ -1,97 +0,0 @@
-<template>
- <TableLayout :permissions="['business:receiveweight:query']">
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:receiveweight:create', 'business:receiveweight:delete']">
- <li><el-button type="primary" @click="$refs.operaReceiveWeightWindow.open('鏂板缓鎺ュ崟鏉冮噸閰嶇疆琛�')" icon="el-icon-plus" v-permissions="['business:receiveweight:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:receiveweight:delete']">鍒犻櫎</el-button></li>
- </ul>
- <el-table
- :height="tableHeightNew"
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="receiveMax" label="鏈�澶ф帴鍗曢噺" min-width="100px">
- <template slot-scope="{row}">
- {{row.receiveMin||0}}{{' - '}}{{row.receiveMax||0}}
- </template>
- </el-table-column>
-<!-- <el-table-column label="鐘舵��">
- <template slot-scope="{row}">
- <el-switch :disabled="row.isFixed ==1" @change="changeStatus($event, row)" v-model="row.status" active-color="#13ce66"
- inactive-color="#ff4949" :active-value="0" :inactive-value="1">
- </el-switch>
- </template>
- </el-table-column>-->
- <el-table-column prop="level" label="浼樺厛绾�" min-width="100px"></el-table-column>
- <el-table-column prop="delayTime" label="璁㈠崟鏌ョ湅寤惰繜鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
- <el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
- <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
- <el-table-column
- v-if="containPermissions(['business:receiveweight:update', 'business:receiveweight:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaReceiveWeightWindow.open('缂栬緫鎺ュ崟鏉冮噸閰嶇疆琛�', row)" icon="el-icon-edit" v-permissions="['business:receiveweight:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:receiveweight:delete']">鍒犻櫎</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
- </template>
- <!-- 鏂板缓/淇敼 -->
- <OperaReceiveWeightWindow ref="operaReceiveWeightWindow" @success="handlePageChange"/>
- </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaReceiveWeightWindow from '@/components/business/OperaReceiveWeightWindow'
-export default {
- name: 'ReceiveWeight',
- extends: BaseTable,
- components: { TableLayout, Pagination, OperaReceiveWeightWindow },
- data () {
- return {
- // 鎼滅储
- searchForm: {
- id: '',
- deleted: '',
- status: '',
- createUser: '',
- createTime: '',
- updateUser: '',
- updateTime: '',
- remark: '',
- receiveMax: '',
- receiveMin: '',
- level: '',
- delayTime: '',
- sortnum: ''
- }
- }
- },
- created () {
- this.config({
- module: '鎺ュ崟鏉冮噸閰嶇疆琛�',
- api: '/business/receiveWeight',
- 'field.id': 'id',
- 'field.main': 'id'
- })
- this.search()
- }
-}
-</script>
diff --git a/admin/src/views/business/withdrawalOrders.vue b/admin/src/views/business/withdrawalOrders.vue
deleted file mode 100644
index da1dfce..0000000
--- a/admin/src/views/business/withdrawalOrders.vue
+++ /dev/null
@@ -1,106 +0,0 @@
-<template>
- <TableLayout :permissions="['business:withdrawalorders:query']">
- <!-- 鎼滅储琛ㄥ崟 -->
- <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="浼氬憳涓婚敭" prop="memberId">
- <el-input v-model="searchForm.memberId" placeholder="璇疯緭鍏ヤ細鍛樹富閿�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <el-form-item label="鐘舵��:0=鎻愮幇鐢宠涓�:1=鎻愮幇鎴愬姛锛�2=鎻愮幇澶辫触锛�" prop="status">
- <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬�:0=鎻愮幇鐢宠涓�:1=鎻愮幇鎴愬姛锛�2=鎻愮幇澶辫触锛�" @keypress.enter.native="search"></el-input>
- </el-form-item>
- <section>
- <el-button type="primary" @click="search">鎼滅储</el-button>
- <el-button @click="reset">閲嶇疆</el-button>
- </section>
- </el-form>
- <!-- 琛ㄦ牸鍜屽垎椤� -->
- <template v-slot:table-wrap>
- <ul class="toolbar" v-permissions="['business:withdrawalorders:create', 'business:withdrawalorders:delete']">
- <li><el-button type="primary" @click="$refs.operaWithdrawalOrdersWindow.open('鏂板缓鎻愮幇鐢宠璁板綍')" icon="el-icon-plus" v-permissions="['business:withdrawalorders:create']">鏂板缓</el-button></li>
- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:withdrawalorders:delete']">鍒犻櫎</el-button></li>
- </ul>
- <el-table
- :height="tableHeightNew"
- v-loading="isWorking.search"
- :data="tableData.list"
- stripe
- @selection-change="handleSelectionChange"
- >
- <el-table-column type="selection" width="55"></el-table-column>
- <el-table-column prop="id" label="涓婚敭" min-width="100px"></el-table-column>
- <el-table-column prop="deleted" label="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�" min-width="100px"></el-table-column>
- <el-table-column prop="createUser" label="鍒涘缓浜虹紪鐮�" min-width="100px"></el-table-column>
- <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="updateUser" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
- <el-table-column prop="updateTime" label="鏇存柊鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
- <el-table-column prop="memberId" label="浼氬憳涓婚敭" min-width="100px"></el-table-column>
- <el-table-column prop="amount" label="鎻愮幇閲戦(鍗曚綅:鍒�)" min-width="100px"></el-table-column>
- <el-table-column prop="wxExternalNo" label="寰俊骞冲彴浜ゆ槗璁㈠崟鍙�" min-width="100px"></el-table-column>
- <el-table-column prop="status" label="鐘舵��:0=鎻愮幇鐢宠涓�:1=鎻愮幇鎴愬姛锛�2=鎻愮幇澶辫触锛�" min-width="100px"></el-table-column>
- <el-table-column prop="doneTime" label="鎻愮幇瀹屾垚鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="doneInfo" label="瀹屾垚澶囨敞" min-width="100px"></el-table-column>
- <el-table-column
- v-if="containPermissions(['business:withdrawalorders:update', 'business:withdrawalorders:delete'])"
- label="鎿嶄綔"
- min-width="120"
- fixed="right"
- >
- <template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaWithdrawalOrdersWindow.open('缂栬緫鎻愮幇鐢宠璁板綍', row)" icon="el-icon-edit" v-permissions="['business:withdrawalorders:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:withdrawalorders:delete']">鍒犻櫎</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- :pagination="tableData.pagination"
- >
- </pagination>
- </template>
- <!-- 鏂板缓/淇敼 -->
- <OperaWithdrawalOrdersWindow ref="operaWithdrawalOrdersWindow" @success="handlePageChange"/>
- </TableLayout>
-</template>
-
-<script>
-import BaseTable from '@/components/base/BaseTable'
-import TableLayout from '@/layouts/TableLayout'
-import Pagination from '@/components/common/Pagination'
-import OperaWithdrawalOrdersWindow from '@/components/business/OperaWithdrawalOrdersWindow'
-export default {
- name: 'WithdrawalOrders',
- extends: BaseTable,
- components: { TableLayout, Pagination, OperaWithdrawalOrdersWindow },
- data () {
- return {
- // 鎼滅储
- searchForm: {
- id: '',
- deleted: '',
- createUser: '',
- createTime: '',
- updateUser: '',
- updateTime: '',
- remark: '',
- memberId: '',
- amount: '',
- wxExternalNo: '',
- status: '',
- doneTime: '',
- doneInfo: ''
- }
- }
- },
- created () {
- this.config({
- module: '鎻愮幇鐢宠璁板綍',
- api: '/business/withdrawalOrders',
- 'field.id': 'id',
- 'field.main': 'id'
- })
- this.search()
- }
-}
-</script>
diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index 1a09910..706d1ad 100644
--- a/admin/src/views/index.vue
+++ b/admin/src/views/index.vue
@@ -3,7 +3,7 @@
<div class="home_header">
<div class="mb10 fs17">涓嬪崍濂斤紝{{ userInfo.realname }}</div>
<div class="fs13">
- 浠婂ぉ鏄� {{ nowDate }} {{ nowWeek }}锛屾杩庤闂織閭︾偣灏嗗悗鍙扮鐞嗙郴缁�
+ 浠婂ぉ鏄� {{ nowDate }} {{ nowWeek }}锛屾杩庤闂眴绫崇數鍔ㄨ溅鍚庡彴绠$悊绯荤粺
</div>
</div>
</div>
diff --git a/admin/src/views/login.vue b/admin/src/views/login.vue
index 4003310..b5f74d1 100644
--- a/admin/src/views/login.vue
+++ b/admin/src/views/login.vue
@@ -1,7 +1,7 @@
<template>
<div class="wrap">
<div class="introduce">
- <h2>蹇楅偊鐐瑰皢鍚庡彴绠$悊绯荤粺</h2>
+ <h2>璞嗙背鐢靛姩杞﹀悗鍙扮鐞嗙郴缁�</h2>
<h3></h3>
</div>
<div class="login">
diff --git a/server/admin/pom.xml b/server/admin/pom.xml
index adf6033..ab08150 100644
--- a/server/admin/pom.xml
+++ b/server/admin/pom.xml
@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.doumee</groupId>
- <artifactId>dianjiang</artifactId>
+ <artifactId>diandongche</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>admin</artifactId>
diff --git a/server/admin/src/main/java/com/doumee/api/business/CasesController.java b/server/admin/src/main/java/com/doumee/api/business/CasesController.java
deleted file mode 100644
index bf460f9..0000000
--- a/server/admin/src/main/java/com/doumee/api/business/CasesController.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.doumee.api.business;
-
-import com.doumee.core.annotation.excel.ExcelExporter;
-import com.doumee.core.annotation.pr.PreventRepeat;
-
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.dao.business.model.Cases;
-import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.model.Member;
-import com.doumee.service.business.CasesService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletResponse;
-
-import com.doumee.api.BaseController;
-/**
- * 鍒嗙被淇℃伅琛–ontroller瀹氫箟
- * @author doumee
- * @date 2026-01-27 16:02:37
- */
-@Api(tags = "tableName鎺ュ彛")
-@RestController
-@RequestMapping("/business/cases")
-public class CasesController extends BaseController {
-
- @Autowired
- private CasesService casesService;
-
- @PreventRepeat
- @ApiOperation("鏂板缓")
- @PostMapping("/create")
- @RequiresPermissions("business:cases:create")
- public ApiResponse create(@RequestBody Cases cases) {
- return ApiResponse.success(casesService.create(cases));
- }
-
- @ApiOperation("鏍规嵁ID鍒犻櫎")
- @GetMapping("/delete/{id}")
- @RequiresPermissions("business:cases:delete")
- public ApiResponse deleteById(@PathVariable Integer id) {
- casesService.deleteById(id);
- return ApiResponse.success(null);
- }
- @ApiOperation("淇敼鐘舵��")
- @PostMapping("/updateStatus")
- @RequiresPermissions("business:cases:update")
- public ApiResponse updateStatus( @RequestBody Cases param) {
- casesService.updateStatus(param);
- return ApiResponse.success(null);
- }
- @ApiOperation("鎵归噺鍒犻櫎")
- @GetMapping("/delete/batch")
- @RequiresPermissions("business:cases:delete")
- public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
- casesService.deleteByIdInBatch(this.getIdList(ids));
- return ApiResponse.success(null);
- }
-
- @ApiOperation("鏍规嵁ID淇敼")
- @PostMapping("/updateById")
- @RequiresPermissions("business:cases:update")
- public ApiResponse updateById(@RequestBody Cases cases) {
- casesService.updateById(cases);
- return ApiResponse.success(null);
- }
-
- @ApiOperation("鍒嗛〉鏌ヨ")
- @PostMapping("/page")
- @RequiresPermissions("business:cases:query")
- public ApiResponse<PageData<Cases>> findPage (@RequestBody PageWrap<Cases> pageWrap) {
- return ApiResponse.success(casesService.findPage(pageWrap));
- }
-
- @ApiOperation("瀵煎嚭Excel")
- @PostMapping("/exportExcel")
- @RequiresPermissions("business:cases:exportExcel")
- public void exportExcel (@RequestBody PageWrap<Cases> pageWrap, HttpServletResponse response) {
- ExcelExporter.build(Cases.class).export(casesService.findPage(pageWrap).getRecords(), "鍒嗙被淇℃伅琛�", response);
- }
-
- @ApiOperation("鏍规嵁ID鏌ヨ")
- @GetMapping("/{id}")
- @RequiresPermissions("business:cases:query")
- public ApiResponse findById(@PathVariable Integer id) {
- return ApiResponse.success(casesService.findById(id));
- }
-}
diff --git a/server/admin/src/main/java/com/doumee/api/business/ImportRecordController.java b/server/admin/src/main/java/com/doumee/api/business/ImportRecordController.java
deleted file mode 100644
index b506794..0000000
--- a/server/admin/src/main/java/com/doumee/api/business/ImportRecordController.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package com.doumee.api.business;
-
-import com.doumee.core.annotation.excel.ExcelExporter;
-import com.doumee.core.annotation.pr.PreventRepeat;
-
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.dao.business.model.ImportRecord;
-import com.doumee.core.utils.Utils;
-import com.doumee.service.business.ImportRecordService;
-import io.swagger.annotations.*;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletResponse;
-
-import com.doumee.api.BaseController;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.File;
-
-/**
- * 鍒嗙被淇℃伅琛–ontroller瀹氫箟
- * @author doumee
- * @date 2026-01-27 16:02:37
- */
-@Api(tags = "鍒嗙被淇℃伅琛ㄦ帴鍙�")
-@RestController
-@RequestMapping("/business/importRecord")
-public class ImportRecordController extends BaseController {
-
- @Autowired
- private ImportRecordService importRecordService;
-
- @PreventRepeat
- @ApiOperation("鏂板缓")
- @PostMapping("/create")
- @RequiresPermissions("business:importrecord:create")
- public ApiResponse create(@RequestBody ImportRecord importRecord) {
- return ApiResponse.success(importRecordService.create(importRecord));
- }
-
- @ApiOperation("鏍规嵁ID鍒犻櫎")
- @GetMapping("/delete/{id}")
- @RequiresPermissions("business:importrecord:delete")
- public ApiResponse deleteById(@PathVariable Integer id) {
- importRecordService.deleteById(id);
- return ApiResponse.success(null);
- }
-
- @ApiOperation("鎵归噺鍒犻櫎")
- @GetMapping("/delete/batch")
- @RequiresPermissions("business:importrecord:delete")
- public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
- importRecordService.deleteByIdInBatch(this.getIdList(ids));
- return ApiResponse.success(null);
- }
-
- @ApiOperation("鏍规嵁ID淇敼")
- @PostMapping("/updateById")
- @RequiresPermissions("business:importrecord:update")
- public ApiResponse updateById(@RequestBody ImportRecord importRecord) {
- importRecordService.updateById(importRecord);
- return ApiResponse.success(null);
- }
-
- @ApiOperation("鍒嗛〉鏌ヨ")
- @PostMapping("/page")
- @RequiresPermissions("business:importrecord:query")
- public ApiResponse<PageData<ImportRecord>> findPage (@RequestBody PageWrap<ImportRecord> pageWrap) {
- return ApiResponse.success(importRecordService.findPage(pageWrap));
- }
-
- @ApiOperation("瀵煎嚭Excel")
- @PostMapping("/exportExcel")
- @RequiresPermissions("business:importrecord:exportExcel")
- public void exportExcel (@RequestBody PageWrap<ImportRecord> pageWrap, HttpServletResponse response) {
- ExcelExporter.build(ImportRecord.class).export(importRecordService.findPage(pageWrap).getRecords(), "鍒嗙被淇℃伅琛�", response);
- }
-
- @ApiOperation("鏍规嵁ID鏌ヨ")
- @GetMapping("/{id}")
- @RequiresPermissions("business:importrecord:query")
- public ApiResponse findById(@PathVariable Integer id) {
- return ApiResponse.success(importRecordService.findById(id));
- }
-
- @ApiOperation(value = "淇℃伅瀵煎叆" ,notes = "淇濆崟鐢宠")
- @PostMapping("/importExcel")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "file", value = "file", required = true, paramType = "query", dataType = "file", dataTypeClass = File.class),
- @ApiImplicitParam(name = "瀵煎叆绫诲瀷 0浜哄憳 1妗堜緥", value = "type", required = true, paramType = "query", dataType = "Integer",example = "0",dataTypeClass = Integer.class),
- })
- public ApiResponse<String> importExcel (@ApiParam(value = "file") MultipartFile file, @ApiParam(value = "type") Integer type) {
- ImportRecord importRecord = importRecordService.importBatch(file,type);
- importRecordService.dealImporTask(importRecord);
- return ApiResponse.success("鏂囦欢涓婁紶鎴愬姛");
- }
-}
diff --git a/server/admin/src/main/java/com/doumee/api/business/MemberController.java b/server/admin/src/main/java/com/doumee/api/business/MemberController.java
deleted file mode 100644
index 31d00f0..0000000
--- a/server/admin/src/main/java/com/doumee/api/business/MemberController.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package com.doumee.api.business;
-
-import com.doumee.core.annotation.excel.ExcelExporter;
-import com.doumee.core.annotation.pr.PreventRepeat;
-
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.dao.business.model.Category;
-import com.doumee.dao.business.model.Member;
-import com.doumee.core.utils.Utils;
-import com.doumee.service.business.MemberService;
-import io.swagger.annotations.*;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletResponse;
-
-import com.doumee.api.BaseController;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.File;
-import java.util.List;
-
-/**
- * 浼氬憳淇℃伅琛–ontroller瀹氫箟
- * @author doumee
- * @date 2026-01-27 16:02:37
- */
-@Api(tags = "浼氬憳淇℃伅琛ㄦ帴鍙�")
-@RestController
-@RequestMapping("/business/member")
-public class MemberController extends BaseController {
-
- @Autowired
- private MemberService memberService;
-
- @PreventRepeat
- @ApiOperation("鏂板缓")
- @PostMapping("/create")
- @RequiresPermissions("business:member:create")
- public ApiResponse create(@RequestBody Member member) {
- return ApiResponse.success(memberService.create(member));
- }
-
- @ApiOperation("鏍规嵁ID鍒犻櫎")
- @GetMapping("/delete/{id}")
- @RequiresPermissions("business:member:delete")
- public ApiResponse deleteById(@PathVariable Integer id) {
- memberService.deleteById(id);
- return ApiResponse.success(null);
- }
-
- @ApiOperation("鎵归噺鍒犻櫎")
- @GetMapping("/delete/batch")
- @RequiresPermissions("business:member:delete")
- public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
- memberService.deleteByIdInBatch(this.getIdList(ids));
- return ApiResponse.success(null);
- }
-
- @ApiOperation("鏍规嵁ID淇敼")
- @PostMapping("/updateById")
- @RequiresPermissions("business:member:update")
- public ApiResponse updateById(@RequestBody Member member) {
- memberService.updateById(member);
- return ApiResponse.success(null);
- }
- @ApiOperation("淇敼鐘舵��")
- @PostMapping("/updateStatus")
- @RequiresPermissions("business:member:update")
- public ApiResponse updateStatus( @RequestBody Member param) {
- memberService.updateStatus(param);
- return ApiResponse.success(null);
- }
- @ApiOperation("鍒嗛〉鏌ヨ")
- @PostMapping("/page")
- @RequiresPermissions("business:member:query")
- public ApiResponse<PageData<Member>> findPage (@RequestBody PageWrap<Member> pageWrap) {
- return ApiResponse.success(memberService.findPage(pageWrap));
- }
- @ApiOperation("鍒嗛〉鏌ヨ")
- @PostMapping("/list")
- @RequiresPermissions("business:member:query")
- public ApiResponse<List<Member>> findList (@RequestBody Member pageWrap) {
- return ApiResponse.success(memberService.findList(pageWrap));
- }
-
- @ApiOperation("瀵煎嚭Excel")
- @PostMapping("/exportExcel")
- @RequiresPermissions("business:member:exportExcel")
- public void exportExcel (@RequestBody PageWrap<Member> pageWrap, HttpServletResponse response) {
- ExcelExporter.build(Member.class).export(memberService.findPage(pageWrap).getRecords(), "浼氬憳淇℃伅琛�", response);
- }
-
-
- @ApiOperation("鏍规嵁ID鏌ヨ")
- @GetMapping("/{id}")
- @RequiresPermissions("business:member:query")
- public ApiResponse findById(@PathVariable Integer id) {
- return ApiResponse.success(memberService.findById(id));
- }
-}
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
new file mode 100644
index 0000000..d0c1918
--- /dev/null
+++ b/server/admin/src/main/java/com/doumee/api/business/OrdersController.java
@@ -0,0 +1,85 @@
+package com.doumee.api.business;
+
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Orders;
+import com.doumee.core.utils.Utils;
+import com.doumee.service.business.OrdersService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import com.doumee.api.BaseController;
+/**
+ * 璁㈠崟璁板綍琛ㄤ俊鎭〃Controller瀹氫箟
+ * @author doumee
+ * @date 2026-02-02 11:10:42
+ */
+@Api(tags = "璁㈠崟淇℃伅鎺ュ彛")
+@RestController
+@RequestMapping("/business/orders")
+public class OrdersController extends BaseController {
+
+ @Autowired
+ private OrdersService ordersService;
+
+ @PreventRepeat
+ @ApiOperation("鏂板缓")
+ @PostMapping("/create")
+ @RequiresPermissions("business:orders:create")
+ public ApiResponse create(@RequestBody Orders orders) {
+ return ApiResponse.success(ordersService.create(orders));
+ }
+
+ @ApiOperation("鏍规嵁ID鍒犻櫎")
+ @GetMapping("/delete/{id}")
+ @RequiresPermissions("business:orders:delete")
+ public ApiResponse deleteById(@PathVariable Integer id) {
+ ordersService.deleteById(id);
+ return ApiResponse.success(null);
+ }
+
+ @ApiOperation("鎵归噺鍒犻櫎")
+ @GetMapping("/delete/batch")
+ @RequiresPermissions("business:orders:delete")
+ public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+ ordersService.deleteByIdInBatch(this.getIdList(ids));
+ return ApiResponse.success(null);
+ }
+
+ @ApiOperation("鏍规嵁ID淇敼")
+ @PostMapping("/updateById")
+ @RequiresPermissions("business:orders:update")
+ public ApiResponse updateById(@RequestBody Orders orders) {
+ ordersService.updateById(orders);
+ return ApiResponse.success(null);
+ }
+
+ @ApiOperation("鍒嗛〉鏌ヨ")
+ @PostMapping("/page")
+ @RequiresPermissions("business:orders:query")
+ public ApiResponse<PageData<Orders>> findPage (@RequestBody PageWrap<Orders> pageWrap) {
+ return ApiResponse.success(ordersService.findPage(pageWrap));
+ }
+
+ @ApiOperation("瀵煎嚭Excel")
+ @PostMapping("/exportExcel")
+ @RequiresPermissions("business:orders:exportExcel")
+ public void exportExcel (@RequestBody PageWrap<Orders> pageWrap, HttpServletResponse response) {
+ ExcelExporter.build(Orders.class).export(ordersService.findPage(pageWrap).getRecords(), "璁㈠崟璁板綍琛ㄤ俊鎭〃", response);
+ }
+
+ @ApiOperation("鏍规嵁ID鏌ヨ")
+ @GetMapping("/{id}")
+ @RequiresPermissions("business:orders:query")
+ public ApiResponse findById(@PathVariable Integer id) {
+ return ApiResponse.success(ordersService.findById(id));
+ }
+}
diff --git a/server/admin/src/main/java/com/doumee/api/web/WebController.java b/server/admin/src/main/java/com/doumee/api/web/WebController.java
new file mode 100644
index 0000000..c9d1836
--- /dev/null
+++ b/server/admin/src/main/java/com/doumee/api/web/WebController.java
@@ -0,0 +1,44 @@
+package com.doumee.api.web;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.dto.PayOrderResponse;
+import com.doumee.dao.business.model.Orders;
+import com.doumee.service.business.OrdersService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 璁㈠崟璁板綍琛ㄤ俊鎭〃Controller瀹氫箟
+ * @author doumee
+ * @date 2026-02-02 11:10:42
+ */
+@Api(tags = "璁㈠崟淇℃伅鎺ュ彛")
+@RestController
+@RequestMapping("/web/orders")
+public class WebController extends BaseController {
+ @Autowired
+ private OrdersService ordersService;
+ @ApiOperation("璁㈠崟鏂板缓")
+ @PostMapping("/create")
+ public ApiResponse<PayOrderResponse> createOrder(@RequestBody Orders orders, RedirectAttributes redirectAttributes) {
+ PayOrderResponse result = ordersService.createPay(orders);
+ return ApiResponse.success(result);
+ }
+
+ @ApiOperation("鏍规嵁ID鏌ヨ")
+ @GetMapping("detail")
+ public ApiResponse findById(@RequestParam Integer id) {
+ return ApiResponse.success(ordersService.findById(id));
+ }
+}
diff --git a/server/admin/src/main/java/com/doumee/init/InitService.java b/server/admin/src/main/java/com/doumee/init/InitService.java
index d33e9f0..fcacbaf 100644
--- a/server/admin/src/main/java/com/doumee/init/InitService.java
+++ b/server/admin/src/main/java/com/doumee/init/InitService.java
@@ -1,20 +1,10 @@
package com.doumee.init;
-import com.doumee.service.business.ImportRecordService;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-
-import javax.annotation.PostConstruct;
@Service
@Slf4j
public class InitService {
- @Autowired
- private ImportRecordService importRecordService;
- @PostConstruct
- public void initImportTaskStatus() {
- importRecordService.clearImporTask();
- }
}
diff --git a/server/admin/src/main/resources/application.yml b/server/admin/src/main/resources/application.yml
index 94a46dc..41f7978 100644
--- a/server/admin/src/main/resources/application.yml
+++ b/server/admin/src/main/resources/application.yml
@@ -3,7 +3,7 @@
port: 11010
# 椤圭洰淇℃伅閰嶇疆
project:
- name: 蹇楅偊-鐐瑰皢
+ name: 璞嗙背鐢靛姩杞�
version: 1.0.0
# 鐜锛岀敓浜х幆澧僷roduction锛屽紑鍙戠幆澧僤evelopment
env: production
diff --git a/server/pom.xml b/server/pom.xml
index 4c972ee..359ff7f 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -4,14 +4,13 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.doumee</groupId>
- <artifactId>dianjiang</artifactId>
+ <artifactId>diandongche</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
- <name>dianjiang</name>
+ <name>diandongche</name>
<description></description>
<modules>
<module>admin</module>
- <module>web</module>
<module>services</module>
</modules>
diff --git a/server/services/pom.xml b/server/services/pom.xml
index c01a358..61e3a9d 100644
--- a/server/services/pom.xml
+++ b/server/services/pom.xml
@@ -6,19 +6,11 @@
<artifactId>services</artifactId>
<parent>
<groupId>com.doumee</groupId>
- <artifactId>dianjiang</artifactId>
+ <artifactId>diandongche</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<dependencies>
- <dependency>
- <groupId>com.tianyiyun</groupId>
- <artifactId>zob</artifactId>
- <version>1.0</version>
- <scope>system</scope>
- <!--鏈湴鐨刯acob.jar鐨勮矾寰�-->
- <systemPath>${project.basedir}/lib/zos-sdk.jar</systemPath>
- </dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
diff --git a/server/services/src/main/java/com/allinpay/syb/lib/HttpConnectionUtil.java b/server/services/src/main/java/com/allinpay/syb/lib/HttpConnectionUtil.java
new file mode 100644
index 0000000..0afb52a
--- /dev/null
+++ b/server/services/src/main/java/com/allinpay/syb/lib/HttpConnectionUtil.java
@@ -0,0 +1,124 @@
+package com.allinpay.syb.lib;
+
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLEncoder;
+import java.util.Map;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLSession;
+
+import org.apache.commons.logging.Log;
+
+public class HttpConnectionUtil {
+ private HttpURLConnection conn;
+ private String connectUrl;
+
+ public HttpConnectionUtil(String connectUrl){
+ this.connectUrl = connectUrl;
+ }
+
+ public void init() throws Exception{
+ URL url = new URL(connectUrl);
+ System.setProperty("java.protocol.handler.pkgs", "javax.net.ssl");
+ HostnameVerifier hv = new HostnameVerifier() {
+ public boolean verify(String urlHostName, SSLSession session) {
+ return urlHostName.equals(session.getPeerHost());
+ }
+ };
+ HttpsURLConnection.setDefaultHostnameVerifier(hv);
+ URLConnection conn = url.openConnection();
+ conn.setDoInput(true);
+ conn.setDoOutput(true);
+ conn.setReadTimeout(60000);
+ conn.setConnectTimeout(30000);
+ if (conn instanceof HttpsURLConnection){
+ HttpsURLConnection httpsConn = (HttpsURLConnection)conn;
+ httpsConn.setSSLSocketFactory(SSLUtil.getInstance().getSSLSocketFactory());
+ } else if (conn instanceof HttpURLConnection){
+ HttpURLConnection httpConn = (HttpURLConnection)conn;
+ } else {
+ throw new Exception("涓嶆槸http/https鍗忚鐨剈rl");
+ }
+ this.conn = (HttpURLConnection)conn;
+ initDefaultPost();
+ }
+
+ public void destory(){
+ try{
+ if(this.conn!=null){
+ this.conn.disconnect();
+ }
+ }catch(Exception e){
+
+ }
+ }
+
+ private void initDefaultPost() throws Exception{
+ conn.setDoOutput(true);
+ conn.setDoInput(true);
+ conn.setRequestMethod("POST");
+ conn.setUseCaches(false);
+ conn.setInstanceFollowRedirects(true);
+ conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
+ }
+
+ public byte[] postParams(Map<String, String> params,boolean readreturn) 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 postParams(outBuf.toString(),readreturn);
+ }
+
+ public byte[] postParams(String message,boolean readreturn) throws IOException {
+ DataOutputStream out = new DataOutputStream(conn.getOutputStream());
+ out.write(message.getBytes("UTF-8"));
+ out.close();
+ if(readreturn){
+ return readBytesFromStream(conn.getInputStream());
+ }else{
+ return null;
+ }
+ }
+
+ public byte[] postParams(byte[] message,boolean readreturn) throws IOException {
+ DataOutputStream out = new DataOutputStream(conn.getOutputStream());
+ out.write(message);
+ out.close();
+ if(readreturn){
+ return readBytesFromStream(conn.getInputStream());
+ }else{
+ return null;
+ }
+ }
+
+ private byte[] readBytesFromStream(InputStream is) throws IOException{
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int readLen;
+ byte[] tmpBuf = new byte[4096];
+ while ((readLen = is.read(tmpBuf)) > 0)
+ baos.write(tmpBuf, 0, readLen);
+ is.close();
+ return baos.toByteArray();
+ }
+
+ public HttpURLConnection getConn() {
+ return conn;
+ }
+
+}
diff --git a/server/services/src/main/java/com/allinpay/syb/lib/SSLUtil.java b/server/services/src/main/java/com/allinpay/syb/lib/SSLUtil.java
new file mode 100644
index 0000000..7c6a726
--- /dev/null
+++ b/server/services/src/main/java/com/allinpay/syb/lib/SSLUtil.java
@@ -0,0 +1,54 @@
+package com.allinpay.syb.lib;
+
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+/**
+ * SSL绠$悊鍔╂墜绫�
+ * @author Administrator
+ *
+ */
+public class SSLUtil implements X509TrustManager {
+ private SSLSocketFactory sslFactory = null;
+
+ private SSLUtil(){
+ }
+
+ public void checkClientTrusted(X509Certificate[] arg0, String arg1)
+ throws CertificateException {
+ }
+
+ public void checkServerTrusted(X509Certificate[] arg0, String arg1)
+ throws CertificateException {
+ }
+
+ public X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+
+ /** 鑾峰彇SSL Socket宸ュ巶 */
+ public SSLSocketFactory getSSLSocketFactory(){
+ return sslFactory;
+ }
+
+ private static SSLUtil _instance = null;
+
+ /** 鑾峰彇SSL绠$悊鍔╂墜绫诲疄渚� */
+ synchronized public static SSLUtil getInstance() throws NoSuchAlgorithmException, KeyManagementException {
+ if (_instance == null){
+ _instance = new SSLUtil();
+ SSLContext sc = SSLContext.getInstance("SSLv3");
+ sc.init(null, new TrustManager[]{new SSLUtil()}, null);
+ _instance.sslFactory = sc.getSocketFactory();
+ }
+ return _instance;
+ }
+
+}
diff --git a/server/services/src/main/java/com/allinpay/syb/lib/SmUtil.java b/server/services/src/main/java/com/allinpay/syb/lib/SmUtil.java
new file mode 100644
index 0000000..beac7cf
--- /dev/null
+++ b/server/services/src/main/java/com/allinpay/syb/lib/SmUtil.java
@@ -0,0 +1,138 @@
+package com.allinpay.syb.lib;
+
+import java.io.IOException;
+import java.math.BigInteger;
+import java.security.KeyFactory;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.SecureRandom;
+import java.security.Security;
+import java.security.Signature;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+import java.util.Arrays;
+
+import org.apache.commons.codec.binary.Base64;
+import org.bouncycastle.asn1.ASN1EncodableVector;
+import org.bouncycastle.asn1.ASN1Integer;
+import org.bouncycastle.asn1.ASN1Sequence;
+import org.bouncycastle.asn1.DERSequence;
+import org.bouncycastle.jcajce.spec.SM2ParameterSpec;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.bouncycastle.util.encoders.Hex;
+
+public class SmUtil {
+ static{
+ Security.addProvider(new BouncyCastleProvider());
+ }
+ /**绠楁硶甯搁噺:SM3withSM2*/
+ public static final String ALGORITHM_SM3SM2_BCPROV = "SM3withSM2";
+ private final static int SM3withSM2_RS_LEN=32;
+
+ public static void main(String[] args) throws Exception {
+ /**鍟嗘埛骞冲彴鍒嗛厤鐨刟ppid,涔熸槸绛惧悕鐨刢ertid**/
+ String appid = "00000156";
+ /**鍟嗘埛sm2绉侀挜,鐢ㄤ簬鍚戦�氳仈鍙戣捣璇锋眰鍓嶈繘琛岀鍚�**/
+ String cusPrivateKey = "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgjj4Rk+b0YjwO+UwXofnHf4bK+kaaY5Btkd8nMP2VimmgCgYIKoEcz1UBgi2hRANCAAQqlALW4qGC3bP1x3wo5QsKxaCMEZJ2ODTTwOQ+d8UGU7GoK/y/WMBQWf5upMnFU06p5FxGooXYYoBtldgm03hq";
+ /**鍟嗘埛sm2鍏挜锛岄渶瑕侀厤缃埌閫氳仈鍟嗘埛骞冲彴**/
+ String cusPubKey = "MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEKpQC1uKhgt2z9cd8KOULCsWgjBGSdjg008DkPnfFBlOxqCv8v1jAUFn+bqTJxVNOqeRcRqKF2GKAbZXYJtN4ag==";
+
+ /**閫氳仈骞冲彴sm2鍏挜锛岀敤浜庤姹傝繑鍥炴垨鑰呴�氳仈閫氱煡鐨勯獙绛�**/
+ String tlPubKey = "MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE/BnA8BawehBtH0ksPyayo4pmzL/u1FQ2sZcqwOp6bjVqQX4tjo930QAvHZPJ2eez8sCz/RYghcqv4LvMq+kloQ==";
+
+ String blankStr = "璇锋眰寰呯鍚嶆暟鎹�";
+ PrivateKey privkey = privKeySM2FromBase64Str(cusPrivateKey);
+ String sign = signSM3SM2RetBase64(privkey, appid, blankStr.getBytes("UTF-8"));//绛惧悕
+ System.out.println(sign);
+
+ String rspBlankStr = "杩斿洖寰呴獙绛炬暟鎹�";//閫氳仈杩斿洖鐨勬槑鏂�
+ String rspSign = "AovBKQGUe0xuJ0ox7FgIIX+yB3DzbudgUsnNvJmDV0IdHZtU2Y8vdeUY1pd2vmPUf08hNgdkoz+4WP/D/ktOcA==";//閫氳仈杩斿洖鐨勭鍚�
+ PublicKey publicKey = pubKeySM2FromBase64Str(tlPubKey);
+ boolean isOk = verifySM3SM2(publicKey, "Allinpay", Base64.decodeBase64(rspSign), rspBlankStr.getBytes("UTF-8"));
+ System.out.println("楠岀缁撴灉:"+isOk);
+
+
+ }
+
+ /**绛惧悕骞禕ASE64缂栫爜-SM3WithSM2 */
+ public static String signSM3SM2RetBase64(final PrivateKey privateKey,String certid,final byte[] data) throws Exception{
+ return Base64.encodeBase64String(signSM3SM2(privateKey, certid, data));
+ }
+
+ /**绛惧悕-SM3WithSM2 */
+ public static byte[] signSM3SM2(final PrivateKey privateKey,String certid,final byte[] data) throws Exception{
+ SM2ParameterSpec parameterSpec = new SM2ParameterSpec(certid.getBytes());
+ Signature signer = Signature.getInstance(ALGORITHM_SM3SM2_BCPROV, "BC");
+ signer.setParameter(parameterSpec);
+ signer.initSign(privateKey, new SecureRandom());
+ signer.update(data);
+ return byteAsn12BytePlain(signer.sign());
+ }
+
+ /** 楠岃瘉绛惧悕-SM3WithSM2*/
+ public static boolean verifySM3SM2(final PublicKey publicKey,String certid,final byte[] signData, final byte[] srcData) throws Exception {
+ SM2ParameterSpec parameterSpec = new SM2ParameterSpec(certid.getBytes());
+ Signature verifier = Signature.getInstance(ALGORITHM_SM3SM2_BCPROV, "BC");
+ verifier.setParameter(parameterSpec);
+ verifier.initVerify(publicKey);
+ verifier.update(srcData);
+ return verifier.verify(bytePlain2ByteAsn1(signData));
+ }
+
+ /**浠庡瓧绗︿覆璇诲彇绉侀挜-鐩墠鏀寔PKCS8(keystr涓築ASE64鏍煎紡)*/
+ public static PrivateKey privKeySM2FromBase64Str(String keystr) throws Exception {
+ KeyFactory keyFactory = KeyFactory.getInstance("EC");
+ return keyFactory.generatePrivate(new PKCS8EncodedKeySpec(Base64.decodeBase64(keystr)));
+ }
+
+ /**浠庡瓧绗︿覆璇诲彇RSA鍏挜(keystr涓築ASE64鏍煎紡)*/
+ public static PublicKey pubKeySM2FromBase64Str(String keystr) throws Exception {
+ KeyFactory keyFactory = KeyFactory.getInstance("EC");
+ return keyFactory.generatePublic(new X509EncodedKeySpec(Base64.decodeBase64(keystr)));
+ }
+
+ /**
+ * 灏嗘櫘閫氬瓧鑺傛暟缁勮浆鎹负ASN1瀛楄妭鏁扮粍 閫傜敤浜嶴M3withSM2楠岀鏃堕獙绛炬槑鏂囪浆鎹�
+ */
+ private static byte[] bytePlain2ByteAsn1(byte[] data) {
+ if (data.length != SM3withSM2_RS_LEN * 2) throw new RuntimeException("err data. ");
+ BigInteger r = new BigInteger(1, Arrays.copyOfRange(data, 0, SM3withSM2_RS_LEN));
+ BigInteger s = new BigInteger(1, Arrays.copyOfRange(data, SM3withSM2_RS_LEN, SM3withSM2_RS_LEN * 2));
+ ASN1EncodableVector v = new ASN1EncodableVector();
+ v.add(new ASN1Integer(r));
+ v.add(new ASN1Integer(s));
+ try {
+ return new DERSequence(v).getEncoded("DER");
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ /**
+ * 灏咥SN1瀛楄妭鏁扮粍杞崲涓烘櫘閫氬瓧鑺傛暟缁� 閫傜敤浜嶴M3withSM2绛惧悕鏃剁鍚嶇粨鏋滆浆鎹�
+ */
+ private static byte[] byteAsn12BytePlain(byte[] dataAsn1) {
+ ASN1Sequence seq = ASN1Sequence.getInstance(dataAsn1);
+ byte[] r = bigIntToFixexLengthBytes(ASN1Integer.getInstance(seq.getObjectAt(0)).getValue());
+ byte[] s = bigIntToFixexLengthBytes(ASN1Integer.getInstance(seq.getObjectAt(1)).getValue());
+ byte[] result = new byte[SM3withSM2_RS_LEN * 2];
+ System.arraycopy(r, 0, result, 0, r.length);
+ System.arraycopy(s, 0, result, SM3withSM2_RS_LEN, s.length);
+ return result;
+ }
+
+ private static byte[] bigIntToFixexLengthBytes(BigInteger rOrS) {
+ byte[] rs = rOrS.toByteArray();
+ if (rs.length == SM3withSM2_RS_LEN) return rs;
+ else if (rs.length == SM3withSM2_RS_LEN + 1 && rs[0] == 0)
+ return Arrays.copyOfRange(rs, 1, SM3withSM2_RS_LEN + 1);
+ else if (rs.length < SM3withSM2_RS_LEN) {
+ byte[] result = new byte[SM3withSM2_RS_LEN];
+ Arrays.fill(result, (byte) 0);
+ System.arraycopy(rs, 0, result, SM3withSM2_RS_LEN - rs.length, rs.length);
+ return result;
+ } else {
+ throw new RuntimeException("err rs: " + Hex.toHexString(rs));
+ }
+ }
+
+}
diff --git a/server/services/src/main/java/com/allinpay/syb/lib/SybConstants.java b/server/services/src/main/java/com/allinpay/syb/lib/SybConstants.java
new file mode 100644
index 0000000..45bf675
--- /dev/null
+++ b/server/services/src/main/java/com/allinpay/syb/lib/SybConstants.java
@@ -0,0 +1,39 @@
+package com.allinpay.syb.lib;
+
+public class SybConstants {
+// 娴嬭瘯鐜娴嬭瘯鍙傛暟
+// public static final String SYB_ORGID = "";//闆嗗洟/鏈烘瀯妯″紡涓嬭鍙傛暟涓嶄负绌猴紝涓攁ppid涓巏ey鏄笌娆″弬鏁板搴�
+// public static final String SYB_CUSID = "990581007426001";
+// public static final String SYB_APPID = "00000051";
+// public static final String SYB_MD5_APPKEY = "allinpay888";
+// public static final String SYB_APIURL = "http://172.16.1.10/apiweb";
+ /**鍟嗘埛RSA绉侀挜,鐢ㄤ簬鍚戦�氳仈鍙戣捣璇锋眰鍓嶈繘琛岀鍚�**/
+// public static final String SYB_RSACUSPRIKEY = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAK5aIo+E1eyWwEIgMB8ZEZRAaWjSAglmfKVhzy8N1eLjAlqPjJgOCqXGEYt/r61AyIjCCJiYVDTHzcqstmbBU7HKpYjTsquCLjRWcL/fhMwMGBSg2bP5mqw5locSOz1gtRujmd3kZo9OIJuWtfG2+wgPPdKUdGZS+5K8WtWCF4z1AgMBAAECgYAPvvqvkPzb9tpqrmsCJ/qvM6kBazP9Ytjfe8ehFYQLT1qrUJsPMXdzNMHpYhD82eSyeymZFGrIcIIMq4/2lD+pYOMQTMGGjoVb2wnQhZFqPdgjXgOQ90E43X69jD3p5F8CuKVNa13I4l3iyfzlVIL780JPdJdug7yKEFdSeOQZUQJBAONlFpIqz87pbnwzfgO5kRTbbI7DcyObb8OEeCK3VlGB3r9P4NoMEDaXm+HnIdv53gnFq+xgbREWUt2nFq9dSUUCQQDESOIdSvIBc3KQTYR+cnlQTH0SOvm0Tlx4KekBCLxTFAFyBqnOBLdVyQb6Z1wxGz855AjnNbHy1rFhUYQ6hPfxAkAIRZUcnBITJMqwGe9rk0SDzbeVOebmVLEsG5WDLcgmDuNbcjxrsiSk178D6LSCnARHtrkaUCenh3hcN8fLeUlBAkABNP2G9pYEYkRbFM7yxBtw3feK7Cfq7uxspL1VD0uxKxdTLy1OIgNKmMDdO1N6zdMWtQtE+LSObLmMgqbQgU7RAkBFX5kl4+B3k+/aCYB/ndqd1nQIr4SNAtLFJDtlW2xah9W2lQL/7KQDT4o4dUMY51m7Bu61SAmKtralv7Hf25yf";
+// /**閫氳仈骞冲彴RSA鍏挜锛岀敤浜庤姹傝繑鍥炴垨鑰呴�氳仈閫氱煡鐨勯獙绛�**/
+// public static final String SYB_RSATLPUBKEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYXfu4b7xgDSmEGQpQ8Sn3RzFgl5CE4gL4TbYrND4FtCYOrvbgLijkdFgIrVVWi2hUW4K0PwBsmlYhXcbR+JSmqv9zviVXZiym0lK3glJGVCN86r9EPvNTusZZPm40TOEKMVENSYaUjCxZ7JzeZDfQ4WCeQQr2xirqn6LdJjpZ5wIDAQAB";
+//
+// /**鍟嗘埛sm2绉侀挜,鐢ㄤ簬鍚戦�氳仈鍙戣捣璇锋眰鍓嶈繘琛岀鍚�**/
+// public static final String SYB_SM2PPRIVATEKEY = "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgjj4Rk+b0YjwO+UwXofnHf4bK+kaaY5Btkd8nMP2VimmgCgYIKoEcz1UBgi2hRANCAAQqlALW4qGC3bP1x3wo5QsKxaCMEZJ2ODTTwOQ+d8UGU7GoK/y/WMBQWf5upMnFU06p5FxGooXYYoBtldgm03hq";
+// /**閫氳仈骞冲彴sm2鍏挜锛岀敤浜庤姹傝繑鍥炴垨鑰呴�氳仈閫氱煡鐨勯獙绛�**/
+// public static final String SYB_SM2TLPUBKEY = "MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE/BnA8BawehBtH0ksPyayo4pmzL/u1FQ2sZcqwOp6bjVqQX4tjo930QAvHZPJ2eez8sCz/RYghcqv4LvMq+kloQ==";
+
+// 姝e紡鐜娴嬭瘯鍙傛暟
+ public static final String SYB_ORGID = "";//闆嗗洟/鏈烘瀯妯″紡涓嬭鍙傛暟涓嶄负绌猴紝涓攁ppid涓巏ey鏄笌娆″弬鏁板搴�
+ public static final String SYB_CUSID = "990361082416001";
+ public static final String SYB_APPID = "00012395";
+ public static final String SYB_MD5_APPKEY = "allinpay123";
+ public static final String SYB_APIURL = "https://vsp.allinpay.com/apiweb";//鐢熶骇鐜
+ public static final String SYB_RSACUSPRIKEY = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCW/IG0a0swTXKqT6h9rEDh7i2LS1+92Ab/e4ZbNT+zWKzYPkbJ96EphN49ik7gMK1BOaMS9C+AgGvEDgizGxTR+RoRsbbeTqBMdVm2rDUK4tnlVHoWEa5eDOLomzb4EJs03OJ91qcgJk9neCTEkntXWcBKNNXEvlCFXAPEfsaccEXmi2ouYyaqT5cYBihULYB7DTTPXsOg09A/KjICSJIBGTFRjjpfwgXisjBaNjOWYAlXHF3UVisMlZueKVWnO1USdWK24gQEis1HSf0mj61rAVQMt5/dkMYbxVQlQvKlJFMXt/koKzo1GoanMfyFSg0iyI6zcBWynhmBIASwwkdzAgMBAAECggEAO/vYOcnQhsGWFvRrr3XiFwAtZuQMhtsOuKwl7hFjG8jUblqbe/ydseV/93n9qRKdmkagM1UAlDAw4CRlL2bIaDzrLvFoAbzB8W5DtI+IySjjwTjFAgSHPgUnlpqnhXjveFpyvuSq49pkfGpeTRwW1VaqTrDb5nxnd/vc4VEubZKO6D1wgUpyczNiqvjfEecX0gwLHtwUI6jqMYcq0bRCJ5aXqXZHBqIDZ+2j9wpBx0CvdNdRULYAwO824xLxmCu3cIAUBntTsZ6MlBjIfYHdXJY3jOwK2AR+RPJ3NDPotgwf9JkxcAGRqC47GEn1Wjz1iDglhLnasPHYeOXczLsAfQKBgQDJYL4CIXPNfAbCdJKGb0H2kKrkG4Jt2PnYKySFLKzY9HvKnco9h+6t6lxvtTlWZtb8gLwiDsqaP4X24W6pVwedkSSK8JPbjaepDA7gzqCGRE7IVJLMU6PO8j0DNXGT5z9whNQJXWv6qIlC3AeWBHNov0b2BK7RXWr54YP5tpoChwKBgQC/8K54scZYV/XlYmaFQnzv9ZCUaLrPyvpDzXi0jxmIuYs2uslWKnsXzgGZNcbaDdIRa0T4xNHCVkbb3AW2QfEqXA+TUjse877znScTkfdVsW0dADHEm5YN9Ec1sxPQI4IUaWqC//59AjewfDJS6lEcerGvIZLPVG6y1L7E0AcStQKBgQDIrWSMQQPiyO7/hyWhXGvypxX1fUiL6QaJmeyp3exdw709G+M3UCfVHlCBbao25QLm2+8fTXgvIJCChwI9NKI9Li+pWbcuuspSltaYxrCHPLj5v/YOMmdySkns0axehLreiS+4KWX6g0tN2nCg2cycnMi9T8tajmqVm1tmVMbDLwKBgFC6/ddcBq3vyUhC3BYewgf3xGj3p+NwX1UXXjarnbTJPcm2RKrOUVnQ1xFG8i2S9JFJCgiMWCGiQkmFQI3JLJOBhzeStbUuFlnG9sGfemV7rAYvp78nJbUW0sC+Yo3/8V1+fUM+Qx73SM8dXdlMHvOYk5WyzFoSDEGBg/+p89+lAoGBAMhuMLE0K1mDxF4fp9Bpxvu2xhJuFYfBQNizUQE4nPvjG7czFv7UZXhO9ml6OOf9483YBHi9O3uhMTjiiqnFVcJrjiy3bhsdamm9FnO7GMgoZ7QOlq8LNikVRuPj+udSwrF3ICVAMMKq8bAxzZTGQoAH2He3S5K4dY+kGbsTsQxt";
+ public static final String SYB_RSATLPUBKEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCm9OV6zH5DYH/ZnAVYHscEELdCNfNTHGuBv1nYYEY9FrOzE0/4kLl9f7Y9dkWHlc2ocDwbrFSm0Vqz0q2rJPxXUYBCQl5yW3jzuKSXif7q1yOwkFVtJXvuhf5WRy+1X5FOFoMvS7538No0RpnLzmNi3ktmiqmhpcY/1pmt20FHQQIDAQAB";
+
+ public static final String VERSION = "12";
+ public static final String RET_URL = "https://test.allinpaygd.com/JWeb/reccomparams.jsp";
+ public static final String NOTFIY_URL = "https://test.allinpaygd.com/JWeb/NotifyServlet";
+ public static final String VALID_TIME = "30";
+ public static final String SIGN_TYPE = "RSA";//RSA,SM2,(鍏朵粬)
+// /**鍟嗘埛sm2绉侀挜,鐢ㄤ簬鍚戦�氳仈鍙戣捣璇锋眰鍓嶈繘琛岀鍚�**/
+ public static final String SYB_SM2PPRIVATEKEY = "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgjj4Rk+b0YjwO+UwXofnHf4bK+kaaY5Btkd8nMP2VimmgCgYIKoEcz1UBgi2hRANCAAQqlALW4qGC3bP1x3wo5QsKxaCMEZJ2ODTTwOQ+d8UGU7GoK/y/WMBQWf5upMnFU06p5FxGooXYYoBtldgm03hq";
+// /**閫氳仈骞冲彴sm2鍏挜锛岀敤浜庤姹傝繑鍥炴垨鑰呴�氳仈閫氱煡鐨勯獙绛�**/
+ public static final String SYB_SM2TLPUBKEY = "MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEBQicgWm0KAMqhO3bdqMUEDrKQvYg8cCXHhdGwq7CGE6oJDzJ1P/94HpuVdBf1KidmPxr7HOH+0DAnpeCcx9TcQ==";
+
+}
diff --git a/server/services/src/main/java/com/allinpay/syb/lib/SybPayService.java b/server/services/src/main/java/com/allinpay/syb/lib/SybPayService.java
new file mode 100644
index 0000000..145feb8
--- /dev/null
+++ b/server/services/src/main/java/com/allinpay/syb/lib/SybPayService.java
@@ -0,0 +1,124 @@
+package com.allinpay.syb.lib;
+
+import java.net.URLEncoder;
+import java.util.Map;
+import java.util.TreeMap;
+
+public class SybPayService {
+
+ public Map<String,String> cancel(long trxamt,String reqsn,String oldtrxid,String oldreqsn) throws Exception{
+ HttpConnectionUtil http = new HttpConnectionUtil(SybConstants.SYB_APIURL+"/unitorder/cancel");
+ http.init();
+ TreeMap<String,String> params = new TreeMap<String,String>();
+ if(!SybUtil.isEmpty(SybConstants.SYB_ORGID))
+ params.put("orgid", SybConstants.SYB_ORGID);
+ params.put("cusid", SybConstants.SYB_CUSID);
+ params.put("appid", SybConstants.SYB_APPID);
+ params.put("version", "11");
+ params.put("trxamt", String.valueOf(trxamt));
+ params.put("reqsn", reqsn);
+ params.put("oldtrxid", oldtrxid);
+ params.put("oldreqsn", oldreqsn);
+ params.put("randomstr", SybUtil.getValidatecode(8));
+ params.put("signtype", SybConstants.SIGN_TYPE);
+ String appkey = "";
+ if(SybConstants.SIGN_TYPE.equals("RSA"))
+ appkey = SybConstants.SYB_RSACUSPRIKEY;
+ else if(SybConstants.SIGN_TYPE.equals("SM2"))
+ appkey = SybConstants.SYB_SM2PPRIVATEKEY;
+ else
+ appkey = SybConstants.SYB_MD5_APPKEY;
+ params.put("sign", SybUtil.unionSign(params,appkey,SybConstants.SIGN_TYPE));
+ byte[] bys = http.postParams(params, true);
+ String result = new String(bys,"UTF-8");
+ Map<String,String> map = handleResult(result);
+ return map;
+ }
+
+ public Map<String,String> refund(long trxamt,String reqsn,String oldtrxid,String oldreqsn) throws Exception{
+ HttpConnectionUtil http = new HttpConnectionUtil(SybConstants.SYB_APIURL+"/unitorder/refund");
+ http.init();
+ TreeMap<String,String> params = new TreeMap<String,String>();
+ if(!SybUtil.isEmpty(SybConstants.SYB_ORGID))
+ params.put("orgid", SybConstants.SYB_ORGID);
+ params.put("cusid", SybConstants.SYB_CUSID);
+ params.put("appid", SybConstants.SYB_APPID);
+ params.put("version", "11");
+ params.put("trxamt", String.valueOf(trxamt));
+ params.put("reqsn", reqsn);
+ params.put("oldreqsn", oldreqsn);
+ params.put("oldtrxid", oldtrxid);
+ params.put("randomstr", SybUtil.getValidatecode(8));
+ params.put("signtype", SybConstants.SIGN_TYPE);
+ String appkey = "";
+ if(SybConstants.SIGN_TYPE.equals("RSA"))
+ appkey = SybConstants.SYB_RSACUSPRIKEY;
+ else if(SybConstants.SIGN_TYPE.equals("SM2"))
+ appkey = SybConstants.SYB_SM2PPRIVATEKEY;
+ else
+ appkey = SybConstants.SYB_MD5_APPKEY;
+ params.put("sign", SybUtil.unionSign(params,appkey,SybConstants.SIGN_TYPE));
+ byte[] bys = http.postParams(params, true);
+ String result = new String(bys,"UTF-8");
+ Map<String,String> map = handleResult(result);
+ return map;
+ }
+
+ public Map<String,String> query(String reqsn,String trxid) throws Exception{
+ HttpConnectionUtil http = new HttpConnectionUtil(SybConstants.SYB_APIURL+"/unitorder/query");
+ http.init();
+ TreeMap<String,String> params = new TreeMap<String,String>();
+ if(!SybUtil.isEmpty(SybConstants.SYB_ORGID))
+ params.put("orgid", SybConstants.SYB_ORGID);
+ params.put("cusid", SybConstants.SYB_CUSID);
+ params.put("appid", SybConstants.SYB_APPID);
+ params.put("version", "11");
+ params.put("reqsn", reqsn);
+ params.put("trxid", trxid);
+ params.put("randomstr", SybUtil.getValidatecode(8));
+ params.put("signtype", SybConstants.SIGN_TYPE);
+ String appkey = "";
+ if(SybConstants.SIGN_TYPE.equals("RSA"))
+ appkey = SybConstants.SYB_RSACUSPRIKEY;
+ else if(SybConstants.SIGN_TYPE.equals("SM2"))
+ appkey = SybConstants.SYB_SM2PPRIVATEKEY;
+ else
+ appkey = SybConstants.SYB_MD5_APPKEY;
+ params.put("sign", SybUtil.unionSign(params,appkey,SybConstants.SIGN_TYPE));
+ byte[] bys = http.postParams(params, true);
+ String result = new String(bys,"UTF-8");
+ Map<String,String> map = handleResult(result);
+ return map;
+ }
+
+
+ public static Map<String,String> handleResult(String result) throws Exception{
+ System.out.println("ret:"+result);
+ Map map = SybUtil.json2ObjMap(result);
+ if(map == null){
+ throw new Exception("杩斿洖鏁版嵁閿欒");
+ }
+ if("SUCCESS".equals(map.get("retcode"))){
+ TreeMap tmap = new TreeMap();
+ tmap.putAll(map);
+ String appkey = "";
+ if(SybConstants.SIGN_TYPE.equals("RSA"))
+ appkey = SybConstants.SYB_RSATLPUBKEY;
+ else if(SybConstants.SIGN_TYPE.equals("SM2"))
+ appkey = SybConstants.SYB_SM2TLPUBKEY;
+ else
+ appkey = SybConstants.SYB_MD5_APPKEY;
+ if(SybUtil.validSign(tmap, appkey, SybConstants.SIGN_TYPE)){
+ System.out.println("绛惧悕鎴愬姛");
+ return map;
+ }else{
+ throw new Exception("楠岃瘉绛惧悕澶辫触");
+ }
+
+ }else{
+ throw new Exception(map.get("retmsg").toString());
+ }
+ }
+
+
+}
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
new file mode 100644
index 0000000..6b1248e
--- /dev/null
+++ b/server/services/src/main/java/com/allinpay/syb/lib/SybUtil.java
@@ -0,0 +1,242 @@
+package com.allinpay.syb.lib;
+
+import java.io.UnsupportedEncodingException;
+import java.security.KeyFactory;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+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 org.apache.commons.codec.binary.Base64;
+
+public class SybUtil {
+ /**
+ * js杞寲涓哄疄浣�
+ *
+ * @param <T>
+ * @param jsonstr
+ * @param cls
+ * @return
+ */
+ public static <T> T json2Obj(String jsonstr, Class<T> cls) {
+ TypeReference<T> type = new TypeReference<T>() { };
+ T obj = JSONObject.parseObject(jsonstr, type.getType());
+// JSONObject jo = JSONObject.fromObject(jsonstr);
+// T obj = (T) JSONObject.toBean(jo, cls);
+ return obj;
+ }
+ public static Map json2ObjMap(String jsonstr ) {
+ TypeReference<Map> type = new TypeReference<Map>() { };
+ Map obj = JSONObject.parseObject(jsonstr, type.getType());
+// JSONObject jo = JSONObject.fromObject(jsonstr);
+// T obj = (T) JSONObject.toBean(jo, cls);
+ return obj;
+ }
+
+ /**
+ * md5
+ *
+ * @param b
+ * @return
+ */
+ public static String md5(byte[] b) {
+ try {
+ MessageDigest md = MessageDigest.getInstance("MD5");
+ md.reset();
+ md.update(b);
+ byte[] hash = md.digest();
+ StringBuffer outStrBuf = new StringBuffer(32);
+ for (int i = 0; i < hash.length; i++) {
+ int v = hash[i] & 0xFF;
+ if (v < 16) {
+ outStrBuf.append('0');
+ }
+ outStrBuf.append(Integer.toString(v, 16).toLowerCase());
+ }
+ return outStrBuf.toString();
+ } catch (NoSuchAlgorithmException e) {
+ e.printStackTrace();
+ return new String(b);
+ }
+ }
+
+ /**
+ * 鍒ゆ柇瀛楃涓叉槸鍚︿负绌�
+ *
+ * @param s
+ * @return
+ */
+ public static boolean isEmpty(String s) {
+ if (s == null || "".equals(s.trim()))
+ return true;
+ return false;
+ }
+
+ /**
+ * 鐢熸垚闅忔満鐮�
+ *
+ * @param n
+ * @return
+ */
+ public static String getValidatecode(int n) {
+ Random random = new Random();
+ String sRand = "";
+ n = n == 0 ? 4 : n;// default 4
+ for (int i = 0; i < n; i++) {
+ String rand = String.valueOf(random.nextInt(10));
+ sRand += rand;
+ }
+ return sRand;
+ }
+
+
+
+ public static boolean validSign(TreeMap<String, String> param,
+ String appkey, String signType) throws Exception {
+ if (param != null && !param.isEmpty()) {
+ if (!param.containsKey("sign"))
+ return false;
+ String sign = param.remove("sign");
+ if ("MD5".equals(signType)) {// 濡傛灉鏄痬d5鍒欓渶瑕佹妸md5鐨刱ey鍔犲叆鍒版帓搴�
+ param.put("key", appkey);
+ }
+ StringBuilder sb = new StringBuilder();
+ for (Map.Entry<String, String> entry : param.entrySet()) {
+ if (entry.getValue() != null && entry.getValue().length() > 0) {
+ sb.append(entry.getKey()).append("=")
+ .append(entry.getValue()).append("&");
+ }
+ }
+ if (sb.length() > 0) {
+ sb.deleteCharAt(sb.length() - 1);
+ }
+ if ("MD5".equals(signType)) {
+ return sign.toLowerCase().equals(
+ md5(sb.toString().getBytes("UTF-8")).toLowerCase());
+ } else if("SM2".equals(signType)){
+ PublicKey publicKey = SmUtil.pubKeySM2FromBase64Str(appkey);
+ return SmUtil.verifySM3SM2(publicKey, "Allinpay", Base64.decodeBase64(sign), sb.toString().getBytes("UTF-8"));
+ }else {
+ return rsaVerifyPublickey(sb.toString(), sign, appkey, "UTF-8");
+ }
+ }
+ return false;
+ }
+
+ public static boolean rsaVerifyPublickey(String content, String sign,
+ String publicKey, String charset) throws Exception {
+ try {
+ PublicKey pubKey = getPublicKeyFromX509("RSA",
+ Base64.decodeBase64(publicKey.getBytes()));
+ return rsaVerifyPublickey(content, sign, pubKey, charset);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new Exception("RSAcontent = " + content + ",sign=" + sign
+ + ",charset = " + charset, e);
+ }
+ }
+
+ public static boolean rsaVerifyPublickey(String content, String sign,
+ PublicKey pubKey, String charset) throws Exception {
+ try {
+ java.security.Signature signature = java.security.Signature
+ .getInstance("SHA1WithRSA");
+
+ signature.initVerify(pubKey);
+
+ if (charset == null || "".equals(charset)) {
+ signature.update(content.getBytes());
+ } else {
+ signature.update(content.getBytes(charset));
+ }
+
+ return signature.verify(Base64.decodeBase64(sign.getBytes()));
+ } catch (Exception e) {
+ throw e;
+ }
+ }
+ public static String unionSign(TreeMap<String, String> params,String appkey,
+ String signType) throws Exception {
+ // TODO Auto-generated method stub
+
+ params.remove("sign");
+ if ("MD5".equals(signType)) {// 濡傛灉鏄痬d5鍒欓渶瑕佹妸md5鐨刱ey鍔犲叆鍒版帓搴�
+ params.put("key", appkey);
+ }
+ StringBuilder sb = new StringBuilder();
+ for (Map.Entry<String, String> entry : params.entrySet()) {
+ if (entry.getValue() != null && entry.getValue().length() > 0) {
+ sb.append(entry.getKey()).append("=").append(entry.getValue())
+ .append("&");
+ }
+ }
+ if (sb.length() > 0) {
+ sb.deleteCharAt(sb.length() - 1);
+ }
+ String sign = "";
+ if ("MD5".equals(signType)) {
+ System.out.println(sb.toString());
+ sign = md5(sb.toString().getBytes("UTF-8"));// 璁板緱鏄痬d5缂栫爜鐨勫姞绛�
+ params.remove("key");
+ } else if("SM2".equals(signType)){
+ System.out.println(sb.toString());
+ PrivateKey privkey = SmUtil.privKeySM2FromBase64Str(appkey);
+ sign = SmUtil.signSM3SM2RetBase64(privkey, params.get("appid"), sb.toString().getBytes("UTF-8"));//绛惧悕
+ } else {
+ System.out.println(sb.toString());
+ sign = rsaSign(sb.toString(), appkey, "UTF-8");
+ }
+ return sign;
+ }
+
+ public static String rsaSign(String content, String privateKey,
+ String charset) throws Exception {
+ PrivateKey priKey = getPrivateKeyFromPKCS8("RSA",
+ Base64.decodeBase64(privateKey.getBytes()));
+ return rsaSign(content, priKey, charset);
+ }
+
+ public static String rsaSign(String content, byte[] privateKey,
+ String charset) throws Exception {
+ PrivateKey priKey = getPrivateKeyFromPKCS8("RSA", privateKey);
+ return rsaSign(content, priKey, charset);
+ }
+
+ public static String rsaSign(String content, PrivateKey priKey,
+ String charset) throws Exception {
+ java.security.Signature signature = java.security.Signature
+ .getInstance("SHA1WithRSA");
+ signature.initSign(priKey);
+ if (charset == null || "".equals(charset)) {
+ signature.update(content.getBytes());
+ } else {
+ signature.update(content.getBytes(charset));
+ }
+ byte[] signed = signature.sign();
+
+ return new String(Base64.encodeBase64(signed));
+ }
+
+ public static PrivateKey getPrivateKeyFromPKCS8(String algorithm,
+ byte[] encodedKey) throws Exception {
+
+ KeyFactory keyFactory = KeyFactory.getInstance(algorithm);
+
+ return keyFactory.generatePrivate(new PKCS8EncodedKeySpec(encodedKey));
+ }
+
+ public static PublicKey getPublicKeyFromX509(String algorithm,
+ byte[] encodedKey) throws Exception {
+ KeyFactory keyFactory = KeyFactory.getInstance(algorithm);
+
+ return keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));
+ }
+}
diff --git a/server/services/src/main/java/com/allinpay/syb/test/ApiTestV2.java b/server/services/src/main/java/com/allinpay/syb/test/ApiTestV2.java
new file mode 100644
index 0000000..3d76ba9
--- /dev/null
+++ b/server/services/src/main/java/com/allinpay/syb/test/ApiTestV2.java
@@ -0,0 +1,47 @@
+package com.allinpay.syb.test;
+
+import java.util.Map;
+
+import com.allinpay.syb.lib.SybPayService;
+import com.allinpay.syb.lib.SybUtil;
+
+
+public class ApiTestV2 {
+ public static void main(String[] args) throws Exception{
+ testCancel();
+ //testRefund();
+// testQuery();
+ }
+
+ public static void testQuery() throws Exception{
+ SybPayService service = new SybPayService();
+ Map<String, String> map = service.query("", "112094120001239205");
+ print(map);
+ }
+
+ public static void testRefund() throws Exception{
+ SybPayService service = new SybPayService();
+ String reqsn = String.valueOf(System.currentTimeMillis());
+ Map<String, String> map = service.refund(1, reqsn, "", "20160712167578.2547");
+ print(map);
+ }
+
+ public static void testCancel() throws Exception{
+ SybPayService service = new SybPayService();
+ String reqsn = String.valueOf(System.currentTimeMillis());
+ Map<String, String> map = service.cancel(1, reqsn, "112094120001239205", "");
+ print(map);
+ }
+
+
+ public static void print(Map<String, String> map){
+ System.out.println("杩斿洖鏁版嵁濡備笅:");
+ if(map!=null){
+ for(String key:map.keySet()){
+ System.out.println(key+";"+map.get(key));
+ }
+ }
+ }
+
+
+}
diff --git a/server/services/src/main/java/com/allinpay/syb/test/NotifyServlet.java b/server/services/src/main/java/com/allinpay/syb/test/NotifyServlet.java
new file mode 100644
index 0000000..9021034
--- /dev/null
+++ b/server/services/src/main/java/com/allinpay/syb/test/NotifyServlet.java
@@ -0,0 +1,68 @@
+package com.allinpay.syb.test;
+
+import java.io.IOException;
+import java.util.Map;
+import java.util.TreeMap;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.allinpay.syb.lib.SybConstants;
+import com.allinpay.syb.lib.SybUtil;
+
+public class NotifyServlet extends HttpServlet {
+ private static final long serialVersionUID = 1L;
+
+ public NotifyServlet() {
+ super();
+ }
+
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ System.out.println("get method,no deal");
+ }
+
+ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ System.out.println("鎺ユ敹鍒伴�氱煡");
+ request.setCharacterEncoding("UTF-8");//閫氱煡浼犺緭鐨勭紪鐮佷负GBK
+ response.setCharacterEncoding("UTF-8");
+ TreeMap<String,String> params = getParams(request);//鍔ㄦ�侀亶鍘嗚幏鍙栨墍鏈夋敹鍒扮殑鍙傛暟,姝ゆ闈炲父鍏抽敭,鍥犱负鏀堕摱瀹濅互鍚庡彲鑳戒細鍔犲瓧娈�,鍔ㄦ�佽幏鍙栧彲浠ュ吋瀹�
+ try {
+ String appkey = "";
+ if("RSA".equals(params.get("signtype")))
+ appkey = SybConstants.SYB_RSATLPUBKEY;
+ else if("SM2".equals(params.get("signtype")))
+ appkey = SybConstants.SYB_SM2TLPUBKEY;
+ else
+ appkey = SybConstants.SYB_MD5_APPKEY;
+ boolean isSign = SybUtil.validSign(params, appkey, params.get("signtype"));// 鎺ュ彈鍒版帹閫侀�氱煡,棣栧厛楠岀
+ System.out.println("楠岀缁撴灉:"+isSign);
+ //楠岀瀹屾瘯杩涜涓氬姟澶勭悊
+ } catch (Exception e) {//澶勭悊寮傚父
+ // TODO: handle exception
+ e.printStackTrace();
+ }
+ finally{//鏀跺埌閫氱煡,杩斿洖success
+ response.getOutputStream().write("success".getBytes());
+ response.flushBuffer();
+ }
+ }
+
+ /**
+ * 鍔ㄦ�侀亶鍘嗚幏鍙栨墍鏈夋敹鍒扮殑鍙傛暟,姝ゆ闈炲父鍏抽敭,鍥犱负鏀堕摱瀹濅互鍚庡彲鑳戒細鍔犲瓧娈�,鍔ㄦ�佽幏鍙栧彲浠ュ吋瀹圭敱浜庢敹閾跺疂鍔犲瓧娈佃�屽紩璧风殑绛惧悕寮傚父
+ * @param request
+ * @return
+ */
+ private TreeMap<String, String> getParams(HttpServletRequest request){
+ TreeMap<String, String> map = new TreeMap<String, String>();
+ Map reqMap = request.getParameterMap();
+ for(Object key:reqMap.keySet()){
+ String value = ((String[])reqMap.get(key))[0];
+ System.out.println(key+";"+value);
+ map.put(key.toString(),value);
+ }
+ return map;
+ }
+
+}
diff --git a/server/services/src/main/java/com/doumee/api/business/WebApiController.java b/server/services/src/main/java/com/doumee/api/business/WebApiController.java
deleted file mode 100644
index f00e3e7..0000000
--- a/server/services/src/main/java/com/doumee/api/business/WebApiController.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.doumee.api.business;
-
-import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
-
-
-/**
- * Created by IntelliJ IDEA.
- *
- * @Author : Rk
- * @create 2025/6/18 11:40
- */
-@RestController
-@Api(tags ="web鎺ュ彛")
-@RequestMapping("/web/api")
-public class WebApiController {
-
-
-
-
-
-
-}
diff --git a/server/services/src/main/java/com/doumee/api/common/PublicController.java b/server/services/src/main/java/com/doumee/api/common/PublicController.java
index 74591df..ce8bdde 100644
--- a/server/services/src/main/java/com/doumee/api/common/PublicController.java
+++ b/server/services/src/main/java/com/doumee/api/common/PublicController.java
@@ -7,7 +7,6 @@
import com.doumee.core.constants.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.FtpUtil;
-import com.doumee.core.utils.tyyun.TyyZosUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -20,8 +19,6 @@
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
-import javax.imageio.ImageIO;
-import javax.imageio.stream.ImageOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
@@ -107,7 +104,7 @@
String fileName = UUID.randomUUID().toString() + nfix;
String tempFileName = nowDate + "/" + fileName;
String key = folder + tempFileName;// 鏂囦欢鍚�
- TyyZosUtil obs = new TyyZosUtil(endpoint,access_id, access_key);
+ /* TyyZosUtil obs = new TyyZosUtil(endpoint,access_id, access_key);
if (obs.uploadInputstreamObject(file.getInputStream(),bucketName, key)) {
// 绉诲姩鎴愬姛,杩斿洖鏂囦欢鍚�
// sendSuccessMessage(response, resourcePath+key);
@@ -129,7 +126,7 @@
context.put("message", "涓婁紶澶辫触");
writerJson(response, context);
return;
- }
+ }*/
}
}
diff --git a/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java b/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
index 9c0b262..2d86c7a 100644
--- a/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
+++ b/server/services/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.doumee.core.constants.Constants;
-import com.doumee.dao.business.model.Member;
import com.doumee.dao.vo.WebLoginUserVO;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
@@ -63,7 +62,7 @@
* @param token 鍘熶护鐗�
* @return 鏂颁护鐗�
*/
- public void refreshToken(String token,Member member) {
+ public void refreshToken(String token,Object member) {
try {
if(Objects.nonNull(member)){
// redisTemplate.expire(Constants.REDIS_TOKEN_KEY+token,jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
diff --git a/server/services/src/main/java/com/doumee/core/dingTalk/DingTalk.java b/server/services/src/main/java/com/doumee/core/dingTalk/DingTalk.java
deleted file mode 100644
index 4942d4f..0000000
--- a/server/services/src/main/java/com/doumee/core/dingTalk/DingTalk.java
+++ /dev/null
@@ -1,128 +0,0 @@
-package com.doumee.core.dingTalk;
-
-import com.alibaba.fastjson.JSONObject;
-import com.aliyun.dingtalkoauth2_1_0.Client;
-import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenRequest;
-import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponse;
-import com.aliyun.dingtalkoauth2_1_0.models.GetTokenResponse;
-import com.aliyun.dingtalktodo_1_0.models.*;
-import com.aliyun.tea.TeaException;
-import com.aliyun.teautil.models.RuntimeOptions;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.dingtalk.api.DefaultDingTalkClient;
-import com.dingtalk.api.DingTalkClient;
-import com.dingtalk.api.request.*;
-import com.dingtalk.api.response.*;
-import com.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.core.constants.Constants;
-import com.doumee.core.constants.ResponseStatus;
-import com.doumee.core.exception.BusinessException;
-import com.doumee.dao.system.dto.DingLoginDTO;
-import com.doumee.dao.system.model.SystemDictData;
-import com.taobao.api.ApiException;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * Created by IntelliJ IDEA.
- *
- * @Author : Rk
- * @create 2025/9/24 16:25
- */
-@Slf4j
-@Service
-public class DingTalk {
-
- @Autowired
- private SystemDictDataBiz systemDictDataBiz;
-
-
- @Value("${dingtalk.clientId}")
- private String clientId;
- @Value("${dingtalk.clientSecret}")
- private String clientSecret;
-
- /**
- * 浣跨敤 Token 鍒濆鍖栬处鍙稢lient 鏁版嵁鍚屾绫�
- * @return Client com.aliyun.dingtalkoauth2_1_0.
- * @throws Exception
- */
- public static Client createClient() throws Exception {
- com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
- config.protocol = "https";
- config.regionId = "central";
- return new Client(config);
- }
-
- /**
- * 寰呭姙閫氱煡绫� 閾炬帴姹�
- * @return
- * @throws Exception
- */
- public static com.aliyun.dingtalktodo_1_0.Client createV1Client() throws Exception {
- com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
- config.protocol = "https";
- config.regionId = "central";
- return new com.aliyun.dingtalktodo_1_0.Client(config);
- }
-
-
- /**
- * 鑾峰彇閽夐拤Token
- * @return
- */
- public String getToken(){
- String accessToken = systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.ACCESS_TOKEN).getCode();
- return accessToken;
- }
-
- private String getAccessToken(String corpId) {
- com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
- config.protocol = "https";
- config.regionId = "central";
- try {
- com.aliyun.dingtalkoauth2_1_0.Client client = new com.aliyun.dingtalkoauth2_1_0.Client(config);
- com.aliyun.dingtalkoauth2_1_0.models.GetTokenRequest getTokenRequest = new com.aliyun.dingtalkoauth2_1_0.models.GetTokenRequest()
- .setClientId(clientId)
- .setClientSecret(clientSecret)
- .setGrantType("client_credentials");
- GetTokenResponse response = client.getToken(corpId, getTokenRequest);
- return response.getBody().accessToken;
- } catch (TeaException err) {
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 涓惈鏈� code 鍜� message 灞炴�э紝鍙府鍔╁紑鍙戝畾浣嶉棶棰�
- log.error("Error getting access token: {}", err.getMessage());
- }
-
- } catch (Exception _err) {
- TeaException err = new TeaException(_err.getMessage(), _err);
- if (!com.aliyun.teautil.Common.empty(err.code) && !com.aliyun.teautil.Common.empty(err.message)) {
- // err 涓惈鏈� code 鍜� message 灞炴�э紝鍙府鍔╁紑鍙戝畾浣嶉棶棰�
- log.error("Error getting access token: {}", err.getMessage());
- }
- }
- return null;
- }
-
-
- public OapiV2UserGetuserinfoResponse.UserGetByCodeResponse getDDUserByCode(DingLoginDTO dto) throws ApiException {
- DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/getuserinfo");
- OapiV2UserGetuserinfoRequest req = new OapiV2UserGetuserinfoRequest();
- req.setCode(dto.getCode());
- OapiV2UserGetuserinfoResponse rsp = client.execute(req, getAccessToken(dto.getCorpId()));
- if(rsp.getErrcode().equals(Constants.DD_ERR_CODE)){
- return rsp.getResult();
- }else{
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),rsp.getMessage());
- }
- }
-
-
-
-}
diff --git a/server/services/src/main/java/com/doumee/core/dingTalk/DingTalkStream.java b/server/services/src/main/java/com/doumee/core/dingTalk/DingTalkStream.java
deleted file mode 100644
index ebc66d2..0000000
--- a/server/services/src/main/java/com/doumee/core/dingTalk/DingTalkStream.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package com.doumee.core.dingTalk;
-
-import com.dingtalk.open.app.api.GenericEventListener;
-import com.dingtalk.open.app.api.OpenDingTalkStreamClientBuilder;
-import com.dingtalk.open.app.api.message.GenericOpenDingTalkEvent;
-import com.dingtalk.open.app.api.security.AuthClientCredential;
-import com.dingtalk.open.app.stream.protocol.event.EventAckStatus;
-import com.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.core.constants.Constants;
-import com.doumee.service.business.MemberService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import shade.com.alibaba.fastjson2.JSONObject;
-
-/**
- * 閽夐拤 璁㈤槄浜嬩欢閫氱煡
- *
- * @Author : Rk
- * @create 2025/9/24 17:14
- */
-@Slf4j
-@Configuration
-public class DingTalkStream {
-
- @Autowired
- private SystemDictDataBiz systemDictDataBiz;
-
- @Bean
- public void DingTalkStreamRun() throws Exception {
- String appKey = systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.APP_KEY).getCode();
- String appSecret = systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.APP_SECRET).getCode();
-
- OpenDingTalkStreamClientBuilder
- .custom()
- .credential(new AuthClientCredential(appKey, appSecret))
- //娉ㄥ唽浜嬩欢鐩戝惉
- .registerAllEventListener(new GenericEventListener() {
- @Override
- public EventAckStatus onEvent(GenericOpenDingTalkEvent event) {
- try {
- //浜嬩欢鍞竴Id
- String eventId = event.getEventId();
- log.error("閽夐拤鎺ㄩ�佷簨浠禝d:{}"+eventId);
- //浜嬩欢绫诲瀷
- String eventType = event.getEventType();
- log.error("閽夐拤鎺ㄩ�佷簨浠剁被鍨�:{}"+eventType);
- //浜嬩欢浜х敓鏃堕棿
- Long bornTime = event.getEventBornTime();
- log.error("閽夐拤鎺ㄩ�佷簨浠朵骇鐢熸椂闂�:{}"+bornTime);
- //鑾峰彇浜嬩欢浣�
- JSONObject bizData = event.getData();
- log.error("閽夐拤鎺ㄩ�佷簨浠惰鎯�:{}"+bizData);
-
- //澶勭悊浜嬩欢
-// process(bizData);
- //娑堣垂鎴愬姛
- return EventAckStatus.SUCCESS;
- } catch (Exception e) {
- //娑堣垂澶辫触
- return EventAckStatus.LATER;
- }
- }
- })
- .build().start();
- }
-
-
-
-}
diff --git a/server/services/src/main/java/com/doumee/core/utils/tyyun/TyyZosUtil.java b/server/services/src/main/java/com/doumee/core/utils/tyyun/TyyZosUtil.java
deleted file mode 100644
index 8a44d7d..0000000
--- a/server/services/src/main/java/com/doumee/core/utils/tyyun/TyyZosUtil.java
+++ /dev/null
@@ -1,202 +0,0 @@
-package com.doumee.core.utils.tyyun;
-
-import com.amazonaws.ClientConfiguration;
-import com.amazonaws.Protocol;
-import com.amazonaws.auth.AWSCredentials;
-import com.amazonaws.auth.AWSStaticCredentialsProvider;
-import com.amazonaws.auth.BasicAWSCredentials;
-import com.amazonaws.client.builder.AwsClientBuilder;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.AmazonS3ClientBuilder;
-import com.amazonaws.services.s3.model.*;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.*;
-import java.net.URL;
-
-@Slf4j
-public class TyyZosUtil {
-
- private AmazonS3 client;
-
- // public static final String ENDPOINT = "oss-cn-shanghai.aliyuncs.com";
-
- public TyyZosUtil(String END_POINT, String ACCESS_KEY, String SECRET_KEY) {
- try {
- AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY,SECRET_KEY);
- ClientConfiguration awsClientConfig = new ClientConfiguration();
- awsClientConfig.setSignerOverride("AWSS3V4SignerType");
- awsClientConfig.setProtocol(Protocol.HTTP);
-
- client = AmazonS3ClientBuilder.standard()
- .withCredentials(new
- AWSStaticCredentialsProvider(credentials))
- .withClientConfiguration(awsClientConfig)
- .withEndpointConfiguration(new
- AwsClientBuilder.EndpointConfiguration(END_POINT, ""))
- .disableChunkedEncoding()
- .enablePathStyleAccess()
- .build();
- }catch (Exception e){
- log.error("瀵硅薄瀛樺偍====================杩炴帴澶╃考浜慫OS澶辫触"+e.getMessage());
- }
- }
-
- /**
- * 涓婁紶鏂囦欢
- *
- * @param bucketName 浜戠瀛樻斁bucket鍚嶇О
- * @param key 閲嶆柊鍛藉悕鐨勬枃浠跺悕
- * @param filepath 灏嗚涓婁紶鐨勬枃浠跺悕绉�
- * @throws FileNotFoundException
- */
-
- public void uploadObject(String bucketName, String key, String filepath,
- String mime){
- try {
- File file= new File(filepath);
- PutObjectRequest request = new PutObjectRequest(bucketName, key, file);
- PutObjectResult result = client.putObject(request);
- }catch (Exception e){
- log.error("瀵硅薄瀛樺偍===================="+filepath+"鏂囦欢涓婁紶澶辫触"+e.getMessage());
- }finally {
- shutDown();
- }
- }
-
- /**
- * 璁瞜ey鏂囦欢瀛樺偍鍦ㄦ湰鍦癴ilename鐩爣鏂囦欢涓�
- * @param bucketName
- * @param key
- * @param filename
- */
- public void getObject(String bucketName, String key, String filename ){
- try {
- GetObjectRequest request = new GetObjectRequest(bucketName, key);
- S3Object result = client.getObject(request);
- System.out.print("=====request success=====\n");
- try {
- InputStream in = result.getObjectContent();
- File outputFile = new File(filename);
- FileOutputStream outputStream = new
- FileOutputStream(outputFile);
- byte[] read_buf = new byte[1024 * 1024];
- int read_len = 0;
- while ((read_len = in.read(read_buf)) > 0) {
- outputStream.write(read_buf, 0, read_len);
- }
- in.close();
- outputStream.close();
- } catch (IOException e){
- e.printStackTrace();
- }
- }catch (Exception e){
- log.error("瀵硅薄瀛樺偍===================="+filename+"鏂囦欢璇诲彇澶辫触"+e.getMessage());
- }finally {
- shutDown();
- }
- }
- public void deleteObject(String bucketName, String key ){
- try {
- DeleteObjectRequest request = new DeleteObjectRequest(bucketName, key);
- client.deleteObject(request);
- System.out.print("=====request deleteObject success=====");
- }catch (Exception e){
- log.error("瀵硅薄瀛樺偍===================="+key+"鏂囦欢鍒犻櫎澶辫触"+e.getMessage());
- }finally {
- shutDown();
- }
- }
-
-
- /**
- * 鍏抽棴
- *
- * @throws FileNotFoundException
- */
-
- public void shutDown() {
- if (client != null) {
- // 鍏抽棴client
- client.shutdown();
- }
- }
-
- public static void main(String[] args) {
- TyyZosUtil aLiYunUtil = new TyyZosUtil("", "uc4nnpsqep1i9fijqr37nokh",
- "/rp41xCx/XdGEVCptdH6v7xpc9w=");
- // aLiYunUtil.uploadObject("pongto", "work/li2.txt", "D://鍝�.txt",
- // ".html,.html text/html");D://瑁呮満杞欢/鍔炲叕瀛︿範
- // aLiYunUtil.partUploadObject("pongto", "work/ps.exe",
- // "D://瑁呮満杞欢/鍔炲叕瀛︿範/Adobe_Illustrator_CS6_XiaZaiBa.exe",
- // ".html,.html text/html");
- // aLiYunUtil.deleteBucket("pongto");
- }
-
- /**
- * 涓婁紶缃戠粶鏂囦欢
- *
- * @param bucketName 浜戠瀛樻斁bucket鍚嶇О
- * @param key 閲嶆柊鍛藉悕鐨勬枃浠跺悕
- * 灏嗚涓婁紶鐨勬枃浠跺悕绉�
- * @throws IOException
- */
-
- public boolean uploadOnlineObject(String url, String bucketName, String key ) {
- try {
-
- InputStream inputStream = new URL(url).openStream();
- if (inputStream != null) {
- ObjectMetadata metadata = new ObjectMetadata();
- PutObjectRequest request = new PutObjectRequest(bucketName, key, inputStream,metadata);
- PutObjectResult result = client.putObject(request);
- }else {
- log.error("瀵硅薄瀛樺偍===================="+url+"缃戠粶鏂囦欢涓婁紶澶辫触锛岀綉缁滄枃浠惰鍙栧け璐�");
- }
- }catch (Exception e){
- log.error("瀵硅薄瀛樺偍===================="+url+"缃戠粶鏂囦欢涓婁紶澶辫触"+e.getMessage());
- }finally {
- shutDown();
- }
- return false;
-
- }
- public boolean uploadInputstreamObject(InputStream inputStream, String bucketName, String key ) {
- try {
- if (inputStream != null) {
- ObjectMetadata metadata = new ObjectMetadata();
- metadata.setContentLength(inputStream.available());
-
- PutObjectRequest request = new PutObjectRequest(bucketName, key, inputStream,metadata);
- request.setCannedAcl(CannedAccessControlList.PublicRead);
- PutObjectResult result = client.putObject(request);
- return true;
- }
- }catch (Exception e){
- log.error("瀵硅薄瀛樺偍==================== 鏂囦欢涓婁紶澶辫触"+e.getMessage());
- }finally {
- shutDown();
- }
- return false;
-
- }
- public boolean uploadInputstreamObjectNoShutdown(InputStream inputStream, String bucketName, String key ) {
- try {
- if (inputStream != null) {
- ObjectMetadata metadata = new ObjectMetadata();
- metadata.setContentLength(inputStream.available());
-
- PutObjectRequest request = new PutObjectRequest(bucketName, key, inputStream,metadata);
- request.setCannedAcl(CannedAccessControlList.PublicRead);
- PutObjectResult result = client.putObject(request);
- return true;
- }
- }catch (Exception e){
- log.error("瀵硅薄瀛樺偍==================== 鏂囦欢涓婁紶澶辫触"+e.getMessage());
- }finally {
- }
- return false;
-
- }
-
-}
diff --git a/server/services/src/main/java/com/doumee/dao/business/CasesMapper.java b/server/services/src/main/java/com/doumee/dao/business/CasesMapper.java
deleted file mode 100644
index 10db8f7..0000000
--- a/server/services/src/main/java/com/doumee/dao/business/CasesMapper.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.doumee.dao.business;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.doumee.dao.business.model.Cases;
-import com.github.yulichang.base.MPJBaseMapper;
-/**
- * 鍒嗙被淇℃伅琛∕apper瀹氫箟
- * @author doumee
- * @date 2026-01-27 16:02:37
- */
-public interface CasesMapper extends MPJBaseMapper<Cases> {
-}
diff --git a/server/services/src/main/java/com/doumee/dao/business/ImportRecordMapper.java b/server/services/src/main/java/com/doumee/dao/business/ImportRecordMapper.java
deleted file mode 100644
index 2b023bf..0000000
--- a/server/services/src/main/java/com/doumee/dao/business/ImportRecordMapper.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.doumee.dao.business;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.doumee.dao.business.model.ImportRecord;
-import com.github.yulichang.base.MPJBaseMapper;
-/**
- * 鍒嗙被淇℃伅琛∕apper瀹氫箟
- * @author doumee
- * @date 2026-01-27 16:02:37
- */
-public interface ImportRecordMapper extends MPJBaseMapper<ImportRecord> {
-}
diff --git a/server/services/src/main/java/com/doumee/dao/business/MemberMapper.java b/server/services/src/main/java/com/doumee/dao/business/MemberMapper.java
deleted file mode 100644
index 7727471..0000000
--- a/server/services/src/main/java/com/doumee/dao/business/MemberMapper.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.doumee.dao.business;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.doumee.dao.business.model.Member;
-import com.github.yulichang.base.MPJBaseMapper;
-/**
- * 浼氬憳淇℃伅琛∕apper瀹氫箟
- * @author doumee
- * @date 2026-01-27 16:02:37
- */
-public interface MemberMapper extends MPJBaseMapper<Member> {
-}
diff --git a/server/services/src/main/java/com/doumee/dao/business/OrdersMapper.java b/server/services/src/main/java/com/doumee/dao/business/OrdersMapper.java
new file mode 100644
index 0000000..b48a5cd
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/OrdersMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.Orders;
+import com.github.yulichang.base.MPJBaseMapper;
+/**
+ * 璁㈠崟璁板綍琛ㄤ俊鎭〃Mapper瀹氫箟
+ * @author doumee
+ * @date 2026-02-02 11:10:42
+ */
+public interface OrdersMapper extends MPJBaseMapper<Orders> {
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/dto/CasesImport.java b/server/services/src/main/java/com/doumee/dao/business/dto/CasesImport.java
deleted file mode 100644
index d74f2dd..0000000
--- a/server/services/src/main/java/com/doumee/dao/business/dto/CasesImport.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.doumee.dao.business.dto;
-
-import com.doumee.core.annotation.excel.ExcelColumn;
-import io.swagger.annotations.ApiModel;
-import lombok.Data;
-import org.apache.poi.xssf.usermodel.XSSFPicture;
-import org.apache.poi.xssf.usermodel.XSSFPictureData;
-
-import java.util.Date;
-import java.util.List;
-
-/**
- * 鍛樺伐淇℃伅瀵煎叆琛�
- * @author 姹熻箘韫�
- * @date 2024/01/16 10:03
- */
-@Data
-@ApiModel("鍛樺伐淇℃伅瀵煎叆")
-public class CasesImport {
-
- @ExcelColumn(name="妗堜緥涓婚",value = "name",index = 1)
- private String name;
- @ExcelColumn(name="寮�濮嬫棩鏈�",value = "startDate",index = 2)
- private String startDate;
-
- @ExcelColumn(name="缁撴潫鏃ユ湡",value = "endDate",index = 3)
- private String endDate;
-
- @ExcelColumn(name="鏈嶅姟鑰佸笀" , value = "memberCode" ,index = 4)
- private String memberCode;
- @ExcelColumn(name="鏈嶅姟鑰佸笀濮撳悕" , value = "memberName" ,index = 5)
- private String memberName;
-
- @ExcelColumn(name="妗堜緥璇存槑" , value = "detail",index = 6)
- private String detail;
- @ExcelColumn(name="妗堜緥鍥�1" , value = "imageList",fieldType = XSSFPictureData.class,index = 7)
- private List<XSSFPictureData> imageList;
- @ExcelColumn(name="妗堜緥鍥�2" , value = "imageList1",fieldType = XSSFPictureData.class,index = 8)
- private List<XSSFPictureData> imageList1;
- @ExcelColumn(name="妗堜緥鍥�3" , value = "imageList2",fieldType = XSSFPictureData.class,index = 9)
- private List<XSSFPictureData> imageList2;
- @ExcelColumn(name="妗堜緥鍥�4" , value = "imageList3",fieldType = XSSFPictureData.class,index = 10)
- private List<XSSFPictureData> imageList3;
- @ExcelColumn(name="妗堜緥鍥�5" , value = "imageList4",fieldType = XSSFPictureData.class,index = 11)
- private List<XSSFPictureData> imageList4;
- @ExcelColumn(name="妗堜緥鍥�6" , value = "imageList5",fieldType = XSSFPictureData.class,index = 12)
- private List<XSSFPictureData> imageList5;
-}
diff --git a/server/services/src/main/java/com/doumee/dao/business/dto/PayOrderParam.java b/server/services/src/main/java/com/doumee/dao/business/dto/PayOrderParam.java
new file mode 100644
index 0000000..7bc196f
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/dto/PayOrderParam.java
@@ -0,0 +1,29 @@
+package com.doumee.dao.business.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 鍛樺伐淇℃伅瀵煎叆琛�
+ * @author 姹熻箘韫�
+ * @date 2024/01/16 10:03
+ */
+@Data
+@ApiModel("璁㈠崟鏀粯鍙傛暟")
+public class PayOrderParam {
+
+ private String appid;
+ private String body;
+ private String charset;
+ private String cusid;
+ private String notify_url;
+ private String randomstr;
+ private String remark;
+ private String returl;
+ private String reqsn;
+ private String sign;
+ private String signtype;
+ private String trxamt;
+ private String validtime;
+ private String version;
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/dto/PayOrderResponse.java b/server/services/src/main/java/com/doumee/dao/business/dto/PayOrderResponse.java
new file mode 100644
index 0000000..d47fdfb
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/dto/PayOrderResponse.java
@@ -0,0 +1,17 @@
+package com.doumee.dao.business.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 鍛樺伐淇℃伅瀵煎叆琛�
+ * @author 姹熻箘韫�
+ * @date 2024/01/16 10:03
+ */
+@Data
+@ApiModel("璁㈠崟鏀粯鍙傛暟杩斿洖")
+public class PayOrderResponse {
+
+ private String url;
+ private PayOrderParam param;
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Cases.java b/server/services/src/main/java/com/doumee/dao/business/model/Cases.java
deleted file mode 100644
index 66bea71..0000000
--- a/server/services/src/main/java/com/doumee/dao/business/model/Cases.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package com.doumee.dao.business.model;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.doumee.core.annotation.excel.ExcelColumn;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import java.util.Date;
-import java.math.BigDecimal;
-import java.util.List;
-
-/**
- * 鍒嗙被淇℃伅琛∕odel瀹氫箟
- * @author doumee
- * @date 2026-01-27 16:02:37
- */
-@Data
-@TableName("cases")
-@ApiModel(value = "Cases 瀹炰綋绫�")
-public class Cases {
-
- @ApiModelProperty("涓婚敭")
- @ExcelColumn(name="涓婚敭",index=1 ,width=10)
- @TableId(type = IdType.AUTO)
- private Integer id;
-
- @ApiModelProperty("鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�")
- @ExcelColumn(name="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�",index=2 ,width=10)
- private Integer deleted;
-
- @ApiModelProperty("鍒涘缓浜虹紪鐮�")
- @ExcelColumn(name="鍒涘缓浜虹紪鐮�",index=3 ,width=10)
- private Integer createUser;
-
- @ApiModelProperty("鍒涘缓鏃堕棿")
- @ExcelColumn(name="鍒涘缓鏃堕棿",index=4 ,width=10)
- private Date createTime;
-
- @ApiModelProperty("鏇存柊浜虹紪鐮�")
- @ExcelColumn(name="鏇存柊浜虹紪鐮�",index=5 ,width=10)
- private Integer updateUser;
-
- @ApiModelProperty("鏇存柊鏃堕棿")
- @ExcelColumn(name="鏇存柊鏃堕棿",index=6 ,width=10)
- private Date updateTime;
-
- @ApiModelProperty("澶囨敞")
- @ExcelColumn(name="澶囨敞",index=7 ,width=10)
- private String remark;
- @ApiModelProperty("鐘舵��:0=鍚敤;1=绂佺敤;")
- @ExcelColumn(name="鐘舵��:0=鍚敤;1=绂佺敤;",index=8 ,width=10)
- private Integer status;
- @ApiModelProperty("涓婚")
- @ExcelColumn(name="涓婚",index=9 ,width=10)
- private String name;
- @ApiModelProperty("鑰佸笀缂栫爜锛堝叧鑱攎ember)")
- @ExcelColumn(name="鑰佸笀缂栫爜锛堝叧鑱攎ember)",index=10 ,width=10)
- private Integer memberId;
- @ApiModelProperty("妗堜緥璇存槑")
- @ExcelColumn(name="妗堜緥璇存槑",index=11 ,width=10)
- private String detail;
- @ApiModelProperty("鍒楄〃鍥�")
- @ExcelColumn(name="鍒楄〃鍥�",index=12 ,width=10)
- private String imgurl;
- @ApiModelProperty("寮�濮嬫椂闂�")
- @ExcelColumn(name="寮�濮嬫椂闂�",index=13 ,width=10)
- @JsonFormat(pattern = "yyyy-MM-dd")
- private Date startDate;
- @ApiModelProperty("缁撴潫鏃堕棿")
- @ExcelColumn(name="缁撴潫鏃堕棿",index=14 ,width=10)
- @JsonFormat(pattern = "yyyy-MM-dd")
- private Date endDate;
- @ApiModelProperty("鎺掑簭鐮侊紙鍗囧簭浣跨敤锛�")
- @ExcelColumn(name="鎺掑簭鐮侊紙鍗囧簭浣跨敤锛�",index=15 ,width=10)
- private Integer sortnum;
- @ApiModelProperty("娣诲姞鏂瑰紡 0=鏂板缓;1=瀵煎叆;")
- @ExcelColumn(name="娣诲姞鏂瑰紡 0=鏂板缓;1=瀵煎叆;",index=16 ,width=10)
- private Integer addType;
- @ApiModelProperty("瀵煎叆璁板綍缂栫爜锛堝叧鑱攊mport_record)")
- @ExcelColumn(name="瀵煎叆璁板綍缂栫爜锛堝叧鑱攊mport_record)",index=17 ,width=10)
- private Integer importId;
- @ApiModelProperty(value = "鑰佸笀濮撳悕", example = "1")
- @TableField(exist = false)
- private String memberName ;
- @ApiModelProperty(value = "鑰佸笀宸ュ彿", example = "1")
- @TableField(exist = false)
- private String memberCode ;
- @ApiModelProperty(value = "鍥鹃泦闄勪欢闆嗗悎", example = "1")
- @TableField(exist = false)
- private List<Multifile> fileList;
- @ApiModelProperty(value = "鏈�鍚庢搷浣滀汉鍛橈紱", example = "1")
- @TableField(exist = false)
- private String updateUserName;
- @ApiModelProperty(value = "鍥剧墖闆嗘暟鎹紱", example = "1")
- @TableField(exist = false)
- private List<byte[]> imgdataList;
-
- @ApiModelProperty(value = "鏄惁鍖呭惈宸插垹闄� 0涓嶅寘鍚� 1鍖呭惈锛�", example = "1")
- @TableField(exist = false)
- private int containDeleted;
-
-}
-
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/ImportRecord.java b/server/services/src/main/java/com/doumee/dao/business/model/ImportRecord.java
deleted file mode 100644
index 3dc860f..0000000
--- a/server/services/src/main/java/com/doumee/dao/business/model/ImportRecord.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package com.doumee.dao.business.model;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.doumee.core.annotation.excel.ExcelColumn;
-import com.doumee.dao.business.dto.CasesImport;
-import com.doumee.dao.business.dto.MemberImport;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.apache.poi.ss.usermodel.PictureData;
-
-import java.util.Date;
-import java.math.BigDecimal;
-import java.util.List;
-
-/**
- * 鍒嗙被淇℃伅琛∕odel瀹氫箟
- * @author doumee
- * @date 2026-01-27 16:02:37
- */
-@Data
-@TableName("import_record")
-@ApiModel(value = "ImportRecord 瀹炰綋绫�")
-public class ImportRecord {
-
- @ApiModelProperty("涓婚敭")
- @ExcelColumn(name="涓婚敭",index=1 ,width=10)
- @TableId(type = IdType.AUTO)
- private Integer id;
- @ApiModelProperty("鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�")
- @ExcelColumn(name="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�",index=2 ,width=10)
- private Integer deleted;
- @ApiModelProperty("鍒涘缓浜虹紪鐮�")
- @ExcelColumn(name="鍒涘缓浜虹紪鐮�",index=3 ,width=10)
- private Integer createUser;
- @ApiModelProperty("鍒涘缓鏃堕棿")
- @ExcelColumn(name="鍒涘缓鏃堕棿",index=4 ,width=10)
- private Date createTime;
- @ApiModelProperty("鏇存柊浜虹紪鐮�")
- @ExcelColumn(name="鏇存柊浜虹紪鐮�",index=5 ,width=10)
- private Integer updateUser;
- @ApiModelProperty("鏇存柊鏃堕棿")
- @ExcelColumn(name="鏇存柊鏃堕棿",index=6 ,width=10)
- private Date updateTime;
- @ApiModelProperty("澶囨敞")
- @ExcelColumn(name="澶囨敞",index=7 ,width=10)
- private String remark;
- @ApiModelProperty("鐘舵��:0=鏈紑濮嬶紱1=澶勭悊涓紱2=澶勭悊缁撴潫;")
- @ExcelColumn(name="鐘舵��:0=鏈紑濮嬶紱1=澶勭悊涓紱2=澶勭悊缁撴潫;",index=8 ,width=10)
- private Integer status;
- @ApiModelProperty("鏂囦欢鍚嶇О")
- @ExcelColumn(name="鏂囦欢鍚嶇О",index=9 ,width=10)
- private String title;
- @ApiModelProperty("鎬昏褰曟暟")
- @ExcelColumn(name="鎬昏褰曟暟",index=10 ,width=10)
- private Integer totalNum;
- @ApiModelProperty("妗堜緥璇存槑")
- @ExcelColumn(name="妗堜緥璇存槑",index=11 ,width=10)
- private String detail;
- @ApiModelProperty("鍒楄〃鍥�")
- @ExcelColumn(name="鍒楄〃鍥�",index=12 ,width=10)
- private String imgurl;
- @ApiModelProperty("寮�濮嬫椂闂�")
- @ExcelColumn(name="寮�濮嬫椂闂�",index=13 ,width=10)
- private Date startDate;
- @ApiModelProperty("缁撴潫鏃堕棿")
- @ExcelColumn(name="缁撴潫鏃堕棿",index=14 ,width=10)
- private Date endDate;
- @ApiModelProperty("鎺掑簭鐮侊紙鍗囧簭浣跨敤锛�")
- @ExcelColumn(name="鎺掑簭鐮侊紙鍗囧簭浣跨敤锛�",index=15 ,width=10)
- private Integer sortnum;
- @ApiModelProperty("涓氬姟鍦烘櫙 0=鑰佸笀瀵煎叆;1=妗堜緥瀵煎叆;")
- @ExcelColumn(name="涓氬姟鍦烘櫙 0=鑰佸笀瀵煎叆;1=妗堜緥瀵煎叆;",index=16 ,width=10)
- private Integer type;
- @ApiModelProperty("瀵煎叆鎴愬姛璁板綍鏁�")
- @ExcelColumn(name="瀵煎叆鎴愬姛璁板綍鏁�",index=17 ,width=10)
- private Integer doneNum;
- @ApiModelProperty("瀵煎叆澶辫触璁板綍鏁�")
- @ExcelColumn(name="瀵煎叆澶辫触璁板綍鏁�",index=18 ,width=10)
- private Integer errorNum;
- @TableField(exist = false)
- private List<Cases> caseList;
- @TableField(exist = false)
- private List<Member> memberList;
- @TableField(exist = false)
- private List<PictureData> pictureDataList;
-
- @ApiModelProperty(value = "鏈�鍚庢搷浣滀汉鍛橈紱", example = "1")
- @TableField(exist = false)
- private String updateUserName;
- @ApiModelProperty(value = "缁撴潫鏃堕棿锛�", example = "1")
- @TableField(exist = false)
- private Date starttime;
- @ApiModelProperty(value = "缁撴潫鏃堕棿锛�", example = "1")
- @TableField(exist = false)
- private Date endtime;
- @ApiModelProperty(value = "杩涜涓凡澶勭悊鐨勬暟閲忥紱", example = "1")
- @TableField(exist = false)
- private Integer ingNum;
-}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Member.java b/server/services/src/main/java/com/doumee/dao/business/model/Member.java
deleted file mode 100644
index 0598154..0000000
--- a/server/services/src/main/java/com/doumee/dao/business/model/Member.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package com.doumee.dao.business.model;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.doumee.core.annotation.excel.ExcelColumn;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import java.util.Date;
-import java.math.BigDecimal;
-import java.util.List;
-
-/**
- * 浼氬憳淇℃伅琛∕odel瀹氫箟
- * @author doumee
- * @date 2026-01-27 16:02:37
- */
-@Data
-@TableName("member")
-@ApiModel(value = "Member 瀹炰綋绫�")
-public class Member {
-
- @ApiModelProperty("鐧诲綍鏄�")
- @ExcelColumn(name="鐧诲綍鏄�",index=1 ,width=10)
- @TableId(type = IdType.AUTO)
- private Integer id;
- @ApiModelProperty("鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�")
- @ExcelColumn(name="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�",index=2 ,width=10)
- private Integer deleted;
- @ApiModelProperty("鍒涘缓浜虹紪鐮�")
- @ExcelColumn(name="鍒涘缓浜虹紪鐮�",index=3 ,width=10)
- private Integer createUser;
- @ApiModelProperty("鍒涘缓鏃堕棿")
- @ExcelColumn(name="鍒涘缓鏃堕棿",index=4 ,width=10)
- private Date createTime;
- @ApiModelProperty("鏇存柊浜虹紪鐮�")
- @ExcelColumn(name="鏇存柊浜虹紪鐮�",index=5 ,width=10)
- private Integer updateUser;
- @ApiModelProperty("鏇存柊鏃堕棿")
- @ExcelColumn(name="鏇存柊鏃堕棿",index=6 ,width=10)
- private Date updateTime;
- @ApiModelProperty("澶囨敞")
- @ExcelColumn(name="澶囨敞",index=7 ,width=10)
- private String remark;
- @ApiModelProperty("璇佷欢鐓�")
- @ExcelColumn(name="璇佷欢鐓�",index=8 ,width=10)
- private String imgurl;
- @ApiModelProperty("閽夐拤ID")
- @ExcelColumn(name="閽夐拤ID",index=9 ,width=10)
- private String dingdingId;
- @ApiModelProperty("鑱旂郴鐢佃瘽")
- @ExcelColumn(name="鑱旂郴鐢佃瘽",index=10 ,width=10)
- private String phone;
- @ApiModelProperty("濮撳悕")
- @ExcelColumn(name="濮撳悕",index=11 ,width=10)
- private String name;
- @ApiModelProperty("鎬у埆 0:鐢�;1=濂�;")
- @ExcelColumn(name="鎬у埆 0:鐢�;1=濂�;",index=12 ,width=10)
- private Integer sex;
- @ApiModelProperty("浠庝笟骞翠唤")
- @ExcelColumn(name="浠庝笟骞翠唤",index=13 ,width=10)
- private Integer jobYear;
- @ApiModelProperty("宀椾綅淇℃伅")
- @ExcelColumn(name="宀椾綅淇℃伅",index=14 ,width=10)
- private String positon;
- @ApiModelProperty("鎴樺尯缂栫爜闆嗗悎锛圼1],[2],...]锛�")
- @ExcelColumn(name="鎴樺尯缂栫爜闆嗗悎锛圼1],[2],...]锛�",index=15 ,width=10)
- private String zhanquIds;
- @ApiModelProperty("鍟嗕笟鍖栫被鍨嬬紪鐮侀泦鍚堬紙[1],[2],...]锛�")
- @ExcelColumn(name="鍟嗕笟鍖栫被鍨嬬紪鐮侀泦鍚堬紙[1],[2],...]锛�",index=16 ,width=10)
- private String bustypeIds;
- @ApiModelProperty("鎿呴暱棰嗗煙闆嗗悎锛圼1],[2],...]锛�")
- private String fieldIds;
- @ApiModelProperty("宸ュ彿")
- private String code;
- @ApiModelProperty("璁插笀绛夌骇缂栫爜锛堝叧鑱攃ategory锛�")
- @ExcelColumn(name="璁插笀绛夌骇缂栫爜锛堝叧鑱攃ategory锛�",index=17 ,width=10)
- private Integer levelId;
- @ApiModelProperty("鐘舵��")
- @ExcelColumn(name="鐘舵��",index=18 ,width=10)
- private Integer status;
- @ApiModelProperty("璐圭敤鏍囧噯锛堝厓/鍛級")
- @ExcelColumn(name="璐圭敤鏍囧噯锛堝厓/鍛級",index=19 ,width=10)
- private BigDecimal fee;
- @ApiModelProperty("鏈嶅姟鍟嗗満鏁�")
- @ExcelColumn(name="鏈嶅姟鍟嗗満鏁�",index=20 ,width=10)
- private Integer serveNum;
- @ApiModelProperty("鐢ㄦ埛绫诲瀷0璁插笀;")
- @ExcelColumn(name="鐢ㄦ埛绫诲瀷0璁插笀;",index=21 ,width=10)
- private Integer type;
- @ApiModelProperty("绠�浠�")
- @ExcelColumn(name="绠�浠�",index=22 ,width=10)
- private String content;
- @ApiModelProperty("鏈�杩戠櫥褰曟椂闂�")
- @ExcelColumn(name="鏈�杩戠櫥褰曟椂闂�",index=23 ,width=10)
- private Date loginDate;
- @ApiModelProperty("鐧诲綍娆℃暟")
- @ExcelColumn(name="鐧诲綍娆℃暟",index=24 ,width=10)
- private Integer loginCount;
- @ApiModelProperty("鎺掑簭鐮�")
- @ExcelColumn(name="鎺掑簭鐮�",index=25 ,width=10)
- private Integer sortnum;
- @ApiModelProperty("鐢ㄦ埛鍚�")
- @ExcelColumn(name="鐢ㄦ埛鍚�",index=26 ,width=10)
- private String username;
- @ApiModelProperty("娣诲姞鏂瑰紡 0=鏂板缓;1=瀵煎叆;")
- @ExcelColumn(name="娣诲姞鏂瑰紡 0=鏂板缓;1=瀵煎叆;",index=27 ,width=10)
- private Integer addType;
- @ApiModelProperty("瀵煎叆璁板綍缂栫爜锛堝叧鑱攊mport_record)")
- @ExcelColumn(name="瀵煎叆璁板綍缂栫爜锛堝叧鑱攊mport_record)",index=28 ,width=10)
- private Integer importId;
-
- @ApiModelProperty("宸ヤ綔骞存暟")
- @TableField(exist = false)
- private Integer workYears;
-
- @ApiModelProperty("鎿呴暱棰嗗煙鍚嶇О")
- @TableField(exist = false)
- private String fieldNames;
-
- @ApiModelProperty("宸ヤ綔宀椾綅鍚嶇О")
- @TableField(exist = false)
- private String promotionName;
-
- @ApiModelProperty("绾у埆鍚嶇О")
- @TableField(exist = false)
- private String levelName;
-
- @ApiModelProperty("鎴樺尯缂栫爜 - 鏌ヨ")
- @TableField(exist = false)
- private String queryZQCode;
-
- @ApiModelProperty("鎺掑簭淇℃伅锛�0=鏀惰垂浠庨珮鍒颁綆锛�1=鏀惰垂浠庝綆鍒伴珮锛�2=绛夌骇浠庨珮鍒颁綆锛�3=绛夌骇浠庝綆鍒伴珮锛�4=鏈嶅姟鏁颁粠楂樺埌浣�")
- @TableField(exist = false)
- private Integer orderByType;
-
- @ApiModelProperty("璇佷欢鐓у叏璺緞")
- @TableField(exist = false)
- private String fullImgurl;
-
- @ApiModelProperty("鏌ヨ鐢ㄦ埛绫诲瀷")
- @TableField(exist = false)
- private String queryUserRole;
- @ApiModelProperty("鏍囨潌妗堜緥鏁伴噺")
- @TableField(exist = false)
- private Integer caseNum;
- @ApiModelProperty("鏌ヨ鍏ュ彛 1鍚庡彴")
- @TableField(exist = false)
- private Integer queryFlag ;
-
- @ApiModelProperty("鎿呴暱棰嗗煙")
- @TableField(exist = false)
- private List<Category> fieldList;
- @ApiModelProperty("鎿呴暱棰嗗煙")
- @TableField(exist = false)
- private List<Integer> fieldIdList;
- @ApiModelProperty("鍟嗕笟鍖栫被鍨嬬紪鐮侀泦鍚�")
- @TableField(exist = false)
- private List<Integer> bustypeIdList;
- @ApiModelProperty("鎴樺尯缂栫爜闆嗗悎")
- @TableField(exist = false)
- private List<Integer> zhanquIdList;
- @ApiModelProperty("鎴樺尯闆嗗悎")
- @TableField(exist = false)
- private List<Category> zqList;
- @ApiModelProperty("鍟嗕笟鍖栫被鍨�")
- @TableField(exist = false)
- private List<Category> typeList;
-
- @ApiModelProperty("妗堜緥淇℃伅")
- @TableField(exist = false)
- private List<Cases> casesList;
-
- @TableField(exist = false)
- private byte[] imgurlData;
-
-
- @ApiModelProperty(value = "鏈�鍚庢搷浣滀汉鍛橈紱", example = "1")
- @TableField(exist = false)
- private String updateUserName;
- @ApiModelProperty(value = "鏄惁鍖呭惈宸插垹闄� 0涓嶅寘鍚� 1鍖呭惈锛�", example = "1")
- @TableField(exist = false)
- private int containDeleted;
-}
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
new file mode 100644
index 0000000..3f92533
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Orders.java
@@ -0,0 +1,103 @@
+package com.doumee.dao.business.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+import java.math.BigDecimal;
+/**
+ * 璁㈠崟璁板綍琛ㄤ俊鎭〃Model瀹氫箟
+ * @author doumee
+ * @date 2026-02-02 11:10:42
+ */
+@Data
+@TableName("orders")
+@ApiModel(value = "Orders 瀹炰綋绫�")
+public class Orders {
+
+ @ApiModelProperty("鏀粯鐘舵��:0=鏈敮浠�;1=宸叉敮浠�")
+ @ExcelColumn(name="鏀粯鐘舵��:0=鏈敮浠�;1=宸叉敮浠�",index=1 ,width=10)
+ @TableId(type = IdType.AUTO)
+ private Integer id;
+ @ApiModelProperty("鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�")
+ @ExcelColumn(name="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�",index=2 ,width=10)
+ private Integer deleted;
+ @ApiModelProperty("鍒涘缓浜虹紪鐮�")
+ @ExcelColumn(name="鍒涘缓浜虹紪鐮�",index=3 ,width=10)
+ private Integer createUser;
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @ExcelColumn(name="鍒涘缓鏃堕棿",index=4 ,width=10)
+ private Date createTime;
+ @ApiModelProperty("鏇存柊浜虹紪鐮�")
+ @ExcelColumn(name="鏇存柊浜虹紪鐮�",index=5 ,width=10)
+ private Integer updateUser;
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ @ExcelColumn(name="鏇存柊鏃堕棿",index=6 ,width=10)
+ private Date updateTime;
+ @ApiModelProperty("澶囨敞")
+ @ExcelColumn(name="澶囨敞",index=7 ,width=10)
+ private String remark;
+ @ApiModelProperty("鐘舵��:0=澶勭悊涓�;1=宸叉敮浠�;2=鏀粯澶辫触;")
+ @ExcelColumn(name="鐘舵��:0=澶勭悊涓�;1=宸叉敮浠�;2=鏀粯澶辫触;",index=8 ,width=10)
+ private Integer status;
+ @ApiModelProperty("涓婚")
+ @ExcelColumn(name="涓婚",index=9 ,width=10)
+ private String name;
+ @ApiModelProperty("璐熻矗浜虹紪鐮侊紙鍏宠仈system_user)")
+ @ExcelColumn(name="璐熻矗浜虹紪鐮侊紙鍏宠仈system_user)",index=10 ,width=10)
+ private Integer userId;
+ @ApiModelProperty("璁㈠崟璇存槑")
+ @ExcelColumn(name="璁㈠崟璇存槑",index=11 ,width=10)
+ private String detail;
+ @ApiModelProperty("鍒楄〃鍥�")
+ @ExcelColumn(name="鍒楄〃鍥�",index=12 ,width=10)
+ private String imgurl;
+ @ApiModelProperty("鎺掑簭鐮侊紙鍗囧簭浣跨敤锛�")
+ @ExcelColumn(name="鎺掑簭鐮侊紙鍗囧簭浣跨敤锛�",index=13 ,width=10)
+ private Integer sortnum;
+ @ApiModelProperty("娣诲姞鏂瑰紡 0=杞︽;1=寤舵湡娆�;")
+ @ExcelColumn(name="娣诲姞鏂瑰紡 0=杞︽;1=寤舵湡娆�;",index=14 ,width=10)
+ private Integer type;
+ @ApiModelProperty("鍝佺墝缂栫爜锛堝叧鑱攃ategory)")
+ @ExcelColumn(name="鍝佺墝缂栫爜锛堝叧鑱攃ategory)",index=15 ,width=10)
+ private Integer brandId;
+ @ApiModelProperty("鎵嬫満鍙�")
+ @ExcelColumn(name="鎵嬫満鍙�",index=16 ,width=10)
+ private String phone;
+ @ApiModelProperty("閲戦锛堝厓锛�")
+ @ExcelColumn(name="閲戦锛堝厓锛�",index=17 ,width=10)
+ private BigDecimal money;
+ @ApiModelProperty("鏀粯鏂瑰紡 0寰俊 1鏀粯瀹� 2閫氳仈鏀粯")
+ @ExcelColumn(name="鏀粯鏂瑰紡 0寰俊 1鏀粯瀹� 2閫氳仈鏀粯",index=18 ,width=10)
+ private Integer payMethod;
+ @ApiModelProperty("閫氳仈浜ゆ槗娴佹按")
+ @ExcelColumn(name="閫氳仈浜ゆ槗娴佹按",index=19 ,width=10)
+ private String payOrderId;
+ @ApiModelProperty("鏀粯鏃堕棿")
+ @ExcelColumn(name="鏀粯鏃堕棿",index=20 ,width=10)
+ private Date payDate;
+ @ApiModelProperty("鍙栨秷鏃堕棿")
+ @ExcelColumn(name="鍙栨秷鏃堕棿",index=21 ,width=10)
+ private Date cancelDate;
+ @ApiModelProperty("鍙栨秷鏂瑰紡 0鑷姩鍙栨秷;1鏀跺埌鍙栨秷")
+ @ExcelColumn(name="鍙栨秷鏂瑰紡 0鑷姩鍙栨秷;1鏀跺埌鍙栨秷",index=22 ,width=10)
+ private String cancelWay;
+ @ApiModelProperty("鍙栨秷澶囨敞")
+ @ExcelColumn(name="鍙栨秷澶囨敞",index=23 ,width=10)
+ private String cancelInfo;
+ @ApiModelProperty("鍙栨秷浜虹紪鐮侊紙鍏宠仈system_user)")
+ @ExcelColumn(name="鍙栨秷浜虹紪鐮侊紙鍏宠仈system_user)",index=24 ,width=10)
+ private Integer cancelUserId;
+ @ApiModelProperty("鍙栨秷鐘舵�� 0澶勭悊涓� 1鎴愬姛 2澶辫触")
+ @ExcelColumn(name="鍙栨秷鐘舵�� 0澶勭悊涓� 1鎴愬姛 2澶辫触",index=25 ,width=10)
+ private Integer cancelStatus;
+ @ApiModelProperty("鏀粯鐘舵��:0=鏈敮浠�;1=宸叉敮浠�")
+ @ExcelColumn(name="鏀粯鐘舵��:0=鏈敮浠�;1=宸叉敮浠�",index=26 ,width=10)
+ private Integer payStatus;
+}
diff --git a/server/services/src/main/java/com/doumee/service/business/ImportRecordService.java b/server/services/src/main/java/com/doumee/service/business/ImportRecordService.java
deleted file mode 100644
index 86fec2c..0000000
--- a/server/services/src/main/java/com/doumee/service/business/ImportRecordService.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package com.doumee.service.business;
-
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.dao.business.model.ImportRecord;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
-
-/**
- * 鍒嗙被淇℃伅琛⊿ervice瀹氫箟
- * @author doumee
- * @date 2026-01-27 16:02:37
- */
-public interface ImportRecordService {
-
- /**
- * 鍒涘缓
- *
- * @param model 瀹炰綋瀵硅薄
- * @return Integer
- */
- Integer create(ImportRecord model);
-
- /**
- * 涓婚敭鍒犻櫎
- *
- * @param id 涓婚敭
- */
- void deleteById(Integer id);
-
- /**
- * 鍒犻櫎
- *
- * @param model 瀹炰綋瀵硅薄
- */
- void delete(ImportRecord model);
-
- /**
- * 鎵归噺涓婚敭鍒犻櫎
- *
- * @param ids 涓婚敭闆�
- */
- void deleteByIdInBatch(List<Integer> ids);
-
- /**
- * 涓婚敭鏇存柊
- *
- * @param model 瀹炰綋瀵硅薄
- */
- void updateById(ImportRecord model);
-
- /**
- * 鎵归噺涓婚敭鏇存柊
- *
- * @param model 瀹炰綋闆�
- */
- void updateByIdInBatch(List<ImportRecord> model);
-
- /**
- * 涓婚敭鏌ヨ
- *
- * @param id 涓婚敭
- * @return model
- */
- ImportRecord findById(Integer id);
-
- /**
- * 鏉′欢鏌ヨ鍗曟潯璁板綍
- *
- * @param model 瀹炰綋瀵硅薄
- * @return ImportRecord
- */
- ImportRecord findOne(ImportRecord model);
-
- /**
- * 鏉′欢鏌ヨ
- *
- * @param model 瀹炰綋瀵硅薄
- * @return List<ImportRecord>
- */
- List<ImportRecord> findList(ImportRecord model);
-
- /**
- * 鍒嗛〉鏌ヨ
- *
- * @param pageWrap 鍒嗛〉瀵硅薄
- * @return PageData<ImportRecord>
- */
- PageData<ImportRecord> findPage(PageWrap<ImportRecord> pageWrap);
-
- /**
- * 鏉′欢缁熻
- *
- * @param model 瀹炰綋瀵硅薄
- * @return long
- */
- long count(ImportRecord model);
- ImportRecord importBatch(MultipartFile file, int type );
-
- void dealImporTask(ImportRecord importRecord);
- void clearImporTask();
-}
diff --git a/server/services/src/main/java/com/doumee/service/business/MemberService.java b/server/services/src/main/java/com/doumee/service/business/MemberService.java
deleted file mode 100644
index 28270d4..0000000
--- a/server/services/src/main/java/com/doumee/service/business/MemberService.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package com.doumee.service.business;
-
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.dao.business.model.Member;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
-
-/**
- * 浼氬憳淇℃伅琛⊿ervice瀹氫箟
- * @author doumee
- * @date 2026-01-27 16:02:37
- */
-public interface MemberService {
-
- /**
- * 鍒涘缓
- *
- * @param model 瀹炰綋瀵硅薄
- * @return Integer
- */
- Integer create(Member model);
-
- /**
- * 涓婚敭鍒犻櫎
- *
- * @param id 涓婚敭
- */
- void deleteById(Integer id);
-
- /**
- * 鍒犻櫎
- *
- * @param model 瀹炰綋瀵硅薄
- */
- void delete(Member model);
-
- /**
- * 鎵归噺涓婚敭鍒犻櫎
- *
- * @param ids 涓婚敭闆�
- */
- void deleteByIdInBatch(List<Integer> ids);
-
- /**
- * 涓婚敭鏇存柊
- *
- * @param model 瀹炰綋瀵硅薄
- */
- void updateById(Member model);
- void updateStatus(Member member);
- /**
- * 鎵归噺涓婚敭鏇存柊
- *
- * @param model 瀹炰綋闆�
- */
- void updateByIdInBatch(List<Member> model);
-
- /**
- * 涓婚敭鏌ヨ
- *
- * @param id 涓婚敭
- * @return model
- */
- Member findById(Integer id);
-
- /**
- * 鏉′欢鏌ヨ鍗曟潯璁板綍
- *
- * @param model 瀹炰綋瀵硅薄
- * @return Member
- */
- Member findOne(Member model);
-
- /**
- * 鏉′欢鏌ヨ
- *
- * @param model 瀹炰綋瀵硅薄
- * @return List<Member>
- */
- List<Member> findList(Member model);
-
- /**
- * 鍒嗛〉鏌ヨ
- *
- * @param pageWrap 鍒嗛〉瀵硅薄
- * @return PageData<Member>
- */
- PageData<Member> findPage(PageWrap<Member> pageWrap);
-
- /**
- * 鏉′欢缁熻
- *
- * @param model 瀹炰綋瀵硅薄
- * @return long
- */
- long count(Member model);
-
- Member findDetailById(Integer id,String queryUserRole);
-
-}
diff --git a/server/services/src/main/java/com/doumee/service/business/CasesService.java b/server/services/src/main/java/com/doumee/service/business/OrdersService.java
similarity index 63%
rename from server/services/src/main/java/com/doumee/service/business/CasesService.java
rename to server/services/src/main/java/com/doumee/service/business/OrdersService.java
index 6a83c22..85967a1 100644
--- a/server/services/src/main/java/com/doumee/service/business/CasesService.java
+++ b/server/services/src/main/java/com/doumee/service/business/OrdersService.java
@@ -2,15 +2,16 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
-import com.doumee.dao.business.model.Cases;
+import com.doumee.dao.business.dto.PayOrderResponse;
+import com.doumee.dao.business.model.Orders;
import java.util.List;
/**
- * 鍒嗙被淇℃伅琛⊿ervice瀹氫箟
+ * 璁㈠崟璁板綍琛ㄤ俊鎭〃Service瀹氫箟
* @author doumee
- * @date 2026-01-27 16:02:37
+ * @date 2026-02-02 11:10:42
*/
-public interface CasesService {
+public interface OrdersService {
/**
* 鍒涘缓
@@ -18,7 +19,8 @@
* @param model 瀹炰綋瀵硅薄
* @return Integer
*/
- Integer create(Cases model);
+ Integer create(Orders model);
+ PayOrderResponse createPay(Orders model);
/**
* 涓婚敭鍒犻櫎
@@ -26,13 +28,13 @@
* @param id 涓婚敭
*/
void deleteById(Integer id);
- void updateStatus(Cases cases);
+
/**
* 鍒犻櫎
*
* @param model 瀹炰綋瀵硅薄
*/
- void delete(Cases model);
+ void delete(Orders model);
/**
* 鎵归噺涓婚敭鍒犻櫎
@@ -46,14 +48,14 @@
*
* @param model 瀹炰綋瀵硅薄
*/
- void updateById(Cases model);
+ void updateById(Orders model);
/**
* 鎵归噺涓婚敭鏇存柊
*
* @param model 瀹炰綋闆�
*/
- void updateByIdInBatch(List<Cases> model);
+ void updateByIdInBatch(List<Orders> model);
/**
* 涓婚敭鏌ヨ
@@ -61,31 +63,31 @@
* @param id 涓婚敭
* @return model
*/
- Cases findById(Integer id);
+ Orders findById(Integer id);
/**
* 鏉′欢鏌ヨ鍗曟潯璁板綍
*
* @param model 瀹炰綋瀵硅薄
- * @return Cases
+ * @return Orders
*/
- Cases findOne(Cases model);
+ Orders findOne(Orders model);
/**
* 鏉′欢鏌ヨ
*
* @param model 瀹炰綋瀵硅薄
- * @return List<Cases>
+ * @return List<Orders>
*/
- List<Cases> findList(Cases model);
+ List<Orders> findList(Orders model);
/**
* 鍒嗛〉鏌ヨ
*
* @param pageWrap 鍒嗛〉瀵硅薄
- * @return PageData<Cases>
+ * @return PageData<Orders>
*/
- PageData<Cases> findPage(PageWrap<Cases> pageWrap);
+ PageData<Orders> findPage(PageWrap<Orders> pageWrap);
/**
* 鏉′欢缁熻
@@ -93,5 +95,5 @@
* @param model 瀹炰綋瀵硅薄
* @return long
*/
- long count(Cases model);
+ long count(Orders model);
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/CasesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/CasesServiceImpl.java
deleted file mode 100644
index 76551cc..0000000
--- a/server/services/src/main/java/com/doumee/service/business/impl/CasesServiceImpl.java
+++ /dev/null
@@ -1,236 +0,0 @@
-package com.doumee.service.business.impl;
-
-import com.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.core.constants.Constants;
-import com.doumee.core.constants.ResponseStatus;
-import com.doumee.core.exception.BusinessException;
-import com.doumee.core.model.LoginUserInfo;
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.dao.business.MultifileMapper;
-import com.doumee.dao.business.model.Cases;
-import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.CasesMapper;
-import com.doumee.dao.business.model.Category;
-import com.doumee.dao.business.model.Member;
-import com.doumee.dao.business.model.Multifile;
-import com.doumee.dao.system.model.SystemUser;
-import com.doumee.service.business.CasesService;
-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 org.apache.commons.lang3.StringUtils;
-import org.apache.shiro.SecurityUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * 鍒嗙被淇℃伅琛⊿ervice瀹炵幇
- * @author doumee
- * @date 2026-01-27 16:02:37
- */
-@Service
-public class CasesServiceImpl implements CasesService {
-
- @Autowired
- private SystemDictDataBiz systemDictDataBiz;
- @Autowired
- private CasesMapper casesMapper;
- @Autowired
- private MultifileMapper multifileMapper;
-
- @Override
- @Transactional
- public Integer create(Cases cases) {
- LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
- if(StringUtils.isBlank(cases.getName())
- ||StringUtils.isBlank(cases.getDetail())
- ||cases.getStartDate()==null
- ||cases.getEndDate()==null ){
- throw new BusinessException(ResponseStatus.BAD_REQUEST);
- }
- cases.setDeleted(Constants.ZERO);
- cases.setCreateTime(new Date());
- cases.setCreateUser(loginUserInfo.getId());
- cases.setUpdateTime(new Date());
- cases.setUpdateUser(loginUserInfo.getId());
- casesMapper.insert(cases);
- dealBatchMultiFiles(cases, cases.getFileList(), loginUserInfo,true);
- return cases.getId();
- }
- public void dealBatchMultiFiles(Cases category, List<Multifile> fileList, LoginUserInfo user,boolean update) {
- Date today = new Date();
- //娓呯┖鍘熸湁鐨�
- if(update){
- multifileMapper.delete(new UpdateWrapper<Multifile>().lambda()
- .eq(Multifile::getIsdeleted,Constants.ZERO)
- .eq(Multifile::getObjType,Constants.ONE)
- .eq(Multifile::getObjId,category.getId()));
- }
- if(fileList!=null && fileList.size()>0){
- List<Multifile> multifileList = new ArrayList<>();
- fileList.stream().forEach(s -> {
- if(StringUtils.isNotBlank(s.getFileurl())){
- s.setIsdeleted(Constants.ZERO);
- s.setCreator(user.getId());
- s.setCreateDate(today);
- s.setObjId(category.getId());
- s.setType(Constants.ZERO);
- s.setObjType(Constants.ONE);
- multifileList.add(s);
- }
- });
- if(multifileList.size()>0){
- multifileMapper.insert(multifileList);
- }
- }
- }
- @Override
- public void deleteById(Integer id) {
- Cases cases =new Cases();
- LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
- cases.setUpdateTime(new Date());
- cases.setId(id);
- cases.setUpdateUser(loginUserInfo.getId());
- cases.setDeleted(Constants.ONE);
- casesMapper.updateById(cases);
- }
- @Override
- public void updateStatus(Cases cases) {
- if(Objects.isNull(cases) || Objects.isNull(cases.getId())){
- throw new BusinessException(ResponseStatus.BAD_REQUEST);
- }
- LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
- cases.setUpdateTime(new Date());
- cases.setUpdateUser(loginUserInfo.getId());
- casesMapper.updateById(cases);
- }
- @Override
- public void delete(Cases cases) {
- UpdateWrapper<Cases> deleteWrapper = new UpdateWrapper<>(cases);
- casesMapper.delete(deleteWrapper);
- }
-
- @Override
- public void deleteByIdInBatch(List<Integer> ids) {
- if (CollectionUtils.isEmpty(ids)) {
- return;
- }
- for(Integer id : ids){
- this.deleteById(id);
- }
- }
-
- @Override
- public void updateById(Cases cases) {
- LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
- if(StringUtils.isBlank(cases.getName())
- ||StringUtils.isBlank(cases.getDetail())
- ||cases.getStartDate()==null
- ||cases.getEndDate()==null ){
- throw new BusinessException(ResponseStatus.BAD_REQUEST);
- }
- cases.setDeleted(Constants.ZERO);
- cases.setUpdateTime(new Date());
- cases.setUpdateUser(loginUserInfo.getId());
- casesMapper.updateById(cases);
- dealBatchMultiFiles(cases, cases.getFileList(), loginUserInfo,true);
- }
-
- @Override
- public void updateByIdInBatch(List<Cases> casess) {
- if (CollectionUtils.isEmpty(casess)) {
- return;
- }
- for (Cases cases: casess) {
- this.updateById(cases);
- }
- }
-
- @Override
- public Cases findById(Integer id) {
- return casesMapper.selectById(id);
- }
-
- @Override
- public Cases findOne(Cases cases) {
- QueryWrapper<Cases> wrapper = new QueryWrapper<>(cases).last("limit 1");
- return casesMapper.selectOne(wrapper);
- }
-
- @Override
- public List<Cases> findList(Cases cases) {
- QueryWrapper<Cases> wrapper = new QueryWrapper<>(cases);
- return casesMapper.selectList(wrapper);
- }
-
- @Override
- public PageData<Cases> findPage(PageWrap<Cases> pageWrap) {
- IPage<Cases> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
- MPJLambdaWrapper<Cases> queryWrapper = new MPJLambdaWrapper<>();
- queryWrapper.selectAll(Cases.class)
- .selectAs(Member::getName,Cases::getMemberName)
- .selectAs(Member::getCode,Cases::getMemberCode)
- .selectAs(SystemUser::getRealname, Member::getUpdateUserName)
- .leftJoin(SystemUser.class,SystemUser::getId,Cases::getUpdateUser)
- .leftJoin(Member.class,Member::getId,Cases::getMemberId);
- Utils.MP.blankToNull(pageWrap.getModel());
- queryWrapper.eq(pageWrap.getModel().getContainDeleted()!=1,Cases::getDeleted, Constants.ZERO);
- queryWrapper.eq(pageWrap.getModel().getId() != null,Cases::getId, pageWrap.getModel().getId());
- queryWrapper.eq(pageWrap.getModel().getCreateUser() != null,Cases::getCreateUser, pageWrap.getModel().getCreateUser());
- queryWrapper.eq(pageWrap.getModel().getUpdateUser() != null,Cases::getUpdateUser, pageWrap.getModel().getUpdateUser());
- queryWrapper.eq(pageWrap.getModel().getRemark() != null,Cases::getRemark, pageWrap.getModel().getRemark());
- queryWrapper.eq(pageWrap.getModel().getStatus() != null,Cases::getStatus, pageWrap.getModel().getStatus());
- queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName() ),Cases::getName, pageWrap.getModel().getName());
- queryWrapper.eq(pageWrap.getModel().getMemberId() != null,Cases::getMemberId, pageWrap.getModel().getMemberId());
- queryWrapper.eq(pageWrap.getModel().getDetail() != null,Cases::getDetail, pageWrap.getModel().getDetail());
- queryWrapper.eq(pageWrap.getModel().getImgurl() != null,Cases::getImgurl, pageWrap.getModel().getImgurl());
- queryWrapper.eq(pageWrap.getModel().getSortnum() != null,Cases::getSortnum, pageWrap.getModel().getSortnum());
- queryWrapper.eq(pageWrap.getModel().getAddType() != null,Cases::getAddType, pageWrap.getModel().getAddType());
- queryWrapper.eq(pageWrap.getModel().getImportId() != null,Cases::getImportId, pageWrap.getModel().getImportId());
- queryWrapper.orderByDesc(Cases::getId);
- PageData<Cases> result =PageData.from(casesMapper.selectJoinPage(page, Cases.class,queryWrapper));
- if(result!=null && result.getRecords()!=null){
- String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH).getCode()
- +systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.CASES_FILES).getCode();
- for(Cases cate : result.getRecords()){
- initMultifileList(cate);
- }
- }
- return result;
- }
- private void initMultifileList(Cases cate) {
- String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode()
- + systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.CASES_FILES).getCode();
-
- Multifile find = new Multifile();
- find.setObjId(cate.getId());
- find.setObjType(Constants.ONE);
- find.setIsdeleted(Constants.ZERO);
- List<Multifile> fileList= multifileMapper.selectList(new QueryWrapper<>(find));
- if(fileList!=null){
- for(Multifile f : fileList){
- if(StringUtils.isNotBlank(f.getFileurl())){
- f.setUrl(path+f.getFileurl());
- }
-
- }
- }
- cate.setFileList(fileList);
- }
-
- @Override
- public long count(Cases cases) {
- QueryWrapper<Cases> wrapper = new QueryWrapper<>(cases);
- return casesMapper.selectCount(wrapper);
- }
-}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java
deleted file mode 100644
index 82ba88b..0000000
--- a/server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java
+++ /dev/null
@@ -1,642 +0,0 @@
-package com.doumee.service.business.impl;
-
-import com.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.core.annotation.excel.ExcelImporter;
-import com.doumee.core.constants.Constants;
-import com.doumee.core.constants.ResponseStatus;
-import com.doumee.core.exception.BusinessException;
-import com.doumee.core.model.LoginUserInfo;
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.utils.DateUtil;
-import com.doumee.core.utils.tyyun.TyyZosUtil;
-import com.doumee.dao.business.*;
-import com.doumee.dao.business.dto.CasesImport;
-import com.doumee.dao.business.dto.MemberImport;
-import com.doumee.dao.business.model.*;
-import com.doumee.core.utils.Utils;
-import com.doumee.dao.system.model.SystemUser;
-import com.doumee.service.business.ImportRecordService;
-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 lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.ss.usermodel.CellType;
-import org.apache.poi.xssf.usermodel.XSSFPictureData;
-import org.apache.shiro.SecurityUtils;
-import org.checkerframework.checker.units.qual.A;
-import org.checkerframework.checker.units.qual.C;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.Resource;
-import java.io.ByteArrayInputStream;
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.concurrent.TimeUnit;
-
-/**
- * 鍒嗙被淇℃伅琛⊿ervice瀹炵幇
- * @author doumee
- * @date 2026-01-27 16:02:37
- */
-@Service
-@Slf4j
-public class ImportRecordServiceImpl implements ImportRecordService {
-
- @Autowired
- private ImportRecordMapper importRecordMapper;
- @Autowired
- private CategoryMapper categoryMapper;
- @Autowired
- private MemberMapper memberMapper;
- @Autowired
- private CasesMapper casesMapper;
- @Autowired
- private MultifileMapper multifileMapper;
- @Resource
- private RedisTemplate<String, Object> redisTemplate;
- @Resource
- private SystemDictDataBiz systemDictDataBiz;
-
- @Override
- public Integer create(ImportRecord importRecord) {
- if(StringUtils.isBlank(importRecord.getImgurl())){
- throw new BusinessException(ResponseStatus.BAD_REQUEST);
- }
- LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
- importRecord.setDeleted(Constants.ZERO);
- importRecord.setStatus(Constants.ZERO);
- importRecord.setCreateTime(new Date());
- importRecord.setCreateUser(loginUserInfo.getId());
- importRecord.setUpdateTime(new Date());
- importRecord.setUpdateUser(loginUserInfo.getId());
- importRecordMapper.insert(importRecord);
- return importRecord.getId();
- }
-
- @Override
- public void deleteById(Integer id) {
- importRecordMapper.deleteById(id);
- }
-
- @Override
- public void delete(ImportRecord importRecord) {
- UpdateWrapper<ImportRecord> deleteWrapper = new UpdateWrapper<>(importRecord);
- importRecordMapper.delete(deleteWrapper);
- }
-
- @Override
- public void deleteByIdInBatch(List<Integer> ids) {
- if (CollectionUtils.isEmpty(ids)) {
- return;
- }
- importRecordMapper.deleteBatchIds(ids);
- }
-
- @Override
- public void updateById(ImportRecord importRecord) {
- importRecordMapper.updateById(importRecord);
- }
-
- @Override
- public void updateByIdInBatch(List<ImportRecord> importRecords) {
- if (CollectionUtils.isEmpty(importRecords)) {
- return;
- }
- for (ImportRecord importRecord: importRecords) {
- this.updateById(importRecord);
- }
- }
-
- @Override
- public ImportRecord findById(Integer id) {
- return importRecordMapper.selectById(id);
- }
-
- @Override
- public ImportRecord findOne(ImportRecord importRecord) {
- QueryWrapper<ImportRecord> wrapper = new QueryWrapper<>(importRecord).last("limit 1");
- return importRecordMapper.selectOne(wrapper);
- }
-
- @Override
- public List<ImportRecord> findList(ImportRecord importRecord) {
- QueryWrapper<ImportRecord> wrapper = new QueryWrapper<>(importRecord);
- return importRecordMapper.selectList(wrapper);
- }
-
- @Override
- public PageData<ImportRecord> findPage(PageWrap<ImportRecord> pageWrap) {
- IPage<ImportRecord> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
- MPJLambdaWrapper<ImportRecord> queryWrapper = new MPJLambdaWrapper<>();
- Utils.MP.blankToNull(pageWrap.getModel());
- queryWrapper.selectAll(ImportRecord.class )
- .select( "(select count(c.id) from cases c where c.import_id= t.id)",ImportRecord::getIngNum)
- .selectAs(SystemUser::getRealname,ImportRecord::getUpdateUserName)
- .leftJoin(SystemUser.class,SystemUser::getId,ImportRecord::getUpdateUser);
- queryWrapper.eq(pageWrap.getModel().getId() != null,ImportRecord::getId, pageWrap.getModel().getId());
- queryWrapper.eq(pageWrap.getModel().getDeleted() != null,ImportRecord::getDeleted, pageWrap.getModel().getDeleted());
- queryWrapper.eq(pageWrap.getModel().getCreateUser() != null,ImportRecord::getCreateUser, pageWrap.getModel().getCreateUser());
- queryWrapper.eq(pageWrap.getModel().getUpdateUser() != null,ImportRecord::getUpdateUser, pageWrap.getModel().getUpdateUser());
- queryWrapper.eq(pageWrap.getModel().getRemark() != null,ImportRecord::getRemark, pageWrap.getModel().getRemark());
- queryWrapper.eq(pageWrap.getModel().getStatus() != null,ImportRecord::getStatus, pageWrap.getModel().getStatus());
- queryWrapper.eq(pageWrap.getModel().getTitle() != null,ImportRecord::getTitle, pageWrap.getModel().getTitle());
- queryWrapper.eq(pageWrap.getModel().getTotalNum() != null,ImportRecord::getTotalNum, pageWrap.getModel().getTotalNum());
- queryWrapper.eq(pageWrap.getModel().getDetail() != null,ImportRecord::getDetail, pageWrap.getModel().getDetail());
- queryWrapper.eq(pageWrap.getModel().getImgurl() != null,ImportRecord::getImgurl, pageWrap.getModel().getImgurl());
- queryWrapper.eq(pageWrap.getModel().getSortnum() != null,ImportRecord::getSortnum, pageWrap.getModel().getSortnum());
- queryWrapper.eq(pageWrap.getModel().getType() != null,ImportRecord::getType, pageWrap.getModel().getType());
- queryWrapper.eq(pageWrap.getModel().getDoneNum() != null,ImportRecord::getDoneNum, pageWrap.getModel().getDoneNum());
- queryWrapper.eq(pageWrap.getModel().getErrorNum() != null,ImportRecord::getErrorNum, pageWrap.getModel().getErrorNum());
- queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getUpdateUserName()),SystemUser::getRealname, pageWrap.getModel().getUpdateUserName());
- queryWrapper.ge(pageWrap.getModel().getEndtime() != null,ImportRecord::getCreateTime, pageWrap.getModel().getEndtime());
- queryWrapper.ne(pageWrap.getModel().getStarttime() != null,ImportRecord::getCreateTime, pageWrap.getModel().getStarttime());
- queryWrapper.orderByDesc(ImportRecord::getId);
- return PageData.from(importRecordMapper.selectPage(page, queryWrapper));
- }
-
- @Override
- public long count(ImportRecord importRecord) {
- QueryWrapper<ImportRecord> wrapper = new QueryWrapper<>(importRecord);
- return importRecordMapper.selectCount(wrapper);
- }
- @Override
- public ImportRecord importBatch(MultipartFile file,int type ){
- Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_RECORD);
- if(importing!=null && importing){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝宸插瓨鍦ㄥ鍏ヤ换鍔℃鍦ㄦ墽琛屼腑锛岃绋嶅悗鍐嶈瘯锛�");
- }
- redisTemplate.opsForValue().set(Constants.RedisKeys.IMPORTING_RECORD,true,30, TimeUnit.MINUTES);
- try {
- List<Category> categoryList = null;
- if(type == 0){
- categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda().eq(Category::getDeleted,Constants.ZERO));
- if(categoryList == null || categoryList.size()==0){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝 璇诲彇鑰佸笀鍩烘暟鏁版嵁閰嶇疆鍑洪敊锛岃鍏堥厤缃熀纭�鏁版嵁淇℃伅锛�");
- }
- }
- ImportRecord model = new ImportRecord();
- LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
- model.setDeleted(Constants.ZERO);
- model.setStatus(Constants.ONE);//寮傛澶勭悊涓�
- model.setCreateTime(new Date());
- model.setCreateUser(loginUserInfo.getId());
- model.setUpdateTime(model.getCreateTime());
- model.setUpdateUser(loginUserInfo.getId());
- model.setType(type);
- model.setTitle((type==1?"妗堜緥淇℃伅鎵归噺瀵煎叆":"鑰佸笀淇℃伅鎵归噺瀵煎叆,")+"鏂囦欢锛�"+file.getOriginalFilename());
- model.setTotalNum(0);
- ExcelImporter ie= new ExcelImporter(file,0,0, CellType.STRING); // 纭繚鍗曞厓鏍肩被鍨嬩负瀛楃涓�);
- Map<String, XSSFPictureData> pics = ie.getExcelPictures();
- if(type == 1) {
- List<CasesImport> importList = (ie.getDataList(CasesImport.class,null));
- model.setCaseList(isvalidImpartCasesParam(loginUserInfo,pics,importList));
- model.setTotalNum(model.getCaseList().size());
- }else{
- List<MemberImport> importList = (ie.getDataList(MemberImport.class,null));
- model.setMemberList(isvalidImpartMemberParam(loginUserInfo,categoryList,pics,importList));
- model.setTotalNum(model.getMemberList().size());
- }
- importRecordMapper.insert(model);
- return model;
- }catch (BusinessException e){
- redisTemplate.delete(Constants.RedisKeys.IMPORTING_RECORD);
- throw e;
- }catch (Exception e){
- redisTemplate.delete(Constants.RedisKeys.IMPORTING_RECORD);
- throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏂囦欢淇℃伅璇诲彇澶辫触锛岃妫�鏌ユ枃浠跺唴瀹瑰悗閲嶈瘯锛�");
- }finally {
-// redisTemplate.delete(Constants.RedisKeys.IMPORTING_RECORD);
- }
- }
- private List<Member> isvalidImpartMemberParam(LoginUserInfo user, List<Category> categoryList ,Map<String, XSSFPictureData> pics, List<MemberImport> memberList) {
- if(memberList ==null || memberList.size()==0){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鏈鍙栧埌鏈夋晥鏁版嵁");
- }
- if(pics ==null || pics.size()==0){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鏈鍙栧埌浠讳綍鑱屼笟鐓у浘鐗囨暟鎹�");
- }
- List<Member> insertMember = new ArrayList<>();
- List<Member> allList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
- .eq(Member::getDeleted,Constants.ZERO));
- allList=allList==null?new ArrayList<>():allList;
- if(categoryList == null || categoryList.size()==0){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝 璇诲彇鑰佸笀鍩烘暟鏁版嵁閰嶇疆鍑洪敊锛岃鍏堥厤缃熀纭�鏁版嵁淇℃伅锛�");
- }
- Date date = new Date();
- int index = 1;
- for(MemberImport param :memberList){
- index ++;
- if(( param.getImgurl() == null
- ||param.getImgurl().getData() == null
- ||param.getImgurl().getData().length == 0)
- &&StringUtils.isBlank(param.getFee())
- &&StringUtils.isBlank(param.getName())
- &&StringUtils.isBlank(param.getInfo())
- &&StringUtils.isBlank(param.getJobYear())
- &&StringUtils.isBlank(param.getPosition())
- &&StringUtils.isBlank(param.getFieldNames())
- &&StringUtils.isBlank(param.getSex())
- &&StringUtils.isBlank(param.getCode())
- &&StringUtils.isBlank(param.getZqNames())
- &&StringUtils.isBlank(param.getLevelName())
- &&StringUtils.isBlank(param.getServeNum())
- &&StringUtils.isBlank(param.getTypeNames())){
- continue;
- }
- Member member = new Member();
- if(StringUtils.isBlank(param.getCode())){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 宸ュ彿淇℃伅涓嶈兘涓虹┖");
- }
- for(Member m : allList){
- if(StringUtils.equals(param.getCode(),m.getCode())){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 宸ュ彿銆�"+param.getCode()+"銆戜俊鎭凡瀛樺湪锛岃纭涓嶈閲嶅褰曞叆");
- }
- }
- for(Member m : insertMember){
- if(StringUtils.equals(param.getCode(),m.getCode())){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 宸ュ彿銆�"+param.getCode()+"銆戝湪鏂囨。涓噸澶嶅嚭鐜�");
- }
- }
- if(StringUtils.isBlank(param.getName())){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 濮撳悕淇℃伅涓嶈兘涓虹┖");
- }
- if(StringUtils.isBlank(param.getLevelName())){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 绛夌骇淇℃伅涓嶈兘涓虹┖");
- }
- if(StringUtils.isBlank(param.getJobYear())){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 浠庝笟骞翠唤淇℃伅涓嶈兘涓虹┖");
- }
- Integer year ;
- try {
- year = Integer.parseInt(param.getJobYear());
- }catch (Exception e){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 浠庝笟骞翠唤淇℃伅涓嶆纭�");
- }
- if(StringUtils.isBlank(param.getZqNames())){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 鏈嶅姟鎴樺尯淇℃伅涓嶈兘涓虹┖");
- }
- if(StringUtils.isBlank(param.getTypeNames())){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 鍟嗕笟鍖栫被鍨嬩俊鎭笉鑳戒负绌�");
- }
- if(StringUtils.isBlank(param.getFee())){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 璐圭敤鏍囧噯淇℃伅涓嶈兘涓虹┖");
- }
- /* if(pics!=null && StringUtils.isNotBlank(param.getImgurl())){
- log.info("===================="+param.getImgurl());
- int start = param.getImgurl().indexOf("(\"")+2;
- int end = param.getImgurl().indexOf("\",");
- if(start>=0&& end>=1 && end>start){
- String picId = param.getImgurl().substring(start,end);
- log.info("====================PICID:"+param.getImgurl());
- XSSFPictureData data = pics.get(picId);
- if(data!= null && data.getData() != null){
- member.setImgurlData(data.getData());
- }
- }
- }*/
- if(param.getImgurl() ==null ){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屻��"+param.getName()+"銆戞暟鎹紝 鏈鍙栧埌浠讳綍鑱屼笟鐓у浘鐗囨暟鎹�");
- }
- member.setImgurlData(param.getImgurl().getData());
- if(member.getImgurlData() ==null || member.getImgurlData().length==0){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屻��"+param.getName()+"銆戞暟鎹紝 鏈鍙栧埌浠讳綍鑱屼笟鐓у浘鐗囨暟鎹�");
- }
- //绫诲瀷:0=鎴樺尯;1=鍟嗕笟鍖�;2=鎿呴暱棰嗗煙;3=璁插笀绛夌骇;"
- List<Category> list0 = isValidCategoryParam(param.getZqNames(),Constants.ZERO,categoryList,index );//鎴樺尯
- List<Category> list1 = isValidCategoryParam(param.getTypeNames(),Constants.ONE,categoryList,index);//鍟嗕笟鍖�
- List<Category> list2 = isValidCategoryParam(param.getFieldNames(),Constants.TWO,categoryList,index);//鎿呴暱棰嗗煙
- Category levelCate = getCategoryModelByName(param.getLevelName(),Constants.THREE,categoryList);//璁插笀绛夌骇
- if(levelCate == null){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 绛夌骇淇℃伅銆�"+param.getLevelName()+"銆戝皻鏈厤缃�");
- }
- member.setCreateTime(date);
- member.setUpdateTime(date);
- member.setCreateUser(user.getId());
- member.setUpdateUser(user.getId());
- member.setAddType(Constants.ONE);
- member.setDeleted(Constants.ZERO);
- member.setStatus(Constants.ZERO);
- member.setName(param.getName());
- member.setContent(param.getInfo());
- member.setJobYear(year);
- member.setCode(param.getCode());
- member.setPositon(param.getPosition());
- try {
- member.setServeNum(Integer.parseInt(param.getServeNum()));
- }catch (Exception e){
- }
- try {
- member.setFee(new BigDecimal(param.getFee()));
- }catch (Exception e){
- }
- member.setSex(StringUtils.equals(param.getSex(),"鐢�")?Constants.ZERO:(StringUtils.equals(param.getSex(),"濂�")?Constants.ZERO:null));
- member.setZhanquIds(getIdStrListByList(list0));
- member.setBustypeIds(getIdStrListByList(list1));
- member.setFieldIds(getIdStrListByList(list2));
- member.setLevelId(levelCate.getId());
- insertMember.add(member);
- }
- if(insertMember ==null || insertMember.size()==0){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鏈鍙栧埌鏈夋晥鏁版嵁");
- }
- return insertMember;
-
- }
- private List<Cases> isvalidImpartCasesParam(LoginUserInfo user, Map<String, XSSFPictureData> pics, List<CasesImport> casesImportList) {
- if(casesImportList ==null || casesImportList.size()==0){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鏈鍙栧埌鏈夋晥鏁版嵁");
- }
- if(pics ==null || pics.size()==0){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鏈鍙栧埌浠讳綍鑱屼笟鐓у浘鐗囨暟鎹�");
- }
- List<Cases> insertList = new ArrayList<>();
- List<Member> allList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
- .eq(Member::getDeleted,Constants.ZERO));
- allList=allList==null?new ArrayList<>():allList;
- if(allList == null || allList.size()==0){
- throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝 璇诲彇鑰佸笀鏁版嵁寮傚父锛岃鍏堢淮鎶よ�佸笀鏁版嵁淇℃伅锛�");
- }
- Date date = new Date();
- int index = 1;
- for(CasesImport param :casesImportList){
- index ++;
- if( StringUtils.isBlank(param.getName())
- &&StringUtils.isBlank(param.getMemberCode())
- &&StringUtils.isBlank(param.getStartDate())
- &&StringUtils.isBlank(param.getEndDate())
- &&StringUtils.isBlank(param.getDetail())){
- continue;
- }
- Cases cases = new Cases();
- cases.setStartDate(DateUtil.fromStringToDate("yyyy-MM-dd",param.getStartDate()));
- cases.setEndDate(DateUtil.fromStringToDate("yyyy-MM-dd",param.getEndDate()));
- if(StringUtils.isBlank(param.getName())){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 妗堜緥涓婚涓嶈兘涓虹┖");
- }
- Member member =null;
- for(Member m : allList){
- if(StringUtils.equals(param.getMemberCode(),m.getCode())){
- member = m;
- }
- }
- if(member == null){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 鑰佸笀宸ュ彿銆�"+param.getMemberCode()+"銆戜俊鎭笉瀛樺湪锛岃纭涓嶈閲嶅褰曞叆");
-
- }
- if(StringUtils.isBlank(param.getDetail())){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 妗堜緥璇存槑涓嶈兘涓虹┖");
- }
- if(param.getImageList() == null){
- param.setImageList(new ArrayList<>());
- }
- param.getImageList().addAll(param.getImageList1()!=null?param.getImageList1():new ArrayList<>());
- param.getImageList().addAll(param.getImageList2()!=null?param.getImageList2():new ArrayList<>());
- param.getImageList().addAll(param.getImageList3()!=null?param.getImageList3():new ArrayList<>());
- param.getImageList().addAll(param.getImageList4()!=null?param.getImageList4():new ArrayList<>());
- param.getImageList().addAll(param.getImageList5()!=null?param.getImageList5():new ArrayList<>());
- /* if(param.getImageList() == null
- ||param.getImageList().size() == 0 ){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 妗堜緥鍥句俊鎭笉鑳戒负绌�");
- }*/
- if(cases.getStartDate()==null){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 寮�濮嬫棩鏈熻鍙栧け璐�");
- }
- if(cases.getEndDate()==null){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝 缁撴潫鏃ユ湡璇诲彇澶辫触");
- }
- cases.setImgdataList(new ArrayList<>());
- for(XSSFPictureData d : param.getImageList()){
- cases.getImgdataList().add(d.getData());
- }
- cases.setCreateTime(date);
- cases.setUpdateTime(date);
- cases.setCreateUser(user.getId());
- cases.setUpdateUser(user.getId());
- cases.setAddType(Constants.ONE);
- cases.setDeleted(Constants.ZERO);
- cases.setStatus(Constants.ZERO);
- cases.setName(param.getName());
- cases.setDetail(param.getDetail());
- cases.setMemberId(member.getId());
-
- insertList.add(cases);
- }
- if(insertList ==null || insertList.size()==0){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鏈鍙栧埌鏈夋晥鏁版嵁");
- }
- return insertList;
-
- }
-
- private String getIdStrListByList(List<Category> categoryList) {
- String[] idList = new String[categoryList.size()];
- for (int i = 0; i <categoryList.size(); i++) {
- idList[i]="["+categoryList.get(i).getId()+"]";
- }
- return String.join(",",idList);
- }
-
- private List<Category> isValidCategoryParam(String zqNames, int type, List<Category> categoryList,int index) {
- if(StringUtils.isBlank(zqNames)){
- return null;
- }
- //鑾峰绫伙綔甯傚満绫伙綔鍩硅绫�
- List<Category> list = new ArrayList<>();
- String names[] = zqNames.split("/");
- String title = type==0?"鏈嶅姟鎴樺尯":( type==1?"鍟嗕笟鍖栫被鍨�":"鎿呴暱棰嗗煙");
- for(String str : names){
- if(StringUtils.isBlank(str)){
- continue;
- }
- Category cate = getCategoryModelByName(str,type,categoryList);
- if(cate == null){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝"+title+"涓��"+str+"銆戝皻鏈厤缃�");
- }
- list.add(cate);
- }
- if(list == null || list.size() ==0){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+index+"琛屾暟鎹紝"+title+"鏈煡璇㈠埌鏈夋晥閰嶇疆");
- }
- return list;
- }
- private Category getCategoryModelByName(String levelName, int type, List<Category> categoryList) {
- for(Category c : categoryList){
- if(Constants.equalsInteger(c.getType(),type)
- && StringUtils.equals(levelName.trim(),StringUtils.defaultString(c.getName(),"").trim())){
- return c;
- }
- }
- return null;
- }
-
- /**
- * 寮傛鎵ц鏂囦欢浠诲姟
- * @param importRecord
- */
- @Override
- @Async
- public void dealImporTask(ImportRecord importRecord){
- int success = 0;
- if(Constants.equalsInteger(importRecord.getType(),0)){
- dealUserImportBiz(importRecord);
- }else{
- dealCaseImportBiz(importRecord);
- }
- importRecord.setStatus(Constants.TWO);
- importRecord.setUpdateTime(new Date());
- importRecordMapper.updateById(importRecord);
-
- }
-
- /**
- * 寮傛鎵ц鏂囦欢浠诲姟
- */
- @Override
- public void clearImporTask(){
- try {
- List<ImportRecord> records = importRecordMapper.selectList(new QueryWrapper<ImportRecord>()
- .select("id,total_num,(select count(c.id) from cases c where c.import_id= import_record.id) as doneNum")
- .lambda()
- .eq(ImportRecord::getDetail,Constants.ZERO)
- .ne(ImportRecord::getStatus,Constants.TWO)
- );
- for(ImportRecord importRecord : records){
- importRecord.setErrorNum(Constants.formatIntegerNum(importRecord.getTotalNum()- Constants.formatIntegerNum(importRecord.getDoneNum())));
- importRecord.setStatus(Constants.TWO);
- importRecord.setUpdateTime(new Date());
- importRecord.setRemark("浠诲姟鎵ц涓柇锛屽己鍒惰缃换鍔$姸鎬�");
- importRecordMapper.updateById(importRecord);
- }
- }catch (Exception e){
- e.printStackTrace();
- }finally {
- redisTemplate.delete(Constants.RedisKeys.IMPORTING_RECORD);
- }
- }
-
- /**
- * 澶勭悊妗堜緥瀵煎叆浠诲姟
- * @param importRecord
- */
-
- private int dealCaseImportBiz(ImportRecord importRecord) {
- int success=0;
- String msg = "";
- String nowDate =DateUtil.getNowShortDate();
- try {
- String bucket =systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.BUCKETNAME).getCode();
- String folder =systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.CASES_FILES).getCode();
- TyyZosUtil obs = new TyyZosUtil(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ENDPOINT).getCode(),
- systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ACCESS_ID).getCode(),
- systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ACCESS_KEY).getCode());
- for(Cases param: importRecord.getCaseList()){
- int ts =0;
- try {
- param.setImportId(importRecord.getId());
- param.setAddType(Constants.ONE);
- ts = dealCasesInsert(obs,param,folder,nowDate,bucket);
- }catch (Exception e){
- log.error("澶勭悊浜哄憳淇℃伅鍙戠敓寮傚父{}",e.getMessage());
- ts =0;
- }
- success += ts;
- }
- obs.shutDown();
- }catch (Exception e){
-
- }
- importRecord.setDoneNum(success);
- importRecord.setErrorNum(importRecord.getTotalNum() - success);
- importRecord.setDetail(msg);
- redisTemplate.delete(Constants.RedisKeys.IMPORTING_RECORD);
- return success;
- }
-
- /**
- * 澶勭悊浜哄憳瀵煎叆璁板綍
- * @param importRecord
- */
- private int dealUserImportBiz(ImportRecord importRecord) {
- int success=0;
- String msg = "";
- String nowDate =DateUtil.getNowShortDate();
- try {
- String bucket =systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.BUCKETNAME).getCode();
- String folder =systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.MEMBER_FILES).getCode();
- TyyZosUtil obs = new TyyZosUtil(systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ENDPOINT).getCode(),
- systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ACCESS_ID).getCode(),
- systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.ACCESS_KEY).getCode());
- for(Member param: importRecord.getMemberList()){
- param.setImportId(importRecord.getId());
- param.setAddType(Constants.ONE);
- success += dealMemberInsert(obs,param,folder,nowDate,bucket);
- }
- obs.shutDown();
- }catch (Exception e){
- log.error("澶勭悊浜哄憳淇℃伅鍙戠敓寮傚父{}",e.getMessage());
- }
- importRecord.setDoneNum(success);
- importRecord.setErrorNum(importRecord.getTotalNum() - success);
- importRecord.setDetail(msg);
- redisTemplate.delete(Constants.RedisKeys.IMPORTING_RECORD);
- return success;
- }
-
-
- @Transactional
- private int dealCasesInsert( TyyZosUtil obs,Cases param,String folder,String nowDate,String bucketName) {
- int success = casesMapper.insert(param);
- if(param.getImgdataList()!=null && param.getImgdataList().size()>0){
- List<Multifile> multifileList = new ArrayList<>();
- for(byte[] d : param.getImgdataList()){
- String fileName = UUID.randomUUID() + ".png";
- String tempFileName = nowDate + "/" + fileName;
- String key = folder + tempFileName;// 鏂囦欢鍚�
- if (obs.uploadInputstreamObjectNoShutdown(new ByteArrayInputStream(d ) ,bucketName, key)) {
- Multifile s = new Multifile();
- s.setIsdeleted(Constants.ZERO);
- s.setCreator(param.getCreateUser());
- s.setCreateDate(param.getCreateTime());
- s.setObjId(param.getId());
- s.setType(Constants.ZERO);
- s.setFileurl(tempFileName);
- s.setObjType(Constants.ONE);
- multifileList.add(s);
- param.setImgurl(tempFileName);//璇佷欢鐓у湴鍧�
- }else{
- throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"鍥鹃泦涓婁紶澶辫触锛�");
- }
- }
- multifileMapper.insert(multifileList);
- }
- return success;
-}
-
- private int dealMemberInsert( TyyZosUtil obs,Member param,String folder,String nowDate,String bucketName) {
- int success =0;
- try {
- String fileName = UUID.randomUUID() + ".png";
- String tempFileName = nowDate + "/" + fileName;
- String key = folder + tempFileName;// 鏂囦欢鍚�
- if (obs.uploadInputstreamObjectNoShutdown(new ByteArrayInputStream(param.getImgurlData() ) ,bucketName, key)) {
- param.setImgurl(tempFileName);//璇佷欢鐓у湴鍧�
- log.error("澶勭悊浜哄憳淇℃伅璇佷欢鐓ф垚鍔�=================={}",key );
- success= memberMapper.insert(param);
- }
- }catch (Exception e){
- log.error("澶勭悊浜哄憳淇℃伅{}==鍙戠敓寮傚父{}",param.getName(),e.getMessage());
- }
- return success;
- }
-}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
deleted file mode 100644
index 4c30251..0000000
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ /dev/null
@@ -1,394 +0,0 @@
-package com.doumee.service.business.impl;
-
-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.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.core.constants.Constants;
-import com.doumee.core.constants.ResponseStatus;
-import com.doumee.core.exception.BusinessException;
-import com.doumee.core.model.LoginUserInfo;
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.utils.DateUtil;
-import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.CasesMapper;
-import com.doumee.dao.business.CategoryMapper;
-import com.doumee.dao.business.MemberMapper;
-import com.doumee.dao.business.MultifileMapper;
-import com.doumee.dao.business.model.Cases;
-import com.doumee.dao.business.model.Category;
-import com.doumee.dao.business.model.Member;
-import com.doumee.dao.business.model.Multifile;
-import com.doumee.dao.system.model.SystemUser;
-import com.doumee.service.business.MemberService;
-import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
-import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import io.swagger.models.auth.In;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.shiro.SecurityUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * 浼氬憳淇℃伅琛⊿ervice瀹炵幇
- * @author doumee
- * @date 2026-01-27 16:02:37
- */
-@Service
-public class MemberServiceImpl implements MemberService {
-
- @Autowired
- private MemberMapper memberMapper;
-
- @Autowired
- private CategoryMapper categoryMapper;
-
- @Autowired
- private SystemDictDataBiz systemDictDataBiz;
-
- @Autowired
- private CasesMapper casesMapper;
-
- @Autowired
- private MultifileMapper multifileMapper;
-
- @Override
- public Integer create(Member member) {
- LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
- if(StringUtils.isBlank(member.getCode())
- ||StringUtils.isBlank(member.getName())
- ||StringUtils.isBlank(member.getImgurl())
- ||StringUtils.isBlank(member.getContent())
- ||member.getZhanquIdList()==null
- ||member.getZhanquIdList().size()==0
- ||member.getBustypeIdList()==null
- ||member.getBustypeIdList().size()==0
- ||member.getFieldIdList()==null
- ||member.getFieldIdList().size()==0
- ||member.getLevelId()==null ){
- throw new BusinessException(ResponseStatus.BAD_REQUEST);
- }
- if(memberMapper.selectCount(new QueryWrapper<Member>().lambda()
- .eq(Member::getCode,member.getCode())
- .eq(Member::getDeleted,Constants.ZERO)
- .eq(Member::getType,member.getType()))>0 ){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"宸ュ彿宸插瓨鍦紝璇风‘璁ゅ悗閲嶆柊褰曞叆");
- }
- member.setDeleted(Constants.ZERO);
- member.setCreateTime(new Date());
- member.setCreateUser(loginUserInfo.getId());
- member.setUpdateTime(new Date());
- member.setUpdateUser(loginUserInfo.getId());
- member.setZhanquIds(getIdsStrFromList(member.getZhanquIdList()));
- member.setFieldIds(getIdsStrFromList(member.getFieldIdList()));
- member.setBustypeIds(getIdsStrFromList(member.getBustypeIdList()));
- memberMapper.insert(member);
-
- return member.getId();
- }
-
- private String getIdsStrFromList(List<Integer> zhanquIdList) {
- String t = "";
- if(zhanquIdList!=null && zhanquIdList.size()>0){
- for (int i = 0; i < zhanquIdList.size(); i++) {
- if(zhanquIdList.get(i)==null){
- continue;
- }
- if(StringUtils.isNotBlank(t)){
- t+=",";
- }
- t+="["+zhanquIdList.get(i)+"]";
- }
- }
- return t;
- }
-
- @Override
- public void deleteById(Integer id) {
- Member member =new Member();
- LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
- member.setUpdateTime(new Date());
- member.setId(id);
- member.setUpdateUser(loginUserInfo.getId());
- member.setDeleted(Constants.ONE);
- memberMapper.updateById(member);
- }
-
- @Override
- public void delete(Member member) {
- UpdateWrapper<Member> deleteWrapper = new UpdateWrapper<>(member);
- memberMapper.delete(deleteWrapper);
- }
- @Override
- public void updateStatus(Member member) {
- if(Objects.isNull(member) || Objects.isNull(member.getId())){
- throw new BusinessException(ResponseStatus.BAD_REQUEST);
- }
- LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
- member.setUpdateTime(new Date());
- member.setUpdateUser(loginUserInfo.getId());
- memberMapper.updateById(member);
- }
- @Override
- public void deleteByIdInBatch(List<Integer> ids) {
- if (CollectionUtils.isEmpty(ids)) {
- return;
- }
- for(Integer id : ids){
- this.deleteById(id);
- }
- }
-
- @Override
- public void updateById(Member member) {
- LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
- if(StringUtils.isBlank(member.getCode())
- ||StringUtils.isBlank(member.getName())
- ||StringUtils.isBlank(member.getImgurl())
- ||StringUtils.isBlank(member.getContent())
- ||member.getId()==null
- ||member.getZhanquIdList()==null
- ||member.getZhanquIdList().size()==0
- ||member.getBustypeIdList()==null
- ||member.getBustypeIdList().size()==0
- ||member.getFieldIdList()==null
- ||member.getFieldIdList().size()==0
- ||member.getLevelId()==null ){
- throw new BusinessException(ResponseStatus.BAD_REQUEST);
- }
- if(memberMapper.selectCount(new QueryWrapper<Member>().lambda()
- .eq(Member::getCode,member.getCode())
- .ne(Member::getId,member.getId())
- .eq(Member::getDeleted,Constants.ZERO)
- .eq(Member::getType,member.getType()))>0 ){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"宸ュ彿宸插瓨鍦紝璇风‘璁ゅ悗閲嶆柊褰曞叆");
- }
- member.setUpdateTime(new Date());
- member.setUpdateUser(loginUserInfo.getId());
- member.setAddType(Constants.ZERO);
- member.setZhanquIds(getIdsStrFromList(member.getZhanquIdList()));
- member.setFieldIds(getIdsStrFromList(member.getFieldIdList()));
- member.setBustypeIds(getIdsStrFromList(member.getBustypeIdList()));
- memberMapper.updateById(member);
- }
-
- @Override
- public void updateByIdInBatch(List<Member> members) {
- if (CollectionUtils.isEmpty(members)) {
- return;
- }
- for (Member member: members) {
- this.updateById(member);
- }
- }
-
- @Override
- public Member findById(Integer id) {
- return memberMapper.selectById(id);
- }
-
- @Override
- public Member findOne(Member member) {
- QueryWrapper<Member> wrapper = new QueryWrapper<>(member).last("limit 1");
- return memberMapper.selectOne(wrapper);
- }
-
- @Override
- public List<Member> findList(Member member) {
- member.setDeleted(Constants.ZERO);
- QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
- return memberMapper.selectList(wrapper);
- }
-
- @Override
- public PageData<Member> findPage(PageWrap<Member> pageWrap) {
- IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
- MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
- Utils.MP.blankToNull(pageWrap.getModel());
- Member model = pageWrap.getModel();
- queryWrapper.selectAll(Member.class)
- .selectAs(Category::getName, Member::getLevelName)
- .selectAs(SystemUser::getRealname, Member::getUpdateUserName)
- .leftJoin(SystemUser.class,SystemUser::getId,Member::getUpdateUser)
- .leftJoin(Category.class,Category::getId,Member::getLevelId)
- .apply(Objects.nonNull(model.getBustypeIds())," find_in_set( '["+model.getBustypeIds()+"]', t.BUSTYPE_IDS ) ")
- .apply(Objects.nonNull(model.getZhanquIds())," find_in_set( '["+model.getZhanquIds()+"]', t.ZHANQU_IDS ) ")
- .like(StringUtils.isNotBlank(model.getName()),Member::getName, model.getName())
- .eq(Objects.nonNull(model.getImportId()),Member::getImportId, model.getImportId())
- .eq(Objects.nonNull(model.getStatus()),Member::getStatus, model.getStatus())
- .eq(model.getContainDeleted()!=1,Member::getDeleted, Constants.ZERO)
- .in(Objects.nonNull(model.getLevelId()),Category::getId, model.getLevelId())
- .eq(Objects.nonNull(model.getCode()),Member::getCode, model.getCode())
- .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.ZERO),Member::getFee)
- .orderByAsc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.ONE),Member::getFee)
- .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.TWO),Category::getDetail)
- .orderByAsc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.THREE),Category::getDetail)
- .orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.FOUR),Member::getServeNum)
- .orderByDesc(Member::getId)
- ;
- if(Constants.equalsInteger(pageWrap.getModel().getQueryFlag(),Constants.ONE)){
- queryWrapper.select("(select count(c.id) from cases c where c.deleted=0 and c.member_id=t.id)",Member::getCaseNum);
- }
- if(CollectionUtils.isNotEmpty(model.getFieldIdList())){
- String sql = "";
- for (Integer s:model.getFieldIdList()
- ) {
- sql = sql + (StringUtils.isNotBlank(sql)?" or ":"") + " find_in_set( '["+s+"]' , t.FIELD_IDS ) ";
- }
- queryWrapper.apply(sql);
- }
- if (StringUtils.isNotBlank(model.getQueryZQCode())) {
- Category zhanqu = categoryMapper.selectOne(new QueryWrapper<Category>().lambda()
- .eq(Category::getDeleted,Constants.ZERO)
- .eq(Category::getStatus,Constants.ZERO)
- .eq(Category::getDetail,model.getQueryZQCode())
- .last(" limit 1")
- );
- if(Objects.nonNull(zhanqu)){
- queryWrapper.apply(" find_in_set( '["+zhanqu.getId()+"]', t.ZHANQU_IDS ) ");
- }
- }
- IPage<Member> memberIPage = memberMapper.selectJoinPage(page, Member.class, queryWrapper);
- if(CollectionUtils.isNotEmpty(memberIPage.getRecords())){
- List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda()
- .eq(Category::getDeleted, Constants.ZERO)
-// .eq(Category::getType,Constants.TWO)
- .orderByAsc(Category::getSortnum)
- );
- String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode() +
- systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.MEMBER_FILES).getCode();
- for (Member member:memberIPage.getRecords()) {
- if(CollectionUtils.isNotEmpty(categoryList)){
- dealMemberField(member,categoryList);
- dealMemberCategoryList(member, categoryList,pageWrap.getModel().getQueryFlag());
- }
- member.setFullImgurl(StringUtils.isNotBlank(member.getImgurl())?(path + member.getImgurl()):"");
- if(member.getJobYear()!=null){
- member.setWorkYears(DateUtil.getCurrentYear( ) - member.getJobYear()+1);
- }
- }
- }
- return PageData.from(memberIPage);
- }
-
- private void dealMemberCategoryList(Member member, List<Category> categoryList, Integer queryFlag) {
- member.setFieldList(new ArrayList<>());
- member.setFieldIdList(new ArrayList<>());
- member.setTypeList(new ArrayList<>());
- member.setZqList(new ArrayList<>());
- member.setBustypeIdList(new ArrayList<>());
- member.setZhanquIdList(new ArrayList<>());
- for(Category c:categoryList){
- if(Constants.equalsInteger(c.getType(),Constants.ONE)&& StringUtils.contains(member.getBustypeIds(),"["+c.getId()+"]")){
- //鍟嗕笟鍖�
- member.getTypeList().add(c);
- member.getBustypeIdList().add(c.getId());
- }
- if(Constants.equalsInteger(queryFlag,Constants.ONE)) {
- // 0=鎴樺尯;1=鍟嗕笟鍖�;2=鎿呴暱棰嗗煙;
- if(Constants.equalsInteger(c.getType(),Constants.ZERO)&& StringUtils.contains(member.getZhanquIds(),"["+c.getId()+"]")){
- //鎴樺尯
- member.getZqList().add(c);
- member.getZhanquIdList().add(c.getId());
- }
- if(Constants.equalsInteger(c.getType(),Constants.TWO) && StringUtils.contains(member.getFieldIds(),"["+c.getId()+"]")){
- //鎿呴暱棰嗗煙
- member.getFieldList().add(c);
- member.getFieldIdList().add(c.getId());
- }
- }
-
- }
- }
-
-
- @Override
- public Member findDetailById(Integer id,String userRole) {
- Member member = memberMapper.selectJoinOne(Member.class, new MPJLambdaWrapper<Member>()
- .selectAll(Member.class)
- .select(" c1.NAME ", Member::getPromotionName)
- .select(" c2.NAME ", Member::getLevelName)
- .select(" TIMESTAMPDIFF(YEAR, CONCAT(t.JOB_YEAR , '-01-01'), now()) ",Member::getWorkYears)
- .leftJoin(" category c1 on t.POSITON = c1.id ")
- .leftJoin(" category c2 on t.LEVEL_ID = c2.id ")
- .eq(Member::getId, id)
- .last(" limit 1 "));
- if(Objects.isNull(member)){
- throw new BusinessException(ResponseStatus.DATA_EMPTY);
- }
- if(StringUtils.isNotBlank(member.getFieldIds())){
- member.setFieldList(
- categoryMapper.selectList(new QueryWrapper<Category>().lambda()
- .eq(Category::getDeleted, Constants.ZERO)
- .eq(Category::getType,Constants.TWO)
- .apply(" find_in_set(CONCAT('[',id,']'),'"+member.getFieldIds()+"') ")
- .orderByAsc(Category::getSortnum)
- )
- );
- }
-
- String resourcePath = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode();
- String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.MEMBER_FILES).getCode();
- String roleConfig = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.ROLE_CONFIG).getCode();
- member.setFullImgurl(StringUtils.isNotBlank(member.getImgurl())?(resourcePath + path + member.getImgurl()):"");
- List<Cases> casesList = casesMapper.selectList(new QueryWrapper<Cases>().lambda()
- .eq(Cases::getMemberId,member.getId())
- .eq(Cases::getDeleted,Constants.ZERO)
- .orderByDesc(Cases::getId)
- );
- if(CollectionUtils.isNotEmpty(casesList)){
- String casePath = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.CATEGORY_FILES).getCode();
- for (Cases cases:casesList) {
- List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
- .eq(Multifile::getObjId,cases.getId())
- .eq(Multifile::getObjType,Constants.ONE)
- .eq(Multifile::getIsdeleted,Constants.ZERO)
- .orderByDesc(Multifile::getId)
- );
- multifileList.forEach(multifile -> {
- multifile.setUrl(StringUtils.isNotBlank(multifile.getFileurl())?(resourcePath + casePath + multifile.getFileurl()):"");
- });
- cases.setFileList(multifileList);
- }
- member.setCasesList(casesList);
- }
- if(StringUtils.isBlank(roleConfig)||StringUtils.isBlank(userRole)
- || !(roleConfig.contains(userRole)||userRole.equals(Constants.DD_USER_TYPE) )){
- member.setFee(null);
- }
- return member;
- }
-
-
-
-
- public void dealMemberField(Member member,List<Category> categoryList){
- if(CollectionUtils.isNotEmpty(categoryList)){
- return;
- }
- String fieldNames = "";
- for (Category category:categoryList) {
- if(member.getFieldIds().contains("["+category.getId()+"]")){
- fieldNames = fieldNames + (StringUtils.isNotBlank(fieldNames)?",":"") + category.getName();
- }
- }
- member.setFieldNames(fieldNames);
- }
-
-
- @Override
- public long count(Member member) {
- QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
- return memberMapper.selectCount(wrapper);
- }
-
-
-
-}
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
new file mode 100644
index 0000000..9a0bef0
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
@@ -0,0 +1,233 @@
+package com.doumee.service.business.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.allinpay.syb.lib.SybConstants;
+import com.allinpay.syb.lib.SybUtil;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.dto.PayOrderParam;
+import com.doumee.dao.business.dto.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.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 lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.TreeMap;
+
+/**
+ * 璁㈠崟璁板綍琛ㄤ俊鎭〃Service瀹炵幇
+ * @author doumee
+ * @date 2026-02-02 11:10:42
+ */
+@Service
+@Slf4j
+public class OrdersServiceImpl implements OrdersService {
+
+ @Autowired
+ private OrdersMapper ordersMapper;
+ @Autowired
+ private SystemUserMapper systemUserMapper;
+
+ @Override
+ @Transactional
+ public Integer create(Orders orders) {
+ return ordersMapper.insert(orders);
+ }
+ @Override
+ @Transactional
+ public PayOrderResponse createPay(Orders orders) {
+ if( orders.getType()==null
+ || StringUtils.isBlank(orders.getPhone())
+ || StringUtils.isBlank(orders.getName())
+ ||orders.getMoney()==null
+ ||orders.getMoney().compareTo(new BigDecimal("0.01")) < 0){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"璇锋寜鐓ц姹傚~鍐欎粯娆句俊鎭紒");
+ }
+ if(orders.getUserId()!=null){
+ SystemUser user = systemUserMapper.selectById(orders.getUserId());
+ if(user==null){
+ orders.setUserId(null);
+ }
+ }
+ Date date = new Date();
+ orders.setCreateTime(date);
+ orders.setPayStatus(Constants.ZERO);
+ orders.setStatus(Constants.ZERO);
+ orders.setPayMethod(Constants.ZERO);
+ ordersMapper.insert(orders);
+ return startPayDo(orders);
+ }
+
+ private PayOrderResponse startPayDo(Orders orders) {
+ try {
+ PayOrderResponse r = new PayOrderResponse();
+ PayOrderParam param = new PayOrderParam();
+ param.setAppid(SybConstants.SYB_APPID);
+ param.setCusid(SybConstants.SYB_CUSID);
+ param.setVersion(SybConstants.VERSION);
+ param.setCharset("utf-8");
+ param.setTrxamt("1");
+ param.setReqsn(""+orders.getId());
+ param.setReturl("http://localhost:8080/#/page/success/success");
+ param.setNotify_url(SybConstants.NOTFIY_URL);
+ param.setNotify_url("");
+ param.setBody(orders.getRemark());
+ param.setValidtime( SybConstants.VALID_TIME);
+ param.setSigntype(SybConstants.SIGN_TYPE);
+
+ String appkey = "";
+ if(SybConstants.SIGN_TYPE.equals("RSA")){
+ appkey = SybConstants.SYB_RSACUSPRIKEY;
+ } else if(SybConstants.SIGN_TYPE.equals("SM2")){
+ appkey = SybConstants.SYB_SM2PPRIVATEKEY;
+ } else{
+ appkey = SybConstants.SYB_MD5_APPKEY;
+ }
+ String sign = SybUtil.unionSign(getTreeMapByParam(param),appkey,param.getSigntype());
+ param.setSign( sign);
+ r.setUrl(SybConstants.SYB_APIURL+"/h5unionpay/unionorder");
+ r.setParam(param);
+// String r = HttpsUtil.postJson(SybConstants.SYB_APIURL+"/h5unionpay/unionorder",JSONObject.toJSONString(param));
+// log.error(param);
+ return r;
+ }catch (Exception e){
+ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鍙戣捣鏀舵璇锋眰澶辫触锛岃绋嶅悗閲嶈瘯锛�");
+ }
+ }
+
+ private TreeMap<String, String> getTreeMapByParam(PayOrderParam param) {
+ TypeReference< TreeMap<String, String> > type = new TypeReference< TreeMap<String, String> >() { };
+ TreeMap<String, String> obj = JSONObject.parseObject(JSON.toJSONString(param), type.getType());
+ return obj;
+ }
+
+
+ @Override
+ public void deleteById(Integer id) {
+ ordersMapper.deleteById(id);
+ }
+
+ @Override
+ public void delete(Orders orders) {
+ UpdateWrapper<Orders> deleteWrapper = new UpdateWrapper<>(orders);
+ ordersMapper.delete(deleteWrapper);
+ }
+
+ @Override
+ public void deleteByIdInBatch(List<Integer> ids) {
+ if (CollectionUtils.isEmpty(ids)) {
+ return;
+ }
+ ordersMapper.deleteBatchIds(ids);
+ }
+
+ @Override
+ public void updateById(Orders orders) {
+ ordersMapper.updateById(orders);
+ }
+
+ @Override
+ public void updateByIdInBatch(List<Orders> orderss) {
+ if (CollectionUtils.isEmpty(orderss)) {
+ return;
+ }
+ for (Orders orders: orderss) {
+ this.updateById(orders);
+ }
+ }
+
+ @Override
+ public Orders findById(Integer id) {
+ return ordersMapper.selectById(id);
+ }
+
+ @Override
+ public Orders findOne(Orders orders) {
+ QueryWrapper<Orders> wrapper = new QueryWrapper<>(orders).last("limit 1");
+ return ordersMapper.selectOne(wrapper);
+ }
+
+ @Override
+ public List<Orders> findList(Orders orders) {
+ QueryWrapper<Orders> wrapper = new QueryWrapper<>(orders);
+ return ordersMapper.selectList(wrapper);
+ }
+
+ @Override
+ public PageData<Orders> findPage(PageWrap<Orders> pageWrap) {
+ IPage<Orders> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+ QueryWrapper<Orders> queryWrapper = new QueryWrapper<>();
+ Utils.MP.blankToNull(pageWrap.getModel());
+ queryWrapper.lambda().eq(pageWrap.getModel().getId() != null,Orders::getId, pageWrap.getModel().getId());
+ queryWrapper.lambda().eq(pageWrap.getModel().getDeleted() != null,Orders::getDeleted, pageWrap.getModel().getDeleted());
+ queryWrapper.lambda().eq(pageWrap.getModel().getCreateUser() != null,Orders::getCreateUser, pageWrap.getModel().getCreateUser());
+ if (pageWrap.getModel().getCreateTime() != null) {
+ queryWrapper.lambda().ge(Orders::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime()));
+ queryWrapper.lambda().le(Orders::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime()));
+ }
+ queryWrapper.lambda().eq(pageWrap.getModel().getUpdateUser() != null,Orders::getUpdateUser, pageWrap.getModel().getUpdateUser());
+ if (pageWrap.getModel().getUpdateTime() != null) {
+ queryWrapper.lambda().ge(Orders::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime()));
+ queryWrapper.lambda().le(Orders::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime()));
+ }
+ queryWrapper.lambda().eq(pageWrap.getModel().getRemark() != null,Orders::getRemark, pageWrap.getModel().getRemark());
+ queryWrapper.lambda().eq(pageWrap.getModel().getStatus() != null,Orders::getStatus, pageWrap.getModel().getStatus());
+ queryWrapper.lambda().eq(pageWrap.getModel().getName() != null,Orders::getName, pageWrap.getModel().getName());
+ queryWrapper.lambda().eq(pageWrap.getModel().getUserId() != null,Orders::getUserId, pageWrap.getModel().getUserId());
+ queryWrapper.lambda().eq(pageWrap.getModel().getDetail() != null,Orders::getDetail, pageWrap.getModel().getDetail());
+ queryWrapper.lambda().eq(pageWrap.getModel().getImgurl() != null,Orders::getImgurl, pageWrap.getModel().getImgurl());
+ queryWrapper.lambda().eq(pageWrap.getModel().getSortnum() != null,Orders::getSortnum, pageWrap.getModel().getSortnum());
+ queryWrapper.lambda().eq(pageWrap.getModel().getType() != null,Orders::getType, pageWrap.getModel().getType());
+ queryWrapper.lambda().eq(pageWrap.getModel().getBrandId() != null,Orders::getBrandId, pageWrap.getModel().getBrandId());
+ queryWrapper.lambda().eq(pageWrap.getModel().getPhone() != null,Orders::getPhone, pageWrap.getModel().getPhone());
+ queryWrapper.lambda().eq(pageWrap.getModel().getMoney() != null,Orders::getMoney, pageWrap.getModel().getMoney());
+ queryWrapper.lambda().eq(pageWrap.getModel().getPayMethod() != null,Orders::getPayMethod, pageWrap.getModel().getPayMethod());
+ queryWrapper.lambda().eq(pageWrap.getModel().getPayOrderId() != null,Orders::getPayOrderId, pageWrap.getModel().getPayOrderId());
+ if (pageWrap.getModel().getUpdateTime() != null) {
+ queryWrapper.lambda().ge(Orders::getPayDate, Utils.Date.getStart(pageWrap.getModel().getPayDate()));
+ queryWrapper.lambda().le(Orders::getPayDate, Utils.Date.getEnd(pageWrap.getModel().getPayDate()));
+ }
+ if (pageWrap.getModel().getUpdateTime() != null) {
+ queryWrapper.lambda().ge(Orders::getCancelDate, Utils.Date.getStart(pageWrap.getModel().getCancelDate()));
+ queryWrapper.lambda().le(Orders::getCancelDate, Utils.Date.getEnd(pageWrap.getModel().getCancelDate()));
+ }
+ queryWrapper.lambda().eq(pageWrap.getModel().getCancelWay() != null,Orders::getCancelWay, pageWrap.getModel().getCancelWay());
+ queryWrapper.lambda().eq(pageWrap.getModel().getCancelInfo() != null,Orders::getCancelInfo, pageWrap.getModel().getCancelInfo());
+ queryWrapper.lambda().eq(pageWrap.getModel().getCancelUserId() != null,Orders::getCancelUserId, pageWrap.getModel().getCancelUserId());
+ queryWrapper.lambda().eq(pageWrap.getModel().getCancelStatus() != null,Orders::getCancelStatus, pageWrap.getModel().getCancelStatus());
+ queryWrapper.lambda().eq(pageWrap.getModel().getPayStatus() != null,Orders::getPayStatus, pageWrap.getModel().getPayStatus());
+ for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+ if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+ queryWrapper.orderByDesc(sortData.getProperty());
+ } else {
+ queryWrapper.orderByAsc(sortData.getProperty());
+ }
+ }
+ return PageData.from(ordersMapper.selectPage(page, queryWrapper));
+ }
+ @Override
+ public long count(Orders orders) {
+ QueryWrapper<Orders> wrapper = new QueryWrapper<>(orders);
+ return ordersMapper.selectCount(wrapper);
+ }
+}
diff --git a/server/services/src/main/resources/application-dev.yml b/server/services/src/main/resources/application-dev.yml
index 2433c64..b43291e 100644
--- a/server/services/src/main/resources/application-dev.yml
+++ b/server/services/src/main/resources/application-dev.yml
@@ -1,7 +1,7 @@
spring:
# 鏁版嵁婧愰厤缃�
datasource:
- url: jdbc:mysql://192.168.0.211:3306/zbom_dianjiang?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
+ url: jdbc:mysql://192.168.0.211:3306/diandongche?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: root
password: Doumee@168
driver-class-name: com.mysql.cj.jdbc.Driver
@@ -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
diff --git a/server/services/src/main/resources/application-pro.yml b/server/services/src/main/resources/application-pro.yml
index a8a65fe..23888bc 100644
--- a/server/services/src/main/resources/application-pro.yml
+++ b/server/services/src/main/resources/application-pro.yml
@@ -1,7 +1,7 @@
spring:
# 鏁版嵁婧愰厤缃�
datasource:
- url: jdbc:mysql://192.168.0.211:3306/zbom_dianjiang?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
+ url: jdbc:mysql://192.168.0.211:3306/diandongche?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: root
password: Doumee@168
driver-class-name: com.mysql.cj.jdbc.Driver
diff --git a/server/services/src/main/resources/application-test.yml b/server/services/src/main/resources/application-test.yml
index d4f309f..4b89b4b 100644
--- a/server/services/src/main/resources/application-test.yml
+++ b/server/services/src/main/resources/application-test.yml
@@ -1,7 +1,7 @@
spring:
# 鏁版嵁婧愰厤缃�
datasource:
- url: jdbc:mysql://192.168.0.211:3306/zbom_dianjiang?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
+ url: jdbc:mysql://192.168.0.211:3306/diandongche?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: root
password: Doumee@168
driver-class-name: com.mysql.cj.jdbc.Driver
diff --git a/server/startsh/admin_start.sh b/server/startsh/admin_start.sh
new file mode 100644
index 0000000..60219c0
--- /dev/null
+++ b/server/startsh/admin_start.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+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 &
+
+cd /data/jars/lianhelihua/logs
+tail -f /data/jars/lianhelihua/logs/info.2025-05-19.1.log
\ No newline at end of file
diff --git a/server/web/pom.xml b/server/web/pom.xml
deleted file mode 100644
index fc10d87..0000000
--- a/server/web/pom.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>com.doumee</groupId>
- <artifactId>dianjiang</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </parent>
- <artifactId>web</artifactId>
- <properties>
- <maven.compiler.source>8</maven.compiler.source>
- <maven.compiler.target>8</maven.compiler.target>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- <dependencies>
- <dependency>
- <groupId>com.doumee</groupId>
- <artifactId>services</artifactId>
- <version>1.0.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-aop</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-cache</artifactId>
- </dependency>
- <dependency>
- <groupId>com.zaxxer</groupId>
- <artifactId>HikariCP</artifactId>
- </dependency>
- <dependency>
- <groupId>com.github.ben-manes.caffeine</groupId>
- <artifactId>caffeine</artifactId>
- </dependency>
- </dependencies>
-
- <build>
- <finalName>dianjiang_web</finalName>
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- </resource>
- </resources>
-
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <configuration>
- <fork>true</fork>
- <mainClass>com.doumee.DJWebApplication</mainClass>
- <layout>ZIP</layout><layout>ZIP</layout>
- <includeSystemScope>true</includeSystemScope>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/server/web/src/main/java/com/doumee/DJWebApplication.java b/server/web/src/main/java/com/doumee/DJWebApplication.java
deleted file mode 100644
index 59dae4c..0000000
--- a/server/web/src/main/java/com/doumee/DJWebApplication.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.doumee;
-
-import lombok.extern.slf4j.Slf4j;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
-import org.springframework.context.ApplicationContext;
-import org.springframework.scheduling.annotation.EnableAsync;
-
-/**
- * 鍚姩绫�
- * @author dm
- * @since 2025/03/31 16:44
- */
-@Slf4j
-@SpringBootApplication
-@MapperScan("com.doumee.dao")
-@EnableAsync
-public class DJWebApplication extends SpringBootServletInitializer {
- public static void main(String[] args) {
- ApplicationContext context = SpringApplication.run(DJWebApplication.class);
- context.getEnvironment();
- }
-}
diff --git a/server/web/src/main/java/com/doumee/api/web/ApiController.java b/server/web/src/main/java/com/doumee/api/web/ApiController.java
deleted file mode 100644
index b6e10cb..0000000
--- a/server/web/src/main/java/com/doumee/api/web/ApiController.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.doumee.api.web;
-
-import com.alibaba.fastjson.JSONObject;
-import com.doumee.config.jwt.JwtTokenUtil;
-import com.doumee.dao.business.model.Member;
-import com.doumee.dao.vo.WebLoginUserVO;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * Controller鍩虹被
- * @author Eva.Caesar Liu
- * @date 2022/03/15 09:54
- */
-@Slf4j
-@Service
-public class ApiController {
-
- /**
- * 寰楀埌request瀵硅薄
- *
- * @return
- */
- public HttpServletRequest getRequest() {
- HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
- return request;
- }
-
-
- protected Integer getMemberId() {
- Object obj = this.getRequest().getAttribute(JwtTokenUtil.MEMBER_ID);
- return obj != null ? (Integer) obj : null;
- }
-
- /**
- * 鑾峰彇鐧诲綍鐢ㄦ埛瀵硅薄淇℃伅
- * @return
- */
- protected WebLoginUserVO getMemberResponse(){
- Object obj = this.getRequest().getAttribute(JwtTokenUtil.MEMBER_INFO);
- if(obj != null){
- return JSONObject.parseObject(obj.toString(), WebLoginUserVO.class);
- }
- return null;
- }
-
-}
diff --git a/server/web/src/main/java/com/doumee/api/web/LoginController.java b/server/web/src/main/java/com/doumee/api/web/LoginController.java
deleted file mode 100644
index 33cc68b..0000000
--- a/server/web/src/main/java/com/doumee/api/web/LoginController.java
+++ /dev/null
@@ -1,195 +0,0 @@
-package com.doumee.api.web;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.dingtalk.api.response.OapiV2UserGetuserinfoResponse;
-import com.doumee.api.BaseController;
-import com.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.config.annotation.LoginRequired;
-import com.doumee.config.jwt.JwtTokenUtil;
-import com.doumee.core.annotation.excel.ExcelExporter;
-import com.doumee.core.annotation.pr.PreventRepeat;
-import com.doumee.core.annotation.trace.Trace;
-import com.doumee.core.constants.Constants;
-import com.doumee.core.dingTalk.DingTalk;
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.LoginUserInfo;
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.utils.HttpsUtil;
-import com.doumee.dao.business.dto.LoginRequestNewParam;
-import com.doumee.dao.business.model.Category;
-import com.doumee.dao.business.model.Member;
-import com.doumee.dao.system.dto.DingLoginDTO;
-import com.doumee.dao.system.model.SystemJob;
-import com.doumee.dao.vo.WebLoginUserVO;
-import com.doumee.service.business.CategoryService;
-import com.doumee.service.business.MemberService;
-import com.taobao.api.ApiException;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.shiro.SecurityUtils;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.UUID;
-
-/**
- * @author 姹熻箘韫�
- * @date 2025/07/09 12:00
- */
-@Api(tags = "web鐧诲綍鐩稿叧鎺ュ彛")
-@Trace(exclude = true)
-@RestController
-@RequestMapping("/web/login")
-@Slf4j
-public class LoginController extends ApiController {
-
- @Autowired
- private CategoryService categoryService;
-
- @Autowired
- private JwtTokenUtil jwtTokenUtil;
-
- @Autowired
- private SystemDictDataBiz systemDictDataBiz;
-
- @Autowired
- private MemberService memberService;
-
- @Autowired
- private DingTalk dingTalk;
-
-
- @ApiOperation("UK鍗曠偣鐧诲綍")
- @GetMapping("/ukLogin")
- public void ukLogin(String tick, Object obj, HttpServletRequest request, HttpServletResponse response) throws Exception {
- LoginRequestNewParam requestParam = new LoginRequestNewParam();
- // UK_ERROR_URL = "http://u.zhibang.com/sso/web/token/error";
- String errorUrl =systemDictDataBiz.queryByCode(Constants.ZBOM_PARAM,Constants.ZBOM_UK_ERROR_URL).getCode();
- /* try {
- log.error("璇锋眰鍙傛暟TICK鏈�鍘熷===========锛�" + tick);
- JSONObject urlParams = new JSONObject();
- log.info("璇锋眰鍙傛暟锛�" + JSON.toJSONString(urlParams));
- //TICKET_LOGIN_TEST = "http://testsso.zhibang.com:8080/esc-idm/api/v1/getUserInfo";
- //TICKET_LOGIN = "https://sso.zbom.com/esc-idm/api/v1/getUserInfo";
- String url = systemDictDataBiz.queryByCode(Constants.ZBOM_PARAM,Constants.ZBOM_TICKET_LOGIN_URL).getCode() + "?tick=" + URLEncoder.encode(tick,Constants.UTF);
- String post = HttpsUtil.get(url,true);
- log.info("杩斿洖鍙傛暟锛�" + post);
- JSONObject json = JSONObject.parseObject(post);
- if (StringUtils.equals(json.getString("code"), "0")) {
- JSONObject userInfo = json.getJSONObject("data");
- requestParam = JSONObject.toJavaObject(userInfo, LoginRequestNewParam.class);
- } else {
- log.error("妗堜緥搴撶郴缁熷崟鐐圭櫥褰曞け璐� 閿欒鍘熷洜鑾峰彇tick澶辫触" + json.getString("message"));
- response.sendRedirect(errorUrl + "?title=" + enCode("鐧婚檰閿欒") + "&msg="+ enCode(json.getString("message")));
- return;
- }
- } catch (Exception e) {
- log.error("ticket鎺ュ彛璇锋眰閿欒锛�" + e.getMessage());
- response.sendRedirect(errorUrl + "?title=" + enCode("鐧婚檰閿欒") + "&msg=" + enCode("绯荤粺绻佸繖锛岃绋嶅悗閲嶈瘯~"));
- return;
- }*/
- requestParam.setRediUrl("http://localhost:10087/#/login");
- WebLoginUserVO loginUserVO = new WebLoginUserVO();
- loginUserVO.setId("123");
- loginUserVO.setRoleType("admin");
- loginUserVO.setZhanqu("1");
- String token = jwtTokenUtil.generateToken(loginUserVO);
- response.sendRedirect(requestParam.getRediUrl()+"?token="+token);
- }
-
- @ApiOperation("閽夐拤鐧诲綍")
- @PostMapping("/ddLogin")
- public ApiResponse<WebLoginUserVO> ddLogin(@Validated @RequestBody DingLoginDTO dingLoginDTO) throws ApiException {
- WebLoginUserVO loginUserVO = new WebLoginUserVO();
- OapiV2UserGetuserinfoResponse.UserGetByCodeResponse response = dingTalk.getDDUserByCode(dingLoginDTO);
- if(Objects.nonNull(response)){
- loginUserVO.setId(response.getUserid());
- loginUserVO.setRoleType(Constants.DD_USER_TYPE);
- }
- loginUserVO.setToken(jwtTokenUtil.generateToken(loginUserVO));
- return ApiResponse.success(loginUserVO);
- }
-
-
- private String enCode(String string) {
- // TODO Auto-generated method stub
- String str = "";
- try {
- str = java.net.URLEncoder.encode(string, "utf-8");
- } catch (UnsupportedEncodingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return str;
- }
-
- @LoginRequired
- @ApiOperation("鑰佸笀鍒嗛〉鏌ヨ")
- @PostMapping("/memberPage")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
- })
- public ApiResponse<PageData<Member>> memberPage(@RequestBody PageWrap<Member> pageWrap) {
- WebLoginUserVO loginUserVO = this.getMemberResponse();
- pageWrap.getModel().setQueryUserRole(loginUserVO.getRoleType());
- pageWrap.getModel().setQueryZQCode(loginUserVO.getZhanqu());
- PageData<Member> pageData = memberService.findPage(pageWrap);
- if(CollectionUtils.isNotEmpty(pageData.getRecords())){
- String roleConfig = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.ROLE_CONFIG).getCode();
- if(StringUtils.isBlank(roleConfig)||StringUtils.isBlank(pageWrap.getModel().getQueryUserRole())
- || ! (roleConfig.contains(pageWrap.getModel().getQueryUserRole()) || pageWrap.getModel().getQueryUserRole().equals(Constants.DD_USER_TYPE) )){
- pageData.getRecords().forEach(i->{
- i.setFee(null);
- });
- }
- }
- return ApiResponse.success(pageData);
- }
-
-
-
- @LoginRequired
- @ApiOperation("鑰佸笀璇︽儏")
- @GetMapping("/memberDetail")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
- })
- public ApiResponse<Member> memberPage(@RequestParam Integer id) {
- WebLoginUserVO loginUserVO = this.getMemberResponse();
- return ApiResponse.success(memberService.findDetailById(id,loginUserVO.getRoleType()));
- }
-
-
- @LoginRequired
- @ApiOperation("鍒嗙被淇℃伅鏌ヨ")
- @GetMapping("/categoryList")
- @ApiImplicitParams({
- @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
- })
- public ApiResponse<List<Category>> categoryList(@RequestParam Integer type) {
- return ApiResponse.success(categoryService.getCategoryList(type));
- }
-
-
-
-
-
-
-}
diff --git a/server/web/src/main/resources/application.yml b/server/web/src/main/resources/application.yml
deleted file mode 100644
index 57a9549..0000000
--- a/server/web/src/main/resources/application.yml
+++ /dev/null
@@ -1,85 +0,0 @@
-# 绔彛鍣ㄩ厤缃�
-server:
- port: 11011
-# 椤圭洰淇℃伅閰嶇疆
-project:
- name: 蹇楅偊鐐瑰皢
- version: 1.0.0
-
-spring:
- profiles:
- active: dev
- # JSON杩斿洖閰嶇疆
- jackson:
- # 榛樿鏃跺尯
- time-zone: GMT+8
- # 榛樿鏃ユ湡鏍煎紡鍖�
- date-format: yyyy-MM-dd HH:mm:ss
- # Quartz閰嶇疆
- quartz:
- # 鏄惁鑷姩鍚姩
- auto-startup: true
- # 璋冨害鍣ㄥ悕绉�
- scheduler-name: EvaScheduler
- servlet:
- multipart:
- max-file-size: 50MB
- max-request-size: 50MB
-
-# MyBatis閰嶇疆
-mybatis-plus:
- mapper-locations: classpath*:/mappers/**/*.xml
- configuration:
- map-underscore-to-camel-case: true
- log-impl: com.doumee.config.mybatis.DmStdOutImpl
-# log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
-# log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
-
-
-# 缂撳瓨鍐呭璁剧疆
-cache:
- session:
- # 浼氳瘽杩囨湡鏃堕暱(s)
- expire: 1800
- captcha:
- # 楠岃瘉鐮佽繃鏈熸椂闀�(s)
- expire: 300
-
-# 璺熻釜鏃ュ織
-trace:
- # 寮�鍚櫤鑳借窡韪ā寮�
- smart: true
- # 鎺掗櫎璺熻釜鐨刄RL姝e垯
- exclude-patterns: .+/list[a-zA-Z0-9\-\_]*$, .+/tree[a-zA-Z0-9\-\_]*$, .+/page[a-zA-Z0-9\-\_]*$, .+/all[a-zA-Z0-9\-\_]*$, /swagger-resources.*
-
-# 瀹夊叏閰嶇疆
-security:
- aes:
- key: qklpNODl6JjmgcT+
- iv: 7rnE4rm3h/hcfqN2
-
-
-# 鏃ュ織閰嶇疆
-logback:
- level: ERROR
- appender: ${project.env}
-# dao灞傜殑鏃ュ織璁剧疆涓篸ebug锛屾柟渚挎煡鐪媠ql
-logging:
- level:
- # JOB鐩稿叧
- com.doumee.dao.system.SystemJobMapper: ERROR
- com.doumee.dao.system.SystemJobListMapper: ERROR
- com.doumee.dao.system.SystemJobSnippetMapper: ERROR
- com.doumee.dao.system.SystemJobLogMapper: ERROR
- com.doumee.dao.business: ERROR
-auth:
- jwt:
- enabled: true #鏄惁寮�鍚疛WT鐧诲綍璁よ瘉鍔熻兘
- secret: fjkfaf;afa # JWT绉侀挜锛岀敤浜庢牎楠孞WT浠ょ墝鐨勫悎娉曟��
- expiration: 1800000 #JWT浠ょ墝鐨勬湁鏁堟湡锛岀敤浜庢牎楠孞WT浠ょ墝鐨勫悎娉曟��
- # expiration: 300000 #JWT浠ょ墝鐨勬湁鏁堟湡锛岀敤浜庢牎楠孞WT浠ょ墝鐨勫悎娉曟��
- header: JWTHeaderName #HTTP璇锋眰鐨凥eader鍚嶇О锛岃Header浣滀负鍙傛暟浼犻�扟WT浠ょ墝
- userParamName: username #鐢ㄦ埛鐧诲綍璁よ瘉鐢ㄦ埛鍚嶅弬鏁板悕绉�
- pwdParamName: password #鐢ㄦ埛鐧诲綍璁よ瘉瀵嗙爜鍙傛暟鍚嶇О
- useDefaultController: true # 鏄惁浣跨敤榛樿鐨凧wtAuthController
-
diff --git a/server/web/src/main/resources/logback-spring.xml b/server/web/src/main/resources/logback-spring.xml
deleted file mode 100644
index 97326c0..0000000
--- a/server/web/src/main/resources/logback-spring.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
- <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
- <layout class="ch.qos.logback.classic.PatternLayout">
- <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/web"></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">
- <filter class="ch.qos.logback.classic.filter.LevelFilter">
- <level>ERROR</level>
- <!--鍖归厤灏辫垗鍘�-->
- <onMatch>DENY</onMatch>
- <onMismatch>ACCEPT</onMismatch>
- </filter>
- <encoder>
- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
- </encoder>
- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
- <!--璺緞-->
- <fileNamePattern>${log.path}/info.%d.%i.log</fileNamePattern>
- <maxFileSize>${log.fileSize}</maxFileSize>
- <maxHistory>${log.historyDays}</maxHistory>
- <totalSizeCap>1GB</totalSizeCap>
- </rollingPolicy>
- </appender>
- <appender name="fileSqlLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <encoder>
- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
- </encoder>
- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
- <!--璺緞-->
- <fileNamePattern>${log.path}/sql.%d.%i.log</fileNamePattern>
- <maxFileSize>${log.fileSize}</maxFileSize>
- <maxHistory>${log.historyDays}</maxHistory>
- <totalSizeCap>1GB</totalSizeCap>
- </rollingPolicy>
- </appender>
-
- <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>ERROR</level>
- </filter>
- <encoder>
- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
- </encoder>
- <!--婊氬姩绛栫暐-->
- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
- <!--璺緞-->
- <fileNamePattern>${log.path}/error.%d.%i.log</fileNamePattern>
- <maxFileSize>${log.fileSize}</maxFileSize>
- <maxHistory>${log.historyDays}</maxHistory>
- <totalSizeCap>1GB</totalSizeCap>
- </rollingPolicy>
- </appender>
- <!-- 寮傛鍐欏叆鏃ュ織 -->
- <appender name ="ASYNC" class= "ch.qos.logback.classic.AsyncAppender">
- <!-- 涓嶄涪澶辨棩蹇�.榛樿鐨�,濡傛灉闃熷垪鐨�80%宸叉弧,鍒欎細涓㈠純TRACT銆丏EBUG銆両NFO绾у埆鐨勬棩蹇� -->
- <discardingThreshold >0</discardingThreshold>
- <!-- 鏇存敼榛樿鐨勯槦鍒楃殑娣卞害,璇ュ�间細褰卞搷鎬ц兘.榛樿鍊间负256 -->
- <queueSize>512</queueSize>
- <!-- 娣诲姞闄勫姞鐨刟ppender,鏈�澶氬彧鑳芥坊鍔犱竴涓� -->
- <appender-ref ref ="fileInfoLog"/>
- </appender>
- <!-- MyBatis SQL鏃ュ織閰嶇疆 -->
- <logger name="com.doumee.dao" level="DEBUG" additivity="false">
- <appender-ref ref="fileSqlLog" />
- </logger>
- <!-- 濡傛灉浣犱娇鐢∕yBatis-Plus锛屼篃鍙互娣诲姞浠ヤ笅閰嶇疆 -->
- <logger name="com.baomidou.mybatisplus" level="DEBUG" additivity="false" >
- <appender-ref ref="fileSqlLog" />
- </logger>
- <root level="info">
- <appender-ref ref="consoleLog"/>
- <appender-ref ref="fileInfoLog"/>
- <appender-ref ref="fileErrorLog"/>
- </root>
-</configuration>
\ No newline at end of file
--
Gitblit v1.9.3