qxp пре 4 година
родитељ
комит
5e9e0f8b6b

+ 19 - 7
suishenbang-api/src/test/java/test/MyTest.java

@@ -1,17 +1,14 @@
 package test;
 
 
-import com.alibaba.fastjson.JSONObject;
 import com.dgtly.ApiApplication;
-import com.dgtly.system.domain.CustomersExt;
 import com.dgtly.system.domain.SysUser;
+import com.dgtly.wxportal.config.ESignConfig;
 import com.dgtly.wxportal.service.ESignService;
 import com.dgtly.wxportal.service.IEsignOrganRealVerifyService;
 import com.dgtly.wxportal.service.IEsignPersonRealnVerifyService;
 import com.dgtly.wxportal.service.IEsignSignService;
 import com.dgtly.wxportal.utils.ESign.ESignHttpUtil;
-import com.dgtly.wxportal.utils.ESign.ESignUploadUtil;
-import com.dgtly.wxportal.utils.ESign.ESignUrl;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,10 +16,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.io.*;
-import java.net.HttpURLConnection;
 import java.net.URL;
-import java.util.HashSet;
-import java.util.Set;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes=ApiApplication.class)
@@ -37,6 +31,8 @@ public class MyTest {
     @Autowired
     private ESignService eSignService;
     @Autowired
+    private ESignConfig eSignConfig;
+    @Autowired
     private IEsignSignService signService;
     @Test
     public void test() throws Exception {
@@ -120,6 +116,22 @@ public class MyTest {
         fw.close();
     }
 
+    @Test
+    public void test2() throws Exception {
+        System.out.println(eSignConfig.getAccessToken());
+        SysUser user = new SysUser();
+        user.setUserId(7971L);
+        user.setUserName("屈星鹏");
+        user.setIdNumber("410304199209191012");
+        user.setAccountId("cf6824d029054529a0c8ec32de7a388a");
+
+        eSignService.updatePersonalAccount(user);
+
+        System.out.println(eSignConfig.getAccessToken());
+
+
+        System.out.println(1111111111);
+    }
 
 
 }

+ 8 - 0
suishenbang-wxportal/suishenbang-wxportal-api/src/main/java/com/dgtly/wxportal/controller/EsignController.java

@@ -31,6 +31,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -132,6 +133,13 @@ public class EsignController extends ApiBaseController {
             orderFile.setSignerName(sysUser.getUserName());
             orderFile.setFlowId(flowId);
             orderFileService.insertOrderFile(orderFile);
+            try{
+                File f = new File(fileModal.getFilePath());
+                f.delete();
+            }catch (Exception e){
+                logger.error("删除文件出错:",e);
+            }
+
             return AjaxResult.success("签收成功");
         } catch (Exception e) {
             e.printStackTrace();

+ 90 - 11
suishenbang-wxportal/suishenbang-wxportal-common/src/main/java/com/dgtly/wxportal/config/ESignConfig.java

@@ -1,13 +1,24 @@
 package com.dgtly.wxportal.config;
 
-import com.dgtly.wxportal.utils.ESign.ESignToken;
+import com.alibaba.fastjson.JSONObject;
+import com.dgtly.common.utils.http.HttpUtils;
+import com.dgtly.wxportal.exception.ESignException;
+import com.dgtly.wxportal.utils.ESign.ESignUrl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
+import java.util.Formatter;
+
+
 @Component
 public class ESignConfig {
+    private final Logger log = LoggerFactory.getLogger(ESignConfig.class);
 
+    public static ESignConfig eSignConfig;
     @Value(value = "${esign.appId:none}")
     private String appId;
 
@@ -16,7 +27,20 @@ public class ESignConfig {
 
     @Value(value = "${esign.serviceUrl:none}")
     private String eSignServiceUrl ;
-    private ESignToken eSignToken;
+
+    private ESignUrl eSignUrl;
+
+    private String accessToken;
+
+    /**
+     * 过期时间
+     */
+    private long expires;
+    /**
+     * 过期时间
+     */
+    private String  refreshToken;
+
 
     @Value(value = "${esign.personNotifyUrl:none}")
     private String personNotifyUrl ;
@@ -28,11 +52,54 @@ public class ESignConfig {
     private String signSuccessUrl ;
     @Value(value = "${esign.fileUrl:none}")
     private String fileUrl;
-    @Bean
-    public ESignToken eSignTokenUtil(){
-        ESignToken eSignToken =  new ESignToken();
-        this.eSignToken = eSignToken;
-        return eSignToken;
+
+    /**
+     * 获取access_token
+     * @return
+     */
+    public String getAccessToken() {
+        JSONObject json;
+        String url;
+
+        try {
+            //token未过期使用缓存的token
+            long currentTiem = new Date().getTime();
+            log.info("线程id{}",Thread.currentThread().getId());
+            log.info("过期时间为{}",this.expires);
+            log.info("当前时间为{}",currentTiem);
+            if(this.accessToken!=null &&(currentTiem)<(this.expires-10000)){
+                log.info("本身的token为{}",this.accessToken);
+                return this.accessToken;
+            }
+            //获取请求地址
+            url = this.getUrl(ESignUrl.AccessToken);
+            log.info("开始请求E签宝接口:url==>",url);
+            json = JSONObject.parseObject(HttpUtils.sendGet(url));
+            log.info("结果返回==》",json);
+        }catch (Exception e){
+            reSetToken();
+            log.error("获取E签宝token错误",e);
+            throw e;
+        }
+        Integer code = json.getInteger("code");
+        if(code!=0){
+            reSetToken();
+            throw new ESignException(code,url,json.getString("message"));
+        }
+        JSONObject data = json.getJSONObject("data");
+        this.expires = data.getLong("expiresIn");
+        this.accessToken = data.getString("token");
+        this.refreshToken = data.getString("refreshToken");
+
+        return this.accessToken;
+    }
+
+    public void reSetToken() {
+        log.info("清除ESigntoken缓存");
+        accessToken =null;
+        expires = 0;
+        refreshToken = null;
+
     }
 
     public String getAppId() {
@@ -47,10 +114,6 @@ public class ESignConfig {
         return eSignServiceUrl;
     }
 
-    public ESignToken geteSignToken() {
-        return eSignToken;
-    }
-
     public String getPersonNotifyUrl() {
         return personNotifyUrl;
     }
@@ -66,4 +129,20 @@ public class ESignConfig {
     public String getFileUrl(){
         return fileUrl;
     }
+
+
+    public String getUrl(ESignUrl eSignUrl,Object ... args){
+        String str = this.eSignServiceUrl+eSignUrl.url;
+        switch (eSignUrl){
+            case AccessToken:
+                str= new Formatter().format(str, this.appId,this.appSecret).toString();
+                break;
+            default:
+                str= new Formatter().format(str, args).toString();
+                break;
+        }
+        return str;
+    }
+
+
 }

+ 1 - 2
suishenbang-wxportal/suishenbang-wxportal-common/src/main/java/com/dgtly/wxportal/service/impl/ESignServiceImpl.java

@@ -11,7 +11,6 @@ import com.dgtly.system.service.ISysUserService;
 import com.dgtly.wxportal.config.ESignConfig;
 import com.dgtly.wxportal.service.ESignService;
 import com.dgtly.wxportal.utils.ESign.ESignHttpUtil;
-import com.dgtly.wxportal.utils.ESign.ESignToken;
 import com.dgtly.wxportal.utils.ESign.ESignUploadUtil;
 import com.dgtly.wxportal.utils.ESign.ESignUrl;
 import com.dgtly.wxportal.utils.pdf.PDFUtil;
@@ -44,7 +43,7 @@ import java.util.Map;
 public class ESignServiceImpl implements ESignService {
 
 
-    private static final Logger log = LoggerFactory.getLogger(ESignToken.class);
+    private static final Logger log = LoggerFactory.getLogger(ESignServiceImpl.class);
 
     @Autowired
     private ESignHttpUtil eSignHttpUtil;

+ 71 - 104
suishenbang-wxportal/suishenbang-wxportal-common/src/main/java/com/dgtly/wxportal/utils/ESign/ESignHttpUtil.java

@@ -12,10 +12,7 @@ import org.springframework.stereotype.Component;
 
 import javax.net.ssl.*;
 import java.io.*;
-import java.net.ConnectException;
-import java.net.SocketTimeoutException;
-import java.net.URL;
-import java.net.URLConnection;
+import java.net.*;
 import java.security.SecureRandom;
 import java.security.cert.X509Certificate;
 
@@ -35,7 +32,7 @@ public class ESignHttpUtil {
      * @return
      */
     public JSONObject doPostGetJson(ESignUrl eurl, JSONObject param,String ...querys){
-        String url = eurl.getUrl(querys);
+        String url = eSignConfig.getUrl(eurl,querys);
         String str = doPost(url,param.toJSONString());
         JSONObject json =JSONObject.parseObject(str);
         int code = json.getInteger("code");
@@ -53,7 +50,7 @@ public class ESignHttpUtil {
      * @return
      */
     public JSONObject doGetGetJson(ESignUrl eurl, JSONObject param,String ...querys){
-        String url = eurl.getUrl(querys);
+        String url = eSignConfig.getUrl(eurl,querys);
         String str = doGet(url);
 //        String str = doGet(url,param.toJSONString());
         JSONObject json =JSONObject.parseObject(str);
@@ -72,7 +69,7 @@ public class ESignHttpUtil {
      * @return
      */
     public JSONObject doPutGetJson(ESignUrl eurl, JSONObject param,String ...querys){
-        String url = eurl.getUrl(querys);
+        String url = eSignConfig.getUrl(eurl,querys);
         String str = doPut(url,param.toJSONString());
         JSONObject json =JSONObject.parseObject(str);
         int code = json.getInteger("code");
@@ -83,7 +80,7 @@ public class ESignHttpUtil {
     }
 
     public String doPost(ESignUrl eurl, JSONObject param,String ...querys){
-        String url = eurl.getUrl(querys);
+        String url = eSignConfig.getUrl(eurl,querys);
         return doPost(url,param.toJSONString());
     }
 
@@ -95,7 +92,7 @@ public class ESignHttpUtil {
      * @param json 请求参数,
      * @return 所代表远程资源的响应结果
      */
-    public String doPost(String url , String json)
+    private String doPost(String url , String json)
     {
         PrintWriter out = null;
         BufferedReader in = null;
@@ -118,21 +115,30 @@ public class ESignHttpUtil {
 
             conn.setRequestProperty("accept", "*/*");
             conn.setRequestProperty("X-Tsign-Open-App-Id",eSignConfig.getAppId());
-            conn.setRequestProperty("X-Tsign-Open-Token",eSignConfig.geteSignToken().getAccessToken());
+            conn.setRequestProperty("X-Tsign-Open-Token",eSignConfig.getAccessToken());
             conn.setRequestProperty("connection", "Keep-Alive");
             conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
             conn.setUseCaches(false);//设置不要缓存
             conn.setDoOutput(true);
             conn.setDoInput(true);
-
-            out = new PrintWriter(conn.getOutputStream());
-            out.write(json);
-            out.flush();
-            in = new BufferedReader( new InputStreamReader(conn.getInputStream()));
             String line;
-            while ((line = in.readLine()) != null)
-            {
-                result.append(line);
+
+            try{
+                out = new PrintWriter(conn.getOutputStream());
+                out.write(json);
+                out.flush();
+                in = new BufferedReader( new InputStreamReader(conn.getInputStream()));
+
+                while ((line = in.readLine()) != null)
+                {
+                    result.append(line);
+                }
+            } catch (IOException e){
+                if(conn.getResponseCode()==401){
+                    log.error("请求E签宝接口报错401,token超时");
+                    eSignConfig.reSetToken();
+                }
+                throw e;
             }
             log.info("recv - {}", result);
         }
@@ -158,8 +164,6 @@ public class ESignHttpUtil {
         }
         finally
         {
-            //清除token缓存
-            eSignConfig.geteSignToken().reSetToken();
             try
             {
                 if (out != null)
@@ -186,7 +190,7 @@ public class ESignHttpUtil {
      * @param json 请求参数,
      * @return 所代表远程资源的响应结果
      */
-    public String doPut(String url , String json)
+    private String doPut(String url , String json)
     {
         PrintWriter out = null;
         BufferedReader in = null;
@@ -209,20 +213,29 @@ public class ESignHttpUtil {
             conn.setRequestMethod("PUT");
             conn.setRequestProperty("accept", "*/*");
             conn.setRequestProperty("X-Tsign-Open-App-Id",eSignConfig.getAppId());
-            conn.setRequestProperty("X-Tsign-Open-Token",eSignConfig.geteSignToken().getAccessToken());
+            conn.setRequestProperty("X-Tsign-Open-Token",eSignConfig.getAccessToken());
             conn.setRequestProperty("connection", "Keep-Alive");
             conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
             conn.setUseCaches(false);//设置不要缓存
             conn.setDoOutput(true);
             conn.setDoInput(true);
-            out = new PrintWriter(conn.getOutputStream());
-            out.write(json);
-            out.flush();
-            in = new BufferedReader( new InputStreamReader(conn.getInputStream()));
             String line;
-            while ((line = in.readLine()) != null)
-            {
-                result.append(line);
+            try{
+                out = new PrintWriter(conn.getOutputStream());
+                out.write(json);
+                out.flush();
+                in = new BufferedReader( new InputStreamReader(conn.getInputStream()));
+
+                while ((line = in.readLine()) != null)
+                {
+                    result.append(line);
+                }
+            } catch (IOException e){
+                if(conn.getResponseCode()==401){
+                    log.error("请求E签宝接口报错401,token超时");
+                    eSignConfig.reSetToken();
+                }
+                throw e;
             }
             log.info("recv - {}", result);
         }
@@ -239,6 +252,7 @@ public class ESignHttpUtil {
         catch (IOException e)
         {
             log.error("调用ESignHttpUtil.doPost IOException, url=" + url + ",param=" + json, e);
+
             throw new BusinessException("调用ESignHttpUtil.sendJsonPost IOException, url=" + url + ",param=" + json );
         }
         catch (Exception e)
@@ -248,8 +262,7 @@ public class ESignHttpUtil {
         }
         finally
         {
-            //清除token缓存
-            eSignConfig.geteSignToken().reSetToken();
+
             try
             {
                 if (out != null)
@@ -269,7 +282,7 @@ public class ESignHttpUtil {
         return result.toString();
     }
 
-    public String doGet(String url, String json)
+    private String doGet(String url, String json)
     {
         PrintWriter out = null;
         StringBuilder result = new StringBuilder();
@@ -280,21 +293,35 @@ public class ESignHttpUtil {
             log.info("sendGet - {}", urlNameString);
             URL realUrl = new URL(urlNameString);
 
-            URLConnection connection = realUrl.openConnection();
+            HttpURLConnection connection = (HttpURLConnection)realUrl.openConnection();
             connection.setRequestProperty("accept", "*/*");
             connection.setRequestProperty("X-Tsign-Open-App-Id",eSignConfig.getAppId());
-            connection.setRequestProperty("X-Tsign-Open-Token",eSignConfig.geteSignToken().getAccessToken());
+            connection.setRequestProperty("X-Tsign-Open-Token",eSignConfig.getAccessToken());
             connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
             connection.setRequestProperty("connection", "Keep-Alive");
             connection.connect();
-            in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
-            out = new PrintWriter(connection.getOutputStream());
-            out.write(json);
-            out.flush();
+
             String line;
-            while ((line = in.readLine()) != null)
-            {
-                result.append(line);
+
+            try{
+                if(json!=null){
+                    out = new PrintWriter(connection.getOutputStream());
+                    out.write(json);
+                    out.flush();
+                }
+
+                in = new BufferedReader( new InputStreamReader(connection.getInputStream()));
+
+                while ((line = in.readLine()) != null)
+                {
+                    result.append(line);
+                }
+            } catch (IOException e){
+                if(connection.getResponseCode()==401){
+                    log.error("请求E签宝接口报错401,token超时");
+                    eSignConfig.reSetToken();
+                }
+                throw e;
             }
             log.info("recv - {}", result);
         }
@@ -320,8 +347,7 @@ public class ESignHttpUtil {
         }
         finally
         {
-            //清除token缓存
-            eSignConfig.geteSignToken().reSetToken();
+
             try
             {
                 if (out != null)
@@ -341,68 +367,9 @@ public class ESignHttpUtil {
         return result.toString();
     }
 
-    public String doGet(String url)
+    private String doGet(String url)
     {
-        StringBuilder result = new StringBuilder();
-        BufferedReader in = null;
-        try
-        {
-            String urlNameString = url;
-            log.info("sendGet - {}", urlNameString);
-            URL realUrl = new URL(urlNameString);
-
-            URLConnection connection = realUrl.openConnection();
-            connection.setRequestProperty("accept", "*/*");
-            connection.setRequestProperty("X-Tsign-Open-App-Id",eSignConfig.getAppId());
-            connection.setRequestProperty("X-Tsign-Open-Token",eSignConfig.geteSignToken().getAccessToken());
-            connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
-            connection.setRequestProperty("connection", "Keep-Alive");
-            connection.connect();
-            in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
-            String line;
-            while ((line = in.readLine()) != null)
-            {
-                result.append(line);
-            }
-            log.info("recv - {}", result);
-        }
-        catch(ConnectException e)
-        {
-            log.error("调用ESignHttpUtil.sendGet ConnectException, url=" + url , e);
-            throw new BusinessException("调用ESignHttpUtil.sendGet ConnectException, url=" + url );
-        }
-        catch (SocketTimeoutException e)
-        {
-            log.error("调用ESignHttpUtil.sendGet SocketTimeoutException, url=" + url , e);
-            throw new BusinessException("调用ESignHttpUtil.sendGet SocketTimeoutException, url=" + url );
-        }
-        catch (IOException e)
-        {
-            log.error("调用ESignHttpUtil.sendGet IOException, url=" + url, e);
-            throw new BusinessException("调用ESignHttpUtil.sendGet IOException, url=" + url );
-        }
-        catch (Exception e)
-        {
-            log.error("调用HttpsUtil.sendGet Exception, url=" + url , e);
-            throw new BusinessException("调用ESignHttpUtil.sendGet Exception, url=" + url );
-        }
-        finally
-        {
-            //清除token缓存
-            eSignConfig.geteSignToken().reSetToken();
-            try
-            {
-                if (in != null)
-                {
-                    in.close();
-                }
-            }
-            catch (Exception ex)
-            {
-                log.error("调用in.close Exception, url=" + url , ex);
-            }
-        }
-        return result.toString();
+        return doGet(url,null);
     }
 
     private static class TrustAnyTrustManager implements X509TrustManager

+ 0 - 82
suishenbang-wxportal/suishenbang-wxportal-common/src/main/java/com/dgtly/wxportal/utils/ESign/ESignToken.java

@@ -1,82 +0,0 @@
-package com.dgtly.wxportal.utils.ESign;
-
-
-import com.alibaba.fastjson.JSONObject;
-import com.dgtly.common.utils.http.HttpUtils;
-import com.dgtly.wxportal.exception.ESignException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Date;
-
-
-public class ESignToken {
-
-
-    private static final Logger log = LoggerFactory.getLogger(ESignToken.class);
-
-    private String accessToken;
-    /**
-     * 创建时间
-     */
-    private long createTime;
-
-    /**
-     * 过期时间
-     */
-    private long expires;
-    /**
-     * 过期时间
-     */
-    private String  refreshToken;
-
-    /**
-     * 获取access_token
-     * @return
-     */
-    public String getAccessToken() {
-        JSONObject json;
-        String url;
-
-        try {
-            //token未过期使用缓存的token
-            long currentTiem = new Date().getTime();
-            log.info("过期时间为{}",this.expires);
-            log.info("当前时间为{}",currentTiem);
-            if(this.accessToken!=null &&(currentTiem)<(expires-10000)){
-                log.info("本身的token为{}",this.accessToken);
-                return this.accessToken;
-            }
-            //获取请求地址
-            url = ESignUrl.AccessToken.getUrl();
-            log.info("开始请求E签宝接口:url==>",url);
-            json = JSONObject.parseObject(HttpUtils.sendGet(url));
-            log.info("结果返回==》",json);
-        }catch (Exception e){
-            this.accessToken=null;
-            log.error("获取E签宝token错误",e);
-            throw e;
-        }
-        Integer code = json.getInteger("code");
-        if(code!=0){
-            this.accessToken=null;
-            throw new ESignException(code,url,json.getString("message"));
-        }
-        JSONObject data = json.getJSONObject("data");
-        this.expires = data.getLong("expiresIn");
-        this.createTime = new Date().getTime();
-        this.accessToken = data.getString("token");
-        this.refreshToken = data.getString("refreshToken");
-
-        return this.accessToken;
-    }
-
-    public void reSetToken() {
-        accessToken =null;
-        expires = 0;
-        refreshToken = null;
-        createTime = 0;
-
-    }
-
-}

+ 1 - 40
suishenbang-wxportal/suishenbang-wxportal-common/src/main/java/com/dgtly/wxportal/utils/ESign/ESignUrl.java

@@ -49,50 +49,11 @@ public enum ESignUrl {
     //设置静默签署
     ,signAuthUrl("/v1/signAuth/%s")
     ;
-    private String url;
-    private ESignConfig eSignConfig ;
+    public String url;
 
     ESignUrl(String url){
 
         this.url = url;
     }
 
-
-    public String getUrl(Object ... args) {
-        String str = eSignConfig.geteSignServiceUrl()+url;
-        switch (this){
-            case AccessToken:
-                str= new Formatter().format(str, eSignConfig.getAppId(),eSignConfig.getAppSecret()).toString();
-                break;
-            default:
-                str= new Formatter().format(str, args).toString();
-                break;
-        }
-        return str;
-    }
-
-    public void setESignConfig(ESignConfig eSignConfig){
-        this.eSignConfig = eSignConfig;
-    }
-
-
-
-
-
-
-    @Component
-    public static class ESignServiceAutowired {
-
-        @Autowired
-        private ESignConfig eSignConfig ;
-
-        @PostConstruct
-        public void postConstruct() {
-            for (ESignUrl type : EnumSet.allOf(ESignUrl.class)){
-                type.setESignConfig(eSignConfig);
-            }
-        }
-    }
-
-
 }