diff --git a/stdiet-admin/src/main/filters/dev/application.yml b/stdiet-admin/src/main/filters/dev/application.yml index 6536928b3..91d0fbcdd 100644 --- a/stdiet-admin/src/main/filters/dev/application.yml +++ b/stdiet-admin/src/main/filters/dev/application.yml @@ -148,6 +148,7 @@ mybatis: mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml + typeHandlersPackage: com.stdiet.**.typehandler # PageHelper分页插件 pagehelper: diff --git a/stdiet-admin/src/main/filters/local/application.yml b/stdiet-admin/src/main/filters/local/application.yml index 057dee4c1..d135b20ca 100644 --- a/stdiet-admin/src/main/filters/local/application.yml +++ b/stdiet-admin/src/main/filters/local/application.yml @@ -148,6 +148,7 @@ mybatis: mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml + typeHandlersPackage: com.stdiet.**.typehandler # PageHelper分页插件 pagehelper: diff --git a/stdiet-admin/src/main/filters/prod/application.yml b/stdiet-admin/src/main/filters/prod/application.yml index 4044c157a..dab9fc36e 100644 --- a/stdiet-admin/src/main/filters/prod/application.yml +++ b/stdiet-admin/src/main/filters/prod/application.yml @@ -148,6 +148,7 @@ mybatis: mapperLocations: classpath*:mapper/**/*Mapper.xml # 加载全局的配置文件 configLocation: classpath:mybatis/mybatis-config.xml + typeHandlersPackage: com.stdiet.**.typehandler # PageHelper分页插件 pagehelper: diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesController.java index 0ba05c017..950b7c1cc 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesController.java @@ -1,23 +1,82 @@ package com.stdiet.web.controller.custom; +import com.stdiet.common.annotation.Log; import com.stdiet.common.core.controller.BaseController; import com.stdiet.common.core.domain.AjaxResult; +import com.stdiet.common.enums.BusinessType; +import com.stdiet.custom.domain.SysRecipes; +import com.stdiet.custom.domain.SysRecipesDailyDishes; import com.stdiet.custom.service.ISysRecipesService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController -@RequestMapping("/recipes") +@RequestMapping("/custom/recipes") public class SysRecipesController extends BaseController { @Autowired private ISysRecipesService sysRecipesService; + /** + * 获取食谱详情 + * + * @param resipesId + * @return + */ @GetMapping(value = "/{resipesId}") public AjaxResult getInfo(@PathVariable("resipesId") Long resipesId) { return AjaxResult.success(sysRecipesService.selectSysRecipesByRecipesId(resipesId)); } + + @Log(title = "食谱", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult addRecipes(@RequestBody SysRecipes sysRecipes) { + int rows = sysRecipesService.addRecipes(sysRecipes); + if (rows > 0) { + return AjaxResult.success(sysRecipes.getId()); + } else { + return AjaxResult.error(); + } + } + + /** + * 修改食谱菜品 + * + * @param sysRecipesDailyDishes + * @return + */ + @Log(title = "食谱菜品", businessType = BusinessType.UPDATE) + @PutMapping(value = "/dishes") + public AjaxResult edit(@RequestBody SysRecipesDailyDishes sysRecipesDailyDishes) { + return toAjax(sysRecipesService.updateDishesDetail(sysRecipesDailyDishes)); + } + + /** + * 添加菜品 + * + * @param sysRecipesDailyDishes + * @return + */ + @Log(title = "食谱菜品", businessType = BusinessType.INSERT) + @PostMapping(value = "/dishes") + public AjaxResult add(@RequestBody SysRecipesDailyDishes sysRecipesDailyDishes) { + int rows = sysRecipesService.addDishes(sysRecipesDailyDishes); + if (rows > 0) { + return AjaxResult.success(sysRecipesDailyDishes.getId()); + } else { + return AjaxResult.error(); + } + } + + /** + * 删除菜品 + * + * @param id + * @return + */ + @Log(title = "食谱菜品", businessType = BusinessType.DELETE) + @DeleteMapping("/dishes/{id}") + public AjaxResult delete(@PathVariable Long id) { + return toAjax(sysRecipesService.deleteDishes(id)); + } } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishes.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishes.java index 61bd86838..6d6f32c9f 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishes.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishes.java @@ -1,5 +1,6 @@ package com.stdiet.custom.domain; +import com.alibaba.fastjson.JSONArray; import com.fasterxml.jackson.annotation.JsonFormat; import com.stdiet.common.annotation.Excel; import lombok.Data; @@ -74,6 +75,4 @@ public class SysDishes { private List igdList; - private List detail; - } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java index b4fb4200b..092dce023 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysDishesIngredient.java @@ -1,8 +1,6 @@ package com.stdiet.custom.domain; import lombok.Data; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; import java.math.BigDecimal; @@ -27,4 +25,11 @@ public class SysDishesIngredient extends SysIngredient { private String remark; + private Long id; + + private String cus_unit; + + private String cus_weight; + + } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipes.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipes.java index 9b727297d..40dc33b41 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipes.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipes.java @@ -1,47 +1,17 @@ package com.stdiet.custom.domain; -import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; -import java.util.Date; import java.util.List; @Data public class SysRecipes { - private static final long serialVersionUID = 1L; private Long id; - private Integer numDay; + private Long cusId; - private List dishes; + private Long planId; - private Integer reviewStatus; - - /** - * 创建者 - */ - private String createBy; - - /** - * 创建时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date createTime; - - /** - * 更新者 - */ - private String updateBy; - - /** - * 更新时间 - */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date updateTime; - - /** - * 备注 - */ - private String remark; + private List menus; } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDaily.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDaily.java new file mode 100644 index 000000000..057f25b21 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDaily.java @@ -0,0 +1,34 @@ +package com.stdiet.custom.domain; + +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class SysRecipesDaily { + private Long id; + + private Integer numDay; + + private Date date; + + private Long recipesId; + + private Long cusId; + + private Integer reviewStatus; + + private Date createTime; + + private String createBy; + + private Date updateTime; + + private String updateBy; + + private String remark; + + private List dishes; + +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDailyDishes.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDailyDishes.java new file mode 100644 index 000000000..b4e5d5e77 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDailyDishes.java @@ -0,0 +1,28 @@ +package com.stdiet.custom.domain; + +import com.alibaba.fastjson.JSONArray; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class SysRecipesDailyDishes { + private Long id; + + private Long menuId; + + private String name; + + private Long dishesId; + + private JSONArray detail; + + private String methods; + + private List igdList; + + private String type; + + private Integer isMain; +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java index e0bfdcc0a..b97792625 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java @@ -1,10 +1,28 @@ package com.stdiet.custom.mapper; import com.stdiet.custom.domain.SysRecipes; +import com.stdiet.custom.domain.SysRecipesDaily; +import com.stdiet.custom.domain.SysRecipesDailyDishes; import java.util.List; public interface SysRecipesMapper { + + public int addRecipes(SysRecipes sysRecipes); + + public int bashAddDishes(List dishes); + + public int bashAddMenus(List menus); + + + public int getNumDayByCusId(Long id); + public List selectSysRecipesByRecipesId(Long id); + + public int updateDishesDetail(SysRecipesDailyDishes sysRecipesDaily); + + public int addDishes(SysRecipesDailyDishes sysRecipesDaily); + + public int deleteDishes(Long id); } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesService.java index 5bf1c4a39..b23c9b81c 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesService.java @@ -1,9 +1,20 @@ package com.stdiet.custom.service; import com.stdiet.custom.domain.SysRecipes; +import com.stdiet.custom.domain.SysRecipesDaily; +import com.stdiet.custom.domain.SysRecipesDailyDishes; import java.util.List; public interface ISysRecipesService { + + public int addRecipes(SysRecipes sysRecipes); + public List selectSysRecipesByRecipesId(Long id); + + public int updateDishesDetail(SysRecipesDailyDishes sysRecipesDaily); + + public int addDishes(SysRecipesDailyDishes sysRecipesDaily); + + public int deleteDishes(Long id); } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesServiceImpl.java index a899e98c4..3ceaae40d 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesServiceImpl.java @@ -1,12 +1,18 @@ package com.stdiet.custom.service.impl; import com.stdiet.custom.domain.SysRecipes; +import com.stdiet.custom.domain.SysRecipesDaily; +import com.stdiet.custom.domain.SysRecipesDailyDishes; +import com.stdiet.custom.domain.SysRecipesPlan; import com.stdiet.custom.mapper.SysRecipesMapper; +import com.stdiet.custom.mapper.SysRecipesPlanMapper; import com.stdiet.custom.service.ISysRecipesService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @Service @@ -16,8 +22,64 @@ public class SysRecipesServiceImpl implements ISysRecipesService { @Autowired private SysRecipesMapper sysRecipesMapper; + @Autowired + private SysRecipesPlanMapper sysRecipesPlanMapper; + + + @Override + public int addRecipes(SysRecipes sysRecipes) { + int rows = sysRecipesMapper.addRecipes(sysRecipes); + if (rows > 0) { + int count = sysRecipesMapper.getNumDayByCusId(sysRecipes.getCusId()); + List menus = sysRecipes.getMenus(); + List dishes = new ArrayList<>(); + int size = menus.size(); + for (int i = 0; i < size; i++) { + SysRecipesDaily tarMenu = menus.get(i); + // 计算menuId + long dailyId = sysRecipes.getId() + new Date().getTime() + i; + tarMenu.setId(dailyId); + // 插入recipiesId + tarMenu.setRecipesId(sysRecipes.getId()); + // 插入numDay + tarMenu.setNumDay(count + i + 1); + for (SysRecipesDailyDishes tmpDishes : tarMenu.getDishes()) { + // 让菜品插入menuId + tmpDishes.setMenuId(dailyId); + dishes.add(tmpDishes); + } + } + // 插入每天食谱 + sysRecipesMapper.bashAddMenus(menus); + // 插入每天菜品 + sysRecipesMapper.bashAddDishes(dishes); + // 更新食谱计划 + SysRecipesPlan sysRecipesPlan = new SysRecipesPlan(); + sysRecipesPlan.setId(sysRecipes.getPlanId()); + sysRecipesPlan.setRecipesId(sysRecipes.getId()); + sysRecipesPlanMapper.updateSysRecipesPlan(sysRecipesPlan); + } + + return rows; + } + @Override public List selectSysRecipesByRecipesId(Long id) { return sysRecipesMapper.selectSysRecipesByRecipesId(id); } + + @Override + public int updateDishesDetail(SysRecipesDailyDishes sysRecipesDailyDishes) { + return sysRecipesMapper.updateDishesDetail(sysRecipesDailyDishes); + } + + @Override + public int addDishes(SysRecipesDailyDishes sysRecipesDailyDishes) { + return sysRecipesMapper.addDishes(sysRecipesDailyDishes); + } + + @Override + public int deleteDishes(Long id) { + return sysRecipesMapper.deleteDishes(id); + } } diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml index f8cfc64a0..d29b1f7df 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml @@ -4,7 +4,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -15,14 +15,16 @@ - - + + + + + javaType="com.stdiet.custom.domain.SysDishesIngredient"/> @@ -76,4 +78,67 @@ ) ing USING(id) + + + update sys_customer_menu_dishes + + detail = #{detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler}, + + where id = #{id} + + + + + insert into sys_customer_menu_dishes + + menu_id, + dishes_id, + type, + detail, + + + #{menuId}, + #{dishesId}, + #{type}, + #{detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler}, + + + + + + delete from sys_customer_menu_dishes where id = #{id} + + + + + + + + insert into sys_customer_menu + + cus_id, + + + #{cusId}, + + + + + + insert into sys_customer_daily_menu (id, num_day, date, recipes_id, cus_id) values + + (#{item.id}, #{item.numDay}, #{item.date}, #{item.recipesId}, #{item.cusId}) + + + + + + insert into sys_customer_menu_dishes (menu_id, type, dishes_id, detail) values + + (#{item.menuId}, #{item.type}, #{item.dishesId}, #{item.detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler}) + + + \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml index 8f47b8b98..5382f00f9 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml @@ -127,7 +127,7 @@