Browse Source

fix 同步数据到官方系统

tanzh 3 years ago
parent
commit
57fb4d2152

+ 9 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/grade/ClassGradeController.java

@@ -554,4 +554,13 @@ public class ClassGradeController extends BaseController {
     public AjaxResult<Void> OpenQdyAccount(@RequestBody OpenQdyAccountBo bo) {
         return toAjax(iClassGradeService.OpenQdyAccount(bo) ? 1 : 0);
     }
+
+    /**
+     * 发送验证码
+     */
+    @ApiOperation("发送验证码")
+    @PostMapping("/sendCode")
+    public AjaxResult<Void> OpenQdyAccount() {
+        return toAjax(iClassGradeService.sendCode() ? 1 : 0);
+    }
 }

+ 96 - 1
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/http/HttpUtils.java

@@ -12,13 +12,21 @@ import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
 
 
-import org.apache.http.NameValuePair;
+import org.apache.http.Consts;
+import org.apache.http.Header;
+import cn.hutool.core.lang.Validator;
+import org.apache.http.*;
+import org.apache.http.client.config.RequestConfig;
 import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.client.methods.HttpUriRequest;
+import org.apache.http.client.params.AllClientPNames;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.impl.client.HttpClients;
 import org.apache.http.message.BasicNameValuePair;
 import org.apache.http.util.EntityUtils;
 import org.slf4j.Logger;
@@ -36,6 +44,7 @@ public class HttpUtils
     private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);
     private static final String UTF8 = "UTF-8";
     private static final String APPLICATION_FORM_URLENCODED = "application/x-www-form-urlencoded; charset=UTF-8";
+    private static final CloseableHttpClient httpclient = HttpClients.createDefault();
 
     /**
      * 向指定 URL 发送GET方法的请求
@@ -417,4 +426,90 @@ public class HttpUtils
     private static void collectAPISpendTime(String url, long startTime, long endTime) {
         log.debug("HTTP请求耗时分析,请求URL: {} , 耗时: {} ms", url, endTime - startTime);
     }
+
+    /**
+     * 向指定 URL 发送POST方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @param headersMap 请求头
+     * @return 所代表远程资源的响应结果
+     */
+    public static CloseableHttpResponse sendPostHeader(String url, String param, Map<String, String> headersMap)
+    {
+        // 字符串编码
+        StringEntity entity = new StringEntity(param, Consts.UTF_8);
+        // 设置content-type
+        entity.setContentType("application/json");
+        HttpPost httpPost = new HttpPost(url);
+        // 防止被当成攻击添加的
+        httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1");
+        // 接收参数设置
+        httpPost.setHeader("connection", "Keep-Alive");
+        httpPost.setHeader("Accept", "application/json");
+        httpPost.setHeader("Accept-Charset", "utf-8");
+        httpPost.setHeader("contentType", "utf-8");
+        headersMap.forEach(httpPost::setHeader);
+        httpPost.setEntity(entity);
+        CloseableHttpResponse response = null;
+        try {
+            response = httpclient.execute(httpPost);
+            Header[] headers = response.getHeaders("Set-Cookie");
+            Arrays.stream(headers).forEach(httpPost::addHeader);
+        } catch (IOException e) {
+            log.error(e.getMessage());
+        }
+        return response;
+    }
+
+    public static String postFormBodyHeader(String url, Map<String, String> paramMap, Map<String, String> headersMap, Header[] header) throws IOException{
+        return postHearder(url, paramMap, null, headersMap, header);
+
+    }
+
+    /**
+     * 向url发送post请求表单提交数据
+     * @param url 请求url
+     * @param paramMap 表单数据
+     * @param encoding 编码
+     * @param headersMap 请求头
+     * @return 请求返回的数据
+     * @throws IOException 读写异常
+     */
+    private static String postHearder(String url, Map<String, String> paramMap, String encoding, Map<String, String> headersMap, Header[] header) throws IOException {
+        log.debug("http 请求 url: {} , 请求参数: {}", url, appendUrl("", paramMap).replace("?", ""));
+        encoding = encoding == null ? UTF8 : encoding;
+        // 创建post方式请求对象
+        HttpPost httpPost = new HttpPost(url);
+        // 装填参数
+        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
+        if (paramMap != null) {
+            for (Map.Entry<String, String> entry : paramMap.entrySet()) {
+                String value = entry.getValue();
+                //去掉如下判断会造成String类型的value为null时
+                if (value != null) {
+                    nameValuePairs.add(new BasicNameValuePair(entry.getKey(), value));
+                }
+            }
+        }
+        // 设置参数到请求对象中
+        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, encoding));
+        // 设置header信息
+        // 指定报文头【Content-type】、【User-Agent】
+        httpPost.setHeader("Content-type", APPLICATION_FORM_URLENCODED);
+        httpPost.setHeader("Accept", "*/*");
+        httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1");
+        headersMap.forEach(httpPost::setHeader);
+        Arrays.stream(header).forEach(head->{
+            httpPost.addHeader("Cookie", head.getValue());
+        });
+        //Arrays.stream(header).forEach(httpPost::addHeader);
+        return post(url, httpPost, encoding, new DataParse<String>() {
+            @Override
+            public String parseData(HttpEntity httpEntity, String encoding) throws IOException {
+                return EntityUtils.toString(httpEntity, encoding);
+            }
+        });
+    }
+
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeService.java

@@ -76,4 +76,6 @@ public interface IClassGradeService extends IService<ClassGrade> {
 	Integer getConsoleGradeUserPeriodNum(ConsoleQueryBo bo);
 
 	boolean OpenQdyAccount(OpenQdyAccountBo bo);
+
+    boolean sendCode();
 }

