Showing
12 changed files
with
420 additions
and
0 deletions
.sparkleshare
0 → 100644
| 1 | +c885220754f142364c05832aa5db702c0ceac992 |
9-1相关/9-1版本相关接口.md
0 → 100644
| 1 | + | ||
| 2 | +# 9.1接口文档: | ||
| 3 | + | ||
| 4 | +- 完成任务分享接口 | ||
| 5 | + | ||
| 6 | +路径: | ||
| 7 | +api-online.test.boxfish.cn/share/for?share_type=FINISH_STUDY&access_token=admin | ||
| 8 | + | ||
| 9 | +方式: | ||
| 10 | +POST | ||
| 11 | + | ||
| 12 | + 参数例子: | ||
| 13 | + { | ||
| 14 | + "title" : "BOXFiSH学员:学习全辅导,每天都上外教课!", | ||
| 15 | + "imageName" : "award_logo.png", | ||
| 16 | + "description" : "我在BOXFiSH学英语#学的不止是英语,更是全球视角下的独立思考。", | ||
| 17 | + "award_code":"hahaha", | ||
| 18 | + "lesson_list":[ | ||
| 19 | + { | ||
| 20 | + "lesson_name" : "lesson_name1", | ||
| 21 | + "lesson_cover" : "lesson_cover1", | ||
| 22 | + "lesson_type" : "lesson_type1" | ||
| 23 | + }, | ||
| 24 | + { | ||
| 25 | + "lesson_name" : "lesson_name2", | ||
| 26 | + "lesson_cover" : "lesson_cover2", | ||
| 27 | + "lesson_type" : "lesson_type2" | ||
| 28 | + }, | ||
| 29 | + { | ||
| 30 | + "lesson_name" : "lesson_name3", | ||
| 31 | + "lesson_cover" : "lesson_cover3", | ||
| 32 | + "lesson_type" : "lesson_type3" | ||
| 33 | + } | ||
| 34 | + ] | ||
| 35 | + } | ||
| 36 | + | ||
| 37 | + 返回结果例子: | ||
| 38 | + | ||
| 39 | + { | ||
| 40 | + "online_score": "106", | ||
| 41 | + "gold": "633", | ||
| 42 | + "msg": "success", | ||
| 43 | + "url": "http://api-online.test.boxfish.cn/share/wechat/finish/study/1/b834bf2e-2244-4884-a0ed-050ce0fa8c62" | ||
| 44 | + | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + | ||
| 48 | + | ||
| 49 | +- 阶段预测接口 | ||
| 50 | + | ||
| 51 | +路径: | ||
| 52 | + | ||
| 53 | +api-online.test.boxfish.cn/stage/multiword/info?access_token=JWEIEfGYly | ||
| 54 | + | ||
| 55 | +方式: | ||
| 56 | + | ||
| 57 | +GET | ||
| 58 | + | ||
| 59 | + 返回结果例子: | ||
| 60 | + { | ||
| 61 | + "increment": { | ||
| 62 | + "multi_word_increase": 1256, | ||
| 63 | + "word_increase": 1151, | ||
| 64 | + "reading_amount_increase": 3001, | ||
| 65 | + "listening_time_increase": 33060, | ||
| 66 | + "record_score_increase": 0, | ||
| 67 | + "phrase_increase": 0 | ||
| 68 | + }, | ||
| 69 | + "weeks": "预计2周完成", | ||
| 70 | + "level": 2, | ||
| 71 | + "stage": "第一阶段" | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + | ||
| 75 | + | ||
| 76 | + - 完成任务分享接口 | ||
| 77 | +路径: | ||
| 78 | + | ||
| 79 | +api-online.test.boxfish.cn/share/for?share_type=FINISH_STUDY&access_token=admin | ||
| 80 | + | ||
| 81 | +方式: | ||
| 82 | + | ||
| 83 | +POST | ||
| 84 | + | ||
| 85 | + 参数例子: | ||
| 86 | + { | ||
| 87 | + "title" : "BOXFiSH学员:学习全辅导,每天都上外教课!", | ||
| 88 | + "imageName" : "award_logo.png", | ||
| 89 | + "description" : "我在BOXFiSH学英语#学的不止是英语,更是全球视角下的独立思考。", | ||
| 90 | + "award_code":"这里是奖品码参数" | ||
| 91 | + } | ||
| 92 | + 返回结果例子: | ||
| 93 | + { | ||
| 94 | + "score": "106", | ||
| 95 | + "gold": "633", | ||
| 96 | + "msg": "success", | ||
| 97 | + "url": "http://api-online.test.boxfish.cn/share/wechat/finish/study/1/b834bf2e-2244-4884-a0ed-050ce0fa8c62" | ||
| 98 | + } | ||
| 99 | + | ||
| 100 | + - 完成任务分享 - 分享成功 | ||
| 101 | + | ||
| 102 | +路径: | ||
| 103 | + | ||
| 104 | +/successful/share?access_token=admin&share_type=FINISH_STUDY | ||
| 105 | + | ||
| 106 | +方式: | ||
| 107 | + | ||
| 108 | +POST | ||
| 109 | + | ||
| 110 | +路径参数: | ||
| 111 | +share_type=FINISH_STUDY | ||
| 112 | + | ||
| 113 | +body参数: | ||
| 114 | + | ||
| 115 | + | ||
| 116 | + { | ||
| 117 | + "url":"http://localhost/share/wechat/finish/study/1299909/16f3cbf6-4922-4ce4-af60-21b2742bb8b2", | ||
| 118 | + "platform":"QQ" | ||
| 119 | + } | ||
| 120 | + | ||
| 121 | + | ||
| 122 | + | ||
| 123 | + | ||
| 124 | + | ||
| 125 | + | ||
| 126 | + - user/me | ||
| 127 | + | ||
| 128 | + 路径: | ||
| 129 | + | ||
| 130 | + user/me | ||
| 131 | + | ||
| 132 | + 方式: | ||
| 133 | + | ||
| 134 | + GET | ||
| 135 | + | ||
| 136 | + | ||
| 137 | + 返回参数: | ||
| 138 | + { | ||
| 139 | + "grade": "六年级", | ||
| 140 | + "difficulty": "5", | ||
| 141 | + "courseLevel": "5", | ||
| 142 | + "publication": "PEP版六年级上", | ||
| 143 | + "updateTime": "2017-03-09 19:06:29.0", | ||
| 144 | + "update_at": "2017-03-09 19:06:29.0", | ||
| 145 | + "plan": "ONE_HOUR", | ||
| 146 | + "purchase": "OPEN_4P", | ||
| 147 | + "mobile": "18264160050", | ||
| 148 | + "interface_version": { | ||
| 149 | + "finished": "2016-09-03T17:00:47.815", | ||
| 150 | + "score": "2016-09-03T17:00:47.815", | ||
| 151 | + "buy": "2016-09-03T17:00:47.815", | ||
| 152 | + "synchronize_word": 1 | ||
| 153 | + }, | ||
| 154 | + "id": 1, | ||
| 155 | + "username": "admin", | ||
| 156 | + "nickname": "拒绝黄赌毒", | ||
| 157 | + "realname": "盒子鱼", | ||
| 158 | + "figure_url": "https://avatars.boxfish.cn/user/-12/figure/1411532427.jpg", | ||
| 159 | + "catalog": "初中", | ||
| 160 | + "completed": 6, | ||
| 161 | + "first_login": true, | ||
| 162 | + "gift": [ | ||
| 163 | + "lesson_convert_score" | ||
| 164 | + ], | ||
| 165 | + "score": 372738, | ||
| 166 | + "goal": { | ||
| 167 | + "id": 1, | ||
| 168 | + "goal_step": 55000, | ||
| 169 | + "current_step": 3218 | ||
| 170 | + }, | ||
| 171 | + "queue": { | ||
| 172 | + "log_queue_url": "http://cropd5q7bl.mqs-cn-hangzhou.aliyuncs.com/", | ||
| 173 | + "log_queue_name": "test-boxfish-log", | ||
| 174 | + "event_queue_url": "http://cropd5q7bl.mqs-cn-hangzhou.aliyuncs.com/", | ||
| 175 | + "event_queue_name": "test-boxfish-word-event", | ||
| 176 | + "log_mns_queue_url": "https://1296825402699921.mns.cn-hangzhou.aliyuncs.com/", | ||
| 177 | + "log_mns_queue_name": "test-boxfish-log", | ||
| 178 | + "event_mns_queue_url": "https://1296825402699921.mns.cn-hangzhou.aliyuncs.com/", | ||
| 179 | + "event_mns_queue_name": "test-boxfish-word-event" | ||
| 180 | + }, | ||
| 181 | + "easemob_username": "c4ca4238a0b923820dcc509a6f75849b", | ||
| 182 | + "easemob_password": "bc7235a51e34c1d3ebfddeb538c20c71", | ||
| 183 | + "current_login_type": "email", | ||
| 184 | + "today_score": 0, | ||
| 185 | + "qcloud": { | ||
| 186 | + "identifier": "c4ca4238a0b923820dcc509a6f75849b", | ||
| 187 | + "sign": "eJxFkFFPgzAQx78Lz8ZcSzuoiQ9sOEUhEecc7IWUUlidMOy6yTR*dxlh8emS3*8ud--7sV7DxTVvW1Vk3GS2LqwbC6yrAcuuVVpmvDRS9xhRSjHAxR6l3qtd0wsMiCJsA-xLVcjGqFINg4IITrDtcshZXzAUQlBgfFI61CUsH2f2quqbo7vlLIj9JEafkVOlm-hZvYuHwyM6QuIGH2lrnrbGv69MINcz031-eUG1mmO*Cb2lnMOb8bvEneomJKtpzV5wukj0up7oHEFUnrzby7Jimw2xz8HI*XJiUzpKo2o5cJchmzrARs6F2B0ak5lTK4c--f4BR3Bemg__" | ||
| 188 | + }, | ||
| 189 | + "version": "100.0.0", | ||
| 190 | + " is_school_student": true, | ||
| 191 | + "user_role": [ | ||
| 192 | + "user", | ||
| 193 | + "teacher", | ||
| 194 | + "student" | ||
| 195 | + ] | ||
| 196 | + } | ||
| 197 | + | ||
| 198 | + | ||
| 199 | + - 新版首页 | ||
| 200 | + | ||
| 201 | + /event/statistic/stage/info | ||
| 202 | + | ||
| 203 | + 方式: | ||
| 204 | + | ||
| 205 | + GET | ||
| 206 | + | ||
| 207 | + | ||
| 208 | + 返回参数: | ||
| 209 | + { | ||
| 210 | + "stage_level": 3, | ||
| 211 | + "stage": 1, | ||
| 212 | + "progress": "0.00", | ||
| 213 | + "record_score": 0, | ||
| 214 | + "listening_duration": 0, | ||
| 215 | + "multiword_count": 0 | ||
| 216 | + } | ||
| 217 | + | ||
| 218 | + | ||
| 219 | + |
| @@ -255,6 +255,8 @@ | @@ -255,6 +255,8 @@ | ||
| 255 | * [网络状态检测](未整理/网络状态检测.md) | 255 | * [网络状态检测](未整理/网络状态检测.md) |
| 256 | * [网页测试Demo数据](未整理/网页测试Demo数据.md) | 256 | * [网页测试Demo数据](未整理/网页测试Demo数据.md) |
| 257 | * [获取当前分类下存在的班级](未整理/获取当前分类下存在的班级.md) | 257 | * [获取当前分类下存在的班级](未整理/获取当前分类下存在的班级.md) |
| 258 | +* [老罗](laoluo.md) | ||
| 259 | +* [老罗](laoluo1.md) | ||
| 258 | * [分享](yjw接口文档/y分享.md) | 260 | * [分享](yjw接口文档/y分享.md) |
| 259 | * [口语测评](yjw接口文档/y口语测评.md) | 261 | * [口语测评](yjw接口文档/y口语测评.md) |
| 260 | * [手机号接口](yjw接口文档/y手机号接口.md) | 262 | * [手机号接口](yjw接口文档/y手机号接口.md) |
laoluo.md
0 → 100644
| 1 | +## 内容研发环境部署 | ||
| 2 | + | ||
| 3 | +### 一 资源管理 rms | ||
| 4 | +|名称|值|描述 | ||
| 5 | +||| | ||
| 6 | +|主机|192.168.0.111:8060 | ||
| 7 | +|目录|/root/projects/rms-web-1.0-SNAPSHOT.jar| | ||
| 8 | +|地址|http://192.168.0.111:8060/| | ||
| 9 | +|服务启动|service rms start| | ||
| 10 | +|redis|192.168.0.111|database(5) | ||
| 11 | +|rabbitMq|192.168.1.248|(user:admin,pass:boxfish, host:/) | ||
| 12 | +|总表对比表|http://192.168.0.111:10504/| | ||
| 13 | +|认证系统|http://192.168.0.111:8085| | ||
| 14 | +|日志系统|http://192.168.0.111:8088| | ||
| 15 | +|ffmpeg|/usr/bin/ffprobe|使用tika功能需要使用这个软件 | ||
| 16 | +|jackrabbit|/share/rms/jackrabbit| | ||
| 17 | +|跑课资源日志|/share/rms_resource.log| | ||
| 18 | + | ||
| 19 | +### 二 4A:用户管理 register | ||
| 20 | +|名称|值|描述 | ||
| 21 | +||| | ||
| 22 | +|主机|192.168.0.111:8820| | ||
| 23 | +|目录|/root/projects/register.jar| | ||
| 24 | +|地址|http://192.168.0.111:8820/| | ||
| 25 | +|服务启动|service register start| | ||
| 26 | +|数据库|192.168.0.100|4a | ||
| 27 | + | ||
| 28 | +### 三 4A:用户认证 authentication | ||
| 29 | +|名称|值|描述 | ||
| 30 | +||| | ||
| 31 | +|主机|192.168.0.111:8085| | ||
| 32 | +|目录|/root/projects/authentication-0.0.1-SNAPSHOT.jar| | ||
| 33 | +|服务启动|service authentication start| | ||
| 34 | +|redis|192.168.0.111|database(0) | ||
| 35 | +|数据库|192.168.0.100|4a | ||
| 36 | + | ||
| 37 | +### 四 4A:日志服务 audit | ||
| 38 | +|名称|值|描述 | ||
| 39 | +||| | ||
| 40 | +|主机|192.168.0.111:8088| | ||
| 41 | +|目录|/root/projects/audit.jar| | ||
| 42 | +|地址|http://192.168.0.111:8088/| | ||
| 43 | +|服务启动|service audit start| | ||
| 44 | +|rabbitmq|192.168.1.248|(user:admin,pass:boxfish, host:/) | ||
| 45 | +|数据库|192.168.0.100|4a | ||
| 46 | + | ||
| 47 | +### 五 跑课程序 onekey | ||
| 48 | +|名称|值|描述 | ||
| 49 | +||| | ||
| 50 | +|主机|192.168.0.111|8090 | ||
| 51 | +|目录|/root/projects/bebase-onekey-webapp-0.0.1-SNAPSHOT.jar| | ||
| 52 | +|地址|http://192.168.0.111:8090/single| | ||
| 53 | +|服务启动|service onekey start| | ||
| 54 | +|数据库1|192.168.0.100|bebase | ||
| 55 | +|数据库2|192.168.0.100|statistic | ||
| 56 | +|redis|192.168.0.111|databse(5) | ||
| 57 | +|跑课目录|/share/svn| | ||
| 58 | +|删除json|/share/json| | ||
| 59 | +|rms|http://192.168.0.111:8060/lookup/{resType}/{resPath}?resName=xxx|http://192.168.0.111:8060/lookup/image/default?resName=check | ||
| 60 | +|总表对比表|http://192.168.0.111:10504/| | ||
| 61 | +|nlp|http://192.168.0.111:11777/nlp/article| | ||
| 62 | +|同步脚本|/share/sh/rsync.sh|同步课程json和data到100服务器 | ||
| 63 | + | ||
| 64 | +### 六 总表对比表 | ||
| 65 | +|名称|值|描述 | ||
| 66 | +||| | ||
| 67 | +|主机|192.168.0.111:10504| | ||
| 68 | +|目录|/root/projects/relationship-0.0.1-SNAPSHOT.jar| | ||
| 69 | +|地址|http://192.168.0.111:16384| | ||
| 70 | +|服务启动|service relation start| | ||
| 71 | +|数据库|192.168.0.100|course_online | ||
| 72 | +|redis|192.168.0.111|database(5) | ||
| 73 | + | ||
| 74 | + | ||
| 75 | + |
laoluo1.md
0 → 100644
| 1 | +## 内容研发实现 | ||
| 2 | +### 一 资源管理 | ||
| 3 | +1、jackrabbit库的启动(RepositoryStartup类) | ||
| 4 | +> | ||
| 5 | +* 首先启动入口为RepositoryStartup类, 首先会尝试获取到启动的配置文件,然后根据配置文件中库的位置(rep_home)以及库配置文件的位置(rep_config),启动对应的Repository。 | ||
| 6 | +* 其次将Repository注入到JackrabbitUtils与ServletContext等上下文中。 | ||
| 7 | +* 紧接着执行启动管道StartupPipeline, 管道上会安置一些启动阀门StartupValve,依次执行对应的Valve。StartupValve包含有FolderNodeTreeValve(目录节点树构造Valve), NodeRegisterValve(节点注册Valve,当需要调整节点Node时,需要调整resouces/nodetype/*.cnd文件结构, 然后启动的时候,会自动去调整节点结构),RmiSocketValve(socket远程调用线程池启动valve, 当开启Socket远程调用的时候,启动的时候需要启动对应的线程池)。 | ||
| 8 | +* 至此启动完成。 | ||
| 9 | + | ||
| 10 | +2、文件节点上传(ContentController.uploadsubmit)· | ||
| 11 | +> | ||
| 12 | +* 首先调用(ContentController.uploadFile)将文件上传到服务器的临时文件中,上传的时候会依次调用Tika模块中的TikaFilter链,分别为FileNameTikaFilter(文件名过滤,文件名不能以空格结尾例如“aaa .jpg”,因为这样会破坏跑课调用; 不能无文件后缀名),FileSizeTikaFilter(不允许空文件),CodeTikaFilter(文件编码格式的验证,视频视频码需要为h264,音频码为aac),ContentTypeTikaFilter(文件类型的验证)。只有当所有验证条件都通过之后,文件才能真正上传到服务器。 | ||
| 13 | +* 上传之后,需要调用ContentController.uploadsubmit进行提交,提交分为正常提交,覆盖提交,全部覆盖提交,跳过,等同于文件系统中文件修改操作中的覆盖跳过。提交的时候需要使用tika读取资源文件的相关属性, 然后将其保存到对应的节点属性中,最终将其保存。 | ||
| 14 | + | ||
| 15 | +3、远程调用RMI(RmiController.lookupResource) | ||
| 16 | +> | ||
| 17 | +* 调用/lookup/{restype}/{respath}接口,restype资源类型(包含image,audio,video),respath资源路径映射(见/resources/datamap/map.properties)。 | ||
| 18 | +* 根据资源类型, 映射到对应的查找规则(每种资源都有自己的查找规则),如果适配不到对应的规则,则返回404,提示“您所要查找的资源适配不到规则”。如果存在然后根据查找规则,资源名称查找到对应的节点,如果没搜索到对应的资源节点, 返回404,提示"您所要查找的资源xxx.jpg不存在"。 | ||
| 19 | +* 如果存在,则将md5、duration、extname属性设置到响应头中返回。 | ||
| 20 | +* 将文件流写入到Respose当中,与响应头一同返回。 | ||
| 21 | + | ||
| 22 | +4、节点搜索(QueryController.query()) | ||
| 23 | +> | ||
| 24 | +* 表单提交查询条件到/query接口,表单对象QueryContentEntity会自动生成对应的sql2语句。 | ||
| 25 | +* 根据sql2语句进行查询,查询到NodeIterator之后需要进行简单分页。因为jackrabbit不支持limit语句,所以分页需要使用NodeIterator.skip的方式来辅助分页。具体方式为NodeIterator.skip((page+1)*pageSize), 然后NodeIterator迭代一页或者是到末尾,这样计算出一页的数据,封装到QueryContentEntity中返回. | ||
| 26 | + | ||
| 27 | +5 节点框架(Node) | ||
| 28 | +> 节点继承体系,继承父节点,同时会继承父节点的属性。例如在文件节点中添加md5属性,图片节点,视频节点,音频节点都具有md5属性。 | ||
| 29 | +> | ||
| 30 | +|名称|属性|描述|继承自| | ||
| 31 | +|||| | ||
| 32 | +|RootNode|根节点|所有节点的祖节点|无 | ||
| 33 | +|FileNode|文件节点|文件|RootNode | ||
| 34 | +|FolderNode|文件夹节点|文件夹可以包含其他的节点|RootNode | ||
| 35 | +|ImageNode|图片节点|图片|FileNode | ||
| 36 | +|AudioNode|音频节点|音频|FileNode | ||
| 37 | +|VideoNode|视频节点|视频|FileNode | ||
| 38 | + | ||
| 39 | +6、系统工作原理 | ||
| 40 | +> | ||
| 41 | +* 使用jcr协议对文件系统进行抽象, 使用jackrabbit进行节点管理,对外提供web页面进行内容管理与内容查询,同时提供接口供其他系统进行系统集成(例如跑课)。 | ||
| 42 | +* jackrabbit库包含节点注册(nodetype)、节点属性存储(debry)、节点文件存储(datastore),搜索引擎(lucence),权限管理(privileges),版本控制等等功能. | ||
| 43 | + | ||
| 44 | +7、音频缓存重建 | ||
| 45 | +> | ||
| 46 | +* 可以直接手动删除192.168.0.111(5)里面的"/资源/音频"中的缓存。 | ||
| 47 | +* 然后调用/resource/list/{type}接口,type为audio,即可。 | ||
| 48 | + | ||
| 49 | + | ||
| 50 | +## 4A内部认证 | ||
| 51 | +### 一、用户管理(Register) | ||
| 52 | + | ||
| 53 | +> 1、用户添加 | ||
| 54 | +> | ||
| 55 | +* 接口:/user | ||
| 56 | +* method: POST | ||
| 57 | +* 参数: | ||
| 58 | +> | ||
| 59 | +|名称|值|参数 | ||
| 60 | +||| | ||
| 61 | +|username|用户名| | ||
| 62 | +|password|密码| | ||
| 63 | +|nickname|昵称| | ||
| 64 | +|adminPassword|管理员密码|需要用管理员密码才能添加用户 | ||
| 65 | + | ||
| 66 | +2、用户修改密码 | ||
| 67 | +> | ||
| 68 | +* 接口:/user | ||
| 69 | +* method:PUT | ||
| 70 | +* 参数: | ||
| 71 | +> | ||
| 72 | +|名称|值|参数 | ||
| 73 | +||| | ||
| 74 | +|oldpassword|用户旧密码| | ||
| 75 | +|newpassword|新密码| | ||
| 76 | +|id|用户id| | ||
| 77 | + | ||
| 78 | +3、删除用户 | ||
| 79 | +> | ||
| 80 | +* 接口:/user | ||
| 81 | +* method:DELETE | ||
| 82 | +* 参数:id, adminPassword(管理员密码) | ||
| 83 | + | ||
| 84 | +4、获取用户列表 | ||
| 85 | +> | ||
| 86 | +* 接口:/user | ||
| 87 | +* method:GET | ||
| 88 | +* 参数:page=1&size=10 | ||
| 89 | + | ||
| 90 | + | ||
| 91 | +### 二、用户认证(Authentication) | ||
| 92 | +> 1、用户登录 | ||
| 93 | +* 接口:/login | ||
| 94 | +* method:POST | ||
| 95 | +* 参数: | ||
| 96 | +> | ||
| 97 | +|名称|值| | ||
| 98 | +||| | ||
| 99 | +|username|用户名| | ||
| 100 | +|password|密码| | ||
| 101 | + | ||
| 102 | +> 2、token验证 | ||
| 103 | +* 接口:/validation_token | ||
| 104 | +* method:PUT | ||
| 105 | +* 参数: | ||
| 106 | +> | ||
| 107 | +|名称|值| | ||
| 108 | +||| | ||
| 109 | +|token|token| | ||
| 110 | +|appCode|app编码| | ||
| 111 | + | ||
| 112 | +> 3、注销 | ||
| 113 | +* 接口:/logout | ||
| 114 | +* method:PUT | ||
| 115 | +* 参数:access_token=xxxx | ||
| 116 | + | ||
| 117 | + | ||
| 118 | +> 4、根据token获取用户id | ||
| 119 | +* 接口:/userid | ||
| 120 | +* method:GET | ||
| 121 | +* 参数:access_token=xxxx | ||
| 122 | + | ||
| 123 | + |
yjw接口文档/y分享.md
100755 → 100644
File mode changed
yjw接口文档/y分享统计.md
100755 → 100644
File mode changed
yjw接口文档/y口语测评.md
100755 → 100644
File mode changed
yjw接口文档/y手机号接口.md
100755 → 100644
File mode changed
yjw接口文档/y提交成绩.md
100755 → 100644
File mode changed
yjw接口文档/y每日推送.md
100755 → 100644
File mode changed
yjw接口文档/y阶段数.md
100755 → 100644
File mode changed
-
Please register or login to post a comment