Browse Source

1.1 打开了定时任务,增加了终端信息的整合

lifuquan 3 years ago
parent
commit
c2cf2ac2d8

+ 29 - 0
other/http/http测试.http

@@ -1,3 +1,24 @@
+###
+POST http://10.170.42.91:12088/terminal/volte?phoneNumber=13231899751
+Content-Type: application/x-www-form-urlencoded
+
+###
+POST http://10.170.42.93:12900/terminal/5g?phoneNumber=13231899751
+Content-Type: application/x-www-form-urlencoded
+
+###
+POST http://10.170.42.93:12900/terminal/volte?phoneNumber=13231899751
+Content-Type: application/x-www-form-urlencoded
+
+###
+GET http://10.170.42.93:12900/
+Accept: application/json
+
+### 获取完整信息
+POST http://localhost:12900/terminal/info?phoneNumber=18630189235
+Content-Type: application/x-www-form-urlencoded
+
+###
 POST http://localhost:12900/terminal/5g?phoneNumber=13231899751
 Content-Type: application/x-www-form-urlencoded
 
@@ -10,3 +31,11 @@ GET http://localhost:12900/
 Accept: application/json
 
 ###
+GET http://133.96.92.136:12090/
+Accept: application/json
+
+###
+POST http://133.96.92.136:12090/terminal/volte?phoneNumber=13231899751
+Content-Type: application/x-www-form-urlencoded
+
+###

+ 7 - 1
pom.xml

@@ -6,7 +6,7 @@
 
     <groupId>top.lifuquan</groupId>
     <artifactId>terminal</artifactId>
-    <version>1.0</version>
+    <version>1.1</version>
 
     <packaging>jar</packaging>
 
@@ -24,6 +24,12 @@
 
     <dependencies>
 
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.76</version>
+        </dependency>
+
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>

+ 1 - 1
src/main/java/top/lifuquan/config/ScheduledConfig.java

@@ -14,7 +14,7 @@ import java.util.Date;
 import java.util.concurrent.Executors;
 
 @Slf4j
