// Code scaffolded by goctl. Safe to edit. // goctl 1.9.2 package verification_user import ( "context" "encoding/json" "errors" "juwan-backend/app/user_verifications/rpc/pb" "juwan-backend/app/users/api/internal/svc" "juwan-backend/app/users/api/internal/types" "juwan-backend/common/utils/contextx" "github.com/zeromicro/go-zero/core/logx" ) type ApplyVerificationLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } // 提交或修改角色认证申请 (支持幂等更新) func NewApplyVerificationLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ApplyVerificationLogic { return &ApplyVerificationLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *ApplyVerificationLogic) ApplyVerification(req *types.ApplyVerificationReq) (resp *types.VerificationEmptyResp, err error) { userId, err := contextx.UserIDFrom(l.ctx) if err != nil { logx.Errorf("get user id from context: %v", err) return nil, contextx.ERRILLEGALUSER } verifications, err := l.svcCtx.UserVerificationsRpc.SearchUserVerifications(l.ctx, &pb.SearchUserVerificationsReq{ UserId: userId, }) if err != nil { logx.Errorf("search user verifications: %v", err) return nil, errors.New("search user verifications failed") } materials, err := json.Marshal(req.Materials) if err != nil { logx.Errorf("marshal materials: %v", err) return nil, err } if verifications == nil || len(verifications.UserVerifications) == 0 { // 如果没有则增加 _, err = l.svcCtx.UserVerificationsRpc.AddUserVerifications(l.ctx, &pb.AddUserVerificationsReq{ Role: req.Role, Materials: string(materials), }) if err != nil { logx.Errorf("add user verifications: %v", err) return nil, errors.New("add user verifications failed") } } else { } return &types.VerificationEmptyResp{}, nil }