fix: 同步原生账号启停与商务审核状态
This commit is contained in:
@@ -52,7 +52,9 @@ type UserRepo interface {
|
||||
ListUsers(context.Context, int, int, *UserListFilter) ([]*User, int64, error)
|
||||
CreateUserWithAuthorities(context.Context, *User, []uint) (*User, error)
|
||||
UpdateUser(context.Context, *User) error
|
||||
UpdateUserWithStatus(context.Context, *User, func(int) (int, error)) error
|
||||
UpdateSelfUser(context.Context, *User) error
|
||||
UpdateSelfUserWithStatus(context.Context, *User, func(int) (int, error)) error
|
||||
DeleteUser(context.Context, uint) error
|
||||
UpdatePassword(context.Context, uint, string, bool) error
|
||||
SetUserAuthorities(context.Context, uint, []uint) error
|
||||
@@ -108,6 +110,10 @@ func (uc *UserUsecase) ListUsers(ctx context.Context, page, pageSize int, filter
|
||||
return uc.repo.ListUsers(ctx, page, pageSize, filter)
|
||||
}
|
||||
func (uc *UserUsecase) CreateUser(ctx context.Context, user *User, authorityIDs []uint) (*User, error) {
|
||||
if user.Enable == 0 {
|
||||
user.Enable = 1
|
||||
}
|
||||
user.BusinessStatus = businessStatusForEnable(0, user.Enable)
|
||||
hash, err := bcrypt.GenerateFromPassword([]byte(user.Password), bcrypt.DefaultCost)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -125,10 +131,32 @@ func (uc *UserUsecase) UpdateUser(ctx context.Context, user *User, authorityIDs
|
||||
return err
|
||||
}
|
||||
}
|
||||
return uc.repo.UpdateUser(ctx, user)
|
||||
return uc.repo.UpdateUserWithStatus(ctx, user, func(current int) (int, error) {
|
||||
return businessStatusForEnable(current, user.Enable), nil
|
||||
})
|
||||
}
|
||||
|
||||
// 启用代表恢复正常;未启用时保留待审核/驳回,避免编辑资料丢失业务审核状态。
|
||||
func businessStatusForEnable(current, enable int) int {
|
||||
if enable == 1 {
|
||||
return 0
|
||||
}
|
||||
if current == 2 || current == 3 {
|
||||
return current
|
||||
}
|
||||
return 1
|
||||
}
|
||||
|
||||
func (uc *UserUsecase) UpdateSelfUser(ctx context.Context, user *User) error {
|
||||
if user.Enable != 0 {
|
||||
return uc.repo.UpdateSelfUserWithStatus(ctx, user, func(current int) (int, error) {
|
||||
// 个人资料请求不能越过管理员刚写入的停用或审核状态。
|
||||
if current != 0 {
|
||||
return current, ErrUserDisabled
|
||||
}
|
||||
return businessStatusForEnable(current, user.Enable), nil
|
||||
})
|
||||
}
|
||||
return uc.repo.UpdateSelfUser(ctx, user)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user