问题: 同一张报表,表中的数据需要大量人工去审核正确与否,有一个问题是给系统中不同的审核员展示不同的数据。 例:有一张淘宝订单表,有 5 个审核。这个 5 个人同时审核所有订单,如果给这 5 个审核展示不同的订单。或者 5 个人里只有 3 个人登录系统去审核的时候,给他们展示不同的订单。
大家有啥思路吗?
|      1wawzw123      2019-07-12 16:58:58 +08:00  1 参考分单派单系统设计 | 
|  |      2sss15      2019-07-12 16:58:58 +08:00 如果你能知道当前在线审核人数的话,可以直接求余,每个人就分开了 | 
|  |      3Chemist      2019-07-12 17:02:29 +08:00 via iPhone  1 创建一个队列,把单子 id 丢进队列里面去消费。 | 
|  |      4TypeErrorNone      2019-07-12 17:02:33 +08:00 取数据得时候加锁,改状态 | 
|  |      5JQZhang      2019-07-12 17:03:53 +08:00  1 没看明白需求,你举的那个例子是 5 个审核是 5 个人每个人审核一行数据里不同类型的数据,比如一个审数量,另一个审价格......,还是 5 个人审不同行的数据就行 | 
|      6lihongjie0209      2019-07-12 17:05:33 +08:00 这个需求还是不明确 如果现在系统有三个人在审核, 所有的单都派发给这三个人, 如果第四个人进入系统, 第四个人是没有单呢还是要从其他审核员的订单窃取呢? | 
|  |      7lhx2008      2019-07-12 17:10:01 +08:00 via Android 把以前没有审核的单搞到消息队列里面,新单也是存了数据库后发到消息队列,审核客户端这边一次拉 n 个 id,然后去数据库读这条信息,审核完点下一批在去消息队列拉。 至于用什么消息队列,最简单的就是 redis 的 list | 
|  |      8yaerda      2019-07-12 17:11:46 +08:00 跟 3 楼所说一样,创建一个队列,每人每次取 1 或 n 个,长时间未消费回退到队列中,再支持手动指定取出就可以了 | 
|      9annielong      2019-07-12 17:28:22 +08:00 无序数据队列轮取,有序的就取余 | 
|      10capljf OP  1 @kyuuseiryuu 感谢,你的回答给了我一个思路。用两个队列,先把所有未审核订单 id 取出来放第一个队列(未审核),然后每次每个人来请求的时候取出部分 id 放 第二个队列(正在审核),并把这些 id 从第一个队列删除。如果审核完成就更新表里数据状态,如果没有审核完成或者取出后超时未审核就把这些 id 从第二个队列删除放回第一个队列。 | 
|      11capljf OP @TypeErrorNone 我的第一思路也是这样,但是加锁如何解锁呢,如果一个审核取了 1-10 条数据来审核,就对这些数据加上了排它锁,但是审核突然去做别的事儿了或者把浏览器关了,那么这些数据就一直锁着。个人对锁不是很了解,请问能详细解释一下怎么使用吗? | 
|      12capljf OP @lihongjie0209 抱歉,是我没有考虑到这些情况。你提的也很对,我想需求应该是如果第四个人进入,如果系统还有未分发的单就给第四个人派单 | 
|      13capljf OP @wawzw123 好的好的,之前没有做过类似需求。刚刚搜索的时候都想不出什么好的关键词,派单这个太对了,应该是完美契合 | 
|  |      15NotNil1      2019-07-12 17:44:07 +08:00 乐观锁,查询之后加标记 | 
|      16capljf OP @ljtletters 你好,请问如何加标记呢。我只是查询数据,一次查询,一次更新,如果在保证两次请求用的一个事务呢 | 
|      17wenzhoou      2019-07-13 08:13:23 +08:00 via Android 用户 a 点审核开始,就把数据库改为 状态:审核中,担当者 a。这个任务就给 a 了。一直到 a 用户点审核结束,或者取消。你得要画一个状态迁移图。 |