zhengyuxuan
2025-04-02 e7d1ef3eef4dcbec4f7fae27542e94cc0bbf89c8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace LifePayment.Domain.Shared;
 
public class SealSaveInput
{
    /// <summary>
    /// 印章id,为空时表示添加,不为空时表示修改
    /// </summary>
    [JsonProperty("seal_id")]
    public string? SealId { get; set; }
 
    /// <summary>
    /// 印章名称
    /// </summary>
    [JsonProperty("seal_name")]
    [Required(ErrorMessage = "印章名称是必填项")]
    public string SealName { get; set; }
 
    /// <summary>
    /// 印章描述
    /// </summary>
    [JsonProperty("seal_description")]
    [Required(ErrorMessage = "印章描述是必填项")]
    public string SealDescription { get; set; }
 
    /// <summary>
    /// 印章类型,ENTERPRISE-企业公章,ENTERPRISE_WITH_CODE-带有统一社会代码的企业公章,CONTRACT-合同专用章
    /// </summary>
    [JsonProperty("seal_type")]
    [Required(ErrorMessage = "印章类型是必填项")]
    public string SealType { get; set; }
 
    /// <summary>
    /// 企业名称
    /// </summary>
    [JsonProperty("enterprise_name")]
    [Required(ErrorMessage = "企业名称是必填项")]
    public string EnterpriseName { get; set; }
 
    /// <summary>
    /// 统一社会信用代码
    /// </summary>
    [JsonProperty("enterprise_cert_no")]
    [Required(ErrorMessage = "统一社会信用代码是必填项")]
    public string EnterpriseCertNo { get; set; }
}
 
public class SealBatchQueryInput
{
    /// <summary>
    /// 印章id
    /// </summary>
    [JsonProperty("seal_id")]
    public string? SealId { get; set; }
 
    /// <summary>
    /// 印章名称
    /// </summary>
    [JsonProperty("seal_name")]
    public string? SealName { get; set; }
 
    /// <summary>
    /// 页数,默认1,必须大于0
    /// </summary>
    [JsonProperty("page_no")]
    [Range(1, int.MaxValue, ErrorMessage = "页数必须大于0")]
    public int PageNo { get; set; } = 1;
 
    /// <summary>
    /// 页面大小,默认200,必须大于0
    /// </summary>
    [JsonProperty("page_size")]
    [Range(1, int.MaxValue, ErrorMessage = "页面大小必须大于0")]
    public int PageSize { get; set; } = 200;
}
 
public class SealAuthInput
{
    /// <summary>
    /// 印章ID
    /// </summary>
    [JsonProperty("seal_id")]
    [Required(ErrorMessage = "印章ID是必填项")]
    public string SealId { get; set; }
 
    /// <summary>
    /// 授权开始时间
    /// </summary>
    [JsonProperty("auth_start_date")]
    [Required(ErrorMessage = "授权开始时间是必填项")]
    public DateTime AuthStartDate { get; set; }
 
    /// <summary>
    /// 授权结束时间
    /// </summary>
    [JsonProperty("auth_end_date")]
    [Required(ErrorMessage = "授权结束时间是必填项")]
    public DateTime AuthEndDate { get; set; }
}
 
public class FileUploadInput
{
    /// <summary>
    /// 业务编码:ecsign_contract_upload
    /// </summary>
    [JsonProperty("biz_code")]
    [Required(ErrorMessage = "业务编码是必填项")]
    public string BizCode { get; set; } = AliPayEcsignConstant.AliPayEcsignSignBizCode.EcsignContractUpload;
 
    /// <summary>
    /// 文件的md5值,如果不传则不校验md5
    /// </summary>
    [JsonProperty("md5")]
    public string? Md5 { get; set; }
 
    /// <summary>
    /// 文件内容的二进制流
    /// </summary>
    [JsonIgnore]
    [Required(ErrorMessage = "文件内容是必填项")]
    public byte[] FileContent { get; set; }
 
    /// <summary>
    /// 文件名称
    /// </summary>
    [JsonIgnore]
    public string FileName { get; set; }
}
 
public class TemplateSaveInput
{
    /// <summary>
    /// 模板ID,为空时表示添加,不为空时表示修改
    /// </summary>
    [JsonProperty("template_id")]
    public string? TemplateId { get; set; }
 
    /// <summary>
    /// 模板名称,后续会展示给用户
    /// </summary>
    [JsonProperty("template_name")]
    [Required(ErrorMessage = "模板名称是必填项")]
    public string TemplateName { get; set; }
 
    /// <summary>
    /// 模板描述
    /// </summary>
    [JsonProperty("template_memo")]
    [Required(ErrorMessage = "模板描述是必填项")]
    public string TemplateMemo { get; set; }
 
    /// <summary>
    /// 文件ID
    /// </summary>
    [JsonProperty("template_file_id")]
    [Required(ErrorMessage = "文件ID是必填项")]
    public string TemplateFileId { get; set; }
 
    /// <summary>
    /// 企业印章控件列表
    /// </summary>
    [JsonProperty("corporate_seal_rects")]
    public List<RectItem> CorporateSealRects { get; set; } = new List<RectItem>();
 
    /// <summary>
    /// 个人印章控件列表
    /// </summary>
    [JsonProperty("personal_seal_rects")]
    public List<PersonalSealRectItem> PersonalSealRects { get; set; } = new List<PersonalSealRectItem>();
 
    /// <summary>
    /// 时间戳控件列表
    /// </summary>
    [JsonProperty("time_stamp_rects")]
    public List<TimeStampRectItem> TimeStampRects { get; set; } = new List<TimeStampRectItem>();
 
    /// <summary>
    /// 单行文本框控件列表
    /// </summary>
    [JsonProperty("singleline_text_rects")]
    [Required(ErrorMessage = "单行文本框控件列表是必填项")]
    public List<TextRectItem> SinglelineTextRects { get; set; } = new List<TextRectItem>();
 
    /// <summary>
    /// 多行文本框控件列表
    /// </summary>
    [JsonProperty("multilineTextRects")]
    public List<TextRectItem> MultilineTextRects { get; set; } = new List<TextRectItem>();
}
 
public class RectItem
{
    /// <summary>
    /// 输入项控件唯一表示ID,使用模板时可以根据rect_id进行填充
    /// </summary>
    [JsonProperty("rect_id")]
    [Required(ErrorMessage = "控件ID是必填项")]
    public string RectId { get; set; }
 
    /// <summary>
    /// 控件名称
    /// </summary>
    [JsonProperty("rect_name")]
    [Required(ErrorMessage = "控件名称是必填项")]
    public string RectName { get; set; }
 
    /// <summary>
    /// PDF页码
    /// </summary>
    [JsonProperty("page")]
    [Required(ErrorMessage = "PDF页码是必填项")]
    public int Page { get; set; }
 
    /// <summary>
    /// x轴坐标,左下角为原点
    /// </summary>
    [JsonProperty("offset_x")]
    [Required(ErrorMessage = "x轴坐标是必填项")]
    public int OffsetX { get; set; }
 
    /// <summary>
    /// y轴坐标,左下角为原点
    /// </summary>
    [JsonProperty("offset_y")]
    [Required(ErrorMessage = "y轴坐标是必填项")]
    public int OffsetY { get; set; }
}
 
public class PersonalSealRectItem : RectItem
{
    /// <summary>
    /// 个人签章方式:PERSONAL_SEAL-电子签章,HAND_WRITE-手写签名
    /// </summary>
    [JsonProperty("signature_type")]
    public string? SignatureType { get; set; }
}
 
public class TimeStampRectItem : RectItem
{
    /// <summary>
    /// 时间戳格式:yyyy-MM-dd,yyyy/MM/dd,yyyy年MM月dd日
    /// </summary>
    [JsonProperty("time_format")]
    [Required(ErrorMessage = "时间戳格式是必填项")]
    public string TimeFormat { get; set; }
}
 
public class TextRectItem : RectItem
{
    /// <summary>
    /// 是否必填,默认true
    /// </summary>
    [JsonProperty("required")]
    public bool Required { get; set; } = true;
 
    /// <summary>
    /// 控件样式
    /// </summary>
    [JsonProperty("rectStyle")]
    [Required(ErrorMessage = "控件样式是必填项")]
    public RectStyle RectStyle { get; set; }
}
 
public class RectStyle
{
    /// <summary>
    /// 控件宽度,文字超出部分会被裁剪
    /// </summary>
    [JsonProperty("width")]
    [Required(ErrorMessage = "控件宽度是必填项")]
    public double Width { get; set; }
 
    /// <summary>
    /// 控件高度
    /// </summary>
    [JsonProperty("height")]
    public double Height { get; set; } = 22.0;
 
    /// <summary>
    /// 填充字体,默认 1-宋体
    /// </summary>
    [JsonProperty("font")]
    public int Font { get; set; } = 1;
 
    /// <summary>
    /// 填充字体大小,默认12
    /// </summary>
    [JsonProperty("font_size")]
    public int FontSize { get; set; } = 12;
 
    /// <summary>
    /// 填充字体颜色,默认#000000 黑色
    /// </summary>
    [JsonProperty("text_color")]
    public string TextColor { get; set; } = "#000000";
}
 
public class TemplateBatchQueryInput
{
    /// <summary>
    /// 模板ID(可选)
    /// </summary>
    [JsonProperty("template_id")]
    public string TemplateId { get; set; }
 
    /// <summary>
    /// 模板名称(可选)
    /// </summary>
    [JsonProperty("template_name")]
    public string TemplateName { get; set; }
 
    /// <summary>
    /// 页数,默认1,必须大于0(可选)
    /// </summary>
    [JsonProperty("page_no")]
    public int PageNo { get; set; } = 1;
 
    /// <summary>
    /// 页面大小,默认200(可选)
    /// </summary>
    [JsonProperty("page_size")]
    public int PageSize { get; set; } = 200;
}
 
public class TemplateQueryInput
{
    [JsonProperty("template_id")]
    public string TemplateId { get; set; }
}
 
public class SolutionSaveInput
{
    /// <summary>
    /// 签约方案编码,为空时表示添加,不为空时表示修改
    /// </summary>
    [JsonProperty("solution_code")]
    public string? SolutionCode { get; set; }
 
    /// <summary>
    /// 签约方案名称,签署时会对客展示
    /// </summary>
    [JsonProperty("solution_name")]
    [Required(ErrorMessage = "签约方案名称是必填项")]
    public string SolutionName { get; set; }
 
    /// <summary>
    /// 签约方案描述
    /// </summary>
    [JsonProperty("solution_description")]
    [Required(ErrorMessage = "签约方案描述是必填项")]
    public string SolutionDescription { get; set; }
 
    /// <summary>
    /// 签约合同列表
    /// </summary>
    [JsonProperty("template_vo_list")]
    [Required(ErrorMessage = "签约合同列表是必填项")]
    public List<TemplateVo> TemplateVoList { get; set; } = new List<TemplateVo>();
 
    /// <summary>
    /// 签约核身配置
    /// </summary>
    [JsonProperty("attribute_vo_list")]
    [Required(ErrorMessage = "签约核身配置是必填项")]
    public List<AttributeVo> AttributeVoList { get; set; } = new List<AttributeVo>();
}
 
public class TemplateVo
{
    /// <summary>
    /// 合同模板ID
    /// </summary>
    [JsonProperty("template_id")]
    [Required(ErrorMessage = "合同模板ID是必填项")]
    public string TemplateId { get; set; }
}
 
public class AttributeVo
{
    /// <summary>
    /// 签约方式:EXTERNAL_H5-端外H5,MINI_APP-支付宝小程序/插件
    /// </summary>
    [JsonProperty("access_config_code")]
    [Required(ErrorMessage = "签约方式是必填项")]
    public string AccessConfigCode { get; set; }
 
