优化代码/实现基础的实名认证功能

This commit is contained in:
刘祥超
2022-07-24 09:56:27 +08:00
parent fe511ae7e5
commit c2600b911b
89 changed files with 353 additions and 249 deletions

View File

@@ -43,6 +43,8 @@ func (this *FileService) FindEnabledFile(ctx context.Context, req *pb.FindEnable
Size: int64(file.Size),
CreatedAt: int64(file.CreatedAt),
IsPublic: file.IsPublic,
MimeType: file.MimeType,
Type: file.Type,
},
}, nil
}
@@ -56,7 +58,7 @@ func (this *FileService) CreateFile(ctx context.Context, req *pb.CreateFileReque
var tx = this.NullTx()
fileId, err := models.SharedFileDAO.CreateFile(tx, adminId, userId, "ipLibrary", "", req.Filename, req.Size, req.IsPublic)
fileId, err := models.SharedFileDAO.CreateFile(tx, adminId, userId, req.Type, "", req.Filename, req.Size, req.MimeType, req.IsPublic)
if err != nil {
return nil, err
}

View File

@@ -15,13 +15,21 @@ type FileChunkService struct {
// CreateFileChunk 创建文件片段
func (this *FileChunkService) CreateFileChunk(ctx context.Context, req *pb.CreateFileChunkRequest) (*pb.CreateFileChunkResponse, error) {
// 校验请求
_, err := this.ValidateAdmin(ctx)
_, userId, err := this.ValidateAdminAndUser(ctx)
if err != nil {
return nil, err
}
var tx = this.NullTx()
// 检查权限
if userId > 0 {
err = models.SharedFileDAO.CheckUserFile(tx, userId, req.FileId)
if err != nil {
return nil, err
}
}
chunkId, err := models.SharedFileChunkDAO.CreateFileChunk(tx, req.FileId, req.Data)
if err != nil {
return nil, err
@@ -37,10 +45,11 @@ func (this *FileChunkService) FindAllFileChunkIds(ctx context.Context, req *pb.F
return nil, err
}
// TODO 校验用户
var tx = this.NullTx()
// 校验用户
// TODO
chunkIds, err := models.SharedFileChunkDAO.FindAllFileChunkIds(tx, req.FileId)
if err != nil {
return nil, err

View File

@@ -27,12 +27,16 @@ func (this *UserIdentityService) CreateUserIdentity(ctx context.Context, req *pb
if len(req.FileIds) < 2 {
return nil, errors.New("need for file(s) for id card")
}
case userconfigs.UserIdentityTypeEnterpriseLicense:
if len(req.FileIds) != 1 {
return nil, errors.New("need for file(s) for license")
}
default:
return nil, errors.New("unknown identity type '" + req.Type + "'")
}
var tx = this.NullTx()
identityId, err := models.SharedUserIdentityDAO.CreateUserIdentity(tx, userId, req.Type, req.RealName, req.Number, req.FileIds)
identityId, err := models.SharedUserIdentityDAO.CreateUserIdentity(tx, userId, req.OrgType, req.Type, req.RealName, req.Number, req.FileIds)
if err != nil {
return nil, err
}
@@ -40,8 +44,51 @@ func (this *UserIdentityService) CreateUserIdentity(ctx context.Context, req *pb
return &pb.CreateUserIdentityResponse{UserIdentityId: identityId}, nil
}
// FindUserEnabledUserIdentityWithType 查看身份认证信息
func (this *UserIdentityService) FindUserEnabledUserIdentityWithType(ctx context.Context, req *pb.FindUserEnabledUserIdentityWithTypeRequest) (*pb.FindUserEnabledUserIdentityWithTypeResponse, error) {
// FindEnabledUserIdentity 查找单个身份认证信息
func (this *UserIdentityService) FindEnabledUserIdentity(ctx context.Context, req *pb.FindEnabledUserIdentityRequest) (*pb.FindEnabledUserIdentityResponse, error) {
_, userId, err := this.ValidateAdminAndUser(ctx)
if err != nil {
return nil, err
}
var tx = this.NullTx()
if userId > 0 {
err = models.SharedUserIdentityDAO.CheckUserIdentity(tx, userId, req.UserIdentityId)
if err != nil {
return nil, err
}
}
identity, err := models.SharedUserIdentityDAO.FindEnabledUserIdentity(tx, req.UserIdentityId)
if err != nil {
return nil, err
}
if identity == nil {
return &pb.FindEnabledUserIdentityResponse{
UserIdentity: nil,
}, nil
}
return &pb.FindEnabledUserIdentityResponse{
UserIdentity: &pb.UserIdentity{
Id: int64(identity.Id),
Type: identity.Type,
RealName: identity.RealName,
Number: identity.Number,
FileIds: identity.DecodeFileIds(),
Status: identity.Status,
CreatedAt: int64(identity.CreatedAt),
UpdatedAt: int64(identity.UpdatedAt),
SubmittedAt: int64(identity.SubmittedAt),
RejectedAt: int64(identity.RejectedAt),
VerifiedAt: int64(identity.VerifiedAt),
RejectedReason: identity.RejectedReason,
},
}, nil
}
// FindEnabledUserIdentityWithOrgType 查看最新的身份认证信息
func (this *UserIdentityService) FindEnabledUserIdentityWithOrgType(ctx context.Context, req *pb.FindEnabledUserIdentityWithOrgTypeRequest) (*pb.FindEnabledUserIdentityWithOrgTypeResponse, error) {
_, userId, err := this.ValidateAdminAndUser(ctx)
if err != nil {
return nil, err
@@ -52,29 +99,30 @@ func (this *UserIdentityService) FindUserEnabledUserIdentityWithType(ctx context
}
var tx = this.NullTx()
identity, err := models.SharedUserIdentityDAO.FindEnabledUserIdentityWithType(tx, req.UserId, req.Type)
identity, err := models.SharedUserIdentityDAO.FindEnabledUserIdentityWithOrgType(tx, req.UserId, req.OrgType)
if err != nil {
return nil, err
}
if identity == nil {
return &pb.FindUserEnabledUserIdentityWithTypeResponse{
return &pb.FindEnabledUserIdentityWithOrgTypeResponse{
UserIdentity: nil,
}, nil
}
return &pb.FindUserEnabledUserIdentityWithTypeResponse{
return &pb.FindEnabledUserIdentityWithOrgTypeResponse{
UserIdentity: &pb.UserIdentity{
Id: int64(identity.Id),
Type: identity.Type,
RealName: identity.RealName,
Number: identity.Number,
FileIds: identity.DecodeFileIds(),
Status: identity.Status,
CreatedAt: int64(identity.CreatedAt),
UpdatedAt: int64(identity.UpdatedAt),
SubmittedAt: int64(identity.SubmittedAt),
RejectedAt: int64(identity.RejectedAt),
VerifiedAt: int64(identity.VerifiedAt),
Id: int64(identity.Id),
Type: identity.Type,
RealName: identity.RealName,
Number: identity.Number,
FileIds: identity.DecodeFileIds(),
Status: identity.Status,
CreatedAt: int64(identity.CreatedAt),
UpdatedAt: int64(identity.UpdatedAt),
SubmittedAt: int64(identity.SubmittedAt),
RejectedAt: int64(identity.RejectedAt),
VerifiedAt: int64(identity.VerifiedAt),
RejectedReason: identity.RejectedReason,
},
}, nil
}
@@ -88,6 +136,23 @@ func (this *UserIdentityService) UpdateUserIdentity(ctx context.Context, req *pb
var tx = this.NullTx()
if len(req.RealName) > 100 {
return nil, errors.New("realName too long")
}
switch req.Type {
case userconfigs.UserIdentityTypeIDCard:
if len(req.FileIds) < 2 {
return nil, errors.New("need for file(s) for id card")
}
case userconfigs.UserIdentityTypeEnterpriseLicense:
if len(req.FileIds) != 1 {
return nil, errors.New("need for file(s) for license")
}
default:
return nil, errors.New("unknown identity type '" + req.Type + "'")
}
// 检查用户
err = models.SharedUserIdentityDAO.CheckUserIdentity(tx, userId, req.UserIdentityId)
if err != nil {
@@ -99,7 +164,7 @@ func (this *UserIdentityService) UpdateUserIdentity(ctx context.Context, req *pb
if err != nil {
return nil, err
}
if len(status) > 0 && status != userconfigs.UserIdentityStatusNone {
if len(status) > 0 && (status != userconfigs.UserIdentityStatusNone && status != userconfigs.UserIdentityStatusRejected) {
return nil, errors.New("identity status should be '" + userconfigs.UserIdentityStatusNone + "' instead of '" + status + "'")
}
@@ -131,7 +196,7 @@ func (this *UserIdentityService) SubmitUserIdentity(ctx context.Context, req *pb
if err != nil {
return nil, err
}
if len(status) > 0 && status != userconfigs.UserIdentityStatusNone {
if len(status) > 0 && status != userconfigs.UserIdentityStatusNone && status != userconfigs.UserIdentityStatusRejected {
return nil, errors.New("identity status should be '" + userconfigs.UserIdentityStatusNone + "' instead of '" + status + "'")
}
@@ -193,7 +258,7 @@ func (this *UserIdentityService) RejectUserIdentity(ctx context.Context, req *pb
return nil, errors.New("identity status should be '" + userconfigs.UserIdentityStatusSubmitted + "' instead of '" + status + "'")
}
err = models.SharedUserIdentityDAO.RejectUserIdentity(tx, req.UserIdentityId)
err = models.SharedUserIdentityDAO.RejectUserIdentity(tx, req.UserIdentityId, req.Reason)
if err != nil {
return nil, err
}

View File

@@ -118,7 +118,7 @@ func ValidateRequest(ctx context.Context, userTypes ...UserType) (userType UserT
return UserTypeNone, 0, 0, errors.New("invalid token")
}
m := maps.Map{}
var m = maps.Map{}
err = json.Unmarshal(data, &m)
if err != nil {
return UserTypeNone, 0, 0, errors.New("decode token error: " + err.Error())