Files

126 lines
3.0 KiB
Go
Raw Permalink Normal View History

package models
import (
"fmt"
"bsm/full/module/social/feed/internal/impl"
"gorm.io/gorm"
)
func InitData() error {
return nil
}
func CreatePost(data *FeedPost) error {
err := impl.DBService.Transaction(func(tx *gorm.DB) error {
if err := tx.Create(&data).Error; err != nil {
return err
}
if err := tx.Create(&data.Attachs).Error; err != nil {
return err
}
if err := tx.Create(&data.Tags).Error; err != nil {
return err
}
return nil
})
return err
}
func ChargePost(data *FeedPost) error {
err := impl.DBService.Where("identity = ?", data.Identity).Updates(&data).Error
return err
}
func DeletePost(identity string) error {
err := impl.DBService.Where("identity = ?", identity).Delete(&FeedPost{}).Error
return err
}
// 点赞/踩操作
func LikeAction(action_op, action_type, identity string) (err error) {
var column string
tx := impl.DBService
if action_type == "post" {
tx = tx.Model(&FeedPost{})
} else if action_type == "comment" {
tx = tx.Model(&FeedComment{})
}
if action_op == "ilike" {
column = "cnt_like"
} else if action_type == "unlike" {
column = "cnt_unlike"
}
if err = tx.Where("identity = ?", identity).UpdateColumn(column, gorm.Expr(fmt.Sprintf("%s + ?", column), 1)).Error; err != nil {
return err
}
return
}
// PostList
func PostList(page, size int64, tag string) (list []*FeedPost, cnt int64, err error) {
tx := impl.DBService.Order("created_at desc")
if tag != "" {
tx = tx.Joins("join feed_relate_tags on feed_relate_tags.post_identity = feed_post.identity", impl.DBService.Where(&FeedRelateTags{Key: tag}))
tx = tx.Where("key = ?", tag)
}
tx.Limit(int(page)).Offset(int((page - 1) * size))
err = tx.Find(&list).Count(&cnt).Error
fmt.Print("posts", list)
return
}
func AddTags(data *[]FeedTags) (err error) {
err = impl.DBService.Create(data).Error
if err != nil {
return err
}
return err
}
func ModifyTags(data *FeedTags) (err error) {
err = impl.DBService.Where("identity = ?", data.Key).Save(data).Error
if err != nil {
return err
}
return err
}
func DeleteTags(key string) (err error) {
err = impl.DBService.Where("identity = ?", key).Delete(&FeedTags{}).Error
if err != nil {
return err
}
return err
}
func TagsList() (list []*FeedTags, cnt int64, err error) {
tags := make([]*FeedTags, 0)
tx := impl.DBService.Order("created_at desc")
err = tx.Find(&tags).Count(&cnt).Error
return tags, cnt, err
}
func AddComment(comment *FeedComment, authorIdentity string) (err error) {
err = impl.DBService.Transaction(func(tx *gorm.DB) error {
// 添加评论,更新文章评论量
err := tx.Create(comment).Table("feed_post").Where("identity = ?", comment.PostIdentity).UpdateColumn("cnt_comment", gorm.Expr("cnt_comment + ?", 1)).Error
if err != nil {
return err
}
if comment.ParentIdentity != "" {
//更新被评论的评论数
err = tx.Where("identity = ?", comment.ParentIdentity).UpdateColumn("cnt_comment", gorm.Expr("cnt_comment + ?", 1)).Error
if err != nil {
return err
}
}
return nil
})
return
}
func DeleteComment(identity string) (err error) {
return
}