caipin %!s(int64=4) %!d(string=hai) anos
pai
achega
d0b239fc54

+ 17 - 0
dao/group_dao.go

@@ -27,6 +27,23 @@ func (d *GroupDao) Add(data *models.CmGroup) error {
 	return err
 }
 
+//更新
+func (d *GroupDao) Update(data *models.CmGroup, columns []string) error {
+	_, err := d.engine.Id(data.Id).Cols(columns...).Update(data)
+	return err
+}
+
+func (d *GroupDao) Get(id int) *models.CmGroup {
+	data := &models.CmGroup{Id: id}
+	ok, err := d.engine.Get(data)
+	if ok && err == nil {
+		return data
+	} else {
+		data.Id = 0
+		return data
+	}
+}
+
 //获得全部管理员数据
 func (d *GroupDao) GetAll() (data []models.CmGroup, total int64) {
 

+ 1 - 0
models/cm_manager.go

@@ -16,6 +16,7 @@ type CmManager struct {
 	Password   string    `xorm:"not null comment('密码') VARCHAR(32)"`
 	LastLogin  time.Time `xorm:"comment('最后一次登录时间') DATETIME"`
 	GroupId    int       `xorm:"default 0 comment('用户组ID') INT(11)"`
+	IsAdmin    int       `xorm:"default 0 comment('管理ID') TINYINT(1)"`
 	RealName   string    `xorm:"comment('真实姓名') VARCHAR(10)"`
 	Telephone  string    `xorm:"comment('联系电话(CLD字段)') VARCHAR(11)"`
 	LoginIp    string    `xorm:"comment('登录ip') VARCHAR(12)"`

+ 29 - 8
services/group_service.go

@@ -7,6 +7,7 @@
 package services
 
 import (
+	"encoding/json"
 	"fmt"
 	"strconv"
 	"time"
@@ -23,6 +24,7 @@ import (
 type GroupService interface {
 	GetAll() (dataList []viewmodels.Group, total int64)
 	Add(dataVM viewmodels.Group) error
+	Update(dataVM viewmodels.Group, id int) error
 }
 
 //返回service操作类
@@ -52,16 +54,35 @@ func (s *groupService) GetAll() (data []viewmodels.Group, total int64) {
 }
 
 func (s *groupService) Add(dataVM viewmodels.Group) error {
-	project := &models.CmGroup{}
-	project.Name = dataVM.Name
-	// project.Permission = dataVM.Permission
-	project.Remark = dataVM.Remark
-	project.CreateTime = time.Now()
+	data := &models.CmGroup{}
+	persission, err := json.Marshal(dataVM.Permission)
+	if err != nil {
+		return err
+	}
+
+	data.Permission = string(persission)
+	data.Name = dataVM.Name
+
+	data.Remark = dataVM.Remark
+	data.CreateTime = time.Now()
 
-	fmt.Println(dataVM.Permission)
+	return s.dao.Add(data)
+}
 
-	// err := s.dao.Add(project)
-	// return err
+func (s *groupService) Update(dataVM viewmodels.Group, id int) error {
+	updateData := models.CmGroup{}
+	updateData.Id = id
+	updateData.Name = dataVM.Name
+	persission, err := json.Marshal(dataVM.Permission)
+	if err != nil {
+		return err
+	}
+	updateData.Permission = string(persission)
+	// 要填写字段名称必须要更新的字段
+	if err := s.dao.Update(&updateData, []string{"name", "persission"}); err != nil {
+		fmt.Println(err)
+		return err
+	}
 	return nil
 }
 

+ 26 - 6
services/manager_service.go

@@ -7,6 +7,7 @@
 package services
 
 import (
+	"errors"
 	"fmt"
 	"strconv"
 
@@ -23,7 +24,7 @@ type ManagerService interface {
 	GetAll() (dataList []viewmodels.Manager, total int64)
 	CountAll() int64
 	Get(id int) *viewmodels.Manager
-	Update(data *models.CmManager, columns []string) error
+	Update(id int, groupId int) error
 	Create(data *models.CmManager) error
 	Enable(id int, canLogin int) error
 }
@@ -65,6 +66,27 @@ func (s *managerService) Get(id int) *viewmodels.Manager {
 	return &data
 }
 
+func (s *managerService) Update(id int, groupId int) error {
+
+	// 1.查询是否有该权限组
+	groupDao := dao.NewGroupDao(datasource.InstanceDbMaster())
+	groupData := groupDao.Get(groupId)
+	if groupData.Id == 0 {
+		return errors.New("未找到管理组")
+	}
+
+	updateData := models.CmManager{}
+	updateData.Id = id
+	updateData.GroupId = groupId
+
+	// 要填写字段名称必须要更新的字段
+	if err := s.dao.Update(&updateData, []string{"group_id"}); err != nil {
+		fmt.Println(err)
+		return err
+	}
+	return nil
+}
+
 func (s *managerService) Enable(id int, canLogin int) error {
 	Manager := models.CmManager{}
 	Manager.Id = id
@@ -77,9 +99,6 @@ func (s *managerService) Enable(id int, canLogin int) error {
 	return nil
 }
 
-func (s *managerService) Update(data *models.CmManager, columns []string) error {
-	return s.dao.Update(data, columns)
-}
 func (s *managerService) Create(data *models.CmManager) error {
 	return s.dao.Create(data)
 }
@@ -88,12 +107,13 @@ func (s *managerService) Create(data *models.CmManager) error {
 func makeManagerVM(projectCM *models.CmManager) viewmodels.Manager {
 	modelsVM := viewmodels.Manager{}
 	id, _ := comm.AesEncrypt(strconv.Itoa(projectCM.Id), conf.SignSecret)
-	// userId, _ := comm.AesEncrypt(strconv.Itoa(projectCM.UserId), conf.SignSecret)
+	groupId, _ := comm.AesEncrypt(strconv.Itoa(projectCM.GroupId), conf.SignSecret)
 
 	modelsVM.Id = id
 	modelsVM.Username = projectCM.Username
 	modelsVM.Category = projectCM.Category
-	modelsVM.GroupId = projectCM.GroupId
+	modelsVM.GroupId = groupId
+	modelsVM.IsAdmin = projectCM.IsAdmin
 	modelsVM.RealName = projectCM.RealName
 	modelsVM.Telephone = projectCM.Telephone
 	modelsVM.LoginIp = projectCM.LoginIp

+ 30 - 0
web/backstage/group_bs.go

@@ -9,6 +9,7 @@ package backstage
 import (
 	"github.com/kataras/iris/v12"
 	"go.mod/services"
+	"go.mod/web/utils"
 	"go.mod/web/viewmodels"
 )
 
@@ -55,3 +56,32 @@ func (c *GroupBs) PostAdd() {
 
 	c.Ctx.JSON(iris.Map{"code": 0, "msg": "新增成功"})
 }
+
+// 新增管理员组
+func (c *GroupBs) PostUpdate() {
+	// 1.获得数据
+	data := viewmodels.Group{}
+	if err := c.Ctx.ReadJSON(&data); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
+		return
+	}
+
+	// 2.验证数据
+	if err := data.ValidateAdd(); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
+		return
+	}
+
+	id, err := utils.GetDecryptId(data.Id)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
+		return
+	}
+
+	if err := c.GroupService.Update(data, id); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
+		return
+	}
+
+	c.Ctx.JSON(iris.Map{"code": 0, "msg": "编辑成功"})
+}

+ 34 - 0
web/backstage/manager_bs.go

@@ -84,6 +84,40 @@ func (c *ManagerBs) Get() {
 	})
 }
 
+// 更新后台成员信息
+func (c *ManagerBs) PostUpdate() {
+	// 1.获得数据
+	data := viewmodels.Manager{}
+	if err := c.Ctx.ReadJSON(&data); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
+		return
+	}
+
+	// 2.验证数据
+	if err := data.ValidateUpdate(); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
+		return
+	}
+
+	id, err := utils.GetDecryptId(data.Id)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
+		return
+	}
+	groupId, err := utils.GetDecryptId(data.GroupId)
+	if err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
+		return
+	}
+
+	if err := c.ServiceManager.Update(id, groupId); err != nil {
+		c.Ctx.JSON(iris.Map{"code": -1, "msg": err})
+		return
+	}
+
+	c.Ctx.JSON(iris.Map{"code": 0, "msg": "编辑成功"})
+}
+
 // @Summary 账号启用/禁用
 // @Tags 项目设置-管理员
 // @Description 账号启用/禁用

