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

📅 发布时间:2026/7/10 12:03:55 👁️ 浏览次数:
苍穹外卖学习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、视图对象VOsky-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配置示例nginxserver { listen 80; server_name localhost; location /api/ { proxy_pass http://localhost:8080/admin/; } }这样既提高了访问速度也保证了后端服务的安全。如果后端服务部署了多台服务器nginx还可以实现负载均衡nginxupstream 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 usernameadmin;修改Java代码将前端提交的密码进行MD5加密后再与数据库比对password DigestUtils.md5DigestAsHex(password.getBytes()); if (!password.equals(employee.getPassword())) { throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR); }这样就提高了系统的安全性。四、导入接口文档在前后端分离开发中接口文档是前后端协作的桥梁。通常我们会使用YApi网页容易卡或者apifox推荐这样的平台来管理和维护接口文档。操作步骤将课程资料中提供的项目接口导入建议用apifox导入类型选yapi。开发中前后端都依据接口定义进行开发和调试这样保证了接口的一致性和可维护性。五、Swagger接口文档框架可以仅了解Swagger是一个强大的接口文档生成工具可以让我们在开发过程中实时生成和测试接口文档。1. 介绍使用Swagger只需按照规范定义接口及接口相关信息就能自动生成接口文档并提供在线调试页面。这里我们使用Knife4j它是Swagger的增强解决方案界面更友好。2. 使用方式步骤1导入knife4j的Maven坐标xmldependency groupIdcom.github.xiaoymin/groupId artifactIdknife4j-spring-boot-starter/artifactId version3.0.2/version /dependency步骤2在配置类中添加Docket配置javaBean 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设置静态资源映射使接口文档页面可以访问javaOverride 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的内容虽然只是项目的开始但涉及的知识点非常全面从软件工程的整体流程到具体项目的功能架构和技术选型再到环境搭建和工具使用。通过这一天的学习我对苍穹外卖项目有了整体的认识也掌握了开发环境的搭建方法为后续的开发打下了坚实的基础。接下来我将继续深入学习各个业务模块的实现逐步完成苍穹外卖项目的开发。