Index: ssts-web/src/main/webapp/logonSSOForSszxyy.jsp
===================================================================
diff -u
--- ssts-web/src/main/webapp/logonSSOForSszxyy.jsp (revision 0)
+++ ssts-web/src/main/webapp/logonSSOForSszxyy.jsp (revision 34901)
@@ -0,0 +1,194 @@
+<%@page import="com.forgon.security.model.User"%>
+<%@page import="com.forgon.disinfectsystem.common.CssdUtils"%>
+<%@page import="com.forgon.security.service.UserManager"%>
+<%@ page contentType="text/html; charset=UTF-8" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@page import="com.forgon.tools.SpringBeanManger"%>
+<%@page import="com.forgon.tools.Constants"%>
+<%@page import="net.sf.json.JSONObject" %>
+<%@page import="java.io.File" %>
+<%@page import="java.util.ArrayList" %>
+<%@page import="org.apache.commons.lang.StringUtils"%>
+<%@page import="com.forgon.directory.model.LoginInfo"%>
+<%@page import="com.forgon.disinfectsystem.datasynchronization.dao.sszxyy.HttpClientHelper"%>
+<%@ include file="/common/taglibs.jsp" %>
+
+<%
+ArrayList message = new ArrayList();
+String byway_sso_token = request.getParameter("byway_sso_token");
+if(StringUtils.isNotBlank(byway_sso_token)){
+ try{
+ String userName = HttpClientHelper.authentication(byway_sso_token);
+ if(userName != null){
+ UserManager userManager=(UserManager)SpringBeanManger.getBean("userManager");
+ User user = userManager.getFirst("name", userName);
+ if(user==null){
+ message.add("用户不存在");
+ }else{
+ session.setAttribute("barcode", user.getBarcode());
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ message.add("登录失败:" + e.getMessage());
+ }
+}
+pageContext.setAttribute("message", message);
+
+String companyName = CssdUtils.getSystemSetConfigByName("companyName");
+String companyNameStr = "";
+if(companyName == null || companyName.equals("forgon")){
+ companyNameStr = "©2021 广州孚峻信息技术有限公司 版权所有";
+}else if(companyName.equals("dingxiang")){
+ companyNameStr = "©2021 广州丁香软件有限公司 版权所有";
+}
+session.setAttribute("companyName", companyNameStr);
+String project = CssdUtils.getConfigProperty("project");
+session.setAttribute("profile", project);
+
+String imgPath = "disinfectsystem/config/" + project + "/img/logo_" + project +".png";
+File file = new File(application.getRealPath("/") + imgPath);
+if(file.exists()){
+ request.setAttribute("logoPath",imgPath);
+}else{
+ if(companyName == null || companyName.equals("forgon")){
+ request.setAttribute("logoPath","themes/portalPage/img/logo_Forgon.png");
+ }else if(companyName.equals("dingxiang")){
+ request.setAttribute("logoPath","themes/portalPage/img/logo_dingxiangsoft.png");
+ }
+}
+
+%>
+
+
+
+
+
+
+
+
+消毒供应质量追溯管理系统
+<%-- --%>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: ssts-web/src/main/webapp/WEB-INF/spring/security-standard/applicationContext-acegi-security.xml
===================================================================
diff -u -r34821 -r34901
--- ssts-web/src/main/webapp/WEB-INF/spring/security-standard/applicationContext-acegi-security.xml (.../applicationContext-acegi-security.xml) (revision 34821)
+++ ssts-web/src/main/webapp/WEB-INF/spring/security-standard/applicationContext-acegi-security.xml (.../applicationContext-acegi-security.xml) (revision 34901)
@@ -51,8 +51,7 @@
-
-
+
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/sszxyy/DatasyncConstant.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/sszxyy/DatasyncConstant.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/sszxyy/DatasyncConstant.java (revision 34901)
@@ -0,0 +1,38 @@
+package com.forgon.disinfectsystem.datasynchronization.dao.sszxyy;
+
+/**
+ * 深汕中心医院医院接口相关常量SSZXYY-8
+ */
+public class DatasyncConstant {
+
+ /**
+ * 深汕中心医院单点登录token验证接口地址
+ * URL: https://gdbyway-platform-cluster.sschospital.cn/hie/services/hieService/msgTransfer
+ * POST 方式
+ * Content-Type: application/json
+ *
+ * 参数示例:
+ * {
+ "key":"d1ce37f9-5967-410d-8575-c4075d1543df",
+ "msgContent":"{\"token\":\"具体的token值\"}",
+ "msgCode":"queryTokenInfo98Q001J",
+ "msgVersion":"1",
+ "responseFormat":"JSON"
+ }
+ *
+ */
+ public final static String TOKEN_VALIDATE_URL = "https://gdbyway-platform-cluster.sschospital.cn/hie/services/hieService/msgTransfer";
+
+ /**
+ * 业务系统专属key
+ */
+ public final static String SYS_KEY = "421D1E8E-7265-B904-FA7F-486995598E0A";
+
+ /**
+ * 根据业务系统专属key获取12小时有效的esb平台密钥的接口地址
+ */
+ public final static String TOKEN_URL = "http://gdbyway-platform-cluster.sschospital.cn/hie/srvmgr/hieSrvMgr/getToken";
+
+
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/sszxyy/HttpClientHelper.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/sszxyy/HttpClientHelper.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/sszxyy/HttpClientHelper.java (revision 34901)
@@ -0,0 +1,172 @@
+package com.forgon.disinfectsystem.datasynchronization.dao.sszxyy;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLConnection;
+
+import net.sf.json.JSONObject;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.Node;
+import org.dom4j.XPath;
+
+/**
+ * 深汕中心医院接口帮助类SSZXYY-8
+ */
+public class HttpClientHelper {
+
+ public static Logger logger = Logger.getLogger(HttpClientHelper.class);
+
+ /**
+ * byway_sso_token验证,验证成功则返回用户工号
+ * @param token
+ * @return
+ * @throws Exception
+ */
+ public static String authentication(String token) throws Exception {
+ if(StringUtils.isBlank(token)){
+ throw new RuntimeException("参数不能为空!");
+ }
+
+ //访问单独登录token前,先获取访问esb平台的密钥
+ String tokenKey = HttpClientHelper.getTokenByKey(DatasyncConstant.SYS_KEY);
+ if(StringUtils.isBlank(tokenKey)){
+ throw new RuntimeException("通过KEY获取访问 ESB平台的Token失败!");
+ }
+
+ JSONObject requestBody = new JSONObject();
+ requestBody.put("key", tokenKey);
+ JSONObject msgContentJson = new JSONObject();
+ msgContentJson.put("token", token);
+ String msgContent = "";
+ requestBody.put("msgContent", msgContent);
+ requestBody.put("msgCode", "queryTokenInfo98Q001J");
+ requestBody.put("msgVersion", "1");
+ requestBody.put("responseFormat", "JSON");
+ String result = HttpClientHelper.sendPost(DatasyncConstant.TOKEN_VALIDATE_URL, requestBody.toString(), "application/json");
+
+ /*result = "";*/
+
+ logger.info("统一身份认证系统接口地址:" + DatasyncConstant.TOKEN_VALIDATE_URL);
+ logger.info("统一身份认证系统接口返回信息:" + result);
+ //result = "{\"success\" : true,\"reason\" : \"登录失败\"}";
+ if(StringUtils.isBlank(result)){
+ return null;
+ }
+
+ Document document = DocumentHelper.parseText(result);
+ String xpathExp = "/data";
+ String jsonString = processDataByXpath(document, xpathExp);
+
+ if(StringUtils.isBlank(jsonString)){
+ logger.info("统一身份认证系统接口返回信息为空!" + jsonString);
+ return null;
+ }
+
+ JSONObject jsonObject = JSONObject.fromObject(jsonString);
+
+ JSONObject syncResult = jsonObject.optJSONObject("syncResult");
+
+ if(syncResult == null){
+ String errorInfo = jsonObject.optString("errorInfo");
+ throw new RuntimeException("登录失败:" + errorInfo);
+ }
+
+ boolean success = syncResult.optBoolean("result", false);
+ if(!success){
+ String msg = jsonObject.optString("msg", "");
+ throw new RuntimeException("登录失败:" + msg);
+ }
+ JSONObject dataJson = syncResult.optJSONObject("data");
+ if(dataJson == null){
+ return null;
+ }
+
+ return dataJson.optString("userCode");
+ }
+
+ /**
+ * 根据key获取token
+ * @param key
+ * @return
+ * @throws Exception
+ */
+ public static String getTokenByKey(String key) throws Exception{
+ String token = "";
+ String msgContent = getXMLMessage(key);
+ String response = sendPost(DatasyncConstant.TOKEN_URL, msgContent, "application/xml");
+ logger.info("token接口返回的信息:" + response);
+ if(StringUtils.isBlank(response)){
+ return "";
+ }
+ Document document = DocumentHelper.parseText(response);
+ String xpathExp = "/result";
+ token = processDataByXpath(document, xpathExp);
+ return token;
+ }
+
+ /**
+ * 生成请求信息
+ * @param key
+ * @return
+ */
+ public static String getXMLMessage(String epKey) {
+ Document document = DocumentHelper.createDocument();
+ Element root = document.addElement("message");
+ if(StringUtils.isNotBlank(epKey)){
+ Element eKey = root.addElement("epKey");
+ eKey.setText(epKey);
+ }
+ return root.asXML();
+ }
+
+ public static String sendPost(String url, String content, String mediaType) throws Exception {
+ BufferedReader in = null;
+ String result = "";
+ URL realUrl = new URL(url);
+ URLConnection conn = realUrl.openConnection();
+ //conn.setRequestProperty("Content-Type", "application/xml; charset=utf-8");
+ conn.setRequestProperty("Content-Type", mediaType);
+ conn.setDoOutput(true);
+ conn.setDoInput(true);
+ conn.getOutputStream().write(content.getBytes("UTF-8"));
+ conn.getOutputStream().flush();
+ InputStream is = conn.getInputStream();
+ in = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+ String line;
+ while ((line = in.readLine()) != null) {
+ result += line;
+ }
+ try{is.close();}catch(Exception e){}
+ try{in.close();}catch(Exception e){}
+ return result;
+ }
+
+ /**
+ * 根据document和Xpath表达式解析数据
+ * @param document
+ * @param nameSpaceURIMap
+ * @param xpathExp
+ * @return
+ */
+ public static String processDataByXpath(Document document, String xpathExp) {
+ if ((StringUtils.isNotBlank(xpathExp)) && (document != null)) {
+ XPath xpath = document.createXPath(xpathExp);
+ Node node = xpath.selectSingleNode(document);
+ if (node != null) {
+ return node.getStringValue();
+ }
+ }
+ return null;
+ }
+
+}