forked from kidgrow-microservices-platform

kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java
@@ -6,6 +6,7 @@
import com.kidgrow.common.model.PageResult;
import com.kidgrow.common.model.ResultBody;
import com.kidgrow.common.service.impl.SuperServiceImpl;
import com.kidgrow.common.utils.AesUtils;
import com.kidgrow.common.utils.DateUtils;
import com.kidgrow.common.utils.StringUtils;
import com.kidgrow.oprationcenter.mapper.ConsumptionRecordMapper;
@@ -125,6 +126,7 @@
                } else {
                    reMsg = "单次支付未成功,不允许预扣费!";
                    bcode = ConsumptionConstant.BUSINESS_CODE_FAIL;
                    isSuccess = false;
                }
            } else {
                //先获取这个业务关联的扣费记录
@@ -202,6 +204,7 @@
                } else {
                    reMsg = "单次支付未成功,不允许扣费!";
                    bcode = ConsumptionConstant.BUSINESS_CODE_FAIL;
                    isSuccess=false;
                }
            } else {
                //先获取这个业务关联的扣费记录
@@ -264,7 +267,7 @@
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public ResultBody consumptionAIFail(ConsumptionRequest consumptionRequest) {
    public ResultBody consumptionAIFail(ConsumptionRequest consumptionRequest)  {
        //默认的业务返回码
        int bcode = -1;
        //记录类型
@@ -281,6 +284,7 @@
                    //预扣费成功
                    reMsg = "单次支付模拟退还扣费成功!";
                    bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_DEDUCTION;
                    isSuccess=true;
                } else {
                    reMsg = "单次支付未成功,不允许退扣费!";
                    bcode = ConsumptionConstant.BUSINESS_CODE_FAIL;
@@ -335,6 +339,13 @@
                        if (productOrderDetail != null) {
                            //退还金额
                            productOrderDetail.setAilightCount(productOrderDetail.getAilightCount() + consumptionRecord.getConsumptionCount());
                            // 对于读片量进行加密
                            try {
                                productOrderDetail.setAilightCountEncryption(AesUtils.encrypt(productOrderDetail.getAilightCount().toString()));
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                            productOrderDetail.setUpdateTime(new Date());
                            //退费
                            boolean consumptionRe = productOrderDetailService.saveOrUpdate(productOrderDetail);
@@ -415,6 +426,7 @@
                    //预扣费成功
                    reMsg = "单次支付模拟已经扣费成功!";
                    bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION;
                    isSuccess = true;
                    //消息队列通知
                    MessageToBI(consumptionRequest);
                } else {
@@ -500,6 +512,12 @@
                productOrderDetail.setAilightCount(productOrderDetail.getAilightCount() - consumptionRequest.getConsumptionCount());
            }
        }
        // 对于读片量进行加密
        try {
            productOrderDetail.setAilightCountEncryption(AesUtils.encrypt(productOrderDetail.getAilightCount().toString()));
        } catch (Exception e) {
            e.printStackTrace();
        }
        //3.1扣费!
        boolean consumptionRe = productOrderDetailService.saveOrUpdate(productOrderDetail);
        if (consumptionRe) {
@@ -516,7 +534,7 @@
            if (SaveConsumptionRecord(consumptionRecordNew)) {
                //3.3 扣费成功 如果套餐id变化,则更新预扣费的套餐id
                if (consumptionRecordNew.getProOrderDetailId() != consumptionRecord.getProOrderDetailId()) {
                if (!consumptionRecordNew.getProOrderDetailId().equals(consumptionRecord.getProOrderDetailId())) {
                    consumptionRecord.setProOrderDetailId(productOrderDetail.getId());
                    consumptionRecord.setUpdateTime(new Date());
                    if (!SaveConsumptionRecord(consumptionRecord)) {
@@ -659,13 +677,17 @@
    private ProductOrderDetail deductionDepartmentProduct(int consumCount, Long hospitalId, Long departmentId) {
        UserProductDetail userProductDetail = productOrderDetailService.getUserProductDetail(hospitalId, departmentId);
        //合并集合
        userProductDetail.getProductOrderJoinDetailListShare().addAll(userProductDetail.getProductOrderJoinDetailsListDep());
        userProductDetail.getProductOrderJoinDetailListShare()
                .addAll(userProductDetail.getProductOrderJoinDetailsListDep());
        List<ProductOrderJoinDetail> productOrderJoinDetailList = userProductDetail.getProductOrderJoinDetailListShare();
        if (productOrderJoinDetailList.size() > 0) {
            //合并后按id排序并筛除已用完的套餐
            List<ProductOrderJoinDetail> productOrderJoinDetailsNewList = productOrderJoinDetailList.stream().filter(f -> f.getAilightCount() >= consumCount).sorted(Comparator.comparing(ProductOrderJoinDetail::getId)).collect(Collectors.toList());
            List<ProductOrderJoinDetail> productOrderJoinDetailsNewList = productOrderJoinDetailList
                    .stream().filter(f -> f.getAilightCount() >= consumCount).collect(Collectors.toList());
            //要使用的套餐信息
            ProductOrderDetail productOrderDetail = productOrderDetailService.getById(productOrderJoinDetailsNewList.get(0).getId());
            Long firstId=productOrderJoinDetailsNewList.get(0).getId();
            logger.info("扣费要使用的套餐ID是id:【{}】", firstId);
            ProductOrderDetail productOrderDetail = productOrderDetailService.getById(firstId);
            return productOrderDetail;
        }
        return null;
@@ -760,6 +782,7 @@
    private Boolean departmentIsPay(ConsumptionRequest consumptionRequest) {
        log.info("查看当前科室是否开通了单次支付请求参数:"+consumptionRequest.toString());
        PayManager payManager = payManagerService.findByObject(consumptionRequest.getHospitalId(), consumptionRequest.getDepartmentId());
        log.info("查看当前科室是否开通了单次支付请求查询后数据:"+payManager.toString());
        if (payManager == null) {
            return false;
        } else {
@@ -776,6 +799,7 @@
    private Boolean departmentPayStatus(ConsumptionRequest consumptionRequest) {
        log.info("查看当前科室当前诊断id的支付状态是否成功请求参数:"+consumptionRequest.toString());
        SaasClientPay saasClientPay = saasClientPayService.findModelByObject(consumptionRequest.getHospitalId(), consumptionRequest.getDepartmentId(), consumptionRequest.getDiaId());
        log.info("查看当前科室当前诊断id的支付状态是否成功查询后数据:"+saasClientPay.toString());
        if (saasClientPay == null) {
            return false;
        } else {