From 64c9ab17a187d6087acbda902c01d14f5707922a Mon Sep 17 00:00:00 2001
From: houruijun <411269194@kidgrow.com>
Date: Sun, 28 Jun 2020 16:34:36 +0800
Subject: [PATCH] 1.调整扣费业务支持feign调用 2.更新运营平台支持统一格式化时间 3.修改zuu网关,增加请求头doctorId字段,修改departmentId字段的取值

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ConsumptionServiceFallbackFactory.java |   33 ++++++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml                                                          |    3 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html                                                                              |    7 +
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java        |  106 ++++++++++++++------
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml                                          |    8 
 kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/java/com/kidgrow/zuul/filter/UserInfoHeaderFilter.java                                                        |   12 +
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ConsumptionRecord.java                          |   27 ++++
 kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/ServiceNameConstants.java                                              |    4 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ConsumptionService.java                         |   43 ++++++++
 9 files changed, 197 insertions(+), 46 deletions(-)

diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ConsumptionService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ConsumptionService.java
new file mode 100644
index 0000000..748bbfb
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ConsumptionService.java
@@ -0,0 +1,43 @@
+package com.kidgrow.oprationcenter.feign;
+
+import com.kidgrow.common.constant.ServiceNameConstants;
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.feign.fallback.ConsumptionServiceFallbackFactory;
+import com.kidgrow.oprationcenter.vo.ConsumptionRequest;
+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;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ * @Description: 扣费业务相关内部调用
+ * @Project: 运营中心
+ * @CreateDate: Created in 2020-06-27 15:26:33 <br>
+ * @Author: <a href="411269194@kidgrow.com">houruijun</a>
+ * @version: 1.0
+ */
+@FeignClient(value = ServiceNameConstants.OPRATION_SERVER,configuration= FeignHttpInterceptorConfig.class,
+        fallbackFactory = ConsumptionServiceFallbackFactory.class, decode404 = true)
+public interface ConsumptionService {
+    /**
+     * 要让AI读片-调用
+     */
+    @PostMapping(value = "consumption/AIStart")
+    ResultBody consumptionAIStart (@RequestBody ConsumptionRequest consumptionRequest);
+    /**
+     * AI返回结果-调用
+     */
+    @PostMapping(value = "consumption/AIReturn")
+    ResultBody consumptionAIReturn (@RequestBody ConsumptionRequest consumptionRequest);
+    /**
+     * AI拒读/失败通知-调用
+     */
+    @PostMapping(value = "consumption/AIFail")
+    ResultBody consumptionAIFail (@RequestBody ConsumptionRequest consumptionRequest);
+    /**
+     * 发起人工读片-调用
+     */
+    @PostMapping(value = "consumption/Artificial")
+    ResultBody consumptionArtificial (@RequestBody ConsumptionRequest consumptionRequest);
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ConsumptionServiceFallbackFactory.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ConsumptionServiceFallbackFactory.java
new file mode 100644
index 0000000..2a0c0ea
--- /dev/null
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/fallback/ConsumptionServiceFallbackFactory.java
@@ -0,0 +1,33 @@
+package com.kidgrow.oprationcenter.feign.fallback;
+
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.feign.ConsumptionService;
+import com.kidgrow.oprationcenter.vo.ConsumptionRequest;
+import feign.hystrix.FallbackFactory;
+
+public class ConsumptionServiceFallbackFactory implements FallbackFactory<ConsumptionService> {
+    @Override
+    public ConsumptionService create(Throwable throwable) {
+        return new ConsumptionService() {
+            @Override
+            public ResultBody consumptionAIStart(ConsumptionRequest consumptionRequest) {
+                return ResultBody.failed().msg("consumptionAIStart的FeignClient调用参数传递测试失败");
+            }
+
+            @Override
+            public ResultBody consumptionAIReturn(ConsumptionRequest consumptionRequest) {
+                return ResultBody.failed().msg("consumptionAIReturn的FeignClient调用参数传递测试失败");
+            }
+
+            @Override
+            public ResultBody consumptionAIFail(ConsumptionRequest consumptionRequest) {
+                return ResultBody.failed().msg("consumptionAIFail的FeignClient调用参数传递测试失败");
+            }
+
+            @Override
+            public ResultBody consumptionArtificial(ConsumptionRequest consumptionRequest) {
+                return ResultBody.failed().msg("consumptionArtificial的FeignClient调用参数传递测试失败");
+            }
+        };
+    }
+}
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ConsumptionRecord.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ConsumptionRecord.java
index ca8e1db..fd7746d 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ConsumptionRecord.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ConsumptionRecord.java
@@ -1,9 +1,11 @@
 package com.kidgrow.oprationcenter.model;
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.kidgrow.common.model.SuperModel;
+import com.kidgrow.common.model.BaseModel;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -11,6 +13,7 @@
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
+import java.util.Date;
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
@@ -26,9 +29,14 @@
 @NoArgsConstructor
 @AllArgsConstructor
 @TableName("consumption_record")
-public class ConsumptionRecord extends SuperModel {
+public class ConsumptionRecord extends BaseModel {
     private static final long serialVersionUID = 1L;
-
+    /**
+     * 上次消费记录id(用于退费,扣费)
+     */
+    @TableId
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
     /**
      * 上次消费记录id(用于退费,扣费)
      */
@@ -64,6 +72,8 @@
      * 300                 退还预扣
      * 301                 退还扣费
      * 400                 义务执行出错
+     * 401                 参数为空异常
+     * 402                 业务失败
      */
     @NotEmpty(message = "业务返回结果不能为空")
     private Integer businessCode;
@@ -72,4 +82,15 @@
      */
     @NotNull(message = "扣费数量/金额不能为空")
     private Integer consumptionCount;
+    /**
+     * 创建时间
+     */
+    @NotNull(message = "创建时间不能为空")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    /**
+     * 更新时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java
index 338dcf0..5026604 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java
@@ -52,7 +52,6 @@
 
     private static final Logger logger = LoggerFactory.getLogger(ConsumptionRecordServiceImpl.class);
 
-
     /**
      * 列表
      *
@@ -99,6 +98,8 @@
     public ResultBody consumptionAIStart(ConsumptionRequest consumptionRequest) {
         //默认的业务返回码
         int bcode = -1;
+        //记录类型
+        int recordType=ConsumptionConstant.BEFORE_DEDUCTION;
         //业务执行结果
         boolean isSuccess = false;
         //业务执行结果信息
@@ -144,7 +145,7 @@
             reMsg = "传入参数有误!";
             bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR;
         }
-        return ResultReturn(consumptionRequest, bcode, reMsg, isSuccess);
+        return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess);
     }
 
     /**
@@ -158,6 +159,8 @@
     public ResultBody consumptionAIReturn(ConsumptionRequest consumptionRequest) {
         //默认的业务返回码
         int bcode = -1;
+        //记录类型
+        int recordType=ConsumptionConstant.DEDUCTION;
         //业务执行结果
         boolean isSuccess = false;
         //业务执行结果信息
@@ -181,11 +184,13 @@
                             //预扣费执行失败
                             reMsg = "预扣费执行失败!";
                             bcode = ConsumptionConstant.BUSINESS_CODE_ERROR;
+                            return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess);
                         }
                     } else {
                         //余额不足
                         reMsg = "余额不足或获取失败!";
                         bcode = ConsumptionConstant.BUSINESS_CODE_FAIL;
+                        return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess);
                     }
                 }
                 if (consumptionBusiess(consumptionRequest, consumptionRecordList)) {
@@ -205,7 +210,7 @@
             reMsg = "传入参数有误!";
             bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR;
         }
-        return ResultReturn(consumptionRequest, bcode, reMsg, isSuccess);
+        return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess);
     }
 
     /**
@@ -219,6 +224,8 @@
     public ResultBody consumptionAIFail(ConsumptionRequest consumptionRequest) {
         //默认的业务返回码
         int bcode = -1;
+        //记录类型
+        int recordType = ConsumptionConstant.RETURN_BEFORE_DEDUCTION;
         //业务执行结果
         boolean isSuccess = false;
         //业务执行结果信息
@@ -226,14 +233,12 @@
         if (VateParams(consumptionRequest)) {
             //先获取这个业务关联的扣费记录
             List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId());
-            Long hospitalId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_HOSPITAL_ID_HEADER));
-            Long departmentId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_DEP_ID_HEADER));
             //1.先检查是否已经扣费
             if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) {
                 //2.没有扣费,检查是否已经预扣费
                 if (isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) {
                     //2.1.有预扣费
-                    ConsumptionRecord consumptionRecord = consumptionRecordList.stream().filter(f -> f.getRecordType() == ConsumptionConstant.BEFORE_DEDUCTION).collect(Collectors.toList()).get(0);
+                    ConsumptionRecord consumptionRecord = consumptionRecordList.stream().filter(f -> f.getRecordType() == ConsumptionConstant.BEFORE_DEDUCTION&&f.getProOrderDetailId()>0).collect(Collectors.toList()).get(0);
                     //把占用的套餐id还回去
                     Long tempProOrderDetailId=consumptionRecord.getProOrderDetailId();
                     consumptionRecord.setProOrderDetailId(0L);
@@ -242,12 +247,12 @@
                     {
                         //退预扣记录
                         ConsumptionRecord consumptionRecordNew = new ConsumptionRecord();
-                        consumptionRecordNew.setBusinessCode(ConsumptionConstant.RETURN_BEFORE_DEDUCTION);
+                        consumptionRecordNew.setBusinessCode(ConsumptionConstant.BUSINESS_CODE_RETURN_BEFORE_DEDUCTION);
                         consumptionRecordNew.setBusinessId(consumptionRequest.getBusinessId());
-                        consumptionRecordNew.setConsumptionCount(consumptionRequest.getConsumptionCount());
-                        consumptionRecordNew.setRecordType(ConsumptionConstant.DEDUCTION);
+                        consumptionRecordNew.setConsumptionCount(0-consumptionRequest.getConsumptionCount());
+                        consumptionRecordNew.setRecordType(ConsumptionConstant.RETURN_BEFORE_DEDUCTION);
                         consumptionRecordNew.setProOrderDetailId(tempProOrderDetailId);
-                        consumptionRecordNew.setLastRecordId(consumptionRecord.getLastRecordId());
+                        consumptionRecordNew.setLastRecordId(consumptionRecord.getId());
                         if (SaveConsumptionRecord(consumptionRecordNew))
                         {
                             reMsg = "有预扣,写退还预扣成功!";
@@ -270,7 +275,8 @@
                     bcode = ConsumptionConstant.BUSINESS_CODE_ERROR;
                 }
             } else {
-                //3.有扣费记录
+                recordType=ConsumptionConstant.RETURN_DEDUCTION;
+                //3.有扣费记录 这种情况的流程,实际业务中不会出现,但理论上应该这样处理
                 //3.1 退还账户
                 //获取预扣的时候占住的套餐id
                 ConsumptionRecord consumptionRecord = consumptionRecordList.stream().filter(f -> f.getRecordType() == ConsumptionConstant.DEDUCTION).collect(Collectors.toList()).get(0);
@@ -283,24 +289,36 @@
                         //退费
                         boolean consumptionRe = productOrderDetailService.saveOrUpdate(productOrderDetail);
                         if (consumptionRe) {
-                            //退费成功
-                            //3.2 写退费记录
-                            ConsumptionRecord consumptionRecordNew = new ConsumptionRecord();
-                            consumptionRecordNew.setBusinessCode(ConsumptionConstant.BUSINESS_CODE_RETURN_DEDUCTION);
-                            consumptionRecordNew.setBusinessId(consumptionRecord.getBusinessId());
-                            consumptionRecordNew.setConsumptionCount(consumptionRecord.getConsumptionCount());
-                            consumptionRecordNew.setRecordType(ConsumptionConstant.RETURN_DEDUCTION);
-                            consumptionRecordNew.setProOrderDetailId(productOrderDetail.getId());
-                            consumptionRecordNew.setLastRecordId(consumptionRecord.getLastRecordId());
-                            if (SaveConsumptionRecord(consumptionRecordNew)) {
-                                //写退费记录成功
-                                isSuccess=true;
-                                reMsg = "退还扣费成功!";
-                                bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_DEDUCTION;
+                            //更新扣费记录  还回占用套餐
+                            consumptionRecord.setProOrderDetailId(0L);
+                            consumptionRecord.setUpdateTime(new Date());
+                            if (SaveConsumptionRecord(consumptionRecord))
+                            {
+                                //退费成功
+                                //3.2 写退费记录
+                                ConsumptionRecord consumptionRecordNew = new ConsumptionRecord();
+                                consumptionRecordNew.setBusinessCode(ConsumptionConstant.BUSINESS_CODE_RETURN_DEDUCTION);
+                                consumptionRecordNew.setBusinessId(consumptionRecord.getBusinessId());
+                                consumptionRecordNew.setConsumptionCount(0-consumptionRecord.getConsumptionCount());
+                                consumptionRecordNew.setRecordType(ConsumptionConstant.RETURN_DEDUCTION);
+                                consumptionRecordNew.setProOrderDetailId(productOrderDetail.getId());
+                                consumptionRecordNew.setLastRecordId(consumptionRecord.getId());
+                                if (SaveConsumptionRecord(consumptionRecordNew)) {
+                                    //写退费记录成功
+                                    isSuccess=true;
+                                    reMsg = "退还扣费成功!";
+                                    bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_DEDUCTION;
+                                }
+                                else
+                                {
+                                    reMsg = "退还扣费失败!";
+                                    bcode = ConsumptionConstant.BUSINESS_RUN_FAIL;
+                                }
                             }
                             else
                             {
-                                reMsg = "退还扣费失败!";
+                                //更新扣费失败
+                                reMsg = "更新扣费失败!";
                                 bcode = ConsumptionConstant.BUSINESS_RUN_FAIL;
                             }
                         }
@@ -327,7 +345,7 @@
             reMsg = "传入参数有误!";
             bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR;
         }
-        return ResultReturn(consumptionRequest, bcode, reMsg, isSuccess);
+        return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess);
     }
 
     /**
@@ -340,6 +358,8 @@
     public ResultBody consumptionArtificial(ConsumptionRequest consumptionRequest) {
         //默认的业务返回码
         int bcode = -1;
+        //记录类型
+        int recordType = ConsumptionConstant.DEDUCTION;
         //业务执行结果
         boolean isSuccess = false;
         //业务执行结果信息
@@ -347,8 +367,6 @@
         if (VateParams(consumptionRequest)) {
             //先获取这个业务关联的扣费记录
             List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId());
-            Long hospitalId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_HOSPITAL_ID_HEADER));
-            Long departmentId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_DEP_ID_HEADER));
             //1.先检查是否已经扣费
             if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) {
                 //2.没有扣费,检查是否已经预扣费
@@ -360,15 +378,31 @@
                             //预扣费执行失败
                             reMsg = "预扣费执行失败!";
                             bcode = ConsumptionConstant.BUSINESS_CODE_ERROR;
+                            return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess);
+                        }
+                        else
+                        {
+                            //发起了一个新的预扣,需要更新扣费业务数据列表
+                            consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId());
                         }
                     } else {
                         //余额不足
                         reMsg = "余额不足或获取失败!";
                         bcode = ConsumptionConstant.BUSINESS_CODE_FAIL;
+                        return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess);
                     }
                 }
                 //扣费业务
                 isSuccess= consumptionBusiess(consumptionRequest,consumptionRecordList);
+                if (isSuccess) {
+                    reMsg = "该业务已经扣费!";
+                    bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION;
+                }
+                else
+                {
+                    reMsg = "该业务扣费失败!";
+                    bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR;
+                }
             } else {
                 //已经扣费
                 reMsg = "该业务已经扣费!";
@@ -378,7 +412,7 @@
             reMsg = "传入参数有误!";
             bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR;
         }
-        return ResultReturn(consumptionRequest, bcode, reMsg, isSuccess);
+        return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess);
     }
 
     /**
@@ -418,7 +452,8 @@
             consumptionRecordNew.setConsumptionCount(consumptionRequest.getConsumptionCount());
             consumptionRecordNew.setRecordType(ConsumptionConstant.DEDUCTION);
             consumptionRecordNew.setProOrderDetailId(productOrderDetail.getId());
-            consumptionRecordNew.setLastRecordId(consumptionRecord.getLastRecordId());
+            consumptionRecordNew.setLastRecordId(consumptionRecord.getId());
+            consumptionRecordNew.setCreateTime(new Date());
 
             if (SaveConsumptionRecord(consumptionRecordNew)) {
                 //3.3 扣费成功 如果套餐id变化,则更新预扣费的套餐id
@@ -452,13 +487,13 @@
      * @param isSuccess          业务执行是否成功
      * @return
      */
-    private ResultBody ResultReturn(ConsumptionRequest consumptionRequest, int bcode, String reMsg, boolean isSuccess) {
+    private ResultBody ResultReturn(ConsumptionRequest consumptionRequest, int bcode,int recordType, String reMsg, boolean isSuccess) {
         //返回的数据实体
         ConsumptionVo consumptionVo = new ConsumptionVo();
         consumptionVo.setConsumptionCount(consumptionRequest.getConsumptionCount());
         consumptionVo.setBusinessId(consumptionRequest.getBusinessId());
         consumptionVo.setBcode(bcode);
-        consumptionVo.setRecordType(ConsumptionConstant.BEFORE_DEDUCTION);
+        consumptionVo.setRecordType(recordType);
         if (isSuccess) {
             return ResultBody.ok().data(consumptionVo).msg(reMsg);
         } else {
@@ -572,6 +607,9 @@
      */
     private Boolean SaveConsumptionRecord(ConsumptionRecord consumptionRecord) {
         if (consumptionRecord != null) {
+            if (consumptionRecord.getCreateTime() == null) {
+                consumptionRecord.setCreateTime(new Date());
+            }
             return this.saveOrUpdate(consumptionRecord);
         } else {
             logger.info("扣费数据写入参数为空!");
@@ -590,7 +628,7 @@
         if (consumptionRecordList != null) {
             if (consumptionRecordList.size() > 0) {
                 //过滤预扣费的记录
-                return consumptionRecordList.stream().filter(f -> f.getRecordType() == recordType).collect(Collectors.toList()).size() == 1;
+                return consumptionRecordList.stream().filter(f -> f.getRecordType() == recordType&&f.getProOrderDetailId()>0).collect(Collectors.toList()).size() == 1;
             }
         }
         return false;
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml
index 61f1ac4..18f8617 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml
@@ -12,8 +12,8 @@
         <where>
             <!--查询条件自行添加-->
             1=1
-            <if test="p.recordId != null and p.recordId !=''">
-                and record_id = #{p.recordId}
+            <if test="p.id != null and p.id !=''">
+                and id = #{p.id}
             </if>
             <if test="p.lastRecordId != null and p.lastRecordId !=''">
                 and last_record_id = #{p.lastRecordId}
@@ -48,7 +48,7 @@
         <include refid="Column_List"/>
         from consumption_record
         <include refid="where"/>
-        order by record_id desc
+        order by id desc
         limit 1
     </select>
 
@@ -58,6 +58,6 @@
         <include refid="Column_List"/>
         from consumption_record
         <include refid="where"/>
-        order by record_id desc
+        order by id desc
     </select>
 </mapper>
\ No newline at end of file
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 b009505..2a725ea 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
@@ -83,6 +83,9 @@
       - sys_feedback
       - doctor_templete
       - consumption_record
+      - product_order
+      - product_order_detail
+      - product_order_record
     ignoreSqls:
       - com.kidgrow.usercenter.mapper.SysRoleMapper.findAll
 
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 550749a..3cf501a 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
@@ -14,6 +14,10 @@
      */
     String USER_SERVICE = "usercenter-server";
     /**
+     * 运营中心服务
+     */
+    String OPRATION_SERVER="oprationcenter-server";
+    /**
      * 搜索中心服务
      */
     String SEARCH_SERVICE = "searchcenter-server";
diff --git a/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/java/com/kidgrow/zuul/filter/UserInfoHeaderFilter.java b/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/java/com/kidgrow/zuul/filter/UserInfoHeaderFilter.java
index 2f19cfd..20b0e16 100644
--- a/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/java/com/kidgrow/zuul/filter/UserInfoHeaderFilter.java
+++ b/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/java/com/kidgrow/zuul/filter/UserInfoHeaderFilter.java
@@ -29,7 +29,6 @@
 import java.util.Map;
 
 import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.FORM_BODY_WRAPPER_FILTER_ORDER;
-import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_DECORATION_FILTER_ORDER;
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
@@ -82,11 +81,18 @@
                 List<SysDoctor> sysDoctors = JSON.parseArray(JSON.toJSONString(listByMap.getData()), SysDoctor.class);
                 String str="";
                 Long hospital=-1L;
+                Long doctorId=-1L;
+                Long departmentId=-1L;
+                String departmentName="";
                 if(sysDoctors!=null&&sysDoctors.size()>0){
                     str= sysDoctors.get(0).getDoctorName();
                     hospital=sysDoctors.get(0).getHospitalId();
+                    doctorId=sysDoctors.get(0).getId();
+                    departmentId=sysDoctors.get(0).getDepartmentId();
+                    departmentName=sysDoctors.get(0).getDepartmentName();
                 }
                 ctx.addZuulRequestHeader(SecurityConstants.USER_ID_HEADER, String.valueOf(user.getId()));
+                ctx.addZuulRequestHeader(SecurityConstants.DOCTOR_ID_HEADER, String.valueOf(doctorId));
                 ctx.addZuulRequestHeader(SecurityConstants.USER_HEADER, user.getUsername());
 
                 ctx.addZuulRequestHeader(SecurityConstants.USER_REAL_NAME,URLEncoder.encode(str,"UTF-8"));//待完善
@@ -98,8 +104,8 @@
                 if (organizations != null&&organizations.size()>0) {
                     ctx.addZuulRequestHeader(SecurityConstants.USER_ORG_ID_HEADER,String.valueOf(organizations.get(0).getId()));
                     ctx.addZuulRequestHeader(SecurityConstants.USER_ORG_NAME_HEADER, URLEncoder.encode(organizations.get(0).getOrgName(),"UTF-8"));
-                    ctx.addZuulRequestHeader(SecurityConstants.USER_DEP_ID_HEADER,String.valueOf(organizations.get(organizations.size()-1).getId()));
-                    ctx.addZuulRequestHeader(SecurityConstants.USER_DEP_NAME_HEADER,URLEncoder.encode(organizations.get(organizations.size()-1).getOrgName(),"UTF-8"));
+                    ctx.addZuulRequestHeader(SecurityConstants.USER_DEP_ID_HEADER,String.valueOf(departmentId));
+                    ctx.addZuulRequestHeader(SecurityConstants.USER_DEP_NAME_HEADER,(departmentName.equals("")?URLEncoder.encode(organizations.get(organizations.size()-1).getOrgName(),"UTF-8"):departmentName));
                     ctx.addZuulRequestHeader(SecurityConstants.USER_ORGS_HEADER,JSON.toJSONString(organizations));
                 }
                 //将角色放到header
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html
index 2d9e63c..25ec7f9 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html
@@ -387,6 +387,9 @@
             if (listData != null) {
                 if (data.field != null) {
                     layer.confirm("确定要将待充值列表中的" + listData.length + "个产品充值给当前医院吗?", { btn: ["确定", "返回"] }, function () {
+                        data.field.contractBeginTime=data.field.contractBeginTime+" 00:00:00";
+                        data.field.contractEndTime=data.field.contractEndTime+" 23:59:59";
+                        data.field.contractTime=data.field.contractTime+" 00:00:00";
                         admin.req('api-opration/contract', JSON.stringify(data.field), function (data) {
                             layer.closeAll('loading');
                             if (data.code === 0) {
@@ -402,8 +405,8 @@
                                         isShare: item.isShare,
                                         ailightCount: item.ailightCount,
                                         recordCount: item.recordCount,
-                                        proBegintime: new Date(item.beginTime + ' 00:00:00'),
-                                        proEndtime: new Date(item.endTime + ' 23:59:59')
+                                        proBegintime: item.beginTime + ' 00:00:00',
+                                        proEndtime: item.endTime + ' 23:59:59'
                                     };
                                     listDetailData.push(detailData);
                                 })

--
Gitblit v1.8.0