推荐优化
This commit is contained in:
parent
b4317cf3c4
commit
f42dd2dd95
@ -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)
|
||||
}
|
||||
// 排查7日内推荐过的用户
|
||||
// 按照时间门槛筛选用户
|
||||
filterByTime := func(excludeSeconds int64) []int {
|
||||
now := GoUtil.Now()
|
||||
candidateList := make([]int, 0)
|
||||
result := make([]int, 0, len(PlayerList1))
|
||||
for _, Uid := range PlayerList1 {
|
||||
recommendTime := FriendMod.GetRecommendTime(Uid)
|
||||
if recommendTime != 0 && recommendTime > now-604800 {
|
||||
candidateList = append(candidateList, Uid)
|
||||
continue
|
||||
if recommendTime == 0 || recommendTime <= now-excludeSeconds {
|
||||
result = append(result, Uid)
|
||||
}
|
||||
}
|
||||
// 用户数不低于5则进入下一步筛选
|
||||
return result
|
||||
}
|
||||
// 排查7日内推荐过的用户
|
||||
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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user