commit
This commit is contained in:
@@ -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,9 +74,83 @@ 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"; // 确保无空格!
|
||||||
|
try (CloseableHttpClient httpClient = HttpClients.custom()
|
||||||
|
.build()) {
|
||||||
|
|
||||||
|
// 构建请求体 JSON
|
||||||
|
JSONObject body = new JSONObject();
|
||||||
|
body.put("page", 1);
|
||||||
|
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) {
|
||||||
|
throw new BaseException("获取单位数据失败,错误码: " + jsonBody.getInt("code") + ";错误原因:" + jsonBody.getStr("msg"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 需要新增的单位
|
||||||
|
List<Sys_unit> insertList = new ArrayList<>();
|
||||||
|
// 需要更新的单位
|
||||||
|
List<Sys_unit> updateList = new ArrayList<>();
|
||||||
|
|
||||||
|
JSONObject dataJson = jsonBody.getJSONObject("data");
|
||||||
|
JSONArray rows = dataJson.get("Rows", JSONArray.class);
|
||||||
|
|
||||||
|
List<JSONObject> data = rows.stream().map(v -> (JSONObject) v).toList();
|
||||||
|
|
||||||
|
Map<String, String> api2db = Arrays.stream(Api2UnitFiledMap.values())
|
||||||
|
.collect(Collectors.toMap(e -> e.apiField, e -> e.dbColumn));
|
||||||
|
for (JSONObject row : data) {
|
||||||
|
Sys_unit unit = DataCenterUtil.mapJsonToBean(row, Sys_unit.class, api2db);
|
||||||
|
unit.setUnitcode(unit.getId());
|
||||||
|
unit.setUnitTypeCode(unit.getParentId().length() == 2 ? 0 : 1);
|
||||||
|
|
||||||
|
if (unitIds.contains(unit.getId())) {
|
||||||
|
// 存在则更新
|
||||||
|
updateList.add(unit);
|
||||||
|
} else {
|
||||||
|
// 不存在则新增
|
||||||
|
insertList.add(unit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log.info("本次拉取单位数据,新增{}条,更新{}条", insertList.size(), updateList.size());
|
||||||
|
dao().insert(insertList);
|
||||||
|
dao().update(updateList);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
// 实际项目中:log.error("拉取人员数据失败", e);
|
||||||
|
}
|
||||||
// 请求数据
|
// 请求数据
|
||||||
String tokenUrl = "https://dcs.hgu.edu.cn:8888/openApi/API/zzjg";
|
/* HttpRequest httpRequest = HttpRequest.post("https://dcs.hgu.edu.cn:8888/openApi/API/zzjg");
|
||||||
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");
|
||||||
@@ -74,39 +159,8 @@ public class SysDataUnitPullServiceImpl extends BaseServiceImpl<Sys_unit> implem
|
|||||||
log.info("请求人员数据: {}", httpRequest);
|
log.info("请求人员数据: {}", httpRequest);
|
||||||
String resBody = httpRequest.execute().body();
|
String resBody = httpRequest.execute().body();
|
||||||
log.info("请求人员数据结果: {}", resBody);
|
log.info("请求人员数据结果: {}", resBody);
|
||||||
JSONObject jsonBody = JSONUtil.parseObj(resBody);
|
JSONObject jsonBody = JSONUtil.parseObj(resBody);*/
|
||||||
|
|
||||||
if (jsonBody.getInt("code") != 200) {
|
|
||||||
throw new BaseException("获取单位数据失败,错误码: " + jsonBody.getInt("code") + ";错误原因:" + jsonBody.getStr("msg"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// 需要新增的单位
|
|
||||||
List<Sys_unit> insertList = new ArrayList<>();
|
|
||||||
// 需要更新的单位
|
|
||||||
List<Sys_unit> updateList = new ArrayList<>();
|
|
||||||
|
|
||||||
JSONObject dataJson = jsonBody.getJSONObject("data");
|
|
||||||
JSONArray rows = dataJson.get("Rows", JSONArray.class);
|
|
||||||
|
|
||||||
List<JSONObject> data = rows.stream().map(v -> (JSONObject) v).toList();
|
|
||||||
|
|
||||||
Map<String, String> api2db = Arrays.stream(Api2UnitFiledMap.values())
|
|
||||||
.collect(Collectors.toMap(e -> e.apiField, e -> e.dbColumn));
|
|
||||||
for (JSONObject row : data) {
|
|
||||||
Sys_unit unit = DataCenterUtil.mapJsonToBean(row, Sys_unit.class, api2db);
|
|
||||||
unit.setUnitcode(unit.getId());
|
|
||||||
unit.setUnitTypeCode(unit.getParentId().length() == 2 ? 0 : 1);
|
|
||||||
|
|
||||||
if (unitIds.contains(unit.getId())) {
|
|
||||||
// 存在则更新
|
|
||||||
updateList.add(unit);
|
|
||||||
} else {
|
|
||||||
// 不存在则新增
|
|
||||||
insertList.add(unit);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
log.info("本次拉取单位数据,新增{}条,更新{}条", insertList.size(), updateList.size());
|
|
||||||
dao().insert(insertList);
|
|
||||||
dao().update(updateList);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user