Kaynağa Gözat

微信客服接待人员状态变更记录展示

zoujiajian 1 yıl önce
ebeveyn
işleme
d57a85b7fa

+ 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;
+}

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/kf/CorpKfServicerResp.java

@@ -29,5 +29,8 @@ public class CorpKfServicerResp {
 
 		//接待人员的接待状态。0:接待中,1:停止接待。
 		private Integer status;
+
+		//接待人员的接待状态为「停止接待」的子类型。0:停止接待,1:暂时挂起
+		private Integer stop_type;
 	}
 }

+ 23 - 0
netflix-dao/src/main/java/com/cyksj/model/response/corp/CorpKfServicerStateViewResp.java

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

+ 44 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CorpKfServicerStatusChangeRecordView.java

@@ -0,0 +1,44 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: CorpKfServicerStatusChangeRecordView
+ * 创建者: JavaZou
+ * 创建时间:2025/2/12 10:30
+ */
+@Getter
+@Setter
+@SearchBean(tables = "corp_kf_servicer_status_change_record cks left join sys_corp_follow_relate sr on sr.follow_id = cks.servicer_userid" +
+		" left join sys_corp_follow sf on sf.id = sr.mid")
+public class CorpKfServicerStatusChangeRecordView {
+	@DbField("cks.id")
+	private Long id;
+
+	@DbField("cks.open_kf_id")
+	private String openKfId;
+
+	@DbField("cks.servicer_userid")
+	private String servicerUserid;
+
+	@DbField("sf.name")
+	private String name;
+
+	@DbField("sr.name")
+	private String followName;
+
+	/**
+	 * 客服状态 0接待中 1.停止接待 2.暂时挂起
+	 */
+	@DbField("cks.state")
+	private Integer state;
+
+	@DbField("cks.created_time")
+	private Date createdTime;
+}

+ 3 - 0
netflix-service/src/main/java/com/cyksj/service/corp/kf/CorpKfService.java

@@ -3,6 +3,7 @@ package com.cyksj.service.corp.kf;
 import com.cyksj.model.entity.CorpKfAccount;
 import com.cyksj.model.entity.CorpKfAccountSessionConfig;
 import com.cyksj.model.request.corp.kf.CorpKfDutyReq;
+import com.cyksj.model.response.corp.CorpKfServicerStateViewResp;
 import com.cyksj.model.views.CorpKfDutyServicersStatusView;
 
 import java.util.List;
@@ -33,4 +34,6 @@ public interface CorpKfService {
 	void transCustomer(String followId, String toFollowId, Integer transNum, List<String> transUserIds, String openKfId) throws Exception;
 
 	List<CorpKfAccount> getCorpKfAccountByUId(long cmsUserId);
+
+	List<CorpKfServicerStateViewResp> getServicerStateList(String openKfId) throws Exception;
 }

+ 29 - 0
netflix-service/src/main/java/com/cyksj/service/corp/kf/impl/CorpKfServiceImpl.java

@@ -18,6 +18,7 @@ import com.cyksj.model.dto.CorpKfChangeFollowLogDto;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.kf.*;
 import com.cyksj.model.request.corp.kf.CorpKfDutyReq;
+import com.cyksj.model.response.corp.CorpKfServicerStateViewResp;
 import com.cyksj.model.views.CorpKfDutyServicersStatusView;
 import com.cyksj.model.views.SysCorpFollowView;
 import com.cyksj.service.corp.WxCorpOps;
@@ -409,6 +410,34 @@ public class CorpKfServiceImpl implements CorpKfService {
 		}).collect(Collectors.toList());
 	}
 
+	@Override
+	public List<CorpKfServicerStateViewResp> getServicerStateList(String openKfId) throws Exception {
+		List<CorpKfServicerStateViewResp> corpKfServicerStateViewResps = new ArrayList<>();
+		CorpKfServicerResp corpKfServicerResp = wxCorpOps.getKfServicerList(yhlxWxCorpConfig.getCorpId(), openKfId);
+		CorpKfServicerStateViewResp corpKfServicerStateViewResp = null;
+		if (CollUtil.isNotEmpty(corpKfServicerResp.getServicerList())) {
+			for (CorpKfServicerResp.CorpKfServicer corpKfServicer : corpKfServicerResp.getServicerList()) {
+				corpKfServicerStateViewResp = new CorpKfServicerStateViewResp();
+				String userid = corpKfServicer.getUserid();
+				Integer status = corpKfServicer.getStatus();
+				Integer stopType = corpKfServicer.getStop_type();
+				corpKfServicerStateViewResp.setServicerUserid(userid);
+				//接待状态
+				Integer state = 0;
+				//停止接待
+				if (status == 1) {
+					//暂时挂起
+					if (stopType == 1) {
+						state = 2;
+					} else state = 1;
+				}
+				corpKfServicerStateViewResp.setState(state);
+				corpKfServicerStateViewResps.add(corpKfServicerStateViewResp);
+			}
+		}
+		return corpKfServicerStateViewResps;
+	}
+
 	/**
 	 * 获取当前值班客服
 	 */

+ 20 - 4
netflix-web/src/main/java/com/cyksj/web/controller/manage/corp/wxkf/CorpKfController.java

@@ -14,10 +14,8 @@ import com.cyksj.mapper.corp.kf.CorpKfAccountUserChangeRecordMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.request.CorpKfDutySetReq;
 import com.cyksj.model.request.corp.kf.CorpKfDutyReq;
-import com.cyksj.model.views.CorpKfDutyServicersStatusView;
-import com.cyksj.model.views.CorpKfServicerStatisticView;
-import com.cyksj.model.views.CorpKfUserChatRecordView;
-import com.cyksj.model.views.SysCorpFollowView;
+import com.cyksj.model.response.corp.CorpKfServicerStateViewResp;
+import com.cyksj.model.views.*;
 import com.cyksj.service.corp.kf.CorpKfService;
 import com.cyksj.service.mange.cms.service.CmsUserService;
 import com.cyksj.service.user.UserBindRelationService;
@@ -174,6 +172,15 @@ public class CorpKfController {
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
 
+	/**
+	 * 接待人员状态变更记录
+	 */
+	@GetMapping("/get/servicer/status/change/record")
+	public Result<SearchResult<CorpKfServicerStatusChangeRecordView>> getServicerStatusLogs() {
+		SearchResult<CorpKfServicerStatusChangeRecordView> search = beanSearcher.search(CorpKfServicerStatusChangeRecordView.class, MapUtils.flatBuilder(request.getParameterMap()).orderBy(CorpKfServicerStatusChangeRecordView::getId).desc().build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
 	/**
 	 * 获取账号值班设置
 	 */
@@ -183,6 +190,15 @@ public class CorpKfController {
 		return GatewayResponse.SUCCESS.newBuilder().toResult(corpKfAccountFollows);
 	}
 
+	/**
+	 * 获取接待人员状态列表
+	 */
+	@GetMapping("/get/servicer/state")
+	public Result<List<CorpKfServicerStateViewResp>> getServicerStateList(String openKfId) throws Exception {
+		List<CorpKfServicerStateViewResp> corpKfServicerStateViewResps = corpKfService.getServicerStateList(openKfId);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(corpKfServicerStateViewResps);
+	}
+
 	//===============================================数据统计========================================================================
 
 	/**