Skip to content
DoubleDD edited this page Oct 30, 2019 · 1 revision

客户方

客户方接入资源平台时,需要提供以下几个相关的数据接口,用来鉴权以及同步相关的学习记录数据,以下接口均为资源平台调用客户方

1、认证接口

接口描述

根据token获取用户相关信息

http请求方式

GET

请求地址(restful形式)

https://domain/xxx/{token}

请求参数

参数名 类型 必填 描述 参考值
token String 用户凭证(url中的参数) a0d75cea6cea40942848bdbc7777ba17

响应参数(json格式)

参数名 类型 必填 描述 参考值
msg String 是否成功 Success | fail(成功|失败)
name String 用户名 zhangsan
rootOrganizationCode String 用户所属的组织编码 zz_BAde1af01
fullName String 用户全名 张三
sex int 性别(0:男,1:女) 0
email String 邮箱
phoneNumber String 手机号

请求示例

curl https://rasdev9.zhixueyun.com/api/v1/human/member/getToken/a97d5ee3cb1793e24562f0c10922a2b9

响应示例

{
    "msg": "success",
    "phoneNumber": null,
    "rootOrganizationCode": "zz_BAde1af01",
    "headPortraitPath": null,
    "sex": 0,
    "name": "admin",
    "rootOrganizationName": "资源共享平台",
    "fullName": "超级管理员",
    "id": "45626218-a4fc-41eb-8c66-022886421a10",
    "headPortrait": null,
    "rootOrganizationId": "ba915d93-274d-4319-8016-035508166f64",
    "email": null
}

异常示例

{"msg": "fail"}

2、 数据回传接口

由于用户学习的资源是资源平台提供的,因此用户在学习资源时所产生的学习记录,进度等信息将会产生在资源平台,若接入方企业需要用到这些信息的话,便要提供资源学习数据回传接口,那么资源平台会调用该接口,用来将用户的学习记录传给接入方系统。对于不同类型的资源,需要提供不同的接口

2.1、课程数据回传接口

接口Url示例(具体url随意,这里只是示例):

https://dev9.zhixueyun.com/api/v1/course-study/course-study-progress/callback

http请求方式

GET

验证方式

sign加签验证

请求参数

参数名 类型 必填 描述 参考值
name String 用户账号 admin
organizationCode String 企业编码 zz_BAde1af01
courseId String 课程ID 5d587e40-2b30-4010-a37f-51aa5d4fbc8f
finishStatus int 学习状态0-未开始,1-学习中,2-已完成,3-已放弃 ,4-标记完成 1
finishTime long 完成时间,(单位秒) 1572316591952
studyTotalTime String 学习总时长 2400
sign String 签名秘钥+name+organizationCode+courseId+finishStatus通过MD5获得签名

返回参数(json格式)

参数名 类型 必填 描述 参考值
status int 状态0:成功1:参数校验错误2:签名认证错误3:用户未找到 0
msg String 错误信息(status=0时为null, 有错误时返回)

请求示例

curl https://dev9.zhixueyun.com/api/v1/course-study/course-study-progress/callback?name=admin&organizationCode=zz_BAde1af01&courseId=5d587e40-2b30-4010-a37f-51aa5d4fbc8f&finishStatus=1&finishTime=1572316591952&studyTotalTime=3600&sign=xxxxxxxxxxxx

响应示例

{"status":0}

异常示例

{"status":2,"msg": "fail"}

2.2、专题班数据回传接口

Url示例:

https://dev9.zhixueyun.com/api/v1/course-study/external-activity-progress/callback

请求方式

GET

验证方式

sign加签验证

请求参数

参数名 类型 必填 描述 参考值
name String 用户账号 admin
organizationCode String 企业编码 zz_BAde1af01
externalActivityId String 课程ID 5d587e40-2b30-4010-a37f-51aa5d4fbc8f
sign String 签名秘钥+name+organizationCode+courseId+finishStatus通过MD5获得签名
obligatoryFinished int 必修-已完成数 1
obligatoryTotal int 必修-总数 2
obligatoryUnit int 必修-单位(1-门, 2-学时) 1
electiveFinished int 选修-已完成数
electiveTotal int 选修-总数
electiveUnit int 选修-单位(1-门, 2-学时)
examStatus int 考试状态(1-未完成, 2-未通过, 3-合格, 4-优秀)
taskStatus int 作业状态(1-未完成, 2-已完成)
studyStatus int 学习状态(1-学习中(默认), 2-结业(合格), 3-结业(优秀))
finishTime long 完成时间
seconds int 学时(单位秒)

返回参数(json格式)

参数名 类型 必填 描述 参考值
status int 状态0:成功1:参数校验错误2:签名认证错误3:用户未找到 0
msg String 错误信息(status=0时为null, 有错误时返回)

请求示例

