package cms import ( "fmt" "time" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" ) func GetMenu(ctx *jxcontext.Context, userID string) (menus []*model.Menu, err error) { return dao.GetMenu(dao.GetDB(), "", 0, userID) } func AddMenu(ctx *jxcontext.Context, menu *model.Menu) (err error) { var ( db = dao.GetDB() ) if menu == nil { return fmt.Errorf("添加失败!menu nil") } if menu.Name == "" || menu.Level == 0 { return fmt.Errorf("添加失败!menu 名称和等级必须有值!") } menus, err := dao.GetMenu(db, menu.Name, menu.Level, "") if len(menus) > 0 { return fmt.Errorf("添加失败!已存在相同名称的 menu name : %v", menu.Name) } dao.Begin(db) defer func() { if r := recover(); r != nil { dao.Rollback(db) panic(r) } }() dao.WrapAddIDCULDEntity(menu, ctx.GetUserName()) err = dao.CreateEntity(db, menu) dao.Commit(db) return err } func UpdateMenu(ctx *jxcontext.Context, menuID int, payload map[string]interface{}, isDelete bool) (num int64, err error) { var ( db = dao.GetDB() ) menu := &model.Menu{} menu.ID = menuID err = dao.GetEntity(db, menu) if err != nil { return 0, err } dao.Begin(db) defer func() { if r := recover(); r != nil { dao.Rollback(db) panic(r) } }() if !isDelete { valid := dao.StrictMakeMapByStructObject(payload, menu, ctx.GetUserName()) if len(valid) > 0 { if num, err = dao.UpdateEntityLogically(db, menu, valid, ctx.GetUserName(), nil); err != nil { dao.Rollback(db) return 0, err } } } else { menu.DeletedAt = time.Now() num, err = dao.UpdateEntity(db, menu, "DeletedAt") } dao.Commit(db) return num, err } func GetRole(ctx *jxcontext.Context) (roles []*model.Role, err error) { return dao.GetRole(dao.GetDB(), "") } func AddRole(ctx *jxcontext.Context, name string) (err error) { var ( db = dao.GetDB() ) roles, err := dao.GetRole(db, name) if len(roles) > 0 { return fmt.Errorf("添加失败!已存在相同名称的 role name : %v", name) } role := &model.Role{ Name: name, } dao.Begin(db) defer func() { if r := recover(); r != nil { dao.Rollback(db) panic(r) } }() dao.WrapAddIDCULDEntity(role, ctx.GetUserName()) err = dao.CreateEntity(db, role) dao.Commit(db) return err } func UpdateRole(ctx *jxcontext.Context, roleID int, name string, isDelete bool) (num int64, err error) { var ( db = dao.GetDB() ) if roleID == 1 { return 0, fmt.Errorf("管理员不允许修改!") } role := &model.Role{} role.ID = roleID err = dao.GetEntity(db, role) if err != nil { return 0, err } dao.Begin(db) defer func() { if r := recover(); r != nil { dao.Rollback(db) panic(r) } }() if !isDelete { role.Name = name role.UpdatedAt = time.Now() role.LastOperator = ctx.GetUserName() num, err = dao.UpdateEntity(db, role, "Name", "UpdatedAt", "LastOperator") } else { role.DeletedAt = time.Now() num, err = dao.UpdateEntity(db, role, "DeletedAt") } dao.Commit(db) return num, err } func GetUserRole(ctx *jxcontext.Context, userID string) (userRoles []*model.UserRole, err error) { return dao.GetUserRole(dao.GetDB(), userID) } func UpdateUserRole(ctx *jxcontext.Context, userIDs []string, roleIDs []int) (err error) { var ( db = dao.GetDB() userRoleMap = make(map[string][]int) ) userRoles, err := dao.GetUserRole(db, "") if err != nil { return err } if len(userRoles) > 0 { for _, v := range userRoles { userRoleMap[v.UserID] = append(userRoleMap[v.UserID], v.RoleID) } } fmt.Println("teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", utils.Format4Output(userRoleMap, false)) return err }