推荐优化

This commit is contained in:
hahwu 2026-02-09 14:13:03 +08:00
parent b4317cf3c4
commit f42dd2dd95

View File

@ -104,9 +104,10 @@ func (p *Player) GetVisitorPlayer() int {
func GetRecommendPlayer(p *Player, Num int) []int {
uids, err := db.GetCommendPlayerFromDb(p.M_DwUin, GoUtil.Now()-259200, 4)
if err != nil {
log.Debug("GetCommendPlayerFromDb err:%v, uid=%d", err, p.M_DwUin)
return nil
}
PlayerList1 := make([]int, 0)
PlayerList1 := make([]int, 0, len(uids))
FriendMod := p.PlayMod.getFriendMod()
for _, Uid := range uids {
if Uid == int(p.M_DwUin) {
@ -118,45 +119,29 @@ func GetRecommendPlayer(p *Player, Num int) []int {
if FriendMod.CheckAddBefore(Uid) {
continue
}
PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(Uid)
if PlayerSimpleData == nil {
continue
}
PlayerList1 = append(PlayerList1, Uid)
}
// 按照时间门槛筛选用户
filterByTime := func(excludeSeconds int64) []int {
now := GoUtil.Now()
result := make([]int, 0, len(PlayerList1))
for _, Uid := range PlayerList1 {
recommendTime := FriendMod.GetRecommendTime(Uid)
if recommendTime == 0 || recommendTime <= now-excludeSeconds {
result = append(result, Uid)
}
}
return result
}
// 排查7日内推荐过的用户
now := GoUtil.Now()
candidateList := make([]int, 0)
for _, Uid := range PlayerList1 {
recommendTime := FriendMod.GetRecommendTime(Uid)
if recommendTime != 0 && recommendTime > now-604800 {
candidateList = append(candidateList, Uid)
continue
}
}
// 用户数不低于5则进入下一步筛选
candidateList := filterByTime(604800)
// 用户数低于5则放宽到3日
if len(candidateList) < 5 {
// 排查3日内推荐过的用户
candidateList = make([]int, 0)
for _, Uid := range PlayerList1 {
recommendTime := FriendMod.GetRecommendTime(Uid)
if recommendTime != 0 && recommendTime > now-259200 {
candidateList = append(candidateList, Uid)
continue
}
}
candidateList = filterByTime(259200)
}
// 用户数不低于5则进入下一步筛选
// 用户数低于5则放宽到2日
if len(candidateList) < 5 {
// 排查2日内推荐过的用户
candidateList = make([]int, 0)
for _, Uid := range PlayerList1 {
recommendTime := FriendMod.GetRecommendTime(Uid)
if recommendTime != 0 && recommendTime > now-172800 {
candidateList = append(candidateList, Uid)
continue
}
}
candidateList = filterByTime(172800)
}
if len(candidateList) == 0 {
@ -164,6 +149,7 @@ func GetRecommendPlayer(p *Player, Num int) []int {
}
if len(candidateList) == 0 {
candidateList = make([]int, 0, len(uids))
for _, Uid := range uids {
if Uid == int(p.M_DwUin) {
continue
@ -178,6 +164,9 @@ func GetRecommendPlayer(p *Player, Num int) []int {
baseList = append(baseList, ps)
}
}
if len(baseList) == 0 {
return nil
}
BaseMod := p.PlayMod.getBaseMod()
level := BaseMod.GetLevel()
diffLimit := 10