@@ -0,0 +1,209 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user