国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

蒼穹外賣-第一章項(xiàng)目介紹

這篇具有很好參考價值的文章主要介紹了蒼穹外賣-第一章項(xiàng)目介紹。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 蒼穹外賣項(xiàng)目介紹

1.1 項(xiàng)目介紹

1)管理端功能

員工登錄/退出 , 員工信息管理 , 分類管理 , 菜品管理 , 套餐管理 , 菜品口味管理 , 訂單管理 ,數(shù)據(jù)統(tǒng)計(jì),來單提醒。

2)用戶端功能

微信登錄 , 收件人地址管理 , 用戶歷史訂單查詢 , 菜品規(guī)格查詢 , 購物車功能 , 下單 , 支付、分類及菜品瀏覽。

1.2 產(chǎn)品原型

1)管理端

餐飲企業(yè)內(nèi)部員工使用。 主要功能有:

模塊 描述
登錄/退出 內(nèi)部員工必須登錄后,才可以訪問系統(tǒng)管理后臺
員工管理 管理員可以在系統(tǒng)后臺對員工信息進(jìn)行管理,包含查詢、新增、編輯、禁用等功能
分類管理 主要對當(dāng)前餐廳經(jīng)營的 菜品分類 或 套餐分類 進(jìn)行管理維護(hù), 包含查詢、新增、修改、刪除等功能
菜品管理 主要維護(hù)各個分類下的菜品信息,包含查詢、新增、修改、刪除、啟售、停售等功能
套餐管理 主要維護(hù)當(dāng)前餐廳中的套餐信息,包含查詢、新增、修改、刪除、啟售、停售等功能
訂單管理 主要維護(hù)用戶在移動端下的訂單信息,包含查詢、取消、派送、完成,以及訂單報(bào)表下載等功能
數(shù)據(jù)統(tǒng)計(jì) 主要完成對餐廳的各類數(shù)據(jù)統(tǒng)計(jì),如營業(yè)額、用戶數(shù)量、訂單等

2)用戶端

移動端應(yīng)用主要提供給消費(fèi)者使用。主要功能有:

模塊 描述
登錄/退出 用戶需要通過微信授權(quán)后登錄使用小程序進(jìn)行點(diǎn)餐
點(diǎn)餐-菜單 在點(diǎn)餐界面需要展示出菜品分類/套餐分類, 并根據(jù)當(dāng)前選擇的分類加載其中的菜品信息, 供用戶查詢選擇
點(diǎn)餐-購物車 用戶選中的菜品就會加入用戶的購物車, 主要包含 查詢購物車、加入購物車、刪除購物車、清空購物車等功能
訂單支付 用戶選完菜品/套餐后, 可以對購物車菜品進(jìn)行結(jié)算支付, 這時就需要進(jìn)行訂單的支付
個人信息 在個人中心頁面中會展示當(dāng)前用戶的基本信息, 用戶可以管理收貨地址, 也可以查詢歷史訂單數(shù)據(jù)

1.3 技術(shù)選型

關(guān)于本項(xiàng)目的技術(shù)選型, 我們將會從 用戶層、網(wǎng)關(guān)層、應(yīng)用層、數(shù)據(jù)層 這幾個方面進(jìn)行介紹,主要用于展示項(xiàng)目中使用到的技術(shù)框架和中間件等。

  • 用戶層 node.js VUE.js ElementUI 微信小程序 apache echarts
  • 網(wǎng)關(guān)層 Nginx
  • 應(yīng)用層 SpringBoot SpringMVC SpringTask SpringCache JWT 阿里云OSS httpclient Swagger POI WebSocket
  • 數(shù)據(jù)層 MySQL Redis mybatis
  • 工具 Git maven Junit postman pagehelper springdataredis

1)用戶層
后臺的前端頁面用到H5、Vue.js、ElementUI、apache echarts(展示圖表)等技術(shù)。移動端應(yīng)用使用到微信小程序。

2)網(wǎng)關(guān)層
Nginx是一個服務(wù)器,主要用來作為Http服務(wù)器,部署靜態(tài)資源,訪問性能高。在Nginx中還有兩個比較重要的作用: 反向代理和負(fù)載均衡, 在進(jìn)行項(xiàng)目部署時,要實(shí)現(xiàn)Tomcat的負(fù)載均衡,就可以通過Nginx來實(shí)現(xiàn)。

