14 changed files with 576 additions and 27 deletions
@ -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<Sugar> list(Long vender, LocalDate startTime, LocalDate endTime, PageRequest pageRequest) { |
|||
return sugarRepository.findAll(toSpecification(vender, startTime, endTime), pageRequest); |
|||
} |
|||
|
|||
private Specification<Sugar> toSpecification(Long vender, LocalDate startTime, LocalDate endTime) { |
|||
return (root, query, builder) -> { |
|||
List<Predicate> 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); |
|||
} |
|||
}; |
|||
} |
|||
} |
@ -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; |
|||
|
|||
} |
@ -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<Sugar, Long>, JpaSpecificationExecutor<Sugar> { |
|||
boolean existsByVenderAndName(Long vender, String name); |
|||
Sugar findByIdAndVender(Long id, Long vender); |
|||
} |
@ -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<Sugar> 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; |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,98 @@ |
|||
<h1>油盐糖部分</h1> |
|||
<h1>1. 查询</h1> |
|||
<blockquote> |
|||
<p>GET /api/sugar</p> |
|||
</blockquote> |
|||
<h3>输入:</h3> |
|||
<pre><code>Content-Type:application/x-www-form-urlencoded |
|||
startTime=2023-12-07 // 查询时间段 |
|||
endTime=2023-12-20 // 查询时间段 |
|||
pageSize=20 // 默认20 |
|||
pageNo=0 // 默认0, 从0开始 |
|||
</code></pre> |
|||
<h3>输出:</h3> |
|||
<pre><code>{ |
|||
"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 |
|||
} |
|||
</code></pre> |
|||
<h1>2. 添加</h1> |
|||
<blockquote> |
|||
<p>PUT /api/sugar</p> |
|||
</blockquote> |
|||
<h3>输入:</h3> |
|||
<pre><code>Content-Type:application/x-www-form-urlencoded |
|||
day=5 // 天数, 必填 |
|||
startTime=2023-12-07 // 查询时间段, 必填 |
|||
endTime=2023-12-20 // 查询时间段, 必填 |
|||
sugarWeek=50 // 周总量(糖), 非必填 |
|||
oilWeek=100 // 周总量(油), 非必填 |
|||
saltWeek=100 // 周总量(盐), 非必填 |
|||
</code></pre> |
|||
<h3>输出:</h3> |
|||
<pre><code>{ |
|||
"code": 200, |
|||
"desc": "成功", |
|||
"success": true |
|||
} |
|||
</code></pre> |
|||
<h1>3. 修改</h1> |
|||
<blockquote> |
|||
<p>POST /api/sugar</p> |
|||
</blockquote> |
|||
<h3>输入:</h3> |
|||
<pre><code>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></pre> |
|||
<h3>输出:</h3> |
|||
<pre><code>{ |
|||
"code": 200, |
|||
"desc": "成功", |
|||
"success": true |
|||
} |
|||
</code></pre> |
|||
<h1>4. 删除</h1> |
|||
<blockquote> |
|||
<p>DELETE /api/sugar</p> |
|||
</blockquote> |
|||
<h3>输入:</h3> |
|||
<pre><code>Content-Type:application/x-www-form-urlencoded |
|||
id=1 // 编号, 必填 |
|||
</code></pre> |
|||
<h3>输出:</h3> |
|||
<pre><code>{ |
|||
"code": 200, |
|||
"desc": "成功", |
|||
"success": true |
|||
} |
|||
</code></pre> |
|||
|
@ -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 |
|||
} |
|||
``` |
@ -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; |
Loading…
Reference in new issue