1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/cristiane-micro-mall-api

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Какие есть сервисы:

  • micro-mall-api — слой доступа, все внешние запросы обращаются к этому сервису;
  • micro-mall-users — сервис пользователей;
  • micro-mall-users-cron — сервис пользователей с планировщиком задач;
  • micro-mall-users-consumer — потребитель событий для пользователей;
  • micro-mall-order — сервис заказов;
  • micro-mall-order-cron — планировщик задач для сервиса заказов;
  • micro-mall-order-consumer — потребитель событий для заказов;
  • micro-mall-shop — сервис магазинов;
  • micro-mall-shop-cron — планировщик задач для сервиса магазинов;
  • micro-mall-trolley — сервис тележек для покупок;
  • micro-mall-sku — сервис товаров;
  • micro-mall-sku-cron — планировщик задач для сервиса товаров;
  • micro-mall-pay — сервис оплаты;
  • micro-mall-pay-consumer — потребитель событий оплаты;
  • micro-mall-comments — сервис комментариев;
  • micro-mall-logistics — логистический сервис;
  • micro-mall-search — поисковый сервис;
  • micro-mall-search-cron — планировщик задач поискового сервиса;
  • micro-mall-search-shop-consumer — синхронизация информации о магазинах;
  • micro-mall-search-sku-consumer — синхронизация информации об ассортименте товаров;
  • micro-mall-search-users-consumer — синхронизация пользовательской информации;
  • micro-mall-search-order-consumer — синхронизация данных о заказах.

О 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).

Построение сервисов:

  1. Построение на основе Docker. Требуется установка Docker.
  2. Запуск на физическом сервере требует самостоятельной установки промежуточного ПО.

Запуск микро-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"
  • Enable указывает, включена ли функция электронной почты.

Проектирование базы данных

Ограничено запуском проекта на голом железе.

  1. Установите MySQL. На Mac: brew install mysql.
  2. Запустите и инициализируйте MySQL. На Mac: brew services start mysql. В проекте micro-mall используется разделение баз данных, каждая служба имеет свою собственную базу данных, кэш и систему обмена сообщениями. Импортируйте файлы micro_mall*.sql (всего 9 файлов) в соответствующие базы данных для создания структуры таблицы.
  3. Установите Redis. На Mac: brew install redis.
  4. Запустите и настройте. На Mac: brew services start redis.
  5. Установите MongoDB (необязательно). На Mac: brew install mongodb-community.
  6. Запустите и настройте. На Mac: 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). Затем ознакомьтесь со следующими разделами.

Почему этот проект рекомендует вам установить среду Python

Это связано с тем, что инструмент генерации 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.

Генерация кода pb, gw

Посмотрите следующие инструкции.

Зачем генерировать код pb, gw

Поскольку в проекте используются 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Микро-молл API, основанный на Kelvins-IO/Kelvins, представляет собой микросервисный торговый центр, построенный с использованием gRPC. Он включает в себя более 22 микросервисов, связанных с пользователями, товарами, корзинами, заказами и платежами, и агрегируется через micro-mall-api. Расширить Свернуть
Go и 4 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/cristiane-micro-mall-api.git
git@gitlife.ru:oschina-mirror/cristiane-micro-mall-api.git
oschina-mirror
cristiane-micro-mall-api
cristiane-micro-mall-api
main