You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

139 lines
2.7 KiB

package manage_user
import (
"recook/internal/back"
"recook/internal/dbc"
"recook/internal/model/manage"
"recook/tools"
"github.com/gin-gonic/gin"
"github.com/golangkit/formatime"
)
type RoleInfo struct {
Name string `json:"name"`
ID uint `json:"id"`
Authority []Authority `json:"authority"`
}
type roleEdit struct {
ID uint `json:"id"`
Old string `json:"old"`
New string `json:"new"`
}
type Authority struct {
ID int64 `json:"id"`
Name string `json:"name"`
Code string `json:"code"`
PrintID int64 `json:"print_id"`
}
func RoleAdd(c *gin.Context) {
var p RoleInfo
err := tools.Params(&p, c)
if err != nil {
back.Fail(c, err.Error())
return
}
if len(p.Authority) == 0 {
back.Fail(c, "请配置权限")
return
}
code := ""
for key, info := range p.Authority {
if key == 0 {
code += info.Code
} else {
code += "," + info.Code
}
}
tx := dbc.DB.Begin()
var userId = c.MustGet("Manager_ID").(uint)
var user manage.UserInfo
user.ID = userId
if err = dbc.DB.Find(&user).Error; err != nil {
back.Fail(c, "数据错误:"+err.Error())
return
}
{
info := &manage.Role{
Name: p.Name,
UserID: user.ID,
UserName: user.Name,
Code: code,
}
if err = tx.Create(info).Error; err != nil {
back.Fail(c, err.Error())
return
}
}
tx.Commit()
back.Suc(c, "操作成功", p)
return
}
func RoleUpdate(c *gin.Context) {
var p RoleInfo
err := tools.Params(&p, c)
if err != nil {
back.Fail(c, err.Error())
return
}
code := ""
for key, info := range p.Authority {
if key == 0 {
code += info.Code
} else {
code += "," + info.Code
}
}
tx := dbc.DB.Begin()
var userId = c.MustGet("Manager_ID").(uint)
var user manage.UserInfo
user.ID = userId
if err = dbc.DB.Find(&user).Error; err != nil {
back.Fail(c, "数据错误:"+err.Error())
return
}
{
info := &manage.Role{
Name: p.Name,
UserID: user.ID,
UserName: user.Name,
UpdatedAt: formatime.NewSecondNow(),
}
if len(p.Authority) > 0 {
info.Code = code
}
if err = tx.Table("recook_manage_role").Where("id = ?", p.ID).Update(info).Error; err != nil {
back.Fail(c, err.Error())
return
}
}
tx.Commit()
back.Suc(c, "操作成功", p)
return
}
func RoleEdit(c *gin.Context) {
var p roleEdit
err := tools.Params(&p, c)
if err != nil {
back.Fail(c, err.Error())
return
}
var user manage.UserInfo
if err := dbc.DB.First(&user, "id = ? and password = ?", p.ID, tools.MD5(p.Old)).Error; err != nil {
back.Fail(c, "原密码错误,请重新尝试")
return
}
dbc.DB.Model(&user).Updates(manage.UserInfo{Password: tools.MD5(p.New)})
back.Suc(c, "操作成功", p)
return
}