Browse Source

需求变更

master
caoyiwen 1 year ago
parent
commit
d868d4d592
  1. 3
      diet-core/src/main/java/com/mathvision/diet/excel/IngredientModel.java
  2. 10
      diet-core/src/main/java/com/mathvision/diet/service/DishService.java
  3. 25
      diet-core/src/main/java/com/mathvision/diet/service/EnumService.java
  4. 4
      diet-core/src/main/java/com/mathvision/diet/service/MenuDishService.java
  5. 7
      diet-dao/src/main/java/com/mathvision/diet/entity/Dish.java
  6. 42
      diet-dao/src/main/java/com/mathvision/diet/entity/FoodPoly.java
  7. 27
      diet-dao/src/main/java/com/mathvision/diet/entity/Icon.java
  8. 3
      diet-dao/src/main/java/com/mathvision/diet/entity/MenuDish.java
  9. 1
      diet-dao/src/main/java/com/mathvision/diet/entity/Vender.java
  10. 2
      diet-dao/src/main/java/com/mathvision/diet/repository/DishRepository.java
  11. 8
      diet-dao/src/main/java/com/mathvision/diet/repository/FoodPolyRepository.java
  12. 7
      diet-dao/src/main/java/com/mathvision/diet/repository/IconRepository.java
  13. 65
      diet-dao/src/main/java/com/mathvision/diet/utils/GZIPUtils.java
  14. 15
      diet-web/src/main/java/com/mathvision/diet/controller/DishController.java
  15. 20
      diet-web/src/main/java/com/mathvision/diet/controller/MenuDishController.java
  16. 2
      diet-web/src/main/java/com/mathvision/diet/vo/MenuDishDetailVO.java
  17. 6
      diet-web/src/main/resources/static/basic.html
  18. 7
      diet-web/src/main/resources/static/change.html
  19. 7
      diet-web/src/main/resources/static/dish.html
  20. 7
      diet-web/src/main/resources/static/menu/dish.html
  21. 6
      doc/basic.md
  22. 7
      doc/change.md
  23. 7
      doc/dish.md
  24. 7
      doc/menu/dish.md
  25. 26
      sql/diet.sql
  26. 31
      sql/init.sql

3
diet-core/src/main/java/com/mathvision/diet/excel/IngredientModel.java

@ -66,4 +66,7 @@ public class IngredientModel {
@ExcelProperty(value = "膳食纤维(g)", converter = BigDecimalStringConverter.class) @ExcelProperty(value = "膳食纤维(g)", converter = BigDecimalStringConverter.class)
private BigDecimal fiber; private BigDecimal fiber;
@ExcelProperty(value = "钠(mg)", converter = BigDecimalStringConverter.class)
private BigDecimal sodium;
} }

10
diet-core/src/main/java/com/mathvision/diet/service/DishService.java

