@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,134 +1,134 @@
1
- import xCloudWeb from '@/config/request/x-cloud-web'
2
- import { assessmentApi } from '@/config/request/assessments'
3
- import xProxy from '@/config/request/x-proxy'
4
- import config from '@/config/env'
5
-
6
- const { appid } = config.app
7
-
8
- // 获取资源点赞
9
- export async function getResourceLikes(resId, type) {
10
- const { data } = await xProxy.get(`/v1/res_stats/${resId}`, {
11
- params: {
12
- type
13
- }
14
- })
15
- return data
16
- }
17
-
18
- // 获取资源点赞
19
- export async function getResourceLikesForLive(resId, type) {
20
- const { data } = await xProxy.get(`/v1/res_stats/open_lives/${resId}`, {
21
- params: {
22
- type
23
- }
24
- })
25
- return data
26
- }
27
-
28
- // 资源点赞
29
- export async function postResourceLikes(resId, type = 'like') {
30
- await xCloudWeb.post(`/v1/res_stats/${resId}?type=${type}`, {
31
- headers: {
32
- 'sdp-app-id': appid
33
- }
34
- })
35
- }
36
-
37
- async function getStatByChunk(resIds, requestFn) {
38
- const chunkSize = 100
39
- if (resIds.length <= chunkSize) {
40
- const { data } = await requestFn(resIds)
41
- return data
42
- } else {
43
- const chunkCount = Math.ceil(resIds.length / chunkSize)
44
- const result = []
45
- const t = new Array(chunkCount).fill(0)
46
- await Promise.all(t.map(async (v, i) => {
47
- const chunk = resIds.slice(chunkSize * i, chunkSize * i + chunkSize)
48
- const { data } = await requestFn(chunk)
49
- result[i] = data
50
- }))
51
- return [].concat(...result)
52
- }
53
- }
54
-
55
- // 批量获取资源点赞、访问统计
56
- export async function getResourceStat(resIds) {
57
- return getStatByChunk(resIds, async (chunk) => xProxy.get(`/v1/res_stats/actions/query?res_ids=${chunk.join(',')}`))
58
- }
59
-
60
- // 批量获取评价统计
61
- export async function getAssessmentStat(resIds, assessmentTypes) {
62
- return getStatByChunk(resIds, async (chunk) => assessmentApi
63
- .post('/assessments/actions/stats', chunk.map((t, i) => ({
64
- assessment_id: t,
65
- assessment_type: assessmentTypes[i]
66
- }))))
67
- }
68
-
69
- /**
70
- * 每 maxCount 个分为一组,默认每 100 个分为一组
71
- * @param {array} data 带分组数据
72
- * @param {number} [maxNum=100] 每组最大数量
73
- * @return {array} [[data1], [data2], ...]
74
- */
75
- function groupData(data, maxNum = 100) {
76
- const result = []
77
- for (let i = 0; i < data.length;) {
78
- result.push(data.slice(i, i += maxNum))
79
- }
80
- return result
81
- }
82
-
83
- // 一次性获取资源点赞、访问统计
84
- export function getAllResourceStat(data = []) {
85
- const groupIds = groupData(data)
86
- const maxNum = groupIds.length
87
- // 请求总数量
88
- const len = groupIds.length
89
- // 根据请求数量创建一个数组来保存请求的结果
90
- const result = new Array(len).fill(false)
91
- // 当前完成的数量
92
- let count = -1
93
-
94
- return new Promise((resolve) => {
95
- // 请求 maxNum 个
96
- while (count < maxNum) {
97
- next()
98
- }
99
- function next() {
100
- const current = count + 1
101
- count = current
102
- // 处理边界条件
103
- if (current >= len) {
104
- // 请求全部完成就将promise置为成功状态, 然后将result作为promise值返回
105
- if (!result.includes(false)) {
106
- let r = []
107
- result.forEach((arr) => {
108
- r = r.concat(arr)
109
- })
110
- resolve(r)
111
- }
112
- return
113
- }
114
- const ids = groupIds[current]
115
- getResourceStat(ids)
116
- .then((res) => {
117
- // 保存请求结果
118
- result[current] = res
119
- // 请求没有全部完成, 就递归
120
- if (current < len) {
121
- next()
122
- }
123
- })
124
- .catch((err) => {
125
- console.error(err)
126
- result[current] = []
127
- // 请求没有全部完成, 就递归
128
- if (current < len) {
129
- next()
130
- }
131
- })
132
- }
133
- })
134
- }
1
+ import xCloudWeb from '@/config/request/x-cloud-web'
2
+ import { assessmentApi } from '@/config/request/assessments'
3
+ import xProxy from '@/config/request/x-proxy'
4
+ import config from '@/config/env'
5
+
6
+ const { appid } = config.app
7
+
8
+ // 获取资源点赞
9
+ export async function getResourceLikes(resId, type) {
10
+ const { data } = await xProxy.get(`/v1/res_stats/${resId}`, {
11
+ params: {
12
+ type
13
+ }
14
+ })
15
+ return data
16
+ }
17
+
18
+ // 获取资源点赞
19
+ export async function getResourceLikesForLive(resId, type) {
20
+ const { data } = await xProxy.get(`/v1/res_stats/open_lives/${resId}`, {
21
+ params: {
22
+ type
23
+ }
24
+ })
25
+ return data
26
+ }
27
+
28
+ // 资源点赞
29
+ export async function postResourceLikes(resId, type = 'like') {
30
+ await xCloudWeb.post(`/v1/res_stats/${resId}?type=${type}`, {
31
+ headers: {
32
+ 'sdp-app-id': appid
33
+ }
34
+ })
35
+ }
36
+
37
+ async function getStatByChunk(resIds, requestFn) {
38
+ const chunkSize = 100
39
+ if (resIds.length <= chunkSize) {
40
+ const { data } = await requestFn(resIds)
41
+ return data
42
+ } else {
43
+ const chunkCount = Math.ceil(resIds.length / chunkSize)
44
+ const result = []
45
+ const t = new Array(chunkCount).fill(0)
46
+ await Promise.all(t.map(async (v, i) => {
47
+ const chunk = resIds.slice(chunkSize * i, chunkSize * i + chunkSize)
48
+ const { data } = await requestFn(chunk)
49
+ result[i] = data
50
+ }))
51
+ return [].concat(...result)
52
+ }
53
+ }
54
+
55
+ // 批量获取资源点赞、访问统计
56
+ export async function getResourceStat(resIds) {
57
+ return getStatByChunk(resIds, async (chunk) => xProxy.get(`/v1/res_stats/actions/query?res_ids=${chunk.join(',')}`))
58
+ }
59
+
60
+ // 批量获取评价统计
61
+ export async function getAssessmentStat(resIds, assessmentTypes) {
62
+ return getStatByChunk(resIds, async (chunk) => assessmentApi
63
+ .post('/assessments/actions/stats', chunk.map((t, i) => ({
64
+ assessment_id: t,
65
+ assessment_type: assessmentTypes[i]
66
+ }))))
67
+ }
68
+
69
+ /**
70
+ * 每 maxCount 个分为一组,默认每 100 个分为一组
71
+ * @param {array} data 带分组数据
72
+ * @param {number} [maxNum=100] 每组最大数量
73
+ * @return {array} [[data1], [data2], ...]
74
+ */
75
+ function groupData(data, maxNum = 100) {
76
+ const result = []
77
+ for (let i = 0; i < data.length;) {
78
+ result.push(data.slice(i, i += maxNum))
79
+ }
80
+ return result
81
+ }
82
+
83
+ // 一次性获取资源点赞、访问统计
84
+ export function getAllResourceStat(data = []) {
85
+ const groupIds = groupData(data)
86
+ const maxNum = groupIds.length
87
+ // 请求总数量
88
+ const len = groupIds.length
89
+ // 根据请求数量创建一个数组来保存请求的结果
90
+ const result = new Array(len).fill(false)
91
+ // 当前完成的数量
92
+ let count = -1
93
+
94
+ return new Promise((resolve) => {
95
+ // 请求 maxNum 个
96
+ while (count < maxNum) {
97
+ next()
98
+ }
99
+ function next() {
100
+ const current = count + 1
101
+ count = current
102
+ // 处理边界条件
103
+ if (current >= len) {
104
+ // 请求全部完成就将promise置为成功状态, 然后将result作为promise值返回
105
+ if (!result.includes(false)) {
106
+ let r = []
107
+ result.forEach((arr) => {
108
+ r = r.concat(arr)
109
+ })
110
+ resolve(r)
111
+ }
112
+ return
113
+ }
114
+ const ids = groupIds[current]
115
+ getResourceStat(ids)
116
+ .then((res) => {
117
+ // 保存请求结果
118
+ result[current] = res
119
+ // 请求没有全部完成, 就递归
120
+ if (current < len) {
121
+ next()
122
+ }
123
+ })
124
+ .catch((err) => {
125
+ console.error(err)
126
+ result[current] = []
127
+ // 请求没有全部完成, 就递归
128
+ if (current < len) {
129
+ next()
130
+ }
131
+ })
132
+ }
133
+ })
134
+ }
@@ -1,7 +1,7 @@
1
- import ManageApi from '@/config/request/manage-api'
2
-
3
- // 获取管理后台角色
4
- export async function getManageRoles() {
5
- const { data } = await ManageApi.get('/v1/users/actions/get_my_manage_roles')
6
- return data
7
- }
1
+ import ManageApi from '@/config/request/manage-api'
2
+
3
+ // 获取管理后台角色
4
+ export async function getManageRoles() {
5
+ const { data } = await ManageApi.get('/v1/users/actions/get_my_manage_roles')
6
+ return data
7
+ }
@@ -1,6 +1,6 @@
1
- import ManagePortalApi from '@/config/request/manage-portal'
2
-
3
- export async function checkAppPermission() {
4
- const resp = await ManagePortalApi.get('/v2/apps/actions/check_app_permission')
5
- return resp?.data
6
- }
1
+ import ManagePortalApi from '@/config/request/manage-portal'
2
+
3
+ export async function checkAppPermission() {
4
+ const resp = await ManagePortalApi.get('/v2/apps/actions/check_app_permission')
5
+ return resp?.data
6
+ }
@@ -1,93 +1,93 @@
1
- import myStudyRecordApi from '@/config/request/my-study-record'
2
- import openLiveAPI from '@/config/request/open-live'
3
-
4
- /**
5
- * 获取学习进度列表
6
- * @param {Object} params
7
- * @return {Object} { total, items } | {} // total: 总数,items:当前页的资源数据
8
- */
9
- export async function getLearningList({
10
- catalogType,
11
- offset,
12
- limit
13
- }) {
14
- const { data } = await myStudyRecordApi.get('/study_details', {
15
- params: {
16
- catalog_type: catalogType,
17
- offset,
18
- limit
19
- }
20
- })
21
- return data
22
- }
23
-
24
- /**
25
- * 获取学习进度列表
26
- * @param {Object} params
27
- * @return {Object} { total, items } | {} // total: 总数,items:当前页的资源数据
28
- */
29
- export async function getLearningProgress({
30
- resourceId,
31
- userId
32
- }) {
33
- const result = await myStudyRecordApi.get(`/study_details/${resourceId}/${userId}`)
34
- if (result.data) {
35
- return {
36
- ...result.data,
37
- ext_info: JSON.parse(result.data.ext_info)
38
- }
39
- }
40
- }
41
-
42
- /**
43
- * 报告学习进度
44
- * https://wiki.doc.101.com/index.php?title=X%E5%AD%A6%E4%B9%A0%E9%A1%B9%E7%9B%AE%E6%B5%8F%E8%A7%88%E5%8E%86%E5%8F%B2
45
- * @param {Object} body
46
- * @return {void}
47
- */
48
- export async function reportLearningProgress(body) {
49
- const url = '/study_details'
50
- const {
51
- ext_info: extInfo,
52
- ...rest
53
- } = body
54
- await myStudyRecordApi.post(url, {
55
- ...rest,
56
- ext_info: JSON.stringify(extInfo)
57
- })
58
- }
59
-
60
- /**
61
- * 获取学习位置
62
- */
63
- export async function getLearningPosition({
64
- resourceId,
65
- userId
66
- }) {
67
- const { data } = await myStudyRecordApi.get(`/resource_learning_positions/${resourceId}/${userId}`)
68
- return data
69
- }
70
-
71
- /**
72
- * 报告学习位置
73
- */
74
- export async function reportLearningPosition({
75
- resourceId,
76
- userId,
77
- position
78
- }) {
79
- const { data } = await myStudyRecordApi.put(`/resource_learning_positions/${resourceId}/${userId}`, {
80
- position
81
- })
82
- return data
83
- }
84
-
85
- /**
86
- * 获取公开直播列表
87
- * @return {Object} { total, items } | {} // total: 总数,items:所有资源数据(一次性)
88
- */
89
- export async function getLiveList() {
90
- const url = '/study_details'
91
- const { data } = await openLiveAPI.get(url)
92
- return data || {}
93
- }
1
+ import myStudyRecordApi from '@/config/request/my-study-record'
2
+ import openLiveAPI from '@/config/request/open-live'
3
+
4
+ /**
5
+ * 获取学习进度列表
6
+ * @param {Object} params
7
+ * @return {Object} { total, items } | {} // total: 总数,items:当前页的资源数据
8
+ */
9
+ export async function getLearningList({
10
+ catalogType,
11
+ offset,
12
+ limit
13
+ }) {
14
+ const { data } = await myStudyRecordApi.get('/study_details', {
15
+ params: {
16
+ catalog_type: catalogType,
17
+ offset,
18
+ limit
19
+ }
20
+ })
21
+ return data
22
+ }
23
+
24
+ /**
25
+ * 获取学习进度列表
26
+ * @param {Object} params
27
+ * @return {Object} { total, items } | {} // total: 总数,items:当前页的资源数据
28
+ */
29
+ export async function getLearningProgress({
30
+ resourceId,
31
+ userId
32
+ }) {
33
+ const result = await myStudyRecordApi.get(`/study_details/${resourceId}/${userId}`)
34
+ if (result.data) {
35
+ return {
36
+ ...result.data,
37
+ ext_info: JSON.parse(result.data.ext_info)
38
+ }
39
+ }
40
+ }
41
+
42
+ /**
43
+ * 报告学习进度
44
+ * https://wiki.doc.101.com/index.php?title=X%E5%AD%A6%E4%B9%A0%E9%A1%B9%E7%9B%AE%E6%B5%8F%E8%A7%88%E5%8E%86%E5%8F%B2
45
+ * @param {Object} body
46
+ * @return {void}
47
+ */
48
+ export async function reportLearningProgress(body) {
49
+ const url = '/study_details'
50
+ const {
51
+ ext_info: extInfo,
52
+ ...rest
53
+ } = body
54
+ await myStudyRecordApi.post(url, {
55
+ ...rest,
56
+ ext_info: JSON.stringify(extInfo)
57
+ })
58
+ }
59
+
60
+ /**
61
+ * 获取学习位置
62
+ */
63
+ export async function getLearningPosition({
64
+ resourceId,
65
+ userId
66
+ }) {
67
+ const { data } = await myStudyRecordApi.get(`/resource_learning_positions/${resourceId}/${userId}`)
68
+ return data
69
+ }
70
+
71
+ /**
72
+ * 报告学习位置
73
+ */
74
+ export async function reportLearningPosition({
75
+ resourceId,
76
+ userId,
77
+ position
78
+ }) {
79
+ const { data } = await myStudyRecordApi.put(`/resource_learning_positions/${resourceId}/${userId}`, {
80
+ position
81
+ })
82
+ return data
83
+ }
84
+
85
+ /**
86
+ * 获取公开直播列表
87
+ * @return {Object} { total, items } | {} // total: 总数,items:所有资源数据(一次性)
88
+ */
89
+ export async function getLiveList() {
90
+ const url = '/study_details'
91
+ const { data } = await openLiveAPI.get(url)
92
+ return data || {}
93
+ }
@@ -1,47 +1,47 @@
1
- import cdnAPI from '@/config/request/cdn'
2
- import config from '@/config/env'
3
-
4
- const xCloudServiceName = config.api.serviceName.eLabour
5
-
6
- // https://pretest-s-file-1.ykt.cbern.com.cn/ldjy/api_static/providers/95594b88-6a65-42c4-bd83-a81a49b71bc2.json
7
- /**
8
- * 获取机构的文件信息
9
- * @param {*} contentId 机构id
10
- */
11
- export async function getOrganizationDetail(contentId) {
12
- const requestURL = `/${xCloudServiceName}/api_static/providers/${contentId}.json`
13
- const { data } = await cdnAPI.get(requestURL)
14
- return data
15
- }
16
-
17
- // https://pretest-s-file-1.ykt.cbern.com.cn/ldjy/s_course/v2/business_courses/52a86556-32da-43ab-85a6-9c805b83e886/course_relative_infos/zh-CN.json
18
- /**
19
- * 获取课程详情
20
- * @param {*} contentId 课程id
21
- */
22
- export async function getCourseDetail(contentId) {
23
- const requestURL = `/${xCloudServiceName}/s_course/v2/business_courses/${contentId}/course_relative_infos/zh-CN.json`
24
- const { data } = await cdnAPI.get(requestURL)
25
- return data
26
- }
27
-
28
- // https://pretest-s-file-1.ykt.cbern.com.cn/ldjy/s_course/v2/business_courses/52a86556-32da-43ab-85a6-9c805b83e886/course_lecturers.json
29
- /**
30
- * 获取课程详情里授课教师信息
31
- * @param {*} contentId 课程id
32
- */
33
- export async function getCourseLectures(contentId) {
34
- const requestURL = `/${xCloudServiceName}/s_course/v2/business_courses/${contentId}/course_lecturers.json`
35
- const { data } = await cdnAPI.get(requestURL)
36
- return data
37
- }
38
-
39
- /**
40
- * 获取课程详情里关联的机构清单
41
- * @param {*} courseId 课程id
42
- */
43
- export async function getCourseProvides(courseId) {
44
- const requestURL = `/${xCloudServiceName}/s_course/v2/business_courses/${courseId}/course_providers.json`
45
- const { data } = await cdnAPI.get(requestURL)
46
- return data
47
- }
1
+ import cdnAPI from '@/config/request/cdn'
2
+ import config from '@/config/env'
3
+
4
+ const xCloudServiceName = config.api.serviceName.eLabour
5
+
6
+ // https://pretest-s-file-1.ykt.cbern.com.cn/ldjy/api_static/providers/95594b88-6a65-42c4-bd83-a81a49b71bc2.json
7
+ /**
8
+ * 获取机构的文件信息
9
+ * @param {*} contentId 机构id
10
+ */
11
+ export async function getOrganizationDetail(contentId) {
12
+ const requestURL = `/${xCloudServiceName}/api_static/providers/${contentId}.json`
13
+ const { data } = await cdnAPI.get(requestURL)
14
+ return data
15
+ }
16
+
17
+ // https://pretest-s-file-1.ykt.cbern.com.cn/ldjy/s_course/v2/business_courses/52a86556-32da-43ab-85a6-9c805b83e886/course_relative_infos/zh-CN.json
18
+ /**
19
+ * 获取课程详情
20
+ * @param {*} contentId 课程id
21
+ */
22
+ export async function getCourseDetail(contentId) {
23
+ const requestURL = `/${xCloudServiceName}/s_course/v2/business_courses/${contentId}/course_relative_infos/zh-CN.json`
24
+ const { data } = await cdnAPI.get(requestURL)
25
+ return data
26
+ }
27
+
28
+ // https://pretest-s-file-1.ykt.cbern.com.cn/ldjy/s_course/v2/business_courses/52a86556-32da-43ab-85a6-9c805b83e886/course_lecturers.json
29
+ /**
30
+ * 获取课程详情里授课教师信息
31
+ * @param {*} contentId 课程id
32
+ */
33
+ export async function getCourseLectures(contentId) {
34
+ const requestURL = `/${xCloudServiceName}/s_course/v2/business_courses/${contentId}/course_lecturers.json`
35
+ const { data } = await cdnAPI.get(requestURL)
36
+ return data
37
+ }
38
+
39
+ /**
40
+ * 获取课程详情里关联的机构清单
41
+ * @param {*} courseId 课程id
42
+ */
43
+ export async function getCourseProvides(courseId) {
44
+ const requestURL = `/${xCloudServiceName}/s_course/v2/business_courses/${courseId}/course_providers.json`
45
+ const { data } = await cdnAPI.get(requestURL)
46
+ return data
47
+ }
@@ -1,10 +1,10 @@
1
- import ndMeetingExtendAPI from '@/config/request/nd-meeting-extend'
2
-
3
- // 下载网络会议上报
4
- export async function reportPcDownload(params) {
5
- const url = '/guest/down/pc'
6
- const { data } = await ndMeetingExtendAPI.get(url, {
7
- params
8
- })
9
- return data
10
- }
1
+ import ndMeetingExtendAPI from '@/config/request/nd-meeting-extend'
2
+
3
+ // 下载网络会议上报
4
+ export async function reportPcDownload(params) {
5
+ const url = '/guest/down/pc'
6
+ const { data } = await ndMeetingExtendAPI.get(url, {
7
+ params
8
+ })
9
+ return data
10
+ }