The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .dockerignore
├── .env.example
├── .github
    └── SECURITY.md
├── .gitignore
├── ADDITIONAL_TERMS.md
├── CHANGELOG.md
├── Dockerfile
├── LICENSE
├── README.md
├── compose.yml
├── docker
    ├── nginx
    │   └── default.conf
    └── php
    │   ├── php-fpm.conf
    │   ├── php-fpm.d
    │       ├── docker.conf
    │       ├── www.conf
    │       └── zz-docker.conf
    │   └── php.ini
├── xyz.meedu.admin
    ├── .env.example
    ├── .gitignore
    ├── README.md
    ├── index.html
    ├── package.json
    ├── pnpm-lock.yaml
    ├── public
    │   ├── favicon.png
    │   ├── js
    │   │   ├── aliyun-vod
    │   │   │   ├── aliyun-oss-sdk-5.2.0.min.js
    │   │   │   └── aliyun-upload-sdk-1.4.0.min.js
    │   │   ├── highlight
    │   │   │   ├── a11y-dark.min.css
    │   │   │   └── highlight-9.18.5.min.js
    │   │   ├── katex
    │   │   │   ├── contrib
    │   │   │   │   └── auto-render.min.js
    │   │   │   ├── fonts
    │   │   │   │   ├── KaTeX_AMS-Regular.ttf
    │   │   │   │   ├── KaTeX_AMS-Regular.woff
    │   │   │   │   ├── KaTeX_AMS-Regular.woff2
    │   │   │   │   ├── KaTeX_Caligraphic-Bold.ttf
    │   │   │   │   ├── KaTeX_Caligraphic-Bold.woff
    │   │   │   │   ├── KaTeX_Caligraphic-Bold.woff2
    │   │   │   │   ├── KaTeX_Caligraphic-Regular.ttf
    │   │   │   │   ├── KaTeX_Caligraphic-Regular.woff
    │   │   │   │   ├── KaTeX_Caligraphic-Regular.woff2
    │   │   │   │   ├── KaTeX_Fraktur-Bold.ttf
    │   │   │   │   ├── KaTeX_Fraktur-Bold.woff
    │   │   │   │   ├── KaTeX_Fraktur-Bold.woff2
    │   │   │   │   ├── KaTeX_Fraktur-Regular.ttf
    │   │   │   │   ├── KaTeX_Fraktur-Regular.woff
    │   │   │   │   ├── KaTeX_Fraktur-Regular.woff2
    │   │   │   │   ├── KaTeX_Main-Bold.ttf
    │   │   │   │   ├── KaTeX_Main-Bold.woff
    │   │   │   │   ├── KaTeX_Main-Bold.woff2
    │   │   │   │   ├── KaTeX_Main-BoldItalic.ttf
    │   │   │   │   ├── KaTeX_Main-BoldItalic.woff
    │   │   │   │   ├── KaTeX_Main-BoldItalic.woff2
    │   │   │   │   ├── KaTeX_Main-Italic.ttf
    │   │   │   │   ├── KaTeX_Main-Italic.woff
    │   │   │   │   ├── KaTeX_Main-Italic.woff2
    │   │   │   │   ├── KaTeX_Main-Regular.ttf
    │   │   │   │   ├── KaTeX_Main-Regular.woff
    │   │   │   │   ├── KaTeX_Main-Regular.woff2
    │   │   │   │   ├── KaTeX_Math-BoldItalic.ttf
    │   │   │   │   ├── KaTeX_Math-BoldItalic.woff
    │   │   │   │   ├── KaTeX_Math-BoldItalic.woff2
    │   │   │   │   ├── KaTeX_Math-Italic.ttf
    │   │   │   │   ├── KaTeX_Math-Italic.woff
    │   │   │   │   ├── KaTeX_Math-Italic.woff2
    │   │   │   │   ├── KaTeX_SansSerif-Bold.ttf
    │   │   │   │   ├── KaTeX_SansSerif-Bold.woff
    │   │   │   │   ├── KaTeX_SansSerif-Bold.woff2
    │   │   │   │   ├── KaTeX_SansSerif-Italic.ttf
    │   │   │   │   ├── KaTeX_SansSerif-Italic.woff
    │   │   │   │   ├── KaTeX_SansSerif-Italic.woff2
    │   │   │   │   ├── KaTeX_SansSerif-Regular.ttf
    │   │   │   │   ├── KaTeX_SansSerif-Regular.woff
    │   │   │   │   ├── KaTeX_SansSerif-Regular.woff2
    │   │   │   │   ├── KaTeX_Script-Regular.ttf
    │   │   │   │   ├── KaTeX_Script-Regular.woff
    │   │   │   │   ├── KaTeX_Script-Regular.woff2
    │   │   │   │   ├── KaTeX_Size1-Regular.ttf
    │   │   │   │   ├── KaTeX_Size1-Regular.woff
    │   │   │   │   ├── KaTeX_Size1-Regular.woff2
    │   │   │   │   ├── KaTeX_Size2-Regular.ttf
    │   │   │   │   ├── KaTeX_Size2-Regular.woff
    │   │   │   │   ├── KaTeX_Size2-Regular.woff2
    │   │   │   │   ├── KaTeX_Size3-Regular.ttf
    │   │   │   │   ├── KaTeX_Size3-Regular.woff
    │   │   │   │   ├── KaTeX_Size3-Regular.woff2
    │   │   │   │   ├── KaTeX_Size4-Regular.ttf
    │   │   │   │   ├── KaTeX_Size4-Regular.woff
    │   │   │   │   ├── KaTeX_Size4-Regular.woff2
    │   │   │   │   ├── KaTeX_Typewriter-Regular.ttf
    │   │   │   │   ├── KaTeX_Typewriter-Regular.woff
    │   │   │   │   └── KaTeX_Typewriter-Regular.woff2
    │   │   │   ├── katex.min.css
    │   │   │   └── katex.min.js
    │   │   └── player
    │   │   │   ├── DPlayer.min.js
    │   │   │   └── hls-1.4.10.min.js
    │   └── template
    │   │   ├── 学员批量导入模板.xlsx
    │   │   ├── 试题批量导入模板.xlsx
    │   │   └── 课时批量导入模板.xlsx
    ├── src
    │   ├── App.scss
    │   ├── App.tsx
    │   ├── AutoTop.ts
    │   ├── api
    │   │   ├── admin-role.ts
    │   │   ├── administrator.ts
    │   │   ├── comment.ts
    │   │   ├── course.ts
    │   │   ├── home.ts
    │   │   ├── index.ts
    │   │   ├── internal
    │   │   │   ├── httpClient.ts
    │   │   │   └── prehttpClient.ts
    │   │   ├── login.ts
    │   │   ├── media.ts
    │   │   ├── member.ts
    │   │   ├── order.ts
    │   │   ├── pre.ts
    │   │   ├── promocode.ts
    │   │   ├── role.ts
    │   │   ├── stats.ts
    │   │   ├── system.ts
    │   │   ├── user.ts
    │   │   ├── video-category.ts
    │   │   ├── viewBlock.ts
    │   │   └── wechat.ts
    │   ├── assets
    │   │   ├── common
    │   │   │   └── iconfont
    │   │   │   │   ├── iconfont.css
    │   │   │   │   ├── iconfont.ttf
    │   │   │   │   ├── iconfont.woff
    │   │   │   │   └── iconfont.woff2
    │   │   ├── home
    │   │   │   ├── favicon.ico
    │   │   │   ├── logo.png
    │   │   │   └── selected.png
    │   │   ├── images
    │   │   │   ├── config
    │   │   │   │   ├── ali.png
    │   │   │   │   ├── camera.png
    │   │   │   │   ├── clicklogin.png
    │   │   │   │   ├── coursetime.png
    │   │   │   │   ├── credict.png
    │   │   │   │   ├── h5.png
    │   │   │   │   ├── icon-option.png
    │   │   │   │   ├── icon-sign in.png
    │   │   │   │   ├── import.png
    │   │   │   │   ├── live.png
    │   │   │   │   ├── login.png
    │   │   │   │   ├── message.png
    │   │   │   │   ├── payment.png
    │   │   │   │   ├── pic.png
    │   │   │   │   ├── player.png
    │   │   │   │   ├── role.png
    │   │   │   │   ├── search.png
    │   │   │   │   ├── sendvip.png
    │   │   │   │   ├── system.png
    │   │   │   │   ├── tecent.png
    │   │   │   │   ├── topic.png
    │   │   │   │   ├── video.png
    │   │   │   │   ├── webview.png
    │   │   │   │   ├── wechat.png
    │   │   │   │   └── weixin.png
    │   │   │   ├── decoration
    │   │   │   │   └── h5
    │   │   │   │   │   ├── blank.png
    │   │   │   │   │   ├── book-back.png
    │   │   │   │   │   ├── code.png
    │   │   │   │   │   ├── course-back.png
    │   │   │   │   │   ├── default-grid-nav.png
    │   │   │   │   │   ├── default-slider.png
    │   │   │   │   │   ├── empty-image.png
    │   │   │   │   │   ├── grid-nav.png
    │   │   │   │   │   ├── h5-book-v1.png
    │   │   │   │   │   ├── h5-edit.png
    │   │   │   │   │   ├── h5-gognzhoanghao-v1.png
    │   │   │   │   │   ├── h5-vod-v1.png
    │   │   │   │   │   ├── icon-announce.png
    │   │   │   │   │   ├── icon-banner.png
    │   │   │   │   │   ├── icon-link.png
    │   │   │   │   │   ├── icon-nav.png
    │   │   │   │   │   ├── image-group-1-2-active.png
    │   │   │   │   │   ├── image-group-1-2.png
    │   │   │   │   │   ├── image-group-1-active.png
    │   │   │   │   │   ├── image-group-1.png
    │   │   │   │   │   ├── image-group-2-active.png
    │   │   │   │   │   ├── image-group-2.png
    │   │   │   │   │   ├── image-group-3-active.png
    │   │   │   │   │   ├── image-group-3.png
    │   │   │   │   │   ├── image-group-4-active.png
    │   │   │   │   │   ├── image-group-4.png
    │   │   │   │   │   ├── image-group.png
    │   │   │   │   │   ├── mp-wechat-icon.png
    │   │   │   │   │   ├── mp-wechat.png
    │   │   │   │   │   ├── none-img.png
    │   │   │   │   │   ├── pc-edit.png
    │   │   │   │   │   ├── pc-edit2.png
    │   │   │   │   │   ├── search-bar.png
    │   │   │   │   │   ├── slider.png
    │   │   │   │   │   └── status-bar.png
    │   │   │   ├── stats
    │   │   │   │   └── icon.png
    │   │   │   └── upload-video
    │   │   │   │   └── empty.png
    │   │   ├── img
    │   │   │   ├── ali-pay.png
    │   │   │   ├── card.png
    │   │   │   ├── close.png
    │   │   │   ├── default-vip.png
    │   │   │   ├── focus-device.png
    │   │   │   ├── icon-back-n.png
    │   │   │   ├── icon-back.png
    │   │   │   ├── icon-close-h.png
    │   │   │   ├── icon-close.png
    │   │   │   ├── icon-filter-h.png
    │   │   │   ├── icon-filter.png
    │   │   │   ├── icon-handin.png
    │   │   │   └── wepay.png
    │   │   └── login
    │   │   │   ├── loginleft_banner.png
    │   │   │   └── yuyan@2x.png
    │   ├── components
    │   │   ├── back-bar
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── close-icon
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── day-week-month
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── duration-text
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── footer
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── h5-link
    │   │   │   ├── components
    │   │   │   │   └── courses
    │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   ├── index.tsx
    │   │   │   │   │   └── vod-comp.tsx
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── header
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── helper-text
    │   │   │   └── index.tsx
    │   │   ├── index.ts
    │   │   ├── input-duration
    │   │   │   └── index.tsx
    │   │   ├── keep-alive
    │   │   │   └── index.tsx
    │   │   ├── left-menu
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── option-bar
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── option-single-bar
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── pc-link
    │   │   │   └── index.tsx
    │   │   ├── permission-button
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── quill-editor
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── select-image
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── select-resources
    │   │   │   ├── components
    │   │   │   │   ├── multiVip.tsx
    │   │   │   │   ├── multiVod.tsx
    │   │   │   │   ├── video.tsx
    │   │   │   │   ├── vip.tsx
    │   │   │   │   └── vod.tsx
    │   │   │   ├── index.tsx
    │   │   │   └── multiIndex.tsx
    │   │   ├── student-device
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── tags-tooltip
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── thumb-bar
    │   │   │   ├── index.moduel.scss
    │   │   │   └── index.tsx
    │   │   ├── tree-category
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── upload-image-button
    │   │   │   ├── index.module.scss
    │   │   │   ├── index.tsx
    │   │   │   └── upload-image-sub
    │   │   │   │   └── index.tsx
    │   │   ├── upload-video-item
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── upload-video
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── user-add
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── user-import
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── user-single-add
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   └── vhtml-tooltip
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   ├── config
    │   │   └── permissions.ts
    │   ├── index.scss
    │   ├── js
    │   │   ├── config.ts
    │   │   └── htmlToPdf.ts
    │   ├── main.tsx
    │   ├── meedu.d.ts
    │   ├── pages
    │   │   ├── administrator
    │   │   │   └── change-password
    │   │   │   │   ├── index.module.scss
    │   │   │   │   └── index.tsx
    │   │   ├── comments
    │   │   │   └── index.tsx
    │   │   ├── course
    │   │   │   ├── attach
    │   │   │   │   ├── create.tsx
    │   │   │   │   └── index.tsx
    │   │   │   ├── category
    │   │   │   │   └── index.tsx
    │   │   │   ├── chapter
    │   │   │   │   └── index.tsx
    │   │   │   ├── components
    │   │   │   │   ├── category-create.tsx
    │   │   │   │   ├── category-update.tsx
    │   │   │   │   ├── chapter-create.tsx
    │   │   │   │   ├── chapter-update.tsx
    │   │   │   │   ├── sub-users.tsx
    │   │   │   │   ├── watch-records-detail.tsx
    │   │   │   │   └── watch-records.tsx
    │   │   │   ├── create.tsx
    │   │   │   ├── index.tsx
    │   │   │   ├── update.tsx
    │   │   │   ├── users.tsx
    │   │   │   └── video
    │   │   │   │   ├── create.tsx
    │   │   │   │   ├── import.tsx
    │   │   │   │   ├── index.tsx
    │   │   │   │   ├── subscribe.tsx
    │   │   │   │   ├── update.tsx
    │   │   │   │   └── watch-records.tsx
    │   │   ├── dashboard
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── decoration
    │   │   │   ├── components
    │   │   │   │   ├── h5
    │   │   │   │   │   ├── config
    │   │   │   │   │   │   ├── blank.module.scss
    │   │   │   │   │   │   ├── blank.tsx
    │   │   │   │   │   │   ├── code.module.scss
    │   │   │   │   │   │   ├── code.tsx
    │   │   │   │   │   │   ├── grid-nav.module.scss
    │   │   │   │   │   │   ├── grid-nav.tsx
    │   │   │   │   │   │   ├── gzh-v1.module.scss
    │   │   │   │   │   │   ├── gzh-v1.tsx
    │   │   │   │   │   │   ├── image-group.module.scss
    │   │   │   │   │   │   ├── image-group.tsx
    │   │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   │   ├── index.tsx
    │   │   │   │   │   │   ├── slider.module.scss
    │   │   │   │   │   │   ├── slider.tsx
    │   │   │   │   │   │   ├── vod-v1.module.scss
    │   │   │   │   │   │   └── vod-v1.tsx
    │   │   │   │   │   ├── render-blank
    │   │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   │   └── index.tsx
    │   │   │   │   │   ├── render-grid-nav
    │   │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   │   └── index.tsx
    │   │   │   │   │   ├── render-gzh-v1
    │   │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   │   └── index.tsx
    │   │   │   │   │   ├── render-image-group
    │   │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   │   └── index.tsx
    │   │   │   │   │   ├── render-mp-wechat
    │   │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   │   └── index.tsx
    │   │   │   │   │   ├── render-sliders
    │   │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   │   └── index.tsx
    │   │   │   │   │   └── render-vod
    │   │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   │   └── index.tsx
    │   │   │   │   └── pc
    │   │   │   │   │   ├── render-code
    │   │   │   │   │       ├── index.module.scss
    │   │   │   │   │       └── index.tsx
    │   │   │   │   │   ├── render-links
    │   │   │   │   │       ├── create.tsx
    │   │   │   │   │       ├── index.module.scss
    │   │   │   │   │       ├── index.tsx
    │   │   │   │   │       ├── list.tsx
    │   │   │   │   │       └── update.tsx
    │   │   │   │   │   ├── render-navs
    │   │   │   │   │       ├── create.tsx
    │   │   │   │   │       ├── index.module.scss
    │   │   │   │   │       ├── index.tsx
    │   │   │   │   │       ├── list.tsx
    │   │   │   │   │       └── update.tsx
    │   │   │   │   │   ├── render-notice
    │   │   │   │   │       ├── create.tsx
    │   │   │   │   │       ├── index.module.scss
    │   │   │   │   │       ├── index.tsx
    │   │   │   │   │       ├── list.tsx
    │   │   │   │   │       └── update.tsx
    │   │   │   │   │   ├── render-sliders
    │   │   │   │   │       ├── create.tsx
    │   │   │   │   │       ├── index.module.scss
    │   │   │   │   │       ├── index.tsx
    │   │   │   │   │       ├── list.tsx
    │   │   │   │   │       └── update.tsx
    │   │   │   │   │   └── render-vod
    │   │   │   │   │       ├── index.module.scss
    │   │   │   │   │       └── index.tsx
    │   │   │   ├── h5.module.scss
    │   │   │   ├── h5.tsx
    │   │   │   ├── pc.module.scss
    │   │   │   └── pc.tsx
    │   │   ├── edit-config
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── error
    │   │   │   ├── index.module.scss
    │   │   │   ├── index.tsx
    │   │   │   └── no-sevice.tsx
    │   │   ├── index.ts
    │   │   ├── init
    │   │   │   └── index.tsx
    │   │   ├── layouts
    │   │   │   ├── with-header-without-footer
    │   │   │   │   ├── index.module.scss
    │   │   │   │   └── index.tsx
    │   │   │   └── without-header-without-footer
    │   │   │   │   ├── index.module.scss
    │   │   │   │   └── index.tsx
    │   │   ├── loading
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── login
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── member
    │   │   │   ├── components
    │   │   │   │   ├── config-update.tsx
    │   │   │   │   ├── create.tsx
    │   │   │   │   ├── credit-dialog.tsx
    │   │   │   │   ├── message-send.tsx
    │   │   │   │   ├── my-profile.module.scss
    │   │   │   │   ├── my-profile.tsx
    │   │   │   │   ├── remark-dailog.tsx
    │   │   │   │   ├── tags-dialog.tsx
    │   │   │   │   ├── update.tsx
    │   │   │   │   └── video-table-dialog.tsx
    │   │   │   ├── detail.module.scss
    │   │   │   ├── detail.tsx
    │   │   │   ├── detail
    │   │   │   │   ├── credit1.tsx
    │   │   │   │   ├── orders.tsx
    │   │   │   │   ├── video-watch-records.tsx
    │   │   │   │   └── vod-watch-records.tsx
    │   │   │   ├── import.tsx
    │   │   │   ├── index.tsx
    │   │   │   ├── profile.module.scss
    │   │   │   ├── profile.tsx
    │   │   │   └── tags
    │   │   │   │   ├── create.tsx
    │   │   │   │   ├── index.tsx
    │   │   │   │   └── update.tsx
    │   │   ├── order
    │   │   │   ├── components
    │   │   │   │   └── refund-dailog
    │   │   │   │   │   └── index.tsx
    │   │   │   ├── detail.tsx
    │   │   │   ├── index.tsx
    │   │   │   └── refund.tsx
    │   │   ├── promocode
    │   │   │   ├── components
    │   │   │   │   ├── create-multi.tsx
    │   │   │   │   └── create.tsx
    │   │   │   ├── create-multi.tsx
    │   │   │   ├── create.tsx
    │   │   │   ├── import.module.scss
    │   │   │   ├── import.tsx
    │   │   │   └── index.tsx
    │   │   ├── resource
    │   │   │   ├── images
    │   │   │   │   ├── index.module.scss
    │   │   │   │   └── index.tsx
    │   │   │   └── videos
    │   │   │   │   ├── compenents
    │   │   │   │       ├── create.module.less
    │   │   │   │       ├── create.tsx
    │   │   │   │       ├── update.module.less
    │   │   │   │       ├── update.tsx
    │   │   │   │       └── video-update.tsx
    │   │   │   │   └── index.tsx
    │   │   ├── role
    │   │   │   ├── components
    │   │   │   │   ├── create.tsx
    │   │   │   │   └── update.tsx
    │   │   │   ├── create.tsx
    │   │   │   ├── index.tsx
    │   │   │   └── update.tsx
    │   │   ├── stats
    │   │   │   ├── content
    │   │   │   │   ├── index.module.scss
    │   │   │   │   └── index.tsx
    │   │   │   ├── member
    │   │   │   │   ├── index.module.scss
    │   │   │   │   └── index.tsx
    │   │   │   └── transaction
    │   │   │   │   ├── index.module.scss
    │   │   │   │   └── index.tsx
    │   │   └── system
    │   │   │   ├── administrator
    │   │   │       ├── create.tsx
    │   │   │       ├── index.tsx
    │   │   │       └── update.tsx
    │   │   │   ├── adminroles
    │   │   │       ├── create.tsx
    │   │   │       ├── index.tsx
    │   │   │       └── update.tsx
    │   │   │   ├── application
    │   │   │       ├── index.module.scss
    │   │   │       └── index.tsx
    │   │   │   ├── config
    │   │   │       ├── config.tsx
    │   │   │       ├── creditSignConfig.tsx
    │   │   │       ├── index.module.scss
    │   │   │       ├── index.tsx
    │   │   │       ├── messageConfig.tsx
    │   │   │       ├── mp_wechatConfig.tsx
    │   │   │       ├── paymentConfig.tsx
    │   │   │       ├── playerConfig.tsx
    │   │   │       ├── saveFilesConfig.tsx
    │   │   │       └── videoSaveConfig.tsx
    │   │   │   └── systemLog
    │   │   │       ├── components
    │   │   │           ├── admin-log
    │   │   │           │   └── index.tsx
    │   │   │           ├── runtime-log
    │   │   │           │   └── index.tsx
    │   │   │           ├── upload-images-log
    │   │   │           │   └── index.tsx
    │   │   │           └── user-login-log
    │   │   │           │   └── index.tsx
    │   │   │       ├── index.module.scss
    │   │   │       └── index.tsx
    │   ├── routes
    │   │   └── index.tsx
    │   ├── store
    │   │   ├── enabledAddons
    │   │   │   └── enabledAddonsConfigSlice.ts
    │   │   ├── index.ts
    │   │   ├── system
    │   │   │   └── systemConfigSlice.ts
    │   │   └── user
    │   │   │   └── loginUserSlice.ts
    │   ├── types
    │   │   ├── index.d.ts
    │   │   └── permission.ts
    │   ├── utils
    │   │   ├── index.ts
    │   │   └── permissionUtil.ts
    │   └── vite-env.d.ts
    ├── tsconfig.json
    ├── tsconfig.node.json
    └── vite.config.ts
├── xyz.meedu.api
    ├── .env.example
    ├── .env.install
    ├── .gitattributes
    ├── .gitignore
    ├── .php-cs-fixer.php
    ├── README.md
    ├── addons
    │   └── .gitignore
    ├── apidoc.json
    ├── app
    │   ├── Bus
    │   │   ├── AdminPermissionBus.php
    │   │   ├── AliVodBus.php
    │   │   ├── AuthBus.php
    │   │   ├── CourseAttachDownloadBus.php
    │   │   ├── MediaVideoCategoryBindBus.php
    │   │   ├── MemberBus.php
    │   │   ├── RefundBus.php
    │   │   ├── TencentVodBus.php
    │   │   ├── UniPayBus.php
    │   │   ├── UploadBus.php
    │   │   ├── VideoBus.php
    │   │   └── WechatScanBusV2.php
    │   ├── Businesses
    │   │   └── BusinessState.php
    │   ├── Console
    │   │   ├── Commands
    │   │   │   ├── AddonsProviderMapGenrator.php
    │   │   │   ├── ApplicationInstallCommand.php
    │   │   │   ├── FullSearchRebuildCommand.php
    │   │   │   ├── InstallLockCommand.php
    │   │   │   ├── MeEduUpgradeCommand.php
    │   │   │   ├── OrderTimeoutHandlerCommand.php
    │   │   │   ├── PublishedCoursesIndexBuildSearchCommand.php
    │   │   │   ├── RefundQueryCommand.php
    │   │   │   ├── UserDeleteJobRunCommand.php
    │   │   │   └── UserRoleExpireHandlerCommand.php
    │   │   └── Kernel.php
    │   ├── Constant
    │   │   ├── ApiV2Constant.php
    │   │   ├── BackendApiConstant.php
    │   │   ├── BusConstant.php
    │   │   ├── CacheConstant.php
    │   │   ├── ConfigConstant.php
    │   │   ├── FrontendConstant.php
    │   │   ├── HookConstant.php
    │   │   ├── SystemConstant.php
    │   │   └── TableConstant.php
    │   ├── Events
    │   │   ├── AliyunVodCallbackAddLiveRecordVideoCompleteEvent.php
    │   │   ├── AliyunVodCallbackDeleteMediaCompleteEvent.php
    │   │   ├── AliyunVodCallbackFileUploadCompleteEvent.php
    │   │   ├── AliyunVodCallbackMediaBaseChangeCompleteEvent.php
    │   │   ├── AliyunVodCallbackTranscodeCompleteEvent.php
    │   │   ├── AliyunVodCallbackVideoAnalysisCompleteEvent.php
    │   │   ├── AppConfigSavedEvent.php
    │   │   ├── CourseAttachDownloadEvent.php
    │   │   ├── CourseCommentEvent.php
    │   │   ├── FullSearchDataRebuildEvent.php
    │   │   ├── LinkUpdateEvent.php
    │   │   ├── NavUpdateEvent.php
    │   │   ├── OrderCancelEvent.php
    │   │   ├── OrderRefundCreated.php
    │   │   ├── OrderRefundProcessed.php
    │   │   ├── PaymentSuccessEvent.php
    │   │   ├── PublishedCoursesSearchIndexBuildEvent.php
    │   │   ├── SliderUpdateEvent.php
    │   │   ├── TencentVodCallbackFileDeletedEvent.php
    │   │   ├── TencentVodCallbackNewFileUploadEvent.php
    │   │   ├── TencentVodCallbackProcedureStateChangedEvent.php
    │   │   ├── TencentVodCallbackTranscodeCompleteEvent.php
    │   │   ├── UserCourseWatchedEvent.php
    │   │   ├── UserDeleteCancelEvent.php
    │   │   ├── UserDeleteSubmitEvent.php
    │   │   ├── UserDeletedEvent.php
    │   │   ├── UserLoginEvent.php
    │   │   ├── UserLogoutEvent.php
    │   │   ├── UserNotificationReadEvent.php
    │   │   ├── UserRegisterEvent.php
    │   │   ├── UserVerifyFaceSuccessEvent.php
    │   │   ├── UserVideoWatchedEvent.php
    │   │   ├── VideoCommentEvent.php
    │   │   ├── VodCourseCreatedEvent.php
    │   │   ├── VodCourseDestroyedEvent.php
    │   │   ├── VodCourseUpdatedEvent.php
    │   │   ├── VodVideoCreatedEvent.php
    │   │   ├── VodVideoDestroyedEvent.php
    │   │   └── VodVideoUpdatedEvent.php
    │   ├── Exceptions
    │   │   ├── Backend
    │   │   │   └── ValidateException.php
    │   │   ├── Handler.php
    │   │   ├── ServiceException.php
    │   │   └── SystemException.php
    │   ├── Hooks
    │   │   ├── CommentStoreCheck
    │   │   │   ├── VodCourseCommentHook.php
    │   │   │   └── VodCourseVideoCommentHook.php
    │   │   ├── OrderStore
    │   │   │   ├── OrderStoreCourseHook.php
    │   │   │   └── OrderStoreRoleHook.php
    │   │   └── ViewBlock
    │   │   │   └── Data
    │   │   │       └── VodV1DataHook.php
    │   ├── Http
    │   │   ├── Controllers
    │   │   │   ├── Api
    │   │   │   │   ├── Media
    │   │   │   │   │   ├── AliVodCallbackController.php
    │   │   │   │   │   └── TencentVodCallbackController.php
    │   │   │   │   ├── V2
    │   │   │   │   │   ├── AnnouncementController.php
    │   │   │   │   │   ├── BaseController.php
    │   │   │   │   │   ├── CaptchaController.php
    │   │   │   │   │   ├── CourseCategoryController.php
    │   │   │   │   │   ├── CourseController.php
    │   │   │   │   │   ├── LinkController.php
    │   │   │   │   │   ├── LoginController.php
    │   │   │   │   │   ├── MemberController.php
    │   │   │   │   │   ├── NavController.php
    │   │   │   │   │   ├── OrderController.php
    │   │   │   │   │   ├── OtherController.php
    │   │   │   │   │   ├── PasswordController.php
    │   │   │   │   │   ├── PromoCodeController.php
    │   │   │   │   │   ├── RegisterController.php
    │   │   │   │   │   ├── RoleController.php
    │   │   │   │   │   ├── SearchController.php
    │   │   │   │   │   ├── SliderController.php
    │   │   │   │   │   ├── Traits
    │   │   │   │   │   │   └── ResponseTrait.php
    │   │   │   │   │   ├── UploadController.php
    │   │   │   │   │   ├── VideoController.php
    │   │   │   │   │   └── ViewBlockController.php
    │   │   │   │   ├── V3
    │   │   │   │   │   ├── CommentController.php
    │   │   │   │   │   ├── CourseController.php
    │   │   │   │   │   ├── LoginController.php
    │   │   │   │   │   ├── MemberController.php
    │   │   │   │   │   ├── OrderController.php
    │   │   │   │   │   ├── OtherController.php
    │   │   │   │   │   ├── SearchController.php
    │   │   │   │   │   ├── SystemController.php
    │   │   │   │   │   └── WechatScanLoginController.php
    │   │   │   │   └── Wechat
    │   │   │   │   │   ├── RefundController.php
    │   │   │   │   │   └── ServerController.php
    │   │   │   ├── Backend
    │   │   │   │   └── Api
    │   │   │   │   │   ├── V1
    │   │   │   │   │       ├── AdFromController.php
    │   │   │   │   │       ├── AddonsController.php
    │   │   │   │   │       ├── AdministratorController.php
    │   │   │   │   │       ├── AdministratorPermissionController.php
    │   │   │   │   │       ├── AdministratorRoleController.php
    │   │   │   │   │       ├── AnnouncementController.php
    │   │   │   │   │       ├── BaseController.php
    │   │   │   │   │       ├── CaptchaController.php
    │   │   │   │   │       ├── CommentController.php
    │   │   │   │   │       ├── CourseAttachController.php
    │   │   │   │   │       ├── CourseCategoryController.php
    │   │   │   │   │       ├── CourseCategoryTrait.php
    │   │   │   │   │       ├── CourseChapterController.php
    │   │   │   │   │       ├── CourseController.php
    │   │   │   │   │       ├── CourseVideoController.php
    │   │   │   │   │       ├── DashboardController.php
    │   │   │   │   │       ├── LinkController.php
    │   │   │   │   │       ├── LogController.php
    │   │   │   │   │       ├── LoginController.php
    │   │   │   │   │       ├── MediaImageController.php
    │   │   │   │   │       ├── MediaVideoCategoryController.php
    │   │   │   │   │       ├── MediaVideoController.php
    │   │   │   │   │       ├── MemberController.php
    │   │   │   │   │       ├── MemberTagController.php
    │   │   │   │   │       ├── NavController.php
    │   │   │   │   │       ├── OrderController.php
    │   │   │   │   │       ├── PromoCodeController.php
    │   │   │   │   │       ├── RoleController.php
    │   │   │   │   │       ├── SettingController.php
    │   │   │   │   │       ├── SliderController.php
    │   │   │   │   │       ├── VideoUploadController.php
    │   │   │   │   │       └── ViewBlockController.php
    │   │   │   │   │   └── V2
    │   │   │   │   │       ├── BaseController.php
    │   │   │   │   │       ├── MemberController.php
    │   │   │   │   │       ├── StatsController.php
    │   │   │   │   │       └── SystemController.php
    │   │   │   ├── BaseController.php
    │   │   │   ├── Controller.php
    │   │   │   └── Frontend
    │   │   │   │   ├── FrontendController.php
    │   │   │   │   ├── IndexController.php
    │   │   │   │   └── PaymentController.php
    │   │   ├── Kernel.php
    │   │   ├── Middleware
    │   │   │   ├── Api
    │   │   │   │   ├── DeprecatedApiGuardMiddleware.php
    │   │   │   │   ├── LoginStatusCheckMiddleware.php
    │   │   │   │   └── UserFaceVerifyLimitMiddleware.php
    │   │   │   ├── Backend
    │   │   │   │   ├── BackendPermissionCheckMiddleware.php
    │   │   │   │   └── BackendSensitiveDataMaskMiddleware.php
    │   │   │   ├── EncryptCookies.php
    │   │   │   ├── PreventRequestsDuringMaintenance.php
    │   │   │   ├── RedirectIfAuthenticated.php
    │   │   │   ├── TrimStrings.php
    │   │   │   ├── TrustProxies.php
    │   │   │   └── VerifyCsrfToken.php
    │   │   └── Requests
    │   │   │   ├── ApiV2
    │   │   │       ├── AvatarChangeRequest.php
    │   │   │       ├── BaseRequest.php
    │   │   │       ├── CommentRequest.php
    │   │   │       ├── InviteBalanceWithdrawRequest.php
    │   │   │       ├── MobileChangeRequest.php
    │   │   │       ├── MobileLoginRequest.php
    │   │   │       ├── NicknameChangeRequest.php
    │   │   │       ├── PasswordChangeRequest.php
    │   │   │       ├── PasswordLoginRequest.php
    │   │   │       ├── RegisterRequest.php
    │   │   │       ├── RegisterSmsRequest.php
    │   │   │       ├── SmsRequest.php
    │   │   │       └── UploadImageRequest.php
    │   │   │   ├── ApiV3
    │   │   │       ├── CommentRequest.php
    │   │   │       └── SocialiteLoginRequest.php
    │   │   │   ├── Backend
    │   │   │       ├── AdFromRequest.php
    │   │   │       ├── Administrator
    │   │   │       │   ├── AdministratorRequest.php
    │   │   │       │   └── EditPasswordRequest.php
    │   │   │       ├── AdministratorRoleRequest.php
    │   │   │       ├── AnnouncementRequest.php
    │   │   │       ├── BaseRequest.php
    │   │   │       ├── CourseAttachRequest.php
    │   │   │       ├── CourseCategoryRequest.php
    │   │   │       ├── CourseChapterRequest.php
    │   │   │       ├── CourseRequest.php
    │   │   │       ├── CourseVideoRequest.php
    │   │   │       ├── ImageUploadRequest.php
    │   │   │       ├── LinkRequest.php
    │   │   │       ├── LoginRequest.php
    │   │   │       ├── MediaVideoCategoryRequest.php
    │   │   │       ├── MemberRequest.php
    │   │   │       ├── MpWechatMessageReplyRequest.php
    │   │   │       ├── NavRequest.php
    │   │   │       ├── PromoCodeGeneratorRequest.php
    │   │   │       ├── PromoCodeRequest.php
    │   │   │       ├── RoleRequest.php
    │   │   │       └── SliderRequest.php
    │   │   │   └── ThrottleRequests.php
    │   ├── Listeners
    │   │   ├── AliyunVodCallbackDeleteMediaCompleteEvent
    │   │   │   └── DeleteMediaVideoListener.php
    │   │   ├── AliyunVodCallbackFileUploadCompleteEvent
    │   │   │   ├── UpdateMediaVideoListener.php
    │   │   │   └── VideoVisibilityToggleListener.php
    │   │   ├── AliyunVodCallbackMediaBaseChangeCompleteEvent
    │   │   │   └── StoreUploadVideoListener.php
    │   │   ├── AliyunVodCallbackVideoAnalysisCompleteEvent
    │   │   │   └── UpdateMediaVideoListener.php
    │   │   ├── AppConfigSavedEvent
    │   │   │   ├── AliyunPlayDomainConfigSyncListener.php
    │   │   │   ├── AliyunVodCallbackUrlListener.php
    │   │   │   ├── TencentPlayKeySyncListener.php
    │   │   │   └── TencentVodCallbackUrlListener.php
    │   │   ├── CourseAttachDownloadEvent
    │   │   │   └── IncDownloadTimesListener.php
    │   │   ├── FullSearchDataRebuildEvent
    │   │   │   ├── VodRebuildListener.php
    │   │   │   └── VodVideoRebuildListener.php
    │   │   ├── LinkUpdateEvent
    │   │   │   └── CacheClearListener.php
    │   │   ├── NavUpdateEvent
    │   │   │   └── CacheClearListener.php
    │   │   ├── OrderCancelEvent
    │   │   │   └── PromoCodeResumeListener.php
    │   │   ├── OrderRefundProcessed
    │   │   │   ├── OrderRefundStatusChange.php
    │   │   │   └── UserNotify.php
    │   │   ├── PaymentSuccessEvent
    │   │   │   ├── Credit1RewardListener.php
    │   │   │   ├── OrderPaidDeliverListener.php
    │   │   │   ├── OrderPaidNotificationListener.php
    │   │   │   └── OrderPaidStatusChangeListener.php
    │   │   ├── PublishedCoursesSearchIndexBuildEvent
    │   │   │   ├── VodCourseListener.php
    │   │   │   └── VodCourseVideoListener.php
    │   │   ├── SliderUpdateEvent
    │   │   │   └── CacheClearListener.php
    │   │   ├── TencentVodCallbackFileDeletedEvent
    │   │   │   └── DeleteMediaVideoListener.php
    │   │   ├── TencentVodCallbackNewFileUploadEvent
    │   │   │   └── StoreUploadVideoListener.php
    │   │   ├── UserCourseWatchedEvent
    │   │   │   ├── UserCourseWatchedCredit1RewardListener.php
    │   │   │   └── UserCourseWatchedListener.php
    │   │   ├── UserDeleteCancelEvent
    │   │   │   └── UserNotify.php
    │   │   ├── UserDeletedEvent
    │   │   │   └── ClearCommentListener.php
    │   │   ├── UserLoginEvent
    │   │   │   ├── LoginRecordListener.php
    │   │   │   └── UserDeleteCancelListener.php
    │   │   ├── UserLogoutEvent
    │   │   │   └── LoginRecordUpdateListener.php
    │   │   ├── UserNotificationReadEvent
    │   │   │   └── NotificationCountCacheUpdateListener.php
    │   │   ├── UserRegisterEvent
    │   │   │   ├── RegisterCredit1RewardListener.php
    │   │   │   ├── RegisterIpRecordListener.php
    │   │   │   ├── RegisterSendVipListener.php
    │   │   │   └── WelcomeMessageListener.php
    │   │   ├── UserVerifyFaceSuccessEvent
    │   │   │   ├── UserNotifyListener.php
    │   │   │   └── UserProfileUpdateListener.php
    │   │   ├── UserVideoWatchedEvent
    │   │   │   ├── UserVideoWatchedCredit1RewardListener.php
    │   │   │   └── UserVideoWatchedListener.php
    │   │   ├── VodCourseCreatedEvent
    │   │   │   └── SearchRecordNotify.php
    │   │   ├── VodCourseDestroyedEvent
    │   │   │   ├── ClearCommentListener.php
    │   │   │   └── SearchRecordNotify.php
    │   │   ├── VodCourseUpdatedEvent
    │   │   │   └── SearchRecordNotify.php
    │   │   ├── VodVideoCreatedEvent
    │   │   │   └── SearchRecordNotify.php
    │   │   ├── VodVideoDestroyedEvent
    │   │   │   ├── ClearCommentListener.php
    │   │   │   ├── SearchRecordNotify.php
    │   │   │   └── UserWatchedRecordClear.php
    │   │   └── VodVideoUpdatedEvent
    │   │   │   └── SearchRecordNotify.php
    │   ├── Meedu
    │   │   ├── Addons.php
    │   │   ├── AddonsProvider.php
    │   │   ├── Aliyun
    │   │   │   └── Vod.php
    │   │   ├── Cache
    │   │   │   ├── Impl
    │   │   │   │   ├── AliVodPlayCache.php
    │   │   │   │   ├── CommentStoreLimitCache.php
    │   │   │   │   ├── CourseAttachDownloadCache.php
    │   │   │   │   ├── LinkCache.php
    │   │   │   │   ├── NavCache.php
    │   │   │   │   ├── SliderCache.php
    │   │   │   │   ├── TencentVodPlayCache.php
    │   │   │   │   ├── UserNotificationCountCache.php
    │   │   │   │   └── ViewBlockCache.php
    │   │   │   ├── Inc
    │   │   │   │   ├── Inc.php
    │   │   │   │   ├── IncItem.php
    │   │   │   │   └── VideoViewIncItem.php
    │   │   │   └── MemoryCache.php
    │   │   ├── Core
    │   │   │   ├── HashID.php
    │   │   │   ├── Upgrade.php
    │   │   │   └── UpgradeLog
    │   │   │   │   ├── UpgradeV400.php
    │   │   │   │   ├── UpgradeV420.php
    │   │   │   │   ├── UpgradeV450.php
    │   │   │   │   ├── UpgradeV454.php
    │   │   │   │   ├── UpgradeV460.php
    │   │   │   │   ├── UpgradeV480.php
    │   │   │   │   ├── UpgradeV4910.php
    │   │   │   │   ├── UpgradeV4911.php
    │   │   │   │   ├── UpgradeV4912.php
    │   │   │   │   ├── UpgradeV4913.php
    │   │   │   │   ├── UpgradeV4914.php
    │   │   │   │   ├── UpgradeV4915.php
    │   │   │   │   ├── UpgradeV4917.php
    │   │   │   │   ├── UpgradeV4920.php
    │   │   │   │   ├── UpgradeV4922.php
    │   │   │   │   ├── UpgradeV493.php
    │   │   │   │   ├── UpgradeV494.php
    │   │   │   │   └── UpgradeV498.php
    │   │   ├── Factory.php
    │   │   ├── Hooks
    │   │   │   ├── Constant
    │   │   │   │   └── PositionConstant.php
    │   │   │   ├── HookContainer.php
    │   │   │   ├── HookParams.php
    │   │   │   ├── HookRun.php
    │   │   │   └── HookRuntimeInterface.php
    │   │   ├── MeEdu.php
    │   │   ├── MeEduCloud.php
    │   │   ├── Payment
    │   │   │   ├── Alipay
    │   │   │   │   └── AlipayRefund.php
    │   │   │   └── Wechat
    │   │   │   │   └── WechatRefund.php
    │   │   ├── Schedule
    │   │   │   └── ScheduleContainer.php
    │   │   ├── ServiceProxy
    │   │   │   ├── Cache
    │   │   │   │   └── CacheInfo.php
    │   │   │   ├── Limiter
    │   │   │   │   └── LimiterInfo.php
    │   │   │   ├── Lock
    │   │   │   │   └── LockInfo.php
    │   │   │   └── ServiceProxy.php
    │   │   ├── ServiceV2
    │   │   │   ├── Dao
    │   │   │   │   ├── CommentDao.php
    │   │   │   │   ├── CommentDaoInterface.php
    │   │   │   │   ├── CourseDao.php
    │   │   │   │   ├── CourseDaoInterface.php
    │   │   │   │   ├── OrderDao.php
    │   │   │   │   ├── OrderDaoInterface.php
    │   │   │   │   ├── OtherDao.php
    │   │   │   │   ├── OtherDaoInterface.php
    │   │   │   │   ├── UserDao.php
    │   │   │   │   └── UserDaoInterface.php
    │   │   │   ├── Models
    │   │   │   │   ├── AppConfig.php
    │   │   │   │   ├── Comment.php
    │   │   │   │   ├── Course.php
    │   │   │   │   ├── CourseAttach.php
    │   │   │   │   ├── CourseAttachDownloadRecord.php
    │   │   │   │   ├── CourseCategory.php
    │   │   │   │   ├── CourseChapter.php
    │   │   │   │   ├── CourseUserRecord.php
    │   │   │   │   ├── CourseVideo.php
    │   │   │   │   ├── MediaVideo.php
    │   │   │   │   ├── Order.php
    │   │   │   │   ├── OrderGoods.php
    │   │   │   │   ├── OrderPaidRecord.php
    │   │   │   │   ├── PromoCode.php
    │   │   │   │   ├── Role.php
    │   │   │   │   ├── SearchRecord.php
    │   │   │   │   ├── Socialite.php
    │   │   │   │   ├── User.php
    │   │   │   │   ├── UserCourse.php
    │   │   │   │   ├── UserDeleteJob.php
    │   │   │   │   ├── UserFaceVerifyTencentRecord.php
    │   │   │   │   ├── UserLoginRecord.php
    │   │   │   │   ├── UserProfile.php
    │   │   │   │   ├── UserUploadImage.php
    │   │   │   │   └── UserVideoWatchRecord.php
    │   │   │   ├── README.md
    │   │   │   ├── ServiceInit.php
    │   │   │   └── Services
    │   │   │   │   ├── CommentService.php
    │   │   │   │   ├── CommentServiceInterface.php
    │   │   │   │   ├── ConfigService.php
    │   │   │   │   ├── ConfigServiceInterface.php
    │   │   │   │   ├── CourseService.php
    │   │   │   │   ├── CourseServiceInterface.php
    │   │   │   │   ├── FullSearchService.php
    │   │   │   │   ├── FullSearchServiceInterface.php
    │   │   │   │   ├── OrderService.php
    │   │   │   │   ├── OrderServiceInterface.php
    │   │   │   │   ├── OtherService.php
    │   │   │   │   ├── OtherServiceInterface.php
    │   │   │   │   ├── UserService.php
    │   │   │   │   └── UserServiceInterface.php
    │   │   ├── Setting.php
    │   │   ├── Sms
    │   │   │   ├── Aliyun.php
    │   │   │   ├── SmsInterface.php
    │   │   │   └── Tencent.php
    │   │   ├── Tencent
    │   │   │   ├── Face.php
    │   │   │   ├── Vod.php
    │   │   │   └── WechatMp.php
    │   │   ├── Utils
    │   │   │   ├── AppRedirect.php
    │   │   │   ├── IP.php
    │   │   │   └── SensitiveDataMask.php
    │   │   ├── Verify.php
    │   │   └── ViewBlock
    │   │   │   ├── Constant.php
    │   │   │   └── Render.php
    │   ├── Models
    │   │   ├── Administrator.php
    │   │   ├── AdministratorLog.php
    │   │   ├── AdministratorMenu.php
    │   │   ├── AdministratorPermission.php
    │   │   ├── AdministratorRole.php
    │   │   ├── MediaImage.php
    │   │   └── MediaVideoCategory.php
    │   ├── Providers
    │   │   ├── AppServiceProvider.php
    │   │   ├── AuthServiceProvider.php
    │   │   ├── BroadcastServiceProvider.php
    │   │   ├── EventServiceProvider.php
    │   │   ├── HooksRegisterProvider.php
    │   │   └── RouteServiceProvider.php
    │   ├── Services
    │   │   ├── Base
    │   │   │   ├── Interfaces
    │   │   │   │   ├── CacheServiceInterface.php
    │   │   │   │   └── ConfigServiceInterface.php
    │   │   │   ├── Model
    │   │   │   │   └── AppConfig.php
    │   │   │   ├── Providers
    │   │   │   │   └── BaseServiceRegisterProvider.php
    │   │   │   └── Services
    │   │   │   │   ├── CacheService.php
    │   │   │   │   └── ConfigService.php
    │   │   ├── Course
    │   │   │   ├── Interfaces
    │   │   │   │   ├── CourseCategoryServiceInterface.php
    │   │   │   │   ├── CourseServiceInterface.php
    │   │   │   │   └── VideoServiceInterface.php
    │   │   │   ├── Models
    │   │   │   │   ├── Base.php
    │   │   │   │   ├── Course.php
    │   │   │   │   ├── CourseAttach.php
    │   │   │   │   ├── CourseCategory.php
    │   │   │   │   ├── CourseChapter.php
    │   │   │   │   ├── CourseComment.php
    │   │   │   │   ├── CourseUserRecord.php
    │   │   │   │   ├── MediaVideo.php
    │   │   │   │   ├── Video.php
    │   │   │   │   └── VideoComment.php
    │   │   │   ├── Providers
    │   │   │   │   └── CourseServiceRegisterProvider.php
    │   │   │   ├── Proxies
    │   │   │   │   ├── CourseServiceProxy.php
    │   │   │   │   └── VideoServiceProxy.php
    │   │   │   └── Services
    │   │   │   │   ├── CourseCategoryService.php
    │   │   │   │   ├── CourseService.php
    │   │   │   │   └── VideoService.php
    │   │   ├── Member
    │   │   │   ├── Interfaces
    │   │   │   │   ├── CreditServiceInterface.php
    │   │   │   │   ├── DeliverServiceInterface.php
    │   │   │   │   ├── NotificationServiceInterface.php
    │   │   │   │   ├── RoleServiceInterface.php
    │   │   │   │   ├── SocialiteServiceInterface.php
    │   │   │   │   ├── UserInviteBalanceServiceInterface.php
    │   │   │   │   └── UserServiceInterface.php
    │   │   │   ├── Models
    │   │   │   │   ├── Role.php
    │   │   │   │   ├── Socialite.php
    │   │   │   │   ├── User.php
    │   │   │   │   ├── UserCourse.php
    │   │   │   │   ├── UserCreditRecord.php
    │   │   │   │   ├── UserInviteBalanceRecord.php
    │   │   │   │   ├── UserInviteBalanceWithdrawOrder.php
    │   │   │   │   ├── UserJoinRoleRecord.php
    │   │   │   │   ├── UserLikeCourse.php
    │   │   │   │   ├── UserProfile.php
    │   │   │   │   ├── UserRemark.php
    │   │   │   │   ├── UserTag.php
    │   │   │   │   ├── UserTagRelation.php
    │   │   │   │   ├── UserVideo.php
    │   │   │   │   ├── UserVideoWatchRecord.php
    │   │   │   │   └── UserWatchStat.php
    │   │   │   ├── Notifications
    │   │   │   │   └── SimpleMessageNotification.php
    │   │   │   ├── Providers
    │   │   │   │   └── MemberServiceRegisterProvider.php
    │   │   │   ├── Proxies
    │   │   │   │   ├── UserInviteBalanceServiceProxy.php
    │   │   │   │   └── UserServiceProxy.php
    │   │   │   └── Services
    │   │   │   │   ├── CreditService.php
    │   │   │   │   ├── DeliverService.php
    │   │   │   │   ├── NotificationService.php
    │   │   │   │   ├── RoleService.php
    │   │   │   │   ├── SocialiteService.php
    │   │   │   │   └── UserService.php
    │   │   ├── Order
    │   │   │   ├── Interfaces
    │   │   │   │   ├── OrderServiceInterface.php
    │   │   │   │   └── PromoCodeServiceInterface.php
    │   │   │   ├── Models
    │   │   │   │   ├── Order.php
    │   │   │   │   ├── OrderGoods.php
    │   │   │   │   ├── OrderPaidRecord.php
    │   │   │   │   ├── OrderRefund.php
    │   │   │   │   └── PromoCode.php
    │   │   │   ├── Providers
    │   │   │   │   └── OrderServiceRegisterProvider.php
    │   │   │   └── Services
    │   │   │   │   ├── OrderService.php
    │   │   │   │   └── PromoCodeService.php
    │   │   ├── Other
    │   │   │   ├── Interfaces
    │   │   │   │   ├── AnnouncementServiceInterface.php
    │   │   │   │   ├── LinkServiceInterface.php
    │   │   │   │   ├── NavServiceInterface.php
    │   │   │   │   ├── SliderServiceInterface.php
    │   │   │   │   ├── SmsServiceInterface.php
    │   │   │   │   └── ViewBlockServiceInterface.php
    │   │   │   ├── Models
    │   │   │   │   ├── AdFrom.php
    │   │   │   │   ├── AdFromNumber.php
    │   │   │   │   ├── Announcement.php
    │   │   │   │   ├── Link.php
    │   │   │   │   ├── Nav.php
    │   │   │   │   ├── Slider.php
    │   │   │   │   ├── SmsRecord.php
    │   │   │   │   └── ViewBlock.php
    │   │   │   ├── Providers
    │   │   │   │   └── OtherServiceRegisterProvider.php
    │   │   │   └── Services
    │   │   │   │   ├── AnnouncementService.php
    │   │   │   │   ├── LinkService.php
    │   │   │   │   ├── NavService.php
    │   │   │   │   ├── SliderService.php
    │   │   │   │   ├── SmsService.php
    │   │   │   │   └── ViewBlockService.php
    │   │   └── README.md
    │   └── helper.php
    ├── artisan
    ├── bootstrap
    │   ├── app.php
    │   └── cache
    │   │   └── .gitignore
    ├── composer.json
    ├── composer.lock
    ├── config
    │   ├── app.php
    │   ├── auth.php
    │   ├── broadcasting.php
    │   ├── cache.php
    │   ├── captcha.php
    │   ├── cors.php
    │   ├── database.php
    │   ├── filesystems.php
    │   ├── hashing.php
    │   ├── jwt.php
    │   ├── logging.php
    │   ├── mail.php
    │   ├── meedu.php
    │   ├── pay.php
    │   ├── purifier.php
    │   ├── queue.php
    │   ├── s3.php
    │   ├── scout.php
    │   ├── services.php
    │   ├── session.php
    │   ├── sms.php
    │   ├── tencent.php
    │   ├── throttle.php
    │   ├── trustedproxy.php
    │   └── view.php
    ├── database
    │   ├── .gitignore
    │   ├── factories
    │   │   ├── AdministratorFactory.php
    │   │   ├── AdministratorRoleFactory.php
    │   │   ├── Meedu
    │   │   │   └── ServiceV2
    │   │   │   │   └── Models
    │   │   │   │       ├── UserDeleteJobFactory.php
    │   │   │   │       └── UserFactory.php
    │   │   └── Services
    │   │   │   ├── Course
    │   │   │       └── Models
    │   │   │       │   ├── CourseCategoryFactory.php
    │   │   │       │   ├── CourseChapterFactory.php
    │   │   │       │   ├── CourseCommentFactory.php
    │   │   │       │   ├── CourseFactory.php
    │   │   │       │   ├── CourseUserRecordFactory.php
    │   │   │       │   ├── VideoCommentFactory.php
    │   │   │       │   └── VideoFactory.php
    │   │   │   ├── Member
    │   │   │       └── Models
    │   │   │       │   ├── RoleFactory.php
    │   │   │       │   ├── SocialiteFactory.php
    │   │   │       │   ├── UserCourseFactory.php
    │   │   │       │   ├── UserCreditRecordFactory.php
    │   │   │       │   ├── UserFactory.php
    │   │   │       │   ├── UserJoinRoleRecordFactory.php
    │   │   │       │   ├── UserLikeCourseFactory.php
    │   │   │       │   ├── UserSocialiteFactory.php
    │   │   │       │   └── UserVideoFactory.php
    │   │   │   ├── Order
    │   │   │       └── Models
    │   │   │       │   ├── OrderFactory.php
    │   │   │       │   ├── OrderGoodsFactory.php
    │   │   │       │   ├── OrderPaidRecordFactory.php
    │   │   │       │   └── PromoCodeFactory.php
    │   │   │   └── Other
    │   │   │       └── Models
    │   │   │           ├── AdFromFactory.php
    │   │   │           ├── AdFromNumberFactory.php
    │   │   │           ├── AnnouncementFactory.php
    │   │   │           ├── LinkFactory.php
    │   │   │           ├── NavFactory.php
    │   │   │           └── SliderFactory.php
    │   ├── migrations
    │   │   ├── 2014_10_12_000000_create_users_table.php
    │   │   ├── 2018_06_10_093350_create_course_table.php
    │   │   ├── 2018_06_10_093941_create_video_table.php
    │   │   ├── 2018_06_11_140429_create_administrators_table.php
    │   │   ├── 2018_06_11_140557_create_administrator_roles_table.php
    │   │   ├── 2018_06_11_140702_create_administrator_role_relation_tbale.php
    │   │   ├── 2018_06_11_140936_create_administrator_permissions_table.php
    │   │   ├── 2018_06_11_141132_create_administrator_role_permission_relation_table.php
    │   │   ├── 2018_06_24_055643_add_charge_column_for_videos_table.php
    │   │   ├── 2018_08_24_111310_create_sms_records_table.php
    │   │   ├── 2018_08_25_122014_create_course_comments_table.php
    │   │   ├── 2018_08_25_122026_create_video_comments_table.php
    │   │   ├── 2018_08_28_194051_create_user_course_table.php
    │   │   ├── 2018_08_28_201555_create_roles_table.php
    │   │   ├── 2018_08_28_201633_add_role_id_column_for_users_table.php
    │   │   ├── 2018_08_28_202328_create_user_join_role_records_table.php
    │   │   ├── 2018_08_29_202834_create_notifications_table.php
    │   │   ├── 2018_08_29_203905_create_jobs_table.php
    │   │   ├── 2018_08_30_200622_add_charge_column_for_user_course_table.php
    │   │   ├── 2018_08_30_202222_create_user_video_table.php
    │   │   ├── 2018_09_03_202544_create_orders_table.php
    │   │   ├── 2018_09_16_110336_create_email_subscriptions_table.php
    │   │   ├── 2018_09_16_113005_create_announcements_table.php
    │   │   ├── 2018_10_07_101347_add_aliyun_video_id_column_for_videos.php
    │   │   ├── 2018_10_23_101556_create_administrator_menus_table.php
    │   │   ├── 2018_10_26_102622_create_order_goods_table.php
    │   │   ├── 2018_10_26_102656_adjust_orders_table.php
    │   │   ├── 2018_11_22_194642_create_ad_froms_table.php
    │   │   ├── 2018_11_22_194828_create_ad_from_number_table.php
    │   │   ├── 2018_11_24_205824_create_links_table.php
    │   │   ├── 2018_12_06_082850_create_course_chapter_table.php
    │   │   ├── 2018_12_06_192345_add_sort_column_for_course_chapter_table.php
    │   │   ├── 2018_12_06_192755_add_chapter_id_for_videos_table.php
    │   │   ├── 2018_12_12_214600_create_navs_table.php
    │   │   ├── 2018_12_12_221538_create_socialite_table.php
    │   │   ├── 2018_12_22_112124_add_duration_column_for_videos_table.php
    │   │   ├── 2018_12_25_222045_add_is_show_column_for_roles_table.php
    │   │   ├── 2019_02_19_200047_add_payment_column_for_orders_table.php
    │   │   ├── 2019_02_23_130633_create_failed_jobs_table.php
    │   │   ├── 2019_03_26_222210_add_tencent_video_id_column_for_videos.php
    │   │   ├── 2019_12_22_120342_change_course_comment_content_field.php
    │   │   ├── 2019_12_22_120357_change_video_comment_content_field.php
    │   │   ├── 2019_12_22_121813_change_course_description_field.php
    │   │   ├── 2019_12_22_121825_change_video_description_field.php
    │   │   ├── 2019_12_27_194525_alter_order_goods_table.php
    │   │   ├── 2020_01_08_121811_add_invite_column_for_users.php
    │   │   ├── 2020_01_08_122439_create_promo_codes_table.php
    │   │   ├── 2020_01_08_145811_create_order_paid_records_table.php
    │   │   ├── 2020_01_08_161753_create_user_invite_balance_records_table.php
    │   │   ├── 2020_01_11_162610_create_course_categories_table.php
    │   │   ├── 2020_01_11_165825_add_category_id_for_course_table.php
    │   │   ├── 2020_01_15_122836_create_invite_balance_withdraw_records_table.php
    │   │   ├── 2020_01_30_170310_create_cache_table.php
    │   │   ├── 2020_02_05_164322_add_is_recom_column_for_courses_table.php
    │   │   ├── 2020_02_21_145619_create_sliders_table.php
    │   │   ├── 2020_02_21_152347_add_title_column_for_announcement_table.php
    │   │   ├── 2020_02_24_140733_add_user_count_column_for_course_table.php
    │   │   ├── 2020_02_24_140813_create_course_user_records_table.php
    │   │   ├── 2020_02_28_145527_add_is_password_set_column_for_users_table.php
    │   │   ├── 2020_03_02_095800_add_is_set_nickname_column_for_users_table.php
    │   │   ├── 2020_03_04_133129_create_user_like_courses_table.php
    │   │   ├── 2020_03_07_175130_create_index_banners_table.php
    │   │   ├── 2020_05_02_112023_create_user_video_watch_records_table.php
    │   │   ├── 2020_05_02_112648_add_is_watched_column_for_user_course_records_table.php
    │   │   ├── 2020_05_10_161748_add_is_free_column_courses_table.php
    │   │   ├── 2020_05_10_161807_add_is_ban_sell_column_videos_table.php
    │   │   ├── 2020_05_21_110416_add_is_used_promo_code_column_for_users.php
    │   │   ├── 2020_05_21_135128_add_register_ip_column_for_users.php
    │   │   ├── 2020_05_24_221058_add_progress_column_for_course_user_records_table.php
    │   │   ├── 2020_06_08_153953_add_column_administrator_tables.php
    │   │   ├── 2020_06_08_154009_add_column_adm_permissions_tables.php
    │   │   ├── 2020_06_17_195229_create_user_credit_records_table.php
    │   │   ├── 2020_06_20_001804_create_course_attach_tables.php
    │   │   ├── 2020_06_24_123756_create_webconfig_table.php
    │   │   ├── 2020_06_25_223639_add_comment_status_column_for_courses_table.php
    │   │   ├── 2020_06_26_132235_add_some_field_for_videos_table.php
    │   │   ├── 2020_06_26_223017_modify_adm_menus_table.php
    │   │   ├── 2020_06_29_172741_add_is_show_column_for_app_config.php
    │   │   ├── 2020_07_23_121253_create_user_login_records.php
    │   │   ├── 2020_07_23_121304_add_login_info_column_for_users.php
    │   │   ├── 2020_07_24_135656_add_active_routes_for_navs.php
    │   │   ├── 2020_07_27_151657_add_platform_column_for_sliders.php
    │   │   ├── 2020_08_31_095138_add_goods_column_for_order_goods_table.php
    │   │   ├── 2020_09_02_163437_create_user_tags_table.php
    │   │   ├── 2020_09_02_163441_create_user_tag_table.php
    │   │   ├── 2020_09_03_111458_create_user_remarks_table.php
    │   │   ├── 2020_09_04_130615_create_mp_wechat_message_reply_table.php
    │   │   ├── 2020_09_24_222925_add_platform_column_for_navs_table.php
    │   │   ├── 2020_09_25_162213_create_user_watch_stat_table.php
    │   │   ├── 2020_10_28_132558_create_user_profiles_table.php
    │   │   ├── 2020_12_10_155045_add_blank_column_for_navs_table.php
    │   │   ├── 2021_04_18_170446_add_unique_id_column_for_socialites.php
    │   │   ├── 2021_07_13_122433_create_media_images_table.php
    │   │   ├── 2021_07_15_143114_create_view_blocks_table.php
    │   │   ├── 2021_07_21_100433_create_media_videos_table.php
    │   │   ├── 2021_09_07_211221_add_uuid_column_for_failed_job.php
    │   │   ├── 2021_09_08_162928_create_search_records_table.php
    │   │   ├── 2021_10_12_105950_delete_comment_status_for_courses.php
    │   │   ├── 2021_10_12_105953_delete_comment_status_for_videos.php
    │   │   ├── 2021_10_12_110006_delete_player_column__for_videos.php
    │   │   ├── 2022_02_19_202550_add_is_open_for_media_videos.php
    │   │   ├── 2022_03_27_151503_create_order_refund_table.php
    │   │   ├── 2022_03_27_152819_add_refund_column_for_orders.php
    │   │   ├── 2022_07_01_112543_remove_is_used_promo_code_for_users.php
    │   │   ├── 2022_07_31_102135_create_admin_logs.php
    │   │   ├── 2022_08_04_100621_create_user_delete_jobs.php
    │   │   ├── 2022_08_08_103539_create_user_upload_images.php
    │   │   ├── 2022_08_08_135018_change_user_login_records.php
    │   │   ├── 2022_08_22_144416_modify_media_videos_size_column.php
    │   │   ├── 2022_11_16_094116_add_is_verify_for_user_profile.php
    │   │   ├── 2023_02_01_102307_create_user_face_verify_tencent_records.php
    │   │   ├── 2023_09_18_141926_add_ip_for_course_comment.php
    │   │   ├── 2023_09_18_141932_add_ip_for_video_comment.php
    │   │   ├── 2024_07_01_141659_create_course_attach_download_records_table.php
    │   │   ├── 2024_07_11_110645_add_is_hidden_for_media_videos_table.php
    │   │   ├── 2024_12_06_111625_add_scene_and_is_hide_and_category_id_for_media_images_table.php
    │   │   ├── 2025_01_09_100614_create_media_video_categories_table.php
    │   │   ├── 2025_01_09_100820_add_category_id_for_media_video_table.php
    │   │   ├── 2025_01_13_092001_add_is_check_for_video_comments_table.php
    │   │   ├── 2025_01_13_092010_add_is_check_for_course_comments_table.php
    │   │   ├── 2025_01_13_104203_add_is_allow_comment_column_for_courses_table.php
    │   │   ├── 2025_01_13_104213_add_is_allow_comment_column_for_videos_table.php
    │   │   └── 2025_02_22_233300_create_comments_table.php
    │   └── seeders
    │   │   ├── AdministratorPermissionSeeder.php
    │   │   ├── AdministratorSuperSeeder.php
    │   │   ├── AppConfigSeeder.php
    │   │   ├── CourseVideoSeeder.php
    │   │   ├── DatabaseSeeder.php
    │   │   └── UserSeeder.php
    ├── phpunit.xml
    ├── public
    │   ├── .htaccess
    │   ├── addons
    │   │   └── .gitignore
    │   ├── favicon.ico
    │   ├── images
    │   │   ├── default_avatar.jpg
    │   │   ├── icons
    │   │   │   └── qq.svg
    │   │   ├── logo.png
    │   │   ├── pay
    │   │   │   ├── ali.svg
    │   │   │   ├── card.svg
    │   │   │   └── wechat.svg
    │   │   └── player-thumb.png
    │   ├── index.php
    │   ├── install.php
    │   ├── robots.txt
    │   └── templates
    │   │   └── .gitignore
    ├── resources
    │   ├── lang
    │   │   ├── en.json
    │   │   ├── en
    │   │   │   ├── auth.php
    │   │   │   ├── pagination.php
    │   │   │   ├── passwords.php
    │   │   │   └── validation.php
    │   │   ├── zh.json
    │   │   └── zh
    │   │   │   ├── auth.php
    │   │   │   ├── pagination.php
    │   │   │   ├── passwords.php
    │   │   │   └── validation.php
    │   └── views
    │   │   ├── errors
    │   │       └── 404.blade.php
    │   │   ├── index
    │   │       ├── aboutus.blade.php
    │   │       ├── face_verify_success.blade.php
    │   │       ├── user_private_protocol.blade.php
    │   │       ├── user_protocol.blade.php
    │   │       └── vip_protocol.blade.php
    │   │   ├── payment
    │   │       ├── error.blade.php
    │   │       ├── index.blade.php
    │   │       ├── success.blade.php
    │   │       └── wechat-jsapi.blade.php
    │   │   └── wechat_scan_login
    │   │       ├── fail.blade.php
    │   │       ├── index.blade.php
    │   │       └── success.blade.php
    ├── routes
    │   ├── backend-v1.php
    │   ├── backend-v2.php
    │   ├── channels.php
    │   ├── frontend-v2.php
    │   ├── frontend-v3.php
    │   ├── frontend.php
    │   └── web.php
    ├── server.php
    ├── storage
    │   ├── app
    │   │   ├── .gitignore
    │   │   ├── public
    │   │   │   └── .gitignore
    │   │   └── templates
    │   │   │   └── .gitignore
    │   ├── framework
    │   │   ├── .gitignore
    │   │   ├── cache
    │   │   │   ├── .gitignore
    │   │   │   └── data
    │   │   │   │   └── .gitignore
    │   │   ├── sessions
    │   │   │   └── .gitignore
    │   │   ├── testing
    │   │   │   └── .gitignore
    │   │   └── views
    │   │   │   └── .gitignore
    │   ├── logs
    │   │   └── .gitignore
    │   └── private
    │   │   └── .gitignore
    └── tests
    │   ├── Commands
    │       ├── AddonsProviderMapGeneratorTest.php
    │       ├── ApplicationInstallCommandTest.php
    │       ├── InstallLockCommandTest.php
    │       ├── MeEduUpgradeCommandTest.php
    │       ├── MemberRoleExpiredHandlerCommandTest.php
    │       ├── OrderPayTimeoutCommandTest.php
    │       ├── RefundQueryCommandTest.php
    │       └── UserDeleteJobRunCommandTest.php
    │   ├── CreatesApplication.php
    │   ├── Feature
    │       ├── Api
    │       │   ├── Bus
    │       │   │   └── LoginLimitTest.php
    │       │   ├── V2
    │       │   │   ├── Base.php
    │       │   │   ├── CaptchaImageTest.php
    │       │   │   ├── CaptchaSmsTest.php
    │       │   │   ├── CourseCategoriesTest.php
    │       │   │   ├── CourseTest.php
    │       │   │   ├── LoginTest.php
    │       │   │   ├── MemberTest.php
    │       │   │   ├── PasswordTest.php
    │       │   │   ├── PromoCodeTest.php
    │       │   │   ├── RegisterTest.php
    │       │   │   ├── RoleTest.php
    │       │   │   └── VideoTest.php
    │       │   └── V3
    │       │   │   ├── CommentTest.php
    │       │   │   ├── LoginTest.php
    │       │   │   └── MemberTest.php
    │       └── BackendApi
    │       │   ├── AdFromTest.php
    │       │   ├── AdministratorTest.php
    │       │   ├── AnnouncementTest.php
    │       │   ├── Base.php
    │       │   ├── CourseCategoryTest.php
    │       │   ├── DashboardTest.php
    │       │   ├── LinkTest.php
    │       │   ├── LoginTest.php
    │       │   ├── NavTest.php
    │       │   ├── PromoCodeTest.php
    │       │   ├── RoleTest.php
    │       │   ├── SliderTest.php
    │       │   └── UserTest.php
    │   ├── OriginalTestCase.php
    │   ├── ServiceV2
    │       ├── Dao
    │       │   └── CommentDaoTest.php
    │       └── Service
    │       │   ├── CommentServiceTest.php
    │       │   └── UserServiceTest.php
    │   ├── Services
    │       ├── Course
    │       │   ├── CourseCategoryServiceTest.php
    │       │   ├── CourseServiceTest.php
    │       │   └── VideoServiceTest.php
    │       ├── Member
    │       │   ├── CreditServiceTest.php
    │       │   ├── DeliverServiceTest.php
    │       │   ├── NotificationServiceTest.php
    │       │   ├── RoleServiceTest.php
    │       │   ├── SocialiteServiceTest.php
    │       │   └── UserServiceTest.php
    │       ├── Order
    │       │   ├── OrderServiceTest.php
    │       │   └── PromoCodeServiceTest.php
    │       └── Other
    │       │   ├── AnnouncementServiceTest.php
    │       │   ├── LinkServiceTest.php
    │       │   ├── NavServiceTest.php
    │       │   ├── SliderServiceTest.php
    │       │   └── SmsServiceTest.php
    │   ├── TestCase.php
    │   └── Unit
    │       ├── Bus
    │           ├── AdminPermissionBusTest.php
    │           ├── AuthBusTest.php
    │           ├── BusinessStateTest.php
    │           └── RefundBusTest.php
    │       ├── Events
    │           ├── OrderCancelEventTest.php
    │           └── UserRegisterEventTest.php
    │       ├── HelperTest.php
    │       └── Meedu
    │           ├── MemoryCacheTest.php
    │           └── ServiceProxy
    │               ├── CacheInfoTest.php
    │               ├── LimitInfoTest.php
    │               ├── LockInfoTest.php
    │               └── ServiceProxyTest.php
