# gostore **Repository Path**: luxingwen/gostore ## Basic Information - **Project Name**: gostore - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-10 - **Last Updated**: 2021-08-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gostore golang 开发的商城应用 功能设计参照 https://gitee.com/ZhongBangKeJi/CRMEB 数据库 [gostore.sql](./gostore.sql), 字段定义参考[crmeb文档](https://help.crmeb.net/crmeb/895391) 参考项目 [goshop](https://github.com/luxingwen/goshop) 前端 [gostore-admin](https://gitee.com/dropliu1987/gostore-admin.git), 基于[vue-admin-template](https://github.com/PanJiaChen/vue-admin-template) 开发,请按照对应文档部署,然后修改api请求地址为后端服务部署地址即可 ## 环境 - mysql5.7 - 数据库 - gorm - 数据库操作 - gin - web框架 ## 使用 1. 本项目开启了 go mod,请将环境变量 `GO111MODULE` 设置为 on 2. 将 [gostore.sql](./gostore.sql) 导入到你的数据库当中 3. 修改配置文件 [app.yml](./app.yml) ,设置服务运行的端口,和数据库链接的配置 4. 在项目目录下执行 `go run main.go` 或使用 `make`, 执行 `make gorun` 或 `make run` ## 约定 1. 路由 - 接口遵循 restful, 如下所列: - get --> get: `api/xx?id=xx` - list --> get: `api/xx/list?page=x&limit=x` - save --> post: `api/xx/` - update --> put: `api/xx/` - delete --> delete: `api/xx/1,2,3` - 所有的controler 自行在模块中实现 [ModelRoute](./router/route.go) 接口, 并声明一个全局变量,例如 [OrderController](./controller/order.go), 然后在调用[router.LoadRouters](./main.go)时,将其添加进去 - 如果有路由中间件,比如权限验证,请自行在[router/LoadRouters](./router/route.go)中注入 2. 数据库操作 - 对应数据库表的所有结构体,必须实现 [TableName](./model/order.go) 方法, 否则数据库查询会出错 - dao, 所有的数据库操作继承 [DaoT](./dao/db.go),其已经实现了基础的CURD 3. 源文件命名 - model 下文件的命名与 结构体相同 - 源文件名称由多个单词组成时,全部小写,并用 ` _ `分割,比如`StoreOrder.go`,应为`store_order.go` 4. 全局配置 - 调用[config/ReadYaml](./config/conf.go)会读取默认配置,即根目录下的[app.yml](./app.yml) - 个人配置,请复制`app.yml`,并将其改名为`app-xxx.yml`,然后在`app.yml`中修改 `profile.active` 值为 `xxx`,即会读取根目录下的`app-xxx.yml`文件。请在`.gitignore`中忽略个人配置 - 如果要制定自己的配置文件, 请使用[config/ReadYamlWithPath](./config/conf.go)读取你的配置 5. 权限管理 - 本项目重写了权限管理,需要导入[permission.sql](./gostore_additional_permission.sql)中的两张表 - 权限管理的基础逻辑为,具体的`api`对应一个`policy`,比如`/api/order`,然后将`policy`分配给不同的角色`role`,在将role分配给管理员`admin` - 前后端权限的交互,基于保存的api路径和前端的路由路径相比较,为了使前端正常生成路由,后端模块的接口必须有个形如`/api/xx`的`get`接口,前端路由的路径应设置为 `xx` - 鉴于目前各模块尚在开发当中,难以整理api,暂时注释掉权限验证