|
@@ -10,6 +10,7 @@ import (
|
|
|
"jyBXCore/api/internal/svc"
|
|
|
"jyBXCore/api/internal/types"
|
|
|
"jyBXCore/api/internal/util"
|
|
|
+ "strings"
|
|
|
)
|
|
|
|
|
|
type MobileHotWordLogic struct {
|
|
@@ -31,21 +32,32 @@ func (l *MobileHotWordLogic) MobileHotWord(req *types.MobileHotWordReq) (resp *t
|
|
|
if req.Refresh == 0 { //非刷新动作 自动获取默认缓存热词 5分钟更新一次
|
|
|
rsData = MC.If(req.UserId == "", IC.HotKeyArrUnLogin, IC.HotKeyArrLoginEd).([]string)
|
|
|
} else { // 刷新热词 需过滤已经看过的热词
|
|
|
+ var reqWord []string
|
|
|
+ if req.Word != "" {
|
|
|
+ reqWord = strings.Split(req.Word, ",")
|
|
|
+ }
|
|
|
redisKey := MC.If(req.UserId == "", "mobileHotWordUnLogin", fmt.Sprintf("mobileHotWordLogin_%s", req.UserId)).(string)
|
|
|
rData, _ := redis.Get("newother", redisKey).([]interface{})
|
|
|
- defaultWord := MC.If(req.UserId == "", IC.HotKeyArrUnLogin, IC.HotKeyArrLoginEd).([]string) //排除默认词
|
|
|
- redisWord := MC.ObjArrToStringArr(rData)
|
|
|
+ redisWord := MC.ObjArrToStringArr(rData) //已浏览热词
|
|
|
+ if redisWord != nil {
|
|
|
+ reqWord = append(reqWord, redisWord...)
|
|
|
+ }
|
|
|
+
|
|
|
aData := MC.If(req.UserId == "", IC.C.MobileIndexHotKeyUnLogin, IC.C.MobileIndexHotKey).([]string)
|
|
|
- if len(defaultWord)+len(redisWord) >= len(aData)-int(IC.C.MobileIndexHotKeyLimit) { //剩余热词已经不足 重新获取
|
|
|
- rsData = util.FilterWord(aData, append(defaultWord, redisWord...), int(IC.C.MobileIndexHotKeyLimit))
|
|
|
- redis.Put("newother", redisKey, rsData, 60*60)
|
|
|
+ rsData = util.FilterWord(aData, reqWord, int(IC.C.MobileIndexHotKeyLimit))
|
|
|
+ if len(reqWord) >= len(aData)-int(IC.C.MobileIndexHotKeyLimit) { //剩余热词已经不足 重新获取
|
|
|
+ redis.Put("newother", redisKey, nil, 60*60*2) //剩余热词不足 重置
|
|
|
} else {
|
|
|
- rsData = util.FilterWord(aData, append(defaultWord, redisWord...), int(IC.C.MobileIndexHotKeyLimit))
|
|
|
- redisWord = append(redisWord, rsData...)
|
|
|
- redis.Put("newother", redisKey, redisWord, 60*60)
|
|
|
+ redis.Put("newother", redisKey, reqWord, 60*60*2)
|
|
|
}
|
|
|
}
|
|
|
+ var rDataArr []map[string]interface{}
|
|
|
+ for _, datum := range rsData {
|
|
|
+ rDataArr = append(rDataArr, map[string]interface{}{
|
|
|
+ "keyword": datum,
|
|
|
+ })
|
|
|
+ }
|
|
|
return &types.CommonResp{
|
|
|
- Data: rsData,
|
|
|
+ Data: rDataArr,
|
|
|
}, nil
|
|
|
}
|