1 Star 0 Fork 0

康振彬 / sports_shop_backend

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

一、运行方式

环境要求: MavenMysqljdk1.8及以上、tomcat9及以上

如果没有安装这些,可以阅读我的这几篇文章进行安装

1、下载源码,解压后用IDEA打开

找到utils目录下的.sql文件,附加到你的数据库中

image.png

作者我的数据库版本是(5.7),有需要自己修改以下两个

  • 数据库连接配置
  • maven依赖

image.png

image.png

2、 刷新maven,自动安装相关dependency

image.png

3、使用tomcat运行

image.png

运行效果

image.png

二、主要内容

使用技术

后端:Servlet、JavaBean、JDBC、JWT

前端:vue.js、axios、element-ui、echarts、

前端项目地址:sports_shop_front

API 接口说明

  • 接口基准地址:http://localhost:8888/sports_shop_backend_war/
  • 用户头像保存地址:http://localhost:8888/sports_shop_backend_war/users_picture/
  • 商品图片保存地址:http://localhost:8888/sports_shop_backend_war/goods_picture/
  • 服务端已开启 CORS 跨域支持
  • API接口 认证统一使用 Token 认证
  • 需要授权的 API ,必须在请求头中使用 Authorization 字段提供 token 令牌
  • 使用 HTTP Status Code 标识状态
  • 数据返回格式统一使用 JSON

响应状态码说明

