Pārlūkot izejas kodu

对接nlp数据查询系统(密码加密方式待修改)

zhangshuling 1 gadu atpakaļ
vecāks
revīzija
a1be9657ce

+ 7 - 0
xzl-admin/src/main/java/com/xzl/web/controller/system/SysLoginController.java

@@ -2,6 +2,8 @@ package com.xzl.web.controller.system;
 
 import java.util.List;
 import java.util.Set;
+
+import com.xzl.web.service.UserPortraitService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -34,6 +36,9 @@ public class SysLoginController
     @Autowired
     private SysPermissionService permissionService;
 
+    @Autowired
+    private UserPortraitService userPortraitService;
+
     /**
      * 登录方法
      * 
@@ -48,6 +53,8 @@ public class SysLoginController
         String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
                 loginBody.getUuid());
         ajax.put(Constants.TOKEN, token);
+        // 登录NLP系统
+        ajax.put("NLPAuthData", userPortraitService.loginNLP(loginBody));
         return ajax;
     }
 

+ 4 - 0
xzl-admin/src/main/java/com/xzl/web/service/UserPortraitService.java

@@ -1,7 +1,11 @@
 package com.xzl.web.service;
 
+import com.xzl.common.core.domain.model.LoginBody;
+
 import java.util.List;
 
 public interface UserPortraitService {
     List<String> getWordCloudInfo();
+
+    String loginNLP(LoginBody loginBody);
 }

+ 63 - 5
xzl-admin/src/main/java/com/xzl/web/service/impl/UserPortraitServiceImpl.java

@@ -1,21 +1,79 @@
 package com.xzl.web.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.xzl.common.core.domain.entity.SysDictData;
+import com.xzl.common.core.domain.model.LoginBody;
+import com.xzl.system.service.ISysDictDataService;
 import com.xzl.web.mapper.UserPortraitMapper;
 import com.xzl.web.service.UserPortraitService;
+import com.xzl.web.utils.RequestUtils;
+import io.netty.handler.codec.json.JsonObjectDecoder;
+import org.apache.commons.collections.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.yaml.snakeyaml.util.UriEncoder;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class UserPortraitServiceImpl implements UserPortraitService {
 
-    @Autowired
-    private UserPortraitMapper userPortraitMapper;
+  @Autowired
+  private UserPortraitMapper userPortraitMapper;
 
+  @Autowired
+  private ISysDictDataService dictDataService;
 
-    @Override
-    public List<String> getWordCloudInfo() {
-        return userPortraitMapper.getWordCloudInfo();
+  @Override
+  public List<String> getWordCloudInfo() {
+    return userPortraitMapper.getWordCloudInfo();
+  }
+
+
+  public String loginNLP(LoginBody loginBody) {
+    String username = loginBody.getUsername();
+    String password = loginBody.getPassword();
+
+    // 取npl默认用户
+    SysDictData dictParam = new SysDictData();
+    dictParam.setDictType("nlp_default");
+    List<SysDictData> sysDictDataList = dictDataService.selectDictDataList(dictParam);
+    if (sysDictDataList != null && sysDictDataList.size() > 0) {
+      SysDictData sysDictData = sysDictDataList.get(0);
+      if ("1".equals(sysDictData.getDictValue())) {
+        username = "data1";
+        password = "617218bb2a6568ce";
+      }
+    }
+/*
+//    String username = "data1";
+//    String password = "Abc@1234";
+      // 密码加密
+      password = "617218bb2a6568ce";
+ */
+    // 调用登录
+    Map loginForm = new HashMap();
+    loginForm.put("username", username);
+    loginForm.put("password", password);
+    loginForm.put("userAgent", 1);
+    loginForm.put("client", "zdwxxtyc");
+    loginForm.put("saveUsername", true);
+    JSONObject json = RequestUtils.httpRequest2("http://10.70.192.135:8000/api/v2/auth/login/", "post", JSON.toJSONString(loginForm), null);
+    if ("SUCCESS".equals(MapUtils.getString(json, "status"))) {
+      JSONObject data = json.getJSONObject("data");
+      Map rs = new HashMap();
+      rs.put("uid", data.getString("uid"));
+      rs.put("nickname", data.getString("nickname"));
+      rs.put("status", data.getIntValue("status"));
+      rs.put("token", data.getString("token"));
+      rs.put("role", data.getIntValue("role"));
+      rs.put("language", "zh-CN");
+      rs.put("tier", 1);
+      return JSON.toJSONString(rs);
     }
+    return null;
+  }
 }

+ 56 - 0
xzl-admin/src/main/java/com/xzl/web/utils/RequestUtils.java

@@ -15,6 +15,7 @@ import java.io.BufferedReader;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
+import java.net.HttpURLConnection;
 import java.net.InetAddress;
 import java.net.URL;
 import java.net.UnknownHostException;
@@ -83,6 +84,61 @@ public class RequestUtils {
         return jsonObject;
     }
 
