package settled import ( "SciencesServer/app/api/enterprise/model" "SciencesServer/app/basic/config" model2 "SciencesServer/app/common/model" "SciencesServer/app/service" "SciencesServer/app/session" config2 "SciencesServer/config" "errors" "gorm.io/gorm" "time" ) // TODO:入驻流程 // 2021-12-02 // 一: // BasicParams 基本信息 type BasicParams struct { ID uint64 Name, Image, Code, Mobile, Introduce string config.Area Industrys, Keywords []string } // filter 筛选信息 func (c *BasicParams) filter(identity int, where ...*model2.ModelWhere) error { mSysIdentity := model.NewSysIdentity() _, err := model2.FirstField(mSysIdentity.SysIdentity, []string{"id", "register_count"}, model2.NewWhere("identity", identity)) if err != nil { return err } var iModel model2.IModel if identity&config.TenantUserIdentityForCompany > 0 { iModel = model2.NewUserCompany() } else if identity&config.TenantUserIdentityForExpert > 0 { iModel = model2.NewUserExpert() } else if identity&config.TenantUserIdentityForResearch > 0 { iModel = model2.NewUserResearch() } else if identity&config.TenantUserIdentityForLaboratory > 0 { iModel = model2.NewUserLaboratory() } else if identity&config.TenantUserIdentityForAgent > 0 { iModel = model2.NewUserAgent() } var count int64 where = append(where, model2.NewWhere("status", model2.InvalidStatusForNot)) if err = model2.Count(iModel, &count, where...); err != nil { return err } if count >= int64(mSysIdentity.RegisterCount) { return errors.New("操作错误,已超过当前身份最大入驻人数") } return nil } // fillIdentity 填充身份信息 func (c *BasicParams) fillIdentity(tx *gorm.DB, _session *session.Enterprise, identity int) error { if _session.SelectIdentity <= 0 { _session.SelectIdentity = identity } _session.Identity = _session.Identity | identity mUserInstance := model.NewUserInstance() err := model2.UpdatesWhere(mUserInstance.UserInstance, map[string]interface{}{ "identity": _session.Identity, "updated_at": time.Now(), }, []*model2.ModelWhere{model2.NewWhere("uuid", _session.UID)}, tx) if err != nil { return err } mUserIdentity := model.NewUserIdentity() var count int64 if err = model2.Count(mUserIdentity.UserIdentity, &count, model2.NewWhere("uid", _session.UID)); err != nil { return err } if count <= 0 { mUserIdentity.IsSelected = model2.UserIdentitySelectedForYes } mUserIdentity.UID = _session.UID mUserIdentity.Name = _session.Name mUserIdentity.Identity = identity if err = model2.Create(mUserIdentity.UserIdentity, tx); err != nil { return err } service.Publish(config2.EventForRedisHashProduce, config2.RedisKeyForAccountEnterprise, _session.GetStringUID(), _session) return nil }