This commit is contained in:
77
2024-04-13 00:11:25 +08:00
parent faf5ea3137
commit d3bf5a0bf7

View File

@@ -3,12 +3,17 @@ package com.ruoyi.web.controller.cai.app;
import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.cai.domain.UserChatRecord;
import com.ruoyi.cai.executor.ExecutorConstant;
import com.ruoyi.cai.service.UserChatRecordService;
import com.ruoyi.cai.service.UserOnlineService; import com.ruoyi.cai.service.UserOnlineService;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.yunxin.manager.YunxinManager; import com.ruoyi.yunxin.manager.YunxinManager;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StreamUtils; import org.springframework.util.StreamUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@@ -29,6 +34,8 @@ public class YxNotifyController {
private YunxinManager yunxinManager; private YunxinManager yunxinManager;
@Autowired @Autowired
private UserOnlineService onlineService; private UserOnlineService onlineService;
@Autowired
private UserChatRecordService userChatRecordService;
@PostMapping("/notify") @PostMapping("/notify")
@Operation(hidden = true) @Operation(hidden = true)
@@ -55,6 +62,35 @@ public class YxNotifyController {
String accid = body.getString("accid"); String accid = body.getString("accid");
String timestamp = body.getString("timestamp"); String timestamp = body.getString("timestamp");
onlineService.updateOnlineByYunxin(eventType,Long.valueOf(accid),Long.valueOf(timestamp)); onlineService.updateOnlineByYunxin(eventType,Long.valueOf(accid),Long.valueOf(timestamp));
}else if("1".equals(eventType)){ // 会话记录
String convType = body.getString("convType");
String msgType = body.getString("msgType");
if("PICTURE".equals(msgType) && "PERSON".equals(convType)){
String ext = body.getString("ext");
ExecutorConstant.SYNC_EXECUTOR.execute(() -> {
try {
JSONObject extJson = JSON.parseObject(ext);
String recordId = extJson.getString("recordId");
if(StringUtils.isEmpty(recordId)){
log.warn("同步图片忽略recordId为空");
return;
}
UserChatRecord userChatRecord = userChatRecordService.getById(recordId);
if(userChatRecord == null){
log.warn("同步图片忽略recordId未找到记录");
return;
}
String attach = body.getString("attach");
JSONObject attachJson = JSON.parseObject(attach);
String url = attachJson.getString("url");
userChatRecordService.update(Wrappers.lambdaUpdate(UserChatRecord.class)
.eq(UserChatRecord::getId, userChatRecord.getId())
.set(UserChatRecord::getContent, url));
}catch (Exception e){
log.warn("同步图片失败!",e);
}
});
}
} }
return R.ok(); return R.ok();
} }