From 6fd4bdff55620c562e0a22eee3c95924951b04a4 Mon Sep 17 00:00:00 2001 From: zhaoxiaohao <279049017@qq.com> Date: Thu, 24 Sep 2020 14:10:28 +0800 Subject: [PATCH] Merge branch 'pay_master' of ssh://192.168.2.240:29418/kidgrow-microservices-platform into pay_master --- kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml | 1 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IPayManagerService.java | 45 + kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/PayManagerMapper.java | 34 + kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SaasClientPayController.java | 14 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html | 34 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/PayManagerServiceImpl.java | 128 +++++ kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_pay.html | 130 +++++ kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/PayManagerMapper.xml | 82 +++ kidgrow-web/kidgrow-web-manager/src/main/resources/static/login.html | 3 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/PayManager.java | 77 +++ kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/PayManagerController.java | 167 +++++++ kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysUserMapper.xml | 1 kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/CommonConstant.java | 6 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/ConsumptionRequest.java | 9 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java | 2 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java | 570 ++++++++++++++---------- kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderServiceImpl.java | 2 kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/PayConstants.java | 21 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SaasClientPayServiceImpl.java | 16 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/ConsumptionRecord.java | 4 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISaasClientPayService.java | 1 21 files changed, 1,085 insertions(+), 262 deletions(-) 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 fd7746d..16e20b8 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 @@ -53,6 +53,10 @@ */ private String businessId; /** + * 调用方诊断id + */ + private String diaId; + /** * 记录类型 * 1:预扣费 * 2:退预扣费(需要关联预扣费编号) diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/PayManager.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/PayManager.java new file mode 100644 index 0000000..1abf4b7 --- /dev/null +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/PayManager.java @@ -0,0 +1,77 @@ +package com.kidgrow.oprationcenter.model; + +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; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +/** + * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> + * + * @version 1.0 + * @Description: <br> + * @Project: 运营中心<br> + * @CreateDate: Created in 2020-09-21 14:16:18 <br> + * @Author: <a href="411269194@kidgrow.com">houruijun</a> + */ +@Data +@EqualsAndHashCode(callSuper = false) +@NoArgsConstructor +@AllArgsConstructor +@TableName("pay_manager") +public class PayManager extends SuperModel { + private static final long serialVersionUID = 1L; + + /** + * 医院标识id + */ + @NotNull(message = "医院标识id不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long hospitalId; + /** + * 医院名称 + */ + @NotEmpty(message = "医院名称不能为空") + private String hospitalName; + /** + * 科室ID + */ + @NotNull(message = "科室ID不能为空") + @JsonSerialize(using = ToStringSerializer.class) + private Long departmentId; + /** + * 科室名称 + */ + @NotEmpty(message = "科室名称不能为空") + private String departmentName; + /** + * 单次支付金额 (单位为分) + */ + @NotNull(message = "单次支付金额不能为空") + private Integer payPrice; + /** + * 支付给喜高的费用 (单位为分) + */ + @NotNull(message = "单次支付金额不能为空") + private Integer payKidgrow; + /** + * 支付给客户的费用(单位为分) + */ + @NotNull(message = "单次支付金额不能为空") + private Integer payCustom; + /** + * 是否删除,1删除,0未删除 + */ + private Boolean isDel; + /** + * 状态,1启用,0停用 + */ + private Boolean enabled; +} diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/ConsumptionRequest.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/ConsumptionRequest.java index f5f534f..17b47f9 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/ConsumptionRequest.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/ConsumptionRequest.java @@ -1,6 +1,8 @@ package com.kidgrow.oprationcenter.vo; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -22,14 +24,17 @@ /** * 医院ID */ + @JsonSerialize(using = ToStringSerializer.class) private Long hospitalId; /** * 科室ID */ + @JsonSerialize(using = ToStringSerializer.class) private Long departmentId; /** * 医生ID */ + @JsonSerialize(using = ToStringSerializer.class) private Long doctorId; /** * 调用方业务编号,光片编号 @@ -39,4 +44,8 @@ * 实际变动数量 */ private int consumptionCount; + /** + * 诊断id + */ + private String diaId; } diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/PayManagerMapper.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/PayManagerMapper.java new file mode 100644 index 0000000..d450afe --- /dev/null +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/PayManagerMapper.java @@ -0,0 +1,34 @@ +package com.kidgrow.oprationcenter.mapper; + +import com.kidgrow.oprationcenter.model.PayManager; +import com.kidgrow.db.mapper.SuperMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> + * @Description: <br> + * @Project: 运营中心<br> + * @CreateDate: Created in 2020-09-21 14:16:18 <br> + * @Author: <a href="411269194@kidgrow.com">houruijun</a> + * @version 1.0 + */ +public interface PayManagerMapper extends SuperMapper<PayManager> { + /** + * 分页查询列表 + * @param page + * @param params + * @return + */ + List<PayManager> findList(Page<PayManager> page, @Param("p") Map<String, Object> params); + + /** + * 根据PayManager对象当做查询条件进行查询 + * @param + * @return PayManager对象 + */ + PayManager findByObject(@Param("p") PayManager payManager); +} diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IPayManagerService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IPayManagerService.java new file mode 100644 index 0000000..3b4315d --- /dev/null +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/IPayManagerService.java @@ -0,0 +1,45 @@ +package com.kidgrow.oprationcenter.service; + +import com.kidgrow.common.model.PageResult; +import com.kidgrow.common.model.SysUser; +import com.kidgrow.common.service.ISuperService; +import com.kidgrow.oprationcenter.model.PayManager; +import com.kidgrow.oprationcenter.model.ProductOrderDetail; + +import java.util.Map; + +/** + * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> + * @Description: <br> + * @Project: 运营中心<br> + * @CreateDate: Created in 2020-09-21 14:16:18 <br> + * @Author: <a href="411269194@kidgrow.com">houruijun</a> + * @version 1.0 + */ +public interface IPayManagerService extends ISuperService<PayManager> { + /** + * 列表 + * @param params + * @return + */ + PageResult<PayManager> findList(Map<String, Object> params); + + + /** + * 根据PayManager对象当做查询条件进行查询 + * @param payManager + * @return PayManager对象 + */ + PayManager findByObject(PayManager payManager); + + /** + * 根据PayManager对象当做查询条件进行查询 + * @param hospitalId + * @param departmentId + * @return PayManager对象 + */ + PayManager findByObject(Long hospitalId,Long departmentId); + ProductOrderDetail getProductDetail(Long hospitalId, Long departmentId); + Boolean saveproductOrder(PayManager payManager, SysUser sysUser); +} + diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISaasClientPayService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISaasClientPayService.java index c28792a..a5b7bfe 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISaasClientPayService.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISaasClientPayService.java @@ -33,6 +33,7 @@ * @return SaasClientPay对象 */ SaasClientPay findByObject(SaasClientPay saasClientPay); + SaasClientPay findModelByObject(Long hospitalId,Long departmentId,String diaId); /** * 批量结算 * @param list 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 1a3955b..454c824 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 @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kidgrow.common.constant.ConsumptionConstant; +import com.kidgrow.common.constant.PayConstants; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.model.ResultBody; import com.kidgrow.common.service.impl.SuperServiceImpl; @@ -9,9 +10,13 @@ import com.kidgrow.common.utils.StringUtils; import com.kidgrow.oprationcenter.mapper.ConsumptionRecordMapper; import com.kidgrow.oprationcenter.model.ConsumptionRecord; +import com.kidgrow.oprationcenter.model.PayManager; import com.kidgrow.oprationcenter.model.ProductOrderDetail; +import com.kidgrow.oprationcenter.model.SaasClientPay; import com.kidgrow.oprationcenter.service.IConsumptionRecordService; +import com.kidgrow.oprationcenter.service.IPayManagerService; import com.kidgrow.oprationcenter.service.IProductOrderDetailService; +import com.kidgrow.oprationcenter.service.ISaasClientPayService; import com.kidgrow.oprationcenter.vo.ConsumptionRequest; import com.kidgrow.oprationcenter.vo.ConsumptionVo; import com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail; @@ -26,7 +31,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.stream.Collectors; @@ -48,13 +52,16 @@ @Autowired private IProductOrderDetailService productOrderDetailService; @Autowired - private HttpServletRequest httpServletRequest; + private IPayManagerService payManagerService; + @Autowired + private ISaasClientPayService saasClientPayService; @Autowired private RabbitTemplate rabbitTemplate; private static final Logger logger = LoggerFactory.getLogger(ConsumptionRecordServiceImpl.class); @Value("${spring.profiles.active}") private String envName; + /** * 列表 * @@ -102,54 +109,67 @@ //默认的业务返回码 int bcode = -1; //记录类型 - int recordType=ConsumptionConstant.BEFORE_DEDUCTION; + int recordType = ConsumptionConstant.BEFORE_DEDUCTION; //业务执行结果 boolean isSuccess = true; //业务执行结果信息 String reMsg = ""; if (VateParams(consumptionRequest)) { - //先获取这个业务关联的扣费记录 - List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); - //1.先检查是否已经扣费 - if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { - //2.没有扣费,检查是否已经预扣费 - if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { - //3.没有预扣,查询余额 - Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId()); - if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { - //4.余额充足 获取要扣的套餐 写预扣费记录 - if (beforeConsumption(consumptionRequest)) { - //预扣费成功 - reMsg = "预扣费成功!"; - bcode = ConsumptionConstant.BUSINESS_CODE_IS_BEFORE_DEDUCTION; - } else { - //预扣费执行失败 - isSuccess = false; - reMsg = "预扣费执行失败!"; - bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; - } - } else { - //余额不足 或获取异常 - isSuccess = false; - reMsg = vateMap.get("vateMsg").toString(); - bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; - } - } else { - //已经预扣费 - reMsg = "该业务已经预扣费!"; + //是否开通单次支付 + if (departmentIsPay(consumptionRequest)) { + //是否支付成功 + if (departmentPayStatus(consumptionRequest)) { + //预扣费成功 + reMsg = "单次支付模拟预扣费成功!"; bcode = ConsumptionConstant.BUSINESS_CODE_IS_BEFORE_DEDUCTION; + } else { + reMsg = "单次支付未成功,不允许预扣费!"; + bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; } } else { - //已经扣费 - reMsg = "该业务已经扣费!"; - bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; + //先获取这个业务关联的扣费记录 + List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); + //1.先检查是否已经扣费 + if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { + //2.没有扣费,检查是否已经预扣费 + if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { + //3.没有预扣,查询余额 + Map<String, Object> vateMap = VateUserNowProduct(consumptionRequest.getConsumptionCount(), consumptionRequest.getHospitalId(), consumptionRequest.getDepartmentId()); + if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { + //4.余额充足 获取要扣的套餐 写预扣费记录 + if (beforeConsumption(consumptionRequest)) { + //预扣费成功 + reMsg = "预扣费成功!"; + bcode = ConsumptionConstant.BUSINESS_CODE_IS_BEFORE_DEDUCTION; + } else { + //预扣费执行失败 + isSuccess = false; + reMsg = "预扣费执行失败!"; + bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; + } + } else { + //余额不足 或获取异常 + isSuccess = false; + reMsg = vateMap.get("vateMsg").toString(); + bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; + } + } else { + //已经预扣费 + reMsg = "该业务已经预扣费!"; + bcode = ConsumptionConstant.BUSINESS_CODE_IS_BEFORE_DEDUCTION; + } + } else { + //已经扣费 + reMsg = "该业务已经扣费!"; + bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; + } } } else { isSuccess = false; reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode, recordType, reMsg, isSuccess); } /** @@ -164,61 +184,76 @@ //默认的业务返回码 int bcode = -1; //记录类型 - int recordType=ConsumptionConstant.DEDUCTION; + int recordType = ConsumptionConstant.DEDUCTION; //业务执行结果 boolean isSuccess = true; //业务执行结果信息 String reMsg = ""; if (VateParams(consumptionRequest)) { - //先获取这个业务关联的扣费记录 - List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); - Long hospitalId = consumptionRequest.getHospitalId(); - - //1.先检查是否已经扣费 - if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { - //2.没有扣费,检查是否已经预扣费 - if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { - //2.1.没有预扣,查询余额 - Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),hospitalId,consumptionRequest.getDepartmentId()); - if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { - //2.2.余额充足 获取要扣的套餐 写预扣费记录 - if (beforeConsumption(consumptionRequest)) { - //预扣费成功 - 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 = vateMap.get("vateMsg").toString(); - bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; - return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); - } - } - if (consumptionBusiess(consumptionRequest, consumptionRecordList)) { - reMsg = "该业务扣费成功!"; + //是否开通单次支付 + if (departmentIsPay(consumptionRequest)) { + //是否支付成功 + if (departmentPayStatus(consumptionRequest)) { + //预扣费成功 + reMsg = "单次支付模拟扣费成功!"; bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; + //消息队列通知 + MessageToBI(consumptionRequest); } else { - isSuccess = false; - reMsg = "该业务扣费失败!"; + reMsg = "单次支付未成功,不允许扣费!"; bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; } } else { - //已经扣费 - reMsg = "该业务已经扣费!"; - bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; + //先获取这个业务关联的扣费记录 + List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); + Long hospitalId = consumptionRequest.getHospitalId(); + + //1.先检查是否已经扣费 + if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { + //2.没有扣费,检查是否已经预扣费 + if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { + //2.1.没有预扣,查询余额 + Map<String, Object> vateMap = VateUserNowProduct(consumptionRequest.getConsumptionCount(), hospitalId, consumptionRequest.getDepartmentId()); + if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { + //2.2.余额充足 获取要扣的套餐 写预扣费记录 + if (beforeConsumption(consumptionRequest)) { + //预扣费成功 + 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 = vateMap.get("vateMsg").toString(); + bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; + return ResultReturn(consumptionRequest, bcode, ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); + } + } + if (consumptionBusiess(consumptionRequest, consumptionRecordList)) { + reMsg = "该业务扣费成功!"; + bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; + } else { + isSuccess = false; + reMsg = "该业务扣费失败!"; + bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; + } + } else { + //已经扣费 + reMsg = "该业务已经扣费!"; + bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; + } } } else { isSuccess = false; reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode, recordType, reMsg, isSuccess); } /** @@ -239,126 +274,124 @@ //业务执行结果信息 String reMsg = ""; if (VateParams(consumptionRequest)) { - //先获取这个业务关联的扣费记录 - List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); - //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&&f.getProOrderDetailId()>0).collect(Collectors.toList()).get(0); - //把占用的套餐id还回去 - Long tempProOrderDetailId=consumptionRecord.getProOrderDetailId(); - consumptionRecord.setProOrderDetailId(0L); - consumptionRecord.setUpdateTime(new Date()); - if (SaveConsumptionRecord(consumptionRecord)) - { - //退预扣记录 - ConsumptionRecord consumptionRecordNew = new ConsumptionRecord(); - consumptionRecordNew.setBusinessCode(ConsumptionConstant.BUSINESS_CODE_RETURN_BEFORE_DEDUCTION); - consumptionRecordNew.setBusinessId(consumptionRequest.getBusinessId()); - consumptionRecordNew.setConsumptionCount(0-consumptionRequest.getConsumptionCount()); - consumptionRecordNew.setRecordType(ConsumptionConstant.RETURN_BEFORE_DEDUCTION); - consumptionRecordNew.setProOrderDetailId(tempProOrderDetailId); - consumptionRecordNew.setLastRecordId(consumptionRecord.getId()); - if (SaveConsumptionRecord(consumptionRecordNew)) - { - isSuccess=true; - reMsg = "有预扣,写退还预扣成功!"; - bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_BEFORE_DEDUCTION; - } - else - { - reMsg = "写退还预扣失败!"; - bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; - } - } - else{ - reMsg = "更新预扣费记录失败!"; - bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; - } - } - else - { - reMsg = "没有相关预扣记录!"; - bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; + //是否开通单次支付 + if (departmentIsPay(consumptionRequest)) { + //是否支付成功 + if (departmentPayStatus(consumptionRequest)) { + //预扣费成功 + reMsg = "单次支付模拟退还扣费成功!"; + bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_DEDUCTION; + } else { + reMsg = "单次支付未成功,不允许退扣费!"; + bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; } } else { - recordType=ConsumptionConstant.RETURN_DEDUCTION; - //3.有扣费记录 这种情况的流程,实际业务中不会出现,但理论上应该这样处理 - //3.1 退还账户 - //获取预扣的时候占住的套餐id - ConsumptionRecord consumptionRecord = consumptionRecordList.stream().filter(f -> f.getRecordType() == ConsumptionConstant.DEDUCTION).collect(Collectors.toList()).get(0); - if (consumptionRecord != null) { - ProductOrderDetail productOrderDetail = productOrderDetailService.getById(consumptionRecord.getProOrderDetailId()); - if (productOrderDetail != null) { - //退还金额 - productOrderDetail.setAilightCount(productOrderDetail.getAilightCount()+consumptionRecord.getConsumptionCount()); - productOrderDetail.setUpdateTime(new Date()); - //退费 - boolean consumptionRe = productOrderDetailService.saveOrUpdate(productOrderDetail); - if (consumptionRe) { - //更新扣费记录 还回占用套餐 - 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; - } + //先获取这个业务关联的扣费记录 + List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); + //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 && f.getProOrderDetailId() > 0).collect(Collectors.toList()).get(0); + //把占用的套餐id还回去 + Long tempProOrderDetailId = consumptionRecord.getProOrderDetailId(); + consumptionRecord.setProOrderDetailId(0L); + consumptionRecord.setUpdateTime(new Date()); + if (SaveConsumptionRecord(consumptionRecord)) { + //退预扣记录 + ConsumptionRecord consumptionRecordNew = new ConsumptionRecord(); + consumptionRecordNew.setBusinessCode(ConsumptionConstant.BUSINESS_CODE_RETURN_BEFORE_DEDUCTION); + consumptionRecordNew.setBusinessId(consumptionRequest.getBusinessId()); + consumptionRecordNew.setConsumptionCount(0 - consumptionRequest.getConsumptionCount()); + consumptionRecordNew.setRecordType(ConsumptionConstant.RETURN_BEFORE_DEDUCTION); + consumptionRecordNew.setProOrderDetailId(tempProOrderDetailId); + consumptionRecordNew.setLastRecordId(consumptionRecord.getId()); + consumptionRecordNew.setDiaId(consumptionRequest.getDiaId()); + if (SaveConsumptionRecord(consumptionRecordNew)) { + isSuccess = true; + reMsg = "有预扣,写退还预扣成功!"; + bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_BEFORE_DEDUCTION; + } else { + reMsg = "写退还预扣失败!"; + bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; } - else - { - //更新扣费失败 - reMsg = "更新扣费失败!"; - bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; - } - } - else - { - //退费失败 - reMsg = "退还扣费失败!"; + } else { + reMsg = "更新预扣费记录失败!"; bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; } + } else { + reMsg = "没有相关预扣记录!"; + bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; } - else - { - reMsg = "无相关套餐数据!"; + } else { + recordType = ConsumptionConstant.RETURN_DEDUCTION; + //3.有扣费记录 这种情况的流程,实际业务中不会出现,但理论上应该这样处理 + //3.1 退还账户 + //获取预扣的时候占住的套餐id + ConsumptionRecord consumptionRecord = consumptionRecordList.stream().filter(f -> f.getRecordType() == ConsumptionConstant.DEDUCTION).collect(Collectors.toList()).get(0); + if (consumptionRecord != null) { + ProductOrderDetail productOrderDetail = productOrderDetailService.getById(consumptionRecord.getProOrderDetailId()); + if (productOrderDetail != null) { + //退还金额 + productOrderDetail.setAilightCount(productOrderDetail.getAilightCount() + consumptionRecord.getConsumptionCount()); + productOrderDetail.setUpdateTime(new Date()); + //退费 + boolean consumptionRe = productOrderDetailService.saveOrUpdate(productOrderDetail); + if (consumptionRe) { + //更新扣费记录 还回占用套餐 + 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()); + consumptionRecordNew.setDiaId(consumptionRequest.getDiaId()); + if (SaveConsumptionRecord(consumptionRecordNew)) { + //写退费记录成功 + isSuccess = true; + reMsg = "退还扣费成功!"; + bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_DEDUCTION; + } else { + reMsg = "退还扣费失败!"; + bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; + } + } else { + //更新扣费失败 + reMsg = "更新扣费失败!"; + bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; + } + } else { + //退费失败 + reMsg = "退还扣费失败!"; + bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; + } + } else { + reMsg = "无相关套餐数据!"; + bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; + } + } else { + reMsg = "无相关扣费数据!"; bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; } - } - else - { - reMsg = "无相关扣费数据!"; - bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; } } } else { reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode, recordType, reMsg, isSuccess); } /** * 发起人工读片-调用 + * * @param consumptionRequest 请求的数据实体 * @return */ @@ -374,60 +407,74 @@ //业务执行结果信息 String reMsg = ""; if (VateParams(consumptionRequest)) { - //先获取这个业务关联的扣费记录 - List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); - //1.先检查是否已经扣费 - if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { - //2.没有扣费,检查是否已经预扣费 - if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { - //3.没有预扣,查询余额 - Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId()); - if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { - //4.余额充足 获取要扣的套餐 写预扣费记录 - if (!beforeConsumption(consumptionRequest)) { - //预扣费执行失败 - reMsg = "预扣费执行失败!"; - bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; - return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); - } - else - { - //发起了一个新的预扣,需要更新扣费业务数据列表 - consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); - } - } else { - //余额不足 - reMsg = vateMap.get("vateMsg").toString(); - bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; - return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); - } + //是否开通单次支付 + if (departmentIsPay(consumptionRequest)) + { + //是否支付成功 + if (departmentPayStatus(consumptionRequest)) { + //预扣费成功 + reMsg = "单次支付模拟已经扣费成功!"; + bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; + //消息队列通知 + MessageToBI(consumptionRequest); + } else { + reMsg = "单次支付未成功,不允许业务进行!"; + bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; } - //扣费业务 - isSuccess= consumptionBusiess(consumptionRequest,consumptionRecordList); - if (isSuccess) { + } + else { + //先获取这个业务关联的扣费记录 + List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); + //1.先检查是否已经扣费 + if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { + //2.没有扣费,检查是否已经预扣费 + if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { + //3.没有预扣,查询余额 + Map<String, Object> vateMap = VateUserNowProduct(consumptionRequest.getConsumptionCount(), consumptionRequest.getHospitalId(), consumptionRequest.getDepartmentId()); + if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { + //4.余额充足 获取要扣的套餐 写预扣费记录 + if (!beforeConsumption(consumptionRequest)) { + //预扣费执行失败 + reMsg = "预扣费执行失败!"; + bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; + return ResultReturn(consumptionRequest, bcode, ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); + } else { + //发起了一个新的预扣,需要更新扣费业务数据列表 + consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); + } + } else { + //余额不足 + reMsg = vateMap.get("vateMsg").toString(); + 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; } - else - { - reMsg = "该业务扣费失败!"; - bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; - } - } else { - isSuccess = true; - //已经扣费 - reMsg = "该业务已经扣费!"; - bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; } } else { reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode, recordType, reMsg, isSuccess); } /** * 扣费业务(扣费 更新预扣 写扣费记录) + * * @param consumptionRequest 请求参数 * @param consumptionRecordList 扣费业务数据 * @return @@ -443,7 +490,7 @@ productOrderDetail.setAilightCount(productOrderDetail.getAilightCount() - consumptionRequest.getConsumptionCount()); } else { //要是被别人已经用了,就要重新找套餐 - productOrderDetail = deductionDepartmentProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId()); + productOrderDetail = deductionDepartmentProduct(consumptionRequest.getConsumptionCount(), consumptionRequest.getHospitalId(), consumptionRequest.getDepartmentId()); if (productOrderDetail == null) { logger.info("业务编号:【{}】无可用套餐!", consumptionRequest.getBusinessId()); return false; @@ -464,6 +511,7 @@ consumptionRecordNew.setRecordType(ConsumptionConstant.DEDUCTION); consumptionRecordNew.setProOrderDetailId(productOrderDetail.getId()); consumptionRecordNew.setLastRecordId(consumptionRecord.getId()); + consumptionRecordNew.setDiaId(consumptionRequest.getDiaId()); consumptionRecordNew.setCreateTime(new Date()); if (SaveConsumptionRecord(consumptionRecordNew)) { @@ -498,7 +546,7 @@ * @param isSuccess 业务执行是否成功 * @return */ - private ResultBody ResultReturn(ConsumptionRequest consumptionRequest, int bcode,int recordType, 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()); @@ -514,11 +562,12 @@ /** * 预扣费业务 + * * @param consumptionRequest 请求参数 * @return */ private Boolean beforeConsumption(ConsumptionRequest consumptionRequest) { - ProductOrderDetail productOrderDetail = deductionDepartmentProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId()); + ProductOrderDetail productOrderDetail = deductionDepartmentProduct(consumptionRequest.getConsumptionCount(), consumptionRequest.getHospitalId(), consumptionRequest.getDepartmentId()); if (productOrderDetail != null) { ConsumptionRecord consumptionRecord = new ConsumptionRecord(); consumptionRecord.setBusinessCode(ConsumptionConstant.BUSINESS_CODE_IS_BEFORE_DEDUCTION); @@ -526,6 +575,7 @@ consumptionRecord.setConsumptionCount(consumptionRequest.getConsumptionCount()); consumptionRecord.setRecordType(ConsumptionConstant.BEFORE_DEDUCTION); consumptionRecord.setProOrderDetailId(productOrderDetail.getId()); + consumptionRecord.setDiaId(consumptionRequest.getDiaId()); if (SaveConsumptionRecord(consumptionRecord)) { return true; } else { @@ -546,11 +596,13 @@ String hosId = consumptionRequest.getHospitalId().toString(); String depId = consumptionRequest.getDepartmentId().toString(); String doctorId = consumptionRequest.getDoctorId().toString(); + String diaId = consumptionRequest.getDiaId().toString(); if (StringUtils.isNotBlank(consumptionRequest.getBusinessId()) && consumptionRequest.getConsumptionCount() > 0 && StringUtils.isNotBlank(hosId) && StringUtils.isNotBlank(depId) - && StringUtils.isNotBlank(doctorId)) { + && StringUtils.isNotBlank(doctorId) + && StringUtils.isNotBlank(diaId)) { return true; } else { logger.info("扣费请求参数不完整!"); @@ -563,32 +615,33 @@ /** * 检查余额够不够 + * * @param consumptionCount 要扣的数量 * @return */ - private Map<String,Object> VateUserNowProduct(int consumptionCount,Long hospitalId,Long departmentId) { - Map<String,Object> returnMap=new HashMap<>(); + private Map<String, Object> VateUserNowProduct(int consumptionCount, Long hospitalId, Long departmentId) { + Map<String, Object> returnMap = new HashMap<>(); ResultBody biUserPro = productOrderDetailService.biUserNowProduct(hospitalId, departmentId); if (biUserPro.getCode() == 0) { if (StringUtils.isNotBlank(biUserPro.getData().toString())) { //余额 int userAICount = Integer.parseInt(biUserPro.getData().toString()); if (userAICount >= consumptionCount) { - returnMap.put("vateRe",true); - returnMap.put("vateMsg","余额足够!"); + returnMap.put("vateRe", true); + returnMap.put("vateMsg", "余额足够!"); } else { - returnMap.put("vateRe",false); - returnMap.put("vateMsg","余额不足!"); + returnMap.put("vateRe", false); + returnMap.put("vateMsg", "余额不足!"); logger.info("医院id:【{}】余额不足!", hospitalId); } } else { - returnMap.put("vateRe",false); - returnMap.put("vateMsg","余额获取异常,data为空!"); + returnMap.put("vateRe", false); + returnMap.put("vateMsg", "余额获取异常,data为空!"); logger.error("医院id:【{}】余额获取异常!", hospitalId); } - }else { - returnMap.put("vateRe",false); - returnMap.put("vateMsg","余额获取异常,Code非0!"); + } else { + returnMap.put("vateRe", false); + returnMap.put("vateMsg", "余额获取异常,Code非0!"); logger.info("医院id:【{}】余额获取异常,返回非0!", hospitalId); } return returnMap; @@ -596,10 +649,11 @@ /** * 获取要使用的套餐实体 - * @param consumCount 要使用的数量 + * + * @param consumCount 要使用的数量 * @return */ - private ProductOrderDetail deductionDepartmentProduct(int consumCount,Long hospitalId,Long departmentId) { + private ProductOrderDetail deductionDepartmentProduct(int consumCount, Long hospitalId, Long departmentId) { UserProductDetail userProductDetail = productOrderDetailService.getUserProductDetail(hospitalId, departmentId); //合并集合 userProductDetail.getProductOrderJoinDetailListShare().addAll(userProductDetail.getProductOrderJoinDetailsListDep()); @@ -643,7 +697,7 @@ if (consumptionRecordList != null) { if (consumptionRecordList.size() > 0) { //过滤预扣费的记录 - return consumptionRecordList.stream().filter(f -> f.getRecordType() == recordType&&f.getProOrderDetailId()>0).collect(Collectors.toList()).size() == 1; + return consumptionRecordList.stream().filter(f -> f.getRecordType() == recordType && f.getProOrderDetailId() > 0).collect(Collectors.toList()).size() == 1; } } return false; @@ -651,7 +705,6 @@ /** * 获取一个业务关联的扣费记录 - * * @param businessId 光片的名称/编号 * @return */ @@ -680,18 +733,51 @@ /** * 发消息到消息队列 + * * @return */ //@RabbitListener(queues = "BoneAgeEvaluationData") - private void MessageToBI(ConsumptionRequest consumptionRequest) - { + private void MessageToBI(ConsumptionRequest consumptionRequest) { //发消息到队列 String context = "{\"hospitalId\":\"" + consumptionRequest.getHospitalId() + "\",\"departmentId\":\"" + consumptionRequest.getDepartmentId() + "\",\"doctorId\":\"" + consumptionRequest.getDoctorId() + - "\",\"date\":\"" + DateUtils.formatDate(new Date(),"yyyy-MM-dd")+"\"}"; - rabbitTemplate.convertAndSend(ConsumptionConstant.EXCHANGE_DATA, ConsumptionConstant.ROUTINGKEY_DATA+envName, context); + "\",\"date\":\"" + DateUtils.formatDate(new Date(), "yyyy-MM-dd") + "\"}"; + rabbitTemplate.convertAndSend(ConsumptionConstant.EXCHANGE_DATA, ConsumptionConstant.ROUTINGKEY_DATA + envName, context); - log.error("骨龄评价扣费消息已发送:"+context); + log.error("骨龄评价扣费消息已发送:" + context); + } + + /** + * 查看当前科室是否开通了单次支付 + * + * @param consumptionRequest + * @return + */ + private Boolean departmentIsPay(ConsumptionRequest consumptionRequest) { + PayManager payManager = payManagerService.findByObject(consumptionRequest.getHospitalId(), consumptionRequest.getDepartmentId()); + if (payManager == null) { + return false; + } else { + return payManager.getId() > 0; + } + } + + /** + * 查看当前科室当前诊断id的支付状态是否成功 + * + * @param consumptionRequest + * @return + */ + private Boolean departmentPayStatus(ConsumptionRequest consumptionRequest) { + SaasClientPay saasClientPay = saasClientPayService.findModelByObject(consumptionRequest.getHospitalId(), consumptionRequest.getDepartmentId(), consumptionRequest.getDiaId()); + if (saasClientPay == null) { + return false; + } else { + if (saasClientPay.getPayStatus().equals(PayConstants.ORDER_PAY_SUCEESS)) { + return true; + } + } + return false; } } diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/PayManagerServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/PayManagerServiceImpl.java new file mode 100644 index 0000000..907bed0 --- /dev/null +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/PayManagerServiceImpl.java @@ -0,0 +1,128 @@ +package com.kidgrow.oprationcenter.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.kidgrow.common.constant.CommonConstant; +import com.kidgrow.common.model.PageResult; +import com.kidgrow.common.model.SysUser; +import com.kidgrow.common.service.impl.SuperServiceImpl; +import com.kidgrow.oprationcenter.mapper.PayManagerMapper; +import com.kidgrow.oprationcenter.model.PayManager; +import com.kidgrow.oprationcenter.model.ProductOrder; +import com.kidgrow.oprationcenter.model.ProductOrderDetail; +import com.kidgrow.oprationcenter.service.IPayManagerService; +import com.kidgrow.oprationcenter.service.IProductOrderDetailService; +import com.kidgrow.oprationcenter.service.IProductOrderService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.MapUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> + * @Description: <br> + * @Project: 运营中心<br> + * @CreateDate: Created in 2020-09-21 14:16:18 <br> + * @Author: <a href="411269194@kidgrow.com">houruijun</a> + * @version 1.0 + */ +@Slf4j +@Service +public class PayManagerServiceImpl extends SuperServiceImpl<PayManagerMapper, PayManager> implements IPayManagerService { + + @Autowired + private IProductOrderService productOrderService; + @Autowired + private IProductOrderDetailService productOrderDetailService; + /** + * 列表 + * @param params + * @return + */ + @Override + public PageResult<PayManager> findList(Map<String, Object> params){ + Page<PayManager> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit")); + List<PayManager> list = baseMapper.findList(page, params); + return PageResult.<PayManager>builder().data(list).code(0).count(page.getTotal()).build(); + } + + /** + * 根据PayManager对象当做查询条件进行查询 + * @param payManager + * @return PayManager + */ + @Override + public PayManager findByObject(PayManager payManager){ + return baseMapper.findByObject(payManager); + } + /** + * 查看科室的单次支付功能 如果返回空 则视为未开通 + * @param hospitalId + * @param departmentId + * @return PayManager + */ + @Override + public PayManager findByObject(Long hospitalId,Long departmentId){ + PayManager payManager = new PayManager(); + ProductOrderDetail productOrderDetail= getProductDetail(hospitalId,departmentId); + if (productOrderDetail != null) { + payManager.setDepartmentId(departmentId); + payManager.setHospitalId(hospitalId); + payManager.setIsDel(false); + payManager.setEnabled(true); + PayManager payManagerModel = baseMapper.findByObject(payManager); + return payManagerModel; + } + else + { + return payManager; + } + } + /** + * 获取科室下的一个业务的套餐数据 + * @param hospitalId + * @param departmentId + * @return + */ + @Override + public ProductOrderDetail getProductDetail(Long hospitalId, Long departmentId) + { + ProductOrder productOrder=new ProductOrder(); + productOrder.setHospitalId(hospitalId); + productOrder.setDepartmentId(departmentId); + productOrder.setEnabled(true); + productOrder.setIsDel(false); + ProductOrder productOrderModel=productOrderService.findByObject(productOrder); + if (productOrderModel != null) { + ProductOrderDetail productOrderDetail =new ProductOrderDetail(); + productOrderDetail.setProId(CommonConstant.PAY_USER_PRODUCT_ID); + productOrderDetail.setOrderId(productOrderModel.getId()); + productOrderDetail.setEnabled(true); + productOrderDetail.setIsDel(false); + ProductOrderDetail modelDetail=productOrderDetailService.findByObject(productOrderDetail); + return modelDetail; + } + return null; + } + /** + * 保存单次支付功能数据 + * @param payManager + * @param sysUser + * @return + */ + @Override + public Boolean saveproductOrder(PayManager payManager, SysUser sysUser) + { + Map<String, Object> params = new HashMap<>(); + params.put("hospitalId", payManager.getHospitalId()); + params.put("departmentId", payManager.getDepartmentId()); + params.put("hospitalName", payManager.getHospitalName()); + params.put("departmentName", payManager.getDepartmentName()); + params.put("proId", CommonConstant.PAY_USER_PRODUCT_ID); + boolean isResult = productOrderService.saveProductDetail(params, sysUser); + return isResult; + } +} diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderServiceImpl.java index d631229..93a9485 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderServiceImpl.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderServiceImpl.java @@ -107,7 +107,7 @@ public boolean saveProductDetail(Map<String,Object> params,SysUser sysUser) { //指定套餐数据 - SysProduct sysProduct=sysProductService.getById(CommonConstant.REG_USER_PRODUCT_ID); + SysProduct sysProduct=sysProductService.getById(Long.valueOf(params.get("proId").toString())); if (sysProduct != null) { //订单合同数据 ProductOrder productOrder=new ProductOrder(); diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SaasClientPayServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SaasClientPayServiceImpl.java index b3095f5..ea78e78 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SaasClientPayServiceImpl.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SaasClientPayServiceImpl.java @@ -85,6 +85,22 @@ return baseMapper.findByObject(saasClientPay); } + /** + * 查看一个科室的某个诊断的支付状态 + * @param hospitalId + * @param departmentId + * @param diaId + * @return + */ + @Override + public SaasClientPay findModelByObject(Long hospitalId,Long departmentId,String diaId) { + SaasClientPay saasClientPay = new SaasClientPay(); + saasClientPay.setCreateHospitalDepartid(departmentId.toString()); + saasClientPay.setCreateHospitalId(hospitalId); + saasClientPay.setDiaId(diaId); + return baseMapper.findByObject(saasClientPay); + } + @Override public void updateTypeList(List<String> list) { for (String s : list) { diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/PayManagerMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/PayManagerMapper.xml new file mode 100644 index 0000000..78d1c37 --- /dev/null +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/PayManagerMapper.xml @@ -0,0 +1,82 @@ +<?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.PayManagerMapper"> + <!--定义查询列--> + <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.hospitalId != null and p.hospitalId !=''"> + and hospital_id = #{p.hospitalId} + </if> + <if test="p.hospitalName != null and p.hospitalName !=''"> + and hospital_name = #{p.hospitalName} + </if> + <if test="p.departmentId != null and p.departmentId !=''"> + and department_id = #{p.departmentId} + </if> + <if test="p.departmentName != null and p.departmentName !=''"> + and department_name = #{p.departmentName} + </if> + <if test="p.payPrice != null and p.payPrice !=''"> + and pay_price = #{p.payPrice} + </if> + <if test="p.payKidgrow != null and p.payKidgrow !=''"> + and pay_kidgrow = #{p.payKidgrow} + </if> + <if test="p.payCustom != null and p.payCustom !=''"> + and pay_custom = #{p.payCustom} + </if> + <if test="p.isDel != null and p.isDel !=''"> + and is_del = #{p.isDel} + </if> + <if test="p.enabled != null and p.enabled !=''"> + and enabled = #{p.enabled} + </if> + <if test="p.updateTime != null and p.updateTime !=''"> + and update_time = #{p.updateTime} + </if> + <if test="p.createUserId != null and p.createUserId !=''"> + and create_user_id = #{p.createUserId} + </if> + <if test="p.createUserName != null and p.createUserName !=''"> + and create_user_name = #{p.createUserName} + </if> + <if test="p.updateUserId != null and p.updateUserId !=''"> + and update_user_id = #{p.updateUserId} + </if> + <if test="p.updateUserName != null and p.updateUserName !=''"> + and update_user_name = #{p.updateUserName} + </if> + <if test="p.createTime != null and p.createTime !=''"> + and create_time = #{p.createTime} + </if> + </where> + </sql> + + <!--定义根据-PayManager当作查询条件返回对象--> + <select id="findByObject" resultType="com.kidgrow.oprationcenter.model.PayManager"> + select <include refid="Column_List"/> + from pay_manager + <include refid="where"/> + order by id desc + limit 1 + </select> + + <!--定义根据-PayManager当作查询条件返回对象集合--> + <select id="findList" resultType="com.kidgrow.oprationcenter.model.PayManager"> + select <include refid="Column_List"/> + from pay_manager + <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-server/src/main/java/com/kidgrow/oprationcenter/controller/PayManagerController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/PayManagerController.java new file mode 100644 index 0000000..85e0f7a --- /dev/null +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/PayManagerController.java @@ -0,0 +1,167 @@ +package com.kidgrow.oprationcenter.controller; + +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.oprationcenter.model.PayManager; +import com.kidgrow.oprationcenter.model.ProductOrderDetail; +import com.kidgrow.oprationcenter.service.IPayManagerService; +import com.kidgrow.oprationcenter.service.IProductOrderDetailService; +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.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.BindingResult; +import org.springframework.validation.ObjectError; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + + +/** + * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> + * + * @Description: + * @Project: 运营中心 + * @CreateDate: Created in 2020-09-21 14:16:18 <br> + * @Author: <a href="411269194@kidgrow.com">houruijun</a> + * @version: 1.0 + */ +@Slf4j +@RestController +@RequestMapping("/paymanager") +@Api(tags = "") +public class PayManagerController extends BaseController { + @Autowired + private IPayManagerService payManagerService; + @Autowired + private IProductOrderDetailService productOrderDetailService; + + /** + * 列表 + */ + @ApiOperation(value = "查询列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "page", value = "分页起始位置", required = true, dataType = "Integer"), + @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer") + }) + @GetMapping + public ResultBody<PageResult> list(@RequestParam Map<String, Object> params) { + if (params.size() == 0) { + params.put("page", 1); + params.put("limit", 10); + } + return ResultBody.ok().data(payManagerService.findList(params)); + } + + /** + * 查询 + */ + @ApiOperation(value = "查询") + @GetMapping("/{id}") + public ResultBody findById(@PathVariable Long id) { + PayManager model = payManagerService.getById(id); + return ResultBody.ok().data(model).msg("查询成功"); + } + + /** + * 查询 + */ + @ApiOperation(value = "查询一个科室的单次支付金额") + @GetMapping("/getDepartmentPay") + public ResultBody getDepartmentPay(@RequestParam Long hospitalId, @RequestParam Long departmentId) { + PayManager payManager = new PayManager(); + payManager.setDepartmentId(departmentId); + payManager.setHospitalId(hospitalId); + payManager.setIsDel(false); + payManager.setEnabled(true); + PayManager model = payManagerService.findByObject(payManager); + if (model != null) { + return ResultBody.ok().data(model.getPayPrice()).msg("已开通"); + } + return ResultBody.failed().msg("未开通支付功能"); + } + + /** + * 根据PayManager当做查询条件进行查询 + */ + @ApiOperation(value = "根据PayManager当做查询条件进行查询") + @PostMapping("/query") + public ResultBody findByObject(@RequestBody PayManager payManager) { + PayManager model = payManagerService.findByObject(payManager); + return ResultBody.ok().data(model).msg("查询成功"); + } + /** + * 查询一个科室是否有支付功能 + */ + @ApiOperation(value = "查询一个科室是否有支付功能") + @GetMapping("/departmentIsPay") + public ResultBody departmentIsPay(@RequestParam Long hospitalId, @RequestParam Long departmentId) { + PayManager payManager=payManagerService.findByObject(hospitalId,departmentId); + if (payManager.getId() == null) { + return ResultBody.ok().data(false).msg("未开通单次支付功能"); + } + else + { + return ResultBody.ok().data(true).msg("已开通单次支付功能"); + } + } + + /** + * 新增or更新 + */ + @ApiOperation(value = "保存") + @PostMapping + @Transactional(rollbackFor = {Exception.class}) + public ResultBody save(@Valid @RequestBody PayManager payManager, BindingResult bindingResult, @LoginUser SysUser sysUser) { + 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 (payManager.getId()!=null) { + //修改支付功能 + ProductOrderDetail modelDetail=payManagerService.getProductDetail(payManager.getHospitalId(),payManager.getDepartmentId()); + if(!payManager.getEnabled()&&modelDetail!=null) + { + //支付禁用 禁用套餐 + modelDetail.setEnabled(false); + modelDetail.setIsDel(true); + if(!productOrderDetailService.saveOrUpdate(modelDetail)) + { + return ResultBody.failed().msg("套餐修改失败!支付开通修改失败!"); + } + } + else if(modelDetail==null) + { + Boolean isResult=payManagerService.saveproductOrder(payManager,sysUser); + if (!isResult) { + return ResultBody.failed().msg("套餐充入失败,支付开通失败!"); + } + } + } else { + Boolean isResult=payManagerService.saveproductOrder(payManager,sysUser); + if (!isResult) { + return ResultBody.failed().msg("套餐充入失败!支付开通失败!"); + } + } + boolean v = payManagerService.saveOrUpdate(payManager); + + if (v) { + return ResultBody.ok().data(payManager).msg("保存成功"); + } else { + return ResultBody.failed().msg("保存失败"); + } + } + } +} diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java index 19dda58..bd3005b 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderController.java @@ -1,6 +1,7 @@ package com.kidgrow.oprationcenter.controller; import com.kidgrow.common.annotation.LoginUser; +import com.kidgrow.common.constant.CommonConstant; import com.kidgrow.common.controller.BaseController; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.model.ResultBody; @@ -125,6 +126,7 @@ StringUtils.isNotBlank(params.get("departmentId").toString())&& StringUtils.isNotBlank(params.get("hospitalName").toString())&& StringUtils.isNotBlank(params.get("departmentName").toString())) { + params.put("proId", CommonConstant.REG_USER_PRODUCT_ID); boolean isResult= productOrderService.saveProductDetail(params,sysUser); if (isResult) { return ResultBody.ok().data(isResult).msg("试用套餐充值成功"); diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SaasClientPayController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SaasClientPayController.java index 51ee48c..b6f93e1 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SaasClientPayController.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SaasClientPayController.java @@ -1,5 +1,6 @@ package com.kidgrow.oprationcenter.controller; +import com.kidgrow.common.constant.PayConstants; import com.kidgrow.common.controller.BaseController; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.model.ResultBody; @@ -117,7 +118,18 @@ } } } - + /** + * 查询 支付状态是否为成功 + */ + @ApiOperation(value = "查询一个诊断的支付状态") + @GetMapping("/getDepartmentPay") + public ResultBody getDepartmentPayState(@RequestParam Long hospitalId, @RequestParam Long departmentId, @RequestParam String diaId) { + SaasClientPay model = saasClientPayService.findModelByObject(hospitalId,departmentId,diaId); + if (model != null) { + return ResultBody.ok().data(model.getPayStatus().equals(PayConstants.ORDER_PAY_SUCEESS)).msg("查询成功"); + } + return ResultBody.failed().data(false).msg("没有相关数据"); + } /** * 删除 */ 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 133bc9c..e2fab01 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 @@ -91,6 +91,7 @@ - product_order_detail - product_order_record - saas_client_pay + - pay_manager ignoreSqls: - com.kidgrow.usercenter.mapper.SysRoleMapper.findAll - com.kidgrow.oprationcenter.mapper.ConsumptionRecordMapper.findDetailList diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysUserMapper.xml b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysUserMapper.xml index 07d25a1..f64ca97 100644 --- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysUserMapper.xml +++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysUserMapper.xml @@ -90,6 +90,7 @@ LEFT JOIN sys_role ROLE ON RU.role_id = ROLE.id WHERE USERS.is_del = 0 + and USERS.enabled = 1 <if test="type == 0"> AND ROLE.`code` IN ( 'salemanager', 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 1ae6ce1..767fc85 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 @@ -283,13 +283,17 @@ */ public static final Long REG_USER_PRODUCT_ID=1000000000000000001L; /** + * 单次支付用户固定使用的套餐id + */ + public static final Long PAY_USER_PRODUCT_ID=1000000000000000000L; + /** * 自主注册的用户合同时长 天 */ public static final Integer REG_USER_CONTRACT_DAY=15; /** * 自主注册的用户合同名 */ - public static final String REG_USER_CONTRACT_NAME="注册用户免费合同"; + public static final String REG_USER_CONTRACT_NAME="自动创建合同"; /** * 自主注册的创建人id */ diff --git a/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/PayConstants.java b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/PayConstants.java new file mode 100644 index 0000000..e886963 --- /dev/null +++ b/kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/PayConstants.java @@ -0,0 +1,21 @@ +package com.kidgrow.common.constant; +/** + * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> + * + * @Description: 支付相关<br> + * @Project: <br> + * @CreateDate: Created in 2020/06/23 16:24 <br> + * @Author: <a href="4345453@kidgrow.com">houruijun</a> + **/ +public interface PayConstants { + //支付状态 + + //0订单创建 + int CREATE_ORDER=0; + //1订单提交到网关 + int SUBMIT_ORDER=1; + //2订单支付成功 + int ORDER_PAY_SUCEESS=2; + //-1订单支付失败 + int ORDER_PAY_FAIL=-1; +} diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/login.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/login.html index ff4eb0e..8bd8345 100644 --- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/login.html +++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/login.html @@ -127,9 +127,6 @@ $('.login-captcha').click(function () { this.src = this.src + '?t=' + (new Date).getTime(); }); - - - }); </script> </body> diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html index 80b9a41..ea1061a 100644 --- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html +++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html @@ -21,24 +21,16 @@ <option value="1">-是-</option> <option value="0">-否-</option> </select> -   - <!-- <select id="isanswer" placeholder="选择医答状态" lay-filter="isanswer"> - <option value="">-是否医答-</option> + <select id="isanswer" placeholder="支付功能" lay-filter="ispay"> + <option value="">-支付功能-</option> <option value="1">-是-</option> <option value="0">-否-</option> </select> -   - <select id="hospitalstate" placeholder="选择医院状态" lay-filter="hospitalstate"> - <option value="">-医院状态-</option> - <option value="0">试用</option> - <option value="1">正式</option> - </select> --> -   - <input id="hosName" class="layui-input search-input" type="text" placeholder="按医院名" />  + <input id="hosName" class="layui-input search-input" type="text" placeholder="按医院名" /> <button id="hospita-btn-search" class="layui-btn icon-btn"><i class="layui-icon permissions" permissions="hospital-get"></i>搜索</button>  <button id="hospital-btn-add" class="layui-btn icon-btn"><i class="layui-icon permissions" - permissions="hospital-save"></i>添加医院/科室</button> + permissions="hospital-save"></i>添加医院/科室</button> </div> <!-- 数据表格 --> @@ -50,8 +42,9 @@ <script type="text/html" id="businessRecords-table-bar"> <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="productdetail-List">套餐</a> <a class="layui-btn layui-btn-xs permissions" permissions="product-rechage" lay-event="pay">充值</a> + <a class="layui-btn layui-btn-xs layui-btn-normal" permissions="product-pay" lay-event="userpay">支付</a> <a class="layui-btn layui-btn-primary layui-btn-xs permissions" permissions="hospital-save" lay-event="edit">修改</a> - <a class="layui-btn layui-btn-danger layui-btn-xs permissions" permissions="hospital-del" lay-event="del">删除科室</a> + <a class="layui-btn layui-btn-danger layui-btn-xs permissions" permissions="hospital-del" lay-event="del">删除</a> </script> <!-- 表格状态列 --> <script type="text/html" id="hospital-tpl-state"> @@ -161,7 +154,7 @@ }, { field: 'hospitalId', - width: 225, + width: 240, align: 'center', toolbar: '#businessRecords-table-bar', title: '操作', @@ -218,6 +211,19 @@ { productdetailShow(obj); } + else if (layEvent === "userpay") { + //充值 + admin.putTempData("t_hospital", data); + admin.popupCenter({ + title: '单次支付功能', + path: 'pages/opration/hospital_pay.html', + area: '500px', + offset: '50px', + finish: function () { + $('#hospita-btn-search').click(); + } + }); + } }); // 搜索按钮点击事件 $('#hospita-btn-search').click(function () { diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_pay.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_pay.html new file mode 100644 index 0000000..e49a159 --- /dev/null +++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital_pay.html @@ -0,0 +1,130 @@ +<form id="pay-form" lay-filter="pay-form" class="layui-form model-form" method="POST"> + <div class="layui-form-item"> + <label class="layui-form-label" style="width: 150px;">医院</label> + <div class="layui-input-block"> + <input name="hospitalName" type="text" class="layui-input" style="width: 200px;"disabled="disabled"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label" style="width: 150px;">科室</label> + <div class="layui-input-block"> + <input name="departmentName" type="text" class="layui-input" style="width: 200px;" disabled="disabled"/> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label" style="width: 150px;">功能状态</label> + <div class="layui-input-block"> + <input type="checkbox" checked="checked" name="enabled" lay-skin="switch" lay-filter="payenabled" + lay-text="启用|停用" /> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label" style="width: 150px;">单次支付金额(元)</label> + <div class="layui-input-block"> + <input name="payPrice" type="text" class="layui-input" maxlength="8" lay-verify="required|number" required + autocomplete="off" style="width: 200px;" /> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label" style="width: 150px;">客户所得(元)</label> + <div class="layui-input-block"> + <input name="payCustom" type="text" autocomplete="off" class="layui-input" maxlength="8" + lay-verify="required|number" required style="width: 200px;" /> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label" style="width: 150px;">喜高所得(元)</label> + <div class="layui-input-block"> + <input name="payKidgrow" type="text" autocomplete="off" class="layui-input" maxlength="8" + lay-verify="required|number" required style="width: 200px;" /> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label"></label> + <div class="layui-input-block"> + 喜高所得=单次支付金额-客户所得 + </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 permissions" permissions="productpay-edit" lay-filter="pay-form-submit" + lay-submit>保存</button> + </div> + <input type="hidden" value="" id="id" name="id" /> + <input type="hidden" value="" id="departmentId" name="departmentId" /> + <input type="hidden" value="" id="hospitalId" name="hospitalId" /> + <input type="hidden" value="" id="departmentName" name="departmentName" /> + <input type="hidden" value="" id="hospitalName" name="hospitalName" /> +</form> +<script> + layui.use(['form', 'table', 'util', 'config', 'admin', 'formSelects'], function () { + var form = layui.form; + var table = layui.table; + var config = layui.config; + var layer = layui.layer; + var util = layui.util; + var admin = layui.admin; + var formSelects = layui.formSelects; + + //回显医院基本数据 + let hospitalData = admin.getTempData('t_hospital'); + form.val('pay-form', hospitalData); + + layer.load(2); + var queryModel = { + hospitalId: hospitalData.hospitalId, + hospitalName: '', + departmentName: '', + payPrice: '', + payKidgrow: '', + payCustom: '', + departmentId: hospitalData.departmentId + }; + admin.req('api-opration/paymanager/query', JSON.stringify(queryModel), function (data) { + layer.closeAll('loading'); + if (0 === data.code) { + queryData = data.data; + if (queryData != null) { + form.val('pay-form', queryData); + } + } + }, 'POST'); + form.render(); + + // 表单提交事件 + form.on('submit(pay-form-submit)', function (data) { + layer.load(2); + if (data.field.enabled === 'on') { + data.field.enabled = true; + } else { + data.field.enabled = false; + } + if (parseInt(data.field.payPrice) - parseInt(data.field.payCustom) == parseInt(data.field + .payKidgrow)) { + admin.req('api-opration/paymanager', JSON.stringify(data.field), function (data) { + if (data.code === 0) { + layer.closeAll('loading'); + layer.msg(data.msg, { + icon: 1, + time: 2000 + }); + admin.finishPopupCenter(); + } else { + layer.closeAll('loading'); + layer.msg(data.msg, { + icon: 2, + time: 2000 + }); + } + }, $('#pay-form').attr('method')); + } else { + layer.closeAll('loading'); + layer.msg("金额分配额有误!(喜高所得=单次支付金额-客户所得)", { + icon: 2, + time: 5000 + }); + } + return false; + }); + }) +</script> \ No newline at end of file -- Gitblit v1.8.0