    /// <summary>
    /// 核身方式:
    /// EXTERNAL_H5_SMS-端外H5,
    /// FACE_PASSWORD_ALIPAY-支付宝小程序/插件
    /// </summary>
    [JsonProperty("verify_code")]
    [Required(ErrorMessage = "核身方式是必填项")]
    public string VerifyCode { get; set; }
}
 
public class SolutionBatchQueryInput
{
    /// <summary>
    /// 签约方案编码
    /// </summary>
    [JsonProperty("solution_code")]
    public string? SolutionCode { get; set; }
 
    /// <summary>
    /// 签约方案名称
    /// </summary>
    [JsonProperty("solution_name")]
    public string? SolutionName { get; set; }
 
    /// <summary>
    /// 页数,默认1,必须大于0
    /// </summary>
    [JsonProperty("page_no")]
    [Range(1, int.MaxValue, ErrorMessage = "页数必须大于0")]
    public int PageNo { get; set; } = 1;
 
    /// <summary>
    /// 页面大小,默认200
    /// </summary>
    [JsonProperty("page_size")]
    [Range(1, int.MaxValue, ErrorMessage = "页面大小必须大于0")]
    public int PageSize { get; set; } = 200;
}
 
public class SolutionQueryInput
{
    /// <summary>
    /// 签约方案编码
    /// </summary>
    [JsonProperty("solution_code")]
    public string SolutionCode { get; set; }
}
 
public class DataprepareCreateInput
{
    /// <summary>
    /// 业务流水号,业务需保证内部唯一
    /// </summary>
    [JsonProperty("out_order_no")]
    [Required(ErrorMessage = "业务流水号是必填项")]
    public string OutOrderNo { get; set; }
 
    /// <summary>
    /// 签约方案编码,签约方案管理中新增获得
    /// </summary>
    [JsonProperty("solution_code")]
    [Required(ErrorMessage = "签约方案编码是必填项")]
    public string SolutionCode { get; set; }
 
    /// <summary>
    /// 跳转类型,NORMAL-链接跳转
    /// </summary>
    [JsonProperty("jump_type")]
    [Required(ErrorMessage = "跳转类型是必填项")]
    public string JumpType { get; set; } = "NORMAL";
 
    /// <summary>
    /// 签约用户信息
    /// </summary>
    [JsonIgnore]
    [Required(ErrorMessage = "签约用户信息是必填项")]
    public SignUser SignUser { get; set; }
 
    /// <summary>
    /// 合同模板参数
    /// </summary>
    [JsonIgnore]
    public Dictionary<string, object> TemplateData { get; set; }
 
    /// <summary>
    /// 签约扩展字段,无需传入,只需要传入SignUser和TemplateData 将根据这两个字段自动生成,填写用户信息以及控件rect_id的value值,查看合同时会进行校验
    /// </summary>
    [JsonProperty("ext_info")]
    public string ExtInfo { get; set; }
}
 
public class SignUser
{
    /// <summary>
    /// 签约的用户姓名
    /// </summary>
    [JsonProperty("signerName")]
    [Required(ErrorMessage = "签约的用户姓名是必填项")]
    public string SignerName { get; set; }
 
    /// <summary>
    /// 签约的用户身份证号
    /// </summary>
    [JsonProperty("certNo")]
    [Required(ErrorMessage = "签约的用户身份证号是必填项")]
    public string CertNo { get; set; }
 
    /// <summary>
    /// 签约的用户手机号
    /// </summary>
    [JsonProperty("bindedMobile")]
    public string? BindedMobile { get; set; }
}
 
public class SignorderQueryInput
{
    /// <summary>
    /// 签约方案编码
    /// </summary>
    [JsonProperty("solution_code")]
    [Required(ErrorMessage = "签约方案编码是必填项")]
    public string SolutionCode { get; set; }
 
    /// <summary>
    /// 发起签约的业务流水号
    /// </summary>
    [JsonProperty("out_order_no")]
    [Required(ErrorMessage = "发起签约的业务流水号是必填项")]
    public string OutOrderNo { get; set; }
}