状态码 含义 说明
200 OK 请求成功
201 CREATED \ INTSERT 创建成功 \ 新增添加成功
204 DELETED 删除成功
400 BAD REQUEST 请求的地址不存在或者包含不支持的参数
401 UNAUTHORIZED 未授权
403 FORBIDDEN 被禁止访问
404 NOT FOUND 请求的资源不存在
422 Unprocesable entity [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误
500 INTERNAL SERVER ERROR 内部错误

二、系统分析与接口设计

关于数据表与前端界面的详细信息,请移步看我的前端项目文档 sports_shop_front

数据库中共有五张表:

  • A、用户表
  • B、商品表
  • C、购物车表
  • D、订单表
  • E、评论表

前端共有七个界面:

  • 1、登录界面
  • 2、注册界面
  • 3、商品列表界面
  • 4、商品详情界面
  • 5、购物车界面
  • 6、订单界面
  • 7、个人中心界面

功能需求汇总

统计系统所需操作,思考后端接口编写

  • 1、登录验证
  • 2、注册用户(要能上传头像)
  • 3、获取商品数据
  • 4、查看指定商品的详细信息,(重点带上该商品的评论数据)
  • 5、添加商品到购物车 (为了简便,购物车可以一条条加,但结算应当一件全部结算)
  • 6、结算购物车数据成订单,(还要扣除用户余额)
  • 7、获取用户对应的订单数据
  • 8、添加商品评论信息
  • 9、获取个人信息
  • 10、user_id获取购物车数据
  • 11、购物车单独结算
  • 12、修改评论数据(订单表和评论表)
  • 13、删除单条评论数据
  • 14、删除单条购物车记录

待后续添加的功能:

  • 管理员 上架商品
  • 管理员 下架商品
  • 管理员为用户添加钱包金额

详细API接口设计

POST 1、登录验证

  • 请求路径:/login
  • 请求方法:post
  • 请求参数如下表:

请求参数

名称 位置 类型 必选 说明
username query string none
password query string none

返回示例

成功

{
  "data": {
    "grade": "vip",
    "level": 1,
    "password": "123456",
    "state_message": "这个人很懒,什么都没有留下",
    "token": "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIxIiwic3ViIjoiYWRtaW4iLCJpc3MiOiJpY2VmaXNoIiwiaWF0IjoxNjcwMjA3MjMyLCJleHAiOjE2NzAyOTM2MzIsImFjcm9zcyI6InRydWUiLCJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6ImFkbWluIn0.4WpF1CGGmuekH1c1q1h8bWGEo0FCizAOeiXfx1bfqH0",
    "type": "root",
    "user_id": 1,
    "user_picture": "http://127.0.0.1:8888/users_picture/xxx.jpg",
    "username": "admin",
    "wallet": 9999
  },
  "meta": {
    "msg": "登录成功",
    "status": 200
  }
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

POST 2、注册用户

  • 请求路径:/CreateUser
  • 请求方法:post
  • 请求参数如下表:

请求参数

名称 位置 类型 必选 说明
username query string none
password query string none
user_picture query string none
type query string none

返回示例

成功

{
  "data": {
    "grade": "vip",
    "level": 1,
    "password": "123456",
    "state_message": "这个人很懒,什么都没有留下",
    "type": "root",
    "user_id": 16,
    "user_picture": "http://192.168.123.53:8888/sports_shop_backend_war/users_picture/kzb68up.jpg",
    "username": "kzb",
    "wallet": 1000
  },
  "meta": {
    "msg": "添加用户成功",
    "status": 201
  }
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

POST 9、获取个人信息

  • 请求路径:/getUserInfo
  • 请求方法:post
  • 请求参数如下表:

请求参数

名称 位置 类型 必选 说明
user_id query string none

返回示例

成功

{
  "data": {
    "grade": "vip",
    "level": 1,
    "password": "123456",
    "state_message": "这个人很懒,什么都没有留下",
    "type": "root",
    "user_id": 4,
    "user_picture": "http://192.168.123.53:8888/sports_shop_backend_war/users_picture/kzb68up.jpg",
    "username": "冰镇生鲜",
    "wallet": -10189
  },
  "meta": {
    "msg": "获取用户信息成功",
    "status": 200
  }
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

POST 8、添加商品评论信息

  • 请求路径:/addComment
  • 请求方法:post
  • 请求参数如下表:

请求参数

名称 位置 类型 必选 说明
says_time query string none
says query string none
goods_id query string none
user_id query string none
username query string none
order_id query string none

返回示例

成功

{
  "data": "薇我50,肯德基疯狂星期四",
  "meta": {
    "msg": "添加评论成功",
    "status": 200
  }
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

POST 3、获取商品数据

  • 请求路径:/getAllGoods
  • 请求方法:post
  • 请求参数如下表:

返回示例

成功

{
  "data": [
    {
      "goods_describe": "为发烧而生",
      "goods_id": 1,
      "goods_name": "红米note",
      "goods_picture": "http://localhost:8888/sports_shop_backend_war/users_picture/kzb68up.jpg",
      "goods_price": 799
    },
    {
      "goods_describe": "为发烧而生",
      "goods_id": 2,
      "goods_name": "小米12S Pro",
      "goods_picture": "http://localhost:8888/sports_shop_backend_war/users_picture/kzb68up.jpg",
      "goods_price": 4399
    },
    {
      "goods_describe": "为发烧而生",
      "goods_id": 3,
      "goods_name": "小米12S",
      "goods_picture": "http://localhost:8888/sports_shop_backend_war/users_picture/kzb68up.jpg",
      "goods_price": 3699
    },
    {
      "goods_describe": "为发烧而生",
      "goods_id": 4,
      "goods_name": "小米12X",
      "goods_picture": "http://localhost:8888/sports_shop_backend_war/users_picture/kzb68up.jpg",
      "goods_price": 2699
    },
    {
      "goods_describe": "为发烧而生",
      "goods_id": 5,
      "goods_name": "小米11 青春版",
      "goods_picture": "http://localhost:8888/sports_shop_backend_war/users_picture/kzb68up.jpg",
      "goods_price": 1799
    },
    {
      "goods_describe": "为发烧而生",
      "goods_id": 6,
      "goods_name": "小米Civi2",
      "goods_picture": "http://localhost:8888/sports_shop_backend_war/users_picture/kzb68up.jpg",
      "goods_price": 2399
    }
  ],
  "meta": {
    "msg": "获取商品信息成功",
    "status": 200
  }
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

POST 4、查看指定商品的详细信息

  • 请求路径:/getGoodAndComment
  • 请求方法:post
  • 请求参数如下表:

请求参数

名称 位置 类型 必选 说明
goods_id query string none

返回示例

成功

{
  "data": {
    "comment": [
      {
        "order_id": 3,
        "says": "薇我50,肯德基疯狂星期四",
        "says_id": 1,
        "says_time": 1670083200000,
        "user_id": 2,
        "username": "冰镇生鲜"
      },
      {
        "order_id": 3,
        "says": "薇我30,肯德基疯狂星期四",
        "says_id": 2,
        "says_time": 1670083200000,
        "user_id": 2,
        "username": "冰镇生鲜"
      },
      {
        "order_id": 3,
        "says": "薇我20,肯德基疯狂星期四",
        "says_id": 3,
        "says_time": 1670169600000,
        "user_id": 2,
        "username": "冰镇生鲜"
      },
      {
        "order_id": 3,
        "says": "薇我10,肯德基疯狂星期四",
        "says_id": 4,
        "says_time": 1670688000000,
        "user_id": 2,
        "username": "冰镇生鲜"
      },
      {
        "order_id": 62,
        "says": "今天天气真不错",
        "says_id": 8,
        "says_time": 1670947200000,
        "user_id": 4,
        "username": "冰镇生鲜"
      },
      {
        "order_id": 63,
        "says": "吃了没",
        "says_id": 9,
        "says_time": 1670947200000,
        "user_id": 4,
        "username": "冰镇生鲜"
      }
    ],
    "goods_describe": "为发烧而生",
    "goods_id": 1,
    "goods_name": "红米note",
    "goods_picture": "http://localhost:8888/sports_shop_backend_war/users_picture/kzb68up.jpg",
    "goods_price": 799
  },
  "meta": {
    "msg": "获取商品信息成功",
    "status": 200
  }
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

POST 5、添加商品到购物车

  • 请求路径:/addShopCartToOrders
  • 请求方法:post
  • 请求参数如下表:

请求参数

名称 位置 类型 必选 说明
shopping_count query string none
shopping_amount query string none
goods_id query string none
goods_name query string none
goods_price query string none
goods_picture query string none
goods_describe query string none
user_id query string none
username query string none

返回示例

成功

{
  "data": {
    "goods_id": 1,
    "shopping_cart_id": 64,
    "user_id": 4
  },
  "meta": {
    "msg": "添加购物车成功",
    "status": 200
  }
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

POST 6、结算购物车数据成订单

  • 请求路径:/settlement
  • 请求方法:post
  • 请求参数如下表:

请求参数

名称 位置 类型 必选 说明
order_time query string none
order_count query string none
order_amount query string none
user_id query string none
username query string none
goods_id query string none
goods_name query string none
goods_price query string none
goods_picture query string none
goods_describe query string none
total_pay query string none

返回示例

成功

{
  "data": {
    "thanks": "没有别的意思,谢谢老板"
  },
  "meta": {
    "msg": "结算商品成功",
    "status": 201
  }
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

POST 7、获取用户对应的订单数据

  • 请求路径:/getOrdersByUserID
  • 请求方法:post
  • 请求参数如下表:

请求参数

名称 位置 类型 必选 说明
user_id query string none

返回示例

成功

{
  "data": [
    {
      "goods_describe": "为发烧而生",
      "goods_id": 4,
      "goods_name": "小米12X",
      "goods_picture": "http://localhost:8888/sports_shop_backend_war/users_picture/kzb68up.jpg",
      "goods_price": 2699,
      "order_amount": 2699,
      "order_count": 1,
      "order_id": 60,
      "order_time": 1670947200000,
      "says": "买家未做出评价",
      "user_id": 1,
      "username": "admin"
    },
    {
      "goods_describe": "为发烧而生",
      "goods_id": 5,
      "goods_name": "小米11 青春版",
      "goods_picture": "http://localhost:8888/sports_shop_backend_war/users_picture/kzb68up.jpg",
      "goods_price": 1799,
      "order_amount": 1799,
      "order_count": 1,
      "order_id": 61,
      "order_time": 1670947200000,
      "says": "买家未做出评价",
      "user_id": 1,
      "username": "admin"
    }
  ],
  "meta": {
    "msg": "获取商品信息成功",
    "status": 200
  }
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

POST 10、user_id获取购物车数据

  • 请求路径:/getShopCartById
  • 请求方法:post
  • 请求参数如下表:

请求参数

名称 位置 类型 必选 说明
user_id query string none

返回示例

成功

{
  "data": [
    {
      "goods_describe": "为发烧而生",
      "goods_id": 1,
      "goods_name": "红米note",
      "goods_picture": "http://192.168.123.53:8888/sports_shop_backend_war/users_picture/kzb68up.jpg",
      "goods_price": 1999,
      "shopping_amount": 799,
      "shopping_cart_id": 4,
      "shopping_count": 1,
      "user_id": 4,
      "username": "冰镇生鲜"
    },
    {
      "goods_describe": "为发烧而生",
      "goods_id": 1,
      "goods_name": "红米note",
      "goods_picture": "http://192.168.123.53:8888/sports_shop_backend_war/users_picture/kzb68up.jpg",
      "goods_price": 1999,
      "shopping_amount": 1999,
      "shopping_cart_id": 64,
      "shopping_count": 1,
      "user_id": 4,
      "username": "冰镇生鲜"
    }
  ],
  "meta": {
    "msg": "获取用户相关购物车成功",
    "status": 200
  }
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

POST 11、购物车单独结算

  • 请求路径:/simpleBuy
  • 请求方法:post
  • 请求参数如下表:

请求参数

名称 位置 类型 必选 说明
shopping_count query string none
shopping_amount query string none
goods_id query string none
goods_name query string none
goods_price query string none
goods_picture query string none
goods_describe query string none
user_id query string none
username query string none
shopping_cart_id query string none

返回示例

成功

{
  "msg": "购买成功。1、添加订单记录2、删除购物车记录3、扣除用户金额",
  "status": 200
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

POST 12、修改评论数据,订单表和评论表

  • 请求路径:/updateOrderSays
  • 请求方法:post
  • 请求参数如下表:

请求参数

名称 位置 类型 必选 说明
order_id query string none
says query string none
goods_id query string none
user_id query string none
username query string none

返回示例

成功

{
  "msg": "修改order表says成功,修改comment表says成功",
  "status": 200
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

POST 13、删除单条订单记录

  • 请求路径:/deleteOrdersById
  • 请求方法:post
  • 请求参数如下表:

请求参数

名称 位置 类型 必选 说明
order_id query string none

返回示例

成功

{
  "msg": "(60)删除订单记录成功",
  "status": 200
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

返回数据结构

POST 14、删除单条 购物车 记录

  • 请求路径:/deleteShoppingCartById
  • 请求方法:post
  • 请求参数如下表:

请求参数

名称 位置 类型 必选 说明
shopping_cart_id query string none

返回示例

成功

{
  "msg": "(60)删除订单记录成功",
  "status": 200
}

返回结果

状态码 状态码含义 说明 数据模型
200 OK 成功 Inline

空文件

简介

XMUT期末设计-运动商城系统后台 由经典的JavaWeb 改成前后端分离 使用技术:servlet、JavaBean、jdbc、JWT 展开 收起
Java
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/kang-zhenbin/sports_shop_backend.git
git@gitee.com:kang-zhenbin/sports_shop_backend.git
kang-zhenbin
sports_shop_backend
sports_shop_backend
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891