+ 57 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeServiceImpl.java

@@ -540,6 +540,15 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
             JSONObject ob = JSONObject.parseObject(loginHttpResponse);
         }catch (UnsupportedEncodingException e) {
             e.printStackTrace();
+        }finally {
+            // 关闭CloseableHttpResponse
+            if (loginResponse != null) {
+                try {
+                    loginResponse.close();
+                } catch (IOException e) {
+                    log.error(e.getMessage());
+                }
+            }
         }
 
         if (loginHttpResponse.contains("{\"\"success\"\":true")) {
@@ -582,7 +591,7 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
                             //学员开通url
                             String postOpenRequestUrl = "https://zjzyk.etledu.com/Student/SubmitProject";
                             paramMap.clear();
-                            paramMap.put("CertNumber", studyAccountStatusQueryBo.getIdCard());
+                            paramMap.put("CertNumber", certInfoListItem.getCertNumber());
                             paramMap.put("CertState", certInfoListItem.getCertState().toString());
                             paramMap.put("CertTime", certInfoListItem.getCertTime());
                             paramMap.put("Name", studyAccountStatusQueryBo.getRealname());
@@ -593,9 +602,13 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
                             paramMap.put("WorkTypeCode", certInfoListItem.getWorkTypeCode());
                             paramMap.put("WorkTypeName", certInfoListItem.getWorkTypeName());
                             paramMap.put("productId", productsItem.getId().toString());
-                            paramMap.put("trainPeriodDate", trainInfosItem.getTrainPeriodTime());
+                            certInfoListItem.getTrainInfos().forEach(trainInfo->{
+                                if (bo.getTrainYear().equals(trainInfo.getTrainYear())){
+                                    paramMap.put("trainPeriodDate", trainInfo.getTrainStartTime());
+                                }
+                            });
                             paramMap.put("period", "0");
-                            paramMap.put("IsBuyBook", "1");
+                            paramMap.put("IsBuyBook", "0");
                             paramMap.put("GetMethod", "1");
                             String sumitHttpResponse = "";
                             try {
@@ -616,6 +629,12 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
                     } else {
                         throw new CustomException("根据身份证未获取相关数据失败");
                     }
+                    Long[] id = new Long[]{};
+                    id = ids.toArray(id);
+                    ClassGradeUserEditBo classGradeUserEditBo = new ClassGradeUserEditBo();
+                    classGradeUserEditBo.setId(id);
+                    classGradeUserEditBo.setLearnStatus(1);
+                    iClassGradeUserService.updateByEditBo(classGradeUserEditBo);
                 }
                 Long[] id = new Long[]{};
                 id = ids.toArray(id);
@@ -634,6 +653,41 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
         return true;
     }
 
+    @Override
+    public boolean sendCode() {
+        //头信息
+        Map<String, String> hearders = new HashMap<>();
+        hearders.put("Origin", "https://zjzyk.etledu.com");
+        hearders.put("Referer", "https://zjzyk.etledu.com");
+        hearders.put("X-Requested-With", "XMLHttpRequest");
+        hearders.put("Host", "zjzyk.etledu.com");
+
+        //发送验证码
+        String sendCodeUrl = "https://zjzyk.etledu.com/Account/SendMessageForgetPwd";
+        JSONObject codeJsonObject = new JSONObject();
+        codeJsonObject.put("phoneNumber", "15602322262");
+        String codeHttpResponse = "";
+        CloseableHttpResponse codeResponse = HttpUtils.sendPostHeader(sendCodeUrl, codeJsonObject.toString(), hearders);
+        try {
+            codeHttpResponse = EntityUtils.toString(codeResponse.getEntity());
+        }catch (IOException e) {
+            e.printStackTrace();
+        }finally {
+            // 关闭CloseableHttpResponse
+            if (codeResponse != null) {
+                try {
+                    codeResponse.close();
+                } catch (IOException e) {
+                    log.error(e.getMessage());
+                }
+            }
+        }
+        if (!codeHttpResponse.contains("{\"Result\":true")) {
+            throw new CustomException("验证码发送失败");
+        }
+        return true;
+    }
+
     /**
      * 实体类转化成视图对象
      *

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/CertInfoListItem.java

@@ -35,8 +35,8 @@ public class CertInfoListItem implements Comparable<CertInfoListItem> {
 	@ApiModelProperty("工作类型")
 	private String workTypeName;
 
-	@Excel(name = "身份证号码")
-	@ApiModelProperty("身份证号码")
+	@Excel(name = "证号码")
+	@ApiModelProperty("证号码")
 	private String certNumber;
 
 	@Excel(name = "工作类型编号")

+ 5 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/ProductsItem.java

@@ -75,13 +75,17 @@ public class ProductsItem implements Comparable<ProductsItem> {
 	@ApiModelProperty("学习类型")
 	private Integer learnType;
 
+	@Excel(name = "区域代码")
+	@ApiModelProperty("区域代码")
+	private String areaCode;
+
 	@Excel(name = "区域名称")
 	@ApiModelProperty("区域名称")
 	private String areaName;
 
 	@Excel(name = "组织机构代码")
 	@ApiModelProperty("组织机构代码")
-	private String organizationcode;
+	private String organizationCode;
 
 	@Excel(name = "组织机构名称")
 	@ApiModelProperty("组织机构名称")

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/TrainInfosItem.java

@@ -27,7 +27,7 @@ public class TrainInfosItem implements Comparable<TrainInfosItem> {
 
 	@Excel(name = "培训年限")
 	@ApiModelProperty("培训年限")
-	private Integer TrainYear;
+	private String TrainYear;
 
 
 	@Override