From fa56f72c3bfcdc125914ed05a8d55531c8e6ad60 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 13 Jun 2023 17:33:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B7=BB=E5=8A=A0=E8=A7=92?= =?UTF-8?q?=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/dao/adminRoleMenu.go | 9 +++++++++ api/model/adminRole.go | 12 ------------ api/model/model.go | 30 +++++++++++++++++------------- api/service/role.go | 33 +++++++++++++++++++++++---------- 4 files changed, 49 insertions(+), 35 deletions(-) diff --git a/api/dao/adminRoleMenu.go b/api/dao/adminRoleMenu.go index 34cdfdc..31c21ee 100644 --- a/api/dao/adminRoleMenu.go +++ b/api/dao/adminRoleMenu.go @@ -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 +} diff --git a/api/model/adminRole.go b/api/model/adminRole.go index 4051fac..06f7b64 100644 --- a/api/model/adminRole.go +++ b/api/model/adminRole.go @@ -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 -// } diff --git a/api/model/model.go b/api/model/model.go index fde4b41..ef1201f 100644 --- a/api/model/model.go +++ b/api/model/model.go @@ -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) diff --git a/api/service/role.go b/api/service/role.go index a9fe09f..290bf26 100644 --- a/api/service/role.go +++ b/api/service/role.go @@ -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 }