feat:新增关注功能+只查询关注者作业#200
Conversation
| val id: String? = null, | ||
| val userId: String, | ||
| val fansList: MutableSet<MaaUserInfo> = mutableSetOf(), | ||
| var updatedAt: LocalDateTime = LocalDateTime.now(), |
There was a problem hiding this comment.
其实用 Instant 更好,LocalDateTime 本身缺少时区信息
There was a problem hiding this comment.
如果不考虑i8n的话LocalDateTime可能更方便吧,Instance还要展示层根据时区适配,以后遇到需要再改这里 :)
There was a problem hiding this comment.
其实以前我们有海外用户反馈时间不对,因此我们向外序列化均为 ISO-8601,为了 LocalDateTime 不带时区的问题还特地写了一个 https://github.com/MaaAssistantArknights/MaaBackendCenter/blob/feaf83a371fa38616bce97e2e5a4fb3f5c5b17c8/src/main/kotlin/plus/maa/backend/config/JacksonConfig.kt#L29 配置(
There was a problem hiding this comment.
其实以前我们有海外用户反馈时间不对,因此我们向外序列化均为 ISO-8601,为了
LocalDateTime不带时区的问题还特地写了一个配置(
ok,既然序列化配置也有了那我也同步改成Instant
| // 更新粉丝列表 | ||
| val fans = userFansRepository.findByUserId(followUserId) | ||
| ?: UserFans(userId = followUserId) | ||
| if (!fans.fansList.any { it.id == userId }) { |
There was a problem hiding this comment.
那我改改更新用MongoDB的$push操作就不用再查一次列表了吧。然后关注/粉丝计数换成原子递增计数了而不是每次直接用列表的size了(虽然可能增加一点脏数据的恢复成本...)
There was a problem hiding this comment.
There was a problem hiding this comment.
这里有 https://www.mongodb.com/docs/manual/reference/operator/aggregation/size/
好的我学习一下MongoDB,不太熟悉这个
| } | ||
|
|
||
| fun getFansList(userId: String, pageable: Pageable): Page<MaaUserInfo> { | ||
| val fans = userFansRepository.findByUserId(userId) |
|
接口测试是没问题的 |
|
发现一个bug,可能得改一下。 如上述架构图,当用户A关注用户B时,用户A的关注列表followList里存储了一个用户B此时的信息(包括了其此时的fans数和following数) 简单说就是,关注列表(followList)和粉丝列表存储的是关注时UserInfo的快照,与当前的信息不一致。 很抱歉我之前想当然地在followList列表中存储了用户信息的快照,可能要一点时间我重新写一下存储用户ID的版本 |
|
此次提交
@Handiwork 佬那个聚合相关的一堆东西我没学会... :( 要不下个迭代再优化优化 分页的问题我直接简单在controller加了一个-1的校验和转换 不过测试的时候发现个问题:swagger配置了jwt认证去请求还是会被认成匿名用户,获取不到登录的用户id,很奇怪。 |
swagger ui 没有配置安全需求 |
你是否在 swagger ui 上填写时候也加上了"Bearer ",它其实并不需要 |
并没有,直接填写的jwt本身。并且能通过@RequireJwt的校验 |
|
@half-yutou |
|
@Handiwork 主要是
|
跟P佬说的一样,Follow的这几个接口本身是没什么问题的。而是CopilotController查询Copilot时,在swagger上配置了jwt也会获取不到Userid(userid == null),在postman上测试表现正常(可以正确获取userid)。 |
dragove
left a comment
There was a problem hiding this comment.
抱歉,最近比较忙一直没review这个pr。前段时间因为性能问题所以先搁置这个PR了。现在回过头看了。
麻烦rebase到最新分支上,问题应该不大,rebase后我本地做下测试,改进相关(比如直接聚合查询用户信息)可以另外提交PR改善。合并的话可以让前端尽早开始开发。后续用户这块还需要其他改善功能。
辛苦了!我争取这个周末前解决这些问题:) |

#195