接口路径说明
所有接口api/开头,方便反向代理
后台接口api/admin开头,后台权限及菜单设计以这个为主
前台(C端)接口api/web开头
设备接入接口api/iot开头(HTTP 上报/心跳,走设备凭证鉴权,与后台登录态无关;IOT.Enable=false 时不注册)
目录结构
server/
├── app/ # 应用程序核心代码
│ ├── controller/ # 控制器层
│ │ ├── admin_ctl/ # 后台管理控制器
│ │ │ ├── common_controller/ # 通用功能
│ │ │ │ ├── album.go # 相册管理
│ │ │ │ ├── captcha.go # 验证码
│ │ │ │ ├── ge_tui.go # 个推推送
│ │ │ │ ├── index.go # 后台首页统计
│ │ │ │ ├── upload_chunk.go # S3 风格分片直传
│ │ │ │ └── upload.go # 文件上传
│ │ │ ├── fabu_controller/ # 应用发布
│ │ │ │ ├── fabu_app_ctl.go
│ │ │ │ ├── fabu_version_ctl.go
│ │ │ │ └── fabu_wgt_ctl.go
│ │ │ ├── flow_controller/ # 审批流程
│ │ │ │ ├── flow_apply_ctl.go
│ │ │ │ ├── flow_history_ctl.go
│ │ │ │ └── flow_template_ctl.go
│ │ │ ├── generator_controller/ # 代码生成器
│ │ │ │ └── generator.go
│ │ │ ├── iot_controller/ # IoT 元数据管理
│ │ │ │ ├── product_category.go
│ │ │ │ ├── product.go
│ │ │ │ ├── device_space.go
│ │ │ │ ├── device.go # 设备(含 state/data/map 回读)
│ │ │ │ ├── alert.go # 告警历史
│ │ │ │ └── rule_chain.go # 可视化规则链
│ │ │ ├── monitor_controller/ # 系统监控
│ │ │ │ ├── monitor.go
│ │ │ │ ├── monitor_client_ctl.go
│ │ │ │ ├── monitor_error_ctl.go
│ │ │ │ └── monitor_project_ctl.go
│ │ │ ├── setting_controller/ # 系统设置
│ │ │ │ ├── copyright.go
│ │ │ │ ├── dict_data.go
│ │ │ │ ├── dict_type.go
│ │ │ │ └── website.go
│ │ │ ├── system_controller/ # 系统管理
│ │ │ │ ├── admin.go # 管理员
│ │ │ │ ├── dept.go # 部门
│ │ │ │ ├── log.go # 操作日志
│ │ │ │ ├── login.go # 登录
│ │ │ │ ├── menu.go # 菜单
│ │ │ │ ├── notice.go # 通知
│ │ │ │ ├── post.go # 岗位
│ │ │ │ └── role.go # 角色
│ │ │ ├── system_corn_ctl.go # 定时任务管理
│ │ │ ├── user_ctl.go # 后台侧 C 端用户管理
│ │ │ └── user_protocol_ctl.go # 用户协议
│ │ ├── iot_ctl/ # 设备侧接入控制器
│ │ │ └── http_gateway.go # HTTP 上报/心跳网关(组信封投递队列)
│ │ ├── web_ctl/ # 前台(C端)接口控制器
│ │ │ ├── auth_controller.go # 绑定/解绑(手机、邮箱、微信)
│ │ │ ├── fabu_controller.go # 应用发布(App 检查更新/下载)
│ │ │ └── user_controller.go # 注册/登录/手机验证码/密码重置
│ │ └── ws.go # WebSocket 升级处理器
│ │
│ ├── service/ # 服务层(业务逻辑)
│ │ ├── common_service/ # 通用服务
│ │ │ ├── album_service.go # 相册管理
│ │ │ ├── captcha_service.go # 验证码
│ │ │ ├── file_hash_service.go # 文件哈希(秒传)
│ │ │ ├── ge_tui_service.go # 个推推送(批量 CID + token 两级缓存)
│ │ │ ├── index_service.go # 首页统计
│ │ │ └── upload_service.go # 文件上传
│ │ ├── corn_service/ # 定时任务服务
│ │ │ ├── system_corn_service.go
│ │ │ └── task.go # Task 结构定义
│ │ ├── fabu_service/ # 应用发布服务
│ │ │ ├── fabu_app_service.go
│ │ │ ├── fabu_plist_service.go
│ │ │ ├── fabu_version_service.go
│ │ │ └── fabu_wgt_service.go
│ │ ├── flow_service/ # 审批流程服务
│ │ │ ├── flow_apply_service.go
│ │ │ ├── flow_history_service.go
│ │ │ └── flow_template_service.go
│ │ ├── generator_service/ # 代码生成器服务
│ │ │ ├── generator_service.go
│ │ │ └── tpl_utils/ # 模板工具(constants/tpl/utils + templates 下 gocode·vue·uniapp 三类 .tpl)
│ │ ├── iot_service/ # IoT 元数据与处理流水线
│ │ │ ├── product_category_service.go
│ │ │ ├── product_service.go # 产品(物模型/规则链缓存 CachedProductModel)
│ │ │ ├── device_space_service.go
│ │ │ ├── device_service.go # 设备(鉴权缓存/MarkStatus/大屏点位 Map)
│ │ │ ├── device_auth_service.go# 设备凭证鉴权 + 兜底离线时长
│ │ │ ├── rule_chain_service.go # 规则链(CachedTreeRaw 执行树缓存)
│ │ │ ├── alert_service.go # 告警历史(Raise/Recover/UpdateSeverity/CloseActiveByDevice)
│ │ │ ├── tree_filter.go # 区域/分类子树过滤
│ │ │ └── pipeline/ # 报文处理流水线(消费 iot:ingest)
│ │ │ ├── pipeline.go # 消费入口 + 对外门面
│ │ │ ├── online/ # 在线/离线判定、属性快照、状态/遥测/大屏广播
│ │ │ ├── rulechain/ # 可视化规则链执行引擎 + goja 脚本原语
│ │ │ ├── alert/ # 告警状态机(Redis 活动态 → 历史表)
│ │ │ └── store/ # 时序批写/回读/清理(writeSink 唯一落地出口)
│ │ ├── monitor_service/ # 监控服务
│ │ │ ├── monitor_client_service.go
│ │ │ ├── monitor_error_list_service.go
│ │ │ ├── monitor_error_service.go
│ │ │ ├── monitor_project_service.go
│ │ │ └── monitor_server_service.go
│ │ ├── notice_service/ # 通知服务
│ │ │ └── notice_service.go # 站内通知 + 邮件延迟补推
│ │ ├── setting_service/ # 设置服务
│ │ │ ├── copyright_service.go
│ │ │ ├── dict_data_service.go
│ │ │ ├── dict_type_service.go
│ │ │ ├── system_config_service.go
│ │ │ └── website_service.go
│ │ ├── system_service/ # 系统管理服务
│ │ │ ├── admin_service.go # 管理员 CRUD
│ │ │ ├── admin_role_service.go # 管理员-角色关联
│ │ │ ├── dept_service.go # 部门
│ │ │ ├── forget_pwd_service.go # 忘记密码
│ │ │ ├── log_service.go # 操作日志
│ │ │ ├── login_service.go # 登录认证
│ │ │ ├── menu_service.go # 菜单
│ │ │ ├── perm_service.go # 权限
│ │ │ ├── post_service.go # 岗位
│ │ │ └── role_service.go # 角色
│ │ ├── user_service/ # C端用户服务
│ │ │ ├── auth_service.go # 绑定/解绑手机、邮箱
│ │ │ ├── user_service.go # 注册/登录/手机验证码/密码重置
│ │ │ └── wechat_service.go # 微信小程序/公众号登录绑定
│ │ ├── user_service.go # C端用户公共服务
│ │ └── user_protocol_service.go # 用户协议
│ │
│ ├── schema/ # 请求与响应结构体 (DTO)
│ │ ├── common_schema/ # album_schema/captcha_schema/file_hash_schema
│ │ ├── fabu_schema/ # fabu_schema.go
│ │ ├── flow_schema/ # flow_apply/flow_history/flow_template
│ │ ├── generator_schema/ # schema.go
│ │ ├── iot_schema/ # IoT DTO + 接入信封 + 规则链节点契约
│ │ │ ├── ingest_schema.go # IngestMsg/DeviceAuthInfo/状态与时序 Resp/ScopeValues
│ │ │ ├── product_schema.go
│ │ │ ├── product_category_schema.go
│ │ │ ├── device_space_schema.go
│ │ │ ├── device_schema.go
│ │ │ ├── alert_schema.go
│ │ │ └── rule_chain_schema.go # 节点类型常量与属性契约
│ │ ├── monitor_schema/ # monitor_client/error_list/error/project
│ │ ├── queue_schema/ # 异步队列 payload + 队列名常量
│ │ │ ├── queue.go # 队列名常量 (flow_notify_email/flow_notify_webhook/email:code:send/notice:email/notice:email:delay/image_webp/operate_log/iot:ingest)
│ │ │ ├── flow_notify_schema.go # 流程通知 payload
│ │ │ ├── image_webp_schema.go # 图片转 webp payload
│ │ │ └── notice_email_schema.go# 通知邮件 payload(含延迟补推任务载荷)
│ │ ├── setting_schema/ # copyright/dict_data/dict_type/website
│ │ ├── system_schema/ # admin/dept/log/login/menu/notice/post/role
│ │ ├── user_schema/ # 前台(C端) DTO (auth/email_code/login/register/user/wechat)
│ │ ├── system_corn_schema.go # 定时任务 DTO
│ │ ├── user.go # 通用用户 DTO
│ │ └── user_protocol_schema.go # 用户协议 DTO
│ │
│ ├── model/ # 数据库模型层(GORM 实体)
│ │ ├── common_model/ # 相册、文件哈希(album/file_hash)
│ │ ├── fabu_model/ # 应用发布(fabu_app/fabu_app_version/fabu_wgt)
│ │ ├── gen_model/ # 代码生成器元数据(gen)
│ │ ├── iot_model/ # IoT 实体(x_iot_*:product_category/product/device_space/device/rule_chain/device_data/alert_history)
│ │ ├── setting_model/ # 字典(dict_data/dict_type)
│ │ ├── system_model/ # 管理员/角色/菜单/部门/岗位/日志(admin_role/auth_admin/system)
│ │ ├── user_model/ # C端用户(user/user_auth)
│ │ ├── flow_apply.go # 流程申请
│ │ ├── flow_history.go
│ │ ├── flow_template.go
│ │ ├── monitor_client.go
│ │ ├── monitor_error.go
│ │ ├── monitor_error_list.go
│ │ ├── monitor_project.go
│ │ ├── system_corn.go # 定时任务
│ │ ├── system_notice.go # 站内通知
│ │ └── user_protocol.go # 用户协议
│ │
│ ├── middleware/ # 中间件
│ │ ├── admin_auth.go # 后台认证 (Token + 权限校验)
│ │ ├── user_auth.go # C端用户 JWT 认证
│ │ ├── device_auth.go # 设备凭证鉴权 (X-Device-Sn + X-Access-Token)
│ │ ├── cors.go # 跨域
│ │ ├── error.go # Panic 恢复
│ │ ├── log.go # 操作日志
│ │ ├── request_cost.go # 请求耗时统计/慢请求日志
│ │ ├── limit_email.go # 邮箱限频
│ │ ├── limit_ip.go # IP 限频
│ │ └── limit_rate.go # 通用限流
│ │
│ ├── corn/ # 定时任务注册
│ │ ├── corn_manager.go # CronManager (基于 robfig/cron)
│ │ ├── fixed_task.go # 固定任务(清理分片/在线人数/监控/文件清理;IoT 离线扫描·重建/时序清理/大屏冲刷)
│ │ └── dynamic_task.go # 动态任务(从数据库加载)
│ │
│ └── queue/ # 异步队列消费者(包名 queue)
│ ├── start.go # 统一注册并启动所有消费者(由 main.go 调用)
│ ├── iot.go # IoT 报文处理(消费 iot:ingest → pipeline,Enable 门控)
│ ├── email_code.go # 邮箱验证码发送
│ ├── flow_notify_email.go # 流程邮件通知
│ ├── flow_notify_webhook.go # 流程 Webhook 通知
│ ├── image_webp.go # 图片异步转 webp(上传后投递,转码回写记录)
│ ├── notice_email.go # 通知邮件补推(消费 notice:email)
│ ├── notice_email_delay.go # 通知邮件延迟补推(消费 notice:email:delay,到期合成后入 notice:email)
│ └── operate_log.go # 操作日志落库(由中间件投递,解耦写库)
│
├── config/ # 配置管理(Viper,各段对应 config 结构体字段)
│ ├── init.go # Viper 初始化入口 + config 结构体
│ ├── app.go # 应用配置 (端口/模式/名称)
│ ├── admin.go # 管理员配置 (Token/权限/超级管理员)
│ ├── db.go # 数据库配置
│ ├── redis.go # Redis 配置
│ ├── oss.go # 对象存储(OSS)配置
│ ├── jwt.go # JWT 配置 (密钥/过期时间)
│ ├── file.go # 文件上传配置 (大小限制/分片/预签名)
│ ├── email.go # 邮件配置
│ ├── wechat.go # 微信配置 (小程序/公众号 AppID+Secret)
│ ├── ge_tui.go # 个推配置
│ ├── iot.go # IoT 配置(接入开关/TTL/时序治理)
│ ├── notice.go # 通知配置
│ ├── log.go # 日志配置
│ └── constant.go # 常量定义
│
├── core/ # 核心组件
│ ├── db.go # GORM 数据库初始化
│ ├── redis.go # Redis 连接初始化 (提供 NewLock)
│ ├── logger.go # Zap 日志初始化
│ ├── queue.go # 队列门面(装配 core/queue 与 core/queue_delay)
│ ├── ws.go # WebSocket 全局管理器入口
│ ├── ws/ # WebSocket 实现 (client/interface/manager/room)
│ ├── pubsub/ # 事件总线 (mitt + Redis 跨实例广播;config/interface/redis/registry)
│ ├── queue/ # 异步队列-点对点工作队列 (config/interface/redis)
│ ├── queue_delay/ # 异步队列-延迟投递 (config/interface/redis)
│ ├── request/ # common.go 分页请求 PageReq
│ └── response/ # 统一响应封装 (common.go / response.go,含错误码 RespType)
│
├── routes/ # 路由注册
│ ├── init.go # Gin 引擎初始化
│ ├── api.go # /api 入口路由注册(admin/web/iot 分组,iot 受 IOT.Enable 门控)
│ ├── admin_route/ # /api/admin 后台路由组(init.go Autoload 各 *_route.go 追加 routeHandlers)
│ │ ├── common_route.go # 通用:上传/相册/个推/S3 直传
│ │ ├── fabu_route.go # 应用发布
│ │ ├── flow_route.go # 审批流程
│ │ ├── generator_route.go # 代码生成器
│ │ ├── iot_route.go # IoT 元数据 CRUD(LoginAuth/PermAuth)
│ │ ├── monitor_route.go # 系统监控
│ │ ├── notice_route.go # 通知
│ │ ├── setting_route.go # 系统设置
│ │ ├── system_route.go # 系统管理
│ │ ├── system_corn_route.go # 定时任务
│ │ ├── user_route.go # 后台侧 C 端用户管理
│ │ └── user_protocol_route.go # 用户协议
│ ├── web_route/ # /api/web 前台(C端)路由
│ │ ├── init.go # Autoload 机制
│ │ ├── fabu_route.go # 应用发布(检查更新/下载)
│ │ └── user_route.go # 注册/登录/绑定/微信
│ └── iot_route/ # /api/iot 设备侧接入路由(IOT.Enable 时注册)
│ ├── init.go # 设备侧路由自动加载
│ └── device_route.go # telemetry/heartbeat(整组走 DeviceAuth)
│
├── util/ # 工具包
│ ├── tools.go # 通用工具 (UUID/JSON/MD5/随机等)
│ ├── verify.go # 校验工具 (VerifyUtil.VerifyQuery/VerifyBody)
│ ├── string.go # 字符串处理
│ ├── array.go # 数组处理
│ ├── cache.go # 缓存操作
│ ├── redis.go # Redis 封装 (Set/Get/Hash/List 等)
│ ├── redis_lock.go # Redis 分布式锁 (Lua 原子解锁)
│ ├── jwt.go # JWT 生成/解析/刷新
│ ├── ip.go # IP 解析 (ip2region)
│ ├── url.go # URL 处理 (绝对路径转换)
│ ├── server.go # 服务器信息采集
│ ├── uaparser.go # UA 解析
│ ├── null_time.go # Null 时间类型工具
│ ├── convert_util/ # 类型转换 (struct copy)
│ ├── excel_util/ # Excel 导入导出 (excel/excel_export/excel_import)
│ ├── file_util/ # 文件与路径工具 (root/utils)
│ ├── img_util/ # 图片处理
│ └── validation/ # 校验引擎扩展 (lang/null/register)
│
├── plugin/ # 插件
│ ├── storage/ # 文件上传存储引擎
│ │ ├── storage.go # 上传主流程
│ │ ├── storage_interface.go # 存储引擎接口 (含分片上传)
│ │ ├── storage_local.go # 本地文件存储实现
│ │ ├── storage_oss.go # 对象存储(OSS)实现
│ │ ├── storage_factory.go # 存储引擎工厂
│ │ ├── presign.go # S3 预签名 URL 生成
│ │ └── cron_cleanup.go # 分片临时目录定时清理
│ ├── email/ # 邮件发送 (email/code 验证码)
│ ├── sms/ # 短信验证码 (code)
│ ├── wechat/ # PowerWeChat 客户端初始化
│ ├── ipapk/ # IP 库解析 (parser)
│ └── aj-captcha-go/ # 行为验证码
│ ├── captcha_config/ # 配置与常量
│ ├── captcha_service/ # 滑块/点选验证码实现 + 缓存(Redis/Mem)
│ ├── model/vo/ # 值对象
│ └── util/ # AES/图片/字体/缓存工具
│
├── public/ # 公共资源
│ ├── resources/ # 验证码字体等
│ └── static/ # 静态文件 (/api/static/*),含 Swagger API 文档页
│
├── docs/ # Swagger 生成物 (docs.go / swagger.json / swagger.yaml)
├── uploads/ # 本地存储驱动的文件上传目录
│
├── bootstrap.go # 启动装配(配置/DB/Redis/队列等初始化)
├── main.go # 程序入口
├── shutdown.go # 优雅关闭(冲刷队列与存储缓冲)
├── go.mod / go.sum # Go 模块依赖
├── .env.yaml # 本地配置 (不提交 git)
├── .env.yaml.example # 配置模板
├── .env.online.yaml # 线上配置
├── pack.bat # 打包脚本
└── upx.exe / x_admin.exe # 可执行文件压缩 / 构建产物