• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

micro-mall-api: 微商城-api,基于kelvins-io/kelvins,gRPC构建的微服务商城,包含用 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

micro-mall-api

开源软件地址:

https://gitee.com/cristiane/micro-mall-api

开源软件介绍:

micro-mall-api

micro-mall-api

介绍

微商城-api,基于gRPC构建的微服务商城,包含用户,商品,店铺,购物车,订单,支付,物流,评论,搜索共计22个微服务并通过micro-mall-api聚合

框架,库依赖

kelvins框架支持:https://gitee.com/kelvins-io/kelvins
模板生成,服务治理:https://gitee.com/kelvins-io/kelvins-tools
g2cache多级缓存库支持:https://gitee.com/kelvins-io/g2cache

项目问题交流

QQ群:578859618 (micro-mall-api交流群)
avatar

如何赞助

开源项目的发展离不开大家的鼓励和赞赏,扫描下方二维码鼓励一下吧
avatar

支付宝
avatar

赞助商列表

昵称赞助金额时间留言
雨化田100元2021-1-25一起加入
thomas100元2021-2-18指导
皮卡猪250元2021-2-20支持大佬
*抹202021-3-19资金有限,支持下
*康66.662021-4-15加油
Bleem-goland正版license2021-4-18落地验证码限制以及缓存实施
Christible66.002021-4-26大神,膜拜。资金有限
剑峰50.002021-5-10支持下
mu100.002021-6-9意思意思
osc-200.002021-7-9落地docker构建方案
这个杀手有点冷150.002021-7-11很好的一个项目
pick刘50.002021-8-3有料
IT詹天佑88.002021-8-15喜欢这一点代码
*浩20.002021-8-25请喝一杯奶茶
Doyle100.002021-8-31一点小意思
星辰大海200.002021-9-5很好的项目
黔驴技穷100.002021-10-2问题咨询
天行健100.002021-10-15部署咨询
东正20.002021-10-20咨询解答
Jackson20.002021-10-28部署咨询
農民20.002021-11-2一杯茶颜悦色
ps50.002021-11-6项目咨询
Mark66.002021-11-14etcd搭建协助
Micky20.002021-11-18赞助
50.002021-11-19赞助
农民GG500.002021-11-24支持开源项目
Z*k20.002021-11-27支持开源项目
*左20.002021-11-29赞助
奈何桥300.002021-12-2运行部署
p神1000.002021-12-5个人赞助
曹大1000.002021-12-11个人赞助
*铭50.002021-12-19赞助
番茄可乐100.002022-3-4赞助
东窗事发80.002022-3-10运行支持

软件架构

micro-mall系列需要etcd集群,集群有问题无法运行任何一个项目,请先搭建好!
接入层micro-mall-api采用HTTP2(兼容HTTP1.1)对接客户端
micro-mall-api基于gRPC对接其它服务
gin + xorm + mysql + redis + rabbitmq + elasticsearch + grpc + etcd + MongoDB + protobuf + prometheus
服务间通信采用gRPC(protobuf v3 ),服务注册/发现采用etcd,消息事件采用rabbitmq/redis, 搜索采用elasticsearch

用户鉴权
jwt

存储说明:
MySQL 主存储,事务处理
MongoDB:备份仓库,商品价格变化,商品详情(如./sku_property_ex.json),历史记录,搜索数据仓
Redis:数据缓存,消息事件结果,用户在线状态,分布式锁支持
rabbitMQ:消息事件中转站,订阅
ETCD:配置项,微服务注册,发现,分布式锁支持

监控说明:
pprof接口
prometheus_metrics接口

架构示意图:
avatar

我的架构图都是在processON在线画图,点击领7天会员福利 上面画的,有超多UML,软件架构,产品原型模板可以选择。

项目目录结构