3)應(yīng)用層

  • SpringBoot: 快速構(gòu)建Spring項(xiàng)目, 采用 "約定優(yōu)于配置" 的思想, 簡化Spring項(xiàng)目的配置開發(fā)。
  • SpringMVC:SpringMVC是spring框架的一個模塊,springmvc和spring無需通過中間整合層進(jìn)行整合,可以無縫集成。
  • Spring Task: 由Spring提供的定時任務(wù)框架。
  • httpclient: 主要實(shí)現(xiàn)了對http請求的發(fā)送。
  • Spring Cache: 由Spring提供的數(shù)據(jù)緩存框架
  • JWT: 用于對應(yīng)用程序上的用戶進(jìn)行身份驗(yàn)證的標(biāo)記。
  • 阿里云OSS: 對象存儲服務(wù),在項(xiàng)目中主要存儲文件,如圖片等。
  • Swagger: 可以自動的幫助開發(fā)人員生成接口文檔,并對接口進(jìn)行測試。
  • POI: 封裝了對Excel表格的常用操作。
  • WebSocket: 一種通信網(wǎng)絡(luò)協(xié)議,使客戶端和服務(wù)器之間的數(shù)據(jù)交換更加簡單,用于項(xiàng)目的來單、催單功能實(shí)現(xiàn)。

4)數(shù)據(jù)層

  • MySQL: 關(guān)系型數(shù)據(jù)庫, 本項(xiàng)目的核心業(yè)務(wù)數(shù)據(jù)都會采用MySQL進(jìn)行存儲。
  • Redis: 基于key-value格式存儲的內(nèi)存數(shù)據(jù)庫, 訪問速度快, 經(jīng)常使用它做緩存。
  • Mybatis: 本項(xiàng)目持久層將會使用Mybatis開發(fā)。
  • pagehelper: 分頁插件。
  • spring data redis: 簡化java代碼操作Redis的API。

5)工具

  • git: 版本控制工具, 在團(tuán)隊(duì)協(xié)作中, 使用該工具對項(xiàng)目中的代碼進(jìn)行管理。
  • maven: 項(xiàng)目構(gòu)建工具。
  • junit:單元測試工具,開發(fā)人員功能實(shí)現(xiàn)完畢后,需要通過junit對功能進(jìn)行單元測試。
  • postman: 接口測工具,模擬用戶發(fā)起的各類HTTP請求,獲取對應(yīng)的響應(yīng)結(jié)果。

2. 開發(fā)環(huán)境搭建

2.1 熟悉項(xiàng)目結(jié)構(gòu)

對工程的每個模塊作用說明:

序號 名稱 說明
1 sky-take-out maven父工程,統(tǒng)一管理依賴版本,聚合其他子模塊
2 sky-common 子模塊,存放公共類,例如:工具類、常量類、異常類等
3 sky-pojo 子模塊,存放實(shí)體類、VO、DTO等
4 sky-server 子模塊,后端服務(wù),存放配置文件、Controller、Service、Mapper等
  • sky-common: 模塊中存放的是一些公共類,可以供其他模塊使用

    分析sky-common模塊的每個包的作用:

    名稱 說明
    constant 存放相關(guān)常量類
    context 存放上下文類
    enumeration 項(xiàng)目的枚舉類存儲
    exception 存放自定義異常類
    json 處理json轉(zhuǎn)換的類
    properties 存放SpringBoot相關(guān)的配置屬性類
    result 返回結(jié)果類的封裝
    utils 常用工具類
  • sky-pojo: 模塊中存放的是一些 entity、DTO、VO

    分析sky-pojo模塊的每個包的作用:

    名稱 說明
    Entity 實(shí)體,通常和數(shù)據(jù)庫中的表對應(yīng)
    DTO 數(shù)據(jù)傳輸對象,通常用于程序中各層之間傳遞數(shù)據(jù)
    VO 視圖對象,為前端展示數(shù)據(jù)提供的對象
    POJO 普通Java對象,只有屬性和對應(yīng)的getter和setter
  • sky-server: 模塊中存放的是 配置文件、配置類、攔截器、controller、service、mapper、啟動類等

    分析sky-server模塊的每個包的作用:

    名稱 說明
    config 存放配置類
    controller 存放controller類
    interceptor 存放攔截器類
    mapper 存放mapper接口
    service 存放service類
    SkyApplication 啟動類

