fix: 审核通过后允许切换已认证角色
This commit is contained in:
@@ -8,6 +8,8 @@ import (
|
|||||||
|
|
||||||
"juwan-backend/app/user_verifications/rpc/internal/svc"
|
"juwan-backend/app/user_verifications/rpc/internal/svc"
|
||||||
"juwan-backend/app/user_verifications/rpc/pb"
|
"juwan-backend/app/user_verifications/rpc/pb"
|
||||||
|
userspb "juwan-backend/app/users/rpc/pb"
|
||||||
|
"slices"
|
||||||
|
|
||||||
"github.com/zeromicro/go-zero/core/logx"
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
)
|
)
|
||||||
@@ -41,7 +43,7 @@ func (l *UpdateUserVerificationsLogic) UpdateUserVerifications(in *pb.UpdateUser
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err := l.svcCtx.UserVeriModelRW.UpdateOneID(in.Id).
|
uv, err := l.svcCtx.UserVeriModelRW.UpdateOneID(in.Id).
|
||||||
SetNillableRejectReason(in.RejectReason).
|
SetNillableRejectReason(in.RejectReason).
|
||||||
SetNillableMaterials(materials).
|
SetNillableMaterials(materials).
|
||||||
SetNillableRole(in.Role).
|
SetNillableRole(in.Role).
|
||||||
@@ -53,5 +55,26 @@ func (l *UpdateUserVerificationsLogic) UpdateUserVerifications(in *pb.UpdateUser
|
|||||||
return nil, errors.New("save user verifications failed")
|
return nil, errors.New("save user verifications failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if in.Status != nil && *in.Status == "approved" && uv.Role != "" {
|
||||||
|
userResp, err := l.svcCtx.UserRpc.GetUsersById(l.ctx, &userspb.GetUsersByIdReq{Id: uv.UserID})
|
||||||
|
if err != nil {
|
||||||
|
logx.Errorf("get user by id failed when syncing verified roles, err:%v.", err)
|
||||||
|
return nil, errors.New("sync verified roles failed")
|
||||||
|
}
|
||||||
|
|
||||||
|
verifiedRoles := append([]string{}, userResp.Users.VerifiedRoles...)
|
||||||
|
if !slices.Contains(verifiedRoles, uv.Role) {
|
||||||
|
verifiedRoles = append(verifiedRoles, uv.Role)
|
||||||
|
_, err = l.svcCtx.UserRpc.UpdateUsers(l.ctx, &userspb.UpdateUsersReq{
|
||||||
|
Id: uv.UserID,
|
||||||
|
VerifiedRoles: verifiedRoles,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
logx.Errorf("update user verified roles failed, err:%v.", err)
|
||||||
|
return nil, errors.New("sync verified roles failed")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return &pb.UpdateUserVerificationsResp{}, nil
|
return &pb.UpdateUserVerificationsResp{}, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import (
|
|||||||
"juwan-backend/app/users/api/internal/types"
|
"juwan-backend/app/users/api/internal/types"
|
||||||
|
|
||||||
"github.com/zeromicro/go-zero/core/logx"
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
"google.golang.org/protobuf/proto"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type SwitchRoleLogic struct {
|
type SwitchRoleLogic struct {
|
||||||
@@ -37,9 +36,9 @@ func (l *SwitchRoleLogic) SwitchRole(req *types.SwitchRoleReq) (resp *types.Empt
|
|||||||
logx.Errorf("get user id from context: %v", err)
|
logx.Errorf("get user id from context: %v", err)
|
||||||
return nil, errors.New("illegal id")
|
return nil, errors.New("illegal id")
|
||||||
}
|
}
|
||||||
_, err = l.svcCtx.UserRpc.UpdateUsers(l.ctx, &usercenter.UpdateUsersReq{
|
_, err = l.svcCtx.UserRpc.SwitchRole(l.ctx, &usercenter.SwitchRoleReq{
|
||||||
Id: id,
|
UserId: id,
|
||||||
CurrentRole: proto.String(req.Role),
|
NewRole: req.Role,
|
||||||
})
|
})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -31,12 +31,7 @@ func (l *UpdateUsersLogic) UpdateUsers(in *pb.UpdateUsersReq) (*pb.UpdateUsersRe
|
|||||||
SetNillableCurrentRole(in.CurrentRole).
|
SetNillableCurrentRole(in.CurrentRole).
|
||||||
SetNillablePasswordHash(in.PasswordHash)
|
SetNillablePasswordHash(in.PasswordHash)
|
||||||
if len(in.VerifiedRoles) > 0 {
|
if len(in.VerifiedRoles) > 0 {
|
||||||
var verifiedRoles types.TextArray
|
verifiedRoles := types.TextArray{Elements: append([]string{}, in.VerifiedRoles...), Valid: true}
|
||||||
err := verifiedRoles.Scan(in.VerifiedRoles)
|
|
||||||
if err != nil {
|
|
||||||
logx.Errorf("failed to scan verified roles: %v", err)
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
updater.SetVerifiedRoles(verifiedRoles)
|
updater.SetVerifiedRoles(verifiedRoles)
|
||||||
}
|
}
|
||||||
err := updater.Exec(l.ctx)
|
err := updater.Exec(l.ctx)
|
||||||
|
|||||||
Reference in New Issue
Block a user