caoyiwen 2 years ago
parent
commit
91a10d4d8d
  1. 5
      diet-core/src/main/java/com/mathvision/diet/excel/BigDecimalStringConverter.java
  2. 2
      diet-core/src/main/java/com/mathvision/diet/service/MenuReleaseService.java
  3. 152
      diet-core/src/main/java/com/mathvision/diet/service/MenuReviewService.java
  4. 4
      diet-dao/src/main/java/com/mathvision/diet/domian/MenuStatus.java
  5. 1
      diet-web/src/main/java/com/mathvision/diet/aspect/GlobalRequestAspect.java
  6. 10
      diet-web/src/main/java/com/mathvision/diet/controller/IconController.java
  7. 34
      diet-web/src/main/java/com/mathvision/diet/controller/MenuController.java
  8. 12
      diet-web/src/main/java/com/mathvision/diet/controller/MenuDishController.java
  9. 2
      diet-web/src/main/java/com/mathvision/diet/controller/MenuReleaseController.java
  10. 122
      diet-web/src/main/java/com/mathvision/diet/controller/MenuReviewController.java
  11. 2
      diet-web/src/main/resources/static/icon.html
  12. 10
      diet-web/src/main/resources/static/menu/menu.html
  13. 2
      doc/icon.md
  14. 10
      doc/menu/menu.md

5
diet-core/src/main/java/com/mathvision/diet/excel/BigDecimalStringConverter.java

