数据库一张表,不同的人审核不同行的数据,请问老哥们知道怎么实现吗,给个思路

2019-07-12 16:47:45 +08:00
 capljf

问题: 同一张报表,表中的数据需要大量人工去审核正确与否,有一个问题是给系统中不同的审核员展示不同的数据。 例:有一张淘宝订单表,有 5 个审核。这个 5 个人同时审核所有订单,如果给这 5 个审核展示不同的订单。或者 5 个人里只有 3 个人登录系统去审核的时候,给他们展示不同的订单。

大家有啥思路吗?

2090 次点击
所在节点    程序员
17 条回复
wawzw123
2019-07-12 16:58:58 +08:00
参考分单派单系统设计
sss15
2019-07-12 16:58:58 +08:00
如果你能知道当前在线审核人数的话,可以直接求余,每个人就分开了
kyuuseiryuu
2019-07-12 17:02:29 +08:00
创建一个队列,把单子 id 丢进队列里面去消费。
TypeErrorNone
2019-07-12 17:02:33 +08:00
取数据得时候加锁,改状态
JQZhang
2019-07-12 17:03:53 +08:00
没看明白需求,你举的那个例子是 5 个审核是 5 个人每个人审核一行数据里不同类型的数据,比如一个审数量,另一个审价格......,还是 5 个人审不同行的数据就行
lihongjie0209
2019-07-12 17:05:33 +08:00
这个需求还是不明确

如果现在系统有三个人在审核, 所有的单都派发给这三个人, 如果第四个人进入系统, 第四个人是没有单呢还是要从其他审核员的订单窃取呢?
lhx2008
2019-07-12 17:10:01 +08:00
把以前没有审核的单搞到消息队列里面,新单也是存了数据库后发到消息队列,审核客户端这边一次拉 n 个 id,然后去数据库读这条信息,审核完点下一批在去消息队列拉。

至于用什么消息队列,最简单的就是 redis 的 list
yaerda
2019-07-12 17:11:46 +08:00
跟 3 楼所说一样,创建一个队列,每人每次取 1 或 n 个,长时间未消费回退到队列中,再支持手动指定取出就可以了
annielong
2019-07-12 17:28:22 +08:00
无序数据队列轮取,有序的就取余
capljf
2019-07-12 17:35:54 +08:00
@kyuuseiryuu 感谢,你的回答给了我一个思路。用两个队列,先把所有未审核订单 id 取出来放第一个队列(未审核),然后每次每个人来请求的时候取出部分 id 放 第二个队列(正在审核),并把这些 id 从第一个队列删除。如果审核完成就更新表里数据状态,如果没有审核完成或者取出后超时未审核就把这些 id 从第二个队列删除放回第一个队列。
capljf
2019-07-12 17:38:28 +08:00
@TypeErrorNone 我的第一思路也是这样,但是加锁如何解锁呢,如果一个审核取了 1-10 条数据来审核,就对这些数据加上了排它锁,但是审核突然去做别的事儿了或者把浏览器关了,那么这些数据就一直锁着。个人对锁不是很了解,请问能详细解释一下怎么使用吗?
capljf
2019-07-12 17:40:08 +08:00
@lihongjie0209 抱歉,是我没有考虑到这些情况。你提的也很对,我想需求应该是如果第四个人进入,如果系统还有未分发的单就给第四个人派单
capljf
2019-07-12 17:40:56 +08:00
@wawzw123 好的好的,之前没有做过类似需求。刚刚搜索的时候都想不出什么好的关键词,派单这个太对了,应该是完美契合
capljf
2019-07-12 17:41:46 +08:00
@lhx2008 感谢,和 3 楼的建议思路是一样的,这个思路很棒
NotNil1
2019-07-12 17:44:07 +08:00
乐观锁,查询之后加标记
capljf
2019-07-12 18:37:03 +08:00
@ljtletters 你好,请问如何加标记呢。我只是查询数据,一次查询,一次更新,如果在保证两次请求用的一个事务呢
wenzhoou
2019-07-13 08:13:23 +08:00
用户 a 点审核开始,就把数据库改为 状态:审核中,担当者 a。这个任务就给 a 了。一直到 a 用户点审核结束,或者取消。你得要画一个状态迁移图。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/582430

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX