V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
capljf
V2EX  ›  程序员

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

  •  
  •   capljf · 2019-07-12 16:47:45 +08:00 · 2264 次点击
    这是一个创建于 1996 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    大家有啥思路吗?

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

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

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