This commit is contained in:
jack ning
2025-11-12 09:49:04 +08:00
parent 1de7fc1094
commit b212fa0880
9 changed files with 71 additions and 68 deletions

View File

@@ -12,6 +12,7 @@ import com.bytedesk.service.queue_settings.QueueSettingsEntity;
import jakarta.persistence.FetchType;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Entity;
import jakarta.persistence.Index;
import jakarta.persistence.Table;
@@ -72,43 +73,37 @@ public class WorkgroupSettingsEntity extends BaseSettingsEntity {
/**
* Message leave settings
*/
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
// @NotFound(action = NotFoundAction.IGNORE)
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private MessageLeaveSettingsEntity messageLeaveSettings;
/**
* Draft Message leave settings
*/
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
// @NotFound(action = NotFoundAction.IGNORE)
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private MessageLeaveSettingsEntity draftMessageLeaveSettings;
/**
* Robot routing settings
*/
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
// @NotFound(action = NotFoundAction.IGNORE)
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private RobotRoutingSettingsEntity robotSettings;
/**
* Draft Robot routing settings
* Note: Override columns and association to avoid conflicts with published embedded fields
*/
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
// @NotFound(action = NotFoundAction.IGNORE)
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private RobotRoutingSettingsEntity draftRobotSettings;
/**
* Queue settings
*/
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
// @NotFound(action = NotFoundAction.IGNORE)
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private QueueSettingsEntity queueSettings;
/**
* Draft Queue settings
*/
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
// @NotFound(action = NotFoundAction.IGNORE)
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private QueueSettingsEntity draftQueueSettings;
}

View File

@@ -21,6 +21,8 @@ import com.bytedesk.ticket.ticket_settings.sub.TicketCustomFieldSettingsEntity;
import com.bytedesk.ticket.ticket_settings.sub.TicketNotificationSettingsEntity;
import com.bytedesk.ticket.ticket_settings.sub.TicketPrioritySettingsEntity;
import com.bytedesk.ticket.ticket_settings.sub.TicketStatusFlowSettingsEntity;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
@@ -73,41 +75,41 @@ public class TicketSettingsEntity extends BaseEntity {
private String workgroupUid;
// ====== 发布版本 ======
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private TicketBasicSettingsEntity basicSettings;
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private TicketStatusFlowSettingsEntity statusFlowSettings;
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private TicketPrioritySettingsEntity prioritySettings;
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private TicketAssignmentSettingsEntity assignmentSettings;
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private TicketNotificationSettingsEntity notificationSettings;
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private TicketCustomFieldSettingsEntity customFieldSettings;
// ====== 草稿版本 ======
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private TicketBasicSettingsEntity draftBasicSettings;
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private TicketStatusFlowSettingsEntity draftStatusFlowSettings;
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private TicketPrioritySettingsEntity draftPrioritySettings;
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private TicketAssignmentSettingsEntity draftAssignmentSettings;
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private TicketNotificationSettingsEntity draftNotificationSettings;
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { jakarta.persistence.CascadeType.PERSIST, jakarta.persistence.CascadeType.MERGE, jakarta.persistence.CascadeType.REMOVE })
@ManyToOne(fetch = FetchType.LAZY, optional = true, cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE })
private TicketCustomFieldSettingsEntity draftCustomFieldSettings;

View File

@@ -24,7 +24,7 @@ public interface TicketSettingsRepository extends JpaRepository<TicketSettingsEn
Boolean existsByUid(String uid);
Optional<TicketSettingsEntity> findByNameAndOrgUidAndTypeAndDeletedFalse(String name, String orgUid, String type);
Optional<TicketSettingsEntity> findByNameAndOrgUidAndDeletedFalse(String name, String orgUid);
Optional<TicketSettingsEntity> findByOrgUidAndWorkgroupUidAndDeletedFalse(String orgUid, String workgroupUid);

View File

