init: web_hgdjc_server
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
package srv_announcement
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
"videoweb/pub/common/srvdef"
|
||||
"videoweb/pub/models/announcementmod"
|
||||
"videoweb/pub/mongos"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
)
|
||||
|
||||
func GetAnnouncementList(ctx context.Context, req *GetAnnouncementListReq) (*GetAnnouncementListResp, *srvdef.SrvErr) {
|
||||
filter := bson.M{}
|
||||
if req.Title != nil && *req.Title != "" {
|
||||
filter[announcementmod.FN.Announcement.Title] = bson.M{"$regex": *req.Title, "$options": "i"}
|
||||
}
|
||||
if req.Status != nil {
|
||||
filter[announcementmod.FN.Announcement.Status] = *req.Status
|
||||
}
|
||||
|
||||
count, serr := announcementmod.CountAnnouncement(ctx, filter)
|
||||
if serr != nil {
|
||||
return nil, serr
|
||||
}
|
||||
if count == 0 {
|
||||
return &GetAnnouncementListResp{
|
||||
Total: 0,
|
||||
List: make(announcementmod.AnnouncementList, 0),
|
||||
}, nil
|
||||
}
|
||||
|
||||
opts := options.FindOptions{}
|
||||
opts.SetSort(bson.D{
|
||||
{Key: announcementmod.FN.Announcement.Sort, Value: -1},
|
||||
{Key: announcementmod.FN.Announcement.CreatedAt, Value: -1},
|
||||
})
|
||||
opts.SetLimit(req.PageSize)
|
||||
opts.SetSkip((req.PageNum - 1) * req.PageSize)
|
||||
|
||||
list, serr := announcementmod.FindManyAnnouncement(ctx, filter, &opts)
|
||||
if serr != nil {
|
||||
return nil, serr
|
||||
}
|
||||
|
||||
return &GetAnnouncementListResp{
|
||||
Total: count,
|
||||
List: list,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func AddAnnouncement(ctx context.Context, req *AddAnnouncementReq) *srvdef.SrvErr {
|
||||
now := time.Now()
|
||||
status := true
|
||||
if req.Status != nil {
|
||||
status = *req.Status
|
||||
}
|
||||
doc := &announcementmod.Announcement{
|
||||
Id: mongos.Lid.Announcement.Get(),
|
||||
Title: req.Title,
|
||||
Content: req.Content,
|
||||
Sort: req.Sort,
|
||||
Status: status,
|
||||
CreatedAt: now,
|
||||
UpdatedAt: now,
|
||||
}
|
||||
return announcementmod.InsertOneAnnouncement(ctx, doc)
|
||||
}
|
||||
|
||||
func UpdateAnnouncement(ctx context.Context, req *UpdateAnnouncementReq) *srvdef.SrvErr {
|
||||
filter := bson.M{announcementmod.FN.Announcement.Id: req.Id}
|
||||
updateFields := bson.M{
|
||||
announcementmod.FN.Announcement.UpdatedAt: time.Now(),
|
||||
}
|
||||
if req.Param.Title != nil {
|
||||
updateFields[announcementmod.FN.Announcement.Title] = *req.Param.Title
|
||||
}
|
||||
if req.Param.Content != nil {
|
||||
updateFields[announcementmod.FN.Announcement.Content] = *req.Param.Content
|
||||
}
|
||||
if req.Param.Sort != nil {
|
||||
updateFields[announcementmod.FN.Announcement.Sort] = *req.Param.Sort
|
||||
}
|
||||
if req.Param.Status != nil {
|
||||
updateFields[announcementmod.FN.Announcement.Status] = *req.Param.Status
|
||||
}
|
||||
return announcementmod.UpdateOneAnnouncement(ctx, filter, bson.M{"$set": updateFields})
|
||||
}
|
||||
|
||||
func DelAnnouncement(ctx context.Context, req *DelAnnouncementReq) *srvdef.SrvErr {
|
||||
filter := bson.M{announcementmod.FN.Announcement.Id: req.Id}
|
||||
count, serr := announcementmod.DelOneAnnouncement(ctx, filter)
|
||||
if serr != nil {
|
||||
return serr
|
||||
}
|
||||
if count == 0 {
|
||||
return srvdef.New(srvdef.ErrAnnouncementNotExsit, "", "")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user