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<SysPhysicalSigns>  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<SysCustomer> 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<SysCustomer> list = sysCustomerService.selectSysCustomerList(sysCustomer);
+        ExcelUtil<SysCustomer> util = new ExcelUtil<SysCustomer>(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;
+
+/**
+ * <p>
+ * 对象相关工具类
+ * </p>
+ *
+ * @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> T getObjectByObject(Object object, Class<T> clazz) throws Exception {
+        return getObjectByObject(object, clazz, new ArrayList<String>(1));
+    }
+
+    /**
+     * @Author xzj
+     * @Description 利用反射机制将一个对象中的所有属性值赋值给另一个对象
+     * @Date 2020/12/3 18:17
+     * @Param object: 原对象
+     * @Param clazz: 目标对象对应Class
+     * @Param filterField: 需要过滤掉的属性名称集合
+     * @Return T 目标对象
+     **/
+    public static <T> T getObjectByObject(Object object, Class<T> clazz, List<String> 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<SysPhysicalSigns> 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<SysPhysicalSigns> getSignList() {
+        return signList;
+    }
+
+    public void setSignList(List<SysPhysicalSigns> 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<SysCustomer> 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<SysCustomer> 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<SysCustomerPhysicalSigns> 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<SysCustomerPhysicalSigns> 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<SysCustomer> 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<SysCustomer> 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<SysCustomerPhysicalSigns> 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<SysCustomer> 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<SysCustomer> 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<SysCustomer> 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 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.stdiet.custom.mapper.SysCustomerMapper">
+
+    <resultMap type="SysCustomer" id="SysCustomerResult">
+        <result property="id"    column="id"    />
+        <result property="name"    column="name"    />
+        <result property="phone"    column="phone"    />
+        <result property="email"    column="email"    />
+        <result property="address"    column="address"    />
+        <result property="payDate"    column="pay_date"    />
+        <result property="startDate"    column="start_date"    />
+        <result property="purchaseNum"    column="purchase_num"    />
+        <result property="payTotal"    column="pay_total"    />
+        <result property="mainDietitian"    column="main_dietitian"    />
+        <result property="assistantDietitian"    column="assistant_dietitian"    />
+        <result property="afterDietitian"    column="after_dietitian"    />
+        <result property="salesman"    column="salesman"    />
+        <result property="chargePerson"    column="charge_person"    />
+        <result property="followStatus"    column="follow_status"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="updateBy"    column="update_by"    />
+    </resultMap>
+
+    <resultMap type="SysCustomer" id="SysCustomerSignResult">
+        <result property="id"    column="id"    />
+        <result property="name"    column="name"    />
+        <result property="phone"    column="phone"    />
+        <result property="email"    column="email"    />
+        <result property="address"    column="address"    />
+        <result property="payDate"    column="pay_date"    />
+        <result property="startDate"    column="start_date"    />
+        <result property="purchaseNum"    column="purchase_num"    />
+        <result property="payTotal"    column="pay_total"    />
+        <result property="mainDietitian"    column="main_dietitian"    />
+        <result property="assistantDietitian"    column="assistant_dietitian"    />
+        <result property="afterDietitian"    column="after_dietitian"    />
+        <result property="salesman"    column="salesman"    />
+        <result property="chargePerson"    column="charge_person"    />
+        <result property="followStatus"    column="follow_status"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <association property="sign" javaType="com.stdiet.custom.domain.SysCustomerPhysicalSigns">
+            <result property="id"    column="id"    />
+            <result property="customerId"    column="customer_id"    />
+            <result property="sex"    column="sex"    />
+            <result property="age"    column="age"    />
+            <result property="tall"    column="tall"    />
+            <result property="weight"    column="weight"    />
+            <result property="physicalSignsId"    column="physical_signs_id"    />
+            <result property="dishesIngredientId"    column="dishes_ingredient_id"    />
+            <result property="photo"    column="photo"    />
+            <result property="constipation"    column="constipation"    />
+            <result property="staylate"    column="stayLate"    />
+            <result property="motion"    column="motion"    />
+            <result property="makeFoodType"    column="make_food_type"    />
+            <result property="makeFoodTaste"    column="make_food_taste"    />
+            <result property="walk"    column="walk"    />
+            <result property="difficulty"    column="difficulty"    />
+            <result property="weakness"    column="weakness"    />
+            <result property="rebound"    column="rebound"    />
+            <result property="crux"    column="crux"    />
+            <result property="position"    column="position"    />
+            <result property="sleepTime"    column="sleep_time"    />
+            <result property="getupTime"    column="getup_time"    />
+            <result property="connectTime"    column="connect_time"    />
+            <result property="remarks"    column="remarks"    />
+            <result property="bloodData"    column="blood_data"    />
+            <result property="moistureDate"    column="moisture_date"    />
+            <result property="vocation"    column="vocation"    />
+            <result property="night"    column="night"    />
+            <result property="experience"    column="experience"    />
+            <!-- column是传的参数, select是调用的查询 -->
+            <association property="signList" column="physical_signs_id" select="getSignByIds"/>
+        </association>
+    </resultMap>
+
+    <sql id="selectSysCustomerVo">
+        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
+    </sql>
+
+    <select id="selectSysCustomerList" parameterType="SysCustomer" resultMap="SysCustomerResult">
+        <include refid="selectSysCustomerVo"/>
+        <where>
+            <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
+            <if test="phone != null  and phone != ''"> and phone like concat('%', #{phone}, '%')</if>
+        </where>
+    </select>
+
+    <select id="selectSysCustomerById" parameterType="Long" resultMap="SysCustomerResult">
+        <include refid="selectSysCustomerVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertSysCustomer" parameterType="SysCustomer" useGeneratedKeys="true" keyProperty="id">
+        insert into sys_customer
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="name != null">name,</if>
+            <if test="phone != null">phone,</if>
+            <if test="email != null">email,</if>
+            <if test="address != null">address,</if>
+            <if test="payDate != null">pay_date,</if>
+            <if test="startDate != null">start_date,</if>
+            <if test="purchaseNum != null">purchase_num,</if>
+            <if test="payTotal != null">pay_total,</if>
+            <if test="mainDietitian != null">main_dietitian,</if>
+            <if test="assistantDietitian != null">assistant_dietitian,</if>
+            <if test="afterDietitian != null">after_dietitian,</if>
+            <if test="salesman != null">salesman,</if>
+            <if test="chargePerson != null">charge_person,</if>
+            <if test="followStatus != null">follow_status,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="updateBy != null">update_by,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="name != null">#{name},</if>
+            <if test="phone != null">#{phone},</if>
+            <if test="email != null">#{email},</if>
+            <if test="address != null">#{address},</if>
+            <if test="payDate != null">#{payDate},</if>
+            <if test="startDate != null">#{startDate},</if>
+            <if test="purchaseNum != null">#{purchaseNum},</if>
+            <if test="payTotal != null">#{payTotal},</if>
+            <if test="mainDietitian != null">#{mainDietitian},</if>
+            <if test="assistantDietitian != null">#{assistantDietitian},</if>
+            <if test="afterDietitian != null">#{afterDietitian},</if>
+            <if test="salesman != null">#{salesman},</if>
+            <if test="chargePerson != null">#{chargePerson},</if>
+            <if test="followStatus != null">#{followStatus},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+        </trim>
+    </insert>
+
+    <update id="updateSysCustomer" parameterType="SysCustomer">
+        update sys_customer
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="name != null">name = #{name},</if>
+            <if test="phone != null">phone = #{phone},</if>
+            <if test="email != null">email = #{email},</if>
+            <if test="address != null">address = #{address},</if>
+            <if test="payDate != null">pay_date = #{payDate},</if>
+            <if test="startDate != null">start_date = #{startDate},</if>
+            <if test="purchaseNum != null">purchase_num = #{purchaseNum},</if>
+            <if test="payTotal != null">pay_total = #{payTotal},</if>
+            <if test="mainDietitian != null">main_dietitian = #{mainDietitian},</if>
+            <if test="assistantDietitian != null">assistant_dietitian = #{assistantDietitian},</if>
+            <if test="afterDietitian != null">after_dietitian = #{afterDietitian},</if>
+            <if test="salesman != null">salesman = #{salesman},</if>
+            <if test="chargePerson != null">charge_person = #{chargePerson},</if>
+            <if test="followStatus != null">follow_status = #{followStatus},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteSysCustomerById" parameterType="Long">
+        delete from sys_customer where id = #{id}
+    </delete>
+
+    <delete id="deleteSysCustomerByIds" parameterType="String">
+        delete from sys_customer where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <!-- 根据手机号查询客户 -->
+    <select id="getCustomerByPhone" parameterType="String" resultMap="SysCustomerResult">
+        <include refid="selectSysCustomerVo"/>
+        where phone = #{phone}
+    </select>
+
+    <sql id="selectSysCustomerAndSign">
+        <!--sc.email, sc.address, sc.pay_date, sc.start_date, sc.purchase_num, sc.pay_total, sc.main_dietitian, sc.assistant_dietitian,
+        sc.after_dietitian, sc.salesman, sc.charge_person, sc.follow_status, -->
+        select sc.id, sc.name, sc.phone, sc.create_time, sc.create_by, sc.update_time, sc.update_by,
+        <include refid="selectSysCustomerPhysicalSigns"></include>
+        from sys_customer sc
+        left join sys_customer_physical_signs scps on scps.customer_id = sc.id
+    </sql>
+
+    <sql id="selectSysCustomerPhysicalSigns">
+        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
+    </sql>
+
+    <select id="selectSysCustomerAndSignList" parameterType="SysCustomer" resultMap="SysCustomerSignResult">
+        <include refid="selectSysCustomerAndSign"/>
+        <where>
+            <if test="id != null"> and sc.id = #{id} </if>
+            <if test="name != null  and name != ''"> and sc.name like concat('%', #{name}, '%')</if>
+            <if test="phone != null  and phone != ''"> and sc.phone like concat('%', #{phone}, '%')</if>
+        </where>
+        order by id desc
+    </select>
+
+    <!-- 根据体征id获取体征 -->
+    <select id="getSignByIds" parameterType="String" resultType="SysPhysicalSigns">
+        select * from sys_physical_signs sps where FIND_IN_SET(id, #{physical_signs_id})
+    </select>
+
+</mapper>
\ 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 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.stdiet.custom.mapper.SysCustomerPhysicalSignsMapper">
+
+    <resultMap type="SysCustomerPhysicalSigns" id="SysCustomerPhysicalSignsResult">
+        <result property="id"    column="id"    />
+        <result property="customerId"    column="customer_id"    />
+        <result property="sex"    column="sex"    />
+        <result property="age"    column="age"    />
+        <result property="tall"    column="tall"    />
+        <result property="weight"    column="weight"    />
+        <result property="physicalSignsId"    column="physical_signs_id"    />
+        <result property="dishesIngredientId"    column="dishes_ingredient_id"    />
+        <result property="photo"    column="photo"    />
+        <result property="constipation"    column="constipation"    />
+        <result property="staylate"    column="stayLate"    />
+        <result property="motion"    column="motion"    />
+        <result property="makeFoodType"    column="make_food_type"    />
+        <result property="makeFoodTaste"    column="make_food_taste"    />
+        <result property="walk"    column="walk"    />
+        <result property="difficulty"    column="difficulty"    />
+        <result property="weakness"    column="weakness"    />
+        <result property="rebound"    column="rebound"    />
+        <result property="crux"    column="crux"    />
+        <result property="position"    column="position"    />
+        <result property="sleepTime"    column="sleep_time"    />
+        <result property="getupTime"    column="getup_time"    />
+        <result property="connectTime"    column="connect_time"    />
+        <result property="remarks"    column="remarks"    />
+        <result property="bloodData"    column="blood_data"    />
+        <result property="moistureDate"    column="moisture_date"    />
+        <result property="vocation"    column="vocation"    />
+        <result property="night"    column="night"    />
+        <result property="experience"    column="experience"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="updateBy"    column="update_by"    />
+    </resultMap>
+
+    <sql id="selectSysCustomerPhysicalSignsVo">
+        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
+    </sql>
+
+    <select id="selectSysCustomerPhysicalSignsList" parameterType="SysCustomerPhysicalSigns" resultMap="SysCustomerPhysicalSignsResult">
+        <include refid="selectSysCustomerPhysicalSignsVo"/>
+        <where>
+            <if test="customerId != null "> and customer_id = #{customerId}</if>
+            <if test="sex != null "> and sex = #{sex}</if>
+            <if test="age != null "> and age = #{age}</if>
+            <if test="tall != null "> and tall = #{tall}</if>
+            <if test="weight != null "> and weight = #{weight}</if>
+            <if test="physicalSignsId != null  and physicalSignsId != ''"> and physical_signs_id = #{physicalSignsId}</if>
+            <if test="dishesIngredientId != null  and dishesIngredientId != ''"> and dishes_ingredient_id = #{dishesIngredientId}</if>
+            <if test="photo != null  and photo != ''"> and photo = #{photo}</if>
+            <if test="constipation != null "> and constipation = #{constipation}</if>
+            <if test="staylate != null "> and stayLate = #{staylate}</if>
+            <if test="motion != null "> and motion = #{motion}</if>
+            <if test="makeFoodType != null "> and make_food_type = #{makeFoodType}</if>
+            <if test="makeFoodTaste != null "> and make_food_taste = #{makeFoodTaste}</if>
+            <if test="walk != null "> and walk = #{walk}</if>
+            <if test="difficulty != null  and difficulty != ''"> and difficulty = #{difficulty}</if>
+            <if test="weakness != null "> and weakness = #{weakness}</if>
+            <if test="rebound != null "> and rebound = #{rebound}</if>
+            <if test="crux != null "> and crux = #{crux}</if>
+            <if test="position != null "> and position = #{position}</if>
+            <if test="sleepTime != null "> and sleep_time = #{sleepTime}</if>
+            <if test="getupTime != null "> and getup_time = #{getupTime}</if>
+            <if test="connectTime != null "> and connect_time = #{connectTime}</if>
+            <if test="remarks != null  and remarks != ''"> and remarks = #{remarks}</if>
+            <if test="bloodData != null  and bloodData != ''"> and blood_data = #{bloodData}</if>
+            <if test="moistureDate != null  and moistureDate != ''"> and moisture_date = #{moistureDate}</if>
+            <if test="vocation != null  and vocation != ''"> and vocation = #{vocation}</if>
+            <if test="night != null "> and  night = #{night}</if>
+            <if test="experience != null  and experience != ''"> and experience = #{experience}</if>
+        </where>
+    </select>
+
+    <select id="selectSysCustomerPhysicalSignsById" parameterType="Long" resultMap="SysCustomerPhysicalSignsResult">
+        <include refid="selectSysCustomerPhysicalSignsVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertSysCustomerPhysicalSigns" parameterType="SysCustomerPhysicalSigns" useGeneratedKeys="true" keyProperty="id">
+        insert into sys_customer_physical_signs
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="customerId != null">customer_id,</if>
+            <if test="sex != null">sex,</if>
+            <if test="age != null">age,</if>
+            <if test="tall != null">tall,</if>
+            <if test="weight != null">weight,</if>
+            <if test="physicalSignsId != null">physical_signs_id,</if>
+            <if test="dishesIngredientId != null">dishes_ingredient_id,</if>
+            <if test="photo != null">photo,</if>
+            <if test="constipation != null">constipation,</if>
+            <if test="staylate != null">stayLate,</if>
+            <if test="motion != null">motion,</if>
+            <if test="makeFoodType != null">make_food_type,</if>
+            <if test="makeFoodTaste != null">make_food_taste,</if>
+            <if test="walk != null">walk,</if>
+            <if test="difficulty != null">difficulty,</if>
+            <if test="weakness != null">weakness,</if>
+            <if test="rebound != null">rebound,</if>
+            <if test="crux != null">crux,</if>
+            <if test="position != null">position,</if>
+            <if test="sleepTime != null">sleep_time,</if>
+            <if test="getupTime != null">getup_time,</if>
+            <if test="connectTime != null">connect_time,</if>
+            <if test="remarks != null">remarks,</if>
+            <if test="bloodData != null">blood_data,</if>
+            <if test="moistureDate != null">moisture_date,</if>
+            <if test="vocation != null">vocation,</if>
+            <if test="
+night != null">
+                night,</if>
+            <if test="experience != null">experience,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="updateBy != null">update_by,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="customerId != null">#{customerId},</if>
+            <if test="sex != null">#{sex},</if>
+            <if test="age != null">#{age},</if>
+            <if test="tall != null">#{tall},</if>
+            <if test="weight != null">#{weight},</if>
+            <if test="physicalSignsId != null">#{physicalSignsId},</if>
+            <if test="dishesIngredientId != null">#{dishesIngredientId},</if>
+            <if test="photo != null">#{photo},</if>
+            <if test="constipation != null">#{constipation},</if>
+            <if test="staylate != null">#{staylate},</if>
+            <if test="motion != null">#{motion},</if>
+            <if test="makeFoodType != null">#{makeFoodType},</if>
+            <if test="makeFoodTaste != null">#{makeFoodTaste},</if>
+            <if test="walk != null">#{walk},</if>
+            <if test="difficulty != null">#{difficulty},</if>
+            <if test="weakness != null">#{weakness},</if>
+            <if test="rebound != null">#{rebound},</if>
+            <if test="crux != null">#{crux},</if>
+            <if test="position != null">#{position},</if>
+            <if test="sleepTime != null">#{sleepTime},</if>
+            <if test="getupTime != null">#{getupTime},</if>
+            <if test="connectTime != null">#{connectTime},</if>
+            <if test="remarks != null">#{remarks},</if>
+            <if test="bloodData != null">#{bloodData},</if>
+            <if test="moistureDate != null">#{moistureDate},</if>
+            <if test="vocation != null">#{vocation},</if>
+            <if test="night != null">#{night},</if>
+            <if test="experience != null">#{experience},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+        </trim>
+    </insert>
+
+    <update id="updateSysCustomerPhysicalSigns" parameterType="SysCustomerPhysicalSigns">
+        update sys_customer_physical_signs
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="customerId != null">customer_id = #{customerId},</if>
+            <if test="sex != null">sex = #{sex},</if>
+            <if test="age != null">age = #{age},</if>
+            <if test="tall != null">tall = #{tall},</if>
+            <if test="weight != null">weight = #{weight},</if>
+            <if test="physicalSignsId != null">physical_signs_id = #{physicalSignsId},</if>
+            <if test="dishesIngredientId != null">dishes_ingredient_id = #{dishesIngredientId},</if>
+            <if test="photo != null">photo = #{photo},</if>
+            <if test="constipation != null">constipation = #{constipation},</if>
+            <if test="staylate != null">stayLate = #{staylate},</if>
+            <if test="motion != null">motion = #{motion},</if>
+            <if test="makeFoodType != null">make_food_type = #{makeFoodType},</if>
+            <if test="makeFoodTaste != null">make_food_taste = #{makeFoodTaste},</if>
+            <if test="walk != null">walk = #{walk},</if>
+            <if test="difficulty != null">difficulty = #{difficulty},</if>
+            <if test="weakness != null">weakness = #{weakness},</if>
+            <if test="rebound != null">rebound = #{rebound},</if>
+            <if test="crux != null">crux = #{crux},</if>
+            <if test="position != null">position = #{position},</if>
+            <if test="sleepTime != null">sleep_time = #{sleepTime},</if>
+            <if test="getupTime != null">getup_time = #{getupTime},</if>
+            <if test="connectTime != null">connect_time = #{connectTime},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="bloodData != null">blood_data = #{bloodData},</if>
+            <if test="moistureDate != null">moisture_date = #{moistureDate},</if>
+            <if test="vocation != null">vocation = #{vocation},</if>
+            <if test="night != null">night = #{night},</if>
+            <if test="experience != null">experience = #{experience},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteSysCustomerPhysicalSignsById" parameterType="Long">
+        delete from sys_customer_physical_signs where id = #{id}
+    </delete>
+
+    <delete id="deleteSysCustomerPhysicalSignsByIds" parameterType="String">
+        delete from sys_customer_physical_signs where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <!-- 根据客户id更新体征信息 -->
+    <update id="updateSysCustomerPhysicalSignsByCustomerId" parameterType="SysCustomerPhysicalSigns">
+        update sys_customer_physical_signs
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="sex != null">sex = #{sex},</if>
+            <if test="age != null">age = #{age},</if>
+            <if test="tall != null">tall = #{tall},</if>
+            <if test="weight != null">weight = #{weight},</if>
+            <if test="physicalSignsId != null">physical_signs_id = #{physicalSignsId},</if>
+            <if test="dishesIngredientId != null">dishes_ingredient_id = #{dishesIngredientId},</if>
+            <if test="photo != null">photo = #{photo},</if>
+            <if test="constipation != null">constipation = #{constipation},</if>
+            <if test="staylate != null">stayLate = #{staylate},</if>
+            <if test="motion != null">motion = #{motion},</if>
+            <if test="makeFoodType != null">make_food_type = #{makeFoodType},</if>
+            <if test="makeFoodTaste != null">make_food_taste = #{makeFoodTaste},</if>
+            <if test="walk != null">walk = #{walk},</if>
+            <if test="difficulty != null">difficulty = #{difficulty},</if>
+            <if test="weakness != null">weakness = #{weakness},</if>
+            <if test="rebound != null">rebound = #{rebound},</if>
+            <if test="crux != null">crux = #{crux},</if>
+            <if test="position != null">position = #{position},</if>
+            <if test="sleepTime != null">sleep_time = #{sleepTime},</if>
+            <if test="getupTime != null">getup_time = #{getupTime},</if>
+            <if test="connectTime != null">connect_time = #{connectTime},</if>
+            <if test="remarks != null">remarks = #{remarks},</if>
+            <if test="bloodData != null">blood_data = #{bloodData},</if>
+            <if test="moistureDate != null">moisture_date = #{moistureDate},</if>
+            <if test="vocation != null">vocation = #{vocation},</if>
+            <if test="night != null">night = #{night},</if>
+            <if test="experience != null">experience = #{experience},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+        </trim>
+        where customer_id = #{customerId}
+    </update>
+
+    <delete id="deleteSysCustomerPhysicalSignsByCustomerIds" parameterType="String">
+        delete from sys_customer_physical_signs where customer_id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+</mapper>
\ 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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

literal 0
HcmV?d00001

diff --git a/stdiet-ui/src/permission.js b/stdiet-ui/src/permission.js
index 6c261adb1..475b3b38f 100644
--- a/stdiet-ui/src/permission.js
+++ b/stdiet-ui/src/permission.js
@@ -7,7 +7,7 @@ import {getToken} from '@/utils/auth'
 
 NProgress.configure({showSpinner: false})
 
-const whiteList = ['/login', '/auth-redirect', '/bind', '/register']
+const whiteList = ['/login', '/auth-redirect', '/bind', '/register', '/question']
 
 router.beforeEach((to, from, next) => {
   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 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="名字" prop="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入名字"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="手机号" prop="phone">
+        <el-input
+          v-model="queryParams.phone"
+          placeholder="请输入手机号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['custom:customer:add']"
+        >新增</el-button>
+      </el-col>
+      <!--<el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['custom:customer:edit']"
+        >修改</el-button>
+      </el-col>-->
+      <!--<el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['custom:customer:remove']"
+        >删除</el-button>
+      </el-col>-->
+      <!--<el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['custom:customer:export']"
+        >导出</el-button>
+      </el-col>-->
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="customerList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <!--<el-table-column label="序号" align="center" prop="id" />-->
+      <el-table-column label="姓名" align="center" prop="name" />
+      <el-table-column label="手机号" align="center" prop="phone" />
+      <el-table-column label="性别" align="center" prop="sign.sex" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.sex == 0 ? `男` : '女'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="年龄(岁)" align="center" prop="sign.age" />
+      <el-table-column label="身高(厘米)" align="center" prop="sign.tall" />
+      <el-table-column label="体重(斤)" align="center" prop="sign.weight" />
+      <el-table-column label="北方、南方" align="center" prop="sign.position" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.position == 0 ? `南方` : '北方'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="病史" align="center" prop="sign.signList" width="80">
+        <template slot-scope="scope">
+          {{getSignString(scope.row.sign.signList)}}
+        </template>
+      </el-table-column>
+      <el-table-column label="忌口或过敏源" align="center" prop="sign.dishesIngredientId" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.dishesIngredientId}}
+        </template>
+      </el-table-column>
+      <el-table-column label="是否便秘" align="center" prop="sign.constipation" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.constipation == 0 ? `是` : '否'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="是否熬夜失眠" align="center" prop="sign.staylate" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.staylate == 0 ? `是` : '否'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="是否经常运动" align="center" prop="sign.motion" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.motion == 0 ? `是` : '否'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="饮食方式" align="center" prop="sign.makeFoodType" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.makeFoodType == 0 ? `自己做` : '外面吃'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="饮食特点" align="center" prop="sign.makeFoodTaste" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.makeFoodTaste == 0 ? `清淡` : '重口味'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="工作职业" align="center" prop="sign.vocation" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.vocation}}
+        </template>
+      </el-table-column>
+      <el-table-column label="是否上夜班" align="center" prop="sign.night" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.night == 0 ? `是` : '否'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="久坐多还是运动多" align="center" prop="sign.walk" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.walk == 0 ? `久坐多` : '走动多'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="是否浑身乏力" align="center" prop="sign.weakness" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.weakness == 0 ? `久坐多` : '走动多'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="是否减脂反弹" align="center" prop="sign.rebound" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.rebound == 0 ? `是` : '否'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="意识到生活习惯是减脂关键" align="center" prop="sign.crux" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.crux == 0 ? `是` : '否'}}
+        </template>
+      </el-table-column>
+      <el-table-column label="睡觉时间" align="center" prop="sign.sleepTime" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.sleepTime}}点
+        </template>
+      </el-table-column>
+      <el-table-column label="起床时间" align="center" prop="sign.getupTime" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.getupTime}}点
+        </template>
+      </el-table-column>
+      <el-table-column label="方便沟通时间" align="center" prop="sign.connectTime" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.connectTime}}点
+        </template>
+      </el-table-column>
+      <el-table-column label="湿气数据" align="center" prop="sign.bloodData" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.bloodData}}
+        </template>
+      </el-table-column>
+      <el-table-column label="气血数据" align="center" prop="sign.moistureDate" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.moistureDate}}
+        </template>
+      </el-table-column>
+      <el-table-column label="减脂经历" align="center" prop="sign.experience" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.experience}}
+        </template>
+      </el-table-column>
+      <el-table-column label="减脂遇到的困难" align="center" prop="sign.difficulty" width="80">
+        <template slot-scope="scope">
+          {{scope.row.sign.difficulty}}
+        </template>
+      </el-table-column>
+      <!--<el-table-column label="主营养师" align="center" prop="mainDietitian" />
+      <el-table-column label="营养师助理" align="center" prop="assistantDietitian" />
+      <el-table-column label="售后营养师" align="center" prop="afterDietitian" />
+      <el-table-column label="销售人员" align="center" prop="salesman" />
+      <el-table-column label="负责人" align="center" prop="chargePerson" />-->
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['custom:customer:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['custom:customer:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改客户信息对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+          <!--<p>现在要先为您建立更加详细的档案,以便为您定制专属的减脂计划</p>-->
+          <el-form-item label="真实姓名" prop="name">
+            <el-input v-model="form.name" placeholder="请输入真实姓名" />
+          </el-form-item>
+          <el-form-item label="手机号" prop="phone">
+            <el-input v-model="form.phone" placeholder="请输入手机号" />
+          </el-form-item>
+          <!--<el-form-item label="邮箱" prop="email">
+            <el-input v-model="form.email" placeholder="请输入邮箱" />
+          </el-form-item>-->
+          <!--<el-form-item label="您的居住地址" prop="address">
+            <el-input v-model="form.address" placeholder="请输入地址" />
+          </el-form-item>-->
+          <el-form-item label="性别" prop="sex">
+            <el-select v-model="form.sex" placeholder="请选择性别">
+              <el-option label="男" value="0" />
+              <el-option label="女" value="1" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="年龄(岁)" prop="age">
+            <el-input v-model="form.age" placeholder="请输入年龄" />
+          </el-form-item>
+          <el-form-item label="身高(厘米)" prop="tall">
+            <el-input v-model="form.tall" placeholder="请输入身高" />
+          </el-form-item>
+          <el-form-item label="体重(斤)" prop="weight">
+            <el-input v-model="form.weight" placeholder="请输入体重" />
+          </el-form-item>
+          <el-form-item label="南方人还是北方人" prop="position">
+            <el-select v-model="form.position" placeholder="请选择">
+              <el-option label="南方" value="0" />
+              <el-option label="北方" value="1" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="病史(多选)" prop="physicalSignsId">
+            <el-select v-model="form.physicalSignsId" multiple placeholder="请选择">
+              <el-option
+                v-for="physicalSign in physicalSignsList"
+                :key="physicalSign.id" :label="physicalSign.name" :value="physicalSign.id">
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="忌口或过敏源" prop="dishesIngredientId">
+            <el-input v-model="form.dishesIngredientId" placeholder="请输入名称" />
+          </el-form-item>
+          <!--<el-form-item label="您的照片" prop="photo">
+            <el-input v-model="form.photo" placeholder="请输入客户照片" />
+          </el-form-item>-->
+          <el-form-item label="是否便秘" prop="constipation">
+            <el-select v-model="form.constipation" placeholder="请选择">
+              <el-option label="是" value="0" />
+              <el-option label="否" value="1" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="是否熬夜、失眠" prop="staylate">
+            <el-select v-model="form.staylate" placeholder="请选择">
+              <el-option label="是" value="0" />
+              <el-option label="否" value="1" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="是否经常运动" prop="motion">
+            <el-select v-model="form.motion" placeholder="请选择">
+              <el-option label="是" value="0" />
+              <el-option label="否" value="1" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="饮食方式" prop="makeFoodType">
+            <el-select v-model="form.makeFoodType" placeholder="请选择">
+              <el-option label="自己做" value="0" />
+              <el-option label="外面吃" value="1" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="饮食特点" prop="makeFoodTaste">
+            <el-select v-model="form.makeFoodTaste" placeholder="请选择">
+              <el-option label="清淡" value="0" />
+              <el-option label="重口味" value="1" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="工作职业" prop="vocation">
+            <el-input v-model="form.vocation" placeholder="请输入工作职业" />
+          </el-form-item>
+          <el-form-item label="是否上夜班" prop="night">
+            <el-select v-model="form.night" placeholder="请选择">
+              <el-option label="是" value="0" />
+              <el-option label="否" value="1" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="平时久坐多还是走动多" prop="walk">
+            <el-select v-model="form.walk" placeholder="请选择">
+              <el-option label="久坐多" value="0" />
+              <el-option label="走动多" value="1" />
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="是否浑身乏力" prop="weakness">
+            <el-select v-model="form.weakness" placeholder="请选择">
+              <el-option label="是" value="0" />
+              <el-option label="否" value="1" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="是否减脂反弹" prop="rebound">
+            <el-select v-model="form.rebound" placeholder="请选择">
+              <el-option label="是" value="0" />
+              <el-option label="否" value="1" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="是否意识到生活习惯是减脂关键" prop="crux">
+            <el-select v-model="form.crux" placeholder="请选择">
+              <el-option label="是" value="0" />
+              <el-option label="否" value="1" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="睡觉时间" prop="sleepTime">
+            <el-time-select v-model="form.sleepTime" :picker-options="{start: '00:00',step: '01:00',end: '24:00'}" placeholder="请选择时间" :editable=false />
+          </el-form-item>
+          <el-form-item label="起床时间" prop="getupTime">
+            <el-time-select v-model="form.getupTime" :picker-options="{start: '00:00',step: '01:00',end: '24:00'}" placeholder="请选择时间" :editable=false />
+          </el-form-item>
+          <el-form-item label="方便沟通时间" prop="connectTime">
+            <el-time-select v-model="form.connectTime" :picker-options="{start: '00:00',step: '01:00',end: '24:00'}" placeholder="请选择时间" :editable=false />
+          </el-form-item>
+          <!--<el-form-item label="备注信息" prop="remarks">
+            <el-input v-model="form.remarks" placeholder="请输入备注信息" />
+          </el-form-item>-->
+          <!--<p>好的,我现在给您测一下湿气和气血,有以下出现情况的请直接选择</p>-->
+          <el-form-item label="湿气(多选)" prop="bloodData">
+            <el-checkbox-group v-model="form.bloodData">
+              <el-checkbox v-for="bloodItem in bloodDataList" :label="bloodItem.dictValue"  :key="bloodItem.dictValue">{{bloodItem.dictLabel}}</el-checkbox>
+            </el-checkbox-group>
+          </el-form-item>
+          <el-form-item label="气血(多选)" prop="moistureDate">
+            <el-checkbox-group v-model="form.moistureDate">
+              <el-checkbox v-for="moistureItem in moistureDataList" :label="moistureItem.dictValue" :key="moistureItem.dictValue">{{moistureItem.dictLabel}}</el-checkbox>
+            </el-checkbox-group>
+          </el-form-item>
+          <el-form-item label="减脂经历(重点详细填写)" prop="experience">
+            <el-input v-model="form.experience" placeholder="请输入" />
+          </el-form-item>
+          <el-form-item label="减脂遇到的困难" prop="difficulty">
+            <el-input v-model="form.difficulty" placeholder="请输入" />
+          </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { listCustomer, getCustomer, delCustomer, addCustomer, updateCustomer, exportCustomer } from "@/api/custom/customer";
+  import { listPhysicalSigns } from "@/api/custom/physicalSigns";
+
+  export default {
+    name: "Customer",
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 客户信息表格数据
+        customerList: [],
+        // 弹出层标题
+        title: "",
+        // 是否显示弹出层
+        open: false,
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          name: null,
+          phone: null
+        },
+        // 表单参数
+        form: {},
+        //气血数据
+        bloodDataList:[],
+        //湿气数据
+        moistureDataList:[],
+        //体征数据
+        physicalSignsList:[],
+        // 表单校验
+        rules: {
+          name: [
+            { required: true, trigger: "blur", message: "请填写姓名" },
+            { min: 1, max: 20, trigger: "blur", message: "姓名过长" }
+          ],
+          phone: [
+            { required: true, trigger: "blur", message: "请填写手机号" },
+            { required: true, trigger: "blur", message: "请填写正确的手机号" },
+            { required: true, trigger: "blur", pattern: /^[0-9]{5,11}$/ , message: '手机号格式不正确'}
+          ],
+          sex:[
+            { required: true, trigger: "blur", message: "请选择性别" }
+          ],
+          age:[
+            { required: true, trigger: "blur", message: "请填写年龄" },
+            {required: true, trigger: "blur", pattern: /^[1-9]\d*$/ , message: '年龄格式不正确'}
+          ],
+          tall:[
+            { required: true, trigger: "blur", message: "请填写身高" },
+            {required: true, trigger: "blur", pattern: /^[1-9]\d*$/ , message: '身高格式不正确'}
+          ],
+          weight:[
+            { required: true, trigger: "blur", message: "请填写体重" },
+            {required: true, trigger: "blur", pattern: /^[1-9]\d*$/ , message: '体重格式不正确'}
+          ],
+          constipation:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          staylate:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          motion:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          makeFoodType:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          makeFoodTaste:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          walk:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          weakness:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          rebound:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          crux:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          position:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          sleepTime:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          getupTime:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          connectTime:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          night:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          /*bloodData:[
+            { required: true, trigger: "blur", message: "请测试气血" }
+          ],
+          moistureDate:[
+            { required: true, trigger: "blur", message: "请测试湿气" }
+          ]*/
+        }
+      };
+    },
+    created() {
+      this.getList();
+      this.getPhysicalSign();
+      this.getDicts("sys_blood_data").then(response => {
+        this.bloodDataList = response.data;
+      });
+      this.getDicts("sys_moisture_data").then(response => {
+        this.moistureDataList = response.data;
+      });
+    },
+    methods: {
+      /** 查询客户信息列表 */
+      getList() {
+        this.loading = true;
+        listCustomer(this.queryParams).then(response => {
+          this.customerList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+      });
+      },
+      getSignString(signList){
+          if(signList == null){
+             return "";
+          }
+          let signStr = "";
+          for(let i in signList){
+             signStr += ","+signList[i].name;
+          }
+          return signList.length > 0 ? signStr.substring(1) : signStr;
+      },
+      /** 查询体征列表 */
+      getPhysicalSign() {
+        listPhysicalSigns().then(response => {
+          this.physicalSignsList = response.rows;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          id: null,
+          name: '',
+          phone: '',
+          address: "",
+          sex: "1",
+          age: null,
+          tall: null,
+          weight: null,
+          physicalSignsId: [],
+          dishesIngredientId: null,
+          photo: null,
+          constipation: "0",
+          staylate: "0",
+          motion: "1",
+          makeFoodType: "1",
+          makeFoodTaste: "1",
+          walk: "0",
+          difficulty: null,
+          weakness: "0",
+          rebound: "0",
+          crux: "0",
+          position: "1",
+          sleepTime: null,
+          getupTime: null,
+          connectTime: null,
+          remarks: null,
+          bloodData: [],
+          moistureDate: [],
+          night: "0",
+          vocation: null,
+          experience: null
+        };
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset();
+        this.open = true;
+        this.title = "添加客户信息";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+        const id = row.id || this.ids
+        getCustomer(id).then(response => {
+          let cusMessage = response.data.sign;
+          cusMessage.id = response.data.id;
+          cusMessage.bloodData = (cusMessage.bloodData != null && cusMessage.bloodData.trim() != "") ? cusMessage.bloodData.split(",") : [];
+          cusMessage.moistureDate = (cusMessage.moistureDate != null && cusMessage.moistureDate.trim() != "") ? cusMessage.moistureDate.split(",") : [];
+          cusMessage.physicalSignsId = (cusMessage.physicalSignsId != null && cusMessage.physicalSignsId.trim() != "") ? cusMessage.physicalSignsId.split(",") : [];
+          for(let i =0; i < cusMessage.physicalSignsId.length; i++) {
+            cusMessage.physicalSignsId[i] = parseInt(cusMessage.physicalSignsId[i]);
+            console.log(cusMessage.physicalSignsId[i]);
+          }
+          cusMessage.sleepTime = this.deltime(cusMessage.sleepTime);
+          cusMessage.getupTime = this.deltime(cusMessage.getupTime);
+          cusMessage.connectTime = this.deltime(cusMessage.connectTime);
+          cusMessage.name = response.data.name;
+          cusMessage.phone = response.data.phone;
+          cusMessage.sex += '';
+          cusMessage.constipation += '';
+          cusMessage.staylate += '';
+          cusMessage.motion += '';
+          cusMessage.makeFoodType += '';
+          cusMessage.makeFoodTaste += '';
+          cusMessage.walk += '';
+          cusMessage.weakness += '';
+          cusMessage.rebound += '';
+          cusMessage.crux += '';
+          cusMessage.position += '';
+          cusMessage.night += '';
+          this.form = cusMessage;
+          this.open = true;
+          this.title = "修改客户信息";
+      });
+      },
+      /** 提交按钮 */
+      submitForm() {
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            if (this.form.id != null) {
+              updateCustomer(this.getDealSubmitData()).then(response => {
+                if (response.code === 200) {
+                  this.msgSuccess("修改成功");
+                  this.open = false;
+                  this.getList();
+                }
+              });
+            } else {
+              addCustomer(this.getDealSubmitData()).then(response => {
+                if (response.code === 200) {
+                  this.msgSuccess("新增成功");
+                  this.open = false;
+                  this.getList();
+                }
+              });
+            }
+          }else{
+            this.$message({
+              message: '数据未填写完整',
+              type: 'warning'
+            });
+          }
+        });
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        const ids = row.id || this.ids;
+        this.$confirm('是否确认删除客户信息编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delCustomer(ids);
+        }).then(() => {
+          this.getList();
+        this.msgSuccess("删除成功");
+      }).catch(function() {});
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        const queryParams = this.queryParams;
+        this.$confirm('是否确认导出所有客户信息数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportCustomer(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+         }).catch(function() {});
+      },
+      getDealSubmitData(){
+        let cusMessage = Object.assign({}, this.form);
+        cusMessage.bloodData = cusMessage.bloodData != null ? cusMessage.bloodData.join(",") : null;
+        cusMessage.moistureDate = cusMessage.moistureDate != null ? cusMessage.moistureDate.join(",") : null;
+        cusMessage.physicalSignsId = cusMessage.physicalSignsId != null ? cusMessage.physicalSignsId.join(",") : null;
+        cusMessage.sleepTime = cusMessage.sleepTime.substring(0,2);
+        cusMessage.getupTime = cusMessage.getupTime.substring(0,2);
+        cusMessage.connectTime = cusMessage.connectTime.substring(0,2);
+        return cusMessage;
+      },
+      //睡觉、起床、沟通时间处理
+      deltime(time){
+        if(time != null){
+          return time > 9 ? (time + ":00") : ("0"+time+":00");
+        }
+        return null;
+      }
+    }
+  };
+</script>
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 @@
+<template>
+<section class="el-container is-vertical"><header class="el-header" style="height: 60px;">
+  <div class="block" style="margin-top:18px;text-align:center;margin:0 auto;">
+    <!--<span class="demonstration"></span>  require('@/assets/logo/st_logo.png')-->
+    <img src="@/assets/logo/st_logo.png" style="width:240px;height:80px;"/>
+  </div>
+</header> <main class="el-main">
+  <el-form ref="form" :model="form" :rules="rules" label-width="80px" style="margin-top:40px;">
+    <!--<p>现在要先为您建立更加详细的档案,以便为您定制专属的减脂计划</p>-->
+    <el-form-item label="真实姓名" prop="name">
+      <el-input v-model="form.name" placeholder="请输入真实姓名" />
+    </el-form-item>
+    <el-form-item label="手机号" prop="phone">
+      <el-input v-model="form.phone" placeholder="请输入手机号" />
+    </el-form-item>
+    <!--<el-form-item label="邮箱" prop="email">
+      <el-input v-model="form.email" placeholder="请输入邮箱" />
+    </el-form-item>-->
+    <!--<el-form-item label="您的居住地址" prop="address">
+      <el-input v-model="form.address" placeholder="请输入地址" />
+    </el-form-item>-->
+    <el-form-item label="性别" prop="sex">
+      <el-select v-model="form.sex" placeholder="请选择性别">
+        <el-option label="男" value="0" />
+        <el-option label="女" value="1" />
+      </el-select>
+    </el-form-item>
+    <el-form-item label="年龄(岁)" prop="age">
+      <el-input v-model="form.age" placeholder="请输入年龄" />
+    </el-form-item>
+    <el-form-item label="身高(厘米)" prop="tall">
+      <el-input v-model="form.tall" placeholder="请输入身高" />
+    </el-form-item>
+    <el-form-item label="体重(斤)" prop="weight">
+      <el-input v-model="form.weight" placeholder="请输入体重" />
+    </el-form-item>
+    <el-form-item label="南方人还是北方人" prop="position">
+      <el-select v-model="form.position" placeholder="请选择">
+        <el-option label="南方" value="0" />
+        <el-option label="北方" value="1" />
+      </el-select>
+    </el-form-item>
+    <el-form-item label="病史(多选)" prop="physicalSignsId">
+      <el-select v-model="form.physicalSignsId" multiple placeholder="请选择">
+        <el-option
+          v-for="physicalSign in physicalSignsList"
+          :key="physicalSign.id" :label="physicalSign.name" :value="physicalSign.id">
+        </el-option>
+      </el-select>
+    </el-form-item>
+    <el-form-item label="忌口或过敏源" prop="dishesIngredientId">
+      <el-input v-model="form.dishesIngredientId" placeholder="请输入名称" />
+    </el-form-item>
+    <!--<el-form-item label="您的照片" prop="photo">
+      <el-input v-model="form.photo" placeholder="请输入客户照片" />
+    </el-form-item>-->
+    <el-form-item label="是否便秘" prop="constipation">
+      <el-select v-model="form.constipation" placeholder="请选择">
+        <el-option label="是" value="0" />
+        <el-option label="否" value="1" />
+      </el-select>
+    </el-form-item>
+    <el-form-item label="是否熬夜、失眠" prop="staylate">
+      <el-select v-model="form.staylate" placeholder="请选择">
+        <el-option label="是" value="0" />
+        <el-option label="否" value="1" />
+      </el-select>
+    </el-form-item>
+    <el-form-item label="是否经常运动" prop="motion">
+      <el-select v-model="form.motion" placeholder="请选择">
+        <el-option label="是" value="0" />
+        <el-option label="否" value="1" />
+      </el-select>
+    </el-form-item>
+    <el-form-item label="饮食方式" prop="makeFoodType">
+      <el-select v-model="form.makeFoodType" placeholder="请选择">
+        <el-option label="自己做" value="0" />
+        <el-option label="外面吃" value="1" />
+      </el-select>
+    </el-form-item>
+    <el-form-item label="饮食特点" prop="makeFoodTaste">
+      <el-select v-model="form.makeFoodTaste" placeholder="请选择">
+        <el-option label="清淡" value="0" />
+        <el-option label="重口味" value="1" />
+      </el-select>
+    </el-form-item>
+    <el-form-item label="工作职业" prop="vocation">
+      <el-input v-model="form.vocation" placeholder="请输入工作职业" />
+    </el-form-item>
+    <el-form-item label="是否上夜班" prop="night">
+      <el-select v-model="form.night" placeholder="请选择">
+        <el-option label="是" value="0" />
+        <el-option label="否" value="1" />
+      </el-select>
+    </el-form-item>
+    <el-form-item label="平时久坐多还是走动多" prop="walk">
+      <el-select v-model="form.walk" placeholder="请选择">
+        <el-option label="久坐多" value="0" />
+        <el-option label="走动多" value="1" />
+      </el-select>
+    </el-form-item>
+
+    <el-form-item label="是否浑身乏力" prop="weakness">
+      <el-select v-model="form.weakness" placeholder="请选择">
+        <el-option label="是" value="0" />
+        <el-option label="否" value="1" />
+      </el-select>
+    </el-form-item>
+    <el-form-item label="是否减脂反弹" prop="rebound">
+      <el-select v-model="form.rebound" placeholder="请选择">
+        <el-option label="是" value="0" />
+        <el-option label="否" value="1" />
+      </el-select>
+    </el-form-item>
+    <el-form-item label="是否意识到生活习惯是减脂关键" prop="crux">
+      <el-select v-model="form.crux" placeholder="请选择">
+        <el-option label="是" value="0" />
+        <el-option label="否" value="1" />
+      </el-select>
+    </el-form-item>
+    <el-form-item label="睡觉时间" prop="sleepTime">
+      <el-time-select v-model="form.sleepTime" :picker-options="{start: '00:00',step: '01:00',end: '24:00'}" placeholder="请选择时间" :editable=false />
+    </el-form-item>
+    <el-form-item label="起床时间" prop="getupTime">
+      <el-time-select v-model="form.getupTime" :picker-options="{start: '00:00',step: '01:00',end: '24:00'}" placeholder="请选择时间" :editable=false />
+    </el-form-item>
+    <el-form-item label="方便沟通时间" prop="connectTime">
+      <el-time-select v-model="form.connectTime" :picker-options="{start: '00:00',step: '01:00',end: '24:00'}" placeholder="请选择时间" :editable=false />
+    </el-form-item>
+    <!--<el-form-item label="备注信息" prop="remarks">
+      <el-input v-model="form.remarks" placeholder="请输入备注信息" />
+    </el-form-item>-->
+    <!--<p>好的,我现在给您测一下湿气和气血,有以下出现情况的请直接选择</p>-->
+    <el-form-item label="湿气(多选)" prop="bloodData">
+      <el-checkbox-group v-model="form.bloodData">
+        <el-checkbox v-for="bloodItem in bloodDataList" :label="bloodItem.dictValue"  :key="bloodItem.dictValue">{{bloodItem.dictLabel}}</el-checkbox>
+      </el-checkbox-group>
+    </el-form-item>
+    <el-form-item label="气血(多选)" prop="moistureDate">
+      <el-checkbox-group v-model="form.moistureDate">
+        <el-checkbox v-for="moistureItem in moistureDataList" :label="moistureItem.dictValue" :key="moistureItem.dictValue">{{moistureItem.dictLabel}}</el-checkbox>
+      </el-checkbox-group>
+    </el-form-item>
+    <el-form-item label="减脂经历(重点详细填写)" prop="experience">
+      <el-input v-model="form.experience" placeholder="请输入" />
+    </el-form-item>
+    <el-form-item label="减脂遇到的困难" prop="difficulty">
+      <el-input v-model="form.difficulty" placeholder="请输入" />
+    </el-form-item>
+    <el-form-item style="text-align:center;margin:0 auto;">
+      <el-button type="primary" @click="addCustomer()" style="margin-right:50px;">已填写完成,提交数据</el-button>
+    </el-form-item>
+  </el-form>
+
+</main></section>
+
+</template>
+<script>
+  import { physicalSignsList,addCustomer,getDictData } from "@/api/custom/customerInvestigation";
+  import { listPhysicalSigns } from "@/api/custom/physicalSigns";
+  //imgUrl = require('@/assets/logo/st_logo.png')
+  export default {
+    name: "Questionnaire",
+    data() {
+      return {
+        imagePath: "../assets/logo/st_logo.png",
+        submitFlag: false,
+        form: {
+          name: '',
+          phone: '',
+          address: "",
+          sex: "1",
+          age: null,
+        tall: null,
+        weight: null,
+        physicalSignsId: [],
+        dishesIngredientId: null,
+        photo: null,
+        constipation: "0",
+        staylate: "0",
+        motion: "1",
+        makeFoodType: "1",
+        makeFoodTaste: "1",
+        walk: "0",
+        difficulty: null,
+        weakness: "0",
+        rebound: "0",
+        crux: "0",
+        position: "1",
+        sleepTime: null,
+        getupTime: null,
+        connectTime: null,
+        remarks: null,
+        bloodData: [],
+        moistureDate: [],
+          night: "0",
+          vocation: null,
+          experience: null
+        },
+        rules: {
+          name: [
+            { required: true, trigger: "blur", message: "请填写姓名" },
+            { min: 1, max: 20, trigger: "blur", message: "姓名过长" }
+          ],
+          phone: [
+            { required: true, trigger: "blur", message: "请填写手机号" },
+            { required: true, trigger: "blur", message: "请填写正确的手机号" },
+            { required: true, trigger: "blur", pattern: /^[0-9]{5,11}$/ , message: '手机号格式不正确'}
+          ],
+          sex:[
+            { required: true, trigger: "blur", message: "请选择性别" }
+          ],
+          age:[
+            { required: true, trigger: "blur", message: "请填写年龄" },
+            {required: true, trigger: "blur", pattern: /^[1-9]\d*$/ , message: '年龄格式不正确'}
+          ],
+          tall:[
+            { required: true, trigger: "blur", message: "请填写身高" },
+            {required: true, trigger: "blur", pattern: /^[1-9]\d*$/ , message: '身高格式不正确'}
+          ],
+          weight:[
+            { required: true, trigger: "blur", message: "请填写体重" },
+            {required: true, trigger: "blur", pattern: /^[1-9]\d*$/ , message: '体重格式不正确'}
+          ],
+          constipation:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          staylate:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          motion:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          makeFoodType:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          makeFoodTaste:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          walk:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          weakness:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          rebound:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          crux:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          position:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          sleepTime:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          getupTime:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          connectTime:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          night:[
+            { required: true, trigger: "blur", message: "请选择一个答案" }
+          ],
+          /*bloodData:[
+            { required: true, trigger: "blur", message: "请测试气血" }
+          ],
+          moistureDate:[
+            { required: true, trigger: "blur", message: "请测试湿气" }
+          ]*/
+        },
+        physicalSignsList: [],
+        bloodDataList:[
+
+        ],
+        moistureDataList:[
+
+        ]
+      }
+    },
+    methods: {
+      onSubmit() {
+        console.log('submit!');
+      },
+      /** 查询体征列表 */
+      getPhysicalSignsList() {
+        physicalSignsList().then(response => {
+          this.physicalSignsList = response.rows;
+        });
+      },
+      addCustomer(){
+        if(this.submitFlag){
+          return;
+        }
+        this.$refs.form.validate(valid => {
+          if(valid) {
+            let cusMessage = Object.assign({}, this.form);
+            cusMessage.bloodData = cusMessage.bloodData != null ? cusMessage.bloodData.join(",") : null;
+            cusMessage.moistureDate = cusMessage.moistureDate != null ? cusMessage.moistureDate.join(",") : null;
+            cusMessage.physicalSignsId = cusMessage.physicalSignsId != null ? cusMessage.physicalSignsId.join(",") : null;
+            cusMessage.sleepTime = cusMessage.sleepTime.substring(0,2);
+            cusMessage.getupTime = cusMessage.getupTime.substring(0,2);
+            cusMessage.connectTime = cusMessage.connectTime.substring(0,2);
+            addCustomer(cusMessage).then(response => {
+              if (response.code === 200) {
+                  console.log('成功');
+                  this.$notify({
+                    title: '提交成功',
+                    message: '',
+                    type: 'success'
+                  });
+                  this.submitFlag = true;
+               }
+            });
+          }else{
+            this.$message({
+              message: '数据未填写完整',
+              type: 'warning'
+            });
+          }
+          //console.log(this.form.bloodData);
+        })
+      },
+      getBloodDictData(type){
+        getDictData(type).then(response => {
+          this.bloodDataList = response.data;
+        });
+      },
+      getMoistureDictData(type){
+        getDictData(type).then(response => {
+          this.moistureDataList = response.data;
+        });
+      }
+    },
+    created() {
+      this.getPhysicalSignsList();
+      this.getBloodDictData("sys_blood_data");
+      this.getMoistureDictData("sys_moisture_data");
+    },
+    beforeCreate () {
+      document.title = this.$route.meta.title;
+      console.log(this.$route.meta.title);
+    }
+
+  }
+</script>
+
+ <style scoped>
+
+
+</style>