Commit e30947cd authored by hujiebin's avatar hujiebin

Merge branch 'master' into feature/3.7.0-up

parents 5bf4f1b1 beb01f97
...@@ -15,4 +15,5 @@ func Init() { ...@@ -15,4 +15,5 @@ func Init() {
gift_cron.GiftRemark() // 礼物消息补偿 gift_cron.GiftRemark() // 礼物消息补偿
mic_cron.OnMicCheck() // 检查上麦 mic_cron.OnMicCheck() // 检查上麦
group_cron.GroupPowerExpClear() // 清理家族经验/等级 group_cron.GroupPowerExpClear() // 清理家族经验/等级
group_cron.GroupPowerMonthRankAct()
} }
package group_cron
import (
"git.hilo.cn/hilo-common/domain"
"github.com/robfig/cron"
"hilo-group/domain/service/group_power_s"
)
// 家族贡献月度排行榜发奖
func GroupPowerMonthRankAct() {
c := cron.New()
// 每月1号0:01结算发奖
spec := "0 1 0 1 * ?"
_ = c.AddFunc(spec, func() {
var model = domain.CreateModelNil()
if err := group_power_s.CalcGroupPowerMonthRankAct(model); err != nil {
model.Log.Errorf("GroupPowerMonthRankAct fail:%v", err)
}
})
c.Start()
}
...@@ -40,10 +40,20 @@ type CvGroupPowerRank struct { ...@@ -40,10 +40,20 @@ type CvGroupPowerRank struct {
Items []CvGroupPowerRankData `json:"items"` // 列表 Items []CvGroupPowerRankData `json:"items"` // 列表
} }
// 家族月度排行活动榜单
type CvGroupPowerRankMontAct struct {
MyGroupPower *CvGroupPowerRankData `json:"myGroupPower"` // 我的家族排名
Items []CvGroupPowerRankData `json:"items"` // 列表
MyGroupPowerLast *CvGroupPowerRankData `json:"myGroupPowerLast"` // 我的家族排名(上月)
ItemsLast []CvGroupPowerRankData `json:"itemsLast"` // 列表(上月)
LeftSecond int64 `json:"leftSecond"` // 活动倒计时
}
type CvGroupPowerRankData struct { type CvGroupPowerRankData struct {
CvGroupPowerBase `json:",inline"` CvGroupPowerBase `json:",inline"`
CvGroupPowerGrade `json:",inline"` CvGroupPowerGrade `json:",inline"`
Rank int `json:"rank"` // 排名 Rank int `json:"rank"` // 排名
StarList []*CvGroupPowerStarData `json:"starList"` // 家族贡献top10
} }
// 家族之星 // 家族之星
...@@ -108,6 +118,6 @@ var GroupPowerGradePrivilegeNum = map[groupPower_e.GroupPowerGrade][]CvPrivilege ...@@ -108,6 +118,6 @@ var GroupPowerGradePrivilegeNum = map[groupPower_e.GroupPowerGrade][]CvPrivilege
{groupPower_e.GroupPowerPrivilegeNameplate, 1, "https://image.whoisamy.shop/hilo/resource/family/nameplate_yellow.png"}, {groupPower_e.GroupPowerPrivilegeNameplate, 1, "https://image.whoisamy.shop/hilo/resource/family/nameplate_yellow.png"},
{groupPower_e.GroupPowerPrivilegeMedal, 1, "https://image.whoisamy.shop/hilo/resource/family/privilege_yellow.png"}, {groupPower_e.GroupPowerPrivilegeMedal, 1, "https://image.whoisamy.shop/hilo/resource/family/privilege_yellow.png"},
{groupPower_e.GroupPowerPrivilegeNameplateEdit, 1, "https://image.whoisamy.shop/hilo/resource/family/edit_yellow.png"}, {groupPower_e.GroupPowerPrivilegeNameplateEdit, 1, "https://image.whoisamy.shop/hilo/resource/family/edit_yellow.png"},
{groupPower_e.GroupPowerPrivilegeNameplateHeadwear, 1,"https://image.whoisamy.shop/hilo/resource/family/headwear_yellow.png"}, {groupPower_e.GroupPowerPrivilegeNameplateHeadwear, 1, "https://image.whoisamy.shop/hilo/resource/family/headwear_yellow.png"},
}, },
} }
...@@ -43,6 +43,17 @@ type GroupPowerUser struct { ...@@ -43,6 +43,17 @@ type GroupPowerUser struct {
Role groupPower_e.GroupPowerUserRole Role groupPower_e.GroupPowerUserRole
} }
type ActFamilyMonthRankLog struct {
Id uint64 `json:"id"`
Period string `json:"period"`
FamilyId uint64 `json:"family_id"`
RankFamily int `json:"rank_family"`
RankUser int `json:"rank_user"`
UserId uint64 `json:"user_id"`
Award string `json:"award"`
Area int `json:"area"`
}
func (gpu *GroupPowerUser) Get(db *gorm.DB) ([]GroupPowerUser, error) { func (gpu *GroupPowerUser) Get(db *gorm.DB) ([]GroupPowerUser, error) {
rows := make([]GroupPowerUser, 0) rows := make([]GroupPowerUser, 0)
err := db.Where(gpu).Find(&rows).Error err := db.Where(gpu).Find(&rows).Error
...@@ -64,6 +75,22 @@ func GetPowerOwner(db *gorm.DB, powerId uint64) (uint64, error) { ...@@ -64,6 +75,22 @@ func GetPowerOwner(db *gorm.DB, powerId uint64) (uint64, error) {
return records[0].UserId, nil return records[0].UserId, nil
} }
func GetPowerOwnerMap(model *domain.Model, powerIds []uint64) (map[uint64]uint64, error) {
rows := make([]GroupPowerUser, 0)
if len(powerIds) > 0 {
if err := model.DB().Model(&GroupPowerUser{}).
Where("group_power_id IN ? and role = ?", powerIds, groupPower_e.GroupPowerUserRoleMgr).
Find(&rows).Error; err != nil {
return nil, err
}
}
result := make(map[uint64]uint64, 0)
for _, i := range rows {
result[i.GroupPowerId] = i.UserId
}
return result, nil
}
func GetMyPowerId(db *gorm.DB, userId uint64) (uint64, error) { func GetMyPowerId(db *gorm.DB, userId uint64) (uint64, error) {
gpu := GroupPowerUser{UserId: userId, Role: groupPower_e.GroupPowerUserRoleMgr} gpu := GroupPowerUser{UserId: userId, Role: groupPower_e.GroupPowerUserRoleMgr}
records, err := gpu.Get(db) records, err := gpu.Get(db)
...@@ -707,3 +734,7 @@ func BatchGetGroupPowerUser(model *domain.Model, userIds []mysql.ID) (map[mysql. ...@@ -707,3 +734,7 @@ func BatchGetGroupPowerUser(model *domain.Model, userIds []mysql.ID) (map[mysql.
} }
return res, nil return res, nil
} }
func CreateActFamilyMonthRankLog(model *domain.Model, list []*ActFamilyMonthRankLog) error {
return model.DB().CreateInBatches(&list, 50).Error
}
...@@ -4,6 +4,7 @@ import ( ...@@ -4,6 +4,7 @@ import (
"git.hilo.cn/hilo-common/domain" "git.hilo.cn/hilo-common/domain"
"git.hilo.cn/hilo-common/resource/mysql" "git.hilo.cn/hilo-common/resource/mysql"
"gorm.io/gorm" "gorm.io/gorm"
"hilo-group/_const/enum/groupPower_e"
) )
type GroupPowerExpRank struct { type GroupPowerExpRank struct {
...@@ -14,10 +15,18 @@ type GroupPowerExpRank struct { ...@@ -14,10 +15,18 @@ type GroupPowerExpRank struct {
// 获取家族经验排行榜 // 获取家族经验排行榜
// param limit: 排行榜人数 // param limit: 排行榜人数
func GetGroupPowerExpRank(model *domain.Model, beginDate, endDate string, limit int) ([]GroupPowerExpRank, error) { func GetGroupPowerExpRank(model *domain.Model, beginDate, endDate string, limit int, gpStatus groupPower_e.GroupPowerStatus, area int) ([]GroupPowerExpRank, error) {
var res []GroupPowerExpRank var res []GroupPowerExpRank
if err := model.DB().Table("group_power_day_exp").Select("group_power_id,SUM(exp) as exp"). db := model.DB().Table("group_power_day_exp gpd").Select("gpd.group_power_id,SUM(gpd.exp) as exp").
Where("date BETWEEN ? AND ?", beginDate, endDate).Group("group_power_id").Order("exp DESC").Limit(limit).Find(&res).Error; err != nil { Where("gpd.date BETWEEN ? AND ?", beginDate, endDate)
if gpStatus > 0 {
db = db.Joins("left join group_power gp on gpd.group_power_id = gp.id").Where("gp.status = ?", gpStatus)
if area > 0 {
db = db.Joins("left join group_info gi on gp.group_uid = gi.im_group_id left join res_country rs on gi.country = rs.name").
Where("rs.area = ?", area)
}
}
if err := db.Group("gpd.group_power_id").Order("exp DESC").Limit(limit).Find(&res).Error; err != nil {
model.Log.Errorf("GetGroupPowerExpRank fail:%v", err) model.Log.Errorf("GetGroupPowerExpRank fail:%v", err)
return res, err return res, err
} }
......
...@@ -104,9 +104,9 @@ func GetGroupPowerMonthStar(model *domain.Model, groupPowerId, userId mysql.ID, ...@@ -104,9 +104,9 @@ func GetGroupPowerMonthStar(model *domain.Model, groupPowerId, userId mysql.ID,
} }
// 获取家族之星排行 // 获取家族之星排行
func GetGroupPowerMonthStarRank(model *domain.Model, groupPowerId mysql.ID, _type groupPower_e.GroupPowerStarType, offset, limit int) ([]*GroupPowerMonthStar, error) { func GetGroupPowerMonthStarRank(model *domain.Model, groupPowerId mysql.ID, _type groupPower_e.GroupPowerStarType, offset, limit int, month string) ([]*GroupPowerMonthStar, error) {
var res []*GroupPowerMonthStar var res []*GroupPowerMonthStar
month := time.Now().Format("200601") //month := time.Now().Format("200601")
if err := model.DB().Model(GroupPowerMonthStar{}).Where("month = ? AND group_power_id = ? AND `type` = ?", month, groupPowerId, _type). if err := model.DB().Model(GroupPowerMonthStar{}).Where("month = ? AND group_power_id = ? AND `type` = ?", month, groupPowerId, _type).
Order("score desc").Offset(offset).Limit(limit).Find(&res).Error; err != nil { Order("score desc").Offset(offset).Limit(limit).Find(&res).Error; err != nil {
model.Log.Errorf("GetGroupPowerMonthStarRank fail:%v", err) model.Log.Errorf("GetGroupPowerMonthStarRank fail:%v", err)
......
...@@ -25,7 +25,7 @@ type UserOnMic struct { ...@@ -25,7 +25,7 @@ type UserOnMic struct {
// 允许返回gorm.ErrRecordNotFound // 允许返回gorm.ErrRecordNotFound
func GetUserOnMic(model *domain.Model, userId mysql.ID, tz timezone_e.Timezone) (*UserOnMic, error) { func GetUserOnMic(model *domain.Model, userId mysql.ID, tz timezone_e.Timezone) (*UserOnMic, error) {
res := new(UserOnMic) res := new(UserOnMic)
day := time.Now().Format("2006-01-02") day := time.Now().In(timezone_e.TimezoneLocMap[tz]).Format("2006-01-02")
if err := model.DB().Where("date = ? AND user_id = ? AND tz = ?", day, userId, tz).First(res).Error; err != nil { if err := model.DB().Where("date = ? AND user_id = ? AND tz = ?", day, userId, tz).First(res).Error; err != nil {
return nil, err return nil, err
} }
......
...@@ -553,6 +553,8 @@ func OnMic() { ...@@ -553,6 +553,8 @@ func OnMic() {
} else { } else {
model.Log.Infof("cron micIn IncrUserOnMic success,userId:%v", event.UserId) model.Log.Infof("cron micIn IncrUserOnMic success,userId:%v", event.UserId)
} }
// 处理活动数据
go rpc.AddActPoint(model, event.UserId, 1, 0)
return nil return nil
}) })
} }
This diff is collapsed.
...@@ -5,6 +5,7 @@ import ( ...@@ -5,6 +5,7 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"git.hilo.cn/hilo-common/domain" "git.hilo.cn/hilo-common/domain"
"git.hilo.cn/hilo-common/mycontext"
"git.hilo.cn/hilo-common/mylogrus" "git.hilo.cn/hilo-common/mylogrus"
"git.hilo.cn/hilo-common/resource/config" "git.hilo.cn/hilo-common/resource/config"
"git.hilo.cn/hilo-common/resource/mysql" "git.hilo.cn/hilo-common/resource/mysql"
...@@ -41,6 +42,10 @@ func (s *GroupService) CreateGroup(userId uint64, g *group_m.GroupInfo) error { ...@@ -41,6 +42,10 @@ func (s *GroupService) CreateGroup(userId uint64, g *group_m.GroupInfo) error {
if err := group_m.CreateGroupRole(model, g.ImGroupId, userId, group_e.GROUP_OWNER); err != nil { if err := group_m.CreateGroupRole(model, g.ImGroupId, userId, group_e.GROUP_OWNER); err != nil {
return err return err
} }
// 新房间标记成trtc房间
if err := group_m.InitTRTC(model, g.ImGroupId); err != nil {
model.Log.Errorf("CreateGroup g:%+v, err:%v", g, err)
}
return nil return nil
}) })
} }
...@@ -117,9 +122,10 @@ func (s *GroupService) LeaveGroupMember(model *domain.Model, groupId string, use ...@@ -117,9 +122,10 @@ func (s *GroupService) LeaveGroupMember(model *domain.Model, groupId string, use
} }
//进入房间, 返回channelId, err //进入房间, 返回channelId, err
func (s *GroupService) GroupIn(userId uint64, externalId string, groupUuid string, password, imei, ip string, provider group_e.GroupProvider) (string, string, error) { func (s *GroupService) GroupIn(userId uint64, externalId string, groupUuid string, password, imei, ip string, provider group_e.GroupProvider, roomId int64) (string, string, error) {
var channelId string var channelId string
var token string var token string
var rideId uint64
err := s.svc.Transactional(func() error { err := s.svc.Transactional(func() error {
//检查群组是否存在, 没有真正的domel,直接service上怼 //检查群组是否存在, 没有真正的domel,直接service上怼
model := domain.CreateModel(s.svc.CtxAndDb) model := domain.CreateModel(s.svc.CtxAndDb)
...@@ -160,6 +166,11 @@ func (s *GroupService) GroupIn(userId uint64, externalId string, groupUuid strin ...@@ -160,6 +166,11 @@ func (s *GroupService) GroupIn(userId uint64, externalId string, groupUuid strin
} }
// 不是超管 且 用户是否在群的黑名单中 // 不是超管 且 用户是否在群的黑名单中
if !isM && group_m.InGroupBlackList(model, groupUuid, imei, ip, userId) { if !isM && group_m.InGroupBlackList(model, groupUuid, imei, ip, userId) {
// 特殊处理的拉黑列表
blackMap := map[string]uint64{"HTGS#a17058241": 3058361}
if bUid, ok := blackMap[groupUuid]; ok && bUid == userId {
return bizerr.InBlacklist
}
if svip.SvipLevel < 6 { // svip6暂时不判断GroupBlackList if svip.SvipLevel < 6 { // svip6暂时不判断GroupBlackList
return bizerr.InBlacklist return bizerr.InBlacklist
} }
...@@ -245,6 +256,7 @@ func (s *GroupService) GroupIn(userId uint64, externalId string, groupUuid strin ...@@ -245,6 +256,7 @@ func (s *GroupService) GroupIn(userId uint64, externalId string, groupUuid strin
NobleLevel: nobleLevel, NobleLevel: nobleLevel,
Svip: rpc.CopySimpleSvip(svip), Svip: rpc.CopySimpleSvip(svip),
} }
rideId = r.RideId
buf, err := json.Marshal(r) buf, err := json.Marshal(r)
if err == nil { if err == nil {
...@@ -276,6 +288,7 @@ func (s *GroupService) GroupIn(userId uint64, externalId string, groupUuid strin ...@@ -276,6 +288,7 @@ func (s *GroupService) GroupIn(userId uint64, externalId string, groupUuid strin
if err != nil { if err != nil {
return "", "", err return "", "", err
} else { } else {
go dealActDataAfterEnterRoom(s.svc.MyContext, userId, rideId, roomId)
return channelId, token, nil return channelId, token, nil
} }
} }
...@@ -453,3 +466,11 @@ func (s *GroupService) GroupClearScreenByMgr(groupId string, userId uint64) erro ...@@ -453,3 +466,11 @@ func (s *GroupService) GroupClearScreenByMgr(groupId string, userId uint64) erro
signal_s.SendSignalMsg(model, groupId, systemMsg, false) signal_s.SendSignalMsg(model, groupId, systemMsg, false)
return nil return nil
} }
func dealActDataAfterEnterRoom(myContext *mycontext.MyContext, userId, rideId uint64, roomId int64) {
defer utils.CheckGoPanic()
if rideId == 1261 {
// 处理活动数据
go rpc.AddActPoint(domain.CreateModelContext(myContext), userId, 5, roomId)
}
}
CREATE TABLE `act_family_month_rank_log` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`period` varchar(20) NOT NULL DEFAULT '' COMMENT '月份',
`family_id` bigint unsigned NOT NULL COMMENT '家族id',
`rank_family` int unsigned NOT NULL DEFAULT '0' COMMENT '家族排名',
`rank_user` int unsigned NOT NULL DEFAULT '0' COMMENT '用户在家族中的家族排名',
`user_id` bigint unsigned NOT NULL COMMENT 'id',
`award` varchar(500) NOT NULL DEFAULT '' COMMENT '获得的奖励',
`created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `period` (`period`,`family_id`,`rank_user`),
KEY `user_idx` (`user_id`) USING BTREE,
KEY `created_time` (`created_time`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='家族月度排行发奖日志';
ALTER TABLE hilo.act_family_month_rank_log ADD area TINYINT DEFAULT 0 NOT NULL COMMENT '区域1.阿语区2.非阿语区';
...@@ -12,6 +12,7 @@ import ( ...@@ -12,6 +12,7 @@ import (
"hilo-group/cv/user_cv" "hilo-group/cv/user_cv"
"hilo-group/domain/model/groupPower_m" "hilo-group/domain/model/groupPower_m"
"hilo-group/domain/model/user_m" "hilo-group/domain/model/user_m"
"hilo-group/domain/service/group_power_s"
"hilo-group/myerr/bizerr" "hilo-group/myerr/bizerr"
"hilo-group/req" "hilo-group/req"
"hilo-group/resp" "hilo-group/resp"
...@@ -46,74 +47,97 @@ func GroupPowerRank(c *gin.Context) (*mycontext.MyContext, error) { ...@@ -46,74 +47,97 @@ func GroupPowerRank(c *gin.Context) (*mycontext.MyContext, error) {
beginDate, endDate = now.BeginningOfMonth().Format("2006-01-02"), now.EndOfMonth().Format("2006-01-02") beginDate, endDate = now.BeginningOfMonth().Format("2006-01-02"), now.EndOfMonth().Format("2006-01-02")
} }
var model = domain.CreateModelContext(myContext) var model = domain.CreateModelContext(myContext)
rank, err := groupPower_m.GetGroupPowerExpRank(model, beginDate, endDate, 30) response, err := group_power_s.GetGroupPowerRankResp(model, beginDate, endDate, userId, 0, 0)
if err != nil { if err != nil {
return myContext, err return myContext, err
} }
var ids []mysql.ID resp.ResponseOk(c, response)
for _, g := range rank { return myContext, nil
ids = append(ids, g.GroupPowerId) }
}
response := group_power_cv.CvGroupPowerRank{} // @Tags 国家势力
myGroupPower, err := groupPower_m.GetGroupPowerUserOrNil(model, userId) // @Summary 家族榜单-活动
if err != nil { // @Success 200 {object} group_power_cv.CvGroupPowerRankMontAct
return myContext, err // @Router /v1/h5/groupPower/rank/month [get]
} func GroupPowerMonthRankAct(c *gin.Context) (*mycontext.MyContext, error) {
if myGroupPower != nil { myContext := mycontext.CreateMyContext(c.Keys)
ids = append(ids, myGroupPower.GroupPowerId) userId, err := req.GetUserId(c)
}
grades, err := groupPower_m.MGetGroupPowerGrade(model, ids)
if err != nil { if err != nil {
return myContext, err return myContext, err
} }
groupPowers, err := groupPower_m.MGetGroupPowerInfoMap(model, ids) var model = domain.CreateModelContext(myContext)
// 国家区域
var area int
// 我的家族
myGroupPower, err := groupPower_m.GetGroupPowerUserOrNil(model, userId)
if err != nil { if err != nil {
return myContext, err return myContext, err
} }
if myGroupPower != nil { if myGroupPower != nil && myGroupPower.GroupPowerId > 0 {
myGroupPowerRank, err := groupPower_m.GetMyGroupPowerExpRank(model, beginDate, endDate, myGroupPower.GroupPowerId) //获取势力主
mgrUserId, err := groupPower_m.GetGroupPowerMgr(model, myGroupPower.GroupPowerId)
if err != nil { if err != nil {
return myContext, err return myContext, err
} }
response.MyGroupPower = &group_power_cv.CvGroupPowerRankData{ _, area, err = user_m.GetUserCountryArea(model, mgrUserId)
CvGroupPowerBase: group_power_cv.CvGroupPowerBase{ if err != nil {
Id: myGroupPower.GroupPowerId, model.Log.Errorf("GroupPowerMonthRankAct 获取国家资源错误 userId:%d, err:%v", userId, err)
Icon: groupPowers[myGroupPower.GroupPowerId].Icon, return myContext, err
Name: groupPowers[myGroupPower.GroupPowerId].Name,
Nameplate: groupPowers[myGroupPower.GroupPowerId].Nameplate,
},
CvGroupPowerGrade: group_power_cv.CvGroupPowerGrade{
Grade: grades[myGroupPower.GroupPowerId].Grade,
Exp: myGroupPowerRank.Exp,
},
Rank: 0,
} }
} }
for _, v := range rank { if area == 0 {
if response.MyGroupPower != nil && v.GroupPowerId == response.MyGroupPower.Id { _, area, err = user_m.GetUserCountryArea(model, userId)
response.MyGroupPower.Rank = v.Rank if err != nil {
model.Log.Errorf("GroupPowerMonthRankAct 获取国家资源错误 userId:%d, err:%v", userId, err)
return myContext, err
} }
response.Items = append(response.Items, group_power_cv.CvGroupPowerRankData{
CvGroupPowerBase: group_power_cv.CvGroupPowerBase{
Id: v.GroupPowerId,
Icon: groupPowers[v.GroupPowerId].Icon,
Name: groupPowers[v.GroupPowerId].Name,
Nameplate: groupPowers[v.GroupPowerId].Nameplate,
},
CvGroupPowerGrade: group_power_cv.CvGroupPowerGrade{
Grade: grades[v.GroupPowerId].Grade,
Exp: v.Exp,
},
Rank: v.Rank,
})
} }
if response.MyGroupPower != nil && response.MyGroupPower.Rank == 0 { // 这个月
response.MyGroupPower.Rank = 31 // 客户端统一显示30+ beginDate, endDate := now.BeginningOfMonth().Format(utils.DATE_FORMAT), now.EndOfMonth().Format(utils.DATE_FORMAT)
response, err := GroupPowerMonthRankActByMonth(model, userId, beginDate, endDate, time.Now().Format(utils.COMPACT_MONTH_FORMAT), area)
if err != nil {
return myContext, err
} }
resp.ResponseOk(c, response) // 上月
lastMonthStart := utils.GetLastMonthStart(time.Now())
lastTime := now.New(lastMonthStart)
beginDateLast, endDateLast := lastTime.BeginningOfMonth().Format(utils.DATE_FORMAT), lastTime.EndOfMonth().Format(utils.DATE_FORMAT)
responseLast, err := GroupPowerMonthRankActByMonth(model, userId, beginDateLast, endDateLast, lastMonthStart.Format(utils.COMPACT_MONTH_FORMAT), area)
if err != nil {
return myContext, err
}
res := &group_power_cv.CvGroupPowerRankMontAct{
MyGroupPower: response.MyGroupPower,
Items: response.Items,
MyGroupPowerLast: responseLast.MyGroupPower,
ItemsLast: responseLast.Items,
LeftSecond: now.EndOfMonth().Unix() - time.Now().Unix(),
}
resp.ResponseOk(c, res)
return myContext, nil return myContext, nil
} }
func GroupPowerMonthRankActByMonth(model *domain.Model, userId uint64, beginDate, endDate, month string, area int) (response group_power_cv.CvGroupPowerRank, err error) {
response, err = group_power_s.GetGroupPowerRankResp(model, beginDate, endDate, userId, groupPower_e.GroupPowerUserHas, area)
if err != nil {
return response, err
}
if response.MyGroupPower != nil {
response.MyGroupPower.StarList, err = group_power_s.GetGroupPowerStar(model, response.MyGroupPower.Id, groupPower_e.GroupPowerStarTypeFamous, 0, 10, month)
}
if err != nil {
return response, err
}
for i, v := range response.Items {
response.Items[i].StarList, err = group_power_s.GetGroupPowerStar(model, v.Id, groupPower_e.GroupPowerStarTypeFamous, 0, 10, month)
if err != nil {
return response, err
}
}
return response, nil
}
// @Tags 国家势力 // @Tags 国家势力
// @Summary 家族日周月榜单top3 // @Summary 家族日周月榜单top3
// @Param token header string true "token" // @Param token header string true "token"
...@@ -135,7 +159,7 @@ func GroupPowerRankTop(c *gin.Context) (*mycontext.MyContext, error) { ...@@ -135,7 +159,7 @@ func GroupPowerRankTop(c *gin.Context) (*mycontext.MyContext, error) {
beginDate, endDate = now.BeginningOfMonth().Format("2006-01-02"), now.EndOfMonth().Format("2006-01-02") beginDate, endDate = now.BeginningOfMonth().Format("2006-01-02"), now.EndOfMonth().Format("2006-01-02")
} }
var model = domain.CreateModelContext(myContext) var model = domain.CreateModelContext(myContext)
rank, err := groupPower_m.GetGroupPowerExpRank(model, beginDate, endDate, 3) rank, err := groupPower_m.GetGroupPowerExpRank(model, beginDate, endDate, 3, 0, 0)
if err != nil { if err != nil {
return myContext, err return myContext, err
} }
...@@ -201,38 +225,12 @@ func GroupPowerStar(c *gin.Context) (*mycontext.MyContext, error) { ...@@ -201,38 +225,12 @@ func GroupPowerStar(c *gin.Context) (*mycontext.MyContext, error) {
if param.PageSize <= 0 { if param.PageSize <= 0 {
param.PageSize = 30 param.PageSize = 30
} }
var model = domain.CreateModelContext(myContext)
offset, limit := (param.PageIndex-1)*param.PageSize, param.PageSize offset, limit := (param.PageIndex-1)*param.PageSize, param.PageSize
rank, err := groupPower_m.GetGroupPowerMonthStarRank(model, param.GroupPowerId, param.Type, offset, limit) var model = domain.CreateModelContext(myContext)
response, err := group_power_s.GetGroupPowerStar(model, param.GroupPowerId, param.Type, offset, limit, time.Now().Format(utils.COMPACT_MONTH_FORMAT))
if err != nil { if err != nil {
return myContext, err return myContext, err
} }
var response []group_power_cv.CvGroupPowerStarData
var userIds []mysql.ID
for _, row := range rank {
userIds = append(userIds, row.UserId)
}
users, err := user_m.GetUserMapByIds(model, userIds)
for _, row := range rank {
user := users[row.UserId]
score := row.Score
if param.Type == groupPower_e.GroupPowerStarTypeActive {
score = score / 60
}
if score <= 0 {
continue
}
response = append(response, group_power_cv.CvGroupPowerStarData{
User: user_cv.CvUserTiny{
Id: user.ID,
ExternalId: user.ExternalId,
Code: user.Code,
Nick: user.Nick,
Avatar: user.Avatar,
},
Score: score,
})
}
resp.ResponsePageBaseOk(c, response, 0, false) resp.ResponsePageBaseOk(c, response, 0, false)
return myContext, nil return myContext, nil
} }
......
...@@ -14,6 +14,7 @@ import ( ...@@ -14,6 +14,7 @@ import (
"git.hilo.cn/hilo-common/utils" "git.hilo.cn/hilo-common/utils"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
uuid "github.com/satori/go.uuid" uuid "github.com/satori/go.uuid"
"github.com/spf13/cast"
"gorm.io/gorm" "gorm.io/gorm"
"hilo-group/_const/enum/diamond_e" "hilo-group/_const/enum/diamond_e"
"hilo-group/_const/enum/group_e" "hilo-group/_const/enum/group_e"
...@@ -1755,14 +1756,21 @@ func GroupIn(c *gin.Context) (*mycontext.MyContext, error) { ...@@ -1755,14 +1756,21 @@ func GroupIn(c *gin.Context) (*mycontext.MyContext, error) {
if group_m.IsUseTRTC(model, groupId) { if group_m.IsUseTRTC(model, groupId) {
provider = group_e.GroupProvider_TRTC provider = group_e.GroupProvider_TRTC
} else { } else {
if time.Now().Unix() > 1683820800 { // todo 1683820800=5月2号,等过审再修改 //dayMaxCovertNum := int64(20)
//numKey := rediskey.GetConvertToTRTCNum()
//covertNum, err := redisCli.GetCacheInt64(numKey)
//if time.Now().Unix() > 1682499704 && err == nil && covertNum <= dayMaxCovertNum {
if time.Now().Unix() > 1682499704 {
roomUser, err := group_m.GetRoomOnlineUser(myContext, groupId) roomUser, err := group_m.GetRoomOnlineUser(myContext, groupId)
if err == nil && roomUser.Total == 0 { if err == nil && roomUser.Total == 0 {
//newNum, err := redisCli.IncrNumExpire(numKey, 1, time.Hour*24)
//if err == nil && newNum <= dayMaxCovertNum {
if err := group_m.InitTRTC(model, groupId); err != nil { if err := group_m.InitTRTC(model, groupId); err != nil {
return myContext, err return myContext, err
} }
provider = group_e.GroupProvider_TRTC provider = group_e.GroupProvider_TRTC
model.Log.Infof("auto shift trtc room groupId:%v,%+v-%v", groupId, roomUser, err) model.Log.Infof("auto shift trtc room groupId:%v,%+v-%v", groupId, roomUser, err)
//}
} }
} }
} }
...@@ -1777,7 +1785,7 @@ func GroupIn(c *gin.Context) (*mycontext.MyContext, error) { ...@@ -1777,7 +1785,7 @@ func GroupIn(c *gin.Context) (*mycontext.MyContext, error) {
} }
} }
if channelId, token, err := group_s.NewGroupService(myContext).GroupIn(userId, externalId, groupId, password, imei, ip, provider); err != nil { if channelId, token, err := group_s.NewGroupService(myContext).GroupIn(userId, externalId, groupId, password, imei, ip, provider, gi.Id); err != nil {
return myContext, err return myContext, err
} else { } else {
// 加入房间缓存 // 加入房间缓存
...@@ -1812,9 +1820,9 @@ func GroupIn(c *gin.Context) (*mycontext.MyContext, error) { ...@@ -1812,9 +1820,9 @@ func GroupIn(c *gin.Context) (*mycontext.MyContext, error) {
} }
// 判断是否需要执行游戏逻辑 // 判断是否需要执行游戏逻辑
if enterType != "" && gameCode != "" { if enterType != "" && gameCode != "" {
traceId := c.Writer.Header().Get(mycontext.TRACEID) traceId, _ := c.Get(mycontext.TRACEID)
token := c.Writer.Header().Get(mycontext.TOKEN) token := c.Writer.Header().Get(mycontext.TOKEN)
err := game_c.SetAutoMathEnterRoom(userId, gi.ImGroupId, traceId, token, enterType, gameCode) err := game_c.SetAutoMathEnterRoom(userId, gi.ImGroupId, cast.ToString(traceId), token, enterType, gameCode)
if err != nil { if err != nil {
model.Log.Errorf("GroupIn cache.SetAutoMathEnterRoom userId:%v, imGroupId:%v, err:%v", userId, gi.ImGroupId, err) model.Log.Errorf("GroupIn cache.SetAutoMathEnterRoom userId:%v, imGroupId:%v, err:%v", userId, gi.ImGroupId, err)
} }
......
...@@ -146,6 +146,7 @@ func InitRouter() *gin.Engine { ...@@ -146,6 +146,7 @@ func InitRouter() *gin.Engine {
h5GroupPower := v1.Group("/h5/groupPower") h5GroupPower := v1.Group("/h5/groupPower")
{ {
h5GroupPower.GET("/grade/detail", wrapper(group_power_r.GroupPowerGradeDetail)) h5GroupPower.GET("/grade/detail", wrapper(group_power_r.GroupPowerGradeDetail))
h5GroupPower.GET("/rank/month", wrapper(group_power_r.GroupPowerMonthRankAct))
} }
charge := v1.Group("/charge") charge := v1.Group("/charge")
......
...@@ -3,9 +3,13 @@ package test ...@@ -3,9 +3,13 @@ package test
import ( import (
"fmt" "fmt"
"git.hilo.cn/hilo-common/domain" "git.hilo.cn/hilo-common/domain"
"git.hilo.cn/hilo-common/utils"
"github.com/jinzhu/now"
"hilo-group/domain/model/groupPower_m" "hilo-group/domain/model/groupPower_m"
"hilo-group/domain/model/group_m" "hilo-group/domain/model/group_m"
"hilo-group/domain/service/group_power_s"
"testing" "testing"
"time"
) )
func TestGetAllGroupPowerOwner(t *testing.T) { func TestGetAllGroupPowerOwner(t *testing.T) {
...@@ -23,3 +27,11 @@ func TestIsUseTRTC(t *testing.T) { ...@@ -23,3 +27,11 @@ func TestIsUseTRTC(t *testing.T) {
fmt.Println("true--------------") fmt.Println("true--------------")
} }
} }
func TestDoCalcGroupPowerMonthRankAct(t *testing.T) {
lastDayTime := time.Now().AddDate(0, 0, -1)
_now := now.New(lastDayTime)
calcMonth := _now.BeginningOfMonth().Format(utils.MONTH_FORMAT)
beginDate, endDate := _now.BeginningOfMonth().Format("2006-01-02"), _now.EndOfMonth().Format("2006-01-02")
_ = group_power_s.DoCalcGroupPowerMonthRankAct(domain.CreateModelNil(), calcMonth, beginDate, endDate)
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment