From 0931e1f3432b99c3b5e966d8f16c198fb2852ded Mon Sep 17 00:00:00 2001
From: fuenmao <980740792@qq.com>
Date: Mon, 24 Aug 2026 16:36:47 +0800
Subject: [PATCH] =?UTF-8?q?=E7=9B=B8=E5=85=B3bug=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Company/Dto/OnboardingCompanyInput.cs | 5 +++
.../Company/OnboardingCompanyService.cs | 5 ++-
.../OnboardingEntryConfigService.cs | 31 +++++++++++++++++--
.../Position/Dto/OnboardingPositionInput.cs | 5 +++
.../Position/OnboardingPositionService.cs | 5 ++-
.../SimpleAdmin.Application.xml | 15 +++++++++
6 files changed, 57 insertions(+), 9 deletions(-)
diff --git a/SimpleAdmin.Application/Services/Onboarding/Company/Dto/OnboardingCompanyInput.cs b/SimpleAdmin.Application/Services/Onboarding/Company/Dto/OnboardingCompanyInput.cs
index 1a8a2c5..1f12c77 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Company/Dto/OnboardingCompanyInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Company/Dto/OnboardingCompanyInput.cs
@@ -5,6 +5,11 @@ namespace SimpleAdmin.Application;
///
public class OnboardingCompanyPageInput : BasePageInput
{
+ ///
+ /// 公司业务编码。
+ ///
+ public virtual string CompanyCode { get; set; }
+
///
/// 公司名称。
///
diff --git a/SimpleAdmin.Application/Services/Onboarding/Company/OnboardingCompanyService.cs b/SimpleAdmin.Application/Services/Onboarding/Company/OnboardingCompanyService.cs
index c765e43..16bca1b 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Company/OnboardingCompanyService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Company/OnboardingCompanyService.cs
@@ -11,9 +11,8 @@ public class OnboardingCompanyService : DbRepository, IOnboardingComp
public async Task> Page(OnboardingCompanyPageInput input)
{
return await Context.Queryable()
- .WhereIF(
- !string.IsNullOrWhiteSpace(input.CompanyName),
- it => it.CompanyName.Contains(input.CompanyName) || it.CompanyCode.Contains(input.CompanyName))
+ .WhereIF(!string.IsNullOrWhiteSpace(input.CompanyCode), it => it.CompanyCode.Contains(input.CompanyCode))
+ .WhereIF(!string.IsNullOrWhiteSpace(input.CompanyName), it => it.CompanyName.Contains(input.CompanyName))
.WhereIF(!string.IsNullOrWhiteSpace(input.Status), it => it.Status == input.Status)
.OrderByIF(!string.IsNullOrWhiteSpace(input.SortField), $"{input.SortField} {input.SortOrder}")
.OrderBy(it => it.CreateTime)
diff --git a/SimpleAdmin.Application/Services/Onboarding/EntryConfig/OnboardingEntryConfigService.cs b/SimpleAdmin.Application/Services/Onboarding/EntryConfig/OnboardingEntryConfigService.cs
index 2baeb23..6c3977c 100644
--- a/SimpleAdmin.Application/Services/Onboarding/EntryConfig/OnboardingEntryConfigService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/EntryConfig/OnboardingEntryConfigService.cs
@@ -27,8 +27,12 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
///
public async Task SaveFormField(OnboardingFormFieldSaveInput input)
{
- var fieldCodeExists = await _db.Queryable()
- .AnyAsync(x => x.FieldCode == input.FieldCode && x.Id != input.Id);
+ var fieldCodeQuery = _db.Queryable()
+ .Where(x => x.FieldCode == input.FieldCode);
+ if (input.Id.HasValue)
+ fieldCodeQuery = fieldCodeQuery.Where(x => x.Id != input.Id.Value);
+
+ var fieldCodeExists = await fieldCodeQuery.AnyAsync();
if (fieldCodeExists)
throw Oops.Bah("字段编码已存在");
@@ -38,7 +42,7 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
FieldCode = input.FieldCode,
FieldName = input.FieldName,
DataType = input.DataType,
- OptionsJson = input.OptionsJson,
+ OptionsJson = NormalizeOptionsJson(input.OptionsJson),
ValidationRule = input.ValidationRule,
Placeholder = input.Placeholder,
Status = input.Status
@@ -57,6 +61,27 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
await _db.Insertable(entity).ExecuteCommandAsync();
}
+ ///
+ /// 将空白的可选项转换为 null,避免 MySQL JSON 字段写入空字符串时报错。
+ ///
+ private static string NormalizeOptionsJson(string optionsJson)
+ {
+ if (string.IsNullOrWhiteSpace(optionsJson))
+ return null;
+
+ var normalizedJson = optionsJson.Trim();
+
+ try
+ {
+ using var jsonDocument = global::System.Text.Json.JsonDocument.Parse(normalizedJson);
+ return normalizedJson;
+ }
+ catch (global::System.Text.Json.JsonException)
+ {
+ throw Oops.Bah("可选项不是有效的 JSON 格式");
+ }
+ }
+
///
/// 删除未被填写要求引用的动态字段。
///
diff --git a/SimpleAdmin.Application/Services/Onboarding/Position/Dto/OnboardingPositionInput.cs b/SimpleAdmin.Application/Services/Onboarding/Position/Dto/OnboardingPositionInput.cs
index ac9c36e..8e4b5e9 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Position/Dto/OnboardingPositionInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Position/Dto/OnboardingPositionInput.cs
@@ -10,6 +10,11 @@ public class OnboardingPositionPageInput : BasePageInput
///
public long? CompanyId { get; set; }
+ ///
+ /// 岗位编码。
+ ///
+ public virtual string PositionCode { get; set; }
+
///
/// 岗位名称。
///
diff --git a/SimpleAdmin.Application/Services/Onboarding/Position/OnboardingPositionService.cs b/SimpleAdmin.Application/Services/Onboarding/Position/OnboardingPositionService.cs
index b193966..f42d228 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Position/OnboardingPositionService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Position/OnboardingPositionService.cs
@@ -12,9 +12,8 @@ public class OnboardingPositionService : DbRepository, IOnboardingPo
{
return await Context.Queryable()
.WhereIF(input.CompanyId.HasValue, it => it.CompanyId == input.CompanyId.Value)
- .WhereIF(
- !string.IsNullOrWhiteSpace(input.PositionName),
- it => it.PositionName.Contains(input.PositionName) || it.PositionCode.Contains(input.PositionName))
+ .WhereIF(!string.IsNullOrWhiteSpace(input.PositionCode), it => it.PositionCode.Contains(input.PositionCode))
+ .WhereIF(!string.IsNullOrWhiteSpace(input.PositionName), it => it.PositionName.Contains(input.PositionName))
.WhereIF(!string.IsNullOrWhiteSpace(input.Status), it => it.Status == input.Status)
.OrderByIF(!string.IsNullOrWhiteSpace(input.SortField), $"{input.SortField} {input.SortOrder}")
.OrderBy(it => it.PositionName)
diff --git a/SimpleAdmin.Application/SimpleAdmin.Application.xml b/SimpleAdmin.Application/SimpleAdmin.Application.xml
index a2b0b18..b3aa902 100644
--- a/SimpleAdmin.Application/SimpleAdmin.Application.xml
+++ b/SimpleAdmin.Application/SimpleAdmin.Application.xml
@@ -1399,6 +1399,11 @@
入职业务公司分页查询参数。
+
+
+ 公司业务编码。
+
+
公司名称。
@@ -2327,6 +2332,11 @@
新增或编辑动态入职字段。
+
+
+ 将空白的可选项转换为 null,避免 MySQL JSON 字段写入空字符串时报错。
+
+
删除未被填写要求引用的动态字段。
@@ -2457,6 +2467,11 @@
入职业务公司 Id。
+
+
+ 岗位编码。
+
+
岗位名称。