2021-12-02 09:06:15 +08:00
|
|
|
|
package settled
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"SciencesServer/app/api/enterprise/model"
|
|
|
|
|
"SciencesServer/app/basic/config"
|
|
|
|
|
model2 "SciencesServer/app/common/model"
|
|
|
|
|
"SciencesServer/app/session"
|
2021-12-07 16:10:12 +08:00
|
|
|
|
config2 "SciencesServer/config"
|
2021-12-02 09:06:15 +08:00
|
|
|
|
"SciencesServer/serve/orm"
|
2021-12-02 15:23:48 +08:00
|
|
|
|
"errors"
|
2021-12-02 09:06:15 +08:00
|
|
|
|
"gorm.io/gorm"
|
|
|
|
|
)
|
|
|
|
|
|
2021-12-02 15:23:48 +08:00
|
|
|
|
// Company 公司企业入驻信息
|
2021-12-02 09:06:15 +08:00
|
|
|
|
type Company struct {
|
|
|
|
|
*session.Enterprise
|
2022-01-13 18:07:40 +08:00
|
|
|
|
tenantID uint64
|
2021-12-02 09:06:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
2022-01-13 18:07:40 +08:00
|
|
|
|
type CompanyHandle func(session *session.Enterprise, tenantID uint64) *Company
|
2021-12-02 09:06:15 +08:00
|
|
|
|
|
2021-12-07 16:10:12 +08:00
|
|
|
|
type CompanyInfo struct {
|
|
|
|
|
ID string `json:"id"`
|
|
|
|
|
*model2.ManageCompany
|
|
|
|
|
Industry []string `json:"industrys"`
|
|
|
|
|
Keywords []string `json:"keywords"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Get 获取信息
|
|
|
|
|
func (c *Company) Get(code string) (*CompanyInfo, error) {
|
|
|
|
|
mManageCompany := model.NewManageCompany()
|
|
|
|
|
|
|
|
|
|
isExist, err := model2.FirstWhere(mManageCompany.ManageCompany, model2.NewWhere("code", code))
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
} else if !isExist {
|
|
|
|
|
return nil, nil
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-17 09:57:57 +08:00
|
|
|
|
mManageCompany.Image.Image = mManageCompany.Image.Analysis(config2.SystemConfig[config2.SysImageDomain])
|
|
|
|
|
mManageCompany.License = (&model2.Image{Image: mManageCompany.License}).Analysis(config2.SystemConfig[config2.SysImageDomain])
|
2021-12-07 16:10:12 +08:00
|
|
|
|
|
|
|
|
|
return &CompanyInfo{
|
|
|
|
|
ID: mManageCompany.GetEncodeID(),
|
|
|
|
|
ManageCompany: mManageCompany.ManageCompany,
|
|
|
|
|
Industry: mManageCompany.GetIndustryAttribute(),
|
|
|
|
|
Keywords: mManageCompany.GetKeywordAttribute(),
|
|
|
|
|
}, nil
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-02 15:23:48 +08:00
|
|
|
|
// Launch 发起入驻
|
|
|
|
|
func (c *Company) Launch(params *BasicParams, inviterID uint64, other *config.IdentityForCompany) error {
|
|
|
|
|
if c.Identity&config.TenantUserIdentityForCompany > 0 {
|
|
|
|
|
return errors.New("操作错误,不可重复申请入驻")
|
|
|
|
|
}
|
2021-12-02 09:06:15 +08:00
|
|
|
|
mManageCompany := model.NewManageCompany()
|
|
|
|
|
|
2022-01-27 17:12:41 +08:00
|
|
|
|
// 查询相应的企业入驻信息,code唯一的
|
|
|
|
|
isExist, err := model2.LastWhere(mManageCompany.ManageCompany, []string{"id", "examine_status", "created_at"},
|
|
|
|
|
model2.NewWhere("code", params.Code))
|
2021-12-02 09:06:15 +08:00
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
2022-01-27 17:12:41 +08:00
|
|
|
|
}
|
|
|
|
|
// 用户入驻信息
|
|
|
|
|
mUserCompany := model.NewUserCompany()
|
|
|
|
|
|
|
|
|
|
// 存在
|
|
|
|
|
if isExist {
|
|
|
|
|
if mManageCompany.Examine.ExamineStatus == model2.ExamineStatusForOngoing ||
|
|
|
|
|
mManageCompany.Examine.ExamineStatus == model2.ExamineStatusForAgree {
|
|
|
|
|
// 筛选判断是否满足入驻条件
|
|
|
|
|
if err = params.filter(config.TenantUserIdentityForCompany, model2.NewWhere("company_id", mManageCompany.ID)); err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
// 判断当前用户是否入驻
|
|
|
|
|
var count int64
|
|
|
|
|
|
|
|
|
|
if err = model2.Count(mUserCompany.UserCompany, &count, model2.NewWhere("company_id", mManageCompany.ID),
|
|
|
|
|
model2.NewWhere("uid", c.UID), model2.NewWhere("invalid_status", model2.InvalidStatusForNot)); err != nil {
|
2021-12-02 15:23:48 +08:00
|
|
|
|
return err
|
|
|
|
|
}
|
2022-01-27 17:12:41 +08:00
|
|
|
|
if count > 0 {
|
|
|
|
|
return errors.New("操作错误,已申请入驻,不可重复申请")
|
|
|
|
|
}
|
|
|
|
|
return orm.GetDB().Transaction(func(tx *gorm.DB) error {
|
|
|
|
|
mUserCompany.UID = c.UID
|
|
|
|
|
mUserCompany.CompanyID = mManageCompany.ID
|
|
|
|
|
|
|
|
|
|
if err = model2.Create(mUserCompany.UserCompany, tx); err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
// 直接同步身份信息
|
|
|
|
|
if mManageCompany.Examine.ExamineStatus == model2.ExamineStatusForAgree {
|
|
|
|
|
if err = params.fillIdentity(tx, c.Enterprise, config.TenantUserIdentityForCompany); err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
})
|
2021-12-02 09:06:15 +08:00
|
|
|
|
}
|
2021-12-02 18:05:53 +08:00
|
|
|
|
mManageCompany.ID = 0
|
2021-12-02 09:06:15 +08:00
|
|
|
|
}
|
2022-01-13 18:07:40 +08:00
|
|
|
|
mManageCompany.TenantID = c.tenantID
|
2021-12-02 09:06:15 +08:00
|
|
|
|
mManageCompany.InviterID = inviterID
|
2022-01-27 14:50:52 +08:00
|
|
|
|
mManageCompany.Kind = model2.ManageCompanyKind(other.Kind)
|
2021-12-02 09:06:15 +08:00
|
|
|
|
mManageCompany.Name = params.Name
|
|
|
|
|
mManageCompany.Code = params.Code
|
|
|
|
|
mManageCompany.Image = model2.Image{Image: params.Image}
|
|
|
|
|
mManageCompany.Area = model2.Area{
|
|
|
|
|
Province: params.Area.Province, City: params.Area.City, District: params.Area.District, Address: params.Area.Address,
|
|
|
|
|
}
|
2021-12-07 16:10:12 +08:00
|
|
|
|
mManageCompany.Product = other.Product
|
2021-12-02 18:05:53 +08:00
|
|
|
|
mManageCompany.Url = other.Url
|
2022-01-19 16:21:22 +08:00
|
|
|
|
mManageCompany.License = other.FilterLicense()
|
2021-12-02 09:06:15 +08:00
|
|
|
|
mManageCompany.SetIndustryAttribute(params.Industrys)
|
|
|
|
|
mManageCompany.SetKeywordAttribute(params.Keywords)
|
2021-12-08 17:46:47 +08:00
|
|
|
|
mManageCompany.SetDirectionAttribute(other.Directions)
|
2021-12-02 09:06:15 +08:00
|
|
|
|
mManageCompany.Introduce = params.Introduce
|
|
|
|
|
|
|
|
|
|
return orm.GetDB().Transaction(func(tx *gorm.DB) error {
|
2021-12-02 18:05:53 +08:00
|
|
|
|
if err = model2.Create(mManageCompany.ManageCompany, tx); err != nil {
|
|
|
|
|
return err
|
2021-12-02 09:06:15 +08:00
|
|
|
|
}
|
|
|
|
|
mUserCompany.UID = c.UID
|
|
|
|
|
mUserCompany.CompanyID = mManageCompany.ID
|
|
|
|
|
return model2.Create(mUserCompany.UserCompany, tx)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func NewCompany() CompanyHandle {
|
2022-01-13 18:07:40 +08:00
|
|
|
|
return func(session *session.Enterprise, tenantID uint64) *Company {
|
2021-12-02 09:06:15 +08:00
|
|
|
|
return &Company{
|
|
|
|
|
Enterprise: session,
|
2022-01-13 18:07:40 +08:00
|
|
|
|
tenantID: tenantID,
|
2021-12-02 09:06:15 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|