Files
UNION_NJUST/src/main/java/io/v/nutz/todoTask/TodoTaskInterfaceImpl.java
T

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