Bladeren bron

财务通和反诈补全交易主体账号数据

hankunkun 11 maanden geleden
bovenliggende
commit
1ec3591499

+ 3 - 9
src/main/java/ieven/server/webapp/api/AlipayController.java

@@ -70,15 +70,9 @@ public class AlipayController {
             } else {
                 Future<Long> totalFuture = this.dataService.countTotalByQuery(new Query(criteria));
                 List<DataMap> dataMaps = new ArrayList<>();
-                if (filename.contains("对手透视")) {
-                    dataMaps =
-                            this.mongoTemplate.find(
-                                    (new Query(criteria).with(Sort.by(Sort.Direction.DESC, "共同主端数"))).skip(skip).limit(pageSize), DataMap.class);
-                } else {
-                    dataMaps =
-                            this.mongoTemplate.find(
-                                    (new Query(criteria)).skip(skip).limit(pageSize), DataMap.class);
-                }
+                dataMaps =
+                        this.mongoTemplate.find(
+                                (new Query(criteria)).skip(skip).limit(pageSize), DataMap.class);
 
                 Long total;
 

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

@@ -69,6 +69,7 @@ public class TenpayHeaders {
         ));
         mappedNames.put(1, "财付通-订单明细1");
         mappedNames.put(2, "财付通-订单明细2");
+        mappedNames.put(3, "财付通-注册信息");
 
 
     }

+ 96 - 55
src/main/java/ieven/server/webapp/service/alipay/ALIPAY_GENERATED_TRADE.java

