Class ServiceSettingsHelper
java.lang.Object
com.bytedesk.kbase.settings_service.ServiceSettingsHelper
ServiceSettings 辅助工具类
提供统一的 FAQ 关联解析方法,避免在多个 Service 中重复代码
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidcopyServiceSettingsProperties(ServiceSettingsEntity source, ServiceSettingsEntity target) 复制 ServiceSettings 属性,排除 id/uid/version 与时间字段,并正确处理懒加载的 FAQ 集合。resolveFaqs(List<String> uids) 将 uid 列表解析为 FaqEntity 列表。resolveQuickButtons(List<String> uids) void根据请求中的 FAQ UID 列表,解析并设置到目标 ServiceSettings 实体。
-
Field Details
-
faqRepository
-
quickButtonRepository
-
-
Constructor Details
-
ServiceSettingsHelper
public ServiceSettingsHelper()
-
-
Method Details
-
updateFaqAssociationsIfPresent
public void updateFaqAssociationsIfPresent(ServiceSettingsEntity target, ServiceSettingsRequest req) 根据请求中的 FAQ UID 列表,解析并设置到目标 ServiceSettings 实体。 仅当对应 UID 列表不为 null 才会更新;为 [] 时表示清空;为 null 时保持不变。- Parameters:
target- 目标 ServiceSettings 实体(可以是草稿或发布版本)req- ServiceSettingsRequest 请求对象
-
resolveFaqs
将 uid 列表解析为 FaqEntity 列表。忽略无效 uid。- Parameters:
uids- FAQ UID 列表- Returns:
- 解析后的 FaqEntity 列表,null 输入返回 null,空列表返回空列表
-
resolveQuickButtons
-
copyServiceSettingsProperties
public void copyServiceSettingsProperties(ServiceSettingsEntity source, ServiceSettingsEntity target) 复制 ServiceSettings 属性,排除 id/uid/version 与时间字段,并正确处理懒加载的 FAQ 集合。 对于懒加载的 @ManyToMany 集合,BeanUtils.copyProperties 可能复制未初始化的代理对象导致数据丢失。 因此需要在复制前保存集合引用,复制后恢复,确保数据完整性。- Parameters:
source- 源 ServiceSettings 实体target- 目标 ServiceSettings 实体
-