# 服务层 本模块负责业务逻辑的实现,提供各种业务服务。 ## 功能特性 - 用户管理服务 - 角色管理服务 - 菜单管理服务 - 日志管理服务 - 统一的错误处理 - 业务逻辑封装 ## 模块结构 ``` services/ ├── user_service.go # 用户服务 ├── role_service.go # 角色服务 ├── menu_service.go # 菜单服务 ├── log_service.go # 日志服务 └── README.md # 说明文档 ``` ## 服务接口 ### 用户服务 (UserService) ```go type UserService interface { Login(req *models.LoginRequest) (*models.LoginResponse, error) Create(req *models.UserCreateRequest) (*models.User, error) GetByID(id uint) (*models.User, error) Update(id uint, req *models.UserUpdateRequest) (*models.User, error) Delete(id uint) error List(req *models.UserListRequest) ([]models.User, int64, error) ChangePassword(id uint, req *models.UserChangePasswordRequest) error UpdateStatus(id uint, status int) error } ``` ### 角色服务 (RoleService) ```go type RoleService interface { Create(req *models.RoleCreateRequest) (*models.Role, error) GetByID(id uint) (*models.Role, error) Update(id uint, req *models.RoleUpdateRequest) (*models.Role, error) Delete(id uint) error List(req *models.RoleListRequest) ([]models.Role, int64, error) UpdateStatus(id uint, status int) error } ``` ### 菜单服务 (MenuService) ```go type MenuService interface { Create(req *models.MenuCreateRequest) (*models.Menu, error) GetByID(id uint) (*models.Menu, error) Update(id uint, req *models.MenuUpdateRequest) (*models.Menu, error) Delete(id uint) error List(req *models.MenuListRequest) ([]models.Menu, int64, error) GetTree() ([]models.Menu, error) UpdateStatus(id uint, status int) error UpdateSort(id uint, sort int) error } ``` ### 日志服务 (LogService) ```go type LogService interface { CreateLoginLog(log *models.LoginLog) error CreateOperationLog(log *models.OperationLog) error GetLoginLogs(req *models.LoginLogListRequest) ([]models.LoginLog, int64, error) GetOperationLogs(req *models.OperationLogListRequest) ([]models.OperationLog, int64, error) DeleteLoginLogs(beforeDate string) error DeleteOperationLogs(beforeDate string) error } ``` ## 使用方法 ### 创建服务实例 ```go // 创建用户服务 userService := services.NewUserService( storage.NewUserStorage(), utils.NewJWTManager("secret-key"), logger, ) // 创建角色服务 roleService := services.NewRoleService( storage.NewRoleStorage(), logger, ) // 创建菜单服务 menuService := services.NewMenuService( storage.NewMenuStorage(), logger, ) // 创建日志服务 logService := services.NewLogService( storage.NewLogStorage(), logger, ) ``` ### 使用服务 ```go // 用户登录 loginResp, err := userService.Login(&models.LoginRequest{ Username: "admin", Password: "password", }) // 创建用户 user, err := userService.Create(&models.UserCreateRequest{ Username: "newuser", Email: "newuser@example.com", Password: "password", Role: "user", }) // 获取用户列表 users, total, err := userService.List(&models.UserListRequest{ PageRequest: models.PageRequest{Page: 1, Size: 10}, Username: "admin", }) // 获取菜单树 menus, err := menuService.GetTree() // 记录操作日志 err := logService.CreateOperationLog(&models.OperationLog{ UserID: 1, Username: "admin", Module: "user", Operation: "create", Method: "POST", Path: "/api/users", IP: "127.0.0.1", Status: 1, }) ``` ## 错误处理 所有服务都遵循统一的错误处理模式: - 业务逻辑错误返回具体的错误信息 - 数据库错误记录日志并返回通用错误信息 - 参数验证错误返回具体的验证信息 ## 日志记录 服务层会自动记录关键操作的日志: - 用户登录/登出 - 用户创建/更新/删除 - 角色创建/更新/删除 - 菜单创建/更新/删除 - 系统操作日志