catface_backend_go/app/model/animal_like.go

65 lines
1.7 KiB
Go
Raw Normal View History

2024-10-23 12:27:38 +08:00
package model
func CreateAnimalLikeFactory(sqlType string) *AnimalLike {
return &AnimalLike{BaseModel: BaseModel{DB: UseDbConn(sqlType)}}
}
type AnimalLike struct {
BaseModel
2024-11-01 20:07:30 +08:00
UsersModelId int `gorm:"column:user_id;index" json:"user_id"`
2024-10-23 12:27:38 +08:00
UsersModel UsersModel
AnimalId int `gorm:"column:animal_id" json:"animal_id"`
Animal Animal
DeletedAt
}
func (a *AnimalLike) Create(userId, animalId int) bool {
a.UsersModelId = userId
a.AnimalId = animalId
a.Unscoped().Where("animal_id = ? AND user_id = ?", a.AnimalId, a.UsersModelId).First(a)
a.IsDel = 0
return a.Save(a).Error == nil
}
func (a *AnimalLike) SoftDelete(userId, animalId int) bool {
a.UsersModelId = userId
2024-10-23 12:51:41 +08:00
a.Unscoped().Where("animal_id = ? AND user_id = ?", animalId, a.UsersModelId).First(a)
2024-10-23 12:27:38 +08:00
return a.Delete(a).Error == nil
}
2024-10-23 12:51:41 +08:00
/**
* @description: 查询是否存在关注记录
* @param {*} userId
* @param {int} animalId
* @return {*}
*/
func (a *AnimalLike) Liked(userId, animalId int) bool {
// 需要考虑 IsDel = 0;
return a.Where("animal_id = ? AND user_id = ?", animalId, userId).First(a).RowsAffected > 0
}
2024-11-01 20:07:30 +08:00
func (a *AnimalLike) LikedBatch(userId int, animalIds []int) ([]bool, error) {
var results []AnimalLike
db := a.Where("user_id = ? AND animal_id IN (?) AND is_del = 0", userId, animalIds).Find(&results)
if db.Error != nil {
return nil, db.Error
}
// 创建一个布尔值数组,初始化为 false
likedMap := make(map[int]bool)
for _, result := range results {
likedMap[result.AnimalId] = true
}
// 构建返回结果
var likedResults []bool
for _, animalId := range animalIds {
likedResults = append(likedResults, likedMap[animalId])
}
return likedResults, nil
}