背景外卖点餐系统提供产品原型展示理解业务大概了解 产品原型图如果设计Figma/墨刀功能商家后台用户小程序点餐相关技术选型开发环境搭建前端后端前端-WEB前端-小程序后期搞后端nginxnginxnginx必须在没有中文的目录中我的地址是在D:\SKY_EXPRESS\nginx-1.20.2\html\sky进入nginx安装目录D:\SKY_EXPRESS\nginx-1.20.2直接点击nginx.exe即可启动运行。默认端口号为80nginx其他具体见其他文章后端简介初始工程导入地址D:\外卖练手项目\资料\day01\后端初始工程\sky-take-outIDEA导入该地址的sky-take-outGitGitee创建git 仓库提交登录gitee创建私人仓库复制生成的gitee仓库地址信息 https://gitee.com/DS-git-use/sky-take-out.gitgit -push -define remote提交后刷新gitee仓库即可数据库D:\SKY_EXPRESS\数据库 地址下数据库直接在文件sky.sql 中定义在navicat15 中选择 文件-打开外部文件-查询 按钮打开sky.sql 文件全选后执行sql刷新右侧出现对应所有数据库与表前后端联调首先对项目进行maven 编译可以看到编译失败需要变更pom 文件中lombok的版本。阿里云当前支持1.18.30更改完pom 文件后继续clean -compile,点击后发现还是报错发现是我的电脑安装JDK版本过高源码的spring版本2需要JDK8版本。IDEA支持不同项目适配不同JDK版本。下载好JDK8后解压到指定文件夹我是直接搜AI完成的安装配置你不需要把 JDK 8 安装到系统环境变量中也不需要卸载现有的 JDK 21。IntelliJ IDEA 的设计非常灵活它允许你为每个项目Project甚至每个模块Module单独指定使用的 JDK 版本。这并不会影响你电脑上其他使用 JDK 21 的项目也不会改变系统的 JAVA_HOME 环境变量。以下是具体的操作步骤只需几分钟即可完成第一步准备好 JDK 8如果还没下载IDEA 本身不包含 JDK所以你需要先有 JDK 8 的文件。* 推荐做法下载 JDK 8 的压缩包ZIP/TAR.GZ版本解压到一个文件夹例如 C:Javajdk1.8.0_301Windows或 /Users/xxx/Java/jdk1.8.0_301Mac/Win。* 注意不需要运行安装程序也不需要配置系统的环境变量。第二步在 IDEA 中为当前项目配置 JDK 8请确保你已经打开了那个需要使用 JDK 8 的具体项目然后按照以下步骤操作1. 打开项目结构设置* 点击菜单栏的 File - Project Structure... (Windows) 或直接使用快捷键 CtrlAltShiftS。2. 添加 JDK 8 到项目中* 在弹出的窗口左侧选择 Platform Settings 下的 SDKs。* 点击左上角的 号 - JDK。* 在弹出的文件选择框中找到你刚才解压的 JDK 8 文件夹例如 C:Javajdk1.8.0_301选中它并点击 OK。* 此时你已经把这个 JDK 8 “注册”到了当前项目中。3. 设置项目使用 JDK 8* 在左侧列表中点击 Project。* 在右侧的 Project SDK 下拉菜单中选择你刚刚添加的 JDK 8。* 同时将 Project language level 改为 8 (Lambdas, type annotations etc.)。4. 设置模块使用 JDK 8* 在左侧列表中点击 Modules。* 选中你的模块在右侧的 Module SDK 下拉菜单中再次确认选择 JDK 8。* Sources 标签页下的 Language level 也改为 8。5. 配置编译器* 点击菜单栏 File - Settings (或 CtrlS)。* 导航到 Build, Execution, Deployment - Compiler - Java Compiler。* 在 Project bytecode version 中选择 8。* 如果下方有模块列表确保对应模块的 Target bytecode 也是 8。第三步验证效果配置完成后你可以通过以下方式验证1. 查看底部状态栏IDEA 右下角通常会显示当前文件的 JDK 版本。2. 运行测试代码public class Test {public static void main(String[] args) {System.out.println(System.getProperty(java.version));}}运行这段代码如果输出 1.8.0_xxx说明配置成功特别提醒关于 Maven/Gradle 项目如果你的项目是 Maven 或 Gradle 项目除了上述 IDEA 的配置外还必须确保构建工具的配置文件与 IDEA 一致否则打包时可能会出错* Maven检查 pom.xml 文件确保有如下配置propertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/properties完成以上所有步骤后你的这个项目就会“独享”JDK 8而你电脑上其他新项目依然可以愉快地使用 JDK 21互不干扰。登录功能MD5加密数据库存储 账号密码为明文存储不安全需要对密码进行二次处理-- MD5加密。 JDK8可以直实现生成MD5字符串但是spring框架提供了封装好的方法实现MD5加密。路径com.sky.service.impl包路径下类 EmployeeServiceImpl中 login 方法中使用密码是否与输入密码相同的方式实现登录校验。使用MD5加密需要将数据库表employee中密码加密并使用spring内置的方法转换输入的密码。123456- e10adc3949ba59abbe56e057f20f883ehttps://www.md5.cz/ 这个网址可实现将明文转为对应MD5值。String md5Password DigestUtils.md5DigestAsHex(password.getBytes()); if (!md5Password.equals(employee.getPassword())) { //密码错误 throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR); }导入接口文档json格式视频使用了yapi,我直接使用了apifoxswager-knifeknife4j 在spring2 与 spring3 中maven坐标不一致请注意甄别。在maven 中导入相关依赖knife4j 是对swager的封装。 之后配置相关类与映射文件即可。POM配置文件如上所示。 配置类在类WebMvcConfiguration中加入Bean注解与Docket类代表一份 API 文档的配置摘要AI 千问查询结果它用于定义哪些接口要生成文档通过包路径、注解等筛选配置 API 的基本信息标题、版本、描述、作者等设置安全认证、分组策略等你可以把它理解为✅“API 文档的配置蓝图”✅“Swagger 文档的构建器”✅“接口文档的元数据容器”Bean public Docket docket() { ApiInfo apiInfo new ApiInfoBuilder() .title(苍穹外卖项目接口文档) .version(2.0) .description(苍穹外卖项目接口文档) .build(); Docket docket new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo) .select() .apis(RequestHandlerSelectors.basePackage(com.sky.controller)) .paths(PathSelectors.any()) .build(); return docket; }配置映射在WebMVCConfigration类下增加静态资源映射/** * 设置静态资源映射 * param registry */ protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler(/doc.html).addResourceLocations(classpath:/META-INF/resources/); registry.addResourceHandler(/webjars/**).addResourceLocations(classpath:/META-INF/resources/webjars/); }直接在当前网址后拼接设置的静态资源即访问http://localhost:8080/doc.html#/home 结果在docket类中设置了相关API名称等信息设置了要扫描的类com.sky.controller在controller类中增加相关api描述信息注解即可显示在接口文档中。相关注解信息如下注解说明Api用在类上例如Controller表示对类的说明Api(tags员工控制类Api)ApiModel用在类上例如entity、DTO、VOApiModelProperty用在属性上描述属性信息ApiOperation用在方法上例如Controller的方法说明方法的用途、作用ApiOperation(value 员工登录方法)Api(tags员工控制类Api) public class EmployeeController { ApiOperation(value 员工登录方法) public ResultEmployeeLoginVO login(RequestBody EmployeeLoginDTO employeeLoginDTO) { ApiModel(description 员工登录返回的数据格式) public class EmployeeLoginVO implements Serializable { ApiModelProperty(主键值) private Long id;员工管理-分类管理对相关员工进行CRUD操作需要产品输出原型图后设计接口、表结构再进行代码编写最后测试本项目约定•管理端发出的请求统一使用/admin作为前缀•用户端发出的请求统一使用/user作为前缀员工新增原型图如图当前端提交的数据和实体类中对应的属性差别比较大时建议使用DTO来封装数据员工分页查询、员工启用/禁用、员工编辑