Bläddra i källkod

支付宝五联单

hankunkun 11 månader sedan
förälder
incheckning
81bf418f52

+ 1 - 0
src/main/java/ieven/server/webapp/domain/alipay/AlipayHeaders.java

@@ -33,6 +33,7 @@ public class AlipayHeaders {
         mappedHeaders.put(1, Arrays.asList("用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "注册时间", "绑定手机", "绑定银行卡", "对应的协查数据"));
         mappedHeaders.put(13, Arrays.asList("用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "注册时间", "绑定手机", "绑定银行卡","关联账户", "对应的协查数据"));
         mappedHeaders.put(12, Arrays.asList("用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "绑定手机", "绑定银行卡", "对应的协查数据"));
+        mappedHeaders.put(14, Arrays.asList("用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "绑定手机", "绑定银行卡","关联账户", "对应的协查数据"));
         mappedHeaders.put(2, Arrays.asList("用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "绑定手机", "绑定卡号", "银行简称", "卡类型", "对应的协查数据"));
         mappedHeaders.put(3, Arrays.asList("登陆账号", "支付宝用户ID", "账户名", "客户端ip", "操作发生时间", "对应的协查数据"));
         mappedHeaders.put(4, Arrays.asList("登陆账号", "支付宝用户ID", "账户名", "客户端IP", "操作发生时间", "对应的协查数据"));

+ 1 - 1
src/main/java/ieven/server/webapp/domain/file/FileService.java

@@ -68,7 +68,7 @@ public class FileService {
             "五联单-IP地址分析",
             "五联单-收货地址分析"
     };
-    String[] order3 = {"财付通-注册信息", "财付通-订单明细","财付通-订单明细2", "财付通-交易明细", "财付通-账户透视", "财付通-对手透视", "财付通-手机明细"};
+    String[] order3 = {"财付通-注册信息", "财付通-订单明细1","财付通-订单明细2", "财付通-交易明细", "财付通-账户透视", "财付通-对手透视", "财付通-手机明细"};
     @Autowired
     private GridFsTemplate gridFsTemplate;
     @Autowired

+ 2 - 1
src/main/java/ieven/server/webapp/domain/tenpay/TenpayHeaders.java

@@ -66,7 +66,8 @@ public class TenpayHeaders {
         mappedHeaders.put(8, Arrays.asList(
                 "用户ID", "交易单号", "大单号", "用户侧账号名称", "借贷类型", "交易业务类型", "交易用途类型", "交易时间", "交易金额(分)", "账户余额(分)", "用户银行卡号", "用户侧银行名称", "用户侧网银联单号", "网联/银联", "第三方账户名称", "对手方ID", "对手侧账户名称", "对手方银行卡号", "对手侧银行名称", "对手侧网银联单号", "网联/银联", "第三方账户名称", "对手方接收时间", "对手方接收金额(分)", "备注1","备注2"
         ));
-        mappedNames.put(1, "财付通-订单明细");
+        mappedNames.put(1, "财付通-订单明细1");
+        mappedNames.put(2, "财付通-订单明细2");
 
 
     }

+ 9 - 6
src/main/java/ieven/server/webapp/service/FieldsService.java

@@ -35,6 +35,9 @@ public class FieldsService extends Ops {
     fields = this.checkFields(originFields, 13);
     this.updateLogicalFile(fields, "五联单-注册信息");
 
+      fields = this.checkFields(originFields, 14);
+      this.updateLogicalFile(fields, "五联单-注册信息");
+
     // 五联单-登录日志
     fields = this.checkFields(originFields, AlipayType.ALIPAY_ORIGIN_LOGIN);
     this.updateLogicalFile(fields, "五联单-登录日志");
@@ -58,17 +61,17 @@ public class FieldsService extends Ops {
     this.updateLogicalFile(fields, "财付通-注册信息");
     // 财付通-订单明细
     fields = matchHeaders(originFields, TenpayHeaders.getHeaders(6));
-    this.updateLogicalFile(fields, "财付通-订单明细");
+    this.updateLogicalFile(fields, "财付通-订单明细2");
     fields = matchHeaders(originFields, TenpayHeaders.getHeaders(5));
-    this.updateLogicalFile(fields, "财付通-订单明细");
+    this.updateLogicalFile(fields, "财付通-订单明细2");
     fields = matchHeaders(originFields, TenpayHeaders.getHeaders(1));
-    this.updateLogicalFile(fields, "财付通-订单明细");
+    this.updateLogicalFile(fields, "财付通-订单明细2");
     fields = matchHeaders(originFields, TenpayHeaders.getHeaders(2));
-    this.updateLogicalFile(fields, "财付通-订单明细");
-    fields = matchHeaders(originFields, TenpayHeaders.getHeaders(7));
     this.updateLogicalFile(fields, "财付通-订单明细2");
+    fields = matchHeaders(originFields, TenpayHeaders.getHeaders(7));
+    this.updateLogicalFile(fields, "财付通-订单明细1");
     fields = matchHeaders(originFields, TenpayHeaders.getHeaders(8));
-    this.updateLogicalFile(fields, "财付通-订单明细2");
+    this.updateLogicalFile(fields, "财付通-订单明细1");
     // 财付通-手机明细
     fields = matchHeaders(originFields, TenpayHeaders.getHeaders(4));
     this.updateLogicalFile(fields, "财付通-手机明细");

+ 9 - 0
src/main/java/ieven/server/webapp/service/alipay/ALIPAY_ORIGIN_REGISTER.java

@@ -76,6 +76,15 @@ public class ALIPAY_ORIGIN_REGISTER extends Ops implements Runnable {
       }
     }
 
+      fieldsList = checkFields(originFields, 14);
+      if (CollectionUtils.isNotEmpty(fieldsList)) {
+          Fields output = Ops.createFile(AlipayType.ALIPAY_GENERATED_REGISTER, modelId);
+          // 创建并存储文件和表头
+          // 可能有多个文件,对多个文件并行解析
+          for (Fields origin : fieldsList) {
+              extractRegister(origin, output);
+          }
+      }
     latch.countDown();
     log.info("五联单-注册信息结束");
   }

+ 2 - 2
src/main/java/ieven/server/webapp/service/tenpay/TenpayOrders.java

@@ -47,7 +47,7 @@ public class TenpayOrders extends Ops implements Runnable {
         List<Fields> matched = matchHeaders(originFields, headers);
         String newFileId = "";
         if (CollectionUtils.isNotEmpty(matched)) {
-            newFileId = createLogicAndDeleteOld("财付通-订单明细", modelId, origheaders, mongoTemplate, fileService);
+            newFileId = createLogicAndDeleteOld("财付通-订单明细2", modelId, origheaders, mongoTemplate, fileService);
             for (Fields fields : matched) {
                 String fileId = fields.getFileId();
                 MongoCursor<Document> cursor = getCursor(fileId, mongoTemplate);
@@ -85,7 +85,7 @@ public class TenpayOrders extends Ops implements Runnable {
         // 以下为处理另一种格式的财付通数据
         if (CollectionUtils.isNotEmpty(matched)) {
             if (StringUtils.isBlank(newFileId)) {
-                newFileId = createLogicAndDeleteOld("财付通-订单明细", modelId, origheaders, mongoTemplate, fileService);
+                newFileId = createLogicAndDeleteOld("财付通-订单明细2", modelId, origheaders, mongoTemplate, fileService);
             }
             for (Fields fields : matched) {
                 String fileId = fields.getFileId();

+ 1 - 2
src/main/java/ieven/server/webapp/service/tenpay/TenpayOrders0422.java

@@ -55,7 +55,7 @@ public class TenpayOrders0422 extends Ops implements Runnable {
         List<Fields> matched = matchHeaders(originFields, headers);
         // 以下为处理另一种格式的财付通数据
         if (CollectionUtils.isNotEmpty(matched)) {
-            String newFileId = createLogicAndDeleteOld("财付通-订单明细2", modelId, TenpayHeaders.getHeaders(8), mongoTemplate, fileService);
+            String newFileId = createLogicAndDeleteOld("财付通-订单明细1", modelId, TenpayHeaders.getHeaders(8), mongoTemplate, fileService);
             for (Fields fields : matched) {
                 String fileId = fields.getFileId();
                 MongoCursor<Document> cursor = getCursor(fileId, mongoTemplate);
@@ -73,7 +73,6 @@ public class TenpayOrders0422 extends Ops implements Runnable {
                     newDoc.put("交易单号", originDoc.getString("交易单号"));
                     newDoc.put("大单号", originDoc.getString("大单号"));
                     newDoc.put("用户侧账号名称", originDoc.getString("用户侧账号名称"));
-                    String f1 = originDoc.getString("借贷类型");
                     newDoc.put("借贷类型", originDoc.getString("借贷类型"));
                     newDoc.put("交易业务类型", originDoc.getString("交易业务类型"));
                     newDoc.put("交易用途类型", originDoc.getString("交易用途类型"));

+ 73 - 34
src/main/java/ieven/server/webapp/service/tenpay/TenpayTrades.java

@@ -1,7 +1,6 @@
 package ieven.server.webapp.service.tenpay;
 
 import cn.hutool.core.util.NumberUtil;
-import com.google.common.collect.Lists;
 import com.mongodb.client.MongoCursor;
 import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.file.FileService;
@@ -46,18 +45,15 @@ public class TenpayTrades extends Ops implements Runnable {
         log.info("财付通-交易明细开始");
         String antiSecurityFileId = "";
 
-        String dateFileId2 = getFileId("财付通-订单明细2", modelId, mongoTemplate);
-        String dateFileId1 = getFileId("财付通-订单明细", modelId, mongoTemplate);
-
-        List<String>list=new ArrayList<>();
-        list.add(dateFileId2);
-        list.add(dateFileId1);
+        String dateFileId = getFileId("财付通-订单明细2", modelId, mongoTemplate);
+        String dateFileIdnew = getFileId("财付通-订单明细1", modelId, mongoTemplate);
         // 遍历登录日志全表
-        if (StringUtils.isNotBlank(dateFileId2)) {
-            MongoCursor<Document> cursor = getCursor(list, mongoTemplate);
-            if (cursor.hasNext()) {
-                antiSecurityFileId = createLogicAndDeleteOld("财付通-交易明细", modelId, TenpayHeaders.getHeaders(2), mongoTemplate, fileService);
-            }
+        if(StringUtils.isNotBlank(dateFileId)||StringUtils.isNotBlank(dateFileIdnew)){
+            antiSecurityFileId = createLogicAndDeleteOld("财付通-交易明细", modelId, TenpayHeaders.getHeaders(2), mongoTemplate, fileService);
+
+        }
+        if (StringUtils.isNotBlank(dateFileId)) {
+            MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
             Document origin;
             List<DataMap> needToSave = new ArrayList<>(1000);
             while (cursor.hasNext()) {
@@ -77,26 +73,26 @@ public class TenpayTrades extends Ops implements Runnable {
                     if (StringUtils.isBlank(origin.getString("发送方"))) {
                         dataMap.put("交易主体账号", userId);
                     }
-                    dataMap.put("交易主体银行卡号", getValue(origin, Lists.newArrayList("银行卡号","用户银行卡号")));
-                    dataMap.put("交易主体银行名称", getValue(origin, Lists.newArrayList("用户侧银行名称")));
-                    dataMap.put("交易主体户名", getValue(origin, Lists.newArrayList("发送方","用户侧账号名称")));
+                    dataMap.put("交易主体银行卡号", origin.getString("银行卡号"));
+                    dataMap.put("交易主体银行名称", "");
+                    dataMap.put("交易主体户名", accountToName.getOrDefault(origin.getString("发送方"), ""));
                     dataMap.put("交易对手账号", origin.getString("接收方"));
-                    dataMap.put("交易对手银行卡号",getValue(origin, Lists.newArrayList("对手银行卡号","对手方银行卡号")));
-                    dataMap.put("交易对手银行名称", getValue(origin, Lists.newArrayList("对手侧银行名称")));
-                    dataMap.put("交易对手户名", getValue(origin, Lists.newArrayList("接收方","对手侧账户名称")));
+                    dataMap.put("交易对手银行卡号", origin.getString("对手银行卡号"));
+                    dataMap.put("交易对手银行名称", "");
+                    dataMap.put("交易对手户名", accountToName.getOrDefault(StringUtils.trimToEmpty(origin.getString("接收方")), ""));
                 }
                 if ("入".equals(flag)) {
                     dataMap.put("交易主体账号", StringUtils.trimToEmpty(origin.getString("接收方")));
                     if (StringUtils.isBlank(origin.getString("接收方"))) {
                         dataMap.put("交易主体账号", userId);
                     }
-                    dataMap.put("交易主体银行卡号", getValue(origin, Lists.newArrayList("对手银行卡号","对手方银行卡号")));
-                    dataMap.put("交易主体银行名称", getValue(origin, Lists.newArrayList("对手侧银行名称")));
-                    dataMap.put("交易主体户名", getValue(origin, Lists.newArrayList("接收方","对手侧账户名称")));
+                    dataMap.put("交易主体银行卡号", origin.getString("对手银行卡号"));
+                    dataMap.put("交易主体银行名称", "");
+                    dataMap.put("交易主体户名", accountToName.getOrDefault(StringUtils.trimToEmpty(origin.getString("接收方")), ""));
                     dataMap.put("交易对手账号", StringUtils.trimToEmpty(origin.getString("发送方")));
-                    dataMap.put("交易对手银行卡号", getValue(origin, Lists.newArrayList("银行卡号","用户银行卡号")));
-                    dataMap.put("交易对手银行名称", getValue(origin, Lists.newArrayList("用户侧银行名称")));
-                    dataMap.put("交易对手户名",  getValue(origin, Lists.newArrayList("发送方","用户侧账号名称")));
+                    dataMap.put("交易对手银行卡号", origin.getString("银行卡号"));
+                    dataMap.put("交易对手银行名称", "");
+                    dataMap.put("交易对手户名", accountToName.getOrDefault(StringUtils.trimToEmpty(origin.getString("发送方")), ""));
                 }
                 dataMap.put("借贷类型", flag);
                 dataMap.put("交易类型", origin.getString("交易类型"));
@@ -147,18 +143,61 @@ public class TenpayTrades extends Ops implements Runnable {
                 saveLines(needToSave, mongoTemplate);
             }
         }
-        this.latch.countDown();
-        log.info("财付通-交易明细结束");
-    }
 
-    public String getValue(Document origin,List<String>dataList){
-        String value="";
-        for (String s : dataList) {
-            value = accountToName.getOrDefault(StringUtils.trimToEmpty(origin.getString(s)), "");
-            if(StringUtils.isNotBlank(value)){
-                return value;
+        // 遍历登录日志全表
+        if (StringUtils.isNotBlank(dateFileIdnew)) {
+            MongoCursor<Document> cursor = getCursor(dateFileIdnew, mongoTemplate);
+            Document origin;
+            List<DataMap> needToSave = new ArrayList<>(1000);
+            while (cursor.hasNext()) {
+                origin = cursor.next();
+                DataMap dataMap = new DataMap();
+                dataMap.put("fileId", antiSecurityFileId);
+                String userId = origin.getString("用户ID").replace("[", "").replace("]", "");
+                dataMap.put("用户ID", userId);
+                String lognumber = origin.getString("交易单号");
+                if (StringUtils.isBlank(lognumber)) {
+                    continue;
+                }
+                dataMap.put("交易主体户名", origin.getString("用户侧账号名称"));
+                dataMap.put("交易主体银行卡号", origin.getString("用户银行卡号"));
+                dataMap.put("交易主体银行名称", origin.getString("用户侧银行名称"));
+                dataMap.put("交易对手户名", origin.getString("对手侧账户名称"));
+                dataMap.put("交易对手银行卡号", origin.getString("交易对手银行卡号"));
+                dataMap.put("交易对手银行名称", origin.getString("对手侧银行名称"));
+                dataMap.put("交易单号", lognumber.replace("[", "").replace("]", ""));
+                dataMap.put("借贷类型", origin.getString("借贷类型"));
+                dataMap.put("交易主体账号", origin.getString("用户侧账号名称"));
+                dataMap.put("交易对手账号",  origin.getString("对手侧账户名称"));
+                dataMap.put("交易时间", origin.getString("交易时间"));
+                String string5 = origin.getString("交易金额(分)");
+                if (!NumberUtil.isNumber(string5)) {
+                    continue;
+                }
+                dataMap.put("交易金额(元)", NumberUtil.roundStr(NumberUtil.div(string5 == null ? "0" : string5, "100").doubleValue(), 2));
+                String string6 = origin.getString("账户余额(分)");
+                if (!NumberUtil.isNumber(string6)) {
+                    continue;
+                }
+                dataMap.put("账户余额(元)", NumberUtil.roundStr(NumberUtil.div(string6 == null ? "0" : string6, "100").doubleValue(), 2));
+                dataMap.put("银行类型", origin.getString("交易业务类型"));
+                dataMap.put("交易类型", origin.getString("交易用途类型"));
+                dataMap.put("交易说明", "");
+                dataMap.put("网银联单号1", "");
+                dataMap.put("网银联单号2", "");
+                dataMap.put("交易主体第三方账号名", origin.getString("第三方账户名称"));
+                dataMap.put("对手第三方账号名", "");
+                needToSave.add(dataMap);
+                if (needToSave.size() >= 1000) {
+                    saveLines(new ArrayList<>(needToSave), mongoTemplate);
+                    needToSave.clear();
+                }
+            }
+            if (CollectionUtils.isNotEmpty(needToSave)) {
+                saveLines(needToSave, mongoTemplate);
             }
         }
-        return value;
+        this.latch.countDown();
+        log.info("财付通-交易明细结束");
     }
 }