|
|
|
|
<%@ page import="weaver.conn.RecordSet" %>
|
|
|
|
|
<%@ page import="weaver.general.BaseBean" %>
|
|
|
|
|
<%@ page import="weaver.general.Util" %>
|
|
|
|
|
<%@ page import="com.alibaba.fastjson.JSONObject" %>
|
|
|
|
|
<%@ page import="com.alibaba.fastjson.JSONArray" %>
|
|
|
|
|
<%@ page import="java.util.regex.Pattern" %>
|
|
|
|
|
<%@ page import="java.util.regex.Matcher" %>
|
|
|
|
|
<%@ page import="java.io.*" %>
|
|
|
|
|
<%@ page import="weaver.hrm.User" %>
|
|
|
|
|
<%@ page import="java.text.SimpleDateFormat" %>
|
|
|
|
|
<%@ page import="java.util.*" %>
|
|
|
|
|
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
|
|
|
|
|
<%@ page import="org.apache.http.impl.client.CloseableHttpClient" %>
|
|
|
|
|
<%@ page import="org.apache.http.impl.client.HttpClients" %>
|
|
|
|
|
<%@ page import="org.apache.http.client.methods.HttpPost" %>
|
|
|
|
|
<%@ page import="com.alibaba.fastjson.JSON" %>
|
|
|
|
|
<%@ page import="org.apache.http.entity.StringEntity" %>
|
|
|
|
|
<%@ page import="org.apache.http.client.methods.CloseableHttpResponse" %>
|
|
|
|
|
<%@ page import="org.apache.http.HttpStatus" %>
|
|
|
|
|
<%@ page import="org.apache.http.HttpEntity" %>
|
|
|
|
|
<%@ page import="org.apache.http.util.EntityUtils" %>
|
|
|
|
|
<%@ page import="org.apache.http.client.ClientProtocolException" %>
|
|
|
|
|
<%@ page import="weaver.hrm.HrmUserVarify" %>
|
|
|
|
|
<%@ page import="java.net.URL" %>
|
|
|
|
|
<%@ page import="java.net.HttpURLConnection" %>
|
|
|
|
|
<%@ page import="org.apache.http.HttpException" %>
|
|
|
|
|
<%@ page import="org.apache.http.client.HttpClient" %>
|
|
|
|
|
<%@ page import="org.apache.commons.httpclient.methods.PostMethod" %>
|
|
|
|
|
<%@ page import="org.apache.commons.httpclient.params.HttpMethodParams" %>
|
|
|
|
|
<%@ page import="org.apache.http.NameValuePair" %>
|
|
|
|
|
<%@ page import="org.apache.http.message.BasicNameValuePair" %>
|
|
|
|
|
<%@ page import="org.apache.http.client.entity.UrlEncodedFormEntity" %>
|
|
|
|
|
<%@ page import="weaver.rsa.security.RSA" %>
|
|
|
|
|
<%@ page import="java.security.interfaces.RSAPublicKey" %>
|
|
|
|
|
<%@ page import="java.security.KeyFactory" %>
|
|
|
|
|
<%@ page import="java.security.spec.X509EncodedKeySpec" %>
|
|
|
|
|
<%@ page import="javax.crypto.Cipher" %>
|
|
|
|
|
<%@ page import="org.apache.commons.codec.binary.Base64" %>
|
|
|
|
|
<%@ page import="java.nio.charset.StandardCharsets" %>
|
|
|
|
|
<%@ page import="org.apache.http.impl.client.HttpClientBuilder" %>
|
|
|
|
|
<%@ page import="org.apache.http.client.methods.HttpGet" %>
|
|
|
|
|
<%@ page import="com.engine.common.util.ParamUtil" %>
|
|
|
|
|
<%@ page import="com.wbi.util.StringUtil" %>
|
|
|
|
|
<%@ page import="org.json.JSONException" %>
|
|
|
|
|
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<title>Simple JSP Form</title>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<%!
|
|
|
|
|
//获取分页sql
|
|
|
|
|
public static String getPaginationSql(String sql, String orderby, int pageNo, int pageSize) {
|
|
|
|
|
String execSql = "";
|
|
|
|
|
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
String dbType = rs.getDBType();
|
|
|
|
|
// String dbType = "oracle";
|
|
|
|
|
// String dbType = "sqlserver";
|
|
|
|
|
int firstResult = 0;
|
|
|
|
|
int endResult = 0;
|
|
|
|
|
// 返回分页sql
|
|
|
|
|
if("oracle".equals(dbType)){ // rownum
|
|
|
|
|
firstResult = pageNo * pageSize + 1;
|
|
|
|
|
endResult = (pageNo - 1) * pageSize;
|
|
|
|
|
execSql = " select * from ( select tabUN2.*,rownum as my_rownum from ( select tableUN.*,rownum as r from ( " + sql
|
|
|
|
|
+ orderby + ") tableUN " + ") tabUN2 where r < " + firstResult + " ) where my_rownum > " + endResult;
|
|
|
|
|
}else if("sqlserver".equals(dbType)){
|
|
|
|
|
sql="select *,row_number()OVER("+orderby+") as rn from ("+sql+") newt";
|
|
|
|
|
execSql = "select * from ( " +
|
|
|
|
|
sql+")fy " +
|
|
|
|
|
" where rn between ("+pageNo+"-1)*"+pageSize+"+1 and "+pageNo+"*"+pageSize+" ";
|
|
|
|
|
}else { // 使用 ROW_NUMBER OVER()分页
|
|
|
|
|
firstResult = pageNo * pageSize + 1;
|
|
|
|
|
endResult = (pageNo - 1) * pageSize;
|
|
|
|
|
execSql = " select * from ( select tabUN2.*,rownum as my_rownum from ( select tableUN.*,rownum as r from ( " + sql
|
|
|
|
|
+ orderby +") tableUN ) tabUN2 where r < " + firstResult + " ) where my_rownum > " + endResult;
|
|
|
|
|
}
|
|
|
|
|
rs.writeLog("execSql---->"+execSql);
|
|
|
|
|
return execSql;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private boolean isEmpty(String str) {
|
|
|
|
|
if ("".equals(str) ||"(null)".equals(str) || str == null) {
|
|
|
|
|
return true;
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取指定类型的src值的集合
|
|
|
|
|
* @param htmlStr
|
|
|
|
|
* @param type 标签名称
|
|
|
|
|
* @return
|
|
|
|
|
* 简历
|
|
|
|
|
*/
|
|
|
|
|
public static Set<String> getSrcStr(String htmlStr, String type) {
|
|
|
|
|
Set<String> srcs = new HashSet<String>();
|
|
|
|
|
String src = "";
|
|
|
|
|
Pattern p_src;
|
|
|
|
|
Matcher m_src;
|
|
|
|
|
// String regEx_img = "<img.*src=(.*?)[^>]*?>"; //图片链接地址
|
|
|
|
|
String regEx_src = "<"+type+".*src\\s*=\\s*(.*?)[^>]*?>";
|
|
|
|
|
p_src = Pattern.compile
|
|
|
|
|
(regEx_src, Pattern.CASE_INSENSITIVE);
|
|
|
|
|
m_src = p_src.matcher(htmlStr);
|
|
|
|
|
while (m_src.find()) {
|
|
|
|
|
// 得到<img />数据
|
|
|
|
|
src = m_src.group();
|
|
|
|
|
// 匹配<img>中的src数据
|
|
|
|
|
Matcher m = Pattern.compile("src\\s*=\\s*\"?(.*?)(\"|>|\\s+)").matcher(src);
|
|
|
|
|
while (m.find()) {
|
|
|
|
|
srcs.add(m.group(1));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return srcs;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public User getUser(int uid){
|
|
|
|
|
User user = new User();
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
if (uid == 1)
|
|
|
|
|
rs.executeQuery("select * from hrmresourcemanager where id=?", uid);
|
|
|
|
|
else {
|
|
|
|
|
rs.executeQuery("select * from hrmresource where id=?", uid);
|
|
|
|
|
}
|
|
|
|
|
String userid = "";
|
|
|
|
|
if (rs.next()) {
|
|
|
|
|
userid = rs.getString("id");
|
|
|
|
|
user.setUid(rs.getInt("id"));
|
|
|
|
|
user.setLogintype("1");
|
|
|
|
|
user.setLoginid(rs.getString("loginid"));
|
|
|
|
|
user.setFirstname(rs.getString("firstname"));
|
|
|
|
|
user.setLastname(rs.getString("lastname"));
|
|
|
|
|
user.setAliasname(rs.getString("aliasname"));
|
|
|
|
|
user.setTitle(rs.getString("title"));
|
|
|
|
|
user.setTitlelocation(rs.getString("titlelocation"));
|
|
|
|
|
user.setSex(rs.getString("sex"));
|
|
|
|
|
String langid = rs.getString("systemlanguage");
|
|
|
|
|
user.setLanguage(Util.getIntValue(langid, 0));
|
|
|
|
|
user.setTelephone(rs.getString("telephone"));
|
|
|
|
|
user.setMobile(rs.getString("mobile"));
|
|
|
|
|
user.setMobilecall(rs.getString("mobilecall"));
|
|
|
|
|
user.setEmail(rs.getString("email"));
|
|
|
|
|
user.setCountryid(rs.getString("countryid"));
|
|
|
|
|
user.setLocationid(rs.getString("locationid"));
|
|
|
|
|
user.setResourcetype(rs.getString("resourcetype"));
|
|
|
|
|
user.setStartdate(rs.getString("startdate"));
|
|
|
|
|
user.setEnddate(rs.getString("enddate"));
|
|
|
|
|
user.setContractdate(rs.getString("contractdate"));
|
|
|
|
|
user.setJobtitle(rs.getString("jobtitle"));
|
|
|
|
|
user.setJobgroup(rs.getString("jobgroup"));
|
|
|
|
|
user.setJobactivity(rs.getString("jobactivity"));
|
|
|
|
|
user.setJoblevel(rs.getString("joblevel"));
|
|
|
|
|
user.setSeclevel(rs.getString("seclevel"));
|
|
|
|
|
user.setUserDepartment(Util.getIntValue(rs.getString("departmentid"),0));
|
|
|
|
|
user.setUserSubCompany1(Util.getIntValue(rs.getString("subcompanyid1"),0));
|
|
|
|
|
user.setUserSubCompany2(Util.getIntValue(rs.getString("subcompanyid2"),0));
|
|
|
|
|
user.setUserSubCompany3(Util.getIntValue(rs.getString("subcompanyid3"),0));
|
|
|
|
|
user.setUserSubCompany4(Util.getIntValue(rs.getString("subcompanyid4"),0));
|
|
|
|
|
user.setManagerid(rs.getString("managerid"));
|
|
|
|
|
user.setAssistantid(rs.getString("assistantid"));
|
|
|
|
|
user.setPurchaselimit(rs.getString("purchaselimit"));
|
|
|
|
|
user.setCurrencyid(rs.getString("currencyid"));
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
String lastLoginDate = sdf.format(new Date());
|
|
|
|
|
user.setLastlogindate(lastLoginDate);
|
|
|
|
|
user.setLogintype("1");
|
|
|
|
|
user.setAccount(rs.getString("account"));
|
|
|
|
|
}
|
|
|
|
|
return user;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String httpPostRequest(String param,String url,String token){
|
|
|
|
|
BaseBean baseBean = new BaseBean();
|
|
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
|
|
String responseBody="";
|
|
|
|
|
try {
|
|
|
|
|
CloseableHttpClient httpClient = HttpClients.createDefault();
|
|
|
|
|
HttpPost httpPost = new HttpPost(url);
|
|
|
|
|
JSONObject jsonString = JSON.parseObject(param);
|
|
|
|
|
|
|
|
|
|
//设置请求体参数
|
|
|
|
|
StringEntity entity = new StringEntity(param,"utf-8");
|
|
|
|
|
baseBean.writeLog("entity-param->"+param);
|
|
|
|
|
baseBean.writeLog("entity-->"+entity);
|
|
|
|
|
entity.setContentEncoding("utf-8");
|
|
|
|
|
baseBean.writeLog("entity-utf-8->"+entity);
|
|
|
|
|
httpPost.setEntity(entity);
|
|
|
|
|
//设置请求头部
|
|
|
|
|
httpPost.setHeader("Content-Type", "application/json");
|
|
|
|
|
if(token != null && !"".equals(token)){
|
|
|
|
|
httpPost.setHeader("Authorization",token);
|
|
|
|
|
}
|
|
|
|
|
//执行请求,返回请求响应
|
|
|
|
|
CloseableHttpResponse response = httpClient.execute(httpPost);
|
|
|
|
|
//请求返回状态码
|
|
|
|
|
int statusCode = response.getStatusLine().getStatusCode();
|
|
|
|
|
baseBean.writeLog("statusCode状态码->"+statusCode);
|
|
|
|
|
//请求成功
|
|
|
|
|
if (statusCode == HttpStatus.SC_OK && statusCode <= HttpStatus.SC_TEMPORARY_REDIRECT) {
|
|
|
|
|
//取出响应体
|
|
|
|
|
HttpEntity entity2 = response.getEntity();
|
|
|
|
|
//从响应体中解析出token
|
|
|
|
|
responseBody = EntityUtils.toString(entity2, "utf-8");
|
|
|
|
|
// jsonObject = JSONObject.parseObject(responseBody);
|
|
|
|
|
baseBean.writeLog("responseBody->"+responseBody);
|
|
|
|
|
// baseBean.writeLog("jsonObject->"+jsonObject);
|
|
|
|
|
//token = jsonObject.getString("access_token");
|
|
|
|
|
} else {
|
|
|
|
|
//请求失败
|
|
|
|
|
throw new ClientProtocolException("请求失败,响应码为:" + statusCode);
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
return responseBody;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 发送http get请求
|
|
|
|
|
*/
|
|
|
|
|
public static String httpGet(String url,Map<String,String> headers,String encode){
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
if(encode == null){
|
|
|
|
|
encode = "utf-8";
|
|
|
|
|
}
|
|
|
|
|
CloseableHttpResponse httpResponse = null;
|
|
|
|
|
CloseableHttpClient closeableHttpClient = null;
|
|
|
|
|
String content = null;
|
|
|
|
|
//since 4.3 不再使用 DefaultHttpClient
|
|
|
|
|
try {
|
|
|
|
|
closeableHttpClient = HttpClientBuilder.create().build();
|
|
|
|
|
HttpGet httpGet = new HttpGet(url);
|
|
|
|
|
//设置header
|
|
|
|
|
if (headers != null && headers.size() > 0) {
|
|
|
|
|
for (Map.Entry<String, String> entry : headers.entrySet()) {
|
|
|
|
|
httpGet.setHeader(entry.getKey(),entry.getValue());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bb.writeLog("url="+url+"header="+headers+"encode="+encode);
|
|
|
|
|
httpResponse = closeableHttpClient.execute(httpGet);
|
|
|
|
|
HttpEntity entity = httpResponse.getEntity();
|
|
|
|
|
content = EntityUtils.toString(entity, encode);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}finally{
|
|
|
|
|
try {
|
|
|
|
|
httpResponse.close();
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
try { //关闭连接、释放资源
|
|
|
|
|
closeableHttpClient.close();
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
return content;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 向指定 URL 发送POST方法的请求
|
|
|
|
|
*
|
|
|
|
|
* @param url 发送请求的 URL
|
|
|
|
|
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
|
|
|
|
|
* @return 所代表远程资源的响应结果
|
|
|
|
|
*/
|
|
|
|
|
public static String sendPost(String url, String param) {
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
String result = "";
|
|
|
|
|
PrintWriter out = null;
|
|
|
|
|
BufferedReader in = null;
|
|
|
|
|
HttpURLConnection connection = null;
|
|
|
|
|
try {
|
|
|
|
|
URL postUrl = new URL(url);
|
|
|
|
|
bb.writeLog("getUrl-->"+postUrl);
|
|
|
|
|
// 打开和URL之间的连接
|
|
|
|
|
connection = (HttpURLConnection) postUrl.openConnection();
|
|
|
|
|
|
|
|
|
|
// 在connect之前,设置通用的请求属性
|
|
|
|
|
connection.setRequestProperty("accept", "*/*");
|
|
|
|
|
connection.setRequestProperty("connection", "Keep-Alive");
|
|
|
|
|
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
|
|
|
|
|
connection.setRequestProperty("Charsert", "UTF-8");
|
|
|
|
|
|
|
|
|
|
connection.setConnectTimeout(15000);
|
|
|
|
|
connection.setReadTimeout(60000);
|
|
|
|
|
// 发送POST请求必须设置如下两行,参数要放在http正文内
|
|
|
|
|
connection.setDoOutput(true);
|
|
|
|
|
connection.setDoInput(true);
|
|
|
|
|
// 默认是 GET方式
|
|
|
|
|
connection.setRequestMethod("POST");
|
|
|
|
|
// Post 请求不使用缓存
|
|
|
|
|
connection.setUseCaches(false);
|
|
|
|
|
// 配置本次连接的Content-type,form表单是"application/x-www-form-urlencoded",json是"application/json"等
|
|
|
|
|
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
|
|
|
|
connection.connect();
|
|
|
|
|
|
|
|
|
|
// 参数要放在http正文内
|
|
|
|
|
//1.获取URLConnection对象对应的输出流
|
|
|
|
|
out = new PrintWriter(connection.getOutputStream());
|
|
|
|
|
//2.中文有乱码的需要将PrintWriter改为如下
|
|
|
|
|
//out=new OutputStreamWriter(conn.getOutputStream(),"UTF-8")
|
|
|
|
|
out.print(param);
|
|
|
|
|
out.flush();
|
|
|
|
|
//也可以使用DataOutputStream
|
|
|
|
|
// DataOutputStream dos=new DataOutputStream(httpConn.getOutputStream());
|
|
|
|
|
// dos.writeBytes(param);
|
|
|
|
|
// dos.flush();
|
|
|
|
|
// dos.close();
|
|
|
|
|
|
|
|
|
|
// 定义BufferedReader输入流来读取URL的响应
|
|
|
|
|
if (connection.getResponseCode() == 200) {
|
|
|
|
|
in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
|
|
|
|
|
String line;
|
|
|
|
|
while ((line = in.readLine()) != null) {
|
|
|
|
|
result += line;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
bb.writeLog("发送 POST 请求出现异常!" + e);
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
} finally {
|
|
|
|
|
try {
|
|
|
|
|
if (out != null) {
|
|
|
|
|
out.close();
|
|
|
|
|
}
|
|
|
|
|
if (in != null) {
|
|
|
|
|
in.close();
|
|
|
|
|
}
|
|
|
|
|
if (connection != null) {
|
|
|
|
|
//关闭连接
|
|
|
|
|
connection.disconnect();
|
|
|
|
|
}
|
|
|
|
|
} catch (IOException ex) {
|
|
|
|
|
ex.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 发送 http post 请求,参数以form表单键值对的形式提交。
|
|
|
|
|
*/
|
|
|
|
|
public static String httpPostForm(String url,Map<String,String> params, Map<String,String> headers,String encode){
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
if(encode == null){
|
|
|
|
|
encode = "utf-8";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String content = null;
|
|
|
|
|
CloseableHttpResponse httpResponse = null;
|
|
|
|
|
CloseableHttpClient closeableHttpClient = null;
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
closeableHttpClient = HttpClients.createDefault();
|
|
|
|
|
HttpPost httpost = new HttpPost(url);
|
|
|
|
|
|
|
|
|
|
//设置header
|
|
|
|
|
if (headers != null && headers.size() > 0) {
|
|
|
|
|
for (Map.Entry<String, String> entry : headers.entrySet()) {
|
|
|
|
|
httpost.setHeader(entry.getKey(),entry.getValue());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
bb.writeLog("url="+url+"header="+headers+"encode="+encode);
|
|
|
|
|
bb.writeLog("params="+params);
|
|
|
|
|
//组织请求参数
|
|
|
|
|
List<NameValuePair> paramList = new ArrayList <NameValuePair>();
|
|
|
|
|
if(params != null && params.size() > 0){
|
|
|
|
|
Set<String> keySet = params.keySet();
|
|
|
|
|
for(String key : keySet) {
|
|
|
|
|
paramList.add(new BasicNameValuePair(key, params.get(key)));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
httpost.setEntity(new UrlEncodedFormEntity(paramList, encode));
|
|
|
|
|
|
|
|
|
|
httpResponse = closeableHttpClient.execute(httpost);
|
|
|
|
|
HttpEntity entity = httpResponse.getEntity();
|
|
|
|
|
content = EntityUtils.toString(entity, encode);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}finally{
|
|
|
|
|
try {
|
|
|
|
|
httpResponse.close();
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
try { //关闭连接、释放资源
|
|
|
|
|
closeableHttpClient.close();
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
return content;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 公钥加密
|
|
|
|
|
*
|
|
|
|
|
* @param content 内容
|
|
|
|
|
* @param publicKey 公钥
|
|
|
|
|
* @return 加密后的密文
|
|
|
|
|
* @throws Exception 异常信息
|
|
|
|
|
*/
|
|
|
|
|
public static String encrypt(String content, String publicKey) throws Exception {
|
|
|
|
|
//base64编码的公钥
|
|
|
|
|
byte[] decoded = org.apache.commons.codec.binary.Base64.decodeBase64(publicKey);
|
|
|
|
|
RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded));
|
|
|
|
|
//RSA加密
|
|
|
|
|
Cipher cipher = Cipher.getInstance("RSA");
|
|
|
|
|
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
|
|
|
|
|
return Base64.encodeBase64String(cipher.doFinal(content.getBytes(StandardCharsets.UTF_8)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static String getPublicKey(Map<String, String> MachInfo){
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
String publicKey ="";
|
|
|
|
|
String API_KEY = Util.null2String(bb.getPropValue("tjbankEMobileSSO","key"));
|
|
|
|
|
//请求获取publicKey接口
|
|
|
|
|
Map<String,String> headers = new HashMap<>();
|
|
|
|
|
String url = Util.null2String(bb.getPropValue("tjbankEMobileSSO","publicKeyUrl"));
|
|
|
|
|
headers.put("API_KEY",API_KEY);
|
|
|
|
|
// headers.put("MACH_ID","123");
|
|
|
|
|
// headers.put("MACH_TYPE","0");
|
|
|
|
|
// headers.put("MACH_IP","127.0.0.1");
|
|
|
|
|
headers.put("MACH_ID",MachInfo.get("deviceId"));
|
|
|
|
|
headers.put("MACH_TYPE",MachInfo.get("clientType"));
|
|
|
|
|
headers.put("MACH_IP",MachInfo.get("param_ip"));
|
|
|
|
|
String msg = httpGet(url,headers,null);
|
|
|
|
|
bb.writeLog("===获取publickey返回值===="+msg);
|
|
|
|
|
try {
|
|
|
|
|
org.json.JSONObject resMsg = new org.json.JSONObject(msg);
|
|
|
|
|
bb.writeLog("===获取publickey返回值===="+resMsg);
|
|
|
|
|
if(resMsg.has("pubKey")){
|
|
|
|
|
publicKey = Util.null2String(resMsg.get("pubKey").toString());
|
|
|
|
|
}
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
e.getMessage();
|
|
|
|
|
}
|
|
|
|
|
return publicKey;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取TG
|
|
|
|
|
public static String getST(String tgt,String emobileUrl,Map<String, String> MachInfo){
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
String ST = "";
|
|
|
|
|
String retMsg = "";
|
|
|
|
|
Map<String,String> params = new HashMap<>();//参数
|
|
|
|
|
Map<String,String> headers = new HashMap<>();//headers
|
|
|
|
|
String API_KEY = Util.null2String(bb.getPropValue("tjbankEMobileSSO","key"));
|
|
|
|
|
//请求获取TG接口
|
|
|
|
|
String url = Util.null2String(bb.getPropValue("tjbankEMobileSSO","stUrl"));
|
|
|
|
|
bb.writeLog("==获取TG=="+url);
|
|
|
|
|
//移动端首页地址
|
|
|
|
|
|
|
|
|
|
bb.writeLog("==移动端首页地址=="+emobileUrl);
|
|
|
|
|
//获取TGT
|
|
|
|
|
params = new HashMap<>();//参数
|
|
|
|
|
params.put("tgt",tgt);
|
|
|
|
|
params.put("service",emobileUrl);
|
|
|
|
|
bb.writeLog("==STparams=="+params);
|
|
|
|
|
|
|
|
|
|
headers = new HashMap<>();//headers
|
|
|
|
|
headers.put("API_KEY",API_KEY);
|
|
|
|
|
// headers.put("MACH_ID","123");
|
|
|
|
|
// headers.put("MACH_TYPE","0");
|
|
|
|
|
// headers.put("MACH_IP","127.0.0.1");
|
|
|
|
|
headers.put("MACH_ID",MachInfo.get("deviceId"));
|
|
|
|
|
headers.put("MACH_TYPE",MachInfo.get("clientType"));
|
|
|
|
|
headers.put("MACH_IP",MachInfo.get("param_ip"));
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
retMsg = httpPostForm(url,params,headers,null);
|
|
|
|
|
bb.writeLog("===获取ST返回值===="+retMsg);
|
|
|
|
|
org.json.JSONObject resMsg = new org.json.JSONObject(retMsg);
|
|
|
|
|
bb.writeLog("===获取ST返回值resMsg===="+resMsg);
|
|
|
|
|
if(resMsg.has("ST")){
|
|
|
|
|
ST = Util.null2String(resMsg.get("ST").toString());
|
|
|
|
|
}
|
|
|
|
|
bb.writeLog("===获取ST===="+ST);
|
|
|
|
|
}catch(Exception e){
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
}
|
|
|
|
|
return retMsg;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
public static String getSysUrl(String sysid){
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
String url = "-1";
|
|
|
|
|
//查询建模
|
|
|
|
|
rs.executeQuery("select * from uf_otherSysInfo where id = ?" ,sysid);
|
|
|
|
|
if (rs.next()){
|
|
|
|
|
url = Util.null2String(rs.getString("xtdz"));
|
|
|
|
|
}else {
|
|
|
|
|
return "-1";
|
|
|
|
|
}
|
|
|
|
|
url = url.trim();
|
|
|
|
|
if (!StringUtil.isBlank(url)){
|
|
|
|
|
//判断是否带?号
|
|
|
|
|
if (url.indexOf("?") == -1){
|
|
|
|
|
url = url+"?";
|
|
|
|
|
}else{
|
|
|
|
|
url = url+"&";
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
return url;
|
|
|
|
|
}
|
|
|
|
|
public static String getsysSSOurl(String sysid){
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
String url = "-1";
|
|
|
|
|
//查询建模
|
|
|
|
|
rs.executeQuery("select * from uf_otherSysInfo where id = ?" ,sysid);
|
|
|
|
|
if (rs.next()){
|
|
|
|
|
url = Util.null2String(rs.getString("hqdddz"));
|
|
|
|
|
}else {
|
|
|
|
|
return "-1";
|
|
|
|
|
}
|
|
|
|
|
new BaseBean().writeLog("hqdddz===="+url);
|
|
|
|
|
url = url.trim();
|
|
|
|
|
// if (!StringUtil.isBlank(url)){
|
|
|
|
|
// //判断是否带?号
|
|
|
|
|
// if (url.indexOf("?") == -1){
|
|
|
|
|
// url = url+"?";
|
|
|
|
|
// }else{
|
|
|
|
|
// url = url+"&";
|
|
|
|
|
// }
|
|
|
|
|
// };
|
|
|
|
|
return url;
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
<%
|
|
|
|
|
// 检查是否有表单提交
|
|
|
|
|
String ST ="";//获取ST
|
|
|
|
|
String STurl ="";//获取ST
|
|
|
|
|
String loginid ="";//获取ST
|
|
|
|
|
if ("POST".equalsIgnoreCase(request.getMethod())) {
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
BaseBean bb=new BaseBean();
|
|
|
|
|
RSA rsa = new RSA();
|
|
|
|
|
out.print("123456");
|
|
|
|
|
if(1==1){
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Map<String,String> params = new HashMap<>();//参数
|
|
|
|
|
Map<String,String> headers = new HashMap<>();//headers
|
|
|
|
|
JSONArray array = new JSONArray();
|
|
|
|
|
List<String> decriptList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
bb.writeLog("进入获取简历jsp-->");
|
|
|
|
|
STurl = request.getParameter("url");
|
|
|
|
|
loginid = request.getParameter("loginid");
|
|
|
|
|
Map<String, Object> paramsMap = ParamUtil.request2Map(request);
|
|
|
|
|
new BaseBean().writeLog("paramsMap===>"+JSONObject.toJSONString(paramsMap) );
|
|
|
|
|
String deviceId = Util.null2String(paramsMap.get("deviceId"));
|
|
|
|
|
String clientType = Util.null2String(paramsMap.get("clientType"));
|
|
|
|
|
if("2".equals(clientType)){
|
|
|
|
|
clientType = "0";
|
|
|
|
|
}else if("3".equals(clientType)){
|
|
|
|
|
clientType = "1";
|
|
|
|
|
}
|
|
|
|
|
String param_ip = Util.null2String(paramsMap.get("param_ip"));
|
|
|
|
|
new BaseBean().writeLog("paramsMap===>"+paramsMap );
|
|
|
|
|
new BaseBean().writeLog("deviceId===>"+deviceId );
|
|
|
|
|
new BaseBean().writeLog("clientType===>"+clientType );
|
|
|
|
|
HashMap<String, String> MachInfo = new HashMap<>();
|
|
|
|
|
MachInfo.put("deviceId",deviceId.isEmpty()?"123":deviceId);
|
|
|
|
|
MachInfo.put("clientType",clientType.isEmpty()?"1":clientType);
|
|
|
|
|
MachInfo.put("param_ip",param_ip.isEmpty()?"127.0.0.1":param_ip);
|
|
|
|
|
|
|
|
|
|
String login_id = "";
|
|
|
|
|
String user_password = "";
|
|
|
|
|
|
|
|
|
|
User user = HrmUserVarify.getUser(request, response);
|
|
|
|
|
int uid = user.getUID();
|
|
|
|
|
bb.writeLog("uid-->"+uid);
|
|
|
|
|
rs.executeQuery("select id,loginid,password,createtime from EmobileLoginDetail where loginid=?", loginid);
|
|
|
|
|
if(rs.next()){
|
|
|
|
|
login_id = Util.null2String(rs.getString("loginid"));
|
|
|
|
|
user_password = Util.null2String(rs.getString("password"));
|
|
|
|
|
}
|
|
|
|
|
bb.writeLog("login_id-->"+login_id);
|
|
|
|
|
bb.writeLog("user_password-->"+user_password);
|
|
|
|
|
//获取session
|
|
|
|
|
session = request.getSession(true);
|
|
|
|
|
String certified_token = Util.null2String(session.getAttribute("certified_token"));
|
|
|
|
|
bb.writeLog("获取sessionTGT=="+certified_token);
|
|
|
|
|
//获取cookie
|
|
|
|
|
Cookie[] cookies = request.getCookies();
|
|
|
|
|
bb.writeLog("获取cookies=="+cookies);
|
|
|
|
|
String idd = "";
|
|
|
|
|
if(cookies != null){
|
|
|
|
|
for(Cookie cookie:cookies){
|
|
|
|
|
bb.writeLog("获取cookiesName=="+cookie.getName());
|
|
|
|
|
if(cookie.getName().equals("loginidweaver")){
|
|
|
|
|
idd = cookie.getValue();
|
|
|
|
|
bb.writeLog("获取idd=="+idd);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//查询人员工号
|
|
|
|
|
RecordSet recordSet = new RecordSet();
|
|
|
|
|
String requestURI = request.getRequestURI();
|
|
|
|
|
bb.writeLog("请求路径="+requestURI);
|
|
|
|
|
Map<String, Object> useridMap = ParamUtil.request2Map(request);
|
|
|
|
|
bb.writeLog("人员id="+useridMap.get("userid"));
|
|
|
|
|
recordSet.executeQuery("select WORKCODE from HRMRESOURCE where id=?", Util.null2String(useridMap.get("userid")));
|
|
|
|
|
String workcode = "";
|
|
|
|
|
if (recordSet.next()){
|
|
|
|
|
workcode = Util.null2String(recordSet.getString("WORKCODE"));
|
|
|
|
|
}
|
|
|
|
|
bb.writeLog("人员workcode="+useridMap.get("workcode"));
|
|
|
|
|
//查询
|
|
|
|
|
String API_KEY = Util.null2String(bb.getPropValue("tjbankEMobileSSO","key"));//publicKey
|
|
|
|
|
String url = Util.null2String(bb.getPropValue("tjbankEMobileSSO","stUrl"));//获取ST的url
|
|
|
|
|
// String cockpitUrl = Util.null2String(bb.getPropValue("tjbankEMobileSSO","cockpitUrl"));
|
|
|
|
|
String cockpitUrl = STurl;
|
|
|
|
|
String tgturl = Util.null2String(bb.getPropValue("tjbankEMobileSSO","tgtUrl"));//请求获取TGT地址
|
|
|
|
|
//获取ST,带着下游系统
|
|
|
|
|
// if (!isEmpty(certified_token)){
|
|
|
|
|
// String responseInfo = getST(certified_token,cockpitUrl);
|
|
|
|
|
// bb.writeLog("进入responseInfo-->"+responseInfo);
|
|
|
|
|
// if (isEmpty(responseInfo)){
|
|
|
|
|
// out.print("单点系统接口返回值为null");
|
|
|
|
|
// return;
|
|
|
|
|
// }else {
|
|
|
|
|
// org.json.JSONObject stMsg = new org.json.JSONObject(responseInfo);
|
|
|
|
|
// if(stMsg.has("ST")){
|
|
|
|
|
// ST = Util.null2String(stMsg.get("ST").toString());
|
|
|
|
|
// }else{
|
|
|
|
|
// out.print(Util.null2String(stMsg.getString("message")));
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// String loginUrl = "";
|
|
|
|
|
// // String remuseUrl = bb.getPropValue("tjbkremuse", "hbUrl");
|
|
|
|
|
// String remuseUrl = sysUrl;
|
|
|
|
|
// boolean isEm = Util.null2String(request.getHeader("user-agent")).indexOf("E-Mobile") > -1;
|
|
|
|
|
// if(isEm == true){
|
|
|
|
|
// loginUrl=remuseUrl+"ticket="+ST;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// //loginUrl = "https://www.baidu.com/";
|
|
|
|
|
// bb.writeLog("loginUrl-->"+loginUrl);
|
|
|
|
|
// out.print("跳转路径-->"+loginUrl);
|
|
|
|
|
// //out.print(loginUrl);
|
|
|
|
|
// response.sendRedirect(loginUrl);
|
|
|
|
|
// // request.getRequestDispatcher("loginUrl").forward(request,response);
|
|
|
|
|
// // return;
|
|
|
|
|
// }
|
|
|
|
|
// }else {
|
|
|
|
|
String TGT ="";
|
|
|
|
|
String passWord ="";
|
|
|
|
|
String retMsg ="";
|
|
|
|
|
decriptList.add(login_id);
|
|
|
|
|
decriptList.add(user_password);
|
|
|
|
|
List<String> resultList = rsa.decryptList(request, decriptList);
|
|
|
|
|
String loginId = resultList.get(0);
|
|
|
|
|
String userPassword = resultList.get(1);
|
|
|
|
|
String publicKey = getPublicKey(MachInfo);
|
|
|
|
|
passWord = encrypt(user_password, publicKey);
|
|
|
|
|
params = new HashMap<>();//参数
|
|
|
|
|
params.put("username",loginId);
|
|
|
|
|
params.put("password",passWord);
|
|
|
|
|
bb.writeLog("==STparams=="+params);
|
|
|
|
|
|
|
|
|
|
headers = new HashMap<>();//headers
|
|
|
|
|
headers.put("API_KEY",API_KEY);
|
|
|
|
|
headers.put("MACH_ID",MachInfo.get("deviceId"));
|
|
|
|
|
headers.put("MACH_TYPE",MachInfo.get("clientType"));
|
|
|
|
|
headers.put("MACH_IP",MachInfo.get("param_ip"));
|
|
|
|
|
|
|
|
|
|
retMsg = httpPostForm(tgturl,params,headers,null);
|
|
|
|
|
bb.writeLog("===获取TGT返回值retMsg===="+retMsg);
|
|
|
|
|
org.json.JSONObject resMsg = new org.json.JSONObject(retMsg);
|
|
|
|
|
bb.writeLog("===获取TGT返回值===="+resMsg);
|
|
|
|
|
if(resMsg.has("TGT")){
|
|
|
|
|
TGT = Util.null2String(resMsg.get("TGT").toString());
|
|
|
|
|
}
|
|
|
|
|
String responseInfo = getST(TGT,cockpitUrl,MachInfo);
|
|
|
|
|
if (isEmpty(responseInfo)){
|
|
|
|
|
out.print("单点系统接口返回值为null");
|
|
|
|
|
return;
|
|
|
|
|
}else {
|
|
|
|
|
org.json.JSONObject stMsg = new org.json.JSONObject(responseInfo);
|
|
|
|
|
out.print(stMsg);
|
|
|
|
|
if(stMsg.has("ST")){
|
|
|
|
|
ST = Util.null2String(stMsg.get("ST").toString());
|
|
|
|
|
}else{
|
|
|
|
|
bb.writeLog(stMsg);
|
|
|
|
|
|
|
|
|
|
out.print(Util.null2String(stMsg.getString("message")));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String loginUrl = "";
|
|
|
|
|
// String remuseUrl = bb.getPropValue("tjbkremuse", "hbUrl");
|
|
|
|
|
String remuseUrl = "";
|
|
|
|
|
|
|
|
|
|
boolean isEm = Util.null2String(request.getHeader("user-agent")).indexOf("E-Mobile") > -1;
|
|
|
|
|
if(isEm == true){
|
|
|
|
|
loginUrl=remuseUrl+"ticket="+ST;
|
|
|
|
|
//loginUrl="http://123.151.115.199:8080/bi/PCFW?proc=1&action=viewer&hback=true&db=%E6%99%BA%E6%85%A7%E6%96%B9%E7%95%A5/%E5%89%8D%E7%BD%AE%E9%A1%B5.db&ticket="+ST;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bb.writeLog("loginUrl-->"+loginUrl);
|
|
|
|
|
//out.print("跳转路径-->"+loginUrl);
|
|
|
|
|
//out.print("进入驾驶舱成功");
|
|
|
|
|
// out.print(loginUrl);
|
|
|
|
|
// response.sendRedirect(loginUrl);
|
|
|
|
|
// request.getRequestDispatcher("loginUrl").forward(request,response);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// out.print("进入驾驶舱系统失败,请先获取标识");
|
|
|
|
|
//return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
|
|
|
|
|
<h2>输入框与数据回显</h2>
|
|
|
|
|
|
|
|
|
|
<!-- 表单 -->
|
|
|
|
|
<form method="POST">
|
|
|
|
|
<label for="loginid">工号:</label>
|
|
|
|
|
<input type="text" name="loginid" id="loginid" />
|
|
|
|
|
<label for="STurl">地址:</label>
|
|
|
|
|
<input type="text" name="STurl" id="STurl" />
|
|
|
|
|
<button type="submit">提交</button>
|
|
|
|
|
</form>
|
|
|
|
|
|
|
|
|
|
<!-- 显示提交的数据 -->
|
|
|
|
|
<h3>提交的数据:</h3>
|
|
|
|
|
<p><%= loginid %></p>
|
|
|
|
|
<p><%= STurl %></p>
|
|
|
|
|
<p><%= ST %></p>
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|