Bläddra i källkod

增加经侦云-注册信息

hankunkun 8 månader sedan
förälder
incheckning
f34d09ff94

+ 1 - 1
src/main/java/ieven/server/webapp/api/DataController.java

@@ -75,7 +75,7 @@ public class DataController {
                 .and("generated")
                 .is(Boolean.TRUE)
                 .and("filename")
-                .in("反诈治安-交易明细", "五联单-账户明细", "财付通-交易明细"));
+                .in("反诈治安-交易明细", "经侦云-账户明细","五联单-账户明细", "财付通-交易明细"));
     List<LogicalFile> resultList = this.mongoTemplate.find(query, LogicalFile.class);
     List<String> filePaths = new ArrayList<>();
     String randomDir = RandomUtil.randomString(5);

+ 5 - 3
src/main/java/ieven/server/webapp/domain/alipay/AlipayHeaders.java

@@ -31,9 +31,9 @@ public class AlipayHeaders {
 
     static {
         mappedHeaders.put(1, Arrays.asList("用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "注册时间", "绑定手机", "绑定银行卡", "对应的协查数据"));
-        mappedHeaders.put(13, Arrays.asList("用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "注册时间", "绑定手机", "绑定银行卡","关联账户", "对应的协查数据"));
+        mappedHeaders.put(13, Arrays.asList("用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "注册时间", "绑定手机", "绑定银行卡", "关联账户", "对应的协查数据"));
         mappedHeaders.put(12, Arrays.asList("用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "绑定手机", "绑定银行卡", "对应的协查数据"));
-        mappedHeaders.put(14, 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", "操作发生时间", "对应的协查数据"));
@@ -44,7 +44,8 @@ public class AlipayHeaders {
         mappedHeaders.put(9, Arrays.asList("交易号", "付款方支付宝账号", "收款方支付宝账号", "收款机构信息", "到账时间", "转账金额(元)", "转账产品名称", "交易发生地", "提现流水号", "对应的协查数据"));
         mappedHeaders.put(10, Arrays.asList("交易号", "付款方支付宝用户ID", "收款方支付宝用户ID", "收款机构信息", "到账时间", "转账金额(元)", "转账产品名称", "交易发生地", "提现流水号", "对应的协查数据"));
         mappedHeaders.put(11, Arrays.asList("用户ID", "用户名", "额外字段1", "额外字段2", "额外字段3"));
-        mappedHeaders.put(15, Arrays.asList("用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "绑定手机", "绑定卡号", "银行简称", "卡类型", "关联账户","对应的协查数据"));
+        mappedHeaders.put(15, Arrays.asList("用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "绑定手机", "绑定卡号", "银行简称", "卡类型", "关联账户", "对应的协查数据"));
+        mappedHeaders.put(16, Arrays.asList("用户ID", "登录邮箱", "登陆手机", "账户名称", "证件类型", "证件号码", "可用余额", "绑定手机号", "注册时间", "绑定银行卡", "关联账户", "查询主体", "查询主体类型", "案件ID", "请求单号"));
         mappedNames.put(2, "五联单-注册信息");
         mappedNames.put(4, "五联单-登录日志");
         mappedNames.put(6, "五联单-交易记录");
@@ -52,6 +53,7 @@ public class AlipayHeaders {
         mappedNames.put(10, "五联单-转账明细");
         mappedNames.put(11, "五联单-用户汇总表");
         mappedNames.put(15, "五联单-注册信息");
+        mappedNames.put(16, "经侦云-注册信息");
     }
 
     public AlipayHeaders() {

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

@@ -10,6 +10,7 @@ public class AlipayType {
   public static final int ALIPAY_ORIGIN_REGISTER = 1;
   // 支付宝生成的用户信息表
   public static final int ALIPAY_GENERATED_REGISTER = 15;
+  public static final int ALIPAY_GENERATED_REGISTER_JZY = 16;
   // 支付宝登录日志原表
   public static final int ALIPAY_ORIGIN_LOGIN = 3;
   // 支付宝登录日志提取表

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

@@ -68,6 +68,7 @@ public class FileService {
     String[] order1 = {"反诈数据-订单明细","反诈数据-订单明细2", "治安数据-订单明细", "经侦数据-订单明细", "网黑数据-订单明细", "反诈治安-交易明细", "反诈治安-账户透视", "反诈治安-对手透视"};
     String[] order2 = {
             "五联单-注册信息",
+            "经侦云-注册信息",
             "五联单-登录日志",
             "五联单-交易记录",
             "五联单-账户明细",

+ 3 - 0
src/main/java/ieven/server/webapp/service/FieldsService.java

@@ -40,6 +40,9 @@ public class FieldsService extends Ops {
         fields = this.checkFields(originFields, 14);
         this.updateLogicalFile(fields, "五联单-注册信息");
 
+        fields = this.checkFields(originFields, 16);
+        this.updateLogicalFile(fields, "五联单-注册信息");
+
         // 五联单-登录日志
         fields = this.checkFields(originFields, AlipayType.ALIPAY_ORIGIN_LOGIN);
         this.updateLogicalFile(fields, "五联单-登录日志");

+ 11 - 3
src/main/java/ieven/server/webapp/service/alipay/ALIPAY_GENERATED_TRADE.java

@@ -55,7 +55,15 @@ public class ALIPAY_GENERATED_TRADE extends Ops implements Runnable {
     public void extractTrade(MongoCursor<Document> cursor, Fields origin, Fields output) {
         Document originDoc;
         List<DataMap> needToSave = new ArrayList<>(1000);
-        String dateFileId2 = getFileId(AlipayHeaders.getGeneratedName(2), modelId, mongoTemplate);
+        List<String> dataFiles = new ArrayList<>();
+        String dateFileId = getFileId(AlipayHeaders.getGeneratedName(2), modelId, mongoTemplate);
+        String dateFileId16 = getFileId(AlipayHeaders.getGeneratedName(16), modelId, mongoTemplate);
+        if (StringUtils.isNotBlank(dateFileId)) {
+            dataFiles.add(dateFileId);
+        }
+        if (StringUtils.isNotBlank(dateFileId16)) {
+            dataFiles.add(dateFileId16);
+        }
         Map<String, List<DataMap>> userMap = new HashMap<>();
         while (cursor.hasNext()) {
             // 写法1(建议)
@@ -82,10 +90,10 @@ public class ALIPAY_GENERATED_TRADE extends Ops implements Runnable {
                         //去用户注册中进行数据补全
                         dataMaps = this.mongoTemplate.find((new Query(
                                 Criteria.where("fileId")
-                                        .is(dateFileId2)
+                                        .in(dataFiles)
                                         .and(AlipayHeaders.ACCOUNT_1)
                                         .is(zfbName))), DataMap.class);
-                        userMap.put(zfbName,dataMaps);
+                        userMap.put(zfbName, dataMaps);
                         if (CollectionUtils.isNotEmpty(dataMaps)) {
                             userMap.put(zfbName, dataMaps);
                         }

+ 110 - 0
src/main/java/ieven/server/webapp/service/alipay/ALIPAY_ORIGIN_REGISTER_JZY.java

@@ -0,0 +1,110 @@
+package ieven.server.webapp.service.alipay;
+
+import com.mongodb.client.MongoCursor;
+import ieven.server.webapp.domain.alipay.AlipayHeaders;
+import ieven.server.webapp.domain.alipay.AlipayType;
+import ieven.server.webapp.domain.data.DataMap;
+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.LinkedHashMap;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+
+@Slf4j
+public class ALIPAY_ORIGIN_REGISTER_JZY extends Ops implements Runnable {
+
+    List<Fields> originFields;
+    String modelId;
+
+    MongoTemplate mongoTemplate;
+
+    CountDownLatch latch;
+
+    public ALIPAY_ORIGIN_REGISTER_JZY() {
+    }
+
+    public ALIPAY_ORIGIN_REGISTER_JZY(
+            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> fieldsList = checkFields(originFields, 16);
+        if (CollectionUtils.isNotEmpty(fieldsList)) {
+            Fields output = Ops.createFile(AlipayType.ALIPAY_GENERATED_REGISTER_JZY, modelId);
+            for (Fields origin : fieldsList) {
+                extractRegister(origin, output);
+            }
+        }
+        latch.countDown();
+        log.info("经侦云-注册信息结束");
+    }
+
+    public void extractRegister(Fields origin, Fields output) {
+        LinkedHashMap<String, String> outputReversed = output.getFieldsReverse();
+        String inputFileId = origin.getFileId();
+        String outputFileId = output.getFileId();
+        Query query = new Query(Criteria.where("fileId").is(inputFileId));
+        query.fields().include();
+        // 查询游标
+        MongoCursor<Document> cursor =
+                mongoTemplate
+                        .getCollection("data")
+                        .find(query.getQueryObject())
+                        .batchSize(1000)
+                        .noCursorTimeout(true)
+                        .cursor();
+        Document originDoc;
+        List<DataMap> needToSave = new ArrayList<>(1000);
+        while (cursor.hasNext()) {
+            // 写法1(建议)
+            try {
+                originDoc = cursor.next();
+                DataMap newDoc = initWithOrigin(originDoc, outputFileId);
+                // 绑定银行卡字段
+                deleteKey(newDoc, "FILEID");
+                String vO1 = Ops.getString(originDoc, origin, "绑定银行卡");
+                String[] sp1 = vO1.split(";");
+                for (String s1 : sp1) {
+                    if (StringUtils.isNotBlank(s1)) {
+                        String[] sp2 = s1.split(":");
+                        if (sp2.length == 3) {
+                            // 拷贝一行新的
+                            DataMap newLine = new DataMap(newDoc);
+                            newLine.put(outputReversed.getOrDefault(AlipayHeaders.REGISTER_1, "-1"), sp2[0]);
+                            newLine.put(outputReversed.getOrDefault(AlipayHeaders.REGISTER_2, "-1"), sp2[1]);
+                            newLine.put(outputReversed.getOrDefault(AlipayHeaders.REGISTER_3, "-1"), sp2[2]);
+                            needToSave.add(newLine);
+                        }
+                    }
+                }
+                if (needToSave.size() >= 1000) {
+                    saveLines(new ArrayList<>(needToSave), mongoTemplate);
+                    needToSave.clear();
+                }
+            } catch (Exception exception) {
+                log.error(exception.getMessage(), exception);
+            }
+        }
+        if (CollectionUtils.isNotEmpty(needToSave)) {
+            saveLines(needToSave, mongoTemplate);
+        }
+    }
+}

+ 3 - 1
src/main/java/ieven/server/webapp/service/alipay/AlipayService.java

@@ -70,9 +70,11 @@ public class AlipayService {
         // 无限制大小的threadpool
         ExecutorService exec = Executors.newCachedThreadPool();
         log.info("latch");
-        CountDownLatch latch = new CountDownLatch(8);
+        CountDownLatch latch = new CountDownLatch(9);
         // 五联单-注册信息
         exec.execute(new ALIPAY_ORIGIN_REGISTER(originFields, modelId, mongoTemplate, latch));
+
+        exec.execute(new ALIPAY_ORIGIN_REGISTER_JZY(originFields, modelId, mongoTemplate, latch));
         // 五联单-登录日志
         exec.execute(new ALIPAY_GENERATED_LOGIN(originFields, modelId, mongoTemplate, latch));
         // 五联单-交易记录

+ 34 - 0
src/main/java/ieven/server/webapp/service/datastatic/DataStaticAnalysisTotal.java

@@ -51,8 +51,10 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
         String dateFileId = getFileId("数据分析-主体信息汇总明细", modelId, mongoTemplate);
         String cft = getFileId(TenpayHeaders.getGeneratedName(3), modelId, mongoTemplate);
         String wld = getFileId(AlipayHeaders.getGeneratedName(2), modelId, mongoTemplate);
+        String wldjzy = getFileId(AlipayHeaders.getGeneratedName(16), modelId, mongoTemplate);
         boolean cftFlag=false;
         boolean wldFlag=false;
+        boolean wldFlagjzy=false;
         // 插入记录用户后续查询明细
         if (StringUtils.isNotBlank(cft)) {
             MongoCursor<Document> cursor = getCursor(cft, mongoTemplate);
@@ -111,6 +113,34 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
             }
         }
 
+        if (StringUtils.isNotBlank(wldjzy)) {
+            MongoCursor<Document> cursor = getCursor(wldjzy, mongoTemplate);
+            wldFlagjzy=true;
+            Document origin;
+            List<DataMap> needToSave = new ArrayList<>(1000);
+            while (cursor.hasNext()){
+                origin = cursor.next();
+                DataMap dataMap=new DataMap();
+                dataMap.put("fileId", newFileId);
+                dataMap.put("交易主体账号",PublicStatic.removeStr(origin.getString("用户ID")));
+                dataMap.put("交易主体户名",PublicStatic.removeStr(origin.getString("账户名称")));
+                dataMap.put("证件号码",PublicStatic.removeStr(origin.getString("证件号码")));
+                dataMap.put("绑定银行卡号",PublicStatic.removeStr(origin.getString("绑定卡号")));
+                dataMap.put("开户银行名称",PublicStatic.removeStr(origin.getString("银行简称")));
+                dataMap.put("绑定手机号",PublicStatic.removeStr(origin.getString("绑定手机号")));
+                dataMap.put("注册时间","");
+
+                needToSave.add(dataMap);
+                if (needToSave.size() >= 500) {
+                    saveLines(needToSave, mongoTemplate);
+                    needToSave.clear();
+                }
+            }
+            if (CollectionUtils.isNotEmpty(needToSave)) {
+                saveLines(needToSave, mongoTemplate);
+            }
+        }
+
         if (StringUtils.isNotBlank(dateFileId)) {
             MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
             if (cursor.hasNext()) {
@@ -196,10 +226,14 @@ public class DataStaticAnalysisTotal extends Ops implements Runnable {
                         needToSave.add(dataMap);
                     }else if(wldFlag&&"反诈".equals(type)){
                         needToSave.add(dataMap);
+                    }else if(wldFlagjzy&&"反诈".equals(type)){
+                        needToSave.add(dataMap);
                     }else if(!cftFlag){
                         needToSave.add(dataMap);
                     }else if(!wldFlag){
                         needToSave.add(dataMap);
+                    }else if(!wldFlagjzy){
+                        needToSave.add(dataMap);
                     }
 
                     if (needToSave.size() >= 1000) {