2.2 數(shù)據(jù)庫環(huán)境搭建

序號 表名 中文名
1 employee 員工表
2 category 分類表
3 dish 菜品表
4 dish_flavor 菜品口味表
5 setmeal 套餐表
6 setmeal_dish 套餐菜品關(guān)系表
7 user 用戶表
8 address_book 地址表
9 shopping_cart 購物車表
10 orders 訂單表
11 order_detail 訂單明細(xì)表

2.3 前后端聯(lián)調(diào)

1.Controller層

在sky-server模塊中,com.sky.controller.admin.EmployeeController

/**
     * 登錄
     *
     * @param employeeLoginDTO
     * @return
     */
    @PostMapping("/login")
    public Result<EmployeeLoginVO> login(@RequestBody EmployeeLoginDTO employeeLoginDTO) {
        log.info("員工登錄:{}", employeeLoginDTO);
		//調(diào)用service方法查詢數(shù)據(jù)庫
        Employee employee = employeeService.login(employeeLoginDTO);

        //登錄成功后,生成jwt令牌
        Map<String, Object> claims = new HashMap<>();
        claims.put(JwtClaimsConstant.EMP_ID, employee.getId());
        String token = JwtUtil.createJWT(
                jwtProperties.getAdminSecretKey(),
                jwtProperties.getAdminTtl(),
                claims);

        EmployeeLoginVO employeeLoginVO = EmployeeLoginVO.builder()
                .id(employee.getId())
                .userName(employee.getUsername())
                .name(employee.getName())
                .token(token)
                .build();

        return Result.success(employeeLoginVO);
    }

2.Service層

在sky-server模塊中,com.sky.service.impl.EmployeeServiceImpl

/**
     * 員工登錄
     *
     * @param employeeLoginDTO
     * @return
     */
    public Employee login(EmployeeLoginDTO employeeLoginDTO) {
        String username = employeeLoginDTO.getUsername();
        String password = employeeLoginDTO.getPassword();

        //1、根據(jù)用戶名查詢數(shù)據(jù)庫中的數(shù)據(jù)
        Employee employee = employeeMapper.getByUsername(username);

        //2、處理各種異常情況(用戶名不存在、密碼不對、賬號被鎖定)
        if (employee == null) {
            //賬號不存在
            throw new AccountNotFoundException(MessageConstant.ACCOUNT_NOT_FOUND);
        }

        //密碼比對
        if (!password.equals(employee.getPassword())) {
            //密碼錯誤
            throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);
        }

        if (employee.getStatus() == StatusConstant.DISABLE) {
            //賬號被鎖定
            throw new AccountLockedException(MessageConstant.ACCOUNT_LOCKED);
        }

        //3、返回實(shí)體對象
        return employee;
    }

3.Mapper層

在sky-server模塊中,com.sky.mapper.EmployeeMapper

package com.sky.mapper;

import com.sky.entity.Employee;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface EmployeeMapper {

    /**
     * 根據(jù)用戶名查詢員工
     * @param username
     * @return
     */
    @Select("select * from employee where username = #{username}")
    Employee getByUsername(String username);

}

注:可以通過斷點(diǎn)調(diào)試跟蹤后端程序的執(zhí)行過程

2.4 nginx反向代理和負(fù)載均衡

對登錄功能測試完畢后,接下來一個問題:前端發(fā)送的請求,是如何請求到后端服務(wù)的?

前端請求地址:http://localhost/api/employee/login
后端接口地址:http://localhost:8080/admin/employee/login
很明顯,兩個地址不一致,那是如何請求到后端服務(wù)的呢?

1)nginx反向代理

nginx 反向代理,就是將前端發(fā)送的動態(tài)請求由 nginx 轉(zhuǎn)發(fā)到后端服務(wù)器

那為什么不直接通過瀏覽器直接請求后臺服務(wù)端,需要通過nginx反向代理呢?

