package manage import ( "SciencesServer/app/api/enterprise/model" model2 "SciencesServer/app/common/model" "SciencesServer/app/session" "errors" ) // Company 公司信息 type Company struct { *session.Enterprise local string } type CompanyHandle func(session *session.Enterprise, local string) *Company type ( // CompanyDetail 详细信息 CompanyDetail struct { ID string `json:"id"` *model2.ManageCompany Keywords []string `json:"keywords"` } // CompanyProductInfo 公司产品信息 CompanyProductInfo struct { ID string `json:"id"` *model.TechnologyProductInfo Industrys []string `json:"industrys"` Keywords []string `json:"keywords"` } ) // Detail 详细信息 func (c *Company) Detail(id uint64) (*CompanyDetail, error) { mManageCompany := model.NewManageCompany() mManageCompany.ID = id isExist, err := model2.First(mManageCompany.ManageCompany) if err != nil { return nil, err } else if !isExist { return nil, errors.New("操作错误,企业信息不存在或已被删除") } return &CompanyDetail{ ID: mManageCompany.GetEncodeID(), ManageCompany: mManageCompany.ManageCompany, Keywords: mManageCompany.GetKeywordAttribute(), }, nil } // Product 产品信息 func (c *Company) Product(id uint64, page, pageSize int) ([]*CompanyProductInfo, error) { mUserCompany := model.NewUserCompany() uids := make([]uint64, 0) // 查询公司下所有的用户信息 err := model2.Pluck(mUserCompany.UserCompany, "uid", &uids, model2.NewWhere("company_id", id), model2.NewWhere("invalid_status", model2.InvalidStatusForNot)) if err != nil { return nil, err } mTechnologyProduct := model.NewTechnologyProduct() var count int64 out := make([]*model.TechnologyProductInfo, 0) if out, err = mTechnologyProduct.Product(page, pageSize, &count, model2.NewWhereIn("uid", uids)); err != nil { return nil, err } list := make([]*CompanyProductInfo, 0) for _, v := range out { mTechnologyProduct.Industry = v.Industry mTechnologyProduct.Keyword = v.Keyword list = append(list, &CompanyProductInfo{ ID: v.GetEncodeID(), TechnologyProductInfo: v, Industrys: mTechnologyProduct.GetIndustryAttribute(), Keywords: mTechnologyProduct.GetKeywordAttribute(), }) } return list, nil } func NewCompany() CompanyHandle { return func(session *session.Enterprise, local string) *Company { return &Company{ Enterprise: session, local: local, } } }