@ -84,11 +84,11 @@ public class DishService {
return dishRepository.findByNameLikeOrderByIdDesc("%" + keyword + "%"); return dishRepository.findByNameLikeOrderByIdDesc("%" + keyword + "%");
} }
public Page<Dish> list(Long vender, String name, String mark, PageRequest pageRequest) { public Page<Dish> list(Long vender, String name, String mark, String poly, PageRequest pageRequest) {
return dishRepository.findAll(toSpecification(vender, name, mark), pageRequest); return dishRepository.findAll(toSpecification(vender, name, mark, poly), pageRequest);
} }
private Specification<Dish> toSpecification(Long vender, String name, String mark) { private Specification<Dish> toSpecification(Long vender, String name, String mark, String poly) {
return (root, query, builder) -> { return (root, query, builder) -> {
List<Predicate> predicates = new ArrayList<>(); List<Predicate> predicates = new ArrayList<>();
@ -100,6 +100,10 @@ public class DishService {
predicates.add(builder.equal(root.get("marks"), mark)); predicates.add(builder.equal(root.get("marks"), mark));
} }
if (StringUtils.isNotBlank(poly)) {
predicates.add(builder.equal(root.get("poly"), poly));
}
if (StringUtils.isNotBlank(name)) { if (StringUtils.isNotBlank(name)) {
predicates.add(builder.like(root.get("name"), "%" + name + "%")); predicates.add(builder.like(root.get("name"), "%" + name + "%"));
} }

25
diet-core/src/main/java/com/mathvision/diet/service/EnumService.java

@ -2,14 +2,8 @@ package com.mathvision.diet.service;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.mathvision.diet.domian.*; import com.mathvision.diet.domian.*;
import com.mathvision.diet.entity.FoodCategory; import com.mathvision.diet.entity.*;
import com.mathvision.diet.entity.FoodMark; import com.mathvision.diet.repository.*;
import com.mathvision.diet.entity.FoodNutrient;
import com.mathvision.diet.entity.RoleItem;
import com.mathvision.diet.repository.FoodCategoryRepository;
import com.mathvision.diet.repository.FoodMarkRepository;
import com.mathvision.diet.repository.FoodNutrientRepository;
import com.mathvision.diet.repository.RoleItemRepository;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.KeyValue; import org.apache.commons.collections4.KeyValue;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
@ -24,9 +18,16 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
@Service @Service
public class EnumService { public class EnumService {
private final FoodPolyRepository foodPolyRepository;
public EnumService(FoodPolyRepository foodPolyRepository) {
this.foodPolyRepository = foodPolyRepository;
}
private static Map<AuthType, Set<String>> AUTH_ITEMS = new HashMap<>(); private static Map<AuthType, Set<String>> AUTH_ITEMS = new HashMap<>();
private static Map<Long, RoleItem> ROLE_ITEMS = new HashMap<>(); private static Map<Long, RoleItem> ROLE_ITEMS = new HashMap<>();
private static Map<String, FoodMark> FOOD_MARK = new HashMap<>(); private static Map<String, FoodMark> FOOD_MARK = new HashMap<>();
private static Map<String, FoodPoly> FOOD_POLY = new HashMap<>();
private static Map<String, FoodCategory> FOOD_CATEGORY = new HashMap<>(); private static Map<String, FoodCategory> FOOD_CATEGORY = new HashMap<>();
private static Map<String, FoodNutrient> FOOD_NUTRIENT = new HashMap<>(); private static Map<String, FoodNutrient> FOOD_NUTRIENT = new HashMap<>();
@ -48,6 +49,7 @@ public class EnumService {
ROLE_ITEMS = roleItemRepository.findAll().stream().collect(Collectors.toConcurrentMap(RoleItem::getId, x -> x)); ROLE_ITEMS = roleItemRepository.findAll().stream().collect(Collectors.toConcurrentMap(RoleItem::getId, x -> x));
AUTH_ITEMS = ROLE_ITEMS.values().stream().map(item -> Pair.of(item.getItemType(), "/api/" + item.getItemValue().split(":", 2)[1])).collect(Collectors.toMap(Pair::getKey, v-> Sets.newHashSet(v.getValue()), Sets::union)); AUTH_ITEMS = ROLE_ITEMS.values().stream().map(item -> Pair.of(item.getItemType(), "/api/" + item.getItemValue().split(":", 2)[1])).collect(Collectors.toMap(Pair::getKey, v-> Sets.newHashSet(v.getValue()), Sets::union));
FOOD_MARK = foodMarkRepository.findAll().stream().collect(Collectors.toConcurrentMap(FoodMark::getKey, x -> x)); FOOD_MARK = foodMarkRepository.findAll().stream().collect(Collectors.toConcurrentMap(FoodMark::getKey, x -> x));
FOOD_POLY = foodPolyRepository.findAll().stream().collect(Collectors.toConcurrentMap(FoodPoly::getKey, x -> x));
FOOD_CATEGORY = foodCategoryRepository.findAll().stream().collect(Collectors.toConcurrentMap(FoodCategory::getKey, x -> x)); FOOD_CATEGORY = foodCategoryRepository.findAll().stream().collect(Collectors.toConcurrentMap(FoodCategory::getKey, x -> x));
FOOD_NUTRIENT = foodNutrientRepository.findAll().stream().collect(Collectors.toConcurrentMap(FoodNutrient::getKey, x -> x)); FOOD_NUTRIENT = foodNutrientRepository.findAll().stream().collect(Collectors.toConcurrentMap(FoodNutrient::getKey, x -> x));
} }
@ -55,6 +57,7 @@ public class EnumService {
public Map<String, Collection<?>> getAll() { public Map<String, Collection<?>> getAll() {
Map<String, Collection<?>> result = new HashMap<>(); Map<String, Collection<?>> result = new HashMap<>();
result.put("mark", FOOD_MARK.values()); result.put("mark", FOOD_MARK.values());
result.put("poly", FOOD_POLY.values());
result.put("category", FOOD_CATEGORY.values()); result.put("category", FOOD_CATEGORY.values());
result.put("nutrient", FOOD_NUTRIENT.values()); result.put("nutrient", FOOD_NUTRIENT.values());
result.put("venderType", Arrays.stream(VenderType.values()).map(x -> new KeyValue<String, String>() { result.put("venderType", Arrays.stream(VenderType.values()).map(x -> new KeyValue<String, String>() {
@ -121,6 +124,10 @@ public class EnumService {
return FOOD_MARK.containsKey(mark); return FOOD_MARK.containsKey(mark);
} }
public boolean checkPoly(String poly) {
return FOOD_POLY.containsKey(poly);
}
public boolean checkCategory(String category) { public boolean checkCategory(String category) {
return FOOD_CATEGORY.containsKey(category); return FOOD_CATEGORY.containsKey(category);
} }
@ -132,4 +139,4 @@ public class EnumService {
public FoodNutrient getNutrient(String nutrient) { public FoodNutrient getNutrient(String nutrient) {
return FOOD_NUTRIENT.get(nutrient); return FOOD_NUTRIENT.get(nutrient);
} }
} }

4
diet-core/src/main/java/com/mathvision/diet/service/MenuDishService.java

@ -4,11 +4,8 @@ import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.support.ExcelTypeEnum; import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy;
import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy; import com.alibaba.excel.write.style.row.SimpleRowHeightStyleStrategy;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.common.collect.Range;
import com.mathvision.diet.domian.MealType; import com.mathvision.diet.domian.MealType;
import com.mathvision.diet.domian.MenuDishItemDTO; import com.mathvision.diet.domian.MenuDishItemDTO;
import com.mathvision.diet.entity.*; import com.mathvision.diet.entity.*;
@ -22,7 +19,6 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.OutputStream; import java.io.OutputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.IntStream; import java.util.stream.IntStream;

7
diet-dao/src/main/java/com/mathvision/diet/entity/Dish.java

@ -22,9 +22,10 @@ import java.util.List;
@Table(name = "dish") @Table(name = "dish")
public class Dish { public class Dish {
public Dish(Long id, String name, String marks, List<DishItemDTO> ingredient) { public Dish(Long id, String name, String marks, String poly, List<DishItemDTO> ingredient) {
setId(id); setId(id);
setName(name); setName(name);
setPoly(poly);
setMarks(marks); setMarks(marks);
setIngredient(ingredient); setIngredient(ingredient);
} }
@ -40,7 +41,6 @@ public class Dish {
@Column(name = "`vender`", nullable = false, length = 20) @Column(name = "`vender`", nullable = false, length = 20)
private Long vender; private Long vender;
@Lob
@Column(name = "icon") @Column(name = "icon")
private String icon; private String icon;
@ -55,6 +55,9 @@ public class Dish {
@Column(name = "marks", nullable = false, length = 45) @Column(name = "marks", nullable = false, length = 45)
private String marks; private String marks;
@Column(name = "poly", nullable = false, length = 16)
private String poly;
@JSONField(serialize = false) @JSONField(serialize = false)
@Column(name = "operate", length = 45) @Column(name = "operate", length = 45)
private String operate; private String operate;

42
diet-dao/src/main/java/com/mathvision/diet/entity/FoodPoly.java

@ -0,0 +1,42 @@
package com.mathvision.diet.entity;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.*;
import javax.persistence.*;
import java.time.Instant;
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Entity
@Table(name = "food_poly")
public class FoodPoly {
@JSONField(serialize = false)
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "`key`", nullable = false, length = 20)
private String key;
@Column(name = "name", nullable = false, length = 20)
private String name;
@JSONField(serialize = false)
@Column(name = "operate", length = 45)
private String operate;
@JSONField(serialize = false)
@Column(name = "created")
private Instant created;
@JSONField(serialize = false)
@Column(name = "modify")
private Instant modify;
}

27
diet-dao/src/main/java/com/mathvision/diet/entity/Icon.java

@ -1,27 +0,0 @@
package com.mathvision.diet.entity;
import lombok.*;
import javax.persistence.*;
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Entity
@Table(name = "icon")
public class Icon {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "`key`", nullable = false, length = 64)
private String key;
@Lob
@Column(name = "icon", nullable = false)
private String icon;
}

3
diet-dao/src/main/java/com/mathvision/diet/entity/MenuDish.java

@ -50,6 +50,9 @@ public class MenuDish {
@Column(name = "marks", nullable = false, length = 45) @Column(name = "marks", nullable = false, length = 45)
private String marks; private String marks;
@Column(name = "poly", nullable = false, length = 16)
private String poly;
@JSONField(serialize = false) @JSONField(serialize = false)
@Column(name = "operate", length = 45) @Column(name = "operate", length = 45)
private String operate; private String operate;

1
diet-dao/src/main/java/com/mathvision/diet/entity/Vender.java

@ -44,7 +44,6 @@ public class Vender {
@Column(name = "status", nullable = false) @Column(name = "status", nullable = false)
private Boolean status; private Boolean status;
@Lob
@Column(name = "icon") @Column(name = "icon")
private String icon; private String icon;

2
diet-dao/src/main/java/com/mathvision/diet/repository/DishRepository.java

@ -12,7 +12,7 @@ import java.util.List;
public interface DishRepository extends JpaRepository<Dish, Long>, JpaSpecificationExecutor<Dish> { public interface DishRepository extends JpaRepository<Dish, Long>, JpaSpecificationExecutor<Dish> {
@Transactional @Transactional
long deleteByVender(Long vender); long deleteByVender(Long vender);
@Query("select new Dish(d.id, d.name, d.marks, d.ingredient) from Dish d where d.name like ?1 order by d.id DESC") @Query("select new Dish(d.id, d.name, d.marks, d.poly, d.ingredient) from Dish d where d.name like ?1 order by d.id DESC")
List<Dish> findByNameLikeOrderByIdDesc(String name); List<Dish> findByNameLikeOrderByIdDesc(String name);
boolean existsByVenderAndNameAndIdNot(Long vender, String name, Long id); boolean existsByVenderAndNameAndIdNot(Long vender, String name, Long id);
boolean existsByVenderAndIdIn(Long vender, Collection<Long> ids); boolean existsByVenderAndIdIn(Long vender, Collection<Long> ids);

8
diet-dao/src/main/java/com/mathvision/diet/repository/FoodPolyRepository.java

@ -0,0 +1,8 @@
package com.mathvision.diet.repository;
import com.mathvision.diet.entity.FoodPoly;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface FoodPolyRepository extends JpaRepository<FoodPoly, Long>, JpaSpecificationExecutor<FoodPoly> {
}

7
diet-dao/src/main/java/com/mathvision/diet/repository/IconRepository.java

@ -1,7 +0,0 @@
package com.mathvision.diet.repository;
import com.mathvision.diet.entity.Icon;
import org.springframework.data.jpa.repository.JpaRepository;
public interface IconRepository extends JpaRepository<Icon, Long> {
}

65
diet-dao/src/main/java/com/mathvision/diet/utils/GZIPUtils.java

@ -1,65 +0,0 @@
package com.mathvision.diet.utils;
import lombok.extern.slf4j.Slf4j;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
@Slf4j
public class GZIPUtils {
public static final String GZIP_ENCODE_UTF_8 = "UTF-8";
public static String compress(String str) {
return compress(str, GZIP_ENCODE_UTF_8);
}
public static String compress(String str, String encoding) {
if (str == null || str.length() == 0) {
return null;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip;
try {
gzip = new GZIPOutputStream(out);
gzip.write(str.getBytes(encoding));
gzip.close();
} catch (Exception e) {
log.error("gzip compress error.", e);
}
return out.toString();
}
public static String decompress(String str) {
return decompressToString(str, GZIP_ENCODE_UTF_8);
}
public static String decompressToString(String str, String encoding) {
if (str == null || str.length() == 0) {
return null;
}
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes(encoding));
GZIPInputStream unGzip = new GZIPInputStream(in);
byte[] buffer = new byte[256];
int n;
while ((n = unGzip.read(buffer)) >= 0) {
out.write(buffer, 0, n);
}
return out.toString(encoding);
} catch (Exception e) {
log.error("gzip decompressToString to string error.", e);
}
return null;
}
public static void main(String[] args) {
String str ="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD//gAXR2VuZXJhdGVkIGJ5IFNuaXBhc3Rl/9sAhAAKBwcIBwYKCAgICwoKCw4YEA4NDQ4dFRYRGCMfJSQiHyIhJis3LyYpNCkhIjBBMTQ5Oz4+PiUuRElDPEg3PT47AQoLCw4NDhwQEBw7KCIoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCABAAF0DAREAAhEBAxEB/8QBogAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foBAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCjXjnzAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBe0/RNT1SNpbK0eZEO0sCAM+nNXGnKWyNYUalRXiiWLw5q811NbR2TNNBt81Qy/LnkZ5pqlNu1ilQqNuKWqHy+FdcgieWTTpAiAsxDKcAewNDozSvYbw1VK7iZNZnOWr3TL3T5I47u3aJpVDIDzuB+lVKEo7mk6c4NKSGXthdadP5F5A8MmM7WHUetKUXF2YpwlB2krEG0kE4OB1NIkkjtriWJ5Y4JHjj5d1QkL9T2ppN6jUW1dIYil3VF6scDnFISVya7srixdEuY/LZ0DryDlT0PH0puLjuVKEoaMgpEBQB6R8Ov8AkX5/+vpv/QErvw3wP1PYwH8J+v8AkNa+/wCEZ8U3kl+rLY6iVdJwMhWA6HH1P6Uc3s6j5tmHP7Cs3LaRpXWv2V7aTW+nTC6meJs7ASsYwcsx6D6dzxVupFq0dTaVeEk1B3ZyPgC2WbVblzMYykHQBTuBYZ6g8cCuXDq8mefgo3m9eh288V1f2sM3lvbvgNsSVdw9ASVP6frXY05K56bUppPb+vQpXxOoTzaZcvLC0lmzq0cisGAOGB+Xr0qJe8+V9jKfvtwlpoYHhbW9Ei8PTaXqMggLlt+VJ8wN3yB1HT8BWNKpBQ5ZHLhq1JUnCeh0Gj2mlp4durSxNxcWjeYrkoQ75HOOBnjjNbwUeRqOx10o01ScY3aOL16xi03T44V0Oa13yZS7nnDO4HYqOB9K5KkVFW5bHm1oKEbclvNs54knqSawOQKACgDqvCmr6tBYyadpGnLcSNMZGlkJ2oCAOenp6100ZzS5Yo78NVqKPJTjc6YWviyaMi5k0mRW6wyIxX8eP8a6LVXvY7OXENe9Yl+0/wBn6fPbXmmxWAaNgslvgwscdMgAqfqPxp35VZqxXNyRalG3psed6DcwWmrRy3CvJFgqY1UnfnjGARn9foa4KbSlqeRRkozTZ6Vd6pY6Vahb54YoGQgQlclh2ATHT6gD2r0HOMVqezKpCmve2/rocre6sus2M2racGtdRtNyOsY5a3JwCfpkfTn2rmlPnXNHRr8jhnV9pF1IaSX5GfpPitdG01Le30q3a5Ukm4c5LZOegGfQde1RCtyRslqY0sT7OFlHXuaVr4s1W80LWJ5JMSwrH5TRx4Cbmwefp0zWirTcJM3jiakqc2+ljkbi7ubtt1zcSzEd5HLfzrlbb3PPlKUt3cipEhQAUAa+j+J9R0O3e3tPKMbvvIkTODjHr7CtYVZQVkdFLETpK0TQ/wCFg61/ctf+/Z/xq/rMzb69V8iK78c6xd2slu/2dFlUqxWPnB69SaTxE2rEyxlWSaMCCeS2nSeFykkbBlYdiKwTad0cibi7oW4uJrudp7iVpZXOWdzkmm227scpOTuxI5pYd3lSvHvUq21iNwPUH2pJtbCTa2GUCLdvql3bafcWEbgQXOPMUqDkj3/CqU2k49zSNSUYuK2ZUqTMKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD//Z";
System.out.println("原数据:" + str);
System.out.println("压缩后数据:" + (str));
System.out.println("解压缩后字符串:" + decompress(compress(str)));
}
}

15
diet-web/src/main/java/com/mathvision/diet/controller/DishController.java

@ -45,10 +45,12 @@ public class DishController extends BaseController {
@ResponseBody @ResponseBody
@RequestMapping(method = RequestMethod.PUT) @RequestMapping(method = RequestMethod.PUT)
public void add(@RequestParam String name, @RequestParam(required = false) List<Long> vendors, @RequestParam(required = false) String icon, @RequestParam(required = false) List<Integer> month, @RequestParam String mark, @RequestParam String ingredient) { public void add(@RequestParam String name, @RequestParam(required = false) List<Long> vendors, @RequestParam(required = false) String icon, @RequestParam(required = false) List<Integer> month, @RequestParam String mark, @RequestParam String poly, @RequestParam String ingredient) {
Assert.isTrue(StringUtils.isNotBlank(name), "[参数错误]菜品名称必填!"); Assert.isTrue(StringUtils.isNotBlank(name), "[参数错误]菜品名称必填!");
Assert.isTrue(StringUtils.isNotBlank(mark), "[参数错误]菜品标签必填!"); Assert.isTrue(StringUtils.isNotBlank(mark), "[参数错误]菜品标签必填!");
Assert.isTrue(StringUtils.isNotBlank(poly), "[参数错误]烹饪手法必填!");
Assert.isTrue(enumService.checkMark(mark), "[参数错误]菜品标签不在取值范围内!"); Assert.isTrue(enumService.checkMark(mark), "[参数错误]菜品标签不在取值范围内!");
Assert.isTrue(enumService.checkPoly(poly), "[参数错误]烹饪手法不在取值范围内!");
Assert.isTrue(CollectionUtils.isNotEmpty(month) && month.stream().allMatch(x -> Range.closed(1, 12).contains(x)), "[参数错误]请选择正确的月份!"); Assert.isTrue(CollectionUtils.isNotEmpty(month) && month.stream().allMatch(x -> Range.closed(1, 12).contains(x)), "[参数错误]请选择正确的月份!");
Assert.isTrue(JSON.isValid(ingredient), "[参数错误]食材列表必填!"); Assert.isTrue(JSON.isValid(ingredient), "[参数错误]食材列表必填!");
@ -75,7 +77,7 @@ public class DishController extends BaseController {
@ResponseBody @ResponseBody
@RequestMapping(method = RequestMethod.POST) @RequestMapping(method = RequestMethod.POST)
public void update(@RequestParam Long id, @RequestParam(required = false) String name, @RequestParam(required = false) String icon, @RequestParam(required = false) List<Integer> month, @RequestParam(required = false) String mark, @RequestParam(required = false) String ingredient) { public void update(@RequestParam Long id, @RequestParam(required = false) String name, @RequestParam(required = false) String icon, @RequestParam(required = false) List<Integer> month, @RequestParam(required = false) String mark, @RequestParam(required = false) String poly, @RequestParam(required = false) String ingredient) {
Dish dish = isAdmin()? dishService.get(id) : dishService.get(id, getVender()); Dish dish = isAdmin()? dishService.get(id) : dishService.get(id, getVender());
Assert.isTrue(dish != null, "[参数错误]菜品不存在!"); Assert.isTrue(dish != null, "[参数错误]菜品不存在!");
@ -94,6 +96,11 @@ public class DishController extends BaseController {
dish.setMarks(mark); dish.setMarks(mark);
flag = true; flag = true;
} }
if(StringUtils.isNotBlank(poly) && !poly.equals(dish.getPoly())) {
Assert.isTrue(enumService.checkPoly(poly), "[参数错误]烹饪手法不在取值范围内!");
dish.setPoly(poly);
flag = true;
}
if(CollectionUtils.isNotEmpty(month)) { if(CollectionUtils.isNotEmpty(month)) {
Assert.isTrue(CollectionUtils.isNotEmpty(month) && month.stream().allMatch(x -> Range.closed(1, 12).contains(x)), "[参数错误]请选择正确的月份!"); Assert.isTrue(CollectionUtils.isNotEmpty(month) && month.stream().allMatch(x -> Range.closed(1, 12).contains(x)), "[参数错误]请选择正确的月份!");
dish.setMonth(month); dish.setMonth(month);
@ -114,11 +121,11 @@ public class DishController extends BaseController {
@ResponseBody @ResponseBody
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET)
public Object query(@RequestParam(required = false) String keyword, @RequestParam(required = false) Long id, @RequestParam(required = false) Long vendors, @RequestParam(required = false) String mark, @RequestParam(required = false, defaultValue = "0") int pageNo, @RequestParam(required = false, defaultValue = "20") int pageSize) { public Object query(@RequestParam(required = false) String keyword, @RequestParam(required = false) Long id, @RequestParam(required = false) Long vendors, @RequestParam(required = false) String mark, @RequestParam(required = false) String poly, @RequestParam(required = false, defaultValue = "0") int pageNo, @RequestParam(required = false, defaultValue = "20") int pageSize) {
if (id != null) { if (id != null) {
return isAdmin() ? dishService.get(id) : dishService.get(id, getVender()); return isAdmin() ? dishService.get(id) : dishService.get(id, getVender());
} }
return dishService.list(!isAdmin() || vendors == null ? getVender() : vendors, keyword, mark, PageRequest.of(pageNo, pageSize).withSort(Sort.by(Sort.Direction.DESC, "id"))); return dishService.list(!isAdmin() || vendors == null ? getVender() : vendors, keyword, mark, poly, PageRequest.of(pageNo, pageSize).withSort(Sort.by(Sort.Direction.DESC, "id")));
} }
@ResponseBody @ResponseBody

20
diet-web/src/main/java/com/mathvision/diet/controller/MenuDishController.java

@ -47,9 +47,9 @@ public class MenuDishController extends BaseController {
@ResponseBody @ResponseBody
@RequestMapping(method = RequestMethod.PUT) @RequestMapping(method = RequestMethod.PUT)
public Long add(@RequestParam Long menuId, @RequestParam Long dishId, @RequestParam Integer day, @RequestParam String meal, @RequestParam(required = false) String mark, @RequestParam String ingredient) { public Long add(@RequestParam Long menuId, @RequestParam Long dishId, @RequestParam Integer day, @RequestParam String meal, @RequestParam(required = false) String mark, @RequestParam(required = false) String poly, @RequestParam String ingredient) {
Menu menu = checkAndConvert(menuId, MenuStatus.pass, MenuStatus.publish); Menu menu = checkAndConvert(menuId, MenuStatus.pass, MenuStatus.publish);
return menuDishService.add(checkAndConvert(menu, checkAndConvert(dishId), day, meal, mark, parseItems(ingredient, new HashSet<>(menu.getCrows())))).getId(); return menuDishService.add(checkAndConvert(menu, checkAndConvert(dishId), day, meal, mark, poly, parseItems(ingredient, new HashSet<>(menu.getCrows())))).getId();
} }
@ResponseBody @ResponseBody
@ -58,7 +58,7 @@ public class MenuDishController extends BaseController {
menuDishVO.getMenuIds().forEach(menuId -> checkAndConvert(menuId, MenuStatus.pass, MenuStatus.publish)); menuDishVO.getMenuIds().forEach(menuId -> checkAndConvert(menuId, MenuStatus.pass, MenuStatus.publish));
return menuDishService.addAll(menuDishVO.getMenuIds().stream().map(menuId -> { return menuDishService.addAll(menuDishVO.getMenuIds().stream().map(menuId -> {
Menu menu = checkAndConvert(menuId, MenuStatus.pass, MenuStatus.publish); Menu menu = checkAndConvert(menuId, MenuStatus.pass, MenuStatus.publish);
return menuDishVO.getDishes().stream().map(dish -> checkAndConvert(menu, checkAndConvert(dish.getDish()), dish.getDay(), dish.getMeal(), dish.getMark(), dish.getItems().stream().map(item -> MenuDishItemDTO.builder().isMain(item.getIsMain()).key(item.getKey()).value(item.getValue()).build()).collect(Collectors.toList()))).collect(Collectors.toList()); return menuDishVO.getDishes().stream().map(dish -> checkAndConvert(menu, checkAndConvert(dish.getDish()), dish.getDay(), dish.getMeal(), dish.getMark(), dish.getPoly(), dish.getItems().stream().map(item -> MenuDishItemDTO.builder().isMain(item.getIsMain()).key(item.getKey()).value(item.getValue()).build()).collect(Collectors.toList()))).collect(Collectors.toList());
}).flatMap(List::stream).collect(Collectors.toList())).stream().map(MenuDish::getId).collect(Collectors.toList()); }).flatMap(List::stream).collect(Collectors.toList())).stream().map(MenuDish::getId).collect(Collectors.toList());
} }
@ -77,7 +77,7 @@ public class MenuDishController extends BaseController {
@ResponseBody @ResponseBody
@RequestMapping(method = RequestMethod.POST) @RequestMapping(method = RequestMethod.POST)
public void update(@RequestParam Long menuDishId, @RequestParam Long menuId, @RequestParam(required = false) String mark, @RequestParam(required = false) String ingredient) { public void update(@RequestParam Long menuDishId, @RequestParam Long menuId, @RequestParam(required = false) String mark, @RequestParam(required = false) String poly, @RequestParam(required = false) String ingredient) {
Menu menu = checkAndConvert(menuId, MenuStatus.pass, MenuStatus.publish); Menu menu = checkAndConvert(menuId, MenuStatus.pass, MenuStatus.publish);
MenuDish dish = isAdmin() ? menuDishService.get(menuDishId) : menuDishService.get(menuDishId, getVender()); MenuDish dish = isAdmin() ? menuDishService.get(menuDishId) : menuDishService.get(menuDishId, getVender());
Assert.notNull(dish, "[参数错误]菜品不存在!"); Assert.notNull(dish, "[参数错误]菜品不存在!");
@ -88,6 +88,11 @@ public class MenuDishController extends BaseController {
dish.setMarks(mark); dish.setMarks(mark);
flag= true; flag= true;
} }
if (StringUtils.isNotBlank(poly) && !StringUtils.equals(poly, dish.getPoly())) {
Assert.isTrue(enumService.checkPoly(poly), "[参数错误]烹饪手法不在取值范围内!");
dish.setPoly(poly);
flag= true;
}
if (StringUtils.isNotBlank(ingredient) && JSON.isValid(ingredient)) { if (StringUtils.isNotBlank(ingredient) && JSON.isValid(ingredient)) {
dish.setIngredient(parseItems(ingredient, new HashSet<>(menu.getCrows()))); dish.setIngredient(parseItems(ingredient, new HashSet<>(menu.getCrows())));
flag = true; flag = true;
@ -124,15 +129,18 @@ public class MenuDishController extends BaseController {
return isAdmin() ? menuDishService.query(menuId) : menuDishService.query(menuId, getVender()); return isAdmin() ? menuDishService.query(menuId) : menuDishService.query(menuId, getVender());
} }
private MenuDish checkAndConvert(Menu menu, Dish dish, Integer day, String meal, String mark, List<MenuDishItemDTO> ingredient) { private MenuDish checkAndConvert(Menu menu, Dish dish, Integer day, String meal, String mark, String poly, List<MenuDishItemDTO> ingredient) {
Assert.isTrue(Range.closed(1, menu.getDay().intValue()).contains(day), "[参数错误]天数不在食谱的设置范围内!"); Assert.isTrue(Range.closed(1, menu.getDay().intValue()).contains(day), "[参数错误]天数不在食谱的设置范围内!");
Assert.isTrue(menu.getMeals().contains(meal), "[参数错误]餐次不在食谱的设置范围内!"); Assert.isTrue(menu.getMeals().contains(meal), "[参数错误]餐次不在食谱的设置范围内!");
mark = StringUtils.isBlank(mark) ? dish.getMarks() : mark; mark = StringUtils.isBlank(mark) ? dish.getMarks() : mark;
Assert.isTrue(enumService.checkMark(mark), "[参数错误]菜品标签不在取值范围内!"); Assert.isTrue(enumService.checkMark(mark), "[参数错误]菜品标签不在取值范围内!");
poly= StringUtils.isBlank(poly) ? dish.getPoly() : poly;
Assert.isTrue(enumService.checkPoly(poly), "[参数错误]烹饪手法不在取值范围内!");
Instant dateTime = Instant.now(); Instant dateTime = Instant.now();
return MenuDish.builder().vender(menu.getVender()).menu(menu.getId()).dish(dish.getId()).day(day.longValue()).meal(meal).name(dish.getName()).marks(mark).ingredient(ingredient).operate(getUid()).created(dateTime).modify(dateTime).build(); return MenuDish.builder().vender(menu.getVender()).menu(menu.getId()).dish(dish.getId()).day(day.longValue()).meal(meal).name(dish.getName()).marks(mark).poly(poly).ingredient(ingredient).operate(getUid()).created(dateTime).modify(dateTime).build();
} }
private Menu checkAndConvert(Long menuId, MenuStatus ... statuses) { private Menu checkAndConvert(Long menuId, MenuStatus ... statuses) {

2
diet-web/src/main/java/com/mathvision/diet/vo/MenuDishDetailVO.java

@ -19,6 +19,8 @@ public class MenuDishDetailVO {
String meal; String meal;
/**打标,默认用原菜品标签*/ /**打标,默认用原菜品标签*/
String mark; String mark;
/**打标,默认用原菜品烹饪手法*/
String poly;
/**引用的菜品编号 */ /**引用的菜品编号 */
Long dish; Long dish;
/**人群食材对应关系*/ /**人群食材对应关系*/

6
diet-web/src/main/resources/static/basic.html

@ -344,6 +344,12 @@ password=BE56E057F20F883E //
&quot;key&quot;: &quot;ÆäËû&quot;, &quot;key&quot;: &quot;ÆäËû&quot;,
&quot;value&quot;: &quot;ÆäËû&quot; &quot;value&quot;: &quot;ÆäËû&quot;
} }
],
&quot;poly&quot;:[
{
&quot;key&quot;: &quot;Õô&quot;,
&quot;value&quot;: &quot;Õô&quot;
}
] ]
}, },
&quot;code&quot;: 200, &quot;code&quot;: 200,

7
diet-web/src/main/resources/static/change.html

@ -32,4 +32,11 @@
<li>食谱接口: 将食谱分析接口从食谱菜品拿出来, 放到了食谱分析章节, 请求路径中去除了dish路径, 涉及3个接口;</li> <li>食谱接口: 将食谱分析接口从食谱菜品拿出来, 放到了食谱分析章节, 请求路径中去除了dish路径, 涉及3个接口;</li>
<li>鉴权接口: 去除了session方式;</li> <li>鉴权接口: 去除了session方式;</li>
</ul> </ul>
<h3>11.11</h3>
<ul>
<li>枚举接口: 增加poly(烹饪手法)</li>
<li>枚举接口: 营养素增加了钠</li>
<li>菜品接口: 增删改查支持poly字段(烹饪手法);</li>
<li>食谱菜品: 增删改查支持poly字段(烹饪手法);</li>
</ul>

7
diet-web/src/main/resources/static/dish.html

@ -8,6 +8,7 @@
pageNo=0 // 默认0, 从0开始 pageNo=0 // 默认0, 从0开始
keyword=番茄鸡蛋汤 // 查询关键字 keyword=番茄鸡蛋汤 // 查询关键字
mark=汤类 // 标签 取值参照GET /api/basic/enum 接口中的 mark mark=汤类 // 标签 取值参照GET /api/basic/enum 接口中的 mark
poly=蒸 // 烹饪手法 取值参照GET /api/basic/enum 接口中的 poly
</code></pre> </code></pre>
<h3>输出:</h3> <h3>输出:</h3>
<pre><code class="json">{ <pre><code class="json">{
@ -24,6 +25,7 @@ mark=
} }
], ],
&quot;marks&quot;: &quot;主食&quot;, &quot;marks&quot;: &quot;主食&quot;,
&quot;poly&quot;: &quot;&quot;,
&quot;modify&quot;: 1695277128000, &quot;modify&quot;: 1695277128000,
&quot;month&quot;: [ &quot;month&quot;: [
1, 1,
@ -72,6 +74,7 @@ mark=
} }
], ],
&quot;marks&quot;: &quot;汤类&quot;, &quot;marks&quot;: &quot;汤类&quot;,
&quot;poly&quot;: &quot;&quot;,
&quot;month&quot;: [ &quot;month&quot;: [
1, 1,
3, 3,
@ -107,6 +110,7 @@ mark=
} }
], ],
&quot;marks&quot;: &quot;面食&quot;, &quot;marks&quot;: &quot;面食&quot;,
&quot;poly&quot;: &quot;&quot;,
&quot;name&quot;: &quot;麻婆豆腐&quot; &quot;name&quot;: &quot;麻婆豆腐&quot;
}, },
{ {
@ -124,6 +128,7 @@ mark=
} }
], ],
&quot;marks&quot;: &quot;面食&quot;, &quot;marks&quot;: &quot;面食&quot;,
&quot;poly&quot;: &quot;&quot;,
&quot;name&quot;: &quot;麻婆豆腐&quot; &quot;name&quot;: &quot;麻婆豆腐&quot;
} }
], ],
@ -192,6 +197,7 @@ vendors=1,2,3 //
icon= // 图片 icon= // 图片
month=1,2,3 //月份 month=1,2,3 //月份
mark=汤类 // 必填 标签 取值参照GET /api/basic/enum 接口中的 mark mark=汤类 // 必填 标签 取值参照GET /api/basic/enum 接口中的 mark
poly=蒸 // 必填 烹饪手法 取值参照GET /api/basic/enum 接口中的 poly
ingredient=[{&quot;key&quot;: &quot;011101&quot;, &quot;value&quot;: 500, &quot;isMain&quot;: true}] // 食材列表 ingredient=[{&quot;key&quot;: &quot;011101&quot;, &quot;value&quot;: 500, &quot;isMain&quot;: true}] // 食材列表
</code></pre> </code></pre>
<h3>输出:</h3> <h3>输出:</h3>
@ -213,6 +219,7 @@ vendors=1,2,3 //
icon= // 图片 icon= // 图片
month=1,2,3 // 月份 month=1,2,3 // 月份
mark=汤类 // 标签 取值参照GET /api/basic/enum 接口中的 mark mark=汤类 // 标签 取值参照GET /api/basic/enum 接口中的 mark
poly=蒸 // 必填 烹饪手法 取值参照GET /api/basic/enum 接口中的 poly
ingredient=[{&quot;key&quot;: &quot;011101&quot;, &quot;value&quot;: 500, &quot;isMain&quot;: true}] // 食材列表 ingredient=[{&quot;key&quot;: &quot;011101&quot;, &quot;value&quot;: 500, &quot;isMain&quot;: true}] // 食材列表
</code></pre> </code></pre>
<h3>输出:</h3> <h3>输出:</h3>

7
diet-web/src/main/resources/static/menu/dish.html

@ -31,6 +31,7 @@
} }
], ],
&quot;marks&quot;: &quot;主食&quot;, &quot;marks&quot;: &quot;主食&quot;,
&quot;poly&quot;: &quot;&quot;,
&quot;meal&quot;: &quot;早餐&quot;, &quot;meal&quot;: &quot;早餐&quot;,
&quot;menu&quot;: 1, &quot;menu&quot;: 1,
&quot;name&quot;: &quot;番茄炒蛋&quot;, &quot;name&quot;: &quot;番茄炒蛋&quot;,
@ -51,6 +52,7 @@
} }
], ],
&quot;marks&quot;: &quot;主食&quot;, &quot;marks&quot;: &quot;主食&quot;,
&quot;poly&quot;: &quot;&quot;,
&quot;meal&quot;: &quot;早餐&quot;, &quot;meal&quot;: &quot;早餐&quot;,
&quot;menu&quot;: 1, &quot;menu&quot;: 1,
&quot;name&quot;: &quot;番茄炒鸡蛋&quot;, &quot;name&quot;: &quot;番茄炒鸡蛋&quot;,
@ -92,6 +94,7 @@
} }
], ],
&quot;marks&quot;: &quot;主食&quot;, &quot;marks&quot;: &quot;主食&quot;,
&quot;poly&quot;: &quot;&quot;,
&quot;meal&quot;: &quot;早餐&quot;, &quot;meal&quot;: &quot;早餐&quot;,
&quot;menu&quot;: 1, &quot;menu&quot;: 1,
&quot;name&quot;: &quot;番茄炒蛋&quot;, &quot;name&quot;: &quot;番茄炒蛋&quot;,
@ -112,6 +115,7 @@
} }
], ],
&quot;marks&quot;: &quot;主食&quot;, &quot;marks&quot;: &quot;主食&quot;,
&quot;poly&quot;: &quot;&quot;,
&quot;meal&quot;: &quot;早餐&quot;, &quot;meal&quot;: &quot;早餐&quot;,
&quot;menu&quot;: 1, &quot;menu&quot;: 1,
&quot;name&quot;: &quot;番茄炒鸡蛋&quot;, &quot;name&quot;: &quot;番茄炒鸡蛋&quot;,
@ -133,6 +137,7 @@ dishId=1 //
day=1 // 属于那一天 day=1 // 属于那一天
meal=早餐 // 属于那个餐次 meal=早餐 // 属于那个餐次
mark=打标 // 支持打和菜品上不一样的标 mark=打标 // 支持打和菜品上不一样的标
poly=蒸 // 烹饪手法 取值参照GET /api/basic/enum 接口中的 poly
ingredient=[{&quot;isMain&quot;:true,&quot;key&quot;:&quot;011101&quot;,&quot;value&quot;:{&quot;轻体力&quot;:500,&quot;重体力&quot;:300}}] ingredient=[{&quot;isMain&quot;:true,&quot;key&quot;:&quot;011101&quot;,&quot;value&quot;:{&quot;轻体力&quot;:500,&quot;重体力&quot;:300}}]
// 菜品成分, Map&lt;人群, List&lt;(食材,用量,是否主料)&gt;&gt; // 菜品成分, Map&lt;人群, List&lt;(食材,用量,是否主料)&gt;&gt;
</code></pre> </code></pre>
@ -152,6 +157,7 @@ ingredient=[{&quot;isMain&quot;:true,&quot;key&quot;:&quot;011101&quot;,&quot;va
<pre><code class="text">menuId=1 // 食谱编号 <pre><code class="text">menuId=1 // 食谱编号
menuDishId=1 // 食谱上的菜品ID menuDishId=1 // 食谱上的菜品ID
mark=打标 // 支持打和菜品上不一样的标 mark=打标 // 支持打和菜品上不一样的标
poly=蒸 // 烹饪手法 取值参照GET /api/basic/enum 接口中的 poly
ingredient=[{&quot;isMain&quot;:true,&quot;key&quot;:&quot;011101&quot;,&quot;value&quot;:{&quot;轻体力&quot;:500,&quot;重体力&quot;:300}}] ingredient=[{&quot;isMain&quot;:true,&quot;key&quot;:&quot;011101&quot;,&quot;value&quot;:{&quot;轻体力&quot;:500,&quot;重体力&quot;:300}}]
// 菜品成分 // 菜品成分
</code></pre> </code></pre>
@ -190,6 +196,7 @@ menuDishId=1 // ʳ
&quot;day&quot; : 1, &quot;day&quot; : 1,
&quot;meal&quot;: &quot;早餐&quot;, &quot;meal&quot;: &quot;早餐&quot;,
&quot;mark&quot;: &quot;主食&quot;, &quot;mark&quot;: &quot;主食&quot;,
&quot;poly&quot;: &quot;&quot;,
&quot;items&quot; : [{ &quot;items&quot; : [{
&quot;key&quot; : &quot;011101&quot;, &quot;key&quot; : &quot;011101&quot;,
&quot;isMain&quot;: true, &quot;isMain&quot;: true,

6
doc/basic.md

@ -362,6 +362,12 @@ password=BE56E057F20F883E // 新密码
"key": "其他", "key": "其他",
"value": "其他" "value": "其他"
} }
],
"poly":[
{
"key": "蒸",
"value": "蒸"
}
] ]
}, },
"code": 200, "code": 200,

