diff --git a/SimpleAdmin.Application/Application.Development.json b/SimpleAdmin.Application/Application.Development.json
index 0b95cce..addabbc 100644
--- a/SimpleAdmin.Application/Application.Development.json
+++ b/SimpleAdmin.Application/Application.Development.json
@@ -17,17 +17,19 @@
"AppToken": "rMKU99gkts",
"AppSecret": "sjhcNcV1YTIhA124yrjLMdKRoBlP8O",
"SignatureVersion": "",
- "CategoryId": "3533041076673835142",
- "SealId": "3533379903657587306",
"CreatorName": "袁林",
"CreatorMobile": "15123135384",
- "CallbackUrl": "https://undiffusively-hemielytral-myrtle.ngrok-free.dev",
+ "CallbackUrl": "https://undiffusively-hemielytral-myrtle.ngrok-free.dev/api/open/onboarding/qiyuesuo/callback",
"SignPageCallbackUrl": "",
"SignUrlExpireMinutes": 10,
"EmployeeSignKeyword": "乙方(劳动者)签字:",
"EmployeeSignKeywordIndex": 1,
"CompanySealKeyword": "甲方(盖章):",
"CompanySealKeywordIndex": 1,
+ "CompanySealOffsetX": 0,
+ "CompanySealOffsetY": -0.05,
+ "EnableAcrossPageSeal": true,
+ "AcrossPageSealType": "ALL_DOCUMENT",
"TimeoutSeconds": 90
}
}
diff --git a/SimpleAdmin.Application/Application.Production.json b/SimpleAdmin.Application/Application.Production.json
index 92185cf..5e4e153 100644
--- a/SimpleAdmin.Application/Application.Production.json
+++ b/SimpleAdmin.Application/Application.Production.json
@@ -17,8 +17,6 @@
"AppToken": "rMKU99gkts",
"AppSecret": "sjhcNcV1YTIhA124yrjLMdKRoBlP8O",
"SignatureVersion": "",
- "CategoryId": "3533041076673835142",
- "SealId": "3533042752893948009",
"CreatorName": "袁林",
"CreatorMobile": "15123135384",
"CallbackUrl": "https://onboardx-api.cnzhyx.cn/api/open/onboarding/qiyuesuo/callback",
@@ -28,6 +26,10 @@
"EmployeeSignKeywordIndex": 1,
"CompanySealKeyword": "甲方(盖章):",
"CompanySealKeywordIndex": 1,
+ "CompanySealOffsetX": 0,
+ "CompanySealOffsetY": -0.12,
+ "EnableAcrossPageSeal": true,
+ "AcrossPageSealType": "ALL_DOCUMENT",
"TimeoutSeconds": 90
}
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObCompany.cs b/SimpleAdmin.Application/Entity/Onboarding/ObCompany.cs
index f187462..008e992 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObCompany.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObCompany.cs
@@ -52,6 +52,16 @@ public class ObCompany : BaseEntity
///
public string ContactPhone { get; set; }
+ ///
+ /// 契约锁默认业务分类 Id;每个签约公司独立配置。
+ ///
+ public string QiyuesuoCategoryId { get; set; }
+
+ ///
+ /// 契约锁企业印章 Id;每个签约公司独立配置。
+ ///
+ public string QiyuesuoSealId { get; set; }
+
///
/// 业务备注。
///
diff --git a/SimpleAdmin.Application/Entity/Onboarding/OnboardingStatus.cs b/SimpleAdmin.Application/Entity/Onboarding/OnboardingStatus.cs
index 57e7188..e773c6f 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/OnboardingStatus.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/OnboardingStatus.cs
@@ -176,7 +176,7 @@ public static class ElectronicSignStatus
public const string PendingEmployeeSign = "pending_employee_sign";
///
- /// 员工已签,等待企业自动盖章或平台完成流程。
+ /// 员工已签,等待后台管理员核对文件并确认企业盖章。
///
public const string PendingCompanySeal = "pending_company_seal";
diff --git a/SimpleAdmin.Application/Options/QiyuesuoSettingOptions.cs b/SimpleAdmin.Application/Options/QiyuesuoSettingOptions.cs
index 28090d7..b9c9a9d 100644
--- a/SimpleAdmin.Application/Options/QiyuesuoSettingOptions.cs
+++ b/SimpleAdmin.Application/Options/QiyuesuoSettingOptions.cs
@@ -30,16 +30,6 @@ public class QiyuesuoSettingOptions
///
public string SignatureVersion { get; set; }
- ///
- /// 默认业务分类 Id。
- ///
- public string CategoryId { get; set; }
-
- ///
- /// 企业自动盖章使用的印章 Id。
- ///
- public string SealId { get; set; }
-
///
/// 契约锁企业成员中的合同创建人姓名。
///
@@ -85,6 +75,26 @@ public class QiyuesuoSettingOptions
///
public int CompanySealKeywordIndex { get; set; } = 1;
+ ///
+ /// 企业盖章相对关键字的横向偏移量,范围 (-1, 1),正数向右、负数向左。
+ ///
+ public decimal CompanySealOffsetX { get; set; }
+
+ ///
+ /// 企业盖章相对关键字的纵向偏移量,范围 (-1, 1),正数向上、负数向下。
+ ///
+ public decimal CompanySealOffsetY { get; set; }
+
+ ///
+ /// 是否在后台确认企业盖章时同时加盖骑缝章。
+ ///
+ public bool EnableAcrossPageSeal { get; set; } = true;
+
+ ///
+ /// 骑缝章文档范围:ALL_DOCUMENT(全部文档合并)或 SINGLE_DOCUMENT(每份文档单独)。
+ ///
+ public string AcrossPageSealType { get; set; } = "ALL_DOCUMENT";
+
///
/// 单次 HTTP 请求超时秒数。
///
diff --git a/SimpleAdmin.Application/Services/Onboarding/Company/OnboardingCompanyService.cs b/SimpleAdmin.Application/Services/Onboarding/Company/OnboardingCompanyService.cs
index 9c41a7c..e802d76 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Company/OnboardingCompanyService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Company/OnboardingCompanyService.cs
@@ -43,6 +43,7 @@ public class OnboardingCompanyService : DbRepository, IOnboardingComp
///
public async Task Add(OnboardingCompanyAddInput input)
{
+ NormalizeAndValidateQiyuesuoConfig(input);
await EnsureCodeUnique(input.CompanyCode, 0);
await InsertAsync(input.Adapt());
}
@@ -52,6 +53,7 @@ public class OnboardingCompanyService : DbRepository, IOnboardingComp
///
public async Task Edit(OnboardingCompanyEditInput input)
{
+ NormalizeAndValidateQiyuesuoConfig(input);
await Detail(new BaseIdInput { Id = input.Id });
await EnsureCodeUnique(input.CompanyCode, input.Id);
await UpdateAsync(input.Adapt());
@@ -98,6 +100,24 @@ public class OnboardingCompanyService : DbRepository, IOnboardingComp
await DeleteByIdsAsync(input.Ids.Cast