package service
import (
"beeblog/models"
"beeblog/utils"
"fmt"
"github.com/beego/beego/v2/client/orm"
)
type LikeService struct {
}
func ( this * LikeService ) SaveLike ( like * models . Like ) ( int64 , error ) {
return orm . NewOrm ( ) . Insert ( like )
}
func ( this * LikeService ) DelLike ( like * models . Like ) ( int64 , error ) {
return orm . NewOrm ( ) . QueryTable ( models . Like { } ) . Filter ( "BlogId" , like . BlogId ) . Filter ( "UserId" , like . UserId ) . Delete ( )
}
func ( this * LikeService ) IsLike ( bid int64 , uid int64 ) ( bool , error ) {
totalCount , err := orm . NewOrm ( ) . QueryTable ( & models . Like { } ) . Filter ( "BlogId" , bid ) . Filter ( "UserId" , uid ) . Count ( )
if err == nil {
fmt . Println ( totalCount , "like count" )
if totalCount > 0 {
return true , nil
} else {
return false , nil
}
} else {
fmt . Println ( err )
return false , err
}
}
func ( this * LikeService ) MeLikes ( num int , size int , uid int64 ) ( * utils . Page , error ) {
page , err := this . countLike ( num , size , uid )
if err != nil {
return nil , err
}
var likes [ ] * models . Like
o := orm . NewOrm ( )
qs := o . QueryTable ( & models . Like { } )
qs = qs . Filter ( "UserId" , uid )
qs = qs . Limit ( size , ( page . PageNo - 1 ) * size )
if _ , err = qs . All ( & likes ) ; err != nil {
return nil , err
}
if len ( likes ) > 0 {
for i := 0 ; i < len ( likes ) ; i ++ {
blog := & models . Blog { Id : likes [ i ] . BlogId }
if err := o . Read ( blog ) ; err == nil {
likes [ i ] . Blog = blog
}
}
}
page . List = likes
return page , nil
}
func ( this * LikeService ) countLike ( num int , size int , uid int64 ) ( * utils . Page , error ) {
o := orm . NewOrm ( )
qs := o . QueryTable ( & models . Like { } )
totalCount , err := qs . Filter ( "UserId" , uid ) . Count ( )
if err != nil {
return nil , err
}
return utils . PageUtil ( totalCount , num , size ) , nil
}
func ( likeService LikeService ) DelLikeByBlog ( id int64 ) {
orm . NewOrm ( ) . QueryTable ( models . Like { } ) . Filter ( "BlogId" , id ) . Delete ( )
}