Skip to content

hespecial/gin-mall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gin-mall商城项目

本项目是一个ToC的商城项目,参考了原项目CocaineCong/gin-mall

我在其基础上做出了很大改动,从项目结构到数据库设计再到业务逻辑都重构并完善了一遍。

目前已基本完成并通过了一般测试,如需学习建议循序渐进,参考commit记录

技术栈

  • gin、gorm、mysql、redis、swag、elasticsearch、jwt、oss、kafka、viper、zap、go-mail、validator

本地部署

参考config\config.yaml.example配置格式,新建一个自己的config\config.yaml文件,所需环境与配置文件中的配置项对应,其中mysql读写分离的配置项可暂时设置为同一个数据库,如果需要也可单独配置主从数据库。

不必一次全部部署出来,按照我的commit记录来看,最开始只有一些最基本的配置。

项目功能

  • 认证模块
    • 登录
    • 注册
  • 用户模块
    • 查看/更新用户信息
    • 更新密码
    • 上传头像
    • 绑定邮箱
    • 关注/取关用户
    • 获取粉丝/关注列表
  • 商品模块
    • 商品分类
    • 商品列表(分页)
    • 商品详情
    • 搜索商品
  • 收藏模块
    • 收藏列表
    • 收藏/取消收藏
  • 地址模块
    • 用户地址列表
    • 地址详情信息
    • 添加/更新/删除地址
  • 订单模块
    • 订单列表
    • 订单详情
    • 创建/删除订单

项目亮点

  • viper实时监听配置文件变化
  • mysql配合gorm dbresolver实现读写分离
  • 通过gorm的callback回调函数实现记录慢查询sql日志和限流器
  • 在后端通过cors解决跨域问题
  • jwt双token认证保证安全性的同时实现无感刷新
  • 优雅关机
  • 通过es搭配ik分词器对商品进行全文搜索
  • 对用户头像和商品图片等上传的文件适配了本地存储和oss存储
  • 使用swag对所有接口编写了api文档
  • 使用bcrypt对密码进行加密和验证,aes对金额进行加密和解密
  • 给用户发送邮件进行绑定确认
  • 将用户购物车数据缓存在redis中并保证了数据库和缓存的最终一致性
  • 使用消息队列对订单数据进行异步处理

TODO

  • 支付功能

About

go语言商城项目

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages