瀏覽代碼

Merge branch 'master' of http://116.63.33.55/git/read_opc

FinalYu 2 年之前
父節點
當前提交
eedf801524
共有 26 個文件被更改,包括 348 次插入51 次删除
  1. 24 13
      chuanyi-admin/public/index.html
  2. 33 0
      chuanyi-admin/src/api/dashboard.js
  3. 2 3
      chuanyi-admin/src/store/modules/permission.js
  4. 11 6
      chuanyi-admin/src/store/modules/user.js
  5. 89 4
      chuanyi-admin/src/views/dashboard/index.vue
  6. 6 3
      chuanyi-admin/src/views/login/index.vue
  7. 3 3
      chuanyi-admin/src/views/system/dept/dept-dist.vue
  8. 8 4
      chuanyi-admin/src/views/system/menu/menu-dist.vue
  9. 1 0
      chuanyi-admin/src/views/system/role/role-menuSelect.vue
  10. 61 15
      chuanyi-admin/src/views/system/role/role-select.vue
  11. 2 0
      chuanyi-admin/src/views/system/user/delet-user.vue
  12. 9 0
      chuanyi_server/src/main/java/com/judong/chuanyiserver/controller/ReportTableController.java
  13. 9 0
      chuanyi_server/src/main/java/com/judong/chuanyiserver/controller/RoleController.java
  14. 20 0
      chuanyi_server/src/main/java/com/judong/chuanyiserver/controller/UserController.java
  15. 2 0
      chuanyi_server/src/main/java/com/judong/chuanyiserver/dao/ReportTableDao.java
  16. 5 0
      chuanyi_server/src/main/java/com/judong/chuanyiserver/dao/RoleDao.java
  17. 10 0
      chuanyi_server/src/main/java/com/judong/chuanyiserver/dao/UserDao.java
  18. 2 0
      chuanyi_server/src/main/java/com/judong/chuanyiserver/service/ReportTableService.java
  19. 5 0
      chuanyi_server/src/main/java/com/judong/chuanyiserver/service/RoleService.java
  20. 10 0
      chuanyi_server/src/main/java/com/judong/chuanyiserver/service/UserService.java
  21. 5 0
      chuanyi_server/src/main/java/com/judong/chuanyiserver/service/impl/ReportTableServiceImpl.java
  22. 5 0
      chuanyi_server/src/main/java/com/judong/chuanyiserver/service/impl/RoleServiceImpl.java
  23. 10 0
      chuanyi_server/src/main/java/com/judong/chuanyiserver/service/impl/UserServiceImpl.java
  24. 4 0
      chuanyi_server/src/main/resources/mapper/ReportTableDao.xml
  25. 4 0
      chuanyi_server/src/main/resources/mapper/RoleDao.xml
  26. 8 0
      chuanyi_server/src/main/resources/mapper/UserDao.xml

+ 24 - 13
chuanyi-admin/public/index.html

@@ -33,7 +33,7 @@
       align-content: center;
       justify-content: center;
       align-items: center;
-      animation: changeright 3s infinite linear ;
+      animation: changeright 3s infinite linear;
     }
 
     #loader-wrapper .load_title {
@@ -49,11 +49,16 @@
       line-height: 30px;
     }
 
-    .loading{
-      position:absolute;
-      top: 60%;
-      left: 48%;
-      color:#409EFF;
+    .loading {
+      position: absolute;
+      left: 0;
+      bottom: 0;
+      right: 0;
+      top: 200px;
+      margin: auto;
+      color: #409EFF;
+      height: 80px;
+      width: 80px;
     }
 
     @keyframes mounthAni {
@@ -104,13 +109,19 @@
       }
     }
 
-    @keyframes changeright{  
-     0%{transform:rotate(0deg);}
-  
-     50%{transform:rotate(180deg);}
-  
-     100%{transform:rotate(360deg);}
-   }
+    @keyframes changeright {
+      0% {
+        transform: rotate(0deg);
+      }
+
+      50% {
+        transform: rotate(180deg);
+      }
+
+      100% {
+        transform: rotate(360deg);
+      }
+    }
   </style>
 </head>
 

+ 33 - 0
chuanyi-admin/src/api/dashboard.js