@ -10,7 +10,6 @@ import com.alibaba.excel.util.NumberUtils;
import lombok.extern.slf4j.Slf4j;
import java.math.BigDecimal;
import java.text.ParseException;
@Slf4j
public class BigDecimalStringConverter implements Converter<BigDecimal> {
@ -25,7 +24,7 @@ public class BigDecimalStringConverter implements Converter<BigDecimal> {
return CellDataTypeEnum.STRING;
}
public BigDecimal convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws ParseException {
public BigDecimal convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
if(cellData == null) {
return null;
}
@ -36,7 +35,7 @@ public class BigDecimalStringConverter implements Converter<BigDecimal> {
try {
return NumberUtils.parseBigDecimal(cellData.getStringValue().trim(), contentProperty);
} catch (Exception e) {
log.error("[BigDecimalStringConverter] convertToJavaData exception :" + e.getMessage(), e);
log.error("[BigDecimalStringConverter] convertToJavaData<" + cellData.getStringValue() + "> exception :" + e.getMessage(), e);
return new BigDecimal(-1);
}
}

2
diet-core/src/main/java/com/mathvision/diet/service/MenuReleaseService.java

@ -38,7 +38,7 @@ public class MenuReleaseService {
}
public void cancel(Long id, String operator) {
menuRepository.updateStatusAndStartTimeAndEndTimeAndOperateById(MenuStatus.pass, null, null, operator, id);
menuRepository.updateStatusAndStartTimeAndEndTimeAndOperateById(MenuStatus.draft, null, null, operator, id);
log.info("[MenuReleaseService] cancel id = " + id + ", operator = " + operator);
}

152
diet-core/src/main/java/com/mathvision/diet/service/MenuReviewService.java

@ -26,80 +26,80 @@ import java.util.List;
@Slf4j
@Service
public class MenuReviewService {
private static final List<MenuStatus> SUPPORTED_STATUS = Lists.newArrayList(MenuStatus.submit, MenuStatus.pass, MenuStatus.reject);
@Resource
private MenuRepository menuRepository;
@Resource
private MenuApproveRepository menuApproveRepository;
@PostConstruct
@Scheduled(cron = "0 0 0/6 * * *")
public void init() {
menuApproveRepository.scanExpired();
}
public void submit(Long id, String operator) {
menuRepository.updateStatusAndOperateById(MenuStatus.submit, operator, id);
}
public void pass(Long id, String reason, String operator) {
Instant datetime = Instant.now();
menuRepository.updateStatusAndApproveAndOperateById(MenuStatus.pass, reason, operator, id);
menuApproveRepository.save(MenuApprove.builder().menu(id).pass(true).approve(reason).operate(operator).created(datetime).modify(datetime).build());
}
public void reject(Long id, String reason, String operator) {
Instant datetime = Instant.now();
menuRepository.updateStatusAndApproveAndOperateById(MenuStatus.reject, reason, operator, id);
menuApproveRepository.save(MenuApprove.builder().menu(id).pass(false).approve(reason).operate(operator).created(datetime).modify(datetime).build());
}
public void disable(Long id, String operator) {
menuRepository.updateStatusAndOperateById(MenuStatus.disabled, operator, id);
}
public Object count() {
return menuRepository.count(Lists.newArrayList(MenuStatus.submit, MenuStatus.pass, MenuStatus.reject));
}
public Page<Menu> list(Long vender, MenuStatus status, String name, Date startTime, Date endTime, PageRequest pageRequest) {
return menuRepository.findAll(toSpecification(vender, status, name, startTime, endTime), pageRequest);
}
private Specification<Menu> toSpecification(Long vender, MenuStatus status, String name, Date startTime, Date endTime) {
return (root, query, builder) -> {
List<Predicate> predicates = new ArrayList<>();
if (vender != null && vender > 0) {
predicates.add(builder.equal(root.get("vender"), vender));
}
if( status != null && SUPPORTED_STATUS.contains(status)) {
predicates.add(builder.equal(root.get("status"), status));
} else {
CriteriaBuilder.In<Object> in = builder.in(root.get("status"));
Lists.newArrayList(MenuStatus.submit, MenuStatus.pass, MenuStatus.reject).forEach(in::value);
predicates.add(in);
}
if (startTime != null) {
predicates.add(builder.greaterThanOrEqualTo(root.get("modify"), startTime.toInstant()));
}
if (endTime != null) {
predicates.add(builder.lessThanOrEqualTo(root.get("modify"), endTime.toInstant()));
}
if (StringUtils.isNotBlank(name)) {
predicates.add(builder.like(root.get("name"), "%" + name + "%"));
}
if (predicates.size() > 1) {
return builder.and(predicates.toArray(new Predicate[0]));
} else {
return predicates.get(0);
}
};
}
// private static final List<MenuStatus> SUPPORTED_STATUS = Lists.newArrayList(MenuStatus.submit, MenuStatus.pass, MenuStatus.reject);
// @Resource
// private MenuRepository menuRepository;
//
// @Resource
// private MenuApproveRepository menuApproveRepository;
//
// @PostConstruct
// @Scheduled(cron = "0 0 0/6 * * *")
// public void init() {
// menuApproveRepository.scanExpired();
// }
//
// public void submit(Long id, String operator) {
// menuRepository.updateStatusAndOperateById(MenuStatus.submit, operator, id);
// }
//
// public void pass(Long id, String reason, String operator) {
// Instant datetime = Instant.now();
// menuRepository.updateStatusAndApproveAndOperateById(MenuStatus.pass, reason, operator, id);
// menuApproveRepository.save(MenuApprove.builder().menu(id).pass(true).approve(reason).operate(operator).created(datetime).modify(datetime).build());
// }
//
// public void reject(Long id, String reason, String operator) {
// Instant datetime = Instant.now();
// menuRepository.updateStatusAndApproveAndOperateById(MenuStatus.reject, reason, operator, id);
// menuApproveRepository.save(MenuApprove.builder().menu(id).pass(false).approve(reason).operate(operator).created(datetime).modify(datetime).build());
// }
//
// public void disable(Long id, String operator) {
// menuRepository.updateStatusAndOperateById(MenuStatus.disabled, operator, id);
// }
//
// public Object count() {
// return menuRepository.count(Lists.newArrayList(MenuStatus.submit, MenuStatus.pass, MenuStatus.reject));
// }
//
// public Page<Menu> list(Long vender, MenuStatus status, String name, Date startTime, Date endTime, PageRequest pageRequest) {
// return menuRepository.findAll(toSpecification(vender, status, name, startTime, endTime), pageRequest);
// }
//
// private Specification<Menu> toSpecification(Long vender, MenuStatus status, String name, Date startTime, Date endTime) {
// return (root, query, builder) -> {
// List<Predicate> predicates = new ArrayList<>();
//
// if (vender != null && vender > 0) {
// predicates.add(builder.equal(root.get("vender"), vender));
// }
//
// if( status != null && SUPPORTED_STATUS.contains(status)) {
// predicates.add(builder.equal(root.get("status"), status));
// } else {
// CriteriaBuilder.In<Object> in = builder.in(root.get("status"));
// Lists.newArrayList(MenuStatus.submit, MenuStatus.pass, MenuStatus.reject).forEach(in::value);
// predicates.add(in);
// }
//
// if (startTime != null) {
// predicates.add(builder.greaterThanOrEqualTo(root.get("modify"), startTime.toInstant()));
// }
//
// if (endTime != null) {
// predicates.add(builder.lessThanOrEqualTo(root.get("modify"), endTime.toInstant()));
// }
//
// if (StringUtils.isNotBlank(name)) {
// predicates.add(builder.like(root.get("name"), "%" + name + "%"));
// }
//
// if (predicates.size() > 1) {
// return builder.and(predicates.toArray(new Predicate[0]));
// } else {
// return predicates.get(0);
// }
// };
// }
}

4
diet-dao/src/main/java/com/mathvision/diet/domian/MenuStatus.java

@ -6,7 +6,9 @@ import java.util.Arrays;
public enum MenuStatus {
//0-草稿,1-提交审核,2-审核通过,3-审核失败,4-禁用,5-发布
draft(0, "草稿"), submit(1,"审核中"), pass(2,"审核通过"), reject(3, "审核失败"), disabled(4, "禁用"), publish(5, "发布");
draft(0, "草稿"), publish(5, "发布"),
//submit(1,"审核中"), pass(2,"审核通过"), reject(3, "审核失败"), disabled(4, "禁用")
;
@Getter
private final int code;

1
diet-web/src/main/java/com/mathvision/diet/aspect/GlobalRequestAspect.java

@ -40,6 +40,7 @@ public class GlobalRequestAspect implements HandlerInterceptor, WebMvcConfigurer
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(this)
.addPathPatterns("/api/**")
.excludePathPatterns("/api/icon/*.*")
.excludePathPatterns("/api/login")
.excludePathPatterns("/api/logout");
}

10
diet-web/src/main/java/com/mathvision/diet/controller/IconController.java

@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;
@ -30,11 +31,14 @@ public class IconController extends BaseController {
}
@ResponseBody
@RequestMapping(value = "/icon/{filename}", method = RequestMethod.GET)
@RequestMapping(value = "/api/icon/{filename}", method = RequestMethod.GET)
public void icon(@PathVariable("filename")String fileName) throws IOException {
File file = Paths.get(imagePath, fileName).toFile();
HttpServletResponse response = getResponse();
response.setContentType(IMAGE_JPEG_VALUE);
response.getOutputStream().write(FileUtils.readFileToByteArray(Paths.get(imagePath, fileName).toFile()));
response.flushBuffer();
if (file.exists() && file.isFile() && file.canRead()) {
response.getOutputStream().write(FileUtils.readFileToByteArray(file));
response.flushBuffer();
}
}
}

34
diet-web/src/main/java/com/mathvision/diet/controller/MenuController.java

@ -28,7 +28,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.LongStream;
@RequestMapping("/api/menu")
@Controller
@ -45,17 +44,13 @@ public class MenuController extends BaseController {
@ResponseBody
@RequestMapping(method = RequestMethod.PUT)
public List<Long> add(@RequestParam String name, @RequestParam(required = false) List<Long> vendors, @RequestParam Long nutrient, @RequestParam Long day, @RequestParam(required = false) List<Long> days, @RequestParam List<String> meals, @RequestParam List<Integer> month, @RequestParam List<String> crows) {
public List<Long> add(@RequestParam String name, @RequestParam(required = false) List<Long> vendors, @RequestParam Long nutrient, @RequestParam List<Long> day, @RequestParam List<String> meals, @RequestParam List<Integer> month, @RequestParam List<String> crows) {
Assert.isTrue(StringUtils.isNotBlank(name), "[参数错误]食谱名称必填!");
Assert.isTrue(CollectionUtils.isNotEmpty(month) && month.stream().allMatch(x -> Range.closed(1, 12).contains(x)), "[参数错误]请选择正确的月份!");
Assert.isTrue(!name.matches("[\\[\\]:?*/\\\\]") && name.length() < 31, "[参数错误]食谱名称小于31个字符,且不能包含特殊字符!");
Assert.isTrue(CollectionUtils.isNotEmpty(day) && Range.closed(1L, 7L).containsAll(day), "[参数错误]星期取值[周一~周日]!");
Assert.isTrue(CollectionUtils.isNotEmpty(month) && Range.closed(1, 12).containsAll(month), "[参数错误]请选择正确的月份!");
Assert.isTrue(CollectionUtils.isNotEmpty(meals), "[参数错误]餐次必填!");
Assert.isTrue(meals.stream().allMatch(x -> MealType.toType(x) != null), "[参数错误]餐次取值[早餐,午餐,晚餐]!");
if (days == null || days.isEmpty()) {
Assert.isTrue(Range.closed(1L, 7L).contains(day), "[参数错误]星期取值[周一~周日]!");
days = LongStream.rangeClosed(1L, day).boxed().collect(Collectors.toList());
} else {
Assert.isTrue(Range.closed(1L, 7L).containsAll(days), "[参数错误]星期取值[周一~周日]!");
}
Nutrition nutrition = nutritionService.get(nutrient);
Assert.notNull(nutrition, "[参数错误]营养计划必选!");
@ -67,8 +62,7 @@ public class MenuController extends BaseController {
Assert.isTrue(CollectionUtils.isNotEmpty(crows), "[参数错误]人群取值[参照营养计划]必填!");
Assert.isTrue(allCrows.containsAll(crows), "[参数错误]营养计划不包含所选的人群!");
Instant dateTime = Instant.now();
List<Long> finalDays = days;
List<Menu> menus = vendors.stream().map(v -> Menu.builder().name(name).meals(meals).crows(crows).scale(crows.stream().collect(Collectors.toMap(x -> x, x -> 0))).day(finalDays).nutrient(nutrient).month(month).vender(v).status(MenuStatus.draft).operate(getUid()).created(dateTime).modify(dateTime).build()).collect(Collectors.toList());
List<Menu> menus = vendors.stream().map(v -> Menu.builder().name(name).meals(meals).crows(crows).scale(crows.stream().collect(Collectors.toMap(x -> x, x -> 0))).day(day).nutrient(nutrient).month(month).vender(v).status(MenuStatus.draft).operate(getUid()).created(dateTime).modify(dateTime).build()).collect(Collectors.toList());
return menuService.add(menus).stream().map(Menu::getId).collect(Collectors.toList());
}
@ -84,28 +78,21 @@ public class MenuController extends BaseController {
@ResponseBody
@RequestMapping(method = RequestMethod.POST)
public void update(@RequestParam Long id, @RequestParam(required = false) String name, @RequestParam(required = false) List<Integer> month, @RequestParam Long nutrient, @RequestParam(required = false) Long day, @RequestParam(required = false) List<Long> days, @RequestParam(required = false) List<String> meals, @RequestParam(required = false) List<String> crows) {
public void update(@RequestParam Long id, @RequestParam(required = false) String name, @RequestParam(required = false) List<Integer> month, @RequestParam Long nutrient, @RequestParam(required = false) List<Long> day, @RequestParam(required = false) List<String> meals, @RequestParam(required = false) List<String> crows) {
Menu menu = menuService.get(id);
Assert.notNull(menu, "[参数错误]食谱不存在!");
Assert.isTrue(menu.getVender().equals(getVender()) || isAdmin(), "[参数错误]食谱不存在!");
Assert.isTrue(menu.getStatus() != MenuStatus.publish, "[参数错误]该食谱已发布,不可编辑!");
Assert.isTrue(CollectionUtils.isEmpty(month) || month.stream().allMatch(x -> Range.closed(1, 12).contains(x)), "[参数错误]请选择正确的月份!");
if (days == null || days.isEmpty()) {
Assert.isTrue(day == null || Range.closed(1L, 7L).contains(day), "[参数错误]天数取值[1~7]!");
if (day != null) {
days = LongStream.rangeClosed(1L, day).boxed().collect(Collectors.toList());
}
} else {
Assert.isTrue(Range.closed(1L, 7L).containsAll(days), "[参数错误]星期取值[周一~周日]!");
}
boolean flag = false;
boolean check = false;
if (StringUtils.isNotBlank(name) && !StringUtils.equals(menu.getName(), name)) {
Assert.isTrue(!name.matches("[\\[\\]:?*/\\\\]") && name.length() < 31, "[参数错误]食谱名称小于31个字符,且不能包含特殊字符!");
menu.setName(name);
flag = true;
}
if (CollectionUtils.isNotEmpty(month) && !menu.getMonth().equals(month)) {
Assert.isTrue(Range.closed(1, 12).containsAll(month), "[参数错误]请选择正确的月份!");
menu.setMonth(month);
flag = true;
}
@ -114,8 +101,9 @@ public class MenuController extends BaseController {
menu.setMeals(meals);
flag = true;
}
if (days != null && !days.equals(menu.getDay())) {
menu.setDay(days);
if (day != null && !day.equals(menu.getDay())) {
Assert.isTrue(Range.closed(1L, 7L).containsAll(day), "[参数错误]星期取值[周一~周日]!");
menu.setDay(day);
flag = true;
}
if (nutrient != null && !nutrient.equals(menu.getNutrient())) {

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

@ -47,16 +47,16 @@ public class MenuDishController extends BaseController {
@ResponseBody
@RequestMapping(method = RequestMethod.PUT)
public Long add(@RequestParam Long menuId, @RequestParam Long dishId, @RequestParam Long 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.publish);
return menuDishService.add(checkAndConvert(menu, checkAndConvert(dishId), day, meal, mark, poly, parseItems(ingredient, new HashSet<>(menu.getCrows())))).getId();
}
@ResponseBody
@RequestMapping(value = "batch", method = RequestMethod.PUT)
public List<Long> addAll(@RequestBody MenuDishVO menuDishVO) {
menuDishVO.getMenuIds().forEach(menuId -> checkAndConvert(menuId, MenuStatus.pass, MenuStatus.publish));
menuDishVO.getMenuIds().forEach(menuId -> checkAndConvert(menuId, MenuStatus.publish));
return menuDishService.addAll(menuDishVO.getMenuIds().stream().map(menuId -> {
Menu menu = checkAndConvert(menuId, MenuStatus.pass, MenuStatus.publish);
Menu menu = checkAndConvert(menuId, MenuStatus.publish);
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());
}
@ -64,7 +64,7 @@ public class MenuDishController extends BaseController {
@ResponseBody
@RequestMapping(method = RequestMethod.DELETE)
public void delete(@RequestParam(required = false) Long menuDishId, @RequestParam Long menuId) {
checkAndConvert(menuId, MenuStatus.pass, MenuStatus.publish);
checkAndConvert(menuId, MenuStatus.publish);
if (menuDishId != null) {
MenuDish dish = isAdmin() ? menuDishService.get(menuDishId) : menuDishService.get(menuDishId, getVender());
Assert.notNull(dish, "[参数错误]菜品不存在!");
@ -77,7 +77,7 @@ public class MenuDishController extends BaseController {
@ResponseBody
@RequestMapping(method = RequestMethod.POST)
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.publish);
MenuDish dish = isAdmin() ? menuDishService.get(menuDishId) : menuDishService.get(menuDishId, getVender());
Assert.notNull(dish, "[参数错误]菜品不存在!");
@ -146,7 +146,7 @@ public class MenuDishController extends BaseController {
Menu menu = isAdmin() ? menuService.get(menuId) : menuService.get(menuId, getVender());
Assert.notNull(menu, "[参数错误]食谱不存在, menuId:" + menuId);
if (statuses != null && statuses.length > 0) {
Assert.isTrue(Arrays.stream(statuses).noneMatch(menuStatus -> menu.getStatus().equals(menuStatus)), "[参数错误]食谱已通过审核或者发布, menuId:" + menuId);
Assert.isTrue(Arrays.stream(statuses).noneMatch(menuStatus -> menu.getStatus().equals(menuStatus)), "[参数错误]食谱已发布, menuId:" + menuId);
}
return menu;
}

2
diet-web/src/main/java/com/mathvision/diet/controller/MenuReleaseController.java

@ -33,7 +33,7 @@ public class MenuReleaseController extends BaseController {
Menu menu = menuService.get(id);
Assert.notNull(menu, "[参数错误]食谱不存在!");
Assert.isTrue(menu.getVender().equals(getVender()) || isAdmin(), "[参数错误]食谱不存在!");
Assert.isTrue(menu.getStatus() == MenuStatus.pass, "[参数错误]该食谱当前非审批通过状态,不可发布!");
Assert.isTrue(menu.getStatus() == MenuStatus.draft, "[参数错误]该食谱当前非草稿状态,不可发布!");
menu.getScale().entrySet().forEach(x -> x.setValue(scale.getOrDefault(x.getKey(), 0)));
menuReleaseService.publish(id, menu.getScale(), parseDate(startTime, new Date()), parseDate(endTime, DateUtils.addDays(new Date(), 7)), getUid());
}

122
diet-web/src/main/java/com/mathvision/diet/controller/MenuReviewController.java

@ -1,77 +1,63 @@
package com.mathvision.diet.controller;
import com.mathvision.diet.domian.MenuStatus;
import com.mathvision.diet.entity.Menu;
import com.mathvision.diet.service.MenuReviewService;
import com.mathvision.diet.service.MenuService;
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;
@RequestMapping("/api/menu/review")
@Controller
public class MenuReviewController extends BaseController {
@Resource
MenuService menuService;
@Resource
MenuReviewService menuReviewService;
@ResponseBody
@RequestMapping(method = RequestMethod.PUT)
public void submit(@RequestParam Long id) {
Menu menu = menuService.get(id);
Assert.notNull(menu, "[参数错误]食谱不存在!");
Assert.isTrue(menu.getVender().equals(getVender()) || isAdmin(), "[参数错误]食谱不存在!");
Assert.isTrue(menu.getStatus() == MenuStatus.draft || menu.getStatus() == MenuStatus.reject, "[参数错误]提交审核失败: 该食谱当前非草稿或者审核失败状态!");
menuReviewService.submit(id, getUid());
}
@ResponseBody
@RequestMapping(method = RequestMethod.DELETE)
public void disable(@RequestParam Long id) {
Assert.isTrue(isAdmin(), "[参数错误]无审批权限!");
Menu menu = menuService.get(id);
Assert.notNull(menu, "[参数错误]食谱不存在!");
Assert.isTrue(menu.getVender().equals(getVender()) || isAdmin(), "[参数错误]食谱不存在!");
Assert.isTrue(menu.getStatus() != MenuStatus.pass && menu.getStatus() != MenuStatus.publish, "[参数错误]禁用食谱失败: 该食谱当前非审批通过或者发布状态!");
menuReviewService.disable(id, getUid());
}
@ResponseBody
@RequestMapping(method = RequestMethod.POST)
public void approve(@RequestParam Long id, @RequestParam boolean pass, @RequestParam(required = false) String reason) {
Assert.isTrue(isAdmin(), "[参数错误]无审批权限!");
Menu menu = menuService.get(id);
Assert.notNull(menu, "[参数错误]食谱不存在!");
Assert.isTrue(menu.getVender().equals(getVender()) || isAdmin(), "[参数错误]食谱不存在!");
Assert.isTrue(menu.getStatus() == MenuStatus.submit || menu.getStatus() == MenuStatus.reject, "[参数错误]审批食谱失败: 该食谱当前非提交审核状态!");
if(pass){
menuReviewService.pass(id, reason, getUid());
} else {
menuReviewService.reject(id, reason, getUid());
}
}
@ResponseBody
@RequestMapping(method = RequestMethod.GET)
public Page<Menu> query(@RequestParam(required = false) String name, @RequestParam(required = false) Integer status, @RequestParam(required = false) Long vender, @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 menuReviewService.list(vender, MenuStatus.toType(status), name, parseDate(startTime), parseDate(endTime), PageRequest.of(pageNo, pageSize).withSort(Sort.by(Sort.Direction.DESC, "id")));
}
@ResponseBody
@RequestMapping(value = "count", method = RequestMethod.GET)
public Object count() {
Assert.isTrue(isAdmin(), "[参数错误]无审批权限!");
return menuReviewService.count();
}
// @Resource
// MenuService menuService;
//
// @Resource
// MenuReviewService menuReviewService;
//
// @ResponseBody
// @RequestMapping(method = RequestMethod.PUT)
// public void submit(@RequestParam Long id) {
// Menu menu = menuService.get(id);
// Assert.notNull(menu, "[参数错误]食谱不存在!");
// Assert.isTrue(menu.getVender().equals(getVender()) || isAdmin(), "[参数错误]食谱不存在!");
// Assert.isTrue(menu.getStatus() == MenuStatus.draft || menu.getStatus() == MenuStatus.reject, "[参数错误]提交审核失败: 该食谱当前非草稿或者审核失败状态!");
// menuReviewService.submit(id, getUid());
// }
//
// @ResponseBody
// @RequestMapping(method = RequestMethod.DELETE)
// public void disable(@RequestParam Long id) {
// Assert.isTrue(isAdmin(), "[参数错误]无审批权限!");
// Menu menu = menuService.get(id);
// Assert.notNull(menu, "[参数错误]食谱不存在!");
// Assert.isTrue(menu.getVender().equals(getVender()) || isAdmin(), "[参数错误]食谱不存在!");
// Assert.isTrue(menu.getStatus() != MenuStatus.pass && menu.getStatus() != MenuStatus.publish, "[参数错误]禁用食谱失败: 该食谱当前非审批通过或者发布状态!");
// menuReviewService.disable(id, getUid());
// }
//
// @ResponseBody
// @RequestMapping(method = RequestMethod.POST)
// public void approve(@RequestParam Long id, @RequestParam boolean pass, @RequestParam(required = false) String reason) {
// Assert.isTrue(isAdmin(), "[参数错误]无审批权限!");
// Menu menu = menuService.get(id);
// Assert.notNull(menu, "[参数错误]食谱不存在!");
// Assert.isTrue(menu.getVender().equals(getVender()) || isAdmin(), "[参数错误]食谱不存在!");
// Assert.isTrue(menu.getStatus() == MenuStatus.submit || menu.getStatus() == MenuStatus.reject, "[参数错误]审批食谱失败: 该食谱当前非提交审核状态!");
// if(pass){
// menuReviewService.pass(id, reason, getUid());
// } else {
// menuReviewService.reject(id, reason, getUid());
// }
// }
//
// @ResponseBody
// @RequestMapping(method = RequestMethod.GET)
// public Page<Menu> query(@RequestParam(required = false) String name, @RequestParam(required = false) Integer status, @RequestParam(required = false) Long vender, @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 menuReviewService.list(vender, MenuStatus.toType(status), name, parseDate(startTime), parseDate(endTime), PageRequest.of(pageNo, pageSize).withSort(Sort.by(Sort.Direction.DESC, "id")));
// }
//
// @ResponseBody
// @RequestMapping(value = "count", method = RequestMethod.GET)
// public Object count() {
// Assert.isTrue(isAdmin(), "[参数错误]无审批权限!");
// return menuReviewService.count();
// }
}

2
diet-web/src/main/resources/static/icon.html

@ -24,6 +24,6 @@ Content-Disposition: form-data; name=&quot;extraInfo&quot;;
</code></pre>
<h1>2. 访问图片(挂在nginx目录下,不用通过api路径访问,使用前端路径访问)</h1>
<blockquote>
<p>GET /icon/12341234213.jpg</p>
<p>GET /api/icon/12341234213.jpg</p>
</blockquote>

10
diet-web/src/main/resources/static/menu/menu.html

@ -13,7 +13,7 @@
&quot;轻体力&quot;,
&quot;重体力&quot;
],
&quot;day&quot;: 1,
&quot;day&quot;: [1,3,5],
&quot;id&quot;: 1,
&quot;meals&quot;: [
&quot;早餐&quot;,
@ -70,7 +70,7 @@ endTime=2024-03-01
&quot;轻体力&quot;,
&quot;重体力&quot;
],
&quot;day&quot;: 1,
&quot;day&quot;: [1,3,5],
&quot;id&quot;: 1,
&quot;meals&quot;: [
&quot;早餐&quot;,
@ -118,8 +118,7 @@ endTime=2024-03-01
<pre><code class="text">vendors=1,2,3 // 管理端有效,业务端不用
name=番茄鸡蛋汤 // 名称
nutrient=1 // 营养计划编号
day=7 // 天数, 如果传7则标识周一~周日
days=[1,3,5] // 天数, 代表周一,周三,周五, days和day二选一
day=1,3,5 // 代表周一,周三,周五
meals=早餐,午餐,晚餐 // 餐次
month=1,2,3,4,5,6,7,8,9,10,11,12 // 适用月份
crows=重体力,轻体力 //人群
@ -144,8 +143,7 @@ crows=
<pre><code class="text">id=1 // 食谱ID
name=番茄鸡蛋汤 // 名称
nutrient=1 // 营养计划编号
day=7 // 天数, 如果传7则标识周一~周日
days=[1,3,5] // 天数, 代表周一,周三,周五, days和day二选一
day=1,3,5 // 代表周一,周三,周五
meals=早餐,午餐,晚餐 // 餐次
month=1,2,3,4,5,6,7,8,9,10,11,12 // 适用月份
crows=重体力,轻体力 //人群

2
doc/icon.md

@ -28,4 +28,4 @@ Content-Disposition: form-data; name="extraInfo";
```
# 2. 访问图片(挂在nginx目录下,不用通过api路径访问,使用前端路径访问)
> GET /icon/12341234213.jpg
> GET /api/icon/12341234213.jpg

10
doc/menu/menu.md

@ -16,7 +16,7 @@ id=1
"轻体力",
"重体力"
],
"day": 1,
"day": [1,3,5],
"id": 1,
"meals": [
"早餐",
@ -78,7 +78,7 @@ endTime=2024-03-01
"轻体力",
"重体力"
],
"day": 1,
"day": [1,3,5],
"id": 1,
"meals": [
"早餐",
@ -129,8 +129,7 @@ endTime=2024-03-01
vendors=1,2,3 // 管理端有效,业务端不用
name=番茄鸡蛋汤 // 名称
nutrient=1 // 营养计划编号
day=7 // 天数, 如果传7则标识周一~周日
days=[1,3,5] // 天数, 代表周一,周三,周五, days和day二选一
day=1,3,5 // 代表周一,周三,周五
meals=早餐,午餐,晚餐 // 餐次
month=1,2,3,4,5,6,7,8,9,10,11,12 // 适用月份
crows=重体力,轻体力 //人群
@ -160,8 +159,7 @@ crows=重体力,轻体力 //人群
id=1 // 食谱ID
name=番茄鸡蛋汤 // 名称
nutrient=1 // 营养计划编号
day=7 // 天数, 如果传7则标识周一~周日
days=[1,3,5] // 天数, 代表周一,周三,周五, days和day二选一
day=1,3,5 // 代表周一,周三,周五
meals=早餐,午餐,晚餐 // 餐次
month=1,2,3,4,5,6,7,8,9,10,11,12 // 适用月份
crows=重体力,轻体力 //人群

Loading…
Cancel
Save