任务系统

任务系统流程图

1599822870000r1.png

主要的是通过观察者模式(Observer)进行任务系统的完成

  1. 用户进入app,触发tasks接口
  2. 触发tasks接口之后,会产生对应的Assignment数据
  3. 开始检查任务逻辑,当任务的状态为TASK_DONE时,就说明任务已经完成,并已经领取成功
  4. 任务完成,下发到用户的账户中

检查任务

1599822885000r2.png

  1. 首先是通过我们的某个任务的Observers,去更新该任务的状态(reviewTasksByClass方法)
  2. 然后进入到更新任务的状态类中(PlayWithTasks),其中的reviewTasksByClass方法是用来更新任务的状态
  • 先判断新手任务是否完成,注意getTasksByReviewClass方法
  • 获取(检查)对应的Assignment数据
  • 检查更新任务的状态checkTaskStatus
  1. 随之,我们需要检查Assignment中的status的状态是否为TASK_DONE(完成 - 已奖励),直到为TASK_DONE(完成 - 已奖励)的时候,就返回该状态,如果status < TASK_REACH,则需要用check_functions检查任务的状态进度,一般检查方法都放在TaskMethod类中
  • 注意:check_functions的定义方法是在review_follow表中的check_functions字段中

小问题

  • 在看视频得奖励的任务中,next_reward_video_time字段的值总是为空,但是这个的实现方式是一个访问器,进到访问器发现,所针对的任务有很大的限制,解决的方式要么就是将本项目中的命名也加入进去,要么就是将任务名改为一样的

1599822904000r3.png

添加一个新的小任务

主要是涉及到review_flows表,在这个表中存在一个check_functions字段,该字段记录的是我们新创建的小任务的方法名

  • 首先创建这个小任务的方法 —— 由于这个方法不是在所有的项目中都使用,所以一般是是存在于外部文件夹内,首先是通过observer方法去检查任务的状态,之后会慢慢到check_function中

1599822926000r4.png

  • 填充小任务的数据到review_flows表
  • 1599822952000r5.png
  • 填充小任务的数据到task表

elasticsearch

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

赞赏支持
被以下专题收入,发现更多相似内容