diff --git a/backend/src/main/java/com/imeeting/controller/android/AndroidMeetingController.java b/backend/src/main/java/com/imeeting/controller/android/AndroidMeetingController.java index 6dd503b..4af8f54 100644 --- a/backend/src/main/java/com/imeeting/controller/android/AndroidMeetingController.java +++ b/backend/src/main/java/com/imeeting/controller/android/AndroidMeetingController.java @@ -8,6 +8,7 @@ import com.imeeting.dto.android.AndroidAuthContext; import com.imeeting.dto.android.AndroidOfflineMeetingCreateCommand; import com.imeeting.dto.android.AndroidMeetingCreateResponse; import com.imeeting.dto.android.AndroidMeetingConfigVo; +import com.imeeting.dto.android.QtMeetingUpdateCommand; import com.imeeting.dto.android.AndroidMeetingListItemVO; import com.imeeting.dto.android.AndroidOfflineMeetingConflictVO; import com.imeeting.dto.android.AndroidOfflineMeetingFinishRequest; @@ -51,6 +52,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -292,7 +294,7 @@ public class AndroidMeetingController { loginUser.getTenantId(), loginUser.getUserId(), AndroidLoginUserSupport.resolveDisplayName(authContext), - "all", + "created", null, AndroidLoginUserSupport.isAdmin(authContext) ); @@ -408,6 +410,28 @@ public class AndroidMeetingController { return ApiResponse.ok(password); } + @Operation(summary = "QT更新会议信息") + @ApiResponses({ + @io.swagger.v3.oas.annotations.responses.ApiResponse( + responseCode = "200", + description = "更新会议标题、参会人和总结内容", + content = @Content(schema = @Schema(implementation = Boolean.class)) + ) + }) + @PutMapping("/{meetingId}/info") + @Log(value = "QT修改会议信息", type = "Android会议管理") + public ApiResponse updateMeetingForQt(HttpServletRequest request, + @PathVariable Long meetingId, + @Valid @RequestBody QtMeetingUpdateCommand command) { + AndroidRequestLogHelper.logRequest(log, "QT会议", "修改会议信息接口", "meetingId", meetingId); + AndroidAuthContext authContext = androidAuthService.authenticateHttp(request); + LoginUser loginUser = AndroidLoginUserSupport.requireLoginUser(authContext); + Meeting meeting = meetingAccessService.requireMeeting(meetingId); + meetingAccessService.assertCanEditMeeting(meeting, loginUser); + meetingCommandService.updateMeetingForQt(meetingId, command); + return ApiResponse.ok(true); + } + @Operation(summary = "删除Android会议") @ApiResponses({ @io.swagger.v3.oas.annotations.responses.ApiResponse( diff --git a/backend/src/main/java/com/imeeting/service/biz/MeetingCommandService.java b/backend/src/main/java/com/imeeting/service/biz/MeetingCommandService.java index caebfcc..0a41257 100644 --- a/backend/src/main/java/com/imeeting/service/biz/MeetingCommandService.java +++ b/backend/src/main/java/com/imeeting/service/biz/MeetingCommandService.java @@ -12,6 +12,7 @@ import com.imeeting.dto.biz.PublicDeviceMeetingCreateCommand; import com.imeeting.dto.biz.RealtimeTranscriptItemDTO; import com.imeeting.dto.biz.UpdateMeetingBasicCommand; import com.imeeting.dto.biz.UpdateMeetingTranscriptCommand; +import com.imeeting.dto.android.QtMeetingUpdateCommand; import java.util.List; @@ -54,6 +55,8 @@ public interface MeetingCommandService { void updateSummaryContent(Long meetingId, String summaryContent); + void updateMeetingForQt(Long meetingId, QtMeetingUpdateCommand command); + void reSummary(Long meetingId, Long summaryModelId, Long chapterModelId, Long promptId, String userPrompt, String summaryDetailLevel); void retryTranscription(Long meetingId); diff --git a/backend/src/main/java/com/imeeting/service/biz/impl/MeetingCommandServiceImpl.java b/backend/src/main/java/com/imeeting/service/biz/impl/MeetingCommandServiceImpl.java index 65af57c..a39a725 100644 --- a/backend/src/main/java/com/imeeting/service/biz/impl/MeetingCommandServiceImpl.java +++ b/backend/src/main/java/com/imeeting/service/biz/impl/MeetingCommandServiceImpl.java @@ -25,6 +25,7 @@ import com.imeeting.dto.biz.RealtimeMeetingSessionStatusVO; import com.imeeting.dto.biz.RealtimeTranscriptItemDTO; import com.imeeting.dto.biz.UpdateMeetingBasicCommand; import com.imeeting.dto.biz.UpdateMeetingTranscriptCommand; +import com.imeeting.dto.android.QtMeetingUpdateCommand; import com.imeeting.entity.biz.AiTask; import com.imeeting.entity.biz.HotWord; import com.imeeting.entity.biz.Meeting; @@ -767,6 +768,23 @@ public class MeetingCommandServiceImpl implements MeetingCommandService { meetingSummaryFileService.updateSummaryContent(meeting, summaryContent); } + @Override + @Transactional(rollbackFor = Exception.class) + public void updateMeetingForQt(Long meetingId, QtMeetingUpdateCommand command) { + Meeting meeting = meetingService.getById(meetingId); + if (meeting == null) { + throw new RuntimeException("会议不存在"); + } + meetingService.update(new LambdaUpdateWrapper() + .eq(Meeting::getId, meetingId) + .set(Meeting::getTitle, command.getTitle().trim()) + .set(Meeting::getParticipants, command.getParticipantIds().stream() + .filter(Objects::nonNull) + .map(String::valueOf) + .collect(Collectors.joining(",")))); + meetingSummaryFileService.updateSummaryContent(meeting, command.getSummaryContent()); + } + @Override @Transactional(rollbackFor = Exception.class) public MeetingTranscriptChapterImportResultVO importTranscriptChapters(MeetingTranscriptChapterImportDTO command) {