.├── batch-clone-project.sh  一键克隆本项目 shell├── build-project-proto.sh  开发环境编译项目proto shell├── build.sh  一键构建项目 shell├── batch-run.sh  一键构建运行项目 shell├── build-run-all.sh  一键构建运行micro-mall所有项目 shell├── stop.sh  停止当前项目 shell├── stop-all.sh  一键停止micro-mall所有项目 shell├── clean-logs-all.sh  一键清理micro-mall所有目录下logs shell├── git-push-all.sh  一键git push micro-mall所有项目(开发者专用) shell├── Dockerfile  docker构建文件├── docker-build-run.sh  docker构建运行 shell├── docker-compose.yml  基础组件compose构建文件├── docker-compose-build.yml  micro-mall系列项目compose构建文件├── docker-etcd-build.sh  etcd集群构建 shell├── etcd_cluster│   └── docker-compose-etcd.yml etcd集群构建docker镜像├── test-gateway-http.sh  运行client目录下测试用例 shell├── LICENSE   授权文件├── README.md   导航指南├── app   │   ├── app.go    app初始化│   └── web.go    web服务初始化├── client│   ├── header.go   测试用例request header│   ├── main│   │   └── user_name.go    模拟注册的生成用户名│   ├── micro-mall-api_test.go    接口测试用例│   ├── url.go    接口测试URL│   └── user_name.go    模拟生成用户名├── config│   ├── config.go   解析配置文件│   └── setting│       └── setting.go    系统配置setting├── etc│   ├── app.ini   app配置文件│   └── app.ini.example   app配置文件example├── genpb.py    pb,gw文件生成脚本├── go.mod├── go.sum├── internal│   ├── config│   │   └── config.go   内部解析配置│   ├── logging│   │   └── log.go    启动日志│   ├── metrics_mux│   │   ├── elastic_metrics.go    elastic监控│   │   ├── pprof.go    golang内置pprof监控│   │   └── prometheus_metrics.go   prometheus监控│   ├── setup│   │   ├── mysql.go  mysql启动│   │   ├── queue.go   queue启动│   │   ├── redis.go  redis启动│   │   └── server_mux.go  server监控mux入口│   └── util│       ├── mysql_callback│       │   └── time_callback.go    mysql time callback│       └── mysql_model│           └── mysql_model.go    mysql mode ├── logs  日志文件目录├── main.go   main入口文件├── micro-mall-api    main.go编译后文件├── micro-mall-api.pid    micro-mall-api进程pid├── micro-mall-db.yaml    映射db表结构到orm struct├── micro_mall.sql    micro-mall数据库SQL├── micro_mall_comments.sql   micro-mall-comments评论服务数据库SQL├── micro_mall_logistics.sql    micro-mall-logistics物流服务数据库SQL├── micro_mall_order.sql    micro-mall-order订单服务数据库SQL├── micro_mall_pay.sql    micro-mall-pay支付服务数据库SQL├── micro_mall_shop.sql   micro-mall-shop店铺服务数据库SQL├── micro_mall_sku.sql    micro-mall-sku商品库服务数据库SQL├── micro_mall_trolley.sql    micro-mall-trolley购物车服务数据库SQL├── micro_mall_user.sql   micro-mall-users用户服务数据库SQL├── middleware│   ├── cors.go   cros跨域中间件│   └── user.go   user验证中间件├── model│   ├── args│   │   ├── const.go    请求参数常量│   │   └── form.go   请求参数struct│   └── mysql│       └── table.go    MySQL表名常量├── pkg│   ├── app│   │   ├── form.go   请求表单参数│   │   └── response.go   http响应│   ├── code│   │   ├── code.go   响应码定义│   │   ├── error.go    错误定义│   │   └── msg.go    错误码│   └── util│       ├── cache│       │   ├── big_cache.go    big_cache缓存│       │   └── redis.go    redis缓存│       ├── client.go   调用grpc客户端│       ├── email│       │   ├── email.go    邮件发送│       │   └── email_helper.go   邮件发送helper│       ├── groutine│       │   ├── attach_panic.go   函数panic包装器│       │   ├── errgroup.go   errgroup并发│       │   └── grpool.go   异步任务调度│       ├── kprocess│       │   └── tableflip.go    进程重启│       ├── slice.go    切片工具类│       ├── time.go   时间工具类│       ├── token.go    jwt token│       └── user_name.go    用户名生成├── repository│   └── verify_code_record.go   验证码存储├── router│   ├── api│   │   └── v1│   │       ├── comments.go   评论controller│   │       ├── index.go    首页controller│   │       ├── logistics.go    物流controller│   │       ├── merchants.go    商户controller│   │       ├── order.go    订单controller│   │       ├── search.go   搜索controller│   │       ├── shop.go   店铺controller│   │       ├── sku.go    商品库controller│   │       ├── user.go   用户controller│   │       ├── user_account.go   用户账户controller│   │       ├── user_setting.go   用户设置controller│   │       └── user_trolley.go   用户购物车controller│   ├── process│   │   └── prometheus.go   gin prometheus监控接口│   └── router.go   app路由├── service│   ├── comments.go   评论业务调用gRPC│   ├── common.go   公共服务│   ├── excel_handler.go    Excel处理│   ├── logistics.go    物流业务调用gRPC│   ├── merchants.go    商户业务调用gRPC│   ├── push_notice.go    队列推送│   ├── shop_business.go    店铺业务调用gRPC│   ├── sku_business.go   商品库业务调用gRPC│   ├── trade_order.go    支付订单业务调用gRPC│   ├── trade_order_report.go   支付订单业务报告│   ├── user.go   用户业务调用gRPC│   ├── user_account.go   用户账户调用gRPC│   ├── user_setting.go   用户设置调用gRPC│   └── user_trolley.go   用户购物车调用gRPC├── sku_property_ex.json    商品库MongoDB存储参考├── startup│   ├── config.go   启动自定义配置│   ├── register.go   注册自定义服务│   └── vars.go   自定义配置变量├── static  静态文件目录,订单报告├── vars│   ├── server.go   server全局变量│   ├── setting.go    全局setting│   └── vars.go   全局变量├── 交流群.JPG├── etcd环境部署-centos.pdf├── etcd环境部署-ubuntu.pdf├── etcd环境部署-docker.pdf├── 微信赞赏码.JPG├── 支付宝赞赏码.JPG├── 微商城需求文档.pdf└── 微商城系统架构设计.png

