package officialWebsiteser import ( "91porn-server/common/stderr" "91porn-server/models/v/officialWebsitemod" "91porn-server/models/v/sourcemod" "go.mongodb.org/mongo-driver/bson/primitive" ) type GetBasicDataResp struct { Title string `json:"title"` Description string `json:"description"` //域名信息 SourceList []*sourcemod.SourceRes `json:"sourceList"` //接口域名 Domain []string `json:"domain"` Banner []Banner `json:"banner"` BannersDescription string `json:"bannersDescription" bson:"bannersDescription"` BannersDuration int `json:"bannersDuration" bson:"bannersDuration"` HeroBanner []BasicDataHeroBanner `json:"heroBanner"` Masterpiece []BasicDataMasterpiece `json:"masterpiece"` Business []BasicDataBusiness `json:"business"` AboutUs BasicDataAboutUs `json:"aboutUs"` FAQ []BasicDataFAQ `json:"faq"` HomePageCMS []BasicDataCMSData `json:"homePageCMS"` RecruitCMS []BasicDataCMSData `json:"recruitCMS"` Tags []officialWebsitemod.Tag `json:"tags"` } type Banner struct { Name string `json:"name"` Description string `json:"description"` Image string `json:"image"` PhoneImage string `json:"phoneImage"` Thumbnail string `json:"thumbnail"` URL string `json:"url"` } type BasicDataHeroBanner struct { HeroID string `json:"heroId"` Name string `json:"name"` Description string `json:"description"` Image string `json:"image"` URL string `json:"url"` Duration int `json:"duration"` } type BasicDataMasterpiece struct { ID string `json:"id"` Name string `json:"name"` Description string `json:"description"` Cover string `json:"cover"` Type string `json:"type"` } type BasicDataBusiness struct { Name string `json:"name"` EnglishName string `json:"englishName"` Description string `json:"description"` Cover string `json:"cover"` Detail []BasicDataBusinessDetail `json:"detail"` } type BasicDataBusinessDetail struct { Cover string `json:"cover"` Description string `json:"description"` } type BasicDataAboutUs struct { Description string `json:"description"` Companies []BasicDataCompanyInfo `json:"companies"` Values string `json:"values"` ValuesImg string `json:"valuesImg"` } type BasicDataCompanyInfo struct { Name string `json:"name"` Address string `json:"address"` Description string `json:"description"` Contact []BasicDataContactInfo `json:"contact"` } type BasicDataContactInfo struct { Type string `json:"type"` Value string `json:"value"` } type SourceResp struct { ID primitive.ObjectID `json:"id,omitempty" bson:"_id,omitempty"` IsActive bool `json:"isActive,omitempty" bson:"isActive,omitempty"` Type string `json:"type,omitempty" bson:"type,omitempty"` Domain DomainResp `json:"domain,omitempty" bson:"domain,omitempty"` } type DomainResp struct { Weight int `json:"weight,omitempty" bson:"weight,omitempty"` Url string `json:"url,omitempty" bson:"url,omitempty"` Desc string `json:"desc,omitempty" bson:"desc,omitempty"` Status int `json:"status,omitempty" bson:"status,omitempty"` } type BasicDataFAQ struct { Question string `json:"question"` Answer string `json:"answer"` } type BasicDataCMSData struct { Description string `json:"description"` Value string `json:"value"` } func GetBasicData() (data GetBasicDataResp, err error) { basicDataMod := &officialWebsitemod.BasicData{} err = basicDataMod.FindOne() if err != nil { return } if basicDataMod.ID == primitive.NilObjectID { err = stderr.OfficialWebsiteBasicDataNotExist return } data = GetBasicDataResp{ Title: basicDataMod.Title, Description: basicDataMod.Description, Banner: make([]Banner, 0), BannersDescription: basicDataMod.BannersDescription, BannersDuration: basicDataMod.BannersDuration, HeroBanner: make([]BasicDataHeroBanner, 0), Masterpiece: make([]BasicDataMasterpiece, 0), Business: make([]BasicDataBusiness, 0), AboutUs: BasicDataAboutUs{}, FAQ: make([]BasicDataFAQ, 0), HomePageCMS: make([]BasicDataCMSData, 0), RecruitCMS: make([]BasicDataCMSData, 0), } for _, v := range basicDataMod.Banner { data.Banner = append(data.Banner, Banner{ Name: v.Name, Description: v.Description, Image: v.Image, PhoneImage: v.PhoneImage, Thumbnail: v.Thumbnail, URL: v.URL, }) } for _, v := range basicDataMod.HeroBanner { data.HeroBanner = append(data.HeroBanner, BasicDataHeroBanner{ HeroID: v.HeroID.Hex(), Name: v.Name, Description: v.Description, Image: v.Image, URL: v.URL, Duration: v.Duration, }) } for _, v := range basicDataMod.Masterpiece { data.Masterpiece = append(data.Masterpiece, BasicDataMasterpiece{ ID: v.ID.Hex(), Name: v.Name, Description: v.Description, Cover: v.Cover, Type: v.Type, }) } for _, v := range basicDataMod.Business { data.Business = append(data.Business, BasicDataBusiness{ Name: v.Name, EnglishName: v.EnglishName, Description: v.Description, Cover: v.Cover, Detail: make([]BasicDataBusinessDetail, 0, len(v.Detail)), }) for _, d := range v.Detail { data.Business[len(data.Business)-1].Detail = append(data.Business[len(data.Business)-1].Detail, BasicDataBusinessDetail{ Cover: d.Cover, Description: d.Description, }) } } data.AboutUs = BasicDataAboutUs{ Description: basicDataMod.AboutUs.Description, Values: basicDataMod.AboutUs.Values, ValuesImg: basicDataMod.AboutUs.ValuesImg, } for _, v := range basicDataMod.AboutUs.Companies { data.AboutUs.Companies = append(data.AboutUs.Companies, BasicDataCompanyInfo{ Name: v.Name, Address: v.Address, Description: v.Description, Contact: make([]BasicDataContactInfo, 0), }) for _, c := range v.Contact { data.AboutUs.Companies[len(data.AboutUs.Companies)-1].Contact = append(data.AboutUs.Companies[len(data.AboutUs.Companies)-1].Contact, BasicDataContactInfo{ Type: c.Type, Value: c.Value, }) } } for _, v := range basicDataMod.FAQ { data.FAQ = append(data.FAQ, BasicDataFAQ{ Question: v.Question, Answer: v.Answer, }) } for _, v := range basicDataMod.HomePageCMS { data.HomePageCMS = append(data.HomePageCMS, BasicDataCMSData{ Description: v.Description, Value: v.Value, }) } for _, v := range basicDataMod.RecruitCMS { data.RecruitCMS = append(data.RecruitCMS, BasicDataCMSData{ Description: v.Description, Value: v.Value, }) } data.Tags = basicDataMod.Tags // 域名信息(Domain/SourceList)改由 controller 实时获取,不进基础数据大缓存 return data, err }