zoujiajian 1 год назад
Родитель
Сommit
cb853eac94

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/corp/kf/CorpKfServicerStatusChangeRecordMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.corp.kf;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.CorpKfServicerStatusChangeRecord;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: CorpKfServicerStatusChangeRecordMapper
+ * 创建者: JavaZou
+ * 创建时间:2025/2/11 17:15
+ */
+public interface CorpKfServicerStatusChangeRecordMapper extends BaseMapper<CorpKfServicerStatusChangeRecord> {
+}

+ 23 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/CorpKfServicerStatusChangeRecord.java

@@ -0,0 +1,23 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: CorpKfServicerStatusChangeRecord
+ * 创建者: JavaZou
+ * 创建时间:2025/2/11 17:14
+ */
+@Getter
+@Setter
+public class CorpKfServicerStatusChangeRecord extends BaseEntity{
+	private String openKfId;
+
+	private String servicerUserid;
+
+	/**
+	 * 客服状态 0接待中 1.停止接待 2.暂时挂起
+	 */
+	private Integer state;
+}

+ 7 - 0
netflix-dao/src/main/java/com/cyksj/model/kf/WxCpKfMsgListResp.java

@@ -68,5 +68,12 @@ public class WxCpKfMsgListResp {
     private WxCorpFileMsg file;
     //菜单消息
     private WxCorpMenuMsg msgmenu;
+
+    //状态类型。1-接待中 2-停止接待
+    private Integer status;
+
+    //接待人员的状态为「停止接待」的子类型。0:停止接待,1:暂时挂起
+    @JsonProperty("stop_type")
+    private Integer stopType;
   }
 }

+ 30 - 0
netflix-service/src/main/java/com/cyksj/service/corp/impl/CorpServiceImpl.java

@@ -127,6 +127,9 @@ public class CorpServiceImpl implements CorpService {
 	@Autowired
 	private CorpKfUserMapper corpKfUserMapper;
 
+	@Autowired
+	private CorpKfServicerStatusChangeRecordMapper corpKfServicerStatusChangeRecordMapper;
+
 	@PostConstruct
 	private void init() {
 		corpMessageRouter = new CorpMessageRouter(this)
@@ -585,6 +588,10 @@ public class CorpServiceImpl implements CorpService {
 					//进入会话事件
 					enterSessionEvent(corpKfAccount, corpKfAccountSessionConfig, corpId, item);
 				}
+				//接待人员接待状态变更事件
+				if (item.getEvent().getEventType().equals("servicer_status_change")) {
+					recordCorpKfServicerState(openKfId, item);
+				}
 				//会话变更事件
 				if (item.getEvent().getEventType().equals("session_status_change")) {
 					//会话更变事件
@@ -1168,4 +1175,27 @@ public class CorpServiceImpl implements CorpService {
 		}
 		return null;
 	}
+
+	/**
+	 * 接待人员接待状态变更记录
+	 */
+	private void recordCorpKfServicerState(String openKfId, WxCpKfMsgListResp.WxCpKfMsgItem item) {
+		String servicerUserId = item.getServicerUserId();
+		//状态类型。1-接待中 2-停止接待
+		Integer status = item.getStatus();
+		//0:停止接待,1:暂时挂起
+		Integer stopType = item.getStopType();
+		CorpKfServicerStatusChangeRecord corpKfServicerStatusChangeRecord = new CorpKfServicerStatusChangeRecord();
+		corpKfServicerStatusChangeRecord.setOpenKfId(openKfId);
+		corpKfServicerStatusChangeRecord.setServicerUserid(servicerUserId);
+		//客服状态 0接待中 1.停止接待 2.暂时挂起
+		Integer state = 0;
+		if (status == 2) {
+			if (stopType == 0) {
+				state = 1;
+			} else state = 2;
+		}
+		corpKfServicerStatusChangeRecord.setState(state);
+		corpKfServicerStatusChangeRecordMapper.insert(corpKfServicerStatusChangeRecord);
+	}
 }