From e87d4e3a9fba17b5fa375bf19ac12075a9c7bb41 Mon Sep 17 00:00:00 2001 From: 陈杰 <504987307@qq.com> Date: Thu, 26 Dec 2019 11:29:16 +0800 Subject: [PATCH] 翼学云读写 接口 --- cloud/common/pom.xml | 10 ++++++++++ cloud/common/src/main/java/com/sincere/common/util/DateUtils.java | 2 ++ cloud/common/src/main/java/com/sincere/common/util/HttpClientUtils.java | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------ cloud/common/src/main/java/com/sincere/common/util/Xml2JsonUtils.java | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/quartz/pom.xml | 14 +++++++------- cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYResult.java | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYResultDetail.java | 39 +++++++++++++++++++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYWriteService.java | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 507 insertions(+), 19 deletions(-) create mode 100644 cloud/common/src/main/java/com/sincere/common/util/Xml2JsonUtils.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYResult.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYResultDetail.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYWriteService.java diff --git a/cloud/common/pom.xml b/cloud/common/pom.xml index d59f2d6..69bdd8b 100644 --- a/cloud/common/pom.xml +++ b/cloud/common/pom.xml @@ -90,6 +90,16 @@ 0.0.20131108.vaadin1 compile + + dom4j + dom4j + 1.6.1 + + + commons-httpclient + commons-httpclient + 3.1 + diff --git a/cloud/common/src/main/java/com/sincere/common/util/DateUtils.java b/cloud/common/src/main/java/com/sincere/common/util/DateUtils.java index a3fcdf9..fe22f85 100644 --- a/cloud/common/src/main/java/com/sincere/common/util/DateUtils.java +++ b/cloud/common/src/main/java/com/sincere/common/util/DateUtils.java @@ -22,6 +22,8 @@ public class DateUtils { public static String format4 = "HH:mm" ; + public static String format5 = "yyyyMMdd" ; + public static long getDate(){ return System.currentTimeMillis(); } diff --git a/cloud/common/src/main/java/com/sincere/common/util/HttpClientUtils.java b/cloud/common/src/main/java/com/sincere/common/util/HttpClientUtils.java index ad52637..e557448 100644 --- a/cloud/common/src/main/java/com/sincere/common/util/HttpClientUtils.java +++ b/cloud/common/src/main/java/com/sincere/common/util/HttpClientUtils.java @@ -1,7 +1,10 @@ package com.sincere.common.util; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.methods.InputStreamRequestEntity; +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.commons.httpclient.methods.RequestEntity; import org.apache.http.HttpEntity; import org.apache.http.HttpStatus; import org.apache.http.client.config.RequestConfig; @@ -12,13 +15,15 @@ import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; -import org.springframework.boot.autoconfigure.SpringBootApplication; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; -import java.util.Date; +import java.util.List; + +import static jdk.nashorn.internal.runtime.ECMAErrors.getMessage; /** * HttpClient4.3工具类 @@ -36,15 +41,15 @@ public class HttpClientUtils { } public static void main(String[] args){ -// JSONObject object = HttpClientUtils.httpGet("http://60.190.202.57:1000/api/EasyN/GeAttendDetailNew?Id=158&TemplateId=0IZBD9624P&Type=0&time=2019-12-12&UserId=P113111&SchoolId=16"); -// JSONArray data = (JSONArray)object.get("data"); - String msg = "[{\"stuCount\":393,\"stuAttendCount\":341,\"noAttendCount\":52,\"sNoAttendCount\":52,\"leaveCount\":0,\"state\":\"已结束\",\"id\":310,\"templateId\":\"OCQQMV0ZXM\",\"color\":3}]"; - JSONArray data = JSONArray.parseArray(msg); - for(int i = 0 ; i < data.size() ; i++){ - JSONObject object = data.getJSONObject(i); - System.out.println(object.get("stuCount")); - } - System.out.println("1"); +// String url = "http://http://zhktest.114school.com.cn/szkjapi/toyxy/addTeacherOrg" ; +// String json = "{\"name\": \"子部门\",\"groupname\": \"父部门\",\"schoolid\": \"16\",\"token\": \"05719991\"}" ; +// JSONObject jsonObject = HttpClientUtils.httpPostJson(url,json); +// System.out.println(jsonObject.toJSONString()); + + String url = "http://115.239.135.60/token/yxt" ; + String json = "key=SZKJ&secret=87dyNIZReZNl6LXGsihfyX3unYgwukSk" ; + JSONObject jsonObject = HttpClientUtils.httpPost(url,json); + System.out.println(jsonObject.toJSONString()); } /** @@ -170,4 +175,55 @@ public class HttpClientUtils { } return null ; } + + /** + * + * @param wsdl + * @param ns + * @param method + * @param list 参数 + * @return + */ + public synchronized static String invoiceWebService(String wsdl, String ns, String method, List list){ + StringBuffer stringBuffer = new StringBuffer(); + //拼接参数 + for (int i = 0; i < list.size(); i++) { + stringBuffer.append("" + list.get(i) + ""); + } + //拼接SOAP + StringBuffer soapRequestData = new StringBuffer(""); + soapRequestData.append(""); + soapRequestData.append(""); + soapRequestData.append(""); + soapRequestData.append(""); + soapRequestData.append(stringBuffer); + soapRequestData.append(""); + soapRequestData.append("" + ""); + PostMethod postMethod = new PostMethod(wsdl); + // 然后把Soap请求数据添加到PostMethod中 + byte[] b = null; + InputStream is = null; + try { + b = soapRequestData.toString().getBytes("utf-8"); + is = new ByteArrayInputStream(b, 0, b.length); + RequestEntity re = new InputStreamRequestEntity(is, b.length, "text/xml; charset=UTF-8"); + postMethod.setRequestEntity(re); + HttpClient httpClient = new HttpClient(); + int status = httpClient.executeMethod(postMethod); + if (status == 200) { + return postMethod.getResponseBodyAsString() ; + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try{ + if (is != null) { + is.close(); + } + }catch (Exception e){ + + } + } + return null; + } } diff --git a/cloud/common/src/main/java/com/sincere/common/util/Xml2JsonUtils.java b/cloud/common/src/main/java/com/sincere/common/util/Xml2JsonUtils.java new file mode 100644 index 0000000..3cb2ce2 --- /dev/null +++ b/cloud/common/src/main/java/com/sincere/common/util/Xml2JsonUtils.java @@ -0,0 +1,113 @@ +package com.sincere.common.util; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.dom4j.*; + +import java.util.List; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/26 0026 10:19 + */ +public class Xml2JsonUtils { + + + public static void main(String[] args) throws Exception { + String xmlStr= + "" + + "9943601abd0575040013388685716校管理员00" + + "18639924计老师05750400-D00000115757371362教师00" + + "30962787王佳奕105750400-D00000113000000000教师00" + + ""; + Document doc= DocumentHelper.parseText(xmlStr); + JSONObject json=new JSONObject(); + dom4j2Json(doc.getRootElement(),json); + System.out.println("xml2Json:"+json.toJSONString()); + } + + /** + * xml转json + * @param xmlStr + * @return + * @throws DocumentException + */ + public static JSONObject xml2Json(String xmlStr){ + try{ + Document doc= DocumentHelper.parseText(xmlStr); + JSONObject json=new JSONObject(); + dom4j2Json(doc.getRootElement(), json); + return json; + }catch (Exception e){ + + } + return null ; + } + + /** + * xml转json + * @param element + * @param json + */ + public static void dom4j2Json(Element element,JSONObject json){ + //如果是属性 + for(Object o:element.attributes()){ + Attribute attr=(Attribute)o; + if(!isEmpty(attr.getValue())){ + json.put("@"+attr.getName(), attr.getValue()); + } + } + List chdEl=element.elements(); + if(chdEl.isEmpty()&&!isEmpty(element.getText())){//如果没有子元素,只有一个值 + json.put(element.getName(), element.getText()); + } + + for(Element e:chdEl){//有子元素 + if(!e.elements().isEmpty()){//子元素也有子元素 + JSONObject chdjson=new JSONObject(); + dom4j2Json(e,chdjson); + Object o=json.get(e.getName()); + if(o!=null){ + JSONArray jsona=null; + if(o instanceof JSONObject){//如果此元素已存在,则转为jsonArray + JSONObject jsono=(JSONObject)o; + json.remove(e.getName()); + jsona=new JSONArray(); + jsona.add(jsono); + jsona.add(chdjson); + } + if(o instanceof JSONArray){ + jsona=(JSONArray)o; + jsona.add(chdjson); + } + json.put(e.getName(), jsona); + }else{ + if(!chdjson.isEmpty()){ + json.put(e.getName(), chdjson); + } + } + + + }else{//子元素没有子元素 + for(Object o:element.attributes()){ + Attribute attr=(Attribute)o; + if(!isEmpty(attr.getValue())){ + json.put("@"+attr.getName(), attr.getValue()); + } + } + if(!e.getText().isEmpty()){ + json.put(e.getName(), e.getText()); + } + } + } + } + + public static boolean isEmpty(String str) { + + if (str == null || str.trim().isEmpty() || "null".equals(str)) { + return true; + } + return false; + } +} diff --git a/cloud/quartz/pom.xml b/cloud/quartz/pom.xml index 848668b..32bbcc5 100644 --- a/cloud/quartz/pom.xml +++ b/cloud/quartz/pom.xml @@ -12,13 +12,13 @@ quartz - - taobao-sdk-java-auto - ding - system - 1 - ${project.basedir}/lib/taobao-sdk-java-auto_1479188381469-20191205.jar - + + + + + + + com.sincere common diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java new file mode 100644 index 0000000..773d382 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java @@ -0,0 +1,113 @@ +package com.sincere.quartz.third.yixueyun; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.sincere.common.util.DateUtils; +import com.sincere.common.util.HttpClientUtils; +import com.sincere.common.util.Xml2JsonUtils; +import com.sincere.quartz.feign.ScFeign; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigInteger; +import java.security.MessageDigest; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +public class YXYReadService { + + private static String SI = "SZ" ; + private static int SI_CODE = 12345678 ; + + private static String nameSpace = "http://service.pubinfo.com.cn" ; + private static String getAllTeacher = "http://122.229.30.149:8282/DataSynService/GetTeacherInfo"; + private static String getAllTeacher_method = "getTeacherInfo" ; + private static String getAddTeacher = "http://122.229.30.149:8282/DataSynService/GetIncrementTeacherInfo" ; + private static String getAddTeacher_method = "getIncrementTeacherInfo" ; + + private static String getAllStudent = "http://122.229.30.149:8282/DataSynService/GetStudentInfo" ; + private static String getALlStudent_method = "getStudentInfo"; + private static String getAddStudent = "http://122.229.30.149:8282/DataSynService/GetIncrementStudentInfo" ; + private static String getAddStudent_method = "getIncrementStudentInfo" ; + + private static String getAllDept = "http://122.229.30.149:8282/DataSynService/GetDeptInfo" ; + private static String getALlDept_method = "getDeptInfo"; + + @Autowired + ScFeign scFeign ; + + public void sync(){ + List list = new ArrayList(); + list.add(SI); + list.add(getPassword(SI_CODE)); + list.add("05750400"); + String wsdl =getAllDept ; + String ns = nameSpace; + String method = getALlDept_method; + JSONArray jsonArray = getMessage(wsdl, ns, method, list); + System.out.println(jsonArray.toJSONString()); + } + + private void syncDept(){ + + } + + private void syncTeacher(){ + + } + + private void syncStudent(){ + + } + + private JSONArray getMessage(String wsdl, String ns, String method, List list){ + String resultXml = HttpClientUtils.invoiceWebService(wsdl,ns,method,list); + if(StringUtils.isNotBlank(resultXml)){ + int begin = resultXml.indexOf("<JXT"); + int end = resultXml.indexOf("</JXT"); + String str = resultXml.substring(begin, end+9); + str = str.replaceAll("<", "<"); + str = str.replaceAll(">", ">"); + JSONObject json = Xml2JsonUtils.xml2Json(str); + if(json != null){ + return (JSONArray)json.get("resultInfo") ; + } + } + return null ; + } + + private String getPassword(int si){ + int date = Integer.valueOf(DateUtils.date2String(new Date(),DateUtils.format5)); + String pwd = String.valueOf(si&date) ; + while (pwd.length() < 6){ + pwd = "0" + pwd ; + } + pwd = pwd.substring(pwd.length() - 6); + return EncodeByMD5(pwd); + } + + private String EncodeByMD5(String str) { + try { + // 生成一个MD5加密计算摘要 + MessageDigest md = MessageDigest.getInstance("MD5"); + // 计算md5函数 + md.update(str.getBytes("UTF-8")); + // digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符 + // BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值 + String md5 = new BigInteger(1, md.digest()).toString(16); + //BigInteger会把0省略掉,需补全至32位 + return fillMD5(md5); + } catch (Exception e) { + throw new RuntimeException("MD5加密错误:" + e.getMessage(), e); + } + } + + private String fillMD5(String md5){ + //如果不够32位则回调自身补零,最后返回32位长度的签名 + return md5.length()==32?md5:fillMD5("0"+md5); + } + +} \ No newline at end of file diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYResult.java b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYResult.java new file mode 100644 index 0000000..556b8a6 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYResult.java @@ -0,0 +1,59 @@ +package com.sincere.quartz.third.yixueyun; + +import java.io.Serializable; +import java.util.List; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/24 0024 10:42 + */ +public class YXYResult implements Serializable { + + private int code ; + private String message ; + private int total ; + private int pass ; + private List data ; + + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public int getPass() { + return pass; + } + + public void setPass(int pass) { + this.pass = pass; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYResultDetail.java b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYResultDetail.java new file mode 100644 index 0000000..a172394 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYResultDetail.java @@ -0,0 +1,39 @@ +package com.sincere.quartz.third.yixueyun; + +import java.io.Serializable; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/24 0024 10:43 + */ +public class YXYResultDetail implements Serializable { + + private String id ; + private String name ; + private String err ; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getErr() { + return err; + } + + public void setErr(String err) { + this.err = err; + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYWriteService.java b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYWriteService.java new file mode 100644 index 0000000..2c7669a --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYWriteService.java @@ -0,0 +1,96 @@ +package com.sincere.quartz.third.yixueyun; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.sincere.common.util.HttpClientUtils; +import com.sincere.quartz.feign.ScFeign; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @author chen + * @version 1.0 + * @date 2019/12/24 0024 9:14 + */ +@Service +public class YXYWriteService { + private String TOKEN="" ; + + private static String key = "SZKJ"; + private static String secret = "87dyNIZReZNl6LXGsihfyX3unYgwukSk" ; + private static String prefix_url = "http://115.239.135.60"; + + private static String suffix_org_add = "/szkjapi/toyxybatch/addTeacherOrg" ; //部门添加 + private static String suffix_class_add = "/szkjapi/toyxybatch/addClass" ; //班级添加 + private static String suffix_student_add = "/szkjapi/toyxybatch/addStudent" ; //学生添加 + private static String suffix_teacher_add = "/szkjapi/toyxybatch/addTeacher" ; //老师添加 + + private static String suffix_org_update = "/szkjapi/toyxybatch/modifyOrg" ; //部门 班级修改 + private static String suffix_student_update = "/szkjapi/toyxybatch/modifyStudent" ; //学生修改 + private static String suffix_teacher_update = "/szkjapi/toyxybatch/modifyTeacher" ; //老师修改 + + private static String suffix_org_delete = "/szkjapi/toyxybatch/deleteOrg" ; //部门 班级 删除 + private static String suffix_user_delete = "/szkjapi/toyxybatch/deleteUser" ; //老师学生 删除 + + + @Autowired + ScFeign scFeign ; + + public void sync(){ + //查出要同步的学校 + + //同步的部门 ,新增 修改 删除 + syncDept(); + //同步的老师 + syncTeacher(); + //同步的学生 + syncStudent(); + //同步的班级 + syncClass(); + } + + private void syncDept(){ + + } + + private void syncTeacher(){ + + } + + private void syncClass(){ + + } + + private void syncStudent(){ + + } + + + private YXYResult getResult(String url , String json){ + YXYResult result = invokeApi(url,TOKEN,json); + if(result.getCode() == 2){ + TOKEN = getToken(); + result = invokeApi(url,TOKEN,json); + } + return result ; + } + + private String getToken(){ + String url = prefix_url+"/token/yxt" ; + String json = "key="+key+"&secret="+secret ; + JSONObject jsonObject = HttpClientUtils.httpPost(url,json); + return (String)jsonObject.get("token") ; + } + + private YXYResult invokeApi(String url , String token , String json){ + try{ + JSONObject jsonObject = HttpClientUtils.httpPostJson(url+"?token="+token,json); + return JSON.toJavaObject(jsonObject,YXYResult.class); + }catch (Exception e){ + e.printStackTrace(); + return new YXYResult(); + } + + } + +} -- libgit2 0.21.0