Files

4.0 KiB

服务层

本模块负责业务逻辑的实现,提供各种业务服务。

功能特性

  • 用户管理服务
  • 角色管理服务
  • 菜单管理服务
  • 日志管理服务
  • 统一的错误处理
  • 业务逻辑封装

模块结构

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,
})

错误处理

所有服务都遵循统一的错误处理模式:

  • 业务逻辑错误返回具体的错误信息
  • 数据库错误记录日志并返回通用错误信息
  • 参数验证错误返回具体的验证信息

日志记录

服务层会自动记录关键操作的日志:

  • 用户登录/登出
  • 用户创建/更新/删除
  • 角色创建/更新/删除
  • 菜单创建/更新/删除
  • 系统操作日志