Files
huangguo_server/app/service/officialWebsiteser/basicData.go
T
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

226 lines
7.1 KiB
Go

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
}