AdminFoodController.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package com.etotem.cfc.controller.admin;
  2. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  3. import com.etotem.cfc.common.Result;
  4. import com.etotem.cfc.entity.Food;
  5. import com.etotem.cfc.service.FoodService;
  6. import io.swagger.v3.oas.annotations.Operation;
  7. import io.swagger.v3.oas.annotations.tags.Tag;
  8. import org.springframework.web.bind.annotation.*;
  9. import javax.annotation.Resource;
  10. import java.util.*;
  11. import java.util.stream.Collectors;
  12. @Tag(name = "\u7ba1\u7406\u7aef-\u98df\u6750\u7ba1\u7406")
  13. @RestController
  14. @RequestMapping("/api/admin/foods")
  15. public class AdminFoodController {
  16. @Resource
  17. private FoodService foodService;
  18. @Operation(summary = "\u98df\u6750\u5217\u8868")
  19. @PostMapping("/list")
  20. public Result<Map<String, Object>> list(@RequestBody Map<String, Object> params) {
  21. long page = params.get("page") != null ? ((Number) params.get("page")).longValue() : 1;
  22. long size = params.get("size") != null ? ((Number) params.get("size")).longValue() : 20;
  23. String category = (String) params.get("category");
  24. String keyword = (String) params.get("keyword");
  25. Page<Food> pageResult = foodService.listPage(page, size, category, keyword, "active");
  26. List<Map<String, Object>> records = new ArrayList<>();
  27. for (Food food : pageResult.getRecords()) {
  28. Map<String, Object> item = new HashMap<>();
  29. item.put("id", food.getId());
  30. item.put("name", food.getName());
  31. item.put("category", food.getCategory());
  32. item.put("unit", food.getUnit());
  33. item.put("calories", food.getCalories());
  34. item.put("protein", food.getProtein());
  35. item.put("fat", food.getFat());
  36. item.put("carbs", food.getCarbs());
  37. item.put("fiber", food.getFiber());
  38. item.put("energyKj", food.getEnergyKj());
  39. item.put("starch", food.getStarch());
  40. item.put("cholesterol", food.getCholesterol());
  41. item.put("priceLevel", food.getPriceLevel());
  42. item.put("nutritionTags", food.getNutritionTags());
  43. item.put("suitableFor", food.getSuitableFor());
  44. item.put("allergens", food.getAllergens());
  45. item.put("coverImage", food.getCoverImage());
  46. item.put("status", food.getStatus());
  47. item.put("sortOrder", food.getSortOrder());
  48. item.put("createdAt", food.getCreatedAt());
  49. item.put("updatedAt", food.getUpdatedAt());
  50. item.put("months", foodService.getMonths(food.getId()));
  51. records.add(item);
  52. }
  53. Map<String, Object> data = new HashMap<>();
  54. data.put("records", records);
  55. data.put("total", pageResult.getTotal());
  56. data.put("page", pageResult.getCurrent());
  57. data.put("size", pageResult.getSize());
  58. return Result.success(data);
  59. }
  60. @Operation(summary = "\u65b0\u589e\u98df\u6750")
  61. @PostMapping("/create")
  62. public Result<Food> create(@RequestBody Food food) {
  63. foodService.create(food);
  64. return Result.success(food);
  65. }
  66. @Operation(summary = "\u66f4\u65b0\u98df\u6750")
  67. @PostMapping("/update")
  68. public Result<String> update(@RequestBody Food food) {
  69. foodService.update(food);
  70. return Result.success("ok");
  71. }
  72. @Operation(summary = "\u5220\u9664\u98df\u6750")
  73. @PostMapping("/delete")
  74. public Result<String> delete(@RequestBody Map<String, Object> params) {
  75. Long id = params.get("id") != null ? Long.valueOf(params.get("id").toString()) : null;
  76. if (id == null) return Result.error("id\u4e0d\u80fd\u4e3a\u7a7a");
  77. foodService.delete(id);
  78. return Result.success("ok");
  79. }
  80. @Operation(summary = "\u98df\u6750\u8be6\u60c5\uff08\u542b\u5e94\u5b63\u6708\u4efd\uff09")
  81. @PostMapping("/detail")
  82. public Result<Map<String, Object>> detail(@RequestBody Map<String, Object> params) {
  83. Long id = params.get("id") != null ? Long.valueOf(params.get("id").toString()) : null;
  84. if (id == null) return Result.error("id\u4e0d\u80fd\u4e3a\u7a7a");
  85. Map<String, Object> result = foodService.getDetailWithMonths(id);
  86. if (result == null) return Result.error("\u98df\u6750\u4e0d\u5b58\u5728");
  87. return Result.success(result);
  88. }
  89. @Operation(summary = "\u4fdd\u5b58\u5e94\u5b63\u6708\u4efd")
  90. @PostMapping("/saveMonths")
  91. public Result<String> saveMonths(@RequestBody Map<String, Object> params) {
  92. Long id = params.get("id") != null ? Long.valueOf(params.get("id").toString()) : null;
  93. if (id == null) return Result.error("id\u4e0d\u80fd\u4e3a\u7a7a");
  94. @SuppressWarnings("unchecked")
  95. List<Integer> months = params.get("months") != null
  96. ? ((List<Object>) params.get("months")).stream()
  97. .map(o -> o instanceof Integer ? (Integer) o : Integer.valueOf(o.toString()))
  98. .collect(Collectors.toList())
  99. : Collections.emptyList();
  100. foodService.saveMonths(id, months);
  101. return Result.success("ok");
  102. }
  103. }