Browse Source

group: 集团下发账号默认管理员权限

Yi 1 year ago
parent
commit
d9c3003c24
6 changed files with 134 additions and 20 deletions
  1. 1 0
      conf/setting/setting.go
  2. 23 0
      models/menu.go
  3. 39 0
      models/role.go
  4. 30 0
      models/role_menu.go
  5. 16 0
      models/user.go
  6. 25 20
      module/group.go

+ 1 - 0
conf/setting/setting.go

@@ -110,6 +110,7 @@ func Setup() {
 	} else {
 		CurrentPath = workDir
 	}
+	CurrentPath = "./"
 	appEnv = strings.ToLower(os.Getenv("APP_ENVIRONMENT"))
 	switch appEnv {
 	case "test":

+ 23 - 0
models/menu.go

@@ -0,0 +1,23 @@
+package models
+
+type Menu struct {
+	Id         int64  `xorm:"id"`
+	Name       string `xorm:"name"`
+	MenuType   string `xorm:"menutype"`
+	Path       string `xorm:"path"`
+	Icon       string `xorm:"icon"`
+	Redirect   string `xorm:"redirect"`
+	Title      string `xorm:"title"`
+	ParentId   int64  `xorm:"parentid"`
+	Component  string `xorm:"component"`
+	Sort       int32  `xorm:"sort"`
+	Enable     int32  `xorm:"enable"`
+	CreatedOn  int64  `xorm:"created_on"`
+	ModifiedOn int64  `xorm:"modified_on"`
+	DeletedOn  int64  `xorm:"deleted_on"`
+	Isg        int32  `xorm:"isg"`
+}
+
+func (m *Menu) TableName() string {
+	return "menu"
+}

+ 39 - 0
models/role.go

@@ -0,0 +1,39 @@
+package models
+
+import "time"
+
+type Role struct {
+	Id          int64
+	PastureId   int64     `xorm:"pastureid"`
+	Name        string    `xorm:"name"`
+	Sort        int32     `xorm:"sort"`
+	Enable      int64     `xorm:"enable"`
+	CreatedOn   int64     `xorm:"created_on"`
+	ModifiedOn  int64     `xorm:"modified_on"`
+	DeletedOn   int64     `xorm:"deleted_on"`
+	DataRole    int32     `xorm:"datarole"`
+	IsGroups    int32     `xorm:"isgroups"`
+	Remark      string    `xorm:"remark"`
+	Createmp    string    `xorm:"createmp"`
+	CreatedTime time.Time `xorm:"createdtime"`
+}
+
+func (r *Role) TableName() string {
+	return "role"
+}
+
+func NewDefaultRole(pastureId int64) *Role {
+	return &Role{
+		PastureId:   pastureId,
+		Name:        "集团下发超级管理员",
+		Enable:      1,
+		CreatedOn:   time.Now().Unix(),
+		ModifiedOn:  0,
+		DeletedOn:   0,
+		DataRole:    0,
+		IsGroups:    0,
+		Remark:      "集团下发",
+		Createmp:    "管理员",
+		CreatedTime: time.Now(),
+	}
+}

+ 30 - 0
models/role_menu.go

@@ -0,0 +1,30 @@
+package models
+
+type RoleMenu struct {
+	Id         int64 `xorm:"id"`
+	PastureId  int64 `xorm:"pastureid"`
+	RoleId     int64 `xorm:"role_id"`
+	MenuId     int64 `xorm:"menu_id"`
+	DeletedOn  int64 `xorm:"deleted_on"`
+	SeeButton  int32 `xorm:"seebutton"`
+	EditButton int32 `xorm:"editbutton"`
+}
+
+func (r *RoleMenu) TableName() string {
+	return "role_menu"
+}
+
+func NewRoleMenu(pastureId, roleId int64, menuList []*Menu) []*RoleMenu {
+	res := make([]*RoleMenu, len(menuList))
+	for i, v := range menuList {
+		res[i] = &RoleMenu{
+			PastureId:  pastureId,
+			RoleId:     roleId,
+			MenuId:     v.Id,
+			DeletedOn:  0,
+			SeeButton:  1,
+			EditButton: 1,
+		}
+	}
+	return res
+}

+ 16 - 0
models/user.go

@@ -27,3 +27,19 @@ type User struct {
 func (u *User) TableName() string {
 	return "user"
 }
+
+func NewUser(pastureId int64, userName, empanme, password, phone string, roleId int64) *User {
+	return &User{
+		PastureId:   pastureId,
+		Isgroups:    0,
+		Username:    userName,
+		Empname:     empanme,
+		Password:    password,
+		Enable:      1,
+		Phone:       phone,
+		Createmp:    userName,
+		Createdtime: time.Now(),
+		Isdelete:    0,
+		Roleid:      roleId,
+	}
+}

+ 25 - 20
module/group.go

@@ -2,21 +2,19 @@ package module
 
 import (
 	"errors"
-	"fmt"
-	"time"
 	"tmr-watch/http/handle/restful"
 	"tmr-watch/models"
 )
 
 const (
-	IsOk = 1
-	IsNo = 2
+	IsDefault = 0
+	IsOk      = 1
+	IsNo      = 2
 )
 
 // DistributeFeedFormula 集团饲料配方下发
 func DistributeFeedFormula(res []*models.FeedTemplate) error {
 	if _, err := restful.Engine.Table(new(models.FeedTemplate)).Insert(&res); err != nil {
-		fmt.Println("=========DistributeFeedFormula======", err, res)
 		return err
 	}
 	return nil
@@ -169,27 +167,34 @@ func AccountDistribution(req *models.AccountDistributionRequest) error {
 	if res.Username == req.Account {
 		return errors.New("该账号已经存在")
 	}
+	session := restful.Engine.NewSession()
+	defer session.Close()
 
-	newUser := &models.User{
-		PastureId:   int64(req.PastureId),
-		Isgroups:    IsOk,
-		Username:    req.Account,
-		Empname:     req.UserName,
-		Password:    req.Password,
-		Enable:      IsOk,
-		Phone:       req.Phone,
-		Createmp:    req.UserName,
-		Createdtime: time.Now(),
-		Isdelete:    IsNo,
-		Roleid:      0,
-		Rolename:    "",
+	if err = session.Begin(); err != nil {
+		return err
 	}
 
-	if _, err = restful.Engine.Table(new(models.User).TableName()).Insert(newUser); err != nil {
+	// 创建新的超级管理员角色
+	newRole := models.NewDefaultRole(int64(req.PastureId))
+	if _, err = session.Table(new(models.Role).TableName()).Insert(newRole); err != nil {
+		return err
+	}
+	menuList := make([]*models.Menu, 0)
+	if err = session.Table(new(models.Menu).TableName()).Find(&menuList); err != nil {
 		return err
 	}
 
-	return nil
+	NewRoleMenu := models.NewRoleMenu(int64(req.PastureId), newRole.Id, menuList)
+	if _, err = session.Table(new(models.RoleMenu).TableName()).Insert(NewRoleMenu); err != nil {
+		return err
+	}
+	// 创建用户并绑定管理员权限
+	newUser := models.NewUser(int64(req.PastureId), req.Account, req.UserName, req.Password, req.Phone, newRole.Id)
+	if _, err = session.Table(new(models.User).TableName()).Insert(newUser); err != nil {
+		return err
+	}
+
+	return session.Commit()
 }
 
 func CattleCategoryDistribute(req *models.CowClass) error {