├── xyz.meedu.h5
    ├── .env.example
    ├── .gitignore
    ├── README.md
    ├── index.html
    ├── package.json
    ├── pnpm-lock.yaml
    ├── public
    │   ├── favicon.ico
    │   └── js
    │   │   ├── DPlayer.min.js
    │   │   └── jweixin-1.6.0.js
    ├── src
    │   ├── App.scss
    │   ├── App.tsx
    │   ├── AutoTop.ts
    │   ├── api
    │   │   ├── comment.ts
    │   │   ├── course.ts
    │   │   ├── index.ts
    │   │   ├── internal
    │   │   │   └── httpClient.ts
    │   │   ├── login.ts
    │   │   ├── order.ts
    │   │   ├── role.ts
    │   │   ├── search.ts
    │   │   ├── system.ts
    │   │   ├── user.ts
    │   │   └── viewBlock.ts
    │   ├── assets
    │   │   └── img
    │   │   │   ├── Spinload.gif
    │   │   │   ├── VIPcenter@2x.png
    │   │   │   ├── attach-icon.png
    │   │   │   ├── circle.png
    │   │   │   ├── close.png
    │   │   │   ├── collect-active.png
    │   │   │   ├── collect.png
    │   │   │   ├── default-vip.png
    │   │   │   ├── default_avatar.png
    │   │   │   ├── dianbo@2x.png
    │   │   │   ├── dianzishu@2x.png
    │   │   │   ├── faceSuccess.png
    │   │   │   ├── icon-adopt.png
    │   │   │   ├── icon-answer-card.png
    │   │   │   ├── icon-back-n.png
    │   │   │   ├── icon-back.png
    │   │   │   ├── icon-balance@2x.png
    │   │   │   ├── icon-card.png
    │   │   │   ├── icon-check-h.png
    │   │   │   ├── icon-check-n.png
    │   │   │   ├── icon-clock.png
    │   │   │   ├── icon-delete-h.png
    │   │   │   ├── icon-delete.png
    │   │   │   ├── icon-error.png
    │   │   │   ├── icon-exam@2x.png
    │   │   │   ├── icon-exchange@2x.png
    │   │   │   ├── icon-favorite-n.png
    │   │   │   ├── icon-favorite.png
    │   │   │   ├── icon-filter.png
    │   │   │   ├── icon-handin.png
    │   │   │   ├── icon-history@2x.png
    │   │   │   ├── icon-home-h@2x.png
    │   │   │   ├── icon-home-n@2x.png
    │   │   │   ├── icon-info@2x.png
    │   │   │   ├── icon-last.png
    │   │   │   ├── icon-list@2x.png
    │   │   │   ├── icon-me-h@2x.png
    │   │   │   ├── icon-me-n@2x.png
    │   │   │   ├── icon-message@2x.png
    │   │   │   ├── icon-mock@2x.png
    │   │   │   ├── icon-money@2x.png
    │   │   │   ├── icon-next.png
    │   │   │   ├── icon-point@2x.png
    │   │   │   ├── icon-practice@2x.png
    │   │   │   ├── icon-prev.png
    │   │   │   ├── icon-qq.png
    │   │   │   ├── icon-search.png
    │   │   │   ├── icon-setting@2x.png
    │   │   │   ├── icon-study-h@2x.png
    │   │   │   ├── icon-study-n@2x.png
    │   │   │   ├── icon-wexinpay.png
    │   │   │   ├── icon-wrongbook@2x.png
    │   │   │   ├── img-placeholder.png
    │   │   │   ├── kaoshi@2x.png
    │   │   │   ├── lujing@2x.png
    │   │   │   ├── miaosha@2x.png
    │   │   │   ├── new
    │   │   │       ├── VIP.png
    │   │   │       ├── agree.png
    │   │   │       ├── back.png
    │   │   │       ├── back@2x.png
    │   │   │       ├── banner.png
    │   │   │       ├── close.png
    │   │   │       ├── message.png
    │   │   │       ├── order.png
    │   │   │       └── setting.png
    │   │   │   ├── payali.png
    │   │   │   ├── payhand.png
    │   │   │   ├── paywechat.png
    │   │   │   ├── play.gif
    │   │   │   ├── practice.png
    │   │   │   ├── qq.png
    │   │   │   ├── selected.png
    │   │   │   ├── test.png
    │   │   │   ├── topright.png
    │   │   │   ├── tuwen@2x.png
    │   │   │   ├── unselected.png
    │   │   │   ├── virtual-test.png
    │   │   │   ├── watermark@2x.png
    │   │   │   ├── wechat.png
    │   │   │   ├── wenda@2x.png
    │   │   │   ├── work-weixin.png
    │   │   │   ├── wrong-book.png
    │   │   │   └── zhibo@2x.png
    │   ├── components
    │   │   ├── captcha-dialog
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── confirm-login
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── copyright
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── count-down
    │   │   │   └── index.tsx
    │   │   ├── course-comments
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── duration
    │   │   │   └── index.tsx
    │   │   ├── empty
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── footer-bar
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── index.ts
    │   │   ├── nav-header
    │   │   │   └── index.tsx
    │   │   ├── none
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── private-route
    │   │   │   └── index.tsx
    │   │   ├── protocol
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── search-box
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── show-model
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── tech-support
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── thumb-bar
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   └── vod-course-item
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   ├── index.tsx
    │   ├── js
    │   │   ├── config.ts
    │   │   └── wechat-share.ts
    │   ├── main.scss
    │   ├── main.tsx
    │   ├── meedu.d.ts
    │   ├── pages
    │   │   ├── bind-mobile
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── code-bind-mobile
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── course
    │   │   │   ├── compenents
    │   │   │   │   ├── attach-box
    │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   └── index.tsx
    │   │   │   │   ├── filter-box1
    │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   └── index.tsx
    │   │   │   │   └── tabs
    │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   └── index.tsx
    │   │   │   ├── detail.module.scss
    │   │   │   ├── detail.tsx
    │   │   │   ├── index.module.scss
    │   │   │   ├── index.tsx
    │   │   │   ├── video.module.scss
    │   │   │   └── video.tsx
    │   │   ├── error
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── faceSuccess
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── index.ts
    │   │   ├── index
    │   │   │   ├── compenents
    │   │   │   │   ├── blank
    │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   └── index.tsx
    │   │   │   │   ├── grid-nav
    │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   └── index.tsx
    │   │   │   │   ├── gzh-v1
    │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   └── index.tsx
    │   │   │   │   ├── image-group
    │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   └── index.tsx
    │   │   │   │   ├── index-slider
    │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   └── index.tsx
    │   │   │   │   └── vod-v1
    │   │   │   │   │   ├── index.module.scss
    │   │   │   │   │   └── index.tsx
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── init
    │   │   │   └── index.tsx
    │   │   ├── layouts
    │   │   │   ├── with-footer
    │   │   │   │   └── index.tsx
    │   │   │   └── without-footer
    │   │   │   │   └── index.tsx
    │   │   ├── loading
    │   │   │   └── index.tsx
    │   │   ├── login
    │   │   │   ├── index.module.scss
    │   │   │   ├── index.tsx
    │   │   │   ├── login-error.module.scss
    │   │   │   ├── login-error.tsx
    │   │   │   ├── login-password.module.scss
    │   │   │   └── login-password.tsx
    │   │   ├── member
    │   │   │   ├── components
    │   │   │   │   ├── newmobile.module.scss
    │   │   │   │   └── newmobile.tsx
    │   │   │   ├── index.module.scss
    │   │   │   ├── index.tsx
    │   │   │   ├── mobile.module.scss
    │   │   │   ├── mobile.tsx
    │   │   │   ├── mobileVerify.module.scss
    │   │   │   ├── mobileVerify.tsx
    │   │   │   ├── order.module.scss
    │   │   │   ├── order.tsx
    │   │   │   ├── password.module.scss
    │   │   │   ├── password.tsx
    │   │   │   ├── profile.module.scss
    │   │   │   ├── profile.tsx
    │   │   │   ├── setting.module.scss
    │   │   │   └── setting.tsx
    │   │   ├── messages
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── order
    │   │   │   ├── index.module.scss
    │   │   │   ├── index.tsx
    │   │   │   ├── success.module.scss
    │   │   │   └── success.tsx
    │   │   ├── role
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   ├── search
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   │   └── study
    │   │   │   ├── compenents
    │   │   │       ├── course-item.module.scss
    │   │   │       └── course-item.tsx
    │   │   │   ├── index.module.scss
    │   │   │   └── index.tsx
    │   ├── routes
    │   │   └── index.tsx
    │   ├── store
    │   │   ├── index.ts
    │   │   ├── system
    │   │   │   └── systemConfigSlice.ts
    │   │   └── user
    │   │   │   └── loginUserSlice.ts
    │   ├── utils
    │   │   └── index.ts
    │   └── vite-env.d.ts
    ├── tsconfig.json
    ├── tsconfig.node.json
    └── vite.config.ts
