后台获取用户列表
This commit is contained in:
parent
0fbcb50b44
commit
a79e0ef66e
@ -1,9 +1,11 @@
|
|||||||
package com.syzb.group.controller.admin;
|
package com.syzb.group.controller.admin;
|
||||||
|
|
||||||
import com.syzb.common.handler.BizException;
|
import com.syzb.common.handler.BizException;
|
||||||
|
import com.syzb.common.query.OnlyIdPageQuery;
|
||||||
import com.syzb.common.query.OnlyIdQuery;
|
import com.syzb.common.query.OnlyIdQuery;
|
||||||
import com.syzb.common.result.AppPager;
|
import com.syzb.common.result.AppPager;
|
||||||
import com.syzb.common.result.CommonResult;
|
import com.syzb.common.result.CommonResult;
|
||||||
|
import com.syzb.common.result.Pager;
|
||||||
import com.syzb.common.result.ResponseStatus;
|
import com.syzb.common.result.ResponseStatus;
|
||||||
import com.syzb.common.vo.BackendUserVO;
|
import com.syzb.common.vo.BackendUserVO;
|
||||||
import com.syzb.common.vo.OnlyIdVO;
|
import com.syzb.common.vo.OnlyIdVO;
|
||||||
@ -58,18 +60,18 @@ public class AdminGroupMessageController {
|
|||||||
|
|
||||||
@ApiOperation("后台获取私聊列表")
|
@ApiOperation("后台获取私聊列表")
|
||||||
@PostMapping("/admin/group/message/getPrivateChatList")
|
@PostMapping("/admin/group/message/getPrivateChatList")
|
||||||
public CommonResult<List<GroupMessageVO>> getPrivateChatList(@Validated @RequestBody @ApiParam(required = true) OnlyIdQuery query,
|
public CommonResult<Pager<GroupMessageVO>> getPrivateChatList(@Validated @RequestBody @ApiParam(required = true) OnlyIdPageQuery query,
|
||||||
@RequestAttribute(value = "backendUser", required = false) BackendUserVO backendUserVO) {
|
@RequestAttribute(value = "backendUser", required = false) BackendUserVO backendUserVO) {
|
||||||
List<GroupMessageVO> list = adminGroupMessageService.getPrivateChatList(query, backendUserVO);
|
Pager<GroupMessageVO> page = adminGroupMessageService.getPrivateChatList(query, backendUserVO);
|
||||||
return CommonResult.success(list);
|
return CommonResult.success(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("后台获取用户列表")
|
@ApiOperation("后台获取用户列表")
|
||||||
@PostMapping("/admin/group/message/getCustomerList")
|
@PostMapping("/admin/group/message/getCustomerList")
|
||||||
public CommonResult<List<GroupMessageVO>> getCustomerList(@Validated @RequestBody @ApiParam(required = true) OnlyIdQuery query,
|
public CommonResult<Pager<GroupMessageVO>> getCustomerList(@Validated @RequestBody @ApiParam(required = true) OnlyIdPageQuery query,
|
||||||
@RequestAttribute(value = "backendUser", required = false) BackendUserVO backendUserVO) {
|
@RequestAttribute(value = "backendUser", required = false) BackendUserVO backendUserVO) {
|
||||||
List<GroupMessageVO> list = adminGroupMessageService.getCustomerList(query, backendUserVO);
|
Pager<GroupMessageVO> page = adminGroupMessageService.getCustomerList(query, backendUserVO);
|
||||||
return CommonResult.success(list);
|
return CommonResult.success(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("后台推荐产品消息")
|
@ApiOperation("后台推荐产品消息")
|
||||||
|
|||||||
@ -2,9 +2,12 @@ package com.syzb.group.mapper;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.syzb.common.vo.DateIdVO;
|
import com.syzb.common.vo.DateIdVO;
|
||||||
import com.syzb.group.entity.GroupMessage;
|
import com.syzb.group.entity.GroupMessage;
|
||||||
|
import com.syzb.video.entity.VideoLiveExtend;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.apache.ibatis.annotations.Select;
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
|
||||||
@ -27,8 +30,17 @@ public interface GroupMessageMapper extends BaseMapper<GroupMessage> {
|
|||||||
" FROM group_message \n" +
|
" FROM group_message \n" +
|
||||||
" WHERE group_id = #{groupId} AND interactive_type = 2 and private_user_id is not null \n" +
|
" WHERE group_id = #{groupId} AND interactive_type = 2 and private_user_id is not null \n" +
|
||||||
") t \n" +
|
") t \n" +
|
||||||
|
"${ew.customSqlSegment}")
|
||||||
|
<E extends IPage<GroupMessage>> E selectPrivateChatPage(@Param("groupId") Integer groupId, Page<?> page, @Param(Constants.WRAPPER) Wrapper<?> wrapper);
|
||||||
|
|
||||||
|
@Select("SELECT id, private_user_id \n" +
|
||||||
|
"FROM ( \n" +
|
||||||
|
" SELECT id, private_user_id, ROW_NUMBER() OVER (PARTITION BY private_user_id ORDER BY id DESC) as rn \n" +
|
||||||
|
" FROM group_message \n" +
|
||||||
|
" WHERE group_id = #{groupId} AND interactive_type = 2 and private_user_id in (${userIds}) \n" +
|
||||||
|
") t \n" +
|
||||||
"WHERE rn = 1")
|
"WHERE rn = 1")
|
||||||
List<GroupMessage> selectPrivateChatList(@Param("groupId") Integer groupId);
|
List<GroupMessage> selectPrivateChatList(@Param("groupId") Integer groupId, @Param("userIds") String userIds);
|
||||||
|
|
||||||
@Select("SELECT group_id, interactive_type, user_type, COUNT(0) AS id \n" +
|
@Select("SELECT group_id, interactive_type, user_type, COUNT(0) AS id \n" +
|
||||||
"FROM group_message \n" +
|
"FROM group_message \n" +
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.google.common.base.Functions;
|
import com.google.common.base.Functions;
|
||||||
import com.hazelcast.core.HazelcastInstance;
|
import com.hazelcast.core.HazelcastInstance;
|
||||||
import com.hazelcast.map.IMap;
|
import com.hazelcast.map.IMap;
|
||||||
@ -17,8 +18,10 @@ import com.syzb.common.config.cache.CacheKey;
|
|||||||
import com.syzb.common.constant.IsOrNot;
|
import com.syzb.common.constant.IsOrNot;
|
||||||
import com.syzb.common.constant.ProductType;
|
import com.syzb.common.constant.ProductType;
|
||||||
import com.syzb.common.handler.BizException;
|
import com.syzb.common.handler.BizException;
|
||||||
|
import com.syzb.common.query.OnlyIdPageQuery;
|
||||||
import com.syzb.common.query.OnlyIdQuery;
|
import com.syzb.common.query.OnlyIdQuery;
|
||||||
import com.syzb.common.result.AppPager;
|
import com.syzb.common.result.AppPager;
|
||||||
|
import com.syzb.common.result.Pager;
|
||||||
import com.syzb.common.result.ResponseStatus;
|
import com.syzb.common.result.ResponseStatus;
|
||||||
import com.syzb.common.service.CommentBlackService;
|
import com.syzb.common.service.CommentBlackService;
|
||||||
import com.syzb.common.state.StateMachine;
|
import com.syzb.common.state.StateMachine;
|
||||||
@ -44,6 +47,7 @@ import javax.annotation.Resource;
|
|||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class AdminGroupMessageService {
|
public class AdminGroupMessageService {
|
||||||
@ -182,33 +186,45 @@ public class AdminGroupMessageService {
|
|||||||
return new AppPager<>(voList, hasNext);
|
return new AppPager<>(voList, hasNext);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<GroupMessageVO> getPrivateChatList(OnlyIdQuery query, BackendUserVO backendUserVO) {
|
public Pager<GroupMessageVO> getPrivateChatList(OnlyIdPageQuery query, BackendUserVO backendUserVO) {
|
||||||
Integer groupId = query.getId();
|
Integer groupId = query.getId();
|
||||||
List<GroupMessage> list = groupMessageMapper.selectPrivateChatList(groupId);
|
QueryWrapper<GroupMessage> wrapper = Wrappers.<GroupMessage>query()
|
||||||
|
.eq("rn", 1)
|
||||||
|
.orderByDesc("id");
|
||||||
|
Page<GroupMessage> page = groupMessageMapper.selectPrivateChatPage(groupId, query.toPage(), wrapper);
|
||||||
|
List<GroupMessage> list = page.getRecords();
|
||||||
Map<Integer, AdvisorBasicVO> advisorMap = advisorInfoService.getAdvisorVoMap();
|
Map<Integer, AdvisorBasicVO> advisorMap = advisorInfoService.getAdvisorVoMap();
|
||||||
return list.stream().map(GroupMessage::getId).map(id -> groupCacheService.getMessage(id, advisorMap)).collect(Collectors.toList());
|
List<GroupMessageVO> voList = list.stream().map(GroupMessage::getId).map(id -> groupCacheService.getMessage(id, advisorMap)).collect(Collectors.toList());
|
||||||
|
return new Pager<>(voList, page.getTotal());
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<GroupMessageVO> getCustomerList(OnlyIdQuery query, BackendUserVO backendUserVO) {
|
public Pager<GroupMessageVO> getCustomerList(OnlyIdPageQuery query, BackendUserVO backendUserVO) {
|
||||||
Integer groupId = query.getId();
|
Integer groupId = query.getId();
|
||||||
Set<Integer> moduleIdSet = groupCommonService.getModuleIds(groupId);
|
Set<Integer> moduleIdSet = groupCommonService.getModuleIds(groupId);
|
||||||
if (CollUtil.isEmpty(moduleIdSet)) {
|
if (CollUtil.isEmpty(moduleIdSet)) {
|
||||||
return Collections.emptyList();
|
return Pager.emptyPager();
|
||||||
}
|
}
|
||||||
LambdaQueryWrapper<ModuleUser> wrapper = Wrappers.<ModuleUser>lambdaQuery()
|
LambdaQueryWrapper<ModuleUser> wrapper = Wrappers.<ModuleUser>lambdaQuery()
|
||||||
.select(ModuleUser::getUserId)
|
.select(ModuleUser::getUserId)
|
||||||
.in(ModuleUser::getModuleId, moduleIdSet)
|
.in(ModuleUser::getModuleId, moduleIdSet)
|
||||||
.orderByDesc(ModuleUser::getCreateTime);
|
.orderByDesc(ModuleUser::getCreateTime);
|
||||||
List<ModuleUser> moduleUserList = moduleUserMapper.selectList(wrapper);
|
Page<ModuleUser> page = moduleUserMapper.selectPage(query.toPage(), wrapper);
|
||||||
if (CollUtil.isEmpty(moduleUserList)) {
|
if (CollUtil.isEmpty(page.getRecords())) {
|
||||||
return Collections.emptyList();
|
return new Pager<>(Collections.emptyList(), page.getTotal());
|
||||||
}
|
}
|
||||||
List<GroupMessageVO> privateChatList = getPrivateChatList(query, backendUserVO);
|
List<String> userIdList = page.getRecords().stream().map(ModuleUser::getUserId).collect(Collectors.toList());
|
||||||
Map<Integer, GroupMessageVO> privateChatMap = privateChatList.stream().collect(Collectors.toMap(GroupMessageVO::getId, Functions.identity()));
|
String userIds = userIdList.stream().map(userId -> "'" + userId + "'").collect(Collectors.joining(","));
|
||||||
return moduleUserList.stream().map(moduleUser -> {
|
List<GroupMessage> privateChatList = groupMessageMapper.selectPrivateChatList(groupId, userIds);
|
||||||
String userId = moduleUser.getUserId();
|
Map<String, GroupMessage> privateChatMap = privateChatList.stream().collect(Collectors.toMap(GroupMessage::getPrivateUserId, Functions.identity()));
|
||||||
return privateChatMap.getOrDefault(userId, new GroupMessageVO(userId));
|
Map<Integer, AdvisorBasicVO> advisorMap = advisorInfoService.getAdvisorVoMap();
|
||||||
|
List<GroupMessageVO> voList = userIdList.stream().map(userId -> {
|
||||||
|
GroupMessage groupMessage = privateChatMap.get(userId);
|
||||||
|
if (groupMessage == null) {
|
||||||
|
return new GroupMessageVO(userId);
|
||||||
|
}
|
||||||
|
return groupCacheService.getMessage(groupMessage.getId(), advisorMap);
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
|
return new Pager<>(voList, page.getTotal());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user