Преглед изворни кода

实现裁决书签名功能

qitz пре 2 година
родитељ
комит
ef6973ff50

+ 27
- 0
ruoyi-system/src/main/java/com/ruoyi/bestsign/domain/ArbitrSignatuVO.java Прегледај датотеку

13
     /**
13
     /**
14
      * 用户帐号
14
      * 用户帐号
15
      * 任务id
15
      * 任务id
16
+     * 文件MD5
17
+     * 文件内容
18
+     * 文件总页数
19
+     * 文件名称
20
+     * 文件类型
21
+     * 合同标题
22
+     * 有效期
23
+     * 合同编号
24
+     * 签署者账号
25
+     * 签名位置页码
26
+     * x坐标
27
+     * y坐标
16
      */
28
      */
17
     private String account;
29
     private String account;
18
     private String taskId;
30
     private String taskId;
19
 
31
 
32
+    private String fileMd5;
33
+    private String fileData;
34
+    private String filePages;
35
+    private String fileName;
36
+    private String fileType;
37
+    private String contractTitle;
38
+    private String periodValidity;
39
+
40
+    private String contractNum;
41
+    private String signerAccout;
42
+    private String pageNumSigner;
43
+    private String pageNumSignerX;
44
+    private String pageNumSignerY;
45
+
46
+
20
 
47
 
21
 
48
 
22
 
49
 

+ 137
- 3
ruoyi-system/src/main/java/com/ruoyi/bestsign/utils/BestsignOpenApiClient.java Прегледај датотеку

1
 package com.ruoyi.bestsign.utils;
1
 package com.ruoyi.bestsign.utils;
2
 
2
 
3
 import com.alibaba.fastjson.JSON;
3
 import com.alibaba.fastjson.JSON;
4
+import com.alibaba.fastjson.JSONArray;
4
 import com.alibaba.fastjson.JSONObject;
5
 import com.alibaba.fastjson.JSONObject;
6
+import com.ruoyi.bestsign.domain.ArbitrSignatuVO;
5
 import lombok.Data;
7
 import lombok.Data;
6
 import lombok.extern.slf4j.Slf4j;
8
 import lombok.extern.slf4j.Slf4j;
7
 import org.springframework.beans.factory.annotation.Value;
9
 import org.springframework.beans.factory.annotation.Value;
173
         // 签名参数追加为url参数
175
         // 签名参数追加为url参数
174
         String fullUrlParams = String.format(urlSignParams, this.developerId,
176
         String fullUrlParams = String.format(urlSignParams, this.developerId,
175
                 timestamsParam, paramsSign);
177
                 timestamsParam, paramsSign);
176
-
177
         String responseResult = HttpClientSender.sendHttpPost(this.serverHost, methodInvoke,
178
         String responseResult = HttpClientSender.sendHttpPost(this.serverHost, methodInvoke,
178
                 fullUrlParams, requestParam.toJSONString());
179
                 fullUrlParams, requestParam.toJSONString());
179
-
180
-
181
         JSONObject responseObj = JSON.parseObject(responseResult);
180
         JSONObject responseObj = JSON.parseObject(responseResult);
182
         // 返回errno为0,表示成功,其他表示失败
181
         // 返回errno为0,表示成功,其他表示失败
183
         if (responseObj.getIntValue("errno") == 0) {
182
         if (responseObj.getIntValue("errno") == 0) {
193
         }
192
         }
194
         return responseObj.toJSONString();
193
         return responseObj.toJSONString();
195
     }
194
     }
