diff --git a/src/main/java/com/yupi/springbootinit/controller/DishController.java b/src/main/java/com/yupi/springbootinit/controller/DishController.java index 44e2d46..55beabc 100644 --- a/src/main/java/com/yupi/springbootinit/controller/DishController.java +++ b/src/main/java/com/yupi/springbootinit/controller/DishController.java @@ -121,12 +121,12 @@ public class DishController { -// //按已经定好的权重比例随机挑选菜品 -// @GetMapping("/random") -// public BaseResponse randomDish(Integer num){ -// List dishList = dishService.list(); -// return ResultUtils.success((List) dishService.randomDish(num, dishList)); -// } + //按已经定好的权重比例随机挑选菜品 + @GetMapping("/random") + public BaseResponse randomDish(Integer num){ + List dishList = dishService.list(); + return ResultUtils.success((List) dishService.randomDish(num, dishList)); + } // // //按菜品分类的权重比例随机抽选菜品 // @GetMapping("/randomByWeight") diff --git a/src/main/java/com/yupi/springbootinit/service/DishService.java b/src/main/java/com/yupi/springbootinit/service/DishService.java index a23f8d2..6791a3f 100644 --- a/src/main/java/com/yupi/springbootinit/service/DishService.java +++ b/src/main/java/com/yupi/springbootinit/service/DishService.java @@ -8,7 +8,7 @@ import java.awt.*; public interface DishService extends IService { - List randomDish(Integer num, java.util.List dishList); + java.util.List randomDish(Integer num, java.util.List dishList); List randomDishByWeight(DishRandomRequest dishRandomRequest); 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 592a485..8c244af 100644 --- a/src/main/java/com/yupi/springbootinit/service/impl/DishServiceImpl.java +++ b/src/main/java/com/yupi/springbootinit/service/impl/DishServiceImpl.java @@ -7,19 +7,60 @@ import com.yupi.springbootinit.model.entity.Dish; import com.yupi.springbootinit.service.DishService; import org.springframework.stereotype.Service; -import java.awt.*; +import java.util.*; @Service public class DishServiceImpl extends ServiceImpl implements DishService { - //todo 随机菜品 @Override - public List randomDish(Integer num, java.util.List dishList) { - return null; + public List randomDish(Integer num, List dishList) { + if (dishList == null || dishList.isEmpty() || num <= 0) { + return Collections.emptyList(); + } + + // 按照菜品类型分类 + Map> dishTypeMap = new HashMap<>(); + for (Dish dish : dishList) { + dishTypeMap.computeIfAbsent(dish.getDishType(), k -> new ArrayList<>()).add(dish); + } + + // 定义肉菜和其他菜品的分类 + List meatDishes = new ArrayList<>(); + meatDishes.addAll(dishTypeMap.getOrDefault("1", Collections.emptyList())); + meatDishes.addAll(dishTypeMap.getOrDefault("2", Collections.emptyList())); + + List otherDishes = new ArrayList<>(); + otherDishes.addAll(dishTypeMap.getOrDefault("3", Collections.emptyList())); + otherDishes.addAll(dishTypeMap.getOrDefault("4", Collections.emptyList())); + otherDishes.addAll(dishTypeMap.getOrDefault("5", Collections.emptyList())); + + // 确保至少选择一个肉菜和一个其他菜品 + List selectedDishes = new ArrayList<>(); + Random random = new Random(); + + if (!meatDishes.isEmpty()) { + selectedDishes.add(meatDishes.get(random.nextInt(meatDishes.size()))); + } + + if (!otherDishes.isEmpty()) { + selectedDishes.add(otherDishes.get(random.nextInt(otherDishes.size()))); + } + + // 从所有菜品中随机补充剩余菜品,避免重复 + List allDishes = new ArrayList<>(dishList); + allDishes.removeAll(selectedDishes); + + while (selectedDishes.size() < num && !allDishes.isEmpty()) { + Dish dish = allDishes.get(random.nextInt(allDishes.size())); + selectedDishes.add(dish); + allDishes.remove(dish); + } + + return selectedDishes; } @Override - public List randomDishByWeight(DishRandomRequest dishRandomRequest) { + public java.awt.List randomDishByWeight(DishRandomRequest dishRandomRequest) { return null; } } \ No newline at end of file