nginx 反向代理的好處:

  • 提高訪問速度
    因?yàn)閚ginx本身可以進(jìn)行緩存,如果訪問的同一接口,并且做了數(shù)據(jù)緩存,nginx就直接可把數(shù)據(jù)返回,不需要真正地訪問服務(wù)端,從而提高訪問速度。

  • 進(jìn)行負(fù)載均衡
    所謂負(fù)載均衡,就是把大量的請求按照我們指定的方式均衡的分配給集群中的每臺服務(wù)器。

  • 保證后端服務(wù)安全
    因?yàn)橐话愫笈_服務(wù)地址不會暴露,所以使用瀏覽器不能直接訪問,可以把nginx作為請求訪問的入口,請求到達(dá)nginx后轉(zhuǎn)發(fā)到具體的服務(wù)中,從而保證后端服務(wù)的安全。

nginx 反向代理的配置方式:

server{
    listen 80;
    server_name localhost;

    location /api/{
        proxy_pass http://localhost:8080/admin/; #反向代理
    }
}

proxy_pass:該指令是用來設(shè)置代理服務(wù)器的地址,可以是主機(jī)名稱,IP地址加端口號等形式。

如上代碼的含義是:監(jiān)聽80端口號, 然后當(dāng)我們訪問 http://localhost:80/api/../..這樣的接口的時候,它會通過 location /api/ {} 這樣的反向代理到 http://localhost:8080/admin/上來。

接下來,進(jìn)到nginx-1.20.2\conf,打開nginx配置

# 反向代理,處理管理端發(fā)送的請求
location /api/ {
	proxy_pass   http://localhost:8080/admin/;
    #proxy_pass   http://webservers/admin/;
}

當(dāng)在訪問http://localhost/api/employee/login,nginx接收到請求后轉(zhuǎn)到http://localhost:8080/admin/,故最終的請求地址為http://localhost:8080/admin/employee/login,和后臺服務(wù)的訪問地址一致

2)nginx 負(fù)載均衡

當(dāng)如果服務(wù)以集群的方式進(jìn)行部署時,那nginx在轉(zhuǎn)發(fā)請求到服務(wù)器時就需要做相應(yīng)的負(fù)載均衡。其實(shí),負(fù)載均衡從本質(zhì)上來說也是基于反向代理來實(shí)現(xiàn)的,最終都是轉(zhuǎn)發(fā)請求。

nginx 負(fù)載均衡的配置方式:

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;#負(fù)載均衡
    }
}

upstream:如果代理服務(wù)器是一組服務(wù)器的話,我們可以使用upstream指令配置后端服務(wù)器組。

如上代碼的含義是:監(jiān)聽80端口號, 然后當(dāng)我們訪問 http://localhost:80/api/../..這樣的接口的時候,它會通過 location /api/ {} 這樣的反向代理到 http://webservers/admin,根據(jù)webservers名稱找到一組服務(wù)器,根據(jù)設(shè)置的負(fù)載均衡策略(默認(rèn)是輪詢)轉(zhuǎn)發(fā)到具體的服務(wù)器。

注:upstream后面的名稱可自定義,但要上下保持一致。

nginx 負(fù)載均衡策略:

名稱 說明
輪詢 默認(rèn)方式
weight 權(quán)重方式,默認(rèn)為1,權(quán)重越高,被分配的客戶端請求就越多
ip_hash 依據(jù)ip分配方式,這樣每個訪客可以固定訪問一個后端服務(wù)
least_conn 依據(jù)最少連接方式,把請求優(yōu)先分配給連接數(shù)少的后端服務(wù)
url_hash 依據(jù)url分配方式,這樣相同的url會被分配到同一個后端服務(wù)
fair 依據(jù)響應(yīng)時間方式,響應(yīng)時間短的服務(wù)將會被優(yōu)先分配

具體配置方式:

輪詢:

upstream webservers{
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}

weight:

upstream webservers{
    server 192.168.100.128:8080 weight=90;
    server 192.168.100.129:8080 weight=10;
}

ip_hash:

upstream webservers{
    ip_hash;
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}

least_conn:

upstream webservers{
    least_conn;
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}

url_hash:

upstream webservers{
    hash &request_uri;
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}

fair:

upstream webservers{
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
    fair;
}

3. 完善登錄功能

問題:員工表中的密碼是明文存儲,安全性太低。
解決思路:

  1. 將密碼加密后存儲,提高安全性
  2. 使用MD5加密方式對明文密碼加密