7
doc/change.md

@ -30,3 +30,10 @@
### 10.08 ### 10.08
* 食谱接口: 将食谱分析接口从食谱菜品拿出来, 放到了食谱分析章节, 请求路径中去除了dish路径, 涉及3个接口; * 食谱接口: 将食谱分析接口从食谱菜品拿出来, 放到了食谱分析章节, 请求路径中去除了dish路径, 涉及3个接口;
* 鉴权接口: 去除了session方式; * 鉴权接口: 去除了session方式;
### 11.11
* 枚举接口: 增加poly(烹饪手法)
* 枚举接口: 营养素增加了钠
* 菜品接口: 增删改查支持poly字段(烹饪手法);
* 食谱菜品: 增删改查支持poly字段(烹饪手法);

7
doc/dish.md

@ -10,6 +10,7 @@ pageSize=20 // 默认20, 全部非必填
pageNo=0 // 默认0, 从0开始 pageNo=0 // 默认0, 从0开始
keyword=番茄鸡蛋汤 // 查询关键字 keyword=番茄鸡蛋汤 // 查询关键字
mark=汤类 // 标签 取值参照GET /api/basic/enum 接口中的 mark mark=汤类 // 标签 取值参照GET /api/basic/enum 接口中的 mark
poly=蒸 // 烹饪手法 取值参照GET /api/basic/enum 接口中的 poly
``` ```
### 输出: ### 输出:
@ -28,6 +29,7 @@ mark=汤类 // 标签 取值参照GET /api/basic/enum 接口中的 mark
} }
], ],
"marks": "主食", "marks": "主食",
"poly": "蒸",
"modify": 1695277128000, "modify": 1695277128000,
"month": [ "month": [
1, 1,
@ -79,6 +81,7 @@ id=1
} }
], ],
"marks": "汤类", "marks": "汤类",
"poly": "蒸",
"month": [ "month": [
1, 1,
3, 3,
@ -118,6 +121,7 @@ keyword=婆
} }
], ],
"marks": "面食", "marks": "面食",
"poly": "蒸",
"name": "麻婆豆腐" "name": "麻婆豆腐"
}, },
{ {
@ -135,6 +139,7 @@ keyword=婆
} }
], ],
"marks": "面食", "marks": "面食",
"poly": "蒸",
"name": "麻婆豆腐" "name": "麻婆豆腐"
} }
], ],
@ -207,6 +212,7 @@ vendors=1,2,3 // 单位列表, 管理端必填,业务端没用
icon= // 图片 icon= // 图片
month=1,2,3 //月份 month=1,2,3 //月份
mark=汤类 // 必填 标签 取值参照GET /api/basic/enum 接口中的 mark mark=汤类 // 必填 标签 取值参照GET /api/basic/enum 接口中的 mark
poly=蒸 // 必填 烹饪手法 取值参照GET /api/basic/enum 接口中的 poly
ingredient=[{"key": "011101", "value": 500, "isMain": true}] // 食材列表 ingredient=[{"key": "011101", "value": 500, "isMain": true}] // 食材列表
``` ```
@ -231,6 +237,7 @@ vendors=1,2,3 // 单位列表
icon= // 图片 icon= // 图片
month=1,2,3 // 月份 month=1,2,3 // 月份
mark=汤类 // 标签 取值参照GET /api/basic/enum 接口中的 mark mark=汤类 // 标签 取值参照GET /api/basic/enum 接口中的 mark
poly=蒸 // 必填 烹饪手法 取值参照GET /api/basic/enum 接口中的 poly
ingredient=[{"key": "011101", "value": 500, "isMain": true}] // 食材列表 ingredient=[{"key": "011101", "value": 500, "isMain": true}] // 食材列表
``` ```