@@ -61,8 +61,8 @@ public class TicketSettingsRestService extends BaseRestServiceWithExport<TicketS
}
@Cacheable(value = "ticketSettings", key = "#name + '_' + #orgUid + '_' + #type", unless="#result==null")
public Optional<TicketSettingsEntity> findByNameAndOrgUidAndType(String name, String orgUid, String type) {
return ticketSettingsRepository.findByNameAndOrgUidAndTypeAndDeletedFalse(name, orgUid, type);
public Optional<TicketSettingsEntity> findByNameAndOrgUid(String name, String orgUid) {
return ticketSettingsRepository.findByNameAndOrgUidAndDeletedFalse(name, orgUid);
}
public Boolean existsByUid(String uid) {
@@ -77,8 +77,8 @@ public class TicketSettingsRestService extends BaseRestServiceWithExport<TicketS
return convertToResponse(findByUid(request.getUid()).get());
}
// 检查name+orgUid+type是否已经存在
if (StringUtils.hasText(request.getName()) && StringUtils.hasText(request.getOrgUid()) && StringUtils.hasText(request.getType())) {
Optional<TicketSettingsEntity> ticketSettings = findByNameAndOrgUidAndType(request.getName(), request.getOrgUid(), request.getType());
if (StringUtils.hasText(request.getName()) && StringUtils.hasText(request.getOrgUid())) {
Optional<TicketSettingsEntity> ticketSettings = findByNameAndOrgUid(request.getName(), request.getOrgUid());
if (ticketSettings.isPresent()) {
return convertToResponse(ticketSettings.get());
}
@@ -138,7 +138,7 @@ public class TicketSettingsRestService extends BaseRestServiceWithExport<TicketS
.build();
// 默认草稿Basic
resp.setDraftBasicSettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketBasicSettingsRequest.builder()
com.bytedesk.ticket.ticket_settings.sub.dto.TicketBasicSettingsResponse.builder()
.numberPrefix("TK").numberLength(8)
.defaultPriority("medium")
.validityDays(30)
@@ -148,40 +148,40 @@ public class TicketSettingsRestService extends BaseRestServiceWithExport<TicketS
);
// 默认草稿StatusFlow / Priority / Assignment / Notification / CustomFields
resp.setDraftStatusFlowSettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketStatusFlowSettingsRequest.builder()
.content("{}")
com.bytedesk.ticket.ticket_settings.sub.dto.TicketStatusFlowSettingsResponse.builder()
.content(com.bytedesk.ticket.ticket_settings.sub.model.StatusFlowSettingsData.builder().build())
.build()
);
resp.setDraftPrioritySettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketPrioritySettingsRequest.builder()
.content("[]")
com.bytedesk.ticket.ticket_settings.sub.dto.TicketPrioritySettingsResponse.builder()
.content(com.bytedesk.ticket.ticket_settings.sub.model.PrioritySettingsData.builder().build())
.build()
);
resp.setDraftAssignmentSettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketAssignmentSettingsRequest.builder()
com.bytedesk.ticket.ticket_settings.sub.dto.TicketAssignmentSettingsResponse.builder()
.autoAssign(true)
.assignmentType("round_robin")
.workingHoursEnabled(true)
.workingHoursStart("09:00")
.workingHoursEnd("18:00")
.workingDays("[1,2,3,4,5]")
.workingDays(java.util.List.of(1,2,3,4,5))
.maxConcurrentTickets(10)
.build()
);
resp.setDraftNotificationSettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketNotificationSettingsRequest.builder()
com.bytedesk.ticket.ticket_settings.sub.dto.TicketNotificationSettingsResponse.builder()
.emailEnabled(true)
.emailEvents("[\"created\",\"assigned\",\"resolved\",\"closed\"]")
.emailTemplates("{}")
.emailEvents(java.util.List.of("created","assigned","resolved","closed"))
.emailTemplates(java.util.List.of())
.internalEnabled(true)
.internalEvents("[\"created\",\"assigned\",\"resolved\",\"closed\"]")
.internalEvents(java.util.List.of("created","assigned","resolved","closed"))
.webhookEnabled(false)
.webhookEvents("[]")
.webhookEvents(java.util.List.of())
.build()
);
resp.setDraftCustomFieldSettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketCustomFieldSettingsRequest.builder()
.content("[]")
com.bytedesk.ticket.ticket_settings.sub.dto.TicketCustomFieldSettingsResponse.builder()
.content(com.bytedesk.ticket.ticket_settings.sub.model.CustomFieldSettingsData.builder().build())
.build()
);
return resp;
@@ -455,7 +455,7 @@ public class TicketSettingsRestService extends BaseRestServiceWithExport<TicketS
// 发布版本映射
if (entity.getBasicSettings() != null) {
resp.setBasicSettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketBasicSettingsRequest.builder()
com.bytedesk.ticket.ticket_settings.sub.dto.TicketBasicSettingsResponse.builder()
.numberPrefix(entity.getBasicSettings().getNumberPrefix())
.numberLength(entity.getBasicSettings().getNumberLength())
.defaultPriority(entity.getBasicSettings().getDefaultPriority())
@@ -467,21 +467,21 @@ public class TicketSettingsRestService extends BaseRestServiceWithExport<TicketS
}
if (entity.getStatusFlowSettings() != null) {
resp.setStatusFlowSettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketStatusFlowSettingsRequest.builder()
com.bytedesk.ticket.ticket_settings.sub.dto.TicketStatusFlowSettingsResponse.builder()
.content(entity.getStatusFlowSettings().getContent())
.build()
);
}
if (entity.getPrioritySettings() != null) {
resp.setPrioritySettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketPrioritySettingsRequest.builder()
com.bytedesk.ticket.ticket_settings.sub.dto.TicketPrioritySettingsResponse.builder()
.content(entity.getPrioritySettings().getContent())
.build()
);
}
if (entity.getAssignmentSettings() != null) {
resp.setAssignmentSettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketAssignmentSettingsRequest.builder()
com.bytedesk.ticket.ticket_settings.sub.dto.TicketAssignmentSettingsResponse.builder()
.autoAssign(entity.getAssignmentSettings().getAutoAssign())
.assignmentType(entity.getAssignmentSettings().getAssignmentType())
.workingHoursEnabled(entity.getAssignmentSettings().getWorkingHoursEnabled())
@@ -494,7 +494,7 @@ public class TicketSettingsRestService extends BaseRestServiceWithExport<TicketS
}
if (entity.getNotificationSettings() != null) {
resp.setNotificationSettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketNotificationSettingsRequest.builder()
com.bytedesk.ticket.ticket_settings.sub.dto.TicketNotificationSettingsResponse.builder()
.emailEnabled(entity.getNotificationSettings().getEmailEnabled())
.emailEvents(entity.getNotificationSettings().getEmailEvents())
.emailTemplates(entity.getNotificationSettings().getEmailTemplates())
@@ -508,7 +508,7 @@ public class TicketSettingsRestService extends BaseRestServiceWithExport<TicketS
}
if (entity.getCustomFieldSettings() != null) {
resp.setCustomFieldSettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketCustomFieldSettingsRequest.builder()
com.bytedesk.ticket.ticket_settings.sub.dto.TicketCustomFieldSettingsResponse.builder()
.content(entity.getCustomFieldSettings().getContent())
.build()
);
@@ -516,7 +516,7 @@ public class TicketSettingsRestService extends BaseRestServiceWithExport<TicketS
// 草稿版本映射
if (entity.getDraftBasicSettings() != null) {
resp.setDraftBasicSettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketBasicSettingsRequest.builder()
com.bytedesk.ticket.ticket_settings.sub.dto.TicketBasicSettingsResponse.builder()
.numberPrefix(entity.getDraftBasicSettings().getNumberPrefix())
.numberLength(entity.getDraftBasicSettings().getNumberLength())
.defaultPriority(entity.getDraftBasicSettings().getDefaultPriority())
@@ -528,21 +528,21 @@ public class TicketSettingsRestService extends BaseRestServiceWithExport<TicketS
}
if (entity.getDraftStatusFlowSettings() != null) {
resp.setDraftStatusFlowSettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketStatusFlowSettingsRequest.builder()
com.bytedesk.ticket.ticket_settings.sub.dto.TicketStatusFlowSettingsResponse.builder()
.content(entity.getDraftStatusFlowSettings().getContent())
.build()
);
}
if (entity.getDraftPrioritySettings() != null) {
resp.setDraftPrioritySettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketPrioritySettingsRequest.builder()
com.bytedesk.ticket.ticket_settings.sub.dto.TicketPrioritySettingsResponse.builder()
.content(entity.getDraftPrioritySettings().getContent())
.build()
);
}
if (entity.getDraftAssignmentSettings() != null) {
resp.setDraftAssignmentSettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketAssignmentSettingsRequest.builder()
com.bytedesk.ticket.ticket_settings.sub.dto.TicketAssignmentSettingsResponse.builder()
.autoAssign(entity.getDraftAssignmentSettings().getAutoAssign())
.assignmentType(entity.getDraftAssignmentSettings().getAssignmentType())
.workingHoursEnabled(entity.getDraftAssignmentSettings().getWorkingHoursEnabled())
@@ -555,7 +555,7 @@ public class TicketSettingsRestService extends BaseRestServiceWithExport<TicketS
}
if (entity.getDraftNotificationSettings() != null) {
resp.setDraftNotificationSettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketNotificationSettingsRequest.builder()
com.bytedesk.ticket.ticket_settings.sub.dto.TicketNotificationSettingsResponse.builder()
.emailEnabled(entity.getDraftNotificationSettings().getEmailEnabled())
.emailEvents(entity.getDraftNotificationSettings().getEmailEvents())
.emailTemplates(entity.getDraftNotificationSettings().getEmailTemplates())
@@ -569,7 +569,7 @@ public class TicketSettingsRestService extends BaseRestServiceWithExport<TicketS
}
if (entity.getDraftCustomFieldSettings() != null) {
resp.setDraftCustomFieldSettings(
com.bytedesk.ticket.ticket_settings.sub.dto.TicketCustomFieldSettingsRequest.builder()
com.bytedesk.ticket.ticket_settings.sub.dto.TicketCustomFieldSettingsResponse.builder()
.content(entity.getDraftCustomFieldSettings().getContent())
.build()
);

View File

@@ -1,6 +1,7 @@
package com.bytedesk.ticket.ticket_settings.sub.dto;
import java.io.Serializable;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -9,7 +10,7 @@ import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 工单指派设置响应 DTO。
* 工单指派设置响应 DTO(结构化 workingDays
*/
@Data
@Builder
@@ -23,6 +24,6 @@ public class TicketAssignmentSettingsResponse implements Serializable {
private Boolean workingHoursEnabled;
private String workingHoursStart;
private String workingHoursEnd;
private String workingDays; // JSON array as string
private List<Integer> workingDays; // 1-7
private Integer maxConcurrentTickets;
}

View File

@@ -1,5 +1,6 @@
package com.bytedesk.ticket.ticket_settings.sub.dto;
import com.bytedesk.ticket.ticket_settings.sub.model.CustomFieldSettingsData;
import java.io.Serializable;
import lombok.AllArgsConstructor;
@@ -9,7 +10,7 @@ import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 自定义字段设置响应 DTO。
* 自定义字段设置响应 DTO(结构化)
*/
@Data
@Builder
@@ -18,5 +19,5 @@ import lombok.experimental.Accessors;
@NoArgsConstructor
public class TicketCustomFieldSettingsResponse implements Serializable {
private static final long serialVersionUID = 1L;
private String content; // JSON blob
private CustomFieldSettingsData content;
}

View File

@@ -1,6 +1,8 @@
package com.bytedesk.ticket.ticket_settings.sub.dto;
import com.bytedesk.ticket.ticket_settings.sub.model.EmailTemplateDef;
import java.io.Serializable;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -9,7 +11,7 @@ import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 通知设置响应 DTO。
* 通知设置响应 DTO(结构化)
*/
@Data
@Builder
@@ -19,11 +21,11 @@ import lombok.experimental.Accessors;
public class TicketNotificationSettingsResponse implements Serializable {
private static final long serialVersionUID = 1L;
private Boolean emailEnabled;
private String emailEvents;
private String emailTemplates;
private List<String> emailEvents;
private List<EmailTemplateDef> emailTemplates;
private Boolean internalEnabled;
private String internalEvents;
private List<String> internalEvents;
private Boolean webhookEnabled;
private String webhookUrl;
private String webhookEvents;
private List<String> webhookEvents;
}

View File

@@ -1,5 +1,6 @@
package com.bytedesk.ticket.ticket_settings.sub.dto;
import com.bytedesk.ticket.ticket_settings.sub.model.PrioritySettingsData;
import java.io.Serializable;
import lombok.AllArgsConstructor;
@@ -9,7 +10,7 @@ import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 优先级设置响应 DTO。
* 优先级设置响应 DTO(结构化)
*/
@Data
@Builder
@@ -18,5 +19,5 @@ import lombok.experimental.Accessors;
@NoArgsConstructor
public class TicketPrioritySettingsResponse implements Serializable {
private static final long serialVersionUID = 1L;
private String content; // JSON blob
private PrioritySettingsData content;
}

View File

@@ -1,5 +1,6 @@
package com.bytedesk.ticket.ticket_settings.sub.dto;
import com.bytedesk.ticket.ticket_settings.sub.model.StatusFlowSettingsData;
import java.io.Serializable;
import lombok.AllArgsConstructor;
@@ -9,7 +10,7 @@ import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
/**
* 状态流转设置响应 DTO。
* 状态流转设置响应 DTO(结构化)
*/
@Data
@Builder
@@ -18,5 +19,5 @@ import lombok.experimental.Accessors;
@NoArgsConstructor
public class TicketStatusFlowSettingsResponse implements Serializable {
private static final long serialVersionUID = 1L;
private String content; // JSON blob
private StatusFlowSettingsData content;
}