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