curl https://dev9.zhixueyun.com/api/v1/course-study/external-activity-progress/callback?name=admin&organizationCode=zz_BAde1af01&externalActivityId=5d587e40-2b30-4010-a37f-51aa5d4fbc8f&obligatoryFinished=1&obligatoryTotal=2&obligatoryUnit=1&electiveFinished=1&electiveTotal=2&electiveUnit=1&examStatus=1&taskStatus=2&studyStatus=1&finishTime=1572316591952&seconds=3600&sign=xxxxxxxxxxxxxxx

响应示例

{"status":0}

异常示例

{"status":2,"msg": "fail"}

2.3、学习专题数据回传接口

Url示例:

https://dev9.zhixueyun.com/api/v1/course-study/subject-progress/callback

请求方式

GET

验证方式

sign加签验证

请求参数

参数名 类型 必填 描述 参考值
name String 用户账号
organizationCode String 企业编码
courseId String 学习专题ID
sign String 签名秘钥+name+organizationCode+courseId+finishStatus通过MD5获得签名
finishStatus int 学习状态(0-未开始,1-学习中,2-已完成,3-已放弃 ,4-标记完成)
beginTime Long 开始学习时间
finishTime Long 学习完成时间
studyTotalTime int 学习总时长(单位秒)
finishNum int 已完成章节数

返回参数(json格式)

参数名 类型 必填 描述 参考值
status int 状态0:成功1:参数校验错误2:签名认证错误3:用户未找到 0
msg String 错误信息(status=0时为null, 有错误时返回)

请求示例

curl https://dev9.zhixueyun.com/api/v1/course-study/subject-progress/callback?name=admin&organizationCode=zz_BAde1af01&courseId=5d587e40-2b30-4010-a37f-51aa5d4fbc8f&finishStatus=1&beginTime=1572316591952&finishTime=1592316591952&studyTotalTime=3600&finishNum=2&sign=xxxxxxxxxxxxxxx

响应示例

{"status":0}

异常示例

{"status":2,"msg": "fail"}

资源平台URL

资源平台的资源以url的形式对接给客户方

课程资源url示例

https://rasdev9.zhixueyun.com/#/study/course/out-detail/6b2df830-872e-4210-b8d6-7c172b3e37ff/zxy/{token}

学习专题资源url示例

https://rasdev9.zhixueyun.com/#/study/subject/out-detail/c58c9cfb-bd6f-4570-8218-e1889487f3be/zxy/{token}

专题班资源url示例

https://rasdev9.zhixueyun.com/#/study/activity/out-detail/803925e5-30fc-49b7-9e26-a728dd5fcdbb/zxy/{token}

注意:{token}为占位符,需要被替换为客户方用户的当前登录token。

资源方

资源方提供的资源url形式

https://domain/xxx/{token}

示例

https://rasdev9.zhixueyun.com/#/study/activity/out-detail/803925e5-30fc-49b7-9e26-a728dd5fcdbb/zxy/{token}

以下为资源方调用资源平台

1、认证流程

认证流程如下:

认证流程

1.1、 获取用户信息接口

接口描述

根据token获取用户

http请求方式

GET

请求地址(restful形式)

https://rasdev9.zhixueyun.com/api/v1/human/member/getToken/{token}

请求参数

参数名 类型 必填 描述 参考值
token String 用户凭证(url中的参数) a0d75cea6cea40942848bdbc7777ba17

响应参数(json格式)

参数名 类型 必填 描述 参考值
msg String 是否成功 Success | fail(成功|失败)
name String 用户名 zhangsan
rootOrganizationCode String 用户所属的组织编码 zz_BAde1af01
fullName String 用户全名 张三
sex int 性别(0:男,1:女) 0
email String 邮箱
phoneNumber String 手机号

请求示例

curl https://rasdev9.zhixueyun.com/api/v1/human/member/getToken/a97d5ee3cb1793e24562f0c10922a2b9

响应示例

{
    "msg": "success",
    "phoneNumber": null,
    "rootOrganizationCode": "zz_BAde1af01",
    "headPortraitPath": null,
    "sex": 0,
    "name": "admin",
    "rootOrganizationName": "资源共享平台",
    "fullName": "超级管理员",
    "id": "45626218-a4fc-41eb-8c66-022886421a10",
    "headPortrait": null,
    "rootOrganizationId": "ba915d93-274d-4319-8016-035508166f64",
    "email": null
}

异常示例

{"msg": "fail"}

2、 数据回传接口

由于用户学习的资源最终是访问的资源方的地址,因此用户在学习资源时所产生的学习记录,进度等信息将会产生在资源方,那么资源方需要将这些信息传输给资源平台,资源平台提供了数据接收接口,那么资源方会调用这些接口,用来将用户的学习记录传给接入方系统。对于不同类型的资源,提供了不同的接口。

2.1、课程数据回传接口

接口描述

同步课程学习记录数据

http请求方式

GET

验证方式

sign加签验证

请求地址

https://rasdev9.zhixueyun.com/api/v1/content/resource/learning/progress/course

请求参数

