# guiguzhenxuan-backend-go **Repository Path**: atheny/guiguzhenxuan-backend-go ## Basic Information - **Project Name**: guiguzhenxuan-backend-go - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-23 - **Last Updated**: 2025-09-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 硅谷甄选前端项目后端 API 【项目原作者https://github.com/WangJian3306/vue3_admin_backend】 使用 Golang 实现的硅谷甄选项目的后端 API,已实现老师上课使用的所有 API,欢迎大家提提建议。 ## 如何使用(docker方式) 需要本地电脑已经安装好 `docker` 和 `docker-compose`,如何安装和使用`docker`请参考尚硅谷的`docker`课程。 1. 克隆本项目到本地目录 ``` git clone https://github.com/WangJian3306/vue3_admin_backend.git ``` 2. 使用`docker-compose`一键启动 ``` cd vue3_admin_backend docker-compose up --build -d ``` 3. 运行成功后就可以浏览器器访问 `swagger`地址进行测试,`swagger`地址:`http://127.0.0.1:10086/swagger/index.html#/` ![swagger页面](./images/swagger-ui.png) 4. `swagger`地址能够访问,说明程序启动没问题,可以使用本地地址(127.0.0.1:10086)给前端调用了。 ```env // .evn.development # 变量必须以 VITE_ 为前缀才能暴露给外部读取 NODE_ENV = 'development' VITE_APP_TITLE = '硅谷甄选运营平台' VITE_APP_BASE_API = '/api' # VITE_SERVE = 'http://sph-api.atguigu.cn' VITE_SERVE = 'http://127.0.0.1:10086' ``` 5. 登录测试,默认账号密码:`admin`/`111111` ```bash curl -X 'POST' \ 'http://127.0.0.1:10086/admin/acl/index/login' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "password": "111111", "username": "admin" }' ``` 预期输出: ```json { "code": 200, "data": "This is Token...", "message": "success", "ok": true } ``` ## 如何使用(命令行方式) 将conf文件夹下的config.yaml复制到根目录下,然后在命令行中运行如下命令: go run main.go 运行成功后就可以浏览器访问 `swagger`地址进行测试,`swagger`地址:`http://127.0.0.1:10086/swagger/index.html#/` ## 不同 已知的和老师前端实现不同地方如下,其它地方同学如果发现和老师的不同,请参考[我实现的前端代码](https://github.com/WangJian3306/vue3_admin_template.git)进行调整。 1. 本项目实现所有 API 接口都是进行`Token`验证的。 老师上课实现的路由守卫已经自动全部都带了`Token`,不用担心。
但是在使用`swagger`时需要先登录获取`token`,稍微麻烦些。 2. 文件上传接口`/admin/product/fileUpload` 本项目实现的文件上传接口需要验证`Token`,`` 组件上传时,需使用`headers`属性携带`Token`请求头。 ```vue ``` 3. 前端`SaleAttr interface`中的`baseSaleAttrId`字段数据类型为`number`,页面使用不兼容时,需要使用`Number()`进行数据类型转换。 ```typescript // 销售属性对象 export interface SaleAttr { id?: number spuId?: number baseSaleAttrId: number // 这里是 number,没有 string saleAttrName: string spuSaleAttrValueList: SpuSaleAttrValueList flag?: boolean saleAttrValue?: string } // 准备一个新的销售属性对象:将来带给服务器即可 let newSaleAtrr: SaleAttr = { baseSaleAttrId: Number(baseSaleAttrId), // 这里是使用 Number() 进行数据类型转换 saleAttrName, spuSaleAttrValueList: [], } ``` ## 已实现的 API ### 后台登录与用户信息 - [X] 用户登录接口(/admin/acl/index/login) - [X] 用户登出接口(/admin/acl/index/logout) - [X] 用户信息接口(/admin/acl/index/info) ### 菜单管理 - [X] 获取菜单列表接口(/admin/acl/permission) - [X] 角色分配权限接口(/admin/acl/permission/doAssign) - [X] 删除菜单接口(/admin/acl/permission/remove/{id}) - [X] 新增菜单接口(/admin/acl/permission/save) - [X] 根据角色获取菜单接口(/admin/acl/permission/toAssign/{roleId}) - [X] 更新菜单接口(/admin/acl/permission/update) ### 角色管理 - [X] 删除角色接口(/admin/acl/role/remove/{id}) - [X] 新增角色接口(/admin/acl/role/save) - [X] 更新角色接口(/admin/acl/role/update) - [X] 获取角色分页列表(/admin/acl/role/{page}/{limit}) ### 用户管理 - [X] 批量删除用户接口(/admin/acl/user/batchRemove) - [X] 用户分配角色接口(/admin/acl/user/doAssignRole) - [X] 删除用户接口(/admin/acl/user/remove/{id}) - [X] 用户新增接口(/admin/acl/user/save) - [X] 用户角色分配接口(/admin/acl/user/toAssign/{adminId}) - [X] 更新用户接口(/admin/acl/user/update) - [X] 获取用户分页列表(/admin/acl/user/{page}/{limit}) ### 商品基础属性接口 - [X] 删除基础属性接口(/admin/product/deleteAttr/{attrId}) - [X] 获取分类下已有的属性与属性值接口(/admin/product/attrInfoList/{c1Id}/{c2Id}/{c3Id}) - [X] 添加或者修改已有的属性的(/admin/product/saveAttrInfo) ### 品牌管理 - [X] 删除品牌接口(/admin/product/baseTrademark/remove/{id}) - [X] 新增品牌接口(/admin/product/baseTrademark/save) - [X] 更新品牌接口(/admin/product/baseTrademark/update) - [X] 获取品牌分页列表接口(/admin/product/baseTrademark/{page}/{limit}) - [X] 获取全部品牌数据(/admin/product/baseTrademark/getTrademarkList) ### 上传文件 - [X] 上传文件接口(/admin/product/fileUpload) ### 商品分类接口 - [X] 获取一级分类接口(/admin/product/getCategory1) - [X] 获取二级分类接口(/admin/product/getCategory2/{id}) - [X] 获取三级分类接口(/admin/product/getCategory3/{id}) ### 商品 SPU 接口 - [X] 获取SPU分页列表(/admin/product/{page}/{limit} - [X] 获取全部销售属性(/admin/product/baseSaleAttrList) - [X] 新增SPU(/admin/product/saveSpuInfo) - [X] 更新SPU(/admin/product/updateSpuInfo) - [X] 删除SPU(/admin/product/deleteSpu/{spuId}) ### 商品 SKU 接口 - [X] 获取某个SPU下的全部的售卖商品的图片数据(/admin/product/spuImageList/{spuId}) - [X] 获取某个SPU下的全部的已有的销售属性接口(/admin/product/spuSaleAttrList/{spuId}) - [X] 新增SKU(/admin/product/saveSkuInfo) - [X] 根据SPU ID查询SKU(/admin/product/findBySpuId/{spuId}) - [X] 获取商品 SKU 分页列表(/admin/product/list/{page}/{limit}) - [X] 商品上架接口(/admin/product/onSale/{skuId}) - [X] 商品下架接口(/admin/product/cancelSale/{skuId}) - [X] 商品详情接口(/admin/product/getSkuInfo/{skuId}) - [X] 删除商品接口(/admin/product/deleteSKU/{skuId}) ## 鸣谢: 感谢尚硅谷和贾成豪老师录制的前端视频课程免费给大家学习。 (完)