# MiniShop **Repository Path**: zhongxiaa/MiniShop ## Basic Information - **Project Name**: MiniShop - **Description**: 一个简易电商平台的微服务系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-16 - **Last Updated**: 2025-05-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MiniShop #### 介绍 个人用于学习go语言的一个简易电商平台的微服务系统,包含用户服务、商品服务和订单服务三个核心微服务。 #### 技术栈 - 编程语言:Go - Web 框架:Gin - 数据库:MySQL - 服务通信:gRPC和RESTful API - 服务发现:ETCD - 配置中心:Viper - 容器化:Docker - 部署:Docker Compose #### 功能模块 ##### 用户服务 - 用户注册登录:通过jwt实现用户的注册/登录 - 用户信息管理:包括获取用户信息、更新用户信息和更新密码 - 权限验证中间件:用户分为admin和customer两种角色,只有admin能够进行商品的增删改操作,auth_role.go简单实现了该权限校验 ##### 商品服务 - 商品CRUD操作:通过spu、sku和sku_stock来定义商品和商品库存,提供创建、更新、下架、获取sku详情等操作,提供锁定库存、解锁库存和扣减库存操作 - 商品分类管理:商品分类的增删改(仅管理员角色),查询分类(以树形结构展示) - 商品搜索功能:商品搜索功能 ##### 订单服务 - 创建订单 - 订单状态管理 - 订单查询 #### 项目结构 ``` MINISHOP ├─cmd │ └─user │ # 用户服务的入口点,包含 main.go 文件,用于启动用户服务 ├─configs │ # 配置文件目录,存放项目的配置yaml文件,如数据库配置、服务地址等 ├─docs │ # 文档目录,存放swagger文档 ├─internal │ # 项目的核心代码目录,存放所有业务逻辑和内部实现 │ ├─common │ │ # 公共模块,存放所有服务共用的代码和工具 │ │ ├─config │ │ │ # 配置管理模块,使用 Viper 管理配置 │ │ ├─database │ │ │ # 数据库相关代码,如数据库连接、迁移等 │ │ ├─enum │ │ │ # 定义项目中使用的常量和枚举类型,如错误码、状态码等 │ │ ├─middleware │ │ │ # 中间件模块,包含认证、权限校验、日志、错误处理等中间件 │ │ ├─response │ │ │ # 统一响应模块,定义 API 的响应格式 │ │ └─util │ │ # 工具函数模块,提供通用的工具函数,如校验器等 │ └─user │ # 用户服务的业务逻辑和实现 │ ├─config │ │ # 用户服务的配置文件 │ ├─dto │ │ # 数据传输对象,用于定义请求和响应的结构 │ ├─handler │ │ # 请求处理器,包含 HTTP 和 gRPC 的请求处理逻辑 │ │ ├─http │ │ │ # HTTP 请求处理器 │ │ └─rpc │ │ # gRPC 请求处理器 │ ├─model │ │ # 数据模型,定义数据库表结构和 ORM 映射 │ ├─repository │ │ # 数据访问层,提供数据库操作的接口和实现 │ └─service │ # 业务逻辑层,实现具体的业务逻辑 ├─logs │ # 日志文件目录,存放运行时生成的日志文件 ├─pkg │ # 第三方包目录,存放项目依赖的外部库 ├─proto │ └─user # 用户服务的 Protobuf 文件生成目录 │ └─gen # 用户服务的 Protobuf 文件生成目录,存放生成的 gRPC 和 Protobuf 代码 │ └─sql # SQL 文件目录,存放数据库迁移脚本和 SQL 文件 ``` #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx