Files
huangguo_server/web/service/officialWebsiteser/basic.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

780 lines
25 KiB
Go

package officialwebsiteser
import (
"91porn-server/common"
"91porn-server/common/cachev2"
"91porn-server/common/constant/redisconst"
"time"
"91porn-server/common/stderr"
officialwebsitemod "91porn-server/models/v/officialWebsitemod"
"go.mongodb.org/mongo-driver/bson/primitive"
)
// ─────────────────────────────────────────
// Service functions
// ─────────────────────────────────────────
func GetBasicData() (data GetBasicDataResp, err error) {
mod := &officialwebsitemod.BasicData{}
if err = mod.FindOne(); err != nil {
return
}
err = data.transfer(mod)
return
}
func CreateBasicData(req *ModifyBasicDataReq) (data officialwebsitemod.BasicData, err error) {
data, err = req.toMod()
if err != nil {
return
}
if err = data.Create(); err != nil {
return officialwebsitemod.BasicData{}, err
}
return
}
func UpdateBasicData(req *ModifyBasicDataReq) (resp UpdateBasicDataResp, err error) {
if req == nil || req.ID == "" {
return
}
id, parseErr := primitive.ObjectIDFromHex(req.ID)
if parseErr != nil || isNilObjectID(id) {
err = stderr.ErrParamError
return
}
mod := &officialwebsitemod.BasicData{}
if err = mod.FindOne(); err != nil {
return
}
var update officialwebsitemod.M
if update, err = req.toM(); err != nil || update == nil {
return
}
resp.Count, err = mod.Update(officialwebsitemod.M{"_id": id}, update)
common.Go(func() {
// 删除缓存
cachev2.Classes().
CacheTime(redisconst.OfficialWebsiteBasicDataCacheExpire).
AutoListKey(redisconst.OfficialWebsiteBasicDataCacheKey).
DeleteCurrent()
})
return
}
func DeleteBasicData(req *DeleteBasicDataReq) (data DeleteBasicDataResp, err error) {
if req == nil {
err = stderr.CodeEmptyData
return
}
var id primitive.ObjectID
if id, err = primitive.ObjectIDFromHex(req.ID); err != nil {
return
}
if isNilObjectID(id) {
err = stderr.ErrParamError
return
}
mod := &officialwebsitemod.BasicData{}
data.Count, err = mod.Delete(officialwebsitemod.M{"_id": id})
return
}
// ─────────────────────────────────────────
// Query (BasicData) types
// ─────────────────────────────────────────
type GetBasicDataReq struct{}
type GetBasicDataResp struct {
ID primitive.ObjectID `json:"id" bson:"_id,omitempty"`
Title string `json:"title" bson:"title"`
Description string `json:"description" bson:"description"`
Banner []GBDBanner `json:"banner" bson:"banner"`
HeroBanner []GBDHeroBanner `json:"heroBanner" bson:"heroBanner"`
Masterpiece []GBDMasterpiece `json:"masterpiece" bson:"masterpiece"`
Business []GBDBusiness `json:"business" bson:"business"`
BannersDescription string `json:"bannersDescription" bson:"bannersDescription"`
BannersDuration int `json:"bannersDuration" bson:"bannersDuration"`
AboutUs GBDAboutUs `json:"aboutUs" bson:"aboutUs"`
FAQ []GBDFAQ `json:"faq" bson:"faq"`
HomePageCMS []GBDCMSData `json:"homePageCMS" bson:"homePageCMS"`
HomePageCMSDescription string `json:"homePageCMSDescription" bson:"homePageCMSDescription"`
RecruitCMS []GBDCMSData `json:"recruitCMS" bson:"recruitCMS"`
Tags []officialwebsitemod.Tag `json:"tags" bson:"tags"`
}
type GBDBanner struct {
Name string `json:"name" bson:"name"`
Description string `json:"description" bson:"description"`
Image string `json:"image" bson:"image"`
PhoneImage string `json:"phoneImage" bson:"phoneImage"`
Thumbnail string `json:"thumbnail" bson:"thumbnail"`
URL string `json:"url" bson:"url"`
}
type GBDHeroBanner struct {
ID primitive.ObjectID `json:"id" bson:"_id,omitempty"`
HeroID string `json:"heroId" bson:"heroId"`
Name string `json:"name" bson:"name"`
Description string `json:"description" bson:"description"`
Image string `json:"image" bson:"image"`
URL string `json:"url" bson:"url"`
Duration int `json:"duration" bson:"duration"`
}
type GBDMasterpiece struct {
ID primitive.ObjectID `json:"id" bson:"_id,omitempty"`
Name string `json:"name" bson:"name"`
Description string `json:"description" bson:"description"`
Cover string `json:"cover" bson:"cover"`
Type string `json:"type" bson:"type"`
}
type GBDBusiness struct {
Name string `json:"name" bson:"name"`
EnglishName string `json:"englishName" bson:"englishName"`
Description string `json:"description" bson:"description"`
Cover string `json:"cover" bson:"cover"`
Detail []GBDBusinessDetail `json:"detail" bson:"detail"`
}
type GBDBusinessDetail struct {
Cover string `json:"cover" bson:"cover"`
Description string `json:"description" bson:"description"`
}
type GBDAboutUs struct {
Description string `json:"description" bson:"description"`
Companies []GBDCompanyInfo `json:"companies" bson:"companies"`
Values string `json:"values" bson:"values"`
ValuesImg string `json:"valuesImg" bson:"valuesImg"`
}
type GBDCompanyInfo struct {
Name string `json:"name" bson:"name"`
Address string `json:"address" bson:"address"`
Description string `json:"description" bson:"description"`
Contact []GBDContactInfo `json:"contact" bson:"contact"`
}
type GBDContactInfo struct {
Type string `json:"type" bson:"type"`
Value string `json:"value" bson:"value"`
}
type GBDFAQ struct {
Question string `json:"question" bson:"question"`
Answer string `json:"answer" bson:"answer"`
}
type GBDCMSData struct {
Description string `json:"description" bson:"description"`
Value string `json:"value" bson:"value"`
}
func (data *GetBasicDataResp) transfer(mod *officialwebsitemod.BasicData) error {
if mod == nil {
return stderr.CodeEmptyData
}
data.ID = mod.ID
data.Title = mod.Title
data.Description = mod.Description
data.Tags = mod.Tags
data.BannersDescription = mod.BannersDescription
data.BannersDuration = mod.BannersDuration
data.HomePageCMSDescription = mod.HomePageCMSDescription
data.AboutUs.Description = mod.AboutUs.Description
data.AboutUs.Values = mod.AboutUs.Values
data.AboutUs.ValuesImg = mod.AboutUs.ValuesImg
data.Banner = make([]GBDBanner, 0, len(mod.Banner))
for _, v := range mod.Banner {
data.Banner = append(data.Banner, GBDBanner{
Name: v.Name, Description: v.Description, Image: v.Image, PhoneImage: v.PhoneImage, Thumbnail: v.Thumbnail, URL: v.URL,
})
}
data.HeroBanner = make([]GBDHeroBanner, 0, len(mod.HeroBanner))
for _, v := range mod.HeroBanner {
data.HeroBanner = append(data.HeroBanner, GBDHeroBanner{
ID: v.ID, HeroID: v.HeroID.Hex(), Name: v.Name, Description: v.Description, Image: v.Image, URL: v.URL, Duration: v.Duration,
})
}
data.Masterpiece = make([]GBDMasterpiece, 0, len(mod.Masterpiece))
for _, v := range mod.Masterpiece {
data.Masterpiece = append(data.Masterpiece, GBDMasterpiece{
ID: v.ID, Name: v.Name, Description: v.Description, Cover: v.Cover, Type: v.Type,
})
}
data.Business = make([]GBDBusiness, 0, len(mod.Business))
for _, v := range mod.Business {
business := GBDBusiness{
Name: v.Name, EnglishName: v.EnglishName, Description: v.Description, Cover: v.Cover,
Detail: make([]GBDBusinessDetail, 0, len(v.Detail)),
}
for _, d := range v.Detail {
business.Detail = append(business.Detail, GBDBusinessDetail{
Cover: d.Cover, Description: d.Description,
})
}
data.Business = append(data.Business, business)
}
data.AboutUs.Companies = make([]GBDCompanyInfo, 0, len(mod.AboutUs.Companies))
for _, v := range mod.AboutUs.Companies {
company := GBDCompanyInfo{
Name: v.Name, Address: v.Address, Description: v.Description,
Contact: make([]GBDContactInfo, 0, len(v.Contact)),
}
for _, c := range v.Contact {
company.Contact = append(company.Contact, GBDContactInfo{Type: c.Type, Value: c.Value})
}
data.AboutUs.Companies = append(data.AboutUs.Companies, company)
}
data.FAQ = make([]GBDFAQ, 0, len(mod.FAQ))
for _, v := range mod.FAQ {
data.FAQ = append(data.FAQ, GBDFAQ{Question: v.Question, Answer: v.Answer})
}
data.HomePageCMS = make([]GBDCMSData, 0, len(mod.HomePageCMS))
for _, v := range mod.HomePageCMS {
data.HomePageCMS = append(data.HomePageCMS, GBDCMSData{Description: v.Description, Value: v.Value})
}
data.RecruitCMS = make([]GBDCMSData, 0, len(mod.RecruitCMS))
for _, v := range mod.RecruitCMS {
data.RecruitCMS = append(data.RecruitCMS, GBDCMSData{Description: v.Description, Value: v.Value})
}
return nil
}
// ─────────────────────────────────────────
// Mutation (Modify) types
// ─────────────────────────────────────────
type ModifyBasicDataReq struct {
ID string `json:"id" form:"id"`
Title *string `json:"title" bson:"title"`
Description *string `json:"description" bson:"description"`
Banner *[]ModifyBanner `json:"banner" bson:"banner"`
HeroBanner *[]ModifyHeroBanner `json:"heroBanner" bson:"heroBanner"`
Masterpiece *[]ModifyMasterpiece `json:"masterpiece" bson:"masterpiece"`
Business *[]ModifyBusiness `json:"business" bson:"business"`
BannersDescription *string `json:"bannersDescription" bson:"bannersDescription"`
BannersDuration *int `json:"bannersDuration" bson:"bannersDuration"`
AboutUs *ModifyAboutUs `json:"aboutUs" bson:"aboutUs"`
FAQ *[]ModifyFAQ `json:"faq" bson:"faq"`
HomePageCMS *[]ModifyCMSData `json:"homePageCMS" bson:"homePageCMS"`
HomePageCMSDescription *string `json:"homePageCMSDescription" bson:"homePageCMSDescription"`
RecruitCMS *[]ModifyCMSData `json:"recruitCMS" bson:"recruitCMS"`
Tags *[]officialwebsitemod.Tag `json:"tags" bson:"tags"`
}
type ModifyBanner struct {
Name *string `json:"name" bson:"name"`
Description *string `json:"description" bson:"description"`
Image *string `json:"image" bson:"image"`
PhoneImage *string `json:"phoneImage" bson:"phoneImage"`
Thumbnail *string `json:"thumbnail" bson:"thumbnail"`
URL *string `json:"url" bson:"url"`
}
type ModifyHeroBanner struct {
ID *primitive.ObjectID `json:"id" bson:"_id,omitempty"`
HeroID *primitive.ObjectID `json:"heroId" bson:"heroId"`
Name *string `json:"name" bson:"name"`
Description *string `json:"description" bson:"description"`
Image *string `json:"image" bson:"image"`
URL *string `json:"url" bson:"url"`
Duration *int `json:"duration" bson:"duration"`
}
type ModifyMasterpiece struct {
ID *primitive.ObjectID `json:"id" bson:"_id,omitempty"`
Name *string `json:"name" bson:"name"`
Description *string `json:"description" bson:"description"`
Cover *string `json:"cover" bson:"cover"`
Type *string `json:"type" bson:"type"`
}
type ModifyBusiness struct {
Name *string `json:"name" bson:"name"`
EnglishName *string `json:"englishName" bson:"englishName"`
Description *string `json:"description" bson:"description"`
Cover *string `json:"cover" bson:"cover"`
Detail *[]ModifyBusinessDetail `json:"detail" bson:"detail"`
}
type ModifyBusinessDetail struct {
Cover *string `json:"cover" bson:"cover"`
Description *string `json:"description" bson:"description"`
}
type ModifyAboutUs struct {
Description *string `json:"description" bson:"description"`
Companies *[]ModifyCompanyInfo `json:"companies" bson:"companies"`
Values *string `json:"values" bson:"values"`
ValuesImg *string `json:"valuesImg" bson:"valuesImg"`
}
type ModifyCompanyInfo struct {
Name *string `json:"name" bson:"name"`
Address *string `json:"address" bson:"address"`
Description *string `json:"description" bson:"description"`
Contact *[]ModifyContactInfo `json:"contact" bson:"contact"`
}
type ModifyContactInfo struct {
Type *string `json:"type" bson:"type"`
Value *string `json:"value" bson:"value"`
}
type ModifyFAQ struct {
Question *string `json:"question" bson:"question"`
Answer *string `json:"answer" bson:"answer"`
}
type ModifyCMSData struct {
Description *string `json:"description" bson:"description"`
Value *string `json:"value" bson:"value"`
}
type UpdateBasicDataResp struct {
Count int64 `json:"count"`
}
// ─────────────────────────────────────────
// Delete types
// ─────────────────────────────────────────
type DeleteBasicDataReq struct {
ID string `json:"id"`
}
type DeleteBasicDataResp struct {
Count int64 `json:"count"`
}
// ─────────────────────────────────────────
// toMod — Modify* → model struct
// ─────────────────────────────────────────
func (v ModifyBanner) toMod() officialwebsitemod.Banner {
return officialwebsitemod.Banner{
Name: stringOrZero(v.Name), Description: stringOrZero(v.Description),
Image: stringOrZero(v.Image), Thumbnail: stringOrZero(v.Thumbnail),
PhoneImage: stringOrZero(v.PhoneImage), URL: stringOrZero(v.URL),
}
}
func (v ModifyHeroBanner) toMod() officialwebsitemod.HeroBanner {
return officialwebsitemod.HeroBanner{
HeroID: objectIDOrZero(v.HeroID), Name: stringOrZero(v.Name), Description: stringOrZero(v.Description),
Image: stringOrZero(v.Image), URL: stringOrZero(v.URL), Duration: intOrZero(v.Duration),
}
}
func (v ModifyMasterpiece) toMod() officialwebsitemod.Masterpiece {
return officialwebsitemod.Masterpiece{
ID: objectIDOrZero(v.ID), Name: stringOrZero(v.Name), Description: stringOrZero(v.Description),
Cover: stringOrZero(v.Cover), Type: stringOrZero(v.Type),
}
}
func (v ModifyBusiness) toMod() officialwebsitemod.Business {
out := officialwebsitemod.Business{
Name: stringOrZero(v.Name), EnglishName: stringOrZero(v.EnglishName),
Description: stringOrZero(v.Description), Cover: stringOrZero(v.Cover),
}
if v.Detail != nil {
out.Detail = make([]officialwebsitemod.BusinessDetail, 0, len(*v.Detail))
for _, d := range *v.Detail {
out.Detail = append(out.Detail, d.toMod())
}
}
return out
}
func (v ModifyBusinessDetail) toMod() officialwebsitemod.BusinessDetail {
return officialwebsitemod.BusinessDetail{
Cover: stringOrZero(v.Cover), Description: stringOrZero(v.Description),
}
}
func (v ModifyContactInfo) toMod() officialwebsitemod.ContactInfo {
return officialwebsitemod.ContactInfo{Type: stringOrZero(v.Type), Value: stringOrZero(v.Value)}
}
func (v ModifyCompanyInfo) toMod() officialwebsitemod.CompanyInfo {
out := officialwebsitemod.CompanyInfo{
Name: stringOrZero(v.Name), Address: stringOrZero(v.Address), Description: stringOrZero(v.Description),
}
if v.Contact != nil {
out.Contact = make([]officialwebsitemod.ContactInfo, 0, len(*v.Contact))
for _, c := range *v.Contact {
out.Contact = append(out.Contact, c.toMod())
}
}
return out
}
func (v *ModifyAboutUs) toMod() officialwebsitemod.AboutUs {
if v == nil {
return officialwebsitemod.AboutUs{}
}
out := officialwebsitemod.AboutUs{
Description: stringOrZero(v.Description), Values: stringOrZero(v.Values), ValuesImg: stringOrZero(v.ValuesImg),
}
if v.Companies != nil {
out.Companies = make([]officialwebsitemod.CompanyInfo, 0, len(*v.Companies))
for _, c := range *v.Companies {
out.Companies = append(out.Companies, c.toMod())
}
}
return out
}
func (v ModifyFAQ) toMod() officialwebsitemod.FAQ {
return officialwebsitemod.FAQ{Question: stringOrZero(v.Question), Answer: stringOrZero(v.Answer)}
}
func (v ModifyCMSData) toMod() officialwebsitemod.CMSData {
return officialwebsitemod.CMSData{Description: stringOrZero(v.Description), Value: stringOrZero(v.Value)}
}
// toMod 将请求结构体转换为完整的 BasicData model
func (req *ModifyBasicDataReq) toMod() (officialwebsitemod.BasicData, error) {
if req == nil {
return officialwebsitemod.BasicData{}, stderr.CodeEmptyData
}
data := officialwebsitemod.BasicData{
Title: stringOrZero(req.Title),
Description: stringOrZero(req.Description),
BannersDescription: stringOrZero(req.BannersDescription),
BannersDuration: intOrZero(req.BannersDuration),
HomePageCMSDescription: stringOrZero(req.HomePageCMSDescription),
}
if req.AboutUs != nil {
data.AboutUs = req.AboutUs.toMod()
}
if req.Banner != nil {
data.Banner = make([]officialwebsitemod.Banner, 0, len(*req.Banner))
for _, b := range *req.Banner {
data.Banner = append(data.Banner, b.toMod())
}
}
if req.HeroBanner != nil {
data.HeroBanner = make([]officialwebsitemod.HeroBanner, 0, len(*req.HeroBanner))
for _, h := range *req.HeroBanner {
data.HeroBanner = append(data.HeroBanner, h.toMod())
}
}
if req.Masterpiece != nil {
data.Masterpiece = make([]officialwebsitemod.Masterpiece, 0, len(*req.Masterpiece))
for _, m := range *req.Masterpiece {
data.Masterpiece = append(data.Masterpiece, m.toMod())
}
}
if req.Business != nil {
data.Business = make([]officialwebsitemod.Business, 0, len(*req.Business))
for _, b := range *req.Business {
data.Business = append(data.Business, b.toMod())
}
}
if req.FAQ != nil {
data.FAQ = make([]officialwebsitemod.FAQ, 0, len(*req.FAQ))
for _, f := range *req.FAQ {
data.FAQ = append(data.FAQ, f.toMod())
}
}
if req.HomePageCMS != nil {
data.HomePageCMS = make([]officialwebsitemod.CMSData, 0, len(*req.HomePageCMS))
for _, h := range *req.HomePageCMS {
data.HomePageCMS = append(data.HomePageCMS, h.toMod())
}
}
if req.RecruitCMS != nil {
data.RecruitCMS = make([]officialwebsitemod.CMSData, 0, len(*req.RecruitCMS))
for _, r := range *req.RecruitCMS {
data.RecruitCMS = append(data.RecruitCMS, r.toMod())
}
}
if req.Tags != nil {
data.Tags = *req.Tags
}
return data, nil
}
// ─────────────────────────────────────────
// toM — Modify* → officialwebsitemod.M (Mongo update doc)
// ─────────────────────────────────────────
func (v ModifyBanner) toM() officialwebsitemod.M {
out := officialwebsitemod.M{}
if v.Name != nil {
out["name"] = *v.Name
}
if v.Description != nil {
out["description"] = *v.Description
}
if v.Image != nil {
out["image"] = *v.Image
}
if v.Thumbnail != nil {
out["thumbnail"] = *v.Thumbnail
}
if v.PhoneImage != nil {
out["phoneImage"] = *v.PhoneImage
}
if v.URL != nil {
out["url"] = *v.URL
}
return out
}
func (v ModifyHeroBanner) toM() officialwebsitemod.M {
out := officialwebsitemod.M{}
if v.ID != nil {
out["_id"] = *v.ID
}
if v.HeroID != nil {
out["heroId"] = *v.HeroID
}
if v.Name != nil {
out["name"] = *v.Name
}
if v.Description != nil {
out["description"] = *v.Description
}
if v.Image != nil {
out["image"] = *v.Image
}
if v.URL != nil {
out["url"] = *v.URL
}
if v.Duration != nil {
out["duration"] = *v.Duration
}
return out
}
func (v ModifyMasterpiece) toM() officialwebsitemod.M {
out := officialwebsitemod.M{}
if v.ID != nil {
out["_id"] = *v.ID
}
if v.Name != nil {
out["name"] = *v.Name
}
if v.Description != nil {
out["description"] = *v.Description
}
if v.Cover != nil {
out["cover"] = *v.Cover
}
if v.Type != nil {
out["type"] = *v.Type
}
return out
}
func (v ModifyBusiness) toM() officialwebsitemod.M {
out := officialwebsitemod.M{}
if v.Name != nil {
out["name"] = *v.Name
}
if v.EnglishName != nil {
out["englishName"] = *v.EnglishName
}
if v.Description != nil {
out["description"] = *v.Description
}
if v.Cover != nil {
out["cover"] = *v.Cover
}
if v.Detail != nil {
detail := make([]officialwebsitemod.M, 0, len(*v.Detail))
for _, d := range *v.Detail {
detail = append(detail, d.toM())
}
out["detail"] = detail
}
return out
}
func (v ModifyBusinessDetail) toM() officialwebsitemod.M {
out := officialwebsitemod.M{}
if v.Cover != nil {
out["cover"] = *v.Cover
}
if v.Description != nil {
out["description"] = *v.Description
}
return out
}
func (v ModifyContactInfo) toM() officialwebsitemod.M {
out := officialwebsitemod.M{}
if v.Type != nil {
out["type"] = *v.Type
}
if v.Value != nil {
out["value"] = *v.Value
}
return out
}
func (v ModifyCompanyInfo) toM() officialwebsitemod.M {
out := officialwebsitemod.M{}
if v.Name != nil {
out["name"] = *v.Name
}
if v.Address != nil {
out["address"] = *v.Address
}
if v.Description != nil {
out["description"] = *v.Description
}
if v.Contact != nil {
contacts := make([]officialwebsitemod.M, 0, len(*v.Contact))
for _, c := range *v.Contact {
contacts = append(contacts, c.toM())
}
out["contact"] = contacts
}
return out
}
func (v *ModifyAboutUs) toM() officialwebsitemod.M {
if v == nil {
return nil
}
out := officialwebsitemod.M{}
if v.Description != nil {
out["description"] = *v.Description
}
if v.Values != nil {
out["values"] = *v.Values
}
if v.ValuesImg != nil {
out["valuesImg"] = *v.ValuesImg
}
if v.Companies != nil {
companies := make([]officialwebsitemod.M, 0, len(*v.Companies))
for _, c := range *v.Companies {
companies = append(companies, c.toM())
}
out["companies"] = companies
}
return out
}
func (v ModifyFAQ) toM() officialwebsitemod.M {
out := officialwebsitemod.M{}
if v.Question != nil {
out["question"] = *v.Question
}
if v.Answer != nil {
out["answer"] = *v.Answer
}
return out
}
func (v ModifyCMSData) toM() officialwebsitemod.M {
out := officialwebsitemod.M{}
if v.Description != nil {
out["description"] = *v.Description
}
if v.Value != nil {
out["value"] = *v.Value
}
return out
}
// toM 将请求中的非 nil 字段构造为 Mongo $set 更新文档
func (req *ModifyBasicDataReq) toM() (officialwebsitemod.M, error) {
if req == nil {
return nil, stderr.CodeEmptyData
}
set := officialwebsitemod.M{}
if req.Title != nil {
set["title"] = *req.Title
}
if req.Description != nil {
set["description"] = *req.Description
}
if req.BannersDescription != nil {
set["bannersDescription"] = *req.BannersDescription
}
if req.BannersDuration != nil {
set["bannersDuration"] = *req.BannersDuration
}
if req.HomePageCMSDescription != nil {
set["homePageCMSDescription"] = *req.HomePageCMSDescription
}
if req.Banner != nil {
banners := make([]officialwebsitemod.M, 0, len(*req.Banner))
for _, b := range *req.Banner {
banners = append(banners, b.toM())
}
set["banner"] = banners
}
if req.HeroBanner != nil {
heroBanners := make([]officialwebsitemod.M, 0, len(*req.HeroBanner))
for _, h := range *req.HeroBanner {
heroBanners = append(heroBanners, h.toM())
}
set["heroBanner"] = heroBanners
}
if req.Masterpiece != nil {
masterpiece := make([]officialwebsitemod.M, 0, len(*req.Masterpiece))
for _, m := range *req.Masterpiece {
masterpiece = append(masterpiece, m.toM())
}
set["masterpiece"] = masterpiece
}
if req.Business != nil {
businesses := make([]officialwebsitemod.M, 0, len(*req.Business))
for _, b := range *req.Business {
businesses = append(businesses, b.toM())
}
set["business"] = businesses
}
if req.AboutUs != nil {
aboutUsM := req.AboutUs.toM()
if len(aboutUsM) > 0 {
set["aboutUs"] = aboutUsM
}
}
if req.FAQ != nil {
faqs := make([]officialwebsitemod.M, 0, len(*req.FAQ))
for _, f := range *req.FAQ {
faqs = append(faqs, f.toM())
}
set["faq"] = faqs
}
if req.HomePageCMS != nil {
cms := make([]officialwebsitemod.M, 0, len(*req.HomePageCMS))
for _, h := range *req.HomePageCMS {
cms = append(cms, h.toM())
}
set["homePageCMS"] = cms
}
if req.RecruitCMS != nil {
rcms := make([]officialwebsitemod.M, 0, len(*req.RecruitCMS))
for _, r := range *req.RecruitCMS {
rcms = append(rcms, r.toM())
}
set["recruitCMS"] = rcms
}
if req.Tags != nil {
set["tags"] = *req.Tags
}
if len(set) == 0 {
return nil, nil
}
set["updatedAt"] = time.Now().UTC()
return officialwebsitemod.M{"$set": set}, nil
}