171 lines
4.0 KiB
Markdown
171 lines
4.0 KiB
Markdown
# 服务层
|
|
|
|
本模块负责业务逻辑的实现,提供各种业务服务。
|
|
|
|
## 功能特性
|
|
|
|
- 用户管理服务
|
|
- 角色管理服务
|
|
- 菜单管理服务
|
|
- 日志管理服务
|
|
- 统一的错误处理
|
|
- 业务逻辑封装
|
|
|
|
## 模块结构
|
|
|
|
```
|
|
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,
|
|
})
|
|
```
|
|
|
|
## 错误处理
|
|
|
|
所有服务都遵循统一的错误处理模式:
|
|
|
|
- 业务逻辑错误返回具体的错误信息
|
|
- 数据库错误记录日志并返回通用错误信息
|
|
- 参数验证错误返回具体的验证信息
|
|
|
|
## 日志记录
|
|
|
|
服务层会自动记录关键操作的日志:
|
|
|
|
- 用户登录/登出
|
|
- 用户创建/更新/删除
|
|
- 角色创建/更新/删除
|
|
- 菜单创建/更新/删除
|
|
- 系统操作日志
|
|
|