Авторский проект бакалаврской работы ожидает вашей спонсорской поддержки.
Видео рекламного характера для серии XMall-проектов:
https://www.bilibili.com/video/av23121122/
Автор лично создал это видео, перейдите по ссылке, чтобы посмотреть его.
Проект уже развёрнут, доступны демонстрационные версии:
Получить однопользовательскую версию:
XMall — это нераспределённая система, которая может работать на сервере с 1G памяти и 1 ядром процессора. Чтобы получить её, перейдите в магазин (http://xmall.exrick.cn/), зарегистрируйтесь, произведите тестовую покупку и заполните форму для получения пожертвования. После успешной оплаты вы получите ссылку на скачивание по электронной почте.
Фронт-энд на Vue является отдельным проектом, см.:
https://github.com/Exrick/xmall-front
Другие проекты автора:
-
XPay — система приёма платежей без необходимости установки приложения, с автоматическим обратным звонком.
-
XMall WeChat Mini Program — открытый исходный код для фронт-энда мини-программы WeChat.
-
Платформа разработки X-Boot с разделением фронтенда и бэкенда.
- Заметки о машинном обучении:
- Spring Cloud версия:
-
X-Cloud — разработка платформы в процессе.
Распределённый интернет-магазин на основе SOA:
- Бэкенд-система управления: управление товарами, заказами, категориями, атрибутами товаров, пользователями, разрешениями, статистикой системы, журналами системы и контентом фронт-энда.
- Фронт-энд: пользователи могут регистрироваться, входить в систему, просматривать товары, размещать заказы и выполнять другие операции.
- Система членства: пользователи могут просматривать свои заказы, управлять ими, получать информацию о своих купонах и т. д.
- Система заказов: предоставляет функции размещения, просмотра, изменения статуса и обработки заказов по расписанию.
- Поисковая система: обеспечивает поиск товаров.
- Одноточечная система входа: обеспечивает единый вход для нескольких систем и предоставляет информацию о вошедших пользователях.
Журнал обновлений версии 1.1 (требуется обновить код бэкенда и SQL):
- Интеграция с собственной системой XPay для приёма платежей.
- Обновление зависимостей Dubbo (2.6.1), ES (6.2.3) и других.
- Отмена необходимости настройки ES в интерфейсе и решения проблемы с междоменным доступом; изменение имени кластера по умолчанию на исходное «elasticsearch».
- Исправление ошибки в SQL для статистики самых продаваемых товаров во фронт-энде xmall-front-web и настройка SpringMVC для поддержки загрузки файлов.
- Оптимизация типов полей и комментариев в SQL, а также улучшение поиска и фильтрации товаров.
- Улучшение интерфейса администратора, включая добавление трёхмерной карусели изображений.
- Добавление функций управления кешем в административную панель, включая настройку и управление доставкой.
- Редизайн главной страницы с возможностью настройки через бэкенд, включая 3D карусель изображений.
- Расширение функций бэкенда, включая управление кешем и настройку доставки.
- Создание отчётов о заказах.
- Устранение проблем с сеансами проверки подлинности между фронтендом и бэкендом.
- Реализация расширения словаря для плагина IK токенизации ES и добавление ограничения скорости запросов.
- Удаление быстрого поиска, который теперь настраивается во фронтенде (2018.7.22); изменение порта отправки электронной почты на 465.
- Настройка навигации в админке через бэкенд (2018.7.27).
- Исправление ошибок в управлении категориями и открытие исходного кода мини-приложения (2019.10.06).
- Примечание: дизайн SKU планируется реализовать в мини-приложении.
- Ссылка на документацию по удалению проверки подлинности JSR (https://github.com/Exrick/xmall/wiki/%E6%9E%81%E9%AA%8C%E7%A7%BB%E9%99%A4%E6%96%87%E6%A1%A3).
Иллюстрации:
- Интерфейс бэкенда:
- Архитектура и функциональные модули:
Технологии, используемые во фронтэнде:
- Бэкэнд-страницы:
- Автор благодарит H-ui и FlatLab за поддержку статических страниц.
- Ztree (jQuery плагин для деревьев), DataTables (плагин jQuery для таблиц), Layer (веб-компонент для слоёв), Distpicker (китайский плагин для трёхуровневой связи адресов провинций, городов и районов), KindEditor (простой и удобный текстовый редактор без множества проблем UEditor), WebUploader (плагин для загрузки файлов от Baidu), HighCharts (библиотека графиков) и Не-чесском (очень простой веб-счётчик).
- Фронтенд-страницы:
- Подробные сведения см. в xmall-front.
- Автор выражает благодарность проекту vue-mall от yucccc за предоставление фронта и фреймворка.
- Vue2 + Vuex + Vue Router + Element UI + ES6 + webpack + axios + Node.js.
Технологии, используемые в бэкэнде:
Различные зависимости фреймворков перечислены в файле pom.xml проекта xmall-parent. Дуббо
ЗооКекер
MySQL
Mycat: промежуточное ПО для разделения баз данных и таблиц
Redis: кэш
Elasticsearch: распределённая поисковая система на основе Lucene
ActiveMQ: очередь сообщений
Druid: пул соединений с высокопроизводительной базой данных Али
Shiro: фреймворк безопасности
Swagger2: генерация API-документации
Docker
Nginx
Tomcat
Maven
Сторонние SDK
七牛云: облачное хранилище файлов
极验 Test-button: сервис верификации, см. документ «Удаление кода верификации»
Сторонние плагины
Hotjar: комплексный анализ и обратная связь
搜狐畅言评论插件
Сторонние интерфейсы
Mob全国天气预报接口: требуется регистрация аккаунта и запрос AppKey после создания приложения
Другие инструменты разработки
Jenkins: непрерывная интеграция
JRebel: разработка с горячей заменой
Плагин стандартов разработки Али для Java
Описание файлов
Папка xmall содержит некоторые зависимости и SQL-файлы:
— xmall.sql: файл базы данных;
— dubbo.xsd: требует ручной настройки во избежание ошибок;
— redis-3.0.0.gem: библиотека Ruby, необходимая для построения кластера Redis.
Папка generatorSqlmapCustom — это инструмент Mybatis Generator для обратного проектирования, уже настроен плагин Maven.
Запуск и развёртывание на локальном компьютере
- Скачайте zip-архив или установите Git и выполните команду клонирования
git clone https://github.com/Exrick/xmall.git
.
- Установите необходимые промежуточные программы и запустите их: ZooKeeper, Redis, ActiveMQ, Elasticsearch.
- Измените соответствующие IP-конфигурации в каждом файле конфигурации (по умолчанию 127.0.0.1), а также конфигурации для семи облаков, экстремальной проверки и прогноза погоды в папке
xmall-common - utils
. Конфигурация почтового ящика XPay находится в папках manager-service
и sso-service
.
- Установите Maven и настройте его в среде IDEA (см. раздел «Установка и настройка Maven»).
- Откройте проект xmall в IDEA, нажав File-Open, и дождитесь установки зависимостей.
- Создайте новую базу данных MySQL с именем xmall и запустите SQL-файл. Обратите внимание, что в модулях с файлами db.properties необходимо изменить конфигурацию подключения к базе данных.
- Выполните команду
mvn install
в корне каждой папки модуля, кроме xmall-parent и xmall-common.
- Запустите все остальные 6 сервисов, кроме родительского и общего, которые уже настроены с плагином Tomcat. Для запуска используйте команду
mvn tomcat7:run
или плагин Tomcat7 в среде IDEA.
- Порт по умолчанию для бэкенд-системы управления — 8888 (http://localhost:8888). Администратор имеет логин admin и пароль 123456.
- Фронтенд-проект имеет порт по умолчанию 7777. Чтобы получить доступ к интерфейсу, запустите Vue-основанный проект xmall-front и измените конфигурацию интерфейса.
Технические аспекты
Расширение плагина ES-IK для анализа слов:
В этом проекте расширение интерфейса и список запрещённых слов находятся по адресам http://localhost:8888/getDictList
и http://localhost:8888/getStopDictList
, соответственно. Эти два интерфейса должны быть добавлены в конфигурационный файл IKAnalyzer.cfg.xml плагина {conf}/analysis-ik/config/IKAnalyzer.cfg.xml или {plugins}/elasticsearch-analysis-ik-*/config/IKAnalyzer.cfg.xml. Пример:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置远程扩展字典 -->
<entry key="remote_ext_dict">http://localhost:8888/getDictList</entry>
<!--用户可以在这里配置远程扩展停止词字典-->
<entry key="remote_ext_stopwords">http://localhost:8888/getStopDictList</entry>
</properties>
Ограничение скорости:
Проект xmall-front-web уже имеет ограничение скорости, которое можно настроить в файле resource.properties. Пример:
#启用全局限流
xmall.rateLimit.enable=true
#每1秒内
xmall.rateLimit.timeout=1000
#限制10个请求
xmall.rateLimit.limit=10
Также можно ограничить скорость для определённых методов с помощью аннотации @RateLimiter. Пример:
@RateLimiter(limit = 1, timeout = 5000)
Поддерживается ограничение скорости для различных параметров, таких как IP, uid и другие. Подробности смотрите в коде.
Общение по техническим вопросам
Для обсуждения технических вопросов существует QQ-чат с платной подпиской (номер группы 475743731). Здесь можно получить подробную документацию по проектам и презентации для дипломных работ. — Бесплатный канал для общения 562962309
— Блог автора: http://blog.exrick.cn
Коммерческая лицензия
- Использование в личных целях осуществляется в соответствии с открытым исходным кодом GPL.
- Для коммерческого использования необходимо связаться с автором для получения лицензии по низкой цене.
Комментарии ( 0 )