zoujiajian há 1 ano atrás
pai
commit
7760fa28dc

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/CorpKfAccount.java

@@ -1,5 +1,7 @@
 package com.cyksj.model.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.ejlchina.searcher.bean.DbField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -25,4 +27,8 @@ public class CorpKfAccount extends BaseEntity{
 	 * 0官网 1其他场景
 	 */
 	private Integer scene;
+
+	@DbField("select 1 from corp_kf_account_session_config cc where cc.open_kf_id = corp_kf_account.open_kf_id")
+	@TableField(exist = false)
+	private Boolean isRefine;
 }

+ 2 - 2
netflix-dao/src/main/java/com/cyksj/model/entity/CorpKfAccountFollow.java

@@ -23,12 +23,12 @@ public class CorpKfAccountFollow extends BaseEntity{
 	/**
 	 * 值班开始时间
 	 */
-	private Integer startTime;
+	private String startTime;
 
 	/**
 	 * 值班结束时间
 	 */
-	private Integer endTime;
+	private String endTime;
 
 	/**
 	 * 值班星期 数组

+ 21 - 0
netflix-dao/src/main/java/com/cyksj/model/request/corp/kf/CorpKfDutyReq.java

@@ -0,0 +1,21 @@
+package com.cyksj.model.request.corp.kf;
+
+import com.cyksj.model.entity.CorpKfAccountFollow;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: CorpKfDutyReq
+ * 创建者: JavaZou
+ * 创建时间:2025/1/2 17:09
+ */
+@Getter
+@Setter
+public class CorpKfDutyReq {
+	private String openKfId;
+
+	private List<CorpKfAccountFollow> dutyList;
+}

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

@@ -742,19 +742,19 @@ public class CorpServiceImpl implements CorpService {
 			//是否设置非值班提示
 			if (corpKfAccountSessionConfig != null && StrUtil.isNotEmpty(corpKfAccountSessionConfig.getNoDutyTips())) {
 				DateTime now = DateTime.now();
-				int thisHour = DateUtil.hour(now, true);
+				String thisHourDate = DateUtil.format(now, "HH:mm:ss");
 				//0-6 0周一
 				int dayOfWeek = DateUtil.dayOfWeek(now);
 				//是否值班期
 				Integer dutyHourCount = corpKfAccountFollowMapper.selectCount(Wrappers.lambdaQuery(CorpKfAccountFollow.class)
 						.eq(CorpKfAccountFollow::getOpenKfId, openKfId)
-						.le(CorpKfAccountFollow::getStartTime, thisHour)
-						.ge(CorpKfAccountFollow::getEndTime, thisHour)
+						.le(CorpKfAccountFollow::getStartTime, thisHourDate)
+						.ge(CorpKfAccountFollow::getEndTime, thisHourDate)
 						.apply(" and JSON_CONTAINS(duty_week,'\"%s\"')", dayOfWeek));
 				//非值班时间 发送通知
 				if (dutyHourCount == 0) {
 					//非值班时间 移入等待池并发送进入等待池消息
-					log.info("当前客服账号:{}处于非值班时间:{},将客服:{}移入等待池", openKfId, thisHour, event.getExternalUserId());
+					log.info("当前客服账号:{}处于非值班时间:{},将客服:{}移入等待池", openKfId, thisHourDate, event.getExternalUserId());
 					moveWaitingQueue(corpId, openKfId, event.getExternalUserId());
 					String queueTips = corpKfAccountSessionConfig.getQueueTips();
 					sendCorpKfTextTips(corpId, event.getExternalUserId(), openKfId, queueTips);

+ 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.CorpKfAccountFollow;
 import com.cyksj.model.entity.CorpKfAccountSessionConfig;
+import com.cyksj.model.request.corp.kf.CorpKfDutyReq;
 
 import java.util.List;
 
@@ -22,4 +23,6 @@ public interface CorpKfService {
 	void setKfAccountRuleOrAutoReply(CorpKfAccountSessionConfig CorpKfAccountSessionConfig);
 
 	void setKfAccountDuty(List<CorpKfAccountFollow> corpKfAccountFollows);
+
+	void setKfDuty(CorpKfDutyReq dutyReq);
 }

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

@@ -13,6 +13,7 @@ import com.cyksj.model.kf.WxCpKfAccountAdd;
 import com.cyksj.model.kf.WxCpKfAccountAddResp;
 import com.cyksj.model.kf.WxCpKfAccountDel;
 import com.cyksj.model.kf.WxCpKfAccountUpd;
+import com.cyksj.model.request.corp.kf.CorpKfDutyReq;
 import com.cyksj.service.corp.WxCorpOps;
 import com.cyksj.service.corp.kf.CorpKfService;
 import lombok.RequiredArgsConstructor;
@@ -93,4 +94,19 @@ public class CorpKfServiceImpl implements CorpKfService {
 	public void setKfAccountDuty(List<CorpKfAccountFollow> corpKfAccountFollows) {
 		corpKfAccountFollows.forEach(corpKfAccountFollow -> corpKfAccountFollowMapper.insert(corpKfAccountFollow));
 	}
+
+	@Override
+	public void setKfDuty(CorpKfDutyReq dutyReq) {
+		String openKfId = dutyReq.getOpenKfId();
+		List<CorpKfAccountFollow> dutyList = dutyReq.getDutyList();
+
+		dutyList.forEach(duty -> {
+			if (duty.getId() != null) {
+				corpKfAccountFollowMapper.updateById(duty);
+				return;
+			}
+			duty.setOpenKfId(openKfId);
+			corpKfAccountFollowMapper.insert(duty);
+		});
+	}
 }

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

@@ -6,6 +6,7 @@ import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.corp.CorpFollowMapper;
 import com.cyksj.model.entity.*;
+import com.cyksj.model.request.corp.kf.CorpKfDutyReq;
 import com.cyksj.model.views.CorpKfServicerSessionRecordView;
 import com.cyksj.service.corp.kf.CorpKfService;
 import com.cyksj.service.mange.cms.service.CmsUserService;
@@ -101,6 +102,16 @@ public class CorpKfController {
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
 
+
+	/**
+	 * 设置值班时间
+	 */
+	@PostMapping("/set/duty")
+	public Result<String> setKfDuty(@RequestBody CorpKfDutyReq dutyReq) {
+		corpKfService.setKfDuty(dutyReq);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
 	//===============================================账号值班设置========================================================================
 	@PostMapping("/set/duty")
 	public Result<String> setKfAccountDuty(@RequestBody List<CorpKfAccountFollow> corpKfAccountFollows) {