+ 11 - 0
web/viewmodels/group.go

@@ -8,6 +8,10 @@ package viewmodels
 
 import validation "github.com/go-ozzo/ozzo-validation/v3"
 
+// type Permission2 struct {
+// 	name map[string]interface{}
+// }
+
 type Group struct {
 	Id         string   `form:"id" json:"id" `
 	Name       string   `form:"name" json:"name" `
@@ -22,3 +26,10 @@ func (l Group) ValidateAdd() error {
 		validation.Field(&l.Name, validation.Required.Error("名称不能为空")),
 	)
 }
+
+func (l Group) ValidateUpdate() error {
+	return validation.ValidateStruct(&l,
+		validation.Field(&l.Name, validation.Required.Error("名称不能为空")),
+		validation.Field(&l.Id, validation.Required.Error("ID不能为空")),
+	)
+}

+ 9 - 1
web/viewmodels/manager.go

@@ -12,7 +12,8 @@ type Manager struct {
 	Id        string `form:"id" json:"id" `
 	Username  string `form:"username" json:"username" `
 	LastLogin string `form:"lastLogin" json:"lastLogin" `
-	GroupId   int    `form:"groupId" json:"groupId" `
+	GroupId   string `form:"groupId" json:"groupId" `
+	IsAdmin   int    `form:"isAdmin" json:"isAdmin" `
 	RealName  string `form:"realName" json:"realName" `
 	Telephone string `form:"telephone" json:"telephone" `
 	LoginIp   string `form:"loginIp" json:"loginIp" `
@@ -43,3 +44,10 @@ func (l Manager) ValidateEnable() error {
 		validation.Field(&l.CanLogin, validation.In(0, 1).Error("未找到相关请求类型")),
 	)
 }
+
+func (l Manager) ValidateUpdate() error {
+	return validation.ValidateStruct(&l,
+		validation.Field(&l.Id, validation.Required.Error("ID不能为空")),
+		validation.Field(&l.GroupId, validation.Required.Error("管理组ID不能为空")),
+	)
+}