網(wǎng)站統(tǒng)計(jì)如何做百度推廣怎么收費(fèi)的
前言
目錄
新增套餐
需求分析和設(shè)計(jì)
代碼開(kāi)發(fā)
根據(jù)分類(lèi)id查詢(xún)菜品
Controller層
Service層
ServiceImpl層
Mapper層
DishMapper.xml
新增套餐
實(shí)體類(lèi)
mapper層
Service層
?ServiceImpl層
Mapper層
SetmealMapper.xml
?setmealDishMapper.xml
套餐分頁(yè)查詢(xún)
需求分析和設(shè)計(jì)
代碼開(kāi)發(fā)
設(shè)計(jì)DTO類(lèi)
Controller層
Service層
ServiceImpl
Mapper
SetmealMapper.xml
功能測(cè)試
???
1--蒼穹外賣(mài)-SpringBoot項(xiàng)目介紹及環(huán)境搭建 詳解-CSDN博客
2--蒼穹外賣(mài)-SpringBoot項(xiàng)目中員工管理 詳解(一)-CSDN博客
3--蒼穹外賣(mài)-SpringBoot項(xiàng)目中員工管理 詳解(二)-CSDN博客
4--蒼穹外碼-SpringBoot項(xiàng)目中分類(lèi)管理 詳解-CSDN博客
5--蒼穹外賣(mài)-SpringBoot項(xiàng)目中菜品管理 詳解(一)-CSDN博客
6--蒼穹外賣(mài)-SpringBoot項(xiàng)目中菜品管理 詳解(二)-CSDN博客
7--蒼穹外賣(mài)-SpringBoot項(xiàng)目中套餐管理 詳解(一)-CSDN博客
8--蒼穹外賣(mài)-SpringBoot項(xiàng)目中套餐管理 詳解(二)-CSDN博客
9--蒼穹外賣(mài)-SpringBoot項(xiàng)目中Redis的介紹及其使用實(shí)例 詳解-CSDN博客
10--蒼穹外賣(mài)-SpringBoot項(xiàng)目中微信登錄 詳解-CSDN博客
新增套餐
需求分析和設(shè)計(jì)
?在頁(yè)面原型中看到
業(yè)務(wù)規(guī)則:
-
套餐名稱(chēng)必須是唯一的
-
新增套餐時(shí)可以根據(jù)情況選擇需要添加的菜品
-
每個(gè)套餐必須對(duì)應(yīng)一張圖片
接口設(shè)計(jì):
-
根據(jù)類(lèi)型查詢(xún)分類(lèi)(已完成)
-
文件上傳(已完成)
-
新增套餐
-
根據(jù)分類(lèi)id查詢(xún)菜品
代碼開(kāi)發(fā)
根據(jù)分類(lèi)id查詢(xún)菜品
Controller層
//根據(jù)分類(lèi)id查詢(xún)菜品@GetMapping("/list")@ApiOperation("根據(jù)分類(lèi)id查詢(xún)菜品")public Result<List<Dish>> getByCategoryId(Long categoryId){log.info("根據(jù)分類(lèi)id查詢(xún)菜品;{}",categoryId);List<Dish> list=dishService.getByCategoryId(categoryId);return Result.success(list);}
Service層
//根據(jù)分類(lèi)id查詢(xún)菜品List<Dish> getByCategoryId(Long categoryId);
ServiceImpl層
//根據(jù)分類(lèi)id查詢(xún)菜品@Overridepublic List<Dish> getByCategoryId(Long categoryId) {return dishMapper.getByCategoryId(categoryId);}
Mapper層
//根據(jù)分類(lèi)id查詢(xún)菜品List<Dish> getByCategoryId(Long categoryId);
DishMapper.xml
<select id="getByCategoryId" resultType="com.sky.entity.Dish">select *from dishwhere status=1<if test="categoryId!=null">and category_id=#{categoryId}</if>order by create_time desc</select>
新增套餐
實(shí)體類(lèi)
在sky-pojo的DTO中新建SetmealDTO
package com.sky.dto;import com.sky.entity.SetmealDish;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;@Data
public class SetmealDTO implements Serializable {private Long id;//分類(lèi)idprivate Long categoryId;//套餐名稱(chēng)private String name;//套餐價(jià)格private BigDecimal price;//狀態(tài) 0:停用 1:啟用private Integer status;//描述信息private String description;//圖片private String image;//套餐菜品關(guān)系private List<SetmealDish> setmealDishes = new ArrayList<>();}
mapper層
在sky-server中
//新增套餐@PostMapping@ApiOperation("新增套餐")public Result<String> save(@RequestBody SetmealDTO setmealDTO){log.info("新增套餐:{}",setmealDTO);setmealService.saveWithDish(setmealDTO);return Result.success();}
Service層
在sky-server中
//新增套餐void saveWithDish(SetmealDTO setmealDTO);
?ServiceImpl層
//新增套餐@Overridepublic void saveWithDish(SetmealDTO setmealDTO) {Setmeal setmeal = new Setmeal();BeanUtils.copyProperties(setmealDTO,setmeal);//向套餐表中插入1條數(shù)據(jù)setmealMapper.insert(setmeal);//獲取insert語(yǔ)句生成的主鍵值Long setmealId = setmeal.getId();List<SetmealDish> setmealDishes = setmealDTO.getSetmealDishes();/* setmealDishes.forEach(setmealDish -> {setmealDish.setDishId(setmealId);*/setmealDishes.forEach(setmealDish -> {setmealDish.setDishId(setmealId);});//向套餐關(guān)聯(lián)的菜品表中插入n條數(shù)據(jù)SetmealDishMapper.insertBatch(setmealDishes);}
Mapper層
//插入套餐數(shù)據(jù)@AutoFill(value = OperationType.INSERT)void insert(Setmeal setmeal);
SetmealMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sky.mapper.SetmealMapper"><insert id="insert" useGeneratedKeys="true" keyProperty="id">
insert into setmeal(category_id, name, price, description, image,create_time, update_time, create_user, update_user)
VALUES (#{categoryId},#{name},#{price},#{description},#{image},#{createTime},#{updateTime},#{createUser},#{updateUser})</insert>
</mapper>
?setmealDishMapper.xml
<insert id="insertBatch">insert into setmeal_dish(setmeal_id, dish_id, name, price, copies)VALUES<foreach collection="setmealDishs" item="sd" separator=",">(#{sd.setmealId},#{sd.dishId},#{sd.name},#{sd.price},#{sd.copies})</foreach></insert>
套餐分頁(yè)查詢(xún)
需求分析和設(shè)計(jì)
業(yè)務(wù)規(guī)則:
-
根據(jù)頁(yè)碼展示菜品信息
-
每頁(yè)展示10條數(shù)據(jù)
-
分頁(yè)查詢(xún)時(shí)可以根據(jù)需要輸入套餐名稱(chēng)、套餐分類(lèi)、套餐狀態(tài)進(jìn)行查詢(xún)
代碼開(kāi)發(fā)
設(shè)計(jì)DTO類(lèi)
根據(jù)菜品分頁(yè)查詢(xún)接口定義設(shè)計(jì)對(duì)應(yīng)的DTO:
在sky-pojo模塊中
package com.sky.dto;import lombok.Data;import java.io.Serializable;@Data
public class SetmealPageQueryDTO implements Serializable {private int page;private int pageSize;private String name;//分類(lèi)idprivate Integer categoryId;//狀態(tài) 0表示禁用 1表示啟用private Integer status;}
Controller層
//套餐分頁(yè)查詢(xún)@GetMapping("/page")@ApiOperation("套餐分頁(yè)查詢(xún)")public Result<PageResult> page(SetmealPageQueryDTO setmealPageQueryDTO){log.info("套餐分頁(yè)查詢(xún):{}",setmealPageQueryDTO);PageResult pageResult=setmealService.pageQuery(setmealPageQueryDTO);return Result.success(pageResult);}
Service層
//套餐分頁(yè)查詢(xún)PageResult pageQuery(SetmealPageQueryDTO setmealPageQueryDTO);
ServiceImpl
//套餐分頁(yè)查詢(xún)@Overridepublic PageResult pageQuery(SetmealPageQueryDTO setmealPageQueryDTO) {PageHelper.startPage(setmealPageQueryDTO.getPage(),setmealPageQueryDTO.getPageSize());Page<SetmealVO> page=setmealMapper.pageQuery(setmealPageQueryDTO);return new PageResult(page.getTotal(),page.getResult());}
Mapper
//套餐分頁(yè)查詢(xún)Page<SetmealVO> pageQuery(SetmealPageQueryDTO setmealPageQueryDTO);
SetmealMapper.xml
<select id="pageQuery" resultType="com.sky.vo.SetmealVO">select s.*,c.name as categoryName from setmeal s left join category c on s.category_id=c.id<where><if test="name!=null and name!=''">and s.name like concat('%',#{name},'%')</if><if test="categoryId!=null">and s.category_id=#{categoryId}</if><if test="status!=null ">and s.status=#{status}</if></where>order by s.create_time desc</select>