diff --git a/src/main/java/com/realtime/controller/CloudFileController.java b/src/main/java/com/realtime/controller/CloudFileController.java index 6d960b8..4297277 100644 --- a/src/main/java/com/realtime/controller/CloudFileController.java +++ b/src/main/java/com/realtime/controller/CloudFileController.java @@ -19,12 +19,12 @@ import java.util.List; */ @Slf4j @RestController -@RequestMapping("/cloud_api/file") + @RequestMapping("/cloud_api/file") @RequiredArgsConstructor(onConstructor = @__(@Autowired)) public class CloudFileController { - + private final CloudFileService cloudFileService; - + /** * 批量上传云端文件 */ @@ -33,19 +33,19 @@ public class CloudFileController { @RequestPart("files") List files, @RequestParam("path") String path, @RequestParam("type") String type, - @RequestParam(value = "team_id", required = false) String teamId) { - + @RequestParam(value = "team_id", required = false) String teamId,String accessToken) { + CloudFileUploadReq request = new CloudFileUploadReq(); request.setPath(path); request.setType(type); request.setTeamId(teamId); - + request.setAccessToken(accessToken); // TODO: 从Session或Token获取当前用户ID - String userId = "current_user_id"; - + String userId = "0"; + return Result.success(cloudFileService.batchUpload(files, request, userId)); } - + /** * 通过URL批量上传云端文件 */ @@ -53,10 +53,10 @@ public class CloudFileController { public Result batchUploadByUrl(@RequestBody CloudFileUploadByUrlReq request) { // TODO: 从Session或Token获取当前用户ID String userId = "current_user_id"; - + return Result.success(cloudFileService.batchUploadByUrl(request, userId)); } - + /** * 下载文件 */ @@ -64,7 +64,7 @@ public class CloudFileController { public Result downloadFile(@RequestBody CloudFileDownloadReq request) { return Result.success(cloudFileService.downloadFile(request)); } - + /** * 查看文件列表 */ @@ -72,7 +72,7 @@ public class CloudFileController { public Result listFiles(@RequestBody CloudFileListReq request) { return Result.success(cloudFileService.listFiles(request)); } - + /** * 删除文件 */ diff --git a/src/main/java/com/realtime/mappers/SmartMessageMapper.java b/src/main/java/com/realtime/mappers/SmartMessageMapper.java new file mode 100644 index 0000000..21e67f6 --- /dev/null +++ b/src/main/java/com/realtime/mappers/SmartMessageMapper.java @@ -0,0 +1,18 @@ +package com.realtime.mappers; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.realtime.model.pojo.SmartMessage; +import com.realtime.vo.SmartMessageVo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface SmartMessageMapper extends BaseMapper { + + List findAllByContactId(@Param("contactId") Long contactId); +} + + + + diff --git a/src/main/java/com/realtime/model/pojo/SmartMessage.java b/src/main/java/com/realtime/model/pojo/SmartMessage.java new file mode 100644 index 0000000..bc92863 --- /dev/null +++ b/src/main/java/com/realtime/model/pojo/SmartMessage.java @@ -0,0 +1,37 @@ +package com.realtime.model.pojo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Date; + + +@Data +public class SmartMessage implements Serializable { + /** + * + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * + */ + private String message; + + /** + * + */ + private LocalDateTime createdTime; + + /** + * + */ + private Long contactId; + + +} diff --git a/src/main/java/com/realtime/packets/server/handler/AutoSoftwareHandler.java b/src/main/java/com/realtime/packets/server/handler/AutoSoftwareHandler.java index 04c6665..c8226ce 100644 --- a/src/main/java/com/realtime/packets/server/handler/AutoSoftwareHandler.java +++ b/src/main/java/com/realtime/packets/server/handler/AutoSoftwareHandler.java @@ -17,7 +17,7 @@ public class AutoSoftwareHandler extends SimpleChannelInboundHandler { + default void saveMessage(String msg, Long contactId) { + SmartMessage smartMessage = new SmartMessage(); + smartMessage.setMessage(msg); + smartMessage.setContactId(contactId); + smartMessage.setCreatedTime(LocalDateTime.now()); + save(smartMessage); + } + + +} diff --git a/src/main/java/com/realtime/service/impl/CloudFileServiceImpl.java b/src/main/java/com/realtime/service/impl/CloudFileServiceImpl.java index e213d64..1fcbf49 100644 --- a/src/main/java/com/realtime/service/impl/CloudFileServiceImpl.java +++ b/src/main/java/com/realtime/service/impl/CloudFileServiceImpl.java @@ -28,136 +28,136 @@ import java.util.List; @Service @RequiredArgsConstructor(onConstructor = @__(@Autowired)) public class CloudFileServiceImpl implements CloudFileService { - + private final CloudApiConfig cloudApiConfig; private final RestTemplate restTemplate; - private final ObjectMapper objectMapper; - + @Override public CloudFileOperationVo batchUpload(List files, CloudFileUploadReq request, String userId) { if (files == null || files.isEmpty()) { throw new BusinessException("文件列表不能为空"); } - + try { String url = cloudApiConfig.getBaseUrl() + "/file/upload"; - + // 构建multipart请求 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); - + MultiValueMap body = new LinkedMultiValueMap<>(); - + // 添加文件 for (MultipartFile file : files) { body.add("files", file.getResource()); } - + // 添加其他参数 + body.add("access_token", request.getAccessToken()); body.add("path", request.getPath()); body.add("type", request.getType()); if (request.getTeamId() != null) { body.add("team_id", request.getTeamId()); } - + HttpEntity> requestEntity = new HttpEntity<>(body, headers); - + // 调用外部API ResponseEntity response = restTemplate.postForEntity( url, requestEntity, CloudFileOperationVo.class); - + return response.getBody(); } catch (Exception e) { log.error("批量上传文件失败", e); throw new BusinessException("批量上传文件失败: " + e.getMessage()); } } - + @Override public CloudFileOperationVo batchUploadByUrl(CloudFileUploadByUrlReq request, String userId) { if (request.getUrls() == null || request.getUrls().isEmpty()) { throw new BusinessException("URL列表不能为空"); } - + try { String url = cloudApiConfig.getBaseUrl() + "/file/upload/url"; - + // 构建请求 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); - + HttpEntity requestEntity = new HttpEntity<>(request, headers); - + // 调用外部API ResponseEntity response = restTemplate.postForEntity( url, requestEntity, CloudFileOperationVo.class); - + return response.getBody(); } catch (Exception e) { log.error("批量URL上传文件失败", e); throw new BusinessException("批量URL上传文件失败: " + e.getMessage()); } } - + @Override public CloudFileDownloadVo downloadFile(CloudFileDownloadReq request) { try { String url = cloudApiConfig.getBaseUrl() + "/file/download"; - + // 构建请求 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); - + HttpEntity requestEntity = new HttpEntity<>(request, headers); - + // 调用外部API ResponseEntity response = restTemplate.postForEntity( url, requestEntity, CloudFileDownloadVo.class); - + return response.getBody(); } catch (Exception e) { log.error("生成下载链接失败", e); throw new BusinessException("生成下载链接失败: " + e.getMessage()); } } - + @Override public CloudFileListVo listFiles(CloudFileListReq request) { try { String url = cloudApiConfig.getBaseUrl() + "/file/list"; - + // 构建请求 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); - + HttpEntity requestEntity = new HttpEntity<>(request, headers); - + // 调用外部API ResponseEntity response = restTemplate.postForEntity( url, requestEntity, CloudFileListVo.class); - + return response.getBody(); } catch (Exception e) { log.error("查询文件列表失败", e); throw new BusinessException("查询文件列表失败: " + e.getMessage()); } } - + @Override public CloudFileOperationVo deleteFile(CloudFileDeleteReq request) { try { String url = cloudApiConfig.getBaseUrl() + "/file/delete"; - + // 构建请求 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); - + HttpEntity requestEntity = new HttpEntity<>(request, headers); - + // 调用外部API ResponseEntity response = restTemplate.postForEntity( url, requestEntity, CloudFileOperationVo.class); - + return response.getBody(); } catch (Exception e) { log.error("删除文件失败", e); diff --git a/src/main/java/com/realtime/service/impl/SmartMessageServiceImpl.java b/src/main/java/com/realtime/service/impl/SmartMessageServiceImpl.java new file mode 100644 index 0000000..d6ff5cf --- /dev/null +++ b/src/main/java/com/realtime/service/impl/SmartMessageServiceImpl.java @@ -0,0 +1,19 @@ +package com.realtime.service.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.realtime.mappers.SmartMessageMapper; +import com.realtime.model.pojo.SmartMessage; +import com.realtime.service.SmartMessageService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +@Slf4j +@Service +public class SmartMessageServiceImpl extends ServiceImpl + implements SmartMessageService { + +} + + + + diff --git a/src/main/java/com/realtime/vo/SmartMessageVo.java b/src/main/java/com/realtime/vo/SmartMessageVo.java new file mode 100644 index 0000000..329e3cb --- /dev/null +++ b/src/main/java/com/realtime/vo/SmartMessageVo.java @@ -0,0 +1,29 @@ +package com.realtime.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class SmartMessageVo { + /** + * + */ + private Long id; + + /** + * + */ + private String message; + + /** + * + */ + private LocalDateTime createdTime; + + /** + * + */ + private Long contactId; + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2f3b92e..5b3a75e 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -15,8 +15,8 @@ file: spring: servlet: multipart: - max-request-size: 100MB - max-file-size: 100MB + max-request-size: 1GB + max-file-size: 1GB datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://8.134.75.237:3309/real_time?serverTimezone=Asia/Shanghai diff --git a/src/main/resources/mappers/GroupMessageMapper.xml b/src/main/resources/mappers/GroupMessageMapper.xml index 1398d7d..6255acd 100644 --- a/src/main/resources/mappers/GroupMessageMapper.xml +++ b/src/main/resources/mappers/GroupMessageMapper.xml @@ -4,6 +4,11 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + id @@ -11,7 +16,7 @@ sender,create_time,message_type - select g.id, g.sender, g.message, g.create_time, g.group_id, g.message_type,g.content_json from group_message g diff --git a/src/main/resources/mappers/SmartMessageMapper.xml b/src/main/resources/mappers/SmartMessageMapper.xml new file mode 100644 index 0000000..2b882ca --- /dev/null +++ b/src/main/resources/mappers/SmartMessageMapper.xml @@ -0,0 +1,16 @@ + + + + + + + id,message,created_time, + contact_id + + + +