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