@@ -0,0 +1,33 @@
+import request from '@/utils/request'
+
+/** 查询管理端用户数量 */
+export function getManagerUserNum() {
+  return request({
+    url: '/user/queryManagerUserNum',
+    method: 'get'
+  })
+}
+
+/** 查询客户端用户数量 */
+export function getCustomerUserNum() {
+  return request({
+    url: '/user/queryCustomerUserNum',
+    method: 'get'
+  })
+}
+
+/** 查询角色数量 */
+export function getRoleNum() {
+  return request({
+    url: '/role/queryRoleNum',
+    method: 'get'
+  })
+}
+
+/** 查询报表数量 */
+export function getReportFormrNum() {
+  return request({
+    url: '/reportTable/queryTableNum',
+    method: 'get'
+  })
+}

+ 2 - 3
chuanyi-admin/src/store/modules/permission.js

@@ -2,7 +2,6 @@ import { constantRoutes } from '@/router'
 import { getRouters } from '@/api/menu'
 import { reject } from 'lodash'
 import NProgress from 'nprogress'
-import router from '@/router'
 
 /**
  * 路由数据
@@ -118,7 +117,7 @@ const actions = {
    * @param roles
    * @returns {Promise<unknown>}
    */
-  GenerateRoutes({ commit }, userId) {
+  GenerateRoutes({ commit, dispatch }, userId) {
     return new Promise((resolve) => {
       // 向后端请求路由数据
       getRouters({ userId }).then((res) => {
@@ -130,7 +129,7 @@ const actions = {
           resolve(accessedRoutes)
         } catch (error) {
           console.log(error)
-          router.replace('/login')
+          dispatch('user/GetCode', {}, { root: true })
           NProgress.done()
           reject(error)
         }

+ 11 - 6
chuanyi-admin/src/store/modules/user.js

@@ -31,7 +31,9 @@ const state = {
     'value': 1
   }],
   // 验证码路径
-  verifyCode: ''
+  verifyCode: '',
+  // 验证码参数
+  codeUid: ''
 }
 
 const mutations = {
@@ -55,19 +57,22 @@ const mutations = {
   },
   SET_VERIFYCODE: (state, code) => {
     state.verifyCode = 'data:image/gif;base64,' + code
+  },
+  SET_CODEUID: (state, uid) => {
+    state.codeUid = uid
   }
 }
 
 const actions = {
 
   /** 获取验证码 */
-  GetCode({ state, commit }) {
+  GetCode({ commit }) {
     return new Promise((resolve, reject) => {
       getCode(true).then(res => {
-        console.log(res)
-        const { publicKey, verifyCode } = res.data
+        const { publicKey, verifyCode, uid } = res.data
         setPubKey(publicKey)
         commit('SET_VERIFYCODE', verifyCode)
+        commit('SET_CODEUID', uid)
         resolve()
       }).catch(err => {
         reject(err)
@@ -83,10 +88,10 @@ const actions = {
    * @constructor
    */
   Login({ commit, state }, userInfo) {
-    const { userName, password, code, uid } = userInfo
+    const { userName, password, code } = userInfo
     const pwd = encrypt(password, state.publicKey)
     return new Promise((resolve, reject) => {
-      login(userName, pwd, code, uid).then(response => {
+      login(userName, pwd, code, state.codeUid).then(response => {
         const { token, user } = response.data
         commit('SET_TOKEN', token)
         setToken(token)

+ 89 - 4
chuanyi-admin/src/views/dashboard/index.vue

@@ -1,24 +1,109 @@
 <template>
   <div class="sy-content">
-    App Home
+    <div class="statistics">
+      <div v-for="(item, index) in statData" :key="index" class="stat-item">
+        <span class="stat-top">{{ item.title }}</span>
+        <span class="stat-bottom">{{ item.num }}</span>
+      </div>
+    </div>
   </div>
 </template>
 
 <script>
 import { mapGetters } from 'vuex'
+import {
+  getManagerUserNum,
+  getCustomerUserNum,
+  getRoleNum,
+  getReportFormrNum
+} from '@/api/dashboard'
 
 export default {
   name: 'Dashboard',
   data() {
     return {
+      statData: []
     }
   },
   computed: {
-    ...mapGetters([
-      'roles'
-    ])
+    ...mapGetters(['roles'])
   },
   created() {
+    this.statistics()
+  },
+  methods: {
+    statistics() {
+      const p1 = new Promise((resolve, reject) => {
+        getManagerUserNum().then((res) => {
+          if (res.code === 200) {
+            resolve(res.data)
+          }
+        })
+      })
+      const p2 = new Promise((resolve, reject) => {
+        getCustomerUserNum().then((res) => {
+          if (res.code === 200) {
+            resolve(res.data)
+          }
+        })
+      })
+      const p3 = new Promise((resolve, reject) => {
+        getRoleNum().then((res) => {
+          if (res.code === 200) {
+            resolve(res.data)
+          }
+        })
+      })
+      const p4 = new Promise((resolve, reject) => {
+        getReportFormrNum().then((res) => {
+          if (res.code === 200) {
+            resolve(res.data)
+          }
+        })
+      })
+      Promise.all([p1, p2, p3, p4]).then((res) => {
+        this.statData = [
+          {
+            title: '管理端用户数量',
+            num: res[0]
+          },
+          {
+            title: '客户端用户数量',
+            num: res[1]
+          },
+          {
+            title: '角色数量',
+            num: res[2]
+          },
+          {
+            title: '报表数量',
+            num: res[3]
+          }
+        ]
+      })
+    }
   }
 }
 </script>
+
+<style lang="scss" scoped>
+.statistics {
+  display: flex;
+  justify-content: space-between;
+  margin: 30px auto;
+  width: 50%;
+  .stat-item {
+    display: flex;
+    flex-direction: column;
+    text-align: center;
+    .stat-top {
+      color: #676666;
+    }
+    .stat-bottom {
+      font-size: 20px;
+      color: #000000;
+      margin-top: 6px;
+    }
+  }
+}
+</style>

+ 6 - 3
chuanyi-admin/src/views/login/index.vue

@@ -88,7 +88,6 @@
 </template>
 
 <script>
-// import { getCode } from "@/api/user";
 import { Message } from 'element-ui'
 import errorCode from '@/utils/errorCode'
 
@@ -101,8 +100,8 @@ export default {
         publicKey: '',
         userName: '',
         password: '',
-        code: '',
-        uid: ''
+        code: ''
+        // uid: "",
       },
       loginRules: {
         userName: [
@@ -144,6 +143,9 @@ export default {
   computed: {
     url() {
       return this.$store.getters.verifyCode
+    },
+    publicKey() {
+      return this.$store.getters.publicKey
     }
   },
   watch: {
@@ -176,6 +178,7 @@ export default {
       //   this.codeUrl = "data:image/gif;base64," + data.verifyCode;
       // });
       await this.$store.dispatch('user/GetCode')
+      this.loginForm.publicKey = this.publicKey
       loading.close()
     },
     checkCapslock(e) {

+ 3 - 3
chuanyi-admin/src/views/system/dept/dept-dist.vue

@@ -60,6 +60,7 @@
       row-key="userId"
       border
       header-row-class-name="headBackground"
+      max-height="450"
       @selection-change="selectChange"
     >
       <el-table-column type="selection" reserve-selection align="center" />
@@ -152,12 +153,11 @@ export default {
           const data = res.data
           this.tableData = data.userList
           this.tableData.map((item) => {
-            item.lastLoginTime === null
-              ? (item.lastLoginTime = '暂未登录')
-              : item.lastLoginTime
+            item.lastLoginTime === null ? (item.lastLoginTime = '暂未登录') : item.lastLoginTime
             item.state === 0 ? (item.state = '正常') : (item.state = '锁定')
           })
           this.total = data.count
+          this.$refs.table.bodyWrapper.scrollTop = 0
           this.loading = false
         }
       })

+ 8 - 4
chuanyi-admin/src/views/system/menu/menu-dist.vue

@@ -23,7 +23,7 @@
       </el-form-item>
     </el-form>
 
-    <el-row>
+    <el-row style="margin-bottom:10px">
       <el-col>
         <el-button
           type="primary"
@@ -41,6 +41,10 @@
       v-loading="loading"
       :data="addMenuAuthList"
       row-key="id"
+      header-row-class-name="headBackground"
+      stripe
+      border
+      max-height="450"
       @selection-change="handelAddMenuAuth"
     >
       <el-table-column type="selection" width="55" align="center" :reserve-selection="true" />
@@ -49,9 +53,8 @@
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
-            type="primary"
-            plain
-            icon="el-icon-circle-plus"
+            type="text"
+            icon="el-icon-circle-plus-outline"
             size="mini"
             :disabled="!distribution"
             @click="distMenuAuthBtn(scope.row, $event)"
@@ -115,6 +118,7 @@ export default {
         this.addMenuAuthList = data.permissionList
         this.addTotal = data.count
         this.loading = false
+        this.$refs.multipleTable.bodyWrapper.scrollTop = 0
       })
     },
     /** 添加菜单权限多选框选中数据 */

+ 1 - 0
chuanyi-admin/src/views/system/role/role-menuSelect.vue

@@ -27,6 +27,7 @@
       row-key="id"
       border
       header-row-class-name="headBackground"
+      max-height="450"
       @select="select"
       @select-all="selectAll"
       @selection-change="selectChange"

+ 61 - 15
chuanyi-admin/src/views/system/role/role-select.vue

@@ -1,13 +1,34 @@
 <template>
   <!-- 授权用户 -->
-  <el-dialog title="选择用户" :visible.sync="visible" width="800px" top="5vh" append-to-body :close-on-click-modal="false">
+  <el-dialog
+    title="选择用户"
+    :visible.sync="visible"
+    width="800px"
+    top="5vh"
+    append-to-body
+    :close-on-click-modal="false"
+  >
     <el-form ref="queryForm" :model="queryParams" size="small" :inline="true">
       <el-form-item label="用户名称" prop="userName">
-        <el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable @keyup.enter.native="handleQuery" />
+        <el-input
+          v-model="queryParams.userName"
+          placeholder="请输入用户名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+        >搜索</el-button>
+        <el-button
+          icon="el-icon-refresh"
+          size="mini"
+          @click="resetQuery"
+        >重置</el-button>
       </el-form-item>
     </el-form>
     <el-row>
@@ -17,22 +38,39 @@
         border
         stripe
         header-row-class-name="headBackground"
+        max-height="350"
         @row-click="clickRow"
         @selection-change="handleSelectionChange"
       >
         <el-table-column type="selection" width="55" />
-        <el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
-        <el-table-column label="用户状态" prop="state" :show-overflow-tooltip="true">
+        <el-table-column
+          label="用户名称"
+          prop="userName"
+          :show-overflow-tooltip="true"
+        />
+        <el-table-column
+          label="用户状态"
+          prop="state"
+          :show-overflow-tooltip="true"
+        >
           <template slot-scope="scope">
             <span>{{ convertUserStatus(scope.row.state) }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="用户类型" prop="userType" :show-overflow-tooltip="true">
+        <el-table-column
+          label="用户类型"
+          prop="userType"
+          :show-overflow-tooltip="true"
+        >
           <template slot-scope="scope">
             <span>{{ convertUserType(scope.row.userType) }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="最后登录时间" prop="lastLoginTime" width="160" />
+        <el-table-column
+          label="最后登录时间"
+          prop="lastLoginTime"
+          width="160"
+        />
         <el-table-column label="创建时间" prop="createTime" width="160" />
       </el-table>
       <pagination
@@ -45,7 +83,11 @@
       />
     </el-row>
     <div slot="footer" class="dialog-footer">
-      <el-button type="primary" size="mini" @click="handleSelectUser">确定</el-button>
+      <el-button
+        type="primary"
+        size="mini"
+        @click="handleSelectUser"
+      >确定</el-button>
       <el-button size="mini" @click="visible = false">取消</el-button>
     </div>
   </el-dialog>
@@ -57,7 +99,8 @@ export default {
   props: {
     // 角色编号
     roleId: {
-      type: [Number, String]
+      type: [Number, String],
+      default: undefined
     }
   },
   data() {
@@ -119,18 +162,21 @@ export default {
     },
     /** 多选框选中数据 */
     handleSelectionChange(selection) {
-      this.userIds = selection.map(item => item.userId)
+      this.userIds = selection.map((item) => item.userId)
     },
     /** 查询用户列表 */
     getList() {
-      getAllAdminUser(this.queryParams).then(res => {
+      getAllAdminUser(this.queryParams).then((res) => {
         if (res.code === 200) {
           const data = res.data
-          data.userList.forEach(item => {
-            item.lastLoginTime ? item.lastLoginTime : item.lastLoginTime = '暂未登录'
+          data.userList.forEach((item) => {
+            item.lastLoginTime
+              ? item.lastLoginTime
+              : (item.lastLoginTime = '暂未登录')
           })
           this.userList = data.userList
           this.total = data.count
+          this.$refs.table.bodyWrapper.scrollTop = 0
         }
       })
     },
@@ -159,7 +205,7 @@ export default {
         })
         return
       } else {
-        addUserToAuthRole(query).then(res => {
+        addUserToAuthRole(query).then((res) => {
           if (res.code === 200) {
             this.$message({
               message: '分配用户成功',

+ 2 - 0
chuanyi-admin/src/views/system/user/delet-user.vue

@@ -26,6 +26,7 @@
         stripe
         border
         header-row-class-name="headBackground"
+        max-height="450"
         @selection-change="handleSelectionChange"
       >
         <el-table-column type="selection" width="50" align="center" />
@@ -152,6 +153,7 @@ export default {
           this.tableData = data.userList
           this.total = data.count
           this.loading = false
+          this.$refs.userTable.bodyWrapper.scrollTop = 0
         }
       })
     },

+ 9 - 0
chuanyi_server/src/main/java/com/judong/chuanyiserver/controller/ReportTableController.java

@@ -190,4 +190,13 @@ public class ReportTableController {
         }
         return reportTableService.tableExchangeTypeById(id, isAutoReport);
     }
+
+    /**
+     * 查询报表数量
+     */
+    @GetMapping("/queryTableNum")
+    @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.REPORTTABLE, OperationEnum = OperationEnum.SELECT)
+    public Result queryTableNum(){
+        return reportTableService.queryTableNum();
+    }
 }

+ 9 - 0
chuanyi_server/src/main/java/com/judong/chuanyiserver/controller/RoleController.java

@@ -300,4 +300,13 @@ public class RoleController {
         return roleService.queryPermissionByRoleId(roleId, page, num);
     }
 
+    /**
+     * 查询角色数量
+     */
+    @GetMapping("/queryRoleNum")
+    @PermissionControl
+    @WebLog(ServerEnum = ServerEnum.SERVER, ModelEnum = ModelEnum.ROLE, OperationEnum = OperationEnum.SELECT)
+    public Result queryRoleNum(){
+        return roleService.queryRoleNum();
+    }
 }

+ 20 - 0
chuanyi_server/src/main/java/com/judong/chuanyiserver/controller/UserController.java

@@ -396,4 +396,24 @@ public class UserController {
         return userService.updateUserByListId(userIdList);
     }
 
+    /**
+     * 客户端用户数量
+     */
+    @GetMapping("/queryCustomerUserNum")
+    @PermissionControl
+    @WebLog(ServerEnum = ServerEnum.SERVER, ModelEnum = ModelEnum.USER, OperationEnum = OperationEnum.SELECT)
+    public Result queryCustomerUserNum(){
+        return userService.queryCustomerUserNum();
+    }
+
+    /**
+     * 管理端用户数量
+     */
+    @GetMapping("/queryManagerUserNum")
+    @PermissionControl
+    @WebLog(ServerEnum = ServerEnum.SERVER, ModelEnum = ModelEnum.USER, OperationEnum = OperationEnum.SELECT)
+    public Result queryManagerUserNum(){
+        return userService.queryManagerUserNum();
+    }
+
 }

+ 2 - 0
chuanyi_server/src/main/java/com/judong/chuanyiserver/dao/ReportTableDao.java

@@ -42,4 +42,6 @@ public interface ReportTableDao {
     Long getTableTemplateCount(String userId);
 
     Integer tableExchangeTypeById(Integer id, Integer isAutoReport);
+
+    Integer queryTableNum();
 }

+ 5 - 0
chuanyi_server/src/main/java/com/judong/chuanyiserver/dao/RoleDao.java

@@ -175,4 +175,9 @@ public interface RoleDao {
      */
     Integer deleteRoleList(@Param("roleIdList") List<Integer> roleIdList);
 
+    /**
+     * 查询角色数量
+     */
+    Integer queryRoleNum(Integer PUBLIC_NO_DELETE);
+
 }

+ 10 - 0
chuanyi_server/src/main/java/com/judong/chuanyiserver/dao/UserDao.java

@@ -123,5 +123,15 @@ public interface UserDao {
      */
     Integer updateUserByListId(@Param("userIdList") List<String> userIdList, Integer normalUse);
 
+    /**
+     * 客户端用户数量
+     */
+    Integer queryCustomerUserNum(Integer frontUser,Integer TOMBSTONE);
+
+    /**
+     * 管理端用户数量
+     */
+    Integer queryManagerUserNum(Integer backUser,Integer TOMBSTONE);
+
 
 }

+ 2 - 0
chuanyi_server/src/main/java/com/judong/chuanyiserver/service/ReportTableService.java

@@ -27,4 +27,6 @@ public interface ReportTableService {
     Result delReportTableById(Integer id);
 
     Result tableExchangeTypeById(Integer id, Integer isAutoReport);
+
+    Result queryTableNum();
 }

+ 5 - 0
chuanyi_server/src/main/java/com/judong/chuanyiserver/service/RoleService.java

@@ -78,4 +78,9 @@ public interface RoleService {
      * 查询角色已有权限
      */
     Result queryPermissionByRoleId(Integer roleId,Integer page,Integer num);
+
+    /**
+     * 查询角色数量
+     */
+    Result queryRoleNum();
 }

+ 10 - 0
chuanyi_server/src/main/java/com/judong/chuanyiserver/service/UserService.java

@@ -111,5 +111,15 @@ public interface UserService {
      */
     Result updateUserByListId(List<String> userIdList);
 
+    /**
+     * 客户端用户数量
+     */
+    Result queryCustomerUserNum();
+
+    /**
+     * 管理端用户数量
+     */
+    Result queryManagerUserNum();
+
 
 }

+ 5 - 0
chuanyi_server/src/main/java/com/judong/chuanyiserver/service/impl/ReportTableServiceImpl.java

@@ -115,6 +115,11 @@ public class ReportTableServiceImpl implements ReportTableService {
     }
 
     @Override
+    public Result queryTableNum() {
+        return Result.ok(reportTableDao.queryTableNum());
+    }
+
+    @Override
     public Result getAllTableTemplate(Integer page, Integer limit, String userId) {
         JSONObject jsonObject = new JSONObject();
         if (Blank.isEmpty(userId)) {

+ 5 - 0
chuanyi_server/src/main/java/com/judong/chuanyiserver/service/impl/RoleServiceImpl.java

@@ -307,6 +307,11 @@ public class RoleServiceImpl implements RoleService {
         return Result.ok(jsonObject);
     }
 
+    @Override
+    public Result queryRoleNum() {
+        return Result.ok(roleDao.queryRoleNum(ConstantStr.PUBLIC_NO_DELETE));
+    }
+
     public List<Menu> menuChildren(Integer parentId, String userId) {
         List<Menu> menus = new ArrayList<>();
         List<Menu> newMenu = new ArrayList<>();

+ 10 - 0
chuanyi_server/src/main/java/com/judong/chuanyiserver/service/impl/UserServiceImpl.java

@@ -523,6 +523,16 @@ public class UserServiceImpl implements UserService {
         return Result.ok(count);
     }
 
+    @Override
+    public Result queryCustomerUserNum() {
+        return Result.ok(userDao.queryCustomerUserNum(ConstantStr.FRONT_USER,ConstantStr.TOMBSTONE));
+    }
+
+    @Override
+    public Result queryManagerUserNum() {
+        return Result.ok(userDao.queryManagerUserNum(ConstantStr.BACK_USER,ConstantStr.TOMBSTONE));
+    }
+
 
     @Override
     public synchronized Result updateUser(User user) {

+ 4 - 0
chuanyi_server/src/main/resources/mapper/ReportTableDao.xml

@@ -138,4 +138,8 @@
         from t_report_table
         where id = #{id}
     </select>
+
+    <select id="queryTableNum" resultType="java.lang.Integer">
+        SELECT COUNT(*) FROM t_report_table
+    </select>
 </mapper>

+ 4 - 0
chuanyi_server/src/main/resources/mapper/RoleDao.xml

@@ -366,4 +366,8 @@
         </foreach>
     </delete>
 
+    <select id="queryRoleNum" resultType="java.lang.Integer">
+        SELECT count(*) FROM sys_role WHERE is_delete = #{PUBLIC_NO_DELETE}
+    </select>
+
 </mapper>

+ 8 - 0
chuanyi_server/src/main/resources/mapper/UserDao.xml

@@ -374,6 +374,14 @@
         </foreach>
     </update>
 
+    <select id="queryCustomerUserNum" resultType="java.lang.Integer">
+        SELECT COUNT(*) FROM sys_user WHERE user_type = #{frontUser} AND state != #{TOMBSTONE}
+    </select>
+
+    <select id="queryManagerUserNum" resultType="java.lang.Integer">
+        SELECT COUNT(*) FROM sys_user WHERE user_type = #{backUser} AND state != #{TOMBSTONE}
+    </select>
+