当前位置: 首页 > news >正文

苍穹外卖学习day01:项目概述与环境搭建

最近开始学习一个企业级项目——苍穹外卖,这是一个专门为餐饮企业定制的外卖管理系统。项目分为管理端(商家使用)和用户端(点餐用户使用),涵盖从需求分析到上线运维的完整软件开发流程。作为第一阶段的学习,我主要了解了项目背景、技术选型,并完成了开发环境的搭建。下面将day01的内容整理成博客,与大家分享。

一、软件开发整体介绍

在开始项目之前,我们需要了解软件开发的全貌,包括流程、角色分工和常见环境。

1. 软件开发流程

一个标准的软件项目通常经历以下阶段:

  • 需求分析:输出需求规格说明书、产品原型

  • 设计:UI设计、数据库设计、接口设计

  • 编码:编写代码、单元测试

  • 测试:测试用例、测试报告

  • 上线运维:软件环境安装、配置

每个阶段都有明确的交付物,环环相扣。

2. 角色分工

  • 项目经理:负责整个项目,分配任务、把控进度

  • 产品经理:需求调研,输出需求文档和原型

  • UI设计师:根据原型设计界面效果图

  • 架构师:项目整体架构设计、技术选型

  • 开发工程师:代码实现

  • 测试工程师:编写测试用例,输出测试报告

  • 运维工程师:搭建环境、部署上线

3. 软件环境

  • 开发环境(development):开发人员使用,外部无法访问

  • 测试环境(testing):测试人员使用,模拟真实环境

  • 生产环境(production):线上环境,正式对外服务

二、苍穹外卖项目介绍

1. 项目定位

苍穹外卖专门为餐饮企业定制,帮助商家管理外卖业务,同时也为用户提供点餐功能。

2. 功能架构

管理端(商家使用)

  • 员工管理

  • 订单管理

  • 分类管理

  • 菜品管理

  • 套餐管理

  • 工作台

  • 数据统计

  • 来单提醒

用户端(小程序)

  • 微信登录

  • 微信支付

  • 商品浏览

  • 历史订单

  • 购物车

  • 地址管理

  • 用户下单

  • 用户催单

3. 产品原型

产品原型由产品经理设计,用于展示项目的业务功能,是开发和测试的重要依据。

4. 技术选型

苍穹外卖采用前后端分离架构,技术栈非常丰富:

  • 用户层:Node.js、Vue.js、ElementUI、微信小程序、Apache ECharts

  • 网关层:Nginx

  • 应用层:Spring Boot、Spring MVC、Spring Task、HttpClient、Spring Cache、JWT、阿里云OSS、Swagger、POI、WebSocket

  • 数据层:MySQL、Redis、MyBatis、PageHelper、Spring Data Redis

  • 工具:Git、Maven、JUnit、Postman

这套技术栈涵盖了目前Java后端开发的常用框架,非常适合用来提升实战能力。

三、开发环境搭建

1. 整体结构

项目分为前端和后端:

  • 管理端Web(基于nginx运行)

  • 用户端小程序

  • 后端Java服务(分模块开发)

2. 前端环境搭建

前端工程基于nginx运行,只需要双击nginx.exe启动nginx服务,访问端口80即可。前端请求通过nginx反向代理转发到后端。

把下载的项目前端部分放在一个没中文的路径下:项目\资料\day01\前端运行环境\nginx-1.20.2,双击运行

访问localhost能正常显示html就行了

3. 后端环境搭建

后端采用Maven进行分模块构建,项目结构如下:

  • sky-common:公共类、工具类,供其他模块使用

  • sky-pojo:实体类(Entity)、数据传输对象(DTO)、视图对象(VO)

  • sky-server:配置文件、配置类、拦截器、Controller、Service、Mapper、启动类等

把资料中\后端初始工程\sky-take-out导入,使用Git进行版本控制,将本地代码推送到远程仓库。


数据库环境这里用MYSQLWorkerbench运行资料里的sql文件创建表结构。数据库密码配置在 application-dev.yml 文件中,记得改成自己的密码

进入ide调试,clean然后compile,不出意外应该会报错,在设置里把java版本换到17,把lombok版本改成30以上(这里我是1.18.34),然后编译就成功了。

4. 前后端联调

初始工程已经实现了登录功能,我们可以进行联调测试。
前端请求地址:http://localhost/api/employee/login
后端接口地址:http://localhost:8080/admin/employee/login

登录账户名admin,密码123456(数据库empolyee中已经有一个账户),可以看到项目已经导入成功了,可以正常登录进去显示初始页面。

这里使用了nginx反向代理,将/api路径的请求转发到后端服务器。
nginx配置示例:

nginx