-// @Configuration
+@Configuration
 public class ScheduledConfig implements SchedulingConfigurer {
     // 由配置文件指定线程数
     @Value("${scheduled.pool.size}")

+ 37 - 3
src/main/java/top/lifuquan/controller/TerminalInfoController.java

@@ -5,11 +5,13 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
+import top.lifuquan.pojo.CustomerServiceTerminalInfo;
 import top.lifuquan.pojo.G5TerminalInfo;
 import top.lifuquan.pojo.VolteTerminalInfo;
 import top.lifuquan.service.TerminalInfoService;
 import top.lifuquan.vo.G5TerminalInfoVo;
 import top.lifuquan.vo.R;
+import top.lifuquan.vo.TerminalInfoVo;
 import top.lifuquan.vo.VolteTerminalInfoVo;
 
 import javax.annotation.Resource;
@@ -20,12 +22,44 @@ import java.text.ParseException;
 public class TerminalInfoController {
 
     @Resource
-    private TerminalInfoService terminalInfoService;
+    private TerminalInfoService service;
+
+    @ResponseBody
+    @RequestMapping(value = "info", method = RequestMethod.POST)
+    public R getTerminalInfo(@RequestParam String phoneNumber) {
+        G5TerminalInfo g5TerminalInfo = service.find5GInfoByPhoneNumber(phoneNumber);
+        VolteTerminalInfo volteTerminalInfo = service.findVolteInfoByPhoneNumber(phoneNumber);
+        CustomerServiceTerminalInfo customerServiceTerminalInfo = service.getCustomerServiceTerminalInfoByPhoneNumber(phoneNumber);
+
+        // 包装TerminalInfoVO
+        TerminalInfoVo infoVo = new TerminalInfoVo();
+        infoVo.setMsisdn(phoneNumber);
+        if (customerServiceTerminalInfo != null) {
+            infoVo.setFactName(customerServiceTerminalInfo.getBrand());
+            infoVo.setTerminalName(customerServiceTerminalInfo.getProduct());
+            infoVo.setSubcategory(customerServiceTerminalInfo.getSubcategory());
+            infoVo.setNetType(customerServiceTerminalInfo.getNetType());
+        }
+        if (volteTerminalInfo != null) {
+            VolteTerminalInfoVo volteTerminalInfoVo = new VolteTerminalInfoVo(volteTerminalInfo);
+            infoVo.setFactName(volteTerminalInfoVo.getFactName());
+            infoVo.setTerminalName(volteTerminalInfoVo.getTerminalName());
+            infoVo.setIsVolte(volteTerminalInfoVo.getIsVolte());
+        }
+        if (g5TerminalInfo != null) {
+            G5TerminalInfoVo g5TerminalInfoVo = new G5TerminalInfoVo(g5TerminalInfo);
+            infoVo.setFactName(g5TerminalInfoVo.getFactName());
+            infoVo.setTerminalName(g5TerminalInfoVo.getTerminalName());
+            infoVo.setStatus5g(g5TerminalInfoVo.getStatus5g());
+            infoVo.setUsed5g(g5TerminalInfoVo.getUsed5g());
+        }
+        return R.ok().data("data", infoVo);
+    }
 
     @ResponseBody
     @RequestMapping(value = "volte", method = RequestMethod.POST)
     public R getVoLteTerminalInfo(@RequestParam String phoneNumber) throws ParseException {
-        VolteTerminalInfo volteTerminalInfo = terminalInfoService.findVolteInfoByPhoneNumber(phoneNumber);
+        VolteTerminalInfo volteTerminalInfo = service.findVolteInfoByPhoneNumber(phoneNumber);
         if (volteTerminalInfo != null) {
             return R.ok().data("data", new VolteTerminalInfoVo(volteTerminalInfo));
         }
@@ -35,7 +69,7 @@ public class TerminalInfoController {
     @ResponseBody
     @RequestMapping(value = "5g", method = RequestMethod.POST)
     public R get5GTerminalInfo(@RequestParam String phoneNumber) throws ParseException {
-        G5TerminalInfo terminalInfo = terminalInfoService.find5GInfoByPhoneNumber(phoneNumber);
+        G5TerminalInfo terminalInfo = service.find5GInfoByPhoneNumber(phoneNumber);
         if (terminalInfo != null) {
             return R.ok().data("data", new G5TerminalInfoVo(terminalInfo));
         }

+ 19 - 0
src/main/java/top/lifuquan/pojo/CustomerServiceTerminalInfo.java

@@ -0,0 +1,19 @@
+package top.lifuquan.pojo;
+
+import lombok.Data;
+
+@Data
+public class CustomerServiceTerminalInfo {
+
+    // 手机号码
+    private String msisdn;
+    // 厂家
+    private String brand;
+    // 终端类型
+    private String product;
+    // 操作系统
+    private String subcategory;
+    // 网络类型
+    private String netType;
+
+}

+ 3 - 0
src/main/java/top/lifuquan/pojo/G5TerminalInfo.java

@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
+/**
+ * 5GNSA终端
+ */
 @Data
 @TableName("terminal_info.o_info_list_5g_terminal")
 public class G5TerminalInfo {

+ 3 - 0
src/main/java/top/lifuquan/pojo/TaskRecord.java

@@ -5,6 +5,9 @@ import lombok.Data;
 
 import java.util.Date;
 
+/**
+ * 定时任务记录
+ */
 @Data
 @TableName("terminal_info.task_record")
 public class TaskRecord {

+ 3 - 0
src/main/java/top/lifuquan/pojo/VolteTerminalInfo.java

@@ -3,6 +3,9 @@ package top.lifuquan.pojo;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
+/**
+ * volte终端
+ */
 @Data
 @TableName("terminal_info.o_info_list_volte_terminal")
 public class VolteTerminalInfo {

+ 37 - 0
src/main/java/top/lifuquan/service/TerminalInfoService.java

@@ -1,13 +1,19 @@
 package top.lifuquan.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.springframework.http.RequestEntity;
 import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
 import top.lifuquan.dao.G5TerminalInfoDao;
 import top.lifuquan.dao.VolteTerminalInfoDao;
+import top.lifuquan.pojo.CustomerServiceTerminalInfo;
 import top.lifuquan.pojo.G5TerminalInfo;
 import top.lifuquan.pojo.VolteTerminalInfo;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 
 @Service
 public class TerminalInfoService {
@@ -29,4 +35,35 @@ public class TerminalInfoService {
         info.setMsisdn(phoneNumber);
         return g5TerminalInfoDao.selectOne(Wrappers.query(info));
     }
+
+    public CustomerServiceTerminalInfo getCustomerServiceTerminalInfoByPhoneNumber(String phoneNumber) {
+        RestTemplate template = new RestTemplate();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd+HH:mm:00");
+        Date today = new Date();
+        Date yesterday = new Date(today.getTime() - 1000 * 3600 * 24);
+        String sdate = format.format(yesterday);
+        String edate = format.format(today);
+
+        String url = "http://10.170.42.91:12088/api/customer/getPhoneInfo?sdate="
+                + sdate
+                + "&edate="
+                + edate
+                + "&phone="
+                + phoneNumber
+                + "&module=0&is5GFlag=0&limitSpeed=0&uuidExcel=&lon=&lat=";
+
+        JSONObject jsonObject = template.postForObject(url, "", JSONObject.class);
+        if (jsonObject != null && jsonObject.getString("msg").equals("请求成功")) {
+            jsonObject = jsonObject.getJSONObject("data");
+            CustomerServiceTerminalInfo info = new CustomerServiceTerminalInfo();
+            info.setMsisdn(phoneNumber);
+            info.setBrand(jsonObject.getString("brand"));
+            info.setProduct(jsonObject.getString("product"));
+            info.setSubcategory(jsonObject.getString("subcategory"));
+            info.setNetType(jsonObject.getString("nettype"));
+            return info;
+        }
+        return null;
+    }
+
 }

+ 41 - 0
src/main/java/top/lifuquan/vo/TerminalInfoVo.java

@@ -0,0 +1,41 @@
+package top.lifuquan.vo;
+
+import lombok.Data;
+
+@Data
+public class TerminalInfoVo {
+
+    // 电话号码
+    private String msisdn;
+    // 终端生产厂家
+    private String factName = "";
+    // 终端设备类型名称
+    private String terminalName = "";
+    /**
+     * 字段说明:
+     * 在统计时段内,用户是否接入过5G网络
+     * 0:未登网   1:登网
+     */
+    private String used5g = "";
+    /**
+     * 字段说明:
+     * 统计当天5G开关是否曾打开
+     * true:打开   false:未打开
+     */
+    private String status5g = "";
+    /**
+     * 字段说明:
+     * 硬件无法识别:-3
+     * 其它终端硬件支持但无法识别软件是否支持或开关是否打开:-2
+     * 苹果终端硬件支持但无法识别软件是否支持或开关是否打开:-1
+     * 硬件不支持:0
+     * 硬件支持软件不支持:1
+     * 硬件软件支持但开关未打开:2
+     * 硬件软件支持且开关打开:3
+     */
+    private String isVolte = "";
+    // 操作系统
+    private String subcategory = "";
+    // 网络类型
+    private String netType = "";
+}

+ 4 - 4
src/main/java/top/lifuquan/vo/VolteTerminalInfoVo.java

@@ -23,13 +23,12 @@ public class VolteTerminalInfoVo {
      * 硬件软件支持且开关打开:3
      */
     private String isVolte;
-    @JsonFormat(pattern = "yyyy年M月d日")
-    private Date dayDate;
+    private String dayDate;
     private String factName;
     private String terminalName;
     private String hprovinceName;
 
-    public VolteTerminalInfoVo(VolteTerminalInfo volteTerminalInfo) throws ParseException {
+    public VolteTerminalInfoVo(VolteTerminalInfo volteTerminalInfo) {
         this.msisdn = volteTerminalInfo.getMsisdn();
         switch (volteTerminalInfo.getIsVolte()) {
             case -3:
@@ -56,7 +55,8 @@ public class VolteTerminalInfoVo {
             default:
                 this.isVolte = "出现未定义值,请记下号码并通知管理员";
         }
-        this.dayDate = new SimpleDateFormat("yyyyMMdd").parse(volteTerminalInfo.getDayDate());
+
+        this.dayDate = volteTerminalInfo.getDayDate();
         this.factName = volteTerminalInfo.getFactName();
         this.terminalName = volteTerminalInfo.getTerminalName();
         this.hprovinceName = volteTerminalInfo.getHprovinceName();

+ 25 - 0
src/test/java/top/lifuquan/service/TerminalInfoVoServiceTest.java

@@ -0,0 +1,25 @@
+package top.lifuquan.service;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+import top.lifuquan.pojo.CustomerServiceTerminalInfo;
+
+import javax.annotation.Resource;
+
+import static org.junit.Assert.*;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class TerminalInfoVoServiceTest {
+
+    @Resource
+    private TerminalInfoService service;
+
+    @Test
+    public void getCustomerServiceTerminalInfoByPhoneNumber() {
+        CustomerServiceTerminalInfo info = service.getCustomerServiceTerminalInfoByPhoneNumber("13231899751");
+        System.out.println(info);
+    }
+}