diff --git a/cv/user_cv/level.go b/cv/user_cv/level.go index af1001c235a2150173490240af2b8c6f721ca145..182477fcc0c71da8aee7c9a472ca05ad47ac4f72 100644 --- a/cv/user_cv/level.go +++ b/cv/user_cv/level.go @@ -6,6 +6,8 @@ type MGetUserLevelData map[mysql.ID]CvUserLevel type CvUserLevel struct { UserId mysql.ID `json:"userId"` // 用户id - WealthUserGrade uint32 `json:"wealthUserGrade"` //财富等级 - CharmUserGrade uint32 `json:"charmUserGrade"` //魅力等级 + WealthUserGrade uint32 `json:"wealthUserGrade"` // 财富等级 + CharmUserGrade uint32 `json:"charmUserGrade"` // 魅力等级 + ActiveUserGrade uint32 `json:"activeUserGrade"` // 活跃等级 + NobleLevel uint16 `json:"nobleLevel"` // 贵族等级 } diff --git a/domain/model/noble_m/userNoble.go b/domain/model/noble_m/userNoble.go index 06daa123246069f0ac82a91b87ac15941619bd1e..02872c63dc534ff0ca1035198980850f8885ce95 100644 --- a/domain/model/noble_m/userNoble.go +++ b/domain/model/noble_m/userNoble.go @@ -1,6 +1,7 @@ package noble_m import ( + "git.hilo.cn/hilo-common/domain" "git.hilo.cn/hilo-common/resource/mysql" "gorm.io/gorm" "time" @@ -78,8 +79,8 @@ func GetNobleLevel(db *gorm.DB, userId uint64) (uint16, error) { } } -func BatchGetNobleLevel(db *gorm.DB, userIds []uint64) (map[uint64]uint16, error) { - m, err := BatchGetActiveNoble(db, userIds) +func BatchGetNobleLevel(model *domain.Model, userIds []uint64) (map[uint64]uint16, error) { + m, err := BatchGetActiveNoble(model, userIds) if err != nil { return nil, err } @@ -90,10 +91,10 @@ func BatchGetNobleLevel(db *gorm.DB, userIds []uint64) (map[uint64]uint16, error return result, nil } -func BatchGetActiveNoble(db *gorm.DB, userIds []uint64) (map[uint64]UserNoble, error) { +func BatchGetActiveNoble(model *domain.Model, userIds []uint64) (map[uint64]UserNoble, error) { ub := UserNoble{} - records, err := ub.batchGet(db, userIds) + records, err := ub.batchGet(model, userIds) if err != nil { return nil, err } @@ -110,9 +111,9 @@ func BatchGetActiveNoble(db *gorm.DB, userIds []uint64) (map[uint64]UserNoble, e } // 查询用户未过期的贵族 -func (ub *UserNoble) batchGet(db *gorm.DB, userIds []uint64) (map[uint64][]UserNoble, error) { +func (ub *UserNoble) batchGet(model *domain.Model, userIds []uint64) (map[uint64][]UserNoble, error) { rows := make([]UserNoble, 0) - if err := db.Model(ub).Where("end_time>=NOW() AND user_id IN ?", userIds).Order("level DESC").Find(&rows).Error; err != nil { + if err := model.DB().Model(ub).Where("end_time>=NOW() AND user_id IN ?", userIds).Order("level DESC").Find(&rows).Error; err != nil { return nil, err } result := make(map[uint64][]UserNoble, 0) diff --git a/domain/model/user_m/matchActive.go b/domain/model/user_m/matchActive.go new file mode 100644 index 0000000000000000000000000000000000000000..dfd6ec1dd91c85c668dc3dd1d01b73767fb41a3f --- /dev/null +++ b/domain/model/user_m/matchActive.go @@ -0,0 +1,31 @@ +package user_m + +import ( + "git.hilo.cn/hilo-common/domain" + "git.hilo.cn/hilo-common/resource/mysql" +) + +/** + * 用户活跃分数 + **/ +type MatchActityUserScore struct { + mysql.Entity + *domain.Model `gorm:"-"` + UserId mysql.ID + Score mysql.Num + Grade mysql.Num +} + +// 获取活跃等级 +func MGetActiveGrade(model *domain.Model, userIds []mysql.ID) (map[mysql.ID]mysql.Num, error) { + res := make(map[mysql.ID]mysql.Num) + var rows []MatchActityUserScore + if err := mysql.Db.Model(&MatchActityUserScore{}).Where("user_id in ?", userIds).Find(&rows).Error; err != nil { + model.Log.Errorf("MGetActiveGrade fail:%v", err) + return res, err + } + for _, r := range rows { + res[r.UserId] = r.Grade + } + return res, nil +} diff --git a/route/user_r/inner.go b/route/user_r/inner.go index aaad537b61c904bf049788e3ac7837a67aae6e28..cb1d62715674ab89d84c65c9c3dc9f8d2b620f2c 100644 --- a/route/user_r/inner.go +++ b/route/user_r/inner.go @@ -7,6 +7,7 @@ import ( "github.com/gin-gonic/gin" "hilo-user/cv/user_cv" "hilo-user/domain/model/bag_m" + "hilo-user/domain/model/noble_m" "hilo-user/domain/model/res_m" "hilo-user/domain/model/user_m" "hilo-user/resp" @@ -34,12 +35,16 @@ func MGetUserLevels(c *gin.Context) (*mycontext.MyContext, error) { return myCtx, err } charmGrade, err := user_m.MGetCharmGrade(model, req.Ids) + activeGrade, err := user_m.MGetActiveGrade(model, req.Ids) + nobleLevel, err := noble_m.BatchGetNobleLevel(model, req.Ids) response := user_cv.MGetUserLevelData{} for _, userId := range req.Ids { response[userId] = user_cv.CvUserLevel{ UserId: userId, WealthUserGrade: wealthGrade[userId], CharmUserGrade: charmGrade[userId], + ActiveUserGrade: activeGrade[userId], + NobleLevel: nobleLevel[userId], } }