5 changed files with 95 additions and 7 deletions
@ -1,30 +1,43 @@ |
|||||||
package net.sopod.soim.router.service; |
package net.sopod.soim.router.service; |
||||||
|
|
||||||
|
import lombok.AllArgsConstructor; |
||||||
import net.sopod.soim.router.api.service.MessageRouteService; |
import net.sopod.soim.router.api.service.MessageRouteService; |
||||||
import net.sopod.soim.router.cache.RouterUser; |
import net.sopod.soim.router.cache.RouterUser; |
||||||
import net.sopod.soim.router.cache.RouterUserStorage; |
import net.sopod.soim.router.cache.RouterUserStorage; |
||||||
import org.apache.dubbo.config.annotation.DubboService; |
import org.apache.dubbo.config.annotation.DubboService; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
import java.util.Iterator; |
||||||
import java.util.List; |
import java.util.List; |
||||||
|
|
||||||
/** |
/** |
||||||
* MessageRouterServiceImpl |
* MessageRouterServiceImpl |
||||||
|
* 路由聊天消息 |
||||||
* |
* |
||||||
* @author tmy |
* @author tmy |
||||||
* @date 2022-06-05 11:30 |
* @date 2022-06-05 11:30 |
||||||
*/ |
*/ |
||||||
@DubboService |
@DubboService |
||||||
|
@AllArgsConstructor |
||||||
public class MessageRouteServiceImpl implements MessageRouteService { |
public class MessageRouteServiceImpl implements MessageRouteService { |
||||||
|
|
||||||
|
private RouterUserService routerUserService; |
||||||
|
|
||||||
@Override |
@Override |
||||||
public List<Boolean> routeGroupMessage(List<Long> uids, String message) { |
public List<Boolean> routeGroupMessage(List<Long> uids, String message) { |
||||||
// TODO
|
|
||||||
RouterUserStorage storage = RouterUserStorage.getInstance(); |
RouterUserStorage storage = RouterUserStorage.getInstance(); |
||||||
for (Long uid : uids) { |
List<Boolean> results = new ArrayList<>(uids.size()); |
||||||
RouterUser routerUser = storage.get(uid); |
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