1.項目學習前置知識
- Java基礎知識
- javaweb
- MySQL
- SpringBoot
- SSM(Spring,SpringMVC,MyBatis)
- Maven
2.學習收獲
- 了解企業項目開發的完整流程,增長開發經驗
- 了解需求分析的過程,提高分析和設計能力
- 對所學的技術進行靈活應用,提高編碼能力
- 解決各種異常情況,提高代碼調試能力
3.軟體開發整體介紹
3.1軟體開發流程
3.2角色分工
3.3軟體環境
- 開發環境(development):開發人員在開發階段使用的環境,一般外部使用者無法通路
- 測試環境(testing):專門給測試人員使用的環境,用于測試項目,一般外部使用者無法通路
- 生産環境(production):即線上環境,正式提供對外服務的環境
4.項目整體介紹
4.1項目介紹
本項目是專門為餐飲企業(餐廳,飯店)定制的一款軟體産品,包括系統管理背景和移動端應用兩個部分。其中系統管理背景主要提供給餐飲企業内部員工使用,可以對餐廳的菜品,套餐,訂單等進行管理維護。移動端應用是提供給消費者使用,可以線上浏覽菜品,添加購物車,下單等
本項目共分為3期進行開發:
- 第一期主要實作基本需求,其中移動端應用通過H5實作,使用者可以通過手機浏覽器通路
- 第二期主要針對移動端應用進行改進,使用微信小程式實作,使用者使用起來更加友善
- 第三期主要針對系統進行優化更新,提高系統的通路性能
4.2産品原型展示
産品原型,就是一款産品成型之前的一個簡單的架構,就是将頁面的排版布局展現出來,使産品的初步構思有一個可視化的展示。通過原型展示,可以更加直覺地了解項目的需求和提供的功能。
産品原型主要用于展示項目的功能,并不是最終的頁面功能
4.2.1管理端
- 背景登入
- 訂單明細
- 套餐管理
4.2.2使用者端
- 位址管理
- 點餐頁面&購物車
- 訂單查詢
4.3技術選型
4.4功能架構
4.5角色
- 後天系統管理者:登入背景管理系統,擁有後天系統中的所有操作權限
- 背景系統普通員工:登入後天管理系統,對菜品、套餐、訂單等進行管理
- C端使用者:登入移動端應用,可以浏覽菜品、添加購物車、設定位址、線上下單等
5.開發環境搭建
5.1資料庫環境
sql檔案見項目檔案夾
序号 | 表名 | 說明 |
1 | employee | 員工表 |
2 | category | 菜品和套餐分類表 |
3 | dish | 菜品表 |
4 | setmeal | 套餐表 |
5 | setmeal_dish | 套餐菜品關系表 |
6 | dish_flavor | 菜品口味關系表 |
7 | user | 使用者表(C端) |
8 | address_book | 位址簿表 |
9 | shopping_cart | 購物車表 |
10 | orders | 訂單表 |
11 | order_detail | 訂單明細表 |
5.2搭建maven項目
(1)File-New-Project-Maven-不用選擇模闆直接Next-輸入項目名,坐标-Finish
(2)導入pom.xml檔案
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.li</groupId> <artifactId>reggie-take-out</artifactId> <version>1.0-SNAPSHOT</version> <!--指定jdk版本--> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <!--導入父工程--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.3</version> <relativePath/> </parent> <dependencies> <!--spring-boot核心啟動器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!--springboot starter--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--web starter--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <scope>compile</scope> </dependency> <!--mybatis-plus的springboot支援--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency> <!--Lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> </dependency> <!--用于對JSON格式的資料進行解析和打包--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.76</version> </dependency> <!--提供有用的Util類--> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <!--mysql驅動--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!--druid starter--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.23</version> </dependency> </dependencies> <build> <plugins> <plugin> <!--将SpringBoot應用打包為可執行的jar或war檔案, 以通常的方式運作springboot應用--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.5.3</version> </plugin> </plugins> </build> </project>
(3)配置檔案application.yml
server: port: 8080 #端口号spring: application: #應用名稱 name: reggie-take-out datasource: druid: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/reggie?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true username: root password: 123456mybatis-plus: configuration: #在映射實體或者屬性時,将資料庫中表名和表的字段名中的下劃線去掉,然後按照駝峰命名法映射 # 如 address_book-->addressBook user_name-->userName map-underscore-to-camel-case: true # 預設就是開啟的 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: id-type: ASSIGN_ID
(4)編寫啟動類
package com.li.reggie; import lombok.extern.slf4j.Slf4j;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author 李 * @version 1.0 */@Slf4j@SpringBootApplicationpublic class ReggieApplication { public static void main(String[] args) { SpringApplication.run(ReggieApplication.class, args); log.info("項目啟動成功..."); }}
運作測試:
(5)導入前端的代碼資源
resources||-------backend 資源目錄||-------front 資源目錄
(6)配置靜态資源映射路徑
package com.li.reggie.config; import lombok.extern.slf4j.Slf4j;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; /** * @author 李 * @version 1.0 */@Slf4j@Configurationpublic class WebMvcConfig extends WebMvcConfigurationSupport { /** * 進行靜态資源映射,也可以直接在配置檔案中配置 * * @param registry */ @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { log.info("開始進行靜态資源映射..."); //将接收到的 http://ip+port/backend/** 請求,映射到路徑的 /backend/ 目錄下 registry.addResourceHandler("/backend/**") .addResourceLocations("classpath:/backend/"); //将接收到的 http://ip+port/front/** 請求,映射到路徑的 /front/ 目錄下 registry.addResourceHandler("/front/**") .addResourceLocations("classpath:/front/"); }}