Browse Source

feat: 完成接口封装

weijianghai 2 years ago
parent
commit
6343284e08

+ 45 - 0
src/main/java/com/nokia/domainb/capability/controller/DomainController.java

@@ -0,0 +1,45 @@
+package com.nokia.domainb.capability.controller;
+
+import com.nokia.domainb.capability.dto.RouteDTO;
+import com.nokia.domainb.capability.dto.SaAndVolteDTO;
+import com.nokia.domainb.capability.dto.SaDTO;
+import com.nokia.domainb.capability.service.DomainService;
+import com.nokia.domainb.common.http.R;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/domainB/api")
+@RestController
+public class DomainController {
+    private final DomainService domainService;
+
+    public DomainController(DomainService domainService) {
+        this.domainService = domainService;
+    }
+
+    /**
+     * 路由查询
+     */
+    @PostMapping("/route/")
+    public R route(@RequestBody RouteDTO dto) {
+        return domainService.route(dto);
+    }
+
+    /**
+     * 5GSA查询
+     */
+    @PostMapping("/sa/")
+    public R sa(@RequestBody SaDTO dto) {
+        return domainService.sa(dto);
+    }
+
+    /**
+     * 功能查询
+     */
+    @PostMapping("/product/saAndVolte/")
+    public R saAndVolte(@RequestBody SaAndVolteDTO dto) {
+        return domainService.saAndVolte(dto);
+    }
+}

+ 12 - 0
src/main/java/com/nokia/domainb/capability/dto/CommonDTO.java

@@ -0,0 +1,12 @@
+package com.nokia.domainb.capability.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class CommonDTO {
+    private String fromSystem;
+}

+ 16 - 0
src/main/java/com/nokia/domainb/capability/dto/RouteDTO.java

@@ -0,0 +1,16 @@
+package com.nokia.domainb.capability.dto;
+
+import lombok.*;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@NoArgsConstructor
+public class RouteDTO extends CommonDTO {
+    private String phoneNumber;
+
+    public RouteDTO(String fromSystem, String phoneNumber) {
+        super(fromSystem);
+        this.phoneNumber = phoneNumber;
+    }
+}

+ 12 - 0
src/main/java/com/nokia/domainb/capability/dto/SaAndVolteDTO.java

@@ -0,0 +1,12 @@
+package com.nokia.domainb.capability.dto;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class SaAndVolteDTO extends CommonDTO {
+    private String phoneNumber;
+}

+ 10 - 0
src/main/java/com/nokia/domainb/capability/dto/SaDTO.java

@@ -0,0 +1,10 @@
+package com.nokia.domainb.capability.dto;
+
+import lombok.*;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class SaDTO extends CommonDTO {
+    private String phoneNumber;
+}

+ 23 - 0
src/main/java/com/nokia/domainb/capability/exception/ControllerExceptionHandler.java

@@ -0,0 +1,23 @@
+package com.nokia.domainb.capability.exception;
+
+import com.nokia.domainb.common.http.R;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+/**
+ * 请求异常处理
+ */
+@Slf4j
+@RestControllerAdvice
+public class ControllerExceptionHandler
+{
+    @ExceptionHandler({Exception.class})
+    public ResponseEntity exceptionHandler(Exception e)
+    {
+        log.error("╭( ′• o •′ )╭☞ 发生错误了 {}", e.getMessage(), e);
+        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(R.error());
+    }
+}

+ 129 - 0
src/main/java/com/nokia/domainb/capability/service/DomainService.java

