tianyuan-api-server/apps/user/internal/logic/enterprise/createenterpriseauthlogic.go
2024-10-02 00:57:17 +08:00

68 lines
1.9 KiB
Go

package enterpriselogic
import (
"context"
"errors"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"tianyuan-api/apps/user/internal/model"
"tianyuan-api/apps/user/internal/svc"
"tianyuan-api/apps/user/user"
"github.com/zeromicro/go-zero/core/logx"
)
type CreateEnterpriseAuthLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewCreateEnterpriseAuthLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateEnterpriseAuthLogic {
return &CreateEnterpriseAuthLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *CreateEnterpriseAuthLogic) CreateEnterpriseAuth(in *user.EnterpriseAuthReq) (*user.EmptyResponse, error) {
users, err := l.svcCtx.UserModel.FindOne(l.ctx, in.UserId)
if err != nil || users == nil {
return nil, errors.New("查询用户错误")
}
if users.AuthStatus == "approved" || users.AuthStatus == "pending" {
return nil, errors.New("当前企业认证已审核通过或正在审核中,无法重复认证")
}
// 构建企业认证对象
var enterpriseAuth model.EnterpriseAuth
enterpriseAuth.UserId = in.UserId
enterpriseAuth.EnterpriseName = in.EnterpriseName
enterpriseAuth.EnterpriseContact = in.EnterpriseContact
enterpriseAuth.AuthStatus = "pending"
enterpriseAuth.BusinessLicense = in.BusinessLicense
enterpriseAuth.LegalPerson = in.LegalPerson
enterpriseAuth.CreditCode = in.CreditCode
users.AuthStatus = "pending"
// 使用事务更新企业认证和用户认证状态
err = l.svcCtx.EnterpriseAuthModel.TransCtx(l.ctx, func(ctx context.Context, session sqlx.Session) error {
// 插入和更新操作放在事务中
if _, err := l.svcCtx.EnterpriseAuthModel.InsertEnterpriseAuthTrans(ctx, &enterpriseAuth, session); err != nil {
return err
}
_, err = l.svcCtx.UserModel.UpdateUserTrans(ctx, users, session)
if err != nil {
return err
}
return nil
})
if err != nil {
return nil, err
}
return &user.EmptyResponse{}, nil
}