Browse Source

账单导入

mac 1 year ago
parent
commit
dffc73e8ab

+ 12 - 11
lhb-basic/lhb-basic-api/src/main/java/com/kxs/lhb/basic/api/vo/admin/bill/BillExcelVO.java

@@ -10,6 +10,7 @@ import lombok.Data;
 
 import java.io.Serial;
 import java.io.Serializable;
+import java.time.LocalDateTime;
 
 
 /**
@@ -33,17 +34,17 @@ public class BillExcelVO implements Serializable {
 	private Long lineNum;
 
 	/**
-	 * 手机号
+	 * 办理号码
 	 */
 	@NotNull(message = "手机号不能为空")
-	@ExcelProperty("手机号")
+	@ExcelProperty("办理号码")
 	private String phone;
 
 	/**
-	 * 账单金额
+	 * 标准资费
 	 */
 	@NotBlank(message = "账单金额不能为空")
-	@ExcelProperty("账单金额")
+	@ExcelProperty("标准资费")
 	private String billFee;
 
 	/**
@@ -51,21 +52,21 @@ public class BillExcelVO implements Serializable {
 	 */
 	@NotNull(message = "订单号不能为空")
 	@ExcelProperty("订单号")
-	private Integer orderSn;
+	private String orderSn;
 
 	/**
-	 * 账单月份
+	 * 下单时间
 	 */
 	@NotNull(message = "账单月份不能为空")
-	@ExcelProperty("账单月份")
-	private Integer billMonth;
+	@ExcelProperty("下单时间")
+	private LocalDateTime billMonth;
 
 	/**
-	 * 商品名称
+	 * 套餐名称
 	 */
 	@NotNull(message = "商品名称不能为空")
-	@ExcelProperty("商品名称")
-	private Integer goodsName;
+	@ExcelProperty("套餐名称")
+	private String goodsName;
 
 
 

+ 1 - 1
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/controller/admin/SysNotifyController.java

@@ -57,7 +57,7 @@ public class SysNotifyController {
      */
     @SysLog("通知记录表新增")
     @PostMapping("/notify")
-    @PreAuthorize("@pms.hasPermission('lhb_notify_notify')")
+//    @PreAuthorize("@pms.hasPermission('lhb_notify_notify')")
     public R notify(@Valid @RequestBody SysNotifyDTO param) {
 
         return R.ok(lhbNotifyService.notifyBatchData(param));

+ 1 - 1
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/mq/RabbiLhbOrderQueueListener.java

@@ -131,8 +131,8 @@ public class RabbiLhbOrderQueueListener {
 			//推送订单
 			boolean result = MarkingModel.builder()
 					.content(notify)
-					.sign(serverPrivateKey)
 					.encrypt(isvInfo.getPublicKey())
+					.sign(serverPrivateKey)
 					.execute(isvInfo.getOrderUrl());
 			if (result) {
 				log.info("交易订单{}推送成功", parse.getNotifyId());

+ 2 - 2
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/mq/model/MarkingModel.java

@@ -6,6 +6,7 @@ import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.kxs.lhb.basic.api.model.LhbNotify;
 import com.kxs.lhb.basic.api.util.RsaUtil;
+import com.kxs.lhb.system.api.util.ParamResolver;
 import lombok.Data;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
@@ -54,7 +55,6 @@ public class MarkingModel {
                     +  "&isvNo=" + markingModel.getIsvNo()
                     +  "&content=" + markingModel.getContent();
             this.markingModel.setSign(RsaUtil.sign(privateKey, signStr));
-
             return this;
         }
 
@@ -68,7 +68,7 @@ public class MarkingModel {
 
         public boolean execute(String url) {
 
-            log.info("Marking Request: {}", markingModel);
+            log.info("Marking Request: {}", JSONUtil.toJsonStr(markingModel));
             String response = HttpRequest.post(url)
                     .body(JSONUtil.toJsonStr(markingModel))
                     .execute().body();

+ 20 - 3
lhb-basic/lhb-basic-biz/src/main/java/com/kxs/lhb/basic/biz/service/impl/LhbOrderRechargeServiceImpl.java

@@ -3,15 +3,20 @@ package com.kxs.lhb.basic.biz.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.util.NumberUtil;
+import cn.hutool.core.util.ReUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.kxs.common.core.constant.CommonConstants;
 import com.kxs.common.excel.converters.ImportAsyncInfo;
 import com.kxs.common.excel.vo.ErrorMessage;
+import com.kxs.lhb.basic.api.constant.enums.OrderStatusEnum;
 import com.kxs.lhb.basic.api.model.LhbArea;
 import com.kxs.lhb.basic.api.model.LhbOrder;
 import com.kxs.lhb.basic.api.model.LhbOrderRecharge;
+import com.kxs.lhb.basic.api.util.TotalDateUtil;
 import com.kxs.lhb.basic.api.vo.admin.bill.BillExcelVO;
 import com.kxs.lhb.basic.biz.mapper.LhbOrderRechargeMapper;
 import com.kxs.lhb.basic.biz.mq.model.params.BindNotify;
@@ -26,9 +31,11 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.BindingResult;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
@@ -50,6 +57,8 @@ public class LhbOrderRechargeServiceImpl extends MPJBaseServiceImpl<LhbOrderRech
 
     private final LhbNotifyService notifyService;
 
+    private final static String REGEX = "\\d+\\.\\d+";
+
     @Override
     public void importBill(List<BillExcelVO> billExcelList, String uuid, BindingResult bindingResult) {
         //上传内容信息
@@ -62,18 +71,26 @@ public class LhbOrderRechargeServiceImpl extends MPJBaseServiceImpl<LhbOrderRech
             if (recharge != null) {
                 errorMsg.add(billExcelVO.getOrderSn() + "账单已导入!");
             }
+            LhbOrder order = orderService.getOne(Wrappers.lambdaQuery(LhbOrder.class)
+                    .eq(LhbOrder::getStatus, OrderStatusEnum.PAY.getCode())
+                    .eq(LhbOrder::getIsAct, CommonConstants.SUCCESS)
+                    .eq(LhbOrder::getMakeMobile, billExcelVO.getPhone()).last("limit 1"));
+            if (order == null) {
+                errorMsg.add(billExcelVO.getPhone() + "号码不存在!");
+            }
             if (CollUtil.isNotEmpty(errorMsg)) {
                 ErrorMessage errorMessage = new ErrorMessage(billExcelVO.getLineNum(), errorMsg);
                 importAsyncInfo.errAdd(1);
                 importAsyncInfo.errListAdd(errorMessage);
                 importAsyncInfo.doneAdd(1);
-            }
-            if (CollUtil.isEmpty(errorMsg)) {
+            } else {
                 LhbOrderRecharge orderRecharge = new LhbOrderRecharge();
                 BeanUtils.copyProperties(billExcelVO, orderRecharge);
-                LhbOrder order = orderService.getOne(Wrappers.lambdaQuery(LhbOrder.class).eq(LhbOrder::getMakeMobile, billExcelVO.getPhone()));
+                Optional<String> first = ReUtil.findAll(REGEX, billExcelVO.getBillFee(), 0).stream().findFirst();
+                first.ifPresent(s -> orderRecharge.setBillFee(NumberUtil.mul(new BigDecimal(s), 100)));
                 orderRecharge.setIfCode(order.getIfCode());
                 orderRecharge.setIsvNo(order.getIsvNo());
+                orderRecharge.setBillMonth(TotalDateUtil.getMonthNumber(billExcelVO.getBillMonth().toLocalDate()));
                 save(orderRecharge);
 
                 OrderNotify orderNotify = OrderNotify.builder()