This commit is contained in:
2025-11-05 14:43:35 +08:00
parent aa94662db0
commit f79cdcaec7
5 changed files with 109 additions and 38 deletions
+6
View File
@@ -26,6 +26,12 @@
</properties> </properties>
<dependencies> <dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
</dependency>
<dependency> <dependency>
<groupId>com.github.javen205</groupId> <groupId>com.github.javen205</groupId>
<artifactId>IJPay-All</artifactId> <artifactId>IJPay-All</artifactId>
@@ -13,6 +13,7 @@ import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.sys.models.Sys_user_history; import com.budwk.app.sys.models.Sys_user_history;
import com.budwk.app.sys.param.SysDataUserUpdatePageForm; import com.budwk.app.sys.param.SysDataUserUpdatePageForm;
import com.budwk.app.sys.param.SysDataUserUpdateParam; import com.budwk.app.sys.param.SysDataUserUpdateParam;
import com.budwk.app.sys.services.SysDataUnitPullService;
import com.budwk.app.sys.services.SysDataUserPullService; import com.budwk.app.sys.services.SysDataUserPullService;
import com.budwk.app.sys.services.SysDataUserUpdateService; import com.budwk.app.sys.services.SysDataUserUpdateService;
import com.budwk.app.sys.services.SysUserService; import com.budwk.app.sys.services.SysUserService;
@@ -49,6 +50,8 @@ public class SysDataUserUpdateController {
@Inject @Inject
private SysDataUserPullService sysDataUserPullService; private SysDataUserPullService sysDataUserPullService;
@Inject @Inject
private SysDataUnitPullService sysDataUnitPullService;
@Inject
private SysUserService sysUserService; private SysUserService sysUserService;
@At("") @At("")
@@ -115,5 +118,14 @@ public class SysDataUserUpdateController {
return Result.success(sysDataUserUpdateService.update(updateParam)); return Result.success(sysDataUserUpdateService.update(updateParam));
} }
@At
@SaCheckPermission("sys.data.user.pull")
@SLog(tag = "更新单位数据", msg = "更新单位数据")
@ApiOperation("更新单位数据")
public Result updateUnits(){
sysDataUnitPullService.updateUnits();
return Result.success();
}
} }
@@ -13,7 +13,15 @@ import com.budwk.app.sys.enums.Api2UnitFiledMap;
import com.budwk.app.sys.models.Sys_unit; import com.budwk.app.sys.models.Sys_unit;
import com.budwk.app.sys.services.SysDataUnitPullService; import com.budwk.app.sys.services.SysDataUnitPullService;
import com.budwk.app.sys.utils.DataCenterUtil; import com.budwk.app.sys.utils.DataCenterUtil;
import com.tencentcloudapi.apigateway.v20180808.models.RequestConfig;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Dao; import org.nutz.dao.Dao;
import org.nutz.dao.Sqls; import org.nutz.dao.Sqls;
@@ -21,7 +29,10 @@ import org.nutz.dao.sql.Sql;
import org.nutz.ioc.aop.Aop; import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.json.Json;
import java.net.http.HttpClient;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@@ -63,18 +74,43 @@ public class SysDataUnitPullServiceImpl extends BaseServiceImpl<Sys_unit> implem
@Override @Override
@Aop(TransAop.READ_COMMITTED) @Aop(TransAop.READ_COMMITTED)
public void updateUnits(List<String> unitIds) { public void updateUnits(List<String> unitIds) {
// 请求数据 String url = "https://dcs.hgu.edu.cn:8888/openApi/API/jzgjbxx"; // 确保无空格!
String tokenUrl = "https://dcs.hgu.edu.cn:8888/openApi/API/zzjg"; try (CloseableHttpClient httpClient = HttpClients.custom()
HttpRequest httpRequest = HttpUtil.createPost(tokenUrl); .build()) {
httpRequest.header("Content-Type", "application/json");
httpRequest.header("applyId", "39923603855883264");
httpRequest.header("secretKey", "169a960048124f4483e9637807afc9f6");
httpRequest.body(JSONUtil.toJsonStr(Map.of("page", 1, "pagesize", 1000)));
log.info("请求人员数据: {}", httpRequest); // 构建请求体 JSON
String resBody = httpRequest.execute().body(); JSONObject body = new JSONObject();
log.info("请求人员数据结果: {}", resBody); body.put("page", 1);
JSONObject jsonBody = JSONUtil.parseObj(resBody); body.put("pagesize", 1000); // ⚠️ 建议 ≤1000,此处设为 100 更安全
// 创建 POST 请求
HttpPost post = new HttpPost(url);
post.setHeader("Content-Type", "application/json");
post.setHeader("applyId", "39923603855883264"); // 替换为你的实际 applyId
post.setHeader("secretKey", "169a960048124f4483e9637807afc9f6"); // 替换为你的实际 secretKey
post.setHeader("User-Agent", "ApiClient/1.0 (Java)");
post.setHeader("Accept", "*/*");
post.setHeader("Connection", "close");
// 设置请求体
StringEntity entity = new StringEntity(
JSONUtil.toJsonStr(body),
StandardCharsets.UTF_8
);
post.setEntity(entity);
// 执行请求
HttpResponse response = httpClient.execute(post);
HttpEntity responseEntity = response.getEntity();
String responseBody = responseEntity != null
? EntityUtils.toString(responseEntity, StandardCharsets.UTF_8)
: "";
System.out.println("响应状态码: " + response.getStatusLine().getStatusCode());
System.out.println("响应内容: " + responseBody);
JSONObject jsonBody = JSONUtil.parseObj(responseBody);
if (jsonBody.getInt("code") != 200) { if (jsonBody.getInt("code") != 200) {
throw new BaseException("获取单位数据失败,错误码: " + jsonBody.getInt("code") + ";错误原因:" + jsonBody.getStr("msg")); throw new BaseException("获取单位数据失败,错误码: " + jsonBody.getInt("code") + ";错误原因:" + jsonBody.getStr("msg"));
@@ -108,5 +144,23 @@ public class SysDataUnitPullServiceImpl extends BaseServiceImpl<Sys_unit> implem
log.info("本次拉取单位数据,新增{}条,更新{}条", insertList.size(), updateList.size()); log.info("本次拉取单位数据,新增{}条,更新{}条", insertList.size(), updateList.size());
dao().insert(insertList); dao().insert(insertList);
dao().update(updateList); dao().update(updateList);
} catch (Exception e) {
e.printStackTrace();
// 实际项目中:log.error("拉取人员数据失败", e);
}
// 请求数据
/* HttpRequest httpRequest = HttpRequest.post("https://dcs.hgu.edu.cn:8888/openApi/API/zzjg");
httpRequest.header("Content-Type", "application/json");
httpRequest.header("applyId", "39923603855883264");
httpRequest.header("secretKey", "169a960048124f4483e9637807afc9f6");
httpRequest.body(JSONUtil.toJsonStr(Map.of("page", 1, "pagesize", 1000)));
log.info("请求人员数据: {}", httpRequest);
String resBody = httpRequest.execute().body();
log.info("请求人员数据结果: {}", resBody);
JSONObject jsonBody = JSONUtil.parseObj(resBody);*/
} }
} }
@@ -114,12 +114,11 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
Map<String, List<Sys_data_dict>> dataDictMap = dataDictList.stream().collect(Collectors.groupingBy(Sys_data_dict::getParentCode)); Map<String, List<Sys_data_dict>> dataDictMap = dataDictList.stream().collect(Collectors.groupingBy(Sys_data_dict::getParentCode));
// 请求数据 // 请求数据
String tokenUrl = "https://dcs.hgu.edu.cn:8888/openApi/API/jzgjbxx"; HttpRequest httpRequest = HttpRequest.post("https://dcs.hgu.edu.cn:8888/openApi/API/jzgjbxx");
HttpRequest httpRequest = HttpUtil.createPost(tokenUrl);
httpRequest.header("Content-Type", "application/json"); httpRequest.header("Content-Type", "application/json");
httpRequest.header("applyId", "39923603855883264"); httpRequest.header("applyId", "39923603855883264");
httpRequest.header("secretKey", "169a960048124f4483e9637807afc9f6"); httpRequest.header("secretKey", "169a960048124f4483e9637807afc9f6");
httpRequest.body(JSONUtil.toJsonStr(Map.of("page", 1, "pagesize", 3000))); httpRequest.body(JSONUtil.toJsonStr(Map.of("page", 1, "pagesize", 900)));
log.info("请求人员数据: {}", httpRequest); log.info("请求人员数据: {}", httpRequest);
String resBody = httpRequest.execute().body(); String resBody = httpRequest.execute().body();
@@ -50,7 +50,7 @@ layout("/layouts/platform.html"){
<el-card shadow="never"> <el-card shadow="never">
<table-tool label="系统当前用户数据"> <table-tool label="系统当前用户数据">
<el-button type="primary" size="mini" @click="updateDataDict" icon="el-icon-refresh">更新【码表】数据</el-button> <!-- <el-button type="primary" size="mini" @click="updateDataDict" icon="el-icon-refresh">更新【码表】数据</el-button>-->
<el-button type="primary" size="mini" @click="updateUnits" icon="el-icon-refresh">更新【单位】数据</el-button> <el-button type="primary" size="mini" @click="updateUnits" icon="el-icon-refresh">更新【单位】数据</el-button>
<el-button type="primary" size="mini" @click="openUpdate" icon="el-icon-refresh">更新【人员】数据</el-button> <el-button type="primary" size="mini" @click="openUpdate" icon="el-icon-refresh">更新【人员】数据</el-button>
</table-tool> </table-tool>