Проект был выбран для участия в конкурсе "Huawei Cloud DevCloud Разработчик Конкурс - Хэнань", базовой потребностью которого является разработка приложения онлайн-образования. Основные требования к функциям back-end следуют ниже: <рисунок src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/150d8857e6f444999b420fd8b9ca0ad2~tplv-k3u1fbpfcp-watermark.image" alt="">
Финальное название проекта — "Платформа онлайн-обучения UCloudTeach". Этот репозиторий представляет собой версию монолитной архитектуры проекта, где основные функции уже реализованы. Он может использоваться для выпускных работ, демонстрационных примеров и т.д.
Преимуществом данной архитектуры является небольшая сложность её создания, недостатком — нечёткость границ сервисов и высокие затраты на обслуживание.
Комплексному проекту естественно необходим фронтенд для отображения данных. Фронтенд проекта разделён на две части: административную и студента:
① Административная часть создана с помощью Vue3 + Ant-Design-Vue
, репозиторий находится здесь: UCloudTeach-Admin;
② Часть для студентов создана с помощью Vue3 + Vant3
, репозиторий доступен здесь: UCloudTeach-Student.
Документация API back-end была создана с помощью docway, подробнее можно узнать здесь: http://xiaoyaoji.cn/project/1sxS6c06Njl/1sxSAL1b4LI### Базовая архитектура <рисунок src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5c7d4eb4d9fd4ad0a791715b1d63e418~tplv-k3u1fbpfcp-watermark.image" alt="">
① Для хранения данных используется MySQL, интегрирован MyBatis для выполнения операций чтения и записи данных, а также используются плагины генерации кода для создания классов моделей и мапперов;
② Интегрирован плагин PageHelper для пагинации запросов, что позволяет эффективно избежать полной загрузки данных через API и излишней нагрузки на базу данных;
③ Интегрирован Redis для кэширования данных, что повышает производительность чтения данных с большим количеством запросов и часто используемых данных, а также обеспечивает распределённую сессию;
④ Интегрирован Huawei Cloud OBS для хранения изображений и других файлов.
Замечание: В проекте Redis и MySQL требуют настройки вручную.
① Используется алгоритм Snowflake для генерации уникальных последовательных ID в распределённой системе, что удобно для создания индексов в базе данных;
② Интегрирован FastJSON для сериализации и десериализации данных;
③ Интегрирован Validation для проверки данных на стороне сервера;
④ Интегрирован SLF4J для сбора логов, а также для присвоения каждому сообщению уникального номера, что помогает в обслуживании и диагностике ошибок.#### 3) Проверка прав доступа ① Используется легковесный открытый фреймворк Sa-Token для проверки прав доступа, что делает конфигурацию проще по сравнению с Shiro и Spring Security.② Информация о токене использует локальный 64-битный случайный строковый ключ;
③ Реализация распределенного хранения информации о токенах с использованием Redis;
④ Использование фреймворка для управления правами доступа ролей, проверка прав доступа для различных пользовательских интерфейсов;
⑤ Интеграция API отправки SMS для реализации функции отправки сообщений, интеграция услуги защиты от DDoS Tencent для валидации слайдинговых CAPTCHA на клиентской и серверной стороне [см. конфигурацию на официальном сайте];
① Интеграция платежной системы Alipay Sandbox для покупки курсов, после того как пользователь отправляет запрос на покупку, он переходит на страницу платежа Alipay;
② Получение состояния платежа пользователя через асинхронное уведомление от Alipay на сервере, успешный платеж записывается в таблицу данных;
Примечание: см. конфигурацию окружения Alipay Sandbox
git clone https://gitee.com/h0ss/ucloud-teach-monolithic.git
mvn clean install
mvn spring-boot:run
### Будущие планы проектаВы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )