1
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
package com.ruoyi.jarvis.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 企微 inbound 消息追踪 wecom_inbound_trace
|
||||
*/
|
||||
public class WeComInboundTrace extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
@Excel(name = "消息ID")
|
||||
private String msgId;
|
||||
|
||||
@Excel(name = "AgentID")
|
||||
private String agentId;
|
||||
|
||||
@Excel(name = "CorpId")
|
||||
private String corpId;
|
||||
|
||||
@Excel(name = "发送人UserID")
|
||||
private String fromUserName;
|
||||
|
||||
private String content;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@Excel(name = "微信发送时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date wxMsgTime;
|
||||
|
||||
private String replyContent;
|
||||
|
||||
@Excel(name = "会话进行中", readConverterExp = "0=否,1=是")
|
||||
private Integer sessionActive;
|
||||
|
||||
@Excel(name = "会话场景")
|
||||
private String sessionScene;
|
||||
|
||||
@Excel(name = "会话步骤")
|
||||
private String sessionStep;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getMsgId() {
|
||||
return msgId;
|
||||
}
|
||||
|
||||
public void setMsgId(String msgId) {
|
||||
this.msgId = msgId;
|
||||
}
|
||||
|
||||
public String getAgentId() {
|
||||
return agentId;
|
||||
}
|
||||
|
||||
public void setAgentId(String agentId) {
|
||||
this.agentId = agentId;
|
||||
}
|
||||
|
||||
public String getCorpId() {
|
||||
return corpId;
|
||||
}
|
||||
|
||||
public void setCorpId(String corpId) {
|
||||
this.corpId = corpId;
|
||||
}
|
||||
|
||||
public String getFromUserName() {
|
||||
return fromUserName;
|
||||
}
|
||||
|
||||
public void setFromUserName(String fromUserName) {
|
||||
this.fromUserName = fromUserName;
|
||||
}
|
||||
|
||||
public String getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public Date getWxMsgTime() {
|
||||
return wxMsgTime;
|
||||
}
|
||||
|
||||
public void setWxMsgTime(Date wxMsgTime) {
|
||||
this.wxMsgTime = wxMsgTime;
|
||||
}
|
||||
|
||||
public String getReplyContent() {
|
||||
return replyContent;
|
||||
}
|
||||
|
||||
public void setReplyContent(String replyContent) {
|
||||
this.replyContent = replyContent;
|
||||
}
|
||||
|
||||
public Integer getSessionActive() {
|
||||
return sessionActive;
|
||||
}
|
||||
|
||||
public void setSessionActive(Integer sessionActive) {
|
||||
this.sessionActive = sessionActive;
|
||||
}
|
||||
|
||||
public String getSessionScene() {
|
||||
return sessionScene;
|
||||
}
|
||||
|
||||
public void setSessionScene(String sessionScene) {
|
||||
this.sessionScene = sessionScene;
|
||||
}
|
||||
|
||||
public String getSessionStep() {
|
||||
return sessionStep;
|
||||
}
|
||||
|
||||
public void setSessionStep(String sessionStep) {
|
||||
this.sessionStep = sessionStep;
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,8 @@ public class WeComInboundRequest {
|
||||
private String toUserName;
|
||||
private String agentId;
|
||||
private String msgId;
|
||||
/** 企微 XML CreateTime,秒级 Unix 时间戳(wxSend 传入) */
|
||||
private Long wxCreateTime;
|
||||
|
||||
public String getFromUserName() {
|
||||
return fromUserName;
|
||||
@@ -55,4 +57,12 @@ public class WeComInboundRequest {
|
||||
public void setMsgId(String msgId) {
|
||||
this.msgId = msgId;
|
||||
}
|
||||
|
||||
public Long getWxCreateTime() {
|
||||
return wxCreateTime;
|
||||
}
|
||||
|
||||
public void setWxCreateTime(Long wxCreateTime) {
|
||||
this.wxCreateTime = wxCreateTime;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.ruoyi.jarvis.mapper;
|
||||
|
||||
import com.ruoyi.jarvis.domain.WeComInboundTrace;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface WeComInboundTraceMapper {
|
||||
|
||||
int insertWeComInboundTrace(WeComInboundTrace trace);
|
||||
|
||||
WeComInboundTrace selectWeComInboundTraceById(Long id);
|
||||
|
||||
List<WeComInboundTrace> selectWeComInboundTraceList(WeComInboundTrace query);
|
||||
|
||||
int deleteWeComInboundTraceByIds(Long[] ids);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.ruoyi.jarvis.service;
|
||||
|
||||
import com.ruoyi.jarvis.domain.WeComInboundTrace;
|
||||
import com.ruoyi.jarvis.domain.dto.WeComInboundRequest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IWeComInboundTraceService {
|
||||
|
||||
void recordInbound(WeComInboundRequest request, String reply);
|
||||
|
||||
WeComInboundTrace selectWeComInboundTraceById(Long id);
|
||||
|
||||
List<WeComInboundTrace> selectWeComInboundTraceList(WeComInboundTrace query);
|
||||
|
||||
int deleteWeComInboundTraceByIds(Long[] ids);
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.ruoyi.jarvis.service.impl;
|
||||
|
||||
import com.ruoyi.jarvis.domain.WeComInboundTrace;
|
||||
import com.ruoyi.jarvis.domain.dto.WeComChatSession;
|
||||
import com.ruoyi.jarvis.domain.dto.WeComInboundRequest;
|
||||
import com.ruoyi.jarvis.mapper.WeComInboundTraceMapper;
|
||||
import com.ruoyi.jarvis.service.IWeComChatSessionService;
|
||||
import com.ruoyi.jarvis.service.IWeComInboundTraceService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class WeComInboundTraceServiceImpl implements IWeComInboundTraceService {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(WeComInboundTraceServiceImpl.class);
|
||||
|
||||
@Resource
|
||||
private WeComInboundTraceMapper weComInboundTraceMapper;
|
||||
@Resource
|
||||
private IWeComChatSessionService weComChatSessionService;
|
||||
|
||||
@Override
|
||||
public void recordInbound(WeComInboundRequest request, String reply) {
|
||||
if (request == null || !StringUtils.hasText(request.getFromUserName())) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
String from = request.getFromUserName().trim();
|
||||
WeComInboundTrace trace = new WeComInboundTrace();
|
||||
trace.setMsgId(request.getMsgId());
|
||||
trace.setAgentId(request.getAgentId());
|
||||
trace.setCorpId(request.getToUserName());
|
||||
trace.setFromUserName(from);
|
||||
trace.setContent(request.getContent());
|
||||
Long wxSec = request.getWxCreateTime();
|
||||
if (wxSec != null && wxSec > 0) {
|
||||
trace.setWxMsgTime(new Date(wxSec * 1000L));
|
||||
}
|
||||
trace.setReplyContent(reply != null ? reply : "");
|
||||
|
||||
WeComChatSession session = weComChatSessionService.get(from);
|
||||
trace.setSessionActive(session != null ? 1 : 0);
|
||||
if (session != null) {
|
||||
trace.setSessionScene(session.getScene());
|
||||
trace.setSessionStep(session.getStep());
|
||||
}
|
||||
weComInboundTraceMapper.insertWeComInboundTrace(trace);
|
||||
} catch (Exception e) {
|
||||
log.warn("企微消息追踪落库失败: {}", e.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public WeComInboundTrace selectWeComInboundTraceById(Long id) {
|
||||
return weComInboundTraceMapper.selectWeComInboundTraceById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WeComInboundTrace> selectWeComInboundTraceList(WeComInboundTrace query) {
|
||||
return weComInboundTraceMapper.selectWeComInboundTraceList(query);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int deleteWeComInboundTraceByIds(Long[] ids) {
|
||||
return weComInboundTraceMapper.deleteWeComInboundTraceByIds(ids);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user