@@ -0,0 +1,129 @@
+package com.nokia.domainb.capability.service;
+
+import cn.chinaunicom.open.nlgxptconnection.COMPConnectionContext;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.nokia.domainb.capability.Foreignproduct;
+import com.nokia.domainb.capability.QryRouteAll;
+import com.nokia.domainb.capability.QryUserIsUdm;
+import com.nokia.domainb.capability.dto.RouteDTO;
+import com.nokia.domainb.capability.dto.SaAndVolteDTO;
+import com.nokia.domainb.capability.dto.SaDTO;
+import com.nokia.domainb.capability.vo.RouteVO;
+import com.nokia.domainb.capability.vo.SaAndVolteVO;
+import com.nokia.domainb.capability.vo.SaVO;
+import com.nokia.domainb.common.http.R;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class DomainService {
+    public R route(RouteDTO dto) {
+        QryRouteAll qryRouteAll = new QryRouteAll();
+        String result = qryRouteAll.query(dto.getPhoneNumber());
+        JsonObject jsonObject = JsonParser.parseString(result).getAsJsonObject();
+        JsonObject data = jsonObject.getAsJsonObject("UNI_BSS_BODY")
+                .getAsJsonObject("QRYROUTEALL_RSP")
+                .getAsJsonObject("RSP")
+                .getAsJsonArray("DATA")
+                .get(0)
+                .getAsJsonObject();
+        RouteVO vo = new RouteVO();
+        vo.setPhoneNumber(dto.getPhoneNumber());
+        JsonElement routeTypeElement = data.get("ROUTE_TYPE");
+        if (routeTypeElement != null) {
+            vo.setRouteType(routeTypeElement.getAsString());
+        }
+
+        JsonElement userStatusElement = data.get("USER_STATUS");
+        if (userStatusElement != null) {
+            vo.setUserStatus(userStatusElement.getAsString());
+        }
+
+        JsonElement provinceCodeElement = data.get("PROVINCE_CODE");
+        if (provinceCodeElement != null) {
+            vo.setProvinceCode(data.get("PROVINCE_CODE").getAsString());
+        }
+
+        JsonElement eparchyCodeElement = data.get("EPARCHY_CODE");
+        if (eparchyCodeElement != null) {
+            vo.setEparchyCode(eparchyCodeElement.getAsString());
+        }
+        boolean isUnicomNumber = "1".equals(vo.getUserStatus()) || "2".equals(vo.getUserStatus());
+        vo.setIsUnicomNumber(isUnicomNumber);
+        return R.ok().data(vo);
+    }
+
+    public R sa(SaDTO dto) {
+        R r = route(new RouteDTO(dto.getFromSystem(), dto.getPhoneNumber()));
+        RouteVO routeVO = (RouteVO) r.getData();
+        SaVO vo = new SaVO();
+        vo.setIsUnicomNumber(false);
+        vo.setIsHaveSa(false);
+        vo.setIsUdmUser(false);
+        if (Boolean.FALSE.equals(routeVO.getIsUnicomNumber())) {
+            return R.ok().data(vo);
+        }
+
+        vo.setIsUnicomNumber(true);
+        QryUserIsUdm qryUserIsUdm = new QryUserIsUdm();
+        COMPConnectionContext result = qryUserIsUdm.query(dto.getPhoneNumber(), routeVO.getProvinceCode(), false);
+        JsonObject jsonObject = JsonParser.parseString(result.getResponseContext()).getAsJsonObject();
+        JsonObject data = jsonObject.getAsJsonObject("UNI_BSS_BODY")
+                .getAsJsonObject("QRY_USER_IS_UDM_RSP")
+                .getAsJsonObject("RSP")
+                .getAsJsonArray("DATA")
+                .get(0)
+                .getAsJsonObject();
+        JsonElement isHaveSaElement = data.get("IS_HAVE_SA");
+        if (isHaveSaElement != null) {
+            vo.setIsHaveSa("Y".equals(isHaveSaElement.getAsString()));
+        }
+
+        JsonElement isUdmUserElement = data.get("IS_UDM_USER");
+        if (isUdmUserElement != null) {
+            vo.setIsUdmUser("Y".equals(isUdmUserElement.getAsString()));
+        }
+
+        return R.ok().data(vo);
+    }
+
+    public R saAndVolte(SaAndVolteDTO dto) {
+        R r = route(new RouteDTO(dto.getFromSystem(), dto.getPhoneNumber()));
+        RouteVO routeVO = (RouteVO) r.getData();
+        SaAndVolteVO vo = new SaAndVolteVO();
+        vo.setIsHebeiUnicomNumber(false);
+        vo.setIsHaveSa(false);
+        vo.setIsHaveVolte(false);
+        // 非联通号码
+        if (Boolean.FALSE.equals(routeVO.getIsUnicomNumber())) {
+            return R.ok().data(vo);
+        }
+
+        Foreignproduct foreignproduct = new Foreignproduct();
+        COMPConnectionContext result = foreignproduct.query(dto.getPhoneNumber(), routeVO.getProvinceCode(), false);
+        JsonObject jsonObject = JsonParser.parseString(result.getResponseContext()).getAsJsonObject();
+        String status = jsonObject.getAsJsonObject("UNI_BSS_BODY")
+                .getAsJsonObject("FOREIGN_PRODUCT_RSP")
+                .get("STATUS")
+                .getAsString();
+        // 非河北号码
+        if ("8888".equals(status)) {
+            return R.ok().data(vo);
+        }
+
+        vo.setIsHebeiUnicomNumber(true);
+        String res = result.getResponseContext();
+        if (res.contains("VoLTE")) {
+            vo.setIsHaveVolte(true);
+        }
+
+        if (res.contains("SA")) {
+            vo.setIsHaveSa(true);
+        }
+
+        return R.ok().data(vo);
+    }
+}