實(shí)現(xiàn)步驟:

  1. 修改數(shù)據(jù)庫中明文密碼,改為MD5加密后的密文
    打開employee表,修改密碼

  2. 修改Java代碼,前端提交的密碼進(jìn)行MD5加密后再跟數(shù)據(jù)庫中密碼比對
    打開EmployeeServiceImpl.java,修改比對密碼

   /**
        * 員工登錄
        *
        * @param employeeLoginDTO
        * @return
        */
       public Employee login(EmployeeLoginDTO employeeLoginDTO) {
           //1、根據(jù)用戶名查詢數(shù)據(jù)庫中的數(shù)據(jù)
           //2、處理各種異常情況(用戶名不存在、密碼不對、賬號被鎖定)
           //.......
           //密碼比對
           // TODO 后期需要進(jìn)行md5加密,然后再進(jìn)行比對
           password = DigestUtils.md5DigestAsHex(password.getBytes());
           if (!password.equals(employee.getPassword())) {
               //密碼錯誤
               throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);
           }
           //3、返回實(shí)體對象
           return employee;
       }

4. Swagger

4.1 介紹

Swagger 是一個規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)(https://swagger.io/)。 它的主要作用是:

  1. 使得前后端分離開發(fā)更加方便,有利于團(tuán)隊(duì)協(xié)作
  2. 接口的文檔在線自動生成,降低后端開發(fā)人員編寫接口文檔的負(fù)擔(dān)
  3. 功能測試

Spring已經(jīng)將Swagger納入自身的標(biāo)準(zhǔn),建立了Spring-swagger項(xiàng)目,現(xiàn)在叫Springfox。通過在項(xiàng)目中引入Springfox ,即可非常簡單快捷的使用Swagger。

knife4j是為Java MVC框架集成Swagger生成Api文檔的增強(qiáng)解決方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一樣小巧,輕量,并且功能強(qiáng)悍!

目前,一般都使用knife4j框架。

4.2 使用步驟

  1. 導(dǎo)入 knife4j 的maven坐標(biāo)

在pom.xml中添加依賴

   <dependency>
      <groupId>com.github.xiaoymin</groupId>
      <artifactId>knife4j-spring-boot-starter</artifactId>
   </dependency>
  1. 在配置類中加入 knife4j 相關(guān)配置

WebMvcConfiguration.java

   /**
        * 通過knife4j生成接口文檔
        * @return
   */
       @Bean
       public Docket docket() {
           ApiInfo apiInfo = new ApiInfoBuilder()
                   .title("蒼穹外賣項(xiàng)目接口文檔")
                   .version("2.0")
                   .description("蒼穹外賣項(xiàng)目接口文檔")
                   .build();
           Docket docket = new Docket(DocumentationType.SWAGGER_2)
                   .apiInfo(apiInfo)
                   .select()
                   .apis(RequestHandlerSelectors.basePackage("com.sky.controller"))
                   .paths(PathSelectors.any())
                   .build();
           return docket;
       }
  1. 設(shè)置靜態(tài)資源映射,否則接口文檔頁面無法訪問

WebMvcConfiguration.java

   /**
        * 設(shè)置靜態(tài)資源映射
        * @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/");
   }
  1. 訪問測試

接口文檔訪問路徑為 http://ip:port/doc.html ---> http://localhost:8080/doc.html

4.3 常用注解

通過注解可以控制生成的接口文檔,使接口文檔擁有更好的可讀性,常用注解如下:

注解 說明
@Api 用在類上,例如Controller,表示對類的說明
@ApiModel 用在類上,例如entity、DTO、VO
@ApiModelProperty 用在屬性上,描述屬性信息
@ApiOperation 用在方法上,例如Controller的方法,說明方法的用途、作用

接下來,使用上述注解,生成可讀性更好的接口文檔

在sky-pojo模塊中
EmployeeLoginDTO.java

package com.sky.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;

@Data
@ApiModel(description = "員工登錄時傳遞的數(shù)據(jù)模型")
public class EmployeeLoginDTO implements Serializable {

    @ApiModelProperty("用戶名")
    private String username;

    @ApiModelProperty("密碼")
    private String password;

}

EmployeeLoginVo.java

package com.sky.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "員工登錄返回的數(shù)據(jù)格式")
public class EmployeeLoginVO implements Serializable {

    @ApiModelProperty("主鍵值")
    private Long id;

    @ApiModelProperty("用戶名")
    private String userName;

    @ApiModelProperty("姓名")
    private String name;

    @ApiModelProperty("jwt令牌")
    private String token;

}

在sky-server模塊中

EmployeeController.java

package com.sky.controller.admin;

import com.sky.constant.JwtClaimsConstant;
import com.sky.dto.EmployeeLoginDTO;
import com.sky.entity.Employee;
import com.sky.properties.JwtProperties;
import com.sky.result.Result;
import com.sky.service.EmployeeService;
import com.sky.utils.JwtUtil;
import com.sky.vo.EmployeeLoginVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * 員工管理
 */
@RestController
@RequestMapping("/admin/employee")
@Slf4j
@Api(tags = "員工相關(guān)接口")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;
    @Autowired
    private JwtProperties jwtProperties;

    /**
     * 登錄
     *
     * @param employeeLoginDTO
     * @return
     */
    @PostMapping("/login")
    @ApiOperation(value = "員工登錄")
    public Result<EmployeeLoginVO> login(@RequestBody EmployeeLoginDTO employeeLoginDTO) 	{
        //
    }

    /**
     * 退出
     *
     * @return
     */
    @PostMapping("/logout")
    @ApiOperation("員工退出")
    public Result<String> logout() {
        return Result.success();
    }

}

