Showing
1 changed file
with
363 additions
and
0 deletions
课程内容平台/课程内容平台介绍.md
0 → 100644
1 | +#service_wudaokou | ||
2 | + | ||
3 | +**模块功能划分** | ||
4 | + | ||
5 | +* 配置文件管理 | ||
6 | +* 跑目录 | ||
7 | +* 上传书 | ||
8 | +* 打标签 | ||
9 | +* 标签展示 | ||
10 | +* 封面优化 | ||
11 | +* 开放书 | ||
12 | +* 内容标注 | ||
13 | + | ||
14 | +**简单介绍** | ||
15 | + | ||
16 | +1. 配置文件管理、跑目录、上传书对应的包为cn.boxfishedu.local,对应的数据源为本地100数据源; | ||
17 | +2. 打标签、标签展示、开放书、内容标注对应的包为cn.boxfishedu.cloud.*,对应的数据源为cloud数据源; | ||
18 | +3. 数据源的配置在包cn.boxfishedu.datasource.*下; | ||
19 | +4. 封面优化为一个简单的springMVC,不牵扯数据库。 | ||
20 | + | ||
21 | +**详细说明** | ||
22 | + | ||
23 | +__配置文件管理__ | ||
24 | + | ||
25 | + 包cn.boxfishedu.local.tagmodel | ||
26 | + >流程介绍 | ||
27 | + 界面第一次加载较慢,是因为会去加载左边罗列的属性标签信息,初次是会去github里download并缓存起来,与属性加载相关的类有cn.boxfishedu.config.JsonAddress和cn.boxfishedu.config.JsonController | ||
28 | + a. 新增配置文件 | ||
29 | + a1.程序首先去扫描100服务器上的/share/svn路径下的所有书,然后展示在前端的弹出层里供用户选择 | ||
30 | + a2.选择要为哪个书创建配置文件并确认后,程序会去100服务器上的/share/tagWuDaoKou看有没有以书名为配置文件名的文件,有则删除,然后重建. | ||
31 | + a3. 然后扫描对应书下的所有课,并将其部分信息写入到ini文件里,文件创建完成 | ||
32 | + b. 查看配置文件 | ||
33 | + b1. 程序首先去查询100数据库上的book_has_config_wudaokou表,并将其信息展示在前端的弹出层 | ||
34 | + b2. 用户选择要看的配置文件传给后台,后台会去指定路径下找到文件并解析返回给前端展示 | ||
35 | + c. 保存 | ||
36 | + c1.用户添加到界面的属性通过保存会写入到ini文件里 | ||
37 | + d. 更新配置文件 | ||
38 | + d1. 首先需要通过查看配置文件找到对应的文件并展示在界面上 | ||
39 | + d2. 然后传入当前的ini文件路径到服务器,服务器会去解析当前的ini文件并将属性保存在内存里,然后将文件清空,接着扫描改配置文件对应的书下的所有课并将其写入到对应的ini文件,继而将前面内存保存的属性填充到文件对应的课下面,这样便完成了配置文件的更新 | ||
40 | + | ||
41 | + 类cn.boxfishedu.local.tagmodel.FileController | ||
42 | + | ||
43 | + * _接口_:新增配置文件_接口_ . | ||
44 | + _url_:/file/creation post请求. | ||
45 | + _参数_: **fileName** 要创建的ini文件名,一般为书名. | ||
46 | + _返回值_:状态码 200,ini文件的路径 | ||
47 | + | ||
48 | + * _接口_:获取100服务器上指定路径下所有的文件夹列表. | ||
49 | + _url_:/file/config/list get请求. | ||
50 | + _参数_: **root_path** 默认为/share/svn. | ||
51 | + _返回值_:{"folder":["/share/svn/人教2012版七下","人教2012版七下"]} | ||
52 | + | ||
53 | + * _接口_:查看配置文件. | ||
54 | + _url_:/file/config/analyse get请求. | ||
55 | + _参数_: **config_path** 100服务器上ini文件路径. | ||
56 | + _返回值_:bookName:人教PEP三上 U1|cover:cover/人教PEP三上 U1.jpg|catalogName:TEXTBOOK|difficulty:1|src:/share/svn/人教PEP三上 U1|relationMaterial:PEP版-三上-U1|fitAge:成人|catalogs:!小学英语|bundleName:PEP版|bundleOrder:1|\^\^courseName:Function_如何询问名字?|cover:cover/304.Function_如何询问名字?.jpg|courseType:Function|src:/share/svn/人教PEP三上 U1/304.Function_如何询问名字?.xlsx| | ||
57 | + | ||
58 | + * _接口_:保存ini文件属性. | ||
59 | + _url_:/file/write post请求. | ||
60 | + _参数_: **properties** 属性字符串, **filename** ini文件名, **old_book_name** 旧ini文件(非必须). | ||
61 | + _返回值_:success 成功 failed 失败 | ||
62 | + | ||
63 | + * _接口_:更新配置文件 . | ||
64 | + _url_:/file/update post请求. | ||
65 | + _参数_: **path** ini文件路径. | ||
66 | + _返回值_:状态码200 | ||
67 | + | ||
68 | + 类cn.boxfishedu.local.tagmodel.BookHasConfigController | ||
69 | + | ||
70 | + * _接口_:获取ini配置文件列表. | ||
71 | + _url_:/bookHasConfig get请求. | ||
72 | + _参数_:无. | ||
73 | + _返回值_:[ | ||
74 | + ["/share/newTag/人教PEP三上 U1.ini","人教PEP三上 U1"],["/share/newTag/人教PEP三上 U2.ini","人教PEP三上 U2"] | ||
75 | + ] | ||
76 | + * _接口_:获取所有bundleName. | ||
77 | + _url_:/bookHasConfig/bundleName get请求. | ||
78 | + _参数_:无. | ||
79 | + _返回值_:[ | ||
80 | + [298,"牛津上海版"], | ||
81 | + [98,"牛津粤教版"] | ||
82 | + ] | ||
83 | + | ||
84 | + * _接口_:根据bundleName获取列表. | ||
85 | + _url_:/bookHasConfig/bundle/list get请求. | ||
86 | + _参数_: **bundleName** 强序名称 | ||
87 | + _返回值_:[{ | ||
88 | +"id":615, | ||
89 | +"name":"Level 4_Examination1", | ||
90 | +"config":"/share/tagWuDaoKou/Level 4_Examination1.ini", | ||
91 | +"bundleName":"examination", | ||
92 | +"bundleOrder":1, | ||
93 | +"courseSum":3, | ||
94 | +"maxBundleOrder":0, | ||
95 | +"createTime":1476438562000, | ||
96 | +"updateTime":1476439503000 | ||
97 | +}] | ||
98 | + | ||
99 | + 类cn.boxfishedu.local.tagmodel.BookHasConfigController | ||
100 | + * _接口_:获取带叹号的分类列表. | ||
101 | + _url_:/bookhascatalogs. | ||
102 | + _参数_:无. | ||
103 | + _返回值_:{ | ||
104 | + "one": | ||
105 | + ["!初中英语","!小学英语","!成人英语"], | ||
106 | + "two": | ||
107 | + ["!!PEP版","!!TOEFL","!!一句话英语新闻","!!人教版","!!人教版定制","!!仁爱版","!!八年级下","!!北京版","!!北京版一起","!!北师版"], | ||
108 | + "three": | ||
109 | + ["!!!长难句突破","!!!阅读","!!!高一上","!!!高三上","!!!高中","!!!高二上","!!!高级听读","!!!高考词汇","!!!高考阅读"]} | ||
110 | + | ||
111 | +__跑目录__ | ||
112 | + | ||
113 | + 包cn.boxfishedu.local.rundirectory | ||
114 | + 流程介绍 | ||
115 | + a. 跑目录模块,服务调用采用的websocket连接方式,websocket配置在cn.boxfishedu.local. | ||
116 | + pub.config里. | ||
117 | + b. 跑目录以书为单位,用户可选择跑一本书也可选择批量跑 | ||
118 | + c. 输入相关书名,程序会去book_has_config_wudaokou表搜索到书对应的INI文件的路径并展示的前端界面. | ||
119 | + d. 用户勾选要跑的书,确定后会将对应的INI文件路径传到服务端,后台会根据这些路径找到对应的INI文件并解析为指定的Map结构 | ||
120 | + e. 进一步,程序会将Map结构按照相应的逻辑写入book表、book_section表、namespace_has_book表、book_has_course_catalog表和book_has_catalogs表,同时会将课程对应的封面重命名该封面的MD5值的名字并写入100服务器的/share/data/picture文件下的对应路径中,课程封面的原始位置在对应的INI文件里有写。这一步的操作在cn.boxfishedu.local.rundirectory.service.SourceManager类里执行 | ||
121 | + f. 每跑一次目录,书不会被删除,但是书下面的课程对应的数据库记录,也就是book_section中的记录会被全部删掉,重新写入 | ||
122 | + d. 单课封面的大小不能超过1M | ||
123 | + | ||
124 | +__核心类详情__ | ||
125 | + cn.boxfishedu.local.pub.utils.AnalyseIniFileUtil | ||
126 | + 功能:解析INI文件为map结构 | ||
127 | + cn.boxfishedu.local.rundirectory.service.SourceManager | ||
128 | + 方法: | ||
129 | + addBook() persist书到本地数据库 | ||
130 | + addNamespaceHasBook()将书加入到本地数据库渠道 1 中 | ||
131 | + addBookHasCourseCatalog() 保存书和目录关系 | ||
132 | + addBookSection() persist课到本地数据库 | ||
133 | + checkSum()获取课程封面的md5值 | ||
134 | + storeCover() 保存课程封面到/share/data/picture路径下并修改名为md5的封面 | ||
135 | + | ||
136 | + __上传书__ | ||
137 | + 包cn.boxfishedu.local.upload | ||
138 | + > 流程介绍 | ||
139 | + a. 上传书包括上传书下面的课程对应的json文件到多台服务器、课程所需的音频、视频、图片到OSS以及同步课程对应的本地数据库记录到正式数据库和测试数据库,相关表记录包括book、book_section、book_has_catalogs、namespace_has_book. | ||
140 | + b. 用户选择上传的种类:书或者单课,上传版:学生版或者老师版 | ||
141 | + c. 如果选择学生版,则程序只会去100服务器上的/share/json/student下找课程对应的json文件,并找出json文件里的视频音频图片并上传到OSS,然后同步该课程对应的本地数据库记录到正式数据库和测试数据库 | ||
142 | + d. 如果选择教师版,程序只会去100服务器上的/share/json/teacher下找json文件,后续操作相同. | ||
143 | + e. 两者都选则都上传. | ||
144 | + f. 上传完后,做了一次资源完整性检查,检查的方式是根据课程json里的MD5列表去批量执行下载看是否md5都能下载成功,检查只会检查中国节点 | ||
145 | + | ||
146 | + 类cn.boxfishedu.local.upload.web.UploadBookController | ||
147 | + * _接口_:查询要上传的书或课. | ||
148 | + _url_:/upload/resource get请求. | ||
149 | + _参数_: **type** 上传类型 **key** 查询关键字. | ||
150 | + _返回值_:[ | ||
151 | + { | ||
152 | + "id": 6581, | ||
153 | + "projectName": "广州口语考试1", | ||
154 | + "name": "广州口语考试1", | ||
155 | + "coverV2": "cover/广州口语考试1.jpg", | ||
156 | + "lastModified": 1482129270261, | ||
157 | + "type": "SYSTEM" | ||
158 | + }] | ||
159 | + | ||
160 | + * _接口_: 上传书或课到正式 | ||
161 | + _url_: /upload/resource post请求. | ||
162 | + _参数_: **id** 课程ID或书id, **version** 学生版或教师版. | ||
163 | + _返回值_:状态码200或400 | ||
164 | + | ||
165 | + * __打标签__ | ||
166 | + 包cn.boxfishedu.cloud.tagservice | ||
167 | + > 流程介绍 | ||
168 | + 打标签模块,采用的websocket连接方式,websocket配置在cn.boxfishedu.cloud.pub. | ||
169 | + config里 | ||
170 | + a. 用户输入搜搜索关键字,服务器端会根据关键字到本地100数据库的book_has_config_wudaokou表里找匹配的记录并返回给前端 | ||
171 | + b. 勾选要打标签的书、要打到mongo的哪个collection里,确认后,服务端会去100机器上的路径/share/tagWuDaoKou下去找INI文件并解析为Map结构 | ||
172 | + c. 接着,服务器会将Map结构中的书、课与目录的关系写入到云端mysql数据库的course_catalog表、book_has_course_catalog表、course_relation_catalog表。写之前程序会先将书对应的目录记录从book_has_course_catalog表中删除,然后写入;会将课对应的目录记录从course_relation_catalog表中删除,然后写入 | ||
173 | + d. 继而,程序会将课程所拥有的属性关系(包括课程类型、难度等)写入到云端mongo数据库的相应collection内:如果用户选择智能推荐,则写入到new_version_tag_v2;如果用户选择智能作业,则写入到course_tag_homework_wudaokou。但是不论选择哪一个,都会将记录往course_new里面写一份 | ||
174 | + e. 录入mongo的操作不会删除记录,只会覆盖或新增属性 | ||
175 | + | ||
176 | + __核心类详情__ | ||
177 | + 1. 类cn.boxfishedu.cloud.tagservice.service.AnalyseIniServce | ||
178 | + 功能:解析INI文件为Map结构,并将INI文件模块里的book模块的公共属性写到每一个课程模块的属性里。 | ||
179 | + | ||
180 | + 2. 类cn.boxfishedu.cloud.tagservice.service.TagService | ||
181 | + _成员变量_: | ||
182 | + * courseTypeListForBundle:代表此类型的课程必须有bundle | ||
183 | + * courseTypeListForUltimate:代表此类型的课程必须有英文名称 | ||
184 | + | ||
185 | + _方法_: | ||
186 | + | ||
187 | + * saveHomeworkTag()保存智能作业标签到mongo数据库course_tag_homework_wudaokou | ||
188 | + * saveRecommendTag()保存智能推荐和在线授课标签到mongo数据库new_version_tag_v2 | ||
189 | + * saveCourseNew()保存智能作业、智能推荐、在线授课标签到mongo数据库course_new | ||
190 | + 3. 类cn.boxfishedu.cloud.tagservice.service.BookHasCourseCatalogService | ||
191 | + * saveBookHasCourseCatalog()保存书和目录的关系 | ||
192 | + 4. 类cn.boxfishedu.cloud.tagservice.service.CourseCatalogService | ||
193 | + * saveCourseCatalog() 生成CourseCatalog | ||
194 | + 5. 类cn.boxfishedu.cloud.catalog.CatalogService | ||
195 | + * save()保存书和目录的关系以及课程和目录的关系 | ||
196 | + | ||
197 | +* **标签展示** | ||
198 | + | ||
199 | + 包cn.boxfishedu.cloud.tagshow | ||
200 | + > 流程介绍 | ||
201 | + a. 用户输入书名执行模糊查询,服务端依据书名去云端的mysql数据库的book表查询 | ||
202 | + b. 选择需要看哪里的标签,是智能作业还是智能推荐,点击相应的书,服务端会去mysql的book_has_course_catalog、course_catalog表找到书和目录的关系,到course_relation_catalog表找到课和目录的关系。 | ||
203 | + c. 同时程序也会去mongo里通过课程ID,到相应的collection里找到对应的标签 | ||
204 | + d. 程序会将目录、标签相关信息整合在一起返回给前端展示 | ||
205 | + e. 同时,用户也可以在查看的过程中修改相应的标签属性 | ||
206 | + 类cn.boxfishedu.cloud.tagshow.web.TagShowController | ||
207 | + * _接口_:根据关键字查询书 | ||
208 | + _url_:/tag-show/book get请求 | ||
209 | + _参数_: **key** 查询关键字 **type** 忽略此参数 | ||
210 | + _返回值_:[ | ||
211 | + { | ||
212 | + "id": 2805, | ||
213 | + "projectName": "人教七下 综合", | ||
214 | + "name": "人教七下 综合", | ||
215 | + "lastModified": 1445595498439 | ||
216 | + } | ||
217 | + ] | ||
218 | + | ||
219 | + * _接口_:查看课程标签详情 | ||
220 | + _url_:/tag-show/tag/detail get请求 | ||
221 | + _参数_: **bookId** 书ID **type** homework、recommend或spoken | ||
222 | + _返回值_:略 | ||
223 | + | ||
224 | + * _接口_:修改课程的标签信息 | ||
225 | + _url_:/tag-show/tag post请求 | ||
226 | + _参数_: **courseId** 课程ID **key** 标签key **value** 标签值 **tagType** 操作哪个mongoDB,枚举值 | ||
227 | + _返回值_:成功状态码 200 | ||
228 | + | ||
229 | +* **开放书** | ||
230 | + 包cn.boxfishedu.cloud.namespace | ||
231 | + > 流程介绍 | ||
232 | + 主要修改远端数据库的namespace、namespace_has_book两个表。将书和渠道1、13273两个关联,其中1是对外开放渠道,所有人多能看到;13273渠道为vip渠道,申请了vip认识的老师才能看到。 | ||
233 | + 另外namespace_has_book表中有两个字段student、teacher,代表是否学生或教师能看到这本书 | ||
234 | + | ||
235 | + 类cn.boxfishedu.cloud.namespace.web.NamespaceController | ||
236 | + | ||
237 | + * _接口_:根据关键字查询书 | ||
238 | + _url_:/namespace/book get请求 | ||
239 | + _参数_: **key** 关键字 | ||
240 | + _返回值_:[ | ||
241 | + { | ||
242 | + "id": 2805, | ||
243 | + "projectName": "人教七下 综合", | ||
244 | + "name": "人教七下 综合", | ||
245 | + "lastModified": 1445595498439 | ||
246 | + } | ||
247 | + ] | ||
248 | + | ||
249 | + * _接口_:开放书,开放渠道为1和13273 | ||
250 | + _url_:/namespace/all/open put请求 | ||
251 | + _参数_: **bookIds** 书ID数组 | ||
252 | + _返回值_:成功 状态码200 | ||
253 | + | ||
254 | +* **修改目录** | ||
255 | + 包cn.boxfishedu.cloud.catalog | ||
256 | + > 流程介绍 | ||
257 | + 修改目录主要修改表book_has_course_catalog和course_relation_catalog | ||
258 | + 类cn.boxfishedu.cloud.catalog.CatalogModifyController | ||
259 | + | ||
260 | + * _接口_:根据书名查询与该书相关联的目录分类 | ||
261 | + _url_:/catalog/detail | ||
262 | + _参数_: **book_name** 书名 | ||
263 | + _返回值_:[ | ||
264 | + { | ||
265 | + "book": { | ||
266 | + "id": 5592, | ||
267 | + "projectName": "Function 关切", | ||
268 | + "name": "Function 关切", | ||
269 | + "lastModified": 1476000233025 | ||
270 | + }, | ||
271 | + "courseCatalog": { | ||
272 | + "wholeName": "FUNCTION" | ||
273 | + } | ||
274 | + } | ||
275 | +] | ||
276 | + | ||
277 | + * _接口_:根据书ID修改书的目录分类 | ||
278 | + _url_:/catalog/modify post请求 | ||
279 | + _参数_: **book_id** 书ID **catalog** 目录(可能为多个,中间用,隔开) | ||
280 | + _返回值_:成功 状态码200 其他 状态码 400 | ||
281 | + | ||
282 | +* **优化封面** | ||
283 | + 类cn.boxfishedu.local.localcatalog.web.ImproveImageController | ||
284 | + | ||
285 | + * _接口_:优化封面 | ||
286 | + _url_:/improve/image get请求 | ||
287 | + _参数_: **fileselect[]** 待优化文件数组 | ||
288 | + _返回值_:浏览器会自动打包下载优化后的文件 | ||
289 | + | ||
290 | +###以上为tag项目的接口详细介绍,下面介绍其他的包下的类的作用 | ||
291 | + | ||
292 | +> ###包cn.boxfishedu.local.security | ||
293 | + * 主要是做用户登录验证相关 | ||
294 | + * 用户的用户名和密码保存在本地100数据库bebase的user_info_authentication表下 | ||
295 | + | ||
296 | +> ###包cn.boxfishedu.local.pub | ||
297 | + * 此包下的类只针对本地数据库做相应操作 | ||
298 | + * 类cn.boxfishedu.local.pub.utils.AnalyseIniFileUtil 作用是解析INI文件为Map结构以用来跑目录使用 | ||
299 | + * 类cn.boxfishedu.local.pub.wen.BookNameController 中的接口是根据书名查询书对应的INI配置文件,用于跑目录时输入关键字查询INI文件使用 | ||
300 | + | ||
301 | +> ###包cn.boxfishedu.datasource | ||
302 | + * 主要是双数据源的配置 | ||
303 | + * CloudPoolProperties是正式数据库属性,LocalPoolProperties是本地数据库属性 | ||
304 | + * GlobalDatasourceConfiguration 为初始化本地和正式数据源 | ||
305 | + * RepositoryCloudConfig为正式JPA数据仓库配置,RepositoryLocalConfig为本地JPA数据仓库配置 | ||
306 | + | ||
307 | +> ###包cn.boxfishedu.config | ||
308 | + * http包为http请求工具 | ||
309 | + * 类cn.boxfishedu.config.HomeController为页面切换以及登录接口相关 | ||
310 | + * 类cn.boxfishedu.config.JsonAddress 作用缓存新版配置文件页面左边展示的所有待选属性 | ||
311 | + * 类cn.boxfishedu.config.JsonController中的接口作用是根据关键字从JsonAddress中获取对应的属性集合 | ||
312 | + * 类cn.boxfishedu.config.SvnUpdate 作用的更新远端svn服务器的/share/svn下的文件到100机器的/share/svn下 | ||
313 | + * 类cn.boxfishedu.config.UserInfoFilter 作用记录每个用户请求行为 | ||
314 | + | ||
315 | +#service_delete_book | ||
316 | +> **功能介绍** | ||
317 | +> 1. 主要是删除云端mysql数据库的书、课以及云端mongo数据库的相关记录 | ||
318 | +> 2. 涉及的mysql表为book、book_section、namespace_has_book、book_has_catalogs、book_has_course_catalog、course_relation_catalog、user_has_book_node。 | ||
319 | +> 3. 涉及的mongo表为course_new、new_version_tag、new_version_tag_v2、course_tag_homework_wudaokou、spoken_quiz_attribute | ||
320 | +> 4. 删除界面有个用户名和密码,临时写死在js里了 | ||
321 | +> | ||
322 | +> **注意事项** | ||
323 | +> 1. 删除前首先和内容研发人员确认该书是否已经对外开放了,最好自己确认下!!确认的方式是通过书名去云端的mysql的book表找到书ID,然后去namespace_has_book表找对应的书ID是否存在namespace_id为1或者是13273的记录,1为对外开放,13273为vip渠道,如果没有,说明没有对外开放,可以删除。 | ||
324 | +> 2. 删除书或课的操作为直接操作云端,首先需要和内容研发确认好是否必须删除,同时删除的操作需要让 **邓倩或者切尔西** 知道这件事,不要删错。删完后务必自己通过mysql客户端查询一遍是否删除掉,是否删多了,同时通过mongo客户端查询对应的课程标签记录是否在mongo里已经删除。查询的方式是通过idea控制台有课程ID输出,通过ID来查询。确认好后告知内容研发。 | ||
325 | +> 3. 可能有些书我们不会对外开放,而是只是通过智能推荐或者在线授课或者智能作业的方式面向用户。这种情况下一般会看是否必须删除。如果必须删除,那么需要查询这些课有多少人学,查询的方式通过逯老师那边查询(回头你再问),之后再和逯老师商量是否要删除。 | ||
326 | +> 4. 如果一些课开放给了 **智能作业**,并且已经安排给了学生(是否已经安排通过逯老师那边能查到),那么在删除相关课的同时还需要通知逯老师你删除了哪些课, **务必记住你删除的这些课程ID** | ||
327 | + | ||
328 | +#service_classify_course | ||
329 | +>**功能介绍** | ||
330 | +>1. 模块为新旧课程对照 | ||
331 | +>2. 由于我们的课程每年会做一次更新,用户可能在上一年学过一次,为避免用户今年学到去年的翻新课程,增加了对照功能。 | ||
332 | +>3. 涉及的表为云端数据库的course_mapping_v2 | ||
333 | + | ||
334 | +#service_schedule_task | ||
335 | +>**功能介绍** | ||
336 | +>1. 模块为定时任务 | ||
337 | +>2. 定时备份今天100机器上的/share/backup/data下的文件到阿里云oss上,oss上的文件有效期为3天 | ||
338 | +>3. 定时检查云端mongo数据库的course_new、new_version_tag、new_version_tag_v2的标签完整性,如果不完整会发送邮件给切尔西和邓倩他们,邮件的配置在application.yml里 | ||
339 | +>4. **改进**:new_version_tag 已经不再使用,你可以将它改为course_tag_homework_wudaokou库并定时检查 | ||
340 | + | ||
341 | +#service_utils | ||
342 | +> **功能介绍** | ||
343 | +> 1. 模块为自己随手写的一些小功能,可能有些还可以用,下面是整理的一些还在使用的类并简单的说明了下。使用前建议先过一遍代码 | ||
344 | +> 2. 类com.boxfishedu.myUtils.AddTagProperty; | ||
345 | + | ||
346 | +>>这个类中的方法checkB()是检查云端mongo里存在记录,但是该记录的课程ID在云端mysql数据库已经不存在的所有课程。出现这个原因一般是由于删除课程的时候只删除了mysql没有删除mongo里的记录。此方法可以用来检查mongo和mysql的数据一致性, **此方法会将mongo里冗余的记录删除**,可以考虑先打印,确认后再删除 | ||
347 | + | ||
348 | +> 3.类com.boxfishedu.myUtils.CourseSizeTool | ||
349 | +>>这个类的作用是计算云端在线授课的课程大小并导出到文件中 | ||
350 | + | ||
351 | +> 4.类com.boxfishedu.myUtils.CourseStatistics | ||
352 | +>>这个类的作用是统计云端mongo里在线授课或智能推荐的课程数量,可以统计不同collection、不同课程类型、不同难度、不同渠道,需要修改参数 | ||
353 | + | ||
354 | +> 5.类com.boxfishedu.myUtils.CreateHomeWorkCollection | ||
355 | +>>这个类的作用是将云端mongo的course_tag_homework_wudaokou里的强序bundle全部按照本地mysql数据库的book_has_config_wudaokou表里的书顺序全部更新一遍。这个类可以指定只更新某一个bundleName下的所有课。一般用于内容研发说某个bundleName下的课程顺序不对,然后重新打标签了也还是不对的情况。 | ||
356 | + | ||
357 | +>6.类com.boxfishedu.myUtils.NamespaceHasBook | ||
358 | +>>作用是将某本书指定开放给某些人,一般内容研发有这个需求 | ||
359 | + | ||
360 | +>7.类com.boxfishedu.myUtils.NamespaceHasUser | ||
361 | +>>方法openInner是给指定用户开放内部权限; | ||
362 | +>>方法openVip是给指定用户开放vip权限; | ||
363 | +>>开放前只需要将用户名粘贴到“开通权限.txt”文本下,每行一条记录执行就可以了 |
-
Please register or login to post a comment