如何构建开发环境

micro-mall-xxx系列服务,希望开发者有中高级go后端开发经验,了解电商业务,mysql redis MQ使用经验
你需要安装golang并配置golang开发环境(设置GOPATH,GOROOT,GOBIN)
然后看看下面的环节

关于go mod

请各位一定配置go proxy
GOPROXY="https://goproxy.cn,https://goproxy.io,direct"

利用docker构建etcd集群

建议本机也安装etcd工具(方便检测集群是否构建成功)
运行sh docker-etcd-build.sh

服务注册说明

由于micro-mall系列服务是通过etcd来注册的,所以是需要etcd集群的,搭建步骤参考本仓库的etcd集群部署文档
下面配置<利用docker构建etcd集群>的地址
export ETCDV3_SERVER_URLS=http://127.0.0.1:12379,http://127.0.0.1:22379,http://127.0.0.1:32379
export ETCDV3_SERVER_URL=http://127.0.0.1:12379,http://127.0.0.1:22379,http://127.0.0.1:32379
export ETCDCTL_API=3

都有哪些服务

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 交易订单信息同步消费

克隆仓库

将这些服务(目前共16个服务以及它们依赖的proto仓库,在模块分类环节可以了解到)clone到本地
为了方便clone仓库,特此提供了一键clone micro-mall系列脚本(需要Git支持),在本仓库根目录
mac/linux:sh batch-clone-project.sh
windows请使用git bash shell运行:sh batch-clone-project.sh

服务启动端口说明

均可以在./etc/app.ini中配置,并在运行日志nohup.out显示当前使用的端口,进程ID

为什么本项目建议你安装python环境

这是因为本项目提供的生成pb.gw工具是python脚本,因此需要你有python环境。
为了降低你的使用难度,我们会在后期减轻对python的依赖,进而用go或shell替代,请耐心等待。

开发项目都有哪些依赖

部分依赖文件安装需要科学上网环境,演示安装步骤都是Mac环境下(同时也建议开发者使用Linux或Mac环境),Windows请参考安装或自行Google安装
go 1.13.15+
goland or vscode
mysql,redis,rabbitmq,etcd集群环境,MongoDB,elasticsearch
protoc 安装方法如下

wget https://github.com/google/protobuf/releases/download/v3.14.0/protobuf-all-3.14.0.zipunzip protobuf-all-3.14.0.zipcd protobuf-3.14.0/./configuremakemake install# 如果报错请执行ldconfig

go get -u google.golang.org/[email protected]
go get -u google.golang.org/[email protected]
go get -u github.com/golang/protobuf/[email protected]
go get -u github.com/grpc-ecosystem/grpc-gateway/[email protected]
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

数据库设计

  1. 安装MySQL
    Mac下:brew install mysql
  2. 启动并初始MySQL
    Mac下:brew services start mysql
    micro-mall-系列采用分库存储,各服务拥有独立的数据库,独立的缓存,独立的事件消息
    将本仓库根目录下的micro_mall*.sql(共9个sql文件) 导入同名数据库中初始化表结构
  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

pb.gw 代码生成

看看下面说明

为什么要生成pb,gw代码

因为项目使用了gRPC+protobuf,grpc-gateway协议转换中间件,swagger文档托管中间件

有哪些仓库需要生成

大部分列出的服务基本上都需要,基本上micro-mall-xxx-proto就是micro-mall-xxx系列服务的依赖proto仓库
那么就需要在这些仓库下面生成proto仓库的代码文件

如何生成

生成pb,gw代码需要本地安装protoc,protoc-gen-go,grpc-gateway 可以参考https://segmentfault.com/a/1190000013339403 grpc系列文章
生成proto.pb.go代码时请将https://gitee.com/kelvins-io/common clone下来并放到gopath路径中(GOPATH/src/gitee.com/kelvins-io/)(如果你执行过batch-clone-project.sh脚本或已经存在了请跳过)
生成proto.pb.go代码方式:
在micro-mall-xxx根目录执行python genpb.py .../micro-xxx-proto
例如:为micro-mall-api项目添加micro-users-proto的pb代码
cd $GOPATH
cd src/gitee.com/cristiane/ #没有则创建
git clone https://gitee.com/cristiane/micro-mall-users-proto.git
git clone https://gitee.com/cristiane/micro-mall-api.git
cd micro-mall-api
没有Python环境的需要安装python,Mac的话自带python
python genpb.py ../micro-mall-users-proto
没有报错,且检查proto目录是否创建micro-mall-users-proto目录

micro-mall-api仓库现有依赖proto如何一键更新成代码

如果你不想手动执行python脚本来生成,请执行sh build-project-proto.sh

配置文件

看看下面环节

需要配置什么

基本上就是日志路径,MySQL,Redis,rabbitmq,elasticsearch,MongoDB,email这些

如何配置

在需要运行的项目根目录下etc/app.ini更改自己开发环境的配置info(可以参考默认提供的)

rabbitmq如何配置
  1. 安装
    Mac下:brew install rabbitmq

  2. 启动:
    Mac下:
    rabbitmq-plugins enable rabbitmq_management
    sudo rabbitmq-server

  3. 配置在rabbit-manger页面配置:
    如果mq使用rabbitmq(也可不用rabbitmq),则需要
    创建用户,密码:micro-mall/szJ9aePR
    创建vhost:micro-mall(下面的exchange和queue均在此vhost下面)
    创建exchange:user_register_notice,模式为direct或fanout
    创建exchange:user_state_notice,模式为direct或fanout
    创建exchange:trade_order_notice,模式为direct
    创建exchange:trade_order_pay_callback,模式为direct
    创建exchange:trade_pay_notice,模式为direct
    创建exchange:shop_info_search_notice,模式为direct
    创建exchange:sku_inventory_search_notice,模式为direct
    创建exchange:user_info_search_notice,模式为direct
    创建exchange:trade_order_info_search_notice,模式为direct
    创建queue:user_register_notice,持久化为true
    创建queue:user_state_notice,持久化为true
    创建queue:trade_order_notice,持久化为true
    创建queue:trade_order_pay_callback,持久化为true
    创建queue:trade_pay_notice,持久化为true
    创建queue:shop_info_search_notice,持久化为true
    创建queue:sku_inventory_search_notice,持久化为true
    创建queue:user_info_search_notice,持久化为true
    创建queue:trade_order_info_search_notice,持久化为true

  4. 填写配置文件配置文件app.ini中关于rabbitmq配置说明(仅供参考)

[kelvins-queue-amqp]Broker = "amqp://用户名:密码R@地址:端口/创建的vhost"DefaultQueue = "队列名"ResultBackend = "redis://redis的密码@127.0.0.1:6379/10" #队列消费结果保存地址ResultsExpireIn = 36000 # 队列任务消费结果的保存过期时间Exchange = "交换机"ExchangeType = "交换机类型"BindingKey = "绑定key,一般与队列名一样"PrefetchCount = 5 #每次从队列取任务个数TaskRetryCount = 3 #任务失败后重试上限TaskRetryTimeout = 36000 #任务失败后重试超时,满足斐波拉契排列

elasticsearch配置

  1. 安装elasticsearch
    Mac下:
    使用brew install elasticsearch
    其它平台参考网络教程
  2. 启动并安装对应版本的中文分词插件
    Mac下:
    brew services start elasticsearch
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.5.2/elasticsearch-analysis-ik-7.5.2.zip
  1. 创建索引
