From c7d843eba7804167c7f56944a304d353d25dcfa8 Mon Sep 17 00:00:00 2001 From: caoyiwen Date: Sun, 17 Dec 2023 01:53:04 +0800 Subject: [PATCH] fix --- .../mathvision/diet/service/SugarService.java | 65 ++++++++ .../com/mathvision/diet/entity/Sugar.java | 70 +++++++++ .../diet/repository/SugarRepository.java | 10 ++ .../diet/controller/SugarController.java | 139 ++++++++++++++++++ diet-web/src/main/resources/application.yml | 2 +- .../src/main/resources/static/change.html | 4 + diet-web/src/main/resources/static/index.html | 1 + diet-web/src/main/resources/static/sugar.html | 98 ++++++++++++ doc/change.md | 3 + doc/index.md | 1 + doc/sugar.md | 113 ++++++++++++++ sql/diet.sql | 51 +++++-- sql/init.sql | 7 +- sql/update.sql | 39 +++-- 14 files changed, 576 insertions(+), 27 deletions(-) create mode 100644 diet-core/src/main/java/com/mathvision/diet/service/SugarService.java create mode 100644 diet-dao/src/main/java/com/mathvision/diet/entity/Sugar.java create mode 100644 diet-dao/src/main/java/com/mathvision/diet/repository/SugarRepository.java create mode 100644 diet-web/src/main/java/com/mathvision/diet/controller/SugarController.java create mode 100644 diet-web/src/main/resources/static/sugar.html create mode 100644 doc/sugar.md diff --git a/diet-core/src/main/java/com/mathvision/diet/service/SugarService.java b/diet-core/src/main/java/com/mathvision/diet/service/SugarService.java new file mode 100644 index 0000000..4da707f --- /dev/null +++ b/diet-core/src/main/java/com/mathvision/diet/service/SugarService.java @@ -0,0 +1,65 @@ +package com.mathvision.diet.service; + +import com.mathvision.diet.entity.Sugar; +import com.mathvision.diet.repository.SugarRepository; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.persistence.criteria.Predicate; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Service +public class SugarService { + + @Resource + private SugarRepository sugarRepository; + + public void save(Sugar sugar) { + sugarRepository.save(sugar); + } + + public void delete(Sugar sugar) { + sugarRepository.delete(sugar); + } + + public Sugar get(Long id, Long vender) { + return sugarRepository.findByIdAndVender(id, vender); + } + + public boolean exist(String name, Long vender) { + return sugarRepository.existsByVenderAndName(vender, name); + } + + public Page list(Long vender, LocalDate startTime, LocalDate endTime, PageRequest pageRequest) { + return sugarRepository.findAll(toSpecification(vender, startTime, endTime), pageRequest); + } + + private Specification toSpecification(Long vender, LocalDate startTime, LocalDate endTime) { + return (root, query, builder) -> { + List predicates = new ArrayList<>(); + + predicates.add(builder.equal(root.get("vender"), vender)); + + if (startTime != null) { + predicates.add(builder.greaterThanOrEqualTo(root.get("startTime"), startTime)); + } + + if (endTime != null) { + predicates.add(builder.lessThanOrEqualTo(root.get("endTime"), endTime)); + } + + if (predicates.size() > 1) { + return builder.and(predicates.toArray(new Predicate[0])); + } else { + return predicates.get(0); + } + }; + } +} diff --git a/diet-dao/src/main/java/com/mathvision/diet/entity/Sugar.java b/diet-dao/src/main/java/com/mathvision/diet/entity/Sugar.java new file mode 100644 index 0000000..3241320 --- /dev/null +++ b/diet-dao/src/main/java/com/mathvision/diet/entity/Sugar.java @@ -0,0 +1,70 @@ +package com.mathvision.diet.entity; + +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.*; + +import javax.persistence.*; +import java.math.BigDecimal; +import java.time.Instant; +import java.time.LocalDate; + +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +@Entity +@Table(name = "sugar") +public class Sugar { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", nullable = false) + private Long id; + + @Column(name = "vender", nullable = false) + private Long vender; + + @Column(name = "name", nullable = false, length = 64) + private String name; + + @Column(name = "day", columnDefinition = "int UNSIGNED not null") + private Integer day; + + @Column(name = "sugar_day", precision = 10, scale = 2) + private BigDecimal sugarDay; + + @Column(name = "sugar_week", precision = 10, scale = 2) + private BigDecimal sugarWeek; + + @Column(name = "oil_day", precision = 10, scale = 2) + private BigDecimal oilDay; + + @Column(name = "oil_week", precision = 10, scale = 2) + private BigDecimal oilWeek; + + @Column(name = "salt_day", precision = 10, scale = 2) + private BigDecimal saltDay; + + @Column(name = "salt_week", precision = 10, scale = 2) + private BigDecimal saltWeek; + + @Column(name = "start_time") + private LocalDate startTime; + + @Column(name = "end_time") + private LocalDate endTime; + + @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; + +} \ No newline at end of file diff --git a/diet-dao/src/main/java/com/mathvision/diet/repository/SugarRepository.java b/diet-dao/src/main/java/com/mathvision/diet/repository/SugarRepository.java new file mode 100644 index 0000000..81d43c6 --- /dev/null +++ b/diet-dao/src/main/java/com/mathvision/diet/repository/SugarRepository.java @@ -0,0 +1,10 @@ +package com.mathvision.diet.repository; + +import com.mathvision.diet.entity.Sugar; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +public interface SugarRepository extends JpaRepository, JpaSpecificationExecutor { + boolean existsByVenderAndName(Long vender, String name); + Sugar findByIdAndVender(Long id, Long vender); +} \ No newline at end of file diff --git a/diet-web/src/main/java/com/mathvision/diet/controller/SugarController.java b/diet-web/src/main/java/com/mathvision/diet/controller/SugarController.java new file mode 100644 index 0000000..9bbb134 --- /dev/null +++ b/diet-web/src/main/java/com/mathvision/diet/controller/SugarController.java @@ -0,0 +1,139 @@ +package com.mathvision.diet.controller; + +import com.mathvision.diet.entity.Sugar; +import com.mathvision.diet.service.SugarService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Controller; +import org.springframework.util.Assert; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.Instant; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatterBuilder; +import java.time.format.SignStyle; +import java.time.temporal.IsoFields; +import java.util.Objects; + +@RequestMapping("/api/sugar") +@Controller +public class SugarController extends BaseController { + + @Resource + SugarService sugarService; + + private static final DateTimeFormatter DATE_FORMATTER = new DateTimeFormatterBuilder().parseCaseInsensitive() + .appendValue(IsoFields.WEEK_BASED_YEAR, 4, 10,SignStyle.EXCEEDS_PAD) + .appendLiteral("-").appendValue(IsoFields.WEEK_OF_WEEK_BASED_YEAR, 2).appendLiteral("周") + .optionalStart().appendOffsetId().toFormatter(); + + @ResponseBody + @RequestMapping(method = RequestMethod.PUT) + public void add(@RequestParam Integer day, @RequestParam(required=false, defaultValue = "0") BigDecimal sugarWeek, @RequestParam(required=false, defaultValue = "0") BigDecimal oilWeek, @RequestParam(required=false, defaultValue = "0") BigDecimal saltWeek, @RequestParam String startTime, @RequestParam String endTime) { + sugarService.save(checkAndConvert(day, sugarWeek, oilWeek, saltWeek, startTime, endTime)); + } + + @ResponseBody + @RequestMapping(method = RequestMethod.POST) + public void update(@RequestParam Long id, @RequestParam(required=false) Integer day, @RequestParam(required=false) BigDecimal sugarWeek, @RequestParam(required=false) BigDecimal oilWeek, @RequestParam(required=false) BigDecimal saltWeek, @RequestParam(required=false) String startTime, @RequestParam(required=false) String endTime) { + Sugar sugar = sugarService.get(id, getVender()); + Assert.isTrue(sugar != null, "[参数错误]所需修改的数据不存在!"); + + boolean flag = false; + if(day != null && !Objects.equals(sugar.getDay(), day)) { + Assert.isTrue(day >=1 && day <=7, "[参数错误]天数取值1~7之间!"); + sugar.setDay(day); + flag = true; + } + + LocalDate start = toLocalDate(startTime); + if(start != null && !Objects.equals(sugar.getStartTime(), start)) { + sugar.setStartTime(start); + flag = true; + } + + LocalDate end = toLocalDate(endTime); + if(end != null && !Objects.equals(sugar.getEndTime(), end)) { + sugar.setEndTime(end); + flag = true; + } + + if(sugarWeek != null && !Objects.equals(sugar.getSugarWeek(), sugarWeek)) { + sugar.setSugarWeek(sugarWeek); + flag = true; + } + + if(oilWeek != null && !Objects.equals(sugar.getOilWeek(), oilWeek)) { + sugar.setOilWeek(oilWeek); + flag = true; + } + + if(saltWeek != null && !Objects.equals(sugar.getSaltWeek(), saltWeek)) { + sugar.setSaltWeek(saltWeek); + flag = true; + } + + if (flag) { + sugar.setName(sugar.getStartTime().format(DATE_FORMATTER)); + sugar.setSugarDay(toDayValue(sugar.getSugarWeek(), sugar.getDay())); + sugar.setOilDay(toDayValue(sugar.getOilWeek(), sugar.getDay())); + sugar.setSaltDay(toDayValue(sugar.getSaltWeek(), sugar.getDay())); + sugar.setOperate(getUid()); + sugar.setModify(Instant.now()); + sugarService.save(sugar); + } + } + + @ResponseBody + @RequestMapping(method = RequestMethod.DELETE) + public void delete(@RequestParam Long id) { + Sugar sugar = sugarService.get(id, getVender()); + if (sugar != null) { + sugarService.delete(sugar); + } + } + + @ResponseBody + @RequestMapping(method = RequestMethod.GET) + public Page query(@RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime, @RequestParam(required = false, defaultValue = "0") int pageNo, @RequestParam(required = false, defaultValue = "20") int pageSize) { + return sugarService.list(getVender(), toLocalDate(startTime), toLocalDate(endTime), PageRequest.of(pageNo, pageSize).withSort(Sort.by(Sort.Direction.DESC, "id"))); + } + + private Sugar checkAndConvert(Integer day, BigDecimal sugarWeek, BigDecimal oilWeek, BigDecimal saltWeek, String startTime, String endTime) { + Assert.isTrue(day != null && day >=1 && day <=7, "[参数错误]天数取值1~7之间!"); + + LocalDate start = toLocalDate(startTime); + LocalDate end = toLocalDate(endTime); + Assert.isTrue(start != null && end != null && start.isBefore(end), "[参数错误]时间段输入错误!"); + + String name = start.format(DATE_FORMATTER); + Assert.isTrue(!sugarService.exist(name, getVender()), "[参数错误]" + name + "已经录入, 不允许重复录入!"); + + Instant dateTime = Instant.now(); + return Sugar.builder().vender(getVender()).name(name).day(day).sugarDay(toDayValue(sugarWeek, day)).sugarWeek(sugarWeek).oilDay(toDayValue(oilWeek, day)).oilWeek(oilWeek).saltDay(toDayValue(saltWeek, day)).saltWeek(saltWeek).startTime(start).endTime(end).operate(getUid()).created(dateTime).modify(dateTime).build(); + } + + private BigDecimal toDayValue(BigDecimal value, int day) { + if (value == null || value.compareTo(BigDecimal.ZERO) == 0 || day == 0) { + return BigDecimal.ZERO; + } + + return value.divide(BigDecimal.valueOf(day), 4, RoundingMode.HALF_UP); + } + + private LocalDate toLocalDate(String text) { + try { + return LocalDate.parse(text); + } catch (Exception e) { + return null; + } + } +} \ No newline at end of file diff --git a/diet-web/src/main/resources/application.yml b/diet-web/src/main/resources/application.yml index beb445f..3f30116 100644 --- a/diet-web/src/main/resources/application.yml +++ b/diet-web/src/main/resources/application.yml @@ -2,7 +2,7 @@ spring: application: name: diet profiles: - active: prod + active: dev web: resources: static-locations: classpath:static diff --git a/diet-web/src/main/resources/static/change.html b/diet-web/src/main/resources/static/change.html index 61e2ace..a6fd208 100644 --- a/diet-web/src/main/resources/static/change.html +++ b/diet-web/src/main/resources/static/change.html @@ -66,4 +66,8 @@
  • Ʒӿ: ӲƷƽӿ, ԽһƷƵλ;
  • ʳ׽ӿ: ʳ׸ƽӿ, Խһʳ׸Ƶλλ;
  • +

    12.15

    +
      +
    • ǽӿ: ɾIJ;
    • +
    diff --git a/diet-web/src/main/resources/static/index.html b/diet-web/src/main/resources/static/index.html index 879234d..c1a17a5 100644 --- a/diet-web/src/main/resources/static/index.html +++ b/diet-web/src/main/resources/static/index.html @@ -24,6 +24,7 @@
  • ͼƬЭ
  • +
  • ǹ
  • Ӧʾ

    {
    diff --git a/diet-web/src/main/resources/static/sugar.html b/diet-web/src/main/resources/static/sugar.html
    new file mode 100644
    index 0000000..f311dcd
    --- /dev/null
    +++ b/diet-web/src/main/resources/static/sugar.html
    @@ -0,0 +1,98 @@
    +

    Dz

    +

    1. ѯ

    +
    +

    GET /api/sugar

    +
    +

    :

    +
    Content-Type:application/x-www-form-urlencoded
    +startTime=2023-12-07 // ѯʱ
    +endTime=2023-12-20   // ѯʱ
    +pageSize=20  // Ĭ20
    +pageNo=0     // Ĭ0, 0ʼ
    +
    +

    :

    +
    {
    +  "body": {
    +    "content": [
    +      {
    +        "id": 1,
    +        "day": 5,
    +        "endTime": 1702742400000,
    +        "name": "2023-50",
    +        "oilDay": 100.00,
    +        "oilWeek": 100.00,
    +        "saltDay": 100.00,
    +        "saltWeek": 100.00,
    +        "startTime": 1702224000000,
    +        "sugarDay": 100.00,
    +        "sugarWeek": 100.00,
    +        "vender": 1
    +      }
    +    ],
    +    "number": 0,
    +    "size": 20,
    +    "totalElements": 1,
    +    "totalPages": 1
    +  },
    +  "code": 200,
    +  "desc": "ɹ",
    +  "success": true
    +}
    +
    +

    2.

    +
    +

    PUT /api/sugar

    +
    +

    :

    +
    Content-Type:application/x-www-form-urlencoded
    +day=5                // , 
    +startTime=2023-12-07 // ѯʱ, 
    +endTime=2023-12-20   // ѯʱ, 
    +sugarWeek=50         // (), DZ
    +oilWeek=100          // (), DZ
    +saltWeek=100         // (), DZ
    +
    +

    :

    +
    {
    +  "code": 200,
    +  "desc": "ɹ",
    +  "success": true
    +}
    +
    +

    3. ޸

    +
    +

    POST /api/sugar

    +
    +

    :

    +
    Content-Type:application/x-www-form-urlencoded
    +id=1                 // ,       
    +day=5                // ,      DZ
    +startTime=2023-12-07 // ѯʱ, DZ
    +endTime=2023-12-20   // ѯʱ, DZ
    +sugarWeek=50         // (), DZ
    +oilWeek=100          // (), DZ
    +saltWeek=100         // (), DZ
    +
    +

    :

    +
    {
    +  "code": 200,
    +  "desc": "ɹ",
    +  "success": true
    +}
    +
    +

    4. ɾ

    +
    +

    DELETE /api/sugar

    +
    +

    :

    +
    Content-Type:application/x-www-form-urlencoded
    +id=1                 // ,       
    +
    +

    :

    +
    {
    +  "code": 200,
    +  "desc": "ɹ",
    +  "success": true
    +}
    +
    + diff --git a/doc/change.md b/doc/change.md index 1de5692..c60575b 100644 --- a/doc/change.md +++ b/doc/change.md @@ -61,3 +61,6 @@ 营养素分析和能量分析两个按天查询的接口返回值增加days字段,标识该食谱上那些天有菜品有数据 * 菜品接口: 增加菜品复制接口, 可以将一个菜品复制到多个单位; * 食谱接口: 增加食谱复制接口, 可以将一个食谱复制到本单位或者其他单位; + +### 12.15 +* 油盐糖接口: 增删改查; diff --git a/doc/index.md b/doc/index.md index a0ea60b..45c276d 100644 --- a/doc/index.md +++ b/doc/index.md @@ -22,6 +22,7 @@ * [食谱分析协议](menu/report.md) * [食谱大屏协议](menu/display.md) * [图片协议](icon.md) +* [油盐糖管理](sugar.md) ### 响应示例 ```json diff --git a/doc/sugar.md b/doc/sugar.md new file mode 100644 index 0000000..9e2570d --- /dev/null +++ b/doc/sugar.md @@ -0,0 +1,113 @@ +# 油盐糖部分 + +# 1. 查询 + +> GET /api/sugar + +### 输入: +``` +Content-Type:application/x-www-form-urlencoded +startTime=2023-12-07 // 查询时间段 +endTime=2023-12-20 // 查询时间段 +pageSize=20 // 默认20 +pageNo=0 // 默认0, 从0开始 +``` + +### 输出: +``` +{ + "body": { + "content": [ + { + "id": 1, + "day": 5, + "endTime": 1702742400000, + "name": "2023-50周", + "oilDay": 100.00, + "oilWeek": 100.00, + "saltDay": 100.00, + "saltWeek": 100.00, + "startTime": 1702224000000, + "sugarDay": 100.00, + "sugarWeek": 100.00, + "vender": 1 + } + ], + "number": 0, + "size": 20, + "totalElements": 1, + "totalPages": 1 + }, + "code": 200, + "desc": "成功", + "success": true +} +``` + +# 2. 添加 + +> PUT /api/sugar + +### 输入: +``` +Content-Type:application/x-www-form-urlencoded +day=5 // 天数, 必填 +startTime=2023-12-07 // 查询时间段, 必填 +endTime=2023-12-20 // 查询时间段, 必填 +sugarWeek=50 // 周总量(糖), 非必填 +oilWeek=100 // 周总量(油), 非必填 +saltWeek=100 // 周总量(盐), 非必填 +``` + +### 输出: +``` +{ + "code": 200, + "desc": "成功", + "success": true +} +``` + +# 3. 修改 + +> POST /api/sugar + +### 输入: +``` +Content-Type:application/x-www-form-urlencoded +id=1 // 编号, 必填 +day=5 // 天数, 非必填 +startTime=2023-12-07 // 查询时间段, 非必填 +endTime=2023-12-20 // 查询时间段, 非必填 +sugarWeek=50 // 周总量(糖), 非必填 +oilWeek=100 // 周总量(油), 非必填 +saltWeek=100 // 周总量(盐), 非必填 +``` + +### 输出: +``` +{ + "code": 200, + "desc": "成功", + "success": true +} +``` + +# 4. 删除 + +> DELETE /api/sugar + +### 输入: +``` +Content-Type:application/x-www-form-urlencoded +id=1 // 编号, 必填 +``` + +### 输出: +``` +{ + "code": 200, + "desc": "成功", + "success": true +} +``` \ No newline at end of file diff --git a/sql/diet.sql b/sql/diet.sql index 8ea6fda..00db53d 100644 --- a/sql/diet.sql +++ b/sql/diet.sql @@ -23,18 +23,21 @@ SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS `dish`; CREATE TABLE `dish` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, - `name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '菜名', + `name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '菜名', `vender` bigint NOT NULL COMMENT '单位', - `icon` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '图片', + `icon` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '图片', `month` json NOT NULL COMMENT '适用月份', `ingredient` json 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 '烹饪方式', + `poly` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '烹饪手法', + `label` json NULL COMMENT '标签', `operate` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT 'system' COMMENT '操作员', `created` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modify` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_vender`(`vender` ASC) USING BTREE, + INDEX `idx_marks`(`marks` ASC) USING BTREE, + INDEX `idx_modify`(`modify` ASC) USING BTREE, FULLTEXT INDEX `idx_name`(`name`) ) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '菜品' ROW_FORMAT = Dynamic; @@ -141,11 +144,11 @@ CREATE TABLE `menu` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, `vender` bigint UNSIGNED NOT NULL COMMENT '单位', `nutrient` bigint UNSIGNED NOT NULL COMMENT '营养标准', - `name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '食谱名称', - `day` int UNSIGNED NOT NULL DEFAULT 1 COMMENT '天数', + `name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '食谱名称', + `day` json NOT NULL COMMENT '天数', `meals` json NOT NULL COMMENT '餐次', `crows` json NOT NULL COMMENT '人群', - `scale` json NULL COMMENT '规模', + `scale` json NULL COMMENT '人群规模', `month` json NOT NULL COMMENT '适用月份', `status` tinyint UNSIGNED NOT NULL DEFAULT 0 COMMENT '状态:0-草稿,1-提交审核,2-审核通过,3-审核失败,4-禁用,5-发布', `approve` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '审批意见', @@ -155,7 +158,7 @@ CREATE TABLE `menu` ( `created` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modify` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`) USING BTREE, - INDEX `udx_vender`(`vender` ASC) USING BTREE, + INDEX `idx_vender`(`vender` ASC) USING BTREE, INDEX `idx_time`(`modify` ASC) USING BTREE, FULLTEXT INDEX `idx_name`(`name`) ) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '食谱' ROW_FORMAT = Dynamic; @@ -190,7 +193,8 @@ CREATE TABLE `menu_dish` ( `name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '菜名', `ingredient` json NOT NULL 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 '烹饪方式', + `poly` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '烹饪手法', + `label` json NULL COMMENT '标签', `operate` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT 'system' COMMENT '操作员', `created` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modify` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', @@ -205,12 +209,14 @@ CREATE TABLE `menu_dish` ( DROP TABLE IF EXISTS `nutrition`; CREATE TABLE `nutrition` ( `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, - `name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '标准名称', + `name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '标准名称', `vendors` json NOT NULL COMMENT '适用单位', + `crows` json NULL COMMENT '人群', `food_category_day` json NULL COMMENT '食物种类及数量标准(日)', `food_category_week` json NULL COMMENT '食物种类及数量标准(周)', `ingredient` json NULL COMMENT '食材', - `overflow` decimal(5, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '溢出范围', + `overflow` decimal(5, 2) UNSIGNED NOT NULL DEFAULT 0.00 COMMENT '溢出范围(默认)', + `overflows` json NULL COMMENT '溢出范围(分营养素)', `operate` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT 'system' COMMENT '操作员', `created` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modify` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', @@ -386,4 +392,29 @@ CREATE TABLE `vender_config` ( UNIQUE INDEX `udx_vender`(`vender` ASC) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '人群配置表' ROW_FORMAT = Dynamic; +-- ---------------------------- +-- Table structure for sugar +-- ---------------------------- +DROP TABLE IF EXISTS `sugar`; +CREATE TABLE `sugar` ( + `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, + `vender` bigint UNSIGNED NOT NULL COMMENT '单位', + `name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '名称', + `day` int UNSIGNED NOT NULL COMMENT '天数', + `sugar_day` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '日平均(糖)', + `sugar_week` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '周总量(糖)', + `oil_day` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '日平均(油)', + `oil_week` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '周总量(油)', + `salt_day` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '日平均(盐)', + `salt_week` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '周总量(盐)', + `start_time` date NULL DEFAULT NULL COMMENT '开始时间', + `end_time` date NULL DEFAULT NULL COMMENT '结束时间', + `operate` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT 'system' COMMENT '操作员', + `created` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modify` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `udx_vender`(`vender` ASC) USING BTREE, + INDEX `idx_time`(`start_time` ASC, `end_time` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '油盐糖' ROW_FORMAT = Dynamic; + SET FOREIGN_KEY_CHECKS = 1; diff --git a/sql/init.sql b/sql/init.sql index b882088..4759ea0 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -115,9 +115,9 @@ BEGIN; INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (1, '食材列表-查看', '管理端', '[get]|:ingredient|excel', '食材管理', 'system', '2023-09-02 16:03:16', '2023-10-06 20:23:17'); INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (2, '食材-新增/编辑/删除', '管理端', '[post,put,delete]:ingredient|excel', '食材管理', 'system', '2023-09-03 00:32:49', '2023-09-23 00:49:24'); INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (3, '菜品列表-查看', '管理端', '[get]:dish', '菜品管理', 'system', '2023-09-03 00:43:38', '2023-09-03 01:46:43'); -INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (4, '菜品-新增/编辑/删除', '管理端', '[post,put,delete]:dish', '菜品管理', 'system', '2023-09-03 00:44:17', '2023-09-08 03:26:52'); +INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (4, '菜品-新增/编辑/删除', '管理端', '[post,put,delete]:dish|dish/copy', '菜品管理', 'system', '2023-09-03 00:44:17', '2023-12-11 17:49:09'); INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (5, '食谱列表-查看', '管理端', '[get]:menu|menu/dish', '食谱管理', 'system', '2023-09-03 00:47:19', '2023-09-23 00:50:14'); -INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (6, '食谱-新增/编辑/删除', '管理端', '[post,put,delete]:menu|menu/dish|menu/dish/batch', '食谱管理', 'system', '2023-09-03 00:48:15', '2023-09-26 00:53:47'); +INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (6, '食谱-新增/编辑/删除', '管理端', '[post,put,delete]:menu|menu/copy|menu/dish|menu/dish/batch', '食谱管理', 'system', '2023-09-03 00:48:15', '2023-12-11 11:56:42'); INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (7, '食谱审核列表-查看', '管理端', '[get,put]:menu/review|menu/review/count', '食谱管理', 'system', '2023-09-03 00:50:30', '2023-10-08 03:51:41'); INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (8, '食谱审核列表-通过/驳回', '管理端', '[post,delete]:menu/review', '食谱管理', 'system', '2023-09-03 00:51:10', '2023-09-24 04:05:21'); INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (9, '食谱发布计划-查看', '管理端', '[get]:menu/release', '食谱管理', 'system', '2023-09-03 00:52:11', '2023-09-12 01:24:45'); @@ -139,7 +139,7 @@ INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (25, '菜品列表-查看', '业务端', '[get]:dish', '菜品管理', 'system', '2023-09-03 00:43:38', '2023-09-03 02:00:56'); INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (26, '菜品-新增/编辑/删除', '业务端', '[post,put,delete]:dish', '菜品管理', 'system', '2023-09-03 00:44:17', '2023-09-08 03:25:51'); INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (27, '食谱列表-查看', '业务端', '[get]:menu|menu/dish', '食谱管理', 'system', '2023-09-03 02:02:07', '2023-09-24 02:51:20'); -INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (28, '食谱-新增/编辑/删除', '业务端', '[post,put,delete]:menu|menu/dish|menu/dish/batch', '食谱管理', 'system', '2023-09-03 02:02:50', '2023-09-28 13:59:01'); +INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (28, '食谱-新增/编辑/删除', '业务端', '[post,put,delete]:menu|menu/copy|menu/dish|menu/dish/batch', '食谱管理', 'system', '2023-09-03 02:02:50', '2023-12-11 11:57:04'); INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (29, '食谱审核记录-查看', '业务端', '[get,put]:menu/review|menu/review/count', '食谱管理', 'system', '2023-09-03 02:03:31', '2023-10-08 03:51:54'); INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (30, '食谱发布计划-查看', '业务端', '[get]:menu/release', '食谱管理', 'system', '2023-09-14 23:37:14', '2023-09-14 23:52:17'); INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (31, '食谱发布计划-发布/取消发布', '业务端', '[put,delete]:menu/release', '食谱管理', 'system', '2023-09-14 23:37:54', '2023-09-24 03:47:17'); @@ -149,6 +149,7 @@ INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (35, '用户列表-查看', '业务端', '[get]:user|role', '系统设置', 'system', '2023-09-03 01:05:02', '2023-11-17 21:17:57'); INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (36, '角色权限-查看/新增/编辑/删除', '业务端', '[get,post,put,delete]:role', '系统设置', 'system', '2023-09-03 01:05:02', '2023-09-14 23:55:53'); INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (37, '用户-新增/编辑/删除', '业务端', '[post,put,delete]:user', '系统设置', 'system', '2023-09-03 01:06:28', '2023-09-14 23:55:57'); +INSERT INTO `role_item` (`id`, `item_name`, `item_type`, `item_value`, `category`, `operate`, `created`, `modify`) VALUES (38, '油盐糖-查看/新增/编辑/删除', '管理端', '[post,put,delete]:sugar', '油盐糖管理', 'system', '2023-12-16 21:17:57', '2023-12-16 21:24:26'); COMMIT; SET FOREIGN_KEY_CHECKS = 1; diff --git a/sql/update.sql b/sql/update.sql index 5b6dfd0..b770808 100644 --- a/sql/update.sql +++ b/sql/update.sql @@ -1,18 +1,31 @@ -ALTER TABLE `diet`.`ingredient` DROP INDEX `idx_key`; +##12.15 +INSERT INTO `diet`.`role_item` (`item_name`, `item_value`, `category`) VALUES ('油盐糖-查看/新增/编辑/删除', '[post,put,delete]:sugar', '油盐糖管理'); +UPDATE `diet`.`role` SET `role_items` = '[18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38]' WHERE `vender` != 0; -ALTER TABLE `diet`.`dish` ADD INDEX `idx_marks`(`marks`); -ALTER TABLE `diet`.`dish` ADD INDEX `idx_modify`(`modify`); -ALTER TABLE `diet`.`dish` ADD COLUMN `label` json NULL COMMENT '标签' AFTER `poly`; +ALTER TABLE `diet`.`menu` RENAME INDEX `udx_vender` TO `idx_vender`; -ALTER TABLE `diet`.`menu` - MODIFY COLUMN `scale` json NULL COMMENT '人群规模' AFTER `crows`; +DROP TABLE IF EXISTS `sugar`; +CREATE TABLE `sugar` ( + `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, + `vender` bigint UNSIGNED NOT NULL COMMENT '单位', + `name` varchar(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '名称', + `day` int UNSIGNED NOT NULL COMMENT '天数', + `sugar_day` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '日平均(糖)', + `sugar_week` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '周总量(糖)', + `oil_day` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '日平均(油)', + `oil_week` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '周总量(油)', + `salt_day` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '日平均(盐)', + `salt_week` decimal(10, 2) UNSIGNED NULL DEFAULT NULL COMMENT '周总量(盐)', + `start_time` date NULL DEFAULT NULL COMMENT '开始时间', + `end_time` date NULL DEFAULT NULL COMMENT '结束时间', + `operate` varchar(45) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT 'system' COMMENT '操作员', + `created` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `modify` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `udx_vender`(`vender` ASC) USING BTREE, + INDEX `idx_time`(`start_time` ASC, `end_time` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '油盐糖' ROW_FORMAT = Dynamic; -ALTER TABLE `diet`.`menu_dish` ADD COLUMN `label` json NULL COMMENT '标签' AFTER `poly`; +INSERT INTO `sugar` VALUES (1, 1, '2023-50周', 5, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, '2023-12-11', '2023-12-17', 'system', '2023-12-16 21:38:38', '2023-12-16 21:38:38'); -ALTER TABLE `diet`.`nutrition` - ADD COLUMN `crows` json NULL COMMENT '人群' AFTER `vendors`, - ADD COLUMN `overflows` json NULL COMMENT '溢出范围(分营养素)' AFTER `overflow`; -UPDATE `diet`.`role_item` SET `item_value` = '[post,put,delete]:menu|menu/copy|menu/dish|menu/dish/batch' WHERE `id` = 6; -UPDATE `diet`.`role_item` SET `item_value` = '[post,put,delete]:menu|menu/copy|menu/dish|menu/dish/batch' WHERE `id` = 28; -UPDATE `diet`.`role_item` SET `item_value` = '[post,put,delete]:dish|dish/copy' WHERE `id` = 4; \ No newline at end of file