|
@@ -0,0 +1,90 @@
|
|
|
+package com.citu.module.menduner.im.service.wukong;
|
|
|
+
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.citu.framework.common.pojo.CommonResult;
|
|
|
+import com.citu.module.menduner.im.dal.dataobject.UserMsgDO;
|
|
|
+import com.citu.module.menduner.im.dal.mysql.UserMsgMapper;
|
|
|
+import com.citu.module.menduner.im.dal.mysql.UserOnlineMapper;
|
|
|
+import com.google.common.collect.ImmutableMap;
|
|
|
+import com.google.common.collect.ImmutableMultimap;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+@Service
|
|
|
+@Slf4j
|
|
|
+public class WukongWebhookServiceImpl implements WukongWebhookService{
|
|
|
+
|
|
|
+ UserMsgMapper userMsgMapper;
|
|
|
+
|
|
|
+ UserOnlineMapper userOnlineMapper;
|
|
|
+
|
|
|
+
|
|
|
+ private final Map<String,EventHandle> eventHandleMap = new HashMap<>(ImmutableMap.of("msg.notify", new UserMsgEventHandle(),"user.onlinestatus",new UserOnlineEventHandle()));
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult wukongWebhook(String event, String reqVo) {
|
|
|
+ EventHandle eventHandle = eventHandleMap.get(event);
|
|
|
+ if(null != eventHandle){
|
|
|
+ log.debug("处理webhook事件");
|
|
|
+ eventHandle.handle(reqVo);
|
|
|
+ }
|
|
|
+ return CommonResult.success("");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ interface EventHandle{
|
|
|
+
|
|
|
+
|
|
|
+ void handle(String reqVo);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ class UserMsgEventHandle implements EventHandle{
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void handle(String reqVo) {
|
|
|
+ List<Map> msg =new ArrayList<>();
|
|
|
+
|
|
|
+ if(reqVo.startsWith("[")){
|
|
|
+ msg = JSON.parseArray(reqVo, Map.class);
|
|
|
+ }else {
|
|
|
+ msg.add(JSON.parseObject(reqVo, Map.class));
|
|
|
+ }
|
|
|
+
|
|
|
+ List<UserMsgDO> userMsgDOs =new ArrayList<>(msg.size()+1);
|
|
|
+ for (Map map : msg) {
|
|
|
+ userMsgDOs.add( BeanUtil.mapToBean(map, UserMsgDO.class, true));
|
|
|
+ }
|
|
|
+ userMsgMapper.insertBatch(userMsgDOs);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ class UserOnlineEventHandle implements EventHandle{
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void handle(String reqVo) {
|
|
|
+ log.info("收到用户上下线通知,{}", reqVo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setUserMsgMapper(UserMsgMapper userMsgMapper) {
|
|
|
+ this.userMsgMapper = userMsgMapper;
|
|
|
+ }
|
|
|
+ @Autowired
|
|
|
+ public void setUserOnlineMapper(UserOnlineMapper userOnlineMapper) {
|
|
|
+ this.userOnlineMapper = userOnlineMapper;
|
|
|
+ }
|
|
|
+}
|