@@ -8,8 +8,11 @@ import ieven.server.webapp.domain.data.Fields;
 import ieven.server.webapp.service.Ops;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
 import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -17,66 +20,104 @@ import java.util.concurrent.CountDownLatch;
 
 @Slf4j
 public class ALIPAY_GENERATED_TRADE extends Ops implements Runnable {
-  List<Fields> originFields;
-  String modelId;
-  MongoTemplate mongoTemplate;
+    List<Fields> originFields;
+    String modelId;
+    MongoTemplate mongoTemplate;
 
-  CountDownLatch latch;
+    CountDownLatch latch;
 
-  public ALIPAY_GENERATED_TRADE(
-      List<Fields> originFields,
-      String modelId,
-      MongoTemplate mongoTemplate,
-      CountDownLatch latch) {
-    this.originFields = originFields;
-    this.modelId = modelId;
-    this.mongoTemplate = mongoTemplate;
-    this.latch = latch;
-  }
-
-  @Override
-  public void run() {
-    // 交易记录
-    List<Fields> tradeFieldsList = checkFields(originFields, AlipayType.ALIPAY_ORIGIN_TRADE);
-    if (CollectionUtils.isNotEmpty(tradeFieldsList)) {
-      Fields outputTrade = Ops.createFile(AlipayType.ALIPAY_GENERATED_TRADE, modelId);
-      for (Fields origin : tradeFieldsList) {
-        extractTrade(getCursor(origin.getFileId(), mongoTemplate), origin, outputTrade);
-      }
+    public ALIPAY_GENERATED_TRADE(
+            List<Fields> originFields,
+            String modelId,
+            MongoTemplate mongoTemplate,
+            CountDownLatch latch) {
+        this.originFields = originFields;
+        this.modelId = modelId;
+        this.mongoTemplate = mongoTemplate;
+        this.latch = latch;
     }
-    latch.countDown();
-  }
 
-  public void extractTrade(MongoCursor<Document> cursor, Fields origin, Fields output) {
-    Document originDoc;
-    List<DataMap> needToSave = new ArrayList<>(1000);
-    while (cursor.hasNext()) {
-      // 写法1(建议)
-      try {
-        originDoc = cursor.next();
-        DataMap newDoc = initWithOrigin(originDoc, output.getFileId());
-        // 绑定银行卡字段
-        String v1 = Ops.getString(originDoc, origin, "买家信息");
-        List<String> sp1 = Ops.extract_1(v1);
-        Ops.setString(newDoc, AlipayHeaders.TRADE_8, output, sp1.size() >= 1 ? sp1.get(0) : "");
-        Ops.setString(newDoc, AlipayHeaders.TRADE_2, output, sp1.size() >= 2 ? sp1.get(1) : "");
-        Ops.setString(newDoc, AlipayHeaders.TRADE_3, output, sp1.size() >= 3 ? sp1.get(2) : "");
-        String v2 = Ops.getString(originDoc, origin, "卖家信息");
-        List<String> sp2 = Ops.extract_1(v2);
-        Ops.setString(newDoc, AlipayHeaders.TRADE_12, output, sp2.size() >= 1 ? sp2.get(0) : "");
-        Ops.setString(newDoc, AlipayHeaders.TRADE_5, output, sp2.size() >= 2 ? sp2.get(1) : "");
-        Ops.setString(newDoc, AlipayHeaders.TRADE_6, output, sp2.size() >= 3 ? sp2.get(2) : "");
-        needToSave.add(newDoc);
-        if (needToSave.size() >= 1000) {
-          saveLines(new ArrayList<>(needToSave), mongoTemplate);
-          needToSave.clear();
+    @Override
+    public void run() {
+        // 交易记录
+        List<Fields> tradeFieldsList = checkFields(originFields, AlipayType.ALIPAY_ORIGIN_TRADE);
+        if (CollectionUtils.isNotEmpty(tradeFieldsList)) {
+            Fields outputTrade = Ops.createFile(AlipayType.ALIPAY_GENERATED_TRADE, modelId);
+            for (Fields origin : tradeFieldsList) {
+                extractTrade(getCursor(origin.getFileId(), mongoTemplate), origin, outputTrade);
+            }
         }
-      } catch (Exception ex) {
-        log.error(ex.getMessage(), ex);
-      }
+        latch.countDown();
     }
-    if (CollectionUtils.isNotEmpty(needToSave)) {
-      saveLines(needToSave, mongoTemplate);
+
+    public void extractTrade(MongoCursor<Document> cursor, Fields origin, Fields output) {
+        Document originDoc;
+        List<DataMap> needToSave = new ArrayList<>(1000);
+        while (cursor.hasNext()) {
+            // 写法1(建议)
+            try {
+                originDoc = cursor.next();
+                DataMap newDoc = initWithOrigin(originDoc, output.getFileId());
+                // 绑定银行卡字段
+                String v1 = Ops.getString(originDoc, origin, "买家信息");
+                List<String> sp1 = Ops.extract_1(v1);
+                Ops.setString(newDoc, AlipayHeaders.TRADE_8, output, sp1.size() >= 1 ? sp1.get(0) : "");
+                Ops.setString(newDoc, AlipayHeaders.TRADE_2, output, sp1.size() >= 2 ? sp1.get(1) : "");
+                Ops.setString(newDoc, AlipayHeaders.TRADE_3, output, sp1.size() >= 3 ? sp1.get(2) : "");
+                String v2 = Ops.getString(originDoc, origin, "卖家信息");
+                List<String> sp2 = Ops.extract_1(v2);
+                Ops.setString(newDoc, AlipayHeaders.TRADE_12, output, sp2.size() >= 1 ? sp2.get(0) : "");
+                Ops.setString(newDoc, AlipayHeaders.TRADE_5, output, sp2.size() >= 2 ? sp2.get(1) : "");
+                Ops.setString(newDoc, AlipayHeaders.TRADE_6, output, sp2.size() >= 3 ? sp2.get(2) : "");
+
+                //获取支付宝名称
+                String zfbName = Ops.getString(originDoc, origin, AlipayHeaders.ACCOUNT_2);
+                if (StringUtils.isBlank(zfbName)) {
+                    //去用户注册中进行数据补全
+                    String dateFileId2 = getFileId(AlipayHeaders.getGeneratedName(2), modelId, mongoTemplate);
+                    List<DataMap> dataMaps = this.mongoTemplate.find((new Query(
+                            Criteria.where("modelId")
+                                    .is(modelId)
+                                    .and("fileId")
+                                    .is(dateFileId2)
+                                    .and(AlipayHeaders.ACCOUNT_1)
+                                    .is(zfbName)
+                                    .and("generated")
+                                    .is(Boolean.TRUE))), DataMap.class);
+                    if(CollectionUtils.isNotEmpty(dataMaps)){
+                        Ops.setString(newDoc, AlipayHeaders.ACCOUNT_2, output, String.valueOf(dataMaps.get(0).get("支付宝户名")));
+                    }
+
+                }
+                String zfbNameds = Ops.getString(originDoc, origin, AlipayHeaders.ACCOUNT_3);
+                if (StringUtils.isBlank(zfbNameds)) {
+                    //去用户注册中进行数据补全
+                    String dateFileId2 = getFileId(AlipayHeaders.getGeneratedName(2), modelId, mongoTemplate);
+                    List<DataMap> dataMaps = this.mongoTemplate.find((new Query(
+                            Criteria.where("modelId")
+                                    .is(modelId)
+                                    .and("fileId")
+                                    .is(dateFileId2)
+                                    .and(AlipayHeaders.ACCOUNT_3)
+                                    .is(zfbNameds)
+                                    .and("generated")
+                                    .is(Boolean.TRUE))), DataMap.class);
+                    if(CollectionUtils.isNotEmpty(dataMaps)){
+                        Ops.setString(newDoc, AlipayHeaders.ACCOUNT_4, output, String.valueOf(dataMaps.get(0).get("对手支付宝户名")));
+                    }
+
+                }
+                needToSave.add(newDoc);
+                if (needToSave.size() >= 1000) {
+                    saveLines(new ArrayList<>(needToSave), mongoTemplate);
+                    needToSave.clear();
+                }
+            } catch (Exception ex) {
+                log.error(ex.getMessage(), ex);
+            }
+        }
+        if (CollectionUtils.isNotEmpty(needToSave)) {
+            saveLines(needToSave, mongoTemplate);
+        }
     }
-  }
 }

+ 35 - 0
src/main/java/ieven/server/webapp/service/tenpay/TenpayTrades.java

@@ -2,6 +2,7 @@ package ieven.server.webapp.service.tenpay;
 
 import cn.hutool.core.util.NumberUtil;
 import com.mongodb.client.MongoCursor;
+import ieven.server.webapp.domain.alipay.AlipayHeaders;
 import ieven.server.webapp.domain.data.DataMap;
 import ieven.server.webapp.domain.file.FileService;
 import ieven.server.webapp.domain.tenpay.TenpayHeaders;
@@ -11,6 +12,8 @@ import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.bson.Document;
 import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -120,6 +123,22 @@ public class TenpayTrades extends Ops implements Runnable {
                         String newName = accountToName.getOrDefault(account, "");
                         if (StringUtils.isNotBlank(newName)) {
                             dataMap.put("交易主体户名", newName);
+                        }else{
+                            //财付通-注册信息
+                            //去用户注册中进行数据补全
+                            String dateFileId2 = getFileId(TenpayHeaders.getGeneratedName(3), modelId, mongoTemplate);
+                            List<DataMap> dataMaps = this.mongoTemplate.find((new Query(
+                                    Criteria.where("modelId")
+                                            .is(modelId)
+                                            .and("fileId")
+                                            .is(dateFileId2)
+                                            .and("账号")
+                                            .is(account)
+                                            .and("generated")
+                                            .is(Boolean.TRUE))), DataMap.class);
+                            if(CollectionUtils.isNotEmpty(dataMaps)){
+                                dataMap.put("交易主体户名", String.valueOf(dataMaps.get(0).get("注册姓名")));
+                            }
                         }
                     }
                 }
@@ -130,6 +149,22 @@ public class TenpayTrades extends Ops implements Runnable {
                         String newName = accountToName.getOrDefault(account, "");
                         if (StringUtils.isNotBlank(newName)) {
                             dataMap.put("交易对手户名", newName);
+                        }else {
+                            //财付通-注册信息
+                            //去用户注册中进行数据补全
+                            String dateFileId2 = getFileId(TenpayHeaders.getGeneratedName(3), modelId, mongoTemplate);
+                            List<DataMap> dataMaps = this.mongoTemplate.find((new Query(
+                                    Criteria.where("modelId")
+                                            .is(modelId)
+                                            .and("fileId")
+                                            .is(dateFileId2)
+                                            .and("账号")
+                                            .is(account)
+                                            .and("generated")
+                                            .is(Boolean.TRUE))), DataMap.class);
+                            if(CollectionUtils.isNotEmpty(dataMaps)){
+                                dataMap.put("交易主体户名", String.valueOf(dataMaps.get(0).get("注册姓名")));
+                            }
                         }
                     }
                 }