修改管理后台
This commit is contained in:
@@ -11,11 +11,11 @@ const ormConfig = require('./orm-config');
|
||||
// 从环境变量获取数据库连接参数
|
||||
const DB_DIALECT = process.env.DB_DIALECT || 'mysql';
|
||||
const DB_STORAGE = process.env.DB_STORAGE || './database.sqlite';
|
||||
const DB_NAME = process.env.DB_NAME || 'nxTest';
|
||||
const DB_NAME = process.env.DB_NAME || 'nxxmdata';
|
||||
const DB_USER = process.env.DB_USER || 'root';
|
||||
const DB_PASSWORD = process.env.DB_PASSWORD || 'Aiotagro@741';
|
||||
const DB_PASSWORD = process.env.DB_PASSWORD || 'aiotAiot123!';
|
||||
const DB_HOST = process.env.DB_HOST || '129.211.213.226';
|
||||
const DB_PORT = process.env.DB_PORT || 3306;
|
||||
const DB_PORT = process.env.DB_PORT || 9527;
|
||||
|
||||
// 数据库连接池事件发射器
|
||||
class DatabasePoolEmitter extends EventEmitter {}
|
||||
|
||||
@@ -4,10 +4,10 @@ require('dotenv').config();
|
||||
// 从环境变量获取数据库配置
|
||||
const DB_DIALECT = process.env.DB_DIALECT || 'mysql';
|
||||
const DB_HOST = process.env.DB_HOST || '129.211.213.226';
|
||||
const DB_PORT = process.env.DB_PORT || 3306;
|
||||
const DB_NAME = process.env.DB_NAME || 'nxTest';
|
||||
const DB_PORT = process.env.DB_PORT || 9527;
|
||||
const DB_NAME = process.env.DB_NAME || 'nxxmdata';
|
||||
const DB_USER = process.env.DB_USER || 'root';
|
||||
const DB_PASSWORD = process.env.DB_PASSWORD || 'Aiotagro@741';
|
||||
const DB_PASSWORD = process.env.DB_PASSWORD || 'aiotAiot123!';
|
||||
|
||||
// 创建Sequelize实例
|
||||
const sequelize = new Sequelize(DB_NAME, DB_USER, DB_PASSWORD, {
|
||||
|
||||
@@ -15,7 +15,7 @@ if (dialect === 'sqlite') {
|
||||
config.dialect = 'sqlite';
|
||||
} else {
|
||||
config.host = process.env.DB_HOST || '129.211.213.226';
|
||||
config.port = process.env.DB_PORT || 3306;
|
||||
config.port = process.env.DB_PORT || 9527;
|
||||
config.dialect = 'mysql';
|
||||
config.timezone = '+08:00';
|
||||
config.define.charset = 'utf8mb4';
|
||||
@@ -33,9 +33,9 @@ if (dialect === 'sqlite') {
|
||||
sequelize = new Sequelize(config);
|
||||
} else {
|
||||
sequelize = new Sequelize(
|
||||
process.env.DB_NAME || 'nxTest',
|
||||
process.env.DB_NAME || 'nxxmdata',
|
||||
process.env.DB_USER || 'root',
|
||||
process.env.DB_PASSWORD || 'Aiotagro@741',
|
||||
process.env.DB_PASSWORD || 'aiotAiot123!',
|
||||
config
|
||||
);
|
||||
}
|
||||
|
||||
526
backend/config/permissions.js
Normal file
526
backend/config/permissions.js
Normal file
@@ -0,0 +1,526 @@
|
||||
/**
|
||||
* 权限配置
|
||||
* @file permissions.js
|
||||
* @description 定义系统权限和角色权限矩阵
|
||||
*/
|
||||
|
||||
// 系统权限定义
|
||||
const PERMISSIONS = {
|
||||
// 用户管理权限
|
||||
USER_VIEW: 'user:view', // 查看用户
|
||||
USER_CREATE: 'user:create', // 创建用户
|
||||
USER_UPDATE: 'user:update', // 更新用户
|
||||
USER_DELETE: 'user:delete', // 删除用户
|
||||
|
||||
// 养殖场管理权限
|
||||
FARM_VIEW: 'farm:view', // 查看养殖场
|
||||
FARM_CREATE: 'farm:create', // 创建养殖场
|
||||
FARM_UPDATE: 'farm:update', // 更新养殖场
|
||||
FARM_DELETE: 'farm:delete', // 删除养殖场
|
||||
|
||||
// 设备管理权限
|
||||
DEVICE_VIEW: 'device:view', // 查看设备
|
||||
DEVICE_CREATE: 'device:create', // 创建设备
|
||||
DEVICE_UPDATE: 'device:update', // 更新设备
|
||||
DEVICE_DELETE: 'device:delete', // 删除设备
|
||||
DEVICE_CONTROL: 'device:control', // 控制设备
|
||||
|
||||
// 智能设备权限
|
||||
SMART_DEVICE_VIEW: 'smart_device:view', // 查看智能设备
|
||||
SMART_DEVICE_MANAGE: 'smart_device:manage', // 管理智能设备
|
||||
|
||||
// 智能耳标权限
|
||||
SMART_EARTAG_VIEW: 'smart_eartag:view', // 查看智能耳标
|
||||
SMART_EARTAG_CREATE: 'smart_eartag:create', // 创建智能耳标
|
||||
SMART_EARTAG_UPDATE: 'smart_eartag:update', // 更新智能耳标
|
||||
SMART_EARTAG_DELETE: 'smart_eartag:delete', // 删除智能耳标
|
||||
|
||||
// 智能脚环权限
|
||||
SMART_ANKLET_VIEW: 'smart_anklet:view', // 查看智能脚环
|
||||
SMART_ANKLET_CREATE: 'smart_anklet:create', // 创建智能脚环
|
||||
SMART_ANKLET_UPDATE: 'smart_anklet:update', // 更新智能脚环
|
||||
SMART_ANKLET_DELETE: 'smart_anklet:delete', // 删除智能脚环
|
||||
|
||||
// 智能项圈权限
|
||||
SMART_COLLAR_VIEW: 'smart_collar:view', // 查看智能项圈
|
||||
SMART_COLLAR_CREATE: 'smart_collar:create', // 创建智能项圈
|
||||
SMART_COLLAR_UPDATE: 'smart_collar:update', // 更新智能项圈
|
||||
SMART_COLLAR_DELETE: 'smart_collar:delete',
|
||||
|
||||
// 智能主机权限
|
||||
SMART_HOST_VIEW: 'smart_host:view', // 查看智能主机
|
||||
SMART_HOST_CREATE: 'smart_host:create', // 创建智能主机
|
||||
SMART_HOST_UPDATE: 'smart_host:update', // 更新智能主机
|
||||
SMART_HOST_DELETE: 'smart_host:delete', // 删除智能主机
|
||||
|
||||
// 电子围栏权限
|
||||
SMART_FENCE_VIEW: 'smart_fence:view', // 查看电子围栏
|
||||
SMART_FENCE_CREATE: 'smart_fence:create', // 创建电子围栏
|
||||
SMART_FENCE_UPDATE: 'smart_fence:update', // 更新电子围栏
|
||||
SMART_FENCE_DELETE: 'smart_fence:delete', // 删除电子围栏
|
||||
|
||||
// 动物管理权限
|
||||
ANIMAL_VIEW: 'animal:view', // 查看动物
|
||||
ANIMAL_CREATE: 'animal:create', // 创建动物记录
|
||||
ANIMAL_UPDATE: 'animal:update', // 更新动物记录
|
||||
ANIMAL_DELETE: 'animal:delete', // 删除动物记录
|
||||
|
||||
// 牛只管理权限
|
||||
CATTLE_ARCHIVES_VIEW: 'cattle:archives:view', // 查看牛只档案
|
||||
CATTLE_ARCHIVES_CREATE: 'cattle:archives:create', // 创建牛只档案
|
||||
CATTLE_ARCHIVES_UPDATE: 'cattle:archives:update', // 更新牛只档案
|
||||
CATTLE_ARCHIVES_DELETE: 'cattle:archives:delete', // 删除牛只档案
|
||||
|
||||
CATTLE_PENS_VIEW: 'cattle:pens:view', // 查看栏舍设置
|
||||
CATTLE_PENS_CREATE: 'cattle:pens:create', // 创建栏舍设置
|
||||
CATTLE_PENS_UPDATE: 'cattle:pens:update', // 更新栏舍设置
|
||||
CATTLE_PENS_DELETE: 'cattle:pens:delete', // 删除栏舍设置
|
||||
|
||||
CATTLE_BATCHES_VIEW: 'cattle:batches:view', // 查看批次设置
|
||||
CATTLE_BATCHES_CREATE: 'cattle:batches:create', // 创建批次设置
|
||||
CATTLE_BATCHES_UPDATE: 'cattle:batches:update', // 更新批次设置
|
||||
CATTLE_BATCHES_DELETE: 'cattle:batches:delete', // 删除批次设置
|
||||
|
||||
CATTLE_TRANSFER_VIEW: 'cattle:transfer:view', // 查看转栏记录
|
||||
CATTLE_TRANSFER_CREATE: 'cattle:transfer:create', // 创建转栏记录
|
||||
CATTLE_TRANSFER_UPDATE: 'cattle:transfer:update', // 更新转栏记录
|
||||
CATTLE_TRANSFER_DELETE: 'cattle:transfer:delete', // 删除转栏记录
|
||||
|
||||
CATTLE_EXIT_VIEW: 'cattle:exit:view', // 查看离栏记录
|
||||
CATTLE_EXIT_CREATE: 'cattle:exit:create', // 创建离栏记录
|
||||
CATTLE_EXIT_UPDATE: 'cattle:exit:update', // 更新离栏记录
|
||||
CATTLE_EXIT_DELETE: 'cattle:exit:delete', // 删除离栏记录
|
||||
|
||||
// 预警管理权限
|
||||
ALERT_VIEW: 'alert:view', // 查看预警
|
||||
ALERT_CREATE: 'alert:create', // 创建预警
|
||||
ALERT_UPDATE: 'alert:update', // 更新预警
|
||||
ALERT_DELETE: 'alert:delete', // 删除预警
|
||||
ALERT_HANDLE: 'alert:handle', // 处理预警
|
||||
|
||||
// 智能预警权限
|
||||
SMART_ALERT_VIEW: 'smart_alert:view', // 查看智能预警总览
|
||||
SMART_EARTAG_ALERT_VIEW: 'smart_eartag_alert:view', // 查看智能耳标预警
|
||||
SMART_COLLAR_ALERT_VIEW: 'smart_collar_alert:view', // 查看智能项圈预警
|
||||
|
||||
// 数据分析权限
|
||||
ANALYTICS_VIEW: 'analytics:view', // 查看分析数据
|
||||
REPORT_GENERATE: 'report:generate', // 生成报表
|
||||
REPORT_EXPORT: 'report:export', // 导出报表
|
||||
|
||||
// 系统管理权限
|
||||
SYSTEM_CONFIG: 'system:config', // 系统配置
|
||||
SYSTEM_MONITOR: 'system:monitor', // 系统监控
|
||||
SYSTEM_BACKUP: 'system:backup', // 系统备份
|
||||
OPERATION_LOG_VIEW: 'operation_log:view', // 查看操作日志
|
||||
|
||||
// 实时监控权限
|
||||
MONITOR_VIEW: 'monitor:view', // 查看实时监控
|
||||
|
||||
// 地图权限
|
||||
MAP_VIEW: 'map:view', // 查看地图
|
||||
MAP_EDIT: 'map:edit', // 编辑地图标记
|
||||
|
||||
// 产品订单权限
|
||||
PRODUCT_VIEW: 'product:view', // 查看产品
|
||||
PRODUCT_MANAGE: 'product:manage', // 管理产品
|
||||
ORDER_VIEW: 'order:view', // 查看订单
|
||||
ORDER_MANAGE: 'order:manage', // 管理订单
|
||||
|
||||
// 角色管理权限
|
||||
ROLE_VIEW: 'role:view', // 查看角色
|
||||
ROLE_CREATE: 'role:create', // 创建角色
|
||||
ROLE_UPDATE: 'role:update', // 更新角色
|
||||
ROLE_DELETE: 'role:delete', // 删除角色
|
||||
ROLE_ASSIGN: 'role:assign', // 分配角色权限
|
||||
};
|
||||
|
||||
// 角色权限矩阵
|
||||
const ROLE_PERMISSIONS = {
|
||||
// 系统管理员 - 全系统权限
|
||||
admin: [
|
||||
// 用户管理
|
||||
PERMISSIONS.USER_VIEW,
|
||||
PERMISSIONS.USER_CREATE,
|
||||
PERMISSIONS.USER_UPDATE,
|
||||
PERMISSIONS.USER_DELETE,
|
||||
|
||||
// 养殖场管理
|
||||
PERMISSIONS.FARM_VIEW,
|
||||
PERMISSIONS.FARM_CREATE,
|
||||
PERMISSIONS.FARM_UPDATE,
|
||||
PERMISSIONS.FARM_DELETE,
|
||||
|
||||
// 设备管理
|
||||
PERMISSIONS.DEVICE_VIEW,
|
||||
PERMISSIONS.DEVICE_CREATE,
|
||||
PERMISSIONS.DEVICE_UPDATE,
|
||||
PERMISSIONS.DEVICE_DELETE,
|
||||
PERMISSIONS.DEVICE_CONTROL,
|
||||
|
||||
// 智能设备管理
|
||||
PERMISSIONS.SMART_DEVICE_VIEW,
|
||||
PERMISSIONS.SMART_DEVICE_MANAGE,
|
||||
PERMISSIONS.SMART_EARTAG_VIEW,
|
||||
PERMISSIONS.SMART_EARTAG_CREATE,
|
||||
PERMISSIONS.SMART_EARTAG_UPDATE,
|
||||
PERMISSIONS.SMART_EARTAG_DELETE,
|
||||
PERMISSIONS.SMART_ANKLET_VIEW,
|
||||
PERMISSIONS.SMART_ANKLET_CREATE,
|
||||
PERMISSIONS.SMART_ANKLET_UPDATE,
|
||||
PERMISSIONS.SMART_ANKLET_DELETE,
|
||||
PERMISSIONS.SMART_COLLAR_VIEW,
|
||||
PERMISSIONS.SMART_COLLAR_CREATE,
|
||||
PERMISSIONS.SMART_COLLAR_UPDATE,
|
||||
PERMISSIONS.SMART_COLLAR_DELETE,
|
||||
PERMISSIONS.SMART_HOST_VIEW,
|
||||
PERMISSIONS.SMART_HOST_CREATE,
|
||||
PERMISSIONS.SMART_HOST_UPDATE,
|
||||
PERMISSIONS.SMART_HOST_DELETE,
|
||||
PERMISSIONS.SMART_FENCE_VIEW,
|
||||
PERMISSIONS.SMART_FENCE_CREATE,
|
||||
PERMISSIONS.SMART_FENCE_UPDATE,
|
||||
PERMISSIONS.SMART_FENCE_DELETE,
|
||||
|
||||
// 动物管理
|
||||
PERMISSIONS.ANIMAL_VIEW,
|
||||
PERMISSIONS.ANIMAL_CREATE,
|
||||
PERMISSIONS.ANIMAL_UPDATE,
|
||||
PERMISSIONS.ANIMAL_DELETE,
|
||||
|
||||
// 牛只管理
|
||||
PERMISSIONS.CATTLE_ARCHIVES_VIEW,
|
||||
PERMISSIONS.CATTLE_ARCHIVES_CREATE,
|
||||
PERMISSIONS.CATTLE_ARCHIVES_UPDATE,
|
||||
PERMISSIONS.CATTLE_ARCHIVES_DELETE,
|
||||
PERMISSIONS.CATTLE_PENS_VIEW,
|
||||
PERMISSIONS.CATTLE_PENS_CREATE,
|
||||
PERMISSIONS.CATTLE_PENS_UPDATE,
|
||||
PERMISSIONS.CATTLE_PENS_DELETE,
|
||||
PERMISSIONS.CATTLE_BATCHES_VIEW,
|
||||
PERMISSIONS.CATTLE_BATCHES_CREATE,
|
||||
PERMISSIONS.CATTLE_BATCHES_UPDATE,
|
||||
PERMISSIONS.CATTLE_BATCHES_DELETE,
|
||||
PERMISSIONS.CATTLE_TRANSFER_VIEW,
|
||||
PERMISSIONS.CATTLE_TRANSFER_CREATE,
|
||||
PERMISSIONS.CATTLE_TRANSFER_UPDATE,
|
||||
PERMISSIONS.CATTLE_TRANSFER_DELETE,
|
||||
PERMISSIONS.CATTLE_EXIT_VIEW,
|
||||
PERMISSIONS.CATTLE_EXIT_CREATE,
|
||||
PERMISSIONS.CATTLE_EXIT_UPDATE,
|
||||
PERMISSIONS.CATTLE_EXIT_DELETE,
|
||||
|
||||
// 预警管理
|
||||
PERMISSIONS.ALERT_VIEW,
|
||||
PERMISSIONS.ALERT_CREATE,
|
||||
PERMISSIONS.ALERT_UPDATE,
|
||||
PERMISSIONS.ALERT_DELETE,
|
||||
PERMISSIONS.ALERT_HANDLE,
|
||||
|
||||
// 智能预警管理
|
||||
PERMISSIONS.SMART_ALERT_VIEW,
|
||||
PERMISSIONS.SMART_EARTAG_ALERT_VIEW,
|
||||
PERMISSIONS.SMART_COLLAR_ALERT_VIEW,
|
||||
|
||||
// 数据分析
|
||||
PERMISSIONS.ANALYTICS_VIEW,
|
||||
PERMISSIONS.REPORT_GENERATE,
|
||||
PERMISSIONS.REPORT_EXPORT,
|
||||
|
||||
// 系统管理
|
||||
PERMISSIONS.SYSTEM_CONFIG,
|
||||
PERMISSIONS.SYSTEM_MONITOR,
|
||||
PERMISSIONS.SYSTEM_BACKUP,
|
||||
PERMISSIONS.OPERATION_LOG_VIEW,
|
||||
|
||||
// 角色管理
|
||||
PERMISSIONS.ROLE_VIEW,
|
||||
PERMISSIONS.ROLE_CREATE,
|
||||
PERMISSIONS.ROLE_UPDATE,
|
||||
PERMISSIONS.ROLE_DELETE,
|
||||
PERMISSIONS.ROLE_ASSIGN,
|
||||
|
||||
// 实时监控
|
||||
PERMISSIONS.MONITOR_VIEW,
|
||||
|
||||
// 地图
|
||||
PERMISSIONS.MAP_VIEW,
|
||||
PERMISSIONS.MAP_EDIT,
|
||||
|
||||
// 产品订单
|
||||
PERMISSIONS.PRODUCT_VIEW,
|
||||
PERMISSIONS.PRODUCT_MANAGE,
|
||||
PERMISSIONS.ORDER_VIEW,
|
||||
PERMISSIONS.ORDER_MANAGE,
|
||||
],
|
||||
|
||||
// 养殖场管理员 - 只有四个管理功能:养殖场管理、设备管理、实时监控、动物管理
|
||||
farm_manager: [
|
||||
// 养殖场管理
|
||||
PERMISSIONS.FARM_VIEW,
|
||||
PERMISSIONS.FARM_CREATE,
|
||||
PERMISSIONS.FARM_UPDATE,
|
||||
PERMISSIONS.FARM_DELETE,
|
||||
|
||||
// 设备管理(包含智能设备)
|
||||
PERMISSIONS.DEVICE_VIEW,
|
||||
PERMISSIONS.DEVICE_CREATE,
|
||||
PERMISSIONS.DEVICE_UPDATE,
|
||||
PERMISSIONS.DEVICE_DELETE,
|
||||
PERMISSIONS.DEVICE_CONTROL,
|
||||
|
||||
// 智能设备管理
|
||||
PERMISSIONS.SMART_DEVICE_VIEW,
|
||||
PERMISSIONS.SMART_DEVICE_MANAGE,
|
||||
PERMISSIONS.SMART_EARTAG_VIEW,
|
||||
PERMISSIONS.SMART_EARTAG_CREATE,
|
||||
PERMISSIONS.SMART_EARTAG_UPDATE,
|
||||
PERMISSIONS.SMART_EARTAG_DELETE,
|
||||
PERMISSIONS.SMART_ANKLET_VIEW,
|
||||
PERMISSIONS.SMART_ANKLET_CREATE,
|
||||
PERMISSIONS.SMART_ANKLET_UPDATE,
|
||||
PERMISSIONS.SMART_ANKLET_DELETE,
|
||||
PERMISSIONS.SMART_COLLAR_VIEW,
|
||||
PERMISSIONS.SMART_COLLAR_CREATE,
|
||||
PERMISSIONS.SMART_COLLAR_UPDATE,
|
||||
PERMISSIONS.SMART_COLLAR_DELETE,
|
||||
PERMISSIONS.SMART_HOST_VIEW,
|
||||
PERMISSIONS.SMART_HOST_CREATE,
|
||||
PERMISSIONS.SMART_HOST_UPDATE,
|
||||
PERMISSIONS.SMART_HOST_DELETE,
|
||||
PERMISSIONS.SMART_FENCE_VIEW,
|
||||
PERMISSIONS.SMART_FENCE_CREATE,
|
||||
PERMISSIONS.SMART_FENCE_UPDATE,
|
||||
PERMISSIONS.SMART_FENCE_DELETE,
|
||||
|
||||
// 动物管理
|
||||
PERMISSIONS.ANIMAL_VIEW,
|
||||
PERMISSIONS.ANIMAL_CREATE,
|
||||
PERMISSIONS.ANIMAL_UPDATE,
|
||||
PERMISSIONS.ANIMAL_DELETE,
|
||||
|
||||
// 牛只管理
|
||||
PERMISSIONS.CATTLE_ARCHIVES_VIEW,
|
||||
PERMISSIONS.CATTLE_ARCHIVES_CREATE,
|
||||
PERMISSIONS.CATTLE_ARCHIVES_UPDATE,
|
||||
PERMISSIONS.CATTLE_ARCHIVES_DELETE,
|
||||
PERMISSIONS.CATTLE_PENS_VIEW,
|
||||
PERMISSIONS.CATTLE_PENS_CREATE,
|
||||
PERMISSIONS.CATTLE_PENS_UPDATE,
|
||||
PERMISSIONS.CATTLE_PENS_DELETE,
|
||||
PERMISSIONS.CATTLE_BATCHES_VIEW,
|
||||
PERMISSIONS.CATTLE_BATCHES_CREATE,
|
||||
PERMISSIONS.CATTLE_BATCHES_UPDATE,
|
||||
PERMISSIONS.CATTLE_BATCHES_DELETE,
|
||||
PERMISSIONS.CATTLE_TRANSFER_VIEW,
|
||||
PERMISSIONS.CATTLE_TRANSFER_CREATE,
|
||||
PERMISSIONS.CATTLE_TRANSFER_UPDATE,
|
||||
PERMISSIONS.CATTLE_TRANSFER_DELETE,
|
||||
PERMISSIONS.CATTLE_EXIT_VIEW,
|
||||
PERMISSIONS.CATTLE_EXIT_CREATE,
|
||||
PERMISSIONS.CATTLE_EXIT_UPDATE,
|
||||
PERMISSIONS.CATTLE_EXIT_DELETE,
|
||||
|
||||
// 实时监控功能
|
||||
PERMISSIONS.MONITOR_VIEW, // 实时监控功能
|
||||
PERMISSIONS.MAP_VIEW, // 地图查看(监控功能的一部分)
|
||||
|
||||
// 智能预警管理
|
||||
PERMISSIONS.SMART_ALERT_VIEW,
|
||||
PERMISSIONS.SMART_EARTAG_ALERT_VIEW,
|
||||
PERMISSIONS.SMART_COLLAR_ALERT_VIEW,
|
||||
],
|
||||
|
||||
// 监管人员 - 四个功能:数据分析、实时监控、预警管理、设备管理
|
||||
inspector: [
|
||||
// 数据分析功能
|
||||
PERMISSIONS.ANALYTICS_VIEW,
|
||||
PERMISSIONS.REPORT_GENERATE,
|
||||
PERMISSIONS.REPORT_EXPORT,
|
||||
|
||||
// 实时监控功能
|
||||
PERMISSIONS.MONITOR_VIEW,
|
||||
PERMISSIONS.MAP_VIEW,
|
||||
|
||||
// 预警管理功能
|
||||
PERMISSIONS.ALERT_VIEW,
|
||||
PERMISSIONS.ALERT_CREATE,
|
||||
PERMISSIONS.ALERT_UPDATE,
|
||||
PERMISSIONS.ALERT_DELETE,
|
||||
PERMISSIONS.ALERT_HANDLE,
|
||||
|
||||
// 智能预警管理
|
||||
PERMISSIONS.SMART_ALERT_VIEW,
|
||||
PERMISSIONS.SMART_EARTAG_ALERT_VIEW,
|
||||
PERMISSIONS.SMART_COLLAR_ALERT_VIEW,
|
||||
|
||||
// 设备管理功能
|
||||
PERMISSIONS.DEVICE_VIEW,
|
||||
PERMISSIONS.DEVICE_CREATE,
|
||||
PERMISSIONS.DEVICE_UPDATE,
|
||||
PERMISSIONS.DEVICE_DELETE,
|
||||
PERMISSIONS.DEVICE_CONTROL,
|
||||
|
||||
// 牛只管理查看权限
|
||||
PERMISSIONS.CATTLE_ARCHIVES_VIEW,
|
||||
PERMISSIONS.CATTLE_PENS_VIEW,
|
||||
PERMISSIONS.CATTLE_BATCHES_VIEW,
|
||||
PERMISSIONS.CATTLE_TRANSFER_VIEW,
|
||||
PERMISSIONS.CATTLE_EXIT_VIEW,
|
||||
],
|
||||
|
||||
// 普通用户 - 基础权限
|
||||
user: [
|
||||
// 个人信息管理
|
||||
PERMISSIONS.USER_UPDATE, // 只能更新自己的信息
|
||||
|
||||
// 基础查看权限
|
||||
PERMISSIONS.FARM_VIEW,
|
||||
PERMISSIONS.DEVICE_VIEW,
|
||||
PERMISSIONS.ANIMAL_VIEW,
|
||||
PERMISSIONS.ALERT_VIEW,
|
||||
PERMISSIONS.ANALYTICS_VIEW,
|
||||
PERMISSIONS.MAP_VIEW,
|
||||
|
||||
// 牛只管理查看权限
|
||||
PERMISSIONS.CATTLE_ARCHIVES_VIEW,
|
||||
PERMISSIONS.CATTLE_PENS_VIEW,
|
||||
PERMISSIONS.CATTLE_BATCHES_VIEW,
|
||||
PERMISSIONS.CATTLE_TRANSFER_VIEW,
|
||||
PERMISSIONS.CATTLE_EXIT_VIEW,
|
||||
|
||||
// 智能预警查看权限
|
||||
PERMISSIONS.SMART_ALERT_VIEW,
|
||||
PERMISSIONS.SMART_EARTAG_ALERT_VIEW,
|
||||
PERMISSIONS.SMART_COLLAR_ALERT_VIEW,
|
||||
|
||||
// 产品订单
|
||||
PERMISSIONS.PRODUCT_VIEW,
|
||||
PERMISSIONS.ORDER_VIEW,
|
||||
],
|
||||
};
|
||||
|
||||
// 菜单权限配置
|
||||
const MENU_PERMISSIONS = {
|
||||
// 系统管理菜单
|
||||
'system.users': [PERMISSIONS.USER_VIEW],
|
||||
'system.config': [PERMISSIONS.SYSTEM_CONFIG],
|
||||
'system.monitor': [PERMISSIONS.SYSTEM_MONITOR],
|
||||
'system.backup': [PERMISSIONS.SYSTEM_BACKUP],
|
||||
'system.operation_logs': [PERMISSIONS.OPERATION_LOG_VIEW],
|
||||
|
||||
// 实时监控菜单
|
||||
'monitor.view': [PERMISSIONS.MONITOR_VIEW],
|
||||
|
||||
// 养殖场管理菜单
|
||||
'farm.management': [PERMISSIONS.FARM_VIEW],
|
||||
'farm.create': [PERMISSIONS.FARM_CREATE],
|
||||
'farm.edit': [PERMISSIONS.FARM_UPDATE],
|
||||
'farm.delete': [PERMISSIONS.FARM_DELETE],
|
||||
|
||||
// 设备管理菜单
|
||||
'device.management': [PERMISSIONS.DEVICE_VIEW],
|
||||
'device.control': [PERMISSIONS.DEVICE_CONTROL],
|
||||
|
||||
// 智能设备菜单
|
||||
'smart_device.main': [PERMISSIONS.SMART_DEVICE_VIEW],
|
||||
'smart_device.eartag': [PERMISSIONS.SMART_EARTAG_VIEW],
|
||||
'smart_device.anklet': [PERMISSIONS.SMART_ANKLET_VIEW],
|
||||
'smart_device.collar': [PERMISSIONS.SMART_COLLAR_VIEW],
|
||||
'smart_device.host': [PERMISSIONS.SMART_HOST_VIEW],
|
||||
'smart_device.fence': [PERMISSIONS.SMART_FENCE_VIEW],
|
||||
|
||||
// 动物管理菜单
|
||||
'animal.management': [PERMISSIONS.ANIMAL_VIEW],
|
||||
'animal.create': [PERMISSIONS.ANIMAL_CREATE],
|
||||
'animal.edit': [PERMISSIONS.ANIMAL_UPDATE],
|
||||
|
||||
// 牛只管理菜单
|
||||
'cattle.archives': [PERMISSIONS.CATTLE_ARCHIVES_VIEW],
|
||||
'cattle.pens': [PERMISSIONS.CATTLE_PENS_VIEW],
|
||||
'cattle.batches': [PERMISSIONS.CATTLE_BATCHES_VIEW],
|
||||
'cattle.transfer': [PERMISSIONS.CATTLE_TRANSFER_VIEW],
|
||||
'cattle.exit': [PERMISSIONS.CATTLE_EXIT_VIEW],
|
||||
|
||||
// 预警管理菜单
|
||||
'alert.management': [PERMISSIONS.ALERT_VIEW],
|
||||
'alert.handle': [PERMISSIONS.ALERT_HANDLE],
|
||||
|
||||
// 智能预警菜单
|
||||
'smart_alert.main': [PERMISSIONS.SMART_ALERT_VIEW],
|
||||
'smart_alert.eartag': [PERMISSIONS.SMART_EARTAG_ALERT_VIEW],
|
||||
'smart_alert.collar': [PERMISSIONS.SMART_COLLAR_ALERT_VIEW],
|
||||
|
||||
// 数据分析菜单
|
||||
'analytics.dashboard': [PERMISSIONS.ANALYTICS_VIEW],
|
||||
'analytics.reports': [PERMISSIONS.REPORT_GENERATE],
|
||||
|
||||
// 地图菜单
|
||||
'map.view': [PERMISSIONS.MAP_VIEW],
|
||||
'map.edit': [PERMISSIONS.MAP_EDIT],
|
||||
|
||||
// 产品订单菜单
|
||||
'product.management': [PERMISSIONS.PRODUCT_VIEW],
|
||||
'order.management': [PERMISSIONS.ORDER_VIEW],
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取角色的所有权限
|
||||
* @param {string} roleName 角色名称
|
||||
* @returns {Array} 权限列表
|
||||
*/
|
||||
function getRolePermissions(roleName) {
|
||||
return ROLE_PERMISSIONS[roleName] || [];
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查用户是否具有指定权限
|
||||
* @param {Array} userPermissions 用户权限列表
|
||||
* @param {string|Array} requiredPermissions 需要的权限
|
||||
* @returns {boolean} 是否有权限
|
||||
*/
|
||||
function hasPermission(userPermissions, requiredPermissions) {
|
||||
if (!userPermissions || !Array.isArray(userPermissions)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const required = Array.isArray(requiredPermissions) ? requiredPermissions : [requiredPermissions];
|
||||
|
||||
return required.some(permission => userPermissions.includes(permission));
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查用户是否可以访问指定菜单
|
||||
* @param {Array} userPermissions 用户权限列表
|
||||
* @param {string} menuKey 菜单键
|
||||
* @returns {boolean} 是否可以访问
|
||||
*/
|
||||
function canAccessMenu(userPermissions, menuKey) {
|
||||
const menuPermissions = MENU_PERMISSIONS[menuKey];
|
||||
if (!menuPermissions) {
|
||||
return true; // 没有权限要求的菜单默认可以访问
|
||||
}
|
||||
|
||||
return hasPermission(userPermissions, menuPermissions);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户可访问的菜单列表
|
||||
* @param {Array} userPermissions 用户权限列表
|
||||
* @returns {Array} 可访问的菜单键列表
|
||||
*/
|
||||
function getAccessibleMenus(userPermissions) {
|
||||
return Object.keys(MENU_PERMISSIONS).filter(menuKey =>
|
||||
canAccessMenu(userPermissions, menuKey)
|
||||
);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
PERMISSIONS,
|
||||
ROLE_PERMISSIONS,
|
||||
MENU_PERMISSIONS,
|
||||
getRolePermissions,
|
||||
hasPermission,
|
||||
canAccessMenu,
|
||||
getAccessibleMenus,
|
||||
};
|
||||
@@ -5,8 +5,52 @@ const options = {
|
||||
openapi: '3.0.0',
|
||||
info: {
|
||||
title: '宁夏智慧养殖监管平台 API',
|
||||
version: '1.0.0',
|
||||
description: '宁夏智慧养殖监管平台后端 API 文档',
|
||||
version: '2.1.0',
|
||||
description: `
|
||||
## 宁夏智慧养殖监管平台 API 文档
|
||||
|
||||
### 概述
|
||||
本文档提供了智慧养殖监管平台的完整API接口说明,包括:
|
||||
|
||||
- **核心功能**: 农场管理、动物管理、设备监控、预警管理
|
||||
- **业务功能**: 产品管理、订单管理、报表生成
|
||||
- **系统功能**: 用户管理、权限控制、系统配置
|
||||
|
||||
### 认证机制
|
||||
- 采用JWT (JSON Web Token) 进行身份认证
|
||||
- 所有API请求需在Header中携带Authorization字段
|
||||
- 格式: \`Authorization: Bearer <token>\`
|
||||
|
||||
### 响应格式
|
||||
所有API响应均采用统一格式:
|
||||
\`\`\`json
|
||||
{
|
||||
"success": true,
|
||||
"data": {},
|
||||
"message": "操作成功",
|
||||
"timestamp": "2025-01-18T10:30:00Z"
|
||||
}
|
||||
\`\`\`
|
||||
|
||||
### 错误处理
|
||||
- HTTP状态码遵循RESTful标准
|
||||
- 详细错误信息在响应体中提供
|
||||
- 支持多语言错误消息
|
||||
|
||||
### 版本信息
|
||||
- **当前版本**: v2.1.0
|
||||
- **最后更新**: 2025-01-18
|
||||
- **维护状态**: 积极维护中
|
||||
`,
|
||||
contact: {
|
||||
name: '技术支持',
|
||||
email: 'support@nxxm.com',
|
||||
url: 'https://github.com/nxxm-platform'
|
||||
},
|
||||
license: {
|
||||
name: 'MIT',
|
||||
url: 'https://opensource.org/licenses/MIT'
|
||||
}
|
||||
},
|
||||
servers: [
|
||||
{
|
||||
@@ -355,6 +399,247 @@ const options = {
|
||||
default: 'active'
|
||||
}
|
||||
}
|
||||
},
|
||||
User: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: {
|
||||
type: 'integer',
|
||||
description: '用户ID'
|
||||
},
|
||||
username: {
|
||||
type: 'string',
|
||||
description: '用户名'
|
||||
},
|
||||
email: {
|
||||
type: 'string',
|
||||
format: 'email',
|
||||
description: '邮箱地址'
|
||||
},
|
||||
roles: {
|
||||
type: 'integer',
|
||||
description: '角色ID'
|
||||
},
|
||||
status: {
|
||||
type: 'string',
|
||||
enum: ['active', 'inactive'],
|
||||
description: '用户状态'
|
||||
},
|
||||
last_login: {
|
||||
type: 'string',
|
||||
format: 'date-time',
|
||||
description: '最后登录时间'
|
||||
}
|
||||
}
|
||||
},
|
||||
Product: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: {
|
||||
type: 'integer',
|
||||
description: '产品ID'
|
||||
},
|
||||
name: {
|
||||
type: 'string',
|
||||
description: '产品名称'
|
||||
},
|
||||
description: {
|
||||
type: 'string',
|
||||
description: '产品描述'
|
||||
},
|
||||
price: {
|
||||
type: 'number',
|
||||
format: 'decimal',
|
||||
description: '产品价格'
|
||||
},
|
||||
stock: {
|
||||
type: 'integer',
|
||||
description: '库存数量'
|
||||
},
|
||||
status: {
|
||||
type: 'string',
|
||||
enum: ['active', 'inactive'],
|
||||
description: '产品状态'
|
||||
}
|
||||
}
|
||||
},
|
||||
Order: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: {
|
||||
type: 'integer',
|
||||
description: '订单ID'
|
||||
},
|
||||
user_id: {
|
||||
type: 'integer',
|
||||
description: '用户ID'
|
||||
},
|
||||
total_amount: {
|
||||
type: 'number',
|
||||
format: 'decimal',
|
||||
description: '订单总金额'
|
||||
},
|
||||
status: {
|
||||
type: 'string',
|
||||
enum: ['pending', 'processing', 'shipped', 'delivered', 'cancelled'],
|
||||
description: '订单状态'
|
||||
},
|
||||
payment_status: {
|
||||
type: 'string',
|
||||
enum: ['unpaid', 'paid', 'refunded'],
|
||||
description: '支付状态'
|
||||
},
|
||||
shipping_address: {
|
||||
type: 'string',
|
||||
description: '收货地址'
|
||||
}
|
||||
}
|
||||
},
|
||||
SystemConfig: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: {
|
||||
type: 'integer',
|
||||
description: '配置ID'
|
||||
},
|
||||
config_key: {
|
||||
type: 'string',
|
||||
description: '配置键名'
|
||||
},
|
||||
config_value: {
|
||||
type: 'string',
|
||||
description: '配置值'
|
||||
},
|
||||
config_type: {
|
||||
type: 'string',
|
||||
enum: ['string', 'number', 'boolean', 'json', 'array'],
|
||||
description: '配置类型'
|
||||
},
|
||||
category: {
|
||||
type: 'string',
|
||||
description: '配置分类'
|
||||
},
|
||||
description: {
|
||||
type: 'string',
|
||||
description: '配置描述'
|
||||
},
|
||||
is_public: {
|
||||
type: 'boolean',
|
||||
description: '是否公开'
|
||||
},
|
||||
is_editable: {
|
||||
type: 'boolean',
|
||||
description: '是否可编辑'
|
||||
}
|
||||
}
|
||||
},
|
||||
MenuPermission: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: {
|
||||
type: 'integer',
|
||||
description: '菜单ID'
|
||||
},
|
||||
menu_key: {
|
||||
type: 'string',
|
||||
description: '菜单标识'
|
||||
},
|
||||
menu_name: {
|
||||
type: 'string',
|
||||
description: '菜单名称'
|
||||
},
|
||||
menu_path: {
|
||||
type: 'string',
|
||||
description: '菜单路径'
|
||||
},
|
||||
parent_id: {
|
||||
type: 'integer',
|
||||
description: '父菜单ID'
|
||||
},
|
||||
menu_type: {
|
||||
type: 'string',
|
||||
enum: ['page', 'button', 'api'],
|
||||
description: '菜单类型'
|
||||
},
|
||||
required_roles: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'string'
|
||||
},
|
||||
description: '所需角色'
|
||||
},
|
||||
icon: {
|
||||
type: 'string',
|
||||
description: '菜单图标'
|
||||
},
|
||||
sort_order: {
|
||||
type: 'integer',
|
||||
description: '排序顺序'
|
||||
},
|
||||
is_visible: {
|
||||
type: 'boolean',
|
||||
description: '是否可见'
|
||||
},
|
||||
is_enabled: {
|
||||
type: 'boolean',
|
||||
description: '是否启用'
|
||||
}
|
||||
}
|
||||
},
|
||||
ApiResponse: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
success: {
|
||||
type: 'boolean',
|
||||
description: '操作是否成功'
|
||||
},
|
||||
data: {
|
||||
description: '响应数据'
|
||||
},
|
||||
message: {
|
||||
type: 'string',
|
||||
description: '响应消息'
|
||||
},
|
||||
timestamp: {
|
||||
type: 'string',
|
||||
format: 'date-time',
|
||||
description: '响应时间'
|
||||
}
|
||||
}
|
||||
},
|
||||
ErrorResponse: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
success: {
|
||||
type: 'boolean',
|
||||
example: false
|
||||
},
|
||||
message: {
|
||||
type: 'string',
|
||||
description: '错误消息'
|
||||
},
|
||||
error: {
|
||||
type: 'string',
|
||||
description: '错误详情'
|
||||
},
|
||||
errors: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
field: {
|
||||
type: 'string',
|
||||
description: '错误字段'
|
||||
},
|
||||
message: {
|
||||
type: 'string',
|
||||
description: '错误消息'
|
||||
}
|
||||
}
|
||||
},
|
||||
description: '详细错误列表'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user