└── xyz.meedu.pc
    ├── .env.example
    ├── .gitignore
    ├── README.md
    ├── index.html
    ├── package.json
    ├── pnpm-lock.yaml
    ├── public
        ├── favicon.png
        └── js
        │   ├── aliyun-rts
        │       └── aliyun-rts-sdk-2.2.9.js
        │   ├── highlight
        │       ├── a11y-dark.min.css
        │       └── highlight-9.18.5.min.js
        │   ├── katex
        │       ├── contrib
        │       │   └── auto-render.min.js
        │       ├── fonts
        │       │   ├── KaTeX_AMS-Regular.ttf
        │       │   ├── KaTeX_AMS-Regular.woff
        │       │   ├── KaTeX_AMS-Regular.woff2
        │       │   ├── KaTeX_Caligraphic-Bold.ttf
        │       │   ├── KaTeX_Caligraphic-Bold.woff
        │       │   ├── KaTeX_Caligraphic-Bold.woff2
        │       │   ├── KaTeX_Caligraphic-Regular.ttf
        │       │   ├── KaTeX_Caligraphic-Regular.woff
        │       │   ├── KaTeX_Caligraphic-Regular.woff2
        │       │   ├── KaTeX_Fraktur-Bold.ttf
        │       │   ├── KaTeX_Fraktur-Bold.woff
        │       │   ├── KaTeX_Fraktur-Bold.woff2
        │       │   ├── KaTeX_Fraktur-Regular.ttf
        │       │   ├── KaTeX_Fraktur-Regular.woff
        │       │   ├── KaTeX_Fraktur-Regular.woff2
        │       │   ├── KaTeX_Main-Bold.ttf
        │       │   ├── KaTeX_Main-Bold.woff
        │       │   ├── KaTeX_Main-Bold.woff2
        │       │   ├── KaTeX_Main-BoldItalic.ttf
        │       │   ├── KaTeX_Main-BoldItalic.woff
        │       │   ├── KaTeX_Main-BoldItalic.woff2
        │       │   ├── KaTeX_Main-Italic.ttf
        │       │   ├── KaTeX_Main-Italic.woff
        │       │   ├── KaTeX_Main-Italic.woff2
        │       │   ├── KaTeX_Main-Regular.ttf
        │       │   ├── KaTeX_Main-Regular.woff
        │       │   ├── KaTeX_Main-Regular.woff2
        │       │   ├── KaTeX_Math-BoldItalic.ttf
        │       │   ├── KaTeX_Math-BoldItalic.woff
        │       │   ├── KaTeX_Math-BoldItalic.woff2
        │       │   ├── KaTeX_Math-Italic.ttf
        │       │   ├── KaTeX_Math-Italic.woff
        │       │   ├── KaTeX_Math-Italic.woff2
        │       │   ├── KaTeX_SansSerif-Bold.ttf
        │       │   ├── KaTeX_SansSerif-Bold.woff
        │       │   ├── KaTeX_SansSerif-Bold.woff2
        │       │   ├── KaTeX_SansSerif-Italic.ttf
        │       │   ├── KaTeX_SansSerif-Italic.woff
        │       │   ├── KaTeX_SansSerif-Italic.woff2
        │       │   ├── KaTeX_SansSerif-Regular.ttf
        │       │   ├── KaTeX_SansSerif-Regular.woff
        │       │   ├── KaTeX_SansSerif-Regular.woff2
        │       │   ├── KaTeX_Script-Regular.ttf
        │       │   ├── KaTeX_Script-Regular.woff
        │       │   ├── KaTeX_Script-Regular.woff2
        │       │   ├── KaTeX_Size1-Regular.ttf
        │       │   ├── KaTeX_Size1-Regular.woff
        │       │   ├── KaTeX_Size1-Regular.woff2
        │       │   ├── KaTeX_Size2-Regular.ttf
        │       │   ├── KaTeX_Size2-Regular.woff
        │       │   ├── KaTeX_Size2-Regular.woff2
        │       │   ├── KaTeX_Size3-Regular.ttf
        │       │   ├── KaTeX_Size3-Regular.woff
        │       │   ├── KaTeX_Size3-Regular.woff2
        │       │   ├── KaTeX_Size4-Regular.ttf
        │       │   ├── KaTeX_Size4-Regular.woff
        │       │   ├── KaTeX_Size4-Regular.woff2
        │       │   ├── KaTeX_Typewriter-Regular.ttf
        │       │   ├── KaTeX_Typewriter-Regular.woff
        │       │   └── KaTeX_Typewriter-Regular.woff2
        │       ├── katex.min.css
        │       └── katex.min.js
        │   ├── player
        │       ├── DPlayer.min.js
        │       └── hls-1.4.10.min.js
        │   └── tcplayer
        │       ├── tcplayer.min.css
        │       └── tcplayer.v4.8.0.min.js
    ├── src
        ├── App.scss
        ├── App.tsx
        ├── AutoTop.ts
        ├── api
        │   ├── comment.ts
        │   ├── course.ts
        │   ├── home.ts
        │   ├── index.ts
        │   ├── internal
        │   │   └── httpClient.ts
        │   ├── login.ts
        │   ├── order.ts
        │   ├── role.ts
        │   ├── search.ts
        │   ├── study.ts
        │   ├── system.ts
        │   ├── user.ts
        │   └── viewBlock.ts
        ├── assets
        │   ├── iconfont
        │   │   ├── iconfont.css
        │   │   ├── iconfont.ttf
        │   │   ├── iconfont.woff
        │   │   └── iconfont.woff2
        │   └── img
        │   │   ├── back@2x.png
        │   │   ├── commen
        │   │       ├── VIP-top.png
        │   │       ├── banner2.jpg
        │   │       ├── bg-VIP.png
        │   │       ├── bg-zhibo.png
        │   │       ├── collect-paper.png
        │   │       ├── default-article.png
        │   │       ├── default-avatar.jpg
        │   │       ├── default-banner.png
        │   │       ├── default-ebook.png
        │   │       ├── default-lesson.png
        │   │       ├── default-live.png
        │   │       ├── default-paper.png
        │   │       ├── default-steps.png
        │   │       ├── default-video.png
        │   │       ├── default-vip.png
        │   │       ├── empty-data.png
        │   │       ├── faceSuccess.png
        │   │       ├── footlink.png
        │   │       ├── icon-VIP.png
        │   │       ├── icon-adopt.png
        │   │       ├── icon-back-h.png
        │   │       ├── icon-back.png
        │   │       ├── icon-backtop.png
        │   │       ├── icon-camera-h@2x.png
        │   │       ├── icon-camera-n@2x.png
        │   │       ├── icon-camera.png
        │   │       ├── icon-card.png
        │   │       ├── icon-close.png
        │   │       ├── icon-collect-h.png
        │   │       ├── icon-collect-n.png
        │   │       ├── icon-crad.png
        │   │       ├── icon-delete.png
        │   │       ├── icon-forward-h.png
        │   │       ├── icon-forward.png
        │   │       ├── icon-guidepost.png
        │   │       ├── icon-learning.png
        │   │       ├── icon-like-h.png
        │   │       ├── icon-like.png
        │   │       ├── icon-lock.png
        │   │       ├── icon-market.png
        │   │       ├── icon-market@2x.png
        │   │       ├── icon-member.png
        │   │       ├── icon-message.png
        │   │       ├── icon-mobile.png
        │   │       ├── icon-play.png
        │   │       ├── icon-qq.png
        │   │       ├── icon-question.png
        │   │       ├── icon-search.png
        │   │       ├── icon-sign-n.png
        │   │       ├── icon-top.png
        │   │       ├── icon-unlock.png
        │   │       ├── icon-video@2x.png
        │   │       ├── icon-vote-h.png
        │   │       ├── icon-vote-n.png
        │   │       ├── icon-wechat.png
        │   │       ├── icon-weibo.png
        │   │       ├── icon-weixin.png
        │   │       ├── icon-wepay.png
        │   │       ├── icon-wexinpay.png
        │   │       ├── icon-zfb.png
        │   │       ├── icon-zfb@2x.png
        │   │       ├── img-placeholder.png
        │   │       ├── img-wrong.png
        │   │       ├── login-banner.png
        │   │       ├── logo@2x.png
        │   │       ├── no-facecheck.png
        │   │       ├── practice.png
        │   │       ├── qq.svg
        │   │       ├── share-wechat.png
        │   │       ├── storehouse.png
        │   │       ├── test.png
        │   │       ├── tips-400.png
        │   │       ├── tips-500.png
        │   │       ├── upload.png
        │   │       ├── virtual-test.png
        │   │       └── wrong-book.png
        │   │   ├── icon-back-n.png
        │   │   ├── icon-back.png
        │   │   ├── icon-delete-h.png
        │   │   ├── icon-delete.png
        │   │   ├── icon-handin.png
        │   │   ├── member
        │   │       ├── mock.png
        │   │       ├── practice-collects.png
        │   │       ├── practice.png
        │   │       └── test.png
        │   │   └── study
        │   │       ├── banner.png
        │   │       └── icon-mystudy.png
        ├── components
        │   ├── back-top
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── code-login-bind-mobile
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── count-down
        │   │   └── index.tsx
        │   ├── course-comments
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── course-video-comments
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── duration
        │   │   └── index.tsx
        │   ├── empty
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── filter-categories
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── filter-scenes
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── footer
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── forget-password-dialog
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── header
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── image-preview
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── index.ts
        │   ├── login-dailog
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── nav-member
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── page-box
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── private-route
        │   │   └── index.tsx
        │   ├── register-dialog
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── tencent-face-check
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── thumb-bar
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── vod-course-item
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── weixin-bind-mobile-dialog
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   └── weixin-login-dailog
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        ├── index.scss
        ├── js
        │   ├── address.ts
        │   └── config.ts
        ├── main.tsx
        ├── meedu.d.ts
        ├── pages
        │   ├── announcement
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── auth
        │   │   ├── bindMobile.module.scss
        │   │   ├── bindMobile.tsx
        │   │   ├── faceCheck.module.scss
        │   │   ├── faceCheck.tsx
        │   │   └── loading.tsx
        │   ├── error
        │   │   ├── 404.tsx
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── index
        │   │   ├── components
        │   │   │   └── vod-v1
        │   │   │   │   ├── index.module.scss
        │   │   │   │   └── index.tsx
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── init
        │   │   └── index.tsx
        │   ├── layouts
        │   │   ├── with-header-with-footer
        │   │   │   └── index.tsx
        │   │   ├── with-header-without-footer
        │   │   │   └── index.tsx
        │   │   ├── without-header-with-footer
        │   │   │   └── index.tsx
        │   │   └── without-header-without-footer
        │   │   │   └── index.tsx
        │   ├── loading
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── login
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── member
        │   │   ├── components
        │   │   │   ├── bind-mobile
        │   │   │   │   ├── index.module.scss
        │   │   │   │   └── index.tsx
        │   │   │   ├── bind-new-mobile
        │   │   │   │   ├── index.module.scss
        │   │   │   │   └── index.tsx
        │   │   │   ├── bind-weixin
        │   │   │   │   ├── index.module.scss
        │   │   │   │   └── index.tsx
        │   │   │   ├── change-password
        │   │   │   │   ├── index.module.scss
        │   │   │   │   └── index.tsx
        │   │   │   ├── destroy-user
        │   │   │   │   ├── index.module.scss
        │   │   │   │   └── index.tsx
        │   │   │   ├── mobile-verify-dialog
        │   │   │   │   ├── index.module.scss
        │   │   │   │   └── index.tsx
        │   │   │   └── profile
        │   │   │   │   ├── index.module.scss
        │   │   │   │   └── index.tsx
        │   │   ├── credit1-free
        │   │   │   ├── index.module.scss
        │   │   │   └── index.tsx
        │   │   ├── index.module.scss
        │   │   ├── index.tsx
        │   │   ├── messages
        │   │   │   ├── index.module.scss
        │   │   │   └── index.tsx
        │   │   └── orders
        │   │   │   ├── index.module.scss
        │   │   │   └── index.tsx
        │   ├── order
        │   │   ├── index.module.scss
        │   │   ├── index.tsx
        │   │   ├── pay.module.scss
        │   │   ├── pay.tsx
        │   │   ├── success.module.scss
        │   │   └── success.tsx
        │   ├── role
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── search
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   ├── study
        │   │   ├── components
        │   │   │   ├── course-item
        │   │   │   │   ├── index.module.scss
        │   │   │   │   └── index.tsx
        │   │   │   └── detail-dialog
        │   │   │   │   ├── index.module.scss
        │   │   │   │   └── index.tsx
        │   │   ├── index.module.scss
        │   │   └── index.tsx
        │   └── vod
        │   │   ├── components
        │   │       ├── detail
        │   │       │   ├── video-chapter-list
        │   │       │   │   ├── index.module.scss
        │   │       │   │   └── index.tsx
        │   │       │   └── video-list
        │   │       │   │   ├── index.module.scss
        │   │       │   │   └── index.tsx
        │   │       └── video
        │   │       │   ├── video-chapter-list
        │   │       │       ├── index.module.scss
        │   │       │       └── index.tsx
        │   │       │   └── video-list
        │   │       │       ├── index.module.scss
        │   │       │       └── index.tsx
        │   │   ├── detail.module.scss
        │   │   ├── detail.tsx
        │   │   ├── index.module.scss
        │   │   ├── index.tsx
        │   │   ├── video.module.scss
        │   │   └── video.tsx
        ├── routes
        │   └── index.tsx
        ├── store
        │   ├── index.ts
        │   ├── nav-menu
        │   │   └── navMenuConfigSlice.ts
        │   ├── system
        │   │   └── systemConfigSlice.ts
        │   └── user
        │   │   └── loginUserSlice.ts
        ├── utils
        │   └── index.ts
        └── vite-env.d.ts
    ├── tsconfig.json
    ├── tsconfig.node.json
    └── vite.config.ts