+
+  public static JSONObject httpRequest2(String requestUrl, String requestMethod, String outputStr, Map<String, String> headers) {
+    JSONObject jsonObject = null;
+    StringBuffer buffer = new StringBuffer();
+    try {
+      URL url = new URL(requestUrl);
+      HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();
+      httpUrlConn.setDoOutput(true);
+      httpUrlConn.setDoInput(true);
+      httpUrlConn.setUseCaches(false);
+      httpUrlConn.setRequestMethod(requestMethod.toUpperCase());
+
+      if (headers != null) {
+        for (Map.Entry<String, String> entry : headers.entrySet()) {
+          httpUrlConn.setRequestProperty(entry.getKey(), entry.getValue());
+        }
+      }
+
+      if ("GET".equalsIgnoreCase(requestMethod)) httpUrlConn.connect();
+      if ("POST".equalsIgnoreCase(requestMethod)) {
+        httpUrlConn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
+        httpUrlConn.setRequestProperty("accept", "application/json");
+      }
+
+      if (null != outputStr) {
+        OutputStream outputStream = httpUrlConn.getOutputStream();
+        outputStream.write(outputStr.getBytes("UTF-8"));
+        outputStream.close();
+      }
+      InputStream inputStream = httpUrlConn.getInputStream();
+      InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
+      BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
+      String str = null;
+      while ((str = bufferedReader.readLine()) != null) {
+        buffer.append(str);
+      }
+      if (LOG.isDebugEnabled()) {
+        LOG.debug(buffer.toString());
+      }
+      bufferedReader.close();
+      inputStreamReader.close();
+      inputStream.close();
+      inputStream = null;
+      httpUrlConn.disconnect();
+      jsonObject = JSON.parseObject(buffer.toString());
+    } catch (Exception e) {
+      LOG.error("", e);
+      Object o = JSON.parse(buffer.toString());
+      if (o instanceof JSONArray) {
+        jsonObject = new JSONObject(ConstructUtils.map("items", JSON.parseArray(buffer.toString())));
+      }
+    }
+    return jsonObject;
+  }
+
     /**
      * 方法名:httpRequest</br>
      * 详述:发送http请求</br>

+ 14 - 3
xzl-ui/src/store/modules/user.js

@@ -1,5 +1,5 @@
 import { login, logout, getInfo } from '@/api/login'
-import { getToken, setToken, removeToken } from '@/utils/auth'
+import { getToken, setToken, removeToken, setNLPAuthData, getNLPAuthData,removeNLPAuthData } from '@/utils/auth'
 
 const user = {
   state: {
@@ -8,7 +8,8 @@ const user = {
     name: '',
     avatar: '',
     roles: [],
-    permissions: []
+    permissions: [],
+    NLPAuthData: getNLPAuthData()
   },
 
   mutations: {
@@ -29,7 +30,10 @@ const user = {
     },
     SET_PERMISSIONS: (state, permissions) => {
       state.permissions = permissions
-    }
+    },
+    SET_NLPAUTHDATA: (state, authData) => {
+      state.NLPAuthData = authData
+    },
   },
 
   actions: {
@@ -43,6 +47,10 @@ const user = {
         login(username, password, code, uuid).then(res => {
           setToken(res.token)
           commit('SET_TOKEN', res.token)
+          if(res.NLPAuthData) {
+            setNLPAuthData(res.NLPAuthData)
+            commit('SET_NLPAUTHDATA', res.NLPAuthData)
+          }
           resolve()
         }).catch(error => {
           reject(error)
@@ -77,9 +85,11 @@ const user = {
       return new Promise((resolve, reject) => {
         logout(state.token).then(() => {
           commit('SET_TOKEN', '')
+          commit('SET_NLPAUTHDATA', '')
           commit('SET_ROLES', [])
           commit('SET_PERMISSIONS', [])
           removeToken()
+          removeNLPAuthData()
           resolve()
         }).catch(error => {
           reject(error)
@@ -92,6 +102,7 @@ const user = {
       return new Promise(resolve => {
         commit('SET_TOKEN', '')
         removeToken()
+        removeNLPAuthData()
         resolve()
       })
     }

+ 12 - 0
xzl-ui/src/utils/auth.js

@@ -1,6 +1,7 @@
 import Cookies from 'js-cookie'
 
 const TokenKey = 'Admin-Token'
+const NLPKey = 'NLP-AUTH-DATA'
 
 export function getToken() {
   return Cookies.get(TokenKey)
@@ -13,3 +14,14 @@ export function setToken(token) {
 export function removeToken() {
   return Cookies.remove(TokenKey)
 }
+
+export function getNLPAuthData() {
+  return Cookies.get(NLPKey)
+}
+
+export function setNLPAuthData(authData) {
+  return Cookies.set(NLPKey, authData)
+}
+export function removeNLPAuthData() {
+  return Cookies.remove(NLPKey)
+}

+ 32 - 0
xzl-ui/src/views/nlp/index.vue

@@ -0,0 +1,32 @@
+<template>
+  <div id="screen" >
+    <iframe frameborder="no"  width="100%" height="100%" :src="nlpSrc"></iframe>
+  </div>
+</template>
+
+<script>
+  import {getNLPAuthData} from "@/utils/auth";
+
+  export default {
+    name: "NLP",
+    data() {
+      return {
+        nlpAuthData: getNLPAuthData(),
+        nlpSrc: 'http://10.70.192.135:8000/#/'
+      }
+    },
+    created() {
+        //带上authData 跳转到 nlp 系统
+       if(this.nlpAuthData && this.nlpAuthData.length > 0) {
+           this.nlpSrc = this.nlpSrc + "?authData=" + encodeURI(this.nlpAuthData)
+       } else {
+          // 提示nlp登录失败,请修改nlp系统密码与本系统一致
+         this.$modal.msgError("智能数据搜索系统登录失败,请修改密码与本系统一致");
+       }
+    },
+  }
+</script>
+
+<style scoped>
+
+</style>