浏览代码

fix 同步数据到官方系统

tanzh 3 年之前
父节点
当前提交
660e6fd622

+ 52 - 40
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeServiceImpl.java

@@ -8,6 +8,7 @@ import cn.hutool.http.HttpResponse;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.exception.user.UserPasswordNotMatchException;
 import com.zhongzheng.common.utils.DateUtils;
@@ -45,8 +46,15 @@ import com.zhongzheng.modules.user.service.IUserStudyRecordService;
 import com.zhongzheng.modules.user.service.IUserUpdateService;
 import com.zhongzheng.modules.user.vo.SubjectStudyRecordVo;
 import com.zhongzheng.modules.user.vo.UserVo;
+import io.netty.handler.codec.http.cookie.Cookie;
+import org.apache.http.Header;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.util.EntityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.client.discovery.event.HeartbeatEvent;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -522,23 +530,32 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean OpenQdyAccount(OpenQdyAccountBo bo) {
         int falseCount = 0;
-        // post 请求 传递json参数
+
+        //头信息
+        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 postLoginRequestUrl = "https://zjzyk.etledu.com/Account/GetLoginInfo";
         // 参数
-        Map<String, String> paramMap =new HashMap<>();
-        paramMap.put("userCode", "gdxiangyue");
-        paramMap.put("passWord", bo.getPassword());
-        paramMap.put("typeId", "2");
-        paramMap.put("yzm", bo.getYzm());
-        paramMap.put("phoneNum", "15602322262");
+        JSONObject loginJsonObject = new JSONObject();
+        loginJsonObject.put("userCode", "gdxiangyue");
+        loginJsonObject.put("passWord", bo.getPassword());
+        loginJsonObject.put("typeId", "2");
+        loginJsonObject.put("yzm", bo.getYzm());
+        loginJsonObject.put("phoneNum", "15602322262");
         String loginHttpResponse = "";
+        CloseableHttpResponse loginResponse = HttpUtils.sendPostHeader(postLoginRequestUrl, loginJsonObject.toString(), hearders);
+        Header[] headers = loginResponse.getHeaders("Set-Cookie");
         try {
-            String param = HttpUtils.appendUrl("", paramMap);
-            loginHttpResponse = HttpUtils.sendPost(postLoginRequestUrl, param.substring(1));
-            JSONObject ob = JSONObject.parseObject(loginHttpResponse);
-        }catch (UnsupportedEncodingException e) {
+            loginHttpResponse = EntityUtils.toString(loginResponse.getEntity());
+        }catch (IOException e) {
             e.printStackTrace();
         }finally {
             // 关闭CloseableHttpResponse
@@ -551,25 +568,28 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
             }
         }
 
-        if (loginHttpResponse.contains("{\"\"success\"\":true")) {
+        if (loginHttpResponse.contains("{\"Result\":true")) {
             List<StudyAccountStatusQueryBo> studyAccountStatusList = bo.getStudyAccountStatusQueryBos();
             if (Validator.isNotEmpty(studyAccountStatusList)) {
                 List<Long> ids = new ArrayList<>();
                 for (StudyAccountStatusQueryBo studyAccountStatusQueryBo : studyAccountStatusList) {
                     //查询学员url
                     String getInfoRequestUrl = "https://zjzyk.etledu.com/Student/GetCertInfos";
-                    paramMap.clear();
+                    Map<String, String> paramMap = new HashMap<>();
                     paramMap.put("personalId", studyAccountStatusQueryBo.getIdCard());
                     String getInfoHttpResponse = "";
                     try {
-                        getInfoHttpResponse = HttpUtils.postFormBody(getInfoRequestUrl, paramMap);
+                        hearders.put("Referer", "https://zjzyk.etledu.com/Student/TrainInfo");
+                        getInfoHttpResponse = HttpUtils.postFormBodyHeader(getInfoRequestUrl, paramMap, hearders, headers);
                     }catch (IOException e) {
                         e.printStackTrace();
                     }
-                    if (getInfoHttpResponse.contains("{\"\"success\"\":true")) {
-                        PersonRoot personRoot = com.alibaba.fastjson.JSONObject.parseObject(getInfoHttpResponse, PersonRoot.class);
+                    if (getInfoHttpResponse.contains("{\"success\":true")) {
+                        PersonRoot personRoot = JSONObject.parseObject(getInfoHttpResponse, PersonRoot.class);
+                        if (ObjectUtils.isEmpty(personRoot)) {
+                            throw new CustomException(studyAccountStatusQueryBo.getRealname() + "学员信息为空");
+                        }
                         CertInfoListItem certInfoListItem = personRoot.getCertInfoList().get(0);
-                        TrainInfosItem trainInfosItem = certInfoListItem.getTrainInfos().get(0);
                         //查询继教产品url
                         paramMap.clear();
                         String getProductUrl = "https://zjzyk.etledu.com/Student/GetProducts";
@@ -578,18 +598,19 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
                         paramMap.put("trainYear", bo.getTrainYear());
                         String getProductHttpResponse = "";
                         try {
-                            getProductHttpResponse = HttpUtils.postFormBody(getProductUrl, paramMap);
+                            hearders.put("Referer", "https://zjzyk.etledu.com/Student/TrainInfo");
+                            getProductHttpResponse = HttpUtils.postFormBodyHeader(getProductUrl, paramMap, hearders, headers);
                         }catch (IOException e) {
                             e.printStackTrace();
                         }
-                        if (getProductHttpResponse.contains("{\"\"success\"\":true")) {
-                            ProductRoot productRoot = com.alibaba.fastjson.JSONObject.parseObject(getProductHttpResponse, ProductRoot.class);
-                            if (Validator.isEmpty(productRoot)) {
-                                throw new CustomException("未获取到相关继教商品信息");
+                        if (getProductHttpResponse.contains("{\"success\":true")) {
+                            ProductRoot productRoot = JSONObject.parseObject(getProductHttpResponse, ProductRoot.class);
+                            if (ObjectUtils.isEmpty(productRoot)) {
+                                throw new CustomException(studyAccountStatusQueryBo.getRealname() + "继教商品信息为空");
                             }
                             ProductsItem productsItem = productRoot.getProducts().get(0);
-                            //学员开通url
-                            String postOpenRequestUrl = "https://zjzyk.etledu.com/Student/SubmitProject";
+                            //学员报名url
+                            String sumitRequestUrl = "https://zjzyk.etledu.com/Student/SubmitProject";
                             paramMap.clear();
                             paramMap.put("CertNumber", certInfoListItem.getCertNumber());
                             paramMap.put("CertState", certInfoListItem.getCertState().toString());
@@ -612,23 +633,20 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
                             paramMap.put("GetMethod", "1");
                             String sumitHttpResponse = "";
                             try {
-                                sumitHttpResponse = HttpUtils.postFormBody(getProductUrl, paramMap);
+                                hearders.put("Referer", "");
+                                sumitHttpResponse = HttpUtils.postFormBodyHeader(sumitRequestUrl, paramMap, hearders, headers);
                             }catch (IOException e) {
                                 e.printStackTrace();
                             }
-                            com.alibaba.fastjson.JSONObject.parseObject(sumitHttpResponse.toString(), ClassGradeUserQueryBo.class);
-                            //开通成功同步修改本地库learnStatus状态
-                            if (sumitHttpResponse.contains("{\"\"success\"\":true")) {
+
+                            if (sumitHttpResponse.contains("{\"success\":true")) {
                                 ids.add(studyAccountStatusQueryBo.getId());
                             } else {
                                 falseCount++;
                             }
-                        } else {
-                            throw new CustomException("获取相关继教商品信息失败");
                         }
-                    } else {
-                        throw new CustomException("根据身份证未获取相关数据失败");
                     }
+                    //同步修改本地库learnStatus状态
                     Long[] id = new Long[]{};
                     id = ids.toArray(id);
                     ClassGradeUserEditBo classGradeUserEditBo = new ClassGradeUserEditBo();
@@ -636,18 +654,12 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
                     classGradeUserEditBo.setLearnStatus(1);
                     iClassGradeUserService.updateByEditBo(classGradeUserEditBo);
                 }
-                Long[] id = new Long[]{};
-                id = ids.toArray(id);
-                ClassGradeUserEditBo classGradeUserEditBo = new ClassGradeUserEditBo();
-                classGradeUserEditBo.setId(id);
-                classGradeUserEditBo.setLearnStatus(1);
-                iClassGradeUserService.updateByEditBo(classGradeUserEditBo);
-            } else {
-                throw new UserPasswordNotMatchException();
             }
             if (falseCount > 0) {
                 throw new CustomException(falseCount + "个开通失败");
             }
+        }else {
+            throw new CustomException("登录官网失败,请检查信息");
         }
 
         return true;