From d7f0784110f3a2da32efac24fc85da893009bb0d Mon Sep 17 00:00:00 2001 From: lingyunxsh Date: Mon, 17 Mar 2025 15:22:04 +0800 Subject: [PATCH] init --- .../controller/DishController.java | 107 +++++++++++++++++- .../springbootinit/mapper/DishMapper.java | 7 ++ .../model/dto/dish/DishAddRequest.java | 20 ++-- .../model/dto/dish/DishRandomRequest.java | 22 ++++ .../model/dto/dish/DishUpdataRequest.java | 35 ++++++ .../springbootinit/model/entity/Dish.java | 9 +- .../springbootinit/service/DishService.java | 5 + .../service/impl/DishServiceImpl.java | 16 ++- src/main/resources/application.yml | 5 + 9 files changed, 213 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/yupi/springbootinit/mapper/DishMapper.java create mode 100644 src/main/java/com/yupi/springbootinit/model/dto/dish/DishRandomRequest.java create mode 100644 src/main/java/com/yupi/springbootinit/model/dto/dish/DishUpdataRequest.java diff --git a/src/main/java/com/yupi/springbootinit/controller/DishController.java b/src/main/java/com/yupi/springbootinit/controller/DishController.java index ccff0a2..0fb99b3 100644 --- a/src/main/java/com/yupi/springbootinit/controller/DishController.java +++ b/src/main/java/com/yupi/springbootinit/controller/DishController.java @@ -1,12 +1,25 @@ package com.yupi.springbootinit.controller; +import com.yupi.springbootinit.common.BaseResponse; +import com.yupi.springbootinit.common.DeleteRequest; +import com.yupi.springbootinit.common.ErrorCode; +import com.yupi.springbootinit.common.ResultUtils; +import com.yupi.springbootinit.exception.BusinessException; +import com.yupi.springbootinit.exception.ThrowUtils; import com.yupi.springbootinit.manager.CosManager; +import com.yupi.springbootinit.model.dto.dish.DishAddRequest; +import com.yupi.springbootinit.model.dto.dish.DishRandomRequest; +import com.yupi.springbootinit.model.dto.dish.DishUpdataRequest; +import com.yupi.springbootinit.model.entity.Dish; import com.yupi.springbootinit.service.DishService; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.List; @RestController @RequestMapping("/dish") @@ -18,4 +31,92 @@ public class DishController { @Resource private CosManager cosManager; -} + @PostMapping("/add") + public BaseResponse add(@RequestBody DishAddRequest dishAddRequest, HttpServletRequest request) { + if (dishAddRequest == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + validateDishType(dishAddRequest.getDishType()); + Dish dish = new Dish(); + BeanUtils.copyProperties(dishAddRequest, dish); + // 设置创建时间和更新时间为当前时间 + dish.setCreateTime(new Date()); + dish.setUpdateTime(new Date()); + Boolean result = dishService.save(dish); + ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR); + return ResultUtils.success(dish.getId()); + } + + // 添加查询所有数据的方法 + @GetMapping("/list") + public BaseResponse> list() { + List dishList = dishService.list(); + return ResultUtils.success(dishList); + } + + // 添加删除数据的方法 + @PostMapping("/delete") + public BaseResponse delete(@RequestBody DeleteRequest deleteRequest, HttpServletRequest request) { + if (deleteRequest == null || deleteRequest.getId() <= 0) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + boolean result = dishService.removeById(deleteRequest.getId()); + return ResultUtils.success(result); + } + + //更改菜品数据方法 + @PostMapping("/update") + public BaseResponse update(@RequestBody DishUpdataRequest dishUpdataRequest, HttpServletRequest request) { + if (dishUpdataRequest == null || dishUpdataRequest.getId() <= 0) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + Dish oldDish = dishService.getById(dishUpdataRequest.getId()); + if (oldDish == null) { + throw new BusinessException(ErrorCode.NOT_FOUND_ERROR); + } + // 仅更新非空字段,包括空字符串和空格 + if (dishUpdataRequest.getDishName() != null && !dishUpdataRequest.getDishName().trim().isEmpty()) { + oldDish.setDishName(dishUpdataRequest.getDishName()); + } + if (dishUpdataRequest.getDishType() != null && !dishUpdataRequest.getDishType().trim().isEmpty()) { + validateDishType(dishUpdataRequest.getDishType()); + oldDish.setDishType(dishUpdataRequest.getDishType()); + } + if (dishUpdataRequest.getDishPrice() != null && !dishUpdataRequest.getDishPrice().trim().isEmpty()) { + oldDish.setDishPrice(dishUpdataRequest.getDishPrice()); + } + if (dishUpdataRequest.getDishIngredients() != null && !dishUpdataRequest.getDishIngredients().trim().isEmpty()) { + oldDish.setDishIngredients(dishUpdataRequest.getDishIngredients()); + } + if (dishUpdataRequest.getDishImage() != null && !dishUpdataRequest.getDishImage().trim().isEmpty()) { + oldDish.setDishImage(dishUpdataRequest.getDishImage()); + } + oldDish.setUpdateTime(new Date()); + Boolean result = dishService.updateById(oldDish); + ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR); + return ResultUtils.success(result); + } + + // 新增方法:验证菜品类型 + private void validateDishType(String dishType) { + if (!dishType.equals(Dish.DISH_TYPE_HOT_NO_OIL) && + !dishType.equals(Dish.DISH_TYPE_HOT_WITH_OIL) && + !dishType.equals(Dish.DISH_TYPE_VEGETARIAN) && + !dishType.equals(Dish.DISH_TYPE_COLD) && + !dishType.equals(Dish.DISH_TYPE_SOUP)) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "Invalid dish type"); + } + } + + //按已经定好的权重比例随机挑选菜品 + @GetMapping("/random") + public BaseResponse randomDish(Integer num){ + return ResultUtils.success(dishService.randomDish(num)); + } + + //按菜品分类的权重比例随机抽选菜品 + @GetMapping("/randomByWeight") + public BaseResponse randomDishByWeight(DishRandomRequest dishRandomRequest){ + return ResultUtils.success(dishService.randomDishByWeight(dishRandomRequest)); + } +} \ No newline at end of file diff --git a/src/main/java/com/yupi/springbootinit/mapper/DishMapper.java b/src/main/java/com/yupi/springbootinit/mapper/DishMapper.java new file mode 100644 index 0000000..4519700 --- /dev/null +++ b/src/main/java/com/yupi/springbootinit/mapper/DishMapper.java @@ -0,0 +1,7 @@ +package com.yupi.springbootinit.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yupi.springbootinit.model.entity.Dish; + +public interface DishMapper extends BaseMapper { +} diff --git a/src/main/java/com/yupi/springbootinit/model/dto/dish/DishAddRequest.java b/src/main/java/com/yupi/springbootinit/model/dto/dish/DishAddRequest.java index 3714b5f..d391021 100644 --- a/src/main/java/com/yupi/springbootinit/model/dto/dish/DishAddRequest.java +++ b/src/main/java/com/yupi/springbootinit/model/dto/dish/DishAddRequest.java @@ -2,28 +2,34 @@ package com.yupi.springbootinit.model.dto.dish; import lombok.Data; +import javax.validation.constraints.NotNull; import java.io.Serializable; + @Data public class DishAddRequest implements Serializable { + /** + * id + */ + @NotNull + private Long id; /** * 菜品名称 */ private String dishName; - /** * 菜品类型 */ private String dishType; - /** * 菜品价格 */ private String dishPrice; - /** - * 菜品食材 + * 菜品成分 */ private String dishIngredients; - - private static final long serialVersionUID = 1L; -} + /** + * 菜品图片 + */ + private String dishImage; +} \ No newline at end of file diff --git a/src/main/java/com/yupi/springbootinit/model/dto/dish/DishRandomRequest.java b/src/main/java/com/yupi/springbootinit/model/dto/dish/DishRandomRequest.java new file mode 100644 index 0000000..a4e49b3 --- /dev/null +++ b/src/main/java/com/yupi/springbootinit/model/dto/dish/DishRandomRequest.java @@ -0,0 +1,22 @@ +package com.yupi.springbootinit.model.dto.dish; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +@Data +public class DishRandomRequest implements Serializable { + @NotNull + private Integer dishCount; // 添加菜品数量字段 + @NotNull + private String DISH_TYPE_HOT_NO_OIL_Weight; + @NotNull + private String DISH_TYPE_HOT_WITH_OIL_Weight; + @NotNull + private String DISH_TYPE_VEGETARIAN_Weight; + @NotNull + private String DISH_TYPE_COLD_Weight; + @NotNull + private String DISH_TYPE_SOUP_Weight; +} \ No newline at end of file diff --git a/src/main/java/com/yupi/springbootinit/model/dto/dish/DishUpdataRequest.java b/src/main/java/com/yupi/springbootinit/model/dto/dish/DishUpdataRequest.java new file mode 100644 index 0000000..44ac483 --- /dev/null +++ b/src/main/java/com/yupi/springbootinit/model/dto/dish/DishUpdataRequest.java @@ -0,0 +1,35 @@ +package com.yupi.springbootinit.model.dto.dish; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +@Data +public class DishUpdataRequest implements Serializable { + /** + * id + */ + @NotNull + private Long id; + /** + * 菜品名称 + */ + private String dishName; + /** + * 菜品类型 + */ + private String dishType; + /** + * 菜品价格 + */ + private String dishPrice; + /** + * 菜品成分 + */ + private String dishIngredients; + /** + * 菜品图片 + */ + private String dishImage; +} \ No newline at end of file diff --git a/src/main/java/com/yupi/springbootinit/model/entity/Dish.java b/src/main/java/com/yupi/springbootinit/model/entity/Dish.java index a8975af..72bc63f 100644 --- a/src/main/java/com/yupi/springbootinit/model/entity/Dish.java +++ b/src/main/java/com/yupi/springbootinit/model/entity/Dish.java @@ -52,4 +52,11 @@ public class Dish { @TableField(exist = false) private static final long serialVersionUID = 1L; -} + + // 定义菜品类型的常量 + public static final String DISH_TYPE_HOT_NO_OIL = "1"; + public static final String DISH_TYPE_HOT_WITH_OIL = "2"; + public static final String DISH_TYPE_VEGETARIAN = "3"; + public static final String DISH_TYPE_COLD = "4"; + public static final String DISH_TYPE_SOUP = "5"; +} \ No newline at end of file diff --git a/src/main/java/com/yupi/springbootinit/service/DishService.java b/src/main/java/com/yupi/springbootinit/service/DishService.java index d980761..8f66d82 100644 --- a/src/main/java/com/yupi/springbootinit/service/DishService.java +++ b/src/main/java/com/yupi/springbootinit/service/DishService.java @@ -1,6 +1,11 @@ package com.yupi.springbootinit.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.yupi.springbootinit.model.dto.dish.DishRandomRequest; +import com.yupi.springbootinit.model.entity.Dish; + +import java.awt.*; public interface DishService extends IService { + } diff --git a/src/main/java/com/yupi/springbootinit/service/impl/DishServiceImpl.java b/src/main/java/com/yupi/springbootinit/service/impl/DishServiceImpl.java index 5d43fc1..3802a40 100644 --- a/src/main/java/com/yupi/springbootinit/service/impl/DishServiceImpl.java +++ b/src/main/java/com/yupi/springbootinit/service/impl/DishServiceImpl.java @@ -1,7 +1,19 @@ package com.yupi.springbootinit.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yupi.springbootinit.mapper.DishMapper; +import com.yupi.springbootinit.model.dto.dish.DishRandomRequest; +import com.yupi.springbootinit.model.entity.Dish; +import com.yupi.springbootinit.service.DishService; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Random; + @Service -public class DishServiceImpl { -} +public class DishServiceImpl extends ServiceImpl implements DishService { + + +} \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index c3a47fd..7ad1647 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -90,3 +90,8 @@ cos: secretKey: xxx region: xxx bucket: xxx +minio: + endpoint: http://192.168.100.113:9000 + accessKey: YOUR-ACCESSKEY + secretKey: YOUR-SECRETKEY + bucketName: your-bucket-name \ No newline at end of file