package settled import ( "SciencesServer/app/api/enterprise/model" "SciencesServer/app/basic/config" model2 "SciencesServer/app/common/model" "SciencesServer/app/session" "SciencesServer/serve/orm" "errors" "gorm.io/gorm" ) // Agent 经纪人入驻信息 type Agent struct { *session.Enterprise tenantID uint64 } type AgentHandle func(session *session.Enterprise, tenantID uint64) *Agent // Launch 经纪人入驻 func (c *Agent) Launch(params *BasicParams, other *config.IdentityForAgent) error { if c.Identity&config.TenantUserIdentityForAgent > 0 { return errors.New("操作错误,不可重复申请入驻") } mManageAgent := model.NewManageAgent() // 查询相应的经纪人入驻信息 isExist, err := model2.FirstField(mManageAgent.ManageAgent, []string{"id", "examine_status"}, model2.NewWhere("id_card", other.IDCard), model2.NewWhere("tenant_id", c.tenantID)) // 用户经纪人入驻信息 mUserAgent := model.NewUserAgent() if err != nil { return err } else if isExist { if mManageAgent.Examine.ExamineStatus == model2.ExamineStatusForOngoing || mManageAgent.Examine.ExamineStatus == model2.ExamineStatusForAgree { // 筛选判断是否满足入驻条件 if err = params.filter(config.TenantUserIdentityForAgent, model2.NewWhere("agent_id", mManageAgent.ID)); err != nil { return err } // 判断当前用户是否入驻 var count int64 if err = model2.Count(mUserAgent.UserAgent, &count, model2.NewWhere("agent_id", mManageAgent.ID), model2.NewWhere("uid", c.UID), model2.NewWhere("invalid_status", model2.InvalidStatusForNot)); err != nil { return err } if count > 0 { return errors.New("操作错误,已申请入驻,不可重复申请") } return orm.GetDB().Transaction(func(tx *gorm.DB) error { mUserAgent.UID = c.UID mUserAgent.AgentID = mManageAgent.ID if err = model2.Create(mUserAgent.UserAgent, tx); err != nil { return err } // 直接同步身份信息 if mManageAgent.Examine.ExamineStatus == model2.ExamineStatusForAgree { if err = params.fillIdentity(tx, c.Enterprise, config.TenantUserIdentityForAgent); err != nil { return err } } return nil }) } // 审核中 //if mManageAgent.Examine.ExamineStatus == model2.ExamineStatusForOngoing { // return errors.New("操作错误,当前该企业信息审核中,不可入驻") //} //// 审核通过 //if mManageAgent.Examine.ExamineStatus == model2.ExamineStatusForAgree { // // 筛选企业条件 // if err = params.filter(config.TenantUserIdentityForAgent, // model2.NewWhere("agent_id", mManageAgent.ID)); err != nil { // return err // } //} mManageAgent.ID = 0 } mManageAgent.TenantID = c.tenantID mManageAgent.Name = params.Name mManageAgent.Mobile = params.Mobile mManageAgent.IDCard = other.IDCard mManageAgent.SetIDImageAttribute(&model2.ManageAgentIDImage{ Front: other.IDImage.Front, Behind: other.IDImage.Behind, Hold: other.IDImage.Hold, }) mManageAgent.SetIndustryAttribute(params.Industrys) mManageAgent.SetKeywordAttribute(params.Keywords) mManageAgent.WorkExperience = other.WorkExperience mManageAgent.WorkPlace = other.WorkPlace mManageAgent.SetCredentialImageAttribute(other.CredentialImages) mManageAgent.ExamineStatus = model2.ExamineStatusForOngoing return orm.GetDB().Transaction(func(tx *gorm.DB) error { if err = model2.Create(mManageAgent.ManageAgent, tx); err != nil { return err } mUserAgent.UID = c.UID mUserAgent.AgentID = mManageAgent.ID return model2.Create(mUserAgent.UserAgent, tx) }) } func NewAgent() AgentHandle { return func(session *session.Enterprise, tenantID uint64) *Agent { return &Agent{ Enterprise: session, tenantID: tenantID, } } }