server { listen 80; server_name localhost; location /api/ { proxy_pass http://localhost:8080/admin/; } }

这样既提高了访问速度,也保证了后端服务的安全。

如果后端服务部署了多台服务器,nginx还可以实现负载均衡

nginx

upstream webservers { server 192.168.100.128:8080; server 192.168.100.129:8080; } server { listen 80; server_name localhost; location /api/ { proxy_pass http://webservers/admin/; } }

负载均衡策略包括轮询、权重、ip_hash等。

5. 完善登录功能

初始项目中,员工表的密码是明文存储,存在安全隐患。我们做了两处改进:

  • 将数据库中的密码改为MD5加密后的密文(例如123456加密后为e10adc3949ba59abbe56e057f20f883e如果用mysqlworkerbench,改完记得commit一下!

UPDATE sky_take_out.employee SET password = MD5('你的密码') WHERE username='admin';
  • 修改Java代码,将前端提交的密码进行MD5加密后再与数据库比对:

password = DigestUtils.md5DigestAsHex(password.getBytes()); if (!password.equals(employee.getPassword())) { throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR); }

这样就提高了系统的安全性。

四、导入接口文档

在前后端分离开发中,接口文档是前后端协作的桥梁。通常我们会使用YApi(网页容易卡)或者apifox(推荐)这样的平台来管理和维护接口文档。

操作步骤:

  1. 将课程资料中提供的项目接口导入:建议用apifox导入,类型选yapi。

  1. 开发中,前后端都依据接口定义进行开发和调试,这样保证了接口的一致性和可维护性。

五、Swagger接口文档框架(可以仅了解)

Swagger是一个强大的接口文档生成工具,可以让我们在开发过程中实时生成和测试接口文档。

1. 介绍

使用Swagger,只需按照规范定义接口及接口相关信息,就能自动生成接口文档,并提供在线调试页面。
这里我们使用Knife4j,它是Swagger的增强解决方案,界面更友好。

2. 使用方式

步骤1:导入knife4j的Maven坐标

xml

<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.2</version> </dependency>

步骤2:在配置类中添加Docket配置

java

@Bean public Docket docket() { ApiInfo apiInfo = new ApiInfoBuilder() .title("苍穹外卖项目接口文档") .version("2.0") .description("苍穹外卖项目接口文档") .build(); return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo) .select() .apis(RequestHandlerSelectors.basePackage("com.sky.controller")) .paths(PathSelectors.any()) .build(); }

步骤3:设置静态资源映射,使接口文档页面可以访问

java

@Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/doc.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); }

之后访问http://ip:port/doc.html即可看到接口文档页面,并可以直接进行接口测试。

3. Swagger常用注解

为了让生成的接口文档更具可读性,我们可以在Controller和实体类上使用Swagger注解:

  • @Api:用在类上,描述Controller的作用

  • @ApiOperation:用在方法上,描述接口的作用

  • @ApiModel:用在实体类上,描述实体

  • @ApiModelProperty:用在属性上,描述属性的含义

  • @ApiParam:用在参数上,描述参数含义

通过这些注解,接口文档会变得更加清晰。

4. Swagger与YApi的区别

  • YApi:设计阶段使用的工具,用于管理和维护接口文档,适合团队协作。

  • Swagger:开发阶段使用的框架,帮助后端开发人员做接口测试,自动生成文档。

两者并不冲突,可以结合使用:在YApi上定义接口,在开发中使用Swagger进行自测。

总结

day01的内容虽然只是项目的开始,但涉及的知识点非常全面:从软件工程的整体流程,到具体项目的功能架构和技术选型,再到环境搭建和工具使用。通过这一天的学习,我对苍穹外卖项目有了整体的认识,也掌握了开发环境的搭建方法,为后续的开发打下了坚实的基础。

接下来,我将继续深入学习各个业务模块的实现,逐步完成苍穹外卖项目的开发。

http://www.jsqmd.com/news/457811/

相关文章:

  • 语言太“标准”反被疑?百考通注入人类写作特征,自然过检
  • 用户的精细化运营
  • 国自然申报最后10天!AI救了我的申请书,写审改一条龙太香了
  • 人工智能之语言领域 自然语言处理 第六章 情感分析
  • c++小知识点
  • 最新版国产龙虾(CoPaw0.0.5.Post1)windows10一键安装成功,用ollama选本地部署的大模型,成功使用!
  • 企业效率工具盘点:基于DeepMiner的可信智能体,人机协同新选择
  • JavaScript入门指南:从基础到实战
  • 2026年智能驾驶模拟器价格大揭秘,教你如何选到高性价比产品 - 工业品网
  • Visual Studio 2022 安装失败:无法安装 Microsoft.Net.4.8.FullRedist.20H2 解决
  • JAVA无人棋牌室源码实现方案
  • Java基础面试题拷打(2)
  • Redis基础
  • 中转API选择,五大平台哪个更适合你
  • OpenClaw 多会话配置说明
  • 【算法面试必刷】160. 相交链表
  • Flutter 组件 colorize_lumberdash 适配鸿蒙 HarmonyOS 实战:色彩化日志调试,构建直观的异常检测矩阵
  • 基于大数据+Hadoop+深度学习的经典名著推荐系统设计与开发(源码+精品论文+答辩PPT等资料)
  • 预应力塑料波纹管用途
  • DeekSeek 3.2和Qwen 3.5生成的求解24点程序对比
  • 移远通信 × 圆周率科技:PanoX V5全新亮相,将全景影像能力“装进”日常生活
  • Flutter 组件 geohash_plus 适配鸿蒙 HarmonyOS 实战:高维地理降维,构建纳秒级时空索引矩阵
  • Spring Boot隐式参数注入:代码优雅升级指南
  • linux关键指令无废话
  • 偷偷保存!高效破解压缩包密码的神级软件!
  • 0-MySQL 在 Centos 7环境详细安装过程
  • PAT 乙级 1047
  • Claude Code 保姆级攻略,包含连接vscode/JetBrains(2026)
  • 木下~Linux系统编程之静态库与动态库
  • 多无人机动态避障路径规划研究:基于粒子群优化算法PSO的多无人机动态避障路径规划研究(可以自定义无人机数量及起始点),MATLAB代码