Ver código fonte

对公转账流程

lishiqiang 2 semanas atrás
pai
commit
852a40ff95

+ 38 - 57
ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/service/distributorselfrecharge/DistributorSelfRechargeServiceImpl.java

@@ -82,7 +82,6 @@ public class DistributorSelfRechargeServiceImpl implements DistributorSelfRechar
     private ConfigApi configApi;
 
 
-
     @Override
     public DistributorSelfRechargeSimpleRespVO createDistributorSelfRecharge(DistributorSelfRechargeSaveReqVO createReqVO) {
         LoginUser loginUser = otaAuthUtils.getAgencyLoginUser();
@@ -95,7 +94,7 @@ public class DistributorSelfRechargeServiceImpl implements DistributorSelfRechar
         // 处理对公转账逻辑
         if (createReqVO.getPayType() == 9) {
             // 对公转账逻辑:仅保存数据,不调用支付接口
-            return handlePublicTransfer(createReqVO, loginType,respDTO);
+            return handlePublicTransfer(createReqVO, loginType, respDTO);
         } else {
             // 插入
             DistributorSelfRechargeDO distributorSelfRecharge = BeanUtils.toBean(createReqVO, DistributorSelfRechargeDO.class);
@@ -135,7 +134,7 @@ public class DistributorSelfRechargeServiceImpl implements DistributorSelfRechar
 
     private DistributorSelfRechargeSimpleRespVO handlePublicTransfer(
             DistributorSelfRechargeSaveReqVO createReqVO,
-            LoginTypeRespVO loginType,AdminUserRespDTO respDTO) {
+            LoginTypeRespVO loginType, AdminUserRespDTO respDTO) {
         Long distributorId = loginType.getDistributorId();
         // 1. 校验分销商信息
         DistributorDO distributor = distributorService.getDistributor(loginType.getDistributorId());
@@ -146,22 +145,6 @@ public class DistributorSelfRechargeServiceImpl implements DistributorSelfRechar
         // 2. 生成对公账号
         String bankAccount = "717902731210902" + distributor.getCmbShortNo();
 
-        // 3. 构建充值记录对象
-        /*DistributorSelfRechargeDO rechargeDO = new DistributorSelfRechargeDO();
-        org.springframework.beans.BeanUtils.copyProperties(createReqVO, rechargeDO);
-        rechargeDO.setId(IdWorker.getId());
-        rechargeDO.setDistributorId(loginType.getDistributorId());
-        rechargeDO.setRechargeState(0); // 初始状态:待处理
-        rechargeDO.setAccountId(respDTO.getId());
-        rechargeDO.setAccountName(respDTO.getNickname());
-        rechargeDO.setCreator(respDTO.getId().toString());
-        rechargeDO.setTenantId(loginType.getTenantId());*/
-
-        // 4. 保存到数据库
-        /*TenantUtils.execute(loginType.getTenantId(), () -> {
-            distributorSelfRechargeMapper.insert(rechargeDO);
-        });*/
-
         // 5. 构造响应
         DistributorSelfRechargeSimpleRespVO respVO = new DistributorSelfRechargeSimpleRespVO();
         respVO.setDistributorId(distributorId);
@@ -263,25 +246,25 @@ public class DistributorSelfRechargeServiceImpl implements DistributorSelfRechar
     @Override
     public void abcRemittance(DistributorDO distributor) {
         String cardNo = distributor.getCmbShortNo();
-        log.info("abc对公转账充值");
+        log.error("abc对公转账充值查询{}", cardNo);
         String host = configApi.getPlatformConfigValueByKey("dgConfig_ip");
         String portStr = configApi.getPlatformConfigValueByKey("dgConfig_port");
         String yqtCard = configApi.getPlatformConfigValueByKey("dgConfig_card");
         String day = configApi.getPlatformConfigValueByKey("dgConfig_day");
         int ofday = 1;
-        if(StringUtils.isNotBlank(day)){
+        if (StringUtils.isNotBlank(day)) {
             try {
                 ofday = Integer.parseInt(day);
-            }catch (Exception ignored){
+            } catch (Exception ignored) {
 
             }
         }
 
         int port = 15999;
-        if(StringUtils.isNotBlank(portStr)){
+        if (StringUtils.isNotBlank(portStr)) {
             try {
                 port = Integer.parseInt(portStr);
-            }catch (Exception ignored){
+            } catch (Exception ignored) {
 
             }
         }
@@ -293,13 +276,13 @@ public class DistributorSelfRechargeServiceImpl implements DistributorSelfRechar
             // 构造请求方流水号 (保证唯一性)
             Random random = new Random();
             int randomNumber2 = random.nextInt(1000) + 1000;
-            String reqSeqNo = new SimpleDateFormat("yyyyMMddHHmmss").format(now) + ""+randomNumber2+"";
+            String reqSeqNo = new SimpleDateFormat("yyyyMMddHHmmss").format(now) + randomNumber2;
 
             // 1. 获取当前时间,用于组装公共包头流水与日期
-            Long s1 = System.currentTimeMillis();
-            Long s0 = s1-172800000;
+            long s1 = System.currentTimeMillis();
+            long s0 = s1 - 172800000;
 
-            Date sDate = DateUtil.offsetDay( now,-ofday);
+            Date sDate = DateUtil.offsetDay(now, -ofday);
             String endDate = new SimpleDateFormat("yyyyMMdd").format(now);
             String startDate = new SimpleDateFormat("yyyyMMdd").format(sDate);
 
@@ -316,14 +299,14 @@ public class DistributorSelfRechargeServiceImpl implements DistributorSelfRechar
                     "  <ReqTime>" + reqTime + "</ReqTime>\n" +
                     "  <Sign></Sign>\n" +
                     "  <Corp>\n" +
-                    "    <StartDate>"+startDate+"</StartDate>\n" +
-                    "    <EndDate>"+endDate+"</EndDate>\n" +
+                    "    <StartDate>" + startDate + "</StartDate>\n" +
+                    "    <EndDate>" + endDate + "</EndDate>\n" +
                     "  </Corp>\n" +
                     "  <Cmp>\n" +
                     "    <DbProv>17</DbProv>\n" +
-                    "    <StartTime>"+s0+"</StartTime>\n" +
-                    "    <DbAccNo>"+yqtCard+"</DbAccNo>\n" +
-                    "    <DbLogAccNo>"+cardNo+"</DbLogAccNo>\n" +
+                    "    <StartTime>" + s0 + "</StartTime>\n" +
+                    "    <DbAccNo>" + yqtCard + "</DbAccNo>\n" +
+                    "    <DbLogAccNo>" + cardNo + "</DbLogAccNo>\n" +
                     "    <DbCur>01</DbCur>\n" +
                     "    <LogAccBkOInd>0</LogAccBkOInd>\n" +
                     "  </Cmp>\n" +
@@ -355,7 +338,7 @@ public class DistributorSelfRechargeServiceImpl implements DistributorSelfRechar
             out.write(fullPacket);
             out.flush();
             System.out.println("请求报文发送成功,等待响应...\n");
-            System.out.println("请求报文发送成功,等待响应...\n"+new String(fullPacket, "GBK"));
+            System.out.println("请求报文发送成功,等待响应...\n" + new String(fullPacket, "GBK"));
 
             // 6. 接收并解析前置机返回的报文
             InputStream in = socket.getInputStream();
@@ -376,26 +359,30 @@ public class DistributorSelfRechargeServiceImpl implements DistributorSelfRechar
             if (recvData.length() >= 7) {
                 String respHeader = recvData.substring(0, 7);
                 String respXml = recvData.substring(7);
-                System.out.println("收到前置机响应头: '" + respHeader + "'");
-                System.out.println("收到前置机响应报文:\n" + respXml);
+                log.error("收到前置机响应头: '{}'", respHeader);
+                log.error("收到前置机响应报文:\n{}", respXml);
                 JSONObject jsonObject = XML.toJSONObject(respXml);
-                System.out.println(jsonObject);
 
                 JSONObject ap = jsonObject.getJSONObject("ap");
                 String respCode = ap.getStr("RespCode");
-                if(!"0000".equals(respCode)){
-                    System.err.println("交易发送异常,异常信息:"+ap.getStr("RespInfo"));
-                }else {
-                    System.out.println("交易发送成功");
-
+                if (!"0000".equals(respCode)) {
+                    log.error("交易发送异常,异常信息:{}", ap.getStr("RespInfo"));
+                } else {
+                    JSONObject cmp = ap.getJSONObject("Cmp");
+                    JSONObject cme = ap.getJSONObject("Cme");
+                    String batchFileName = cmp.getStr("BatchFileName");
+                    String recordNum = cme.getStr("RecordNum");
+                    if (StringUtils.equals("0", recordNum)) {
+                        log.error("无交易数据{}", cardNo);
+                        return;
+                    }
                     // 使用 try-with-resources 自动关闭流 //替换成文件目录
-                    try (FileInputStream fis = new FileInputStream("C:\\Users\\90653\\Desktop\\aaa.txt");
+                    try (FileInputStream fis = new FileInputStream("/data/bankshare/" + batchFileName);
                          InputStreamReader isr = new InputStreamReader(fis, "GBK");
                          BufferedReader br = new BufferedReader(isr)) {
-
                         String line;
                         while ((line = br.readLine()) != null) {
-                            System.out.println(line);
+                            log.error(line);
                             //省市代码|账号|账薄号|货币码|交易日期|日志号|交易时间|户名|账薄名|交易类型|交
                             //易行号|传票号|发生额标识|现转标志|交易金额|账户余额|上笔余额|凭证种类|交易码|
                             //凭证号|对方账号省市代码|对方账号|对方账号货币码|对方账号户名|对方账号开户行|
@@ -403,23 +390,17 @@ public class DistributorSelfRechargeServiceImpl implements DistributorSelfRechar
                             //17|342101046484369|1203444786|01|20260423|1527670363|20260423112009578611|宜畅式东士煌本孔凰于慊官送|宜畅式东士煌本孔凰于慊官送重庆万友国际旅行社
                             // |0||3|0|1|30.00|30.00|0.00|2|2581|00000000|17|342101046420983||宜常收镐赛坭足克凰幼慊关嗣|中国农业银行股份有限公司枝江市支行||||0199|测试3||||
                             String[] split = line.split("\\|");
-                            String refNbr  = split[5];
+                            String refNbr = split[5];
                             String logTime = split[6];
                             String recardNo = split[2];
                             String trsAmt = split[14];
-                            System.err.println("日志号:" + refNbr);
-                            System.err.println("交易时间:" + logTime);
-                            System.err.println("卡号:" + recardNo);
-                            System.err.println("金额:" + trsAmt);
-
-
+                            log.error("日志号:{}交易时间:{}卡号:{}金额:{}", refNbr, logTime, recardNo, trsAmt);
                             LambdaQueryWrapper<DistributorSelfRechargeDO> existCheckWrapper = new LambdaQueryWrapper<>();
                             existCheckWrapper.eq(DistributorSelfRechargeDO::getRechargeNo, refNbr);
                             if (distributorSelfRechargeMapper.selectCount(existCheckWrapper) > 0) {
                                 log.warn("refNbr [{}] 已存在,跳过重复插入", refNbr);
                                 return;
                             }
-
                             try {
                                 DistributorSelfRechargeDO newRecharge = new DistributorSelfRechargeDO();
                                 newRecharge.setId(IdWorker.getId());
@@ -438,7 +419,7 @@ public class DistributorSelfRechargeServiceImpl implements DistributorSelfRechar
                                 TenantUtils.execute(distributor.getTenantId(), () -> {
                                     distributorSelfRechargeMapper.insert(newRecharge);
                                 });
-                                log.info("成功插入充值记录 | refNbr:{}", refNbr);
+                                log.error("成功插入充值记录 | refNbr:{}", refNbr);
                                 DistributorSelfRechargeReqDTO reqDTO = new DistributorSelfRechargeReqDTO();
                                 reqDTO.setOrderId(newRecharge.getId());
                                 reqDTO.setPayOrderId(refNbr);
@@ -461,13 +442,13 @@ public class DistributorSelfRechargeServiceImpl implements DistributorSelfRechar
                     }
                 }
             } else {
-                System.out.println("响应报文异常或为空");
+                log.error("响应报文异常或为空");
             }
 
         } catch (SocketTimeoutException e) {
-            System.err.println("交易发送超时,请检查ICT前置机通讯状态。");
+            log.error("交易发送超时,请检查ICT前置机通讯状态。{}", String.valueOf(e));
         } catch (Exception e) {
-            System.err.println("交易发送异常: " + e.getMessage());
+            log.error("交易发送异常: {}", String.valueOf(e));
             e.printStackTrace();
         }