参数名 类型 必填 描述 参考值
name String 用户账号
organizationCode String 企业编码 zz_BAde1af01
courseId String 课程ID 5d587e40-2b30-4010-a37f-51aa5d4fbc8f
finishStatus int 学习状态0-未开始,1-学习中,2-已完成,3-已放弃 ,4-标记完成 1
finishTime long 完成时间,(单位秒) 0
studyTotalTime String 学习总时长
sign String 签名

返回参数(json格式)

参数名 类型 必填 描述 参考值
status int 状态0:成功1:参数校验错误2:签名认证错误3:用户未找到 0
msg String 错误信息(status=0时为null, 有错误时返回)

请求示例

curl https://rasdev9.zhixueyun.com/api/v1/content/resource/learning/progress/course?name=admin&organizationCode=zz_BAde1af01&courseId=5d587e40-2b30-4010-a37f-51aa5d4fbc8f&finishStatus=1&finishTime=1572316591952&studyTotalTime=3600&sign=xxxxxxxxxxxx

响应示例

{"status":0}

异常示例

{"status":2,"msg": "fail"}

2.2、专题班数据回传接口

接口描述

同步专题班学习记录数据

http请求方式

GET

验证方式

sign加签验证

请求地址

https://rasdev9.zhixueyun.com/api/v1/content/resource/learning/progress/external-activity

请求参数

参数名 类型 必填 描述 参考值
name String 用户账号
organizationCode String 企业编码
externalActivityId String 课程ID
sign String 签名
obligatoryFinished int 必修-已完成数
obligatoryTotal int 必修-总数
obligatoryUnit int 必修-单位(1-门, 2-学时)
electiveFinished int 选修-已完成数
electiveTotal int 选修-总数
electiveUnit int 选修-单位(1-门, 2-学时)
examStatus int 考试状态(1-未完成, 2-未通过, 3-合格, 4-优秀)
taskStatus int 作业状态(1-未完成, 2-已完成)
studyStatus int 学习状态(1-学习中(默认), 2-结业(合格), 3-结业(优秀))
finishTime long 完成时间
seconds int 学时(单位秒)

响应参数(json格式)

参数名 类型 必填 描述 参考值
status int 状态0:成功1:参数校验错误2:签名认证错误3:用户未找到 0
msg String 错误信息(status=0时为null, 有错误时返回)

请求示例

curl https://rasdev9.zhixueyun.com/api/v1/content/resource/learning/progress/external-activity?name=admin&organizationCode=zz_BAde1af01&externalActivityId=5d587e40-2b30-4010-a37f-51aa5d4fbc8f&obligatoryFinished=1&obligatoryTotal=2&obligatoryUnit=1&electiveFinished=1&electiveTotal=2&electiveUnit=1&examStatus=1&taskStatus=2&studyStatus=1&finishTime=1572316591952&seconds=3600&sign=xxxxxxxxxxxxxxx

响应示例

{"status":0}

异常示例

{"status":2,"msg": "fail"}

2.3、学习专题数据回传接口

接口描述

同步学习专题学习记录数据

http请求方式

GET

验证方式

sign加签验证

请求地址

https://rasdev9.zhixueyun.com/api/v1/content/resource/learning/progress/subject

请求参数

参数名 类型 必填 描述 参考值
name String 用户账号
organizationCode String 企业编码
courseId String 学习专题ID
sign String 签名
finishStatus int 学习状态(0-未开始,1-学习中,2-已完成,3-已放弃 ,4-标记完成)
beginTime Long 开始学习时间
finishTime Long 学习完成时间
studyTotalTime int 学习总时长(单位秒)
finishNum int 已完成章节数

返回参数:

参数名 类型 必填 描述 参考值
status int 状态0:成功1:参数校验错误2:签名认证错误3:用户未找到 0
msg String 错误信息(status=0时为null, 有错误时返回)

请求示例

curl https://rasdev9.zhixueyun.com/api/v1/content/resource/learning/progress/external-activity?name=admin&organizationCode=zz_BAde1af01&courseId=5d587e40-2b30-4010-a37f-51aa5d4fbc8f&finishStatus=1&beginTime=1572316591952&finishTime=1592316591952&studyTotalTime=3600&finishNum=2&sign=xxxxxxxxxxxxxxx

响应示例

{"status":0}

异常示例

{"status":2,"msg": "fail"}

接口签名

MD5参数签名的方式

  1. 给资源方分配对应的key、secret

  2. Sign签名,调用API 时需要对请求参数进行签名验证,签名方式如下:

    a. 按照请求参数名称将所有请求参数按照字母先后顺序排序得到:key1value1key2value2...keynvaluen 字符串如:将arong=1,mrong=2,crong=3 排序为:arong=1, crong=3,mrong=2 然后将参数名和参数值进行拼接得到参数字符串:arong1crong3mrong2。

    b. 将secret加在参数字符串的头部后进行MD5加密 ,加密后的字符串需大写。即得到签名Sign

资源方调用:

https://rasdev9.zhixueyun.com/api/v1/content/resource/learning/progress/subject?key=app_key&sign=BCC7C71CF93F9CDBDB88671B701D8A35&参数1=value1&参数2=value2......