diff --git a/jianshui-admin/src/main/java/com/jianshui/api/controller/http/income/v1/InvoiceCheckController.java b/jianshui-admin/src/main/java/com/jianshui/api/controller/http/income/v1/InvoiceCheckController.java index a52b413..c32c656 100644 --- a/jianshui-admin/src/main/java/com/jianshui/api/controller/http/income/v1/InvoiceCheckController.java +++ b/jianshui-admin/src/main/java/com/jianshui/api/controller/http/income/v1/InvoiceCheckController.java @@ -114,6 +114,16 @@ public class InvoiceCheckController { ICheckInvoice incomeService = incomeServiceFactory.getService(serviceKey); AjaxResult result = incomeService.checkInvoiceMultil(companyservice, invoiceCheck); + // 2023/11/30 新增扣费逻辑,成功就扣 + if (result.isSuccess()) { + JSONObject resp = result.getJsonData(); + Integer robUser = resp.getInteger("robUserMoney"); + if (robUser != null && robUser >= 1) { + serviceManageService.companyConsume("income", companyservice.getCompanyid(),robUser); + } + } + + String responseAdapterKey = serviceManageService.getResponseAdapterKey("income", companyservice.getCompanyid()); IIncomeResponseService incomeResponseService = incomeResponseFactory.getService(responseAdapterKey); return incomeResponseService.response(result, companyservice, "check_multil"); diff --git a/jianshui-income/src/main/java/com/jianshui/income/service/impl/EleCheckInvoiceImpl.java b/jianshui-income/src/main/java/com/jianshui/income/service/impl/EleCheckInvoiceImpl.java index 79e2270..be5c20d 100644 --- a/jianshui-income/src/main/java/com/jianshui/income/service/impl/EleCheckInvoiceImpl.java +++ b/jianshui-income/src/main/java/com/jianshui/income/service/impl/EleCheckInvoiceImpl.java @@ -282,8 +282,11 @@ public class EleCheckInvoiceImpl implements ICheckInvoice { return AjaxResult.error(errorCode, errorString); } + JSONObject result = new JSONObject(); + result.put("robUserMoney", invoiceCheckList.size()); + return new AjaxResult(200, "批次接收成功!", result); - return AjaxResult.success("批次接收成功!"); +// return AjaxResult.success("批次接收成功!"); } /** diff --git a/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/BillDetailFormatUtil.java b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/BillDetailFormatUtil.java index 8000ea6..86e038c 100644 --- a/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/BillDetailFormatUtil.java +++ b/jianshui-invoice/src/main/java/com/jianshui/invoice/utils/BillDetailFormatUtil.java @@ -144,9 +144,9 @@ public class BillDetailFormatUtil { BillDetail billDetail = JSONObject.parseObject(JSONObject.toJSONString(billDetailRaw), BillDetail.class); Integer fphxz = billDetail.getFphxz(); // 如果是被折扣行,直接返回 - if (fphxz != null && fphxz == 1) { + /*if (fphxz != null && fphxz == 1) { return AjaxResult.error(300, "明细行为被折扣行"); - } + }*/ //如果税率为空,直接返回 if (billDetail.getTaxrate() == null) { return AjaxResult.error("税率为空", billDetail); diff --git a/jianshui-system/src/main/java/com/jianshui/system/service/IServiceManageService.java b/jianshui-system/src/main/java/com/jianshui/system/service/IServiceManageService.java index 111d69b..de7eafa 100644 --- a/jianshui-system/src/main/java/com/jianshui/system/service/IServiceManageService.java +++ b/jianshui-system/src/main/java/com/jianshui/system/service/IServiceManageService.java @@ -88,6 +88,9 @@ public interface IServiceManageService { */ public AjaxResult companyConsume(String serviceKey, Long companyid); + /** 对指定服务进行消费减n */ + public AjaxResult companyConsume(String serviceKey, Long companyid,int num); + /** * 获得入口请求适配器 * diff --git a/jianshui-system/src/main/java/com/jianshui/system/service/impl/ServiceManageServiceImpl.java b/jianshui-system/src/main/java/com/jianshui/system/service/impl/ServiceManageServiceImpl.java index dbf2d43..8cb8bf1 100644 --- a/jianshui-system/src/main/java/com/jianshui/system/service/impl/ServiceManageServiceImpl.java +++ b/jianshui-system/src/main/java/com/jianshui/system/service/impl/ServiceManageServiceImpl.java @@ -151,6 +151,14 @@ public class ServiceManageServiceImpl implements IServiceManageService { setCache(config); } + /** 剩余次数减n */ + private void subNumSurplus(ServiceManage config,int num ) { + config.setSurplus(config.getSurplus() - num); + // 更新记录 + serviceManageMapper.updateSurplus(config); + setCache(config); + } + /** * 清空缓存 */ @@ -249,6 +257,53 @@ public class ServiceManageServiceImpl implements IServiceManageService { } + /** 扣费,根据传入的次数决定扣几次 */ + @Override + public AjaxResult companyConsume(String serviceKey, Long companyid,int num) { + ServiceManage serviceManage = selectServiceManageByCompanyIdAndServiceKey(serviceKey, companyid); + if (serviceManage == null) { + throw new JianshuiNoServiceException("此销方未配置应用服务", serviceKey, companyid); + } + + // 处理扣费逻辑 + // 如果过期时间不为Null + Date expireTime = serviceManage.getExpireTime(); + Date now = DateUtils.getNowDate(); + + // 如果过期了 + if (expireTime != null) { + if (expireTime.getTime() < now.getTime()) { + throw new JianshuiServiceExpireException("服务已过期", serviceKey, companyid); + } + } + + // 免费 + if (StringUtils.equals("0", serviceManage.getServiceMode())) { + // 调用次数 -n + subNumSurplus(serviceManage,num); + return AjaxResult.success("消费成功"); + } + + // 预付费 + if (StringUtils.equals("1", serviceManage.getServiceMode())) { + // 调用次数 -n + if (serviceManage.getSurplus() <= 0) { + throw new JianshuiServiceNoSurplusException("服务次数不足", serviceKey, companyid); + } + subNumSurplus(serviceManage,num); + return AjaxResult.success("消费成功"); + } + + // 定期结算 + if (StringUtils.equals("2", serviceManage.getServiceMode())) { + subNumSurplus(serviceManage,num); + return AjaxResult.success("消费成功"); + } + + return AjaxResult.error("未知的消费模式"); + + } + /** * 获得入口请求适配器 *