You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
3.9 KiB
85 lines
3.9 KiB
package com.fr.plugin.xx.zyjn.schedule; |
|
|
|
import com.fr.cluster.core.ClusterNode; |
|
import com.fr.decision.authority.AuthorityContext; |
|
import com.fr.decision.authority.base.constant.type.operation.ManualOperationType; |
|
import com.fr.decision.authority.data.User; |
|
import com.fr.json.JSONArray; |
|
import com.fr.json.JSONObject; |
|
import com.fr.plugin.xx.zyjn.conf.GxkgSsoConfig; |
|
import com.fr.plugin.xx.zyjn.utils.HttpUtil; |
|
import com.fr.plugin.xx.zyjn.utils.LogUtils; |
|
import com.fr.scheduler.job.FineScheduleJob; |
|
import com.fr.stable.StringUtils; |
|
import com.fr.third.v2.org.quartz.JobExecutionContext; |
|
|
|
import java.util.HashMap; |
|
import java.util.Map; |
|
|
|
/** |
|
* @Author xx |
|
* @Date 2022/7/18 |
|
* @Description |
|
**/ |
|
public class SyncUserSchedule extends FineScheduleJob { |
|
|
|
private static final String TOKEN_URL = "%s/api/sys/getToken"; |
|
|
|
private static final String USER_URL = "%s/api/rest/data/acct"; |
|
|
|
|
|
@Override |
|
public void run(JobExecutionContext jobExecutionContext, ClusterNode clusterNode) throws Exception { |
|
GxkgSsoConfig config = GxkgSsoConfig.getInstance(); |
|
if (StringUtils.isBlank(config.getSyncUser()) || StringUtils.isBlank(config.getSyncPass())) { |
|
LogUtils.error("同步授权账户信息为空"); |
|
return; |
|
} |
|
JSONObject tokenBody = JSONObject.create().put("username", config.getSyncUser()).put("password", config.getSyncPass()); |
|
String tokenUrl = String.format(TOKEN_URL, config.getSyncHost()); |
|
LogUtils.debug4plugin("token url is {}", tokenUrl); |
|
String tokenRes = HttpUtil.sendPost(tokenUrl, null, tokenBody); |
|
LogUtils.debug4plugin("token res is {}", tokenRes); |
|
if (StringUtils.isBlank(tokenRes)) { |
|
LogUtils.error("token 返回空"); |
|
return; |
|
} |
|
JSONObject tokenObject = new JSONObject(tokenRes); |
|
String token = tokenObject.getString("msg"); |
|
if (StringUtils.isBlank(token)) { |
|
LogUtils.error("msg 返回空"); |
|
return; |
|
} |
|
String userUrl = String.format(USER_URL, config.getSyncHost()); |
|
Map<String, String> header = new HashMap(); |
|
header.put("uim-login-user-id", token); |
|
LogUtils.debug4plugin("user url is {}", userUrl); |
|
String userRes = HttpUtil.sendPost(userUrl, header, JSONObject.create().put("appSn", config.getAppSn())); |
|
LogUtils.debug4plugin("user res is {}", userRes); |
|
JSONObject object = new JSONObject(userRes); |
|
if (object.containsKey("data")) { |
|
JSONArray array = object.getJSONArray("data"); |
|
LogUtils.debug4plugin("get sync user size is {}", array.size()); |
|
int created = 0, updated = 0; |
|
for (int i = 0; i < array.size(); i++) { |
|
JSONObject body = array.getJSONObject(i); |
|
String id = body.getString("id"); |
|
User user = AuthorityContext.getInstance().getUserController().getById(id); |
|
if (user == null) { |
|
user = new User().id(id).userName(body.getString("loginName")) |
|
.realName(body.getString("userName")).creationType(ManualOperationType.KEY) |
|
.lastOperationType(ManualOperationType.KEY).enable(body.getInt("status") == 1); |
|
AuthorityContext.getInstance().getUserController().add(user); |
|
created++; |
|
} else { |
|
user.id(id).userName(body.getString("loginName")) |
|
.realName(body.getString("userName")).creationType(ManualOperationType.KEY) |
|
.lastOperationType(ManualOperationType.KEY).enable(body.getInt("status") == 1); |
|
AuthorityContext.getInstance().getUserController().update(user); |
|
updated++; |
|
} |
|
} |
|
LogUtils.debug4plugin("sync user create size is {} updated size is {}", created, updated); |
|
} |
|
} |
|
}
|
|
|