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
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
|
|
}
|