+ 13 - 0
src/main/java/com/nokia/domainb/capability/vo/RouteVO.java

@@ -0,0 +1,13 @@
+package com.nokia.domainb.capability.vo;
+
+import lombok.Data;
+
+@Data
+public class RouteVO {
+    private String phoneNumber;
+    private Boolean isUnicomNumber;
+    private String userStatus;
+    private String routeType;
+    private String eparchyCode;
+    private String provinceCode;
+}

+ 10 - 0
src/main/java/com/nokia/domainb/capability/vo/SaAndVolteVO.java

@@ -0,0 +1,10 @@
+package com.nokia.domainb.capability.vo;
+
+import lombok.Data;
+
+@Data
+public class SaAndVolteVO {
+    private Boolean isHebeiUnicomNumber;
+    private Boolean isHaveSa;
+    private Boolean isHaveVolte;
+}

+ 10 - 0
src/main/java/com/nokia/domainb/capability/vo/SaVO.java

@@ -0,0 +1,10 @@
+package com.nokia.domainb.capability.vo;
+
+import lombok.Data;
+
+@Data
+public class SaVO {
+    private Boolean isUnicomNumber;
+    private Boolean isHaveSa;
+    private Boolean isUdmUser;
+}

+ 67 - 0
src/main/java/com/nokia/domainb/common/http/R.java

@@ -0,0 +1,67 @@
+package com.nokia.domainb.common.http;
+
+import lombok.Data;
+
+/**
+ * 返回值的统一包装
+ */
+@Data
+public class R {
+    private Boolean success;
+    private Integer code;
+    private String message;
+
+    private Object data = null;
+
+    /**
+     * 私有化构造方法,不允许在外部实例化
+     */
+    private R() {
+    }
+
+    /**
+     * 成功的静态方法
+     *
+     * @return R实例
+     */
+    public static R ok() {
+        R r = new R();
+        r.setSuccess(true);
+        r.setCode(200);
+        r.setMessage("成功");
+        return r;
+    }
+
+    /**
+     * 失败的静态方法
+     *
+     * @return R实例
+     */
+    public static R error() {
+        R r = new R();
+        r.setSuccess(false);
+        r.setCode(500);
+        r.setMessage("失败");
+        return r;
+    }
+    public R success(Boolean success) {
+        this.setSuccess(success);
+        return this;
+    }
+
+
+    public R code(Integer code) {
+        this.setCode(code);
+        return this;
+    }
+
+    public R data(Object object) {
+        this.setData(object);
+        return this;
+    }
+
+    public R message(String message) {
+        this.setMessage(message);
+        return this;
+    }
+}

+ 1 - 1
src/main/resources/application.properties

@@ -1 +1 @@
-server.port=12079
+server.port=12089

+ 22 - 29
src/test/java/com/nokia/domainb/capability/ForeignproductTest.java

@@ -1,17 +1,8 @@
 package com.nokia.domainb.capability;
 
 import cn.chinaunicom.open.nlgxptconnection.COMPConnectionContext;