/.dockerignore:
--------------------------------------------------------------------------------
 1 | /xyz.meedu.h5/node_modules/
 2 | /xyz.meedu.h5/dist/
 3 | /xyz.meedu.h5/README.md
 4 | 
 5 | /xyz.meedu.pc/node_modules/
 6 | /xyz.meedu.pc/dist/
 7 | /xyz.meedu.pc/README.md
 8 | 
 9 | /xyz.meedu.admin/node_modules/
10 | /xyz.meedu.admin/dist/
11 | /xyz.meedu.admin/README.md
12 | 
13 | /xyz.meedu.api/vendor/
14 | /xyz.meedu.api/.env
15 | /xyz.meedu.api/.phpunit.result.cache
16 | /xyz.meedu.api/.php-cs-fixer.php
17 | /xyz.meedu.api/apidoc/
18 | /xyz.meedu.api/apidoc.json
19 | /xyz.meedu.api/README.md
20 | /xyz.meedu.api/.env.testing


--------------------------------------------------------------------------------
/.env.example:
--------------------------------------------------------------------------------
 1 | # MySQL数据库配置
 2 | DB_HOST=mysql
 3 | DB_PORT=3306
 4 | DB_USERNAME=root
 5 | DB_PASSWORD=meeduxyz
 6 | DB_DATABASE=meedu
 7 | 
 8 | # Redis配置
 9 | REDIS_HOST=redis
10 | REDIS_PASSWORD=F9nO2FzJ*%uDX58!
11 | REDIS_PORT=6379
12 | 
13 | # MeEdu配置
14 | APP_KEY=base64:s9M5EmBWLWerXU/udZ8biH8GYGKBAEtatGNI2XnzEVM=
15 | JWT_SECRET=26tpIiNHtYE0YsXeDge837qfIXVmlOES8l9M2u9OTrCZ9NASZcqJdYXBaOSPeLsh
16 | QUEUE_DRIVER=sync
17 | 
18 | # MeiliSearch配置
19 | MEILISEARCH_HOST=http://meilisearch:7700
20 | MEILISEARCH_KEY=


--------------------------------------------------------------------------------
/.github/SECURITY.md:
--------------------------------------------------------------------------------
1 | 
2 | If you have feedback regarding a security vulnerability in meedu, please contact:
3 | 
4 | Contact Name: Yongzhi Teng  
5 | Contact Email: tengyongzhi@meedu.vip  


--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | *.log
3 | /.idea/
4 | /.vscode/
5 | LOCAL-TEST.md
6 | .env


--------------------------------------------------------------------------------
/docker/php/php-fpm.d/docker.conf:
--------------------------------------------------------------------------------
 1 | [global]
 2 | error_log = /proc/self/fd/2
 3 | 
 4 | ; https://github.com/docker-library/php/pull/725#issuecomment-443540114
 5 | log_limit = 8192
 6 | 
 7 | [www]
 8 | ; if we send this to /proc/self/fd/1, it never appears
 9 | access.log = /proc/self/fd/2
10 | 
11 | clear_env = no
12 | 
13 | ; Ensure worker stdout and stderr are sent to the main error log.
14 | catch_workers_output = yes
15 | decorate_workers_output = no
16 | 


--------------------------------------------------------------------------------
/docker/php/php-fpm.d/zz-docker.conf:
--------------------------------------------------------------------------------
1 | [global]
2 | daemonize = no
3 | 
4 | [www]
5 | listen = 9000
6 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/.env.example:
--------------------------------------------------------------------------------
1 | VITE_APP_URL=


--------------------------------------------------------------------------------
/xyz.meedu.admin/.gitignore:
--------------------------------------------------------------------------------
 1 | # Logs
 2 | logs
 3 | *.log
 4 | npm-debug.log*
 5 | yarn-debug.log*
 6 | yarn-error.log*
 7 | pnpm-debug.log*
 8 | lerna-debug.log*
 9 | 
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 | 
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 | 
26 | package-lock.json
27 | yarn.lock
28 | 
29 | .env.production
30 | .env.development
31 | .env
32 | 
33 | template.php
34 | 
35 | deploy-test.sh
36 | deploy-demo.sh


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/favicon.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_AMS-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_AMS-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_AMS-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_AMS-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_AMS-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_AMS-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Caligraphic-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Caligraphic-Bold.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Caligraphic-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Caligraphic-Bold.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Caligraphic-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Caligraphic-Bold.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Caligraphic-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Caligraphic-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Caligraphic-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Caligraphic-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Caligraphic-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Caligraphic-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Fraktur-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Fraktur-Bold.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Fraktur-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Fraktur-Bold.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Fraktur-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Fraktur-Bold.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Fraktur-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Fraktur-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Fraktur-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Fraktur-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Fraktur-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Fraktur-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Bold.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Bold.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Bold.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-BoldItalic.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-BoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-BoldItalic.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-BoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-BoldItalic.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Italic.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Italic.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Italic.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Main-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Math-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Math-BoldItalic.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Math-BoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Math-BoldItalic.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Math-BoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Math-BoldItalic.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Math-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Math-Italic.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Math-Italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Math-Italic.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Math-Italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Math-Italic.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Bold.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Bold.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Bold.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Italic.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Italic.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Italic.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_SansSerif-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Script-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Script-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Script-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Script-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Script-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Script-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size1-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size1-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size1-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size1-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size1-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size1-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size2-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size2-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size2-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size2-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size2-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size2-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size3-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size3-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size3-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size3-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size3-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size3-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size4-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size4-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size4-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size4-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size4-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Size4-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Typewriter-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Typewriter-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Typewriter-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Typewriter-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Typewriter-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/js/katex/fonts/KaTeX_Typewriter-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/template/学员批量导入模板.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/template/学员批量导入模板.xlsx


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/template/试题批量导入模板.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/template/试题批量导入模板.xlsx


--------------------------------------------------------------------------------
/xyz.meedu.admin/public/template/课时批量导入模板.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/public/template/课时批量导入模板.xlsx


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/App.scss:
--------------------------------------------------------------------------------
 1 | #root {
 2 |   width: 100%;
 3 |   margin: 0 auto;
 4 |   text-align: center;
 5 | }
 6 | 
 7 | ::selection {
 8 |   background-color: #3ca7fa;
 9 |   color: white;
10 | }


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/App.tsx:
--------------------------------------------------------------------------------
 1 | import { useRoutes } from "react-router-dom";
 2 | import routes from "./routes";
 3 | import "./App.scss";
 4 | import { Suspense } from "react";
 5 | import LoadingPage from "./pages/loading";
 6 | 
 7 | function App() {
 8 |   const Views = () => useRoutes(routes);
 9 | 
10 |   return (
11 |     <Suspense fallback={<LoadingPage />}>
12 |       <Views />
13 |     </Suspense>
14 |   );
15 | }
16 | 
17 | export default App;
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/AutoTop.ts:
--------------------------------------------------------------------------------
 1 | import React from "react";
 2 | import { useLayoutEffect } from "react";
 3 | import { useLocation } from "react-router-dom";
 4 | 
 5 | const AutoScorllTop: React.FC<{ children: any }> = ({ children }) => {
 6 |   const location = useLocation();
 7 |   useLayoutEffect(() => {
 8 |     document.documentElement.scrollTo(0, 0);
 9 |   }, [location.pathname]);
10 |   return children;
11 | };
12 | 
13 | export default AutoScorllTop;
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/api/administrator.ts:
--------------------------------------------------------------------------------
 1 | import client from "./internal/httpClient";
 2 | 
 3 | export function detail() {
 4 |   return client.get(`/backend/api/v1/user`, {});
 5 | }
 6 | 
 7 | export function changePassword(params: any) {
 8 |   return client.put(`/backend/api/v1/administrator/password`, params);
 9 | }
10 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/api/comment.ts:
--------------------------------------------------------------------------------
 1 | import client from "./internal/httpClient";
 2 | 
 3 | export function list(params: any) {
 4 |   return client.get("/backend/api/v1/comment/index", params);
 5 | }
 6 | 
 7 | export function commentApplyMulti(params: any) {
 8 |   return client.post(`/backend/api/v1/comment/check`, params);
 9 | }
