印度包网
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.

214 lines
4.6 KiB

1 year ago
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 {
2 months ago
//if *req.Role == values.UserRoleAdmin {
// a.Code = values.CodeParam
// a.Msg = "不可修改为超级管理员"
// return
//}
1 year ago
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))
}