-import com.nokia.domainb.util.Utils;
-import de.siegmar.fastcsv.writer.CsvWriter;
 import org.junit.jupiter.api.Test;
 
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.time.LocalDateTime;
-import java.util.Set;
-
 /**
  * 已订购产品查询
  * json_microservice_users_foreignproduct
@@ -20,25 +11,27 @@ public class ForeignproductTest {
     @Test
     void testQuery() {
         Foreignproduct foreignproduct = new Foreignproduct();
-        Set<String> phones = Utils.readPhones();
-//        String filePath = "result/已订购产品查询样本.csv";
-        String filePath = "result/已订购产品查询.csv";
-        try (OutputStreamWriter osw = new OutputStreamWriter(Files.newOutputStream(Paths.get(filePath)), "GBK");
-             CsvWriter csv = CsvWriter.builder().build(osw);) {
-            csv.writeRow("手机号", "时间", "调用时长", "结果");
-            phones.forEach(t -> {
-                String[] a = t.split(",");
-                String phone = a[0];
-                String provinceCode = a[1];
-                LocalDateTime startTime = LocalDateTime.now();
-                long startTimestamp = System.currentTimeMillis();
-                COMPConnectionContext result = foreignproduct.query(phone, provinceCode, false);
-                long endTimestamp = System.currentTimeMillis();
-                long cost = endTimestamp - startTimestamp;
-                csv.writeRow(phone, startTime.toString(), String.valueOf(cost), result.getResponseContext());
-            });
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
+        COMPConnectionContext result = foreignproduct.query("18622305641", "13", false);
+        System.out.println(result.getResponseContext());
+//        Set<String> phones = Utils.readPhones();
+////        String filePath = "result/已订购产品查询样本.csv";
+//        String filePath = "result/已订购产品查询.csv";
+//        try (OutputStreamWriter osw = new OutputStreamWriter(Files.newOutputStream(Paths.get(filePath)), "GBK");
+//             CsvWriter csv = CsvWriter.builder().build(osw);) {
+//            csv.writeRow("手机号", "时间", "调用时长", "结果");
+//            phones.forEach(t -> {
+//                String[] a = t.split(",");
+//                String phone = a[0];
+//                String provinceCode = a[1];
+//                LocalDateTime startTime = LocalDateTime.now();
+//                long startTimestamp = System.currentTimeMillis();
+//                COMPConnectionContext result = foreignproduct.query(phone, provinceCode, false);
+//                long endTimestamp = System.currentTimeMillis();
+//                long cost = endTimestamp - startTimestamp;
+//                csv.writeRow(phone, startTime.toString(), String.valueOf(cost), result.getResponseContext());
+//            });
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//        }
     }
 }

+ 36 - 49
src/test/java/com/nokia/domainb/capability/QryRouteAllTest.java

@@ -1,29 +1,16 @@
-//package com.nokia.domainb.capability;
-//
-//import cn.chinaunicom.open.nlgxptconnection.COMPConnectionContext;
-//import com.google.gson.JsonElement;
-//import com.google.gson.JsonObject;
-//import com.google.gson.JsonParser;
-//import com.nokia.domainb.capability.entity.Route;
-//import com.nokia.domainb.util.Utils;
-//import de.siegmar.fastcsv.writer.CsvWriter;
-//import org.junit.jupiter.api.Test;
-//import org.springframework.util.StringUtils;
-//
-//import java.io.BufferedWriter;
-//import java.io.FileWriter;
-//import java.io.IOException;
-//import java.io.OutputStreamWriter;
-//import java.nio.file.Files;
-//import java.nio.file.Paths;
-//import java.time.LocalDateTime;
-//import java.util.Set;
-//
-//public class QryRouteAllTest {
-//    @Test
-//    void testQuery() {
-//        QryRouteAll qryRouteAll = new QryRouteAll();
-//        //        Set<String> phones = Collections.singleton("13739798862");
+package com.nokia.domainb.capability;
+
+import cn.chinaunicom.open.nlgxptconnection.COMPConnectionContext;
+import com.nokia.domainb.capability.entity.Route;
+import org.junit.jupiter.api.Test;
+
+public class QryRouteAllTest {
+    @Test
+    void testQuery() {
+        QryRouteAll qryRouteAll = new QryRouteAll();
+        String result = qryRouteAll.query("18503369666");
+        System.out.println(result);
+//        Set<String> phones = Collections.singleton("13739798862");
 //        Set<String> phones = Utils.readPhones();
 //        String phonesPath = "phones.txt";
 //        String filePath = "result/路由查询.csv";
@@ -77,26 +64,26 @@
 //        } catch (IOException e) {
 //            e.printStackTrace();
 //        }
-//    }
-//
-//    @Test
-//    void testQueryWithSdk() {
-//        QryRouteAll qryRouteAll = new QryRouteAll();
-//        COMPConnectionContext result = qryRouteAll.queryWithSdk("13739798862");
-//        System.out.println(result.getResponseContext());
-//    }
-//
-//    @Test
-//    void testQuery2() {
-//        QryRouteAll qryRouteAll = new QryRouteAll();
-//        Route result = qryRouteAll.query2("13231899751", false);
-//        System.out.println(result);
-//    }
-//
-//    @Test
-//    void testQuery22() {
-//        QryRouteAll qryRouteAll = new QryRouteAll();
-//        Route result = qryRouteAll.query2("13739798862", false);
-//        System.out.println(result);
-//    }
-//}
+    }
+
+    @Test
+    void testQueryWithSdk() {
+        QryRouteAll qryRouteAll = new QryRouteAll();
+        COMPConnectionContext result = qryRouteAll.queryWithSdk("13739798862");
+        System.out.println(result.getResponseContext());
+    }
+
+    @Test
+    void testQuery2() {
+        QryRouteAll qryRouteAll = new QryRouteAll();
+        Route result = qryRouteAll.query2("13231899751", false);
+        System.out.println(result);
+    }
+
+    @Test
+    void testQuery22() {
+        QryRouteAll qryRouteAll = new QryRouteAll();
+        Route result = qryRouteAll.query2("13739798862", false);
+        System.out.println(result);
+    }
+}

+ 22 - 29
src/test/java/com/nokia/domainb/capability/QryUserIsUdmTest.java

@@ -1,40 +1,33 @@
 package com.nokia.domainb.capability;
 
 import cn.chinaunicom.open.nlgxptconnection.COMPConnectionContext;
-import com.nokia.domainb.util.Utils;
-import de.siegmar.fastcsv.writer.CsvWriter;
 import org.junit.jupiter.api.Test;
 
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.time.LocalDateTime;
-import java.util.Set;
-
 public class QryUserIsUdmTest {
     @Test
     void testQuery() {
         QryUserIsUdm qryUserIsUdm = new QryUserIsUdm();
-        Set<String> phones = Utils.readPhones();
-//        String filePath = "result/微服务_用户中心_5G用户查询样本.csv";
-        String filePath = "result/微服务_用户中心_5G用户查询.csv";
-        try (OutputStreamWriter osw = new OutputStreamWriter(Files.newOutputStream(Paths.get(filePath)), "GBK");
-             CsvWriter csv = CsvWriter.builder().build(osw);) {
-            csv.writeRow("手机号", "时间", "调用时长", "结果");
-            phones.forEach(t -> {
-                String[] a = t.split(",");
-                String phone = a[0];
-                String provinceCode = a[1];
-                LocalDateTime startTime = LocalDateTime.now();
-                long startTimestamp = System.currentTimeMillis();
-                COMPConnectionContext result = qryUserIsUdm.query(phone, provinceCode, false);
-                long endTimestamp = System.currentTimeMillis();
-                long cost = endTimestamp - startTimestamp;
-                csv.writeRow(phone, startTime.toString(), String.valueOf(cost), result.getResponseContext());
-            });
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
+        COMPConnectionContext result = qryUserIsUdm.query("18503369666", "18", false);
+        System.out.println(result.getResponseContext());
+//        Set<String> phones = Utils.readPhones();
+////        String filePath = "result/微服务_用户中心_5G用户查询样本.csv";
+//        String filePath = "result/微服务_用户中心_5G用户查询.csv";
+//        try (OutputStreamWriter osw = new OutputStreamWriter(Files.newOutputStream(Paths.get(filePath)), "GBK");
+//             CsvWriter csv = CsvWriter.builder().build(osw);) {
+//            csv.writeRow("手机号", "时间", "调用时长", "结果");
+//            phones.forEach(t -> {
+//                String[] a = t.split(",");
+//                String phone = a[0];
+//                String provinceCode = a[1];
+//                LocalDateTime startTime = LocalDateTime.now();
+//                long startTimestamp = System.currentTimeMillis();
+//                COMPConnectionContext result = qryUserIsUdm.query(phone, provinceCode, false);
+//                long endTimestamp = System.currentTimeMillis();
+//                long cost = endTimestamp - startTimestamp;
+//                csv.writeRow(phone, startTime.toString(), String.valueOf(cost), result.getResponseContext());
+//            });
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//        }
     }
 }