新增指定用户查询接口 & 接口权限细分
This commit is contained in:
@@ -15,7 +15,7 @@ var Admin = &adminService{}
|
||||
|
||||
type adminService struct{}
|
||||
|
||||
func (s *adminService) PageAdmins(req core.PageReq) (result []*m.Admin, count int64, err error) {
|
||||
func (s *adminService) Page(req core.PageReq) (result []*m.Admin, count int64, err error) {
|
||||
return q.Admin.
|
||||
Preload(q.Admin.Roles).
|
||||
Omit(q.Admin.Password).
|
||||
@@ -30,25 +30,14 @@ func (s *adminService) All() (result []*m.Admin, err error) {
|
||||
Find()
|
||||
}
|
||||
|
||||
type CreateAdmin struct {
|
||||
Username string `json:"username" validate:"required,min=3,max=50"`
|
||||
Password string `json:"password" validate:"required,min=6,max=50"`
|
||||
Name *string `json:"name"`
|
||||
Avatar *string `json:"avatar"`
|
||||
Phone *string `json:"phone"`
|
||||
Email *string `json:"email"`
|
||||
Status *m.AdminStatus `json:"status"`
|
||||
Roles []int32 `json:"roles"`
|
||||
}
|
||||
|
||||
func (s *adminService) CreateAdmin(create *CreateAdmin) error {
|
||||
func (s *adminService) Create(create *CreateAdmin) error {
|
||||
// 哈希密码
|
||||
hash, err := bcrypt.GenerateFromPassword([]byte(create.Password), bcrypt.DefaultCost)
|
||||
if err != nil {
|
||||
return core.NewServErr("密码加密失败", err)
|
||||
}
|
||||
|
||||
return q.Q.Transaction(func(tx *q.Query) error {
|
||||
return q.Q.Transaction(func(q *q.Query) error {
|
||||
// 创建管理员
|
||||
admin := &m.Admin{
|
||||
Username: create.Username,
|
||||
@@ -59,7 +48,7 @@ func (s *adminService) CreateAdmin(create *CreateAdmin) error {
|
||||
Email: create.Email,
|
||||
Status: u.Else(create.Status, m.AdminStatusEnabled),
|
||||
}
|
||||
if err := tx.Admin.Create(admin); err != nil {
|
||||
if err := q.Admin.Create(admin); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -72,7 +61,7 @@ func (s *adminService) CreateAdmin(create *CreateAdmin) error {
|
||||
RoleID: roleID,
|
||||
}
|
||||
}
|
||||
if err := tx.LinkAdminRole.CreateInBatches(links, 1000); err != nil {
|
||||
if err := q.LinkAdminRole.CreateInBatches(links, 1000); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@@ -81,18 +70,18 @@ func (s *adminService) CreateAdmin(create *CreateAdmin) error {
|
||||
})
|
||||
}
|
||||
|
||||
type UpdateAdmin struct {
|
||||
Id int32 `json:"id" validate:"required"`
|
||||
Password *string `json:"password"`
|
||||
type CreateAdmin struct {
|
||||
Username string `json:"username" validate:"required,min=3,max=50"`
|
||||
Password string `json:"password" validate:"required,min=6,max=50"`
|
||||
Name *string `json:"name"`
|
||||
Avatar *string `json:"avatar"`
|
||||
Phone *string `json:"phone"`
|
||||
Email *string `json:"email"`
|
||||
Status *m.AdminStatus `json:"status"`
|
||||
Roles *[]int32 `json:"roles"`
|
||||
Roles []int32 `json:"roles"`
|
||||
}
|
||||
|
||||
func (s *adminService) UpdateAdmin(update *UpdateAdmin) error {
|
||||
func (s *adminService) Update(update *UpdateAdmin) error {
|
||||
simples := make([]field.AssignExpr, 0)
|
||||
|
||||
if update.Password != nil {
|
||||
@@ -118,11 +107,14 @@ func (s *adminService) UpdateAdmin(update *UpdateAdmin) error {
|
||||
simples = append(simples, q.Admin.Status.Value(int(*update.Status)))
|
||||
}
|
||||
|
||||
return q.Q.Transaction(func(tx *q.Query) error {
|
||||
return q.Q.Transaction(func(q *q.Query) error {
|
||||
// 更新管理员基本信息
|
||||
if len(simples) > 0 {
|
||||
_, err := tx.Admin.
|
||||
Where(tx.Admin.ID.Eq(update.Id), tx.Admin.Username.Neq("admin")).
|
||||
_, err := q.Admin.
|
||||
Where(
|
||||
q.Admin.ID.Eq(update.Id),
|
||||
q.Admin.Lock.Is(false),
|
||||
).
|
||||
UpdateSimple(simples...)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -132,7 +124,7 @@ func (s *adminService) UpdateAdmin(update *UpdateAdmin) error {
|
||||
// 更新角色关联
|
||||
if update.Roles != nil {
|
||||
roles := *update.Roles
|
||||
if _, err := tx.LinkAdminRole.Where(tx.LinkAdminRole.AdminID.Eq(update.Id)).Delete(); err != nil {
|
||||
if _, err := q.LinkAdminRole.Where(q.LinkAdminRole.AdminID.Eq(update.Id)).Delete(); err != nil {
|
||||
return err
|
||||
}
|
||||
if len(roles) > 0 {
|
||||
@@ -143,7 +135,7 @@ func (s *adminService) UpdateAdmin(update *UpdateAdmin) error {
|
||||
RoleID: roleID,
|
||||
}
|
||||
}
|
||||
if err := tx.LinkAdminRole.CreateInBatches(links, 1000); err != nil {
|
||||
if err := q.LinkAdminRole.CreateInBatches(links, 1000); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@@ -153,7 +145,23 @@ func (s *adminService) UpdateAdmin(update *UpdateAdmin) error {
|
||||
})
|
||||
}
|
||||
|
||||
func (s *adminService) RemoveAdmin(id int32) error {
|
||||
_, err := q.Admin.Where(q.Admin.ID.Eq(id), q.Admin.Username.Neq("admin")).UpdateColumn(q.Admin.DeletedAt, time.Now())
|
||||
type UpdateAdmin struct {
|
||||
Id int32 `json:"id" validate:"required"`
|
||||
Password *string `json:"password"`
|
||||
Name *string `json:"name"`
|
||||
Avatar *string `json:"avatar"`
|
||||
Phone *string `json:"phone"`
|
||||
Email *string `json:"email"`
|
||||
Status *m.AdminStatus `json:"status"`
|
||||
Roles *[]int32 `json:"roles"`
|
||||
}
|
||||
|
||||
func (s *adminService) Remove(id int32) error {
|
||||
_, err := q.Admin.
|
||||
Where(
|
||||
q.Admin.ID.Eq(id),
|
||||
q.Admin.Lock.Is(false),
|
||||
).
|
||||
UpdateColumn(q.Admin.DeletedAt, time.Now())
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -118,7 +118,6 @@ func (s *userService) CreateByAdmin(data CreateUserByAdminData) error {
|
||||
Email: data.Email,
|
||||
Password: hashedPwd,
|
||||
Source: &source,
|
||||
Name: data.Name,
|
||||
Avatar: data.Avatar,
|
||||
Status: u.Else(data.Status, m.UserStatusEnabled),
|
||||
ContactQQ: data.ContactQQ,
|
||||
@@ -141,7 +140,6 @@ type CreateUserByAdminData struct {
|
||||
Username *string `json:"username"`
|
||||
Email *string `json:"email"`
|
||||
Password *string `json:"password"`
|
||||
Name *string `json:"name"`
|
||||
Avatar *string `json:"avatar"`
|
||||
Status *m.UserStatus `json:"status"`
|
||||
ContactQQ *string `json:"contact_qq"`
|
||||
|
||||
Reference in New Issue
Block a user