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"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
2021-12-02 15:23:48 +08:00
|
|
|
// Company 公司企业入驻信息
|
2021-12-02 09:06:15 +08:00
|
|
|
type Company struct {
|
|
|
|
*session.Enterprise
|
|
|
|
local string
|
|
|
|
}
|
|
|
|
|
|
|
|
type CompanyHandle func(session *session.Enterprise, local string) *Company
|
|
|
|
|
2021-12-07 16:10:12 +08:00
|
|
|
type CompanyInfo struct {
|
|
|
|
ID string `json:"id"`
|
|
|
|
*model2.ManageCompany
|
|
|
|
Kinds []int `json:"kinds"`
|
|
|
|
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
|
|
|
|
}
|
|
|
|
|
|
|
|
mManageCompany.Image.Image = mManageCompany.Image.Analysis(config2.SettingInfo.Domain)
|
|
|
|
mManageCompany.License = (&model2.Image{Image: mManageCompany.License}).Analysis(config2.SettingInfo.Domain)
|
|
|
|
|
|
|
|
return &CompanyInfo{
|
|
|
|
ID: mManageCompany.GetEncodeID(),
|
|
|
|
ManageCompany: mManageCompany.ManageCompany,
|
|
|
|
Kinds: mManageCompany.GetKindAttribute(),
|
|
|
|
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()
|
2021-12-02 15:23:48 +08:00
|
|
|
// 查询相应的企业入驻信息
|
2021-12-03 14:18:06 +08:00
|
|
|
isExist, err := model2.FirstField(mManageCompany.ManageCompany, []string{"id", "examine_status"},
|
2021-12-02 15:23:48 +08:00
|
|
|
model2.NewWhere("code", params.Code), model2.NewWhere("local", c.local))
|
2021-12-02 09:06:15 +08:00
|
|
|
|
2021-12-02 15:23:48 +08:00
|
|
|
// 过滤用户其他公司入驻信息
|
|
|
|
mUserCompany := model.NewUserCompany()
|
2021-12-02 09:06:15 +08:00
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
} else if isExist {
|
2021-12-02 15:23:48 +08:00
|
|
|
// 审核中
|
2021-12-03 10:08:23 +08:00
|
|
|
if mManageCompany.Examine.ExamineStatus == model2.ExamineStatusForOngoing {
|
2021-12-02 15:23:48 +08:00
|
|
|
return errors.New("操作错误,当前该企业信息审核中,不可入驻")
|
2021-12-02 09:06:15 +08:00
|
|
|
}
|
2021-12-02 15:23:48 +08:00
|
|
|
// 审核通过
|
2021-12-03 10:08:23 +08:00
|
|
|
if mManageCompany.Examine.ExamineStatus == model2.ExamineStatusForAgree {
|
2021-12-02 15:23:48 +08:00
|
|
|
// 筛选企业条件
|
|
|
|
if err = params.filter(config.TenantUserIdentityForCompany,
|
|
|
|
model2.NewWhere("company_id", mManageCompany.ID)); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
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
|
|
|
}
|
|
|
|
mManageCompany.Local.Local = c.local
|
|
|
|
mManageCompany.InviterID = inviterID
|
2021-12-07 16:10:12 +08:00
|
|
|
mManageCompany.SetKindAttribute(other.Kinds)
|
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
|
2021-12-07 16:10:12 +08:00
|
|
|
mManageCompany.License = other.License
|
2021-12-02 09:06:15 +08:00
|
|
|
mManageCompany.SetIndustryAttribute(params.Industrys)
|
|
|
|
mManageCompany.SetKeywordAttribute(params.Keywords)
|
|
|
|
mManageCompany.Introduce = params.Introduce
|
|
|
|
|
|
|
|
return orm.GetDB().Transaction(func(tx *gorm.DB) error {
|
2021-12-02 15:23:48 +08:00
|
|
|
// 删除区域相同编码公司信息
|
|
|
|
if err = model2.DeleteWhere(mManageCompany.ManageCompany, []*model2.ModelWhere{
|
|
|
|
model2.NewWhere("code", params.Code), model2.NewWhere("local", c.local)}, tx); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
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
|
|
|
}
|
|
|
|
if err := model2.UpdatesWhere(mUserCompany.UserCompany, map[string]interface{}{
|
2021-12-03 10:08:23 +08:00
|
|
|
"invalid_status": model2.InvalidStatusForYes, "updated_at": time.Now(),
|
2021-12-02 09:06:15 +08:00
|
|
|
}, []*model2.ModelWhere{model2.NewWhere("uid", c.UID)}, tx); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
mUserCompany.UID = c.UID
|
|
|
|
mUserCompany.CompanyID = mManageCompany.ID
|
|
|
|
return model2.Create(mUserCompany.UserCompany, tx)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewCompany() CompanyHandle {
|
|
|
|
return func(session *session.Enterprise, local string) *Company {
|
|
|
|
return &Company{
|
|
|
|
Enterprise: session,
|
|
|
|
local: local,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|