package api import ( "server/controllers" beego "github.com/beego/beego/v2/server/web" ) // Register 注册移动端 / 客户端开放 API(api)路由。 // 说明:/api 统一承载「所有移动端接口」(uniapp)与「登录器等客户端开放接口」, // 与 /platform、/backend、/index、/auth 各端完全隔离,不复用其它端的功能接口。 // // 注意:字面量路由必须注册在 :id 通配之前(beego 按注册顺序匹配)。 func Register() { RegisterErpRoutes() // ===== 客户端登录器 / 开放接口(无需登录)===== // 客户端检查更新 beego.Router("/api/softwareupgrade/check", &controllers.ApiSoftwareUpgradeController{}, "get:Check") // 登录器上报 Cursor 设备信息 beego.Router("/api/cursor/equipment/report", &controllers.ApiCursorEquipmentController{}, "post:Report") // 登录器使用激活码激活/续期 Cursor 设备 beego.Router("/api/cursor/equipment/activateByCode", &controllers.ApiCursorEquipmentController{}, "post:ActivateByCode") // 登录器心跳接口,用于更新在线状态 beego.Router("/api/cursor/equipment/heartbeat", &controllers.ApiCursorEquipmentController{}, "post:Heartbeat") // 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 可用状态标记接口 // 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") // 小程序订阅消息:取模板 / 上报授权 / 测试发送 beego.Router("/api/mini/subscribe/templates", &controllers.AppMiniSubscribeController{}, "get:Templates") beego.Router("/api/mini/subscribe/authorize", &controllers.AppMiniSubscribeController{}, "post:Authorize") beego.Router("/api/mini/subscribe/test", &controllers.AppMiniSubscribeController{}, "post:TestNotice") // ===== 移动端(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") // 账号管理(密码库,与 /backend/passwordStore/* 同一套数据;字面量路由在 :id 通配之前) beego.Router("/api/passwordStore/list", &controllers.AppPasswordStoreController{}, "get:GetList") beego.Router("/api/passwordStore", &controllers.AppPasswordStoreController{}, "post:Create") beego.Router("/api/passwordStore/:id", &controllers.AppPasswordStoreController{}, "get:GetDetail;post:Update;delete:Delete") // 记事本 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") // OA 工作日程(日历待办,与 /backend/oa/schedule/* 同一套数据;小程序「工作日程」页面使用) beego.Router("/api/oa/schedule/list", &controllers.AppOaController{}, "get:ScheduleList") beego.Router("/api/oa/schedule/detail/:id", &controllers.AppOaController{}, "get:ScheduleDetail") beego.Router("/api/oa/schedule/create", &controllers.AppOaController{}, "post:ScheduleCreate") beego.Router("/api/oa/schedule/update/:id", &controllers.AppOaController{}, "post:ScheduleUpdate") beego.Router("/api/oa/schedule/delete/:id", &controllers.AppOaController{}, "delete:ScheduleDelete") beego.Router("/api/oa/schedule/finish/:id", &controllers.AppOaController{}, "post:ScheduleFinish") beego.Router("/api/oa/schedule/upload", &controllers.AppOaController{}, "post:ScheduleUploadImage") beego.Router("/api/oa/schedule/images/:id", &controllers.AppOaController{}, "post:ScheduleImages") // OA 工作日报(与 /backend/oa/dailyreport/* 同一套数据;小程序「工作日报」页面使用) beego.Router("/api/oa/dailyreport/profile", &controllers.AppOaController{}, "get:DailyReportProfile") beego.Router("/api/oa/dailyreport/mine/list", &controllers.AppOaController{}, "get:DailyReportMineList") beego.Router("/api/oa/dailyreport/calendar", &controllers.AppOaController{}, "get:DailyReportCalendar") beego.Router("/api/oa/dailyreport/save", &controllers.AppOaController{}, "post:DailyReportSave") beego.Router("/api/oa/dailyreport/withdraw/:id", &controllers.AppOaController{}, "post:DailyReportWithdraw") beego.Router("/api/oa/dailyreport/detail/:id", &controllers.AppOaController{}, "get:DailyReportDetail") beego.Router("/api/oa/dailyreport/delete/:id", &controllers.AppOaController{}, "delete:DailyReportDelete") beego.Router("/api/oa/dailyreport/team/status", &controllers.AppOaController{}, "get:DailyReportTeamStatus") beego.Router("/api/oa/dailyreport/team/orgs", &controllers.AppOaController{}, "get:DailyReportTeamOrgs") beego.Router("/api/oa/dailyreport/comment", &controllers.AppOaController{}, "post:DailyReportComment") beego.Router("/api/oa/dailyreport/comment/:id", &controllers.AppOaController{}, "delete:DailyReportCommentDelete") beego.Router("/api/oa/dailyreport/upload", &controllers.AppOaController{}, "post:DailyReportUpload") // OA 报销管理(与 /backend/reimbursements* 同一套数据;小程序「报销管理」页面使用) beego.Router("/api/oa/expense/list", &controllers.AppOaController{}, "get:ExpenseList") beego.Router("/api/oa/expense/types", &controllers.AppOaController{}, "get:ExpenseTypes") beego.Router("/api/oa/expense/upload", &controllers.AppOaController{}, "post:ExpenseUploadImage") beego.Router("/api/oa/expense/detail/:id", &controllers.AppOaController{}, "get:ExpenseDetail") beego.Router("/api/oa/expense/create", &controllers.AppOaController{}, "post:ExpenseCreate") beego.Router("/api/oa/expense/update/:id", &controllers.AppOaController{}, "post:ExpenseUpdate") beego.Router("/api/oa/expense/delete/:id", &controllers.AppOaController{}, "delete:ExpenseDelete") beego.Router("/api/oa/expense/item/add/:id", &controllers.AppOaController{}, "post:ExpenseAddItem") beego.Router("/api/oa/expense/item/update/:id/:item_id", &controllers.AppOaController{}, "post:ExpenseUpdateItem") beego.Router("/api/oa/expense/item/delete/:id/:item_id", &controllers.AppOaController{}, "delete:ExpenseDeleteItem") beego.Router("/api/oa/expense/submit/:id", &controllers.AppOaController{}, "post:ExpenseSubmit") beego.Router("/api/oa/expense/approve/:id", &controllers.AppOaController{}, "post:ExpenseApprove") beego.Router("/api/oa/expense/reject/:id", &controllers.AppOaController{}, "post:ExpenseReject") beego.Router("/api/oa/expense/my-approve-task/:id", &controllers.AppOaController{}, "get:ExpenseMyApproveTask") beego.Router("/api/oa/expense/status/:id", &controllers.AppOaController{}, "post:ExpenseStatus") beego.Router("/api/oa/expense/records/:id", &controllers.AppOaController{}, "get:ExpenseRecords") // 通讯录(移动端只读:列表 / 组织树 / 详情) 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/oa/approval/categories", &controllers.AppOaController{}, "get:ApprovalCategories") beego.Router("/api/oa/approval/flows", &controllers.AppOaController{}, "get:ApprovalFlows") beego.Router("/api/oa/approval/list", &controllers.AppOaController{}, "get:ApprovalList") beego.Router("/api/oa/approval/todo", &controllers.AppOaController{}, "get:ApprovalTodo") beego.Router("/api/oa/approval/submit", &controllers.AppOaController{}, "post:ApprovalSubmit") beego.Router("/api/oa/approval/approve", &controllers.AppOaController{}, "post:ApprovalApprove") beego.Router("/api/oa/approval/withdraw/:id", &controllers.AppOaController{}, "post:ApprovalWithdraw") beego.Router("/api/oa/approval/detail/:id", &controllers.AppOaController{}, "get:ApprovalDetail") // 活动日志 beego.Router("/api/activity/list", &controllers.AppActivityController{}, "get:GetList") // 工作台聚合(ERP/OA/CRM/CMS 应用门户首屏数据) beego.Router("/api/home", &controllers.AppAggregateController{}, "get:Home") // 移动端未登录时的模块宫格(公开:返回模块列表 + require_login 标记,路径不在鉴权前缀内) beego.Router("/api/modules/public", &controllers.AppAggregateController{}, "get:PublicModules") // 移动端免登录菜单(公开:菜单级 require_login=0 的集合,游客可用功能的唯一入口清单) beego.Router("/api/menus/public", &controllers.AppAggregateController{}, "get:PublicMenus") // ===== 游客(免登录模块)===== // 微信手机号授权签发游客令牌(公开接口,不在鉴权前缀内,凭证由控制器校验) beego.Router("/api/guest/mini-login", &controllers.GuestController{}, "post:MiniLogin") // 正式登录后把游客数据并入正式账号(需正式令牌) beego.Router("/api/guest/merge", &controllers.GuestController{}, "post:Merge") // 通用游客数据接口(需游客令牌,供后续免登录模块直接复用) beego.Router("/api/guest/data", &controllers.GuestController{}, "get:DataList;post:DataCreate") beego.Router("/api/guest/data/:id", &controllers.GuestController{}, "put:DataUpdate;delete:DataDelete") // 移动端用户自定义「常用功能」保存(读取随 /api/home 下发 quick_menu_ids) beego.Router("/api/quick-menus", &controllers.AppAggregateController{}, "post:SaveQuickMenus") // ===== 小程序新用户引导:手机号 → 设密码注册 → 创建 / 挂靠企业 ===== // 公开路径(不在 jwt 保护前缀内):phone / register 由微信凭证与注册票据自证, // 其余端点由控制器自行校验 Bearer 令牌(含 tid=0 的未加入企业令牌)。 beego.Router("/api/onboarding/phone", &controllers.OnboardingController{}, "post:Phone") beego.Router("/api/onboarding/register", &controllers.OnboardingController{}, "post:Register") beego.Router("/api/onboarding/status", &controllers.OnboardingController{}, "get:Status") beego.Router("/api/onboarding/tenants", &controllers.OnboardingController{}, "get:Tenants") beego.Router("/api/onboarding/departments", &controllers.OnboardingController{}, "get:Departments") beego.Router("/api/onboarding/positions", &controllers.OnboardingController{}, "get:Positions") beego.Router("/api/onboarding/apply-join", &controllers.OnboardingController{}, "post:ApplyJoin") beego.Router("/api/onboarding/apply-create", &controllers.OnboardingController{}, "post:ApplyCreate") }