From 6d0fee3cdc8cb213d0388ffa2e7ed7a091a1ea4c Mon Sep 17 00:00:00 2001
From: dougang <78125310@kidgrow.com>
Date: Thu, 08 Apr 2021 13:58:41 +0800
Subject: [PATCH] 咨询小程序相关功能

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IAppointmentTimeService.java                     |   46 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryManager.html                                                                           |  250 ++++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/AdvisoryDoctorInfoMapper.java                     |   43 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml                                                             |    2 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IAdvisoryDoctorInfoService.java                  |  131 ++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/AdvisoryDoctorInfoController.java          |  291 +++++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/AdvisoryDoctorServiceFallbackFactory.java |   40 
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/sms/lanchuang/controller/SmsChuangLanController.java                           |   42 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/AppointmentTimeServiceImpl.java             |  105 +
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/AppointMentTimeController.java             |   40 
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDoctorMapper.xml                                                               |   13 
 kidgrow-config/src/main/resources/application-dev.properties                                                                                                           |   21 
 kidgrow-business/kidgrow-opration-center/pom.xml                                                                                                                       |    5 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/AppointmentTimeMapper.xml                                               |   25 
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDoctorService.java                                         |   30 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/AppointmentTime.java                               |   51 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryDoctor.html                                                                            |  205 +++
 kidgrow-commons/kidgrow-rabbitmq-spring-boot-starter/src/main/java/com/kidgrow/rabbitmq/config/RabbitConfig.java                                                       |   58 +
 kidgrow-business/kidgrow-mqcenter/kidgrow-mqcenter-rabbit/src/main/java/com/kidgrow/rabbitmq/recieve/TopicReceive.java                                                 |    2 
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/HardDiskAutoConfigure.java                                   |    2 
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java                                 |   15 
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysDoctorMapper.java                                            |    7 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/AdvisoryDoctorInfoServiceImpl.java          |  419 +++++++
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryManager_form.html                                                                      |  191 +++
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisorySummary.html                                                                           |  370 ++++++
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/css/admin.css                                                                                         |    4 
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java                                  |    2 
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/sms/feign/SmsChuangLanService.java                                                |    5 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/AdvisoryDoctorInfo.java                            |  127 ++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/AdvisoryDoctorInfoMapper.xml                                            |   69 +
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDoctorController.java                                 |   54 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/pom.xml                                                                                           |   15 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/AdvisoryDoctorService.java                         |   57 +
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/HospitalScreeningMapper.xml                                             |    3 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/AppointmentTimeMapper.java                        |   32 
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/sms/feign/fallback/SmsChuangLanServiceFallbackFactory.java                        |    5 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryDoctor_form.html                                                                       |  364 ++++++
 kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/ServiceNameConstants.java                                                 |    5 
 38 files changed, 3,108 insertions(+), 38 deletions(-)

diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/sms/feign/SmsChuangLanService.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/sms/feign/SmsChuangLanService.java
index a82b647..d074c44 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/sms/feign/SmsChuangLanService.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/sms/feign/SmsChuangLanService.java
@@ -26,4 +26,9 @@
     @PostMapping(value = "/smsChangLan/send")
     ResultBody sendVerificationCode(@RequestBody Map map);
 
+    /**
+     * feign rpc访问远程 接口  可爱高小程序短信接口
+     */
+    @PostMapping(value = "/smsChangLan/sendKagMess")
+    ResultBody sendKagMess(@RequestBody Map map);
 }
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/sms/feign/fallback/SmsChuangLanServiceFallbackFactory.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/sms/feign/fallback/SmsChuangLanServiceFallbackFactory.java
index 24deae9..aa841e1 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/sms/feign/fallback/SmsChuangLanServiceFallbackFactory.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/sms/feign/fallback/SmsChuangLanServiceFallbackFactory.java
@@ -24,6 +24,11 @@
             public ResultBody sendVerificationCode(Map ma) {
                 return ResultBody.failed("短息调用失败");
             }
+
+            @Override
+            public ResultBody sendKagMess(Map map) {
+                return ResultBody.failed("可爱高短息调用失败");
+            }
         };
     }
 }
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java
index 00388a0..c127613 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java
@@ -153,6 +153,8 @@
                     fileFolder += "Customer/Hospital/" + folderByDate + "/";
                 } else if (imgType.toLowerCase().equals("customerhead")) {
                     fileFolder += "Customer/HeadImg/" + folderByDate + "/";
+                }else if (imgType.toLowerCase().equals("customeradvisory")) {
+                    fileFolder += "Customer/Advisory/" + folderByDate + "/";
                 }else {
                     fileFolder += "OtherImage/" + folderByDate + "/";
                 }
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/HardDiskAutoConfigure.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/HardDiskAutoConfigure.java
index b030e7f..3c367ad 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/HardDiskAutoConfigure.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/HardDiskAutoConfigure.java
@@ -166,6 +166,8 @@
                     fileFolder += "Customer/Hospital/" + folderByDate + "/";
                 } else if (imgType.toLowerCase().equals("customerhead")) {
                     fileFolder += "Customer/HeadImg/" + folderByDate + "/";
+                }else if (imgType.toLowerCase().equals("customeradvisory")) {
+                    fileFolder += "Customer/Advisory/" + folderByDate + "/";
                 }else {
                     fileFolder += "OtherImage/" + folderByDate + "/";
                 }
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/sms/lanchuang/controller/SmsChuangLanController.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/sms/lanchuang/controller/SmsChuangLanController.java
index 12ba9dc..ffec93c 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/sms/lanchuang/controller/SmsChuangLanController.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/sms/lanchuang/controller/SmsChuangLanController.java
@@ -4,9 +4,12 @@
 import com.alibaba.fastjson.JSONObject;
 import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.common.utils.DateUtils;
+import com.kidgrow.common.utils.StringUtils;
 import com.kidgrow.redis.util.RedisUtils;
 import com.kidgrow.sms.util.SmsChuangLanUtils;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -14,7 +17,10 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.*;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
 
 @RestController
 @RequestMapping("smsChangLan")
@@ -144,6 +150,40 @@
             return ResultBody.failed("该手机号没有验证码");
         }
     }
