# sky-take-out **Repository Path**: superxtddx/sky-take-out ## Basic Information - **Project Name**: sky-take-out - **Description**: 黑马程序员《苍穹外卖》项目完结 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2023-07-10 - **Last Updated**: 2024-06-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sky-take-out #### 介绍 项目中主要分为3个模块,分别为sky-common、sky-pojo、sky-server模块。 sky-common模块主要用于存放公共类,比如一些常量类、异常类、工具类。sky-pojo用来存放Entity类、VO、DTO。整个项目做下来VO一般用来做返回值类型、DTO一般用来做方法中的形参类型。在有些方法中需要返回的值或者前端传递到方法中的值,实体类无法满足具体的要求,这个时候就用到了VO和DTO。sky-server主要用来存放业务代码,业务代码的编写主要是在这个模块中,包括Controller、Server和Mapper。 在项目中使用到了Swagger,Swagger是一个后端接口测试工具,YAPI是设计阶段使用的工具,用于管理和维护接口。可以在类上或者方法上添加上Swagger的相关注解,去生成相应的测试接口。 获取登录员工的id可以使用ThreadLocal,可以在任意位置获取到登录员工的id。项目中还用到了公共字段填充、自定义AutoFill注解,自定义切面类AutoFileAspect,在Mapper的方法上加上AutoFill注解,进行公共字段的自动填充,使用的技术点有枚举、注解、AOP、反射。 店铺营业状态的设置就用到了Redis,在店铺营业状态的设置使用中使用SpringDataRedis来对Redis进行操作。微信小程序端的菜品、套餐的展示也用到了Redis,使用SpringCache通过注解就能够实现缓存功能。使用Redis技术减少了对数据库的访问压力。 微信支付功能的实现需要用到商户号等,由于没有商户号,对微信支付这块的功能进行了简单的修改,仅仅是模拟微信支付的流程逻辑。 SpringTask是用来做定时任务的,SpringTask可以按照约定的时间自动执行某个Java代码。在项目中对订单状态一直是“待支付”状态,或者一直是“派送中”的状态,通过SpringTask对这两种状态进行处理,通过定时自动的修改它们的状态。 用户下单支付成功后,通知商家接单,以及用户在小程序上催单的功能用到了WebSocket。WebSocket可以实现浏览器与服务器的双向数据通信,WebSocket是基于TCP的一种新的网络协议,浏览器与服务器只需要一次握手,两者之间就可以创建持久性的连接,便可以实现浏览器与服务器的双向数据通信。 数据统计这块用到了ECharts可视化图标库,项目的后端开发主要是对数据的格式进行处理,后端传递给符合前端要求的动态数据。前端拿到数据进而进行图形化的展示。 导出Excel文件功能用到ApachePOI技术,它是用来处理Office各种文件格式的开源项目。 --- 就是这个项目。因为在微信小程序上,要完成支付的功能,需要商户号,因为个人没有商户号😂😂,所以对微信支付相关的代码做了修改。和支付相关的整个过程只是一个模拟,并没有真正地调用微信后台。在这个项目中,真正调用微信支付的功能代码也有,只是注释掉了,如果你有商户号,也可以把这些代码打开,实现真正支付的相关功能。 ⭐ **爱折腾的人不会输**