新增添加角色

This commit is contained in:
wucongxing 2023-06-13 17:33:04 +08:00
parent 71f682d99a
commit fa56f72c3b
4 changed files with 49 additions and 35 deletions

View File

@ -1,6 +1,7 @@
package dao package dao
import ( import (
"gorm.io/gorm"
"hospital-admin-api/api/model" "hospital-admin-api/api/model"
"hospital-admin-api/global" "hospital-admin-api/global"
) )
@ -39,3 +40,11 @@ func (r *AdminRoleMenuDao) GetAdminRoleMenuIdByRoleId(roleId int64) (m []int64,
} }
return m, nil return m, nil
} }
// AddAdminRoleMenu 新增角色菜单
func (r *AdminRoleMenuDao) AddAdminRoleMenu(tx *gorm.DB, model *model.AdminRoleMenu) (*model.AdminRoleMenu, error) {
if err := tx.Create(model).Error; err != nil {
return nil, err
}
return model, nil
}

View File

@ -12,15 +12,3 @@ type AdminRole struct {
func (m *AdminRole) TableName() string { func (m *AdminRole) TableName() string {
return "gdxz_admin_role" return "gdxz_admin_role"
} }
// func (a *AdminRole) BeforeCreate(tx *gorm.DB) (err error) {
// node, err := snowflake.NewNode(config.C.Snowflake)
// if err != nil {
// return err
// }
// tx.Statement.SetColumn("RoleId", node.Generate().Int64())
//
// a.Model.CreatedAt = LocalTime(time.Now())
// tx.Statement.SetColumn("CreatedAt", a.Model.CreatedAt)
// return
// }

View File

@ -4,7 +4,10 @@ import (
"database/sql/driver" "database/sql/driver"
"errors" "errors"
"fmt" "fmt"
"github.com/bwmarrin/snowflake"
"gorm.io/gorm" "gorm.io/gorm"
"hospital-admin-api/config"
"reflect"
"strings" "strings"
"time" "time"
) )
@ -88,27 +91,28 @@ func (m *Model) BeforeUpdate(tx *gorm.DB) (err error) {
// BeforeCreate 注册 BeforeCreate 回调函数 // BeforeCreate 注册 BeforeCreate 回调函数
func (m *Model) BeforeCreate(tx *gorm.DB) (err error) { func (m *Model) BeforeCreate(tx *gorm.DB) (err error) {
IdName := "" // 动态添加表主键
primaryName := ""
field := tx.Statement.Schema.Fields field := tx.Statement.Schema.Fields
for _, v := range field { for _, v := range field {
if v.PrimaryKey { if v.PrimaryKey {
IdName = v.Name primaryName = v.Name
} }
} }
if IdName == "" { if primaryName != "" {
return errors.New("主键错误") // 动态访问 YourModel 结构体本身
model := tx.Statement.Dest
primaryValue := reflect.ValueOf(model).Elem().FieldByName(primaryName)
if primaryValue.IsZero() {
node, err := snowflake.NewNode(config.C.Snowflake)
if err != nil {
return errors.New("服务器错误")
}
tx.Statement.SetColumn(primaryName, node.Generate().Int64())
}
} }
// 动态访问 YourModel 结构体本身
model := tx.Statement.Dest
// primaryField := reflect.ValueOf(model).Elem().FieldByName(IdName)
//
// if primaryField.CanSet() {
// primaryField.SetColumn(reflect.ValueOf(parsedTime))
// }
fmt.Println(model)
m.CreatedAt = LocalTime(time.Now()) m.CreatedAt = LocalTime(time.Now())
tx.Statement.SetColumn("CreatedAt", m.CreatedAt) tx.Statement.SetColumn("CreatedAt", m.CreatedAt)

View File

@ -162,27 +162,40 @@ func (r *RoleService) AddRole(c *gin.Context, AddRoleRequest requests.AddRole) (
// 开始事务 // 开始事务
tx := global.Db.Begin() tx := global.Db.Begin()
// defer func() { defer func() {
// if r := recover(); r != nil { if r := recover(); r != nil {
// tx.Rollback() tx.Rollback()
// } }
// }() }()
// 新增角色 // 新增角色
AdminRoleModel := &model.AdminRole{ AdminRoleModel := &model.AdminRole{
RoleId: 10,
RoleName: AddRoleRequest.RoleName, RoleName: AddRoleRequest.RoleName,
IsAdmin: AddRoleRequest.IsAdmin, IsAdmin: AddRoleRequest.IsAdmin,
} }
adminRole, err = AdminRoleDao.AddAdminRole(tx, AdminRoleModel) adminRole, _ = AdminRoleDao.AddAdminRole(tx, AdminRoleModel)
if err != nil || adminRole == nil { if adminRole == nil {
tx.Rollback() tx.Rollback()
return false, errors.New("非法操作") return false, errors.New("新增失败")
}
// 新增角色菜单
AdminRoleMenuDao := dao.AdminRoleMenuDao{}
for _, menuId := range AddRoleRequest.MenuIds {
AdminRoleMenuModel := &model.AdminRoleMenu{
RoleID: adminRole.RoleId,
MenuID: menuId,
}
adminRoleMenu, _ := AdminRoleMenuDao.AddAdminRoleMenu(tx, AdminRoleMenuModel)
if adminRoleMenu == nil {
tx.Rollback()
return false, errors.New("新增失败")
}
} }
tx.Commit() tx.Commit()
// 新增角色菜单
return true, nil return true, nil
} }