core/task

任务模块。这里任务的接口分为两类,一类是通用接口,一类是特殊接口。

Methods

(async, inner) createTask(params, global) → {Promise.<object>}

创建任务。需要具有PUBLISHER权限`

  • ajax: POST /api/task/:id
  • socket.io: emit task:create
Source:
Parameters:
Name Type Description
params object
  • auth {object} 权限
    • query {object} 请求query
      • populate {boolean} 可选,默认false,返回task id
    • files {object} 上传的图片,额外的数据请通过PATCH上传
      • picture {object} 上传的图片
    • data {object} 访问的数据
      • name {string} 必须,任务标题
      • description {string} 必须,任务描述,Markdown
      • excerption {string} 必须,任务摘要,无Markdown,最长只能有140字
      • tags {string[]} 可选,标签,最多只有5个
      • type {string} 任务类型,如果创建的时候指定了就不能够再次更改
      • deadline {string} 可选,失效日期
global object
  • tasks {object} Tasks model
Returns:
Type:
Promise.<object>

如果不populatedata为任务的_id,否则为整个任务字段。

(async, inner) deleteTask(params, global) → {Promise.<void>}

删除任务,必须为publisher或者拥有TASK_ADMIN权限

Source:
Parameters:
Name Type Description
params
global
Returns:
Type:
Promise.<void>

(async, inner) findTask(params, global) → {Promise.<object>}

搜索任务,通过以下两种方式暴露:

  • ajax:GET /api/task
  • socket.io: emit task:find
Source:
Parameters:
Name Type Description
params object

请求数据

  • auth 权限
  • query {object} 请求的query
    • populate {boolean} 是否展开数据
    • count {boolean} 统计总数,需要额外的开销
    • filter {Object.}
      • search {string} 全文检索
      • name {string}
      • publisher {string} 对于发布者,这个值只能是自己。必须拥有TASK_ADMIN权限 才能设置别的值,考虑对于同时有两权限的用户的请求一致性,建议以发布者身份搜索时永远设置这个值, 以普通用户身份搜索时,请不要附带权限信息。
      • tag {string} 包含某个标签
      • type {string}
      • deadline {{from:string, to:string}} 某个时间范围,无deadline等价于deadline无穷
      • status 对于普通用户,这个值只能是PUBLISHED,而发布者和任务管理员可以设置别的值, 同样考虑多种权限的用户的请求一致性,建议以普通用户搜索时永远设置这个值。
      • valid {boolean}
      • completed {boolean} 对于没有进度概念的,等价于永远未完成
    • limit {number} 可选,小于等于50大于0数字,默认为10
    • lastId {string} 可选,请求的上一个Id
global
Returns:
Type:
Promise.<object>

(async, inner) getTask(params, global) → {Promise.<object>}

获取任务详情。如果任务处于未发布状态,只有任务本身的发布者或者任务管理员可以有权限获取。

  • ajax: GET /api/task/:id
  • socket.io: emit task:get
Source:
Parameters:
Name Type Description
params object
  • auth {object} 权限
    • id {string} 要获取详情的任务的id
global object
  • tasks {object} Tasks model
Returns:
Type:
Promise.<object>

(async, inner) getTaskData(ctx) → {Promise.<void>}

获取任务数据,可以是任务的发布者,或订阅者且任务处于PUBLISHED状态

Source:
Parameters:
Name Type Description
ctx object

koa的context

Returns:
Type:
Promise.<void>

(async, inner) patchTask(params, global) → {Promise.<object>}

修改任务详情。任务的拥有者能修改EDITING时的任务信息,type只能从无到有,状态可由EDITING 转换为SUBMITTED,同时该任务必须是valid的,也可在ADMITTED的更改任务状态为EDITING 或者PUBLISHED。任务管理员可以将任务的状态由SUBMITTED改成EDITING或者ADMITTED

  • ajax: PATCH /api/task/:id
  • socket.io: emit task:patch
Source:
Parameters:
Name Type Description
params object
  • id {string} 要修改的任务的id
    • query {object}
      • populate {boolean} 可选,默认false,返回task id
    • data {object} 修改的数据,必须是该任务publisher或TASK_ADMIN才能修改
      • name {string} 必须,任务标题
      • description {string} 任务描述,Markdown
      • excerption {string} 任务摘要,无Markdown,最长只能有140字
      • tags {string[]} 标签,最多只有5个
      • type {string} 任务类型,如果创建的时候指定了就不能够再次更改
      • deadline {string|null} 可选,失效日期
      • status {string} 任务状态,EDITINGSUBMITTEDADMITTEDPUBLISHED
global object
  • tasks {object} Tasks model
Returns:
Type:
Promise.<object>

(async, inner) postTaskData(ctx) → {Promise.<void>}

上传任务数据,提交者必须为任务的发布者,且任务处于EDITING状态

Source:
Parameters:
Name Type Description
ctx object

koa的context

  • params {object} 请求的数据
    • query {object} 请求的query
      • data {boolean} 是否返回数据,默认false
Returns:
Type:
Promise.<void>