sky-take-out

209 阅读2分钟

员工管理

  1. 全局异常处理器 用户名已存在
  2. 在拦截器里解析员工id,利用ThreadLocal放入线程局部变量中,从service里面取值 动态获取员工id
  3. 在WebMvcConfiguration中扩展Spring MVC消息转换器。 统一对日期类型进行格式化处理

端口占用问题

netstat -ano | findstr 8080

taskkill /pid 14188 /f

公共字段填充

image.png

文件上传

  1. 使用阿里云OSS服务,导入对应maven依赖
  2. 参数配置image.png
  3. 定义配置类,用于创建AliOssUtil对象

菜品分页查询

  1. 表别名,字段别名
  2. 左外连接,连接条件
  3. image.png

新增菜品

  1. 新增菜品和对应口味 image.png image.png

删除菜品

image.png

  1. 是否存在起售中的菜品
  2. 是否被套餐关联了
  3. 删除菜品,删除对应口味
  4. 多个菜品id,SQL用in关键字 image.png

修改菜品

  1. 修改菜品
  2. 删除对应口味
  3. 插入新的口味

设置店铺营业状态

  1. 使用redis存储状态值
  2. 设置三个接口
  3. 管理端设置店铺营业状态,管理端查询店铺营业状态,用户端查询营业状态

微信登录

  1. 小程序获取code
  2. 服务端根据code,appid,appsecret获取openid
  3. 根据openid判断当前用户是否为新用户,不是完成注册,返回用户对象
  4. 根据密钥,有效时间,返回对象生成token

商品浏览功能

image.png

缓存菜品,缓存套餐

  1. Redis使用注解实现缓存 spring cache
  2. Redis使用RedisTemplate方式实现

地址簿功能

image.png

用户下单

  1. 地址簿为空、购物车数据为空
  2. 向订单表插入1条数据,向订单明细表插入n条数据
  3. 清空当前用户的购物车数据 image.png

小程序接入微信支付

image.png

订单状态定时处理

  1. 支付超时的订单
  2. 派送中的订单一直不点击完成
  3. Spring Task cron表达式,定义任务触发时间

来单提醒,客户催单

  1. 支付成功,微信调用支付成功的回调
  2. 读取微信传过来的数据并解密
  3. 修改订单状态,做来电提醒
//通过websocket向客户端浏览器推送消息 type orderId content
Map map = new HashMap();
map.put("type",1); // 1表示来单提醒 2表示客户催单
map.put("orderId",ordersDB.getId());
map.put("content","订单号:" + outTradeNo);

String json = JSON.toJSONString(map);
webSocketServer.sendToAllClient(json);
  • 客户催单:查看订单是否存在,通过websocket向客户端浏览器推送消息

数据统计

  • Apache Echarts
  1. 营业额统计
  2. 用户统计
  3. 订单统计
  4. 销量排行Top10
  • 工作台 image.png

image.png

  • Apache POI

image.png

image.png

giteepage 踩坑

image.png