Files
2022-01-27 17:12:41 +08:00

98 lines
2.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}