啟動服務(wù):訪問http://localhost:8080/doc.html文章來源地址http://www.zghlxwxcb.cn/news/detail-710359.html

到了這里,關(guān)于蒼穹外賣-第一章項(xiàng)目介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣(四)

    基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣(四)

    1.1 需求分析與設(shè)計(jì) 1.1.1 產(chǎn)品原型 在員工管理列表頁面點(diǎn)擊 “編輯” 按鈕,跳轉(zhuǎn)到編輯頁面,在編輯頁面回顯員工信息并進(jìn)行修改,最后點(diǎn)擊 “保存” 按鈕完成編輯操作。 修改頁面原型 : 注:點(diǎn)擊修改時,數(shù)據(jù)應(yīng)該正?;仫@到修改頁面。 1.1.2 接口設(shè)計(jì) 根據(jù)上述原型圖分

    2024年02月05日
    瀏覽(25)
  • 【學(xué)習(xí)筆記】java項(xiàng)目—蒼穹外賣day11

    【學(xué)習(xí)筆記】java項(xiàng)目—蒼穹外賣day11

    Apache ECharts 營業(yè)額統(tǒng)計(jì) 用戶統(tǒng)計(jì) 訂單統(tǒng)計(jì) 銷量排名Top10 功能實(shí)現(xiàn): 數(shù)據(jù)統(tǒng)計(jì) 數(shù)據(jù)統(tǒng)計(jì)效果圖: 1.1 介紹 Apache ECharts 是一款基于 Javascript 的數(shù)據(jù)可視化圖表庫,提供直觀,生動,可交互,可個性化定制的數(shù)據(jù)可視化圖表。 官網(wǎng)地址:https://echarts.apache.org/zh/index.html 常見效果

    2024年04月09日
    瀏覽(29)
  • 基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣集成Redis(九)

    基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣集成Redis(九)

    1.1 Redis的Java客戶端 Redis 的 Java 客戶端很多,常用的幾種: Jedis Lettuce Spring Data Redis Spring 對 Redis 客戶端進(jìn)行了整合,提供了 Spring Data Redis,在Spring Boot項(xiàng)目中還提供了對應(yīng)的Starter,即 spring-boot-starter-data-redis。 1.2 Spring Data Redis使用方式 1.2.1 介紹 Spring Data Redis 是 Spring 的一部分

    2024年02月05日
    瀏覽(31)
  • 蒼穹外賣項(xiàng)目開發(fā)指南:項(xiàng)目概述、環(huán)境搭建、Swagger接口文檔生成

    蒼穹外賣項(xiàng)目開發(fā)指南:項(xiàng)目概述、環(huán)境搭建、Swagger接口文檔生成

    詳細(xì)介紹蒼穹外賣項(xiàng)目的開發(fā)流程,包括軟件開發(fā)整體介紹、項(xiàng)目概述、環(huán)境搭建、Swagger接口文檔生成、Nginx反向代理和負(fù)載均衡配置等內(nèi)容,幫助開發(fā)人員快速上手項(xiàng)目開發(fā)。

    2024年02月10日
    瀏覽(79)
  • 最適合新手的SpringBoot+SSM項(xiàng)目《蒼穹外賣》實(shí)戰(zhàn)—(二)項(xiàng)目概述

    最適合新手的SpringBoot+SSM項(xiàng)目《蒼穹外賣》實(shí)戰(zhàn)—(二)項(xiàng)目概述

    黑馬程序員最新Java項(xiàng)目實(shí)戰(zhàn)《蒼穹外賣》,最適合新手的SpringBoot+SSM的企業(yè)級Java項(xiàng)目實(shí)戰(zhàn)。 《蒼穹外賣》項(xiàng)目的定位是一款為餐飲企業(yè)(餐廳、飯店)定制的軟件產(chǎn)品。該項(xiàng)目是一個在線外賣訂購系統(tǒng),顧客可以通過網(wǎng)站或者手機(jī) App 訂購餐點(diǎn)。該項(xiàng)目可以提供以下的功能:

    2024年02月12日
    瀏覽(18)
  • 最適合新手的SpringBoot+SSM項(xiàng)目《蒼穹外賣》實(shí)戰(zhàn)—(一)項(xiàng)目概述

    最適合新手的SpringBoot+SSM項(xiàng)目《蒼穹外賣》實(shí)戰(zhàn)—(一)項(xiàng)目概述

    黑馬程序員最新Java項(xiàng)目實(shí)戰(zhàn)《蒼穹外賣》,最適合新手的SpringBoot+SSM的企業(yè)級Java項(xiàng)目實(shí)戰(zhàn)。 《蒼穹外賣》項(xiàng)目的定位是一款為餐飲企業(yè)(餐廳、飯店)定制的軟件產(chǎn)品。該項(xiàng)目是一個在線外賣訂購系統(tǒng),顧客可以通過網(wǎng)站或者手機(jī) App 訂購餐點(diǎn)。該項(xiàng)目可以提供以下的功能:

    2024年02月15日
    瀏覽(23)
  • 基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(九)

    基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(九)

    1.1 入門 在進(jìn)行微信登錄之前我們要先知道HttpClient是什么,它是Apache Jakarta Common 下的子項(xiàng)目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協(xié)議的客戶端編程工具包,并且它支持 HTTP 協(xié)議最新的版本和建議。 HttpClient作用: 發(fā)送HTTP請求 接收響應(yīng)數(shù)據(jù) HttpClient應(yīng)用場景

    2024年02月03日
    瀏覽(37)
  • 基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(十一)

    基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(十一)

    1.1 問題說明 用戶端小程序展示的菜品數(shù)據(jù)都是通過查詢數(shù)據(jù)庫獲得,如果用戶端訪問量比較大,數(shù)據(jù)庫訪問壓力隨之增大。 結(jié)果 :系統(tǒng)響應(yīng)慢、用戶體驗(yàn)差 1.2 實(shí)現(xiàn)思路 通過Redis來緩存菜品數(shù)據(jù),減少數(shù)據(jù)庫查詢操作。 緩存邏輯分析: 每個分類下的菜品保存一份緩存數(shù)據(jù)

    2024年01月24日
    瀏覽(32)
  • 基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(十三)

    基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(十三)

    地址簿,指的是消費(fèi)者用戶的地址信息,用戶登錄成功后可以維護(hù)自己的地址信息。同一個用戶可以有多個地址信息,但是只能有一個 默認(rèn)地址 。 對于地址簿管理,有以下幾個功能: 查詢地址列表 新增地址 修改地址 刪除地址 設(shè)置默認(rèn)地址 查詢默認(rèn)地址 根據(jù)上述原型圖先

    2024年01月21日
    瀏覽(20)
  • 基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(十二)

    基于SpringBoot+Redis的前后端分離外賣項(xiàng)目-蒼穹外賣微信小程序端(十二)

    1.1.1 產(chǎn)品原型 用戶可以將菜品或者套餐添加到購物車。對于菜品來說,如果設(shè)置了口味信息,則需要選擇規(guī)格后才能加入購物車;對于套餐來說,可以直接點(diǎn)擊+將當(dāng)前套餐加入購物車。在購物車中可以修改菜品和套餐的數(shù)量,也可以清空購物車。 效果圖: 1.1.2 接口設(shè)計(jì) 通過

    2024年01月18日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包