项目简介

本次项目计划实现一个CS架构的外卖平台模拟软件,下面是需求列表

注:一切以功能实现为主,安全性可能有所缺失

前端界面

  • 用户登录界面
  • 用户注册界面
  • 消费者界面
    • 菜品列表界面
    • 订单状态界面
    • 选中菜品的详细信息
    • 购物车子窗口
    • 充值&用户升级子窗口
    • 历史记录子窗口(选做)
  • 商家界面
    • 已有菜品界面
    • 菜品注册子窗口
    • 菜品信息编辑子窗口
    • 订单处理子窗口
    • 营收统计子窗口(extra)
  • 管理员界面
    • 账户管理(可选)
    • 菜品管理(可选)
    • 销售额日志界面

前端业务逻辑

  • 用户登录界面逻辑
    • 账户认证
    • 根据账户类型创建不同的当前账户
    • 向服务器请求验证账户信息(远端)
  • 用户注册界面逻辑
    • 向服务器请求用户名注册
    • 向服务器请求电话号码注册
  • 消费者界面逻辑
    • 管理购物车中的菜品
    • 当前用户对象获取优惠级别
    • 向服务器请求菜品列表
    • 向服务器请求关键字搜索(选做)
    • 向服务器请求菜品详情
    • 动态生成菜品价格展示
    • 动态生成订单对象
    • 向服务器请求充值
    • 向服务器请求升级用户等级
    • 向服务器请求提交订单
    • 从服务器接收订单状态更新
  • 商家界面逻辑
    • 向服务器请求商家菜品列表
    • 向服务器请求注册商品
    • 向服务器更新菜品详细信息
    • 向服务器请求营收信息
    • 从服务器接收历史订单
    • 从服务器接收新增订单
    • 向服务器请求处理订单
  • 管理员界面
    • TODO

后端业务逻辑

  • 响应账户登录,查询数据库

  • 响应注册结果,查改数据库

  • 响应菜品列表,查询数据库

  • 响应菜品详情,查询数据库

  • 响应充值结果,修改数据库

  • 响应订单新增请求,增加数据库

  • 响应订单处理请求,删改数据库

  • 定时处理过期订单,增删数据库

  • 响应商家菜品列表,查改数据库

  • 响应商家注册商品,查改数据库

  • 响应菜品详情更新,查改数据库

  • 响应营收信息查询,查询数据库

  • 管理员TODO

具体设计

数据库卡片设计

目前我们主要设计了三大需要存储的数据类型,即

  1. account账户表,用于统一管理商家和消费者的账户
  2. dishes菜品表,用于管理所有的菜品
  3. history历史记录表,用于存储所有的订单记录
  4. Orders订单临时表,存储所有在线订单

account

dishes

![order]

history

抽象分层

按照需求的分层,我们将整体项目抽象分层为4层,并规定了层与层之间的通信形式

其中上面两层属于客户端,下面两层属于服务端

  • 客户端内部使用信号槽机制通信
  • 客户端与服务端使用HTTP协议通信,将序列化后的对象封装入HTTP报文的body

用例图

类图

客户端类图设计

服务端类图设计

服务端的功能分割比较少,目前就两大类

  1. HTTPServer负责网络IO
  2. BankClient负责数据库交互

接口约定

由于采用前后端开发的方式,所以网络IO所用的接口要提前约定好

路径 接口名关键字 功能描述
/account/login/username login,username 用户名登录
/account/login/phone login,phone 用户电话登录
/account/register/code code 获取验证码
/account/register register 用户注册
/account/consumer/update update 用户升级
/consumer/dish/list dish, list 消费者看到的菜品列表
/consumer/dish/dishInfo disg, dishInfo 消费者看到的菜品详情
/consumer/order/generate orderGenerate 消费者请求提交订单
/consumer/order/list orderPay 消费之请求订单列表
/consumer/order/pay orderPay 消费者请求支付订单
/consumer/order/cancel orderCancel 消费者主动取消订单
/consumer/order/push orderPush 服务器向消费者推送订单更新信息
/consumer/account/update accountUpdate 消费者用户等级升级
/merchant/dish/list dish,list 商家看到的菜品列表
/merchant/dish/register merchant,registerDish 商家注册菜品
/merchant/dish/info merchant,dishInfo 商家获取菜品详情
/merchant/dish/update merchant,dishUpdate 商家更新菜品信息
/merchant/dish/del merchant,dishUpdate 商家删除
/merchant/order/list merchant,orderPush 服务端向商家客户端推送订单
/merchant/order/detail/dishlist merchant,orderPush 客户端请求订单菜品列表
/merchant/order/push merchant,orderPush 服务端向商家客户端推送订单
/merchant/order/proccess merchant,orderProccess 商家处理订单
/merchant/statistics merchant,statistics 商家请求营收数据
/admin/historyLogs admin,historyLogs 管理员请求销售日志

状态码约定

状态码 含义
200(默认) 成功
404 找不到资源
500 反序列化失败

项目立项

首先我们在github上创建了一个项目仓库,取名为项目名BeautyGoose,对应的中文名为美鹅

然后我们分别创建两个子文件夹serverclient用于分别开发服务端和客户端