+
+    /**
+     * 可爱高小程序发送短信
+     * @param map
+     * @return
+     */
+    @ApiOperation(value = "可爱高小程序发送短信")
+    @PostMapping("/sendKagMess")
+    public ResultBody sendKagMess(@RequestBody Map map){
+        try {
+            String phone = MapUtils.getString(map, "phone");
+            if (StringUtils.isBlank(phone)) {
+                return ResultBody.failed("手机号无效");
+            }
+            String sendContent = MapUtils.getString(map, "content");
+            //region 组装发送消息的内容
+            //API账号
+            map.put("account", CHUANGLAN_SMS_ACCOUNT);
+            //API密码
+            map.put("password", CHUANGLAN_SMS_PASSWORD);
+            map.put("msg", sendContent);
+            //endregion
+
+            String send = SmsChuangLanUtils.send(map, CHUANGLAN_SMS_SENDURL);
+            JSONObject jsonObject = JSON.parseObject(send);
+            if ("0".equals(jsonObject.get("code"))) {
+                return ResultBody.ok().msg("发送短信成功");
+            }
+        }catch (Exception ex){
+            return ResultBody.failed().msg("发送短信错误");
+        }
+        return ResultBody.failed().msg("发送短信失败");
+    }
+
     //获取 存放 Redis的时间 秒(到今晚的秒数)
     public Long getSecondsNextEarlyMorning() {
         Date afterDay = DateUtils.getAfterDay(new Date());
diff --git a/kidgrow-business/kidgrow-mqcenter/kidgrow-mqcenter-rabbit/src/main/java/com/kidgrow/rabbitmq/recieve/TopicReceive.java b/kidgrow-business/kidgrow-mqcenter/kidgrow-mqcenter-rabbit/src/main/java/com/kidgrow/rabbitmq/recieve/TopicReceive.java
index f4f9145..fb3fd00 100644
--- a/kidgrow-business/kidgrow-mqcenter/kidgrow-mqcenter-rabbit/src/main/java/com/kidgrow/rabbitmq/recieve/TopicReceive.java
+++ b/kidgrow-business/kidgrow-mqcenter/kidgrow-mqcenter-rabbit/src/main/java/com/kidgrow/rabbitmq/recieve/TopicReceive.java
@@ -24,7 +24,7 @@
         try {
             System.out.println("Topic Receiver : " + messages);
             // 通知 MQ 消息已被成功消费,可以ACK了
-            channel.basicAck(deliveryTag, false);
+            channel.basicAck(deliveryTag, false);  channel.basicAck(deliveryTag, false);
         }
         catch (Exception e) {
             try {
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/AdvisoryDoctorService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/AdvisoryDoctorService.java
new file mode 100644
index 0000000..1dcb60a
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/AdvisoryDoctorService.java
@@ -0,0 +1,57 @@
+package com.kidgrow.oprationcenter.feign;
+
+import com.kidgrow.common.constant.ServiceNameConstants;
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.feign.fallback.AdvisoryDoctorServiceFallbackFactory;
+import com.kidgrow.ribbon.config.FeignHttpInterceptorConfig;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Map;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2020/11/16 15:54 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+@FeignClient(value = ServiceNameConstants.OPRATION_SERVER,configuration= FeignHttpInterceptorConfig.class,
+        fallbackFactory = AdvisoryDoctorServiceFallbackFactory.class, decode404 = true)
+public interface AdvisoryDoctorService {
+    /**
+     * 通过ID查询医生信息,C端接口
+     * @param map
+     * @return
+     */
+    @PostMapping("/advisorydoctor/getDoctorById")
+    ResultBody getDoctorById(@RequestBody Map<String, Object> map);
+
+    /**
+     * 通过ID修改医生信息,C端接口
+     * @param map
+     * @return
+     */
+    @PostMapping("/advisorydoctor/updateDoctorInfo")
+    ResultBody updateDoctorInfo(@RequestBody Map<String, Object> map);
+
+    /**
+     * 通过ID查询筛查 咨询医生信息,C端接口
+     * @param hospitalId
+     * @return
+     */
+    @PostMapping("/advisorydoctor/getSreeningAdvisoryDoctor")
+    ResultBody getSreeningAdvisoryDoctor(@RequestParam("hospitalId") String hospitalId);
+
+    /**
+     * 获取咨询医生信息,C端接口
+     * @param map
+     * @return
+     */
+    @PostMapping("/advisorydoctor/getAdvisoryDoctorList")
+    ResultBody getAdvisoryDoctorList(@RequestBody Map<String,Object> map);
+
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/AdvisoryDoctorServiceFallbackFactory.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/AdvisoryDoctorServiceFallbackFactory.java
new file mode 100644
index 0000000..6a0f29e
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/AdvisoryDoctorServiceFallbackFactory.java
@@ -0,0 +1,40 @@
+package com.kidgrow.oprationcenter.feign.fallback;
+
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.feign.AdvisoryDoctorService;
+import feign.hystrix.FallbackFactory;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+@Slf4j
+@Component
+public class AdvisoryDoctorServiceFallbackFactory implements FallbackFactory<AdvisoryDoctorService> {
+
+    @Override
+    public AdvisoryDoctorService create(Throwable throwable) {
+        return new AdvisoryDoctorService() {
+            @Override
+            public ResultBody getDoctorById(Map<String, Object> map) {
+                return ResultBody.failed().msg("AdvisoryDoctorService-getDoctorById的FeignClient调用失败");
+            }
+
+            @Override
+            public ResultBody updateDoctorInfo(Map<String, Object> map) {
+                return ResultBody.failed().msg("AdvisoryDoctorService-updateDoctorInfo的FeignClient调用失败");
+            }
+
+            @Override
+            public ResultBody getSreeningAdvisoryDoctor(String hospitalId) {
+                return ResultBody.failed().msg("AdvisoryDoctorService-getSreeningAdvisoryDoctor的FeignClient调用失败");
+            }
+
+            @Override
+            public ResultBody getAdvisoryDoctorList(Map<String, Object> map) {
+                return ResultBody.failed().msg("AdvisoryDoctorService-getAdvisoryDoctorList的FeignClient调用失败");
+            }
+        };
+    }
+}
+
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/AdvisoryDoctorInfo.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/AdvisoryDoctorInfo.java
new file mode 100644
index 0000000..f9cd640
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/AdvisoryDoctorInfo.java
@@ -0,0 +1,127 @@
+package com.kidgrow.oprationcenter.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.kidgrow.common.model.SuperModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2021/3/1 14:13 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("advisory_doctor_info")
+public class AdvisoryDoctorInfo extends SuperModel {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 医生ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long doctorId;
+
+    /**
+     * 价格
+     */
+    private double price;
+
+    /**
+     * 最大人数
+     */
+    private int maxPeople;
+
+    /**
+     * 开通服务,1图文,2电话,3全部
+     */
+    private int service;
+
+    /**
+     * 是否删除,1删除,0未删除
+     */
+    private int isDel;
+
+    /**
+     * 芝麻客服插件场景地址
+     */
+    private String channel;
+
+    /**
+     * 纬度
+     */
+    private String latitude;
+
+    /**
+     * 经度
+     */
+    private String longitude;
+
+    /**
+     * 医生姓名
+     */
+    private String doctorName;
+
+    /**
+     * 医院名称
+     */
+    private String hospitalName;
+
+    /**
+     * 医院ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long hospitalId;
+
+    /**
+     * 预约时间
+     */
+    @TableField(exist = false)
+    private String[] appointment;
+
+    /**
+     * 部门ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 特长
+     */
+    private String specialty;
+
+    /**
+     * 职称
+     */
+    private String title;
+
+    /**
+     * 简介
+     */
+    private String introduction;
+
+    /**
+     * 头像
+     */
+    private String head;
+
+    /**
+     * 绑定手机号
+     */
+    private String bindPhone;
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/AppointmentTime.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/AppointmentTime.java
new file mode 100644
index 0000000..6844698
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/AppointmentTime.java
@@ -0,0 +1,51 @@
+package com.kidgrow.oprationcenter.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.kidgrow.common.model.SuperModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2021/3/1 14:21 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("appointment_time")
+public class AppointmentTime extends SuperModel {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 咨询ID
+     */
+    private Long advisoryId;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 上午
+     */
+    private int morning;
+
+    /**
+     * 下午
+     */
+    private int afternoon;
+
+    /**
+     * 晚上
+     */
+    private int evening;
+
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/pom.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/pom.xml
index 8efd782..6c223b4 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/pom.xml
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/pom.xml
@@ -42,5 +42,20 @@
             <artifactId>alipay-sdk-java</artifactId>
             <version>4.10.124.ALL</version>
         </dependency>
+        <dependency>
+            <groupId>com.kidgrow</groupId>
+            <artifactId>kidgrow-report-center-api</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.kidgrow</groupId>
+            <artifactId>kidgrow-advisory-center-api</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.kidgrow</groupId>
+            <artifactId>kidgrow-user-center-api</artifactId>
+            <version>1.0</version>
+        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/AdvisoryDoctorInfoMapper.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/AdvisoryDoctorInfoMapper.java
new file mode 100644
index 0000000..f94fd11
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/AdvisoryDoctorInfoMapper.java
@@ -0,0 +1,43 @@
+package com.kidgrow.oprationcenter.mapper;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kidgrow.db.mapper.SuperMapper;
+import com.kidgrow.oprationcenter.model.AdvisoryDoctorInfo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2021/3/1 14:38 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+public interface AdvisoryDoctorInfoMapper extends SuperMapper<AdvisoryDoctorInfo> {
+
+    /**
+     * 获取咨询医生列表
+     *
+     * @return
+     */
+    List<AdvisoryDoctorInfo> findList(Page<AdvisoryDoctorInfo> page, @Param("p") Map<String, Object> params);
+
+    /**
+     * 删除
+     *
+     * @param id
+     * @return
+     */
+    int removeById(@Param("id") Long id);
+
+    /**
+     * 根据条件查询
+     *
+     * @param params
+     * @return
+     */
+    List<AdvisoryDoctorInfo> findByObject(@Param("p") Map<String, Object> params);
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/AppointmentTimeMapper.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/AppointmentTimeMapper.java
new file mode 100644
index 0000000..6f3f6e7
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/AppointmentTimeMapper.java
@@ -0,0 +1,32 @@
+package com.kidgrow.oprationcenter.mapper;
+
+import com.kidgrow.db.mapper.SuperMapper;
+import com.kidgrow.oprationcenter.model.AppointmentTime;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2021/3/1 14:39 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+public interface AppointmentTimeMapper extends SuperMapper<AppointmentTime> {
+
+    /**
+     * 通过咨询ID删除
+     * @param id
+     * @return
+     */
+    int delByAdvisoryId(@Param("id") Long id);
+
+    /**
+     * 通过咨询ID查询预约时间
+     * @param id
+     * @return
+     */
+    List<AppointmentTime> queryByAdvisoryId(@Param("advisoryId") Long id);
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IAdvisoryDoctorInfoService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IAdvisoryDoctorInfoService.java
new file mode 100644
index 0000000..3494b8a
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IAdvisoryDoctorInfoService.java
@@ -0,0 +1,131 @@
+package com.kidgrow.oprationcenter.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kidgrow.advisory.model.AdvisoryDoctorSummary;
+import com.kidgrow.advisory.model.AdvisoryManager;
+import com.kidgrow.advisory.model.AdvisorySummary;
+import com.kidgrow.common.model.PageResult;
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.model.AdvisoryDoctorInfo;
+import com.kidgrow.user.model.UserInfo;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2021/3/1 14:32 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+public interface IAdvisoryDoctorInfoService extends IService<AdvisoryDoctorInfo> {
+
+    /**
+     * 医生列表
+     *
+     * @param params
+     * @return
+     */
+    PageResult<AdvisoryDoctorInfo> findList(Map<String, Object> params);
+
+    /**
+     * 删除
+     *
+     * @param id
+     * @return
+     */
+    int removeById(Long id);
+
+    /**
+     * 根据条件查询
+     *
+     * @param params
+     * @return
+     */
+    List<AdvisoryDoctorInfo> findByObject(Map<String, Object> params);
+
+    /**
+     * 修改咨询医生信息
+     *
+     * @param map
+     * @return
+     */
+    ResultBody updateDoctorInfo(Map<String, Object> map);
+
+    /**
+     * 查询医生信息
+     *
+     * @param map
+     * @return
+     */
+    ResultBody getDoctorById(Map<String, Object> map);
+
+    /**
+     * 获取筛查咨询医生列表
+     *
+     * @param hospitalId
+     * @return
+     */
+    ResultBody getSreeningAdvisoryDoctorList(Long hospitalId);
+
+    /**
+     * 获取咨询医生列表
+     *
+     * @param map
+     * @return
+     */
+    ResultBody getAdvisoryDoctorList(Map<String, Object> map);
+
+    /**
+     * 咨询列表调用C端接口
+     *
+     * @param params
+     * @return
+     */
+    PageResult<AdvisoryManager> findAll(Map<String, Object> params);
+
+    /**
+     * 后台更新咨询状态
+     *
+     * @param id
+     * @return
+     */
+    ResultBody updateStatusByService(String id);
+
+    /**
+     * 通过 绑定手机号查询C段用户
+     *
+     * @param phone
+     * @return
+     */
+    UserInfo getUserByPhone(String phone);
+
+    /**
+     * 微信退款
+     *
+     * @param map
+     * @return
+     */
+    ResultBody refund(@RequestBody Map<String, Object> map);
+
+    /**
+     * 按照月/年查询咨询统计数据
+     *
+     * @param map type:1月,2年
+     *            riqi: 时间
+     * @return
+     */
+    PageResult<AdvisorySummary> summaryBate(Map<String, Object> map);
+
+    /**
+     * 咨询医生统计数据
+     *
+     * @param map startTime/EndTime
+     * @return
+     */
+    PageResult<AdvisoryDoctorSummary> summaryDoctorByBate(Map<String, Object> map);
+
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IAppointmentTimeService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IAppointmentTimeService.java
new file mode 100644
index 0000000..aa0518d
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IAppointmentTimeService.java
@@ -0,0 +1,46 @@
+package com.kidgrow.oprationcenter.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.kidgrow.oprationcenter.model.AppointmentTime;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2021/3/1 14:33 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+public interface IAppointmentTimeService  extends IService<AppointmentTime> {
+
+    /**
+     * 保存
+     * @param map
+     * @return
+     */
+    boolean save(Map<String,Object> map);
+
+    /**
+     * 通过咨询ID查询预约时间
+     * @param id
+     * @return
+     */
+    String queryByAdvisoryId(Long id);
+
+    /**
+     * 通过咨询ID查询预约时间
+     * @param id
+     * @return
+     */
+    List<AppointmentTime> findByAdvisoryId(Long id);
+
+    /**
+     * 通过咨询ID删除预约时间
+     * @param id
+     * @return
+     */
+    int delByAdvisoryId(Long id);
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/AdvisoryDoctorInfoServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/AdvisoryDoctorInfoServiceImpl.java
new file mode 100644
index 0000000..ee003f1
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/AdvisoryDoctorInfoServiceImpl.java
@@ -0,0 +1,419 @@
+package com.kidgrow.oprationcenter.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kidgrow.advisory.model.AdvisoryDoctorSummary;
+import com.kidgrow.advisory.model.AdvisoryManager;
+import com.kidgrow.advisory.model.AdvisorySummary;
+import com.kidgrow.advisory.model.feign.AdvisoryService;
+import com.kidgrow.common.model.PageResult;
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.common.service.impl.SuperServiceImpl;
+import com.kidgrow.common.utils.StringUtils;
+import com.kidgrow.oprationcenter.mapper.AdvisoryDoctorInfoMapper;
+import com.kidgrow.oprationcenter.model.AdvisoryDoctorInfo;
+import com.kidgrow.oprationcenter.model.AppointmentTime;
+import com.kidgrow.oprationcenter.model.HospitalScreening;
+import com.kidgrow.oprationcenter.service.IAdvisoryDoctorInfoService;
+import com.kidgrow.oprationcenter.service.IAppointmentTimeService;
+import com.kidgrow.redis.util.RedisUtils;
+import com.kidgrow.user.feign.UserInfoService;
+import com.kidgrow.user.model.UserInfo;
+import com.kidgrow.usercenter.feign.SysDoctorService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import java.text.DecimalFormat;
+import java.util.*;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2021/3/1 14:34 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+@Slf4j
+@Service
+
+public class AdvisoryDoctorInfoServiceImpl extends SuperServiceImpl<AdvisoryDoctorInfoMapper, AdvisoryDoctorInfo> implements IAdvisoryDoctorInfoService {
+
+    @Autowired
+    private SysDoctorService doctorService;
+
+    @Autowired
+    private IAppointmentTimeService appointmentTimeService;
+
+    @Autowired
+    private AdvisoryService advisoryService;
+
+    @Autowired
+    private UserInfoService userInfoService;
+
+    @Autowired
+    private RedisUtils redisUtils;
+
+    /**
+     * 医生列表
+     *
+     * @param params
+     * @return
+     */
+    @Override
+    public PageResult<AdvisoryDoctorInfo> findList(Map<String, Object> params) {
+        Page<AdvisoryDoctorInfo> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
+        List<AdvisoryDoctorInfo> list = baseMapper.findList(page, params);
+        return PageResult.<AdvisoryDoctorInfo>builder().data(list).code(0).count(page.getTotal()).build();
+    }
+
+    /**
+     * 通过ID删除
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public int removeById(Long id) {
+        return baseMapper.removeById(id);
+    }
+
+    /**
+     * 根据条件查询
+     *
+     * @param params
+     * @return
+     */
+    @Override
+    public List<AdvisoryDoctorInfo> findByObject(Map<String, Object> params) {
+        return baseMapper.findByObject(params);
+    }
+
+    /**
+     * 更新医生信息
+     *
+     * @param map
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public ResultBody updateDoctorInfo(Map<String, Object> map) {
+        //医生ID
+        String id = MapUtils.getString(map, "doctorId");
+        //价格
+        double price = MapUtils.getDouble(map, "price") * 100;
+        //最大人数
+        int maxPeople = MapUtils.getIntValue(map, "maxPeople");
+        //预约时间
+        String appointmments = JSONArray.toJSONString(map.get("appointments"));
+
+        AdvisoryDoctorInfo advisoryDoctorInfo = baseMapper.selectById(Long.parseLong(id));
+        if (advisoryDoctorInfo == null) {
+            return ResultBody.failed().msg("查询医生信息失败");
+        }
+
+        AdvisoryDoctorInfo adi = new AdvisoryDoctorInfo();
+        adi.setId(Long.parseLong(id));
+        adi.setPrice(price);
+        adi.setMaxPeople(maxPeople);
+
+        int b = baseMapper.updateById(adi);
+        if (b == 0) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return ResultBody.failed().msg("操作失败");
+        }
+
+        if (StringUtils.isNotBlank(appointmments)) {
+            appointmentTimeService.delByAdvisoryId(Long.parseLong(id));
+            List<AppointmentTime> times = JSONArray.parseArray(appointmments, AppointmentTime.class);
+            for (AppointmentTime time : times) {
+                time.setAdvisoryId(Long.parseLong(id));
+                appointmentTimeService.saveOrUpdate(time);
+            }
+
+        }
+
+        return ResultBody.ok().msg("操作成功");
+    }
+
+    /**
+     * 查询咨询医生详情
+     *
+     * @param map
+     * @return
+     */
+    @Override
+    public ResultBody getDoctorById(Map<String, Object> map) {
+        //医生ID
+        String id = MapUtils.getString(map, "doctorId");
+        //是否需要查询预约时间
+        int apppointmentFlag = MapUtils.getIntValue(map, "apppointmentFlag");
+
+        AdvisoryDoctorInfo byId = baseMapper.selectById(Long.parseLong(id));
+        if (byId == null) {
+            return ResultBody.failed().msg("未找到医生信息");
+        }
+
+        ResultBody byId1 = doctorService.findById(byId.getDoctorId());
+        if (byId1.getCode() != 0 || byId1.getData() == null) {
+            return ResultBody.failed().msg("查询医生信息失败");
+        }
+
+        JSONObject doctor = JSONObject.parseObject(JSONObject.toJSONString(byId1.getData()));
+
+        JSONObject json = new JSONObject();
+        json.put("doctorName", doctor.getString("doctorName"));
+        json.put("departmentName", doctor.getString("departmentName"));
+        json.put("hospitalName", doctor.getString("hospitalName"));
+        json.put("head", doctor.getString("doctorLogo"));
+        json.put("phone", doctor.getString("doctorTel"));
+        json.put("otherLink", doctor.getString("doctorOtherLink"));
+        json.put("about", doctor.getString("doctorAbout"));
+        json.put("price", byId.getPrice() / 100);
+        json.put("specialty", byId.getSpecialty());
+        json.put("service", byId.getService());
+        json.put("maxPeople", byId.getMaxPeople());
+        json.put("rank", doctor.getString("doctorRank"));
+
+        if (apppointmentFlag == 1) {
+            List<AppointmentTime> byAdvisoryId = appointmentTimeService.findByAdvisoryId(Long.parseLong(id));
+            if (byAdvisoryId.size() > 0) {
+                JSONArray array = new JSONArray();
+                JSONObject obj = null;
+                for (AppointmentTime app : byAdvisoryId) {
+                    obj = new JSONObject();
+                    obj.put("name", app.getName());
+                    obj.put("afternoon", app.getAfternoon());
+                    obj.put("evening", app.getEvening());
+                    obj.put("morning", app.getMorning());
+
+                    array.add(obj);
+                }
+                json.put("appointments", array);
+            }
+        }
+
+        return ResultBody.ok().data(json);
+    }
+
+    /**
+     * 获取筛查咨询医生列表
+     *
+     * @param hospitalId
+     * @return
+     */
+    @Override
+    public ResultBody getSreeningAdvisoryDoctorList(Long hospitalId) {
+        Map<String, Object> map = new HashMap<>(16);
+        map.put("hospitalId", hospitalId);
+
+        JSONArray array = new JSONArray();
+        JSONObject json = null;
+        List<AdvisoryDoctorInfo> byObject = baseMapper.findByObject(map);
+        if (byObject.size() > 0) {
+            for (AdvisoryDoctorInfo doc : byObject) {
+                json = new JSONObject();
+                json.put("doctorName", doc.getDoctorName());
+                json.put("departmentName", doc.getDeptName());
+                json.put("hospitalName", doc.getHospitalName());
+                json.put("head", doc.getHead());
+                json.put("about", doc.getIntroduction());
+                json.put("price", doc.getPrice() / 100);
+                json.put("specialty", doc.getSpecialty());
+                json.put("service", doc.getService());
+                json.put("id", String.valueOf(doc.getId()));
+
+                ResultBody byId1 = doctorService.findById(doc.getDoctorId());
+                if (byId1.getCode() == 0 || byId1.getData() != null) {
+                    JSONObject doctor = JSONObject.parseObject(JSONObject.toJSONString(byId1.getData()));
+                    json.put("rank", doctor.getString("doctorRank"));
+                }
+
+                array.add(json);
+            }
+        }
+        return ResultBody.ok().data(array).msg("操作成功");
+    }
+
+    /**
+     * 获取咨询医生列表
+     *
+     * @param map
+     * @return
+     */
+    @Override
+    public ResultBody getAdvisoryDoctorList(Map<String, Object> map) {
+        double lat = MapUtils.getDouble(map, "lat");
+        double lon = MapUtils.getDouble(map, "lon");
+        String excludeHospitalId = MapUtils.getString(map, "excludeHospitalId");
+
+        List<Map<String, Object>> array = new ArrayList<>();
+        Map<String, Object> json = null;
+
+        //根据筛查医院ID换取医院ID
+        if (StringUtils.isNotBlank(excludeHospitalId)) {
+            HospitalScreening hget = (HospitalScreening) redisUtils.hget("CUSOTMER_HOSPITAL", excludeHospitalId);
+            if (hget != null) {
+                map.put("excludeHospitalId", hget.getHospitalId());
+            }
+        }
+
+        List<AdvisoryDoctorInfo> byObject = baseMapper.findByObject(map);
+        if (byObject.size() > 0) {
+            for (AdvisoryDoctorInfo adi : byObject) {
+                json = new HashMap<>(16);
+                json.put("doctorName", adi.getDoctorName());
+                json.put("departmentName", adi.getDeptName());
+                json.put("hospitalName", adi.getHospitalName());
+                json.put("head", adi.getHead());
+                json.put("about", adi.getIntroduction());
+                json.put("price", adi.getPrice() / 100);
+                json.put("specialty", adi.getSpecialty());
+                json.put("service", adi.getService());
+                json.put("id", String.valueOf(adi.getId()));
+                String distance = getDistance(Double.parseDouble(adi.getLatitude()), Double.parseDouble(adi.getLongitude()), lat, lon);
+                json.put("distance", distance);
+
+                ResultBody byId1 = doctorService.findById(adi.getDoctorId());
+                if (byId1.getCode() == 0 || byId1.getData() != null) {
+                    JSONObject doctor = JSONObject.parseObject(JSONObject.toJSONString(byId1.getData()));
+                    json.put("rank", doctor.getString("doctorRank"));
+                }
+
+                array.add(json);
+            }
+
+            //按照距离排序(由远到近)
+            Collections.sort(array, new Comparator<Map<String, Object>>() {
+                @Override
+                public int compare(Map<String, Object> o1, Map<String, Object> o2) {
+                    String distance1 = o1.get("distance").toString();
+                    String distance2 = o2.get("distance").toString();
+                    return distance2.compareTo(distance1);
+                }
+            });
+
+            //倒叙list排序
+            Collections.reverse(byObject);
+        }
+
+        return ResultBody.ok().data(array).msg("操作成功");
+    }
+
+    @Override
+    public PageResult<AdvisoryManager> findAll(Map<String, Object> params) {
+        return advisoryService.findAll(params);
+    }
+
+    /**
+     * 后台更新咨询状态
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public ResultBody updateStatusByService(String id) {
+        return advisoryService.updateStatusByService(id);
+    }
+
+    /**
+     * 查询注册用户信息
+     *
+     * @param phone
+     * @return
+     */
+    @Override
+    public UserInfo getUserByPhone(String phone) {
+        UserInfo user = new UserInfo();
+        user.setPhoneNum(phone);
+        ResultBody byObject = userInfoService.findByObject(user);
+
+        if (byObject.getCode() == 0 || byObject.getData() != null) {
+            UserInfo userInfo = JSONObject.parseObject(JSONObject.toJSONString(byObject.getData()), UserInfo.class);
+            if (userInfo != null) {
+                return userInfo;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 微信退款
+     *
+     * @param map
+     * @return
+     */
+    @Override
+    public ResultBody refund(Map<String, Object> map) {
+        return advisoryService.refund(map);
+    }
+
+    /**
+     * 按照月/年查询咨询统计数据
+     *
+     * @param map type:1月,2年
+     *            riqi: 时间
+     * @return
+     */
+    @Override
+    public PageResult<AdvisorySummary> summaryBate(Map<String, Object> map) {
+        PageResult<AdvisorySummary> resultBody = null;
+        int type = MapUtils.getIntValue(map, "type");
+        if (type == 1) {
+            resultBody = advisoryService.summaryByMonth(map);
+        }
+        if (type == 2) {
+            resultBody = advisoryService.summaryByYear(map);
+        }
+        return resultBody;
+    }
+
+    /**
+     * 咨询医生统计数据查询
+     *
+     * @param map startTime/EndTime
+     * @return
+     */
+    @Override
+    public PageResult<AdvisoryDoctorSummary> summaryDoctorByBate(Map<String, Object> map) {
+        return advisoryService.summaryByDoctor(map);
+    }
+
+    /**
+     * @param lat1 经度1
+     * @param lng1 纬度1
+     * @param lat2 经度2
+     * @param lng2 纬度2
+     * @return 距离
+     */
+    private String getDistance(double lat1, double lng1, double lat2, double lng2) {
+
+        double radLat1 = rad(lat1);
+        double radLat2 = rad(lat2);
+
+        double a = radLat1 - radLat2;
+        double b = rad(lng1) - rad(lng2);
+
+        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
+                + Math.cos(radLat1) * Math.cos(radLat2)
+                * Math.pow(Math.sin(b / 2), 2)));
+        s = s * 6378.137;
+        s = Math.round(s * 10000d) / 10000d;
+        //s = s * 1000;如果需要返回单位为米
+
+        DecimalFormat df = new DecimalFormat("0.00");//格式化,区小数后两位
+        String distance = df.format(s);
+
+        return distance;
+    }
+
+    private double rad(double d) {
+        return d * Math.PI / 180.0;
+    }
+
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/AppointmentTimeServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/AppointmentTimeServiceImpl.java
new file mode 100644
index 0000000..ae8bbf8
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/AppointmentTimeServiceImpl.java
@@ -0,0 +1,105 @@
+package com.kidgrow.oprationcenter.service.impl;
+
+import com.kidgrow.common.service.impl.SuperServiceImpl;
+import com.kidgrow.oprationcenter.mapper.AppointmentTimeMapper;
+import com.kidgrow.oprationcenter.model.AppointmentTime;
+import com.kidgrow.oprationcenter.service.IAppointmentTimeService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2021/3/1 14:33 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+@Slf4j
+@Service
+public class AppointmentTimeServiceImpl extends SuperServiceImpl<AppointmentTimeMapper, AppointmentTime> implements IAppointmentTimeService {
+
+    /**
+     * 保存
+     *
+     * @param map
+     * @return
+     */
+    @Override
+    public boolean save(Map<String, Object> map) {
+        AppointmentTime time = null;
+        boolean flag = false;
+
+        String[] items = (String[]) MapUtils.getObject(map, "list");
+        String id = MapUtils.getString(map, "id");
+
+        baseMapper.delByAdvisoryId(Long.parseLong(id));
+
+        for (String item : items) {
+            String[] tmp = item.split("_");
+
+            time = new AppointmentTime();
+            time.setAdvisoryId(Long.parseLong(id));
+            time.setName(tmp[0]);
+            if ("1".equals(tmp[1])) {
+                time.setMorning(1);
+            } else if ("2".equals(tmp[1])) {
+                time.setAfternoon(1);
+            } else if ("3".equals(tmp[1])) {
+                time.setEvening(1);
+            }
+            int insert = baseMapper.insert(time);
+            if (insert == 0) {
+                flag = true;
+                break;
+            }
+        }
+
+        return flag ? false : true;
+    }
+
+    /**
+     * 查询
+     * @param id
+     * @return
+     */
+    @Override
+    public String queryByAdvisoryId(Long id) {
+        StringBuffer result = new StringBuffer();
+        List<AppointmentTime> appointmentTimes = baseMapper.queryByAdvisoryId(id);
+
+        if (appointmentTimes.size() > 0) {
+            for (AppointmentTime app : appointmentTimes) {
+                if (app.getMorning() == 1) {
+                    result.append(app.getName() + "_1");
+                    result.append(",");
+                } else if (app.getAfternoon() == 1) {
+                    result.append(app.getName() + "_2");
+                    result.append(",");
+                } else if (app.getEvening() == 1) {
+                    result.append(app.getName() + "_3");
+                    result.append(",");
+                }
+            }
+
+            if (result.length() > 0) {
+                result.substring(0, result.length() - 1);
+            }
+        }
+        return result.toString();
+    }
+
+    @Override
+    public List<AppointmentTime> findByAdvisoryId(Long id) {
+        return baseMapper.queryByAdvisoryId(id);
+    }
+
+    @Override
+    public int delByAdvisoryId(Long id) {
+        return baseMapper.delByAdvisoryId(id);
+    }
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/AdvisoryDoctorInfoMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/AdvisoryDoctorInfoMapper.xml
new file mode 100644
index 0000000..c832465
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/AdvisoryDoctorInfoMapper.xml
@@ -0,0 +1,69 @@
+<?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.kidgrow.oprationcenter.mapper.AdvisoryDoctorInfoMapper">
+    <!--定义查询列-->
+    <sql id="Column_List">
+	   *
+	</sql>
+
+    <!--sql查询片段-->
+    <sql id="where">
+        <where>
+            <!--查询条件自行添加-->
+            is_del =0
+             <if test="p.id != null and p.id !=''">
+                and id = #{p.id}
+            </if>
+             <if test="p.doctorId != null and p.doctorId !=''">
+                and doctor_id = #{p.doctorId}
+            </if>
+            <if test="p.hospitalId != null and p.hospitalId !=''">
+                and hospital_id = #{p.hospitalId}
+            </if>
+            <if test="p.service != null and p.service !=''">
+                and service = #{p.service}
+            </if>
+            <if test="p.isDel != null and p.isDel !=''">
+                and is_del = #{p.isDel}
+            </if>
+            <if test="p.excludeHospitalId != null and p.excludeHospitalId !=''">
+                and hospital_id != #{p.excludeHospitalId}
+            </if>
+        </where>
+    </sql>
+
+       <!--列表使用-->
+     <select id="findList" resultType="com.kidgrow.oprationcenter.model.AdvisoryDoctorInfo">
+         SELECT
+            a.*
+        FROM
+            advisory_doctor_info a
+        WHERE
+            a.is_del =0
+            <if test="p.service != null and p.service != ''">
+             and a.service = #{p.service}
+            </if>
+            <if test="p.hospitalName != null and p.hospitalName != ''">
+             and a.hospital_name = #{p.hospitalName}
+            </if>
+            <if test="p.doctorName != null and p.doctorName != ''">
+             and a.doctor_name like concat('%', #{p.doctorName}, '%')
+            </if>
+            order by a.create_time
+    </select>
+
+    <!--删除-->
+    <update id="removeById" parameterType="java.lang.Long">
+        update advisory_doctor_info set is_del=1 where id=#{id}
+    </update>
+
+    <!--定义根据-AdvisoryDoctorInfo当作查询条件返回对象-->
+    <select id="findByObject" resultType="com.kidgrow.oprationcenter.model.AdvisoryDoctorInfo">
+        select
+        <include refid="Column_List"/>
+        from advisory_doctor_info
+        <include refid="where"/>
+        order by id desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/AppointmentTimeMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/AppointmentTimeMapper.xml
new file mode 100644
index 0000000..5f2a366
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/AppointmentTimeMapper.xml
@@ -0,0 +1,25 @@
+<?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.kidgrow.oprationcenter.mapper.AppointmentTimeMapper">
+    <!--定义查询列-->
+    <sql id="Column_List">
+	   *
+	</sql>
+
+    <!--sql查询片段-->
+    <sql id="where">
+        <where>
+            <!--查询条件自行添加-->
+
+        </where>
+    </sql>
+
+    <delete id="delByAdvisoryId" parameterType="java.lang.Long">
+        delete from appointment_time where advisory_id= #{id}
+    </delete>
+
+    <select id="queryByAdvisoryId" parameterType="java.lang.Long" resultType="com.kidgrow.oprationcenter.model.AppointmentTime">
+        select * from appointment_time where advisory_id=#{advisoryId}
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/HospitalScreeningMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/HospitalScreeningMapper.xml
index f3471b4..8d94088 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/HospitalScreeningMapper.xml
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/HospitalScreeningMapper.xml
@@ -96,7 +96,8 @@
 
     <select id="findByName" resultType="com.kidgrow.oprationcenter.model.HospitalScreening">
         select id,
-        hospital_name
+        hospital_name,
+        hospital_id
         from hospital_screening
         where is_del=0 and enabled=1 and hospital_name LIKE concat('%',#{hospitalName},'%')
         order by hospital_name desc,id desc
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/AdvisoryDoctorInfoController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/AdvisoryDoctorInfoController.java
new file mode 100644
index 0000000..45ba20d
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/AdvisoryDoctorInfoController.java
@@ -0,0 +1,291 @@
+package com.kidgrow.oprationcenter.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.kidgrow.advisory.model.AdvisoryDoctorSummary;
+import com.kidgrow.advisory.model.AdvisorySummary;
+import com.kidgrow.common.annotation.LoginUser;
+import com.kidgrow.common.controller.BaseController;
+import com.kidgrow.common.model.PageResult;
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.common.model.SysUser;
+import com.kidgrow.common.utils.StringUtils;
+import com.kidgrow.oprationcenter.model.AdvisoryDoctorInfo;
+import com.kidgrow.oprationcenter.service.IAdvisoryDoctorInfoService;
+import com.kidgrow.oprationcenter.service.IAppointmentTimeService;
+import com.kidgrow.user.feign.DoctorAnswerUserRelationService;
+import com.kidgrow.user.model.DoctorAnswerUserRelation;
+import com.kidgrow.user.model.UserInfo;
+import com.kidgrow.usercenter.feign.SysDoctorService;
+import com.kidgrow.usercenter.feign.SysHospitalService;
+import com.kidgrow.usercenter.model.SysDoctor;
+import com.kidgrow.usercenter.model.SysHospital;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2021/3/1 14:44 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+@Slf4j
+@RestController
+@RequestMapping("/advisorydoctor")
+@Api(tags = "咨询医生表")
+public class AdvisoryDoctorInfoController extends BaseController {
+
+    @Autowired
+    private IAdvisoryDoctorInfoService advisoryDoctorInfoService;
+
+    @Autowired
+    private SysHospitalService sysHospitalService;
+
+    @Autowired
+    private IAppointmentTimeService appointmentTimeService;
+
+    @Autowired
+    private SysDoctorService doctorService;
+
+    @Autowired
+    private DoctorAnswerUserRelationService doctorAnswerUserRelationService;
+
+    /**
+     * 列表
+     */
+    @ApiOperation(value = "查询列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer")
+    })
+    @GetMapping
+    public PageResult<AdvisoryDoctorInfo> list(@RequestParam Map<String, Object> params) {
+        if (params.size() == 0) {
+            params.put("page", 1);
+            params.put("limit", 10);
+        }
+        return advisoryDoctorInfoService.findList(params);
+    }
+
+    /**
+     * 删除
+     */
+    @ApiOperation(value = "删除")
+    @DeleteMapping("/delete/{id}")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Integer")
+    })
+    public ResultBody delete(@PathVariable Long id) {
+        int v = advisoryDoctorInfoService.removeById(id);
+
+        if (v > 0) {
+            return ResultBody.ok().msg("删除成功");
+        } else {
+            return ResultBody.failed().msg("删除失败");
+        }
+    }
+
+    /**
+     * 新增or更新
+     */
+    @ApiOperation(value = "保存")
+    @PostMapping
+    @Transactional(rollbackFor = Exception.class)
+    public ResultBody save(@RequestBody AdvisoryDoctorInfo advisoryDoctorInfo, BindingResult bindingResult) {
+        List<String> errMsg = new ArrayList<>();
+        if (bindingResult.hasErrors()) {
+            for (ObjectError error : bindingResult.getAllErrors()) {
+                errMsg.add(error.getDefaultMessage());
+            }
+            return ResultBody.failed().msg(errMsg.toString());
+        } else {
+            if (advisoryDoctorInfo.getId() == null) {
+                Map<String, Object> map = new HashMap<>();
+                map.put("hospitalId", advisoryDoctorInfo.getHospitalId());
+                map.put("doctorId", advisoryDoctorInfo.getDoctorId());
+                List<AdvisoryDoctorInfo> byObject = advisoryDoctorInfoService.findByObject(map);
+                if (byObject.size() > 0) {
+                    return ResultBody.failed().msg("该医生已添加");
+                }
+            }
+
+            //查询医院坐标
+            Map<String, Object> map = new HashMap<>(16);
+            map.put("id", advisoryDoctorInfo.getHospitalId());
+
+            ResultBody allByMap = sysHospitalService.findAllByMap(map);
+            if (allByMap.getCode() == 0 && allByMap.getData() != null) {
+                List<SysHospital> list = JSONArray.parseArray(JSONObject.toJSONString(allByMap.getData()), SysHospital.class);
+
+                if (list.size() > 0) {
+                    advisoryDoctorInfo.setLatitude(list.get(0).getLatitude());
+                    advisoryDoctorInfo.setLongitude(list.get(0).getLongitude());
+                }
+            }
+
+            //查询医生信息
+            ResultBody byId = doctorService.findById(advisoryDoctorInfo.getDoctorId());
+            if (byId.getCode() != 0 || byId.getData() == null) {
+                return ResultBody.failed().msg("未找到医生信息");
+            }
+
+            SysDoctor doctor = JSONObject.parseObject(JSONObject.toJSONString(byId.getData()), SysDoctor.class);
+            advisoryDoctorInfo.setTitle(doctor.getDoctorRank());
+            advisoryDoctorInfo.setIntroduction(doctor.getDoctorAbout());
+            advisoryDoctorInfo.setHead(doctor.getDoctorLogo());
+            advisoryDoctorInfo.setPrice(advisoryDoctorInfo.getPrice() * 100);
+
+            boolean v = advisoryDoctorInfoService.saveOrUpdate(advisoryDoctorInfo);
+
+            map.clear();
+            map.put("list", advisoryDoctorInfo.getAppointment());
+            map.put("id", advisoryDoctorInfo.getId());
+
+            boolean save = appointmentTimeService.save(map);
+            if (v && save) {
+                //绑定C段用户
+                UserInfo userByPhone = advisoryDoctorInfoService.getUserByPhone(advisoryDoctorInfo.getBindPhone());
+                if (userByPhone != null) {
+                    DoctorAnswerUserRelation dar = new DoctorAnswerUserRelation();
+                    dar.setUserId(userByPhone.getUserId());
+                    dar.setDoctorId(String.valueOf(advisoryDoctorInfo.getId()));
+                    ResultBody resultBody = doctorAnswerUserRelationService.updateByDoctorId(dar);
+
+                    if (resultBody.getCode() == 0) {
+                        return ResultBody.ok().data(advisoryDoctorInfo).msg("保存成功");
+                    }
+                }
+
+                return ResultBody.ok().data(advisoryDoctorInfo).msg("保存成功,绑定失败");
+            } else {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                ResultBody.failed().msg("保存失败");
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * 通过ID查询医生信息,C端接口
+     */
+    @ApiOperation(value = "查询")
+    @PostMapping("/getDoctorById")
+    public ResultBody getDoctorById(@RequestBody Map<String, Object> map) {
+        return advisoryDoctorInfoService.getDoctorById(map);
+    }
+
+    /**
+     * 通过ID查询医生信息,C端接口
+     */
+    @ApiOperation(value = "查询")
+    @PostMapping("/updateDoctorInfo")
+    public ResultBody updateDoctorInfo(@RequestBody Map<String, Object> map) {
+        return advisoryDoctorInfoService.updateDoctorInfo(map);
+    }
+
+    /**
+     * 通过ID查询筛查 咨询医生信息,C端接口
+     */
+    @ApiOperation(value = "查询")
+    @PostMapping("/getSreeningAdvisoryDoctor")
+    public ResultBody getSreeningAdvisoryDoctor(@RequestParam("hospitalId") String hospitalId) {
+        return advisoryDoctorInfoService.getSreeningAdvisoryDoctorList(Long.parseLong(hospitalId));
+    }
+
+    /**
+     * 通过咨询医生信息,C端接口
+     */
+    @ApiOperation(value = "查询")
+    @PostMapping("/getAdvisoryDoctorList")
+    public ResultBody getAdvisoryDoctorList(@RequestBody Map<String, Object> map) {
+        return advisoryDoctorInfoService.getAdvisoryDoctorList(map);
+    }
+
+    /**
+     * 获取咨询列表
+     */
+    @ApiOperation(value = "查询")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer")
+    })
+    @GetMapping("/findAll")
+    public PageResult findAll(@RequestParam Map<String, Object> map) {
+        return advisoryDoctorInfoService.findAll(map);
+    }
+
+    /**
+     * 通过咨询医生信息,C端接口
+     */
+    @ApiOperation(value = "查询")
+    @GetMapping("/update/{id}")
+    public ResultBody update(@PathVariable String id) {
+        return advisoryDoctorInfoService.updateStatusByService(id);
+    }
+
+    /**
+     * 通过咨询医生信息,C端接口
+     */
+    @ApiOperation(value = "查询")
+    @PostMapping("/querUserByPhone")
+    public ResultBody querUserByPhone(@RequestBody Map<String, Object> map) {
+        String phone = MapUtils.getString(map, "bindPhone");
+
+        if (StringUtils.isBlank(phone)) {
+            return ResultBody.failed().msg("参数错误");
+        }
+        return ResultBody.ok().data(advisoryDoctorInfoService.getUserByPhone(phone));
+    }
+
+    /**
+     * 微信退款
+     */
+    @ApiOperation(value = "微信退款")
+    @PostMapping("/refund")
+    public ResultBody refund(@RequestBody Map<String, Object> map, @LoginUser SysUser user) {
+        String advisoryId = MapUtils.getString(map, "advisoryId");
+
+        if (StringUtils.isBlank(advisoryId)) {
+            return ResultBody.failed().msg("参数错误");
+        }
+
+        map.put("userId", user.getId());
+        return ResultBody.ok().data(advisoryDoctorInfoService.refund(map));
+    }
+
+    /**
+     * 咨询统计数据
+     */
+    @ApiOperation(value = "咨询统计数据")
+    @PostMapping("/summaryByDate")
+    public PageResult<AdvisorySummary> summaryByDate(@RequestParam Map<String, Object> map) {
+        return advisoryDoctorInfoService.summaryBate(map);
+    }
+
+    /**
+     * 咨询医生统计数据
+     */
+    @ApiOperation(value = "咨询统计数据")
+    @PostMapping("/summaryDoctorByDate")
+    public PageResult<AdvisoryDoctorSummary> summaryDoctorByDate(@RequestParam Map<String, Object> map) {
+        return advisoryDoctorInfoService.summaryDoctorByBate(map);
+    }
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/AppointMentTimeController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/AppointMentTimeController.java
new file mode 100644
index 0000000..0d0b8cc
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/AppointMentTimeController.java
@@ -0,0 +1,40 @@
+package com.kidgrow.oprationcenter.controller;
+
+import com.kidgrow.common.controller.BaseController;
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.service.IAppointmentTimeService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: <br>
+ * @Project: <br>
+ * @CreateDate: Created in 2021/3/1 14:44 <br>
+ * @Author: <a href="78125310@kidgrow.com">dougang</a>
+ */
+@Slf4j
+@RestController
+@RequestMapping("/appointment")
+@Api(tags = "咨询医生预约表")
+public class AppointMentTimeController extends BaseController {
+
+    @Autowired
+    private IAppointmentTimeService appointmentTimeService;
+
+    /**
+     * 通过咨询ID查询预约时间
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "通过咨询ID查询预约时间")
+    @GetMapping("/queryByAdvisoryId/{id}")
+    public ResultBody queryByAdvisoryId(@PathVariable("id") String id) {
+        return  ResultBody.ok().data(appointmentTimeService.queryByAdvisoryId(Long.parseLong(id)));
+    }
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml
index 5882e7a..158ceba 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml
@@ -97,6 +97,8 @@
       - screening_organization_info
       - partner_info
       - partner_docking_info
+      - advisory_doctor_info
+      - appointment_time
     ignoreSqls:
       - com.kidgrow.usercenter.mapper.SysRoleMapper.findAll
       - com.kidgrow.oprationcenter.mapper.ConsumptionRecordMapper.findDetailList
diff --git a/kidgrow-business/kidgrow-opration-center/pom.xml b/kidgrow-business/kidgrow-opration-center/pom.xml
index adc2dc1..9fb3c1b 100644
--- a/kidgrow-business/kidgrow-opration-center/pom.xml
+++ b/kidgrow-business/kidgrow-opration-center/pom.xml
@@ -52,10 +52,5 @@
             <artifactId>kidgrow-usercenter-api</artifactId>
             <version>1.0</version>
         </dependency>
-        <dependency>
-            <groupId>com.kidgrow</groupId>
-            <artifactId>kidgrow-report-center-api</artifactId>
-            <version>1.0</version>
-        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysDoctorMapper.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysDoctorMapper.java
index 9a9a80a..a544f72 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysDoctorMapper.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/mapper/SysDoctorMapper.java
@@ -44,4 +44,11 @@
      * @return
      */
     int chartDoctor(@Param("datatype") int datatype);
+
+    /**
+     * 通过医院部门查询C端医生
+     * @param params
+     * @return
+     */
+    List<SysDoctor> queryDoctorByC(@Param("p") Map<String, Object> params);
 }
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDoctorService.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDoctorService.java
index fc6e05a..fb6af1f 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDoctorService.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysDoctorService.java
@@ -6,7 +6,6 @@
 import com.kidgrow.common.service.ISuperService;
 import com.kidgrow.usercenter.model.SysDoctor;
 import com.kidgrow.usercenter.vo.SysDoctorDto;
-import com.kidgrow.usercenter.vo.SysDoctorVo;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
@@ -14,15 +13,17 @@
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @version 1.0
  * @Description: <br>
  * @Project: 用户中心<br>
  * @CreateDate: Created in 2020-04-02 14:02:50 <br>
  * @Author: <a href="4345453@kidgrow.com">liuke</a>
- * @version 1.0
  */
 public interface ISysDoctorService extends ISuperService<SysDoctor> {
     /**
      * 列表
+     *
      * @param params
      * @return
      */
@@ -30,28 +31,32 @@
 
 
     /**
-    * 根据SysDoctor对象当做查询条件进行查询
-    * @param sysDoctor
-    * @return SysDoctor对象
-    */
+     * 根据SysDoctor对象当做查询条件进行查询
+     *
+     * @param sysDoctor
+     * @return SysDoctor对象
+     */
     SysDoctor findByObject(SysDoctor sysDoctor);
 
     boolean delete(Long id);
 
     ResultBody enable(Map<String, Object> params);
 
-    ResultBody saveOrUpdateSer(SysDoctorDto sysDoctor, HttpServletRequest request,SysUser user);
+    ResultBody saveOrUpdateSer(SysDoctorDto sysDoctor, HttpServletRequest request, SysUser user);
 
     List<SysDoctor> findByMap(Map<String, Object> map);
 
     /**
      * 设为医院超管
+     *
      * @param map
      * @return
      */
     ResultBody setAdminDoctor(Map<String, Object> map);
+
     /**
      * H端检查用户名是否管理员
+     *
      * @param userName
      * @return
      */
@@ -59,12 +64,15 @@
 
     /**
      * 根据userid删除医生数据
+     *
      * @param userId
      * @return
      */
     int deleteByUserId(Long userId);
+
     /**
      * 统计医生的数量
+     *
      * @param datatype 业务类型
      *                 0 自注册医生
      *                 1 签约医生
@@ -74,5 +82,13 @@
      * @return
      */
     int chartDoctor(int datatype);
+
+    /**
+     * 通过医院部门查询C端医生
+     *
+     * @param map
+     * @return
+     */
+    List<SysDoctor> queryDoctorByC(Map<String, Object> map);
 }
 
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java
index 8075fae..e767217 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java
@@ -155,6 +155,17 @@
         return baseMapper.chartDoctor(datatype);
     }
 
+    /**
+     * 通过医院部门查询C端医生
+     *
+     * @param map
+     * @return
+     */
+    @Override
+    public List<SysDoctor> queryDoctorByC(Map<String, Object> map) {
+        return baseMapper.queryDoctorByC(map);
+    }
+
     @Override
     public ResultBody enable(Map<String, Object> params) {
         Long aLong = MapUtils.getLong(params, "id");
@@ -255,7 +266,7 @@
                     sysUserOrg.setFromLevel(CommonConstant.SYSTEM_ORG_DEP_LEVEL);
                     sysUserOrg.setOrgId(sysDepartment.getOrgId());
                     sysUserOrg.setCreateTime(new Date());
-                    List<SysUserOrg> sysUserOrgs=new ArrayList<>();
+                    List<SysUserOrg> sysUserOrgs = new ArrayList<>();
                     sysUserOrgs.add(sysUserOrg);
                     sysUserOrgService.saveOrUpdate(sysUserOrg);
                     SysUserOrg sysGongsi = new SysUserOrg();
@@ -419,7 +430,7 @@
                 sysRoleUser.setUserId(sysUser.getId());
                 int insert = sysUserRoleMapper.insert(sysRoleUser);
             });
-            List<SysUserOrg> sysUserOrgs=new ArrayList<>();
+            List<SysUserOrg> sysUserOrgs = new ArrayList<>();
             //保存将sys_user_org 保存部门
             SysUserOrg sysUserOrg = new SysUserOrg();
             sysUserOrg.setUserId(sysUser.getId());
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDoctorMapper.xml b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDoctorMapper.xml
index bc60271..d792323 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDoctorMapper.xml
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysDoctorMapper.xml
@@ -233,4 +233,17 @@
             and (doctor_type=1 or doctor_type=0) and doctor_state=0 and enabled=0
         </if>
     </select>
+
+    <select id="queryDoctorByC" parameterType="java.util.Map" resultType="com.kidgrow.usercenter.model.SysDoctor">
+        SELECT
+           <include refid="Column_List"/>
+        FROM
+            sys_doctor
+        WHERE
+            is_del = 0
+            AND enabled = 1
+            AND doctor_type != 1
+            AND hospital_id = #{p.hospitalId}
+            AND department_id = #{p.departmentId}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDoctorController.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDoctorController.java
index 728e7e6..75ad71e 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDoctorController.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysDoctorController.java
@@ -8,7 +8,6 @@
 import com.kidgrow.usercenter.model.SysDoctor;
 import com.kidgrow.usercenter.service.ISysDoctorService;
 import com.kidgrow.usercenter.vo.SysDoctorDto;
-import com.kidgrow.usercenter.vo.SysDoctorVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -29,7 +28,8 @@
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
- * @Description: 
+ *
+ * @Description:
  * @Project: 用户中心
  * @CreateDate: Created in 2020-04-02 18:32:36 <br>
  * @Author: <a href="4345453@kidgrow.com">liuke</a>
@@ -39,7 +39,7 @@
 @RestController
 @RequestMapping("/sysdoctor")
 @Api(tags = "医生表")
-public class SysDoctorController  extends BaseController{
+public class SysDoctorController extends BaseController {
     @Autowired
     private ISysDoctorService sysDoctorService;
 
@@ -52,13 +52,13 @@
             @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer")
     })
     @GetMapping
-    public PageResult<SysDoctorDto> list(@RequestParam Map<String, Object> params,@LoginUser  SysUser user) {
-        if(params.size()==0){
-            params.put("page",1);
-            params.put("limit",10);
+    public PageResult<SysDoctorDto> list(@RequestParam Map<String, Object> params, @LoginUser SysUser user) {
+        if (params.size() == 0) {
+            params.put("page", 1);
+            params.put("limit", 10);
         }
 
-        return sysDoctorService.findList(params,user);
+        return sysDoctorService.findList(params, user);
     }
 
     /**
@@ -70,6 +70,7 @@
         SysDoctor model = sysDoctorService.getById(id);
         return ResultBody.ok().data(model).msg("查询成功");
     }
+
     /**
      * 判断用户名是否管理员
      */
@@ -78,15 +79,17 @@
     public ResultBody findById(@RequestParam String userName) {
         return sysDoctorService.userIsAdmin(userName);
     }
+
     /**
      * 根据 Map 查询
      */
     @ApiOperation(value = "查询")
     @PostMapping("/findByMap")
-    public ResultBody findByMap(@RequestBody Map<String,Object> map) {
+    public ResultBody findByMap(@RequestBody Map<String, Object> map) {
         List<SysDoctor> models = sysDoctorService.findByMap(map);
         return ResultBody.ok().data(models).msg("查询成功");
     }
+
     /**
      * 根据SysDoctor当做查询条件进行查询
      */
@@ -102,15 +105,15 @@
      */
     @ApiOperation(value = "保存")
     @PostMapping
-    public ResultBody save(@Valid @RequestBody SysDoctorDto sysDoctor, BindingResult bindingResult, HttpServletRequest request,@LoginUser SysUser user) {
-        List<String> errMsg= new ArrayList<>();
+    public ResultBody save(@Valid @RequestBody SysDoctorDto sysDoctor, BindingResult bindingResult, HttpServletRequest request, @LoginUser SysUser user) {
+        List<String> errMsg = new ArrayList<>();
         if (bindingResult.hasErrors()) {
             for (ObjectError error : bindingResult.getAllErrors()) {
                 errMsg.add(error.getDefaultMessage());
             }
             return ResultBody.failed().msg(errMsg.toString());
         } else {
-            return sysDoctorService.saveOrUpdateSer(sysDoctor,request,user);
+            return sysDoctorService.saveOrUpdateSer(sysDoctor, request, user);
         }
     }
 
@@ -120,14 +123,14 @@
     @ApiOperation(value = "删除")
     @DeleteMapping("/{id}")
     public ResultBody delete(@PathVariable Long id) {
-        boolean v= sysDoctorService.delete(id);
-        if(v) {
+        boolean v = sysDoctorService.delete(id);
+        if (v) {
             return ResultBody.ok().msg("删除成功");
-        }
-        else {
+        } else {
             return ResultBody.failed().msg("删除失败");
         }
     }
+
     /**
      * 状态
      */
@@ -135,11 +138,12 @@
     @PostMapping("enable")
     public ResultBody enable(@RequestBody Map<String, Object> params) {
         Long id = MapUtils.getLong(params, "id");
-        if (id==null) {
+        if (id == null) {
             return ResultBody.failed("请选择一条数据");
         }
-            return sysDoctorService.enable(params);
+        return sysDoctorService.enable(params);
     }
+
     /**
      * 设为管理
      */
@@ -148,8 +152,10 @@
     public ResultBody setAdmin(@RequestBody Map<String, Object> params) {
         return sysDoctorService.setAdminDoctor(params);
     }
+
     /**
      * 统计医生的数量
+     *
      * @param datatype 业务类型
      *                 0 自注册医生
      *                 1 签约医生
@@ -161,7 +167,17 @@
     @ApiOperation(value = "统计医生的数量")
     @GetMapping("chartDoctor")
     public ResultBody chartDoctor(int datatype) {
-        int counts= sysDoctorService.chartDoctor(datatype);
+        int counts = sysDoctorService.chartDoctor(datatype);
         return ResultBody.ok().data(counts).msg("数据获取成功");
     }
+
+    /**
+     * 根据SysDoctor当做查询条件进行查询
+     */
+    @ApiOperation(value = "根据SysDoctor当做查询条件进行查询")
+    @PostMapping("/queryDoctorToC")
+    public ResultBody queryDoctorToC(@RequestBody Map<String, Object> sysDoctor) {
+        List<SysDoctor> model = sysDoctorService.queryDoctorByC(sysDoctor);
+        return ResultBody.ok().data(model).msg("查询成功");
+    }
 }
diff --git a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/ServiceNameConstants.java b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/ServiceNameConstants.java
index 1002702..c200108 100644
--- a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/ServiceNameConstants.java
+++ b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/ServiceNameConstants.java
@@ -82,4 +82,9 @@
      */
     String CUSTOMER_REPORTCENTER_SERVER="customer-reportcenter-server";
 
+    /**
+     * C端咨询服务名
+     */
+    String CUSTOMER_ADVISORYCENTER_SERVER="customer-advisorycenter-server";
+
 }
diff --git a/kidgrow-commons/kidgrow-rabbitmq-spring-boot-starter/src/main/java/com/kidgrow/rabbitmq/config/RabbitConfig.java b/kidgrow-commons/kidgrow-rabbitmq-spring-boot-starter/src/main/java/com/kidgrow/rabbitmq/config/RabbitConfig.java
index f26e939..3aa3d0a 100644
--- a/kidgrow-commons/kidgrow-rabbitmq-spring-boot-starter/src/main/java/com/kidgrow/rabbitmq/config/RabbitConfig.java
+++ b/kidgrow-commons/kidgrow-rabbitmq-spring-boot-starter/src/main/java/com/kidgrow/rabbitmq/config/RabbitConfig.java
@@ -13,6 +13,9 @@
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
  *
@@ -82,7 +85,7 @@
 
     @Bean
     public ConnectionFactory connectionFactory() {
-        CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host,port);
+        CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host, port);
         connectionFactory.setUsername(username);
         connectionFactory.setPassword(password);
         connectionFactory.setVirtualHost(virtualHost);
@@ -192,4 +195,57 @@
     Binding bindingExchangeAdvancedEvaluation(TopicExchange exchange) {
         return BindingBuilder.bind(AdvancedEvaluation()).to(exchange).with(routingKeyName);
     }
+
+    /**
+     * 可爱高咨询延时队列交换机
+     * @return
+     */
+    @Bean
+    public CustomExchange delayExchange(){
+        Map<String, Object> args = new HashMap<>(16);
+        args.put("x-delayed-type", "direct");
+        //属性参数 交换机名称 交换机类型 是否持久化 是否自动删除 配置参数
+        return new CustomExchange("kagDelayExchange", "x-delayed-message", true, false, args);
+    }
+
+    /**
+     * 可爱高咨询延时队列D
+     * @return
+     */
+    @Bean
+    public Queue delayQueue(){
+        //属性参数 队列名称 是否持久化
+        return new Queue("kagMessageDelayQueue", true);
+    }
+
+    /**
+     * 可爱高咨询
+     * 延时队列绑定交换机
+     * @return
+     */
+    @Bean
+    public Binding cfgDelayBinding(){
+        return BindingBuilder.bind(delayQueue()).to(delayExchange()).with("kagMessageDelayKey").noargs();
+    }
+
+
+    /**
+     * 可爱高咨询延时队列--更改待完成状态
+     * @return
+     */
+    @Bean
+    public Queue delayUncompletedQueue(){
+        //属性参数 队列名称 是否持久化
+        return new Queue("kagAdvisoryNncompletedDelayQueue", true);
+    }
+
+    /**
+     * 可爱高咨询
+     * 给延时队列绑定交换机
+     * @return
+     */
+    @Bean
+    public Binding delayBinding(){
+        return BindingBuilder.bind(delayQueue()).to(delayExchange()).with("kagAdvisoryUncompletedDelayKey").noargs();
+    }
 }
diff --git a/kidgrow-config/src/main/resources/application-dev.properties b/kidgrow-config/src/main/resources/application-dev.properties
index 9f0bbad..f395679 100644
--- a/kidgrow-config/src/main/resources/application-dev.properties
+++ b/kidgrow-config/src/main/resources/application-dev.properties
@@ -89,4 +89,23 @@
 ## C\u7AEF\u4EA7\u54C1\u53EF\u7231\u9AD8\u7B5B\u67E5\u5C0F\u7A0B\u5E8F\u914D\u7F6E\u4FE1\u606F
 wechat.screening.applets.appid=wx0f3a6409155f1bac
 wechat.screening.applets.secret=ce485ae3192bb6a6cd68ce140ac81327
-health_url_net=http://192.168.2.22/
\ No newline at end of file
+health_url_net=http://192.168.2.22/
+
+## C\u7AEF\u4EA7\u54C1\u53EF\u7231\u9AD8\u5C0F\u7A0B\u5E8F\u914D\u7F6E\u4FE1\u606F
+wechat.kag.applets.appid=wx2f0a09608cfc96da
+wechat.kag.applets.secret=773722860fa804e0a45cb7d1a0ac36e5
+
+##\u5C0F\u7A0B\u5E8F\u652F\u4ED8
+wechat.applets.pay.url=https://api.mch.weixin.qq.com
+wechat.applets.pay.appid=wx2f0a09608cfc96da
+wechat.applets.pay.mchid=1607665697
+wechat.applets.pay.key=15cedcb0cfdc2c4266125708b727614a
+wechat.applets.pay.callback=http://open.kidgrow.cloud.net
+
+##\u963F\u91CC\u9690\u79C1\u53F7
+alibaba.private.number.accessKeyId=LTAI5t7YjHV47Hn9fVfXSZ3y
+alibaba.private.number.accessKeySecret=UnkA2Jusrx4fpkH0dzzlwteq3y1rKo
+alibaba.private.number.endpoint=dyplsapi.aliyuncs.com
+alibaba.private.number.poolKey=FC100000127164409
+alibaba.private.number.messageType=SecretReport
+alibaba.private.number.queueName=Alicom-Queue-20978793-SecretReport
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/css/admin.css b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/css/admin.css
index 4f210d7..c621a81 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/css/admin.css
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/css/admin.css
@@ -698,3 +698,7 @@
     padding: 0;
     overflow: hidden;
 }
+
+.custome-height {
+    line-height: 36px;
+}
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryDoctor.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryDoctor.html
new file mode 100644
index 0000000..52cf57d
--- /dev/null
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryDoctor.html
@@ -0,0 +1,205 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">咨询医生管理</h2>
+        <span class="layui-breadcrumb pull-right">
+            <a href="#!home_console">首页</a>
+            <a><cite>咨询医生管理</cite></a>
+        </span>
+    </div>
+   <div class="layui-card-body">
+        <div class="layui-form toolbar">
+            <div class="layui-form-item">
+                <div class="layui-inline">
+                    <select id="type" lay-filter="role_clients">
+                        <option value="">服务类型</option>
+                        <option value="1">图文</option>
+                        <option value="2">电话</option>
+                        <option value="3">图文/电话</option>
+                    </select>
+                </div>
+                <div class="layui-inline" style="margin-bottom: -19px">
+                    <input name="hospitalName" id="hospitalName-seach" placeholder="按筛查医院名称" type="text"
+                           class="layui-input search-input" maxlength="50" autocomplete="off"/>&emsp;
+                </div>
+                <div class="layui-inline">
+                    <input name="doctorName" id="doctorName-seach" placeholder="按医生名称" type="text"
+                           class="layui-input search-input" maxlength="50" autocomplete="off"/>&emsp;
+                </div>
+                <button id="app-btn-search" class="layui-btn icon-btn" layt="abc"><i class="layui-icon">&#xe615;</i>搜索
+                </button>
+                <button id="doctor-btn-add" class="layui-btn icon-btn"><i class="layui-icon">&#xe654;</i>添加咨询医生
+                </button>
+                <table class="layui-table" id="app-table" lay-filter="app-table"></table>
+            </div>
+        </div>
+    </div>
+</div>
+
+<input id="hospitalId" type="hidden"/>
+<!-- 表格操作列 -->
+<script type="text/html" id="doctor-table-bar">
+    <button class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改
+    </button>
+    <button class="layui-btn layui-btn-xs" lay-event="delete">
+        删除
+    </button>
+</script>
+<script>
+    layui.use(['form', 'table', 'laydate', 'util', 'config', 'upload', 'admin', 'autocomplete', 'formSelects','area'],
+        function () {
+            var form = layui.form;
+            var table = layui.table;
+            var config = layui.config;
+            var admin = layui.admin;
+            var $ = layui.jquery;
+            var autocomplete = layui.autocomplete;
+
+            //自动完成-医院名称
+            autocomplete.render({
+                elem: $('#hospitalName-seach')[0],
+                keywordsName: 'hospitalName', //查询关键字名称
+                url: config.base_server + 'api-user/syshospital/findByName',
+                template_val: '{{d.hospitalName}}', //选择后文本框显示的数据字段
+                template_txt: "<div class='layui-table-cell'>{{d.hospitalName}}</div>", //下拉列表模板
+                onselect: function (resp) {
+                    $("#hospitalId").val(resp.id);
+                }
+            });
+
+            // 渲染表格
+            table.render({
+                elem: '#app-table',
+                url: config.base_server + 'api-opration/advisorydoctor',
+                method: 'GET',
+                headers: {
+                    'Authorization': 'Bearer ' + config.getToken().access_token
+                },
+                page: true,
+                cols: [
+                    [{
+                        field: 'id',
+                        width: "200",
+                        title: 'ID',
+                        align: 'center',
+                        fixed: 'left',
+                    },{
+                        field: 'createTime',
+                        width: "200",
+                        title: '创建时间',
+                        align: 'center',
+                        fixed: 'left',
+                    },{
+                        field: 'doctorName',
+                        width: "150",
+                        title: '医生姓名',
+                        fixed: 'left',
+                    },{
+                        field: 'hospitalName',
+                        width: "200",
+                        title: '医院名称',
+                        align: 'center',
+                        fixed: 'left',
+                    },{
+                        field: 'deptName',
+                        width: "200",
+                        title: '部门名称',
+                        align: 'center',
+                        fixed: 'left',
+                    },{
+                        field: 'service',
+                        width: "100",
+                        align: 'center',
+                        title: '服务类型',
+                        fixed: 'left',
+                         templet: function (d) {
+                            if(d.service == 1){
+                                return "图文"
+                            }else if(d.service == 2){
+                                return "电话"
+                            }else{
+                                return "图文/电话"
+                            }
+                        }
+                    },{
+                        field: 'bindPhone',
+                        width: "150",
+                        title: '绑定用户手机号',
+                        align: 'center',
+                        fixed: 'left',
+                    },
+                    {
+                        width: "200",
+                        align: 'center',
+                        toolbar: '#doctor-table-bar',
+                        title: '操作',
+                        fixed: 'right'
+                    }
+                    ]
+                ],
+                done: function (res, curr, count) {
+                    permissionsInput(res, config);
+                }
+            });
+
+
+            // 搜索按钮点击事件
+            $('#app-btn-search').click(function () {
+                var service = $('#type').val();
+                var hospitalName = $("#hospitalName-seach").val();
+                var doctorName = $('#doctorName-seach').val();
+                table.reload('app-table', {
+                    where: {
+                        service: service,
+                        hospitalName: hospitalName,
+                        doctorName: doctorName
+                    }
+                });
+            });
+
+            // 添加按钮点击事件
+            $('#doctor-btn-add').click(function () {
+                showEditModel_add("添加");
+            });
+
+            var showEditModel_add = function (title, data) {
+                admin.putTempData('t_adisoryDoctor', data);
+                admin.popupCenter({
+                    title: title,
+                    path: 'pages/keaigao/AdvisoryDoctor_form.html',
+                    area: '610px',
+                    offset: '0px',
+                    finish: function () {
+                    }
+                });
+            };
+
+            // 工具条点击事件
+            table.on('tool(app-table)', function (obj) {
+                var data = obj.data;
+                var layEvent = obj.event;
+                 if (layEvent === 'edit') {
+                    showEditModel_add("编辑", data);
+                }else if(layEvent === 'delete'){
+                     doDelete(data);
+                 }
+            });
+
+            // 删除
+            var doDelete = function (obj) {
+                layer.confirm('确定删除此医生吗?', function (i) {
+                    layer.close(i);
+                    layer.load(2);
+                    admin.req('api-opration/advisorydoctor/delete/' + obj.id, {}, function (data) {
+                        layer.closeAll('loading');
+                        if (data.code == 0) {
+                            layer.msg(data.msg, { icon: 1, time: 2000 });
+                            table.reload('app-table', {});
+                        } else {
+                            layer.msg(data.msg, { icon: 2, time: 2000 });
+                        }
+                    }, 'delete');
+                });
+            };
+
+        });
+</script>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryDoctor_form.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryDoctor_form.html
new file mode 100644
index 0000000..b9d6ce8
--- /dev/null
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryDoctor_form.html
@@ -0,0 +1,364 @@
+<form id="app-form-add" lay-filter="app-form-add" class="layui-form model-form">
+    <input name="id" type="hidden"/>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 75px;">医院</label>
+                <div class="layui-input-block" style="width: 150px;">
+                    <input name="hospitalName" id="hospitalName" placeholder="请输入医院名称" type="text" class="layui-input"
+                           maxlength="50" lay-verify="required" required style="width: 150px;"/>
+                    <input type="hidden" name="hospitalId" id="hospitalId"/>
+                    <input type="hidden" name="id" id="id"/>
+                </div>
+            </div>
+            <div class="layui-inline">
+                <label class="layui-form-label">科室</label>
+                <div class="layui-input-block" style="width: 150px;">
+                    <input name="departmentName" id="departmentName" placeholder="请选择科室" type="hidden"
+                           class="layui-input" maxlength="20" />
+                    <select id="departmentId" name="departmentId" lay-filter="departmentId" placeholder="请选择科室"
+                            lay-verify="required" required>
+                        <option value="">-请选择科室-</option>
+                    </select>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label">咨询医生</label>
+                <div class="layui-input-block" style="width: 150px;">
+                    <input name="doctorName" id="doctorName" placeholder="请选择医生" type="hidden"
+                           class="layui-input" maxlength="20" />
+                    <select id="doctorId" name="doctorId" lay-filter="doctorId" placeholder="请选择医生"
+                            lay-verify="required" required >
+                        <option value="">-请选择医生-</option>
+                    </select>
+                </div>
+            </div>
+            <div class="layui-inline">
+                <label class="layui-form-label">开通服务</label>
+                <div class="layui-input-block" style="width: 150px;">
+                    <select id="service" name="service" lay-filter="service" placeholder="请选择服务"
+                            lay-verify="required" required>
+                        <option value="1">图文</option>
+                        <option value="2">电话</option>
+                        <option value="3">图文/电话</option>
+                    </select>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 80px;">电询价格</label>
+                <div class="layui-input-block" style="width: 150px;">
+                    <input name="price" id="price" lay-verify="required|number" required placeholder="电话咨询价格" class="layui-input" value="30.00" maxlength="6"/>
+                </div>
+            </div>
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 80px;">客服渠道</label>
+                <div class="layui-input-block" style="width: 150px;">
+                    <input name="price" id="channel" lay-verify="required" required placeholder="客服渠道地址" class="layui-input"  maxlength="50"/>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 80px;">最大接待</label>
+                <div class="layui-input-block" style="width: 150px;">
+                    <input name="maxPeople" id="maxPeople" lay-verify="required|number" required placeholder="最大接待" class="layui-input" value="3" maxlength="3"/>
+                </div>
+            </div>
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 80px;">绑定手机号</label>
+                <div class="layui-input-block" style="width: 150px;">
+                    <input name="bindPhone" id="bindPhone"  placeholder="绑定手机号" class="layui-input"  maxlength="20"/>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 80px;">擅长</label>
+                <div class="layui-input-block" style="width: 400px;">
+                    <textarea name="specialty" id="specialty" required placeholder="请输入擅长" class="layui-textarea"
+                              style="width:99%;min-height:70px"></textarea>
+                 </div>
+            </div>
+        </div>
+    </div>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label">可预约时间</label>
+                <div class="layui-input-block" style="width: 450px;">
+                    <table border="1" style="width:100%; margin-top: 15px;">
+                        <tr>
+                            <td></td>
+                            <td style="text-align: center">上午<br/>8:00-12:00</td>
+                            <td style="text-align: center">下午<br/>12:00-18:00</td>
+                            <td style="text-align: center">晚间<br/>18:00-22:00</td>
+                        </tr>
+                        <tr>
+                            <td style="text-align: center">周一</td>
+                            <td style="text-align: center"><input type="checkbox"  value="1_1" lay-skin="switch" lay-text="开启|停用"/></td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox1_2" lay-skin="switch" lay-text="开启|停用"  value="1_2"></td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox1_3" lay-skin="switch" lay-text="开启|停用"  value="1_3"></td>
+                        </tr>
+                        <tr>
+                            <td style="text-align: center">周二</td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox2_1" lay-skin="switch" lay-text="开启|停用" value="2_1"></td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox2_2" lay-skin="switch" lay-text="开启|停用" value="2_2"></td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox2_3" lay-skin="switch" lay-text="开启|停用" value="2_3"></td>
+                        </tr>
+                        <tr>
+                            <td style="text-align: center">周三</td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox3_1" lay-skin="switch" lay-text="开启|停用" value="3_1"></td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox3_2" lay-skin="switch" lay-text="开启|停用" value="3_2"></td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox3_3" lay-skin="switch" lay-text="开启|停用" value="3_3"></td>
+                        </tr>
+                        <tr>
+                            <td style="text-align: center">周四</td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox4_1" lay-skin="switch" lay-text="开启|停用" value="4_1"></td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox4_2" lay-skin="switch" lay-text="开启|停用" value="4_2"></td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox4_3" lay-skin="switch" lay-text="开启|停用" value="4_3"></td>
+                        </tr>
+                        <tr>
+                            <td style="text-align: center">周五</td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox5_1" lay-skin="switch" lay-text="开启|停用" value="5_1"></td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox5_2" lay-skin="switch" lay-text="开启|停用" value="5_2"></td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox5_3" lay-skin="switch" lay-text="开启|停用" value="5_3"></td>
+                        </tr>
+                        <tr>
+                            <td style="text-align: center">周六</td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox6_1" lay-skin="switch" lay-text="开启|停用" value="6_1"></td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox6_2" lay-skin="switch" lay-text="开启|停用" value="6_2"></td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox6_3" lay-skin="switch" lay-text="开启|停用" value="6_3"></td>
+                        </tr>
+                        <tr>
+                            <td style="text-align: center">周日</td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox7_1" lay-skin="switch" lay-text="开启|停用" value="7_1"></td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox7_2" lay-skin="switch" lay-text="开启|停用" value="7_2"></td>
+                            <td style="text-align: center"><input type="checkbox" name="checkbox7_3" lay-skin="switch" lay-text="开启|停用" value="7_3"></td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <div class="layui-form-item model-form-footer">
+        <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">取消</button>
+        <button class="layui-btn" id="sure" lay-filter="doctor-form-submit"
+                lay-submit>保存
+        </button>
+    </div>
+</form>
+
+<script>
+    layui.use(['form', 'laydate', 'util', 'config', 'admin', 'autocomplete', 'formSelects'], function () {
+        var form = layui.form;
+        var config = layui.config;
+        var layer = layui.layer;
+        var util = layui.util;
+        var admin = layui.admin;
+        var autocomplete = layui.autocomplete;
+        var formSelects = layui.formSelects;
+        var $ = layui.jquery;
+
+        form.on('select(doctorId)', function () {
+            //将部门名称赋值
+            $('#doctorName').val($(this)[0].innerHTML);
+        });
+
+        form.render();
+
+        // 表单提交事件
+        form.on('submit(doctor-form-submit)', function (data) {
+            data.field.hospitalId = $("#hospitalId").val();
+            data.field.hospitalName = $("#hospitalName").val();
+            data.field.doctorName = $("#doctorName").val();
+            data.field.service = $("#service").val();
+            data.field.price = $("#price").val();
+            data.field.doctorId = $("#doctorId").val();
+            data.field.channel = $("#channel").val();
+            data.field.maxPeople = $("#maxPeople").val();
+            data.field.deptId = $("#departmentId").val();
+            data.field.deptName = $("#departmentName").val();
+            data.field.specialty = $("#specialty").val();
+            data.field.bindPhone = $("#bindPhone").val();
+
+            var arr_box = [];
+            $('input[type=checkbox]:checked').each(function() {
+                arr_box.push($(this).val());
+            });
+            data.field.appointment = arr_box;
+
+            layer.load(2);
+
+            if($("#bindPhone").val() != "" &&  $("#bindPhone").val() != null){
+                admin.req('api-opration/advisorydoctor/querUserByPhone', JSON.stringify(data.field), function (data1) {
+                    layer.closeAll('loading');
+                    if (data1.code == 0) {
+                        layer.confirm('确定要将该医生绑定到昵称:' + data1.data.nickName + "吗?", function (i) {
+                            admin.req('api-opration/advisorydoctor', JSON.stringify(data.field), function (data) {
+                                layer.closeAll('loading');
+                                if (data.code == 0) {
+                                    layer.closeAll();
+                                    parent.layui.table.reload('app-table', {});
+                                } else {
+                                    layer.msg(data.msg, {
+                                        icon: 2,
+                                        time: 3000
+                                    });
+                                }
+                            }, "POST");
+                        });
+                    } else {
+                        layer.msg(data.msg, {
+                            icon: 2,
+                            time: 3000
+                        });
+                    }
+                }, "POST");
+            }else{
+                admin.req('api-opration/advisorydoctor', JSON.stringify(data.field), function (data) {
+                    layer.closeAll('loading');
+                    if (data.code == 0) {
+                        layer.closeAll();
+                        parent.layui.table.reload('app-table', {});
+                    } else {
+                        layer.msg(data.msg, {
+                            icon: 2,
+                            time: 3000
+                        });
+                    }
+                }, "POST");
+            }
+
+            return false;
+        });
+
+        //自动完成-医院名称
+        autocomplete.render({
+            elem: $('#hospitalName')[0],
+            keywordsName: 'hospitalName', //查询关键字名称
+            url: config.base_server + 'api-user/syshospital/findByName',
+            template_val: '{{d.hospitalName}}', //选择后文本框显示的数据字段
+            template_txt: "<div class='layui-table-cell'>{{d.hospitalName}}</div>", //下拉列表模板
+            onselect: function (resp) {
+                $("#hospitalId").val(resp.id);
+                //重新装载科室
+                getdepartment(resp.id,"");
+            }
+        });
+
+        //新增 和  更新   科室触发的事件
+        form.on('select(departmentId)', function () {
+            //将部门名称赋值
+            $('#departmentName').val($(this)[0].innerHTML);
+            getDoctor( $("#hospitalId").val(), $("#departmentId").val());
+        });
+
+        //获取科室
+        var getdepartment = function (hospitalId,deptId) {
+            admin.req('api-user/sysdepartment/findListByHospitalId', {
+                id: hospitalId
+            }, function (data) {
+                layer.closeAll('loading');
+                if (0 === data.code) {
+                    department = data.data;
+                    $('#departmentId').empty();
+                    if (data.data.length > 0) {
+                        $('#departmentName').val(data.data[0].departmentName);
+                    }
+                    $.each(data.data, function (index, item) {
+                        //往下拉菜单里添加元素
+                        $('#departmentId').append(new Option(item.departmentName, item.id,
+                            false, false));
+                        form.render('select', 'app-form');
+                    })
+                    getDoctor($("#hospitalId").val(),deptId === '' ? department[0].id : deptId);
+                    form.render();
+                } else {
+                    layer.msg(data.msg, {
+                        icon: 2,
+                        time: 2000
+                    });
+                }
+            }, 'get');
+        };
+
+        //获取医生
+        var getDoctor = function (hospitalId,departmentId) {
+            admin.req('api-user/sysdoctor/queryDoctorToC', JSON.stringify({
+                hospitalId: hospitalId,
+                departmentId:departmentId
+            }), function (data) {
+                layer.closeAll('loading');
+                if (0 === data.code) {
+                    $('#doctorId').empty();
+
+                    if (data.data.length > 0) {
+                        $('#doctorName').val(data.data[0].doctorName);
+                    }
+                    $.each(data.data, function (index, item) {
+                        //往下拉菜单里添加元素
+                        $('#doctorId').append(new Option(item.doctorName, item.id,
+                            false, false));
+                        form.render('select', 'app-form');
+                    })
+                    form.render();
+                } else {
+                    layer.msg(data.msg, {
+                        icon: 2,
+                        time: 2000
+                    });
+                }
+            }, 'post');
+        };
+
+        var adisoryDoctor = admin.getTempData('t_adisoryDoctor');
+        if(adisoryDoctor){
+          $("#id").val(adisoryDoctor.id);
+          $("#hospitalId").val(adisoryDoctor.hospitalId);
+          $("#hospitalName").val(adisoryDoctor.hospitalName);
+          $("#specialty").val(adisoryDoctor.specialty);
+          $("#bindPhone").val(adisoryDoctor.bindPhone);
+
+          getdepartment(adisoryDoctor.hospitalId,adisoryDoctor.deptId);
+
+          form.val('app-form-add', adisoryDoctor);
+          $("#price").val(adisoryDoctor.price / 100);
+          $("#doctorName").val(adisoryDoctor.doctorName);
+
+        admin.req('api-opration/appointment/queryByAdvisoryId/'+$("#id").val(), {
+
+        }, function (data) {
+            layer.closeAll('loading');
+            if (0 === data.code) {
+                $('input[type=checkbox]').each(function() {
+                    if(data.data.indexOf($(this).val()) != -1){
+                        $(this).attr('checked', 'checked');
+                    }
+                });
+                form.render();
+            } else {
+                layer.msg(data.msg, {
+                    icon: 2,
+                    time: 2000
+                });
+            }
+        }, 'get');
+
+
+          form.render();
+        }
+    });
+</script>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryManager.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryManager.html
new file mode 100644
index 0000000..cef2dd8
--- /dev/null
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryManager.html
@@ -0,0 +1,250 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">咨询管理</h2>
+        <span class="layui-breadcrumb pull-right">
+            <a href="#!home_console">首页</a>
+            <a><cite>咨询管理</cite></a>
+        </span>
+    </div>
+   <div class="layui-card-body">
+        <div class="layui-form toolbar">
+            <div class="layui-form-item">
+                <div class="layui-inline">
+                    <select id="type" lay-filter="role_clients">
+                        <option value="">咨询类型</option>
+                        <option value="1">图文</option>
+                        <option value="2">电话</option>
+                        <option value="3">图文/电话</option>
+                    </select>
+                    <select id="status" lay-filter="role_clients">
+                        <option value="">咨询状态</option>
+                        <option value="1">待咨询</option>
+                        <option value="2">咨询中</option>
+                        <option value="3">待完成</option>
+                        <option value="4">已完成</option>
+                    </select>
+                </div>
+                <div class="layui-inline" >
+                    <input name="keyword" id="keyword" placeholder="咨询ID/医生名/用户名称" type="text"
+                           class="layui-input search-input" maxlength="50" autocomplete="off"/>&emsp;
+                </div>
+
+                <button id="app-btn-search" class="layui-btn icon-btn" layt="abc"><i class="layui-icon">&#xe615;</i>搜索
+                </button>
+                <table class="layui-table" id="app-table" lay-filter="app-table"></table>
+            </div>
+        </div>
+    </div>
+</div>
+
+<input id="hospitalId" type="hidden"/>
+<!-- 表格操作列 -->
+<script type="text/html" id="doctor-table-bar">
+    <button class="layui-btn layui-btn-primary layui-btn-xs" lay-event="show">查看
+    </button>
+    {{# if(d.type == 2 && d.payStatus == 1){ }}
+    <button class="layui-btn layui-btn-xs" lay-event="refund">
+        退款
+    </button>
+    {{# } }}
+    {{# if(d.type == 1){ }}
+    <button class="layui-btn layui-btn-primary layui-btn-xs" lay-event="complete">
+        完成
+    </button>
+    {{# } }}
+</script>
+<script>
+    layui.use(['form', 'table', 'laydate', 'util', 'config', 'upload', 'admin', 'formSelects','area'],
+        function () {
+            var form = layui.form;
+            var table = layui.table;
+            var config = layui.config;
+            var admin = layui.admin;
+            var $ = layui.jquery;
+
+            // 渲染表格
+            table.render({
+                elem: '#app-table',
+                url: config.base_server + 'api-opration/advisorydoctor/findAll',
+                method: 'GET',
+                headers: {
+                    'Authorization': 'Bearer ' + config.getToken().access_token
+                },
+                page: true,
+                cols: [
+                    [{
+                        field: 'advisoryId',
+                        width: "300",
+                        title: '咨询ID',
+                        align: 'center',
+                        fixed: 'left',
+                    },{
+                        field: 'type',
+                        width: "90",
+                        title: '类型',
+                        fixed: 'left',
+                        templet: function (d) {
+                            if (d.type == 1) {
+                                return "图文"
+                            } else if (d.type == 2) {
+                                return "电话"
+                            } else {
+                                return "图文/电话"
+                            }
+                        }
+                    },{
+                        field: 'createTime',
+                        width: "160",
+                        title: '创建时间',
+                        align: 'center',
+                        fixed: 'left',
+                    },{
+                        field: 'doctorName',
+                        width: "150",
+                        title: '咨询医生',
+                        align: 'center',
+                        fixed: 'left',
+                    },{
+                        field: 'userName',
+                        width: "150",
+                        align: 'center',
+                        title: '用户名',
+                        fixed: 'left',
+                    },
+                    {
+                        field: 'appointmentTime',
+                        width: "250",
+                        align: 'center',
+                        title: '预约时间',
+                        fixed: 'left',
+                    },
+                    {
+                        field: 'consultationStatus',
+                        width: "90",
+                        align: 'center',
+                        title: '咨询状态',
+                        fixed: 'left',
+                        templet: function (d) {
+                            if (d.consultationStatus == 1) {
+                                return "待咨询"
+                            } else if (d.consultationStatus == 2) {
+                                return "咨询中"
+                            } else if (d.consultationStatus == 3) {
+                                return "待完成"
+                            }else if (d.consultationStatus == 4) {
+                                return "已完成"
+                            }else{
+                                return "已取消"
+                            }
+                        }
+                    },
+                    {
+                        field: 'evaluationLevel',
+                        width: "80",
+                        align: 'center',
+                        title: '评价',
+                        fixed: 'left',
+                        templet: function (d) {
+                            return (d.evaluationLevel == null || d.evaluationLevel == 0) ? "" :  d.evaluationLevel + "星";
+                        }
+                    },
+                    {
+                        width: "200",
+                        align: 'center',
+                        title: '操作',
+                        fixed: 'right',
+                        templet: '#doctor-table-bar'
+                    }
+                    ]
+                ],
+                done: function (res, curr, count) {
+                    permissionsInput(res, config);
+                }
+            });
+
+
+            // 搜索按钮点击事件
+            $('#app-btn-search').click(function () {
+                var type = $('#type').val();
+                var status = $("#status").val();
+                var keyword = $('#keyword').val();
+                table.reload('app-table', {
+                    where: {
+                        type: type,
+                        status: status,
+                        keyword: keyword
+                    }
+                });
+            });
+
+            var showEditModel_add = function (title, data) {
+                admin.putTempData('t_adisory', data);
+                admin.popupCenter({
+                    title: title,
+                    path: 'pages/keaigao/AdvisoryManager_form.html',
+                    area: '610px',
+                    offset: '0px',
+                    finish: function () {
+                    }
+                });
+            };
+
+            // 工具条点击事件
+            table.on('tool(app-table)', function (obj) {
+                var data = obj.data;
+                var layEvent = obj.event;
+                 if (layEvent === 'show') {
+                    showEditModel_add("查看", data);
+                }else if(layEvent === 'complete'){
+                     doComplete(data);
+                 }else if(layEvent === 'refund'){
+                     doRefund(data);
+                 }
+            });
+
+            //标记完成
+            var doComplete = function (obj) {
+                var name = "确定要标记完成吗?";
+                if(obj.payStatus !== 1 && obj.type == 2){
+                    name = "该咨询支付异常,确定要标记完成吗?"
+                }
+                layer.confirm(name , function (i) {
+                    layer.close(i);
+                    layer.load(2);
+                    admin.req('api-opration/advisorydoctor/update/' + obj.advisoryId, {}, function (data) {
+                        layer.closeAll('loading');
+                        if (data.code == 0) {
+                            layer.msg(data.msg, { icon: 1, time: 2000 });
+                            table.reload('app-table', {});
+                        } else {
+                            layer.msg(data.msg, { icon: 2, time: 2000 });
+                        }
+                    }, 'Get');
+                });
+            };
+
+            //退款
+            var doRefund = function (obj) {
+                if(obj.payStatus == -1){
+                    layer.msg("已退款,无需重复操作", { icon: 2, time: 2000 });
+                    return;
+                }
+
+                var name = "确定要将"+(obj.payStatus == 1 ? "已支付" : "未支付")+"的订单进行退款吗?";
+                layer.confirm(name , function (i) {
+                    layer.close(i);
+                    layer.load(2);
+                    admin.req('api-opration/advisorydoctor/refund', JSON.stringify({'advisoryId':obj.advisoryId}), function (data) {
+                        layer.closeAll('loading');
+                        if (data.code == 0) {
+                            layer.msg(data.msg, { icon: 1, time: 2000 });
+                            table.reload('app-table', {});
+                        } else {
+                            layer.msg(data.msg, { icon: 2, time: 2000 });
+                        }
+                    }, 'POST');
+                });
+            };
+
+        });
+</script>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryManager_form.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryManager_form.html
new file mode 100644
index 0000000..36d62ad
--- /dev/null
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisoryManager_form.html
@@ -0,0 +1,191 @@
+<form id="app-form-add" lay-filter="app-form-add" class="layui-form model-form custome-height">
+    <input name="id" type="hidden"/>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 75px;">ID</label>
+                <div class="layui-input-block" id="id" />
+            </div>
+            <div class="layui-inline">
+                <label class="layui-form-label">类型</label>
+                <div class="layui-input-block" id="leixing"/>
+            </div>
+        </div>
+    </div>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 75px;">创建时间</label>
+                <div class="layui-input-block" id="createTime" style="width: 245px;"/>
+            </div>
+            <div class="layui-inline">
+                <label class="layui-form-label">开通服务</label>
+                <div class="layui-input-block" id="service"/>
+            </div>
+        </div>
+    </div>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 80px;">咨询医生</label>
+                <div class="layui-input-block" id="doctor" style="width: 245px;"/>
+            </div>
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 80px;">咨询客户</label>
+                <div class="layui-input-block" id="customer"/>
+            </div>
+        </div>
+    </div>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 80px;">问题描述</label>
+                <div style="width: 500px; padding-left: 40px; overflow: auto; max-height: 100px"  id="problem"/>
+            </div>
+        </div>
+    </div>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 10px;"></label>
+                <div style="width: 450px; padding-left: 40px; text-align: left" id="img"/>
+            </div>
+        </div>
+    </div>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label">档案信息</label><br/>
+                <div class="layui-input-block" style="width: 500px;margin-left:40px;">
+                    <table border="1" style="width:100%; margin-top: 15px;">
+                        <tr>
+                            <td style="text-align: center">年龄/性别</td>
+                            <td style="text-align: center">靶身高/百分位</td>
+                            <td style="text-align: center">身高/百分位</td>
+                            <td style="text-align: center">体重/bmi</td>
+                            <td style="text-align: center">预测身高</td>
+                        </tr>
+                        <tr>
+                            <td style="text-align: center" id="one"></td>
+                            <td style="text-align: center" id="two"></td>
+                            <td style="text-align: center" id="three"></td>
+                            <td style="text-align: center" id="four"></td>
+                            <td style="text-align: center" id="five"></td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 80px;">预约时间</label>
+                <div class="layui-input-block" style="width: 200px;" id="appointmentTime">
+                </div>
+            </div>
+        </div>
+    </div>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 80px;">支付状态</label>
+                <div class="layui-input-block"  id="pay">
+                </div>
+            </div>
+        </div>
+    </div>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 80px;">用户评价</label>
+                <div class="layui-input-block" id="pj">
+                </div>
+            </div>
+        </div>
+    </div>
+    <div style="display:flex">
+        <div class="layui-form-item">
+            <div class="layui-inline">
+                <label class="layui-form-label" style="width: 80px;">用户电话</label>
+                <div class="layui-input-block" id="phone">
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="layui-form-item model-form-footer">
+        <button class="layui-btn layui-btn-primary" ew-event="closeDialog" type="button">关闭</button>
+    </div>
+</form>
+
+<script>
+    layui.use(['form', 'laydate', 'util', 'config', 'admin', 'autocomplete', 'formSelects'], function () {
+        var form = layui.form;
+        var admin = layui.admin;
+        var $ = layui.jquery;
+
+        form.render();
+
+        var adisory = admin.getTempData('t_adisory');
+        if (adisory) {
+            $("#id").html(adisory.advisoryId);
+
+            if (adisory.type == 1) {
+                $("#leixing").html("图文");
+            } else if (adisory.type == 2) {
+                $("#leixing").html("电话");
+            } else {
+                $("#leixing").html("图文/电话");
+            }
+
+            $("#createTime").html(adisory.createTime);
+
+            if (adisory.type == 1) {
+                $("#service").html("待咨询");
+            } else if (adisory.type == 2) {
+                $("#service").html("咨询中");
+            } else if (adisory.type == 3) {
+                $("#service").html("待完成");
+            } else if (adisory.type == 4) {
+                $("#service").html("已完成");
+            }
+
+            $("#doctor").html(adisory.doctorName);
+            $("#customer").html(adisory.userName);
+            $("#problem").html(adisory.question);
+
+            var content = '';
+            if (adisory.img !== null) {
+                var url = adisory.img.split(",");
+                for (var i = 0; i < url.length; i++) {
+                    content += "<img src='" + url[i] + "' style='width: 25%;height: 25%'/> &nbsp;";
+                }
+            }
+            $("#img").html(content);
+
+            $("#one").html(adisory.age + "/" + adisory.childSex == 0 ? "女" : "男");
+            $("#two").html(adisory.targetHeight + "/" + adisory.targetHeightPer);
+            $("#three").html(adisory.height + "/" + adisory.heightPer);
+            $("#four").html(adisory.weight + "/" + adisory.bmi);
+            $("#five").html(adisory.foreastHeight);
+
+            if(adisory.type == 2) {
+                $("#appointmentTime").html(adisory.appointmentTime);
+                var b = '';
+                if (adisory.payStatus == 0) {
+                    b = "待支付";
+                } else if (adisory.payStatus == 1) {
+                    b = "已支付";
+                } else {
+                    b = "已退款";
+                }
+                $("#pay").html((adisory.money / 100) + "&nbsp;" + b);
+            }
+            $("#phone").html(adisory.moblie);
+            $("#pj").html(adisory.reason);
+
+            form.render();
+        }
+    })
+    ;
+</script>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisorySummary.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisorySummary.html
new file mode 100644
index 0000000..ce8e403
--- /dev/null
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/keaigao/AdvisorySummary.html
@@ -0,0 +1,370 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">咨询数据统计</h2>
+        <span class="layui-breadcrumb pull-right">
+            <a href="#!home_console">首页</a>
+            <a><cite>咨询数据统计</cite></a>
+        </span>
+    </div>
+    <div class="layui-card-body">
+        <div class="layui-tab">
+            <ul class="layui-tab-title">
+                <li class="layui-this">日统计</li>
+                <li>月统计</li>
+                <li>医生汇总</li>
+            </ul>
+            <div class="layui-tab-content" style="height: 550px;">
+                <!--tab1内容-->
+                <div class="layui-tab-item layui-show" style="overflow-y: hidden">
+                    <div class="layui-input-inline">
+                        <input type="text" class="layui-input" id="dateMonth" placeholder="yyyy-MM">
+                    </div>
+                    <table class="layui-table" id="month-table" lay-filter="app-table"></table>
+                </div>
+
+                <!--tab2内容-->
+                <div class="layui-tab-item" style="overflow-y: hidden">
+                    <div class="layui-input-inline">
+                        <input type="text" class="layui-input" id="dateYear" placeholder="yyyy">
+                    </div>
+                    <table class="layui-table" id="year-table" lay-filter="app-table"></table>
+                </div>
+
+                <!--tab3内容-->
+                <div class="layui-tab-item" style="overflow-y: hidden">
+                    <div class="layui-input-inline">
+                        <input type="text" class="layui-input" id="startDate" placeholder="yyyy-MM-dd">
+                    </div>
+                    <div class="layui-input-inline">
+                        -
+                    </div>
+                    <div class="layui-input-inline">
+                        <input type="text" class="layui-input" id="endDate" placeholder="yyyy-MM-dd">
+                    </div>
+                    <div class="layui-input-inline">
+                        <button id="app-btn-search" class="layui-btn icon-btn" layt="abc"><i
+                                class="layui-icon">&#xe615;</i>搜索
+                        </button>
+                    </div>
+
+                    <table class="layui-table" id="doctor-table" lay-filter="app-table"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<script>
+    layui.use(['form', 'table', 'laydate', 'util', 'config', 'upload', 'admin', 'formSelects', 'area'],
+        function () {
+            var table = layui.table;
+            var config = layui.config;
+            var $ = layui.jquery;
+            var laydate = layui.laydate;
+
+            //年月选择器
+            laydate.render({
+                elem: '#dateMonth'
+                , type: 'month',
+                value: new Date(),
+                done: function (value, date, endDate) {
+                    table.reload('month-table', {
+                        where: {
+                            type: 1,
+                            riqi: value
+                        }
+                    });
+                }
+            });
+
+            //年选择器
+            laydate.render({
+                elem: '#dateYear'
+                , type: 'year',
+                value: new Date(),
+                done: function (value, date, endDate) {
+                    table.reload('year-table', {
+                        where: {
+                            type: 2,
+                            riqi: value
+                        }
+                    });
+                }
+            });
+
+            //时间选择器
+            laydate.render({
+                elem: '#startDate',
+                max: -1,
+                min: -183,
+                btns: ['confirm', 'clear'],
+                done: function (value, date, endDate) {
+                    var startDate = new Date(value).getTime();
+                    var endTime = new Date($('#endDate').val()).getTime();
+                    if (endTime < startDate) {
+                        layer.msg('结束时间不能小于开始时间');
+                        $('#startDate').val($('#endDate').val());
+                    }
+
+                    startDate.config.min = {
+                        year: date.year,
+                        month: date.month - 6,
+                        date: date.date,
+                    };
+                }
+            });
+            //时间选择器
+            laydate.render({
+                elem: '#endDate',
+                max: -1,
+                btns: ['confirm', 'clear'],
+                done: function (value, date, endDate) {
+                    var startDate = new Date($('#startDate').val()).getTime();
+                    var endTime = new Date(value).getTime();
+                    if (endTime < startDate) {
+                        layer.msg('结束时间不能小于开始时间');
+                        $('#endDate').val($('#startDate').val());
+                    }
+                }
+            });
+
+            initMonth();
+
+            $('.layui-tab-title').on('click', function (title) {
+                if (title.toElement.textContent == "日统计") {
+                    initMonth();
+                } else if (title.toElement.textContent == "月统计") {
+                    initYear();
+                } else if (title.toElement.textContent == "医生汇总") {
+                    initDoctor();
+                }
+            });
+
+            // 月查询渲染表格
+            function initMonth() {
+                table.render({
+                    elem: '#month-table',
+                    url: config.base_server + 'api-opration/advisorydoctor/summaryByDate',
+                    method: 'POST',
+                    headers: {
+                        'Authorization': 'Bearer ' + config.getToken().access_token
+                    },
+                    where: {
+                        type: 1,
+                        riqi: $("#dateMonth").val()
+                    },
+                    page: true,
+                    cols: [
+                        [{
+                            field: 'dateTime',
+                            width: "150",
+                            title: '日期',
+                            align: 'center',
+                            fixed: 'left',
+                        }, {
+                            field: 'graphicAdvisoryCount',
+                            width: "150",
+                            title: '图文咨询当日创建',
+                            align: 'center',
+                            fixed: 'left'
+                        }, {
+                            field: 'graphicAdvisoryDoneCount',
+                            width: "100",
+                            title: '当日完成',
+                            align: 'center',
+                            fixed: 'left',
+                        }, {
+                            field: 'phoneAdvisoryCount',
+                            width: "150",
+                            title: '电话咨询当日创建',
+                            align: 'center',
+                            fixed: 'left',
+                        }, {
+                            field: 'phoneAdvisoryConnectCount',
+                            width: "100",
+                            align: 'center',
+                            title: '当日通话',
+                            fixed: 'left',
+                        },
+                            {
+                                field: 'phoneAdvisoryDoneCount',
+                                width: "100",
+                                align: 'center',
+                                title: '当日完成',
+                                fixed: 'left',
+                            },
+                            {
+                                field: 'phoneAdvisoryCanncelCount',
+                                width: "100",
+                                align: 'center',
+                                title: '当日取消',
+                                fixed: 'left'
+                            }
+                        ]
+                    ],
+                    done: function (res, curr, count) {
+                        permissionsInput(res, config);
+                    }
+                });
+            }
+
+            // 年查询渲染表格
+            function initYear() {
+                table.render({
+                    elem: '#year-table',
+                    url: config.base_server + 'api-opration/advisorydoctor/summaryByDate',
+                    method: 'POST',
+                    headers: {
+                        'Authorization': 'Bearer ' + config.getToken().access_token
+                    },
+                    where: {
+                        type: 2,
+                        riqi: $("#dateYear").val()
+                    },
+                    page: true,
+                    cols: [
+                        [{
+                            field: 'inquiryDate',
+                            width: "150",
+                            title: '日期',
+                            align: 'center',
+                            fixed: 'left',
+                        }, {
+                            field: 'graphicAdvisoryCount',
+                            width: "150",
+                            title: '图文咨询当日创建',
+                            align: 'center',
+                            fixed: 'left'
+                        }, {
+                            field: 'graphicAdvisoryDoneCount',
+                            width: "100",
+                            title: '当日完成',
+                            align: 'center',
+                            fixed: 'left',
+                        }, {
+                            field: 'phoneAdvisoryCount',
+                            width: "150",
+                            title: '电话咨询当日创建',
+                            align: 'center',
+                            fixed: 'left',
+                        }, {
+                            field: 'phoneAdvisoryConnectCount',
+                            width: "100",
+                            align: 'center',
+                            title: '当日通话',
+                            fixed: 'left',
+                        },
+                            {
+                                field: 'phoneAdvisoryDoneCount',
+                                width: "100",
+                                align: 'center',
+                                title: '当日完成',
+                                fixed: 'left',
+                            },
+                            {
+                                field: 'phoneAdvisoryCanncelCount',
+                                width: "100",
+                                align: 'center',
+                                title: '当日取消',
+                                fixed: 'left'
+                            }
+                        ]
+                    ],
+                    done: function (res, curr, count) {
+                        permissionsInput(res, config);
+                    }
+                });
+            }
+
+            //医生统计信息
+            function initDoctor() {
+                var d = new Date();
+                var start = d.getFullYear() + '-' + lay.digit(d.getMonth()) + '-' + lay.digit(d.getDate() - 1);
+                var end = d.getFullYear() + '-' + lay.digit(d.getMonth() + 1) + '-' + lay.digit(d.getDate() - 1);
+
+                $("#startDate").val(start);
+                $("#endDate").val(end);
+                table.render({
+                    elem: '#doctor-table',
+                    url: config.base_server + 'api-opration/advisorydoctor/summaryDoctorByDate',
+                    method: 'POST',
+                    headers: {
+                        'Authorization': 'Bearer ' + config.getToken().access_token
+                    },
+                    where: {
+                        startTime: start,
+                        endTime: end
+                    },
+                    page: true,
+                    cols: [
+                        [{
+                            field: 'dateTime',
+                            width: "150",
+                            title: '日期',
+                            align: 'center',
+                            fixed: 'left',
+                        }, {
+                            field: 'hospitalName',
+                            width: "200",
+                            title: '医院名称',
+                            align: 'center',
+                            fixed: 'left',
+                        }, {
+                            field: 'doctorName',
+                            width: "100",
+                            title: '医生姓名',
+                            align: 'center',
+                            fixed: 'left',
+                        }, {
+                            field: 'graphicAdvisoryCount',
+                            width: "150",
+                            title: '图文咨询当日创建',
+                            align: 'center',
+                            fixed: 'left'
+                        }, {
+                            field: 'graphicAdvisoryDoneCount',
+                            width: "100",
+                            title: '当日完成',
+                            align: 'center',
+                            fixed: 'left',
+                        }, {
+                            field: 'phoneAdvisoryCount',
+                            width: "150",
+                            title: '电话咨询当日创建',
+                            align: 'center',
+                            fixed: 'left',
+                        }, {
+                            field: 'phoneAdvisoryConnectCount',
+                            width: "100",
+                            align: 'center',
+                            title: '当日通话',
+                            fixed: 'left',
+                        },
+                            {
+                                field: 'phoneAdvisoryDoneCount',
+                                width: "100",
+                                align: 'center',
+                                title: '当日完成',
+                                fixed: 'left',
+                            },
+                            {
+                                field: 'phoneAdvisoryCanncelCount',
+                                width: "100",
+                                align: 'center',
+                                title: '当日取消',
+                                fixed: 'left'
+                            }
+                        ]
+                    ],
+                    done: function (res, curr, count) {
+                        permissionsInput(res, config);
+                    }
+                });
+            }
+
+            $("#app-btn-search").click(function () {
+                initDoctor();
+            });
+        });
+
+</script>
\ No newline at end of file

--
Gitblit v1.8.0