查询解析流程图
2023-11-28 15:51:51 0 举报
查询解析流程图
作者其他创作
大纲/内容
比较并更新题干、答案、题型、难度和题目质量状态
保存菁优试题与知识点的关系jyeoo_question_point
插入新试题 unionId 以 2 开头
试题数据不存在
根据realtionId查询只读库是否存在试题jyeoo_question
是否需要保存刷题逻辑,默认不需要保存
try catch 异步五个线程插入试题选项,难度,题型,知识点
异步
保存试题与知识点的关系,插入5位以下的知识点jyeoo_question_point
redis 是否有值
taskId=1: 插入扩展表信息jyeoo_question_ext
是
更新试题
设置试题解析
比较知识点,如果不同则更新,如不存在则保存
以 unionId 获取分布式锁
全员每天查询次数风控 500次
异步更新token到db(jyeoo_member)
菁优接口:登录,获取token
根据realtionId查询试题信息jyeoo_question
如果存在,并且不一样则更新jyeoo_question_ext
删除mongo 缓存
知识点是否相等
获取tokenjyeoo_member
该题是否被老师编辑过
questionStatus == 2、3、4
设置试题基本信息
将试题解析放入redis,30分钟
设置 relationId 为 菁优试题 id
菁优接口:注册用户
比较题目解析,如果不同则更新,如不存在则保存
开始
设置试题信息+题目质量
试题插入主表jyeoo_question
查询学科信息jyeoo_subject
不作处理,直接返回试题信息
结束
taskId=3: 插入属性数据-难度jyeoo_question_option
异常:自动降级
判断题型属性是否存在jyeoo_attribute
查询试题状态 questionStatus
保存试题与知识点的关系,插入5位以上的知识点jyeoo_question_point
redis 查询解析
否
查询题目是否绑定知识点jyeoo_question_point
降级后:试题解析设置为 \"\"
!relationId.equals(jyeooQuestion.getID()
taskId=2: 插入选项数据jyeoo_question_option
插入试题jyeoo_question
taskId=5:插入知识点关联数据
db 是否存在
根据难度名称,获取难度表信息jyeoo_attribute
比较题目选项,如果不同则更新,如不存在则保存
删除题目现有关联的知识点jyeoo_question_point
taskId=4: 插入属性数据-题型
设置知识点jyeoo_subject,jyeoo_point
插入只读库handleQuestionInsert
如果解析不存在直接插jyeoo_question_ext
附图:降级策略
数据转换
将试题解析放入redis,1天
searchQuesAnalysisException == true
以 unionId 获取分布式锁
如果题目信息不一致(题干、答案、题型、难度)或者题目质量状态不一致,则更新
如果菁优试题为空,直接返回
jyeooFallback == true
根据菁优知识点id集合查询mysql 知识点id集合jyeoo_point
混淆题,不更新,直接返回
入参 relationId == null
菁优接口:获取解析
删除分布式锁
异步保存用户+token到db(jyeoo_member)
异步更新菁优题目信息到只读库
插入新试题 unionId 以 2 开头
查询试题解析jyeoo_question_ext,jyeoo_point,jyeoo_question_point
将属性关联题目并保存jyeoo_attribute_value
插入难度表jyeoo_attribute_value
questionStatus == 2、3、4
获取分布式锁(三次尝试)
设置试题信息+试题质量
返回试题 uuionId
只读库试题是否存在
questionStatus == 1
如果选项不存在直接插入jyeoo_question_option
token 是否超时
questionStatus == 0
试题信息完整
判断是否执行新的更新方案,如果是4位以上知识点,直接插入
返回试题解析
如果选项不一样则更新jyeoo_question_option
个人每天查询次数风控 80次
保存试题
0 条评论
下一页