Какие есть сервисы:
О shell-командах проекта: Рекомендуется запускать команды в корневом каталоге.
Клонирование репозитория: Перед клонированием необходимо настроить GOPATH. Затем следует скопировать все 22 сервиса и связанные с ними proto-репозитории в локальный каталог ($GOPATH/src/gitee.com/cristiane/). Для удобства клонирования предоставляется скрипт batch-clone-project.sh.
Использование go mod: Необходимо настроить go proxy: GOPROXY="https://goproxy.cn,https://goproxy.io,direct".
Конфигурационные файлы: Файл etc/app.ini.example используется при запуске сервисов на физическом сервере. Файл etc/app-docker.ini.example предназначен для запуска в среде Docker. Файл etc/app.ini используется для окончательного запуска проекта.
Файлы журналов: Файлы журналов каждого сервиса находятся в каталоге logs. Доступ (access), бизнес (business), ошибки (err) и фреймворк (framework).
Построение сервисов:
Запуск микро-mall с помощью Docker: Если у вас есть Docker и Compose, можно использовать их для запуска проекта. Для работы RabbitMQ и Elasticsearch требуется дополнительная настройка параметров и установка плагинов. После сборки проекта вручную выполните команды внутри контейнера.
Создание кластера etcd: Требуется установка Docker и Docker Compose. Рекомендуется установить etcd на локальную машину для проверки работоспособности кластера. Запустите sh docker-etcd-build.sh для создания кластера. При запуске проекта на физическом сервере используйте адрес кластера в переменной среды ETCDV3_SERVER_URLS. Создание индекса
# 用户信息 индекс
curl -X PUT "localhost:9200/micro-mall-user-info?pretty"
# 商户申请信息 индекс
curl -X PUT "localhost:9200/micro-mall-merchants-material-info?pretty"
# Индекс информации о магазине
curl -X PUT "localhost:9200/micro-mall-shop?pretty"
# Индекс торговой информации
curl -X PUT "localhost:9200/micro-mall-trade-order?pretty"
# Индекс информации о запасах товаров
curl -X PUT "localhost:9200/micro-mall-sku-inventory?pretty"
# Перечисление индексов
curl -X GET "localhost:9200/_cat/indices?v"
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open micro-mall-shop 93u2W6uLTn--EuzifHKFgQ 1 1 25 2 57kb 57kb
yellow open micro-mall-user-info WUFGM9IrR2u9d3egU-krWg 1 1 15562 5262 2.7mb 2.7mb
yellow open micro-mall-sku-inventory XWQYjy4PTZahB7CpHbLeiw 1 1 164 1 132.5kb 132.5kb
yellow open micro-mall-trade-order XWQYjy4PTZahB7CpHbLeiw 1 1 164 1 132.5kb 132.5kb
yellow open micro-mall-merchants-material-info WAzVixxOQ4-QPFjGWEWnWA 1 1 8 0 57.9kb 57.9kb
Email конфигурация
Email конфигурация используется для получения кодов подтверждения, уведомлений по электронной почте и т. д.
[email-config]
Enable = false
User = "xxxx@qq.com"
Password = "xxxx"
Host = "smtp.qq.com"
Port = "465"
Проектирование базы данных
Ограничено запуском проекта на голом железе.
brew install mysql
.brew services start mysql
.
В проекте micro-mall используется разделение баз данных, каждая служба имеет свою собственную базу данных, кэш и систему обмена сообщениями.
Импортируйте файлы micro_mall*.sql (всего 9 файлов) в соответствующие базы данных для создания структуры таблицы.brew install redis
.brew services start redis
.brew install mongodb-community
.brew services start mongodb-community
.use admin
db.createUser({
user: 'admin',
pwd: 'xxxx',
roles:[{
role: 'root',
db: 'admin'
}]
})
Измените конфигурацию и добавьте следующее:
security:
authorization: enabled
MongoDB требуется зарегистрировать пользователя с именем admin и базу данных micro_mall_sku.
Распределение нагрузки
Все службы могут быть запущены в нескольких экземплярах.
Только для запуска на голом железе. Постройте и запустите серию служб:
sh build-run-all.sh
.
Запустите серию служб:
sh start-all.sh
.
Перезапустите серию служб (Windows не поддерживается):
sh restart-all.sh
.
Остановите серию служб:
sh stop-all.sh
Для сервисов micro-mall требуются разработчики со средним или высоким уровнем знаний языка Go, пониманием электронной коммерции и опытом работы с MySQL, Redis, MQ. Вам необходимо установить язык Go и настроить среду разработки Go (установить GOPATH,GOROOT,GOBIN, см. golang-install.sh). Затем ознакомьтесь со следующими разделами.
Это связано с тем, что инструмент генерации pb.gw, предоставляемый этим проектом, представляет собой скрипт Python, поэтому вам нужна среда Python. Чтобы упростить процесс использования, мы постараемся уменьшить зависимость от Python в будущем, заменив его на Go или shell, пожалуйста, проявите терпение.
Некоторые зависимые файлы требуют подключения к Интернету, демонстрация установки — это среда Mac (также рекомендуется использовать Linux или Mac), Windows может обратиться к установке или Google самостоятельно. Рекомендуется использовать версию Go 1.16. Goland или vscode. MySQL, Redis, RabbitMQ, etcd-cluster, MongoDB (можно не включать), Elasticsearch. Protoc. Способ установки:
Скачайте файл с GitHub:
wget https://github.com/google/protobuf/releases/download/v3.14.0/protobuf-all-3.14.0.zip
.
Разархивируйте файл:
unzip protobuf-all-3.14.0.zip
.
Перейдите в каталог protobuf-3.14.0/:
cd protobuf-3.14.0/
Настройте:
./configure
.
Скомпилируйте:
make
.
Установите:
make install
.
Если вы получили сообщение об ошибке, выполните команду ldconfig
.
Go get -u google.golang.org/grpc@v1.40.0.
Go get -u google.golang.org/protobuf@v1.25.0.
Go get -u github.com/golang/protobuf/protoc-gen-go@v.1.4.3.
Go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v1.14.3.
Go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger.
Go get -u github.com/jteeuwen/go-bindata/...
Go get -u github.com/elazarl/go-bindata-assetfs/...
Python 2.7 или 3.5.
Посмотрите следующие инструкции.
Поскольку в проекте используются gRPC+protobuf, grpc-gateway и swagger, необходимо сгенерировать код.
Большинству перечисленных служб в основном требуется генерация, большинство микро-mall-xxx-proto являются зависимостями proto для микро-mall-xxx серии служб. Таким образом, вам необходимо сгенерировать файлы кода proto в этих репозиториях.
Генерация кода pb и gw требует локальной установки protoc, protoc-gen-go и grpc-gateway, обратитесь к статье сегмента fault.com о grpc. Генерация файла proto.pb.go требует клонирования репозитория gitee.com/kelvins-io/common в локальный каталог и размещения его в пути GOPATH/src/gitee.com/kelvins-io/. Если вы уже выполнили пакетный скрипт clone-project.sh или он уже существует, пропустите этот шаг. Генерацию файла proto.pb.go можно выполнить, выполнив команду python genpb.py в корневом каталоге микро-mall-xxx. 7. Запрос на сброс пароля пользователя
PUT /api/v1/user/password/reset header/query token
Параметры запроса:
Параметр | Значение | Тип | Примечание |
---|---|---|---|
verify_code | — | string | 6-значный проверочный код |
password | — | string | Можно передать значение MD5 |
Ответ сервера:
{"code":200,"data":{},"msg":"ok"}
8. Запрос на получение информации о пользователе
GET /api/v1/user/user_info header/query token
Ответ сервера:
{
"code": 200,
"data": {
"id": 10009,
"account_id": "ae23bab6-c31b-4f61-ad5e-2521a9a4917d",
"user_name": "王尼玛",
"sex": 1,
"phone": "15501707783",
"country_code": "86",
"email": "xxx@qq.com",
"state": 0,
"id_card_no": "524348787893748475",
"inviter": 0,
"invite_code": "46a576fc4000065",
"contact_addr": "深圳市南山区南头街道桃园路南贸市场三栋208",
"age": 34,
"create_time": "2020-09-04 19:10:07",
"update_time": "2020-09-06 12:10:15"
},
"msg": "ok"
}
8.1. Запрос на перечисление пользователей
GET /api/v1/user/user_info/list?page_size=500&page_num=1&token=xxx header/query token
Ответ сервера:
{
"code": 200,
"data": {
"user_info_list": [{
"country_code": "86",
"phone": "01606450639"
}, {
"country_code": "86",
"phone": "01606450640"
}, {
"country_code": "86",
"phone": "01606450641"
}]
},
"msg": "ok"
}
9. Запрос на отправку материалов для проверки подлинности продавца
PUT /api/v1/user/merchants/material header/query token
Параметры запроса:
Параметр | Значение | Тип | Примечание |
---|---|---|---|
operation_type | — | int | 0 — создание, 1 — обновление, 2 — удаление, 3 — проверка |
register_addr | — | string | |
health_card_no | — | string | От 11 до 29 символов |
register_addr | — | string | Реальный адрес регистрации |
identity | — | int | Идентификатор личности, 1 — временный сотрудник, 2 — постоянный сотрудник, 3 — менеджер, 4 — директор |
tax_card_no | — | string | Более 16 символов |
Ответ сервера:
{"code":200,"data":{"merchant_id":111},"msg":"ok"}
10. Запрос на добавление товара в корзину
PUT /api/v1/user/trolley/sku/join header/query token
Параметры запроса:
Параметр | Значение | Тип | Примечание |
---|---|---|---|
sku_code | — | string | Уникальный код товара |
shop_id | — | int | ID магазина, к которому принадлежит товар |
count | — | int | Больше 0 |
time | — | string | Например, «2020-09-05 13:25:43» |
selected | — | bool | true или false |
Ответ сервера:
{"code":200,"data":{},"msg":"ok"}
11. Запрос на удаление товара из корзины
DELETE /api/v1/user/trolley/sku/remove header/query token
Параметры запроса:
Параметр | Значение | Тип | Примечание |
---|---|---|---|
sku_code | — | string | Уникальный код товара |
shop_id | — | int | ID магазина, к которому принадлежит товар |
amount | — | int | Количество удаляемых товаров, -1 означает удаление всех товаров |
Ответ сервера:
{"code":200,"data":{},"msg":"ok"}
12. Запрос на получение данных о корзине пользователя
GET /api/v1/user/trolley/sku/list header/query token
Ответ сервера:
{"code":200,"data":{"list":[{"sku_code":"df1a9633-b060-4682-9502-bc934f89392b","shop_id":29914,"count":534252790,"time":"2020-09-11 23:01:25","selected":true}]},"msg":"ok"}
13. Запрос от продавца на открытие магазина
POST /api/v1/shop_business/shop/apply header/query token
Параметры запроса:
Параметр | Значение | Тип | Примечание |
---|---|---|---|
operation_type | — | int | 0 — создать, 1 — обновить, 2 — удалить, 3 — проверить |
shop_id | — | int | ID магазина |
nick_name | — | string | Не может быть пустым |
full_name | — | string | Не может быть пустым |
register_addr | — | string | Не может быть пустым |
merchant_id | — | int | Сначала необходимо подать заявку на регистрацию продавца |
business_addr | — | string | Конкретный адрес |
business_license | — | string | |
tax_card_no | — | string | |
business_desc | — | string | Как можно более подробное описание бизнеса может ускорить проверку |
social_credit_code | — | string | Не может быть пустым |
organization_code | — | string | Не может быть пустым |
Запрос: get /user/order/report
Ответ:
{
"msg": "ok"
}
Пополнение счёта пользователя
Запрос: post /user/account/charge
Ответ:
{"code":200,"data":{},"msg":"ok"}
Создание отзыва на заказ
Запрос: post/json /user/comments/order/create
Ответ:
{"code":200,"data":{},"msg":"ok"}
Получение отзывов на магазин
Запрос: get /user/comments/shop/list?shop_id=111
Ответ:
{
"code": 200,
"data": [{
"shop_id": 30072,
"order_code": "00038f56-7123-4af6-96b7-b7fceeb12415",
"star": 1,
"content": "商品很快就送到手里了,物美价廉",
"img_list": ["image1"],
"comment_id": "7e80704a-2731-44fb-9450-a0c8bbb68441"
}],
"msg": "ok"
}
Изменение метки отзыва
Запрос: post /user/comments/tags/modify
Ответ:
{"code":200,"data":{},"msg":"ok"}
Список меток
Запрос: get /user/comments/tags/list
Ответ:
{
"code": 200,
"data": [{
"tag_code": "1221d8e7-ab5f-42da-831d-455dd5a023d3",
"classification_major": "店铺",
"classification_medium": "商品",
"classification_minor": "包装",
"content": "商品保证破损"
}],
"msg": "ok"
}
Информация о пользователях
Запрос: get /user/user_info/list?page_size=3&page_num=1&token=xxx
Ответ:
{
"code": 200,
"data": {
"user_info_list": [{
"country_code": "1015",
"phone": "19494479989"
}, {
"country_code": "1017",
"phone": "90687911165"
}]
},
"msg": "ok"
}
Поиск информации о пользователе
Запрос: get /search/user_info?query=王友
Ответ:
{
"code": 200,
"data": []
}
``` **Данные из запроса:**
```json
{
"code": 200,
"data": [{
"info": {
"uid": 79857,
"material_id": 1172,
"register_addr": "京港市上海路111号",
"health_card_no": "R8nJ65TDUGAlqrwerSdb9",
"identity": 1,
"state": 3,
"tax_card_no": "qX2Mr545kznWrlvO4sIp7",
"create_time": "2021-10-03T01:50:15+08:00"
},
"score": 5.01196
}],
"msg": "ok"
}
Перевод данных из запроса на русский язык:
{
"код": 200,
"данные": [
{
"информация": {
"uid": 79857,
"материал_ид": 1172,
"регистрация_адрес": "город Пекин, район Цзинган, улица Шанхай, дом 111",
"медицинская_карта_номер": "R8nJ65TDUGAlqrwerSdb9",
"личность": 1,
"состояние": 3,
"налоговая_карточка_номер": "qX2Mr545kznWrlvO4sIp7",
"время_создания": "2021-10-03 01:50:15 +08:00"
},
"оценка": 5,01196
}
],
"сообщение": "ОК"
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )