Forráskód Böngészése

feat: 实现输入短号(固网号码),查询对应的手机号码接口

weijianghai 1 éve
szülő
commit
a4abf00662

+ 40 - 0
doc/接口文档/domainBAPI接口说明.md

@@ -192,3 +192,43 @@ creditClass: 信用等级
 totalCreditValue: 用户总信用度
 
 availableCreditValue: 可用额度
+
+## 接口6:输入短号(固网号码),查询对应的手机号码
+
+```http
+POST HTTP://127.0.0.1:12091/domainB/api/spthreepartcheck/getPhoneByShortNumber
+Content-Type: application/json
+
+{
+  "shortNumber": "03132795117",
+  "fromSystem": "test"
+}
+```
+
+成功
+```json
+{
+  "success": true,
+  "code": 200,
+  "message": "成功",
+  "data": {
+    "phone": "13231360757"
+  }
+}
+```
+
+失败
+```json
+{
+    "success": false,
+    "code": 500,
+    "message": "[WARNING]CheckAllInfoNodeParser.cpp:12180,12CRMException-8888: $$$20050$$$根据用户号码获取用户资料无数据!",
+    "data": null
+}
+```
+
+### 输入短号(固网号码),查询对应的手机号码输出参数说明
+
+shortNumber: 短号
+
+phone: 手机号

+ 10 - 0
src/main/java/com/nokia/common/exception/BizException.java

@@ -0,0 +1,10 @@
+package com.nokia.common.exception;
+
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor
+public class BizException extends RuntimeException{
+    public BizException(String message) {
+        super(message);
+    }
+}

+ 22 - 0
src/main/java/com/nokia/common/exception/MyRuntimeException.java

@@ -0,0 +1,22 @@
+package com.nokia.common.exception;
+
+public class MyRuntimeException extends RuntimeException{
+    public MyRuntimeException() {
+    }
+
+    public MyRuntimeException(String message) {
+        super(message);
+    }
+
+    public MyRuntimeException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public MyRuntimeException(Throwable cause) {
+        super(cause);
+    }
+
+    public MyRuntimeException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+        super(message, cause, enableSuppression, writableStackTrace);
+    }
+}

+ 2 - 2
src/main/java/com/nokia/domainb/capability/SpThreePartCheck.java

@@ -15,7 +15,7 @@ public class SpThreePartCheck extends AbstractQuery {
     private static final String url = "http://192.168.70.130:8000/api/microservice/users/spthreepartcheck/v1";
     private static final String urlTest = "http://10.124.150.230:8000/api/microservice/users/spthreepartcheck/v1";
 
-    public COMPConnectionContext query(String phoneNumber, String provinceCode, boolean test) {
+    public COMPConnectionContext query(String phoneNumber, String provinceCode, String serviceClassCode, boolean test) {
         String realAppSecret = test ? appSecretTest : appSecret;
         String realUrl = test ? urlTest : url;
         COMPConnection compConnection = new COMPJsonConnection(appId, realAppSecret);
@@ -36,7 +36,7 @@ public class SpThreePartCheck extends AbstractQuery {
         msg.put("operatorId", "v-wangyl5740-1");
         msg.put("channelId", "18zzzzz");
         msg.put("tradeTypeCode", "9999");
-        msg.put("serviceClassCode", "50");
+        msg.put("serviceClassCode", serviceClassCode);
         spThreepartCheckReq.put("APPKEY", "hbltywts");
         spThreepartCheckReq.put("APPTX", appId);
         COMPConnectionContext context = compConnection.excute(Const.HttpMethodType.POST, realUrl, req, false);

+ 15 - 0
src/main/java/com/nokia/domainb/config/web/ControllerExceptionHandler.java

@@ -1,5 +1,7 @@
 package com.nokia.domainb.config.web;
 
+import com.nokia.common.exception.BizException;
+import com.nokia.common.exception.MyRuntimeException;
 import com.nokia.common.http.R;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.TypeMismatchException;
@@ -70,6 +72,19 @@ public class ControllerExceptionHandler
         return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(R.error().message(e.getMessage()));
     }
 
+    @ExceptionHandler(BizException.class)
+    public ResponseEntity<Object> bizExceptionHandler(BizException e)
+    {
+        return ResponseEntity.ok().body(R.error().message(e.getMessage()));
+    }
+
+    @ExceptionHandler(MyRuntimeException.class)
+    public ResponseEntity<Object> myRuntimeExceptionHandler(MyRuntimeException e)
+    {
+        log.error("╭( ′• o •′ )╭☞ 发生错误了 {}", e.getMessage(), e);
+        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(R.error().message(e.getMessage()));
+    }
+
     @ExceptionHandler(Exception.class)
     public ResponseEntity<Object> exceptionHandler(Exception e)
     {

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

@@ -56,4 +56,12 @@ public class DomainController {
     public R qryowefee(@RequestBody QryowefeeDTO dto) {
         return domainService.qryowefee(dto);
     }
+
+    /**
+     * 输入短号(固网号码),查询对应的手机号码
+     */
+    @PostMapping("/spthreepartcheck/getPhoneByShortNumber")
+    public R getPhoneByShortNumber(@RequestBody GetPhoneByShortNumberDTO dto) {
+        return domainService.getPhoneByShortNumber(dto);
+    }
 }

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

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

+ 47 - 2
src/main/java/com/nokia/domainb/service/DomainService.java

@@ -1,7 +1,12 @@
 package com.nokia.domainb.service;
 
 import cn.chinaunicom.open.nlgxptconnection.COMPConnectionContext;
-import com.google.gson.*;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.nokia.common.exception.BizException;
+import com.nokia.common.exception.MyRuntimeException;
 import com.nokia.common.http.R;
 import com.nokia.domainb.capability.*;
 import com.nokia.domainb.dto.*;
@@ -169,7 +174,7 @@ public class DomainService {
 
     public R userState(UserStateDTO dto) {
         SpThreePartCheck spThreePartCheck = new SpThreePartCheck();
-        COMPConnectionContext result = spThreePartCheck.query(dto.getPhoneNumber(), "18", false);
+        COMPConnectionContext result = spThreePartCheck.query(dto.getPhoneNumber(), "18", "50", false);
         JsonObject jsonObject = JsonParser.parseString(result.getResponseContext()).getAsJsonObject();
         JsonObject rsp = jsonObject.getAsJsonObject("UNI_BSS_BODY")
                 .getAsJsonObject("SP_THREEPART_CHECK_RSP")
@@ -339,4 +344,44 @@ public class DomainService {
             return R.ok().data(vo);
         }, qryowefeeExecutor);
     }
+
+    public R getPhoneByShortNumber(GetPhoneByShortNumberDTO dto) {
+        SpThreePartCheck spThreePartCheck = new SpThreePartCheck();
+        COMPConnectionContext result = spThreePartCheck.query(dto.getShortNumber(), "18", "30", false);
+        JsonObject jsonObject = JsonParser.parseString(result.getResponseContext()).getAsJsonObject();
+        if (!"00000".equals(jsonObject.getAsJsonObject("UNI_BSS_HEAD").get("RESP_CODE").getAsString())) {
+            throw new MyRuntimeException(jsonObject.getAsJsonObject("UNI_BSS_HEAD").get("RESP_DESC").getAsString());
+        }
+        JsonObject rsp = jsonObject.getAsJsonObject("UNI_BSS_BODY")
+                .getAsJsonObject("SP_THREEPART_CHECK_RSP")
+                .getAsJsonObject("RSP");
+        if (rsp == null) {
+            throw new MyRuntimeException("能开接口调用异常");
+        }
+
+        String rspCode = rsp.get("RSP_CODE").getAsString();
+        if (!"0000".equals(rspCode)) {
+            String rspDesc = rsp.get("RSP_DESC").getAsString();
+            throw new BizException(rspDesc);
+        }
+
+        JsonObject data = rsp.getAsJsonArray("DATA").get(0).getAsJsonObject();
+        JsonArray svcInfo = data.getAsJsonObject("userInfo").getAsJsonArray("svcInfo");
+        for (JsonElement t : svcInfo) {
+            JsonObject tt = t.getAsJsonObject();
+            if ("30501".equals(tt.get("serviceId").getAsString())) {
+                JsonArray attrInfo = tt.getAsJsonArray("attrInfo");
+                for (JsonElement ttt : attrInfo) {
+                    JsonObject tttt = ttt.getAsJsonObject();
+                    if ("s184".equals(tttt.get("attrCode").getAsString())) {
+                        return R.ok().data(new GetPhoneByShortNumberVO(tttt.get("attrValue").getAsString()));
+                    }
+                }
+                // 循环结束说明不包含s184
+                throw new BizException("用户开通了一号双机(serviceId 30501)业务,但未查询到手机号码(s184)");
+            }
+        }
+        // 循环结束说明不包含一号双机业务
+        throw new BizException("用户未开通一号双机(serviceId 30501)业务");
+    }
 }

+ 12 - 0
src/main/java/com/nokia/domainb/vo/GetPhoneByShortNumberVO.java

@@ -0,0 +1,12 @@
+package com.nokia.domainb.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class GetPhoneByShortNumberVO {
+    private String phone;
+}

+ 0 - 4
src/main/resources/logback-spring.xml

@@ -44,11 +44,7 @@
     </appender>
     <root level="INFO">
         <appender-ref ref="STDOUT"/>
-    </root>
-    <root level="TRACE">
         <appender-ref ref="TRACE_FILE"/>
-    </root>
-    <root level="ERROR">
         <appender-ref ref="ERROR_FILE"/>
     </root>
 </configuration>