MCPcopy Index your code
hub / github.com/WangJian3306/vue3_admin_backend

github.com/WangJian3306/vue3_admin_backend @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
294 symbols 626 edges 54 files 81 documented · 28% updated 8mo ago★ 1775 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

硅谷甄选前端项目后端 API

使用 Golang 实现的硅谷甄选项目的后端 API,已实现老师上课使用的所有 API,欢迎大家提提建议。

如何使用

需要本地电脑已经安装好 dockerdocker-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页面

  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'

  1. 登录测试,默认账号密码: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 }

不同

已知的和老师前端实现不同地方如下,其它地方同学如果发现和老师的不同,请参考我实现的前端代码进行调整。

  1. 本项目实现所有 API 接口都是进行Token验证的。

老师上课实现的路由守卫已经自动全部都带了Token,不用担心。

但是在使用swagger时需要先登录获取token,稍微麻烦些。

  1. 文件上传接口/admin/product/fileUpload

本项目实现的文件上传接口需要验证Token<el-upload> 组件上传时,需使用headers属性携带Token请求头。

```vue

```

  1. 前端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: [], } `` 4. 服务接口返回状态码与老师的不一样,除网络问题外,本项目不管接口是否成功,都返回200`状态码。

所有服务接口返回数据格式如下:

json { "code": 200, "data": {}, "message": "success", "ok": true } 前端在调用服务接口时,需要根据code字段判断接口是否成功。

```typescript // src/utils/request.ts // 第三步:request实例添加响应拦截器 request.interceptors.response.use( (response) => { // 成功回调 / 判断服务返回的 code 200 -> 请求成功 201 -> 请求参数错误 202 -> 用户名已存在,用于创建用户 203 -> 用户名不存在,用于登录 204 -> 用户名或密码错误,用于登录 205 -> 服务繁忙,服务内部错误 206 -> 无效的Token 207 -> 无权访问,需要登录 208 -> 该节点下有子节点,不可以删除 / const code = response.data.code if (code !== 200) { // 提示错误信息 ElMessage({ type: 'error', message: response.data.message, }) // 抛出错误 return Promise.reject(new Error(response.data.message)) }

   // 返回数据
   return response.data
 },
 (error) => {
   // 失败回调:处理http网络错误
 },

) ```

已实现的 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})

鸣谢:

感谢尚硅谷和贾成豪老师录制的前端视频课程免费给大家学习。

(完)

Core symbols most depended-on inside this repo

Shape

Method 168
Struct 95
Function 29
TypeAlias 2

Languages

Go100%

Modules by API surface

controller/doc_response_models.go16 symbols
dao/mysql/sku.go15 symbols
dao/mysql/user.go14 symbols
controller/user.go11 symbols
service/user.go10 symbols
model/sku.go10 symbols
dao/mysql/menu.go10 symbols
dao/mysql/spu.go9 symbols
service/spu.go8 symbols
service/sku.go8 symbols
model/user.go8 symbols
controller/spu.go8 symbols

Datastores touched

(mysql)Database · 1 repos

For agents

$ claude mcp add vue3_admin_backend \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page