|
|
|
package user
|
|
|
|
|
|
|
|
import (
|
|
|
|
"gorm.io/gorm"
|
|
|
|
"live/app/lib/db"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
LiveTreatyNone = 0
|
|
|
|
LiveTreatyAgree = 1
|
|
|
|
)
|
|
|
|
|
|
|
|
type UserData struct {
|
|
|
|
db.BaseModel
|
|
|
|
Id uint `gorm:"column:id" json:"id"`
|
|
|
|
UserId uint `gorm:"column:user_id" json:"userId"`
|
|
|
|
Follows uint `gorm:"column:follows" json:"follows"`
|
|
|
|
Fans uint `gorm:"column:fans" json:"fans"`
|
|
|
|
Praise uint `gorm:"column:praise" json:"praise"`
|
|
|
|
LiveTreaty uint `gorm:"column:live_treaty" json:"liveTreaty"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// 插入
|
|
|
|
func (u *UserData) Create(userData *UserData) uint {
|
|
|
|
u.GetDb().Model(u).Create(userData)
|
|
|
|
if userData.Id > 0 {
|
|
|
|
return userData.Id
|
|
|
|
}
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
// @Title 获取会员统计数据
|
|
|
|
// @Param userId uint true "会员userId"
|
|
|
|
func (u *UserData) GetByUserId(userId uint) (result UserData) {
|
|
|
|
if userId == 0 {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
u.GetDb().Model(u).First(&result, &UserData{UserId: userId})
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// @Title 根据userIds获取统计数据
|
|
|
|
// @Param userIds uint true "会员userIds"
|
|
|
|
func (u *UserData) GetByUserIds(userIds []uint) (result []UserData) {
|
|
|
|
if len(userIds) == 0 {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
u.GetDb().Model(u).Find(&result, "user_id in (?)", userIds)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// @Title 添加会员关注
|
|
|
|
func (u *UserData) AddFollow(userId uint) int64 {
|
|
|
|
if userId == 0 {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
rows := u.GetDb().Model(u).Where("user_id = ?", userId).Update("follows", gorm.Expr("follows + ?", 1)).RowsAffected
|
|
|
|
if rows == 0 {
|
|
|
|
id := u.GetDb().Create(&UserData{
|
|
|
|
UserId: userId,
|
|
|
|
Follows: 1,
|
|
|
|
}).RowsAffected
|
|
|
|
if id != 0 {
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return rows
|
|
|
|
}
|
|
|
|
|
|
|
|
// @Title 取消会员关注
|
|
|
|
func (u *UserData) CancelFollow(userId uint) int64 {
|
|
|
|
if userId == 0 {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
return u.GetDb().Model(u).Where("user_id = ?", userId).Update("follows", gorm.Expr("follows - ?", 1)).RowsAffected
|
|
|
|
}
|
|
|
|
|
|
|
|
// @Title 会员新增粉丝
|
|
|
|
func (u *UserData) AddFans(userId uint) int64 {
|
|
|
|
if userId == 0 {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
rows := u.GetDb().Model(u).Where("user_id = ?", userId).Update("fans", gorm.Expr("fans + ?", 1)).RowsAffected
|
|
|
|
if rows == 0 {
|
|
|
|
id := u.GetDb().Create(&UserData{
|
|
|
|
UserId: userId,
|
|
|
|
Fans: 1,
|
|
|
|
}).RowsAffected
|
|
|
|
if id != 0 {
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return rows
|
|
|
|
}
|
|
|
|
|
|
|
|
// @Title 会员取消粉丝
|
|
|
|
func (u *UserData) CancelFans(userId uint) int64 {
|
|
|
|
if userId == 0 {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
return u.GetDb().Model(u).Where("user_id = ?", userId).Update("fans", gorm.Expr("fans - ?", 1)).RowsAffected
|
|
|
|
}
|
|
|
|
|
|
|
|
// @Title 会员新增赞
|
|
|
|
func (u *UserData) AddPraise(userId, praise uint) int64 {
|
|
|
|
if userId == 0 {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
rows := u.GetDb().Model(u).Where("user_id = ?", userId).Update("praise", gorm.Expr("praise + ?", praise)).RowsAffected
|
|
|
|
if rows == 0 {
|
|
|
|
id := u.GetDb().Create(&UserData{
|
|
|
|
UserId: userId,
|
|
|
|
Praise: praise,
|
|
|
|
}).RowsAffected
|
|
|
|
if id != 0 {
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return rows
|
|
|
|
}
|
|
|
|
|
|
|
|
// @Title 会员取消赞
|
|
|
|
func (u *UserData) CancelPraise(userId uint) int64 {
|
|
|
|
if userId == 0 {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
return u.GetDb().Model(u).Where("user_id = ?", userId).Update("praise", gorm.Expr("praise - ?", 1)).RowsAffected
|
|
|
|
}
|
|
|
|
|
|
|
|
// @Title 同意直播协议
|
|
|
|
func (u *UserData) Treaty(userId uint) int64 {
|
|
|
|
if userId == 0 {
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
return u.GetDb().Model(u).Where("user_id = ?", userId).Update("live_treaty", LiveTreatyAgree).RowsAffected
|
|
|
|
}
|