feat():learning后台管理项目初始化
This commit is contained in:
170
internal/services/README.md
Normal file
170
internal/services/README.md
Normal file
@@ -0,0 +1,170 @@
|
||||
# 服务层
|
||||
|
||||
本模块负责业务逻辑的实现,提供各种业务服务。
|
||||
|
||||
## 功能特性
|
||||
|
||||
- 用户管理服务
|
||||
- 角色管理服务
|
||||
- 菜单管理服务
|
||||
- 日志管理服务
|
||||
- 统一的错误处理
|
||||
- 业务逻辑封装
|
||||
|
||||
## 模块结构
|
||||
|
||||
```
|
||||
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,
|
||||
})
|
||||
```
|
||||
|
||||
## 错误处理
|
||||
|
||||
所有服务都遵循统一的错误处理模式:
|
||||
|
||||
- 业务逻辑错误返回具体的错误信息
|
||||
- 数据库错误记录日志并返回通用错误信息
|
||||
- 参数验证错误返回具体的验证信息
|
||||
|
||||
## 日志记录
|
||||
|
||||
服务层会自动记录关键操作的日志:
|
||||
|
||||
- 用户登录/登出
|
||||
- 用户创建/更新/删除
|
||||
- 角色创建/更新/删除
|
||||
- 菜单创建/更新/删除
|
||||
- 系统操作日志
|
||||
|
||||
Reference in New Issue
Block a user