diff --git a/pom.xml b/pom.xml index fdd8087f3..b49f0bd5d 100644 --- a/pom.xml +++ b/pom.xml @@ -30,6 +30,7 @@ 3.17 1.7 0.9.1 + 3.8.0 @@ -187,10 +188,18 @@ stdiet-common ${stdiet.version} - + + + + com.aliyun.oss + aliyun-sdk-oss + ${aliyun-oss.version} + + + stdiet-admin stdiet-framework diff --git a/running/pdf/healthyReport.pdf b/running/pdf/healthyReport.pdf new file mode 100644 index 000000000..c453e40d5 Binary files /dev/null and b/running/pdf/healthyReport.pdf differ diff --git a/stdiet-admin/src/main/filters/dev/application.yml b/stdiet-admin/src/main/filters/dev/application.yml index 91d0fbcdd..7c6f75712 100644 --- a/stdiet-admin/src/main/filters/dev/application.yml +++ b/stdiet-admin/src/main/filters/dev/application.yml @@ -172,3 +172,13 @@ xss: excludes: /system/notice/* # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* + +#阿里云OSS配置 +aliyun: + oss: + AccessKeyID: LTAI4GEGbBEiqv1Z512K4qWn + AccessKeySecret: fT7eIhejMwMy5tFooCF0puLkurH64j + Buckets: stdiet + EndPoint: https://oss-cn-shenzhen.aliyuncs.com + #案例文件夹路径 + casePrefix: case/ \ No newline at end of file diff --git a/stdiet-admin/src/main/filters/local/application.yml b/stdiet-admin/src/main/filters/local/application.yml index d135b20ca..8e012f3d3 100644 --- a/stdiet-admin/src/main/filters/local/application.yml +++ b/stdiet-admin/src/main/filters/local/application.yml @@ -10,6 +10,7 @@ stdiet: demoEnabled: true # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) profile: /Users/wonder/Documents/Workspaces/java/ShengtangManage/running/uploadPath +# profile: D:/ruoyi/uploadPath # 获取ip地址开关 addressEnabled: false # 验证码类型 math 数组计算 char 字符验证 @@ -172,3 +173,14 @@ xss: excludes: /system/notice/* # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* + +#阿里云OSS配置 +aliyun: + oss: + AccessKeyID: LTAI4GEGbBEiqv1Z512K4qWn + AccessKeySecret: fT7eIhejMwMy5tFooCF0puLkurH64j + Buckets: stdiet + EndPoint: https://oss-cn-shenzhen.aliyuncs.com + #案例文件夹路径 + casePrefix: case/ + diff --git a/stdiet-admin/src/main/filters/prod/application.yml b/stdiet-admin/src/main/filters/prod/application.yml index dab9fc36e..7c0b1f97d 100644 --- a/stdiet-admin/src/main/filters/prod/application.yml +++ b/stdiet-admin/src/main/filters/prod/application.yml @@ -172,3 +172,13 @@ xss: excludes: /system/notice/* # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* + +#阿里云OSS配置 +aliyun: + oss: + AccessKeyID: LTAI4GEGbBEiqv1Z512K4qWn + AccessKeySecret: fT7eIhejMwMy5tFooCF0puLkurH64j + Buckets: stdiet + EndPoint: https://oss-cn-shenzhen.aliyuncs.com + #案例文件夹路径 + casePrefix: case/ \ No newline at end of file diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/MyApplicationRunner.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/MyApplicationRunner.java new file mode 100644 index 000000000..949b70455 --- /dev/null +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/MyApplicationRunner.java @@ -0,0 +1,27 @@ +package com.stdiet.web.controller; + +import com.stdiet.common.config.AliyunOSSConfig; +import com.stdiet.common.utils.oss.AliyunOSSUtils; +import com.stdiet.custom.mapper.SysCustomerPhysicalSignsMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.io.File; + +@Component +@Order(value = 1) +public class MyApplicationRunner implements ApplicationRunner { + + @Autowired + private SysCustomerPhysicalSignsMapper sysCustomerPhysicalSignsMapper; + + @Override + public void run(ApplicationArguments args) throws Exception { + System.out.println("项目启动调用方法"); +// String path = AliyunOSSUtils.uploadFileInputSteam(AliyunOSSConfig.casePrefix,"ceshi.png",new File("D:\\ceshi.png")); +// System.out.println(path); + } +} diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCommisionController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCommisionController.java index defba24c1..c7fd11182 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCommisionController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCommisionController.java @@ -5,6 +5,7 @@ import java.math.RoundingMode; import java.util.List; import com.stdiet.custom.domain.SysCommissionDayDetail; +import com.stdiet.custom.dto.request.SysOrderCommision; import com.stdiet.custom.service.ISysCommissionDayService; import com.stdiet.framework.web.domain.server.Sys; import com.stdiet.system.domain.CusSalesman; diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCustomerCaseController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCustomerCaseController.java new file mode 100644 index 000000000..47c95eb63 --- /dev/null +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCustomerCaseController.java @@ -0,0 +1,197 @@ +package com.stdiet.web.controller.custom; + +import java.io.InputStream; +import java.net.URLEncoder; +import java.util.List; + +import com.stdiet.common.config.AliyunOSSConfig; +import com.stdiet.common.config.RuoYiConfig; +import com.stdiet.common.constant.Constants; +import com.stdiet.common.exception.file.FileNameLengthLimitExceededException; +import com.stdiet.common.utils.StringUtils; +import com.stdiet.common.utils.file.FileUploadUtils; +import com.stdiet.common.utils.file.FileUtils; +import com.stdiet.common.utils.file.MimeTypeUtils; +import com.stdiet.common.utils.oss.AliyunOSSUtils; +import com.stdiet.custom.domain.SysCustomerCaseFile; +import com.stdiet.custom.dto.request.FileRequest; +import com.sun.deploy.net.HttpResponse; +import io.swagger.models.auth.In; +import org.aspectj.weaver.loadtime.Aj; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.http.StreamingHttpOutputMessage; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +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.SysCustomerCase; +import com.stdiet.custom.service.ISysCustomerCaseService; +import com.stdiet.common.utils.poi.ExcelUtil; +import com.stdiet.common.core.page.TableDataInfo; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * 客户案例管理Controller + * + * @author xiezhijun + * @date 2021-03-04 + */ +@RestController +@RequestMapping("/custom/customerCase") +public class SysCustomerCaseController extends BaseController +{ + @Autowired + private ISysCustomerCaseService sysCustomerCaseService; + + /** + * 查询客户案例管理列表 + */ + @PreAuthorize("@ss.hasPermi('custom:customerCase:list')") + @GetMapping("/list") + public TableDataInfo list(SysCustomerCase sysCustomerCase) + { + startPage(); + List list = sysCustomerCaseService.selectSysCustomerCaseList(sysCustomerCase); + return getDataTable(list); + } + + /** + * 导出客户案例管理列表 + */ + @PreAuthorize("@ss.hasPermi('custom:customerCase:export')") + @Log(title = "客户案例管理", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult export(SysCustomerCase sysCustomerCase) + { + List list = sysCustomerCaseService.selectSysCustomerCaseList(sysCustomerCase); + ExcelUtil util = new ExcelUtil(SysCustomerCase.class); + return util.exportExcel(list, "customerCase"); + } + + /** + * 获取客户案例管理详细信息 + */ + @PreAuthorize("@ss.hasPermi('custom:customerCase:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(sysCustomerCaseService.selectSysCustomerCaseById(id)); + } + + /** + * 新增客户案例管理 + */ + @PreAuthorize("@ss.hasPermi('custom:customerCase:add')") + @Log(title = "客户案例管理", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody SysCustomerCase sysCustomerCase) + { + return toAjax(sysCustomerCaseService.insertSysCustomerCase(sysCustomerCase)); + } + + /** + * 修改客户案例管理 + */ + @PreAuthorize("@ss.hasPermi('custom:customerCase:edit')") + @Log(title = "客户案例管理", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody SysCustomerCase sysCustomerCase) + { + return toAjax(sysCustomerCaseService.updateSysCustomerCase(sysCustomerCase)); + } + + /** + * 删除客户案例管理 + */ + @PreAuthorize("@ss.hasPermi('custom:customerCase:remove')") + @Log(title = "客户案例管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(sysCustomerCaseService.deleteSysCustomerCaseByIds(ids)); + } + + /** + * 查询客户案例文件列表 + */ + @GetMapping("/getFileListByCaseId") + @PreAuthorize("@ss.hasPermi('custom:customerCase:list')") + public TableDataInfo getFileListByCaseId(@RequestParam("caseId")Long caseId) + { + List list = sysCustomerCaseService.getFileListByCaseId(caseId); + return getDataTable(list); + } + + /** + * 上传文件到OSS返回URL + */ + @PostMapping("/uploadCaseFile") + @PreAuthorize("@ss.hasPermi('custom:customerCase:list')") + public AjaxResult uploadCseFile(MultipartFile file) throws Exception { + try { + if(file == null){ + return AjaxResult.error("文件不存在"); + } + int fileNameLength = file.getOriginalFilename().length(); + if (fileNameLength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH) + { + throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH); + } + FileUploadUtils.assertAllowed(file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION); + + String fileUrl = AliyunOSSUtils.uploadFileInputSteam(AliyunOSSConfig.casePrefix, file.getOriginalFilename(), file); + + AjaxResult ajax = null; + if(StringUtils.isNotEmpty(fileUrl)){ + ajax = AjaxResult.success(); + ajax.put("fileUrl", fileUrl); + ajax.put("fileName", file.getOriginalFilename()); + }else{ + ajax = AjaxResult.error("文件上传失败"); + } + return ajax; + } catch (Exception e) { + return AjaxResult.error("文件上传失败"); + } + } + + /** + * 下载案例文件 + * @param + * @return + */ + @PostMapping("/downCaseFile") + @PreAuthorize("@ss.hasPermi('custom:customerCase:list')") + public void downCaseFile(@RequestBody FileRequest fileRequest, HttpServletRequest request, HttpServletResponse response) { + /*try{ + InputStream fileStream = AliyunOSSUtils.downloadFile(fileRequest.getFileUrl()); + byte[] body = new byte[fileStream.available()]; + fileStream.read(body); + HttpHeaders headers = new HttpHeaders(); + headers.add("Content-Disposition", "attchement;filename=" + fileRequest.getFileName()); + HttpStatus statusCode = HttpStatus.OK; + ResponseEntity entity = new ResponseEntity(body, headers, statusCode); + return entity; + }catch (Exception e) { + e.printStackTrace(); + } + return null;*/ + try { + response.setCharacterEncoding("utf-8"); + response.setContentType("multipart/form-data"); + response.setHeader("Content-Disposition", + "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, fileRequest.getFileName())); + FileUtils.writeBytes(AliyunOSSUtils.downloadFile(fileRequest.getFileUrl()), response.getOutputStream()); + }catch (Exception e){ + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCustomerController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCustomerController.java index e97616b3e..7accfb8b6 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCustomerController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCustomerController.java @@ -9,19 +9,15 @@ import com.stdiet.common.utils.StringUtils; import com.stdiet.common.utils.poi.ExcelUtil; import com.stdiet.common.utils.sign.AesUtils; import com.stdiet.custom.domain.SysCustomer; -import com.stdiet.custom.domain.SysCustomerHealthy; import com.stdiet.custom.domain.SysCustomerPhysicalSigns; import com.stdiet.custom.service.ISysCustomerHealthyService; import com.stdiet.custom.service.ISysCustomerPhysicalSignsService; import com.stdiet.custom.service.ISysCustomerService; -import com.stdiet.framework.web.domain.server.Sys; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * 客户体征信息Controller @@ -53,7 +49,7 @@ public class SysCustomerController extends BaseController { for (SysCustomer sysCus : list) { if (StringUtils.isNotEmpty(sysCus.getPhone())) { sysCus.setPhone(StringUtils.hiddenPhoneNumber(sysCus.getPhone())); - sysCus.setEncId(sysCus.getId() != null ? AesUtils.encrypt(sysCus.getId()+"", null) : ""); + sysCus.setEncId(sysCus.getId() != null ? AesUtils.encrypt(sysCus.getId() + "", null) : ""); } } } @@ -88,7 +84,7 @@ public class SysCustomerController extends BaseController { @Log(title = "客户档案", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody SysCustomer sysCustomer) throws Exception { - if(!sysCustomerService.isCustomerExistByPhone(sysCustomer)){ + if (!sysCustomerService.isCustomerExistByPhone(sysCustomer)) { return toAjax(sysCustomerService.insertSysCustomer(sysCustomer)); } return AjaxResult.error("该手机号客户已存在"); @@ -101,7 +97,7 @@ public class SysCustomerController extends BaseController { @Log(title = "客户档案", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody SysCustomer sysCustomer) throws Exception { - if(!sysCustomerService.isCustomerExistByPhone(sysCustomer)){ + if (!sysCustomerService.isCustomerExistByPhone(sysCustomer)) { return toAjax(sysCustomerService.updateSysCustomer(sysCustomer)); } return AjaxResult.error("该手机号客户已存在"); @@ -122,51 +118,29 @@ public class SysCustomerController extends BaseController { */ @GetMapping("/getCustomerAndSignByPhone") @PreAuthorize("@ss.hasPermi('custom:customer:query')") - public AjaxResult getCustomerAndSignByPhone(@RequestParam("phone")String phone) - { + public AjaxResult getCustomerAndSignByPhone(@RequestParam("phone") String phone) { SysCustomerPhysicalSigns sysCustomer = null; - if(StringUtils.isNotEmpty(phone)){ - sysCustomer = sysCustomerPhysicalSignsService.selectSysCustomerAndSignByPhone(phone); + if (StringUtils.isNotEmpty(phone)) { + sysCustomer = sysCustomerPhysicalSignsService.selectSysCustomerAndSignByPhone(phone); } return AjaxResult.success(sysCustomer); } /** * 根据客户ID获取体征或健康评估信息,优先健康评估信息 + * * @param id 客户ID * @return */ @GetMapping("/physicalSigns/{id}") public AjaxResult getPhysicalSignsById(@PathVariable("id") Long id) { - Map result = new HashMap<>(); - String key = "customerHealthy"; - result.put("type", 0); - //查询健康评估信息 - SysCustomerHealthy sysCustomerHealthy = sysCustomerHealthyService.selectSysCustomerHealthyByCustomerId(id); - if(sysCustomerHealthy != null){ - /* if (StringUtils.isNotEmpty(sysCustomerHealthy.getPhone())) { - sysCustomerHealthy.setPhone(StringUtils.hiddenPhoneNumber(sysCustomerHealthy.getPhone())); - }*/ - result.put(key, sysCustomerHealthy); - }else{ - //查询体征信息 - SysCustomerPhysicalSigns sysCustomerPhysicalSigns = sysCustomerPhysicalSignsService.selectSysCustomerPhysicalSignsByCusId(id); - if(sysCustomerPhysicalSigns != null){ - /* if (StringUtils.isNotEmpty(sysCustomerPhysicalSigns.getPhone())) { - sysCustomerPhysicalSigns.setPhone(StringUtils.hiddenPhoneNumber(sysCustomerPhysicalSigns.getPhone())); - }*/ - result.put("type", 1); - } - result.put(key, sysCustomerPhysicalSigns); - } - //对ID进行加密 - result.put("enc_id", id != null ? AesUtils.encrypt(id+"", null) : ""); - return AjaxResult.success(result); + return AjaxResult.success(sysCustomerService.getPhysicalSignsById(id)); } /** * 根据客户ID删除对应体征信息或健康评估信息 - * @param id 客户ID + * + * @param customerId 客户ID * @return */ @GetMapping("/delCustomerHealthy/{id}") diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCustomerHealthyController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCustomerHealthyController.java index b23ec1bab..1d9c91beb 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCustomerHealthyController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCustomerHealthyController.java @@ -3,6 +3,7 @@ package com.stdiet.custom.controller; import java.util.List; import com.stdiet.common.utils.StringUtils; +import com.stdiet.custom.dto.request.HealthyDetailRequest; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -109,4 +110,14 @@ public class SysCustomerHealthyController extends BaseController { return toAjax(sysCustomerHealthyService.deleteSysCustomerHealthyByIds(ids)); } + + /** + * 生成健康体征报告 + */ + @Log(title = "健康体征报告", businessType = BusinessType.INSERT) + @PostMapping("/generateHealthyReport") + public AjaxResult generateHealthyReport(@RequestBody HealthyDetailRequest healthyDetailRequest) + { + return sysCustomerHealthyService.generateHealthyReport(healthyDetailRequest); + } } \ No newline at end of file diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderController.java index de7b68781..8bf63065d 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderController.java @@ -1,5 +1,6 @@ package com.stdiet.web.controller.custom; +import com.alibaba.fastjson.JSONArray; import com.stdiet.common.annotation.Log; import com.stdiet.common.core.domain.AjaxResult; import com.stdiet.common.core.domain.entity.SysUser; @@ -19,6 +20,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; +import java.net.URLDecoder; import java.time.temporal.ChronoUnit; import java.util.List; @@ -47,6 +49,7 @@ public class SysOrderController extends OrderBaseController { @GetMapping("/list") public OrderTableDataInfo list(SysOrder sysOrder) { startPage(); + dealOrderType(sysOrder); List list = sysOrderService.selectSysOrderList(sysOrder); List userList = userService.selectAllUser(); BigDecimal totalAmount = sysOrderService.selectAllOrderAmount(sysOrder); @@ -68,6 +71,20 @@ public class SysOrderController extends OrderBaseController { return getOrderDataTable(list, totalAmount); } + /** + * 处理订单类型 + * @param sysOrder + */ + private void dealOrderType(SysOrder sysOrder) { + if(StringUtils.isNotEmpty(sysOrder.getOrderType())){ + try { + JSONArray array = JSONArray.parseArray(URLDecoder.decode(sysOrder.getOrderType(),"UTF-8")); + sysOrder.setSearchOrderTypeArray(array.size() > 0 ? array : null); + }catch (Exception e){ + e.printStackTrace(); + } + } + } /** * 导出销售订单列表 diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderPauseController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderPauseController.java index 5c84378a5..d8239d2f5 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderPauseController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysOrderPauseController.java @@ -27,7 +27,7 @@ import com.stdiet.common.core.page.TableDataInfo; * @date 2021-01-07 */ @RestController -@RequestMapping("/orderPause/pause") +@RequestMapping("/recipes/pause") public class SysOrderPauseController extends BaseController { @Autowired @@ -36,7 +36,7 @@ public class SysOrderPauseController extends BaseController /** * 查询订单服务暂停列表 */ - @PreAuthorize("@ss.hasPermi('orderPause:pause:query')") + @PreAuthorize("@ss.hasPermi('recipes:pause:query')") @GetMapping("/list") public TableDataInfo list(SysOrderPause sysOrderPause) { @@ -48,7 +48,7 @@ public class SysOrderPauseController extends BaseController /** * 导出订单服务暂停列表 */ - @PreAuthorize("@ss.hasPermi('orderPause:pause:export')") + @PreAuthorize("@ss.hasPermi('recipes:pause:export')") @Log(title = "订单服务暂停", businessType = BusinessType.EXPORT) @GetMapping("/export") public AjaxResult export(SysOrderPause sysOrderPause) @@ -61,7 +61,7 @@ public class SysOrderPauseController extends BaseController /** * 获取订单服务暂停详细信息 */ - @PreAuthorize("@ss.hasPermi('orderPause:pause:query')") + @PreAuthorize("@ss.hasPermi('recipes:pause:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { @@ -71,27 +71,32 @@ public class SysOrderPauseController extends BaseController /** * 新增订单服务暂停 */ - @PreAuthorize("@ss.hasPermi('orderPause:pause:add')") + @PreAuthorize("@ss.hasPermi('recipes:pause:add')") @Log(title = "订单服务暂停", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody SysOrderPause sysOrderPause) { - int count = sysOrderPauseService.getCountByOrderIdAndPauseDate(sysOrderPause); + int count = sysOrderPauseService.getCountByCusIdAndPauseDate(sysOrderPause); if(count > 0){ return AjaxResult.error("时间范围重叠,请检查时间"); } + long orderId = sysOrderPauseService.selectNearMainOrderIdByCusId(sysOrderPause.getCusId()); + if(orderId < 0) { + return AjaxResult.error("找不到对应的订单信息"); + } + sysOrderPause.setOrderId(orderId); return toAjax(sysOrderPauseService.insertSysOrderPause(sysOrderPause)); } /** * 修改订单服务暂停 */ - @PreAuthorize("@ss.hasPermi('orderPause:pause:edit')") + @PreAuthorize("@ss.hasPermi('recipes:pause:edit')") @Log(title = "订单服务暂停", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody SysOrderPause sysOrderPause) { - int count = sysOrderPauseService.getCountByOrderIdAndPauseDate(sysOrderPause); + int count = sysOrderPauseService.getCountByCusIdAndPauseDate(sysOrderPause); if(count > 0){ return AjaxResult.error("时间范围重叠,请检查时间"); } @@ -101,7 +106,7 @@ public class SysOrderPauseController extends BaseController /** * 删除订单服务暂停 */ - @PreAuthorize("@ss.hasPermi('orderPause:pause:remove')") + @PreAuthorize("@ss.hasPermi('recipes:pause:remove')") @Log(title = "订单服务暂停", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) 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 950b7c1cc..e27b04217 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 @@ -79,4 +79,5 @@ public class SysRecipesController extends BaseController { public AjaxResult delete(@PathVariable Long id) { return toAjax(sysRecipesService.deleteDishes(id)); } + } diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanController.java index b7de225f6..d3383d550 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesPlanController.java @@ -31,7 +31,7 @@ public class SysRecipesPlanController extends BaseController /** * 查询食谱计划列表 */ - @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:list')") + @PreAuthorize("@ss.hasPermi('recipes:plan:list')") @GetMapping("/list") public TableDataInfo list(SysRecipesPlan sysRecipesPlan) { @@ -48,7 +48,7 @@ public class SysRecipesPlanController extends BaseController /** * 根据订单查询完整食谱计划列表 */ - @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:list')") + @PreAuthorize("@ss.hasPermi('recipes:plan:list')") @GetMapping("/getAllPlanByOrderId") public TableDataInfo getAllPlanByOrderId(SysRecipesPlan sysRecipesPlan) { @@ -57,10 +57,16 @@ public class SysRecipesPlanController extends BaseController return getDataTable(list); } + @PreAuthorize("@ss.hasPermi('recipes:plan:list')") + @GetMapping(value = "/list/{cusId}") + public AjaxResult getAllPlanByCusId(@PathVariable Long cusId) { + return AjaxResult.success(sysRecipesPlanService.selectPlanListByCusId(cusId)); + } + /** * 获取食谱计划详细信息 */ - @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:query')") + @PreAuthorize("@ss.hasPermi('recipes:plan:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { @@ -70,7 +76,7 @@ public class SysRecipesPlanController extends BaseController /** * 修改食谱计划 */ - @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:edit')") + @PreAuthorize("@ss.hasPermi('recipes:plan:edit')") @Log(title = "食谱计划", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody SysRecipesPlan sysRecipesPlan) @@ -81,7 +87,7 @@ public class SysRecipesPlanController extends BaseController /** * 导出食谱计划列表 */ - @PreAuthorize("@ss.hasPermi('recipes:recipesPlan:export')") + @PreAuthorize("@ss.hasPermi('recipes:plan:export')") @Log(title = "食谱计划", businessType = BusinessType.EXPORT) @GetMapping("/export") public AjaxResult export(SysRecipesPlan sysRecipesPlan) diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesTemplateController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesTemplateController.java new file mode 100644 index 000000000..1185cb7bb --- /dev/null +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysRecipesTemplateController.java @@ -0,0 +1,71 @@ +package com.stdiet.web.controller.custom; + +import com.stdiet.common.core.controller.BaseController; +import com.stdiet.common.core.domain.AjaxResult; +import com.stdiet.common.core.page.TableDataInfo; +import com.stdiet.custom.domain.SysRecipesTemplate; +import com.stdiet.custom.service.ISysRecipesTemplateService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 食谱模板 + * + * @author wonder + * @date 2021-02-27 + */ +@RestController +@RequestMapping("/recipes/template") +public class SysRecipesTemplateController extends BaseController { + @Autowired + private ISysRecipesTemplateService iSysRecipesTemplateService; + + /** + * 查询 + */ + @PreAuthorize("@ss.hasPermi('recipes:template:list')") + @GetMapping("/list") + public TableDataInfo list(SysRecipesTemplate sysRecipesTemplate) { + startPage(); + List list = iSysRecipesTemplateService.selectRecipesTemplateListByCondition(sysRecipesTemplate); + return getDataTable(list); + } + + @PreAuthorize("@ss.hasPermi('recipes:template:list')") + @GetMapping(value = "/{id}") + public AjaxResult detail(@PathVariable Long id) { + return AjaxResult.success(iSysRecipesTemplateService.getRecipesTemplateById(id)); + } + + /** + * 添加 + */ + @PreAuthorize("@ss.hasPermi('recipes:template:edit')") + @PostMapping("/add") + public AjaxResult add(@RequestBody SysRecipesTemplate sysRecipesTemplate) { + return toAjax(iSysRecipesTemplateService.insertRecipsesTemplate(sysRecipesTemplate)); + } + + /** + * 更新 + */ + @PreAuthorize("@ss.hasPermi('recipes:template:list')") + @PutMapping(value = "/update") + public AjaxResult update(@RequestBody SysRecipesTemplate sysRecipesTemplate) { + return toAjax(iSysRecipesTemplateService.updateRecipesTemplate(sysRecipesTemplate)); + } + + /** + * 删除 + */ + @PreAuthorize("@ss.hasPermi('recipes:template:query')") + @DeleteMapping(value = "/delete/{id}") + public AjaxResult delete(@PathVariable("id") Long id) { + return AjaxResult.success(iSysRecipesTemplateService.removeRecipesTemplate(id)); + } + + +} \ No newline at end of file diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWapController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWapController.java new file mode 100644 index 000000000..bb4236852 --- /dev/null +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWapController.java @@ -0,0 +1,66 @@ +package com.stdiet.web.controller.custom; + +import com.stdiet.common.core.controller.BaseController; +import com.stdiet.common.core.domain.AjaxResult; +import com.stdiet.custom.service.ISysRecipesService; +import com.stdiet.custom.service.ISysWapServices; +import com.stdiet.system.service.ISysDictTypeService; +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; + +@RestController +@RequestMapping("/wap") +public class SysWapController extends BaseController { + @Autowired + ISysWapServices iSysWapServices; + + @Autowired + ISysRecipesService iSysRecipesService; + + @Autowired + ISysDictTypeService iSysDictTypeService; + + /** + * 客户食谱详情 + * + * @param outId + * @return + */ + @GetMapping(value = "/recipes/plans/{outId}") + public AjaxResult detail(@PathVariable String outId) { + return AjaxResult.success(iSysWapServices.getRecipesPlanListInfo(outId)); + } + + /** + * 获取用户信息 + * @param outId + * @return + */ + @GetMapping(value = "/healthyInfo/{outId}") + public AjaxResult healthy(@PathVariable String outId) { + return AjaxResult.success(iSysWapServices.getHealthyDataByOutId(outId)); + } + + /** + * 获取某天食谱菜品 + * @param id + * @return + */ + @GetMapping(value = "/recipes/menu/{id}") + public AjaxResult dayilyMenu(@PathVariable Long id) { + return AjaxResult.success(iSysRecipesService.selectDishesByMenuId(id)); + } + + /** + * 系统字典 + * @param dictType + * @return + */ + @GetMapping(value = "/dict/{dictType}") + public AjaxResult sysDict(@PathVariable String dictType) { + return AjaxResult.success(iSysDictTypeService.selectDictDataByType(dictType)); + } +} diff --git a/stdiet-common/src/main/java/com/stdiet/common/config/AliyunOSSConfig.java b/stdiet-common/src/main/java/com/stdiet/common/config/AliyunOSSConfig.java new file mode 100644 index 000000000..3dbee23e6 --- /dev/null +++ b/stdiet-common/src/main/java/com/stdiet/common/config/AliyunOSSConfig.java @@ -0,0 +1,43 @@ +package com.stdiet.common.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +@Component +public class AliyunOSSConfig { + + public static String AccessKeyID; + + public static String AccessKeySecret; + + public static String Buckets; + + public static String EndPoint; + + public static String casePrefix; + + @Value("${aliyun.oss.AccessKeyID}") + public void setAccessKeyID(String AccessKeyID){ + AliyunOSSConfig.AccessKeyID = AccessKeyID; + } + + @Value("${aliyun.oss.AccessKeySecret}") + public void setAccessKeySecret(String AccessKeySecret){ + AliyunOSSConfig.AccessKeySecret = AccessKeySecret; + } + + @Value("${aliyun.oss.Buckets}") + public void setBuckets(String Buckets){ + AliyunOSSConfig.Buckets = Buckets; + } + + @Value("${aliyun.oss.EndPoint}") + public void setEndPoint(String EndPoint){ + AliyunOSSConfig.EndPoint = EndPoint; + } + + @Value("${aliyun.oss.casePrefix}") + public void setCasePrefix(String casePrefix){ + AliyunOSSConfig.casePrefix = casePrefix; + } +} diff --git a/stdiet-common/src/main/java/com/stdiet/common/core/domain/entity/SysDictData.java b/stdiet-common/src/main/java/com/stdiet/common/core/domain/entity/SysDictData.java index 891da5078..87fdda38f 100644 --- a/stdiet-common/src/main/java/com/stdiet/common/core/domain/entity/SysDictData.java +++ b/stdiet-common/src/main/java/com/stdiet/common/core/domain/entity/SysDictData.java @@ -9,6 +9,8 @@ import com.stdiet.common.annotation.Excel.ColumnType; import com.stdiet.common.constant.UserConstants; import com.stdiet.common.core.domain.BaseEntity; +import java.util.List; + /** * 字典数据表 sys_dict_data * @@ -34,8 +36,10 @@ public class SysDictData extends BaseEntity @Excel(name = "字典键值") private String dictValue; - /** 字典类型 */ - @Excel(name = "字典类型") + private List dictValueList; + + /** 字典类型 */ + @Excel(name = "字典类型") private String dictType; /** 样式属性(其他样式扩展) */ @@ -153,7 +157,15 @@ public class SysDictData extends BaseEntity { this.status = status; } - + + public List getDictValueList() { + return dictValueList; + } + + public void setDictValueList(List dictValueList) { + this.dictValueList = dictValueList; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/stdiet-common/src/main/java/com/stdiet/common/utils/DateUtils.java b/stdiet-common/src/main/java/com/stdiet/common/utils/DateUtils.java index b85390db6..642eaff7a 100644 --- a/stdiet-common/src/main/java/com/stdiet/common/utils/DateUtils.java +++ b/stdiet-common/src/main/java/com/stdiet/common/utils/DateUtils.java @@ -7,6 +7,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; import java.util.Date; import org.apache.commons.lang3.time.DateFormatUtils; @@ -186,4 +187,14 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault()); return Date.from(zonedDateTime.toInstant()); } + + public static String localDateToString(LocalDate date, String pattern){ + DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern); + return date.format(fmt); + } + + public static LocalDate stringToLocalDate(String date, String pattern){ + DateTimeFormatter fmt = DateTimeFormatter.ofPattern(pattern); + return LocalDate.parse(date, fmt); + } } diff --git a/stdiet-common/src/main/java/com/stdiet/common/utils/HealthyUtils.java b/stdiet-common/src/main/java/com/stdiet/common/utils/HealthyUtils.java index 9f19c3fbe..3f18008a0 100644 --- a/stdiet-common/src/main/java/com/stdiet/common/utils/HealthyUtils.java +++ b/stdiet-common/src/main/java/com/stdiet/common/utils/HealthyUtils.java @@ -16,6 +16,9 @@ public class HealthyUtils { //营养成分比例 public static final Integer[] nutritionRate = {30, 20, 50}; + //默认活动因子 + public static final double activityFactor = 0.3; + /** * 计算减脂每天最大摄入量(千卡) * @param age 年龄 @@ -148,7 +151,7 @@ public class HealthyUtils { * @param weight 体重 * @return */ - public static final Double[] calculateNutritionEveryWeight(Integer[] nutritionQuality, double weight){ + public static Double[] calculateNutritionEveryWeight(Integer[] nutritionQuality, double weight){ Double[] nutritionEveryWeight = new Double[3]; nutritionEveryWeight[0] = NumberUtils.getNumberByRoundHalfUp(nutritionQuality[0]/weight*2,2).doubleValue(); nutritionEveryWeight[1] = NumberUtils.getNumberByRoundHalfUp(nutritionQuality[1]/weight*2,2).doubleValue(); @@ -156,5 +159,19 @@ public class HealthyUtils { return nutritionEveryWeight; } + /** + * 计算不运动热量、运动热量 + * @param metabolizeHeat + * @return + */ + public static Long[] calculateWithoutExerciseHeat(Integer metabolizeHeat){ + Long[] array = new Long[2]; + //不运动热量 + array[0] = Math.round(metabolizeHeat * (1 + activityFactor)); + //运动热量 + array[1] = Math.round(metabolizeHeat * (1 + 0.8)); + return array; + } + } diff --git a/stdiet-common/src/main/java/com/stdiet/common/utils/file/FileUtils.java b/stdiet-common/src/main/java/com/stdiet/common/utils/file/FileUtils.java index 3fb3479f8..c9a14466c 100644 --- a/stdiet-common/src/main/java/com/stdiet/common/utils/file/FileUtils.java +++ b/stdiet-common/src/main/java/com/stdiet/common/utils/file/FileUtils.java @@ -1,11 +1,6 @@ package com.stdiet.common.utils.file; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.OutputStream; -import java.io.UnsupportedEncodingException; +import java.io.*; import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; @@ -74,6 +69,55 @@ public class FileUtils extends org.apache.commons.io.FileUtils } } + /** + * 输出指定文件的byte数组 + * + * @param inputStream 输入流 + * @param os 输出流 + * @return + */ + public static void writeBytes(InputStream inputStream, OutputStream os) throws IOException + { + try + { + byte[] b = new byte[1024]; + int length; + while ((length = inputStream.read(b)) > 0) + { + os.write(b, 0, length); + } + } + catch (IOException e) + { + throw e; + } + finally + { + if (os != null) + { + try + { + os.close(); + } + catch (IOException e1) + { + e1.printStackTrace(); + } + } + if (inputStream != null) + { + try + { + inputStream.close(); + } + catch (IOException e1) + { + e1.printStackTrace(); + } + } + } + } + /** * 删除文件 * diff --git a/stdiet-common/src/main/java/com/stdiet/common/utils/oss/AliyunOSSUtils.java b/stdiet-common/src/main/java/com/stdiet/common/utils/oss/AliyunOSSUtils.java new file mode 100644 index 000000000..583042321 --- /dev/null +++ b/stdiet-common/src/main/java/com/stdiet/common/utils/oss/AliyunOSSUtils.java @@ -0,0 +1,283 @@ +package com.stdiet.common.utils.oss; + +import com.aliyun.oss.model.GetObjectRequest; +import com.aliyun.oss.model.OSSObject; +import com.stdiet.common.config.AliyunOSSConfig; +import org.springframework.web.multipart.MultipartFile; + +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.UUID; + +public class AliyunOSSUtils { ; + + public static OSS getOssClient() { + return new OSSClientBuilder().build(AliyunOSSConfig.EndPoint, AliyunOSSConfig.AccessKeyID, AliyunOSSConfig.AccessKeySecret); + } + + /** + * 获取图片的URL头信息 + * + * @return 返回url头信息 + */ + private static String getURLHead() { + //从哪个位置截取 + int cutPoint = AliyunOSSConfig.EndPoint.lastIndexOf('/') + 1; + //http头 + String head = AliyunOSSConfig.EndPoint.substring(0, cutPoint); + //服务器地址信息 + String tail = AliyunOSSConfig.EndPoint.substring(cutPoint); + //返回结果 + return head + AliyunOSSConfig.Buckets + "." + tail + "/"; + } + + /** + * 获取存储在服务器上的地址 + * + * @param oranName 文件名 + * @return 文件URL + */ + private static String getRealName(String oranName) { + return getURLHead() + oranName; + } + + /** + * 获取一个随机的文件名 + * + * @param oranName 初始的文件名 + * @return 返回加uuid后的文件名 + */ + private static String getRandomImageName(String prefix, String oranName) { + //获取一个uuid 去掉- + String uuid = UUID.randomUUID().toString().replace("-", ""); + //查一下是否带路径 + int cutPoint = oranName.lastIndexOf("/") + 1; + //如果存在路径 + if (cutPoint != 0) { + //掐头 如果开头是/ 则去掉 + String head = oranName.indexOf("/") == 0 ? oranName.substring(1, cutPoint) : oranName.substring(0, cutPoint); + //去尾 + String tail = oranName.substring(cutPoint); + //返回正确的带路径的图片名称 + return prefix + head + uuid + tail; + } + //不存在 直接返回 + return prefix + uuid + oranName; + } + + /** + * MultipartFile2File + * @param multipartFile + * @return + */ + private static File transferToFile(MultipartFile multipartFile) { + //选择用缓冲区来实现这个转换即使用java 创建的临时文件 使用 MultipartFile.transferto()方法 。 + File file = null; + try { + //获取文件名 + String originalFilename = multipartFile.getOriginalFilename(); + //获取最后一个"."的位置 + int cutPoint = originalFilename.lastIndexOf("."); + //获取文件名 + String prefix = originalFilename.substring(0,cutPoint); + //获取后缀名 + String suffix = originalFilename.substring(cutPoint + 1); + //创建临时文件 + file = File.createTempFile(prefix, suffix); + //multipartFile2file + multipartFile.transferTo(file); + //删除临时文件 + file.deleteOnExit(); + } catch (IOException e) { + e.printStackTrace(); + } + return file; + } + + /** + * 通过文件URL反向解析文件名 + * + * @param fileURL 文件URL + * @return 原文件名 + */ + private static String getObjectName(String fileURL) { + return fileURL.substring(getURLHead().length()); + } + + /** + * 上传文件流 + * @param prefix 路径的前缀路径目录 + * @param oranFileName 上传到服务器上的文件路径和名称 + * @param file 来自本地的文件或者文件流 + */ + public static String uploadFileInputSteam(String prefix, String oranFileName, MultipartFile file) { + + // 上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg + String objectName = getRandomImageName(prefix, oranFileName); + + // 创建OSSClient实例。 + OSS ossClient = getOssClient(); + + // 上传文件流 + try (InputStream inputStream = new FileInputStream(transferToFile(file))) { + //上传到OSS + ossClient.putObject(AliyunOSSConfig.Buckets, objectName, inputStream); + } catch (Exception ex) { + ex.printStackTrace(); + } + + // 关闭OSSClient。 + ossClient.shutdown(); + + //返回文件在服务器上的全路径+名称 + return getRealName(objectName); + } + + + /** + * 上传文件流 + * @param prefix 路径的前缀路径目录 + * @param oranFileName 上传到服务器上的文件路径和名称 + * @param file 来自本地的文件或者文件流 + */ + public static String uploadFileInputSteam(String prefix, String oranFileName, File file) { + + // 上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg + String objectName = getRandomImageName(prefix, oranFileName); + + // 创建OSSClient实例。 + OSS ossClient = getOssClient(); + + // 上传文件流。 + try (InputStream inputStream = new FileInputStream(file);) { + //上传到OSS + ossClient.putObject(AliyunOSSConfig.Buckets, objectName, inputStream); + } catch (Exception ex) { + ex.printStackTrace(); + } + + // 关闭OSSClient。 + ossClient.shutdown(); + + //返回文件在服务器上的全路径+名称 + return getRealName(objectName); + } + + /** + * 从OSS中下载一个文件 + * + * @param fileURL 文件的url + * @param localFileName 下载到本地的文件名称 + */ + public static void downloadFileToLoacal(String fileURL, String localFileName) { + + //将url解析成objectName + String objectName = getObjectName(fileURL); + + // 创建OSSClient实例。 + OSS ossClient = getOssClient(); + + // 下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。 + ossClient.getObject(new GetObjectRequest(AliyunOSSConfig.Buckets, objectName), new File(localFileName)); + + // 关闭OSSClient。 + ossClient.shutdown(); + + } + + /** + * 从OSS中下载一个文件流 + * + * @param fileURL 文件的url + */ + public static InputStream downloadFile(String fileURL) throws IOException { + + //将url解析成objectName + String objectName = getObjectName(fileURL); + + // 创建OSSClient实例。 + OSS ossClient = getOssClient(); + + OSSObject ossObject = ossClient.getObject(AliyunOSSConfig.Buckets, objectName); + + //获取流 + InputStream streamData = ossObject.getObjectContent(); + + // 关闭OSSClient。 + ossClient.shutdown(); + + return streamData; + } + + /** + * 删除指定路径下的一个文件 + * + * @param fileURL 文件的全称 + */ + public static void deleteFile(String fileURL) { + + // 反向解析文件名 + String objectName = getObjectName(fileURL); + + // 创建OSSClient实例。 + OSS ossClient = getOssClient(); + + // 删除文件。如需删除文件夹,请将ObjectName设置为对应的文件夹名称。如果文件夹非空,则需要将文件夹下的所有object删除后才能删除该文件夹。 + ossClient.deleteObject(AliyunOSSConfig.Buckets, objectName); + + //删除成功 打印文件存储地址 + printDeleteSuccessInfo(fileURL); + + // 关闭OSSClient。 + ossClient.shutdown(); + } + + /** + * 打印文件的存储地址 + * + * @param fileURL 文件URL + */ + private static void printUploadSuccessInfo(String fileURL) { + //上传成功 + System.out.println("upload success, path = " + getRealName(fileURL)); + } + + /** + * 打印文件的存储地址 + * + * @param fileURL 文件URL + */ + private static void printDeleteSuccessInfo(String fileURL) { + //上传成功 + System.out.println("delete success, path = " + getRealName(fileURL)); + } + + /** + * 通过文件的URL 判断文件是否存在 + * + * @param fileURL 文件的URL + * @return 文件是否存在 + */ + public static boolean exists(String fileURL) { + + // 反向解析文件名 + String objectName = getObjectName(fileURL); + + // 创建OSSClient实例。 + OSS ossClient = getOssClient(); + + // 判断文件是否存在。doesObjectExist还有一个参数isOnlyInOSS,如果为true则忽略302重定向或镜像;如果为false,则考虑302重定向或镜像。 + boolean found = ossClient.doesObjectExist(AliyunOSSConfig.Buckets, objectName); + + // 关闭OSSClient。 + ossClient.shutdown(); + + // 返回是否存在 + return found; + } + +} diff --git a/stdiet-common/src/main/java/com/stdiet/common/utils/reflect/ReflectUtils.java b/stdiet-common/src/main/java/com/stdiet/common/utils/reflect/ReflectUtils.java index 57559f1c1..b8cd10e16 100644 --- a/stdiet-common/src/main/java/com/stdiet/common/utils/reflect/ReflectUtils.java +++ b/stdiet-common/src/main/java/com/stdiet/common/utils/reflect/ReflectUtils.java @@ -403,4 +403,22 @@ public class ReflectUtils } return new RuntimeException(msg, e); } + + /** + * 根据属性名获取属性值 + * + * @param fieldName + * @param object + * @return + */ + public static String getFieldValueByFieldName(String fieldName, Object object) { + try { + Field field = object.getClass().getDeclaredField(fieldName); + //设置对象的访问权限,保证对private的属性的访问 + field.setAccessible(true); + return field.get(object) == null ? "" : field.get(object).toString(); + } catch (Exception e) { + return ""; + } + } } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCommision.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCommision.java index 3fa6a8c45..a1fe6f18a 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCommision.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCommision.java @@ -1,5 +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 com.stdiet.common.annotation.Excel; @@ -13,6 +14,7 @@ import java.math.BigDecimal; * @author wonder * @date 2020-09-24 */ +@Data public class SysCommision extends BaseEntity { private static final long serialVersionUID = 1L; @@ -58,86 +60,6 @@ public class SysCommision extends BaseEntity { @Excel(name = "提成", scale = 2) private BigDecimal commision; - public BigDecimal getCommision() { - return commision; - } - - public void setCommision(BigDecimal commision) { - this.commision = commision; - } - - public Long getPostId() { - return postId; - } - - public void setPostId(Long postId) { - this.postId = postId; - } - - public void setPostName(String postName) { - this.postName = postName; - } - - public String getPostName() { - return postName; - } - - public void setRuleId(Long ruleId) { - this.ruleId = ruleId; - } - - public Long getRuleId() { - return ruleId; - } - - public void setUserId(Long userId) { - this.userId = userId; - } - - public Long getUserId() { - return userId; - } - - public void setUserName(String userName) { - this.userName = userName; - } - - public String getUserName() { - return userName; - } - - public void setAmount(BigDecimal amount) { - this.amount = amount; - } - - public BigDecimal getAmount() { - return amount; - } - - public void setRate(Float rate) { - this.rate = rate; - } - - public Float getRate() { - return rate; - } - - @Override - public String toString() { - return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) - .append("ruleId", getRuleId()) - .append("userId", getUserId()) - .append("userName", getUserName()) - .append("postId", getPostId()) - .append("postName", getPostName()) - .append("amount", getAmount()) - .append("commision", getCommision()) - .append("rate", getRate()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .append("remark", getRemark()) - .toString(); - } + //订单审核状态 + private String reviewStatus; } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerCase.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerCase.java new file mode 100644 index 000000000..8fd166cc9 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerCase.java @@ -0,0 +1,43 @@ +package com.stdiet.custom.domain; + +import com.stdiet.common.annotation.Excel; +import com.stdiet.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * 客户案例管理对象 sys_customer_case + * + * @author xiezhijun + * @date 2021-03-04 + */ +@Data +public class SysCustomerCase extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** $column.columnComment */ + private Long id; + + /** 案例名称 */ + @Excel(name = "案例名称") + private String name; + + /** 案例关键词 */ + @Excel(name = "关键词") + private String keyword; + + /** 案例所属客户ID */ + private Long customerId; + + @Excel(name = "所属客户") + private String customerName; + + /** 删除标识 0未删除 1已删除,默认0 */ + private Long delFlag; + + //案例文件名称数组 + private String[] caseFileName; + + //案例文件URL数组 + private String[] caseFileUrl; +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerCaseFile.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerCaseFile.java new file mode 100644 index 000000000..d8d1e62b8 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerCaseFile.java @@ -0,0 +1,35 @@ +package com.stdiet.custom.domain; + +import com.stdiet.common.annotation.Excel; +import com.stdiet.common.core.domain.BaseEntity; +import lombok.Data; + +/** + * 客户案例对应文件管理对象 sys_customer_case_file + * + * @author xiezhijun + * @date 2021-03-04 + */ +@Data +public class SysCustomerCaseFile extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** $column.columnComment */ + private Long id; + + /** 案例文件 */ + @Excel(name = "案例文件") + private Long caseId; + + /** 文件路径 */ + @Excel(name = "文件路径") + private String fileUrl; + + /** 文件名字 */ + @Excel(name = "文件名字") + private String fileName; + + /** 删除标识 0未删除 1已删除 */ + private Long delFlag; +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerHealthy.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerHealthy.java index 21052d9f8..1b2bb182e 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerHealthy.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerHealthy.java @@ -433,6 +433,9 @@ public class SysCustomerHealthy extends BaseEntity //备注 private String remark; + /** 减脂指导 */ + private String guidance; + /** 湿气数据 */ @Excel(name = "湿气数据") private String moistureDate; diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrder.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrder.java index 797c799d0..07534dbd4 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrder.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrder.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import java.util.Date; import java.util.List; +import com.alibaba.fastjson.JSONArray; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import com.stdiet.common.annotation.Excel; @@ -269,6 +270,9 @@ public class SysOrder extends BaseEntity { //拆分比例,如:1,9就是按照比例10%、90%拆分,非持久化字段 private String nutritionistRate; + //订单查询时的订单类型二维数组 + private JSONArray searchOrderTypeArray; + } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrderPause.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrderPause.java index 18462e2ec..ff5b2d792 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrderPause.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrderPause.java @@ -1,11 +1,12 @@ package com.stdiet.custom.domain; -import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; +import com.stdiet.common.annotation.Excel; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; -import com.stdiet.common.annotation.Excel; -import com.stdiet.common.core.domain.BaseEntity; + +import java.util.Date; /** * 订单服务暂停对象 sys_order_pause @@ -13,115 +14,59 @@ import com.stdiet.common.core.domain.BaseEntity; * @author xzj * @date 2021-01-07 */ -public class SysOrderPause extends BaseEntity -{ - private static final long serialVersionUID = 1L; +@Data +public class SysOrderPause { - /** $column.columnComment */ + /** + * $column.columnComment + */ private Long id; - /** 订单id */ + /** + * 订单id + */ private Long orderId; - /** 服务暂停开始时间 */ + private Long cusId; + + /** + * 服务暂停开始时间 + */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "服务暂停开始时间", width = 30, dateFormat = "yyyy-MM-dd") private Date pauseStartDate; - /** 服务暂停结束时间 */ + /** + * 服务暂停结束时间 + */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "服务暂停结束时间", width = 30, dateFormat = "yyyy-MM-dd") private Date pauseEndDate; - /** 服务暂停理由 */ + /** + * 服务暂停理由 + */ @Excel(name = "服务暂停理由") private String reason; - /** 备注 */ + /** + * 备注 + */ @Excel(name = "备注") private String remarks; - /** 删除标识 0未删除 1已删除,默认0 */ + /** + * 删除标识 0未删除 1已删除,默认0 + */ private Integer delFlag; - public void setId(Long id) - { - this.id = id; - } + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; - public Long getId() - { - return id; - } - public void setOrderId(Long orderId) - { - this.orderId = orderId; - } + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; - public Long getOrderId() - { - return orderId; - } - public void setPauseStartDate(Date pauseStartDate) - { - this.pauseStartDate = pauseStartDate; - } + private String createBy; - public Date getPauseStartDate() - { - return pauseStartDate; - } - public void setPauseEndDate(Date pauseEndDate) - { - this.pauseEndDate = pauseEndDate; - } - - public Date getPauseEndDate() - { - return pauseEndDate; - } - public void setReason(String reason) - { - this.reason = reason; - } - - public String getReason() - { - return reason; - } - public void setRemarks(String remarks) - { - this.remarks = remarks; - } - - public String getRemarks() - { - return remarks; - } - public void setDelFlag(Integer delFlag) - { - this.delFlag = delFlag; - } - - public Integer getDelFlag() - { - return delFlag; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("orderId", getOrderId()) - .append("pauseStartDate", getPauseStartDate()) - .append("pauseEndDate", getPauseEndDate()) - .append("reason", getReason()) - .append("remarks", getRemarks()) - .append("createTime", getCreateTime()) - .append("createBy", getCreateBy()) - .append("updateTime", getUpdateTime()) - .append("updateBy", getUpdateBy()) - .append("delFlag", getDelFlag()) - .toString(); - } + private String updateBy; } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDetail.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDetail.java new file mode 100644 index 000000000..b640c807a --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesDetail.java @@ -0,0 +1,12 @@ +package com.stdiet.custom.domain; + +import lombok.Data; + +import java.util.List; + +@Data +public class SysRecipesDetail { + + private List plans; + +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java index 4892c8d31..8e5c4bfc5 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlan.java @@ -1,12 +1,10 @@ package com.stdiet.custom.domain; -import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; import com.stdiet.common.annotation.Excel; -import com.stdiet.common.core.domain.BaseEntity; +import lombok.Data; + +import java.util.Date; /** * 食谱计划对象 sys_recipes_plan @@ -15,19 +13,26 @@ import com.stdiet.common.core.domain.BaseEntity; * @date 2021-01-15 */ @Data -public class SysRecipesPlan extends BaseEntity -{ - private static final long serialVersionUID = 1L; +public class SysRecipesPlan { - /** $column.columnComment */ + /** + * $column.columnComment + */ private Long id; - /** 订单ID */ + /** + * 订单ID + */ //@Excel(name = "订单ID") private Long orderId; private Long cusId; + /** + * 对外的用户id + */ + private String outId; + //客户ID // private Long customerId; @@ -46,12 +51,16 @@ public class SysRecipesPlan extends BaseEntity //处理过的客户手机号 private String hidePhone; - /** 食谱开始日期 */ + /** + * 食谱开始日期 + */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "食谱开始日期", width = 30, dateFormat = "yyyy-MM-dd") private Date startDate; - /** 食谱结束日期 */ + /** + * 食谱结束日期 + */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "食谱结束日期", width = 30, dateFormat = "yyyy-MM-dd") private Date endDate; @@ -78,19 +87,61 @@ public class SysRecipesPlan extends BaseEntity @Excel(name = "营养师助理") private String nutritionistAssis; - /** 食谱ID */ + /** + * 食谱ID + */ //@Excel(name = "食谱ID") private Long recipesId; - /** 食谱是否发送,0未发送 1已发送 */ - @Excel(name = "食谱是否发送", readConverterExp="0=未发送,1=已发送") + /** + * 食谱是否发送,0未发送 1已发送 + */ + @Excel(name = "食谱是否发送", readConverterExp = "0=未发送,1=已发送") private Integer sendFlag; - /** 食谱发送时间 */ + /** + * 食谱发送时间 + */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "食谱发送时间", width = 30, dateFormat = "yyyy-MM-dd") private Date sendTime; - /** 删除标识 0未删除 1已删除 默认0 */ + /** + * 删除标识 0未删除 1已删除 默认0 + */ private Integer delFlag; + + /** + * 审核标识 0未审核 1已审核 默认0 + */ + private Integer reviewStatus; + + /** 该食谱计划中暂停日期,使用 | 隔开 */ + //@Excel(name = "该食谱计划中暂停日期,使用 | 隔开") + private String pauseDate; + + /** + * 创建者 + */ + 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; + + // 0-普通 1-模板 + private Integer type; } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlanListInfo.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlanListInfo.java new file mode 100644 index 000000000..f82fd751b --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesPlanListInfo.java @@ -0,0 +1,26 @@ +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 SysRecipesPlanListInfo { + + private Long id; + + @JsonFormat(pattern = "yyyy-MM-dd") + private Date startDate; + + @JsonFormat(pattern = "yyyy-MM-dd") + private Date endDate; + + private Integer startNumDay; + + private Integer endNumDay; + + private List menus; + +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesTemplate.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesTemplate.java new file mode 100644 index 000000000..f09334a9a --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysRecipesTemplate.java @@ -0,0 +1,39 @@ +package com.stdiet.custom.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +@Data +public class SysRecipesTemplate { + Long id; + + String name; + + Long nutritionistId; + + String nutritionist; + + Long nutriAssisId; + + String nutriAssis; + + Long planId; + + String remark; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + Date updateTime; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + Date createTime; + + String updateBy; + + String createBy; + + Long recipesId; + + Integer reviewStatus; +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/FileRequest.java b/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/FileRequest.java new file mode 100644 index 000000000..a04825f30 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/FileRequest.java @@ -0,0 +1,11 @@ +package com.stdiet.custom.dto.request; + +import lombok.Data; + +@Data +public class FileRequest { + + private String fileUrl; + + private String fileName; +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/HealthyDetailRequest.java b/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/HealthyDetailRequest.java new file mode 100644 index 000000000..afab4aba9 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/HealthyDetailRequest.java @@ -0,0 +1,396 @@ +package com.stdiet.custom.dto.request; + +import com.stdiet.common.annotation.Excel; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class HealthyDetailRequest implements Serializable { + + private static final long serialVersionUID = 1L; + + /** $column.columnComment */ + private Long id; + + /** 客户ID */ + private Long customerId; + + /** 加密的客户ID,非持久化字段 **/ + private String customerEncId; + + /** 客户姓名,非持久化字段 */ + @Excel(name = "客户姓名") + private String name; + + /** 客户手机号,非持久化字段 */ + @Excel(name = "客户手机号") + private String phone; + + /** 调理项目id */ + //@Excel(name = "调理项目id") + private String conditioningProjectId; + + /** 调理项目名称 ,非持久化字段*/ + @Excel(name = "调理项目") + private String conditioningProject; + + /** 0男 1女 2未知,默认2 */ + @Excel(name = "0男 1女 2未知,默认2") + private String sex; + + /** 年龄 */ + @Excel(name = "年龄") + private String age; + + /** 身高 */ + @Excel(name = "身高") + private String tall; + + /** 体重 */ + @Excel(name = "体重") + private String weight; + + /** 调味品种类,使用 , 隔开 */ + @Excel(name = "调味品种类,使用 , 隔开") + private String condiment; + + /** 其他调味品种类 */ + @Excel(name = "其他调味品种类") + private String otherCondiment; + + /** 喜好的烹调方式,使用 , 隔开 */ + @Excel(name = "喜好的烹调方式,使用 , 隔开") + private String cookingStyle; + + /** 烹调方式对应频次,每周几次,使用 , 隔开 */ + @Excel(name = "烹调方式对应频次,每周几次,使用 , 隔开") + private String cookingStyleRate; + + /** 洗菜方式,使用 , 隔开 */ + @Excel(name = "洗菜方式,使用 , 隔开") + private String washVegetablesStyle; + + /** 其他洗菜方式 */ + @Excel(name = "其他洗菜方式") + private String otherWashVegetablesStyle; + + /** 早餐习惯 */ + @Excel(name = "早餐习惯") + private String breakfastType; + + /** 早餐吃的食物 */ + @Excel(name = "早餐吃的食物") + private String breakfastFood; + + /** 午餐习惯,使用 , 隔开 */ + @Excel(name = "午餐习惯,使用 , 隔开") + private String lunchType; + + /** 晚餐习惯,使用 , 隔开 */ + @Excel(name = "晚餐习惯,使用 , 隔开") + private String dinner; + + /** 早餐当中素菜占比 */ + @Excel(name = "早餐当中素菜占比") + private String vegetableRate; + + /** 最常吃的肉类 */ + @Excel(name = "最常吃的肉类") + private String commonMeat; + + /** 晚餐时间(24小时制) */ + @Excel(name = "晚餐时间", readConverterExp = "2=4小时制") + private String dinnerTime; + + /** 每周吃夜宵次数,默认0 */ + @Excel(name = "每周吃夜宵次数,默认0") + private String supperNum; + + /** 夜宵通常吃的食物 */ + @Excel(name = "夜宵通常吃的食物") + private String supperFood; + + /** 食物的冷热偏好 */ + @Excel(name = "食物的冷热偏好") + private String dietHotAndCold; + + /** 食物的口味偏好,使用 , 隔开 */ + @Excel(name = "食物的口味偏好,使用 , 隔开") + private String dietFlavor; + + /** 平均每周吃生菜几次 */ + @Excel(name = "平均每周吃生菜几次") + private String vegetablesNum; + + /** 每周吃生菜的频次类型 */ + @Excel(name = "每周吃生菜的频次类型") + private String vegetablesRateType; + + /** 平均每天吃水果次数,默认0 */ + @Excel(name = "平均每天吃水果次数,默认0") + private String fruitsNum; + + /** 吃水果的时间段 */ + @Excel(name = "吃水果的时间段") + private String fruitsTime; + + /** 平时吃水果的频次 */ + @Excel(name = "平时吃水果的频次") + private String fruitsRate; + + /** 一餐吃几碗饭 */ + @Excel(name = "一餐吃几碗饭") + private String riceNum; + + /** 吃几成饱 */ + @Excel(name = "吃几成饱") + private String riceFull; + + /** 吃饭速度 */ + @Excel(name = "吃饭速度") + private String eatingSpeed; + + /** 常吃的零食,使用 , 隔开 */ + @Excel(name = "常吃的零食,使用 , 隔开") + private String snacks; + + /** 其他零食 */ + @Excel(name = "其他零食") + private String otherSnacks; + + /** 有无服用营养保健品,0无 1有 */ + @Excel(name = "有无服用营养保健品,0无 1有") + private String healthProductsFlag; + + /** 营养保健品品牌名 */ + @Excel(name = "营养保健品品牌名") + private String healthProductsBrand; + + /** 营养保健品产品名 */ + @Excel(name = "营养保健品产品名") + private String healthProductsName; + + /** 服用营养保健品频次,每周几次 */ + @Excel(name = "服用营养保健品频次,每周几次") + private String healthProductsWeekRate; + + /** 服用营养保健品频次,每天几次 */ + @Excel(name = "服用营养保健品频次,每天几次") + private String healthProductsDayRate; + + /** 每天的饮水量,单位:毫升 */ + @Excel(name = "每天的饮水量,单位:毫升") + private String waterNum; + + /** 喜欢喝什么水,使用 , 隔开 */ + @Excel(name = "喜欢喝什么水,使用 , 隔开") + private String waterType; + + /** 喝水习惯,使用 , 隔开 */ + @Excel(name = "喝水习惯,使用 , 隔开") + private String waterHabit; + + /** 常喝的饮品的每周频次,使用,隔开 */ + @Excel(name = "常喝的饮品的每周频次,使用,隔开") + private String drinksNum; + + /** 是否喝酒 */ + @Excel(name = "是否喝酒") + private String drinkWineFlag; + + /** 喝酒种类,使用,隔开 */ + @Excel(name = "喝酒种类,使用,隔开") + private String drinkWineClassify; + + /** 其他酒种类 */ + @Excel(name = "其他酒种类") + private String otherWineClassify; + + /** 对应酒的量 */ + @Excel(name = "对应酒的量") + private String drinkWineAmount; + + /** 是否抽烟,0否 1是,默认0 */ + @Excel(name = "是否抽烟,0否 1是,默认0") + private String smokeFlag; + + /** 抽烟频次和烟龄,戒烟几年,使用,隔开 */ + @Excel(name = "抽烟频次和烟龄,戒烟几年,使用,隔开") + private String smokeRate; + + /** 是否经常抽二手烟 0否 1是,默认0 */ + @Excel(name = "是否经常抽二手烟 0否 1是,默认0") + private String secondSmoke; + + /** 工作行业 */ + @Excel(name = "工作行业") + private String workIndustry; + + /** 工作性质,使用,隔开 */ + @Excel(name = "工作性质,使用,隔开") + private String workType; + + /** 排便次数 */ + @Excel(name = "排便次数") + private String defecationNum; + + /** 其他手动输入的排便次数 */ + @Excel(name = "其他手动输入的排便次数") + private String otherDefecationNum; + + /** 排便时间段,使用,隔开 */ + @Excel(name = "排便时间段,使用,隔开") + private String defecationTime; + + /** 排便的形状 */ + @Excel(name = "排便的形状") + private String defecationShape; + + /** 排便的气味 */ + @Excel(name = "排便的气味") + private String defecationSmell; + + /** 排便的速度 */ + @Excel(name = "排便的速度") + private String defecationSpeed; + + /** 排便的颜色 */ + @Excel(name = "排便的颜色") + private String defecationColor; + + /** 每周运动次数 */ + @Excel(name = "每周运动次数") + private String motionNum; + + /** 每次运动的时长,分钟 */ + private String motionDuration; + + /** 每天运动的时间,24小时制 */ + private String motionTime; + + /** 有氧运动项目,使用,隔开 */ + private String aerobicMotionClassify; + + /** 无氧运动项目,使用,隔开 */ + private String anaerobicMotionClassify; + + /** 无氧有氧项目,使用,隔开 */ + private String anaerobicAerobicMotionClassify; + + /** 其他运动项目,使用,隔开 */ + private String otherMotionClassify; + + private String motion; + + /** 运动场地,使用,隔开 */ + private String motionField; + + /** 其他运动场地 */ + private String otherMotionField; + + /** 睡觉时间,24小时制 */ + private String sleepTime; + + /** 睡眠质量 */ + private String sleepQuality; + + /** 是否有辅助入睡药物,0否 1是,默认0 */ + private String sleepDrugFlag; + + /** 辅助睡眠类药物名称 */ + private String sleepDrug; + + /** 是否经常熬夜(超过11点)0否 1是,默认0 */ + private String stayupLateFlag; + + /** 熬夜频次,每周几次 */ + private String stayupLateWeekNum; + + /** 家族疾病史,使用,隔开 */ + private String familyIllnessHistory; + + /** 其他家族病史 */ + private String otherFamilyIllnessHistory; + + /** 手术史,使用,隔开 */ + private String operationHistory; + + /** 其他手术史 */ + private String otherOperationHistory; + + /** 近期是否做过手术,0否 1是,默认0 */ + private String nearOperationFlag; + + /** 手术恢复情况 */ + private String recoveryeSituation; + + /** 是否长期服用药物,0否 1是,默认0 */ + private String longEatDrugFlag; + + /** 长期服用的药物,使用,隔开 */ + private String longEatDrugClassify; + + /** 其他长期服用的药物 */ + private String otherLongEatDrugClassify; + + /** 是否出现过过敏症状,0否 1是,默认0 */ + private String allergyFlag; + + /** 过敏症状 */ + private String allergySituation; + + /** 过敏源,使用,隔开 */ + private String allergen; + + /** 其他过敏源 */ + private String otherAllergen; + + /** 体检报告 */ + private String medicalReport; + + /** 体检报告名称 */ + private String medicalReportName; + + /** 南方人北方人,0南方 1北方 */ + private String position; + + /** 减脂经历方法 */ + @Excel(name = "减脂经历方法") + private String experience; + + /** 是否减脂反弹,0否 1是 */ + private String rebound; + + /** 减脂遇到的困难 */ + private String difficulty; + + /** 是否意识到生活习惯是减脂关键 0否 1是 */ + private String crux; + + /** 忌口或饮食食物 */ + private String dishesIngredient; + + /** 饮食习惯 */ + private String makeFoodType; + + /** 客户病史体征,使用,隔开 */ + private String physicalSigns; + + /** 其他病史体征 **/ + private String otherPhysicalSigns; + + /** 气血数据 */ + private String bloodData; + + //备注 + private String remark; + + /** 湿气数据 */ + private String moistureDate; + + + /** 减脂指导 **/ + private String guidance; + +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/SysOrderCommision.java b/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/SysOrderCommision.java new file mode 100644 index 000000000..c29ad458c --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/SysOrderCommision.java @@ -0,0 +1,25 @@ +package com.stdiet.custom.dto.request; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class SysOrderCommision implements Serializable { + + private static final long serialVersionUID = 1L; + + //后台用户ID + private Long userId; + + //岗位ID + private Long postId; + + //订单审核状态 + private String reviewStatus; + + //订单截止结束时间 + private String endTime; + +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/NutritionalCalories.java b/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/NutritionalCalories.java index fc23e08bc..99f4d91e9 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/NutritionalCalories.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/NutritionalCalories.java @@ -69,4 +69,23 @@ public class NutritionalCalories implements Serializable { //蛋白质、脂肪、碳水剩余可摄入热量 public Integer[] surplusNutritionalHeat; + + private String nutritionalHeat_one; + + private String nutritionalHeat_two; + + private String nutritionalHeat_three; + + private String nutritionalQuality_one; + + private String nutritionalQuality_two; + + private String nutritionalQuality_three; + + private String weightNutritionalRate_one; + + private String weightNutritionalRate_two; + + private String weightNutritionalRate_three; + } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCommisionMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCommisionMapper.java index cca1dbfc3..d2b211970 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCommisionMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCommisionMapper.java @@ -2,6 +2,7 @@ package com.stdiet.custom.mapper; import java.util.List; import com.stdiet.custom.domain.SysCommision; +import com.stdiet.custom.dto.request.SysOrderCommision; /** * 业务提成比例Mapper接口 @@ -61,5 +62,10 @@ public interface SysCommisionMapper public List selectSysCommisionDetail(SysCommision sysCommision); - List selectSysCommisionDayDetail(SysCommision sysCommision); + /** + * 查询售后、营养师用户信息 + * @param sysCommision + * @return + */ + List getAfterSaleAndNutri(SysCommision sysCommision); } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerCaseFileMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerCaseFileMapper.java new file mode 100644 index 000000000..0a5fac733 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerCaseFileMapper.java @@ -0,0 +1,87 @@ +package com.stdiet.custom.mapper; + +import java.util.List; +import com.stdiet.custom.domain.SysCustomerCaseFile; +import org.apache.ibatis.annotations.Param; + +/** + * 客户案例对应文件管理Mapper接口 + * + * @author xiezhijun + * @date 2021-03-04 + */ +public interface SysCustomerCaseFileMapper +{ + /** + * 查询客户案例对应文件管理 + * + * @param id 客户案例对应文件管理ID + * @return 客户案例对应文件管理 + */ + public SysCustomerCaseFile selectSysCustomerCaseFileById(Long id); + + /** + * 查询客户案例对应文件管理列表 + * + * @param sysCustomerCaseFile 客户案例对应文件管理 + * @return 客户案例对应文件管理集合 + */ + public List selectSysCustomerCaseFileList(SysCustomerCaseFile sysCustomerCaseFile); + + /** + * 新增客户案例对应文件管理 + * + * @param sysCustomerCaseFile 客户案例对应文件管理 + * @return 结果 + */ + public int insertSysCustomerCaseFile(SysCustomerCaseFile sysCustomerCaseFile); + + /** + * 修改客户案例对应文件管理 + * + * @param sysCustomerCaseFile 客户案例对应文件管理 + * @return 结果 + */ + public int updateSysCustomerCaseFile(SysCustomerCaseFile sysCustomerCaseFile); + + /** + * 删除客户案例对应文件管理 + * + * @param id 客户案例对应文件管理ID + * @return 结果 + */ + public int deleteSysCustomerCaseFileById(Long id); + + /** + * 批量删除客户案例对应文件管理 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteSysCustomerCaseFileByIds(Long[] ids); + + /** + * 根据案例ID删除该案例下的所有文件记录 + * @param caseId + */ + int deleteSysCustomerCaseFileByCaseId(@Param("caseId")Long caseId); + + /** + * 根据案例ID批量删除该案例下的所有文件记录 + * @param caseIds + */ + int deleteSysCustomerCaseFileByCaseIds(Long[] caseIds); + + /** + * 批量插入案例文件记录 + * @param list + */ + int insertBatch(List list); + + /** + * 根据案例Id查询案例文件列表 + * @param caseId + * @return + */ + List selectSysCustomerCaseFileListByCaseId(@Param("caseId") Long caseId); +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerCaseMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerCaseMapper.java new file mode 100644 index 000000000..0cc4a0b97 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerCaseMapper.java @@ -0,0 +1,61 @@ +package com.stdiet.custom.mapper; + +import java.util.List; +import com.stdiet.custom.domain.SysCustomerCase; + +/** + * 客户案例管理Mapper接口 + * + * @author xiezhijun + * @date 2021-03-04 + */ +public interface SysCustomerCaseMapper +{ + /** + * 查询客户案例管理 + * + * @param id 客户案例管理ID + * @return 客户案例管理 + */ + public SysCustomerCase selectSysCustomerCaseById(Long id); + + /** + * 查询客户案例管理列表 + * + * @param sysCustomerCase 客户案例管理 + * @return 客户案例管理集合 + */ + public List selectSysCustomerCaseList(SysCustomerCase sysCustomerCase); + + /** + * 新增客户案例管理 + * + * @param sysCustomerCase 客户案例管理 + * @return 结果 + */ + public int insertSysCustomerCase(SysCustomerCase sysCustomerCase); + + /** + * 修改客户案例管理 + * + * @param sysCustomerCase 客户案例管理 + * @return 结果 + */ + public int updateSysCustomerCase(SysCustomerCase sysCustomerCase); + + /** + * 删除客户案例管理 + * + * @param id 客户案例管理ID + * @return 结果 + */ + public int deleteSysCustomerCaseById(Long id); + + /** + * 批量删除客户案例管理 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteSysCustomerCaseByIds(Long[] ids); +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerHealthyMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerHealthyMapper.java index c60456991..29acf80b2 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerHealthyMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerHealthyMapper.java @@ -2,6 +2,7 @@ package com.stdiet.custom.mapper; import java.util.List; +import com.stdiet.common.core.domain.entity.SysDictData; import com.stdiet.custom.domain.SysCustomer; import com.stdiet.custom.domain.SysCustomerHealthy; import org.apache.ibatis.annotations.Param; @@ -79,4 +80,12 @@ public interface SysCustomerHealthyMapper * @return */ int deleteCustomerHealthyByCustomerId(@Param("customerId")Long customerId); + + + /** + * 根据类型、键值集合查询字典类型 + * @param sysDictData + * @return + */ + public List selectDictDataByTypeAndValue(SysDictData sysDictData); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderMapper.java index 3782af713..e23a0259e 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderMapper.java @@ -6,6 +6,7 @@ import java.util.List; import com.stdiet.custom.domain.SysCommision; import com.stdiet.custom.domain.SysCommissionDayDetail; import com.stdiet.custom.domain.SysOrder; +import com.stdiet.custom.dto.request.SysOrderCommision; import org.apache.ibatis.annotations.Param; /** @@ -72,7 +73,7 @@ public interface SysOrderMapper public BigDecimal selectAllOrderAmount(SysOrder sysOrder); /** - * 获取订单信息 + * 获取订单信息(按天提成计算) * @return */ List selectSimpleOrderMessage(SysCommision sysCommision); diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderPauseMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderPauseMapper.java index 6805e9e5f..b9f0d18a3 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderPauseMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderPauseMapper.java @@ -65,7 +65,7 @@ public interface SysOrderPauseMapper * @param sysOrderPause * @return */ - int getCountByOrderIdAndPauseDate(SysOrderPause sysOrderPause); + int getCountByCusIdAndPauseDate(SysOrderPause sysOrderPause); /** * 根据订单ID删除暂停记录 @@ -73,4 +73,13 @@ public interface SysOrderPauseMapper * @return */ int deletePauseByOrderId(Long[] orderIds); + + long selectNearMainOrderIdByCusId(Long cusId); + + /** + * 根据订单ID获取暂停计划 + * @param orderId + * @return + */ + List getPauseListByOrderId(@Param("orderId")Long orderId); } \ No newline at end of file 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 b97792625..da961cc3e 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 @@ -25,4 +25,6 @@ public interface SysRecipesMapper { public int addDishes(SysRecipesDailyDishes sysRecipesDaily); public int deleteDishes(Long id); + + public List selectDishesByMenuId(Long id); } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesPlanMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesPlanMapper.java index 97290f477..6c383c955 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesPlanMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesPlanMapper.java @@ -2,6 +2,8 @@ package com.stdiet.custom.mapper; import java.util.List; import com.stdiet.custom.domain.SysRecipesPlan; +import com.stdiet.custom.domain.SysRecipesPlanListInfo; +import org.apache.ibatis.annotations.Param; /** * 食谱计划Mapper接口 @@ -80,10 +82,32 @@ public interface SysRecipesPlanMapper */ List selectPlanListByCondition(SysRecipesPlan sysRecipesPlan); + /** + * 根据客户ID查询最后一天食谱计划 + * @param customerId + * @return + */ + SysRecipesPlan getLastDayRecipesPlan(@Param("customerId")Long customerId); + /** * 根据订单ID查询食谱计划 * @param sysRecipesPlan * @return */ List selectPlanListByOrderId(SysRecipesPlan sysRecipesPlan); + + Long getCusIdByOutId(String outId); + + List selectRecipesPlanListInfo(String outId); + + List selectPlanListByCusId(Long cusId); + + List selectRecipesModelList(SysRecipesPlan sysRecipesPlan); + + /** + * 批量更新食谱计划的开始时间、结束时间 + * @param list + * @return + */ + int updateMuchRecipesPlanDate(SysRecipesPlan sysRecipesPlan); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesTemplateMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesTemplateMapper.java new file mode 100644 index 000000000..ca5613d15 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesTemplateMapper.java @@ -0,0 +1,23 @@ +package com.stdiet.custom.mapper; + +import com.stdiet.custom.domain.SysRecipesTemplate; + +import java.util.List; + +/** + * 食谱计划Mapper接口 + * + * @author wonder + * @date 2021-02-27 + */ +public interface SysRecipesTemplateMapper { + List selectRecipesTemplateListByCondition(SysRecipesTemplate sysRecipesTemplate); + + int insertRecipsesTemplate(SysRecipesTemplate sysRecipesTemplate); + + int updateRecipesTemplate(SysRecipesTemplate sysRecipesTemplate); + + int removeRecipesTemplate(Long id); + + SysRecipesTemplate getRecipesTemplateById(Long id); +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommisionService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommisionService.java index e39a7ae56..2a121d1bb 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommisionService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommisionService.java @@ -62,6 +62,4 @@ public interface ISysCommisionService public int deleteSysCommisionById(Long ruleId); public List selectSysCommisionDetail(SysCommision sysCommision); - - List selectSysCommisionDayDetail(SysCommision sysCommision); } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommissionDayService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommissionDayService.java index e5b48559b..cb92b0c40 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommissionDayService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCommissionDayService.java @@ -4,6 +4,7 @@ import com.stdiet.custom.domain.SysCommision; import com.stdiet.custom.domain.SysCommissionDayDetail; import com.stdiet.custom.domain.SysOrder; import com.stdiet.custom.domain.SysOrderCommisionDayDetail; +import com.stdiet.custom.dto.request.SysOrderCommision; import java.time.LocalDate; import java.util.Date; diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerCaseService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerCaseService.java new file mode 100644 index 000000000..76dc9dc7e --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerCaseService.java @@ -0,0 +1,69 @@ +package com.stdiet.custom.service; + +import java.util.List; +import com.stdiet.custom.domain.SysCustomerCase; +import com.stdiet.custom.domain.SysCustomerCaseFile; + +/** + * 客户案例管理Service接口 + * + * @author xiezhijun + * @date 2021-03-04 + */ +public interface ISysCustomerCaseService { + /** + * 查询客户案例管理 + * + * @param id 客户案例管理ID + * @return 客户案例管理 + */ + public SysCustomerCase selectSysCustomerCaseById(Long id); + + /** + * 查询客户案例管理列表 + * + * @param sysCustomerCase 客户案例管理 + * @return 客户案例管理集合 + */ + public List selectSysCustomerCaseList(SysCustomerCase sysCustomerCase); + + /** + * 新增客户案例管理 + * + * @param sysCustomerCase 客户案例管理 + * @return 结果 + */ + public int insertSysCustomerCase(SysCustomerCase sysCustomerCase); + + /** + * 修改客户案例管理 + * + * @param sysCustomerCase 客户案例管理 + * @return 结果 + */ + public int updateSysCustomerCase(SysCustomerCase sysCustomerCase); + + /** + * 批量删除客户案例管理 + * + * @param ids 需要删除的客户案例管理ID + * @return 结果 + */ + public int deleteSysCustomerCaseByIds(Long[] ids); + + /** + * 删除客户案例管理信息 + * + * @param id 客户案例管理ID + * @return 结果 + */ + public int deleteSysCustomerCaseById(Long id); + + /** + * 根据案例ID获取对应文件列表 + * @param caseId + * @return + */ + List getFileListByCaseId(Long caseId); + +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerHealthyService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerHealthyService.java index 16ddda9cb..65ded44e9 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerHealthyService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerHealthyService.java @@ -3,7 +3,9 @@ package com.stdiet.custom.service; import java.util.List; import com.stdiet.common.core.domain.AjaxResult; +import com.stdiet.common.core.domain.entity.SysDictData; import com.stdiet.custom.domain.SysCustomerHealthy; +import com.stdiet.custom.dto.request.HealthyDetailRequest; import org.apache.ibatis.annotations.Param; /** @@ -78,4 +80,18 @@ public interface ISysCustomerHealthyService * @return */ int deleteCustomerHealthyByCustomerId(Long customerId); + + /** + * 生成健康评估报告 + * @return + */ + AjaxResult generateHealthyReport(HealthyDetailRequest healthyDetailRequest); + + + /** + * 根据类型、键值集合查询字典类型 + * @param sysDictData + * @return + */ + public List selectDictDataByTypeAndValue(SysDictData sysDictData); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerService.java index fae82ddcd..c88766acf 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerService.java @@ -1,6 +1,8 @@ package com.stdiet.custom.service; import java.util.List; +import java.util.Map; + import com.stdiet.custom.domain.SysCustomer; import com.stdiet.custom.dto.request.CustomerInvestigateRequest; @@ -74,4 +76,9 @@ public interface ISysCustomerService * @return */ boolean isCustomerExistByPhone(SysCustomer sysCustomer); + + Map getPhysicalSignsById(Long id); + + Map getPhysicalSignsByOutId(String id); + } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderPauseService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderPauseService.java index 0f98bdc97..0044578db 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderPauseService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderPauseService.java @@ -64,7 +64,7 @@ public interface ISysOrderPauseService * @param sysOrderPause * @return */ - int getCountByOrderIdAndPauseDate(SysOrderPause sysOrderPause); + int getCountByCusIdAndPauseDate(SysOrderPause sysOrderPause); /** * 根据订单ID删除暂停记录 @@ -72,4 +72,13 @@ public interface ISysOrderPauseService * @return */ int deletePauseByOrderId(Long[] orderIds); + + /** + * 根据订单ID获取暂停记录 + * @param orderId + * @return + */ + List getPauseListByOrderId(Long orderId); + + long selectNearMainOrderIdByCusId(Long cusId); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesPlanService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesPlanService.java index c0b66280b..cffc8b111 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesPlanService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesPlanService.java @@ -4,6 +4,7 @@ import java.util.List; import com.stdiet.custom.domain.SysOrder; import com.stdiet.custom.domain.SysRecipesPlan; +import com.stdiet.custom.domain.SysRecipesPlanListInfo; import org.springframework.core.annotation.Order; /** @@ -90,5 +91,33 @@ public interface ISysRecipesPlanService */ List selectPlanListByOrderId(SysRecipesPlan sysRecipesPlan); - public void myGenerateRecipesPlan(SysOrder sysOrder); + + /** + * 通过outId查询cusId + * @param outId + * @return + */ + Long getCusIdByOutId(String outId); + + /** + * 根据客户ID查询最后一天食谱计划 + * @param customerId + * @return + */ + SysRecipesPlan getLastDayRecipesPlan(Long customerId); + + /** + * 通过outId查询食谱计划简要 + * @param outId + * @return + */ + List selectRecipesPlanListInfo(String outId); + + /** + * 通过客户id查询食谱计划 + * @param cusId + * @return + */ + List selectPlanListByCusId(Long cusId); + } \ No newline at end of file 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 b23c9b81c..54b7805a2 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 @@ -12,9 +12,12 @@ public interface ISysRecipesService { public List selectSysRecipesByRecipesId(Long id); + public List selectDishesByMenuId(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/ISysRecipesTemplateService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesTemplateService.java new file mode 100644 index 000000000..c2ac9c22d --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysRecipesTemplateService.java @@ -0,0 +1,24 @@ +package com.stdiet.custom.service; + +import com.stdiet.custom.domain.SysRecipesTemplate; + +import java.util.List; + +/** + * 食谱计划Service接口 + * + * @author wonder + * @date 2021-02-27 + */ +public interface ISysRecipesTemplateService { + + List selectRecipesTemplateListByCondition(SysRecipesTemplate sysRecipesTemplate); + + int insertRecipsesTemplate(SysRecipesTemplate sysRecipesTemplate); + + int updateRecipesTemplate(SysRecipesTemplate sysRecipesTemplate); + + int removeRecipesTemplate(Long id); + + SysRecipesTemplate getRecipesTemplateById(Long id); +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWapServices.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWapServices.java new file mode 100644 index 000000000..2d680229c --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWapServices.java @@ -0,0 +1,13 @@ +package com.stdiet.custom.service; + +import com.stdiet.custom.domain.SysRecipesPlanListInfo; + +import java.util.List; +import java.util.Map; + +public interface ISysWapServices { + + List getRecipesPlanListInfo(String outId); + + Map getHealthyDataByOutId(String outId); +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommisionServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommisionServiceImpl.java index b043f756e..8cfa7824e 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommisionServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommisionServiceImpl.java @@ -98,9 +98,4 @@ public class SysCommisionServiceImpl implements ISysCommisionService public List selectSysCommisionDetail(SysCommision sysCommision) { return sysCommisionMapper.selectSysCommisionDetail(sysCommision); } - - @Override - public List selectSysCommisionDayDetail(SysCommision sysCommision){ - return sysCommisionMapper.selectSysCommisionDayDetail(sysCommision); - } } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java index 471ba092f..95cc237a1 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java @@ -3,6 +3,7 @@ package com.stdiet.custom.service.impl; import com.alibaba.fastjson.JSONArray; import com.stdiet.common.utils.DateUtils; import com.stdiet.custom.domain.*; +import com.stdiet.custom.dto.request.SysOrderCommision; import com.stdiet.custom.mapper.SysCommisionMapper; import com.stdiet.custom.mapper.SysOrderMapper; import com.stdiet.custom.mapper.SysOrderPauseMapper; @@ -32,7 +33,7 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService { public List calculateCommissionByDay(SysCommision sysCommision){ List result = new ArrayList<>(); //查询用户 - List list = sysCommisionMapper.selectSysCommisionDayDetail(sysCommision); + List list = sysCommisionMapper.getAfterSaleAndNutri(sysCommision); //合计 SysCommissionDayDetail total = new SysCommissionDayDetail(); total.setTotalCommissionAmount(new BigDecimal(0)); diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerCaseServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerCaseServiceImpl.java new file mode 100644 index 000000000..dc91d3e1d --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerCaseServiceImpl.java @@ -0,0 +1,137 @@ +package com.stdiet.custom.service.impl; + +import java.util.ArrayList; +import java.util.List; +import com.stdiet.common.utils.DateUtils; +import com.stdiet.custom.domain.SysCustomerCaseFile; +import com.stdiet.custom.mapper.SysCustomerCaseFileMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.stdiet.custom.mapper.SysCustomerCaseMapper; +import com.stdiet.custom.domain.SysCustomerCase; +import com.stdiet.custom.service.ISysCustomerCaseService; +import org.springframework.transaction.annotation.Transactional; + +/** + * 客户案例管理Service业务层处理 + * + * @author xiezhijun + * @date 2021-03-04 + */ +@Service +@Transactional +public class SysCustomerCaseServiceImpl implements ISysCustomerCaseService +{ + @Autowired + private SysCustomerCaseMapper sysCustomerCaseMapper; + + @Autowired + private SysCustomerCaseFileMapper sysCustomerCaseFileMapper; + + /** + * 查询客户案例管理 + * + * @param id 客户案例管理ID + * @return 客户案例管理 + */ + @Override + public SysCustomerCase selectSysCustomerCaseById(Long id) + { + return sysCustomerCaseMapper.selectSysCustomerCaseById(id); + } + + /** + * 查询客户案例管理列表 + * + * @param sysCustomerCase 客户案例管理 + * @return 客户案例管理 + */ + @Override + public List selectSysCustomerCaseList(SysCustomerCase sysCustomerCase) + { + return sysCustomerCaseMapper.selectSysCustomerCaseList(sysCustomerCase); + } + + /** + * 新增客户案例管理 + * + * @param sysCustomerCase 客户案例管理 + * @return 结果 + */ + @Override + public int insertSysCustomerCase(SysCustomerCase sysCustomerCase) + { + sysCustomerCase.setCreateTime(DateUtils.getNowDate()); + int rows = sysCustomerCaseMapper.insertSysCustomerCase(sysCustomerCase); + if(rows > 0){ + //批量添加文件对应列表 + SysCustomerCaseFile caseFile = null; + if(sysCustomerCase.getCaseFileUrl() != null && sysCustomerCase.getCaseFileUrl().length > 0){ + List caseFileList = new ArrayList<>(); + for (String url : sysCustomerCase.getCaseFileUrl()) { + caseFile = new SysCustomerCaseFile(); + caseFile.setCaseId(sysCustomerCase.getId()); + caseFile.setFileName(sysCustomerCase.getCaseFileName()[caseFileList.size()]); + caseFile.setFileUrl(url); + caseFileList.add(caseFile); + } + rows = sysCustomerCaseFileMapper.insertBatch(caseFileList); + } + } + return rows; + } + + /** + * 修改客户案例管理 + * + * @param sysCustomerCase 客户案例管理 + * @return 结果 + */ + @Override + public int updateSysCustomerCase(SysCustomerCase sysCustomerCase) + { + sysCustomerCase.setUpdateTime(DateUtils.getNowDate()); + return sysCustomerCaseMapper.updateSysCustomerCase(sysCustomerCase); + } + + /** + * 批量删除客户案例管理 + * + * @param ids 需要删除的客户案例管理ID + * @return 结果 + */ + @Override + public int deleteSysCustomerCaseByIds(Long[] ids) + { + int rows = sysCustomerCaseMapper.deleteSysCustomerCaseByIds(ids); + if(rows > 0){ + rows = sysCustomerCaseFileMapper.deleteSysCustomerCaseFileByCaseIds(ids); + } + return rows; + } + + /** + * 删除客户案例管理信息 + * + * @param id 客户案例管理ID + * @return 结果 + */ + @Override + public int deleteSysCustomerCaseById(Long id) + { + int rows = sysCustomerCaseMapper.deleteSysCustomerCaseById(id); + if(rows > 0){ + rows = sysCustomerCaseFileMapper.deleteSysCustomerCaseFileByCaseId(id); + } + return rows; + } + + /** + * 根据案例ID获取对应文件列表 + * @param caseId + * @return + */ + public List getFileListByCaseId(Long caseId){ + return sysCustomerCaseFileMapper.selectSysCustomerCaseFileListByCaseId(caseId); + } +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerHealthyServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerHealthyServiceImpl.java index a3f1ea3c0..05d21b6d5 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerHealthyServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerHealthyServiceImpl.java @@ -1,14 +1,22 @@ package com.stdiet.custom.service.impl; -import java.util.List; +import java.util.*; +import com.stdiet.common.config.RuoYiConfig; import com.stdiet.common.core.domain.AjaxResult; +import com.stdiet.common.core.domain.entity.SysDictData; +import com.stdiet.common.utils.DateUtils; import com.stdiet.common.utils.StringUtils; import com.stdiet.common.utils.bean.ObjectUtils; +import com.stdiet.common.utils.reflect.ReflectUtils; import com.stdiet.common.utils.sign.AesUtils; import com.stdiet.custom.domain.SysCustomer; import com.stdiet.custom.domain.SysCustomerPhysicalSigns; +import com.stdiet.custom.dto.request.HealthyDetailRequest; +import com.stdiet.custom.dto.response.NutritionalCalories; import com.stdiet.custom.service.ISysCustomerService; +import com.stdiet.custom.utils.NutritionalUtils; +import com.stdiet.custom.utils.PdfUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.stdiet.custom.mapper.SysCustomerHealthyMapper; @@ -141,4 +149,111 @@ public class SysCustomerHealthyServiceImpl implements ISysCustomerHealthyService public int deleteCustomerHealthyByCustomerId(Long customerId){ return sysCustomerHealthyMapper.deleteCustomerHealthyByCustomerId(customerId); } + + /** + * 生成健康评估报告 + * @return + */ + @Override + public AjaxResult generateHealthyReport(HealthyDetailRequest healthyDetailRequest){ + AjaxResult ajaxResult = AjaxResult.error(); + String templatePath = "/home/workspace/ShengTangManage/running/pdf/healthyReport.pdf"; + //String templatePath = "D:\\contract\\healthyReport.pdf"; + String fileName = "healthyReport" + healthyDetailRequest.getCustomerId() + System.currentTimeMillis() + ".pdf"; + String filePath = RuoYiConfig.getDownloadPath() + fileName; + //查询客户健康信息 + SysCustomerHealthy sysCustomerHealthy = selectSysCustomerHealthyById(healthyDetailRequest.getId()); + if(sysCustomerHealthy != null){ + ajaxResult = PdfUtils.generatePdfFile(templatePath, filePath, getReportData(sysCustomerHealthy, healthyDetailRequest)); + ajaxResult.put("path", fileName); + } + return ajaxResult; + } + + public static final String[] healthyAttrNameAray = {"createTime","name","phone","conditioningProject","sex","age","tall","weight","position", + "experience","difficulty","rebound","crux","condiment","cookingStyle","cookingStyleRate","washVegetablesStyle", + "breakfastType","breakfastFood","lunchType","dinner","vegetableRate","commonMeat","dinnerTime","supperNum","supperFood", + "dietHotAndCold","dietFlavor","vegetablesNum","vegetablesRateType","fruitsNum","fruitsTime","fruitsRate","riceNum","riceFull", + "eatingSpeed","makeFoodType","snacks","healthProductsFlag","healthProductsBrand","healthProductsName", + "healthProductsWeekRate","dishesIngredient","waterNum","waterType","waterHabit", + "drinksNum","drinkWineFlag","drinkWineClassify","drinkWineAmount","smokeFlag","smokeRate", + "secondSmoke","workIndustry","workType","defecationNum","defecationTime","defecationShape", + "defecationSmell","defecationSpeed","defecationColor","motionNum","motionDuration","motionTime", + "motion","motionField","sleepTime","sleepQuality","sleepDrugFlag","sleepDrug","stayupLateFlag","stayupLateWeekNum", + "physicalSigns","moistureDate","bloodData","familyIllnessHistory","operationHistory","nearOperationFlag", + "recoveryeSituation","longEatDrugFlag","longEatDrugClassify","allergyFlag","allergySituation","allergen" + }; + + public static final String[] nutriAttrNameArray = {"standardWeight","overWeight","metabolizeHeat","activityFactor","withoutExerciseHeat", + "exerciseHeat","targetEveryWeightHeat","standardEveryWeightHeat","nutritionalHeat_one","nutritionalHeat_two","nutritionalHeat_three", + "nutritionalQuality_one","nutritionalQuality_two","nutritionalQuality_three", + "weightNutritionalRate_one","weightNutritionalRate_two","weightNutritionalRate_three" + }; + + private Map getReportData(SysCustomerHealthy sysCustomerHealthy, HealthyDetailRequest healthyDetailRequest){ + if(StringUtils.isNotEmpty(sysCustomerHealthy.getBloodData())){ + SysDictData param = new SysDictData(); + param.setDictType("sys_moisture_data"); + param.setDictValueList(Arrays.asList(sysCustomerHealthy.getBloodData().split(","))); + List bloodData = selectDictDataByTypeAndValue(param); + String bloodString = ""; + for (SysDictData blood : bloodData) { + bloodString += blood.getDictValue() + "、" +blood.getDictLabel() + "\n"; + } + healthyDetailRequest.setBloodData(bloodString); + } + if(StringUtils.isNotEmpty(sysCustomerHealthy.getMoistureDate())){ + SysDictData param = new SysDictData(); + param.setDictType("sys_blood_data"); + param.setDictValueList(Arrays.asList(sysCustomerHealthy.getBloodData().split(","))); + List moistureData = selectDictDataByTypeAndValue(param); + String moistureString = ""; + for (SysDictData moisture : moistureData) { + moistureString += moisture.getDictValue() + "、" + moisture.getDictLabel() + "\n"; + } + healthyDetailRequest.setMoistureDate(moistureString); + } + Map data = new HashMap<>(); + for (String key : healthyAttrNameAray) { + data.put(key, ReflectUtils.getFieldValueByFieldName(key, healthyDetailRequest)); + } + //减脂指导 + data.put("guidance", sysCustomerHealthy.getGuidance()); + //营养热量分析数据 + NutritionalCalories nutritionalCalories = NutritionalUtils.getNutritionalCaloriesData(sysCustomerHealthy); + nutritionalCalories.setNutritionalHeat_one(nutritionalCalories.getNutritionalHeat()[0].toString()); + nutritionalCalories.setNutritionalHeat_two(nutritionalCalories.getNutritionalHeat()[1].toString()); + nutritionalCalories.setNutritionalHeat_three(nutritionalCalories.getNutritionalHeat()[2].toString()); + nutritionalCalories.setNutritionalQuality_one(nutritionalCalories.getNutritionalQuality()[0].toString()); + nutritionalCalories.setNutritionalQuality_two(nutritionalCalories.getNutritionalQuality()[1].toString()); + nutritionalCalories.setNutritionalQuality_three(nutritionalCalories.getNutritionalQuality()[2].toString()); + nutritionalCalories.setWeightNutritionalRate_one(nutritionalCalories.getWeightNutritionalRate()[0].toString()); + nutritionalCalories.setWeightNutritionalRate_two(nutritionalCalories.getWeightNutritionalRate()[1].toString()); + nutritionalCalories.setWeightNutritionalRate_three(nutritionalCalories.getWeightNutritionalRate()[2].toString()); + for (String key : nutriAttrNameArray) { + if("targetEveryWeightHeat".equals(key)){ + data.put(key, nutritionalCalories.getTargetEveryWeightHeat()[0].intValue()+"-"+nutritionalCalories.getTargetEveryWeightHeat()[1].intValue()); + continue; + } + if("standardEveryWeightHeat".equals(key)){ + data.put(key, nutritionalCalories.getStandardEveryWeightHeat()[0].intValue()+"-"+nutritionalCalories.getStandardEveryWeightHeat()[1].intValue()); + continue; + } + data.put(key, ReflectUtils.getFieldValueByFieldName(key, nutritionalCalories)); + } + data.put("company","深圳胜唐体控有限公司"); + data.put("date", DateUtils.getDate()); + return data; + } + + + /** + * 根据类型、键值集合查询字典类型 + * @param sysDictData + * @return + */ + @Override + public List selectDictDataByTypeAndValue(SysDictData sysDictData){ + return sysCustomerHealthyMapper.selectDictDataByTypeAndValue(sysDictData); + } } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerServiceImpl.java index a3e7c2694..d4e9a85e6 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerServiceImpl.java @@ -1,22 +1,22 @@ package com.stdiet.custom.service.impl; -import java.util.List; - -import com.stdiet.common.core.domain.model.LoginUser; import com.stdiet.common.utils.DateUtils; -import com.stdiet.common.utils.SecurityUtils; import com.stdiet.common.utils.StringUtils; -import com.stdiet.common.utils.bean.ObjectUtils; +import com.stdiet.common.utils.sign.AesUtils; +import com.stdiet.custom.domain.SysCustomer; +import com.stdiet.custom.domain.SysCustomerHealthy; import com.stdiet.custom.domain.SysCustomerPhysicalSigns; -import com.stdiet.custom.dto.request.CustomerInvestigateRequest; +import com.stdiet.custom.mapper.SysCustomerMapper; import com.stdiet.custom.mapper.SysCustomerPhysicalSignsMapper; +import com.stdiet.custom.service.ISysCustomerService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.stdiet.custom.mapper.SysCustomerMapper; -import com.stdiet.custom.domain.SysCustomer; -import com.stdiet.custom.service.ISysCustomerService; import org.springframework.transaction.annotation.Transactional; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * 客户信息Service业务层处理 * @@ -25,14 +25,19 @@ import org.springframework.transaction.annotation.Transactional; */ @Service @Transactional -public class SysCustomerServiceImpl implements ISysCustomerService -{ +public class SysCustomerServiceImpl implements ISysCustomerService { @Autowired private SysCustomerMapper sysCustomerMapper; @Autowired private SysCustomerPhysicalSignsMapper sysCustomerPhysicalSignsMapper; + @Autowired + private SysCustomerHealthyServiceImpl sysCustomerHealthyService; + + @Autowired + private SysCustomerPhysicalSignsServiceImpl sysCustomerPhysicalSignsService; + /** * 查询客户信息 * @@ -40,8 +45,7 @@ public class SysCustomerServiceImpl implements ISysCustomerService * @return 客户信息 */ @Override - public SysCustomer selectSysCustomerById(Long id) - { + public SysCustomer selectSysCustomerById(Long id) { return sysCustomerMapper.selectSysCustomerById(id); } @@ -52,8 +56,7 @@ public class SysCustomerServiceImpl implements ISysCustomerService * @return 客户信息 */ @Override - public List selectSysCustomerList(SysCustomer sysCustomer) - { + public List selectSysCustomerList(SysCustomer sysCustomer) { return sysCustomerMapper.selectSysCustomerList(sysCustomer); } @@ -64,8 +67,7 @@ public class SysCustomerServiceImpl implements ISysCustomerService * @return 结果 */ @Override - public int insertSysCustomer(SysCustomer sysCustomer) - { + public int insertSysCustomer(SysCustomer sysCustomer) { sysCustomer.setCreateTime(DateUtils.getNowDate()); return sysCustomerMapper.insertSysCustomer(sysCustomer); } @@ -77,8 +79,7 @@ public class SysCustomerServiceImpl implements ISysCustomerService * @return 结果 */ @Override - public int updateSysCustomer(SysCustomer sysCustomer) - { + public int updateSysCustomer(SysCustomer sysCustomer) { sysCustomer.setUpdateTime(DateUtils.getNowDate()); return sysCustomerMapper.updateSysCustomer(sysCustomer); } @@ -90,8 +91,7 @@ public class SysCustomerServiceImpl implements ISysCustomerService * @return 结果 */ @Override - public int deleteSysCustomerByIds(Long[] ids) - { + public int deleteSysCustomerByIds(Long[] ids) { return sysCustomerMapper.deleteSysCustomerByIds(ids); } @@ -102,8 +102,7 @@ public class SysCustomerServiceImpl implements ISysCustomerService * @return 结果 */ @Override - public int deleteSysCustomerById(Long id) - { + public int deleteSysCustomerById(Long id) { return sysCustomerMapper.deleteSysCustomerById(id); } @@ -113,26 +112,60 @@ public class SysCustomerServiceImpl implements ISysCustomerService * @param phone 手机号 * @return 结果 */ - public SysCustomer getCustomerByPhone(String phone){ + public SysCustomer getCustomerByPhone(String phone) { return sysCustomerMapper.getCustomerByPhone(phone); } /** * 判断客户手机号是否已存在 + * * @param sysCustomer * @return */ - public boolean isCustomerExistByPhone(SysCustomer sysCustomer){ - if(sysCustomer.getId() != null){ - if(StringUtils.isNotEmpty(sysCustomer.getPhone())){ + public boolean isCustomerExistByPhone(SysCustomer sysCustomer) { + if (sysCustomer.getId() != null) { + if (StringUtils.isNotEmpty(sysCustomer.getPhone())) { SysCustomer phoneCustomer = getCustomerByPhone(sysCustomer.getPhone()); return phoneCustomer != null && phoneCustomer.getId().intValue() != sysCustomer.getId().intValue(); } - }else{ - if(StringUtils.isNotEmpty(sysCustomer.getPhone())){ + } else { + if (StringUtils.isNotEmpty(sysCustomer.getPhone())) { return getCustomerByPhone(sysCustomer.getPhone()) != null; } } return false; } + + @Override + public Map getPhysicalSignsById(Long id) { + Map result = new HashMap<>(); + String key = "customerHealthy"; + result.put("type", 0); + //查询健康评估信息 + SysCustomerHealthy sysCustomerHealthy = sysCustomerHealthyService.selectSysCustomerHealthyByCustomerId(id); + if (sysCustomerHealthy != null) { + /* if (StringUtils.isNotEmpty(sysCustomerHealthy.getPhone())) { + sysCustomerHealthy.setPhone(StringUtils.hiddenPhoneNumber(sysCustomerHealthy.getPhone())); + }*/ + result.put(key, sysCustomerHealthy); + } else { + //查询体征信息 + SysCustomerPhysicalSigns sysCustomerPhysicalSigns = sysCustomerPhysicalSignsService.selectSysCustomerPhysicalSignsByCusId(id); + if (sysCustomerPhysicalSigns != null) { + /* if (StringUtils.isNotEmpty(sysCustomerPhysicalSigns.getPhone())) { + sysCustomerPhysicalSigns.setPhone(StringUtils.hiddenPhoneNumber(sysCustomerPhysicalSigns.getPhone())); + }*/ + result.put("type", 1); + } + result.put(key, sysCustomerPhysicalSigns); + } + //对ID进行加密 + result.put("enc_id", id != null ? AesUtils.encrypt(id + "", null) : ""); + return result; + } + + @Override + public Map getPhysicalSignsByOutId(String id) { + return null; + } } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderPauseServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderPauseServiceImpl.java index 70228dd13..48da0567d 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderPauseServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderPauseServiceImpl.java @@ -126,8 +126,8 @@ public class SysOrderPauseServiceImpl implements ISysOrderPauseService * @return */ @Override - public int getCountByOrderIdAndPauseDate(SysOrderPause sysOrderPause){ - return sysOrderPauseMapper.getCountByOrderIdAndPauseDate(sysOrderPause); + public int getCountByCusIdAndPauseDate(SysOrderPause sysOrderPause){ + return sysOrderPauseMapper.getCountByCusIdAndPauseDate(sysOrderPause); } /** @@ -139,4 +139,19 @@ public class SysOrderPauseServiceImpl implements ISysOrderPauseService public int deletePauseByOrderId(Long[] orderIds){ return sysOrderPauseMapper.deletePauseByOrderId(orderIds); } + + /** + * 根据订单ID获取暂停计划 + * @param orderId + * @return + */ + @Override + public List getPauseListByOrderId(Long orderId){ + return sysOrderPauseMapper.getPauseListByOrderId(orderId); + } + + @Override + public long selectNearMainOrderIdByCusId(Long cusId) { + return sysOrderPauseMapper.selectNearMainOrderIdByCusId(cusId); + } } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderServiceImpl.java index 6932b3abb..c822e243c 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderServiceImpl.java @@ -206,11 +206,9 @@ public class SysOrderServiceImpl implements ISysOrderService { //更新订单 int row = sysOrderMapper.updateSysOrder(sysOrder); // 审核后的订单才生成食谱 - if (row > 0 && oldSysOrder.getReviewStatus().equals("no") && sysOrder.getReviewStatus().equals("yes")) { + if (row > 0 && isNeedRegenerateRecipesPlan(oldSysOrder, sysOrder)) { //异步更新食谱计划 - if (isNeedRegenerateRecipesPlan(oldSysOrder, sysOrder)) { - sysRecipesPlanService.regenerateRecipesPlan(sysOrder.getOrderId()); - } + sysRecipesPlanService.regenerateRecipesPlan(sysOrder.getOrderId()); } return row; } @@ -223,6 +221,9 @@ public class SysOrderServiceImpl implements ISysOrderService { * @return */ private boolean isNeedRegenerateRecipesPlan(SysOrder oldSysOrder, SysOrder newSysOrder) { + if(oldSysOrder.getReviewStatus().equals("no") && newSysOrder.getReviewStatus().equals("yes")){ + return true; + } if (oldSysOrder.getServeTimeId() != null && newSysOrder.getServeTimeId() != null && oldSysOrder.getServeTimeId().intValue() != newSysOrder.getServeTimeId().intValue()) { return true; } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java index 6b334a05e..7f5469544 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java @@ -1,10 +1,13 @@ package com.stdiet.custom.service.impl; import com.stdiet.common.utils.DateUtils; +import com.stdiet.common.utils.StringUtils; import com.stdiet.common.utils.SynchrolockUtil; +import com.stdiet.common.utils.sign.Md5Utils; import com.stdiet.custom.domain.SysOrder; import com.stdiet.custom.domain.SysOrderPause; import com.stdiet.custom.domain.SysRecipesPlan; +import com.stdiet.custom.domain.SysRecipesPlanListInfo; import com.stdiet.custom.mapper.SysRecipesPlanMapper; import com.stdiet.custom.service.ISysOrderPauseService; import com.stdiet.custom.service.ISysOrderService; @@ -16,9 +19,7 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; /** * 食谱计划Service业务层处理 @@ -29,6 +30,7 @@ import java.util.List; @Service("sysRecipesPlanService") @Transactional public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { + public static final String generateRecipesPlanLockKey = "generateRecipesPlanLock::%s"; @Autowired private SysRecipesPlanMapper sysRecipesPlanMapper; @@ -129,37 +131,33 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { return; } SysOrder sysOrder = sysOrderService.selectSysOrderById(orderId); - //订单为空、金额小于0不进行食谱生成、更新,只对2021年开始的订单进行食谱计划生成,判断订单金额、开始时间、结束时间,为空则直接返回,不重新生成食谱计划 - if (sysOrder == null && DateUtils.dateToLocalDate(sysOrder.getOrderTime()).getYear() < 2021 + //订单为空、金额小于0、订单未审核不进行食谱生成、更新,只对2021年开始的订单进行食谱计划生成,判断订单金额、开始时间、结束时间,为空则直接返回,不重新生成食谱计划 + if (sysOrder == null || !sysOrder.getReviewStatus().equals("yes") || DateUtils.dateToLocalDate(sysOrder.getOrderTime()).getYear() < 2021 || sysOrder.getAmount().floatValue() <= 0 || sysOrder.getStartTime() == null || sysOrder.getServerEndTime() == null) { return; } //判断是否提成单,拆分单中的副单,体验单 if(sysOrder.getAfterSaleCommissOrder().intValue() == 1 || ("1".equals(sysOrder.getOrderType()) && sysOrder.getMainOrderId().intValue() == 1) || "2".equals(sysOrder.getOrderType())){ + System.out.println("---------------------不生成食谱------------------------"); return; } try { //获取redis中该订单对应的锁 if (synchrolockUtil.lock(String.format(generateRecipesPlanLockKey, orderId))) { + //判断是否已存在食谱计划 SysRecipesPlan queryParam = new SysRecipesPlan(); queryParam.setOrderId(orderId); List oldRecipesPlanList = sysRecipesPlanMapper.selectSysRecipesPlanList(queryParam); - //判断是否已存在食谱 - /*if (oldRecipesPlanList != null && oldRecipesPlanList.size() > 0) { - Long[] orderIdArray = new Long[1]; - orderIdArray[0] = orderId; - //删除该订单对于食谱 - //delRecipesPlanByOrderId(orderIdArray); - }*/ - SysOrderPause pauseParam = new SysOrderPause(); - pauseParam.setOrderId(sysOrder.getOrderId()); - //暂停记录列表 - List pauseList = sysOrderPauseService.selectSysOrderPauseList(pauseParam); - List planList = generatePlan(sysOrder, oldRecipesPlanList, - DateUtils.dateToLocalDate(sysOrder.getStartTime()), DateUtils.dateToLocalDate(sysOrder.getServerEndTime()), pauseList); - if (planList != null && planList.size() > 0) { - sysRecipesPlanMapper.insertBatch(planList); + //暂停记录列表,按暂停开始时间顺序 + List pauseList = sysOrderPauseService.getPauseListByOrderId(sysOrder.getOrderId()); + List planList = generatePlan(sysOrder, oldRecipesPlanList, DateUtils.dateToLocalDate(sysOrder.getStartTime()), DateUtils.dateToLocalDate(sysOrder.getServerEndTime()), pauseList); + if(oldRecipesPlanList != null && oldRecipesPlanList.size() > 0){ + updateOrAddRecipesPlan(oldRecipesPlanList, planList); + }else{ + if (planList != null && planList.size() > 0) { + sysRecipesPlanMapper.insertBatch(planList); + } } } } catch (Exception e) { @@ -170,71 +168,122 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { } } + /** + * 更新食谱计划,删除旧食谱中多余的,添加新食谱中多的 + * @param oldRecipesPlanList + * @param newRecipesPlanList + */ + private void updateOrAddRecipesPlan(List oldRecipesPlanList, List newRecipesPlanList){ + int newSize = newRecipesPlanList.size(); + int index = 0; + List addList = new ArrayList<>(); + List updateList = new ArrayList<>(); + List delList = new ArrayList<>(); + for (SysRecipesPlan plan : oldRecipesPlanList) { + if(index < newSize){ + if(plan.getStartDate().compareTo(newRecipesPlanList.get(index).getStartDate()) != 0 + || plan.getEndDate().compareTo(newRecipesPlanList.get(index).getEndDate()) != 0){ + plan.setStartDate(newRecipesPlanList.get(index).getStartDate()); + plan.setEndDate(newRecipesPlanList.get(index).getEndDate()); + plan.setPauseDate(newRecipesPlanList.get(index).getPauseDate()); + updateList.add(plan); + } + }else{ + delList.add(plan.getId()); + } + index++; + } + if(newSize > oldRecipesPlanList.size()){ + addList = newRecipesPlanList.subList(oldRecipesPlanList.size(),newSize); + } + //更新 + if(updateList.size() > 0){ + System.out.println("更新数量:"+updateList.size()); + for (SysRecipesPlan plan : updateList) { + sysRecipesPlanMapper.updateSysRecipesPlan(plan); + } + } + //删除多余的食谱计划 + if(delList.size() > 0){ + sysRecipesPlanMapper.deleteSysRecipesPlanByIds(delList.toArray(new Long[delList.size()])); + } + //添加新的 + if(addList.size() > 0){ + sysRecipesPlanMapper.insertBatch(addList); + } + } + /** * 根据订单ID、订单开始服务时间、结束时间、暂停列表生成食谱计划列表 * * @param sysOrder 订单对象 - * @param oldRecipesPlanList 旧的食谱计划 * @param serverStartDate 服务开始时间 * @param serverEndDate 服务结束时间 * @param pauseList 暂停列表 * @return */ - public List generatePlan(SysOrder sysOrder, List oldRecipesPlanList, - LocalDate serverStartDate, LocalDate serverEndDate, List pauseList) { + private List generatePlan(SysOrder sysOrder, List oldRecipesPlanList, LocalDate serverStartDate, LocalDate serverEndDate, List pauseList) { + //查询该客户最后一次食谱计划对应天数 + int oldStartNumDay = 0; + if(oldRecipesPlanList.size() == 0){ + SysRecipesPlan lastSysRecipesPlan = getLastDayRecipesPlan(sysOrder.getCusId()); + oldStartNumDay = lastSysRecipesPlan == null || lastSysRecipesPlan.getEndNumDay() == null ? 0 : lastSysRecipesPlan.getEndNumDay().intValue(); + }else{ + oldStartNumDay = oldRecipesPlanList.get(0).getStartNumDay() - 1; + } List planList = new ArrayList<>(); - boolean breakFlag = false; - LocalDate planStartDate = serverStartDate; - LocalDate planEndDate = planStartDate.plusDays(6); - while (true) { + LocalDate planStartDate = null; + LocalDate planEndDate = serverStartDate.plusDays(-1); + boolean breakFlag = true; + do { SysRecipesPlan sysRecipesPlan = new SysRecipesPlan(); + planStartDate = planEndDate.plusDays(1); + planEndDate = planStartDate.plusDays(6); //判断是否大于服务到期时间 if (ChronoUnit.DAYS.between(planEndDate, serverEndDate) <= 0) { planEndDate = serverEndDate; - breakFlag = true; + breakFlag = false; + } + String[] pauseResult = dealPlanPause(planStartDate, planEndDate, pauseList); + //开始时间变更为暂停结束之后的日期,因为暂停开始时间与食谱计划开始时间相同 + if(StringUtils.isNotEmpty(pauseResult[0])){ + planStartDate = DateUtils.stringToLocalDate(pauseResult[0],"yyyyMMdd"); + planEndDate = DateUtils.stringToLocalDate(pauseResult[1],"yyyyMMdd"); } - long pauseDay = getPauseDayeCount(planStartDate, planEndDate, pauseList); //加上暂停时间 - planEndDate = planEndDate.plusDays(pauseDay); + planEndDate = planEndDate.plusDays(Integer.parseInt(pauseResult[2])); sysRecipesPlan.setStartDate(DateUtils.localDateToDate(planStartDate)); sysRecipesPlan.setEndDate(DateUtils.localDateToDate(planEndDate)); sysRecipesPlan.setOrderId(sysOrder.getOrderId()); sysRecipesPlan.setCusId(sysOrder.getCusId()); - /*//当开始时间小于等于当前时间,默认为已发送,发送时间为前一天 - if(ChronoUnit.DAYS.between(planStartDate, LocalDate.now()) >= 0){ - sysRecipesPlan.setSendFlag(1); - sysRecipesPlan.setSendTime(DateUtils.localDateToDate(LocalDate.now().minusDays(1))); - }*/ - //将旧食谱计划中的发送状态、发送时间、食谱复制到新食谱计划中 - boolean existFlag = oldRecipesPlanList.size() >= planList.size() + 1; - sysRecipesPlan.setSendFlag(existFlag ? oldRecipesPlanList.get(planList.size()).getSendFlag() : 0); - sysRecipesPlan.setSendTime(existFlag ? oldRecipesPlanList.get(planList.size()).getSendTime() : null); - sysRecipesPlan.setRecipesId(existFlag ? oldRecipesPlanList.get(planList.size()).getRecipesId() : null); - + sysRecipesPlan.setOutId(Md5Utils.hash(String.valueOf(sysOrder.getCusId()))); + oldStartNumDay += 1; + sysRecipesPlan.setStartNumDay(oldStartNumDay); + oldStartNumDay += 6; + sysRecipesPlan.setEndNumDay(oldStartNumDay); + //暂停日期 + sysRecipesPlan.setPauseDate(pauseResult[3]); + //添加暂停范围内的日期 planList.add(sysRecipesPlan); - - planStartDate = planEndDate.plusDays(1); - planEndDate = planStartDate.plusDays(6); - - if (breakFlag) { - break; - } - } + }while (breakFlag); return planList; } /** - * 根据食谱开始时间、结束时间、暂停列表获取在食谱计划范围内的暂停天数 - * - * @param planStartDate 计划开始时间 - * @param planEndDate 计划结束时间 - * @param pauseList 暂停列表 + * 根据食谱开始时间、结束时间、暂停列表获取在食谱计划范围内的暂停天数,以及返回调整之后的计划开始、结束时间,以及暂停日期 + * @param planStartDate 原先的计划开始时间 + * @param planEndDate 原先计划结束时间 + * @param pauseList 暂停列表集合 * @return */ - public long getPauseDayeCount(LocalDate planStartDate, LocalDate planEndDate, List pauseList) { + private String[] dealPlanPause(LocalDate planStartDate, LocalDate planEndDate, List pauseList) { + //分别为计划开始时间、计划结束时间,范围内暂停天数,具体暂停日期,使用|隔开 + String[] result = {"","","0",""}; long pauseDay = 0; + Set pauseDateString = new TreeSet<>(new MyComparator()); //判断这个时间内是否存在暂停 if (pauseList != null && pauseList.size() > 0) { + //每条暂停时间的范围不会重叠,在添加暂停时做了限制 for (SysOrderPause sysOrderPause : pauseList) { LocalDate pauseStartDate = DateUtils.dateToLocalDate(sysOrderPause.getPauseStartDate()); LocalDate pauseEndDate = DateUtils.dateToLocalDate(sysOrderPause.getPauseEndDate()); @@ -247,10 +296,48 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { if (ChronoUnit.DAYS.between(planEndDate, pauseEndDate) > 0) { pauseEndDate = planEndDate; } - pauseDay += ChronoUnit.DAYS.between(pauseStartDate, pauseEndDate); + //判断暂停记录是否从食谱计划开始时间开始的 + if(ChronoUnit.DAYS.between(pauseStartDate, planStartDate) == 0){ + //记录该条暂停记录结束之后的第一天日期,如果两条记录连着,则取最后暂停结束之后的第一天 + if("".equals(result[0]) || result[0].equals(DateUtils.localDateToString(pauseStartDate,"yyyyMMdd"))){ + planStartDate = pauseEndDate.plusDays(1); + planEndDate = planStartDate.plusDays(6); + result[0] = DateUtils.localDateToString(planStartDate,"yyyyMMdd"); + result[1] = DateUtils.localDateToString(planEndDate,"yyyyMMdd"); + } + }else{ + pauseDay += ChronoUnit.DAYS.between(pauseStartDate, pauseEndDate) + 1; + pauseDateString.addAll(getPauseDateString(pauseStartDate, pauseEndDate)); + } } } - return pauseDay; + result[2] = pauseDay+""; + result[3] = pauseDateString.size() > 0 ? StringUtils.join(pauseDateString,"|") : ""; + return result; + } + + /** + * 根据暂停时间范围获取范围内的日期 + * @return + */ + private Set getPauseDateString(LocalDate pauseStartDate, LocalDate pauseEndDate){ + Set pauseDateList = new HashSet<>(); + long daysBetween = ChronoUnit.DAYS.between(pauseStartDate, pauseEndDate); + for(int i = 0; i <= daysBetween; i++){ + pauseDateList.add(DateUtils.localDateToString(pauseStartDate.plusDays(i),"yyyyMMdd")); + } + return pauseDateList; + } + + /** + * 集合排序key值比较器 + * */ + class MyComparator implements Comparator{ + + @Override + public int compare(String o1, String o2) { + return Integer.parseInt(o1) - Integer.parseInt(o2); + } } /** @@ -286,8 +373,32 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService { return sysRecipesPlanMapper.selectPlanListByOrderId(sysRecipesPlan); } - @Override - public void myGenerateRecipesPlan(SysOrder sysOrder) { - + /** + * 根据客户ID查询最后一天食谱计划 + * @param customerId + * @return + */ + public SysRecipesPlan getLastDayRecipesPlan(Long customerId){ + return sysRecipesPlanMapper.getLastDayRecipesPlan(customerId); } + + @Override + public Long getCusIdByOutId(String outId) { + return sysRecipesPlanMapper.getCusIdByOutId(outId); + } + + @Override + public List selectRecipesPlanListInfo(String outId) { + return sysRecipesPlanMapper.selectRecipesPlanListInfo(outId); + } + + @Override + public List selectPlanListByCusId(Long cusId) { + return sysRecipesPlanMapper.selectPlanListByCusId(cusId); + } + + public List selectRecipesModelList(SysRecipesPlan sysRecipesPlan) { + return sysRecipesPlanMapper.selectRecipesModelList(sysRecipesPlan); + } + } \ No newline at end of file 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 5b583ff03..9c38d2f2a 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 @@ -54,6 +54,7 @@ public class SysRecipesServiceImpl implements ISysRecipesService { SysRecipesPlan sysRecipesPlan = new SysRecipesPlan(); sysRecipesPlan.setId(sysRecipes.getPlanId()); sysRecipesPlan.setRecipesId(sysRecipes.getId()); + sysRecipesPlan.setReviewStatus(1); sysRecipesPlanMapper.updateSysRecipesPlan(sysRecipesPlan); } @@ -65,6 +66,11 @@ public class SysRecipesServiceImpl implements ISysRecipesService { return sysRecipesMapper.selectSysRecipesByRecipesId(id); } + @Override + public List selectDishesByMenuId(Long id) { + return sysRecipesMapper.selectDishesByMenuId(id); + } + @Override public int updateDishesDetail(SysRecipesDailyDishes sysRecipesDailyDishes) { return sysRecipesMapper.updateDishesDetail(sysRecipesDailyDishes); diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesTemplateServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesTemplateServiceImpl.java new file mode 100644 index 000000000..b8f9f9e84 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesTemplateServiceImpl.java @@ -0,0 +1,79 @@ +package com.stdiet.custom.service.impl; + +import com.stdiet.common.utils.DateUtils; +import com.stdiet.common.utils.SecurityUtils; +import com.stdiet.common.utils.StringUtils; +import com.stdiet.custom.domain.SysRecipesPlan; +import com.stdiet.custom.domain.SysRecipesTemplate; +import com.stdiet.custom.mapper.SysRecipesPlanMapper; +import com.stdiet.custom.mapper.SysRecipesTemplateMapper; +import com.stdiet.custom.service.ISysRecipesTemplateService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 食谱计划Service业务层处理 + * + * @author wonder + * @date 2021-02-27 + */ +@Service("sysRecipesPlanModelService") +@Transactional +public class SysRecipesTemplateServiceImpl implements ISysRecipesTemplateService { + + @Autowired + SysRecipesTemplateMapper sysRecipesTemplateMapper; + + @Autowired + SysRecipesPlanMapper sysRecipesPlanMapper; + + @Override + public List selectRecipesTemplateListByCondition(SysRecipesTemplate sysRecipesTemplate) { + return sysRecipesTemplateMapper.selectRecipesTemplateListByCondition(sysRecipesTemplate); + } + + @Override + public int insertRecipsesTemplate(SysRecipesTemplate sysRecipesTemplate) { + SysRecipesPlan sysRecipesPlan = new SysRecipesPlan(); + sysRecipesPlan.setStartNumDay(1); + sysRecipesPlan.setEndNumDay(7); + sysRecipesPlan.setType(1); + sysRecipesPlan.setCusId(0L); + sysRecipesPlanMapper.insertSysRecipesPlan(sysRecipesPlan); + if (!StringUtils.isNull(sysRecipesPlan.getId())) { + sysRecipesTemplate.setCreateBy(SecurityUtils.getUsername()); + sysRecipesTemplate.setCreateTime(DateUtils.getNowDate()); + sysRecipesTemplate.setPlanId(sysRecipesPlan.getId()); + return sysRecipesTemplateMapper.insertRecipsesTemplate(sysRecipesTemplate); + } + return 0; + } + + @Override + public int updateRecipesTemplate(SysRecipesTemplate sysRecipesTemplate) { + sysRecipesTemplate.setUpdateBy(SecurityUtils.getUsername()); + sysRecipesTemplate.setUpdateTime(DateUtils.getNowDate()); + return sysRecipesTemplateMapper.updateRecipesTemplate(sysRecipesTemplate); + } + + @Override + public int removeRecipesTemplate(Long id) { + SysRecipesTemplate sysRecipesTemplate= sysRecipesTemplateMapper.getRecipesTemplateById(id); + if(StringUtils.isNull(sysRecipesTemplate)) { + return 0; + } + int rows = sysRecipesTemplateMapper.removeRecipesTemplate(sysRecipesTemplate.getId()); + if(rows > 0) { + return sysRecipesPlanMapper.deleteSysRecipesPlanById(sysRecipesTemplate.getPlanId()); + } + return 0; + } + + @Override + public SysRecipesTemplate getRecipesTemplateById(Long id) { + return sysRecipesTemplateMapper.getRecipesTemplateById(id); + } +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWapServicesImp.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWapServicesImp.java new file mode 100644 index 000000000..785d57615 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWapServicesImp.java @@ -0,0 +1,39 @@ +package com.stdiet.custom.service.impl; + +import com.stdiet.common.utils.StringUtils; +import com.stdiet.custom.domain.SysRecipesPlan; +import com.stdiet.custom.domain.SysRecipesPlanListInfo; +import com.stdiet.custom.service.ISysCustomerService; +import com.stdiet.custom.service.ISysRecipesPlanService; +import com.stdiet.custom.service.ISysWapServices; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; + +@Service +@Transactional +public class SysWapServicesImp implements ISysWapServices { + + @Autowired + ISysCustomerService iSysCustomerService; + + @Autowired + ISysRecipesPlanService iSysRecipesPlanService; + + @Override + public List getRecipesPlanListInfo(String outId) { + return iSysRecipesPlanService.selectRecipesPlanListInfo(outId); + } + + @Override + public Map getHealthyDataByOutId(String outId) { + Long cusId = iSysRecipesPlanService.getCusIdByOutId(outId); + if(cusId > 0) { + return iSysCustomerService.getPhysicalSignsById(cusId); + } + return null; + } +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/utils/NutritionalUtils.java b/stdiet-custom/src/main/java/com/stdiet/custom/utils/NutritionalUtils.java index e1a89986b..25ece5aaf 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/utils/NutritionalUtils.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/utils/NutritionalUtils.java @@ -1,6 +1,7 @@ package com.stdiet.custom.utils; import com.stdiet.common.utils.HealthyUtils; +import com.stdiet.common.utils.NumberUtils; import com.stdiet.custom.domain.SysCustomerHealthy; import com.stdiet.custom.dto.response.NutritionalCalories; @@ -19,7 +20,7 @@ public class NutritionalUtils { nutritionalCalories.setTall(sysCustomerHealthy.getTall()); nutritionalCalories.setWeight(sysCustomerHealthy.getWeight().doubleValue()); nutritionalCalories.setStandardWeight(HealthyUtils.calculateStandardWeight(nutritionalCalories.getTall())); - double overHeight = nutritionalCalories.getWeight() - nutritionalCalories.getStandardWeight(); + double overHeight = NumberUtils.getNumberByRoundHalfUp(nutritionalCalories.getWeight() - nutritionalCalories.getStandardWeight(),1).doubleValue(); overHeight = overHeight > 0 ? overHeight : 0; nutritionalCalories.setOverWeight(overHeight); nutritionalCalories.setMetabolizeHeat(HealthyUtils.calculateMetabolizeHeat(nutritionalCalories.getAge(), nutritionalCalories.getTall(), nutritionalCalories.getWeight()).intValue()); @@ -32,6 +33,13 @@ public class NutritionalUtils { nutritionalCalories.setNutritionalHeat(nutritionalHeatAndQuality[0]); nutritionalCalories.setNutritionalQuality(nutritionalHeatAndQuality[1]); nutritionalCalories.setWeightNutritionalRate(HealthyUtils.calculateNutritionEveryWeight(nutritionalHeatAndQuality[1], nutritionalCalories.getWeight())); + //活动因子 + nutritionalCalories.setActivityFactor(HealthyUtils.activityFactor); + Long[] heatArray = HealthyUtils.calculateWithoutExerciseHeat(nutritionalCalories.getMetabolizeHeat()); + //不运动热量 + nutritionalCalories.setWithoutExerciseHeat(heatArray[0].intValue()); + //运动热量 + nutritionalCalories.setExerciseHeat(heatArray[1].intValue()); } return nutritionalCalories; } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/utils/OrderUtils.java b/stdiet-custom/src/main/java/com/stdiet/custom/utils/OrderUtils.java index d536639ce..fe82b06f3 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/utils/OrderUtils.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/utils/OrderUtils.java @@ -10,6 +10,8 @@ public class OrderUtils { private static final String[] orderMoneyTypeArray = {"全款单","定金单","尾款单"}; + private static final String[] orderMainTypeArray = {"主单","副单"}; + /** * 根据订单对象获取订单类型名称 * @param sysOrder @@ -18,8 +20,16 @@ public class OrderUtils { public static final String getOrderTypeName(SysOrder sysOrder){ String orderTypeName = ""; orderTypeName += orderTypeArray[Integer.parseInt(sysOrder.getOrderType())]; + //比例拆分单需要确认出主单副单 + /*if("1".equals(sysOrder.getOrderType())){ + orderTypeName += "("+(sysOrder.getMainOrderId().intValue() == 0 ? orderMainTypeArray[0] : orderMainTypeArray[1])+")"; + }*/ orderTypeName += "/"+orderCountTypeArray[Integer.parseInt(sysOrder.getOrderCountType())]; orderTypeName += "/"+orderMoneyTypeArray[Integer.parseInt(sysOrder.getOrderMoneyType())]; + //判断是不是二开提成单 + if("1".equals(sysOrder.getOrderCountType()) && sysOrder.getAfterSaleCommissOrder().intValue() == 1){ + orderTypeName += "/提成单"; + } return orderTypeName; } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/utils/PdfUtils.java b/stdiet-custom/src/main/java/com/stdiet/custom/utils/PdfUtils.java new file mode 100644 index 000000000..41c96e36a --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/utils/PdfUtils.java @@ -0,0 +1,70 @@ +package com.stdiet.custom.utils; + +import com.itextpdf.text.DocumentException; +import com.itextpdf.text.pdf.*; +import com.itextpdf.text.Document; +import com.stdiet.common.core.domain.AjaxResult; + +import java.io.ByteArrayOutputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Map; + +public class PdfUtils { + + /** + * 生成PDF + * @param templatePath PDF模板文件路径 + * @param filePath 目标文件路径 + * @param data 数据 + * @return + */ + public static AjaxResult generatePdfFile(String templatePath, String filePath, Map data){ + AjaxResult ajaxResult = AjaxResult.success(); + + PdfReader reader; + FileOutputStream out; + ByteArrayOutputStream bos; + PdfStamper stamper; + + try { + out = new FileOutputStream(filePath);// 输出流到新的pdf,没有b2.pdf时会创建 + reader = new PdfReader(templatePath);// 读取pdf模板 + bos = new ByteArrayOutputStream(); + stamper = new PdfStamper(reader, bos); + AcroFields form = stamper.getAcroFields(); + + form.addSubstitutionFont(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED)); + for(String key : data.keySet()){ + form.setField(key, data.get(key), true); + } + stamper.setFormFlattening(true);// 如果为false那么生成的PDF文件还能编辑,一定要设为true + stamper.close(); + + Document doc = new Document(); + + PdfCopy copy = new PdfCopy(doc, out); + doc.open(); + PdfImportedPage importPage = null; + for (int i = 1; i <= reader.getNumberOfPages(); i++) { + importPage = copy + .getImportedPage(new PdfReader(bos.toByteArray()), i); + copy.addPage(importPage); + } + doc.close(); + + //Runtime.getRuntime().exec("chmod 644 " + filePath); + } catch (FileNotFoundException e) { + e.printStackTrace(); + ajaxResult = AjaxResult.error(); + } catch (IOException e) { + e.printStackTrace(); + ajaxResult = AjaxResult.error(); + } catch (DocumentException e) { + e.printStackTrace(); + ajaxResult = AjaxResult.error(); + } + return ajaxResult; + } +} diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysCommisionMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysCommisionMapper.xml index 7ba3957bd..b4b9eebe8 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysCommisionMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysCommisionMapper.xml @@ -32,7 +32,9 @@ SELECT ${column} AS user_id, ${postId} AS post_id, SUM(amount) AS amount FROM sys_order WHERE ${column} IS NOT NULL AND ${column} <> 0 AND del_flag = 0 - AND review_status = 'yes' + + AND review_status = #{reviewStatus} + AND date_format(order_time,'%y%m%d') >= date_format(${beginTime},'%y%m%d') @@ -47,6 +49,7 @@ JOIN ( + @@ -54,6 +57,7 @@ UNION + @@ -61,6 +65,7 @@ UNION + @@ -68,6 +73,7 @@ UNION + @@ -75,6 +81,7 @@ UNION + @@ -82,6 +89,7 @@ UNION + @@ -89,6 +97,7 @@ UNION + @@ -96,6 +105,7 @@ UNION + @@ -188,7 +198,8 @@ - SELECT su.user_id,su.nick_name as user_name,sp.post_id, sp.post_code,sp.post_name FROM sys_user su LEFT JOIN sys_user_post sup ON sup.user_id = su.user_id LEFT JOIN sys_post sp ON sp.post_id = sup.post_id diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysCustomerCaseFileMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysCustomerCaseFileMapper.xml new file mode 100644 index 000000000..94c5b23a8 --- /dev/null +++ b/stdiet-custom/src/main/resources/mapper/custom/SysCustomerCaseFileMapper.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + select id, case_id, file_url, file_name, create_time, create_by, update_time, update_by, del_flag from sys_customer_case_file + + + + + + + + + + + insert into sys_customer_case_file + + case_id, + file_url, + file_name, + create_time, + create_by, + update_time, + update_by, + del_flag, + + + #{caseId}, + #{fileUrl}, + #{fileName}, + #{createTime}, + #{createBy}, + #{updateTime}, + #{updateBy}, + #{delFlag}, + + + + + update sys_customer_case_file + + case_id = #{caseId}, + file_url = #{fileUrl}, + file_name = #{fileName}, + create_time = #{createTime}, + create_by = #{createBy}, + update_time = #{updateTime}, + update_by = #{updateBy}, + del_flag = #{delFlag}, + + where id = #{id} + + + + update sys_customer_case_file set del_flag = 1 where id = #{id} + + + + update sys_customer_case_file set del_flag = 1 where id in + + #{id} + + + + + + update sys_customer_case_file set del_flag = 1 where case_id = #{caseId} + + + + + update sys_customer_case_file set del_flag = 1 where case_id in + + #{caseId} + + + + + + INSERT INTO sys_customer_case_file + (case_id, file_url, file_name) + VALUES + + (#{caseFile.caseId}, #{caseFile.fileUrl}, #{caseFile.fileName}) + + + + + \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysCustomerCaseMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysCustomerCaseMapper.xml new file mode 100644 index 000000000..8f1ce69c0 --- /dev/null +++ b/stdiet-custom/src/main/resources/mapper/custom/SysCustomerCaseMapper.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + select id, name, keyword, remark, customer_id, create_time from sys_customer_case + + + + + + + + insert into sys_customer_case + + name, + keyword, + remark, + customer_id, + create_time, + create_by, + update_time, + update_by, + del_flag, + + + #{name}, + #{keyword}, + #{remark}, + #{customerId}, + #{createTime}, + #{createBy}, + #{updateTime}, + #{updateBy}, + #{delFlag}, + + + + + update sys_customer_case + + name = #{name}, + keyword = #{keyword}, + remark = #{remark}, + customer_id = #{customerId}, + create_time = #{createTime}, + create_by = #{createBy}, + update_time = #{updateTime}, + update_by = #{updateBy}, + del_flag = #{delFlag}, + + where id = #{id} + + + + update sys_customer_case set del_flag = 1 where id = #{id} + + + + update sys_customer_case set del_flag = 1 where id in + + #{id} + + + + \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysCustomerHealthyMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysCustomerHealthyMapper.xml index 7f32de28e..437aedd3f 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysCustomerHealthyMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysCustomerHealthyMapper.xml @@ -112,6 +112,7 @@ + @@ -123,7 +124,7 @@ select sch.id, customer_id, conditioning_project_id, sex, age, weight, tall, condiment, other_condiment, cooking_style, cooking_style_rate, wash_vegetables_style, other_wash_vegetables_style, breakfast_type, breakfast_food, lunch_type, dinner, vegetable_rate, common_meat, dinner_time, supper_num, supper_food, diet_hot_and_cold, diet_flavor, vegetables_num, vegetables_rate_type, fruits_num, fruits_time, fruits_rate, rice_num, rice_full, eating_speed, snacks, other_snacks, health_products_flag, health_products_brand, health_products_name, health_products_week_rate, health_products_day_rate, water_num, water_type, water_habit, drinks_num, drink_wine_flag, drink_wine_classify, other_wine_classify, drink_wine_amount, smoke_flag, smoke_rate, second_smoke, work_industry, work_type, defecation_num, other_defecation_num, defecation_time, defecation_shape, defecation_smell, defecation_speed, defecation_color, motion_num, motion_duration, motion_time, aerobic_motion_classify, anaerobic_motion_classify, anaerobic_aerobic_motion_classify, other_motion_classify, motion_field, other_motion_field, sleep_time, sleep_quality, sleep_drug_flag, sleep_drug, stayup_late_flag, stayup_late_week_num, family_illness_history, other_family_illness_history, operation_history, other_operation_history, near_operation_flag, recoverye_situation, long_eat_drug_flag, long_eat_drug_classify, other_long_eat_drug_classify, allergy_flag, allergy_situation, allergen, other_allergen, medical_report, medical_report_name, - position,experience,rebound,difficulty,crux,dishes_ingredient,make_food_type,physical_signs_id,other_physical_signs,blood_data,moisture_date,sch.remark, + position,experience,rebound,difficulty,crux,dishes_ingredient,make_food_type,physical_signs_id,other_physical_signs,blood_data,moisture_date,sch.remark,sch.guidance, sch.create_time, sch.create_by,sch. update_time, sch.update_by, sch.del_flag @@ -261,6 +262,7 @@ blood_data, moisture_date, remark, + guidance, create_time, create_by, update_time, @@ -369,6 +371,7 @@ #{bloodData}, #{moistureDate}, #{remark}, + #{guidance}, #{createTime}, #{createBy}, #{updateTime}, @@ -480,6 +483,7 @@ blood_data = #{bloodData}, moisture_date = #{moistureDate}, remark = #{remark}, + guidance = #{guidance}, create_time = #{createTime}, create_by = #{createBy}, update_time = #{updateTime}, @@ -517,4 +521,20 @@ update sys_customer_healthy set del_flag = 1 where customer_id = #{customerId} + + + + + + + + + + \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml index a79ab03a5..4d2e8e819 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysDishesMapper.xml @@ -44,6 +44,7 @@ and review_status = #{reviewStatus} and is_main = #{isMain} + order by id desc @@ -91,7 +92,7 @@ is_main, methods, create_by, - review_status + review_status, create_time, update_by, update_time, @@ -102,7 +103,7 @@ #{isMain}, #{methods}, #{createBy}, - #{reviewStatus} + #{reviewStatus}, #{createTime}, #{updateBy}, #{updateTime}, diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml index 04006ff8a..6cd8b80df 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml @@ -69,6 +69,28 @@ LEFT JOIN (SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'conditioning_project') AS cp ON cp.dict_value = o.conditioning_project_id + + + + + ( + + + order_type = #{type} + + + order_count_type = #{type} + + + order_money_type = #{type} + + + ) + + + + + @@ -139,6 +166,9 @@ and 0 > amount + + + and o.del_flag = 0 order by order_time desc @@ -365,7 +395,10 @@ from sys_order o left join sys_user su_sale on su_sale.user_id = o.after_sale_id and su_sale.del_flag = 0 left join sys_user su_nutritionist on su_nutritionist.user_id = o.nutritionist_id and su_nutritionist.del_flag = 0 - where review_status = 'yes' and o.order_time >= '2021-01-01' and o.del_flag = 0 + where o.order_time >= '2021-01-01' and o.del_flag = 0 + + and review_status = #{reviewStatus} + and (su_sale.user_id = #{userId} or su_nutritionist.user_id = #{userId}) diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysOrderPauseMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysOrderPauseMapper.xml index 6b175989b..3493d133a 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysOrderPauseMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysOrderPauseMapper.xml @@ -5,39 +5,41 @@ - - - - - - - - - - - + + + + + + + + + + + + - id, order_id, pause_start_date, pause_end_date, reason, remarks, create_time, create_by, update_time, update_by, del_flag + id, order_id, cus_id, pause_start_date, pause_end_date, reason, remarks, create_time, create_by, update_time, update_by, del_flag - select id, order_id, pause_start_date, pause_end_date, reason, remarks, create_time, create_by, update_time, update_by, del_flag from sys_order_pause sop + select id, order_id, cus_id, pause_start_date, pause_end_date, reason, remarks, create_time, create_by, update_time, update_by, del_flag from sys_recipes_pause sop - insert into sys_order_pause + insert into sys_recipes_pause order_id, + cus_id, pause_start_date, pause_end_date, reason, @@ -61,6 +64,7 @@ #{orderId}, + #{cusId}, #{pauseStartDate}, #{pauseEndDate}, #{reason}, @@ -74,9 +78,10 @@ - update sys_order_pause + update sys_recipes_pause order_id = #{orderId}, + cus_id = #{cusId}, pause_start_date = #{pauseStartDate}, pause_end_date = #{pauseEndDate}, reason = #{reason}, @@ -91,19 +96,19 @@ - update sys_order_pause set del_flag = 1 where id = #{id} + update sys_recipes_pause set del_flag = 1 where id = #{id} - update sys_order_pause set del_flag = 1 where id in + update sys_recipes_pause set del_flag = 1 where id in #{id} - - + select count(id) from sys_recipes_pause where del_flag = 0 and cus_id = #{cusId} AND (#{pauseStartDate} >= pause_start_date AND pause_end_date >= #{pauseStartDate} OR #{pauseEndDate} >= pause_start_date AND pause_end_date >= #{pauseEndDate}) @@ -114,10 +119,24 @@ - update sys_order_pause set del_flag = 1 where order_id in + update sys_recipes_pause set del_flag = 1 where order_id in #{orderId} + + + + + \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml index 3e15a55d7..82feea188 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml @@ -82,6 +82,9 @@ update sys_customer_menu_dishes + menu_id = #{menuId}, + dishes_id = #{dishesId}, + type = #{type}, detail = #{detail, jdbcType=OTHER, typeHandler=com.stdiet.custom.typehandler.ArrayJsonHandler}, where id = #{id} diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml index 05904355f..7dab14631 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml @@ -5,48 +5,56 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + - select id, order_id, cus_id, start_date, end_date, start_num_day, end_num_day, recipes_id, send_flag, send_time, create_time, create_by, update_time, update_by, del_flag from sys_recipes_plan + select id, order_id, cus_id, start_date, end_date, start_num_day, end_num_day, recipes_id, send_flag, send_time, pause_date, create_time, create_by, update_time, update_by, del_flag, review_status from sys_recipes_plan + + + insert into sys_recipes_plan order_id, cus_id, + out_id, start_date, end_date, start_num_day, @@ -66,15 +81,19 @@ recipes_id, send_flag, send_time, + pause_date, create_time, create_by, update_time, update_by, del_flag, + review_status, + type, #{orderId}, #{cusId}, + #{outId}, #{startDate}, #{endDate}, #{startNumDay}, @@ -82,11 +101,14 @@ #{recipesId}, #{sendFlag}, #{sendTime}, + #{pauseDate}, #{createTime}, #{createBy}, #{updateTime}, #{updateBy}, #{delFlag}, + #{reviewStatus}, + #{type}, @@ -95,6 +117,7 @@ order_id = #{orderId}, cus_id = #{cusId}, + out_id = #{outId}, start_date = #{startDate}, end_date = #{endDate}, start_num_day = #{startNumDay}, @@ -102,62 +125,70 @@ recipes_id = #{recipesId}, send_flag = #{sendFlag}, send_time = #{sendTime}, + pause_date = #{pauseDate}, create_time = #{createTime}, create_by = #{createBy}, update_time = #{updateTime}, update_by = #{updateBy}, del_flag = #{delFlag}, + review_status = #{reviewStatus}, where id = #{id} and del_flag = 0 - - delete from sys_recipes_plan where id = #{id} - + + update sys_recipes_plan set del_flag = 1 where id = #{id} + - - delete from sys_recipes_plan where id in + + update sys_recipes_plan set del_flag = 1 where id in #{id} - + INSERT INTO sys_recipes_plan - (order_id, cus_id, start_date, end_date, start_num_day, end_num_day, send_flag, send_time, recipes_id) + (order_id, cus_id, out_id, start_date, end_date, start_num_day, end_num_day, send_flag, send_time, pause_date, recipes_id) VALUES - - (#{plan.orderId}, #{plan.cusId}, #{plan.startDate}, #{plan.endDate}, #{plan.startNumDay}, #{plan.endNumDay}, #{plan.sendFlag}, #{plan.sendTime}, #{plan.recipesId}) - + + (#{plan.orderId}, #{plan.cusId}, #{plan.outId}, #{plan.startDate}, #{plan.endDate}, #{plan.startNumDay}, #{plan.endNumDay}, + #{plan.sendFlag}, #{plan.sendTime}, #{plan.pauseDate}, #{plan.recipesId}) + - delete from sys_recipes_plan where order_id in - + update sys_recipes_plan set del_flag = 1 where order_id in + #{orderId} - + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + update sys_recipes_plan set start_date = #{startDate},end_date = #{endDate},pause_date=#{pauseDate} where id = #{id} + \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesTemplateMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesTemplateMapper.xml new file mode 100644 index 000000000..6a212f21b --- /dev/null +++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesTemplateMapper.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into sys_recipes_template + + name, + plan_id, + nutri_assis_id, + nutritionist_id, + create_time, + create_by, + update_time, + update_by, + remark, + + + #{name}, + #{planId}, + #{nutriAssisId}, + #{nutritionistId}, + #{createTime}, + #{createBy}, + #{updateTime}, + #{updateBy}, + #{remark}, + + + + + update sys_recipes_template + + name = #{name}, + nutri_assis_id = #{nutriAssisId}, + nutritionist_id = #{nutritionistId}, + create_time = #{createTime}, + create_by = #{createBy}, + update_time = #{updateTime}, + update_by = #{updateBy}, + remark = #{remark}, + + where id = #{id} + + + + update sys_recipes_template set del_flag=1 where id = #{id} + + + \ No newline at end of file diff --git a/stdiet-framework/src/main/java/com/stdiet/framework/config/SecurityConfig.java b/stdiet-framework/src/main/java/com/stdiet/framework/config/SecurityConfig.java index 32f8b94bd..603828f51 100644 --- a/stdiet-framework/src/main/java/com/stdiet/framework/config/SecurityConfig.java +++ b/stdiet-framework/src/main/java/com/stdiet/framework/config/SecurityConfig.java @@ -102,6 +102,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { "/custom/wxUserInfo/wx/**", "/custom/wxUserLog/wx/**", "/wx/**", + "/wap/**", "/investigate/**", "/common/customerUploadFile" ).anonymous() diff --git a/stdiet-ui/package.json b/stdiet-ui/package.json index e9357aaf0..76287eff4 100644 --- a/stdiet-ui/package.json +++ b/stdiet-ui/package.json @@ -64,6 +64,7 @@ "vue": "2.6.10", "vue-count-to": "1.0.13", "vue-cropper": "0.4.9", + "vue-qr": "^2.3.0", "vue-router": "3.0.2", "vue-scrollto": "^2.20.0", "vue-splitpane": "1.0.4", diff --git a/stdiet-ui/src/api/custom/contract.js b/stdiet-ui/src/api/custom/contract.js index 31881d27c..d07cde417 100644 --- a/stdiet-ui/src/api/custom/contract.js +++ b/stdiet-ui/src/api/custom/contract.js @@ -1,68 +1,74 @@ -import request from '@/utils/request' +import request from "@/utils/request"; // 查询合同列表 export function listContract(query) { return request({ - url: '/custom/contract/list', - method: 'get', + url: "/custom/contract/list", + method: "get", params: query - }) + }); } // 查询合同详细 export function getContract(id) { return request({ - url: '/custom/contract/' + id, - method: 'get' - }) + url: "/custom/contract/" + id, + method: "get" + }); } // 新增合同 export function addContract(data) { return request({ - url: '/custom/contract', - method: 'post', + url: "/custom/contract", + method: "post", data: data - }) + }); } // 修改合同 export function updateContract(data) { return request({ - url: '/custom/contract', - method: 'put', + url: "/custom/contract", + method: "put", data: data - }) + }); } // 删除合同 export function delContract(id) { return request({ - url: '/custom/contract/' + id, - method: 'delete' - }) + url: "/custom/contract/" + id, + method: "delete" + }); } // 导出合同 export function exportContract(query) { return request({ - url: '/custom/contract/export', - method: 'get', + url: "/custom/contract/export", + method: "get", params: query - }) + }); } export function getFile(id) { return request({ - url: '/custom/contract/file/' + id, - method: 'get', - }) + url: "/custom/contract/file/" + id, + method: "get", + headers: { + isToken: false + } + }); } export function signContract(data) { return request({ - url: '/custom/contract/sign', - method: 'post', - data: data - }) + url: "/custom/contract/sign", + method: "post", + data: data, + headers: { + isToken: false + } + }); } diff --git a/stdiet-ui/src/api/custom/customerCase.js b/stdiet-ui/src/api/custom/customerCase.js new file mode 100644 index 000000000..1d8c6358a --- /dev/null +++ b/stdiet-ui/src/api/custom/customerCase.js @@ -0,0 +1,84 @@ +import request from '@/utils/request' + +// 查询客户案例管理列表 +export function listCustomerCase(query) { + return request({ + url: '/custom/customerCase/list', + method: 'get', + params: query + }) +} + +// 查询客户案例管理详细 +export function getCustomerCase(id) { + return request({ + url: '/custom/customerCase/' + id, + method: 'get' + }) +} + +// 新增客户案例管理 +export function addCustomerCase(data) { + return request({ + url: '/custom/customerCase', + method: 'post', + data: data + }) +} + +// 修改客户案例管理 +export function updateCustomerCase(data) { + return request({ + url: '/custom/customerCase', + method: 'put', + data: data + }) +} + +// 删除客户案例管理 +export function delCustomerCase(id) { + return request({ + url: '/custom/customerCase/' + id, + method: 'delete' + }) +} + +// 导出客户案例管理 +export function exportCustomerCase(query) { + return request({ + url: '/custom/customerCase/export', + method: 'get', + params: query + }) +} + +// 根据案例ID查询对应文件列表 +export function getFileListByCaseId(caseId) { + return request({ + url: '/custom/customerCase/getFileListByCaseId', + method: 'get', + params: {"caseId": caseId} + }) +} + +// 上传案例文件 +export function uploadCseFile(data) { + return request({ + url: '/custom/customerCase/uploadCseFile', + method: 'post', + data: data + }) +} + +// 下载案例文件 +export function downCaseFile(data) { + return request({ + url: '/custom/customerCase/downCaseFile', + method: 'post', + data: data + }) +} + + + + diff --git a/stdiet-ui/src/api/custom/healthy.js b/stdiet-ui/src/api/custom/healthy.js index 473401e9c..f4b718818 100644 --- a/stdiet-ui/src/api/custom/healthy.js +++ b/stdiet-ui/src/api/custom/healthy.js @@ -61,4 +61,14 @@ export function download(fileName) { }) } +// 生成健康体征报告 +export function generateHealthyReport(healthyDetail) { + return request({ + url: '/custom/healthy/generateHealthyReport', + method: 'post', + data: healthyDetail + }) +} + + diff --git a/stdiet-ui/src/api/custom/recipes.js b/stdiet-ui/src/api/custom/recipes.js index 3ab412055..f8ecdbd6c 100644 --- a/stdiet-ui/src/api/custom/recipes.js +++ b/stdiet-ui/src/api/custom/recipes.js @@ -2,7 +2,7 @@ import request from "@/utils/request"; export function addRecipesApi(data) { return request({ - url: "/custom/recipes/", + url: "/custom/recipes", method: "post", data }); diff --git a/stdiet-ui/src/api/custom/orderPause.js b/stdiet-ui/src/api/custom/recipesPause.js similarity index 78% rename from stdiet-ui/src/api/custom/orderPause.js rename to stdiet-ui/src/api/custom/recipesPause.js index e968e755c..a37d648ba 100644 --- a/stdiet-ui/src/api/custom/orderPause.js +++ b/stdiet-ui/src/api/custom/recipesPause.js @@ -3,7 +3,7 @@ import request from '@/utils/request' // 查询订单服务暂停列表 export function listPause(query) { return request({ - url: '/orderPause/pause/list', + url: '/recipes/pause/list', method: 'get', params: query }) @@ -12,7 +12,7 @@ export function listPause(query) { // 查询订单服务暂停详细 export function getPause(id) { return request({ - url: '/orderPause/pause/' + id, + url: '/recipes/pause/' + id, method: 'get' }) } @@ -20,7 +20,7 @@ export function getPause(id) { // 新增订单服务暂停 export function addPause(data) { return request({ - url: '/orderPause/pause', + url: '/recipes/pause', method: 'post', data: data }) @@ -29,7 +29,7 @@ export function addPause(data) { // 修改订单服务暂停 export function updatePause(data) { return request({ - url: '/orderPause/pause', + url: '/recipes/pause', method: 'put', data: data }) @@ -38,7 +38,7 @@ export function updatePause(data) { // 删除订单服务暂停 export function delPause(id) { return request({ - url: '/orderPause/pause/' + id, + url: '/recipes/pause/' + id, method: 'delete' }) } @@ -46,7 +46,7 @@ export function delPause(id) { // 导出订单服务暂停 export function exportPause(query) { return request({ - url: '/orderPause/pause/export', + url: '/recipes/pause/export', method: 'get', params: query }) diff --git a/stdiet-ui/src/api/custom/recipesPlan.js b/stdiet-ui/src/api/custom/recipesPlan.js index 5fe40ae7c..b58401ef8 100644 --- a/stdiet-ui/src/api/custom/recipesPlan.js +++ b/stdiet-ui/src/api/custom/recipesPlan.js @@ -1,36 +1,43 @@ -import request from '@/utils/request' +import request from "@/utils/request"; // 查询食谱计划列表 export function listRecipesPlan(query) { return request({ - url: '/recipes/recipesPlan/list', - method: 'get', + url: "/recipes/recipesPlan/list", + method: "get", params: query - }) + }); } // 查询食谱计划详细 export function getRecipesPlan(id) { return request({ - url: '/recipes/recipesPlan/' + id, - method: 'get' - }) + url: "/recipes/recipesPlan/" + id, + method: "get" + }); } // 修改食谱计划 export function updateRecipesPlan(data) { return request({ - url: '/recipes/recipesPlan', - method: 'put', + url: "/recipes/recipesPlan", + method: "put", data: data - }) + }); } // 导出食谱计划 export function exportRecipesPlan(query) { return request({ - url: '/recipes/recipesPlan/export', - method: 'get', + url: "/recipes/recipesPlan/export", + method: "get", params: query - }) + }); +} + +export function listRecipesPlanByCusId(id) { + return request({ + url: "/recipes/recipesPlan/list/" + id, + method: "get" + }); } diff --git a/stdiet-ui/src/api/custom/recipesShow.js b/stdiet-ui/src/api/custom/recipesShow.js new file mode 100644 index 000000000..de4d58dc7 --- /dev/null +++ b/stdiet-ui/src/api/custom/recipesShow.js @@ -0,0 +1,41 @@ +import request from "@/utils/request"; + +export function getRecipesPlans(id) { + return request({ + url: "/wap/recipes/plans/" + id, + method: "get", + headers: { + isToken: false + } + }); +} + +export function getHealthyInfo(id) { + return request({ + url: "/wap/healthyInfo/" + id, + method: "get", + headers: { + isToken: false + } + }); +} + +export function getRecipesMenuInfoApi(id) { + return request({ + url: "/wap/recipes/menu/" + id, + method: "get", + headers: { + isToken: false + } + }); +} + +export function getDicts(id) { + return request({ + url: "/wap/dict/" + id, + method: "get", + headers: { + isToken: false + } + }); +} diff --git a/stdiet-ui/src/api/custom/recipesTemplate.js b/stdiet-ui/src/api/custom/recipesTemplate.js new file mode 100644 index 000000000..4d8167140 --- /dev/null +++ b/stdiet-ui/src/api/custom/recipesTemplate.js @@ -0,0 +1,39 @@ +import request from "@/utils/request"; + +export function listRecipesTemplate(query) { + return request({ + url: "/recipes/template/list", + method: "get", + params: query + }); +} + +export function getRecipesTemplateDetail(id) { + return request({ + url: "/recipes/template/" + id, + method: "get" + }); +} + +export function addRecipesTemplate(data) { + return request({ + url: "/recipes/template/add", + method: "post", + data: data + }); +} + +export function updateRecipesTemplate(data) { + return request({ + url: "/recipes/template/update", + method: "put", + data: data + }); +} + +export function deleteRecipesTemplate(id) { + return request({ + url: "/recipes/template/delete/" + id, + method: "delete" + }); +} diff --git a/stdiet-ui/src/api/system/dict/data.js b/stdiet-ui/src/api/system/dict/data.js index d7aca8923..bd4d851b8 100644 --- a/stdiet-ui/src/api/system/dict/data.js +++ b/stdiet-ui/src/api/system/dict/data.js @@ -1,61 +1,61 @@ -import request from '@/utils/request' +import request from "@/utils/request"; // 查询字典数据列表 export function listData(query) { return request({ - url: '/system/dict/data/list', - method: 'get', + url: "/system/dict/data/list", + method: "get", params: query - }) + }); } // 查询字典数据详细 export function getData(dictCode) { return request({ - url: '/system/dict/data/' + dictCode, - method: 'get' - }) + url: "/system/dict/data/" + dictCode, + method: "get" + }); } // 根据字典类型查询字典数据信息 export function getDicts(dictType) { return request({ - url: '/system/dict/data/type/' + dictType, - method: 'get' - }) + url: "/system/dict/data/type/" + dictType, + method: "get" + }); } // 新增字典数据 export function addData(data) { return request({ - url: '/system/dict/data', - method: 'post', + url: "/system/dict/data", + method: "post", data: data - }) + }); } // 修改字典数据 export function updateData(data) { return request({ - url: '/system/dict/data', - method: 'put', + url: "/system/dict/data", + method: "put", data: data - }) + }); } // 删除字典数据 export function delData(dictCode) { return request({ - url: '/system/dict/data/' + dictCode, - method: 'delete' - }) + url: "/system/dict/data/" + dictCode, + method: "delete" + }); } // 导出字典数据 export function exportData(query) { return request({ - url: '/system/dict/data/export', - method: 'get', + url: "/system/dict/data/export", + method: "get", params: query - }) -} \ No newline at end of file + }); +} diff --git a/stdiet-ui/src/components/BodySignView/index.vue b/stdiet-ui/src/components/BodySignView/index.vue new file mode 100644 index 000000000..417dc8b4c --- /dev/null +++ b/stdiet-ui/src/components/BodySignView/index.vue @@ -0,0 +1,155 @@ + + + diff --git a/stdiet-ui/src/components/ContractDrawer/index.vue b/stdiet-ui/src/components/ContractDrawer/index.vue index 2facf1ccf..c315d1e20 100644 --- a/stdiet-ui/src/components/ContractDrawer/index.vue +++ b/stdiet-ui/src/components/ContractDrawer/index.vue @@ -50,21 +50,27 @@ width="200" /> - + @@ -108,15 +114,18 @@ import { delContract, listContract } from "@/api/custom/contract"; import ContractDetail from "@/components/ContractDetail"; import Clipboard from "clipboard"; import ContractAdd from "@/components/ContractAdd"; - +import VueQr from "vue-qr"; +const logo = require("@/assets/logo/logo_b.png"); export default { name: "CustomerContractDrawer", components: { "contract-detail": ContractDetail, "add-contract": ContractAdd, + VueQr, }, data() { return { + logo, visible: false, title: "", data: undefined, diff --git a/stdiet-ui/src/components/Customer/SelectCustomer.vue b/stdiet-ui/src/components/Customer/SelectCustomer.vue new file mode 100644 index 000000000..27e1daba1 --- /dev/null +++ b/stdiet-ui/src/components/Customer/SelectCustomer.vue @@ -0,0 +1,174 @@ + + + diff --git a/stdiet-ui/src/components/FileDownload/MuchFileDown.vue b/stdiet-ui/src/components/FileDownload/MuchFileDown.vue new file mode 100644 index 000000000..f677b5a4f --- /dev/null +++ b/stdiet-ui/src/components/FileDownload/MuchFileDown.vue @@ -0,0 +1,73 @@ + + + diff --git a/stdiet-ui/src/components/FileUpload/DragUpload.vue b/stdiet-ui/src/components/FileUpload/DragUpload.vue new file mode 100644 index 000000000..6ce5494b8 --- /dev/null +++ b/stdiet-ui/src/components/FileUpload/DragUpload.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/stdiet-ui/src/views/custom/recipesBuild/HealthyView.vue b/stdiet-ui/src/components/HealthyView/index.vue similarity index 76% rename from stdiet-ui/src/views/custom/recipesBuild/HealthyView.vue rename to stdiet-ui/src/components/HealthyView/index.vue index a6b0135ac..ee00f0956 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/HealthyView.vue +++ b/stdiet-ui/src/components/HealthyView/index.vue @@ -1,7 +1,15 @@ - diff --git a/stdiet-ui/src/components/HeatStatisticsDrawer/index.vue b/stdiet-ui/src/components/HeatStatisticsDrawer/index.vue index 2f050501e..1e0b4b929 100644 --- a/stdiet-ui/src/components/HeatStatisticsDrawer/index.vue +++ b/stdiet-ui/src/components/HeatStatisticsDrawer/index.vue @@ -10,16 +10,34 @@
- 外食计算器 + 外食计算器 + + + 二维码 + - - + + - - + - + - - - + +
diff --git a/stdiet-ui/src/components/OrderAdd/index.vue b/stdiet-ui/src/components/OrderAdd/index.vue index 6e2c4e562..5c1faa71e 100644 --- a/stdiet-ui/src/components/OrderAdd/index.vue +++ b/stdiet-ui/src/components/OrderAdd/index.vue @@ -37,7 +37,7 @@ - + diff --git a/stdiet-ui/src/components/OrderEdit/index.vue b/stdiet-ui/src/components/OrderEdit/index.vue index f4e34b65f..72849f5f8 100644 --- a/stdiet-ui/src/components/OrderEdit/index.vue +++ b/stdiet-ui/src/components/OrderEdit/index.vue @@ -16,7 +16,7 @@ - + diff --git a/stdiet-ui/src/components/PhysicalSignsDialog/index.vue b/stdiet-ui/src/components/PhysicalSignsDialog/index.vue index be164b16f..5c237474e 100644 --- a/stdiet-ui/src/components/PhysicalSignsDialog/index.vue +++ b/stdiet-ui/src/components/PhysicalSignsDialog/index.vue @@ -1,96 +1,267 @@ diff --git a/stdiet-ui/src/components/PhysicalSignsGuidance/index.vue b/stdiet-ui/src/components/PhysicalSignsGuidance/index.vue new file mode 100644 index 000000000..fc3356095 --- /dev/null +++ b/stdiet-ui/src/components/PhysicalSignsGuidance/index.vue @@ -0,0 +1,88 @@ + + + + diff --git a/stdiet-ui/src/components/PhysicalSignsRemark/index.vue b/stdiet-ui/src/components/PhysicalSignsRemark/index.vue index 8c3d57b71..a2d43b832 100644 --- a/stdiet-ui/src/components/PhysicalSignsRemark/index.vue +++ b/stdiet-ui/src/components/PhysicalSignsRemark/index.vue @@ -4,7 +4,7 @@ + +
+ + + 新增 + + + 导出 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff --git a/stdiet-ui/src/components/RecipesPlanDrawer/index.vue b/stdiet-ui/src/components/RecipesPlanDrawer/index.vue index dbecf5cbb..db51810f0 100644 --- a/stdiet-ui/src/components/RecipesPlanDrawer/index.vue +++ b/stdiet-ui/src/components/RecipesPlanDrawer/index.vue @@ -4,73 +4,132 @@ :close-on-press-escape="false" :visible.sync="visible" @closed="handleOnClosed" - size="40%" + size="45%" > -
+
客户食谱链接 + + + 查看暂停记录 - -
- - - 查看暂停记录 - - - -
-
+ + + + + + + + + + + + + + + + +
@@ -78,4 +137,8 @@ export default { /deep/ :focus { outline: 0; } + +.recipes_plan_drawer_wrapper { + height: calc(100vh - 77px); +} diff --git a/stdiet-ui/src/permission.js b/stdiet-ui/src/permission.js index c1c9875bb..41a8e5ba6 100644 --- a/stdiet-ui/src/permission.js +++ b/stdiet-ui/src/permission.js @@ -1,43 +1,52 @@ -import router from './router' -import store from './store' -import {Message} from 'element-ui' -import NProgress from 'nprogress' -import 'nprogress/nprogress.css' -import {getToken} from '@/utils/auth' +import router from "./router"; +import store from "./store"; +import { Message } from "element-ui"; +import NProgress from "nprogress"; +import "nprogress/nprogress.css"; +import { getToken } from "@/utils/auth"; -NProgress.configure({showSpinner: false}) +NProgress.configure({ showSpinner: false }); -const whiteList = ['/login', '/auth-redirect', '/bind', '/register', '/question', '/subhealthyInvestigation'] +const whiteList = [ + "/login", + "/auth-redirect", + "/bind", + "/register", + "/question", + "/subhealthyInvestigation" +]; router.beforeEach((to, from, next) => { - NProgress.start() + NProgress.start(); if (getToken()) { /* has token*/ - if (to.path === '/login') { - next({path: '/'}) - NProgress.done() + if (to.path === "/login") { + next({ path: "/" }); + NProgress.done(); } else { if (store.getters.roles.length === 0) { // 判断当前用户是否已拉取完user_info信息 - store.dispatch('GetInfo').then(res => { - // 拉取user_info - const roles = res.roles - store.dispatch('GenerateRoutes', {roles}).then(accessRoutes => { - // 测试 默认静态页面 - // store.dispatch('permission/generateRoutes', { roles }).then(accessRoutes => { - // 根据roles权限生成可访问的路由表 - router.addRoutes(accessRoutes) // 动态添加可访问路由表 - next({...to, replace: true}) // hack方法 确保addRoutes已完成 + store + .dispatch("GetInfo") + .then(res => { + // 拉取user_info + const roles = res.roles; + store.dispatch("GenerateRoutes", { roles }).then(accessRoutes => { + // 测试 默认静态页面 + // store.dispatch('permission/generateRoutes', { roles }).then(accessRoutes => { + // 根据roles权限生成可访问的路由表 + router.addRoutes(accessRoutes); // 动态添加可访问路由表 + next({ ...to, replace: true }); // hack方法 确保addRoutes已完成 + }); }) - }) .catch(err => { - store.dispatch('FedLogOut').then(() => { - Message.error(err) - next({path: '/'}) - }) - }) + store.dispatch("FedLogOut").then(() => { + Message.error(err); + next({ path: "/" }); + }); + }); } else { - next() + next(); // 没有动态改变权限的需求可直接next() 删除下方权限判断 ↓ // if (hasPermission(store.getters.roles, to.meta.roles)) { // next() @@ -49,17 +58,22 @@ router.beforeEach((to, from, next) => { } } else { // 没有token - if (whiteList.indexOf(to.path) !== -1 || to.path.startsWith('/f/contract/') || to.path.startsWith('/subhealthyInvestigation/') - || to.path.startsWith('/foodHeatCalculator/')) { + if ( + whiteList.indexOf(to.path) !== -1 || + to.path.startsWith("/f/contract/") || + to.path.startsWith("/recipes/detail/") || + to.path.startsWith("/subhealthyInvestigation/") || + to.path.startsWith("/foodHeatCalculator/") + ) { // 在免登录白名单,直接进入 - next() + next(); } else { - next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 - NProgress.done() + next(`/login?redirect=${to.fullPath}`); // 否则全部重定向到登录页 + NProgress.done(); } } -}) +}); router.afterEach(() => { - NProgress.done() -}) + NProgress.done(); +}); diff --git a/stdiet-ui/src/router/index.js b/stdiet-ui/src/router/index.js index fea245cae..c406b278d 100644 --- a/stdiet-ui/src/router/index.js +++ b/stdiet-ui/src/router/index.js @@ -71,20 +71,6 @@ export const constantRoutes = [ } ] }, - { - path: "/order", - component: Layout, - hidden: true, - children: [ - { - path: "orderPause/:orderId", - component: resolve => - require(["@/views/custom/order/orderPause"], resolve), - name: "orderPause", - meta: { title: "订单暂停记录" } - } - ] - }, { path: "/user", component: Layout, @@ -140,12 +126,20 @@ export const constantRoutes = [ ] }, { - path: "/recipes/build", + path: "/recipes/build/:name/:planId", component: resolve => require(["@/views/custom/recipesBuild"], resolve), name: "RecipiesBuild", + props: true, meta: { title: "食谱制作" }, hidden: true }, + { + path: "/recipes/detail/:id", + component: resolve => require(["@/views/custom/recipesShow"], resolve), + props: true, + meta: { title: "健康食谱" }, + hidden: true + }, { path: "/f/contract/:id(\\d+)", hidden: true, diff --git a/stdiet-ui/src/store/modules/recipes.js b/stdiet-ui/src/store/modules/recipes.js index 4311492bd..f6a514d2e 100644 --- a/stdiet-ui/src/store/modules/recipes.js +++ b/stdiet-ui/src/store/modules/recipes.js @@ -7,11 +7,14 @@ import { deleteDishesApi, addRecipesApi } from "@/api/custom/recipes"; +import { getRecipesTemplateDetail } from "@/api/custom/recipesTemplate"; +import { getRecipesPlan, updateRecipesPlan } from "@/api/custom/recipesPlan"; import { getDicts } from "@/api/system/dict/data"; const oriState = { cusId: undefined, planId: undefined, + temId: undefined, recipesId: undefined, healthyData: {}, healthDataLoading: false, @@ -20,31 +23,56 @@ const oriState = { recipesDataLoading: false, cusUnitOptions: [], cusWeightOptions: [], - dishesTypeOptions: [], typeOptions: [], currentDay: -1, startNum: 0, - endNum: 0 + endNum: 0, + reviewStatus: 0, + templateInfo: undefined, + copyData: undefined, + fontSize: 12 }; const mutations = { updateRecipesDishesDetail(state, payload) { const tarDishes = state.recipesData[payload.num].dishes.find( - obj => obj.dishesId === payload.dishesId + obj => obj.id === payload.id ); if (tarDishes) { - const tarIgd = tarDishes.igdList.find(obj => obj.id === payload.igdId); - if (tarIgd) { - payload.weight && (tarIgd.weight = payload.weight); - payload.cusWeight && (tarIgd.cusWeight = payload.cusWeight); - payload.cusUnit && (tarIgd.cusUnit = payload.cusUnit); + if ( + payload.dishesId !== tarDishes.dishesId || + payload.type !== undefined + ) { + // 替换菜品 + Object.keys(payload).forEach(key => { + if (key === "num") { + return; + } + tarDishes[key] = payload[key]; + }); + } else { + const tarIgd = tarDishes.igdList.find(obj => obj.id === payload.igdId); + if (tarIgd) { + payload.weight && (tarIgd.weight = payload.weight); + payload.cusWeight && (tarIgd.cusWeight = payload.cusWeight); + payload.cusUnit && (tarIgd.cusUnit = payload.cusUnit); + } } } }, + updateFontSize(state, payload) { + state.fontSize = payload.fontSize; + }, addRecipesDishes(state, payload) { state.recipesData[payload.num].dishes.push(payload.data); }, setCurrentDay(state, payload) { + if (state.currentDay !== payload.currentDay) { + state.currentDay = payload.currentDay; + } + }, + resetCurrentDay(state, payload) { + // console.log(payload); state.currentDay = payload.currentDay === state.currentDay ? -1 : payload.currentDay; }, @@ -73,35 +101,68 @@ const mutations = { const actions = { async init({ commit, dispatch }, payload) { - return new Promise((res, rej) => { - // console.log(payload); - // - commit("updateStateData", payload); - // - getDicts("cus_cus_unit").then(response => { - commit("updateStateData", { cusUnitOptions: response.data }); - }); - getDicts("cus_cus_weight").then(response => { - commit("updateStateData", { cusWeightOptions: response.data }); - }); - getDicts("cus_dishes_type").then(response => { - commit("updateStateData", { typeOptions: response.data }); - }); - getDicts("cus_dishes_type").then(response => { - commit("updateStateData", { dishesTypeOptions: response.data }); - }); + // console.log(payload); + const planResponse = await getRecipesPlan(payload.planId); + const { + startNumDay, + endNumDay, + recipesId, + cusId, + reviewStatus + } = planResponse.data; + commit("updateStateData", { + cusId, + recipesId, + reviewStatus, + temId: payload.temId, + planId: payload.planId, + startNum: startNumDay, + endNum: endNumDay + }); + getDicts("cus_cus_unit").then(response => { + commit("updateStateData", { cusUnitOptions: response.data }); + }); + getDicts("cus_cus_weight").then(response => { + commit("updateStateData", { cusWeightOptions: response.data }); + }); + getDicts("cus_dishes_type").then(response => { + commit("updateStateData", { typeOptions: response.data }); + }); + return new Promise((res, rej) => { // 健康数据 - if (payload.cusId) { - dispatch("getHealthyData", payload).catch(err => rej(err)); + if (cusId) { + dispatch("getHealthyData", { cusId }).catch(err => rej(err)); + } + + // 模板信息 + if (payload.temId) { + dispatch("getRecipesTemplate", payload).catch(err => rej(err)); } // 食谱数据 - if (payload.recipesId) { - dispatch("getRecipesInfo", payload).catch(err => rej(err)); + if (recipesId) { + dispatch("getRecipesInfo", { recipesId }).catch(err => rej(err)); } }); }, + async getRecipesTemplate({ commit, state }, { temId }) { + const response = await getRecipesTemplateDetail(temId); + if (response.code === 200) { + commit("updateStateData", { + templateInfo: response.data + }); + } + }, + async updateReviewStatus({ commit, state }, payload) { + const response = await updateRecipesPlan({ + id: state.planId, + reviewStatus: payload.reviewStatus + }); + if (response.code === 200) { + commit("updateStateData", payload); + } + }, async getHealthyData({ commit }, payload) { commit("updateStateData", { healthDataLoading: true }); const healthyDataResult = await getCustomerPhysicalSignsByCusId( @@ -131,16 +192,14 @@ const actions = { const recipesDataResult = await getRecipesApi(payload.recipesId); let recipesData = []; if (recipesDataResult.code === 200) { - const { endNum, startNum } = state; - let length = null; - if (endNum && startNum) { - length = endNum - startNum; - } + const { endNum, startNum, recipesId } = state; + // 计算 + let length = endNum - startNum; recipesData = recipesDataResult.data.reduce((outArr, dayData, idx) => { - if (!length || (length && length >= idx)) { + if (!recipesId || length >= idx) { outArr.push({ id: dayData.id, - numDay: startNum ? startNum + idx : dayData.numDay, + numDay: !recipesId ? startNum + idx : dayData.numDay, dishes: dayData.dishes.reduce((arr, cur) => { if ( cur.dishesId > -1 && @@ -224,15 +283,22 @@ const actions = { dispatch("getRecipesInfo", { recipesId }); payload.callback && payload.callback({ - recipesId: result.data, name: state.healthyData.name, - cusId: state.cusId, planId: state.planId }); } // console.log(params); }, async addDishes({ commit, state }, payload) { + console.log(payload); + const tarDishesList = state.recipesData[payload.num].dishes.filter( + obj => obj.type === payload.data.type + ); + if (tarDishesList.some(obj => obj.dishesId === payload.data.dishesId)) { + return new Promise((res, rej) => + rej(`目标餐类已有相同的菜品「${payload.data.name}」`) + ); + } if (state.recipesId) { const tarRecipesObj = state.recipesData[payload.num]; if (tarRecipesObj && payload.data) { @@ -261,34 +327,83 @@ const actions = { commit("addRecipesDishes", payload); } }, + async replaceDishes({ commit, state }, payload) { + // console.log(payload); + const tarDishesList = state.recipesData[payload.num].dishes.filter( + obj => obj.type === payload.data.type + ); + if (tarDishesList.some(obj => obj.dishesId === payload.data.dishesId)) { + return new Promise((res, rej) => + rej(`目标餐类已有相同的菜品「${payload.data.name}」`) + ); + } + if (state.recipesId) { + const tarDishes = state.recipesData[payload.num].dishes.find( + obj => obj.id === payload.data.id + ); + if (tarDishes) { + const params = { + id: tarDishes.id, + dishesId: payload.data.dishesId, + detail: payload.data.igdList.map(igd => ({ + id: igd.id, + weight: igd.weight, + cus_unit: igd.cusUnit, + cus_weight: igd.cusWeight + })) + }; + // console.log(params); + const result = await updateDishesDetailApi(params); + if (result.code === 200) { + commit("updateRecipesDishesDetail", { + num: payload.num, + ...payload.data + }); + } + } + } else { + commit("updateRecipesDishesDetail", { + num: payload.num, + ...payload.data + }); + } + }, async updateDishes({ commit, state }, payload) { // console.log(payload); if (state.recipesId) { const tarDishes = state.recipesData[payload.num].dishes.find( - obj => obj.dishesId === payload.dishesId + obj => obj.id === payload.id ); if (tarDishes) { const mTarDishes = JSON.parse(JSON.stringify(tarDishes)); - const tarIgd = mTarDishes.igdList.find(obj => obj.id === payload.igdId); - if (tarIgd) { - payload.weight && (tarIgd.weight = payload.weight); - payload.cusWeight && (tarIgd.cusWeight = payload.cusWeight); - payload.cusUnit && (tarIgd.cusUnit = payload.cusUnit); + let params = { + id: mTarDishes.id + }; + if (payload.type !== undefined) { + // 修改餐类 + params.type = payload.type; + } else { + // 修改食材 + const tarIgd = mTarDishes.igdList.find( + obj => obj.id === payload.igdId + ); + if (tarIgd) { + payload.weight && (tarIgd.weight = payload.weight); + payload.cusWeight && (tarIgd.cusWeight = payload.cusWeight); + payload.cusUnit && (tarIgd.cusUnit = payload.cusUnit); - const params = { - id: mTarDishes.id, - detail: mTarDishes.igdList.map(igd => ({ + params.detail = mTarDishes.igdList.map(igd => ({ id: igd.id, weight: igd.weight, cus_unit: igd.cusUnit, cus_weight: igd.cusWeight - })) - }; - const result = await updateDishesDetailApi(params); - if (result.code === 200) { - commit("updateRecipesDishesDetail", payload); + })); } } + const result = await updateDishesDetailApi(params); + if (result.code === 200) { + commit("updateRecipesDishesDetail", payload); + } } } else { commit("updateRecipesDishesDetail", payload); @@ -310,7 +425,21 @@ const actions = { commit("deleteSomeDayDishes", payload); } }, - async deleteMenu({ commit }, payload) {} + async deleteMenu({ commit }, payload) {}, + async setCopyData({ commit, state }, payload) { + return new Promise((res, rej) => { + const tarDishes = state.recipesData[payload.num].dishes.find( + obj => obj.id === payload.id + ); + if (tarDishes) { + commit("updateStateData", { copyData: tarDishes }); + + res("复制成功"); + } else { + rej("复制失败"); + } + }); + } }; const getters = { diff --git a/stdiet-ui/src/utils/healthyData.js b/stdiet-ui/src/utils/healthyData.js index 9023a81a1..c2c6ee0da 100644 --- a/stdiet-ui/src/utils/healthyData.js +++ b/stdiet-ui/src/utils/healthyData.js @@ -471,6 +471,16 @@ const moduleObj = { //健康信息处理,将数组转为字符串 export function dealHealthy(customerHealthy) { + customerHealthy.basicBMR = ( + (10 * customerHealthy.weight) / 2 + + 6.25 * customerHealthy.tall - + 5 * customerHealthy.age - + customerHealthy.sex * 161 + ).toFixed(1); + customerHealthy.notSportHeat = (customerHealthy.basicBMR * 1.3).toFixed(1); + customerHealthy.basicBMR += "千卡"; + customerHealthy.notSportHeat += "千卡"; + needAttrName.forEach(name => { if (customerHealthy.hasOwnProperty(name)) { customerHealthy[name] = (String(customerHealthy[name]) || "") diff --git a/stdiet-ui/src/utils/orderType.js b/stdiet-ui/src/utils/orderType.js index 0265c859f..9f40a0fb7 100644 --- a/stdiet-ui/src/utils/orderType.js +++ b/stdiet-ui/src/utils/orderType.js @@ -25,7 +25,7 @@ export const orderCountTypeArray = [ } ] -//订单类型 +//订单类型(订单新增) export const orderTypeArray = [ { value: 0, diff --git a/stdiet-ui/src/utils/request.js b/stdiet-ui/src/utils/request.js index 112d453da..c26c01fa8 100644 --- a/stdiet-ui/src/utils/request.js +++ b/stdiet-ui/src/utils/request.js @@ -32,6 +32,7 @@ service.interceptors.response.use(res => { // 获取错误信息 const msg = errorCode[code] || res.data.msg || errorCode['default'] if (code === 401) { + // console.log(code) MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', diff --git a/stdiet-ui/src/views/custom/commision/detail/index.vue b/stdiet-ui/src/views/custom/commision/detail/index.vue index 30d219235..3c9e56b93 100644 --- a/stdiet-ui/src/views/custom/commision/detail/index.vue +++ b/stdiet-ui/src/views/custom/commision/detail/index.vue @@ -48,6 +48,21 @@ > + + + + + { + this.reviewStatusOptions = response.data; + }); }, methods: { /** 查询业务提成比例列表 */ diff --git a/stdiet-ui/src/views/custom/commision/detail_day/index.vue b/stdiet-ui/src/views/custom/commision/detail_day/index.vue index a4dd3ae47..af3232316 100644 --- a/stdiet-ui/src/views/custom/commision/detail_day/index.vue +++ b/stdiet-ui/src/views/custom/commision/detail_day/index.vue @@ -48,6 +48,21 @@ > + + + + + { + this.reviewStatusOptions = response.data; + }); }, methods: { /** 查询业务提成比例列表 */ diff --git a/stdiet-ui/src/views/custom/contract/index.vue b/stdiet-ui/src/views/custom/contract/index.vue index 7e3551c29..1001ef614 100644 --- a/stdiet-ui/src/views/custom/contract/index.vue +++ b/stdiet-ui/src/views/custom/contract/index.vue @@ -187,7 +187,7 @@ prop="updateTime" width="180" /> - + @@ -320,9 +330,14 @@ import { addContract, delContract, listContract } from "@/api/custom/contract"; import Clipboard from "clipboard"; import { mapGetters } from "vuex"; +import VueQr from "vue-qr"; +const logo = require("@/assets/logo/logo_b.png"); export default { name: "Contract", + components: { + VueQr, + }, data() { const checkServePromise = (rule, value, callback) => { if (this.form.projectId == 0 && !value) { @@ -331,6 +346,7 @@ export default { callback(); }; return { + logo, // 遮罩层 loading: true, // 选中数组 diff --git a/stdiet-ui/src/views/custom/customer/index.vue b/stdiet-ui/src/views/custom/customer/index.vue index 9d05de70d..b2136dad0 100644 --- a/stdiet-ui/src/views/custom/customer/index.vue +++ b/stdiet-ui/src/views/custom/customer/index.vue @@ -9,7 +9,7 @@ > @@ -241,7 +250,7 @@ - + @@ -376,244 +385,242 @@ diff --git a/stdiet-ui/src/views/custom/order/index.vue b/stdiet-ui/src/views/custom/order/index.vue index 997aeaecc..cf8333d85 100644 --- a/stdiet-ui/src/views/custom/order/index.vue +++ b/stdiet-ui/src/views/custom/order/index.vue @@ -11,7 +11,7 @@ + + + + + 修改 - 暂停记录管理 - + --> 总计:{{ toThousands(this.totalAmount) }} 元总计收款(已除去二开售后提成金额):{{ toThousands(this.totalAmount) }} 元 - - - - 注意事项: -
1、日期包含当天,如:2021-01-01到2021-01-07,总共暂停七天,2021-01-08继续服务 -
2、每条暂停记录的时间范围不能重叠
- -
- @@ -458,8 +455,7 @@ diff --git a/stdiet-ui/src/views/custom/recipesBuild/BodySignView.vue b/stdiet-ui/src/views/custom/recipesBuild/BodySignView.vue deleted file mode 100644 index 89b1f13bf..000000000 --- a/stdiet-ui/src/views/custom/recipesBuild/BodySignView.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/BarChart.vue b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/BarChart.vue index 32bb1b6b3..6a06111b8 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/BarChart.vue +++ b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/BarChart.vue @@ -30,6 +30,10 @@ export default { type: Array, default: [], }, + max: { + type: Number, + default: 0, + }, }, data() { return { @@ -64,6 +68,7 @@ export default { this.updateChart(this.data.length > 0 ? this.data : {}); }, updateChart(source) { + // console.log(this.max); this.chart.clear(); this.chart.setOption({ title: { @@ -87,7 +92,7 @@ export default { `${seriesName.substring(0, 1)}Weight` ].toFixed(1); arr.push( - `${cur.marker} ${nutriName}:${heatVal}千卡(${weightVal}克)` + `${cur.marker} ${nutriName}:${weightVal}克(${heatVal}千卡)` ); return arr; }, @@ -110,9 +115,9 @@ export default { source, }, grid: { - top: 40, + top: 55, left: 20, - right: 20, + right: 50, bottom: 10, containLabel: true, }, @@ -121,6 +126,10 @@ export default { }, yAxis: { type: "value", + name: "热量(千卡)", + nameTextStyle: { + color: "#262626", + }, }, series: ["pHeat", "fHeat", "cHeat"].map((dim, idx) => ({ name: dim, @@ -131,6 +140,13 @@ export default { y: dim, x: 0, }, + markLine: { + data: [{ name: "BMR", yAxis: this.max ? this.max - 400 : 0 }], + symbol: "none", + lineStyle: { + color: "#d96969", + }, + }, itemStyle: { borderWidth: 2, borderColor: "#fff", diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/PieChart.vue b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/PieChart.vue index ae5739f8e..329b44f4d 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/PieChart.vue +++ b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/PieChart.vue @@ -14,25 +14,14 @@ class="small_table" > - - - + + + +
+
总热量约等于
+
{{ totalHeat.toFixed(1) }}千卡
+
@@ -69,35 +58,37 @@ export default { data() { return { chart: null, + totalHeat: 0, nameDict: { p: "蛋白质", f: "脂肪", c: "碳水", }, + typeDict: { + Weight: "摄入量", + Rate: "供能比", + }, }; }, computed: { mData() { const [data] = this.data; - let totalHeat = 0; - return data - ? ["p", "f", "c"].map((type) => { - if (totalHeat === 0) { - totalHeat = ["p", "f", "c"].reduce((heat, cur) => { - heat += data[`${cur}Heat`]; - return heat; - }, 0); - } - return { - type: this.nameDict[type], - weight: data[`${type}Weight`].toFixed(1), - heat: data[`${type}Heat`].toFixed(1), - heatRate: `${((data[`${type}Heat`] / totalHeat) * 100).toFixed( - 2 - )}%`, - }; - }) - : []; + if (!data) { + this.totalHeat = 0; + return []; + } + this.totalHeat = data.cHeat + data.fHeat + data.pHeat; + const mData = ["Weight", "Rate"].map((t, idx) => ({ + type: this.typeDict[t], + ...["p", "f", "c"].reduce((obj, cur) => { + obj[cur] = idx + ? `${((data[`${cur}Heat`] / this.totalHeat) * 100).toFixed(2)}%` + : `${data[`${cur}Weight`].toFixed(1)}克`; + return obj; + }, {}), + })); + // console.log(mData); + return mData; }, }, mounted() { @@ -121,10 +112,10 @@ export default { this.chart.clear(); this.chart.setOption({ title: { - text: `${data.name}营养统计`, + text: `${data.name}营养分析`, }, tooltip: { - position: 'right', + position: "right", trigger: "item", appendToBody: true, formatter: (params) => { @@ -136,9 +127,9 @@ export default { } = params; return [ `${marker} ${name}`, - `含量:${oriData[`${dim}Weight`].toFixed(1)}克`, - `热量:${value.toFixed(1)}千卡`, - `热量占比:${percent}%`, + `摄入量:${oriData[`${dim}Weight`].toFixed(1)}克`, + `摄入热量:${value.toFixed(1)}千卡`, + `供能比:${percent}%`, ].join("
"); }, }, @@ -199,5 +190,17 @@ export default { } } // } + + .summary { + padding: 2px; + border-bottom: 1px solid #dfe6ec; + border-left: 1px solid #dfe6ec; + border-right: 1px solid #dfe6ec; + + & > div { + padding: 3px; + text-align: center; + } + } } diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue index a74c628b6..ac4b465df 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue +++ b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesAspectCom/index.vue @@ -4,6 +4,49 @@ :style="`height: ${collapse ? 30 : 200}px`" >
+ + 字体大小: + + + + + 返回 + +
+ 审核通过 + 未审核通过 +
+ + {{ reviewStatus === 1 ? "未审核" : "已审核" }} + +
生成食谱 - {{ - `${collapse ? "展开分析" : "收起分析"}` - }} + + {{ `${collapse ? "展开" : "收起"}` }} + +
{ - console.log(query); - this.$router.replace({ path: "/recipes/build", query }); + // console.log(query); + this.$router.replace({ + path: "/recipes/build/" + query.name + "/" + query.planId, + }); }, }); }, - ...mapActions(["saveRecipes"]), + hanldeOnReveiwChange(reviewStatus) { + this.updateReviewStatus({ reviewStatus }); + }, + handleOnBack() { + this.updateStateData({ recipesData: [] }); + }, + ...mapActions(["saveRecipes", "updateReviewStatus"]), + ...mapMutations(["updateStateData", "updateFontSize"]), }, }; @@ -79,6 +165,18 @@ export default { .header { text-align: right; height: 30px; + + .arrow_icon { + transition: all 0.3s; + transform-origin: center center; + } + + .font_size_style { + display: inline-flex; + align-items: center; + font-size: 12px; + margin-right: 12px; + } } .content { diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/AddDishesDrawer/SelectDishes.vue b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/AddDishesDrawer/SelectDishes.vue index 348ae2f45..e23a38880 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/AddDishesDrawer/SelectDishes.vue +++ b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/AddDishesDrawer/SelectDishes.vue @@ -17,6 +17,7 @@ { this.dishesList = result.rows.map((d) => { @@ -149,12 +155,23 @@ export default { this.loading = false; }); }, + clean() { + this.queryParams = { + pageNum: 1, + pageSize: 10, + name: null, + type: null, + reviewStatus: "yes", + }; + this.dishesList = []; + this.lockType = false; + }, handleCurrentChange(data) { this.$emit("onChange", data); }, handleQuery() { this.queryParams.pageNum = 1; - this.getList(); + this.getList({}); }, resetQuery() { this.resetForm("queryForm"); diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/AddDishesDrawer/index.vue b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/AddDishesDrawer/index.vue index 67d4885d9..85b55b313 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/AddDishesDrawer/index.vue +++ b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/AddDishesDrawer/index.vue @@ -1,6 +1,6 @@ + diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/EditableText/index.vue b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/EditableText/index.vue index 48b8b1824..32fab3a81 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/EditableText/index.vue +++ b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/EditableText/index.vue @@ -9,6 +9,7 @@ :step="5" :value="value" @blur="handleOnBlur" + @keyup.enter="handleEnterClick" />
@@ -34,7 +35,7 @@ export default { const { value } = e.target; if (value > 0) { this.editing = false; - const mValue = parseFloat(value) + const mValue = parseFloat(value); if (mValue !== parseFloat(this.value)) { this.$emit("onChange", mValue); } @@ -42,6 +43,9 @@ export default { this.$message.error("数字必须大于0"); } }, + handleEnterClick(e) { + e.target.blur(); + }, }, }; diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/EditableUnit/index.vue b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/EditableUnit/index.vue index 4b90c69d8..08f15f796 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/EditableUnit/index.vue +++ b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/EditableUnit/index.vue @@ -95,6 +95,14 @@ export default { this.mUnit = value; }, }, + watch: { + weight(val) { + this.mWeight = val; + }, + unit(val) { + this.mUnit = val; + }, + }, computed: { unitWeight() { return ( diff --git a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/index.vue b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/index.vue index 79e5821ad..339562e89 100644 --- a/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/index.vue +++ b/stdiet-ui/src/views/custom/recipesBuild/RecipesView/RecipesCom/index.vue @@ -1,5 +1,5 @@