animal like & list #1

This commit is contained in:
Havoc412 2024-10-23 12:51:41 +08:00
parent 3c93299f5e
commit babd68def0
6 changed files with 32 additions and 5 deletions

View File

@ -21,8 +21,9 @@ func (a *Animals) List(context *gin.Context) {
status := context.GetString(consts.ValidatorPrefix + "status")
num := context.GetFloat64(consts.ValidatorPrefix + "num")
skip := context.GetFloat64(consts.ValidatorPrefix + "skip")
userId := context.GetFloat64(consts.ValidatorPrefix + "user_id")
animals := curd.CreateAnimalsCurdFactory().List(attrs, gender, breed, sterilzation, status, int(num), int(skip))
animals := curd.CreateAnimalsCurdFactory().List(attrs, gender, breed, sterilzation, status, int(num), int(skip), int(userId))
if animals != nil {
response.Success(context, consts.CurdStatusOkMsg, animals)
} else {

View File

@ -72,5 +72,4 @@ func WebRegisterValidator() {
containers.Set(key, encounter_like.Create{})
key = consts.ValidatorPrefix + "EncounterLikeDelete"
containers.Set(key, encounter_like.Delete{})
}

View File

@ -17,6 +17,7 @@ type List struct {
Status string `form:"status" json:"status"`
Num int `form:"num" json:"num"`
Skip int `form:"skip" json:"skip"`
UserId int `form:"user_id" json:"user_id" binding:"required,min=1"`
}
func (l List) CheckParams(context *gin.Context) {

View File

@ -25,6 +25,17 @@ func (a *AnimalLike) Create(userId, animalId int) bool {
func (a *AnimalLike) SoftDelete(userId, animalId int) bool {
a.UsersModelId = userId
a.Unscoped().Where("animal_id = ? AND user_id = ?", a.AnimalId, a.UsersModelId).First(a)
a.Unscoped().Where("animal_id = ? AND user_id = ?", animalId, a.UsersModelId).First(a)
return a.Delete(a).Error == nil
}
/**
* @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
}

View File

@ -0,0 +1,6 @@
package model
type AnimalWithLikeList struct {
Animal Animal `json:"animal"`
Like bool `json:"like"`
}

View File

@ -48,7 +48,7 @@ func getSelectAttrs(attrs string) (validSelectedFields []string) {
return
}
func (a *AnimalsCurd) List(attrs string, gender string, breed string, sterilzation string, status string, num int, skip int) []model.Animal {
func (a *AnimalsCurd) List(attrs string, gender string, breed string, sterilzation string, status string, num int, skip int, userId int) (temp []model.AnimalWithLikeList) {
validSelectedFields := getSelectAttrs(attrs)
genderArray := query_handler.StringToUint8Array(gender)
breedArray := query_handler.StringToUint8Array(breed)
@ -59,7 +59,16 @@ func (a *AnimalsCurd) List(attrs string, gender string, breed string, sterilzati
num = 10
}
return model.CreateAnimalFactory("mysql").Show(validSelectedFields, genderArray, breedArray, sterilzationArray, statusArray, num, skip)
animals := model.CreateAnimalFactory("").Show(validSelectedFields, genderArray, breedArray, sterilzationArray, statusArray, num, skip)
for i := range animals {
animalWithLike := model.AnimalWithLikeList{
Animal: animals[i],
Like: model.CreateAnimalLikeFactory("").Liked(userId, int(animals[i].Id)),
}
temp = append(temp, animalWithLike)
}
return
}
func (a *AnimalsCurd) Detail(id string) *model.Animal {