package officialwebsiteser import ( "time" "91porn-server/common/stderr" officialwebsitemod "91porn-server/models/v/officialWebsitemod" "go.mongodb.org/mongo-driver/bson/primitive" ) // ───────────────────────────────────────── // Service functions // ───────────────────────────────────────── func ListBusiness(req *BusinessListReq) (int64, []officialwebsitemod.BusinessData, error) { filter, err := req.Query() if err != nil { return 0, nil, err } mod := &officialwebsitemod.BusinessData{} total, err := mod.Count(filter) if err != nil { return 0, nil, err } list, err := mod.FindMany(filter, req.FindOptions()) if err != nil { return 0, nil, err } return total, list, nil } func CreateBusiness(req *ModifyBusinessReq) (officialwebsitemod.BusinessData, error) { data := req.toMod() if err := data.Create(); err != nil { return officialwebsitemod.BusinessData{}, err } return data, nil } func UpdateBusiness(req *ModifyBusinessReq) (resp CountResp, 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.BusinessData{} if err = mod.FindOne(officialwebsitemod.M{"_id": id}); 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) return } func DeleteBusiness(req *DeleteBusinessReq) (data DeleteBusinessResp, 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.BusinessData{} data.Count, err = mod.Delete(officialwebsitemod.M{"_id": id}) return } // ───────────────────────────────────────── // Mutation (Modify) types // ───────────────────────────────────────── type ModifyBusinessReq struct { ID string `json:"id" form:"id"` Title *string `json:"title"` Description *string `json:"description"` Type *string `json:"type"` ServiceOverview *string `json:"serviceOverview"` CollaborationProcess *string `json:"collaborationProcess"` CaseStudies *string `json:"caseStudies"` } // ───────────────────────────────────────── // Delete types // ───────────────────────────────────────── type DeleteBusinessReq struct { ID string `json:"id" form:"id"` } type DeleteBusinessResp struct { Count int64 `json:"count"` } // ───────────────────────────────────────── // toMod — ModifyBusinessReq → model struct // ───────────────────────────────────────── func (req *ModifyBusinessReq) toMod() officialwebsitemod.BusinessData { if req == nil { return officialwebsitemod.BusinessData{} } return officialwebsitemod.BusinessData{ Title: stringOrZero(req.Title), Description: stringOrZero(req.Description), Type: stringOrZero(req.Type), ServiceOverview: stringOrZero(req.ServiceOverview), CollaborationProcess: stringOrZero(req.CollaborationProcess), CaseStudies: stringOrZero(req.CaseStudies), } } // ───────────────────────────────────────── // toM — ModifyBusinessReq → officialwebsitemod.M // ───────────────────────────────────────── func (req *ModifyBusinessReq) 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.Type != nil { set["type"] = *req.Type } if req.ServiceOverview != nil { set["serviceOverview"] = *req.ServiceOverview } if req.CollaborationProcess != nil { set["collaborationProcess"] = *req.CollaborationProcess } if req.CaseStudies != nil { set["caseStudies"] = *req.CaseStudies } if len(set) == 0 { return nil, nil } set["updatedAt"] = time.Now().UTC() return officialwebsitemod.M{"$set": set}, nil } // ───────────────────────────────────────── // List types // ───────────────────────────────────────── type BusinessListReq struct { PageReq ID *string `form:"id"` Title *string `form:"title"` Description *string `form:"description"` Type *string `form:"type"` ServiceOverview *string `form:"serviceOverview"` CollaborationProcess *string `form:"collaborationProcess"` CaseStudies *string `form:"caseStudies"` CreatedAt *time.Time `form:"createdAt"` UpdatedAt *time.Time `form:"updatedAt"` DeletedAt *time.Time `form:"deletedAt"` } func (r *BusinessListReq) Query() (officialwebsitemod.M, error) { filter := officialwebsitemod.M{} if err := parseObjectIDFilter(filter, "_id", r.ID); err != nil { return nil, err } if r.Title != nil { filter["title"] = *r.Title } if r.Description != nil { filter["description"] = *r.Description } if r.Type != nil { filter["type"] = *r.Type } if r.ServiceOverview != nil { filter["serviceOverview"] = *r.ServiceOverview } if r.CollaborationProcess != nil { filter["collaborationProcess"] = *r.CollaborationProcess } if r.CaseStudies != nil { filter["caseStudies"] = *r.CaseStudies } if r.CreatedAt != nil { filter["createdAt"] = *r.CreatedAt } if r.UpdatedAt != nil { filter["updatedAt"] = *r.UpdatedAt } if r.DeletedAt != nil { filter["deletedAt"] = *r.DeletedAt } return filter, nil }