做双端审批流

This commit is contained in:
hero920103 committed 2026-10-07 13:46:32 +08:00
1 parent 5b4dbb2b46
commit ffaadc26ae
69 files changed
+6662 -1071

No files matched your search

+84 -18
View File
@@ -6,40 +6,106 @@ import (
beego "github.com/beego/beego/v2/server/web"
)
// Register 注册移动端 / 开放 API(api)路由。
// Register 注册移动端 / 客户端开放 API(api)路由。
// 说明:/api 统一承载「所有移动端接口」(uniapp)与「登录器等客户端开放接口」,
// 与 /platform、/backend、/index、/auth 各端完全隔离,不复用其它端的功能接口。
//
// 注意:字面量路由必须注册在 :id 通配之前(beego 按注册顺序匹配)。
func Register() {
// 平台更新通知列表(无需登录)
beego.Router("/platform/api/upgrade/list", &controllers.ApiPlatformUpgradeController{}, "get:List")
// 平台更新通知详情(无需登录)
beego.Router("/platform/api/upgrade/detail", &controllers.ApiPlatformUpgradeController{}, "get:Detail")
// 客户端检查更新(无需登录)
// ===== 客户端登录器 / 开放接口(无需登录)=====
// 客户端检查更新
beego.Router("/api/softwareupgrade/check", &controllers.ApiSoftwareUpgradeController{}, "get:Check")
// 登录器上报 Cursor 设备信息(无需登录)
// 登录器上报 Cursor 设备信息
beego.Router("/api/cursor/equipment/report", &controllers.ApiCursorEquipmentController{}, "post:Report")
// 登录器使用激活码激活/续期 Cursor 设备(无需登录)
// 登录器使用激活码激活/续期 Cursor 设备
beego.Router("/api/cursor/equipment/activateByCode", &controllers.ApiCursorEquipmentController{}, "post:ActivateByCode")
// 登录器心跳接口,用于更新在线状态(无需登录)
// 登录器心跳接口,用于更新在线状态
beego.Router("/api/cursor/equipment/heartbeat", &controllers.ApiCursorEquipmentController{}, "post:Heartbeat")
// Cursor Token 顺序读取/检测接口(无需登录,peek 不改变号池状态)
// Cursor Token 顺序读取/检测接口(peek 不改变号池状态)
// GET /api/cursor/token/peek?id=11&data_type=tk
beego.Router("/api/cursor/token/peek", &controllers.ApiCursorDetectController{}, "get:PeekToken")
// Cursor Token 可用状态标记接口(无需登录)
// Cursor Token 可用状态标记接口
// POST /api/cursor/token/available?id=11
// POST /api/cursor/token/unavailable?id=11
beego.Router("/api/cursor/token/available", &controllers.ApiCursorDetectController{}, "post:MarkTokenAvailable")
beego.Router("/api/cursor/token/unavailable", &controllers.ApiCursorDetectController{}, "post:MarkTokenUnavailable")
// 对外提卡接口(无需登录)
// 对外提卡接口
// GET /api/getcard?type=xianyu&module=cursor&data_type=tk
beego.Router("/api/getcard", &controllers.ApiGetCardController{}, "get:GetCard")
// 日程提醒确认接口(无需登录)
// 日程提醒确认接口
beego.Router("/api/schedule/reminder/ack", &controllers.ApiReminderController{}, "get:AckReminder")
// ===== 移动端(uniapp)登录相关(AppAuthController)=====
beego.Router("/api/login", &controllers.AppAuthController{}, "post:LoginBackend")
beego.Router("/api/sendLoginCode", &controllers.AppAuthController{}, "post:SendLoginCode")
beego.Router("/api/loginBySms", &controllers.AppAuthController{}, "post:LoginBySms")
beego.Router("/api/logout", &controllers.AppAuthController{}, "post:Logout")
// 当前用户信息
beego.Router("/api/currentUser", &controllers.AppAuthController{}, "get:GetCurrentUser")
// 极验与登录验证配置
beego.Router("/api/login/getGeetest3Infos", &controllers.AppAuthController{}, "get:GetGeetest3Infos")
beego.Router("/api/login/getGeetest4Infos", &controllers.AppAuthController{}, "get:GetGeetest4Infos")
beego.Router("/api/login/getOpenVerify", &controllers.AppAuthController{}, "get:GetOpenVerify")
// 找回密码(三步流程)
beego.Router("/api/verifyAccount", &controllers.AppAuthController{}, "post:VerifyAccount")
beego.Router("/api/sendResetCode", &controllers.AppAuthController{}, "post:SendResetCode")
beego.Router("/api/resetPassword", &controllers.AppAuthController{}, "post:ResetPassword")
// 注册
beego.Router("/api/register", &controllers.AppAuthController{}, "post:Register")
beego.Router("/api/sendRegisterCode", &controllers.AppAuthController{}, "post:SendRegisterCode")
// 日程提醒
beego.Router("/api/schedule/list", &controllers.AppReminderController{}, "get:GetList")
beego.Router("/api/schedule", &controllers.AppReminderController{}, "post:Create")
beego.Router("/api/schedule/:id", &controllers.AppReminderController{}, "get:GetDetail;put:Update;delete:Delete")
beego.Router("/api/schedule/:id/toggle", &controllers.AppReminderController{}, "post:ToggleComplete")
// 记事本
beego.Router("/api/notebook/list", &controllers.AppNotebookController{}, "get:GetList")
beego.Router("/api/notebook", &controllers.AppNotebookController{}, "post:Create")
beego.Router("/api/notebook/:id", &controllers.AppNotebookController{}, "get:GetDetail;put:Update;delete:Delete")
beego.Router("/api/notebook/:id/togglePin", &controllers.AppNotebookController{}, "post:TogglePin")
// OA 协同办公(移动端只读:通知公告 / 文档库 / 薪酬工资单 / 员工档案)
beego.Router("/api/oa/notice/list", &controllers.AppOaController{}, "get:NoticeList")
beego.Router("/api/oa/notice/:id", &controllers.AppOaController{}, "get:NoticeDetail")
beego.Router("/api/oa/document/categories", &controllers.AppOaController{}, "get:DocCategories")
beego.Router("/api/oa/document/list", &controllers.AppOaController{}, "get:DocList")
beego.Router("/api/oa/document/download/:id", &controllers.AppOaController{}, "get:DocDownload")
beego.Router("/api/oa/document/:id/star", &controllers.AppOaController{}, "post:DocStar")
beego.Router("/api/oa/document/:id", &controllers.AppOaController{}, "get:DocDetail")
beego.Router("/api/oa/compensation/payrolls", &controllers.AppOaController{}, "get:PayrollList")
beego.Router("/api/oa/compensation/payrolls/:id", &controllers.AppOaController{}, "get:PayrollDetail")
beego.Router("/api/oa/employee-file", &controllers.AppOaController{}, "get:MyEmployeeFile")
// 员工档案 HR 视角:access 判定是否可看全公司档案,list 全公司档案列表,detail 档案详情
beego.Router("/api/oa/employee-file/access", &controllers.AppOaController{}, "get:EmployeeFileAccess")
beego.Router("/api/oa/employee-file/list", &controllers.AppOaController{}, "get:EmployeeFileList")
beego.Router("/api/oa/employee-file/detail/:id", &controllers.AppOaController{}, "get:EmployeeFileDetail")
// OA 工作台仪表盘(移动端首屏顶部聚合:待办/报销统计 + 通知公告 + 今日日程)
beego.Router("/api/oa/dashboard", &controllers.AppOaController{}, "get:Dashboard")
// 通讯录(移动端只读:列表 / 组织树 / 详情)
beego.Router("/api/oa/contact/list", &controllers.AppOaController{}, "get:ContactList")
beego.Router("/api/oa/contact/org-tree", &controllers.AppOaController{}, "get:ContactOrgTree")
beego.Router("/api/oa/contact/:id", &controllers.AppOaController{}, "get:ContactDetail")
// 活动日志
beego.Router("/api/activity/list", &controllers.AppActivityController{}, "get:GetList")
// 工作台聚合(ERP/OA/CRM/CMS 应用门户首屏数据)
beego.Router("/api/home", &controllers.AppAggregateController{}, "get:Home")
// 移动端用户自定义「常用功能」保存(读取随 /api/home 下发 quick_menu_ids)
beego.Router("/api/quick-menus", &controllers.AppAggregateController{}, "post:SaveQuickMenus")
}
-78
View File
@@ -1,78 +0,0 @@
package app
import (
"server/controllers"
beego "github.com/beego/beego/v2/server/web"
)
// Register 注册移动端(app)路由。
func Register() {
// 登录相关(使用 AppAuthController)
beego.Router("/app/login", &controllers.AppAuthController{}, "post:LoginBackend")
beego.Router("/app/sendLoginCode", &controllers.AppAuthController{}, "post:SendLoginCode")
beego.Router("/app/loginBySms", &controllers.AppAuthController{}, "post:LoginBySms")
beego.Router("/app/logout", &controllers.AppAuthController{}, "post:Logout")
// 当前用户信息
beego.Router("/app/currentUser", &controllers.AppAuthController{}, "get:GetCurrentUser")
// 极验与登录验证配置
beego.Router("/app/login/getGeetest3Infos", &controllers.AppAuthController{}, "get:GetGeetest3Infos")
beego.Router("/app/login/getGeetest4Infos", &controllers.AppAuthController{}, "get:GetGeetest4Infos")
beego.Router("/app/login/getOpenVerify", &controllers.AppAuthController{}, "get:GetOpenVerify")
// 找回密码(三步流程)
beego.Router("/app/verifyAccount", &controllers.AppAuthController{}, "post:VerifyAccount")
beego.Router("/app/sendResetCode", &controllers.AppAuthController{}, "post:SendResetCode")
beego.Router("/app/resetPassword", &controllers.AppAuthController{}, "post:ResetPassword")
// 注册
beego.Router("/app/register", &controllers.AppAuthController{}, "post:Register")
beego.Router("/app/sendRegisterCode", &controllers.AppAuthController{}, "post:SendRegisterCode")
// 日程提醒
beego.Router("/app/schedule/list", &controllers.AppReminderController{}, "get:GetList")
beego.Router("/app/schedule", &controllers.AppReminderController{}, "post:Create")
beego.Router("/app/schedule/:id", &controllers.AppReminderController{}, "get:GetDetail;put:Update;delete:Delete")
beego.Router("/app/schedule/:id/toggle", &controllers.AppReminderController{}, "post:ToggleComplete")
// 记事本
beego.Router("/app/notebook/list", &controllers.AppNotebookController{}, "get:GetList")
beego.Router("/app/notebook", &controllers.AppNotebookController{}, "post:Create")
beego.Router("/app/notebook/:id", &controllers.AppNotebookController{}, "get:GetDetail;put:Update;delete:Delete")
beego.Router("/app/notebook/:id/togglePin", &controllers.AppNotebookController{}, "post:TogglePin")
// OA 协同办公(移动端只读:通知公告 / 文档库 / 薪酬工资单 / 员工档案)
// 注意:字面量路由必须注册在 :id 通配之前,beego 按注册顺序匹配。
beego.Router("/app/oa/notice/list", &controllers.AppOaController{}, "get:NoticeList")
beego.Router("/app/oa/notice/:id", &controllers.AppOaController{}, "get:NoticeDetail")
beego.Router("/app/oa/document/categories", &controllers.AppOaController{}, "get:DocCategories")
beego.Router("/app/oa/document/list", &controllers.AppOaController{}, "get:DocList")
beego.Router("/app/oa/document/download/:id", &controllers.AppOaController{}, "get:DocDownload")
beego.Router("/app/oa/document/:id/star", &controllers.AppOaController{}, "post:DocStar")
beego.Router("/app/oa/document/:id", &controllers.AppOaController{}, "get:DocDetail")
beego.Router("/app/oa/compensation/payrolls", &controllers.AppOaController{}, "get:PayrollList")
beego.Router("/app/oa/compensation/payrolls/:id", &controllers.AppOaController{}, "get:PayrollDetail")
beego.Router("/app/oa/employee-file", &controllers.AppOaController{}, "get:MyEmployeeFile")
// OA 工作台仪表盘(移动端首屏顶部聚合:待办/报销统计 + 通知公告 + 今日日程)
beego.Router("/app/oa/dashboard", &controllers.AppOaController{}, "get:Dashboard")
// 通讯录(移动端只读:列表 / 组织树 / 详情)
// 同样:字面量路由必须排在 :id 通配之前。
beego.Router("/app/oa/contact/list", &controllers.AppOaController{}, "get:ContactList")
beego.Router("/app/oa/contact/org-tree", &controllers.AppOaController{}, "get:ContactOrgTree")
beego.Router("/app/oa/contact/:id", &controllers.AppOaController{}, "get:ContactDetail")
// 活动日志
beego.Router("/app/activity/list", &controllers.AppActivityController{}, "get:GetList")
// 工作台聚合(ERP/OA/CRM/CMS 应用门户首屏数据)
beego.Router("/app/home", &controllers.AppAggregateController{}, "get:Home")
// 移动端用户自定义「常用功能」保存(读取随 /app/home 下发 quick_menu_ids)
beego.Router("/app/quick-menus", &controllers.AppAggregateController{}, "post:SaveQuickMenus")
}
+13 -1
View File
@@ -15,6 +15,18 @@ func Register() {
RegisterProductRoutes()
RegisterWechatMpRoutes()
RegisterDictRoutes()
RegisterApprovalRoutes()
}
// RegisterApprovalRoutes 注册租户端「审批流配置」路由。
// 数据按登录租户隔离,审批人取本租户用户/角色/部门/职位。
func RegisterApprovalRoutes() {
beego.Router("/backend/approval/options", &controllers.BackendApprovalController{}, "get:Options")
beego.Router("/backend/approval/flow/list", &controllers.BackendApprovalController{}, "get:FlowList")
beego.Router("/backend/approval/flow/detail/:id", &controllers.BackendApprovalController{}, "get:FlowDetail")
beego.Router("/backend/approval/flow/save", &controllers.BackendApprovalController{}, "post:FlowSave")
beego.Router("/backend/approval/flow/delete/:id", &controllers.BackendApprovalController{}, "delete:FlowDelete")
beego.Router("/backend/approval/flow/pick", &controllers.BackendApprovalController{}, "get:Pick")
}
// RegisterProductRoutes 注册租户端「产品购买」路由。
@@ -228,6 +240,7 @@ func RegisterAuthRoutes() {
beego.Router("/backend/friendlinks/:id", &controllers.BackendFriendlinkController{}, "put:Update;delete:Delete")
beego.Router("/backend/allonepages", &controllers.BackendOnepageController{}, "get:ListAll")
beego.Router("/backend/onepage/path/:path", &controllers.BackendOnepageController{}, "get:GetOnePageByPath")
beego.Router("/backend/createonepage", &controllers.BackendOnepageController{}, "post:Create")
beego.Router("/backend/editonepage/:id", &controllers.BackendOnepageController{}, "post:Update")
beego.Router("/backend/deleteonepage/:id", &controllers.BackendOnepageController{}, "delete:Delete")
@@ -251,7 +264,6 @@ func RegisterAuthRoutes() {
beego.Router("/backend/domain/tenant/bindCustom", &controllers.BackendTenantDomainController{}, "post:BindCustom")
beego.Router("/backend/domain/tenant/checkCustomDns", &controllers.BackendTenantDomainController{}, "post:CheckCustomDns")
beego.Router("/backend/domain/tenant/customDomainGuide", &controllers.BackendTenantDomainController{}, "get:CustomDomainGuide")
beego.Router("/backend/domain/tenant/audit", &controllers.BackendTenantDomainController{}, "post:Audit")
beego.Router("/backend/domain/tenant/toggleStatus", &controllers.BackendTenantDomainController{}, "post:ToggleStatus")
beego.Router("/backend/domain/tenant/delete/:id", &controllers.BackendTenantDomainController{}, "delete:Delete")
+3
View File
@@ -20,6 +20,9 @@ func Register() {
// 官网页头导航菜单(平台「官网管理 - 导航菜单」配置,仅返回启用且显示的项)
beego.Router("/site/nav", &controllers.IndexWebsiteController{}, "get:Nav")
// 官网端平台更新公告(公开读取,与平台端 /platform/upgrade 各自独立)
beego.Router("/site/upgrade/list", &controllers.IndexUpgradeNoticeController{}, "get:List")
// SPA 官网内容接口(读取平台官网管理 yz_platform_website_*,仅返回已发布内容)
// 注意:静态段必须在 :id 之前注册,保证 /site/news/categories 不被当作详情
beego.Router("/site/news", &controllers.IndexWebsiteController{}, "get:News")
+19
View File
@@ -64,6 +64,10 @@ func Register() {
beego.Router("/platform/resetPassword", &controllers.PlatformAuthController{}, "post:ResetPassword")
beego.Router("/platform/sendResetCode", &controllers.PlatformAuthController{}, "post:SendResetCode")
// 租户自助注册(平台端独立接口,与后端 /backend 不复用)
beego.Router("/platform/register", &controllers.PlatformAuthController{}, "post:Register")
beego.Router("/platform/sendRegisterCode", &controllers.PlatformAuthController{}, "post:SendRegisterCode")
// 平台菜单配置相关
beego.Router("/platform/menu/:id", &controllers.AdminMenuController{}, "get:GetMenu")
beego.Router("/platform/allmenu", &controllers.AdminMenuController{}, "get:GetAllMenus")
@@ -162,9 +166,19 @@ func Register() {
beego.Router("/platform/domain/tenant/checkCustomDns", &controllers.PlatformTenantDomainController{}, "post:CheckCustomDns")
beego.Router("/platform/domain/tenant/customDomainGuide", &controllers.PlatformTenantDomainController{}, "get:CustomDomainGuide")
beego.Router("/platform/domain/tenant/audit", &controllers.PlatformTenantDomainController{}, "post:Audit")
beego.Router("/platform/domain/tenant/audit/progress/:id", &controllers.PlatformTenantDomainController{}, "get:AuditProgress")
beego.Router("/platform/domain/tenant/toggleStatus", &controllers.PlatformTenantDomainController{}, "post:ToggleStatus")
beego.Router("/platform/domain/tenant/delete/:id", &controllers.PlatformTenantDomainController{}, "delete:Delete")
// 审批流配置(平台侧:域名申请等管控场景)
beego.Router("/platform/approval/flow/list", &controllers.PlatformApprovalController{}, "get:FlowList")
beego.Router("/platform/approval/flow/detail/:id", &controllers.PlatformApprovalController{}, "get:FlowDetail")
beego.Router("/platform/approval/flow/save", &controllers.PlatformApprovalController{}, "post:FlowSave")
beego.Router("/platform/approval/flow/delete/:id", &controllers.PlatformApprovalController{}, "delete:FlowDelete")
beego.Router("/platform/approval/options", &controllers.PlatformApprovalController{}, "get:Options")
beego.Router("/platform/approval/biz-types", &controllers.PlatformApprovalController{}, "get:BizTypes")
beego.Router("/platform/approval/flow/pick", &controllers.PlatformApprovalController{}, "get:Pick")
// 模块管理(yz_system_modules)
beego.Router("/platform/modules/list", &controllers.PlatformModulesController{}, "get:GetList")
beego.Router("/platform/modules/getTenantList", &controllers.PlatformModulesController{}, "get:GetTenantList")
@@ -193,6 +207,10 @@ func Register() {
beego.Router("/platform/softwareupgrade", &controllers.PlatformSoftwareUpgradeController{}, "post:Create")
beego.Router("/platform/softwareupgrade/:id", &controllers.PlatformSoftwareUpgradeController{}, "get:Detail;post:Update;delete:Delete")
// 平台更新公告(yz_platform_upgrade_notice,平台端独立接口)
beego.Router("/platform/upgrade/list", &controllers.PlatformUpgradeNoticeController{}, "get:List")
beego.Router("/platform/upgrade/detail", &controllers.PlatformUpgradeNoticeController{}, "get:Detail")
// 租户站点设置(yz_tenant_site_setting)
beego.Router("/platform/normalInfos", &controllers.PlatformSiteSettingsController{}, "get:GetNormalInfos")
beego.Router("/platform/saveNormalInfos", &controllers.PlatformSiteSettingsController{}, "post:SaveNormalInfos")
@@ -426,6 +444,7 @@ func Register() {
// 单页管理 yz_platform_website_page
beego.Router("/platform/website/page/all", &controllers.PlatformWebsitePageController{}, "get:All")
beego.Router("/platform/website/page/path/:path", &controllers.PlatformWebsitePageController{}, "get:GetByPath")
beego.Router("/platform/website/page", &controllers.PlatformWebsitePageController{}, "post:Create")
beego.Router("/platform/website/page/:id", &controllers.PlatformWebsitePageController{}, "get:Get;post:Update;delete:Delete")
+4 -8
View File
@@ -6,7 +6,6 @@ import (
"server/controllers"
"server/middleware"
"server/routers/api"
"server/routers/app"
authrouter "server/routers/auth"
"server/routers/backend"
"server/routers/index"
@@ -67,28 +66,25 @@ func init() {
switch mode {
case "platform":
platform.Register()
app.Register()
api.Register()
// 在 platform 模式下,仍保留 backend 登录相关路由,避免后台登录 404
backend.RegisterAuthRoutes()
case "backend":
backend.Register()
app.Register()
api.Register()
case "index":
index.Register()
app.Register()
api.Register()
case "api":
api.Register()
case "app":
app.Register()
case "all":
platform.Register()
backend.Register()
index.Register()
api.Register()
app.Register()
default:
// 未知模式时,退回到只启用平台端,避免启动失败
platform.Register()
app.Register()
api.Register()
}
}