From 31de20695ac5fc8562c5922fcbe8729ae4e146a1 Mon Sep 17 00:00:00 2001 From: zhaoxiaohao <913652501@qq.com> Date: Mon, 29 Jun 2020 14:20:39 +0800 Subject: [PATCH] Merge branch 'dev' of http://192.168.2.240:7070/r/kidgrow-microservices-platform into dev --- 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-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/feign/ConsumptionService.java | 43 +++++++ kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserController.java | 8 + kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java | 33 +++++ kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysUserService.java | 6 + kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/CommonConstant.java | 9 + kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recharge.html | 7 kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml | 10 + kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java | 121 +++++++++++++------ 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 14 files changed, 269 insertions(+), 55 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..400c2ff 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,8 +98,10 @@ public ResultBody consumptionAIStart(ConsumptionRequest consumptionRequest) { //默认的业务返回码 int bcode = -1; + //记录类型 + int recordType=ConsumptionConstant.BEFORE_DEDUCTION; //业务执行结果 - boolean isSuccess = false; + boolean isSuccess = true; //业务执行结果信息 String reMsg = ""; if (VateParams(consumptionRequest)) { @@ -117,16 +118,17 @@ //4.余额充足 获取要扣的套餐 写预扣费记录 if (beforeConsumption(consumptionRequest)) { //预扣费成功 - isSuccess = true; reMsg = "预扣费成功!"; bcode = ConsumptionConstant.BUSINESS_CODE_IS_BEFORE_DEDUCTION; } else { //预扣费执行失败 + isSuccess = false; reMsg = "预扣费执行失败!"; bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; } } else { //余额不足 + isSuccess = false; reMsg = "余额不足或获取失败!"; bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; } @@ -141,10 +143,11 @@ bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; } } else { + isSuccess = false; reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); } /** @@ -158,8 +161,10 @@ public ResultBody consumptionAIReturn(ConsumptionRequest consumptionRequest) { //默认的业务返回码 int bcode = -1; + //记录类型 + int recordType=ConsumptionConstant.DEDUCTION; //业务执行结果 - boolean isSuccess = false; + boolean isSuccess = true; //业务执行结果信息 String reMsg = ""; if (VateParams(consumptionRequest)) { @@ -179,20 +184,24 @@ logger.info("医院id:【{}】AI返回结果应该不走预扣,目前确已经预扣!", hospitalId); } else { //预扣费执行失败 + isSuccess = false; reMsg = "预扣费执行失败!"; bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; + return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); } } else { //余额不足 + isSuccess = false; reMsg = "余额不足或获取失败!"; bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; + return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); } } if (consumptionBusiess(consumptionRequest, consumptionRecordList)) { - isSuccess = true; reMsg = "该业务扣费成功!"; bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; } else { + isSuccess = false; reMsg = "该业务扣费失败!"; bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; } @@ -202,10 +211,11 @@ bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; } } else { + isSuccess = false; reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); } /** @@ -219,6 +229,8 @@ public ResultBody consumptionAIFail(ConsumptionRequest consumptionRequest) { //默认的业务返回码 int bcode = -1; + //记录类型 + int recordType = ConsumptionConstant.RETURN_BEFORE_DEDUCTION; //业务执行结果 boolean isSuccess = false; //业务执行结果信息 @@ -226,14 +238,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,14 +252,15 @@ { //退预扣记录 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)) { + isSuccess=true; reMsg = "有预扣,写退还预扣成功!"; bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_BEFORE_DEDUCTION; } @@ -270,7 +281,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 +295,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 +351,7 @@ reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); } /** @@ -340,6 +364,8 @@ public ResultBody consumptionArtificial(ConsumptionRequest consumptionRequest) { //默认的业务返回码 int bcode = -1; + //记录类型 + int recordType = ConsumptionConstant.DEDUCTION; //业务执行结果 boolean isSuccess = false; //业务执行结果信息 @@ -347,8 +373,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,16 +384,33 @@ //预扣费执行失败 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 { + isSuccess = true; //已经扣费 reMsg = "该业务已经扣费!"; bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; @@ -378,7 +419,7 @@ reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); } /** @@ -418,7 +459,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 +494,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 +614,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 +635,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-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysUserService.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysUserService.java index 72d4e66..5fe2ed6 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysUserService.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysUserService.java @@ -151,5 +151,11 @@ * @return */ ResultBody hospitalDoctorList(Long hospitalId, Long departmentId); + /** + * 获取医院科室下的所有有效的医生 + * @param userTel + * @return + */ + ResultBody isRegUser(String userTel); } diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java index b30238f..ffd3b8b 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java @@ -647,9 +647,9 @@ return ResultBody.failed("该手机号已经注册"); } //创建人id - Long createUserId = 0L; + Long createUserId = CommonConstant.CREATE_USER_ID; //创建人id - String createUserName = "自动创建"; + String createUserName = CommonConstant.CREATE_USER_NAME; //是否注册用户 Boolean isReg = false; //业务成功 @@ -990,4 +990,33 @@ } return new com.kidgrow.usercenter.model.SysDoctor(); } + + /** + * 检查手机号是注册用户还是正式用户 + * @param userTel + * @return + */ + public ResultBody isRegUser(String userTel) + { + if (StringUtils.isNotBlank(userTel)) { + List<SysUser> users = baseMapper.selectList( + new QueryWrapper<SysUser>().eq("username", userTel) + ); + if (users != null&&users.size()==1) { + SysUser sysUser=users.get(0); + if (sysUser.getCreateUserId()==CommonConstant.CREATE_USER_ID&&sysUser.getCreateUserName().equals(CommonConstant.CREATE_USER_NAME)) { + return ResultBody.ok().data(true); + } + return ResultBody.ok().data(false); + } + else + { + return ResultBody.failed("用户数据有误!"); + } + } + else + { + return ResultBody.failed("必要参数有误!"); + } + } } \ No newline at end of file diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserController.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserController.java index 096f57b..ac6c8ec 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserController.java +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserController.java @@ -86,7 +86,6 @@ @ApiOperation(value = "根据用户名查询用户实体") @Cacheable(value = "user", key = "#username") public SysUser selectByUsername(@PathVariable String username) { - return appUserService.selectByUsername(username); } @@ -452,4 +451,11 @@ return appUserService.findAppointUsers(Integer.parseInt(type)); } + /** + * 检查该手机号是否注册 + */ + @GetMapping("users/isRegUser") + public ResultBody isRegUser(String userTel) { + return appUserService.isRegUser(userTel); + } } diff --git a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/CommonConstant.java b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/CommonConstant.java index 25ca205..bec9753 100644 --- a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/CommonConstant.java +++ b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/CommonConstant.java @@ -275,4 +275,13 @@ * 自主注册的科室组织id */ public static final Long DEPARTMENT_ORG_ID=1273810374550335490L; + + /** + * 自主注册的创建人id + */ + public static final Long CREATE_USER_ID= 0L; + /** + * 自主注册的创建人名称 + */ + public static final String CREATE_USER_NAME= "自动创建"; } 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-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml b/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml index 98a8a08..817bb40 100644 --- a/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml +++ b/kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml @@ -151,8 +151,14 @@ strip-prefix: true sensitive-headers: '*' custom-sensitive-headers: true - wx-server: - path: /wechat-server/** + demo-aspnet-server-routes: + path: /demoaspnetserver/** + service-id: demo-aspnet-server + strip-prefix: true + sensitive-headers: '*' + custom-sensitive-headers: true + wechat-server-routes: + path: /wechatserver/** service-id: wechat-server strip-prefix: true sensitive-headers: '*' 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