# 用户信息索引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.sizeyellow open   micro-mall-shop                    93u2W6uLTn--EuzifHKFgQ   1   1         25            2       57kb           57kbyellow open   micro-mall-user-info               WUFGM9IrR2u9d3egU-krWg   1   1      15562         5262      2.7mb          2.7mbyellow open   micro-mall-sku-inventory           XWQYjy4PTZahB7CpHbLeiw   1   1        164            1    132.5kb        132.5kbyellow open   micro-mall-trade-order             XWQYjy4PTZahB7CpHbLeiw   1   1        164            1    132.5kb        132.5kbyellow open   micro-mall-merchants-material-info WAzVixxOQ4-QPFjGWEWnWA   1   1          8            0     57.9kb         57.9kb

负载均衡

所有服务均可启动多个实例

管理服务

如何启动

运行前请确保你已经阅读完了【如何构建开发环境】,并执行了batch-clone-project.sh
构建且运行系列服务:
sh build-run-all.sh
运行系列服务
sh start-all.sh
重启系列服务(Windows不支持)
sh restart-all.sh
停止系列服务
sh stop-all.sh

如何用docker来一键构建运行micro-mall系列项目

如果你有docker环境(docker环境可以避免安装依赖的中间件)那么你可以:
sh docker-build-run.sh

在此特别鸣谢osc为micro-mall系列项目支持docker编排方案

在线服务治理

参考kelvins-tools:https://gitee.com/kelvins-io/kelvins-tools

模块分类

接入层(gateway,BFF)
https://gitee.com/cristiane/micro-mall-api

用户服务
https://gitee.com/cristiane/micro-mall-users
https://gitee.com/cristiane/micro-mall-users-proto
https://gitee.com/cristiane/micro-mall-users-consumer
https://gitee.com/cristiane/micro-mall-users-cron

店铺服务
https://gitee.com/cristiane/micro-mall-shop
https://gitee.com/cristiane/micro-mall-shop-cron
https://gitee.com/cristiane/micro-mall-shop-proto

商品服务
https://gitee.com/cristiane/micro-mall-sku
https://gitee.com/cristiane/micro-mall-sku-proto
https://gitee.com/cristiane/micro-mall-sku-cron

购物车服务
https://gitee.com/cristiane/micro-mall-trolley
https://gitee.com/cristiane/micro-mall-trolley-proto

订单服务
https://gitee.com/cristiane/micro-mall-order
https://gitee.com/cristiane/micro-mall-order-proto
https://gitee.com/cristiane/micro-mall-order-cron
https://gitee.com/cristiane/micro-mall-order-consumer

支付服务
https://gitee.com/cristiane/micro-mall-pay
https://gitee.com/cristiane/micro-mall-pay-proto
https://gitee.com/cristiane/micro-mall-pay-consumer

物流系统
https://gitee.com/cristiane/micro-mall-logistics
https://gitee.com/cristiane/micro-mall-logistics-proto

搜索服务
https://gitee.com/cristiane/micro-mall-search
https://gitee.com/cristiane/micro-mall-search-cron
https://gitee.com/cristiane/micro-mall-search-sku-consumer
https://gitee.com/cristiane/micro-mall-search-shop-consumer
https://gitee.com/cristiane/micro-mall-search-users-consumer
https://gitee.com/cristiane/micro-mall-search-order-consumer
https://gitee.com/cristiane/micro-mall-search-proto

评论服务
https://gitee.com/cristiane/micro-mall-comments
https://gitee.com/cristiane/micro-mall-comments-proto

测试报告

avatar测试环境如下:所有服务,中间件,虚拟机,IDE,测试客户端均运行在这台机器上
avatar

micro-mall-api启用HTTP2

启用http2后,调用接口,使用wireshark抓包结果
avatar

RPC接口压测报告

使用ghz压测接口
avatar

接口文档

开发环境地址: http://127.0.0.1:52001/
监控地址:
pprof:http://localhost:52002/debug/pprof/
Prometheus:http://localhost:52002/debug/metrics

返回码错误code:

