From 03117f5b6e1b26a0505556eb965dc73491787906 Mon Sep 17 00:00:00 2001 From: hujiebin Date: Wed, 19 Apr 2023 17:56:16 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=E4=B8=B0=E5=AF=8C=E7=AD=89=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cv/user_cv/level.go | 6 ++++-- domain/model/noble_m/userNoble.go | 13 +++++++------ domain/model/user_m/matchActive.go | 31 ++++++++++++++++++++++++++++++ route/user_r/inner.go | 5 +++++ 4 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 domain/model/user_m/matchActive.go diff --git a/cv/user_cv/level.go b/cv/user_cv/level.go index af1001c..bb7228d 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 06daa12..02872c6 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 0000000..dfd6ec1 --- /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 aaad537..cb1d627 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], } } -- 2.22.0 From caf41b50bd1806eacaeb269613abb32922fd699d Mon Sep 17 00:00:00 2001 From: hujiebin Date: Wed, 19 Apr 2023 17:57:37 +0800 Subject: [PATCH 2/2] Update level.go --- cv/user_cv/level.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cv/user_cv/level.go b/cv/user_cv/level.go index bb7228d..182477f 100644 --- a/cv/user_cv/level.go +++ b/cv/user_cv/level.go @@ -9,5 +9,5 @@ type CvUserLevel struct { WealthUserGrade uint32 `json:"wealthUserGrade"` // 财富等级 CharmUserGrade uint32 `json:"charmUserGrade"` // 魅力等级 ActiveUserGrade uint32 `json:"activeUserGrade"` // 活跃等级 - NobleLevel uint16 `json:"nobleLevel"` // 贵族等级 + NobleLevel uint16 `json:"nobleLevel"` // 贵族等级 } -- 2.22.0