From f76356da68c792c4661c4fb6d01cd83ae916670e Mon Sep 17 00:00:00 2001 From: xiezhijun <15270898033@163.com> Date: Mon, 4 Jan 2021 16:51:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E4=BD=93=E5=BE=81=E7=9B=B8?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/InvestigateController.java | 73 ++ .../custom/SysCustomerController.java | 118 +++ .../stdiet/common/utils/bean/BeanHelper.java | 78 ++ .../stdiet/common/utils/bean/ObjectUtils.java | 67 ++ .../com/stdiet/custom/domain/SysCustomer.java | 253 +++++++ .../domain/SysCustomerPhysicalSigns.java | 444 +++++++++++ .../request/CustomerInvestigateRequest.java | 402 ++++++++++ .../dto/response/CustomerListResponse.java | 0 .../custom/mapper/SysCustomerMapper.java | 73 ++ .../SysCustomerPhysicalSignsMapper.java | 72 ++ .../ISysCustomerPhysicalSignsService.java | 60 ++ .../custom/service/ISysCustomerService.java | 96 +++ .../SysCustomerPhysicalSignsServiceImpl.java | 96 +++ .../service/impl/SysCustomerServiceImpl.java | 181 +++++ .../mapper/custom/SysCustomerMapper.xml | 218 ++++++ .../custom/SysCustomerPhysicalSignsMapper.xml | 257 +++++++ .../framework/config/SecurityConfig.java | 4 +- stdiet-ui/src/api/custom/customer.js | 53 ++ .../src/api/custom/customerInvestigation.js | 27 + stdiet-ui/src/assets/logo/st_logo.png | Bin 0 -> 97046 bytes stdiet-ui/src/permission.js | 2 +- stdiet-ui/src/router/index.js | 8 +- stdiet-ui/src/views/custom/customer/index.vue | 704 ++++++++++++++++++ .../custom/investigate/questionnaire.vue | 353 +++++++++ 24 files changed, 3636 insertions(+), 3 deletions(-) create mode 100644 stdiet-admin/src/main/java/com/stdiet/web/controller/common/InvestigateController.java create mode 100644 stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCustomerController.java create mode 100644 stdiet-common/src/main/java/com/stdiet/common/utils/bean/BeanHelper.java create mode 100644 stdiet-common/src/main/java/com/stdiet/common/utils/bean/ObjectUtils.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomer.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerPhysicalSigns.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/dto/request/CustomerInvestigateRequest.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/dto/response/CustomerListResponse.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerMapper.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerPhysicalSignsMapper.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerPhysicalSignsService.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerService.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerPhysicalSignsServiceImpl.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerServiceImpl.java create mode 100644 stdiet-custom/src/main/resources/mapper/custom/SysCustomerMapper.xml create mode 100644 stdiet-custom/src/main/resources/mapper/custom/SysCustomerPhysicalSignsMapper.xml create mode 100644 stdiet-ui/src/api/custom/customer.js create mode 100644 stdiet-ui/src/api/custom/customerInvestigation.js create mode 100644 stdiet-ui/src/assets/logo/st_logo.png create mode 100644 stdiet-ui/src/views/custom/customer/index.vue create mode 100644 stdiet-ui/src/views/custom/investigate/questionnaire.vue diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/common/InvestigateController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/common/InvestigateController.java new file mode 100644 index 000000000..20fc13e2d --- /dev/null +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/common/InvestigateController.java @@ -0,0 +1,73 @@ +package com.stdiet.web.controller.common; + +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.SysCustomer; +import com.stdiet.custom.domain.SysPhysicalSigns; +import com.stdiet.custom.dto.request.CustomerInvestigateRequest; +import com.stdiet.custom.service.ISysCustomerService; +import com.stdiet.custom.service.ISysPhysicalSignsService; +import com.stdiet.system.service.ISysDictTypeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 客户信息调查Controller + * + * @author xzj + * @date 2020-12-31 + */ +@RestController +@RequestMapping("/investigate") +public class InvestigateController extends BaseController { + + @Autowired + private ISysCustomerService iSysCustomerService; + + @Autowired + private ISysPhysicalSignsService iSysPhysicalSignsService; + + @Autowired + private ISysDictTypeService dictTypeService; + + /** + * 建立客户信息档案 + */ + @PostMapping("/customerInvestigate") + public AjaxResult customerInvestigate(@RequestBody CustomerInvestigateRequest customerInvestigateRequest) throws Exception + { + //验证是否已存在该手机号 + SysCustomer phoneCustomer = iSysCustomerService.getCustomerByPhone(customerInvestigateRequest.getPhone()); + if(phoneCustomer != null){ + return AjaxResult.error("该手机号已存在"); + } + customerInvestigateRequest.setId(null); //只能添加,无法修改 + return AjaxResult.success(iSysCustomerService.addOrupdateCustomerAndSign(customerInvestigateRequest)); + } + + /** + * 获取体征列表 + */ + @GetMapping("/physicalSignsList") + public TableDataInfo physicalSignsList() throws Exception + { + List physicalSignsList = iSysPhysicalSignsService.selectSysPhysicalSignsList(new SysPhysicalSigns()); + //System.out.println(physicalSignsList.size()); + return getDataTable(physicalSignsList); + } + + /** + * 根据字典类型查询字典数据信息 + */ + @GetMapping(value = "/type/{dictType}") + public AjaxResult dictType(@PathVariable String dictType) + { + return AjaxResult.success(dictTypeService.selectDictDataByType(dictType)); + } + + + +} 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 new file mode 100644 index 000000000..7c4b4dfc6 --- /dev/null +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysCustomerController.java @@ -0,0 +1,118 @@ +package com.stdiet.web.controller.custom; + +import java.util.List; + +import com.stdiet.custom.dto.request.CustomerInvestigateRequest; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +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.SysCustomer; +import com.stdiet.custom.service.ISysCustomerService; +import com.stdiet.common.utils.poi.ExcelUtil; +import com.stdiet.common.core.page.TableDataInfo; + +/** + * 客户体征信息Controller + * + * @author xzj + * @date 2021-01-03 + */ +@RestController +@RequestMapping("/custom/customer") +public class SysCustomerController extends BaseController +{ + @Autowired + private ISysCustomerService sysCustomerService; + + /** + * 查询客户信息列表 + */ + @PreAuthorize("@ss.hasPermi('custom:customer:list')") + @GetMapping("/list") + public TableDataInfo list(SysCustomer sysCustomer) + { + startPage(); + List list = sysCustomerService.selectSysCustomerAndSignList(sysCustomer); + return getDataTable(list); + } + + /** + * 导出客户信息列表 + */ + @PreAuthorize("@ss.hasPermi('custom:customer:export')") + @Log(title = "客户信息", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult export(SysCustomer sysCustomer) + { + List list = sysCustomerService.selectSysCustomerList(sysCustomer); + ExcelUtil util = new ExcelUtil(SysCustomer.class); + return util.exportExcel(list, "customer"); + } + + /** + * 获取客户信息详细信息 + */ + @PreAuthorize("@ss.hasPermi('custom:customer:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(sysCustomerService.getCustomerAndSignById(id)); + } + + /** + * 新增客户信息 + */ + @PreAuthorize("@ss.hasPermi('custom:customer:add')") + @Log(title = "客户信息", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody CustomerInvestigateRequest customerInvestigateRequest) throws Exception + { + //验证是否已存在该手机号 + SysCustomer phoneCustomer = sysCustomerService.getCustomerByPhone(customerInvestigateRequest.getPhone()); + if(phoneCustomer != null){ + return AjaxResult.error("该手机号已存在"); + } + return toAjax(sysCustomerService.addOrupdateCustomerAndSign(customerInvestigateRequest)); + } + + /** + * 修改客户信息 + */ + @PreAuthorize("@ss.hasPermi('custom:customer:edit')") + @Log(title = "客户信息", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody CustomerInvestigateRequest customerInvestigateRequest) throws Exception + { + SysCustomer oldCustomer = sysCustomerService.selectSysCustomerById(customerInvestigateRequest.getId()); + if(oldCustomer != null && !oldCustomer.getPhone().equals(customerInvestigateRequest.getPhone())){ + //验证是否已存在该手机号 + SysCustomer phoneCustomer = sysCustomerService.getCustomerByPhone(customerInvestigateRequest.getPhone()); + if(phoneCustomer != null){ + return AjaxResult.error("该手机号已存在"); + } + } + return toAjax(sysCustomerService.addOrupdateCustomerAndSign(customerInvestigateRequest)); + } + + /** + * 删除客户信息 + */ + @PreAuthorize("@ss.hasPermi('custom:customer:remove')") + @Log(title = "客户信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(sysCustomerService.delCustomerAndSignById(ids)); + } +} \ No newline at end of file diff --git a/stdiet-common/src/main/java/com/stdiet/common/utils/bean/BeanHelper.java b/stdiet-common/src/main/java/com/stdiet/common/utils/bean/BeanHelper.java new file mode 100644 index 000000000..f1b357c84 --- /dev/null +++ b/stdiet-common/src/main/java/com/stdiet/common/utils/bean/BeanHelper.java @@ -0,0 +1,78 @@ +package com.stdiet.common.utils.bean; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +public class BeanHelper{ + /** + * 去掉bean中所有属性为字符串的前后空格 + * @param bean + * @throws Exception + */ + public static void beanAttributeValueTrim(Object bean) throws Exception { + if(bean!=null){ + //获取所有的字段包括public,private,protected,private + Field[] fields = bean.getClass().getDeclaredFields(); + for (int i = 0; i < fields.length; i++) { + Field f = fields[i]; + if (f.getType().getName().equals("java.lang.String")) { + String key = f.getName();//获取字段名 + Object value = getFieldValue(bean, key); + + if (value == null) + continue; + + setFieldValue(bean, key, value.toString().trim()); + } + } + } + } + + /** + * 利用反射通过get方法获取bean中字段fieldName的值 + * @param bean + * @param fieldName + * @return + * @throws Exception + */ + private static Object getFieldValue(Object bean, String fieldName) + throws Exception { + StringBuffer result = new StringBuffer(); + String methodName = result.append("get") + .append(fieldName.substring(0, 1).toUpperCase()) + .append(fieldName.substring(1)).toString(); + + Object rObject = null; + Method method = null; + + @SuppressWarnings("rawtypes") + Class[] classArr = new Class[0]; + method = bean.getClass().getMethod(methodName, classArr); + rObject = method.invoke(bean, new Object[0]); + + return rObject; + } + + /** + * 利用发射调用bean.set方法将value设置到字段 + * @param bean + * @param fieldName + * @param value + * @throws Exception + */ + private static void setFieldValue(Object bean, String fieldName, Object value) + throws Exception { + StringBuffer result = new StringBuffer(); + String methodName = result.append("set") + .append(fieldName.substring(0, 1).toUpperCase()) + .append(fieldName.substring(1)).toString(); + + /** + * 利用发射调用bean.set方法将value设置到字段 + */ + Class[] classArr = new Class[1]; + classArr[0]="java.lang.String".getClass(); + Method method=bean.getClass().getMethod(methodName,classArr); + method.invoke(bean,value); + } + } diff --git a/stdiet-common/src/main/java/com/stdiet/common/utils/bean/ObjectUtils.java b/stdiet-common/src/main/java/com/stdiet/common/utils/bean/ObjectUtils.java new file mode 100644 index 000000000..9a68ba70b --- /dev/null +++ b/stdiet-common/src/main/java/com/stdiet/common/utils/bean/ObjectUtils.java @@ -0,0 +1,67 @@ +package com.stdiet.common.utils.bean; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 对象相关工具类 + *

+ * + * @author xzj + * @since 2020-11-27 + */ +public class ObjectUtils { + + /** + * @Author xzj + * @Description 利用反射机制将一个对象中的所有属性值赋值给另一个对象 + * @Date 2020/12/3 18:17 + * @Param object: 原对象 + * @Param clazz: 目标对象对应Class + * @Return T 目标对象 + **/ + public static T getObjectByObject(Object object, Class clazz) throws Exception { + return getObjectByObject(object, clazz, new ArrayList(1)); + } + + /** + * @Author xzj + * @Description 利用反射机制将一个对象中的所有属性值赋值给另一个对象 + * @Date 2020/12/3 18:17 + * @Param object: 原对象 + * @Param clazz: 目标对象对应Class + * @Param filterField: 需要过滤掉的属性名称集合 + * @Return T 目标对象 + **/ + public static T getObjectByObject(Object object, Class clazz, List filterField) throws Exception { + T t = null; + if (clazz != null && object != null) { + t = clazz.newInstance(); + Field[] fields = clazz.getDeclaredFields(); + for (Field field : fields) { + //属性名 + String key = field.getName(); + //以整数形式返回由此 Field 对象表示的字段的 Java 语言修饰符 + int modifierValue = field.getModifiers(); + //PUBLIC: 1 PRIVATE: 2 PROTECTED: 4 只设置4以下修饰词属性,过滤掉filterField中的属性 + if(modifierValue > 4 || (filterField != null && filterField.contains(key)) ){ + continue; + } + try { + field.setAccessible(true); + Field objectField = object.getClass().getDeclaredField(key); + objectField.setAccessible(true); + //返回指定对象obj上此 Field 表示的字段的值 + Object val = objectField.get(object); + //将指定对象变量上此 Field 对象表示的字段设置为指定的新值 + field.set(t, val); + }catch (Exception e){ + System.out.println(object.getClass().getName() + "没有该属性: " + field.getName()); + } + } + } + return t; + } +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomer.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomer.java new file mode 100644 index 000000000..ce8e083d1 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomer.java @@ -0,0 +1,253 @@ +package com.stdiet.custom.domain; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +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; + +/** + * 客户信息对象 sys_customer + * + * @author xzj + * @date 2020-12-31 + */ +public class SysCustomer extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** $column.columnComment */ + private Long id; + + /** 名字 */ + @Excel(name = "名字") + private String name; + + /** 手机号 */ + @Excel(name = "手机号") + private String phone; + + /** 邮箱 */ + @Excel(name = "邮箱") + private String email; + + /** 地址 */ + @Excel(name = "地址") + private String address; + + /** 付款日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "付款日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date payDate; + + /** 开始日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "开始日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date startDate; + + /** 购买月数 */ + @Excel(name = "购买月数") + private Long purchaseNum; + + /** 累计总金额 */ + @Excel(name = "累计总金额") + private BigDecimal payTotal; + + /** 主营养师 */ + @Excel(name = "主营养师") + private Long mainDietitian; + + /** 营养师助理 */ + @Excel(name = "营养师助理") + private Long assistantDietitian; + + /** 售后营养师 */ + @Excel(name = "售后营养师") + private Long afterDietitian; + + /** 销售人员 */ + @Excel(name = "销售人员") + private Long salesman; + + /** 负责人 */ + @Excel(name = "负责人") + private Long chargePerson; + + /** 跟进状态 */ + @Excel(name = "跟进状态") + private Long followStatus; + + /** 体征数据,非持久化字段 */ + private SysCustomerPhysicalSigns sign; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setName(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + public void setPhone(String phone) + { + this.phone = phone; + } + + public String getPhone() + { + return phone; + } + public void setEmail(String email) + { + this.email = email; + } + + public String getEmail() + { + return email; + } + public void setAddress(String address) + { + this.address = address; + } + + public String getAddress() + { + return address; + } + public void setPayDate(Date payDate) + { + this.payDate = payDate; + } + + public Date getPayDate() + { + return payDate; + } + public void setStartDate(Date startDate) + { + this.startDate = startDate; + } + + public Date getStartDate() + { + return startDate; + } + public void setPurchaseNum(Long purchaseNum) + { + this.purchaseNum = purchaseNum; + } + + public Long getPurchaseNum() + { + return purchaseNum; + } + public void setPayTotal(BigDecimal payTotal) + { + this.payTotal = payTotal; + } + + public BigDecimal getPayTotal() + { + return payTotal; + } + public void setMainDietitian(Long mainDietitian) + { + this.mainDietitian = mainDietitian; + } + + public Long getMainDietitian() + { + return mainDietitian; + } + public void setAssistantDietitian(Long assistantDietitian) + { + this.assistantDietitian = assistantDietitian; + } + + public Long getAssistantDietitian() + { + return assistantDietitian; + } + public void setAfterDietitian(Long afterDietitian) + { + this.afterDietitian = afterDietitian; + } + + public Long getAfterDietitian() + { + return afterDietitian; + } + public void setSalesman(Long salesman) + { + this.salesman = salesman; + } + + public Long getSalesman() + { + return salesman; + } + public void setChargePerson(Long chargePerson) + { + this.chargePerson = chargePerson; + } + + public Long getChargePerson() + { + return chargePerson; + } + public void setFollowStatus(Long followStatus) + { + this.followStatus = followStatus; + } + + public Long getFollowStatus() + { + return followStatus; + } + + public SysCustomerPhysicalSigns getSign() { + return sign; + } + + public void setSign(SysCustomerPhysicalSigns sign) { + this.sign = sign; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("name", getName()) + .append("phone", getPhone()) + .append("email", getEmail()) + .append("address", getAddress()) + .append("payDate", getPayDate()) + .append("startDate", getStartDate()) + .append("purchaseNum", getPurchaseNum()) + .append("payTotal", getPayTotal()) + .append("mainDietitian", getMainDietitian()) + .append("assistantDietitian", getAssistantDietitian()) + .append("afterDietitian", getAfterDietitian()) + .append("salesman", getSalesman()) + .append("chargePerson", getChargePerson()) + .append("followStatus", getFollowStatus()) + .append("createTime", getCreateTime()) + .append("createBy", getCreateBy()) + .append("updateTime", getUpdateTime()) + .append("updateBy", getUpdateBy()) + .toString(); + } +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerPhysicalSigns.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerPhysicalSigns.java new file mode 100644 index 000000000..302e6874a --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCustomerPhysicalSigns.java @@ -0,0 +1,444 @@ +package com.stdiet.custom.domain; + +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.List; + +/** + * 客户数据对象 sys_customer_physical_signs + * + * @author xzj + * @date 2020-12-31 + */ +public class SysCustomerPhysicalSigns extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** $column.columnComment */ + private Long id; + + /** 客户id */ + @Excel(name = "客户id") + private Long customerId; + + /** 客户性别 0男 1女 */ + @Excel(name = "客户性别 0男 1女") + private Integer sex; + + /** 客户年龄(岁) */ + @Excel(name = "客户年龄", readConverterExp = "岁=") + private Integer age; + + /** 客户身高(厘米) */ + @Excel(name = "客户身高", readConverterExp = "厘=米") + private Integer tall; + + /** 客户体重(斤) */ + @Excel(name = "客户体重", readConverterExp = "斤=") + private Integer weight; + + /** 客户病史体征id */ + @Excel(name = "客户病史体征id") + private String physicalSignsId; + + /** 客户忌口不爱吃食材id */ + @Excel(name = "客户忌口不爱吃食材id") + private String dishesIngredientId; + + /** 客户照片 */ + @Excel(name = "客户照片") + private String photo; + + /** 是否便秘 0是 1否 */ + @Excel(name = "是否便秘 0是 1否") + private Integer constipation; + + /** 是否熬夜、失眠 0是 1否 */ + @Excel(name = "是否熬夜、失眠 0是 1否") + private Integer staylate; + + /** 是否经常运动 0是 1否 */ + @Excel(name = "是否经常运动 0是 1否") + private Integer motion; + + /** 饮食方式 0自己做 1外面吃 */ + @Excel(name = "饮食方式 0自己做 1外面吃") + private Integer makeFoodType; + + /** 饮食特点 0清淡 1重口味 */ + @Excel(name = "饮食特点 0清淡 1重口味") + private Integer makeFoodTaste; + + /** 平时是否久坐 0久坐多 1走动多 */ + @Excel(name = "平时是否久坐 0久坐多 1走动多") + private Integer walk; + + /** 减脂过程遇到的困难 */ + @Excel(name = "减脂过程遇到的困难") + private String difficulty; + + /** 是否浑身乏力 0是 1否 */ + @Excel(name = "是否浑身乏力 0是 1否") + private Integer weakness; + + /** 是否减脂反弹 0是 1否 */ + @Excel(name = "是否减脂反弹 0是 1否") + private Integer rebound; + + /** 能否认识到生活习惯的改善才是减脂的关键 0是 1否 */ + @Excel(name = "能否认识到生活习惯的改善才是减脂的关键 0是 1否") + private Integer crux; + + /** 南方人还是北方人 0南方 1北方 */ + @Excel(name = "南方人还是北方人 0南方 1北方") + private Integer position; + + /** 睡觉时间(24小时制) */ + @Excel(name = "睡觉时间", readConverterExp = "2=4小时制") + private Integer sleepTime; + + /** 起床时间(24小时制) */ + @Excel(name = "起床时间", readConverterExp = "2=4小时制") + private Integer getupTime; + + /** 联系沟通时间(24小时制) */ + @Excel(name = "联系沟通时间", readConverterExp = "2=4小时制") + private Integer connectTime; + + /** 备注 */ + @Excel(name = "备注") + private String remarks; + + /** 湿气数据 */ + @Excel(name = "湿气数据") + private String bloodData; + + /** 气血数据 */ + @Excel(name = "气血数据") + private String moistureDate; + + /** 工作职业 */ + @Excel(name = "工作职业") + private String vocation; + + /** 是否上夜班 */ + @Excel(name = "是否上夜班") + private Integer night; + + /** 减脂经历 */ + @Excel(name = "减脂经历") + private String experience; + + /** 体征对象集合 **/ + private List signList; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setCustomerId(Long customerId) + { + this.customerId = customerId; + } + + public Long getCustomerId() + { + return customerId; + } + public void setSex(Integer sex) + { + this.sex = sex; + } + + public Integer getSex() + { + return sex; + } + public void setAge(Integer age) + { + this.age = age; + } + + public Integer getAge() + { + return age; + } + public void setTall(Integer tall) + { + this.tall = tall; + } + + public Integer getTall() + { + return tall; + } + public void setWeight(Integer weight) + { + this.weight = weight; + } + + public Integer getWeight() + { + return weight; + } + public void setPhysicalSignsId(String physicalSignsId) + { + this.physicalSignsId = physicalSignsId; + } + + public String getPhysicalSignsId() + { + return physicalSignsId; + } + public void setDishesIngredientId(String dishesIngredientId) + { + this.dishesIngredientId = dishesIngredientId; + } + + public String getDishesIngredientId() + { + return dishesIngredientId; + } + public void setPhoto(String photo) + { + this.photo = photo; + } + + public String getPhoto() + { + return photo; + } + public void setConstipation(Integer constipation) + { + this.constipation = constipation; + } + + public Integer getConstipation() + { + return constipation; + } + public void setStaylate(Integer staylate) + { + this.staylate = staylate; + } + + public Integer getStaylate() + { + return staylate; + } + public void setMotion(Integer motion) + { + this.motion = motion; + } + + public Integer getMotion() + { + return motion; + } + public void setMakeFoodType(Integer makeFoodType) + { + this.makeFoodType = makeFoodType; + } + + public Integer getMakeFoodType() + { + return makeFoodType; + } + public void setMakeFoodTaste(Integer makeFoodTaste) + { + this.makeFoodTaste = makeFoodTaste; + } + + public Integer getMakeFoodTaste() + { + return makeFoodTaste; + } + public void setWalk(Integer walk) + { + this.walk = walk; + } + + public Integer getWalk() + { + return walk; + } + public void setDifficulty(String difficulty) + { + this.difficulty = difficulty; + } + + public String getDifficulty() + { + return difficulty; + } + public void setWeakness(Integer weakness) + { + this.weakness = weakness; + } + + public Integer getWeakness() + { + return weakness; + } + public void setRebound(Integer rebound) + { + this.rebound = rebound; + } + + public Integer getRebound() + { + return rebound; + } + public void setCrux(Integer crux) + { + this.crux = crux; + } + + public Integer getCrux() + { + return crux; + } + public void setPosition(Integer position) + { + this.position = position; + } + + public Integer getPosition() + { + return position; + } + public void setSleepTime(Integer sleepTime) + { + this.sleepTime = sleepTime; + } + + public Integer getSleepTime() + { + return sleepTime; + } + public void setGetupTime(Integer getupTime) + { + this.getupTime = getupTime; + } + + public Integer getGetupTime() + { + return getupTime; + } + public void setConnectTime(Integer connectTime) + { + this.connectTime = connectTime; + } + + public Integer getConnectTime() + { + return connectTime; + } + public void setRemarks(String remarks) + { + this.remarks = remarks; + } + + public String getRemarks() + { + return remarks; + } + public void setBloodData(String bloodData) + { + this.bloodData = bloodData; + } + + public String getBloodData() + { + return bloodData; + } + public void setMoistureDate(String moistureDate) + { + this.moistureDate = moistureDate; + } + + public String getMoistureDate() + { + return moistureDate; + } + + public String getVocation() { + return vocation; + } + + public void setVocation(String vocation) { + this.vocation = vocation; + } + + public Integer getNight() { + return night; + } + + public void setNight(Integer night) { + this.night = night; + } + + public String getExperience() { + return experience; + } + + public void setExperience(String experience) { + this.experience = experience; + } + + public List getSignList() { + return signList; + } + + public void setSignList(List signList) { + this.signList = signList; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("customerId", getCustomerId()) + .append("sex", getSex()) + .append("age", getAge()) + .append("tall", getTall()) + .append("weight", getWeight()) + .append("physicalSignsId", getPhysicalSignsId()) + .append("dishesIngredientId", getDishesIngredientId()) + .append("photo", getPhoto()) + .append("constipation", getConstipation()) + .append("staylate", getStaylate()) + .append("motion", getMotion()) + .append("makeFoodType", getMakeFoodType()) + .append("makeFoodTaste", getMakeFoodTaste()) + .append("walk", getWalk()) + .append("difficulty", getDifficulty()) + .append("weakness", getWeakness()) + .append("rebound", getRebound()) + .append("crux", getCrux()) + .append("position", getPosition()) + .append("sleepTime", getSleepTime()) + .append("getupTime", getGetupTime()) + .append("connectTime", getConnectTime()) + .append("remarks", getRemarks()) + .append("bloodData", getBloodData()) + .append("moistureDate", getMoistureDate()) + .append("vocation", getVocation()) + .append(" night", getNight()) + .append("experience", getExperience()) + .append("createTime", getCreateTime()) + .append("createBy", getCreateBy()) + .append("updateTime", getUpdateTime()) + .append("updateBy", getUpdateBy()) + .toString(); + } + +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/CustomerInvestigateRequest.java b/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/CustomerInvestigateRequest.java new file mode 100644 index 000000000..828aac761 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/dto/request/CustomerInvestigateRequest.java @@ -0,0 +1,402 @@ +package com.stdiet.custom.dto.request; + +import com.stdiet.common.annotation.Excel; +import com.stdiet.common.core.domain.BaseEntity; + +/** + * 客户信息建档调查DTO + * + * @author xzj + * @date 2020-12-31 + */ +public class CustomerInvestigateRequest extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + //基础信息 + + /** $column.columnComment */ + private Long id; + + /** 名字 */ + @Excel(name = "名字") + private String name; + + /** 手机号 */ + @Excel(name = "手机号") + private String phone; + + /** 邮箱 */ + @Excel(name = "邮箱") + private String email; + + /** 地址 */ + @Excel(name = "地址") + private String address; + + //体征信息 + + /** 客户性别 0男 1女 */ + @Excel(name = "客户性别 0男 1女") + private Integer sex; + + /** 客户年龄(岁) */ + @Excel(name = "客户年龄", readConverterExp = "岁=") + private Integer age; + + /** 客户身高(厘米) */ + @Excel(name = "客户身高", readConverterExp = "厘=米") + private Integer tall; + + /** 客户体重(斤) */ + @Excel(name = "客户体重", readConverterExp = "斤=") + private Integer weight; + + /** 客户病史体征id */ + @Excel(name = "客户病史体征id") + private String physicalSignsId; + + /** 客户忌口不爱吃食材id */ + @Excel(name = "客户忌口不爱吃食材id") + private String dishesIngredientId; + + /** 客户照片 */ + @Excel(name = "客户照片") + private String photo; + + /** 是否便秘 0是 1否 */ + @Excel(name = "是否便秘 0是 1否") + private Integer constipation; + + /** 是否熬夜、失眠 0是 1否 */ + @Excel(name = "是否熬夜、失眠 0是 1否") + private Integer staylate; + + /** 是否经常运动 0是 1否 */ + @Excel(name = "是否经常运动 0是 1否") + private Integer motion; + + /** 饮食方式 0自己做 1外面吃 */ + @Excel(name = "饮食方式 0自己做 1外面吃") + private Integer makeFoodType; + + /** 饮食特点 0清淡 1重口味 */ + @Excel(name = "饮食特点 0清淡 1重口味") + private Integer makeFoodTaste; + + /** 平时是否久坐 0久坐多 1走动多 */ + @Excel(name = "平时是否久坐 0久坐多 1走动多") + private Integer walk; + + /** 减脂过程遇到的困难 */ + @Excel(name = "减脂过程遇到的困难") + private String difficulty; + + /** 是否浑身乏力 0是 1否 */ + @Excel(name = "是否浑身乏力 0是 1否") + private Integer weakness; + + /** 是否减脂反弹 0是 1否 */ + @Excel(name = "是否减脂反弹 0是 1否") + private Integer rebound; + + /** 能否认识到生活习惯的改善才是减脂的关键 0是 1否 */ + @Excel(name = "能否认识到生活习惯的改善才是减脂的关键 0是 1否") + private Integer crux; + + /** 南方人还是北方人 0南方 1北方 */ + @Excel(name = "南方人还是北方人 0南方 1北方") + private Integer position; + + /** 睡觉时间(24小时制) */ + @Excel(name = "睡觉时间", readConverterExp = "2=4小时制") + private Integer sleepTime; + + /** 起床时间(24小时制) */ + @Excel(name = "起床时间", readConverterExp = "2=4小时制") + private Integer getupTime; + + /** 联系沟通时间(24小时制) */ + @Excel(name = "联系沟通时间", readConverterExp = "2=4小时制") + private Integer connectTime; + + /** 备注 */ + @Excel(name = "备注") + private String remarks; + + /** 湿气数据 */ + @Excel(name = "湿气数据") + private String bloodData; + + /** 气血数据 */ + @Excel(name = "气血数据") + private String moistureDate; + + /** 工作职业 */ + @Excel(name = "工作职业") + private String vocation; + + /** 是否上夜班 */ + @Excel(name = "是否上夜班") + private Integer night; + + /** 减脂经历 */ + @Excel(name = "减脂经历") + private String experience; + + public Long getId() { + return id; + } + + public String getName() { + return name; + } + + public String getPhone() { + return phone; + } + + public String getEmail() { + return email; + } + + public String getAddress() { + return address; + } + + public void setId(Long id) { + this.id = id; + } + + public void setName(String name) { + this.name = name; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public void setEmail(String email) { + this.email = email; + } + + public void setAddress(String address) { + this.address = address; + } + + public Integer getSex() { + return sex; + } + + public void setSex(Integer sex) { + this.sex = sex; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + public Integer getTall() { + return tall; + } + + public void setTall(Integer tall) { + this.tall = tall; + } + + public Integer getWeight() { + return weight; + } + + public void setWeight(Integer weight) { + this.weight = weight; + } + + public String getPhysicalSignsId() { + return physicalSignsId; + } + + public void setPhysicalSignsId(String physicalSignsId) { + this.physicalSignsId = physicalSignsId; + } + + public String getDishesIngredientId() { + return dishesIngredientId; + } + + public void setDishesIngredientId(String dishesIngredientId) { + this.dishesIngredientId = dishesIngredientId; + } + + public String getPhoto() { + return photo; + } + + public void setPhoto(String photo) { + this.photo = photo; + } + + public Integer getConstipation() { + return constipation; + } + + public void setConstipation(Integer constipation) { + this.constipation = constipation; + } + + public Integer getStaylate() { + return staylate; + } + + public void setStaylate(Integer staylate) { + this.staylate = staylate; + } + + public Integer getMotion() { + return motion; + } + + public void setMotion(Integer motion) { + this.motion = motion; + } + + public Integer getMakeFoodType() { + return makeFoodType; + } + + public void setMakeFoodType(Integer makeFoodType) { + this.makeFoodType = makeFoodType; + } + + public Integer getMakeFoodTaste() { + return makeFoodTaste; + } + + public void setMakeFoodTaste(Integer makeFoodTaste) { + this.makeFoodTaste = makeFoodTaste; + } + + public Integer getWalk() { + return walk; + } + + public void setWalk(Integer walk) { + this.walk = walk; + } + + public String getDifficulty() { + return difficulty; + } + + public void setDifficulty(String difficulty) { + this.difficulty = difficulty; + } + + public Integer getWeakness() { + return weakness; + } + + public void setWeakness(Integer weakness) { + this.weakness = weakness; + } + + public Integer getRebound() { + return rebound; + } + + public void setRebound(Integer rebound) { + this.rebound = rebound; + } + + public Integer getCrux() { + return crux; + } + + public void setCrux(Integer crux) { + this.crux = crux; + } + + public Integer getPosition() { + return position; + } + + public void setPosition(Integer position) { + this.position = position; + } + + public Integer getSleepTime() { + return sleepTime; + } + + public void setSleepTime(Integer sleepTime) { + this.sleepTime = sleepTime; + } + + public Integer getGetupTime() { + return getupTime; + } + + public void setGetupTime(Integer getupTime) { + this.getupTime = getupTime; + } + + public Integer getConnectTime() { + return connectTime; + } + + public void setConnectTime(Integer connectTime) { + this.connectTime = connectTime; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getBloodData() { + return bloodData; + } + + public void setBloodData(String bloodData) { + this.bloodData = bloodData; + } + + public String getMoistureDate() { + return moistureDate; + } + + public void setMoistureDate(String moistureDate) { + this.moistureDate = moistureDate; + } + + public String getVocation() { + return vocation; + } + + public void setVocation(String vocation) { + this.vocation = vocation; + } + + public Integer getNight() { + return night; + } + + public void setNight(Integer night) { + this.night = night; + } + + public String getExperience() { + return experience; + } + + public void setExperience(String experience) { + this.experience = experience; + } +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/CustomerListResponse.java b/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/CustomerListResponse.java new file mode 100644 index 000000000..e69de29bb diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerMapper.java new file mode 100644 index 000000000..c386f3ee5 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerMapper.java @@ -0,0 +1,73 @@ +package com.stdiet.custom.mapper; + +import java.util.List; +import com.stdiet.custom.domain.SysCustomer; +import org.apache.ibatis.annotations.Param; + +/** + * 客户信息Mapper接口 + * + * @author xzj + * @date 2020-12-31 + */ +public interface SysCustomerMapper +{ + /** + * 查询客户信息 + * + * @param id 客户信息ID + * @return 客户信息 + */ + public SysCustomer selectSysCustomerById(Long id); + + /** + * 查询客户信息列表 + * + * @param sysCustomer 客户信息 + * @return 客户信息集合 + */ + public List selectSysCustomerList(SysCustomer sysCustomer); + + /** + * 新增客户信息 + * + * @param sysCustomer 客户信息 + * @return 结果 + */ + public int insertSysCustomer(SysCustomer sysCustomer); + + /** + * 修改客户信息 + * + * @param sysCustomer 客户信息 + * @return 结果 + */ + public int updateSysCustomer(SysCustomer sysCustomer); + + /** + * 删除客户信息 + * + * @param id 客户信息ID + * @return 结果 + */ + public int deleteSysCustomerById(Long id); + + /** + * 批量删除客户信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteSysCustomerByIds(Long[] ids); + + /** + * 根据手机号查询客户信息 + * + * @param phone 手机号 + * @return 结果 + */ + SysCustomer getCustomerByPhone(@Param("phone")String phone); + + //查询客户基础信息以及体征信息 + List selectSysCustomerAndSignList(SysCustomer sysCustomer); +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerPhysicalSignsMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerPhysicalSignsMapper.java new file mode 100644 index 000000000..79d1e7d14 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerPhysicalSignsMapper.java @@ -0,0 +1,72 @@ +package com.stdiet.custom.mapper; + +import java.util.List; +import com.stdiet.custom.domain.SysCustomerPhysicalSigns; +import org.apache.ibatis.annotations.Param; + +/** + * 客户体征信息Mapper接口 + * + * @author xzj + * @date 2020-12-31 + */ +public interface SysCustomerPhysicalSignsMapper +{ + /** + * 查询客户体征信息 + * + * @param id 客户体征信息ID + * @return 客户体征信息 + */ + public SysCustomerPhysicalSigns selectSysCustomerPhysicalSignsById(Long id); + + /** + * 查询客户体征信息列表 + * + * @param sysCustomerPhysicalSigns 客户体征信息 + * @return 客户体征信息集合 + */ + public List selectSysCustomerPhysicalSignsList(SysCustomerPhysicalSigns sysCustomerPhysicalSigns); + + /** + * 新增客户体征信息 + * + * @param sysCustomerPhysicalSigns 客户体征信息 + * @return 结果 + */ + public int insertSysCustomerPhysicalSigns(SysCustomerPhysicalSigns sysCustomerPhysicalSigns); + + /** + * 修改客户体征信息 + * + * @param sysCustomerPhysicalSigns 客户体征信息 + * @return 结果 + */ + public int updateSysCustomerPhysicalSigns(SysCustomerPhysicalSigns sysCustomerPhysicalSigns); + + /** + * 删除客户体征信息 + * + * @param id 客户体征信息ID + * @return 结果 + */ + public int deleteSysCustomerPhysicalSignsById(Long id); + + /** + * 批量删除客户体征信息 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteSysCustomerPhysicalSignsByIds(Long[] ids); + + /** + * 根据客户id修改客户体征信息 + * + * @param sysCustomerPhysicalSigns 客户体征信息 + * @return 结果 + */ + int updateSysCustomerPhysicalSignsByCustomerId(SysCustomerPhysicalSigns sysCustomerPhysicalSigns); + + int deleteSysCustomerPhysicalSignsByCustomerIds(Long[] ids); +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerPhysicalSignsService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerPhysicalSignsService.java new file mode 100644 index 000000000..0a49bd856 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerPhysicalSignsService.java @@ -0,0 +1,60 @@ +package com.stdiet.custom.service; + +import java.util.List; +import com.stdiet.custom.domain.SysCustomerPhysicalSigns; + +/** + * 客户体征信息Service接口 + * + * @author xzj + * @date 2020-12-31 + */ +public interface ISysCustomerPhysicalSignsService { + /** + * 查询客户体征信息 + * + * @param id 客户体征信息ID + * @return 客户体征信息 + */ + public SysCustomerPhysicalSigns selectSysCustomerPhysicalSignsById(Long id); + + /** + * 查询客户体征信息列表 + * + * @param sysCustomerPhysicalSigns 客户体征信息 + * @return 客户体征信息集合 + */ + public List selectSysCustomerPhysicalSignsList(SysCustomerPhysicalSigns sysCustomerPhysicalSigns); + + /** + * 新增客户体征信息 + * + * @param sysCustomerPhysicalSigns 客户体征信息 + * @return 结果 + */ + public int insertSysCustomerPhysicalSigns(SysCustomerPhysicalSigns sysCustomerPhysicalSigns); + + /** + * 修改客户体征信息 + * + * @param sysCustomerPhysicalSigns 客户体征信息 + * @return 结果 + */ + public int updateSysCustomerPhysicalSigns(SysCustomerPhysicalSigns sysCustomerPhysicalSigns); + + /** + * 批量删除客户体征信息 + * + * @param ids 需要删除的客户体征信息ID + * @return 结果 + */ + public int deleteSysCustomerPhysicalSignsByIds(Long[] ids); + + /** + * 删除客户体征信息信息 + * + * @param id 客户体征信息ID + * @return 结果 + */ + public int deleteSysCustomerPhysicalSignsById(Long id); +} \ 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 new file mode 100644 index 000000000..5cbee5969 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerService.java @@ -0,0 +1,96 @@ +package com.stdiet.custom.service; + +import java.util.List; +import com.stdiet.custom.domain.SysCustomer; +import com.stdiet.custom.dto.request.CustomerInvestigateRequest; + +/** + * 客户信息Service接口 + * + * @author xzj + * @date 2020-12-31 + */ +public interface ISysCustomerService +{ + /** + * 查询客户信息 + * + * @param id 客户信息ID + * @return 客户信息 + */ + public SysCustomer selectSysCustomerById(Long id); + + /** + * 查询客户信息列表 + * + * @param sysCustomer 客户信息 + * @return 客户信息集合 + */ + public List selectSysCustomerList(SysCustomer sysCustomer); + + /** + * 新增客户信息 + * + * @param sysCustomer 客户信息 + * @return 结果 + */ + public int insertSysCustomer(SysCustomer sysCustomer); + + /** + * 修改客户信息 + * + * @param sysCustomer 客户信息 + * @return 结果 + */ + public int updateSysCustomer(SysCustomer sysCustomer); + + /** + * 批量删除客户信息 + * + * @param ids 需要删除的客户信息ID + * @return 结果 + */ + public int deleteSysCustomerByIds(Long[] ids); + + /** + * 删除客户信息信息 + * + * @param id 客户信息ID + * @return 结果 + */ + public int deleteSysCustomerById(Long id); + + /** + * 根据手机号查询 + * + * @param phone 手机号 + * @return 结果 + */ + SysCustomer getCustomerByPhone(String phone); + + /** + * 客户建档资料填写 + * + * @param customerInvestigateRequest 客户建档相关资料 + * @return 结果 + */ + int addOrupdateCustomerAndSign( CustomerInvestigateRequest customerInvestigateRequest) throws Exception; + + /** + * 查询客户基础信息以及体征信息列表 + * + * @param sysCustomer 查询条件 + * @return 结果 + */ + List selectSysCustomerAndSignList(SysCustomer sysCustomer); + + /** + * 根据id查询客户信息(基础信息以及体征信息) + * + * @param id 客户id + * @return 结果 + */ + SysCustomer getCustomerAndSignById(Long id); + + int delCustomerAndSignById(Long[] ids); +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerPhysicalSignsServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerPhysicalSignsServiceImpl.java new file mode 100644 index 000000000..653b19da0 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerPhysicalSignsServiceImpl.java @@ -0,0 +1,96 @@ +package com.stdiet.custom.service.impl; + +import java.util.List; +import com.stdiet.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.stdiet.custom.mapper.SysCustomerPhysicalSignsMapper; +import com.stdiet.custom.domain.SysCustomerPhysicalSigns; +import com.stdiet.custom.service.ISysCustomerPhysicalSignsService; + +/** + * 客户体征信息Service业务层处理 + * + * @author xzj + * @date 2020-12-31 + */ +@Service +public class SysCustomerPhysicalSignsServiceImpl implements ISysCustomerPhysicalSignsService +{ + @Autowired + private SysCustomerPhysicalSignsMapper sysCustomerPhysicalSignsMapper; + + /** + * 查询客户体征信息 + * + * @param id 客户体征信息ID + * @return 客户体征信息 + */ + @Override + public SysCustomerPhysicalSigns selectSysCustomerPhysicalSignsById(Long id) + { + return sysCustomerPhysicalSignsMapper.selectSysCustomerPhysicalSignsById(id); + } + + /** + * 查询客户体征信息列表 + * + * @param sysCustomerPhysicalSigns 客户体征信息 + * @return 客户体征信息 + */ + @Override + public List selectSysCustomerPhysicalSignsList(SysCustomerPhysicalSigns sysCustomerPhysicalSigns) + { + return sysCustomerPhysicalSignsMapper.selectSysCustomerPhysicalSignsList(sysCustomerPhysicalSigns); + } + + /** + * 新增客户体征信息 + * + * @param sysCustomerPhysicalSigns 客户体征信息 + * @return 结果 + */ + @Override + public int insertSysCustomerPhysicalSigns(SysCustomerPhysicalSigns sysCustomerPhysicalSigns) + { + sysCustomerPhysicalSigns.setCreateTime(DateUtils.getNowDate()); + return sysCustomerPhysicalSignsMapper.insertSysCustomerPhysicalSigns(sysCustomerPhysicalSigns); + } + + /** + * 修改客户体征信息 + * + * @param sysCustomerPhysicalSigns 客户体征信息 + * @return 结果 + */ + @Override + public int updateSysCustomerPhysicalSigns(SysCustomerPhysicalSigns sysCustomerPhysicalSigns) + { + sysCustomerPhysicalSigns.setUpdateTime(DateUtils.getNowDate()); + return sysCustomerPhysicalSignsMapper.updateSysCustomerPhysicalSigns(sysCustomerPhysicalSigns); + } + + /** + * 批量删除客户体征信息 + * + * @param ids 需要删除的客户体征信息ID + * @return 结果 + */ + @Override + public int deleteSysCustomerPhysicalSignsByIds(Long[] ids) + { + return sysCustomerPhysicalSignsMapper.deleteSysCustomerPhysicalSignsByIds(ids); + } + + /** + * 删除客户体征信息信息 + * + * @param id 客户体征信息ID + * @return 结果 + */ + @Override + public int deleteSysCustomerPhysicalSignsById(Long id) + { + return sysCustomerPhysicalSignsMapper.deleteSysCustomerPhysicalSignsById(id); + } +} \ 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 new file mode 100644 index 000000000..466cd1caa --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerServiceImpl.java @@ -0,0 +1,181 @@ +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.bean.ObjectUtils; +import com.stdiet.custom.domain.SysCustomerPhysicalSigns; +import com.stdiet.custom.dto.request.CustomerInvestigateRequest; +import com.stdiet.custom.mapper.SysCustomerPhysicalSignsMapper; +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; + +/** + * 客户信息Service业务层处理 + * + * @author xzj + * @date 2020-12-31 + */ +@Service +@Transactional +public class SysCustomerServiceImpl implements ISysCustomerService +{ + @Autowired + private SysCustomerMapper sysCustomerMapper; + + @Autowired + private SysCustomerPhysicalSignsMapper sysCustomerPhysicalSignsMapper; + + /** + * 查询客户信息 + * + * @param id 客户信息ID + * @return 客户信息 + */ + @Override + public SysCustomer selectSysCustomerById(Long id) + { + return sysCustomerMapper.selectSysCustomerById(id); + } + + /** + * 查询客户信息列表 + * + * @param sysCustomer 客户信息 + * @return 客户信息 + */ + @Override + public List selectSysCustomerList(SysCustomer sysCustomer) + { + return sysCustomerMapper.selectSysCustomerList(sysCustomer); + } + + /** + * 新增客户信息 + * + * @param sysCustomer 客户信息 + * @return 结果 + */ + @Override + public int insertSysCustomer(SysCustomer sysCustomer) + { + sysCustomer.setCreateTime(DateUtils.getNowDate()); + return sysCustomerMapper.insertSysCustomer(sysCustomer); + } + + /** + * 修改客户信息 + * + * @param sysCustomer 客户信息 + * @return 结果 + */ + @Override + public int updateSysCustomer(SysCustomer sysCustomer) + { + sysCustomer.setUpdateTime(DateUtils.getNowDate()); + return sysCustomerMapper.updateSysCustomer(sysCustomer); + } + + /** + * 批量删除客户信息 + * + * @param ids 需要删除的客户信息ID + * @return 结果 + */ + @Override + public int deleteSysCustomerByIds(Long[] ids) + { + return sysCustomerMapper.deleteSysCustomerByIds(ids); + } + + /** + * 删除客户信息信息 + * + * @param id 客户信息ID + * @return 结果 + */ + @Override + public int deleteSysCustomerById(Long id) + { + return sysCustomerMapper.deleteSysCustomerById(id); + } + + /** + * 根据手机号查询 + * + * @param phone 手机号 + * @return 结果 + */ + public SysCustomer getCustomerByPhone(String phone){ + return sysCustomerMapper.getCustomerByPhone(phone); + } + + /** + * 客户建档资料填写 + * + * @param customerInvestigateRequest 客户建档相关资料 + * @return 结果 + */ + public int addOrupdateCustomerAndSign(CustomerInvestigateRequest customerInvestigateRequest) throws Exception{ + //当前登录用户 + //LoginUser loginUser = SecurityUtils.getLoginUser(); + SysCustomer sysCustomer = new SysCustomer(); + sysCustomer.setId(customerInvestigateRequest.getId()); + sysCustomer.setName(customerInvestigateRequest.getName()); + sysCustomer.setPhone(customerInvestigateRequest.getPhone()); + //添加人、更新人 + /*if(loginUser != null){ + if(customerInvestigateRequest.getId() == null){ + sysCustomer.setCreateBy(loginUser.getUser().getUserId()+""); + }else{ + sysCustomer.setUpdateBy(loginUser.getUser().getUserId()+""); + } + }*/ + //sysCustomer.setEmail(customerInvestigateRequest.getEmail()); + //sysCustomer.setAddress(customerInvestigateRequest.getAddress()); + int addOrUpdateRow = customerInvestigateRequest.getId() == null ? insertSysCustomer(sysCustomer) : updateSysCustomer(sysCustomer); + if(addOrUpdateRow > 0){ + SysCustomerPhysicalSigns customerSigns = ObjectUtils.getObjectByObject(customerInvestigateRequest, SysCustomerPhysicalSigns.class); + customerSigns.setCustomerId(sysCustomer.getId()); + customerSigns.setId(null); + addOrUpdateRow = customerInvestigateRequest.getId() == null ? sysCustomerPhysicalSignsMapper.insertSysCustomerPhysicalSigns(customerSigns) : sysCustomerPhysicalSignsMapper.updateSysCustomerPhysicalSignsByCustomerId(customerSigns); + } + return addOrUpdateRow; + } + + /** + * 查询客户基础信息以及体征信息列表 + * + * @param sysCustomer 查询条件 + * @return 结果 + */ + public List selectSysCustomerAndSignList(SysCustomer sysCustomer){ + return sysCustomerMapper.selectSysCustomerAndSignList(sysCustomer); + } + + /** + * 根据id查询客户信息(基础信息以及体征信息) + * + * @param id 客户id + * @return 结果 + */ + public SysCustomer getCustomerAndSignById(Long id){ + SysCustomer sysCustomer = new SysCustomer(); + sysCustomer.setId(id); + List list = sysCustomerMapper.selectSysCustomerAndSignList(sysCustomer); + return list.size() > 0 ? list.get(0) : null; + } + + public int delCustomerAndSignById(Long[] ids){ + if(deleteSysCustomerByIds(ids) > 0){ + return sysCustomerPhysicalSignsMapper.deleteSysCustomerPhysicalSignsByCustomerIds(ids); + } + return 0; + } +} \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysCustomerMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysCustomerMapper.xml new file mode 100644 index 000000000..aa37d3fce --- /dev/null +++ b/stdiet-custom/src/main/resources/mapper/custom/SysCustomerMapper.xml @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, name, phone, email, address, pay_date, start_date, purchase_num, pay_total, main_dietitian, assistant_dietitian, after_dietitian, salesman, charge_person, follow_status, create_time, create_by, update_time, update_by from sys_customer + + + + + + + + insert into sys_customer + + name, + phone, + email, + address, + pay_date, + start_date, + purchase_num, + pay_total, + main_dietitian, + assistant_dietitian, + after_dietitian, + salesman, + charge_person, + follow_status, + create_time, + create_by, + update_time, + update_by, + + + #{name}, + #{phone}, + #{email}, + #{address}, + #{payDate}, + #{startDate}, + #{purchaseNum}, + #{payTotal}, + #{mainDietitian}, + #{assistantDietitian}, + #{afterDietitian}, + #{salesman}, + #{chargePerson}, + #{followStatus}, + #{createTime}, + #{createBy}, + #{updateTime}, + #{updateBy}, + + + + + update sys_customer + + name = #{name}, + phone = #{phone}, + email = #{email}, + address = #{address}, + pay_date = #{payDate}, + start_date = #{startDate}, + purchase_num = #{purchaseNum}, + pay_total = #{payTotal}, + main_dietitian = #{mainDietitian}, + assistant_dietitian = #{assistantDietitian}, + after_dietitian = #{afterDietitian}, + salesman = #{salesman}, + charge_person = #{chargePerson}, + follow_status = #{followStatus}, + create_time = #{createTime}, + create_by = #{createBy}, + update_time = #{updateTime}, + update_by = #{updateBy}, + + where id = #{id} + + + + delete from sys_customer where id = #{id} + + + + delete from sys_customer where id in + + #{id} + + + + + + + + + select sc.id, sc.name, sc.phone, sc.create_time, sc.create_by, sc.update_time, sc.update_by, + + from sys_customer sc + left join sys_customer_physical_signs scps on scps.customer_id = sc.id + + + + scps.sex, scps.age, scps.tall, scps.weight, scps.physical_signs_id, scps.dishes_ingredient_id, scps.photo, scps.constipation, + scps.stayLate, scps.motion, scps.make_food_type, scps.make_food_taste, scps.walk, scps.difficulty, scps.weakness, scps.rebound, scps.crux, scps.position, + scps.sleep_time, scps.getup_time, scps.connect_time, scps.remarks, scps.blood_data, scps.moisture_date, scps.vocation, + scps.night, scps.experience + + + + + + + + \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysCustomerPhysicalSignsMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysCustomerPhysicalSignsMapper.xml new file mode 100644 index 000000000..b92be9a45 --- /dev/null +++ b/stdiet-custom/src/main/resources/mapper/custom/SysCustomerPhysicalSignsMapper.xml @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, customer_id, sex, age, tall, weight, physical_signs_id, dishes_ingredient_id, photo, constipation, stayLate, motion, make_food_type, make_food_taste, walk, difficulty, weakness, rebound, crux, position, sleep_time, getup_time, connect_time, remarks, blood_data, moisture_date, vocation, + night, experience, create_time, create_by, update_time, update_by from sys_customer_physical_signs + + + + + + + + insert into sys_customer_physical_signs + + customer_id, + sex, + age, + tall, + weight, + physical_signs_id, + dishes_ingredient_id, + photo, + constipation, + stayLate, + motion, + make_food_type, + make_food_taste, + walk, + difficulty, + weakness, + rebound, + crux, + position, + sleep_time, + getup_time, + connect_time, + remarks, + blood_data, + moisture_date, + vocation, + + night, + experience, + create_time, + create_by, + update_time, + update_by, + + + #{customerId}, + #{sex}, + #{age}, + #{tall}, + #{weight}, + #{physicalSignsId}, + #{dishesIngredientId}, + #{photo}, + #{constipation}, + #{staylate}, + #{motion}, + #{makeFoodType}, + #{makeFoodTaste}, + #{walk}, + #{difficulty}, + #{weakness}, + #{rebound}, + #{crux}, + #{position}, + #{sleepTime}, + #{getupTime}, + #{connectTime}, + #{remarks}, + #{bloodData}, + #{moistureDate}, + #{vocation}, + #{night}, + #{experience}, + #{createTime}, + #{createBy}, + #{updateTime}, + #{updateBy}, + + + + + update sys_customer_physical_signs + + customer_id = #{customerId}, + sex = #{sex}, + age = #{age}, + tall = #{tall}, + weight = #{weight}, + physical_signs_id = #{physicalSignsId}, + dishes_ingredient_id = #{dishesIngredientId}, + photo = #{photo}, + constipation = #{constipation}, + stayLate = #{staylate}, + motion = #{motion}, + make_food_type = #{makeFoodType}, + make_food_taste = #{makeFoodTaste}, + walk = #{walk}, + difficulty = #{difficulty}, + weakness = #{weakness}, + rebound = #{rebound}, + crux = #{crux}, + position = #{position}, + sleep_time = #{sleepTime}, + getup_time = #{getupTime}, + connect_time = #{connectTime}, + remarks = #{remarks}, + blood_data = #{bloodData}, + moisture_date = #{moistureDate}, + vocation = #{vocation}, + night = #{night}, + experience = #{experience}, + create_time = #{createTime}, + create_by = #{createBy}, + update_time = #{updateTime}, + update_by = #{updateBy}, + + where id = #{id} + + + + delete from sys_customer_physical_signs where id = #{id} + + + + delete from sys_customer_physical_signs where id in + + #{id} + + + + + + update sys_customer_physical_signs + + sex = #{sex}, + age = #{age}, + tall = #{tall}, + weight = #{weight}, + physical_signs_id = #{physicalSignsId}, + dishes_ingredient_id = #{dishesIngredientId}, + photo = #{photo}, + constipation = #{constipation}, + stayLate = #{staylate}, + motion = #{motion}, + make_food_type = #{makeFoodType}, + make_food_taste = #{makeFoodTaste}, + walk = #{walk}, + difficulty = #{difficulty}, + weakness = #{weakness}, + rebound = #{rebound}, + crux = #{crux}, + position = #{position}, + sleep_time = #{sleepTime}, + getup_time = #{getupTime}, + connect_time = #{connectTime}, + remarks = #{remarks}, + blood_data = #{bloodData}, + moisture_date = #{moistureDate}, + vocation = #{vocation}, + night = #{night}, + experience = #{experience}, + create_time = #{createTime}, + create_by = #{createBy}, + update_time = #{updateTime}, + update_by = #{updateBy}, + + where customer_id = #{customerId} + + + + delete from sys_customer_physical_signs where customer_id in + + #{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 1dc825216..b53a409d4 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 @@ -100,7 +100,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { "/custom/contract/sign", "/custom/contract/file/**", "/custom/wxUserInfo/wx/**", - "/custom/wxUserLog/wx/**" + "/custom/wxUserLog/wx/**", + "/investigate/**", + "/investigate/physicalSignsList" ).anonymous() .antMatchers( HttpMethod.GET, diff --git a/stdiet-ui/src/api/custom/customer.js b/stdiet-ui/src/api/custom/customer.js new file mode 100644 index 000000000..f01a7e50c --- /dev/null +++ b/stdiet-ui/src/api/custom/customer.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +// 查询客户信息列表 +export function listCustomer(query) { + return request({ + url: '/custom/customer/list', + method: 'get', + params: query + }) +} + +// 查询客户信息详细 +export function getCustomer(id) { + return request({ + url: '/custom/customer/' + id, + method: 'get' + }) +} + +// 新增客户信息 +export function addCustomer(data) { + return request({ + url: '/custom/customer', + method: 'post', + data: data + }) +} + +// 修改客户信息 +export function updateCustomer(data) { + return request({ + url: '/custom/customer', + method: 'put', + data: data + }) +} + +// 删除客户信息 +export function delCustomer(id) { + return request({ + url: '/custom/customer/' + id, + method: 'delete' + }) +} + +// 导出客户信息 +export function exportCustomer(query) { + return request({ + url: '/custom/customer/export', + method: 'get', + params: query + }) +} diff --git a/stdiet-ui/src/api/custom/customerInvestigation.js b/stdiet-ui/src/api/custom/customerInvestigation.js new file mode 100644 index 000000000..7c184e9ab --- /dev/null +++ b/stdiet-ui/src/api/custom/customerInvestigation.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +// 调查页面查询体征列表 +export function physicalSignsList(query) { + return request({ + url: '/investigate/physicalSignsList', + method: 'get', + params: query + }) +} + +// 调查页面新增客户资料 +export function addCustomer(data) { + return request({ + url: '/investigate/customerInvestigate', + method: 'post', + data: data + }) +} + +// 根据字典类型查询字典数据信息 +export function getDictData(dictType) { + return request({ + url: '/investigate/type/' + dictType, + method: 'get' + }) +} diff --git a/stdiet-ui/src/assets/logo/st_logo.png b/stdiet-ui/src/assets/logo/st_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..18f53c0be76336bfb830d341e8420f75edb33891 GIT binary patch literal 97046 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�jZjS*^wwn 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 { NProgress.start() diff --git a/stdiet-ui/src/router/index.js b/stdiet-ui/src/router/index.js index 25b3c0eae..094d0f629 100644 --- a/stdiet-ui/src/router/index.js +++ b/stdiet-ui/src/router/index.js @@ -129,7 +129,13 @@ export const constantRoutes = [ hidden: true, component: (resolve) => require(['@/views/custom/signContract'], resolve), meta: { title: '合同' } - } + }, +{ + path: '/question', + component: (resolve) => require(['@/views/custom/investigate/questionnaire'], resolve), + hidden: true, + meta: { title: '营养体征调查表'} +} ] export default new Router({ diff --git a/stdiet-ui/src/views/custom/customer/index.vue b/stdiet-ui/src/views/custom/customer/index.vue new file mode 100644 index 000000000..2cd8ae986 --- /dev/null +++ b/stdiet-ui/src/views/custom/customer/index.vue @@ -0,0 +1,704 @@ + + + diff --git a/stdiet-ui/src/views/custom/investigate/questionnaire.vue b/stdiet-ui/src/views/custom/investigate/questionnaire.vue new file mode 100644 index 000000000..608508481 --- /dev/null +++ b/stdiet-ui/src/views/custom/investigate/questionnaire.vue @@ -0,0 +1,353 @@ + + + +