|
@@ -12,6 +12,11 @@ import com.sqx.modules.gameChat.service.ChatContentTcwmService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
+import java.util.HashMap;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
+
|
|
|
|
|
|
|
|
@Service
|
|
@Service
|
|
|
public class ChatContentTcwmServiceImpl extends ServiceImpl<ChatContentTcwmDao, ChatContentTcwm> implements ChatContentTcwmService {
|
|
public class ChatContentTcwmServiceImpl extends ServiceImpl<ChatContentTcwmDao, ChatContentTcwm> implements ChatContentTcwmService {
|
|
@@ -39,20 +44,54 @@ public class ChatContentTcwmServiceImpl extends ServiceImpl<ChatContentTcwmDao,
|
|
|
public Result selectOrdersChatPage(Integer page, Integer limit, Long userId, Long riderId, Long shopId) {
|
|
public Result selectOrdersChatPage(Integer page, Integer limit, Long userId, Long riderId, Long shopId) {
|
|
|
Page<ChatContentTcwm> pages = new Page(page, limit);
|
|
Page<ChatContentTcwm> pages = new Page(page, limit);
|
|
|
IPage<ChatContentTcwm> chatContentTcwmIPage = chatContentTcwmDao.selectOrdersChatPage(pages, userId, riderId, shopId);
|
|
IPage<ChatContentTcwm> chatContentTcwmIPage = chatContentTcwmDao.selectOrdersChatPage(pages, userId, riderId, shopId);
|
|
|
- for(int i = 0;i<chatContentTcwmIPage.getRecords().size();i++){
|
|
|
|
|
- if(userId!=null){
|
|
|
|
|
- int userUnread = chatContentTcwmDao.selectUnreadCount(chatContentTcwmIPage.getRecords().get(i).getOrdersId(), 1);
|
|
|
|
|
- chatContentTcwmIPage.getRecords().get(i).setUserUnread(userUnread);
|
|
|
|
|
|
|
+ List<Long> orderList = chatContentTcwmIPage.getRecords().stream().map(ChatContentTcwm::getOrdersId).collect(Collectors.toList());
|
|
|
|
|
+ if (orderList.size()>0) {
|
|
|
|
|
+ // 2. 批量查询各类用户的未读数(3次数据库查询替代原来的3N次)
|
|
|
|
|
+ Map<Long, Integer> userUnreadMap = new HashMap<>();
|
|
|
|
|
+ Map<Long, Integer> riderUnreadMap = new HashMap<>();
|
|
|
|
|
+ Map<Long, Integer> shopUnreadMap = new HashMap<>();
|
|
|
|
|
+
|
|
|
|
|
+ if (userId != null) {
|
|
|
|
|
+ List<ChatContentTcwm> userUnreadList = chatContentTcwmDao.selectUnreadCountList(orderList,1);
|
|
|
|
|
+ userUnreadMap=userUnreadList.stream().collect(Collectors.toMap(
|
|
|
|
|
+ ChatContentTcwm::getOrdersId,
|
|
|
|
|
+ ChatContentTcwm::getCount
|
|
|
|
|
+ ));
|
|
|
}
|
|
}
|
|
|
if(riderId!=null){
|
|
if(riderId!=null){
|
|
|
- int riderUnread = chatContentTcwmDao.selectUnreadCount(chatContentTcwmIPage.getRecords().get(i).getOrdersId(), 2);
|
|
|
|
|
- chatContentTcwmIPage.getRecords().get(i).setRiderUnread(riderUnread);
|
|
|
|
|
|
|
+ List<ChatContentTcwm> riderUnreadList = chatContentTcwmDao.selectUnreadCountList(orderList,2);
|
|
|
|
|
+ riderUnreadMap=riderUnreadList.stream().collect(Collectors.toMap(
|
|
|
|
|
+ ChatContentTcwm::getOrdersId,
|
|
|
|
|
+ ChatContentTcwm::getCount
|
|
|
|
|
+ ));
|
|
|
}
|
|
}
|
|
|
if(shopId!=null){
|
|
if(shopId!=null){
|
|
|
- int shopUnread = chatContentTcwmDao.selectUnreadCount(chatContentTcwmIPage.getRecords().get(i).getOrdersId(), 3);
|
|
|
|
|
- chatContentTcwmIPage.getRecords().get(i).setShopUnread(shopUnread);
|
|
|
|
|
|
|
+ List<ChatContentTcwm> shopUnreadList = chatContentTcwmDao.selectUnreadCountList(orderList,3);
|
|
|
|
|
+ shopUnreadMap=shopUnreadList.stream().collect(Collectors.toMap(
|
|
|
|
|
+ ChatContentTcwm::getOrdersId,
|
|
|
|
|
+ ChatContentTcwm::getCount
|
|
|
|
|
+ ));
|
|
|
|
|
+ }
|
|
|
|
|
+ for(int i = 0;i<chatContentTcwmIPage.getRecords().size();i++){
|
|
|
|
|
+ if(userId!=null){
|
|
|
|
|
+// int userUnread = chatContentTcwmDao.selectUnreadCount(chatContentTcwmIPage.getRecords().get(i).getOrdersId(), 1);
|
|
|
|
|
+// chatContentTcwmIPage.getRecords().get(i).setUserUnread(userUnread);
|
|
|
|
|
+ chatContentTcwmIPage.getRecords().get(i).setUserUnread(userUnreadMap.get(chatContentTcwmIPage.getRecords().get(i).getOrdersId()));
|
|
|
|
|
+ }
|
|
|
|
|
+ if(riderId!=null){
|
|
|
|
|
+// int riderUnread = chatContentTcwmDao.selectUnreadCount(chatContentTcwmIPage.getRecords().get(i).getOrdersId(), 2);
|
|
|
|
|
+// chatContentTcwmIPage.getRecords().get(i).setRiderUnread(riderUnread);
|
|
|
|
|
+ chatContentTcwmIPage.getRecords().get(i).setUserUnread(riderUnreadMap.get(chatContentTcwmIPage.getRecords().get(i).getOrdersId()));
|
|
|
|
|
+ }
|
|
|
|
|
+ if(shopId!=null){
|
|
|
|
|
+// int shopUnread = chatContentTcwmDao.selectUnreadCount(chatContentTcwmIPage.getRecords().get(i).getOrdersId(), 3);
|
|
|
|
|
+// chatContentTcwmIPage.getRecords().get(i).setShopUnread(shopUnread);
|
|
|
|
|
+ chatContentTcwmIPage.getRecords().get(i).setUserUnread(shopUnreadMap.get(chatContentTcwmIPage.getRecords().get(i).getOrdersId()));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
PageUtils pageUtils = new PageUtils(chatContentTcwmIPage);
|
|
PageUtils pageUtils = new PageUtils(chatContentTcwmIPage);
|
|
|
return Result.success().put("data", pageUtils);
|
|
return Result.success().put("data", pageUtils);
|
|
|
}
|
|
}
|