remove interfaces

This commit is contained in:
yanghao05
2023-02-09 14:57:32 +08:00
parent 45400ae272
commit aceac5d8eb
16 changed files with 74 additions and 137 deletions

View File

@@ -10,11 +10,7 @@ import (
"github.com/rogeecn/gen"
)
type PermissionController interface {
Get(ctx *gin.Context) (string, error)
}
type permissionControllerImpl struct {
type PermissionController struct {
jwt *jwt.JWT
rbac rbac.IRbac
}
@@ -22,11 +18,11 @@ type permissionControllerImpl struct {
func NewPermissionController(
jwt *jwt.JWT,
rbac rbac.IRbac,
) PermissionController {
return &permissionControllerImpl{rbac: rbac, jwt: jwt}
) *PermissionController {
return &PermissionController{rbac: rbac, jwt: jwt}
}
func (c *permissionControllerImpl) Get(ctx *gin.Context) (string, error) {
func (c *PermissionController) Get(ctx *gin.Context) (string, error) {
claimsCtx, exists := ctx.Get(jwt.CtxKey)
if !exists {
return "", gen.NewBusError(http.StatusBadRequest, http.StatusBadRequest, "Token 获取失败")

View File

@@ -10,45 +10,37 @@ import (
"github.com/gin-gonic/gin"
)
type RoleController interface {
GetByFilter(*gin.Context, dto.RoleRequestFilter, request.PageFilter) (*response.PageResponse[*models.SysRole], error)
Tree(*gin.Context) ([]*dto.RoleTree, error)
Create(*gin.Context, dto.RoleRequestForm) error
Delete(*gin.Context, int) error
UpdateByID(*gin.Context, int, dto.RoleRequestForm) error
}
type roleControllerImpl struct {
type RoleController struct {
roleSvc service.RoleService
}
func NewRoleController(
roleSvc service.RoleService,
) RoleController {
return &roleControllerImpl{
) *RoleController {
return &RoleController{
roleSvc: roleSvc,
}
}
func (c *roleControllerImpl) GetByFilter(
func (c *RoleController) GetByFilter(
ctx *gin.Context,
filter dto.RoleRequestFilter,
page request.PageFilter,
) (*response.PageResponse[*models.SysRole], error) {
return c.roleSvc.GetByFilter(ctx, filter, page)
}
func (c *roleControllerImpl) Tree(ctx *gin.Context) ([]*dto.RoleTree, error) {
func (c *RoleController) Tree(ctx *gin.Context) ([]*dto.RoleTree, error) {
return c.roleSvc.Tree(ctx)
}
func (c *roleControllerImpl) Create(ctx *gin.Context, req dto.RoleRequestForm) error {
func (c *RoleController) Create(ctx *gin.Context, req dto.RoleRequestForm) error {
_, err := c.roleSvc.Create(ctx, req)
return err
}
func (c *roleControllerImpl) UpdateByID(ctx *gin.Context, id int, req dto.RoleRequestForm) error {
func (c *RoleController) UpdateByID(ctx *gin.Context, id int, req dto.RoleRequestForm) error {
_, err := c.roleSvc.UpdateByID(ctx, uint64(id), req)
return err
}
func (c *roleControllerImpl) Delete(ctx *gin.Context, id int) error {
func (c *RoleController) Delete(ctx *gin.Context, id int) error {
return c.roleSvc.DeleteByID(ctx, uint64(id))
}

View File

@@ -9,11 +9,7 @@ import (
"github.com/gin-gonic/gin"
)
type UserController interface {
Login(*gin.Context, dto.LoginRequestForm) (*dto.LoginResponse, error)
}
type userControllerImpl struct {
type UserController struct {
conf *config.Config
user service.UserService
jwt *jwt.JWT
@@ -23,15 +19,15 @@ func NewUserController(
conf *config.Config,
user service.UserService,
jwt *jwt.JWT,
) UserController {
return &userControllerImpl{
) *UserController {
return &UserController{
conf: conf,
user: user,
jwt: jwt,
}
}
func (c *userControllerImpl) Login(ctx *gin.Context, req dto.LoginRequestForm) (*dto.LoginResponse, error) {
func (c *UserController) Login(ctx *gin.Context, req dto.LoginRequestForm) (*dto.LoginResponse, error) {
user, err := c.user.AuthMatchPassword(ctx, &req)
if err != nil {
return nil, err

View File

@@ -8,25 +8,15 @@ import (
"context"
)
type RoleDao interface {
GetByFilter(context.Context, dto.RoleRequestFilter, request.PageFilter) ([]*models.SysRole, uint64, error)
FindByID(context.Context, uint64) (*models.SysRole, error)
Create(context.Context, *models.SysRole) (*models.SysRole, error)
UpdateByID(context.Context, *models.SysRole) (*models.SysRole, error)
DeleteByID(context.Context, uint64) error
DeletePermanentlyByID(context.Context, uint64) error
All(context.Context) ([]*models.SysRole, error)
}
type roleDaoImpl struct {
type RoleDao struct {
query *query.Query
}
func NewRoleDao(query *query.Query) RoleDao {
return &roleDaoImpl{query: query}
func NewRoleDao(query *query.Query) *RoleDao {
return &RoleDao{query: query}
}
func (dao *roleDaoImpl) GetByFilter(ctx context.Context, filter dto.RoleRequestFilter, page request.PageFilter) ([]*models.SysRole, uint64, error) {
func (dao *RoleDao) GetByFilter(ctx context.Context, filter dto.RoleRequestFilter, page request.PageFilter) ([]*models.SysRole, uint64, error) {
role := dao.query.SysRole
query := role.WithContext(ctx)
@@ -55,17 +45,17 @@ func (dao *roleDaoImpl) GetByFilter(ctx context.Context, filter dto.RoleRequestF
return items, uint64(total), nil
}
func (dao *roleDaoImpl) All(ctx context.Context) ([]*models.SysRole, error) {
func (dao *RoleDao) All(ctx context.Context) ([]*models.SysRole, error) {
role := dao.query.SysRole
return role.WithContext(ctx).Find()
}
func (dao *roleDaoImpl) FindByID(ctx context.Context, id uint64) (*models.SysRole, error) {
func (dao *RoleDao) FindByID(ctx context.Context, id uint64) (*models.SysRole, error) {
role := dao.query.SysRole
return role.WithContext(ctx).Where(role.ID.Eq(id)).First()
}
func (dao *roleDaoImpl) Create(ctx context.Context, model *models.SysRole) (*models.SysRole, error) {
func (dao *RoleDao) Create(ctx context.Context, model *models.SysRole) (*models.SysRole, error) {
role := dao.query.SysRole
if err := role.WithContext(ctx).Create(model); err != nil {
return nil, err
@@ -73,7 +63,7 @@ func (dao *roleDaoImpl) Create(ctx context.Context, model *models.SysRole) (*mod
return model, nil
}
func (dao *roleDaoImpl) UpdateByID(ctx context.Context, model *models.SysRole) (*models.SysRole, error) {
func (dao *RoleDao) UpdateByID(ctx context.Context, model *models.SysRole) (*models.SysRole, error) {
role := dao.query.SysRole
_, err := role.WithContext(ctx).Where(role.ID.Eq(model.ID)).Updates(model)
if err != nil {
@@ -82,13 +72,13 @@ func (dao *roleDaoImpl) UpdateByID(ctx context.Context, model *models.SysRole) (
return model, nil
}
func (dao *roleDaoImpl) DeleteByID(ctx context.Context, id uint64) error {
func (dao *RoleDao) DeleteByID(ctx context.Context, id uint64) error {
role := dao.query.SysRole
_, err := role.WithContext(ctx).Where(role.ID.Eq(id)).Delete()
return err
}
func (dao *roleDaoImpl) DeletePermanentlyByID(ctx context.Context, id uint64) error {
func (dao *RoleDao) DeletePermanentlyByID(ctx context.Context, id uint64) error {
role := dao.query.SysRole
_, err := role.WithContext(ctx).Unscoped().Where(role.ID.Eq(id)).Delete()
return err

View File

@@ -23,7 +23,7 @@ import (
type RoleInjectParams struct {
dig.In
DB *gorm.DB
Dao RoleDao
Dao *RoleDao
Query *query.Query
Faker *gofakeit.Faker
}

View File

@@ -6,24 +6,20 @@ import (
"context"
)
type UserDao interface {
Create(context.Context, *models.User) (*models.User, error)
}
type userDaoImpl struct {
type UserDao struct {
query *query.Query
}
func NewUserDao(query *query.Query) UserDao {
return &userDaoImpl{query: query}
func NewUserDao(query *query.Query) *UserDao {
return &UserDao{query: query}
}
func (dao *userDaoImpl) FindByID(ctx context.Context, id uint64) (*models.User, error) {
func (dao *UserDao) FindByID(ctx context.Context, id uint64) (*models.User, error) {
user := dao.query.User
return user.WithContext(ctx).Where(user.ID.Eq(id)).First()
}
func (dao *userDaoImpl) Create(ctx context.Context, model *models.User) (*models.User, error) {
func (dao *UserDao) Create(ctx context.Context, model *models.User) (*models.User, error) {
user := dao.query.User
if err := user.WithContext(ctx).Create(model); err != nil {
return nil, err

View File

@@ -6,28 +6,21 @@ import (
"context"
)
type UserRoleDao interface {
Exists(context.Context, int) bool
Create(context.Context, int, int) error
Update(context.Context, int, int) error
Delete(context.Context, int, int) error
}
type userRoleDaoImpl struct {
type UserRoleDao struct {
query *query.Query
}
func NewUserRoleDao(query *query.Query) UserRoleDao {
return &userRoleDaoImpl{query: query}
func NewUserRoleDao(query *query.Query) *UserRoleDao {
return &UserRoleDao{query: query}
}
func (dao *userRoleDaoImpl) Exists(ctx context.Context, userID int) bool {
func (dao *UserRoleDao) Exists(ctx context.Context, userID int) bool {
userRole := dao.query.UserRole
count, _ := userRole.WithContext(ctx).Where(userRole.UserID.Eq(uint64(userID))).Count()
return count > 0
}
func (dao *userRoleDaoImpl) Create(ctx context.Context, userID, roleID int) error {
func (dao *UserRoleDao) Create(ctx context.Context, userID, roleID int) error {
userRole := dao.query.UserRole
return userRole.WithContext(ctx).Create(&models.UserRole{
UserID: uint64(userID),
@@ -35,13 +28,13 @@ func (dao *userRoleDaoImpl) Create(ctx context.Context, userID, roleID int) erro
})
}
func (dao *userRoleDaoImpl) Update(ctx context.Context, userID, roleID int) error {
func (dao *UserRoleDao) Update(ctx context.Context, userID, roleID int) error {
userRole := dao.query.UserRole
_, err := userRole.WithContext(ctx).Where(userRole.UserID.Eq(uint64(userID))).Update(userRole.RoleID, roleID)
return err
}
func (dao *userRoleDaoImpl) Delete(ctx context.Context, userID, roleID int) error {
func (dao *UserRoleDao) Delete(ctx context.Context, userID, roleID int) error {
userRole := dao.query.UserRole
_, err := userRole.WithContext(ctx).
Where(userRole.UserID.Eq(uint64(userID))).

View File

@@ -24,7 +24,7 @@ type UserRoleInjectParams struct {
dig.In
DB *gorm.DB
Dao UserRoleDao
Dao *UserRoleDao
Query *query.Query
Faker *gofakeit.Faker
}

View File

@@ -24,7 +24,7 @@ type UserInjectParams struct {
dig.In
DB *gorm.DB
Dao UserDao
Dao *UserDao
Query *query.Query
Faker *gofakeit.Faker
}

View File

@@ -10,15 +10,7 @@ import (
"context"
)
type RoleService interface {
GetByFilter(context.Context, dto.RoleRequestFilter, request.PageFilter) (*response.PageResponse[*models.SysRole], error)
Create(context.Context, dto.RoleRequestForm) (*models.SysRole, error)
Tree(context.Context) ([]*dto.RoleTree, error)
UpdateByID(context.Context, uint64, dto.RoleRequestForm) (*models.SysRole, error)
DeleteByID(context.Context, uint64) error
}
type roleService struct {
type RoleService struct {
dao dao.RoleDao
uuid *uuid.Generator
}
@@ -26,14 +18,14 @@ type roleService struct {
func NewRoleService(
dao dao.RoleDao,
uuid *uuid.Generator,
) RoleService {
return &roleService{
) *RoleService {
return &RoleService{
dao: dao,
uuid: uuid,
}
}
func (svc *roleService) GetByFilter(
func (svc *RoleService) GetByFilter(
ctx context.Context,
filter dto.RoleRequestFilter,
page request.PageFilter,
@@ -49,7 +41,7 @@ func (svc *roleService) GetByFilter(
}, nil
}
func (svc *roleService) treeMaker(ctx context.Context, models []*models.SysRole, pid uint64) []*dto.RoleTree {
func (svc *RoleService) treeMaker(ctx context.Context, models []*models.SysRole, pid uint64) []*dto.RoleTree {
items := []*dto.RoleTree{}
for _, model := range models {
if model.ParentID == pid {
@@ -66,7 +58,7 @@ func (svc *roleService) treeMaker(ctx context.Context, models []*models.SysRole,
return items
}
func (svc *roleService) Tree(ctx context.Context) ([]*dto.RoleTree, error) {
func (svc *RoleService) Tree(ctx context.Context) ([]*dto.RoleTree, error) {
models, err := svc.dao.All(ctx)
if err != nil {
return nil, err
@@ -75,7 +67,7 @@ func (svc *roleService) Tree(ctx context.Context) ([]*dto.RoleTree, error) {
return svc.treeMaker(ctx, models, 0), nil
}
func (svc *roleService) Create(ctx context.Context, req dto.RoleRequestForm) (*models.SysRole, error) {
func (svc *RoleService) Create(ctx context.Context, req dto.RoleRequestForm) (*models.SysRole, error) {
model := models.SysRole{
UUID: svc.uuid.MustGenerate(),
Name: req.Name,
@@ -84,7 +76,7 @@ func (svc *roleService) Create(ctx context.Context, req dto.RoleRequestForm) (*m
}
return svc.dao.Create(ctx, &model)
}
func (svc *roleService) UpdateByID(ctx context.Context, id uint64, req dto.RoleRequestForm) (*models.SysRole, error) {
func (svc *RoleService) UpdateByID(ctx context.Context, id uint64, req dto.RoleRequestForm) (*models.SysRole, error) {
model, err := svc.dao.FindByID(ctx, id)
if err != nil {
return nil, err
@@ -97,6 +89,6 @@ func (svc *roleService) UpdateByID(ctx context.Context, id uint64, req dto.RoleR
return svc.dao.UpdateByID(ctx, model)
}
func (svc *roleService) DeleteByID(ctx context.Context, id uint64) error {
func (svc *RoleService) DeleteByID(ctx context.Context, id uint64) error {
return svc.dao.DeleteByID(ctx, id)
}

View File

@@ -8,13 +8,7 @@ import (
"context"
)
type UserService interface {
AttachRole(context.Context, int, int) error
AuthMatchPassword(context.Context, *dto.LoginRequestForm) (*models.User, error)
GenerateJWTTokenFromUser(context.Context, *models.User) (string, error)
}
type userService struct {
type UserService struct {
userRoleDao dao.UserRoleDao
userDao dao.UserDao
jwt *jwt.JWT
@@ -24,28 +18,28 @@ func NewUserService(
userRoleDao dao.UserRoleDao,
userDao dao.UserDao,
jwt *jwt.JWT,
) UserService {
return &userService{
) *UserService {
return &UserService{
userRoleDao: userRoleDao,
userDao: userDao,
jwt: jwt,
}
}
func (svc *userService) AttachRole(ctx context.Context, userID, roleID int) error {
func (svc *UserService) AttachRole(ctx context.Context, userID, roleID int) error {
if svc.userRoleDao.Exists(ctx, userID) {
return svc.userRoleDao.Update(ctx, userID, roleID)
}
return svc.userRoleDao.Create(ctx, userID, roleID)
}
func (svc *userService) DetachRole(ctx context.Context, userID, roleID int) error {
func (svc *UserService) DetachRole(ctx context.Context, userID, roleID int) error {
if !svc.userRoleDao.Exists(ctx, userID) {
return nil
}
return svc.userRoleDao.Delete(ctx, userID, roleID)
}
func (svc *userService) AuthMatchPassword(ctx context.Context, req *dto.LoginRequestForm) (*models.User, error) {
func (svc *UserService) AuthMatchPassword(ctx context.Context, req *dto.LoginRequestForm) (*models.User, error) {
return &models.User{
ID: 10,
UUID: "1",
@@ -57,7 +51,7 @@ func (svc *userService) AuthMatchPassword(ctx context.Context, req *dto.LoginReq
}, nil
}
func (svc *userService) GenerateJWTTokenFromUser(ctx context.Context, user *models.User) (string, error) {
func (svc *UserService) GenerateJWTTokenFromUser(ctx context.Context, user *models.User) (string, error) {
return svc.jwt.CreateToken(svc.jwt.CreateClaims(jwt.BaseClaims{
UID: user.ID,
Role: user.RoleID,