@x-edu/live-player 0.0.19 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/.browserslistrc +10 -10
  2. package/.eslintignore +8 -8
  3. package/.eslintrc.js +26 -26
  4. package/.gem-mine +11 -11
  5. package/.postcssrc.js +6 -6
  6. package/README.md +145 -145
  7. package/babel.config.js +33 -33
  8. package/dist/XEduLivePlayer.common.js +12161 -1154
  9. package/dist/XEduLivePlayerPre.common.js +12369 -1358
  10. package/doc/develop.md +23 -23
  11. package/gem-mine.config.js +86 -86
  12. package/jest.config.js +9 -9
  13. package/jsconfig.json +15 -15
  14. package/mock/helper.js +8 -8
  15. package/mock/index.js +34 -34
  16. package/package.json +99 -99
  17. package/public/3rd/ali-player/alipayercomponents-1.0.8.min.js +26 -26
  18. package/public/3rd/ali-player/aliplayer-hls-min.js +27 -27
  19. package/public/3rd/ali-player/aliplayer-min.js +1 -1
  20. package/public/3rd/im-web-push/index.umd.js +14 -14
  21. package/public/JsBridge.js +1602 -1602
  22. package/public/fish/editor/themes/default/css/ueditor.css +1905 -1905
  23. package/public/fish/editor/third-party/codemirror/codemirror.css +104 -104
  24. package/public/fish/editor/third-party/codemirror/codemirror.js +3581 -3581
  25. package/public/fish/editor/third-party/zeroclipboard/ZeroClipboard.js +1255 -1255
  26. package/public/fish/editor/ueditor.all.min.js +16 -16
  27. package/public/fish/editor/ueditor.config.js +467 -467
  28. package/public/fish/icon/umd-4.1.2.js +1 -1
  29. package/public/fish/video/videoplayer.min.css +6 -6
  30. package/public/fish/video/videoplayer.min.js +31 -31
  31. package/public/fish/video/zh-CN.js +82 -82
  32. package/public/icon/demo.css +539 -539
  33. package/public/icon/demo_index.html +2189 -2189
  34. package/public/icon/iconfont.css +363 -363
  35. package/public/icon/iconfont.json +618 -618
  36. package/public/index.html +50 -50
  37. package/script/image/readme.md +77 -77
  38. package/script/postcss.js +48 -48
  39. package/src/App.jsx +24 -24
  40. package/src/asset/img/course/playing.svg +21 -21
  41. package/src/asset/img/icon-course-white.svg +3 -3
  42. package/src/asset/img/icon-course.svg +3 -3
  43. package/src/asset/img/icon-eye-white.svg +4 -4
  44. package/src/asset/img/icon-eye.svg +4 -4
  45. package/src/asset/img/icon-school-white.svg +3 -3
  46. package/src/asset/img/icon-school.svg +3 -3
  47. package/src/asset/img/loading.svg +52 -52
  48. package/src/asset/img/video-play.svg +6 -6
  49. package/src/asset/style/background.less +19 -19
  50. package/src/asset/style/banner.less +36 -36
  51. package/src/asset/style/base.less +74 -74
  52. package/src/asset/style/index.less +114 -114
  53. package/src/asset/style/reset-theme.less +141 -141
  54. package/src/asset/style/theme/index.less +55 -55
  55. package/src/asset/style/theme/party/global.less +20 -20
  56. package/src/asset/style/theme/party/override.less +57 -57
  57. package/src/asset/style/theme/test/global.less +18 -18
  58. package/src/asset/style/theme/test/override.less +45 -45
  59. package/src/asset/style/variable.less +12 -12
  60. package/src/component/AliPlayer/index.jsx +49 -49
  61. package/src/component/Avatar/index.jsx +50 -50
  62. package/src/component/Empty/index.jsx +34 -34
  63. package/src/component/Empty/index.module.less +37 -37
  64. package/src/component/IMChatroom/component/status/403.jsx +13 -13
  65. package/src/component/IMChatroom/component/status/404.jsx +13 -13
  66. package/src/component/IMChatroom/component/status/Error.jsx +23 -23
  67. package/src/component/IMChatroom/component/status/Loading.jsx +5 -5
  68. package/src/component/IMChatroom/config/app/config.js +118 -118
  69. package/src/component/IMChatroom/config/app/index.js +60 -60
  70. package/src/component/IMChatroom/config/env.js +5 -5
  71. package/src/component/IMChatroom/config/index.js +3 -3
  72. package/src/component/IMChatroom/config/request/config/base.js +124 -124
  73. package/src/component/IMChatroom/config/request/config/chatroom.js +26 -26
  74. package/src/component/IMChatroom/config/request/config/imCoreApi.js +21 -21
  75. package/src/component/IMChatroom/config/request/index.js +21 -21
  76. package/src/component/IMChatroom/config/request/proxy.js +39 -39
  77. package/src/component/IMChatroom/config/url.js +7 -7
  78. package/src/component/IMChatroom/constants/errorCode.js +9 -9
  79. package/src/component/IMChatroom/constants/index.js +84 -84
  80. package/src/component/IMChatroom/constants/origin.js +27 -27
  81. package/src/component/IMChatroom/context/chatroom.js +154 -154
  82. package/src/component/IMChatroom/context/connect.js +28 -28
  83. package/src/component/IMChatroom/i18n/en/index.json +73 -73
  84. package/src/component/IMChatroom/i18n/index.jsx +14 -14
  85. package/src/component/IMChatroom/i18n/language.js +9 -9
  86. package/src/component/IMChatroom/i18n/zh-CN/index.json +73 -73
  87. package/src/component/IMChatroom/index.jsx +49 -49
  88. package/src/component/IMChatroom/page/chat/index.jsx +27 -27
  89. package/src/component/IMChatroom/page/chat/messageEditor/index.jsx +375 -375
  90. package/src/component/IMChatroom/page/chat/messageList/index.jsx +354 -354
  91. package/src/component/IMChatroom/page/chat/stickedMessage/index.jsx +59 -59
  92. package/src/component/IMChatroom/page/chat/stickedMessage/style/index.module.less +7 -7
  93. package/src/component/IMChatroom/page/chat/style/index.module.less +51 -51
  94. package/src/component/IMChatroom/page/home/connect/index.jsx +188 -188
  95. package/src/component/IMChatroom/page/home/connect/status.jsx +124 -124
  96. package/src/component/IMChatroom/page/home/context/cmd.jsx +37 -37
  97. package/src/component/IMChatroom/page/home/context/index.jsx +67 -67
  98. package/src/component/IMChatroom/page/home/index.jsx +164 -164
  99. package/src/component/IMChatroom/page/home/notice/index.jsx +123 -123
  100. package/src/component/IMChatroom/page/home/notice/style/index.module.less +49 -49
  101. package/src/component/IMChatroom/page/home/style/index.module.less +110 -110
  102. package/src/component/IMChatroom/page/member/index.jsx +15 -15
  103. package/src/component/IMChatroom/page/member/memberCount/index.jsx +44 -44
  104. package/src/component/IMChatroom/page/member/memberList/index.jsx +121 -121
  105. package/src/component/IMChatroom/page/member/style/index.module.less +2 -2
  106. package/src/component/IMChatroom/sdk/bridge.js +39 -39
  107. package/src/component/IMChatroom/sdk/cs/constants.js +20 -20
  108. package/src/component/IMChatroom/sdk/cs/index.js +101 -101
  109. package/src/component/IMChatroom/sdk/imChatroom.js +15 -15
  110. package/src/component/IMChatroom/sdk/imcore/constants.js +128 -128
  111. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomDestroyed.js +5 -5
  112. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomInfoGetFail.js +5 -5
  113. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomKickedByAdmin.js +5 -5
  114. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomKickedBySelf.js +5 -5
  115. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomLoginFail.js +5 -5
  116. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomLoginSuccess.js +5 -5
  117. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomMemberLogin.js +5 -5
  118. package/src/component/IMChatroom/sdk/imcore/emitters/chatroomMemberLogout.js +5 -5
  119. package/src/component/IMChatroom/sdk/imcore/emitters/connectionConnected.js +5 -5
  120. package/src/component/IMChatroom/sdk/imcore/emitters/connectionConnecting.js +5 -5
  121. package/src/component/IMChatroom/sdk/imcore/emitters/connectionDisconnect.js +5 -5
  122. package/src/component/IMChatroom/sdk/imcore/emitters/index.js +57 -57
  123. package/src/component/IMChatroom/sdk/imcore/emitters/messageReceive.js +36 -36
  124. package/src/component/IMChatroom/sdk/imcore/index.js +178 -178
  125. package/src/component/IMChatroom/sdk/imcore/interceptors/request.js +7 -7
  126. package/src/component/IMChatroom/sdk/imcore/interceptors/response.js +5 -5
  127. package/src/component/IMChatroom/sdk/imcore/plugins/getAuth.js +64 -64
  128. package/src/component/IMChatroom/sdk/imcore/plugins/getConversationId.js +20 -20
  129. package/src/component/IMChatroom/sdk/imcore/plugins/getExtInfo.js +10 -10
  130. package/src/component/IMChatroom/sdk/imcore/plugins/getLoginInfo.js +48 -48
  131. package/src/component/IMChatroom/sdk/imcore/plugins/getPlatformType.js +12 -12
  132. package/src/component/IMChatroom/sdk/imcore/plugins/index.js +22 -22
  133. package/src/component/IMChatroom/sdk/imcore/util/format.js +177 -177
  134. package/src/component/IMChatroom/sdk/imcore/util/parser.js +35 -35
  135. package/src/component/IMChatroom/sdk/oms.js +18 -18
  136. package/src/component/IMChatroom/sdk/uc.js +3 -3
  137. package/src/component/IMChatroom/subscription/channel/app.js +5 -5
  138. package/src/component/IMChatroom/subscription/channel/ctl.js +22 -22
  139. package/src/component/IMChatroom/subscription/channel/member.js +40 -40
  140. package/src/component/IMChatroom/subscription/channel/message.js +13 -13
  141. package/src/component/IMChatroom/subscription/channel/ntf.js +86 -86
  142. package/src/component/IMChatroom/subscription/channel/tel.js +5 -5
  143. package/src/component/IMChatroom/subscription/channel/websocket.js +5 -5
  144. package/src/component/IMChatroom/subscription/event.js +37 -37
  145. package/src/component/IMChatroom/subscription/index.js +19 -19
  146. package/src/component/IMChatroom/util/account.js +8 -8
  147. package/src/component/IMChatroom/util/chatroom.js +255 -255
  148. package/src/component/IMChatroom/util/jsonBigInt.js +5 -5
  149. package/src/component/IMChatroom/util/location.js +12 -12
  150. package/src/component/Icon/index.jsx +16 -16
  151. package/src/component/Icon/index.module.less +2 -2
  152. package/src/component/Pagination/LocalPagination.jsx +27 -27
  153. package/src/component/Pagination/RemotePagination.jsx +32 -32
  154. package/src/component/Pagination/index.jsx +31 -31
  155. package/src/component/Pagination/index.module.less +110 -110
  156. package/src/component/PlayerTip/index.jsx +34 -34
  157. package/src/component/VideoBase/index.jsx +242 -242
  158. package/src/component/VideoBase/style.less +65 -65
  159. package/src/component/VideoBase/utils.js +81 -81
  160. package/src/component/mixin.less +9 -9
  161. package/src/component/status/403.jsx +15 -15
  162. package/src/component/status/404/index.jsx +73 -73
  163. package/src/component/status/404/index.module.less +36 -36
  164. package/src/component/status/Error/error.module.less +13 -13
  165. package/src/component/status/Error/index.jsx +47 -47
  166. package/src/component/status/Loading/img/loading.svg +52 -52
  167. package/src/component/status/Loading/index.jsx +31 -31
  168. package/src/component/status/Loading/index.less +56 -56
  169. package/src/component/status/None/index.jsx +20 -20
  170. package/src/component/status/None/index.module.less +35 -35
  171. package/src/component/status/Status/index.jsx +26 -26
  172. package/src/component/status/Status/index.module.less +8 -8
  173. package/src/config/constant/commonUrl.js +2 -2
  174. package/src/config/constant/user.js +6 -6
  175. package/src/config/context/site-config.js +48 -48
  176. package/src/config/env/index.js +5 -5
  177. package/src/config/env/local/index.js +13 -13
  178. package/src/config/env/ncet-xedu/api.js +175 -175
  179. package/src/config/env/ncet-xedu/app.js +12 -12
  180. package/src/config/env/ncet-xedu/cs.js +8 -8
  181. package/src/config/env/ncet-xedu/index.js +14 -14
  182. package/src/config/env/ncet-xedu/push.js +5 -5
  183. package/src/config/env/preproduction/api.js +144 -144
  184. package/src/config/env/preproduction/app.js +12 -12
  185. package/src/config/env/preproduction/cs.js +8 -8
  186. package/src/config/env/preproduction/index.js +14 -14
  187. package/src/config/env/preproduction/push.js +5 -5
  188. package/src/config/env/product/api.js +113 -113
  189. package/src/config/env/product/app.js +12 -12
  190. package/src/config/env/product/cs.js +5 -5
  191. package/src/config/env/product/index.js +14 -14
  192. package/src/config/env/product/push.js +5 -5
  193. package/src/config/live.js +80 -80
  194. package/src/config/publicLive.js +53 -53
  195. package/src/config/request/assessments.js +24 -24
  196. package/src/config/request/config-center.js +8 -8
  197. package/src/config/request/helper.js +166 -166
  198. package/src/config/request/im-broadcasts.js +12 -12
  199. package/src/config/request/live-activity-gateway.js +8 -8
  200. package/src/config/request/live-activity.js +13 -13
  201. package/src/config/request/raw.js +6 -6
  202. package/src/config/request/x-cloud-web.js +13 -13
  203. package/src/config/request/x-proxy.js +34 -34
  204. package/src/demo/Detail.jsx +11 -11
  205. package/src/demo/List.jsx +64 -64
  206. package/src/demo/index.jsx +17 -17
  207. package/src/detail/LineSwitch/index.jsx +71 -71
  208. package/src/detail/LiveCountDown/index.jsx +44 -44
  209. package/src/detail/LiveCountDown/index.module.less +31 -31
  210. package/src/detail/LiveOnlineCount/img/icon.svg +15 -15
  211. package/src/detail/LiveOnlineCount/index.jsx +68 -68
  212. package/src/detail/LiveOnlineCount/index.module.less +34 -34
  213. package/src/detail/LiveOnlineCount/util.js +74 -74
  214. package/src/detail/LiveStatus/AnchorOnTheWay.jsx +88 -88
  215. package/src/detail/LiveStatus/index.jsx +202 -202
  216. package/src/detail/LiveStatus/index.module.less +192 -192
  217. package/src/detail/LiveVideo/config.js +37 -37
  218. package/src/detail/LiveVideo/index.jsx +188 -188
  219. package/src/detail/LiveVideo/index.module.less +41 -41
  220. package/src/detail/NotLoginChatroom/index.jsx +37 -37
  221. package/src/detail/NotLoginChatroom/index.module.less +46 -46
  222. package/src/detail/RecordVideo/index.jsx +150 -150
  223. package/src/detail/RecordVideo/index.module.less +31 -31
  224. package/src/detail/ReplayVideo/index.jsx +93 -93
  225. package/src/detail/ReplayVideo/index.module.less +65 -65
  226. package/src/detail/const.js +20 -20
  227. package/src/detail/hook/usePullSource.js +82 -82
  228. package/src/detail/hook/usePullState.js +51 -51
  229. package/src/detail/index.jsx +482 -482
  230. package/src/detail/index.module.less +188 -188
  231. package/src/hook/useAsync.js +84 -84
  232. package/src/hook/useGoToPage.js +83 -83
  233. package/src/hook/useInterval.js +28 -28
  234. package/src/hook/useIsMounted.js +17 -17
  235. package/src/hook/useModuleByRole.js +53 -53
  236. package/src/hook/usePageScrollable.js +52 -52
  237. package/src/hook/usePortal.js +83 -83
  238. package/src/hook/useScrollRestore/index.js +32 -32
  239. package/src/hook/useScrollRestore/scrollContext.js +20 -20
  240. package/src/hook/useTrackRef.js +11 -11
  241. package/src/hook/useWindowSize.js +28 -28
  242. package/src/hook/useZoom.js +47 -47
  243. package/src/index.js +10 -10
  244. package/src/lib/getLiveOnlineCount.js +10 -10
  245. package/src/lib/getServiceConfig.js +102 -102
  246. package/src/list/Empty/index.jsx +20 -20
  247. package/src/list/Empty/index.module.less +23 -23
  248. package/src/list/ListItem/Action/index.jsx +98 -98
  249. package/src/list/ListItem/Action/index.module.less +21 -21
  250. package/src/list/ListItem/img/dianzan.svg +4 -0
  251. package/src/list/ListItem/img/play.svg +15 -15
  252. package/src/list/ListItem/img/yiguankan.svg +3 -0
  253. package/src/list/ListItem/index.jsx +24 -1
  254. package/src/list/ListItem/index.module.less +146 -123
  255. package/src/list/index.jsx +80 -0
  256. package/src/list/index.module.less +35 -35
  257. package/src/service/common.js +73 -73
  258. package/src/service/content-mgr.js +73 -73
  259. package/src/service/im-group.js +12 -12
  260. package/src/service/im.js +7 -7
  261. package/src/service/imBroadcasts.js +33 -33
  262. package/src/service/like.js +134 -134
  263. package/src/service/manageApi.js +7 -7
  264. package/src/service/managePortal.js +6 -6
  265. package/src/service/myStudyRecord.js +93 -93
  266. package/src/service/navigation.js +47 -47
  267. package/src/service/ndMeeting.js +10 -10
  268. package/src/service/ndr.js +122 -122
  269. package/src/service/news.js +93 -93
  270. package/src/service/personalCenter.js +270 -270
  271. package/src/service/qualityCourse.js +31 -31
  272. package/src/service/recommend.js +81 -81
  273. package/src/service/school.js +323 -323
  274. package/src/service/search.js +170 -170
  275. package/src/service/site-config.js +7 -7
  276. package/src/service/socialCensor.js +45 -45
  277. package/src/service/specialEdu.js +31 -31
  278. package/src/service/suggestion.js +85 -85
  279. package/src/service/syncClassroom.js +321 -321
  280. package/src/service/tCourse.js +204 -204
  281. package/src/service/tchTraining.js +37 -37
  282. package/src/service/uc.js +45 -45
  283. package/src/util/app.js +1 -1
  284. package/src/util/array.js +3 -3
  285. package/src/util/auth/func.js +57 -57
  286. package/src/util/date.js +53 -53
  287. package/src/util/env.js +9 -9
  288. package/src/util/getTimestamp.js +10 -10
  289. package/src/util/hof.js +105 -105
  290. package/src/util/live/index.js +42 -42
  291. package/src/util/liveCountUtil.js +52 -0
  292. package/src/util/netUrl.js +35 -35
  293. package/src/util/object.js +13 -13
  294. package/src/util/push/index.js +58 -58
  295. package/src/util/request.js +227 -227
  296. package/src/util/type.js +17 -17
  297. package/src/util/url.js +203 -203
  298. package/src/util/video.js +26 -26
  299. package/test/setup.js +21 -21
  300. package/test/unit/component/header/logo.spec.jsx +8 -8
  301. package/test/unit/helper.jsx +25 -25
  302. package/test/unit/util/date.spec.js +40 -40
