This commit is contained in:
2025-03-17 15:22:04 +08:00
parent 9cd8061c6e
commit d7f0784110
9 changed files with 213 additions and 13 deletions

View File

@@ -1,12 +1,25 @@
package com.yupi.springbootinit.controller; 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.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 com.yupi.springbootinit.service.DishService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
@RestController @RestController
@RequestMapping("/dish") @RequestMapping("/dish")
@@ -18,4 +31,92 @@ public class DishController {
@Resource @Resource
private CosManager cosManager; private CosManager cosManager;
} @PostMapping("/add")
public BaseResponse<Long> 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<Dish>> list() {
List<Dish> dishList = dishService.list();
return ResultUtils.success(dishList);
}
// 添加删除数据的方法
@PostMapping("/delete")
public BaseResponse<Boolean> 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<Boolean> 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<java.awt.List> randomDish(Integer num){
return ResultUtils.success(dishService.randomDish(num));
}
//按菜品分类的权重比例随机抽选菜品
@GetMapping("/randomByWeight")
public BaseResponse<java.awt.List> randomDishByWeight(DishRandomRequest dishRandomRequest){
return ResultUtils.success(dishService.randomDishByWeight(dishRandomRequest));
}
}

View File

@@ -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<Dish> {
}

View File

@@ -2,28 +2,34 @@ package com.yupi.springbootinit.model.dto.dish;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable; import java.io.Serializable;
@Data @Data
public class DishAddRequest implements Serializable { public class DishAddRequest implements Serializable {
/**
* id
*/
@NotNull
private Long id;
/** /**
* 菜品名称 * 菜品名称
*/ */
private String dishName; private String dishName;
/** /**
* 菜品类型 * 菜品类型
*/ */
private String dishType; private String dishType;
/** /**
* 菜品价格 * 菜品价格
*/ */
private String dishPrice; private String dishPrice;
/** /**
* 菜品食材 * 菜品成分
*/ */
private String dishIngredients; private String dishIngredients;
/**
private static final long serialVersionUID = 1L; * 菜品图片
} */
private String dishImage;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -52,4 +52,11 @@ public class Dish {
@TableField(exist = false) @TableField(exist = false)
private static final long serialVersionUID = 1L; 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";
}

View File

@@ -1,6 +1,11 @@
package com.yupi.springbootinit.service; package com.yupi.springbootinit.service;
import com.baomidou.mybatisplus.extension.service.IService; 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<Dish> { public interface DishService extends IService<Dish> {
} }

View File

@@ -1,7 +1,19 @@
package com.yupi.springbootinit.service.impl; 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 org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
@Service @Service
public class DishServiceImpl { public class DishServiceImpl extends ServiceImpl<DishMapper, Dish> implements DishService {
}
}

View File

@@ -90,3 +90,8 @@ cos:
secretKey: xxx secretKey: xxx
region: xxx region: xxx
bucket: xxx bucket: xxx
minio:
endpoint: http://192.168.100.113:9000
accessKey: YOUR-ACCESSKEY
secretKey: YOUR-SECRETKEY
bucketName: your-bucket-name