195
+
196
+    /**
197
+     * 上传文件
198
+     *
199
+     * @param arbitrSignatuVO
200
+     * @return
201
+     * @throws Exception
202
+     */
203
+    public String uploadContact(ArbitrSignatuVO arbitrSignatuVO) throws Exception {
204
+        String methodInvoke = "/storage/contract/upload/";
205
+        JSONObject requestParam = new JSONObject();
206
+
207
+        requestParam.put("account", arbitrSignatuVO.getAccount());
208
+        requestParam.put("fmd5", arbitrSignatuVO.getFileMd5());
209
+        requestParam.put("fdata", arbitrSignatuVO.getFileData());
210
+        requestParam.put("fpages", arbitrSignatuVO.getFilePages());
211
+        requestParam.put("fname", arbitrSignatuVO.getFileName());
212
+        requestParam.put("ftype", arbitrSignatuVO.getFileType());
213
+        requestParam.put("title", arbitrSignatuVO.getContractTitle());
214
+        requestParam.put("expireTime", arbitrSignatuVO.getPeriodValidity());
215
+
216
+
217
+        String timestamsParam = RSAUtils.getRtick();
218
+        // 计算参数签名
219
+        String paramsSign = RSAUtils.calcRsaSign(this.developerId,
220
+                this.privateKey, this.serverHost, methodInvoke, timestamsParam, null,
221
+                requestParam.toJSONString());
222
+        // 签名参数追加为url参数
223
+        String fullUrlParams = String.format(urlSignParams, this.developerId,
224
+                timestamsParam, paramsSign);
225
+        String responseResult = HttpClientSender.sendHttpPost(this.serverHost, methodInvoke,
226
+                fullUrlParams, requestParam.toJSONString());
227
+        JSONObject responseObj = JSON.parseObject(responseResult);
228
+        // 返回errno为0,表示成功,其他表示失败
229
+        if (responseObj.getIntValue("errno") == 0) {
230
+            JSONObject data = responseObj.getJSONObject("data");
231
+            if (data != null) {
232
+                String contractId = data.getString("contractId");
233
+                return contractId;
234
+            }
235
+        } else {
236
+
237
+            log.error("上传文件异常:" + responseObj.toJSONString());
238
+        }
239
+        return responseObj.toJSONString();
240
+    }
241
+
242
+    /**
243
+     * 获取签署链接
244
+     *
245
+     * @param arbitrSignatuVO
246
+     * @return
247
+     * @throws Exception
248
+     */
249
+    public String getSignLink(ArbitrSignatuVO arbitrSignatuVO) throws Exception {
250
+        String methodInvoke = "/contract/send/";
251
+        JSONObject requestParam = new JSONObject();
252
+
253
+        requestParam.put("contractId", arbitrSignatuVO.getContractNum());
254
+        requestParam.put("signer", arbitrSignatuVO.getSignerAccout());
255
+
256
+        JSONArray signatureArray = new JSONArray();
257
+
258
+        JSONObject signatuItem = new JSONObject();
259
+        signatuItem.put("pageNum", arbitrSignatuVO.getPageNumSigner());
260
+        //x坐标
261
+        signatuItem.put("x", arbitrSignatuVO.getPageNumSignerX());
262
+        //y坐标
263
+        signatuItem.put("y", arbitrSignatuVO.getPageNumSignerY());
264
+        signatureArray.add(signatuItem);
265
+
266
+        requestParam.put("signaturePositions", signatureArray);
267
+
268
+
269
+        String timestamsParam = RSAUtils.getRtick();
270
+        // 计算参数签名
271
+        String paramsSign = RSAUtils.calcRsaSign(this.developerId,
272
+                this.privateKey, this.serverHost, methodInvoke, timestamsParam, null,
273
+                requestParam.toJSONString());
274
+        // 签名参数追加为url参数
275
+        String fullUrlParams = String.format(urlSignParams, this.developerId,
276
+                timestamsParam, paramsSign);
277
+        String responseResult = HttpClientSender.sendHttpPost(this.serverHost, methodInvoke,
278
+                fullUrlParams, requestParam.toJSONString());
279
+        JSONObject responseObj = JSON.parseObject(responseResult);
280
+        // 返回errno为0,表示成功,其他表示失败
281
+        if (responseObj.getIntValue("errno") == 0) {
282
+            JSONObject data = responseObj.getJSONObject("data");
283
+            if (data != null) {
284
+                String signLink = data.getString("url");
285
+                return signLink;
286
+            }
287
+        } else {
288
+
289
+            log.error("获取签署链接异常:" + responseObj.toJSONString());
290
+        }
291
+        return responseObj.toJSONString();
292
+    }
293
+
294
+    /**
295
+     * 完成签署
296
+     *
297
+     * @param arbitrSignatuVO
298
+     * @return
299
+     * @throws Exception
300
+     */
301
+    public String finishSign(ArbitrSignatuVO arbitrSignatuVO) throws Exception {
302
+        String methodInvoke = "/storage/contract/lock/";
303
+        JSONObject requestParam = new JSONObject();
304
+        requestParam.put("contractId", arbitrSignatuVO.getContractNum());
305
+        String timestamsParam = RSAUtils.getRtick();
306
+        // 计算参数签名
307
+        String paramsSign = RSAUtils.calcRsaSign(this.developerId,
308
+                this.privateKey, this.serverHost, methodInvoke, timestamsParam, null,
309
+                requestParam.toJSONString());
310
+        // 签名参数追加为url参数
311
+        String fullUrlParams = String.format(urlSignParams, this.developerId,
312
+                timestamsParam, paramsSign);
313
+        String responseResult = HttpClientSender.sendHttpPost(this.serverHost, methodInvoke,
314
+                fullUrlParams, requestParam.toJSONString());
315
+        JSONObject responseObj = JSON.parseObject(responseResult);
316
+        // 返回errno为0,表示成功,其他表示失败
317
+        if (responseObj.getIntValue("errno") == 0) {
318
+            return "完成签名";
319
+        } else {
320
+
321
+            log.error("完成签署异常:" + responseObj.toJSONString());
322
+        }
323
+        return responseObj.toJSONString();
324
+    }
325
+
326
+
327
+
328
+
329
+
196
 }
330
 }