5 changed files with 95 additions and 7 deletions
@ -1,30 +1,43 @@
|
||||
package net.sopod.soim.router.service; |
||||
|
||||
import lombok.AllArgsConstructor; |
||||
import net.sopod.soim.router.api.service.MessageRouteService; |
||||
import net.sopod.soim.router.cache.RouterUser; |
||||
import net.sopod.soim.router.cache.RouterUserStorage; |
||||
import org.apache.dubbo.config.annotation.DubboService; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.Iterator; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* MessageRouterServiceImpl |
||||
* 路由聊天消息 |
||||
* |
||||
* @author tmy |
||||
* @date 2022-06-05 11:30 |
||||
*/ |
||||
@DubboService |
||||
@AllArgsConstructor |
||||
public class MessageRouteServiceImpl implements MessageRouteService { |
||||
|
||||
private RouterUserService routerUserService; |
||||
|
||||
@Override |
||||
public List<Boolean> routeGroupMessage(List<Long> uids, String message) { |
||||
// TODO
|
||||
RouterUserStorage storage = RouterUserStorage.getInstance(); |
||||
for (Long uid : uids) { |
||||
RouterUser routerUser = storage.get(uid); |
||||
|
||||
List<Boolean> results = new ArrayList<>(uids.size()); |
||||
Iterator<Long> iterator = uids.iterator(); |
||||
for (int i = 0; iterator.hasNext(); i++) { |
||||
RouterUser routerUser = storage.get(iterator.next()); |
||||
if (routerUser == null) { |
||||
results.set(i, false); |
||||
continue; |
||||
} |
||||
Boolean success = routerUserService.routeGroupMessage(routerUser, message); |
||||
results.set(i, Boolean.TRUE.equals(success)); |
||||
} |
||||
return null; |
||||
return results; |
||||
} |
||||
|
||||
} |
||||
|
||||
@ -0,0 +1,37 @@
|
||||
package net.sopod.soim.router.service; |
||||
|
||||
import net.sopod.soim.common.util.ImClock; |
||||
import net.sopod.soim.entry.api.service.TextChatService; |
||||
import net.sopod.soim.logic.common.model.TextChat; |
||||
import net.sopod.soim.logic.common.util.RpcContextUtil; |
||||
import net.sopod.soim.router.cache.RouterUser; |
||||
import org.apache.dubbo.config.annotation.DubboReference; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
/** |
||||
* RouterUserService |
||||
* |
||||
* @author tmy |
||||
* @date 2022-06-06 9:34 |
||||
*/ |
||||
@Service |
||||
public class RouterUserService { |
||||
|
||||
@DubboReference |
||||
private TextChatService textChatService; |
||||
|
||||
public void routeChatMessage(RouterUser routerUser, String message) { |
||||
|
||||
} |
||||
|
||||
public Boolean routeGroupMessage(RouterUser receiverUser, String message) { |
||||
RpcContextUtil.setContextUid(receiverUser.getUid()); |
||||
TextChat textChat = new TextChat() |
||||
.setReceiverUid(receiverUser.getUid()) |
||||
.setMessage(message) |
||||
.setTime(ImClock.millis()) |
||||
.setReceiverName(receiverUser.getAccount()); |
||||
return textChatService.sendTextChat(textChat); |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue