新增添加角色

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
import (
"gorm.io/gorm"
"hospital-admin-api/api/model"
"hospital-admin-api/global"
)
@ -39,3 +40,11 @@ func (r *AdminRoleMenuDao) GetAdminRoleMenuIdByRoleId(roleId int64) (m []int64,
}
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 {
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"
"errors"
"fmt"
"github.com/bwmarrin/snowflake"
"gorm.io/gorm"
"hospital-admin-api/config"
"reflect"
"strings"
"time"
)
@ -88,27 +91,28 @@ func (m *Model) BeforeUpdate(tx *gorm.DB) (err error) {
// BeforeCreate 注册 BeforeCreate 回调函数
func (m *Model) BeforeCreate(tx *gorm.DB) (err error) {
IdName := ""
// 动态添加表主键
primaryName := ""
field := tx.Statement.Schema.Fields
for _, v := range field {
if v.PrimaryKey {
IdName = v.Name
primaryName = v.Name
}
}
if IdName == "" {
return errors.New("主键错误")
if primaryName != "" {
// 动态访问 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())
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()
// defer func() {
// if r := recover(); r != nil {
// tx.Rollback()
// }
// }()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
}
}()
// 新增角色
AdminRoleModel := &model.AdminRole{
RoleId: 10,
RoleName: AddRoleRequest.RoleName,
IsAdmin: AddRoleRequest.IsAdmin,
}
adminRole, err = AdminRoleDao.AddAdminRole(tx, AdminRoleModel)
if err != nil || adminRole == nil {
adminRole, _ = AdminRoleDao.AddAdminRole(tx, AdminRoleModel)
if adminRole == nil {
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()
// 新增角色菜单
return true, nil
}