package handler import ( "fmt" "server/modules/backend/app" "server/modules/backend/bdb" "server/modules/backend/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 user.Power == *req.Power { // a.Code = values.CodeParam // a.Msg = "无内容修改" // return // } 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)) }