群消息回调保存,文件上传大小变更
This commit is contained in:
@@ -19,12 +19,12 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/cloud_api/file")
|
@RequestMapping("/cloud_api/file")
|
||||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||||
public class CloudFileController {
|
public class CloudFileController {
|
||||||
|
|
||||||
private final CloudFileService cloudFileService;
|
private final CloudFileService cloudFileService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量上传云端文件
|
* 批量上传云端文件
|
||||||
*/
|
*/
|
||||||
@@ -33,19 +33,19 @@ public class CloudFileController {
|
|||||||
@RequestPart("files") List<MultipartFile> files,
|
@RequestPart("files") List<MultipartFile> files,
|
||||||
@RequestParam("path") String path,
|
@RequestParam("path") String path,
|
||||||
@RequestParam("type") String type,
|
@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();
|
CloudFileUploadReq request = new CloudFileUploadReq();
|
||||||
request.setPath(path);
|
request.setPath(path);
|
||||||
request.setType(type);
|
request.setType(type);
|
||||||
request.setTeamId(teamId);
|
request.setTeamId(teamId);
|
||||||
|
request.setAccessToken(accessToken);
|
||||||
// TODO: 从Session或Token获取当前用户ID
|
// TODO: 从Session或Token获取当前用户ID
|
||||||
String userId = "current_user_id";
|
String userId = "0";
|
||||||
|
|
||||||
return Result.success(cloudFileService.batchUpload(files, request, userId));
|
return Result.success(cloudFileService.batchUpload(files, request, userId));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过URL批量上传云端文件
|
* 通过URL批量上传云端文件
|
||||||
*/
|
*/
|
||||||
@@ -53,10 +53,10 @@ public class CloudFileController {
|
|||||||
public Result<CloudFileOperationVo> batchUploadByUrl(@RequestBody CloudFileUploadByUrlReq request) {
|
public Result<CloudFileOperationVo> batchUploadByUrl(@RequestBody CloudFileUploadByUrlReq request) {
|
||||||
// TODO: 从Session或Token获取当前用户ID
|
// TODO: 从Session或Token获取当前用户ID
|
||||||
String userId = "current_user_id";
|
String userId = "current_user_id";
|
||||||
|
|
||||||
return Result.success(cloudFileService.batchUploadByUrl(request, userId));
|
return Result.success(cloudFileService.batchUploadByUrl(request, userId));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 下载文件
|
* 下载文件
|
||||||
*/
|
*/
|
||||||
@@ -64,7 +64,7 @@ public class CloudFileController {
|
|||||||
public Result<CloudFileDownloadVo> downloadFile(@RequestBody CloudFileDownloadReq request) {
|
public Result<CloudFileDownloadVo> downloadFile(@RequestBody CloudFileDownloadReq request) {
|
||||||
return Result.success(cloudFileService.downloadFile(request));
|
return Result.success(cloudFileService.downloadFile(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查看文件列表
|
* 查看文件列表
|
||||||
*/
|
*/
|
||||||
@@ -72,7 +72,7 @@ public class CloudFileController {
|
|||||||
public Result<CloudFileListVo> listFiles(@RequestBody CloudFileListReq request) {
|
public Result<CloudFileListVo> listFiles(@RequestBody CloudFileListReq request) {
|
||||||
return Result.success(cloudFileService.listFiles(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
|
@Override
|
||||||
protected void channelRead0(ChannelHandlerContext channelHandlerContext, AutoSoftwarePacket connectPacket) throws Exception {
|
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
|
@Service
|
||||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||||
public class CloudFileServiceImpl implements CloudFileService {
|
public class CloudFileServiceImpl implements CloudFileService {
|
||||||
|
|
||||||
private final CloudApiConfig cloudApiConfig;
|
private final CloudApiConfig cloudApiConfig;
|
||||||
private final RestTemplate restTemplate;
|
private final RestTemplate restTemplate;
|
||||||
private final ObjectMapper objectMapper;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CloudFileOperationVo batchUpload(List<MultipartFile> files, CloudFileUploadReq request, String userId) {
|
public CloudFileOperationVo batchUpload(List<MultipartFile> files, CloudFileUploadReq request, String userId) {
|
||||||
if (files == null || files.isEmpty()) {
|
if (files == null || files.isEmpty()) {
|
||||||
throw new BusinessException("文件列表不能为空");
|
throw new BusinessException("文件列表不能为空");
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String url = cloudApiConfig.getBaseUrl() + "/file/upload";
|
String url = cloudApiConfig.getBaseUrl() + "/file/upload";
|
||||||
|
|
||||||
// 构建multipart请求
|
// 构建multipart请求
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
|
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
|
||||||
|
|
||||||
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
|
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
|
||||||
|
|
||||||
// 添加文件
|
// 添加文件
|
||||||
for (MultipartFile file : files) {
|
for (MultipartFile file : files) {
|
||||||
body.add("files", file.getResource());
|
body.add("files", file.getResource());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 添加其他参数
|
// 添加其他参数
|
||||||
|
body.add("access_token", request.getAccessToken());
|
||||||
body.add("path", request.getPath());
|
body.add("path", request.getPath());
|
||||||
body.add("type", request.getType());
|
body.add("type", request.getType());
|
||||||
if (request.getTeamId() != null) {
|
if (request.getTeamId() != null) {
|
||||||
body.add("team_id", request.getTeamId());
|
body.add("team_id", request.getTeamId());
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);
|
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);
|
||||||
|
|
||||||
// 调用外部API
|
// 调用外部API
|
||||||
ResponseEntity<CloudFileOperationVo> response = restTemplate.postForEntity(
|
ResponseEntity<CloudFileOperationVo> response = restTemplate.postForEntity(
|
||||||
url, requestEntity, CloudFileOperationVo.class);
|
url, requestEntity, CloudFileOperationVo.class);
|
||||||
|
|
||||||
return response.getBody();
|
return response.getBody();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("批量上传文件失败", e);
|
log.error("批量上传文件失败", e);
|
||||||
throw new BusinessException("批量上传文件失败: " + e.getMessage());
|
throw new BusinessException("批量上传文件失败: " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CloudFileOperationVo batchUploadByUrl(CloudFileUploadByUrlReq request, String userId) {
|
public CloudFileOperationVo batchUploadByUrl(CloudFileUploadByUrlReq request, String userId) {
|
||||||
if (request.getUrls() == null || request.getUrls().isEmpty()) {
|
if (request.getUrls() == null || request.getUrls().isEmpty()) {
|
||||||
throw new BusinessException("URL列表不能为空");
|
throw new BusinessException("URL列表不能为空");
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String url = cloudApiConfig.getBaseUrl() + "/file/upload/url";
|
String url = cloudApiConfig.getBaseUrl() + "/file/upload/url";
|
||||||
|
|
||||||
// 构建请求
|
// 构建请求
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||||
|
|
||||||
HttpEntity<CloudFileUploadByUrlReq> requestEntity = new HttpEntity<>(request, headers);
|
HttpEntity<CloudFileUploadByUrlReq> requestEntity = new HttpEntity<>(request, headers);
|
||||||
|
|
||||||
// 调用外部API
|
// 调用外部API
|
||||||
ResponseEntity<CloudFileOperationVo> response = restTemplate.postForEntity(
|
ResponseEntity<CloudFileOperationVo> response = restTemplate.postForEntity(
|
||||||
url, requestEntity, CloudFileOperationVo.class);
|
url, requestEntity, CloudFileOperationVo.class);
|
||||||
|
|
||||||
return response.getBody();
|
return response.getBody();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("批量URL上传文件失败", e);
|
log.error("批量URL上传文件失败", e);
|
||||||
throw new BusinessException("批量URL上传文件失败: " + e.getMessage());
|
throw new BusinessException("批量URL上传文件失败: " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CloudFileDownloadVo downloadFile(CloudFileDownloadReq request) {
|
public CloudFileDownloadVo downloadFile(CloudFileDownloadReq request) {
|
||||||
try {
|
try {
|
||||||
String url = cloudApiConfig.getBaseUrl() + "/file/download";
|
String url = cloudApiConfig.getBaseUrl() + "/file/download";
|
||||||
|
|
||||||
// 构建请求
|
// 构建请求
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||||
|
|
||||||
HttpEntity<CloudFileDownloadReq> requestEntity = new HttpEntity<>(request, headers);
|
HttpEntity<CloudFileDownloadReq> requestEntity = new HttpEntity<>(request, headers);
|
||||||
|
|
||||||
// 调用外部API
|
// 调用外部API
|
||||||
ResponseEntity<CloudFileDownloadVo> response = restTemplate.postForEntity(
|
ResponseEntity<CloudFileDownloadVo> response = restTemplate.postForEntity(
|
||||||
url, requestEntity, CloudFileDownloadVo.class);
|
url, requestEntity, CloudFileDownloadVo.class);
|
||||||
|
|
||||||
return response.getBody();
|
return response.getBody();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("生成下载链接失败", e);
|
log.error("生成下载链接失败", e);
|
||||||
throw new BusinessException("生成下载链接失败: " + e.getMessage());
|
throw new BusinessException("生成下载链接失败: " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CloudFileListVo listFiles(CloudFileListReq request) {
|
public CloudFileListVo listFiles(CloudFileListReq request) {
|
||||||
try {
|
try {
|
||||||
String url = cloudApiConfig.getBaseUrl() + "/file/list";
|
String url = cloudApiConfig.getBaseUrl() + "/file/list";
|
||||||
|
|
||||||
// 构建请求
|
// 构建请求
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||||
|
|
||||||
HttpEntity<CloudFileListReq> requestEntity = new HttpEntity<>(request, headers);
|
HttpEntity<CloudFileListReq> requestEntity = new HttpEntity<>(request, headers);
|
||||||
|
|
||||||
// 调用外部API
|
// 调用外部API
|
||||||
ResponseEntity<CloudFileListVo> response = restTemplate.postForEntity(
|
ResponseEntity<CloudFileListVo> response = restTemplate.postForEntity(
|
||||||
url, requestEntity, CloudFileListVo.class);
|
url, requestEntity, CloudFileListVo.class);
|
||||||
|
|
||||||
return response.getBody();
|
return response.getBody();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("查询文件列表失败", e);
|
log.error("查询文件列表失败", e);
|
||||||
throw new BusinessException("查询文件列表失败: " + e.getMessage());
|
throw new BusinessException("查询文件列表失败: " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CloudFileOperationVo deleteFile(CloudFileDeleteReq request) {
|
public CloudFileOperationVo deleteFile(CloudFileDeleteReq request) {
|
||||||
try {
|
try {
|
||||||
String url = cloudApiConfig.getBaseUrl() + "/file/delete";
|
String url = cloudApiConfig.getBaseUrl() + "/file/delete";
|
||||||
|
|
||||||
// 构建请求
|
// 构建请求
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||||
|
|
||||||
HttpEntity<CloudFileDeleteReq> requestEntity = new HttpEntity<>(request, headers);
|
HttpEntity<CloudFileDeleteReq> requestEntity = new HttpEntity<>(request, headers);
|
||||||
|
|
||||||
// 调用外部API
|
// 调用外部API
|
||||||
ResponseEntity<CloudFileOperationVo> response = restTemplate.postForEntity(
|
ResponseEntity<CloudFileOperationVo> response = restTemplate.postForEntity(
|
||||||
url, requestEntity, CloudFileOperationVo.class);
|
url, requestEntity, CloudFileOperationVo.class);
|
||||||
|
|
||||||
return response.getBody();
|
return response.getBody();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("删除文件失败", 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;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -15,8 +15,8 @@ file:
|
|||||||
spring:
|
spring:
|
||||||
servlet:
|
servlet:
|
||||||
multipart:
|
multipart:
|
||||||
max-request-size: 100MB
|
max-request-size: 1GB
|
||||||
max-file-size: 100MB
|
max-file-size: 1GB
|
||||||
datasource:
|
datasource:
|
||||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||||
url: jdbc:mysql://8.134.75.237:3309/real_time?serverTimezone=Asia/Shanghai
|
url: jdbc:mysql://8.134.75.237:3309/real_time?serverTimezone=Asia/Shanghai
|
||||||
|
|||||||
@@ -4,6 +4,11 @@
|
|||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.realtime.mappers.GroupMessageMapper">
|
<mapper namespace="com.realtime.mappers.GroupMessageMapper">
|
||||||
|
|
||||||
|
<resultMap id="getGroupListVo" type="groupListMessagesVo">
|
||||||
|
<collection property="groupId" column="groupId"
|
||||||
|
select="com.realtime.mappers.SmartMessageMapper.findAllByContactId"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
|
||||||
<sql id="Base_Column_List">
|
<sql id="Base_Column_List">
|
||||||
id
|
id
|
||||||
@@ -11,7 +16,7 @@
|
|||||||
sender,create_time,message_type
|
sender,create_time,message_type
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="getGroupList" resultType="groupListMessagesVo">
|
<select id="getGroupList" resultMap="getGroupListVo">
|
||||||
select g.id, g.sender, g.message, g.create_time, g.group_id, g.message_type,g.content_json
|
select g.id, g.sender, g.message, g.create_time, g.group_id, g.message_type,g.content_json
|
||||||
from group_message g
|
from group_message g
|
||||||
<where>
|
<where>
|
||||||
|
|||||||
16
src/main/resources/mappers/SmartMessageMapper.xml
Normal file
16
src/main/resources/mappers/SmartMessageMapper.xml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.realtime.mappers.SmartMessageMapper">
|
||||||
|
|
||||||
|
|
||||||
|
<sql id="Base_Column_List">
|
||||||
|
id,message,created_time,
|
||||||
|
contact_id
|
||||||
|
</sql>
|
||||||
|
<select id="findAllByContactId" resultType="smartMessageVo">
|
||||||
|
select <include refid="Base_Column_List"/> from smart_message sm where sm.contact_id = #{contactId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
Reference in New Issue
Block a user