128 lines
4.7 KiB
Java
128 lines
4.7 KiB
Java
package io.v.nutz.todoTask;
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.http.HttpRequest;
|
|
import cn.hutool.http.HttpResponse;
|
|
import cn.hutool.http.HttpUtil;
|
|
import io.v.nutz.sys.models.Sys_config;
|
|
import io.v.nutz.sys.services.SysConfigService;
|
|
import io.v.nutz.web.commons.utils.ShiroUtil;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.nutz.dao.Dao;
|
|
import org.nutz.integration.jedis.RedisService;
|
|
import org.nutz.ioc.loader.annotation.Inject;
|
|
import org.nutz.ioc.loader.annotation.IocBean;
|
|
import org.nutz.json.Json;
|
|
import org.nutz.lang.util.NutMap;
|
|
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* @Author JyuHsin
|
|
* @Date 2023/5/19
|
|
* @Description
|
|
*/
|
|
@IocBean
|
|
@Slf4j
|
|
public class TodoTaskInterfaceImpl implements TodoTaskInterface {
|
|
|
|
/**
|
|
* 只有系统配置明确开启时,才调用学校统一待办网关。
|
|
*/
|
|
private boolean isTodoTaskEnabled() {
|
|
Sys_config config = sysConfigService.fetch("TodoTaskEnabled");
|
|
return config != null && "true".equals(config.getConfigValue());
|
|
}
|
|
|
|
@Inject
|
|
private SysConfigService sysConfigService;
|
|
|
|
@Inject
|
|
private RedisService redisService;
|
|
|
|
@Inject
|
|
private Dao dao;
|
|
|
|
@Override
|
|
public String getAccessToken() {
|
|
if (StrUtil.isBlank(redisService.get(TodoTaskConstants.TOKEN_KEY))) {
|
|
HttpRequest httpRequest = HttpUtil.createGet(TodoTaskConstants.GET_TOKEN);
|
|
httpRequest.addHeaders(Map.of("appId", TodoTaskConstants.APPID, "appSecret", TodoTaskConstants.APPSECRET));
|
|
String responseBody = httpRequest.execute().body();
|
|
NutMap nutMap = Json.fromJson(NutMap.class, responseBody);
|
|
if ("0".equals(nutMap.getString("errcode"))) {
|
|
String token = nutMap.getString("data");
|
|
redisService.setex(TodoTaskConstants.TOKEN_KEY, 2 * 60 * 60, token);
|
|
return token;
|
|
} else {
|
|
throw new RuntimeException("获取待办事项token失败");
|
|
}
|
|
}
|
|
return redisService.get(TodoTaskConstants.TOKEN_KEY);
|
|
}
|
|
|
|
@Override
|
|
public void pushTask(TodoTask todoTask) {
|
|
if (!isTodoTaskEnabled()) {
|
|
return;
|
|
}
|
|
log.info("【推送待办入参】:" + Json.toJson(todoTask));
|
|
String accessToken = getAccessToken();
|
|
HttpRequest httpRequest = HttpUtil.createPost(TodoTaskConstants.PUSH_TASK_URL);
|
|
httpRequest.addHeaders(Map.of("appId", TodoTaskConstants.APPID, "accessToken", accessToken));
|
|
httpRequest.body(Json.toJson(todoTask));
|
|
String responseBody = httpRequest.execute().body();
|
|
NutMap nutMap = Json.fromJson(NutMap.class, responseBody);
|
|
log.info("【推送待办结果】:" + Json.toJson(nutMap));
|
|
if (!"0".equals(nutMap.getString("errcode"))) {
|
|
throw new RuntimeException("推送待办事项失败");
|
|
} else {
|
|
dao.insert(todoTask);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void updateTask(TodoTask todoTask) {
|
|
if (!isTodoTaskEnabled()) {
|
|
return;
|
|
}
|
|
log.info("【更新待办入参】:" + Json.toJson(todoTask));
|
|
String accessToken = getAccessToken();
|
|
HttpRequest httpRequest = HttpUtil.createPost(TodoTaskConstants.UPDATE_TASK_URL);
|
|
httpRequest.addHeaders(Map.of("appId", TodoTaskConstants.APPID, "accessToken", accessToken));
|
|
httpRequest.body(Json.toJson(todoTask));
|
|
String responseBody = httpRequest.execute().body();
|
|
NutMap nutMap = Json.fromJson(NutMap.class, responseBody);
|
|
log.info("【更新待办结果】:" + Json.toJson(nutMap));
|
|
if (!"0".equals(nutMap.getString("errcode"))) {
|
|
throw new RuntimeException("更新待办事项失败");
|
|
} else {
|
|
dao.updateIgnoreNull(todoTask);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void deleteTask(TodoTask todoTask) {
|
|
if (!isTodoTaskEnabled()) {
|
|
return;
|
|
}
|
|
log.info("【删除待办入参】:" + Json.toJson(todoTask));
|
|
String accessToken = getAccessToken();
|
|
HttpRequest httpRequest = HttpUtil.createPost(TodoTaskConstants.DELETE_TASK_URL);
|
|
httpRequest.addHeaders(Map.of("appId", TodoTaskConstants.APPID, "accessToken", accessToken));
|
|
httpRequest.body(Json.toJson(todoTask));
|
|
String responseBody = httpRequest.execute().body();
|
|
NutMap nutMap = Json.fromJson(NutMap.class, responseBody);
|
|
log.info("【删除待办结果】:" + Json.toJson(nutMap));
|
|
if (!"0".equals(nutMap.getString("errcode"))) {
|
|
throw new RuntimeException("删除待办事项失败");
|
|
} else {
|
|
todoTask.setDelFlag(true);
|
|
todoTask.setDelTime(DateUtil.now());
|
|
dao.updateIgnoreNull(todoTask);
|
|
}
|
|
}
|
|
}
|