if(StrUtil.isNotEmpty(en.getAcceptUser())){ //客服给用户发的消息 HashMap<String, Object> map = new HashMap<>(); map.put("type","CustomerService"); map.put("msg",en.getContent()); //发送消息 socketServer.sendInfo(map,en.getAcceptUser());这段代码什么意思
时间: 2024-03-07 08:54:15 浏览: 26
这段代码是Java语言中的条件语句和方法调用,大致意思是当"en.getAcceptUser()"不为空时,执行以下操作:创建一个名为"map"的HashMap对象,并向其中添加键值对"type"和"msg",然后将该对象和"en.getAcceptUser()"作为参数传递给名为"socketServer"的对象的"sendInfo"方法。
具体来说,这段代码可能是在客服向用户发送消息时使用的。如果"en.getAcceptUser()"不为空,那么说明有用户正在和客服进行对话,此时客服需要将消息发送给对应的用户。"map"对象中的"type"键值对表示这是一条客服与用户之间的消息,"msg"键值对表示消息的具体内容。"socketServer"是一个用于处理消息发送的对象,"sendInfo"方法接受两个参数,第一个参数是包含消息内容的HashMap对象,第二个参数是接收方的ID,即用户的ID。因此,这段代码的实际作用是向正在与客服对话的用户发送一条消息。
相关问题
@Override public void sendMsg(BusMessageList en) { en.setSendUser(UserUtil.getUserId()); en.setIsRead("N"); baseMapper.insert(en); try { if(StrUtil.isNotEmpty(en.getAcceptUser())){ //客服给用户发的消息 HashMap<String, Object> map = new HashMap<>(); map.put("type","CustomerService"); map.put("msg",en.getContent()); //发送消息 socketServer.sendInfo(map,en.getAcceptUser()); }else{ //用户给客服发的消息 HashMap<String, Object> map = new HashMap<>(); map.put("type","CustomerServiceAll"); map.put("msg",en.getContent()); socketServer.sendAll(map); } } catch (IOException e) { e.printStackTrace(); } }
这是一个Java方法,它接收一个BusMessageList类型的参数en,并将其插入到数据库中。然后,它根据en对象中的接收用户信息判断是客服给用户发的消息还是用户给客服发的消息,然后将消息内容和类型封装成一个HashMap对象map,调用socketServer对象的sendInfo或sendAll方法发送消息。如果发送消息的过程中发生IOException异常,它将打印异常堆栈信息。
优化这段代码:List<CompletableFuture<Map<String, Object>>> futureList = new ArrayList<>(); for (PersonBasicVo person : personList) { CompletableFuture<Map<String, Object>> future = CompletableFuture.supplyAsync(() -> { String personNo = person.getPersonNo(); List<ContactsBasic> contactsList = contactsService.list(Wrappers.lambdaQuery(ContactsBasic.class) .eq(ContactsBasic::getPersonNo, personNo) .ne(ContactsBasic::getRelationshipAccount, "") .isNotNull(ContactsBasic::getPersonNo) .like(StrUtil.isNotBlank(phone), ContactsBasic::getRelationshipAccount, phone)); if (CollUtil.isNotEmpty(contactsList)) { Map<String, Object> contactsMap = new HashMap<>(); contactsMap.put("personNo", personNo); contactsMap.put("contactsList", contactsList); return contactsMap; } else { return null; } }, executor); futureList.add(future); } List<Map<String, Object>> contactsMapList = futureList.stream() .map(CompletableFuture::join) .filter(Objects::nonNull) .collect(Collectors.toList());
优化后的代码如下:
```java
List<CompletableFuture<Map<String, Object>>> futureList = personList.stream()
.map(person -> CompletableFuture.supplyAsync(() -> {
String personNo = person.getPersonNo();
List<ContactsBasic> contactsList = contactsService.list(Wrappers.lambdaQuery(ContactsBasic.class)
.eq(ContactsBasic::getPersonNo, personNo)
.ne(ContactsBasic::getRelationshipAccount, "")
.isNotNull(ContactsBasic::getPersonNo)
.like(StrUtil.isNotBlank(phone), ContactsBasic::getRelationshipAccount, phone));
if (CollUtil.isNotEmpty(contactsList)) {
Map<String, Object> contactsMap = new HashMap<>();
contactsMap.put("personNo", personNo);
contactsMap.put("contactsList", contactsList);
return contactsMap;
} else {
return null;
}
}, executor))
.collect(Collectors.toList());
List<Map<String, Object>> contactsMapList = futureList.stream()
.map(CompletableFuture::join)
.filter(Objects::nonNull)
.collect(Collectors.toList());
```
主要优化:
1. 使用流式编程,替换原来的for循环。
2. 使用`stream()`和`collect(Collectors.toList())`方法来收集结果,代替手动添加到列表中。
3. 将lambda表达式内联,使代码更简洁。