服务层
本模块负责业务逻辑的实现,提供各种业务服务。
功能特性
- 用户管理服务
- 角色管理服务
- 菜单管理服务
- 日志管理服务
- 统一的错误处理
- 业务逻辑封装
模块结构
services/
├── user_service.go # 用户服务
├── role_service.go # 角色服务
├── menu_service.go # 菜单服务
├── log_service.go # 日志服务
└── README.md # 说明文档
服务接口
用户服务 (UserService)
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)
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)
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)
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
}
使用方法
创建服务实例
// 创建用户服务
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,
)
使用服务
// 用户登录
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,
})
错误处理
所有服务都遵循统一的错误处理模式:
- 业务逻辑错误返回具体的错误信息
- 数据库错误记录日志并返回通用错误信息
- 参数验证错误返回具体的验证信息
日志记录
服务层会自动记录关键操作的日志:
- 用户登录/登出
- 用户创建/更新/删除
- 角色创建/更新/删除
- 菜单创建/更新/删除
- 系统操作日志