经过这几天对禾匠仿二更视频小程序模块的研究,发现一个问题,当后台视频过多的时候,微信小程序端刷新首页,会不能刷新出以前发的视频,哪怕在后台已经勾选“推荐到首页”也没用,问题出现在哪?
经过抓包对比发现,原来是通过videolist.item.is_index来判断这个视频是不是被推荐到首页的,而后台操作推荐/下架首页,也无非是操作了字段:is_index
再进一步抓包对比分析:
store_id=1&r=api/user/video-list
store_id=1&r=api/user/video-list&page=1.2.3…
user/video-list取首页视频的这个API函数貌似没有做首页推荐的排序优化
也就是说,比如你后台有100个视频,前90个都没有推荐到首页,最后10个才推荐到首页,按照他目前设置的排序规则,你可能需要刷新第9次,才能在首页刷出视频来
而这种严重不符合用户体验和逻辑的设计肯定是有问题的,没办法,自己来改造吧
面对后台那么多的目录,哪个才是包含核心功能的文件?第一反应是检索包含“video”的php文件,一个一个看吧,可找了一圈没有发现,没办法再换个思路,检索“list”的php文件,这回有了
找到核心代码:
$count = $query->count();
$p = new Pagination([‘totalCount’ => $count, ‘pageSize’ => $this->limit, ‘page’ => $this->page]);
$list = $query->select([
‘*’
])->orderBy([‘sort’=>SORT_ASC,’addtime’ => SORT_DESC])->limit($p->limit)->offset($p->offset)->asArray()->all();
$user = User::findOne([‘id’=>$this->user_id]);
通过代码分析,不难看出还是有做排序的,针对“sort”、“addtime”相对应后台的排序升序、发布时间降序,做了列表排序,而我们改动只需要一句话就能实现了:
[reply]’is_index’ => SORT_ASC[/reply]
加上这句代码,我们就可以达到符合逻辑和用户体验的首页获取推荐视频的算法了。