code含义
200ok
400请求参数错误
500服务器出错
600003用户账户不存在
600027订单过期
600032评论标签已存在
50007验证码在请求时间段达到最大限制
600002用户账户被锁定
4004用户token过期
4012商品sku-code已存在系统
600018订单事务号为空
600021用户设置记录不存在
600036用户状态未验证或审核或被锁定
4005用户不存在
4006用户已存在
50000Duplicate entry
4011商户未提交过店铺认证资料
4007用户密码错误
600017支付时间过期
600012订单正在支付中
600025订单状态无效
50004验证码过期
4016邀请码不存在
600013订单已完成支付
600024商品价格版本不存在
600029用户账户无效
4002用户token为空
50001邮件发送错误
50003验证码无效
600005商户账户被锁定
600028订单已完成支付
600035外部交易号为空
600023交易订单不匹配当前用户
600026订单状态被锁定
4010店铺认证资料已存在
4013商品sku-code不存在
50005商品库存不够
600001用户余额不足
600000金额格式解析错误
600019订单已存在
50002验证码为空
4014店铺ID不存在
4008商户未提交过认证资料
4003用户token无效
4015店铺ID已存在
600011交易号不存在
600020用户设置信息已存在
4001ID为空
600016用户暂时不允许登录
4009商户认证资料已存在
600010事务执行失败
600034用户订单不存在
600004商户账户不存在
600014物流记录已存在
50006验证码仍在请求时间间隔内
600015物流记录不存在
600022用户物流收货地址不存在
600033评论标签不存在
600037店铺状态未审核或被冻结
600038交易单号正在支付中

接口列表(由于未及时更新,以实际接口返回为准):
####【说明】post请求没指明content-type的接口表单和json都支持
1 首页
GET /
返回body

{	"code": 200,	"data": "Welcome to micro-mall-api",	"msg": "ok"}

2 调试
GET /ping
返回body

{	"code": 200,	"data": "2020-09-11T21:55:28.873726+08:00",	"msg": "ok"}

GET /debug/XX #程序内部指标
GET /debug/metrics #prometheus监控

3 发送验证码
POST /api/v1/verify_code/send
请求参数:

参数含义类型备注
country_code国际码string86
phone手机号string11位手机号
business_type业务类型int1注册,2登录,3修改或重置密码
receive_email接收验证码邮箱string[email protected]

同一手机号一段时间内只能获取一次验证码

返回body:

{"code":200,"data":"ok","msg":"ok"}

4 注册用户
POST /api/v1/register
请求参数:

参数含义类型备注
user_name用户名string
password密码string可以是密文
sex性别int1男,2女
email接收验证码邮箱string[email protected]
country_code国际码string
phone手机号string11位手机号
verify_code验证码string6位验证码
id_card_no身份证号string选填
invite_code邀请码stringxxx

返回body:

{"code":200,"data":{"invite_code":"46e4eabbf000065"},"msg":"ok"}

5 验证码登陆
POST /api/v1/login/verify_code
请求参数:

参数含义类型备注
country_code国际码string
phone手机号string11位手机号
verify_code验证码string6位验证码

返回body:

{"code":200,"data":"token","msg":"ok"}

6 密码登陆
POST /api/v1/login/pwd
请求参数:

参数含义类型备注
country_code国际码string
phone手机号string11位手机号
password密码string可传md5值

返回body:

{"code":200,"data":{},"msg":"ok"}

7 重置用户密码
PUT /api/v1/user/password/reset
header token
请求参数:

参数含义类型备注
verify_code验证码string6位验证码
password密码string可传md5值

返回body:

{"code":200,"data":"token","msg":"ok"}

8 获取用户信息
GET /api/v1/user/user_info
header token

返回body:

{	"code": 200,	"data": {		"id": 10009,		"account_id": "ae23bab6-c31b-4f61-ad5e-2521a9a4917d",		"user_name": "王尼玛",		"sex": 1,		"phone": "15501707783",		"country_code": "86",		"email": "[email protected]",		"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 token

返回body:

{	"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 token
请求参数:

参数含义类型备注
operation_type操作类型int0-创建,1-更新,2删除,3-审核
register_addr注册地址string
health_card_no从业人员健康证string11-29位字符
register_addr注册地址string真实注册地址
identity身份标识int身份属性,1-临时店员,2-正式店员,3-经理,4-店长
tax_card_no纳税人证号string大于16位字符

返回body:

{"code":200,"data":{"merchant_id":111},"msg":"ok"}

10 添加商品到购物车
PUT /api/v1/user/trolley/sku/join
header token
请求参数:

参数含义类型备注
sku_code商品codestring商品唯一sku_code
shop_id店铺IDint商品所属店铺ID
count数量int大于0
time加入时间string2020-09-05 13:25:43
selected是否选中booltrue,false

返回body:

{"code":200,"data":"ok","msg":"ok"}

11 从购物车中移除商品
DELETE /api/v1/user/trolley/sku/remove
header token
请求参数:

参数含义类型备注
sku_code商品codestring商品唯一sku_code
shop_id店铺IDint商品所属店铺ID
amou

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap