samba/util/model/clubInfo.go
2025-06-04 09:51:39 +08:00

90 lines
2.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package model
import (
"fmt"
"github.com/go-redis/redis/v8"
"gorm.io/gorm"
"samba/pkg/log"
"samba/util/rdbkey"
"samba/util/util"
)
type ClubInfo struct {
ID int `gorm:"column:id" json:"id"`
Name string `gorm:"column:name" json:"name"` // 俱乐部id
PrettyNo int `gorm:"column:pretty_no" json:"pretty_no"`
Status int `gorm:"column:status" json:"status"` // 状态1-正常0-禁用
HeadUrl string `gorm:"column:head_url" json:"head_url"`
IconId int `gorm:"column:iconid" json:"iconid"`
Exp int64 `gorm:"column:exp" json:"exp"` // 经验值
Level int `gorm:"column:level" json:"level"`
UserNums int `gorm:"column:usernums" json:"usernums"` // 俱乐部人数
SolidFee int `gorm:"column:solid_fee" json:"solid_fee"` // 固定分佣比例
Score int64 `gorm:"column:score" json:"score"` // 俱乐部积分
Creator int64 `gorm:"column:creator" json:"creator"` // 俱乐部创建者
Open int `gorm:"column:open" json:"open"` // 1打开0关闭
UserScore int64 `gorm:"column:user_score" json:"user_score"`
CreatorName string `gorm:"-" json:"-"` // 俱乐部创建者名称
}
func (t *ClubInfo) TableName() string {
return "t_club_info"
}
func (t *ClubInfo) HasRobot() bool {
// TODO 白名单配置
return true
}
type ClubInfoOp struct {
db *gorm.DB
rdb *redis.Client
}
func NewClubInfoOp() *ClubInfoOp {
return &ClubInfoOp{rdb: rdbBaseInfo, db: userDB}
}
func (op *ClubInfoOp) LoadDb(clubId int) (*ClubInfo, error) {
var user ClubInfo
result := op.db.Where("id = ? And status = 1", clubId).First(&user)
if result.Error != nil {
return nil, result.Error
}
return &user, result.Error
}
func (op *ClubInfoOp) LoadAll() ([]ClubInfo, error) {
var clubs []ClubInfo
result := op.db.Where("status = 1").Find(&clubs)
if result.Error != nil {
return nil, result.Error
}
return clubs, result.Error
}
func (op *ClubInfoOp) Load(clubId int) (*ClubInfo, error) {
exist := true
club, err := util.Redis2Struct[ClubInfo](op.rdb, rdbkey.ClubKey(clubId))
if err != nil {
log.Error(fmt.Sprintf("Load club info error: %v.key:%v", err, rdbkey.ClubKey(clubId)))
exist = false
}
creator, err := NewUserInfoOp().Load(club.Creator)
if err != nil {
return nil, err
}
club.CreatorName = creator.MNick
// 回写redis
if exist {
err = util.Struct2Redis(op.rdb, rdbkey.ClubKey(clubId), club)
if err != nil {
log.Error(fmt.Sprintf("back write club info error: %v.key:%v", err, rdbkey.ClubKey(clubId)))
}
}
return club, nil
}