Maison  >  Article  >  Java  >  Comment implémenter de nouveaux plats et requêtes de pagination en Java

Comment implémenter de nouveaux plats et requêtes de pagination en Java

PHPz
PHPzavant
2023-05-20 13:10:06842parcourir

    1. Plats nouvellement ajoutés

    1.1 Analyse de la demande

    Le système backend peut gérer les informations de classification, classer les plats et définir les repas. Lorsque nous ajoutons des plats dans le système backend, nous devons sélectionner une catégorie de plats.

    Lorsque nous ajoutons un repas fixe dans le système backend, nous devons sélectionner une catégorie de repas fixe. Les plats et les repas fixes correspondants seront également affichés sur le terminal mobile en fonction de la catégorie de plat et de la catégorie de repas fixe.

    Comment implémenter de nouveaux plats et requêtes de pagination en Java

    En même temps, ajoutez respectivement la catégorie de plat et la catégorie de paquet sur la page de gestion des catégories du système backend :

    Ajouter une catégorie de plat

    Comment implémenter de nouveaux plats et requêtes de pagination en Java

    Ajouter une catégorie de paquet

    Comment implémenter de nouveaux plats et requêtes de pagination en Java

    Modèle de données :

    Implique une table Category Table :

    Comment implémenter de nouveaux plats et requêtes de pagination en Java

    La donnée JavaBean correspondant à la table est Category.java

    Category.java

    package com.itheima.reggie.entity;
    import com.baomidou.mybatisplus.annotation.FieldFill;
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableField;
    import com.baomidou.mybatisplus.annotation.TableId;
    import lombok.Data;
    import lombok.Getter;
    import lombok.Setter;
    import java.io.Serializable;
    import java.time.LocalDateTime;
    /**
     * 分类
     */
    @Data
    public class Category implements Serializable {
        private static final long serialVersionUID = 1L;
        private Long id;
        //类型 1 菜品分类 2 套餐分类
        private Integer type;
        //分类名称
        private String name;
        //顺序
        private Integer sort;
        //创建时间
        @TableField(fill = FieldFill.INSERT)
        private LocalDateTime createTime;
        //更新时间
        @TableField(fill = FieldFill.INSERT_UPDATE)
        private LocalDateTime updateTime;
        //创建人
        @TableField(fill = FieldFill.INSERT)
        private Long createUser;
        //修改人
        @TableField(fill = FieldFill.INSERT_UPDATE)
        private Long updateUser;
        //是否删除
        private Integer isDeleted;
    }

    Pour le frame spécifique, reportez-vous à la construction précédente de l'entité Employee.

    1.2 Développement de code

    L'adresse de service demandée pour la nouvelle classification des plats et la classification des repas définis est la même que la structure de données JSON soumise. Le serveur n'a besoin de fournir qu'une seule méthode :

    API
    Description Valeur.
    URL de demande /category
    Demande de données {
    "name": "Cuisine du Sichuan",
    "type": "1",
    "sort": "1"
    }
    Code

    Écrivez un nouveau code dans CategoryController.java :

    package com.itheima.reggie.controller;
    import com.itheima.reggie.common.R;
    import com.itheima.reggie.entity.Category;
    import com.itheima.reggie.service.CategoryService;
    import lombok.extern.slf4j.Slf4j;
    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 javax.annotation.Resource;
    /**
     * @author jektong
     * @date 2022年05月06日 21:47
     */
    @RestController
    @Slf4j
    @RequestMapping("/category")
    public class CategoryController {
        @Resource
        private CategoryService categoryService;
        /**
         * 新增分类
         * @param category
         * @return
         */
        @PostMapping
        public R<String> save(@RequestBody Category category){
            log.info("category:{}",category);
            categoryService.save(category);
            return R.success("新增分类成功");
        }
    }

    2. Requête de pagination pour les informations de catégorie

    La requête de pagination est la même que la requête d'informations précédente sur l'employé, accédez directement au code :

    @GetMapping("/page")
        public R<Page> page(int page, int pageSize){
            // 分页构造
            Page<Category> pageInfo = new Page<Category>(page,pageSize);
            // 查询并排序
            LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper();
            queryWrapper.orderByAsc(Category::getSort);
            // 分页查询
            categoryService.page(pageInfo,queryWrapper);
            return R.success(pageInfo);
        }

    3. Supprimer catégorie

    3.1 Analyse des exigences

    Sur la page de liste de gestion des catégories, vous pouvez supprimer une catégorie. A noter que lorsqu'une catégorie est associée à un plat ou une formule, cette catégorie ne peut pas être supprimée.

    Comment implémenter de nouveaux plats et requêtes de pagination en Java

    API

    Description Valeur
    URL de demande /category?id=

    Vous devez introduire deux entités : plat et plat :

    Dish.java :Dishes Entity

    package com.itheima.reggie.entity;
    import com.baomidou.mybatisplus.annotation.FieldFill;
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableField;
    import com.baomidou.mybatisplus.annotation.TableId;
    import lombok.Data;
    import java.io.Serializable;
    import java.math.BigDecimal;
    import java.time.LocalDateTime;
    /**
     菜品
     */
    @Data
    public class Dish implements Serializable {
        private static final long serialVersionUID = 1L;
        private Long id;
        //菜品名称
        private String name;
        //菜品分类id
        private Long categoryId;
        //菜品价格
        private BigDecimal price;
        //商品码
        private String code;
        //图片
        private String image;
        //描述信息
        private String description;
        //0 停售 1 起售
        private Integer status;
        //顺序
        private Integer sort;
        @TableField(fill = FieldFill.INSERT)
        private LocalDateTime createTime;
        @TableField(fill = FieldFill.INSERT_UPDATE)
        private LocalDateTime updateTime;
        @TableField(fill = FieldFill.INSERT)
        private Long createUser;
        @TableField(fill = FieldFill.INSERT_UPDATE)
        private Long updateUser;
        //是否删除
        private Integer isDeleted;
    }

    Setmeal.java : Entité de package

    package com.itheima.reggie.entity;
    import com.baomidou.mybatisplus.annotation.FieldFill;
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableField;
    import com.baomidou.mybatisplus.annotation.TableId;
    import lombok.Data;
    import java.io.Serializable;
    import java.math.BigDecimal;
    import java.time.LocalDateTime;
    /**
     * 套餐
     */
    @Data
    public class Setmeal implements Serializable {
        private static final long serialVersionUID = 1L;
        private Long id;
        //分类id
        private Long categoryId;
        //套餐名称
        private String name;
        //套餐价格
        private BigDecimal price;
        //状态 0:停用 1:启用
        private Integer status;
        //编码
        private String code;
        //描述信息
        private String description;
        //图片
        private String image;
        @TableField(fill = FieldFill.INSERT)
        private LocalDateTime createTime;
        @TableField(fill = FieldFill.INSERT_UPDATE)
        private LocalDateTime updateTime;
        @TableField(fill = FieldFill.INSERT)
        private Long createUser;
        @TableField(fill = FieldFill.INSERT_UPDATE)
        private Long updateUser;
        //是否删除
        private Integer isDeleted;
    }

    Code principal 3.2

    CategoryServiceImpl.java

    package com.itheima.reggie.service.impl;
    import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
    import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    import com.itheima.reggie.common.CustomException;
    import com.itheima.reggie.entity.Category;
    import com.itheima.reggie.entity.Dish;
    import com.itheima.reggie.entity.Setmeal;
    import com.itheima.reggie.mapper.CategoryMapper;
    import com.itheima.reggie.service.CategoryService;
    import com.itheima.reggie.service.DishService;
    import com.itheima.reggie.service.SetmealService;
    import org.springframework.stereotype.Service;
    import javax.annotation.Resource;
    /**
     * @author jektong
     * @date 2022年05月06日 21:44
     */
    @Service
    public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements CategoryService {
        @Resource
        private DishService dishService;
        @Resource
        private SetmealService setmealService;
        /**
         * 根据ID删除分类,分类之前需要判断
         * @param id
         */
        @Override
        public void remove(Long id) {
            LambdaQueryWrapper<Dish> dishLambdaQueryWrapper =  new LambdaQueryWrapper<>();
            // 查询当前分类是否关联了菜品,若关联菜品,抛出异常
            dishLambdaQueryWrapper.eq(Dish::getCategoryId,id);
            int count = dishService.count(dishLambdaQueryWrapper);
            if(count > 0){
                // 已经关联菜品,抛出异常
                throw new CustomException("当前分类已关联菜品,不可删除");
            }
            // 查询当前分类是否关联了套餐,若关联菜品,抛出异常
            LambdaQueryWrapper<Setmeal> setmealLambdaQueryWrapper =  new LambdaQueryWrapper<>();
            setmealLambdaQueryWrapper.eq(Setmeal::getCategoryId,id);
            int count1 = setmealService.count(setmealLambdaQueryWrapper);
            if(count>0){
                // 已经关联套餐,抛出异常
                throw new CustomException("当前分类已关联套餐,不可删除");
            }
            // 正常删除分类
            super.removeById(id);
        }
    }

    Ajouté dans la classe d'exception personnalisée précédente :

    /**
         * 异常处理方法
         * @param customException
         * @return
         */
        @ExceptionHandler(CustomException.class)
        public R<String> exceptionHandler(CustomException customException){
            log.error(customException.getMessage());
            return R.error(customException.getMessage());
        }

    CustomException.java

    package com.itheima.reggie.common;
    /**
     * @author jektong
     * @date 2022年05月10日 22:26
     */
    public class CustomException extends RuntimeException{
        public CustomException(String msg){
            super(msg);
        }
    }

    4. Modifier le classement

    Modifier le classement est très simple C'est simple, il suffit de le modifier en fonction de l'identifiant de la catégorie. Le code est le suivant :

    @PutMapping
    public R<String> update(@RequestBody Category category){
      log.info("修改分类信息{}" + category);
      categoryService.updateById(category);
      return R.success("分类修改成功");
    }
    .

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer