添加平台查询指定用户发送过的信息接口,
使查询给租户发送信息的接口,使其可以进行条件查询, 优化bug,插入记录后,未添加have_new_info字段为0
This commit is contained in:
parent
a419b3d405
commit
80c41b4662
@ -1,8 +1,6 @@
|
|||||||
package com.xhpc.board.controller;
|
package com.xhpc.board.controller;
|
||||||
|
|
||||||
import com.xhpc.board.domain.PlatformSendMessageToUserRequest;
|
import com.xhpc.board.domain.*;
|
||||||
import com.xhpc.board.domain.QueryUserListRequest;
|
|
||||||
import com.xhpc.board.domain.QueryUserListResponse;
|
|
||||||
import com.xhpc.board.service.XhpcMessageBoardService;
|
import com.xhpc.board.service.XhpcMessageBoardService;
|
||||||
import com.xhpc.common.core.web.domain.AjaxResult;
|
import com.xhpc.common.core.web.domain.AjaxResult;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -57,4 +55,20 @@ public class XhpcMessageBoardController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 平台查询指定用户消息
|
||||||
|
*
|
||||||
|
* @author WH
|
||||||
|
* @date 2022/1/15 18:47
|
||||||
|
* @since version-1.0
|
||||||
|
*/
|
||||||
|
@GetMapping("/user/message")
|
||||||
|
public AjaxResult platformQueryMessage(UserQueryCondition userQueryCondition) throws Exception {
|
||||||
|
|
||||||
|
QueryUserMassageResponse queryUserMassageResponse = xhpcMessageBoardService.platformQueryMessage(userQueryCondition);
|
||||||
|
|
||||||
|
return AjaxResult.success(queryUserMassageResponse);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,7 +17,6 @@ import javax.validation.constraints.NotNull;
|
|||||||
*/
|
*/
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@Data
|
@Data
|
||||||
|
|
||||||
public class QueryUserListRequest {
|
public class QueryUserListRequest {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -42,7 +41,7 @@ public class QueryUserListRequest {
|
|||||||
*/
|
*/
|
||||||
@JsonProperty("items")
|
@JsonProperty("items")
|
||||||
@NotNull(message = "items的参数名不正确或者items的值为空,请检查传入参数")
|
@NotNull(message = "items的参数名不正确或者items的值为空,请检查传入参数")
|
||||||
@Min(value = 1, message = "每页显示至少1条数据")
|
@Min(value = 1, message = "每页至少需要显示1条数据")
|
||||||
private Integer items;
|
private Integer items;
|
||||||
/**
|
/**
|
||||||
* tenantId
|
* tenantId
|
||||||
|
|||||||
@ -36,6 +36,7 @@ public interface XhpcMessageBoardService {
|
|||||||
*
|
*
|
||||||
* @param userQueryCondition 用户传入的条件
|
* @param userQueryCondition 用户传入的条件
|
||||||
* @return 用户在数据库中发送的记录
|
* @return 用户在数据库中发送的记录
|
||||||
|
*
|
||||||
* @author WH
|
* @author WH
|
||||||
* @date 2022/1/12 15:30
|
* @date 2022/1/12 15:30
|
||||||
* @since version-1.0
|
* @since version-1.0
|
||||||
@ -66,5 +67,15 @@ public interface XhpcMessageBoardService {
|
|||||||
*/
|
*/
|
||||||
QueryUserListResponse queryUserList(QueryUserListRequest param) throws Exception;
|
QueryUserListResponse queryUserList(QueryUserListRequest param) throws Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 平台查询用户发送过来的信息,与用户查看它自己的信息一致
|
||||||
|
*
|
||||||
|
* @param userQueryCondition 要查询的用户的信息
|
||||||
|
* @return 返回用户与平台用户的一个月的聊天记录
|
||||||
|
* @author WH
|
||||||
|
* @date 2022/1/16 15:39
|
||||||
|
* @since version-1.0
|
||||||
|
*/
|
||||||
|
QueryUserMassageResponse platformQueryMessage(UserQueryCondition userQueryCondition);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -161,11 +161,13 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService {
|
|||||||
* 根据用户条件,查询指定的数据库中的记录
|
* 根据用户条件,查询指定的数据库中的记录
|
||||||
*
|
*
|
||||||
* @param userQueryCondition 用户传入的条件
|
* @param userQueryCondition 用户传入的条件
|
||||||
|
* @return 用户在数据库中发送的记录
|
||||||
* @author WH
|
* @author WH
|
||||||
* @date 2022/1/12 15:30
|
* @date 2022/1/12 15:30
|
||||||
* @since version-1.0
|
* @since version-1.0
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public QueryUserMassageResponse queryUserMessage(UserQueryCondition userQueryCondition) {
|
public QueryUserMassageResponse queryUserMessage(UserQueryCondition userQueryCondition) {
|
||||||
//完善条件集合
|
//完善条件集合
|
||||||
LoginUser loginUser = tokenService.getLoginUser();
|
LoginUser loginUser = tokenService.getLoginUser();
|
||||||
@ -209,8 +211,9 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService {
|
|||||||
Long messageId = aMonthRecords.get(index).getMessageId();
|
Long messageId = aMonthRecords.get(index).getMessageId();
|
||||||
messageIdList.add(messageId);
|
messageIdList.add(messageId);
|
||||||
}
|
}
|
||||||
//设置查询出来的记录为已读状态
|
//设置查询出来的记录为已读状态,然后再查询,保证查询出来的是否有新信息状态被改变
|
||||||
messageBoardMapper.setUserReadedStatus(messageIdList);
|
messageBoardMapper.setUserReadedStatus(messageIdList);
|
||||||
|
aMonthRecords = messageBoardMapper.selectBy(userQueryCondition, nextTimeStr);
|
||||||
//封装数据
|
//封装数据
|
||||||
ArrayList<QueryUserMassageResponse.DataDTO> dataDTOS = new ArrayList<>();
|
ArrayList<QueryUserMassageResponse.DataDTO> dataDTOS = new ArrayList<>();
|
||||||
for (XhpcMessageBoard aMonthRecord : aMonthRecords) {
|
for (XhpcMessageBoard aMonthRecord : aMonthRecords) {
|
||||||
@ -220,7 +223,6 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService {
|
|||||||
dataDTOS.add(dataDTO);
|
dataDTOS.add(dataDTO);
|
||||||
}
|
}
|
||||||
//处理下次查询时间
|
//处理下次查询时间
|
||||||
//todo 截取时间
|
|
||||||
response.setNextQueryTime(nextTimeStr);
|
response.setNextQueryTime(nextTimeStr);
|
||||||
response.setData(dataDTOS);
|
response.setData(dataDTOS);
|
||||||
return response;
|
return response;
|
||||||
@ -259,7 +261,7 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService {
|
|||||||
//查询用户列表
|
//查询用户列表
|
||||||
SysUser receiverInfo = tokenService.getLoginUser().getSysUser();
|
SysUser receiverInfo = tokenService.getLoginUser().getSysUser();
|
||||||
if (receiverInfo == null) {
|
if (receiverInfo == null) {
|
||||||
throw new Exception("查询不到指定的租户,receiver为null,请检查传递的参数");
|
throw new Exception("查询不到指定的租户,receiverInfo为null,请检查传递的参数");
|
||||||
}
|
}
|
||||||
QueryUserListResponse queryUserListResponse = new QueryUserListResponse();
|
QueryUserListResponse queryUserListResponse = new QueryUserListResponse();
|
||||||
//查询出该租户拥有的所有用户列表
|
//查询出该租户拥有的所有用户列表
|
||||||
@ -282,4 +284,76 @@ public class XhpcMessageBoardServiceImpl implements XhpcMessageBoardService {
|
|||||||
return queryUserListResponse;
|
return queryUserListResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 平台查询用户发送过来的信息,与用户查看它自己的信息的代码逻辑一致
|
||||||
|
*
|
||||||
|
* @param userQueryCondition 要查询的用户的信息
|
||||||
|
* @return 返回用户与平台用户的一个月的聊天记录
|
||||||
|
* @author WH
|
||||||
|
* @date 2022/1/16 15:39
|
||||||
|
* @since version-1.0
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public QueryUserMassageResponse platformQueryMessage(UserQueryCondition userQueryCondition) {
|
||||||
|
//完善条件集合
|
||||||
|
SysUser sysUser = tokenService.getLoginUser().getSysUser();
|
||||||
|
userQueryCondition.setTenantId(sysUser.getTenantId());
|
||||||
|
userQueryCondition.setTenantType(0);
|
||||||
|
String nextTimeStr = null;
|
||||||
|
if ("".equals(userQueryCondition.getSendMessageTime()) || userQueryCondition.getSendMessageTime() == null || "null".equals(userQueryCondition.getSendMessageTime())) {
|
||||||
|
userQueryCondition.setSendMessageTime(DateUtil.getYyyyMmDdHhMmSs());
|
||||||
|
//查询用户是否有数据,即查询该用户的所有时间记录(有时间记录表示该用户发送过信息)
|
||||||
|
List<XhpcMessageBoard> allTimeRecords = messageBoardMapper.selectTimeRecords(userQueryCondition);
|
||||||
|
QueryUserMassageResponse queryUserMassageResponse = new QueryUserMassageResponse();
|
||||||
|
if (allTimeRecords.size() == 0) {
|
||||||
|
return queryUserMassageResponse;
|
||||||
|
}
|
||||||
|
//获取最后一个时间记录,将其减去一个月,放入查询条件中
|
||||||
|
XhpcMessageBoard xhpcMessageBoard = allTimeRecords.get(allTimeRecords.size() - 1);
|
||||||
|
Date finalTime = xhpcMessageBoard.getSendMessageTime();
|
||||||
|
userQueryCondition.setSendMessageTime(DateUtils.parseDateToStr(finalTime));
|
||||||
|
Calendar finalTimeCalendar = DateUtil.getCalendar(finalTime);
|
||||||
|
finalTimeCalendar.add(Calendar.MONTH, -1);
|
||||||
|
Date nextTime = finalTimeCalendar.getTime();
|
||||||
|
nextTimeStr = DateUtils.parseDateToStr(nextTime);
|
||||||
|
} else {
|
||||||
|
//如果有值过来,说明有之前的记录,计算上一个月的值,作为查询条件,并返回
|
||||||
|
String sendMessageTimeStr = userQueryCondition.getSendMessageTime();
|
||||||
|
Date sendMessageTimeDate = DateUtils.parseDate(sendMessageTimeStr);
|
||||||
|
Calendar nextTimeCalendar = DateUtil.getCalendar(sendMessageTimeDate);
|
||||||
|
nextTimeCalendar.add(Calendar.MONTH, -1);
|
||||||
|
Date nextTime = nextTimeCalendar.getTime();
|
||||||
|
nextTimeStr = DateUtils.parseDateToStr(nextTime);
|
||||||
|
}
|
||||||
|
//根据用户信息中所保存的时间,与上个月时间进行区间查询
|
||||||
|
List<XhpcMessageBoard> aMonthRecords = messageBoardMapper.selectBy(userQueryCondition, nextTimeStr);
|
||||||
|
//如果没有数据,则返回空实体类对象
|
||||||
|
QueryUserMassageResponse response = new QueryUserMassageResponse();
|
||||||
|
if (aMonthRecords.size() == 0) {
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
List<Long> messageIdList = new ArrayList<>();
|
||||||
|
for (int index = 0; index <= aMonthRecords.size() - 1; index++) {
|
||||||
|
Long messageId = aMonthRecords.get(index).getMessageId();
|
||||||
|
messageIdList.add(messageId);
|
||||||
|
}
|
||||||
|
//设置查询出来的记录为已读状态,然后再查询,保证查询出来的是否有新信息状态被改变
|
||||||
|
messageBoardMapper.setUserReadedStatus(messageIdList);
|
||||||
|
aMonthRecords = messageBoardMapper.selectBy(userQueryCondition, nextTimeStr);
|
||||||
|
//封装数据
|
||||||
|
ArrayList<QueryUserMassageResponse.DataDTO> dataDTOS = new ArrayList<>();
|
||||||
|
for (XhpcMessageBoard aMonthRecord : aMonthRecords) {
|
||||||
|
QueryUserMassageResponse.DataDTO dataDTO = new QueryUserMassageResponse.DataDTO();
|
||||||
|
BeanUtils.copyProperties(aMonthRecord, dataDTO);
|
||||||
|
dataDTO.setSendMessageTime(DateUtils.parseDateToStr(aMonthRecord.getSendMessageTime()));
|
||||||
|
dataDTOS.add(dataDTO);
|
||||||
|
}
|
||||||
|
//处理下次查询时间
|
||||||
|
//todo 截取时间
|
||||||
|
response.setNextQueryTime(nextTimeStr);
|
||||||
|
response.setData(dataDTOS);
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -131,8 +131,8 @@
|
|||||||
</insert>
|
</insert>
|
||||||
<insert id="insertUserTimeMessageRecord">
|
<insert id="insertUserTimeMessageRecord">
|
||||||
insert into xhpc_message_board
|
insert into xhpc_message_board
|
||||||
(sender_type, sender_account, send_message_time, tenant_type, tenant_id, sender)
|
(sender_type, sender_account, send_message_time, tenant_type, tenant_id, have_new_info, sender)
|
||||||
values (#{senderType}, #{senderAccount}, #{sendMessageTime}, #{tenantType}, #{tenantId}, 1)
|
values (#{senderType}, #{senderAccount}, #{sendMessageTime}, #{tenantType}, #{tenantId}, 0, 1)
|
||||||
</insert>
|
</insert>
|
||||||
<insert id="insertUserMessage">
|
<insert id="insertUserMessage">
|
||||||
insert into xhpc_message_board
|
insert into xhpc_message_board
|
||||||
@ -230,8 +230,8 @@
|
|||||||
</insert>
|
</insert>
|
||||||
<insert id="insertPlatformTimeMessageRecord">
|
<insert id="insertPlatformTimeMessageRecord">
|
||||||
insert into xhpc_message_board
|
insert into xhpc_message_board
|
||||||
(sender_type, sender_account, send_message_time, tenant_type, tenant_id, sender)
|
(sender_type, sender_account, send_message_time, tenant_type, tenant_id, have_new_info, sender)
|
||||||
values (#{senderType}, #{senderAccount}, #{sendMessageTime}, #{tenantType}, #{tenantId}, 1)
|
values (#{senderType}, #{senderAccount}, #{sendMessageTime}, #{tenantType}, #{tenantId}, 0, 1)
|
||||||
</insert>
|
</insert>
|
||||||
<update id="updateByPrimaryKeySelective" parameterType="com.xhpc.board.pojo.XhpcMessageBoard">
|
<update id="updateByPrimaryKeySelective" parameterType="com.xhpc.board.pojo.XhpcMessageBoard">
|
||||||
update xhpc_message_board
|
update xhpc_message_board
|
||||||
|
|||||||
@ -109,14 +109,26 @@
|
|||||||
AND tenant_type = #{tenantType}
|
AND tenant_type = #{tenantType}
|
||||||
AND del_flag IS NULL
|
AND del_flag IS NULL
|
||||||
AND have_new_info = 0
|
AND have_new_info = 0
|
||||||
|
<if test="userType!=null">
|
||||||
|
AND sender_type = #{userType}
|
||||||
|
</if>
|
||||||
|
<if test="senderAccount">
|
||||||
|
AND sender_account = #{senderAccount}
|
||||||
|
</if>
|
||||||
LIMIT #{currentPage},#{items}
|
LIMIT #{currentPage},#{items}
|
||||||
</select>
|
</select>
|
||||||
<select id="totalUserNumber" resultType="java.lang.Long">
|
<select id="totalUserNumber" resultType="java.lang.Long">
|
||||||
SELECT count(tenant_id)
|
SELECT count(tenant_id)
|
||||||
FROM `xhpc_message_board_receive_user`
|
FROM `xhpc_message_board_receive_user`
|
||||||
WHERE tenant_id = #{tenantId}
|
WHERE tenant_id = #{tenantId}
|
||||||
AND tenant_type = #{tenantType}
|
AND tenant_type = #{tenantType}
|
||||||
AND del_flag IS NULL
|
AND del_flag IS NULL
|
||||||
AND have_new_info = 0
|
AND have_new_info = 0
|
||||||
|
<if test="userType!=null">
|
||||||
|
AND sender_type = #{userType}
|
||||||
|
</if>
|
||||||
|
<if test="senderAccount">
|
||||||
|
AND sender_account = #{senderAccount}
|
||||||
|
</if>
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
Loading…
x
Reference in New Issue
Block a user