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.
97 lines
3.6 KiB
97 lines
3.6 KiB
package api
|
|
|
|
import (
|
|
"yunyan/comm"
|
|
"yunyan/lego/sys/log"
|
|
"yunyan/pb"
|
|
)
|
|
|
|
// normalizeAdminScope 按身份规整权限字段:
|
|
// - 超管/管理员:全部权限、不受工厂/产品限制,access/factoryids/productids 一律置空
|
|
// - 运营/代理:按前端勾选保留 access/factoryids/productids
|
|
func normalizeAdminScope(identity pb.Identity, access, factoryids, productids string) (string, string, string) {
|
|
if identity == pb.Identity_Admin || identity == pb.Identity_Manager {
|
|
return "", "", ""
|
|
}
|
|
return access, factoryids, productids
|
|
}
|
|
|
|
// 添加管理员账号
|
|
func (this *apiComp) AddAdminUser(session comm.IUserSession, req *pb.ApiAddAdminUserReq) (resp *pb.ApiAddAdminUserResp, errdata *pb.ErrorData) {
|
|
if req.Account == "" || req.Password == "" {
|
|
errdata = &pb.ErrorData{Code: pb.ErrorCode_ReqParameterError, Message: "account and password required"}
|
|
return
|
|
}
|
|
// 管理员不受工厂/产品白名单限制,强制清空
|
|
access, factoryids, productids := normalizeAdminScope(req.Identity, req.Access, req.Factoryids, req.Productids)
|
|
user := &pb.DBAdminUser{
|
|
Account: req.Account,
|
|
Password: req.Password,
|
|
Identity: req.Identity,
|
|
Access: access,
|
|
Factoryids: factoryids,
|
|
Productids: productids,
|
|
}
|
|
if err := this.module.model.addAdminUser(user); err != nil {
|
|
errdata = &pb.ErrorData{Code: pb.ErrorCode_DBError, Message: err.Error()}
|
|
this.module.Error("AddAdminUser", log.Field{Key: "err", Value: err.Error()})
|
|
return
|
|
}
|
|
resp = &pb.ApiAddAdminUserResp{}
|
|
return
|
|
}
|
|
|
|
// 删除管理员账号
|
|
func (this *apiComp) DelAdminUser(session comm.IUserSession, req *pb.ApiDelAdminUserReq) (resp *pb.ApiDelAdminUserResp, errdata *pb.ErrorData) {
|
|
if req.Account == "" {
|
|
errdata = &pb.ErrorData{Code: pb.ErrorCode_ReqParameterError, Message: "account required"}
|
|
return
|
|
}
|
|
if err := this.module.model.delAdminUser(req.Account); err != nil {
|
|
errdata = &pb.ErrorData{Code: pb.ErrorCode_DBError, Message: err.Error()}
|
|
this.module.Error("DelAdminUser", log.Field{Key: "err", Value: err.Error()})
|
|
return
|
|
}
|
|
resp = &pb.ApiDelAdminUserResp{}
|
|
return
|
|
}
|
|
|
|
// 修改管理员账号
|
|
func (this *apiComp) UpdateAdminUser(session comm.IUserSession, req *pb.ApiUpdateAdminUserReq) (resp *pb.ApiUpdateAdminUserResp, errdata *pb.ErrorData) {
|
|
if req.Account == "" {
|
|
errdata = &pb.ErrorData{Code: pb.ErrorCode_ReqParameterError, Message: "account required"}
|
|
return
|
|
}
|
|
user, err := this.module.model.findforaccount(req.Account)
|
|
if err != nil {
|
|
errdata = &pb.ErrorData{Code: pb.ErrorCode_UserSessionNobeing, Message: err.Error()}
|
|
return
|
|
}
|
|
if req.Password != "" {
|
|
user.Password = req.Password
|
|
}
|
|
if req.Identity != pb.Identity_Identity_Null {
|
|
user.Identity = req.Identity
|
|
}
|
|
// 管理员不受工厂/产品白名单限制,强制清空;运营/代理按本次提交覆盖
|
|
user.Access, user.Factoryids, user.Productids = normalizeAdminScope(user.Identity, req.Access, req.Factoryids, req.Productids)
|
|
if err = this.module.model.updateAdminUser(user); err != nil {
|
|
errdata = &pb.ErrorData{Code: pb.ErrorCode_DBError, Message: err.Error()}
|
|
this.module.Error("UpdateAdminUser", log.Field{Key: "err", Value: err.Error()})
|
|
return
|
|
}
|
|
resp = &pb.ApiUpdateAdminUserResp{}
|
|
return
|
|
}
|
|
|
|
// 查询管理员账号列表
|
|
func (this *apiComp) GetAdminUsers(session comm.IUserSession, req *pb.ApiGetAdminUsersReq) (resp *pb.ApiGetAdminUsersResp, errdata *pb.ErrorData) {
|
|
users, err := this.module.model.getAdminUsers()
|
|
if err != nil {
|
|
errdata = &pb.ErrorData{Code: pb.ErrorCode_DBError, Message: err.Error()}
|
|
this.module.Error("GetAdminUsers", log.Field{Key: "err", Value: err.Error()})
|
|
return
|
|
}
|
|
resp = &pb.ApiGetAdminUsersResp{Users: users}
|
|
return
|
|
}
|
|
|