7
doc/menu/dish.md

@ -34,6 +34,7 @@ menuId=1 // 食谱编号
} }
], ],
"marks": "主食", "marks": "主食",
"poly": "蒸",
"meal": "早餐", "meal": "早餐",
"menu": 1, "menu": 1,
"name": "番茄炒蛋", "name": "番茄炒蛋",
@ -54,6 +55,7 @@ menuId=1 // 食谱编号
} }
], ],
"marks": "主食", "marks": "主食",
"poly": "蒸",
"meal": "早餐", "meal": "早餐",
"menu": 1, "menu": 1,
"name": "番茄炒鸡蛋", "name": "番茄炒鸡蛋",
@ -97,6 +99,7 @@ menuId=1 // 食谱编号
} }
], ],
"marks": "主食", "marks": "主食",
"poly": "蒸",
"meal": "早餐", "meal": "早餐",
"menu": 1, "menu": 1,
"name": "番茄炒蛋", "name": "番茄炒蛋",
@ -117,6 +120,7 @@ menuId=1 // 食谱编号
} }
], ],
"marks": "主食", "marks": "主食",
"poly": "蒸",
"meal": "早餐", "meal": "早餐",
"menu": 1, "menu": 1,
"name": "番茄炒鸡蛋", "name": "番茄炒鸡蛋",
@ -141,6 +145,7 @@ dishId=1 // 菜品ID
day=1 // 属于那一天 day=1 // 属于那一天
meal=早餐 // 属于那个餐次 meal=早餐 // 属于那个餐次
mark=打标 // 支持打和菜品上不一样的标 mark=打标 // 支持打和菜品上不一样的标
poly=蒸 // 烹饪手法 取值参照GET /api/basic/enum 接口中的 poly
ingredient=[{"isMain":true,"key":"011101","value":{"轻体力":500,"重体力":300}}] ingredient=[{"isMain":true,"key":"011101","value":{"轻体力":500,"重体力":300}}]
// 菜品成分, Map<人群, List<(食材,用量,是否主料)>> // 菜品成分, Map<人群, List<(食材,用量,是否主料)>>
``` ```
@ -165,6 +170,7 @@ ingredient=[{"isMain":true,"key":"011101","value":{"轻体力":500,"重体力":3
menuId=1 // 食谱编号 menuId=1 // 食谱编号
menuDishId=1 // 食谱上的菜品ID menuDishId=1 // 食谱上的菜品ID
mark=打标 // 支持打和菜品上不一样的标 mark=打标 // 支持打和菜品上不一样的标
poly=蒸 // 烹饪手法 取值参照GET /api/basic/enum 接口中的 poly
ingredient=[{"isMain":true,"key":"011101","value":{"轻体力":500,"重体力":300}}] ingredient=[{"isMain":true,"key":"011101","value":{"轻体力":500,"重体力":300}}]
// 菜品成分 // 菜品成分
``` ```
@ -213,6 +219,7 @@ menuDishId=1 // 食谱上的菜品编号, 传了删这个菜品, 不传则清
"day" : 1, "day" : 1,
"meal": "早餐", "meal": "早餐",
"mark": "主食", "mark": "主食",
"poly": "蒸",
"items" : [{ "items" : [{
"key" : "011101", "key" : "011101",
"isMain": true, "isMain": true,

26
sql/diet.sql

@ -25,10 +25,11 @@ CREATE TABLE `dish` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '菜名', `name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '菜名',
`vender` bigint NOT NULL COMMENT '单位', `vender` bigint NOT NULL COMMENT '单位',
`icon` mediumtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '图片', `icon` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '图片',
`month` json NOT NULL COMMENT '适用月份', `month` json NOT NULL COMMENT '适用月份',
`ingredient` json NOT NULL COMMENT '食材', `ingredient` json NOT NULL COMMENT '食材',
`marks` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '标记', `marks` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '标记',
`poly` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '烹饪方式',
`operate` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT 'system' COMMENT '操作员', `operate` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT 'system' COMMENT '操作员',
`created` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `created` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modify` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `modify` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
@ -85,13 +86,17 @@ CREATE TABLE `food_nutrient` (
-- ---------------------------- -- ----------------------------
-- Table structure for icon -- Table structure for icon
-- ---------------------------- -- ----------------------------
DROP TABLE IF EXISTS `icon`; DROP TABLE IF EXISTS `food_poly`;
CREATE TABLE `icon` ( CREATE TABLE `food_poly` (
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
`key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `key` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '标签名称',
`icon` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '图片', `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '标签名称',
PRIMARY KEY (`id`) USING BTREE `operate` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'system' COMMENT '操作员',
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; `created` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modify` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `udx_key`(`key` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '烹饪手法' ROW_FORMAT = DYNAMIC;
-- ---------------------------- -- ----------------------------
-- Table structure for ingredient -- Table structure for ingredient
@ -150,7 +155,7 @@ CREATE TABLE `menu` (
`created` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `created` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modify` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `modify` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
INDEX `udx_veder`(`vender` ASC) USING BTREE, INDEX `udx_vender`(`vender` ASC) USING BTREE,
INDEX `idx_time`(`modify` ASC) USING BTREE, INDEX `idx_time`(`modify` ASC) USING BTREE,
FULLTEXT INDEX `idx_name`(`name`) FULLTEXT INDEX `idx_name`(`name`)
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '食谱' ROW_FORMAT = Dynamic; ) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '食谱' ROW_FORMAT = Dynamic;
@ -184,7 +189,8 @@ CREATE TABLE `menu_dish` (
`dish` bigint NOT NULL COMMENT '菜品', `dish` bigint NOT NULL COMMENT '菜品',
`name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '菜名', `name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '菜名',
`ingredient` json NOT NULL COMMENT '人群食材', `ingredient` json NOT NULL COMMENT '人群食材',
`marks` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT '\0' COMMENT '标记', `marks` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '标记',
`poly` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '烹饪方式',
`operate` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT 'system' COMMENT '操作员', `operate` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT 'system' COMMENT '操作员',
`created` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `created` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modify` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `modify` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
@ -344,7 +350,7 @@ CREATE TABLE `vender` (
`account` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '初始账号', `account` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '初始账号',
`category` enum('学校','医院','事业单位','其他') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '单位类别', `category` enum('学校','医院','事业单位','其他') CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '单位类别',
`status` bit(1) NOT NULL DEFAULT b'1' COMMENT '状态,1-正常,0-停用', `status` bit(1) NOT NULL DEFAULT b'1' COMMENT '状态,1-正常,0-停用',
`icon` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '图标', `icon` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '图标',
`url` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '单位主页', `url` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '单位主页',
`province` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '', `province` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '',
`city` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '', `city` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '',

31
sql/init.sql

@ -67,20 +67,35 @@ COMMIT;
-- Records of food_nutrient -- Records of food_nutrient
-- ---------------------------- -- ----------------------------
BEGIN; BEGIN;
INSERT INTO `food_nutrient` VALUES (1, 'energy', '能量kcal', 'kcal', 2000.00, 'system', '2012-07-08 19:18:17', '2023-09-10 23:19:01'); INSERT INTO `food_nutrient` VALUES (1, 'energy', '能量kcal', 'kcal', 2000.00, 'system', '2020-07-08 19:18:17', '2023-09-10 23:19:01');
INSERT INTO `food_nutrient` VALUES (2, 'protein', '蛋白质', 'g', 60.00, 'system', '2017-12-21 15:42:51', '2023-09-10 23:31:35'); INSERT INTO `food_nutrient` VALUES (2, 'protein', '蛋白质', 'g', 60.00, 'system', '2020-12-21 15:42:51', '2023-09-10 23:31:35');
INSERT INTO `food_nutrient` VALUES (3, 'fat', '脂肪', 'g', 60.00, 'system', '2018-12-13 07:28:46', '2023-09-10 23:33:17'); INSERT INTO `food_nutrient` VALUES (3, 'fat', '脂肪', 'g', 60.00, 'system', '2020-12-13 07:28:46', '2023-09-10 23:33:17');
INSERT INTO `food_nutrient` VALUES (4, 'carbs', '碳水化合物', 'g', 300.00, 'system', '2022-12-17 09:39:38', '2023-09-10 23:33:30'); INSERT INTO `food_nutrient` VALUES (4, 'carbs', '碳水化合物', 'g', 300.00, 'system', '2022-12-17 09:39:38', '2023-09-10 23:33:30');
INSERT INTO `food_nutrient` VALUES (5, 'calcium', '', 'mg', 800.00, 'system', '2017-01-06 11:53:56', '2023-09-10 23:33:46'); INSERT INTO `food_nutrient` VALUES (5, 'calcium', '', 'mg', 800.00, 'system', '2017-01-06 11:53:56', '2023-09-10 23:33:46');
INSERT INTO `food_nutrient` VALUES (6, 'iron', '', 'mg', 15.00, 'system', '2022-03-05 18:53:22', '2023-09-10 23:34:10'); INSERT INTO `food_nutrient` VALUES (6, 'iron', '', 'mg', 15.00, 'system', '2022-03-05 18:53:22', '2023-09-10 23:34:10');
INSERT INTO `food_nutrient` VALUES (7, 'zinc', '', 'mg', 15.00, 'system', '2011-04-17 21:15:04', '2023-09-10 23:34:21'); INSERT INTO `food_nutrient` VALUES (7, 'zinc', '', 'mg', 15.00, 'system', '2020-04-17 21:15:04', '2023-09-10 23:34:21');
INSERT INTO `food_nutrient` VALUES (8, 'va', '维生素A', 'μgRAE', 800.00, 'system', '2015-08-06 20:42:28', '2023-09-10 23:34:31'); INSERT INTO `food_nutrient` VALUES (8, 'va', '维生素A', 'μgRAE', 800.00, 'system', '2020-08-06 20:42:28', '2023-09-10 23:34:31');
INSERT INTO `food_nutrient` VALUES (9, 'vb1', '维生素B1', 'mg', 1.40, 'system', '2022-11-30 07:59:13', '2023-09-10 23:34:48'); INSERT INTO `food_nutrient` VALUES (9, 'vb1', '维生素B1', 'mg', 1.40, 'system', '2022-11-30 07:59:13', '2023-09-10 23:34:48');
INSERT INTO `food_nutrient` VALUES (10, 'vb2', '维生素B2', 'mg', 1.40, 'system', '2020-10-08 18:13:27', '2023-09-10 23:34:56'); INSERT INTO `food_nutrient` VALUES (10, 'vb2', '维生素B2', 'mg', 1.40, 'system', '2020-10-08 18:13:27', '2023-09-10 23:34:56');
INSERT INTO `food_nutrient` VALUES (11, 'vc', '维生素C', 'mg', 100.00, 'system', '2020-07-01 21:50:49', '2023-09-10 23:35:08'); INSERT INTO `food_nutrient` VALUES (11, 'vc', '维生素C', 'mg', 100.00, 'system', '2020-07-01 21:50:49', '2023-09-10 23:35:08');
INSERT INTO `food_nutrient` VALUES (12, 'fiber', '膳食纤维', 'g', 25.00, 'system', '2003-01-29 16:56:24', '2023-09-10 23:35:12'); INSERT INTO `food_nutrient` VALUES (12, 'fiber', '膳食纤维', 'g', 25.00, 'system', '2020-01-29 16:56:24', '2023-09-10 23:35:12');
INSERT INTO `food_nutrient` VALUES (13, 'sodium', '', 'mg', 2000.00, 'system', '2020-01-29 16:56:24', '2023-09-10 23:35:12');
COMMIT; COMMIT;
INSERT INTO `food_poly` VALUES (1, '', '', 'system', '2023-11-10 16:21:17', '2023-11-10 16:22:42');
INSERT INTO `food_poly` VALUES (2, '', '', 'system', '2023-11-10 16:21:34', '2023-11-10 16:22:45');
INSERT INTO `food_poly` VALUES (3, '', '', 'system', '2023-11-10 16:23:01', '2023-11-10 16:23:01');
INSERT INTO `food_poly` VALUES (4, '', '', 'system', '2023-11-10 16:23:14', '2023-11-10 16:23:14');
INSERT INTO `food_poly` VALUES (5, '', '', 'system', '2023-11-10 16:23:32', '2023-11-10 16:23:32');
INSERT INTO `food_poly` VALUES (6, '', '', 'system', '2023-11-10 16:23:43', '2023-11-10 16:23:43');
INSERT INTO `food_poly` VALUES (7, '', '', 'system', '2023-11-10 16:23:54', '2023-11-10 16:23:54');
INSERT INTO `food_poly` VALUES (8, '', '', 'system', '2023-11-10 16:24:04', '2023-11-10 16:24:04');
INSERT INTO `food_poly` VALUES (9, '', '', 'system', '2023-11-10 16:24:17', '2023-11-10 16:24:17');
INSERT INTO `food_poly` VALUES (10, '', '', 'system', '2023-11-10 16:24:36', '2023-11-10 16:25:18');
INSERT INTO `food_poly` VALUES (11, '', '', 'system', '2023-11-10 16:24:43', '2023-11-10 16:25:16');
INSERT INTO `food_poly` VALUES (12, '', '', 'system', '2023-11-10 16:24:51', '2023-11-10 16:26:21');
INSERT INTO `food_poly` VALUES (13, '', '', 'system', '2023-11-10 16:26:18', '2023-11-10 16:26:24');
-- ---------------------------- -- ----------------------------
-- Records of role -- Records of role
-- ---------------------------- -- ----------------------------
@ -106,7 +121,7 @@ INSERT INTO `role_item` VALUES (11, '营养标准模型-查看', '管理端', '[
INSERT INTO `role_item` VALUES (12, '营养标准模型-新增/编辑/删除', '管理端', '[post,put,delete]:nutrition', '人群营养标准管理管理', 'system', '2023-09-03 00:55:17', '2023-09-04 01:58:02'); INSERT INTO `role_item` VALUES (12, '营养标准模型-新增/编辑/删除', '管理端', '[post,put,delete]:nutrition', '人群营养标准管理管理', 'system', '2023-09-03 00:55:17', '2023-09-04 01:58:02');
INSERT INTO `role_item` VALUES (13, '单位列表-查看', '管理端', '[get]:vender', '单位管理', 'system', '2023-09-03 00:58:43', '2023-09-03 01:54:37'); INSERT INTO `role_item` VALUES (13, '单位列表-查看', '管理端', '[get]:vender', '单位管理', 'system', '2023-09-03 00:58:43', '2023-09-03 01:54:37');
INSERT INTO `role_item` VALUES (14, '单位-新增/编辑/启用/禁用/删除', '管理端', '[post,put,delete]:vender', '单位管理', 'system', '2023-09-03 00:58:43', '2023-09-03 01:54:45'); INSERT INTO `role_item` VALUES (14, '单位-新增/编辑/启用/禁用/删除', '管理端', '[post,put,delete]:vender', '单位管理', 'system', '2023-09-03 00:58:43', '2023-09-03 01:54:45');
INSERT INTO `role_item` VALUES (15, '用户列表-查看', '管理端', '[get]:user', '系统设置', 'system', '2023-09-03 01:05:02', '2023-09-08 03:26:30'); INSERT INTO `role_item` VALUES (15, '用户列表-查看', '管理端', '[get]:user|role', '系统设置', 'system', '2023-09-03 01:05:02', '2023-09-08 03:26:30');
INSERT INTO `role_item` VALUES (16, '用户-新增/编辑/删除', '管理端', '[post,put,delete]:user', '系统设置', 'system', '2023-09-03 01:06:28', '2023-09-03 01:55:55'); INSERT INTO `role_item` VALUES (16, '用户-新增/编辑/删除', '管理端', '[post,put,delete]:user', '系统设置', 'system', '2023-09-03 01:06:28', '2023-09-03 01:55:55');
INSERT INTO `role_item` VALUES (17, '角色权限-查看/新增/编辑/删除', '管理端', '[get,post,put,delete]:role', '系统设置', 'system', '2023-09-03 01:05:02', '2023-09-08 03:25:32'); INSERT INTO `role_item` VALUES (17, '角色权限-查看/新增/编辑/删除', '管理端', '[get,post,put,delete]:role', '系统设置', 'system', '2023-09-03 01:05:02', '2023-09-08 03:25:32');
INSERT INTO `role_item` VALUES (18, '使用流程', '业务端', '[get]:word', '基础权限', 'system', '2023-09-03 01:09:06', '2023-09-03 01:56:45'); INSERT INTO `role_item` VALUES (18, '使用流程', '业务端', '[get]:word', '基础权限', 'system', '2023-09-03 01:09:06', '2023-09-03 01:56:45');
@ -126,7 +141,7 @@ INSERT INTO `role_item` VALUES (31, '食谱发布计划-发布/取消发布', '
INSERT INTO `role_item` VALUES (32, '营养标准模型-查看', '业务端', '[get]:nutrition', '人群营养标准管理管理', 'system', '2023-09-03 00:55:17', '2023-09-14 23:55:36'); INSERT INTO `role_item` VALUES (32, '营养标准模型-查看', '业务端', '[get]:nutrition', '人群营养标准管理管理', 'system', '2023-09-03 00:55:17', '2023-09-14 23:55:36');
INSERT INTO `role_item` VALUES (33, '单位基础信息-查看', '业务端', '[get]:vender', '基础信息管理', 'system', '2023-09-03 02:04:29', '2023-09-23 00:54:50'); INSERT INTO `role_item` VALUES (33, '单位基础信息-查看', '业务端', '[get]:vender', '基础信息管理', 'system', '2023-09-03 02:04:29', '2023-09-23 00:54:50');
INSERT INTO `role_item` VALUES (34, '单位基础信息-修改', '业务端', '[post]:vender', '基础信息管理', 'system', '2023-09-03 02:05:35', '2023-09-23 00:54:52'); INSERT INTO `role_item` VALUES (34, '单位基础信息-修改', '业务端', '[post]:vender', '基础信息管理', 'system', '2023-09-03 02:05:35', '2023-09-23 00:54:52');
INSERT INTO `role_item` VALUES (35, '用户列表-查看', '业务端', '[get]:user', '系统设置', 'system', '2023-09-03 01:05:02', '2023-09-14 23:55:51'); INSERT INTO `role_item` VALUES (35, '用户列表-查看', '业务端', '[get]:user|role', '系统设置', 'system', '2023-09-03 01:05:02', '2023-09-14 23:55:51');
INSERT INTO `role_item` VALUES (36, '角色权限-查看/新增/编辑/删除', '业务端', '[get,post,put,delete]:role', '系统设置', 'system', '2023-09-03 01:05:02', '2023-09-14 23:55:53'); INSERT INTO `role_item` VALUES (36, '角色权限-查看/新增/编辑/删除', '业务端', '[get,post,put,delete]:role', '系统设置', 'system', '2023-09-03 01:05:02', '2023-09-14 23:55:53');
INSERT INTO `role_item` VALUES (37, '用户-新增/编辑/删除', '业务端', '[post,put,delete]:user', '系统设置', 'system', '2023-09-03 01:06:28', '2023-09-14 23:55:57'); INSERT INTO `role_item` VALUES (37, '用户-新增/编辑/删除', '业务端', '[post,put,delete]:user', '系统设置', 'system', '2023-09-03 01:06:28', '2023-09-14 23:55:57');
COMMIT; COMMIT;

Loading…
Cancel
Save