Jelajahi Sumber

fix 获取当前客服值班情况

zoujiajian 1 tahun lalu
induk
melakukan
0dffdbfbf3

+ 78 - 0
netflix-web/src/main/java/com/cyksj/web/controller/corp/CorpKfFrontController.java

@@ -0,0 +1,78 @@
+package com.cyksj.web.controller.corp;
+
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.cyksj.dto.Result;
+import com.cyksj.enums.GatewayResponse;
+import com.cyksj.mapper.corp.kf.CorpKfAccountFollowMapper;
+import com.cyksj.mapper.corp.kf.CorpKfAccountMapper;
+import com.cyksj.model.entity.CorpKfAccount;
+import com.cyksj.model.entity.CorpKfAccountFollow;
+import com.cyksj.redis.RedisService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/applet/coupon")
+@RequiredArgsConstructor
+public class CorpKfFrontController {
+	private final CorpKfAccountMapper corpKfAccountMapper;
+
+	private final CorpKfAccountFollowMapper corpKfAccountFollowMapper;
+
+	private final RedisService redisService;
+
+	/**
+	 * 当前微信客服是否处于值班
+	 */
+	@GetMapping("/get/duty")
+	public Result<Boolean> isDuty(@RequestParam(defaultValue = "1") Integer scene) {
+		CorpKfAccount corpKfAccount = corpKfAccountMapper.selectOne(Wrappers.lambdaQuery(CorpKfAccount.class).eq(CorpKfAccount::getScene, scene).last("limit 1"));
+		//默认官网
+		if (corpKfAccount == null) {
+			corpKfAccount = corpKfAccountMapper.selectOne(Wrappers.lambdaQuery(CorpKfAccount.class).eq(CorpKfAccount::getScene, 1).last("limit 1"));
+			if (corpKfAccount == null) {
+				return GatewayResponse.SUCCESS.newBuilder().toResult(false);
+			}
+		}
+		DateTime now = DateTime.now();
+		String thisHourDate = DateUtil.format(now, "HH:mm");
+		//星期天为1
+		int dayOfWeek = DateUtil.dayOfWeek(now);
+		//是否值班期
+		List<CorpKfAccountFollow> corpKfAccountFollows = corpKfAccountFollowMapper.selectList(Wrappers.lambdaQuery(CorpKfAccountFollow.class)
+				.eq(CorpKfAccountFollow::getOpenKfId, corpKfAccount.getOpenKfId())
+				.le(CorpKfAccountFollow::getStartTime, thisHourDate)
+				.ge(CorpKfAccountFollow::getEndTime, thisHourDate)
+				.eq(CorpKfAccountFollow::getDutyWeek, dayOfWeek));
+		return GatewayResponse.SUCCESS.newBuilder().toResult(!corpKfAccountFollows.isEmpty());
+	}
+
+
+	/**
+	 * 值班情况
+	 */
+	@GetMapping("/get/duty/info")
+	public Result<List<CorpKfAccountFollow>> dutyInfo(@RequestParam(defaultValue = "1") Integer scene) {
+		CorpKfAccount corpKfAccount = corpKfAccountMapper.selectOne(Wrappers.lambdaQuery(CorpKfAccount.class).eq(CorpKfAccount::getScene, scene).last("limit 1"));
+		//默认官网
+		if (corpKfAccount == null) {
+			corpKfAccount = corpKfAccountMapper.selectOne(Wrappers.lambdaQuery(CorpKfAccount.class).eq(CorpKfAccount::getScene, 1).last("limit 1"));
+			if (corpKfAccount == null) {
+				return GatewayResponse.SUCCESS.newBuilder().toResult();
+			}
+		}
+		//是否值班期
+		List<CorpKfAccountFollow> corpKfAccountFollows = corpKfAccountFollowMapper.selectList(Wrappers.lambdaQuery(CorpKfAccountFollow.class)
+				.eq(CorpKfAccountFollow::getOpenKfId, corpKfAccount.getOpenKfId())
+				.select(CorpKfAccountFollow::getDutyWeek, CorpKfAccountFollow::getStartTime, CorpKfAccountFollow::getEndTime));
+		return GatewayResponse.SUCCESS.newBuilder().toResult(corpKfAccountFollows);
+	}
+}