10 | 
11 | export function commentDestroy(params: any) {
12 |   return client.post(`/backend/api/v1/comment/delete`, params);
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/api/home.ts:
--------------------------------------------------------------------------------
 1 | import client from "./internal/httpClient";
 2 | 
 3 | export function index() {
 4 |   return client.get("/backend/api/v1/dashboard", {});
 5 | }
 6 | 
 7 | export function systemInfo() {
 8 |   return client.get("/backend/api/v1/dashboard/system/info", {});
 9 | }
10 | 
11 | export function statistic(params: any) {
12 |   return client.get(`/backend/api/v1/dashboard/graph`, params);
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/api/login.ts:
--------------------------------------------------------------------------------
 1 | import client from "./internal/httpClient";
 2 | 
 3 | export function login(params: any) {
 4 |   return client.post("/backend/api/v1/login", params);
 5 | }
 6 | 
 7 | export function logout() {
 8 |   return client.post("/backend/api/v1/logout", {});
 9 | }
10 | 
11 | export function getUser() {
12 |   return client.get("/backend/api/v1/user", {});
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/api/pre.ts:
--------------------------------------------------------------------------------
 1 | import client from "./internal/prehttpClient";
 2 | 
 3 | export function setting() {
 4 |   return client.get("/backend/api/v1/setting", {});
 5 | }
 6 | 
 7 | export function saveSetting(params: any) {
 8 |   return client.post("/backend/api/v1/setting", params);
 9 | }
10 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/api/user.ts:
--------------------------------------------------------------------------------
 1 | import client from "./internal/httpClient";
 2 | 
 3 | export function detail() {
 4 |   return client.get("/api/v1/user/detail", {});
 5 | }
 6 | 
 7 | // 修改密码
 8 | export function password(oldPassword: string, newPassword: string) {
 9 |   return client.put("/api/v1/user/avatar", {
10 |     old_password: oldPassword,
11 |     new_password: newPassword,
12 |   });
13 | }
14 | 
15 | // 学员课程
16 | export function courses(depId: number) {
17 |   return client.get("/api/v1/user/courses", {
18 |     dep_id: depId,
19 |   });
20 | }
21 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/common/iconfont/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/common/iconfont/iconfont.ttf


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/common/iconfont/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/common/iconfont/iconfont.woff


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/common/iconfont/iconfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/common/iconfont/iconfont.woff2


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/home/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/home/favicon.ico


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/home/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/home/logo.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/home/selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/home/selected.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/ali.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/ali.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/camera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/camera.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/clicklogin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/clicklogin.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/coursetime.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/coursetime.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/credict.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/credict.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/h5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/h5.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/icon-option.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/icon-option.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/icon-sign in.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/icon-sign in.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/import.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/import.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/live.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/live.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/login.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/message.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/message.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/payment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/payment.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/pic.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/player.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/player.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/role.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/role.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/search.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/sendvip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/sendvip.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/system.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/system.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/tecent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/tecent.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/topic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/topic.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/video.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/webview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/webview.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/wechat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/wechat.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/config/weixin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/config/weixin.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/blank.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/blank.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/book-back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/book-back.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/code.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/course-back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/course-back.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/default-grid-nav.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/default-grid-nav.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/default-slider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/default-slider.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/empty-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/empty-image.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/grid-nav.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/grid-nav.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/h5-book-v1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/h5-book-v1.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/h5-edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/h5-edit.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/h5-gognzhoanghao-v1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/h5-gognzhoanghao-v1.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/h5-vod-v1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/h5-vod-v1.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/icon-announce.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/icon-announce.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/icon-banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/icon-banner.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/icon-link.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/icon-link.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/icon-nav.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/icon-nav.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-1-2-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-1-2-active.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-1-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-1-2.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-1-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-1-active.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-1.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-2-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-2-active.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-2.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-3-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-3-active.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-3.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-4-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-4-active.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/image-group-4.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/image-group.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/image-group.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/mp-wechat-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/mp-wechat-icon.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/mp-wechat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/mp-wechat.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/none-img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/none-img.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/pc-edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/pc-edit.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/pc-edit2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/pc-edit2.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/search-bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/search-bar.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/slider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/slider.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/decoration/h5/status-bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/decoration/h5/status-bar.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/stats/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/stats/icon.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/images/upload-video/empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/images/upload-video/empty.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/img/ali-pay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/img/ali-pay.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/img/card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/img/card.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/img/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/img/close.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/img/default-vip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/img/default-vip.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/img/focus-device.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/img/focus-device.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/img/icon-back-n.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/img/icon-back-n.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/img/icon-back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/img/icon-back.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/img/icon-close-h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/img/icon-close-h.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/img/icon-close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/img/icon-close.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/img/icon-filter-h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/img/icon-filter-h.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/img/icon-filter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/img/icon-filter.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/img/icon-handin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/img/icon-handin.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/img/wepay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/img/wepay.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/login/loginleft_banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/login/loginleft_banner.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/assets/login/yuyan@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/assets/login/yuyan@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/back-bar/index.module.scss:
--------------------------------------------------------------------------------
 1 | .back-bar-box {
 2 |   width: 100%;
 3 |   height: auto;
 4 |   float: left;
 5 |   display: flex;
 6 |   align-items: center;
 7 | 
 8 |   .line {
 9 |     width: 1px;
10 |     height: 14px;
11 |     background-color: #d8d8d8;
12 |     margin-right: 15px;
13 |   }
14 | 
15 |   .name {
16 |     font-size: 14px;
17 |     font-weight: 600;
18 |     color: #333333;
19 |   }
20 | }
21 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/close-icon/index.module.scss:
--------------------------------------------------------------------------------
 1 | .btn-close-icon {
 2 |   width: 15px;
 3 |   height: 15px;
 4 |   background-color: #cccccc;
 5 |   color: white;
 6 |   border-radius: 50%;
 7 |   line-height: 15px;
 8 |   text-align: center;
 9 |   cursor: pointer;
10 | 
11 |   &:hover {
12 |     background-color: rgba(#cccccc, 0.8);
13 |   }
14 | }
15 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/close-icon/index.tsx:
--------------------------------------------------------------------------------
 1 | import styles from "./index.module.scss";
 2 | import { CloseCircleOutlined } from "@ant-design/icons";
 3 | 
 4 | export const CloseIcon = () => {
 5 |   return (
 6 |     <div className={styles["btn-close-icon"]}>
 7 |       <CloseCircleOutlined />
 8 |     </div>
 9 |   );
10 | };
11 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/duration-text/index.module.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/components/duration-text/index.module.scss


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/footer/index.module.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/components/footer/index.module.scss


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/h5-link/components/courses/index.module.scss:
--------------------------------------------------------------------------------
 1 | .select-box {
 2 |   position: absolute;
 3 |   width: 340px;
 4 |   top: 0;
 5 |   display: flex;
 6 |   align-items: center;
 7 | }
 8 | .form-label {
 9 |   font-size: 14px;
10 |   color: rgba(0, 0, 0, 0.7);
11 | }
12 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/helper-text/index.tsx:
--------------------------------------------------------------------------------
 1 | import { InfoCircleOutlined } from "@ant-design/icons";
 2 | 
 3 | interface PropInterface {
 4 |   text: string;
 5 | }
 6 | 
 7 | export const HelperText = (props: PropInterface) => {
 8 |   return (
 9 |     <div className="helper-text">
10 |       <InfoCircleOutlined />
11 |       <span className="ml-5">{props.text}</span>
12 |     </div>
13 |   );
14 | };
15 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/permission-button/index.module.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/components/permission-button/index.module.scss


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/quill-editor/index.module.scss:
--------------------------------------------------------------------------------
 1 | .quill-editor-h40-box {
 2 |   width: 100%;
 3 |   float: left;
 4 |   background-color: white;
 5 |   .ql-editor {
 6 |     min-height: 40px;
 7 |   }
 8 | }
 9 | 
10 | .quill-editor-box {
11 |   width: 100%;
12 |   float: left;
13 |   background-color: white;
14 | }
15 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/student-device/index.module.scss:
--------------------------------------------------------------------------------
 1 | .dialog-body {
 2 |   width: 100%;
 3 |   height: auto;
 4 |   box-sizing: border-box;
 5 |   padding: 30px 30px 30px 30px;
 6 |   display: flex;
 7 |   flex-direction: column;
 8 |   align-items: center;
 9 |   .qrcode {
10 |     width: 150px;
11 |     height: 150px;
12 |   }
13 | 
14 |   label {
15 |     font-size: 14px;
16 |     font-weight: 400;
17 |     color: #666666;
18 |     line-height: 14px;
19 |     margin-top: 10px;
20 |     margin-bottom: 50px;
21 |   }
22 | }
23 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/tags-tooltip/index.module.scss:
--------------------------------------------------------------------------------
1 | .cursor-pointer {
2 |   display: -webkit-box;
3 |   width: 100%;
4 |   overflow: hidden;
5 |   white-space: nowrap;
6 |   text-overflow: ellipsis;
7 |   cursor: pointer;
8 | }
9 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/thumb-bar/index.moduel.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/components/thumb-bar/index.moduel.scss


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/tree-category/index.module.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/components/tree-category/index.module.scss


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/upload-video-item/index.module.scss:
--------------------------------------------------------------------------------
 1 | .header {
 2 |   width: 100%;
 3 |   height: auto;
 4 |   float: left;
 5 |   box-sizing: border-box;
 6 |   padding: 0px 0px 20px 0px;
 7 |   font-size: 18px;
 8 |   font-weight: 500;
 9 |   color: #333333;
10 |   line-height: 18px;
11 |   display: flex;
12 |   justify-content: space-between;
13 |   align-items: center;
14 | }
15 | 
16 | .body {
17 |   width: 100%;
18 |   height: 575px;
19 |   overflow-x: hidden;
20 |   overflow-y: auto;
21 |   float: left;
22 |   box-sizing: border-box;
23 | }
24 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/upload-video/index.module.scss:
--------------------------------------------------------------------------------
 1 | .header {
 2 |   width: 100%;
 3 |   height: auto;
 4 |   float: left;
 5 |   box-sizing: border-box;
 6 |   padding: 0px 0px 20px 0px;
 7 |   font-size: 18px;
 8 |   font-weight: 500;
 9 |   color: #333333;
10 |   line-height: 18px;
11 |   display: flex;
12 |   justify-content: space-between;
13 |   align-items: center;
14 | }
15 | 
16 | .body {
17 |   width: 100%;
18 |   height: 575px;
19 |   float: left;
20 |   box-sizing: border-box;
21 | }
22 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/user-add/index.module.scss:
--------------------------------------------------------------------------------
 1 | .header {
 2 |   width: 100%;
 3 |   height: auto;
 4 |   box-sizing: border-box;
 5 |   font-size: 18px;
 6 |   font-weight: 400;
 7 |   color: #333333;
 8 |   line-height: 18px;
 9 | }
10 | 
11 | .body {
12 |   width: 100%;
13 |   height: 500px;
14 |   overflow-y: auto;
15 |   box-sizing: border-box;
16 |   margin-top: 30px;
17 | }
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/user-import/index.module.scss:
--------------------------------------------------------------------------------
 1 | .header {
 2 |   width: 100%;
 3 |   height: auto;
 4 |   box-sizing: border-box;
 5 |   font-size: 18px;
 6 |   font-weight: 400;
 7 |   color: #333333;
 8 |   line-height: 18px;
 9 | }
10 | 
11 | .body {
12 |   width: 100%;
13 |   height: 100px;
14 |   box-sizing: border-box;
15 |   margin-top: 30px;
16 | }
17 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/user-single-add/index.module.scss:
--------------------------------------------------------------------------------
 1 | .header {
 2 |   width: 100%;
 3 |   height: auto;
 4 |   box-sizing: border-box;
 5 |   font-size: 18px;
 6 |   font-weight: 400;
 7 |   color: #333333;
 8 |   line-height: 18px;
 9 | }
10 | 
11 | .body {
12 |   width: 100%;
13 |   height: 500px;
14 |   overflow-y: auto;
15 |   box-sizing: border-box;
16 |   margin-top: 30px;
17 | }
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/components/vhtml-tooltip/index.module.scss:
--------------------------------------------------------------------------------
1 | .cursor-pointer {
2 |   display: -webkit-box;
3 |   width: 100%;
4 |   overflow: hidden;
5 |   white-space: nowrap;
6 |   text-overflow: ellipsis;
7 |   cursor: pointer;
8 | }
9 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/js/config.ts:
--------------------------------------------------------------------------------
 1 | let url = import.meta.env.VITE_APP_URL || "";
 2 | 
 3 | declare const window: any;
 4 | 
 5 | if (typeof window.meedu_app_url !== "undefined" && window.meedu_app_url) {
 6 |   url = window.meedu_app_url;
 7 | }
 8 | 
 9 | export default {
10 |   url: url,
11 | };
12 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/meedu.d.ts:
--------------------------------------------------------------------------------
 1 | declare module "xlsx";
 2 | 
 3 | declare global {
 4 |   interface ResponseInterface {
 5 |     data: any;
 6 |     status: number;
 7 |     message?: string;
 8 |   }
 9 | 
10 |   interface CategoriesBoxModel {
11 |     [key: number]: CategoriesItemModel[];
12 |   }
13 | 
14 |   interface CategoriesItemModel {
15 |     id: number;
16 |     name: string;
17 |     parent_chain: string;
18 |     parent_id: number;
19 |     sort: number;
20 |   }
21 | }
22 | 
23 | export {};
24 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/administrator/change-password/index.module.scss:
--------------------------------------------------------------------------------
 1 | .change-password-box {
 2 |   width: 100%;
 3 |   height: auto;
 4 |   float: left;
 5 |   box-sizing: border-box;
 6 |   background-color: white;
 7 |   padding: 50px;
 8 |   text-align: left;
 9 | }
10 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/decoration/components/h5/config/index.module.scss:
--------------------------------------------------------------------------------
 1 | .config-index-box {
 2 |   width: 100%;
 3 |   height: 100%;
 4 |   float: left;
 5 |   overflow-y: auto;
 6 |   box-sizing: border-box;
 7 |   padding: 30px;
 8 |   text-align: left;
 9 | }
10 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/decoration/components/h5/render-blank/index.module.scss:
--------------------------------------------------------------------------------
1 | .blank-box {
2 |   width: 100%;
3 |   height: auto;
4 |   float: left;
5 | }
6 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/decoration/components/h5/render-blank/index.tsx:
--------------------------------------------------------------------------------
 1 | import React, { useState, useEffect } from "react";
 2 | import styles from "./index.module.scss";
 3 | 
 4 | interface PropInterface {
 5 |   config: any;
 6 | }
 7 | 
 8 | export const RenderBlank: React.FC<PropInterface> = ({ config }) => {
 9 |   const [loading, setLoading] = useState<boolean>(false);
10 | 
11 |   return (
12 |     <div
13 |       className={styles["blank-box"]}
14 |       style={{ height: config.height, backgroundColor: config.bgcolor }}
15 |     ></div>
16 |   );
17 | };
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/decoration/components/h5/render-image-group/index.module.scss:
--------------------------------------------------------------------------------
1 | .image-group-box {
2 |   width: 100%;
3 |   height: auto;
4 |   float: left;
5 |   text-align: left;
6 | }
7 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/decoration/components/h5/render-sliders/index.module.scss:
--------------------------------------------------------------------------------
1 | .slider-box {
2 |   width: 100%;
3 |   height: auto;
4 |   float: left;
5 |   box-sizing: border-box;
6 |   padding: 10px 15px;
7 |   background-color: white;
8 | }
9 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/decoration/components/pc/render-code/index.module.scss:
--------------------------------------------------------------------------------
 1 | .code-empty {
 2 |   width: 100%;
 3 |   height: 100px;
 4 |   float: left;
 5 |   line-height: 100px;
 6 |   text-align: center;
 7 |   font-size: 24px;
 8 |   color: rgba(0, 0, 0, 0.8);
 9 |   background-color: rgba(0, 0, 0, 0.08);
10 | }
11 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/decoration/components/pc/render-notice/index.module.scss:
--------------------------------------------------------------------------------
 1 | .notice-box {
 2 |   width: 100%;
 3 |   height: auto;
 4 |   float: left;
 5 |   box-sizing: border-box;
 6 |   background-color: #fff9d7;
 7 |   padding: 17px 30px;
 8 |   font-size: 16px;
 9 |   font-weight: 400;
10 |   color: #de7a0b;
11 |   line-height: 22px;
12 |   cursor: pointer;
13 |   border-bottom-left-radius: 8px;
14 |   border-bottom-right-radius: 8px;
15 |   text-align: left;
16 | }
17 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/decoration/components/pc/render-sliders/index.module.scss:
--------------------------------------------------------------------------------
 1 | .empty-data {
 2 |   width: 100%;
 3 |   height: 400px;
 4 |   float: left;
 5 |   line-height: 400px;
 6 |   text-align: center;
 7 |   font-size: 24px;
 8 |   color: rgba(0, 0, 0, 0.7);
 9 |   background-color: rgba(0, 0, 0, 0.05);
10 | }
11 | 
12 | .sliders-box {
13 |   width: 100%;
14 |   height: auto;
15 |   float: left;
16 |   cursor: pointer;
17 | }
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/error/index.module.scss:
--------------------------------------------------------------------------------
1 | .main {
2 |   width: 100%;
3 |   height: 100vh;
4 |   box-sizing: border-box;
5 |   padding-top: 100px;
6 | }
7 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/error/no-sevice.tsx:
--------------------------------------------------------------------------------
1 | import { Result } from "antd";
2 | import styles from "./index.module.scss";
3 | 
4 | const NoServicePage = () => {
5 |   return <Result title="后端服务不可用" className={styles["main"]} />;
6 | };
7 | 
8 | export default NoServicePage;
9 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/index.ts:
--------------------------------------------------------------------------------
1 | export * from './login';


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/layouts/without-header-without-footer/index.module.scss:
--------------------------------------------------------------------------------
1 | .layout-wrap {
2 |   position: fixed;
3 |   top: 0;
4 |   left: 0;
5 |   right: 0;
6 |   bottom: 0;
7 |   display: flex;
8 | }
9 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/layouts/without-header-without-footer/index.tsx:
--------------------------------------------------------------------------------
 1 | import { Suspense } from "react";
 2 | import styles from "./index.module.scss";
 3 | import { Outlet } from "react-router-dom";
 4 | import LoadingPage from "../../loading";
 5 | 
 6 | const WithoutHeaderWithoutFooter = () => {
 7 |   return (
 8 |     <div className={styles["layout-wrap"]}>
 9 |       <Suspense fallback={<LoadingPage height="100vh" />}>
10 |         <Outlet />
11 |       </Suspense>
12 |     </div>
13 |   );
14 | };
15 | 
16 | export default WithoutHeaderWithoutFooter;
17 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/loading/index.module.scss:
--------------------------------------------------------------------------------
1 | .loading-box {
2 |   width: 100vw;
3 |   line-height: 100vh;
4 |   text-align: center;
5 |   background-color: #f4fafe;
6 | }
7 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/loading/index.tsx:
--------------------------------------------------------------------------------
 1 | import { Spin } from "antd";
 2 | import styles from "./index.module.scss";
 3 | 
 4 | interface PropsInterface {
 5 |   height?: string;
 6 | }
 7 | 
 8 | const LoadingPage = (props: PropsInterface) => {
 9 |   return (
10 |     <>
11 |       <div
12 |         className={styles["loading-box"]}
13 |         style={{ height: props.height || "100vh" }}
14 |       >
15 |         <Spin size="large" />
16 |       </div>
17 |     </>
18 |   );
19 | };
20 | 
21 | export default LoadingPage;
22 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/promocode/import.module.scss:
--------------------------------------------------------------------------------
 1 | .user-import-box {
 2 |   width: 100%;
 3 |   height: auto;
 4 |   float: left;
 5 |   box-sizing: border-box;
 6 |   padding: 30px 100px;
 7 |   border-radius: 15px;
 8 |   background-color: white;
 9 | }
10 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/resource/videos/compenents/create.module.less:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/pages/resource/videos/compenents/create.module.less


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/resource/videos/compenents/update.module.less:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/pages/resource/videos/compenents/update.module.less


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/system/application/index.module.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/pages/system/application/index.module.scss


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/pages/system/systemLog/index.module.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.admin/src/pages/system/systemLog/index.module.scss


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/store/index.ts:
--------------------------------------------------------------------------------
 1 | import { configureStore } from "@reduxjs/toolkit";
 2 | import systemConfigReducer from "./system/systemConfigSlice";
 3 | import loginUserReducer from "./user/loginUserSlice";
 4 | import EnabledAddonsReducer from "./enabledAddons/enabledAddonsConfigSlice";
 5 | 
 6 | const store = configureStore({
 7 |   reducer: {
 8 |     loginUser: loginUserReducer,
 9 |     systemConfig: systemConfigReducer,
10 |     enabledAddonsConfig: EnabledAddonsReducer,
11 |   },
12 | });
13 | 
14 | export default store;
15 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/types/permission.ts:
--------------------------------------------------------------------------------
 1 | // 权限类型定义
 2 | export interface Permission {
 3 |   [key: string]: boolean;
 4 | }
 5 | 
 6 | // 权限路径配置类型
 7 | export interface PermissionPath {
 8 |   permission: string;  // 权限标识
 9 |   path: string;       // 路由路径
10 |   title: string;      // 页面标题
11 | }
12 | 
13 | // 用户信息类型补充
14 | export interface MIAdministrator {
15 |   id: number;
16 |   name: string;
17 |   email: string;
18 |   permissions: Permission;
19 |   created_at: string;
20 |   is_ban_login: number;
21 |   login_at: string;
22 | } 


--------------------------------------------------------------------------------
/xyz.meedu.admin/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | /// <reference types="vite/client" />
2 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/tsconfig.node.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "compilerOptions": {
 3 |     "composite": true,
 4 |     "module": "ESNext",
 5 |     "moduleResolution": "Node",
 6 |     "allowSyntheticDefaultImports": true
 7 |   },
 8 |   "include": ["vite.config.ts"]
 9 | }
10 | 


--------------------------------------------------------------------------------
/xyz.meedu.admin/vite.config.ts:
--------------------------------------------------------------------------------
 1 | import { defineConfig } from "vite";
 2 | import react from "@vitejs/plugin-react-swc";
 3 | import gzipPlugin from "rollup-plugin-gzip";
 4 | 
 5 | // https://vitejs.dev/config/
 6 | export default defineConfig({
 7 |   server: {
 8 |     host: '0.0.0.0',
 9 |     port: 8300,
10 |   },
11 |   plugins: [react()],
12 |   build: {
13 |     rollupOptions: {
14 |       plugins: [gzipPlugin()],
15 |     },
16 |   },
17 | });
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | *.css linguist-vendored
3 | *.scss linguist-vendored
4 | *.js linguist-vendored
5 | CHANGELOG.md export-ignore
6 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/.gitignore:
--------------------------------------------------------------------------------
 1 | /node_modules
 2 | /public/hot
 3 | /public/storage
 4 | /public/admin
 5 | /storage/*.key
 6 | /vendor
 7 | /.idea
 8 | /.vagrant
 9 | Homestead.json
10 | Homestead.yaml
11 | npm-debug.log
12 | yarn-error.log
13 | .env
14 | bower_components
15 | .php_cs.cache
16 | /storage/meedu_config.json
17 | .DS_Store
18 | php-cs-fixer.phar
19 | /app/Console/Commands/TestCommand.php
20 | _ide_helper.php
21 | package-lock.json
22 | /storage/install.lock
23 | .phpunit.result.cache
24 | public/mix-manifest.json
25 | apidoc/
26 | tests/report/
27 | .env.testing


--------------------------------------------------------------------------------
/xyz.meedu.api/addons/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore


--------------------------------------------------------------------------------
/xyz.meedu.api/apidoc.json:
--------------------------------------------------------------------------------
1 | {
2 |   "name": "MeEdu",
3 |   "version": "v2.0.0",
4 |   "description": "MeEdu点播系统",
5 |   "title": "MeEdu点播系统",
6 |   "url" : ""
7 | }


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Constant/BackendApiConstant.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Constant;
10 | 
11 | class BackendApiConstant
12 | {
13 |     public const GUARD = 'administrator';
14 | 
15 |     public const P_DATA_USER_MOBILE = 'data.user.mobile';
16 |     public const P_DATA_USER_ID_NUMBER = 'data.user.id_number';
17 |     public const P_DATA_USER_REAL_NAME = 'data.user.real_name';
18 |     public const P_DATA_ADMINISTRATOR_EMAIL = 'data.administrator.email';
19 | }
20 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Constant/SystemConstant.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Constant;
10 | 
11 | class SystemConstant
12 | {
13 | 
14 |     public const STORAGE_DISK_PUBLIC = 's3-public';
15 |     public const STORAGE_DISK_PRIVATE = 's3-private';
16 | 
17 | }
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Events/FullSearchDataRebuildEvent.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Events;
10 | 
11 | use Illuminate\Queue\SerializesModels;
12 | use Illuminate\Foundation\Events\Dispatchable;
13 | 
14 | class FullSearchDataRebuildEvent
15 | {
16 |     use Dispatchable, SerializesModels;
17 | 
18 |     public function __construct()
19 |     {
20 |     }
21 | }
22 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Events/UserDeletedEvent.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Events;
10 | 
11 | use Illuminate\Queue\SerializesModels;
12 | use Illuminate\Foundation\Events\Dispatchable;
13 | 
14 | class UserDeletedEvent
15 | {
16 |     use Dispatchable, SerializesModels;
17 | 
18 |     public $userId;
19 | 
20 |     /**
21 |      * @param $userId
22 |      */
23 |     public function __construct($userId)
24 |     {
25 |         $this->userId = $userId;
26 |     }
27 | }
28 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Events/UserNotificationReadEvent.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Events;
10 | 
11 | use Illuminate\Queue\SerializesModels;
12 | use Illuminate\Foundation\Events\Dispatchable;
13 | 
14 | class UserNotificationReadEvent
15 | {
16 |     use Dispatchable, SerializesModels;
17 | 
18 |     public $userId;
19 | 
20 |     public function __construct(int $userId)
21 |     {
22 |         $this->userId = $userId;
23 |     }
24 | }
25 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Exceptions/Backend/ValidateException.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Exceptions\Backend;
10 | 
11 | class ValidateException extends \Exception
12 | {
13 |     /**
14 |      * @return \Illuminate\Http\JsonResponse
15 |      *
16 |      * @codeCoverageIgnore
17 |      */
18 |     public function render()
19 |     {
20 |         return response()->json([
21 |             'status' => 406,
22 |             'message' => $this->message,
23 |         ]);
24 |     }
25 | }
26 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Exceptions/ServiceException.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Exceptions;
10 | 
11 | use App\Http\Controllers\Api\V2\Traits\ResponseTrait;
12 | 
13 | class ServiceException extends \Exception
14 | {
15 |     use ResponseTrait;
16 | 
17 |     public function render()
18 |     {
19 |         return $this->error($this->getMessage());
20 |     }
21 | }
22 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Http/Controllers/Backend/Api/V1/AdministratorPermissionController.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Http\Controllers\Backend\Api\V1;
10 | 
11 | use App\Models\AdministratorPermission;
12 | 
13 | class AdministratorPermissionController extends BaseController
14 | {
15 |     public function index()
16 |     {
17 |         $permissions = AdministratorPermission::query()->orderByDesc('id')->get();
18 | 
19 |         return $this->successData($permissions);
20 |     }
21 | }
22 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Http/Controllers/Backend/Api/V1/CaptchaController.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Http\Controllers\Backend\Api\V1;
10 | 
11 | use Mews\Captcha\Captcha;
12 | 
13 | class CaptchaController extends BaseController
14 | {
15 |     public function image(Captcha $captcha)
16 |     {
17 |         $data = $captcha->create('default', true);
18 | 
19 |         return $this->successData($data);
20 |     }
21 | }
22 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Http/Middleware/TrimStrings.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Http\Middleware;
10 | 
11 | use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
12 | 
13 | class TrimStrings extends Middleware
14 | {
15 |     /**
16 |      * The names of the attributes that should not be trimmed.
17 |      *
18 |      * @var array
19 |      */
20 |     protected $except = [
21 |         'password',
22 |         'password_confirmation',
23 |     ];
24 | }
25 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Meedu/Hooks/Constant/PositionConstant.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Meedu\Hooks\Constant;
10 | 
11 | class PositionConstant
12 | {
13 | 
14 |     public const VIEW_BLOCK_DATA_RENDER = 'view_block_data_render';
15 | 
16 |     public const SYSTEM_APP_CONFIG_SYNC_WHITELIST = 'system_app_config_sync_whitelist';
17 | 
18 |     public const ORDER_STORE_INFO_PARSE = 'order_store_info_parse';
19 | 
20 |     public const COMMENT_STORE_CHECK = 'comment_store_check';
21 | }
22 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Meedu/Hooks/HookRuntimeInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Meedu\Hooks;
10 | 
11 | interface HookRuntimeInterface
12 | {
13 |     public function handle(HookParams $params, \Closure $closure);
14 | }
15 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Meedu/MeEdu.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Meedu;
10 | 
11 | class MeEdu
12 | {
13 |     const VERSION = 'v4.9.25';
14 | }
15 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Meedu/ServiceV2/Models/AppConfig.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Meedu\ServiceV2\Models;
10 | 
11 | use Illuminate\Database\Eloquent\Model;
12 | 
13 | class AppConfig extends Model
14 | {
15 | 
16 |     protected $table = 'app_config';
17 | 
18 |     protected $fillable = [
19 |         'group', 'name', 'field_type', 'sort', 'default_value', 'key', 'value', 'is_private',
20 |         'option_value', 'help', 'is_show',
21 |     ];
22 | 
23 | }
24 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Meedu/ServiceV2/Models/CourseCategory.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Meedu\ServiceV2\Models;
10 | 
11 | use Illuminate\Database\Eloquent\Model;
12 | use Illuminate\Database\Eloquent\Factories\HasFactory;
13 | 
14 | class CourseCategory extends Model
15 | {
16 |     use HasFactory;
17 | 
18 |     protected $table = 'course_categories';
19 | 
20 |     protected $fillable = [
21 |         'sort', 'name', 'parent_id', 'parent_chain', 'is_show',
22 |     ];
23 | }
24 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Meedu/ServiceV2/Models/CourseChapter.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Meedu\ServiceV2\Models;
10 | 
11 | use Illuminate\Database\Eloquent\Model;
12 | use Illuminate\Database\Eloquent\Factories\HasFactory;
13 | 
14 | class CourseChapter extends Model
15 | {
16 |     use HasFactory;
17 | 
18 |     protected $table = 'course_chapter';
19 | 
20 |     protected $fillable = [
21 |         'course_id', 'title', 'sort',
22 |     ];
23 | }
24 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Meedu/Sms/SmsInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Meedu\Sms;
10 | 
11 | interface SmsInterface
12 | {
13 |     public function sendCode(string $mobile, $code, $template);
14 | }
15 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Models/MediaVideoCategory.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Models;
10 | 
11 | use Illuminate\Database\Eloquent\Model;
12 | 
13 | class MediaVideoCategory extends Model
14 | {
15 | 
16 |     protected $table = 'media_video_categories';
17 | 
18 |     protected $fillable = [
19 |         'name', 'sort', 'admin_id', 'parent_id', 'parent_chain',
20 |     ];
21 | 
22 | }
23 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Base/Interfaces/CacheServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Base\Interfaces;
10 | 
11 | interface CacheServiceInterface
12 | {
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Base/Model/AppConfig.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Base\Model;
10 | 
11 | use Illuminate\Database\Eloquent\Model;
12 | 
13 | class AppConfig extends Model
14 | {
15 |     protected $table = 'app_config';
16 | 
17 |     protected $fillable = [
18 |         'group', 'name', 'field_type', 'sort', 'default_value', 'key', 'value', 'is_private',
19 |         'option_value', 'help', 'is_show',
20 |     ];
21 | }
22 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Course/Interfaces/CourseCategoryServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Course\Interfaces;
10 | 
11 | interface CourseCategoryServiceInterface
12 | {
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Course/Interfaces/CourseServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Course\Interfaces;
10 | 
11 | interface CourseServiceInterface
12 | {
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Course/Interfaces/VideoServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Course\Interfaces;
10 | 
11 | interface VideoServiceInterface
12 | {
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Member/Interfaces/CreditServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Member\Interfaces;
10 | 
11 | interface CreditServiceInterface
12 | {
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Member/Interfaces/DeliverServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Member\Interfaces;
10 | 
11 | interface DeliverServiceInterface
12 | {
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Member/Interfaces/NotificationServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Member\Interfaces;
10 | 
11 | interface NotificationServiceInterface
12 | {
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Member/Interfaces/RoleServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Member\Interfaces;
10 | 
11 | interface RoleServiceInterface
12 | {
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Member/Interfaces/UserInviteBalanceServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Member\Interfaces;
10 | 
11 | interface UserInviteBalanceServiceInterface
12 | {
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Member/Interfaces/UserServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Member\Interfaces;
10 | 
11 | interface UserServiceInterface
12 | {
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Member/Models/UserRemark.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Member\Models;
10 | 
11 | use App\Constant\TableConstant;
12 | use Illuminate\Database\Eloquent\Model;
13 | 
14 | class UserRemark extends Model
15 | {
16 |     protected $table = TableConstant::TABLE_USER_REMARKS;
17 | 
18 |     protected $fillable = [
19 |         'remark', 'user_id',
20 |     ];
21 | }
22 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Member/Models/UserTagRelation.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Member\Models;
10 | 
11 | use App\Constant\TableConstant;
12 | use Illuminate\Database\Eloquent\Model;
13 | 
14 | class UserTagRelation extends Model
15 | {
16 |     protected $table = TableConstant::TABLE_USER_TAG;
17 | }
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Order/Interfaces/OrderServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Order\Interfaces;
10 | 
11 | interface OrderServiceInterface
12 | {
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Order/Interfaces/PromoCodeServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Order\Interfaces;
10 | 
11 | interface PromoCodeServiceInterface
12 | {
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Other/Interfaces/AnnouncementServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Other\Interfaces;
10 | 
11 | interface AnnouncementServiceInterface
12 | {
13 |     public function latest(): array;
14 | 
15 |     public function paginate($page, $size): array;
16 | 
17 |     public function findOrFail(int $id): array;
18 | 
19 |     public function viewTimesInc(int $id): void;
20 | }
21 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Other/Interfaces/LinkServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Other\Interfaces;
10 | 
11 | interface LinkServiceInterface
12 | {
13 | 
14 |     public function all(): array;
15 | 
16 | }
17 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Other/Interfaces/NavServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Other\Interfaces;
10 | 
11 | interface NavServiceInterface
12 | {
13 |     public function all($platform = ''): array;
14 | }
15 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Other/Interfaces/SliderServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Other\Interfaces;
10 | 
11 | interface SliderServiceInterface
12 | {
13 |     public function all($platform = ''): array;
14 | }
15 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Other/Interfaces/SmsServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Other\Interfaces;
10 | 
11 | interface SmsServiceInterface
12 | {
13 |     public function sendCode($mobile, $code, $scene): void;
14 | }
15 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Other/Interfaces/ViewBlockServiceInterface.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Other\Interfaces;
10 | 
11 | interface ViewBlockServiceInterface
12 | {
13 |     public function getPageBlocks(string $platform, string $page): array;
14 | }
15 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Other/Models/Link.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Other\Models;
10 | 
11 | use Illuminate\Database\Eloquent\Model;
12 | use Illuminate\Database\Eloquent\Factories\HasFactory;
13 | 
14 | class Link extends Model
15 | {
16 |     use HasFactory;
17 | 
18 |     protected $table = 'links';
19 | 
20 |     protected $fillable = ['sort', 'name', 'url'];
21 | }
22 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/app/Services/Other/Services/LinkService.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace App\Services\Other\Services;
10 | 
11 | use App\Services\Other\Models\Link;
12 | use App\Services\Other\Interfaces\LinkServiceInterface;
13 | 
14 | class LinkService implements LinkServiceInterface
15 | {
16 |     public function all(): array
17 |     {
18 |         return Link::query()->orderBy('sort')->get()->toArray();
19 |     }
20 | }
21 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/bootstrap/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/config/tencent.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | return [
10 |     'vod' => [
11 |         'app_id' => '',
12 |         'secret_id' => '',
13 |         'secret_key' => '',
14 |         'callback_key' => '',
15 |         'play_domain' => '',
16 |         'play_key' => '',
17 |     ],
18 |     'face' => [
19 |         'rule_id' => '',
20 |         'secret_id' => '',
21 |         'secret_key' => '',
22 |     ],
23 | ];
24 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/config/throttle.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | return [
10 |     'whitelist_ip' => explode(',', env('THROTTLE_WHITELIST_IP', '')),
11 | ];
12 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/database/.gitignore:
--------------------------------------------------------------------------------
1 | *.sqlite
2 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/database/seeders/CourseVideoSeeder.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace Database\Seeders;
10 | 
11 | use Illuminate\Database\Seeder;
12 | 
13 | class CourseVideoSeeder extends Seeder
14 | {
15 |     /**
16 |      * Run the database seeds.
17 |      *
18 |      * @return void
19 |      */
20 |     public function run()
21 |     {
22 |         factory(\App\Services\Course\Models\Video::class, 20)->create();
23 |     }
24 | }
25 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/database/seeders/DatabaseSeeder.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace Database\Seeders;
10 | 
11 | use Illuminate\Database\Seeder;
12 | 
13 | class DatabaseSeeder extends Seeder
14 | {
15 |     /**
16 |      * Run the database seeds.
17 |      *
18 |      * @return void
19 |      */
20 |     public function run()
21 |     {
22 |         if (is_dev()) {
23 |             $this->call(CourseVideoSeeder::class);
24 |         }
25 |     }
26 | }
27 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/database/seeders/UserSeeder.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace Database\Seeders;
10 | 
11 | use Illuminate\Database\Seeder;
12 | 
13 | class UserSeeder extends Seeder
14 | {
15 |     /**
16 |      * Run the database seeds.
17 |      *
18 |      * @return void
19 |      */
20 |     public function run()
21 |     {
22 |         factory(\App\Services\Member\Models\User::class, 100)->create();
23 |     }
24 | }
25 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/public/addons/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore


--------------------------------------------------------------------------------
/xyz.meedu.api/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.api/public/favicon.ico


--------------------------------------------------------------------------------
/xyz.meedu.api/public/images/default_avatar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.api/public/images/default_avatar.jpg


--------------------------------------------------------------------------------
/xyz.meedu.api/public/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.api/public/images/logo.png


--------------------------------------------------------------------------------
/xyz.meedu.api/public/images/player-thumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.api/public/images/player-thumb.png


--------------------------------------------------------------------------------
/xyz.meedu.api/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/public/templates/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore


--------------------------------------------------------------------------------
/xyz.meedu.api/resources/views/index/aboutus.blade.php:
--------------------------------------------------------------------------------
 1 | @if(mb_substr($content, -7,7) === '</html>')
 2 | {!! $content !!}
 3 | @else
 4 |         <!doctype html>
 5 | <html lang="en">
 6 | <head>
 7 |     <meta charset="UTF-8">
 8 |     <meta name="viewport"
 9 |           content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
10 |     <meta http-equiv="X-UA-Compatible" content="ie=edge">
11 |     <title>{{__('关于我们')}}</title>
12 | </head>
13 | <body>
14 | {!! $content !!}
15 | </body>
16 | </html>
17 | @endif
18 | 
19 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/resources/views/index/face_verify_success.blade.php:
--------------------------------------------------------------------------------
 1 | <!doctype html>
 2 | <html lang="en">
 3 | <head>
 4 |     <meta charset="UTF-8">
 5 |     <meta name="viewport"
 6 |           content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 7 |     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8 |     <title>{{__('成功')}}</title>
 9 | </head>
10 | <body>
11 | <h3>{{__('实名认证成功,请关闭当前网页')}}</h3>
12 | </body>
13 | </html>


--------------------------------------------------------------------------------
/xyz.meedu.api/resources/views/index/user_private_protocol.blade.php:
--------------------------------------------------------------------------------
 1 | <!doctype html>
 2 | <html lang="en">
 3 | <head>
 4 |     <meta charset="UTF-8">
 5 |     <meta name="viewport"
 6 |           content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 7 |     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8 |     <title>{{__('用户隐私协议')}}</title>
 9 | </head>
10 | <body>
11 | {!! $protocol !!}
12 | </body>
13 | </html>


--------------------------------------------------------------------------------
/xyz.meedu.api/resources/views/index/user_protocol.blade.php:
--------------------------------------------------------------------------------
 1 | @if(mb_substr($protocol, -7,7) === '</html>')
 2 | {!! $protocol !!}
 3 | @else
 4 |         <!doctype html>
 5 | <html lang="en">
 6 | <head>
 7 |     <meta charset="UTF-8">
 8 |     <meta name="viewport"
 9 |           content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
10 |     <meta http-equiv="X-UA-Compatible" content="ie=edge">
11 |     <title>{{__('用户协议')}}</title>
12 | </head>
13 | <body>
14 | {!! $protocol !!}
15 | </body>
16 | </html>
17 | @endif
18 | 
19 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/resources/views/index/vip_protocol.blade.php:
--------------------------------------------------------------------------------
 1 | <!doctype html>
 2 | <html lang="en">
 3 | <head>
 4 |     <meta charset="UTF-8">
 5 |     <meta name="viewport"
 6 |           content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
 7 |     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8 |     <title>{{__('会员服务协议')}}</title>
 9 | </head>
10 | <body>
11 | {!! $content !!}
12 | </body>
13 | </html>
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/routes/channels.php:
--------------------------------------------------------------------------------
1 | <?php
2 | 
3 | /*
4 |  * This file is part of the MeEdu.
5 |  *
6 |  * (c) 杭州白书科技有限公司
7 |  */
8 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/storage/app/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !public/
3 | !addons/
4 | !templates/
5 | !.gitignore
6 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/storage/app/public/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/storage/app/templates/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore


--------------------------------------------------------------------------------
/xyz.meedu.api/storage/framework/.gitignore:
--------------------------------------------------------------------------------
1 | config.php
2 | routes.php
3 | schedule-*
4 | compiled.php
5 | services.json
6 | events.scanned.php
7 | routes.scanned.php
8 | down
9 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/storage/framework/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 | !data
4 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/storage/framework/cache/data/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/storage/framework/sessions/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/storage/framework/testing/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/storage/framework/views/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/storage/logs/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/storage/private/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore


--------------------------------------------------------------------------------
/xyz.meedu.api/tests/Commands/MeEduUpgradeCommandTest.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace Tests\Commands;
10 | 
11 | use Tests\OriginalTestCase;
12 | 
13 | class MeEduUpgradeCommandTest extends OriginalTestCase
14 | {
15 |     public function test_upgrade()
16 |     {
17 |         $this->artisan('meedu:upgrade')->assertSuccessful();
18 |     }
19 | }
20 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/tests/Commands/MemberRoleExpiredHandlerCommandTest.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace Tests\Commands;
10 | 
11 | use Tests\OriginalTestCase;
12 | 
13 | class MemberRoleExpiredHandlerCommandTest extends OriginalTestCase
14 | {
15 |     public function test_run()
16 |     {
17 |         $this->artisan('member:role:expired')->assertExitCode(0);
18 |     }
19 | }
20 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/tests/Commands/UserDeleteJobRunCommandTest.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace Tests\Commands;
10 | 
11 | use Tests\OriginalTestCase;
12 | 
13 | class UserDeleteJobRunCommandTest extends OriginalTestCase
14 | {
15 |     public function test_run()
16 |     {
17 |         $this->artisan('meedu:user-delete-job')->assertSuccessful();
18 |     }
19 | }
20 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/tests/Feature/Api/V2/CaptchaImageTest.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace Tests\Feature\Api\V2;
10 | 
11 | class CaptchaImageTest extends Base
12 | {
13 |     public function test_captchaImage()
14 |     {
15 |         $this->get('/api/v2/captcha/image')
16 |             ->seeStatusCode(200);
17 |     }
18 | }
19 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/tests/Feature/Api/V2/RoleTest.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace Tests\Feature\Api\V2;
10 | 
11 | use App\Services\Member\Models\Role;
12 | 
13 | class RoleTest extends Base
14 | {
15 |     public function test_roles()
16 |     {
17 |         Role::factory()->count(4)->create();
18 |         $r = $this->getJson('api/v2/roles');
19 |         $r = $this->assertResponseSuccess($r);
20 |         $this->assertEquals(4, count($r['data']));
21 |     }
22 | }
23 | 


--------------------------------------------------------------------------------
/xyz.meedu.api/tests/Unit/Meedu/ServiceProxy/ServiceProxyTest.php:
--------------------------------------------------------------------------------
 1 | <?php
 2 | 
 3 | /*
 4 |  * This file is part of the MeEdu.
 5 |  *
 6 |  * (c) 杭州白书科技有限公司
 7 |  */
 8 | 
 9 | namespace Tests\Unit\Meedu\ServiceProxy;
10 | 
11 | use Tests\TestCase;
12 | 
13 | class ServiceProxyTest extends TestCase
14 | {
15 |     public function test()
16 |     {
17 |         $this->assertTrue(true);
18 |     }
19 | }
20 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/.env.example:
--------------------------------------------------------------------------------
1 | VITE_APP_URL=


--------------------------------------------------------------------------------
/xyz.meedu.h5/.gitignore:
--------------------------------------------------------------------------------
 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
 2 | 
 3 | # dependencies
 4 | /node_modules
 5 | /.pnp
 6 | .pnp.js
 7 | 
 8 | # testing
 9 | /coverage
10 | 
11 | # production
12 | /build
13 | 
14 | # misc
15 | .DS_Store
16 | .env.local
17 | .env.development.local
18 | .env.test.local
19 | .env.production.local
20 | .env
21 | .env.production
22 | .env.development
23 | 
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 | 
28 | yarn.lock
29 | package-lock.json
30 | 
31 | dist/


--------------------------------------------------------------------------------
/xyz.meedu.h5/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/public/favicon.ico


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/App.scss:
--------------------------------------------------------------------------------
1 | #root {
2 |   width: 100%;
3 |   margin: 0 auto;
4 |   text-align: center;
5 |   background-color: #ffffff;
6 | }
7 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/App.tsx:
--------------------------------------------------------------------------------
 1 | import { Suspense } from "react";
 2 | import { useRoutes } from "react-router-dom";
 3 | import routes from "./routes";
 4 | import "./App.scss";
 5 | import LoadingPage from "./pages/loading";
 6 | 
 7 | const App = () => {
 8 |   const Views = () => useRoutes(routes);
 9 | 
10 |   return (
11 |     <Suspense fallback={<LoadingPage />}>
12 |       <Views />
13 |     </Suspense>
14 |   );
15 | };
16 | 
17 | export default App;
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/AutoTop.ts:
--------------------------------------------------------------------------------
 1 | import React from "react";
 2 | import { useLayoutEffect } from "react";
 3 | import { useLocation } from "react-router-dom";
 4 | 
 5 | const AutoScorllTop: React.FC<{ children: any }> = ({ children }) => {
 6 |   const location = useLocation();
 7 |   useLayoutEffect(() => {
 8 |     document.documentElement.scrollTo(0, 0);
 9 |   }, [location.pathname]);
10 |   return children;
11 | };
12 | 
13 | export default AutoScorllTop;
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/api/comment.ts:
--------------------------------------------------------------------------------
 1 | import client from "./internal/httpClient";
 2 | 
 3 | export function comments(params: any) {
 4 |   return client.get("/api/v3/comments", params);
 5 | }
 6 | 
 7 | export function commentsReplies(params: any) {
 8 |   return client.get(`/api/v3/comments/replies`, params);
 9 | }
10 | 
11 | export function submitComment(params: any) {
12 |   return client.post(`/api/v3/comment/store`, params);
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/api/index.ts:
--------------------------------------------------------------------------------
 1 | export * as login from "./login";
 2 | export * as user from "./user";
 3 | export * as course from "./course";
 4 | export * as system from "./system";
 5 | export * as role from "./role";
 6 | export * as viewBlock from "./viewBlock";
 7 | export * as order from "./order";
 8 | export * as search from "./search";
 9 | export * as comment from "./comment";
10 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/api/order.ts:
--------------------------------------------------------------------------------
 1 | import client from "./internal/httpClient";
 2 | 
 3 | export function PromoCodeCheck(code: string) {
 4 |   return client.get("/api/v2/promoCode/" + code + "/check", {});
 5 | }
 6 | 
 7 | export function CreateOrder(params: any) {
 8 |   return client.post("/api/v3/order", params);
 9 | }
10 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/api/role.ts:
--------------------------------------------------------------------------------
1 | import client from "./internal/httpClient";
2 | 
3 | export function List() {
4 |   return client.get("/api/v2/roles", {});
5 | }
6 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/api/search.ts:
--------------------------------------------------------------------------------
1 | import client from "./internal/httpClient";
2 | 
3 | export function Index(params:any) {
4 |   return client.get("/api/v3/search",params);
5 | }
6 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/api/system.ts:
--------------------------------------------------------------------------------
 1 | import client from "./internal/httpClient";
 2 | 
 3 | export function config() {
 4 |   return client.get("/api/v2/other/config", {});
 5 | }
 6 | 
 7 | export function imageCaptcha() {
 8 |   return client.get("/api/v2/captcha/image", {});
 9 | }
10 | 
11 | export function sendSms(params: any) {
12 |   return client.post("/api/v2/captcha/sms", params);
13 | }
14 | 
15 | export function Jssdk(params: any) {
16 |   return client.get("/api/v3/other/wechat-mp-jssdk", params);
17 | }
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/api/viewBlock.ts:
--------------------------------------------------------------------------------
1 | import client from "./internal/httpClient";
2 | 
3 | export function PageBlocks(params: any) {
4 |   return client.get(`/api/v2/viewBlock/page/blocks`, params);
5 | }
6 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/Spinload.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/Spinload.gif


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/VIPcenter@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/VIPcenter@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/attach-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/attach-icon.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/circle.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/close.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/collect-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/collect-active.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/collect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/collect.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/default-vip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/default-vip.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/default_avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/default_avatar.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/dianbo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/dianbo@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/dianzishu@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/dianzishu@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/faceSuccess.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/faceSuccess.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-adopt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-adopt.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-answer-card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-answer-card.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-back-n.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-back-n.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-back.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-balance@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-balance@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-card.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-check-h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-check-h.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-check-n.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-check-n.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-clock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-clock.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-delete-h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-delete-h.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-delete.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-error.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-exam@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-exam@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-exchange@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-exchange@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-favorite-n.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-favorite-n.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-favorite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-favorite.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-filter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-filter.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-handin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-handin.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-history@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-history@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-home-h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-home-h@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-home-n@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-home-n@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-info@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-info@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-last.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-last.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-list@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-list@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-me-h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-me-h@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-me-n@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-me-n@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-message@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-message@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-mock@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-mock@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-money@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-money@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-next.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-point@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-point@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-practice@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-practice@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-prev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-prev.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-qq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-qq.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-search.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-setting@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-setting@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-study-h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-study-h@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-study-n@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-study-n@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-wexinpay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-wexinpay.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/icon-wrongbook@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/icon-wrongbook@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/img-placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/img-placeholder.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/kaoshi@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/kaoshi@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/lujing@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/lujing@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/miaosha@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/miaosha@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/new/VIP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/new/VIP.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/new/agree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/new/agree.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/new/back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/new/back.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/new/back@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/new/back@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/new/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/new/banner.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/new/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/new/close.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/new/message.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/new/message.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/new/order.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/new/order.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/new/setting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/new/setting.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/payali.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/payali.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/payhand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/payhand.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/paywechat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/paywechat.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/play.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/play.gif


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/practice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/practice.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/qq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/qq.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/selected.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/test.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/test.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/topright.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/topright.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/tuwen@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/tuwen@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/unselected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/unselected.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/virtual-test.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/virtual-test.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/watermark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/watermark@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/wechat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/wechat.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/wenda@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/wenda@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/work-weixin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/work-weixin.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/wrong-book.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/wrong-book.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/assets/img/zhibo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.h5/src/assets/img/zhibo@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/components/copyright/index.module.scss:
--------------------------------------------------------------------------------
 1 | .copyright {
 2 |   width: 100%;
 3 |   height: auto;
 4 |   float: left;
 5 |   margin-top: 100px;
 6 |   text-align: center;
 7 | }
 8 | 
 9 | .copyright > .item {
10 |   font-size: 10px;
11 |   color: rgba(0, 0, 0, 0.4);
12 |   line-height: 20px;
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/components/empty/index.module.scss:
--------------------------------------------------------------------------------
 1 | .empty-box {
 2 |   width: 100%;
 3 |   height: auto;
 4 |   float: left;
 5 |   text-align: center;
 6 |   padding-top: 50px;
 7 |   padding-bottom: 50px;
 8 | }
 9 | .empty-box > .image-empty-item {
10 |   display: inline-block;
11 | }
12 | .empty-box > .image-empty-item > img {
13 |   width: 120px;
14 |   height: 120px;
15 | }
16 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/components/empty/index.tsx:
--------------------------------------------------------------------------------
 1 | import React from "react";
 2 | import styles from "./index.module.scss";
 3 | import icon from "../../assets/img/img-placeholder.png";
 4 | 
 5 | export const Empty: React.FC = () => {
 6 |   return (
 7 |     <>
 8 |       <div className={styles["empty-box"]}>
 9 |         <div className={styles["image-empty-item"]}>
10 |           <img src={icon} />
11 |         </div>
12 |       </div>
13 |     </>
14 |   );
15 | };
16 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/components/footer-bar/index.module.scss:
--------------------------------------------------------------------------------
 1 | .footer {
 2 |   position: fixed;
 3 |   bottom: 0;
 4 |   left: 0;
 5 |   right: 0;
 6 |   min-height: 55px;
 7 |   box-shadow: 0px -1px 4px 0px rgba(0, 0, 0, 0.04);
 8 |   background: #ffffff;
 9 |   z-index: 100;
10 |   box-sizing: border-box;
11 |   padding-bottom: constant(safe-area-inset-bottom); /* 兼容iOS 11.0 - 11.2 */
12 |   padding-bottom: env(safe-area-inset-bottom); /* 兼容iOS 11.2+ */
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/components/private-route/index.tsx:
--------------------------------------------------------------------------------
 1 | import React from "react";
 2 | import { getToken } from "../../utils/index";
 3 | import { Navigate } from "react-router-dom";
 4 | 
 5 | interface PropInterface {
 6 |   Component: any;
 7 | }
 8 | 
 9 | const PrivateRoute: React.FC<PropInterface> = ({ Component }) => {
10 |   let url =
11 |     "/login?redirect=" +
12 |     encodeURIComponent(window.location.pathname + window.location.search);
13 | 
14 |   return getToken() ? Component : <Navigate to={url} replace />;
15 | };
16 | export default PrivateRoute;
17 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/components/tech-support/index.module.scss:
--------------------------------------------------------------------------------
 1 | .tech-support {
 2 |   width: 100%;
 3 |   height: auto;
 4 |   float: left;
 5 |   padding-top: 50px;
 6 |   padding-bottom: 50px;
 7 |   text-align: center;
 8 |   margin-bottom: 53px;
 9 | }
10 | 
11 | .inline-img {
12 |   display: inline-block;
13 |   img {
14 |     width: 115px;
15 |     height: 42px;
16 |   }
17 | }
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/components/tech-support/index.tsx:
--------------------------------------------------------------------------------
 1 | import React from "react";
 2 | import styles from "./index.module.scss";
 3 | import icon from "../../assets/img/watermark@2x.png"
 4 | 
 5 | export const TechSupport: React.FC = () => {
 6 |   return (
 7 |     <div className={styles["tech-support"]}>
 8 |       <div className={styles["inline-img"]}>
 9 |         <img src={icon} />
10 |       </div>
11 |     </div>
12 |   );
13 | };
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/components/thumb-bar/index.module.scss:
--------------------------------------------------------------------------------
1 | .content-box {
2 |   display: block;
3 |   width: 100%;
4 |   height: auto;
5 | }
6 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/index.tsx:
--------------------------------------------------------------------------------
 1 | import ReactDOM from "react-dom/client";
 2 | import { Provider } from "react-redux";
 3 | import store from "./store";
 4 | import { BrowserRouter } from "react-router-dom";
 5 | import "./index.scss";
 6 | import App from "./App";
 7 | import AutoScorllTop from "./AutoTop";
 8 | 
 9 | ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
10 |   <Provider store={store}>
11 |     <BrowserRouter>
12 |       <AutoScorllTop>
13 |         <App />
14 |       </AutoScorllTop>
15 |     </BrowserRouter>
16 |   </Provider>
17 | );
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/js/config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 |   app_url: import.meta.env.VITE_APP_URL || "",
3 | };
4 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/main.tsx:
--------------------------------------------------------------------------------
 1 | import ReactDOM from "react-dom/client";
 2 | import { Provider } from "react-redux";
 3 | import store from "./store";
 4 | import { BrowserRouter } from "react-router-dom";
 5 | import "./main.scss";
 6 | import App from "./App";
 7 | import AutoScorllTop from "./AutoTop";
 8 | 
 9 | ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
10 |   <Provider store={store}>
11 |     <BrowserRouter>
12 |       <AutoScorllTop>
13 |         <App />
14 |       </AutoScorllTop>
15 |     </BrowserRouter>
16 |   </Provider>
17 | );
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/pages/course/index.module.scss:
--------------------------------------------------------------------------------
 1 | .gray {
 2 |   float: left;
 3 |   width: 100%;
 4 |   height: 10px;
 5 |   background: #f3f6f9;
 6 | }
 7 | 
 8 | .drop {
 9 |   display: inline-block;
10 |   width: 100%;
11 |   text-align: center;
12 |   color: #cccccc;
13 |   font-size: 14px;
14 |   margin-top: 30px;
15 |   margin-bottom: 30px;
16 | }
17 | 
18 | .vod-course-item {
19 |   width: 100%;
20 |   height: auto;
21 |   float: left;
22 |   box-sizing: border-box;
23 |   padding: 15px;
24 | }
25 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/pages/index.ts:
--------------------------------------------------------------------------------
1 | export * from './login';


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/pages/index/compenents/blank/index.module.scss:
--------------------------------------------------------------------------------
1 | .blank-box {
2 |   width: 100%;
3 |   height: auto;
4 |   float: left;
5 |   background: #ffffff;
6 |   display: flex;
7 | }
8 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/pages/index/compenents/blank/index.tsx:
--------------------------------------------------------------------------------
 1 | import styles from "./index.module.scss";
 2 | import React from "react";
 3 | 
 4 | interface PropInterface {
 5 |   height: number;
 6 |   bgColor: string;
 7 | }
 8 | 
 9 | export const IndexBlank: React.FC<PropInterface> = ({ height, bgColor }) => {
10 |   return (
11 |     <div
12 |       className={styles["blank-box"]}
13 |       style={{ height: height + "px", backgroundColor: bgColor }}
14 |     ></div>
15 |   );
16 | };
17 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/pages/index/compenents/index-slider/index.module.scss:
--------------------------------------------------------------------------------
 1 | .slider-box {
 2 |   width: 100%;
 3 |   margin-top: 0px;
 4 |   box-sizing: border-box;
 5 |   padding: 10px 15px;
 6 |   height: 135px;
 7 |   overflow: hidden;
 8 |   background: #ffffff;
 9 | }
10 | 
11 | .swiper-slide {
12 |   width: 100%;
13 |   height: 115px;
14 |   border-radius: 8px;
15 |   overflow: hidden;
16 | }
17 | 
18 | .swiper-slide > img {
19 |   width: 100%;
20 |   height: 115px;
21 | }
22 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/pages/layouts/with-footer/index.tsx:
--------------------------------------------------------------------------------
 1 | import { Suspense } from "react";
 2 | import { Outlet } from "react-router-dom";
 3 | import LoadingPage from "../../loading";
 4 | import { TabBarFooter } from "../../../components/footer-bar";
 5 | 
 6 | const WithoutHeaderWithoutFooter = () => {
 7 |   return (
 8 |     <>
 9 |       <Suspense fallback={<LoadingPage />}>
10 |         <Outlet />
11 |       </Suspense>
12 |       <TabBarFooter></TabBarFooter>
13 |     </>
14 |   );
15 | };
16 | 
17 | export default WithoutHeaderWithoutFooter;
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/pages/layouts/without-footer/index.tsx:
--------------------------------------------------------------------------------
 1 | import { Suspense } from "react";
 2 | import { Outlet } from "react-router-dom";
 3 | import LoadingPage from "../../loading";
 4 | 
 5 | const WithoutHeaderWithoutFooter = () => {
 6 |   return (
 7 |     <Suspense fallback={<LoadingPage />}>
 8 |       <Outlet />
 9 |     </Suspense>
10 |   );
11 | };
12 | 
13 | export default WithoutHeaderWithoutFooter;
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/pages/loading/index.tsx:
--------------------------------------------------------------------------------
 1 | import { SpinLoading } from "antd-mobile";
 2 | 
 3 | const LoadingPage = () => {
 4 |   return (
 5 |     <div
 6 |       style={{
 7 |         width: "100vw",
 8 |         height: "100vh",
 9 |         display: "flex",
10 |         justifyContent: "center",
11 |         alignItems: "center",
12 |       }}
13 |     >
14 |       <SpinLoading color="primary" />
15 |     </div>
16 |   );
17 | };
18 | 
19 | export default LoadingPage;
20 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/store/index.ts:
--------------------------------------------------------------------------------
 1 | import { configureStore } from "@reduxjs/toolkit";
 2 | import systemConfigReducer from "./system/systemConfigSlice";
 3 | import loginUserReducer from "./user/loginUserSlice";
 4 | 
 5 | const store = configureStore({
 6 |   reducer: {
 7 |     loginUser: loginUserReducer,
 8 |     systemConfig: systemConfigReducer,
 9 |   },
10 | });
11 | 
12 | export type RootState = ReturnType<typeof store.getState>;
13 | export type AppDispatch = typeof store.dispatch;
14 | 
15 | export default store;
16 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | /// <reference types="vite/client" />
2 | 


--------------------------------------------------------------------------------
/xyz.meedu.h5/tsconfig.node.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "compilerOptions": {
 3 |     "composite": true,
 4 |     "module": "ESNext",
 5 |     "moduleResolution": "Node",
 6 |     "allowSyntheticDefaultImports": true
 7 |   },
 8 |   "include": ["vite.config.ts"]
 9 | }
10 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/.env.example:
--------------------------------------------------------------------------------
1 | VITE_APP_URL=


--------------------------------------------------------------------------------
/xyz.meedu.pc/.gitignore:
--------------------------------------------------------------------------------
 1 | # Logs
 2 | logs
 3 | *.log
 4 | npm-debug.log*
 5 | yarn-debug.log*
 6 | yarn-error.log*
 7 | pnpm-debug.log*
 8 | lerna-debug.log*
 9 | 
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 | 
15 | # Editor directories and files
16 | .vscode/*
17 | !.vscode/extensions.json
18 | .idea
19 | .DS_Store
20 | *.suo
21 | *.ntvs*
22 | *.njsproj
23 | *.sln
24 | *.sw?
25 | 
26 | package-lock.json
27 | yarn.lock
28 | 
29 | .env.production
30 | .env.development
31 | .env
32 | 
33 | deploy-test.sh
34 | deploy-demo.sh
35 | docker-light-build.sh


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/favicon.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_AMS-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_AMS-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_AMS-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_AMS-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_AMS-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_AMS-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Caligraphic-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Caligraphic-Bold.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Caligraphic-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Caligraphic-Bold.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Caligraphic-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Caligraphic-Bold.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Caligraphic-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Caligraphic-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Caligraphic-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Caligraphic-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Caligraphic-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Caligraphic-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Fraktur-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Fraktur-Bold.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Fraktur-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Fraktur-Bold.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Fraktur-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Fraktur-Bold.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Fraktur-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Fraktur-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Fraktur-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Fraktur-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Fraktur-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Fraktur-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Bold.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Bold.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Bold.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-BoldItalic.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-BoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-BoldItalic.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-BoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-BoldItalic.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Italic.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Italic.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Italic.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Main-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Math-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Math-BoldItalic.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Math-BoldItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Math-BoldItalic.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Math-BoldItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Math-BoldItalic.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Math-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Math-Italic.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Math-Italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Math-Italic.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Math-Italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Math-Italic.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Bold.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Bold.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Bold.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Italic.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Italic.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Italic.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_SansSerif-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Script-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Script-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Script-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Script-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Script-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Script-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size1-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size1-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size1-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size1-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size1-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size1-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size2-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size2-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size2-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size2-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size2-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size2-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size3-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size3-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size3-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size3-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size3-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size3-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size4-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size4-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size4-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size4-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size4-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Size4-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Typewriter-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Typewriter-Regular.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Typewriter-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Typewriter-Regular.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Typewriter-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/public/js/katex/fonts/KaTeX_Typewriter-Regular.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/App.scss:
--------------------------------------------------------------------------------
1 | #root {
2 |   width: 100%;
3 |   min-height: 600px;
4 |   margin: 0 auto;
5 |   text-align: center;
6 |   background-color: #f4fafe;
7 | }
8 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/App.tsx:
--------------------------------------------------------------------------------
 1 | import { useRoutes } from "react-router-dom";
 2 | import routes from "./routes";
 3 | import "./App.scss";
 4 | import { Suspense } from "react";
 5 | import LoadingPage from "./pages/loading";
 6 | 
 7 | function App() {
 8 |   const Views = () => useRoutes(routes);
 9 | 
10 |   return (
11 |     <Suspense fallback={<LoadingPage />}>
12 |       <Views />
13 |     </Suspense>
14 |   );
15 | }
16 | 
17 | export default App;
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/AutoTop.ts:
--------------------------------------------------------------------------------
 1 | import React from "react";
 2 | import { useLayoutEffect } from "react";
 3 | import { useLocation } from "react-router-dom";
 4 | 
 5 | const AutoScorllTop: React.FC<{ children: any }> = ({ children }) => {
 6 |   const location = useLocation();
 7 |   useLayoutEffect(() => {
 8 |     document.documentElement.scrollTo(0, 0);
 9 |   }, [location.pathname]);
10 |   return children;
11 | };
12 | 
13 | export default AutoScorllTop;
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/api/comment.ts:
--------------------------------------------------------------------------------
 1 | import client from "./internal/httpClient";
 2 | 
 3 | export function comments(params: any) {
 4 |   return client.get("/api/v3/comments", params);
 5 | }
 6 | 
 7 | export function commentsReplies(params: any) {
 8 |   return client.get(`/api/v3/comments/replies`, params);
 9 | }
10 | 
11 | export function submitComment(params: any) {
12 |   return client.post(`/api/v3/comment/store`, params);
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/api/home.ts:
--------------------------------------------------------------------------------
 1 | import client from "./internal/httpClient";
 2 | 
 3 | export function announcement() {
 4 |   return client.get(`/api/v2/announcement/latest`, {});
 5 | }
 6 | export function announcementList() {
 7 |   return client.get(`/api/v2/announcements`, {});
 8 | }
 9 | export function announcementDetail(id: number) {
10 |   return client.get(`/api/v2/announcement/${id}`, {});
11 | }
12 | export function headerNav() {
13 |   return client.get(`/api/v2/navs`, {});
14 | }
15 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/api/index.ts:
--------------------------------------------------------------------------------
 1 | export * as login from "./login";
 2 | export * as user from "./user";
 3 | export * as course from "./course";
 4 | export * as system from "./system";
 5 | export * as home from "./home";
 6 | export * as role from "./role";
 7 | export * as order from "./order";
 8 | export * as search from "./search";
 9 | export * as viewBlock from "./viewBlock";
10 | export * as study from "./study";
11 | export * as comment from "./comment";
12 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/api/order.ts:
--------------------------------------------------------------------------------
 1 | import client from "./internal/httpClient";
 2 | 
 3 | export function promoCodeCheck(code: string) {
 4 |   return client.get("/api/v2/promoCode/" + code + "/check", {});
 5 | }
 6 | 
 7 | export function checkOrderStatus(params: any) {
 8 |   return client.get(`/api/v2/order/status`, params);
 9 | }
10 | 
11 | export function createOrder(params: any) {
12 |   return client.post("/api/v3/order", params);
13 | }
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/api/role.ts:
--------------------------------------------------------------------------------
1 | import client from "./internal/httpClient";
2 | 
3 | export function list() {
4 |   return client.get("/api/v2/roles", {});
5 | }
6 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/api/search.ts:
--------------------------------------------------------------------------------
1 | import client from "./internal/httpClient";
2 | 
3 | export function list(params: any) {
4 |   return client.get("/api/v3/search", params);
5 | }
6 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/api/study.ts:
--------------------------------------------------------------------------------
1 | import client from "./internal/httpClient";
2 | 
3 | export function courses(params: any) {
4 |   return client.get("/api/v3/member/courses/learned", params);
5 | }
6 | 
7 | export function coursesDetail(courseId: number, params: any) {
8 |   return client.get(`/api/v3/member/learned/course/${courseId}`, params);
9 | }


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/api/system.ts:
--------------------------------------------------------------------------------
 1 | import client from "./internal/httpClient";
 2 | 
 3 | export function config() {
 4 |   return client.get("/api/v2/other/config", {});
 5 | }
 6 | 
 7 | export function sendSms(params: any) {
 8 |   return client.post("/api/v2/captcha/sms", params);
 9 | }
10 | 
11 | export function imageCaptcha() {
12 |   return client.get("/api/v2/captcha/image", {});
13 | }
14 | 
15 | export function footerLink() {
16 |   return client.get(`/api/v2/links`, {});
17 | }


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/api/viewBlock.ts:
--------------------------------------------------------------------------------
 1 | import client from "./internal/httpClient";
 2 | 
 3 | export function pageBlocks(params: any) {
 4 |   return client.get("/api/v2/viewBlock/page/blocks", params);
 5 | }
 6 | 
 7 | export function sliders(params: any) {
 8 |   return client.get("/api/v2/sliders", params);
 9 | }
10 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/iconfont/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/iconfont/iconfont.ttf


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/iconfont/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/iconfont/iconfont.woff


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/iconfont/iconfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/iconfont/iconfont.woff2


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/back@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/back@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/VIP-top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/VIP-top.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/banner2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/banner2.jpg


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/bg-VIP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/bg-VIP.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/bg-zhibo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/bg-zhibo.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/collect-paper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/collect-paper.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/default-article.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/default-article.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/default-avatar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/default-avatar.jpg


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/default-banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/default-banner.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/default-ebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/default-ebook.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/default-lesson.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/default-lesson.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/default-live.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/default-live.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/default-paper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/default-paper.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/default-steps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/default-steps.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/default-video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/default-video.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/default-vip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/default-vip.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/empty-data.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/empty-data.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/faceSuccess.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/faceSuccess.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/footlink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/footlink.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-VIP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-VIP.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-adopt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-adopt.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-back-h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-back-h.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-back.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-backtop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-backtop.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-camera-h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-camera-h@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-camera-n@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-camera-n@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-camera.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-camera.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-card.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-close.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-collect-h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-collect-h.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-collect-n.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-collect-n.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-crad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-crad.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-delete.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-forward-h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-forward-h.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-forward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-forward.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-guidepost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-guidepost.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-learning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-learning.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-like-h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-like-h.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-like.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-like.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-lock.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-market.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-market.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-market@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-market@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-member.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-member.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-message.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-message.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-mobile.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-play.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-qq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-qq.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-question.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-question.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-search.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-sign-n.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-sign-n.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-top.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-unlock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-unlock.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-video@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-video@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-vote-h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-vote-h.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-vote-n.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-vote-n.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-wechat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-wechat.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-weibo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-weibo.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-weixin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-weixin.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-wepay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-wepay.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-wexinpay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-wexinpay.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-zfb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-zfb.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/icon-zfb@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/icon-zfb@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/img-placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/img-placeholder.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/img-wrong.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/img-wrong.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/login-banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/login-banner.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/logo@2x.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/no-facecheck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/no-facecheck.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/practice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/practice.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/share-wechat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/share-wechat.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/storehouse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/storehouse.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/test.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/test.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/tips-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/tips-400.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/tips-500.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/tips-500.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/upload.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/virtual-test.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/virtual-test.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/commen/wrong-book.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/commen/wrong-book.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/icon-back-n.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/icon-back-n.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/icon-back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/icon-back.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/icon-delete-h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/icon-delete-h.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/icon-delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/icon-delete.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/icon-handin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/icon-handin.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/member/mock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/member/mock.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/member/practice-collects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/member/practice-collects.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/member/practice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/member/practice.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/member/test.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/member/test.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/study/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/study/banner.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/assets/img/study/icon-mystudy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/assets/img/study/icon-mystudy.png


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/components/back-top/index.tsx:
--------------------------------------------------------------------------------
 1 | import React from "react";
 2 | import styles from "./index.module.scss";
 3 | import icon from "../../assets/img/commen/icon-top.png";
 4 | 
 5 | export const BackTop: React.FC = () => {
 6 |   return (
 7 |     <div className={styles["backTop"]} onClick={() => window.scrollTo(0, 0)}>
 8 |       <img src={icon} />
 9 |       <span>顶部</span>
10 |     </div>
11 |   );
12 | };
13 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/components/empty/index.module.scss:
--------------------------------------------------------------------------------
1 | .img-box {
2 |   width: 100%;
3 |   height: auto;
4 |   text-align: center;
5 |   padding-top: 150px;
6 |   padding-bottom: 150px;
7 | }
8 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/components/empty/index.tsx:
--------------------------------------------------------------------------------
 1 | import styles from "./index.module.scss";
 2 | import React from "react";
 3 | import { Image } from "antd";
 4 | import empty from "../../assets/img/commen/img-placeholder.png";
 5 | 
 6 | export const Empty: React.FC = () => {
 7 |   return (
 8 |     <div className={styles["img-box"]}>
 9 |       <Image src={empty} width={200} height={200} preview={false} />
10 |     </div>
11 |   );
12 | };
13 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/components/image-preview/index.module.scss:
--------------------------------------------------------------------------------
 1 | .image-preview-shadow-box {
 2 |   position: fixed;
 3 |   top: 0;
 4 |   left: 0;
 5 |   right: 0;
 6 |   bottom: 0;
 7 |   z-index: 99999;
 8 |   background-color: rgba(0, 0, 0, 0.8);
 9 |   text-align: center;
10 |   overflow-y: auto;
11 |   box-sizing: border-box;
12 |   padding-top: 10px;
13 |   padding-bottom: 10px;
14 | }
15 | .img {
16 |   max-width: 100%;
17 | }
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/components/image-preview/index.tsx:
--------------------------------------------------------------------------------
 1 | import React from "react";
 2 | import styles from "./index.module.scss";
 3 | 
 4 | interface PropInterface {
 5 |   url: string;
 6 |   close: () => void;
 7 | }
 8 | 
 9 | export const ImagePreview: React.FC<PropInterface> = ({ url, close }) => {
10 |   return (
11 |     <div className={styles["image-preview-shadow-box"]} onClick={() => close()}>
12 |       <img className={styles["img"]} src={url} />
13 |     </div>
14 |   );
15 | };
16 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/components/page-box/index.module.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Qsnh/meedu/fe5c912ff32323ff8647b159b97944c9ef5053e2/xyz.meedu.pc/src/components/page-box/index.module.scss


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/components/thumb-bar/index.module.scss:
--------------------------------------------------------------------------------
1 | .content-box {
2 |   display: block;
3 |   width: 100%;
4 |   height: auto;
5 | }
6 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/js/config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 |   app_url: import.meta.env.VITE_APP_URL || "",
3 |   disable_vip: (import.meta.env.VITE_DISABLE_VIP || "") === "disable",
4 | };
5 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/pages/auth/faceCheck.module.scss:
--------------------------------------------------------------------------------
 1 | .box {
 2 |   width: 1200px;
 3 |   margin: 0 auto;
 4 |   margin-top: 150px;
 5 |   display: flex;
 6 |   flex-direction: column;
 7 |   align-items: center;
 8 | }
 9 | 
10 | .tip {
11 |   width: 100%;
12 |   text-align: center;
13 |   font-size: 16px;
14 |   font-weight: 600;
15 |   color: #333333;
16 |   line-height: 30px;
17 |   margin-top: 15px;
18 | }
19 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/pages/auth/loading.tsx:
--------------------------------------------------------------------------------
 1 | import { Spin } from "antd";
 2 | 
 3 | const AuthLoadingPage = () => {
 4 |   document.title = "加载中";
 5 | 
 6 |   return (
 7 |     <div
 8 |       style={{
 9 |         width: "100%",
10 |         minHeight: 600,
11 |         textAlign: "center",
12 |         boxSizing: "border-box",
13 |         paddingTop: 150,
14 |       }}
15 |     >
16 |       <Spin />
17 |     </div>
18 |   );
19 | };
20 | 
21 | export default AuthLoadingPage;
22 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/pages/index/index.module.scss:
--------------------------------------------------------------------------------
 1 | .announcement {
 2 |   width: 100%;
 3 |   background-color: #fff9d7;
 4 |   color: #de7a0b;
 5 |   box-sizing: border-box;
 6 |   border-radius: 0px 0px 16px 16px;
 7 |   padding-left: 1.5rem;
 8 |   padding-right: 1.5rem;
 9 |   padding-top: 0.75rem;
10 |   padding-bottom: 0.75rem;
11 |   display: block;
12 |   text-align: left;
13 | }
14 | 
15 | .box {
16 |   width: 100%;
17 |   box-sizing: border-box;
18 |   padding-top: 40px;
19 | }
20 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/pages/layouts/with-header-without-footer/index.tsx:
--------------------------------------------------------------------------------
 1 | import { Outlet } from "react-router-dom";
 2 | import { Header } from "../../../components";
 3 | import { Suspense } from "react";
 4 | import LoadingPage from "../../loading";
 5 | 
 6 | const WithHeaderWithoutFooter = () => {
 7 |   return (
 8 |     <>
 9 |       <Header></Header>
10 |       <Suspense fallback={<LoadingPage height="100vh" />}>
11 |         <Outlet />
12 |       </Suspense>
13 |     </>
14 |   );
15 | };
16 | 
17 | export default WithHeaderWithoutFooter;
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/pages/layouts/without-header-with-footer/index.tsx:
--------------------------------------------------------------------------------
 1 | import { Outlet } from "react-router-dom";
 2 | import { Footer } from "../../../components";
 3 | import { Suspense } from "react";
 4 | import LoadingPage from "../../loading";
 5 | 
 6 | const WithoutHeaderWithFooter = () => {
 7 |   return (
 8 |     <>
 9 |       <Suspense fallback={<LoadingPage height="100vh" />}>
10 |         <Outlet />
11 |       </Suspense>
12 |       <Footer status={true}></Footer>
13 |     </>
14 |   );
15 | };
16 | 
17 | export default WithoutHeaderWithFooter;
18 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/pages/layouts/without-header-without-footer/index.tsx:
--------------------------------------------------------------------------------
 1 | import { Suspense } from "react";
 2 | import { Outlet } from "react-router-dom";
 3 | import LoadingPage from "../../loading";
 4 | 
 5 | const WithoutHeaderWithoutFooter = () => {
 6 |   return (
 7 |     <Suspense fallback={<LoadingPage height="100vh" />}>
 8 |       <Outlet />
 9 |     </Suspense>
10 |   );
11 | };
12 | 
13 | export default WithoutHeaderWithoutFooter;
14 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/pages/loading/index.module.scss:
--------------------------------------------------------------------------------
1 | .loading-box {
2 |   width: 100vw;
3 |   line-height: 100vh;
4 |   text-align: center;
5 |   background-color: #f4fafe;
6 | }
7 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/pages/loading/index.tsx:
--------------------------------------------------------------------------------
 1 | import { Spin } from "antd";
 2 | import styles from "./index.module.scss";
 3 | 
 4 | interface PropsInterface {
 5 |   height?: string;
 6 | }
 7 | 
 8 | const LoadingPage = (props: PropsInterface) => {
 9 |   return (
10 |     <>
11 |       <div
12 |         className={styles["loading-box"]}
13 |         style={{ height: props.height || "100vh" }}
14 |       >
15 |         <Spin size="large" />
16 |       </div>
17 |     </>
18 |   );
19 | };
20 | 
21 | export default LoadingPage;
22 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/pages/login/index.module.scss:
--------------------------------------------------------------------------------
 1 | .content {
 2 |   width: 1200px;
 3 |   height: auto;
 4 |   margin: 0 auto;
 5 |   margin-top: 216px;
 6 |   position: relative;
 7 |   display: flex;
 8 |   flex-direction: column;
 9 |   align-items: center;
10 |   margin-bottom: 338px;
11 | }
12 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/pages/vod/index.module.scss:
--------------------------------------------------------------------------------
 1 | .list-box {
 2 |   width: 100%;
 3 |   float: left;
 4 |   height: auto;
 5 |   display: grid;
 6 |   row-gap: 30px;
 7 |   column-gap: 48px;
 8 |   grid-template-columns: repeat(4, minmax(0, 1fr));
 9 | }
10 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | /// <reference types="vite/client" />
2 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/tsconfig.node.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "compilerOptions": {
 3 |     "composite": true,
 4 |     "module": "ESNext",
 5 |     "moduleResolution": "Node",
 6 |     "allowSyntheticDefaultImports": true
 7 |   },
 8 |   "include": ["vite.config.ts"]
 9 | }
10 | 


--------------------------------------------------------------------------------
/xyz.meedu.pc/vite.config.ts:
--------------------------------------------------------------------------------
 1 | import { defineConfig } from "vite";
 2 | import react from "@vitejs/plugin-react-swc";
 3 | import gzipPlugin from "rollup-plugin-gzip";
 4 | import path from "path";
 5 | 
 6 | // https://vitejs.dev/config/
 7 | export default defineConfig({
 8 |   server: {
 9 |     host: '0.0.0.0',
10 |     port: 8100,
11 |   },
12 |   plugins: [react()],
13 |   build: {
14 |     rollupOptions: {
15 |       plugins: [gzipPlugin()],
16 |     },
17 |   },
18 |   resolve: {
19 |     alias: {
20 |       "@": path.resolve("./src"),
21 |     },
22 |   },
23 | });
24 | 


--------------------------------------------------------------------------------