第一版完成
This commit is contained in:
121
internal/dao/role_methods.go
Normal file
121
internal/dao/role_methods.go
Normal file
@@ -0,0 +1,121 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"context"
|
||||
"cms-api/internal/model"
|
||||
)
|
||||
|
||||
// GetById 根据ID获取角色
|
||||
func (dao *RoleDao) GetById(ctx context.Context, id int) (*model.Role, error) {
|
||||
var role *model.Role
|
||||
err := dao.Ctx(ctx).Where(dao.Columns().Id, id).Scan(&role)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return role, nil
|
||||
}
|
||||
|
||||
// List 获取角色列表
|
||||
func (dao *RoleDao) List(ctx context.Context, req *model.RoleListRequest) ([]*model.Role, int, error) {
|
||||
var (
|
||||
roles []*model.Role
|
||||
total int
|
||||
db = dao.Ctx(ctx)
|
||||
)
|
||||
|
||||
// 添加查询条件
|
||||
if req.Status >= 0 {
|
||||
db = db.Where(dao.Columns().Status, req.Status)
|
||||
}
|
||||
if req.Keyword != "" {
|
||||
db = db.Where(dao.Columns().Name+" LIKE ? OR "+dao.Columns().Description+" LIKE ?", "%"+req.Keyword+"%", "%"+req.Keyword+"%")
|
||||
}
|
||||
|
||||
// 获取总数
|
||||
count, err := db.Count()
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
total = count
|
||||
|
||||
// 分页查询
|
||||
offset := (req.Page - 1) * req.PageSize
|
||||
err = db.Order(dao.Columns().CreatedAt + " DESC").
|
||||
Limit(req.PageSize).
|
||||
Offset(offset).
|
||||
Scan(&roles)
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
return roles, total, nil
|
||||
}
|
||||
|
||||
// GetAll 获取所有角色
|
||||
func (dao *RoleDao) GetAll(ctx context.Context) ([]*model.Role, error) {
|
||||
var roles []*model.Role
|
||||
err := dao.Ctx(ctx).Where(dao.Columns().Status, 1).Order(dao.Columns().CreatedAt + " ASC").Scan(&roles)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return roles, nil
|
||||
}
|
||||
|
||||
// GetByName 根据名称获取角色
|
||||
func (dao *RoleDao) GetByName(ctx context.Context, name string) (*model.Role, error) {
|
||||
var role *model.Role
|
||||
err := dao.Ctx(ctx).Where(dao.Columns().Name, name).Scan(&role)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return role, nil
|
||||
}
|
||||
|
||||
// Create 创建角色
|
||||
func (dao *RoleDao) Create(ctx context.Context, role *model.Role) (int64, error) {
|
||||
result, err := dao.Ctx(ctx).Data(role).Insert()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
id, err := result.LastInsertId()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return id, nil
|
||||
}
|
||||
|
||||
// Update 更新角色
|
||||
func (dao *RoleDao) Update(ctx context.Context, id int, data interface{}) error {
|
||||
_, err := dao.Ctx(ctx).Where(dao.Columns().Id, id).Data(data).Update()
|
||||
return err
|
||||
}
|
||||
|
||||
// Delete 删除角色
|
||||
func (dao *RoleDao) Delete(ctx context.Context, id int) error {
|
||||
_, err := dao.Ctx(ctx).Where(dao.Columns().Id, id).Delete()
|
||||
return err
|
||||
}
|
||||
|
||||
// UpdateStatus 更新角色状态
|
||||
func (dao *RoleDao) UpdateStatus(ctx context.Context, id int, status int) error {
|
||||
_, err := dao.Ctx(ctx).Where(dao.Columns().Id, id).Data(map[string]interface{}{
|
||||
dao.Columns().Status: status,
|
||||
}).Update()
|
||||
return err
|
||||
}
|
||||
|
||||
// CheckPermission 检查权限
|
||||
func (dao *RoleDao) CheckPermission(ctx context.Context, roleId int, permission string) (bool, error) {
|
||||
var role *model.Role
|
||||
err := dao.Ctx(ctx).Where(dao.Columns().Id, roleId).Scan(&role)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
if role == nil {
|
||||
return false, nil
|
||||
}
|
||||
|
||||
// 这里应该实现权限检查逻辑
|
||||
// 暂时返回true,实际项目中需要根据role.Permissions字段进行权限验证
|
||||
return true, nil
|
||||
}
|
||||
Reference in New Issue
Block a user