群消息回调保存,文件上传大小变更
This commit is contained in:
@@ -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<MultipartFile> 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<CloudFileOperationVo> 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<CloudFileDownloadVo> downloadFile(@RequestBody CloudFileDownloadReq request) {
|
||||
return Result.success(cloudFileService.downloadFile(request));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查看文件列表
|
||||
*/
|
||||
@@ -72,7 +72,7 @@ public class CloudFileController {
|
||||
public Result<CloudFileListVo> listFiles(@RequestBody CloudFileListReq request) {
|
||||
return Result.success(cloudFileService.listFiles(request));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除文件
|
||||
*/
|
||||
|
||||
18
src/main/java/com/realtime/mappers/SmartMessageMapper.java
Normal file
18
src/main/java/com/realtime/mappers/SmartMessageMapper.java
Normal file
@@ -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<SmartMessage> {
|
||||
|
||||
List<SmartMessageVo> findAllByContactId(@Param("contactId") Long contactId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
37
src/main/java/com/realtime/model/pojo/SmartMessage.java
Normal file
37
src/main/java/com/realtime/model/pojo/SmartMessage.java
Normal file
@@ -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;
|
||||
|
||||
|
||||
}
|
||||
@@ -17,7 +17,7 @@ public class AutoSoftwareHandler extends SimpleChannelInboundHandler<AutoSoftwar
|
||||
|
||||
@Override
|
||||
protected void channelRead0(ChannelHandlerContext channelHandlerContext, AutoSoftwarePacket connectPacket) throws Exception {
|
||||
String url = connectPacket.getUrl();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
20
src/main/java/com/realtime/service/SmartMessageService.java
Normal file
20
src/main/java/com/realtime/service/SmartMessageService.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package com.realtime.service;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.realtime.model.pojo.SmartMessage;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
public interface SmartMessageService extends IService<SmartMessage> {
|
||||
default void saveMessage(String msg, Long contactId) {
|
||||
SmartMessage smartMessage = new SmartMessage();
|
||||
smartMessage.setMessage(msg);
|
||||
smartMessage.setContactId(contactId);
|
||||
smartMessage.setCreatedTime(LocalDateTime.now());
|
||||
save(smartMessage);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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<MultipartFile> 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<String, Object> 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<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);
|
||||
|
||||
|
||||
// 调用外部API
|
||||
ResponseEntity<CloudFileOperationVo> 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<CloudFileUploadByUrlReq> requestEntity = new HttpEntity<>(request, headers);
|
||||
|
||||
|
||||
// 调用外部API
|
||||
ResponseEntity<CloudFileOperationVo> 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<CloudFileDownloadReq> requestEntity = new HttpEntity<>(request, headers);
|
||||
|
||||
|
||||
// 调用外部API
|
||||
ResponseEntity<CloudFileDownloadVo> 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<CloudFileListReq> requestEntity = new HttpEntity<>(request, headers);
|
||||
|
||||
|
||||
// 调用外部API
|
||||
ResponseEntity<CloudFileListVo> 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<CloudFileDeleteReq> requestEntity = new HttpEntity<>(request, headers);
|
||||
|
||||
|
||||
// 调用外部API
|
||||
ResponseEntity<CloudFileOperationVo> response = restTemplate.postForEntity(
|
||||
url, requestEntity, CloudFileOperationVo.class);
|
||||
|
||||
|
||||
return response.getBody();
|
||||
} catch (Exception e) {
|
||||
log.error("删除文件失败", e);
|
||||
|
||||
@@ -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<SmartMessageMapper, SmartMessage>
|
||||
implements SmartMessageService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
29
src/main/java/com/realtime/vo/SmartMessageVo.java
Normal file
29
src/main/java/com/realtime/vo/SmartMessageVo.java
Normal file
@@ -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;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user