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.
208 lines
4.5 KiB
208 lines
4.5 KiB
package handler |
|
|
|
import ( |
|
"fmt" |
|
"server/modules/customer/app" |
|
"server/modules/customer/bdb" |
|
"server/modules/customer/values" |
|
|
|
"github.com/gin-gonic/gin" |
|
"github.com/liangdas/mqant/log" |
|
) |
|
|
|
func UserList(c *gin.Context) { |
|
a := app.NewApp(c) |
|
defer func() { |
|
a.Response() |
|
}() |
|
resp := values.UserListResp{} |
|
if err := bdb.BackDB.C().Find(&resp.List).Error; err != nil { |
|
log.Error("err:%v", err) |
|
a.Code = values.CodeRetry |
|
return |
|
} |
|
a.Data = resp |
|
} |
|
|
|
func AddUser(c *gin.Context) { |
|
a := app.NewApp(c) |
|
defer func() { |
|
a.Response() |
|
}() |
|
req := new(values.AddUserReq) |
|
if !a.S(req) { |
|
return |
|
} |
|
log.Debug("adduser:%+v", req) |
|
if req.Role == values.UserRoleAdmin { |
|
a.Code = values.CodeParam |
|
a.Msg = "不可添加超级管理员" |
|
return |
|
} |
|
var roles []*values.Role |
|
bdb.BackDB.C().Find(&roles) |
|
var r *values.Role |
|
for _, v := range roles { |
|
if req.Role == v.Role { |
|
r = v |
|
} |
|
} |
|
if r == nil { |
|
log.Error("invalid role:%v", req.Role) |
|
a.Code = values.CodeParam |
|
a.Msg = "请求角色不存在" |
|
return |
|
} |
|
one := &values.User{Name: req.Name, Account: req.Account, Password: req.Password, Role: req.Role, Power: r.Power, Phone: req.Phone, Channels: req.Channels} |
|
if err := bdb.BackDB.Create(one); err != nil { |
|
log.Error("err:%v", err) |
|
a.Code = values.CodeParam |
|
a.Msg = err.Error() |
|
return |
|
} |
|
a.RecordEdit(values.PowerManageUser, fmt.Sprintf("新增用户:%v", req.Name)) |
|
} |
|
|
|
func EditUserPower(c *gin.Context) { |
|
a := app.NewApp(c) |
|
defer func() { |
|
a.Response() |
|
}() |
|
req := new(values.EditPowerReq) |
|
if !a.S(req) { |
|
return |
|
} |
|
log.Debug("edit power:%+v", req) |
|
user := new(values.User) |
|
user.ID = uint(req.ID) |
|
if err := bdb.BackDB.Get(user); err != nil { |
|
log.Error("err:%v", err) |
|
a.Code = values.CodeParam |
|
a.Msg = "账户不存在" |
|
return |
|
} |
|
if user.Role == values.UserRoleAdmin { |
|
a.Code = values.CodeParam |
|
a.Msg = "不可修改超级管理员" |
|
return |
|
} |
|
update := map[string]interface{}{} |
|
if req.Power != nil { |
|
if !a.CheckPower(*req.Power) { |
|
return |
|
} |
|
update["power"] = *req.Power |
|
} |
|
if req.Name != nil { |
|
update["name"] = *req.Name |
|
} |
|
if req.Account != nil { |
|
update["account"] = *req.Account |
|
} |
|
if req.Password != nil { |
|
update["password"] = *req.Password |
|
} |
|
if req.Role != nil { |
|
if *req.Role == values.UserRoleAdmin { |
|
a.Code = values.CodeParam |
|
a.Msg = "不可修改为超级管理员" |
|
return |
|
} |
|
update["role"] = *req.Role |
|
} |
|
if req.Phone != nil { |
|
update["phone"] = *req.Phone |
|
} |
|
if req.Channels != nil { |
|
update["channels"] = *req.Channels |
|
} |
|
if len(update) == 0 { |
|
a.Code = values.CodeParam |
|
a.Msg = "无内容修改" |
|
return |
|
} |
|
if err := bdb.BackDB.Update(&values.User{ID: uint(req.ID)}, update); err != nil { |
|
log.Error("err:%v", err) |
|
a.Code = values.CodeRetry |
|
return |
|
} |
|
a.RecordEdit(values.PowerManageUser, fmt.Sprintf("修改用户权限:%v", req.ID)) |
|
} |
|
|
|
func DelUser(c *gin.Context) { |
|
a := app.NewApp(c) |
|
defer func() { |
|
a.Response() |
|
}() |
|
req := new(values.DelUserReq) |
|
if !a.S(req) { |
|
return |
|
} |
|
user := new(values.User) |
|
user.ID = uint(req.ID) |
|
if err := bdb.BackDB.C().Delete(user).Where("id = ?", req.ID).Error; err != nil { |
|
log.Error("err:%v", err) |
|
a.Code = values.CodeRetry |
|
return |
|
} |
|
} |
|
|
|
func RoleList(c *gin.Context) { |
|
a := app.NewApp(c) |
|
defer func() { |
|
a.Response() |
|
}() |
|
resp := values.RoleListResp{} |
|
if err := bdb.BackDB.C().Find(&resp.List).Error; err != nil { |
|
log.Error("err:%v", err) |
|
a.Code = values.CodeRetry |
|
return |
|
} |
|
a.Data = resp |
|
} |
|
|
|
func AddRole(c *gin.Context) { |
|
a := app.NewApp(c) |
|
defer func() { |
|
a.Response() |
|
}() |
|
req := new(values.AddRoleReq) |
|
if !a.S(req) { |
|
return |
|
} |
|
if !a.CheckPower(req.Power) { |
|
return |
|
} |
|
one := &values.Role{Role: req.Role, Name: req.Name, Power: req.Power} |
|
if err := bdb.BackDB.Create(one); err != nil { |
|
log.Error("err:%v", err) |
|
a.Code = values.CodeRetry |
|
return |
|
} |
|
a.RecordEdit(values.PowerManageRole, fmt.Sprintf("新增角色:%v", req.Name)) |
|
} |
|
|
|
func EditRole(c *gin.Context) { |
|
a := app.NewApp(c) |
|
defer func() { |
|
a.Response() |
|
}() |
|
req := new(values.EditRoleReq) |
|
if !a.S(req) { |
|
return |
|
} |
|
if !a.CheckPower(req.Power) { |
|
return |
|
} |
|
one := &values.Role{Role: req.Role, Name: req.Name, Power: req.Power} |
|
if err := bdb.BackDB.Update(&values.Role{ID: uint(req.ID)}, one); err != nil { |
|
log.Error("err:%v", err) |
|
a.Code = values.CodeRetry |
|
return |
|
} |
|
err := bdb.BackDB.Update(&values.User{Role: req.Role}, map[string]interface{}{"power": req.Power}) |
|
if err != nil { |
|
log.Error(err.Error()) |
|
} |
|
a.RecordEdit(values.PowerManageRole, fmt.Sprintf("修改角色:%v", req.ID)) |
|
}
|
|
|