@@ -1,323 +1,323 @@
1
- import { memoize } from 'lodash'
2
- import config from '@/config/env'
3
- import { getCdnAPI, getCdnHotAPI } from '@/config/request/cdn'
4
- import cdnAPISchool, { apiCommon } from '@/config/request/x-cloud-web'
5
- // import eduAdminPublicBase from '@/config/request/edu-admin-public-base'
6
- import rawAPI from '@/config/request/raw'
7
-
8
- const schoolServiceName = config.api.serviceName.school
9
- const areaServiceName = config.api.serviceName.areaLibrary
10
-
11
- const other = {
12
- area: 'bdxcloud/configs/rank_area_info.json',
13
- school: 'v1/area_infos/{area_code}/school_infos',
14
- schoolDetail: 'v1/school_infos/{school_id}/actions/detail',
15
- gradeSection: 'bdxcloud/configs/gradeSection.json',
16
- subjectCode: 'bdxcloud/configs/subjectCode.json',
17
- jobTitle: 'bdxcloud/configs/job_title.json',
18
- schoolSection: 'studio/school/section.json',
19
- teacherHonor: 'bdxcloud/configs/teacher_honor.json',
20
- searchSchool: 'v1/school_infos/from_es?grade_section_contain=true&offset={offset}&limit={limit}&school_name={school_name}&area_code={area_code}'
21
- }
22
-
23
- function isSchoolUrl(url) {
24
- return url.indexOf('/school_infos') > -1
25
- }
26
-
27
- function isSchoolCommonUrl(url) {
28
- return url.indexOf('v1/school_infos') > -1
29
- }
30
-
31
- function isOtherUrl(url) {
32
- return url.indexOf('bdxcloud/configs') > -1 || url.indexOf('studio/school/') > -1
33
- }
34
-
35
- function getServiceName(url) {
36
- if (isSchoolUrl(url)) return schoolServiceName
37
- if (isOtherUrl(url)) return ''
38
- return areaServiceName
39
- }
40
-
41
- function getApiRequest(url) {
42
- if (isSchoolCommonUrl(url)) return apiCommon
43
- if (isSchoolUrl(url)) return cdnAPISchool
44
- if (isOtherUrl(url)) return getCdnHotAPI()
45
- return getCdnAPI()
46
- }
47
-
48
- /**
49
- * 拼接请求信息
50
- * @param {*} url
51
- * @param {*} language
52
- */
53
- async function getRequestURL(url) {
54
- const serviceName = getServiceName(url)
55
- return serviceName ? `/${serviceName}/${url}` : `/${url}`
56
- }
57
-
58
- /**
59
- * 请求数据
60
- * @param {*} url
61
- * @returns
62
- */
63
- async function getLibraryDatas(url) {
64
- const requestURL = await getRequestURL(url)
65
- const { data } = await getApiRequest(url).get(requestURL)
66
- return data
67
- }
68
-
69
- /**
70
- * 获取地区数据
71
- * @param {*} id
72
- * @returns
73
- */
74
- export const getAreas = memoize(
75
- async () => {
76
- if (process.env.SDP_ENV === 'preproduction') {
77
- const resp = await rawAPI.get('https://betacs.101.com/v0.1/static/preproduction_content_x_cloud/configs/rank_area_info.json')
78
- return resp.data
79
- } else {
80
- const data = await getLibraryDatas(other.area)
81
- return data
82
- }
83
- },
84
- () => 'areas'
85
- )
86
-
87
- /**
88
- * 获取地区下学校数据
89
- * @param {*} areaCode
90
- * @returns
91
- */
92
- // export async function getSchools(areaCode) {
93
- // const data = await getLibraryDatas(other.school.replace('{area_code}', areaCode))
94
- // return data
95
- // }
96
-
97
- /**
98
- * 新接口 获取地区下学校数据
99
- * @param {*} areaCode
100
- * @returns
101
- */
102
- export async function getSchoolSearchApi({
103
- areaCode,
104
- isAll = false, // 是否搜索全部, 就是包括所有子集
105
- schoolName = '',
106
- offset = 0,
107
- limit = 100
108
- }) {
109
- const params = {
110
- include_sub_area: isAll,
111
- offset,
112
- limit,
113
- count: true
114
- }
115
-
116
- if (areaCode) {
117
- params.area_code = areaCode
118
- }
119
-
120
- if (schoolName) {
121
- params.school_name = schoolName
122
- }
123
-
124
- const { data } = await apiCommon.get('/v1/school_infos/actions/search', {
125
- params
126
- })
127
- return data
128
- }
129
-
130
- /**
131
- * 获取学校年段
132
- * @param {*} id
133
- * @returns
134
- */
135
- export async function getSchoolSectionApi(schoolInfo) {
136
- const newSchoolInfo = {
137
- ...schoolInfo
138
- }
139
- const vals = await getTermMap()
140
- newSchoolInfo.school_section = newSchoolInfo.school_section.map((section) => Object.keys(vals.find((v) => v.id === section)?.section))
141
- newSchoolInfo.school_section = newSchoolInfo.school_section.join(',').split(',')
142
- return newSchoolInfo
143
- }
144
-
145
- /**
146
- * 获取学校数据
147
- * @param {*} id
148
- * @returns
149
- */
150
- export async function getSchool(id) {
151
- const data = await getLibraryDatas(other.schoolDetail.replace('{school_id}', id))
152
- const vals = await getTermMap()
153
- data.school_section = data.school_section.map((section) => Object.keys(vals.find((v) => v.id === section)?.section))
154
- data.school_section = data.school_section.join(',').split(',')
155
- return data
156
- }
157
- // 获取学校详情
158
- export const getSchoolDetail = memoize(
159
- async (id) => {
160
- const data = await getLibraryDatas(other.schoolDetail.replace('{school_id}', id))
161
- return data
162
- },
163
- (id) => `getSchoolDetail_${id}`
164
- )
165
-
166
- /**
167
- * 获取学校数据
168
- * @param {*} id
169
- * @returns
170
- */
171
- export async function getSchoolsByName(name, areaCode, offset = 0, limit = 10) {
172
- let url = ''
173
- if (!name && areaCode) {
174
- url = other.searchSchool
175
- .replace('&school_name={school_name}', '')
176
- .replace('{area_code}', areaCode)
177
- .replace('{offset}', offset)
178
- .replace('{limit}', limit)
179
- } else if (name && !areaCode) {
180
- url = other.searchSchool
181
- .replace('{school_name}', name)
182
- .replace('&area_code={area_code}', '')
183
- .replace('{offset}', offset)
184
- .replace('{limit}', limit)
185
- } else if (!name && !areaCode) {
186
- url = other.searchSchool
187
- .replace('{school_name}', name)
188
- .replace('&area_code={area_code}', '')
189
- .replace('{offset}', offset)
190
- .replace('{limit}', limit)
191
- } else {
192
- url = other.searchSchool
193
- .replace('{school_name}', name)
194
- .replace('{area_code}', areaCode)
195
- .replace('{offset}', offset)
196
- .replace('{limit}', limit)
197
- }
198
- const data = await getLibraryDatas(url)
199
- const vals = await getTermMap()
200
- let items = data.items.map((item) => {
201
- // 将编码转为机构
202
- item.school_section = item.school_section.map((section) => Object.keys(vals.find((v) => v.id === section)?.section))
203
- item.school_section = item.school_section.join(',').split(',')
204
- // 将机构转为学段
205
- return item
206
- })
207
- /**
208
- * 把“其他”排到最后
209
- */
210
- // 搜索了limit个
211
- // 如果offset为0,说明是第一次搜索
212
- if (offset === 0) {
213
- window.tmpSchools = []
214
- }
215
- // 取其他学校数据
216
- let newItems = items.filter((item) => item?.school_name?.indexOf('其他') === -1).sort((data1, data2) => data1?.school_name?.localeCompare(data2?.school_name, 'zh'))
217
- const otherItems = items.filter((item) => item?.school_name?.indexOf('其他') > -1)
218
- window.tmpSchools = [...window.tmpSchools, ...otherItems]
219
- // 如果结果小于limit,说明搜索结束,添加其他地区
220
- if (items?.length < limit) {
221
- newItems = [...newItems, ...window.tmpSchools]
222
- window.tmpSchools = []
223
- }
224
- items = [...newItems]
225
-
226
- return {
227
- ...data,
228
- items
229
- }
230
- }
231
-
232
- export async function getSchoolByName(name) {
233
- const schools = await getSchoolsByName(name)
234
- return schools?.items?.find((s) => s.school_name === name)
235
- }
236
-
237
- /**
238
- * 获取职称
239
- * @returns
240
- */
241
- export async function getJobTitles() {
242
- const { data } = await rawAPI.get('https://bdcs-file-1.ykt.cbern.com.cn/bdxcloud/configs/job_title.json')
243
- // const data = await getLibraryDatas(other.jobTitle)
244
- return data
245
- }
246
-
247
- /**
248
- * 获取学段
249
- * @returns
250
- */
251
- export async function getTerm() {
252
- // const data = await getLibraryDatas(other.gradeSection)
253
- const { data } = await rawAPI.get('https://bdcs-file-1.ykt.cbern.com.cn/bdxcloud/configs/gradeSection.json')
254
- return data
255
- }
256
-
257
- export async function getTermMap() {
258
- const { data } = await rawAPI.get('https://bdcs-file-1.ykt.cbern.com.cn/studio/school/section.json')
259
- return data
260
- }
261
-
262
- // export function getDetailTerms(arg) {
263
- // switch (arg) {
264
- // case '小学':
265
- // return [2]
266
- // case '初中':
267
- // return [3]
268
- // case '高中':
269
- // return [4]
270
- // case '完中':
271
- // return [3, 4]
272
- // case '九年一贯制':
273
- // return [2, 3]
274
- // case '12年一贯制 ':
275
- // return [2, 3]
276
- // case '幼儿园':
277
- // return [1]
278
- // case '其他教育类':
279
- // return [5]
280
- // case '高等教育':
281
- // case '中职':
282
- // case '高职':
283
- // case '机构':
284
- // case '教学点':
285
- // default:
286
- // return [1, 2, 3, 4, 5]
287
- // }
288
- // }
289
-
290
- /**
291
- * 获取学科
292
- * @returns
293
- */
294
- export async function getTermSubject(key) {
295
- const { data } = await rawAPI.get('https://bdcs-file-1.ykt.cbern.com.cn/bdxcloud/configs/subjectCode.json')
296
- // const data = await getLibraryDatas(other.subjectCode)
297
- const res = {}
298
- Object.keys(data).forEach((val, idx) => {
299
- if (String(val).slice(0, 1) === String(key)) {
300
- res[val] = Object.values(data)[idx]
301
- }
302
- })
303
- return res
304
- }
305
-
306
- /**
307
- * 获取学校信息
308
- * @param {*} id
309
- * @returns
310
- */
311
- export async function getSchoolInfo(id) {
312
- const data = await getLibraryDatas(other.schoolDetail.replace('{school_id}', id))
313
- return data
314
- }
315
-
316
- /**
317
- * 获取荣誉
318
- * @returns
319
- */
320
- export async function getHonor() {
321
- const data = await getLibraryDatas(other.teacherHonor)
322
- return data
323
- }
1
+ import { memoize } from 'lodash'
2
+ import config from '@/config/env'
3
+ import { getCdnAPI, getCdnHotAPI } from '@/config/request/cdn'
4
+ import cdnAPISchool, { apiCommon } from '@/config/request/x-cloud-web'
5
+ // import eduAdminPublicBase from '@/config/request/edu-admin-public-base'
6
+ import rawAPI from '@/config/request/raw'
7
+
8
+ const schoolServiceName = config.api.serviceName.school
9
+ const areaServiceName = config.api.serviceName.areaLibrary
10
+
11
+ const other = {
12
+ area: 'bdxcloud/configs/rank_area_info.json',
13
+ school: 'v1/area_infos/{area_code}/school_infos',
14
+ schoolDetail: 'v1/school_infos/{school_id}/actions/detail',
15
+ gradeSection: 'bdxcloud/configs/gradeSection.json',
16
+ subjectCode: 'bdxcloud/configs/subjectCode.json',
17
+ jobTitle: 'bdxcloud/configs/job_title.json',
18
+ schoolSection: 'studio/school/section.json',
19
+ teacherHonor: 'bdxcloud/configs/teacher_honor.json',
20
+ searchSchool: 'v1/school_infos/from_es?grade_section_contain=true&offset={offset}&limit={limit}&school_name={school_name}&area_code={area_code}'
21
+ }
22
+
23
+ function isSchoolUrl(url) {
24
+ return url.indexOf('/school_infos') > -1
25
+ }
26
+
27
+ function isSchoolCommonUrl(url) {
28
+ return url.indexOf('v1/school_infos') > -1
29
+ }
30
+
31
+ function isOtherUrl(url) {
32
+ return url.indexOf('bdxcloud/configs') > -1 || url.indexOf('studio/school/') > -1
33
+ }
34
+
35
+ function getServiceName(url) {
36
+ if (isSchoolUrl(url)) return schoolServiceName
37
+ if (isOtherUrl(url)) return ''
38
+ return areaServiceName
39
+ }
40
+
41
+ function getApiRequest(url) {
42
+ if (isSchoolCommonUrl(url)) return apiCommon
43
+ if (isSchoolUrl(url)) return cdnAPISchool
44
+ if (isOtherUrl(url)) return getCdnHotAPI()
45
+ return getCdnAPI()
46
+ }
47
+
48
+ /**
49
+ * 拼接请求信息
50
+ * @param {*} url
51
+ * @param {*} language
52
+ */
53
+ async function getRequestURL(url) {
54
+ const serviceName = getServiceName(url)
55
+ return serviceName ? `/${serviceName}/${url}` : `/${url}`
56
+ }
57
+
58
+ /**
59
+ * 请求数据
60
+ * @param {*} url
61
+ * @returns
62
+ */
63
+ async function getLibraryDatas(url) {
64
+ const requestURL = await getRequestURL(url)
65
+ const { data } = await getApiRequest(url).get(requestURL)
66
+ return data
67
+ }
68
+
69
+ /**
70
+ * 获取地区数据
71
+ * @param {*} id
72
+ * @returns
73
+ */
74
+ export const getAreas = memoize(
75
+ async () => {
76
+ if (process.env.SDP_ENV === 'preproduction') {
77
+ const resp = await rawAPI.get('https://betacs.101.com/v0.1/static/preproduction_content_x_cloud/configs/rank_area_info.json')
78
+ return resp.data
79
+ } else {
80
+ const data = await getLibraryDatas(other.area)
81
+ return data
82
+ }
83
+ },
84
+ () => 'areas'
85
+ )
86
+
87
+ /**
88
+ * 获取地区下学校数据
89
+ * @param {*} areaCode
90
+ * @returns
91
+ */
92
+ // export async function getSchools(areaCode) {
93
+ // const data = await getLibraryDatas(other.school.replace('{area_code}', areaCode))
94
+ // return data
95
+ // }
96
+
97
+ /**
98
+ * 新接口 获取地区下学校数据
99
+ * @param {*} areaCode
100
+ * @returns
101
+ */
102
+ export async function getSchoolSearchApi({
103
+ areaCode,
104
+ isAll = false, // 是否搜索全部, 就是包括所有子集
105
+ schoolName = '',
106
+ offset = 0,
107
+ limit = 100
108
+ }) {
109
+ const params = {
110
+ include_sub_area: isAll,
111
+ offset,
112
+ limit,
113
+ count: true
114
+ }
115
+
116
+ if (areaCode) {
117
+ params.area_code = areaCode
118
+ }
119
+
120
+ if (schoolName) {
121
+ params.school_name = schoolName
122
+ }
123
+
124
+ const { data } = await apiCommon.get('/v1/school_infos/actions/search', {
125
+ params
126
+ })
127
+ return data
128
+ }
129
+
130
+ /**
131
+ * 获取学校年段
132
+ * @param {*} id
133
+ * @returns
134
+ */
135
+ export async function getSchoolSectionApi(schoolInfo) {
136
+ const newSchoolInfo = {
137
+ ...schoolInfo
138
+ }
139
+ const vals = await getTermMap()
140
+ newSchoolInfo.school_section = newSchoolInfo.school_section.map((section) => Object.keys(vals.find((v) => v.id === section)?.section))
141
+ newSchoolInfo.school_section = newSchoolInfo.school_section.join(',').split(',')
142
+ return newSchoolInfo
143
+ }
144
+
145
+ /**
146
+ * 获取学校数据
147
+ * @param {*} id
148
+ * @returns
149
+ */
150
+ export async function getSchool(id) {
151
+ const data = await getLibraryDatas(other.schoolDetail.replace('{school_id}', id))
152
+ const vals = await getTermMap()
153
+ data.school_section = data.school_section.map((section) => Object.keys(vals.find((v) => v.id === section)?.section))
154
+ data.school_section = data.school_section.join(',').split(',')
155
+ return data
156
+ }
157
+ // 获取学校详情
158
+ export const getSchoolDetail = memoize(
159
+ async (id) => {
160
+ const data = await getLibraryDatas(other.schoolDetail.replace('{school_id}', id))
161
+ return data
162
+ },
163
+ (id) => `getSchoolDetail_${id}`
164
+ )
165
+
166
+ /**
167
+ * 获取学校数据
168
+ * @param {*} id
169
+ * @returns
170
+ */
171
+ export async function getSchoolsByName(name, areaCode, offset = 0, limit = 10) {
172
+ let url = ''
173
+ if (!name && areaCode) {
174
+ url = other.searchSchool
175
+ .replace('&school_name={school_name}', '')
176
+ .replace('{area_code}', areaCode)
177
+ .replace('{offset}', offset)
178
+ .replace('{limit}', limit)
179
+ } else if (name && !areaCode) {
180
+ url = other.searchSchool
181
+ .replace('{school_name}', name)
182
+ .replace('&area_code={area_code}', '')
183
+ .replace('{offset}', offset)
184
+ .replace('{limit}', limit)
185
+ } else if (!name && !areaCode) {
186
+ url = other.searchSchool
187
+ .replace('{school_name}', name)
188
+ .replace('&area_code={area_code}', '')
189
+ .replace('{offset}', offset)
190
+ .replace('{limit}', limit)
191
+ } else {
192
+ url = other.searchSchool
193
+ .replace('{school_name}', name)
194
+ .replace('{area_code}', areaCode)
195
+ .replace('{offset}', offset)
196
+ .replace('{limit}', limit)
197
+ }
198
+ const data = await getLibraryDatas(url)
199
+ const vals = await getTermMap()
200
+ let items = data.items.map((item) => {
201
+ // 将编码转为机构
202
+ item.school_section = item.school_section.map((section) => Object.keys(vals.find((v) => v.id === section)?.section))
203
+ item.school_section = item.school_section.join(',').split(',')
204
+ // 将机构转为学段
205
+ return item
206
+ })
207
+ /**
208
+ * 把“其他”排到最后
209
+ */
210
+ // 搜索了limit个
211
+ // 如果offset为0,说明是第一次搜索
212
+ if (offset === 0) {
213
+ window.tmpSchools = []
214
+ }
215
+ // 取其他学校数据
216
+ let newItems = items.filter((item) => item?.school_name?.indexOf('其他') === -1).sort((data1, data2) => data1?.school_name?.localeCompare(data2?.school_name, 'zh'))
217
+ const otherItems = items.filter((item) => item?.school_name?.indexOf('其他') > -1)
218
+ window.tmpSchools = [...window.tmpSchools, ...otherItems]
219
+ // 如果结果小于limit,说明搜索结束,添加其他地区
220
+ if (items?.length < limit) {
221
+ newItems = [...newItems, ...window.tmpSchools]
222
+ window.tmpSchools = []
223
+ }
224
+ items = [...newItems]
225
+
226
+ return {
227
+ ...data,
228
+ items
229
+ }
230
+ }
231
+
232
+ export async function getSchoolByName(name) {
233
+ const schools = await getSchoolsByName(name)
234
+ return schools?.items?.find((s) => s.school_name === name)
235
+ }
236
+
237
+ /**
238
+ * 获取职称
239
+ * @returns
240
+ */
241
+ export async function getJobTitles() {
242
+ const { data } = await rawAPI.get('https://bdcs-file-1.ykt.cbern.com.cn/bdxcloud/configs/job_title.json')
243
+ // const data = await getLibraryDatas(other.jobTitle)
244
+ return data
245
+ }
246
+
247
+ /**
248
+ * 获取学段
249
+ * @returns
250
+ */
251
+ export async function getTerm() {
252
+ // const data = await getLibraryDatas(other.gradeSection)
253
+ const { data } = await rawAPI.get('https://bdcs-file-1.ykt.cbern.com.cn/bdxcloud/configs/gradeSection.json')
254
+ return data
255
+ }
256
+
257
+ export async function getTermMap() {
258
+ const { data } = await rawAPI.get('https://bdcs-file-1.ykt.cbern.com.cn/studio/school/section.json')
259
+ return data
260
+ }
261
+
262
+ // export function getDetailTerms(arg) {
263
+ // switch (arg) {
264
+ // case '小学':
265
+ // return [2]
266
+ // case '初中':
267
+ // return [3]
268
+ // case '高中':
269
+ // return [4]
270
+ // case '完中':
271
+ // return [3, 4]
272
+ // case '九年一贯制':
273
+ // return [2, 3]
274
+ // case '12年一贯制 ':
275
+ // return [2, 3]
276
+ // case '幼儿园':
277
+ // return [1]
278
+ // case '其他教育类':
279
+ // return [5]
280
+ // case '高等教育':
281
+ // case '中职':
282
+ // case '高职':
283
+ // case '机构':
284
+ // case '教学点':
285
+ // default:
286
+ // return [1, 2, 3, 4, 5]
287
+ // }
288
+ // }
289
+
290
+ /**
291
+ * 获取学科
292
+ * @returns
293
+ */
294
+ export async function getTermSubject(key) {
295
+ const { data } = await rawAPI.get('https://bdcs-file-1.ykt.cbern.com.cn/bdxcloud/configs/subjectCode.json')
296
+ // const data = await getLibraryDatas(other.subjectCode)
297
+ const res = {}
298
+ Object.keys(data).forEach((val, idx) => {
299
+ if (String(val).slice(0, 1) === String(key)) {
300
+ res[val] = Object.values(data)[idx]
301
+ }
302
+ })
303
+ return res
304
+ }
305
+
306
+ /**
307
+ * 获取学校信息
308
+ * @param {*} id
309
+ * @returns
310
+ */
311
+ export async function getSchoolInfo(id) {
312
+ const data = await getLibraryDatas(other.schoolDetail.replace('{school_id}', id))
313
+ return data
314
+ }
315
+
316
+ /**
317
+ * 获取荣誉
318
+ * @returns
319
+ */
320
+ export async function getHonor() {
321
+ const data = await getLibraryDatas(other.teacherHonor)
322
+ return data
323
+ }