工作代码记录:JSONObject,异步处理和远程调用的使用

该代码段展示了一个Java任务执行过程,主要涉及数据同步、授权token获取以及JSON解析。通过注解`@Value`注入配置属性,从`JobExecutionContext`获取任务参数,然后使用用户名和密码获取授权token,遍历组织ID列表,对每个组织进行数据同步操作,包括从远程接口获取用户信息并存储到本地数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一部分代码

    @Value("${pty.sync.username}")
    private String userName;
    @Value("${pty.sync.password}")
    private String passWord;
    @Value("${pty.sync.syncUri}")
    private String syncUri;

第二部分代码

 public void execute(JobExecutionContext context) throws JobExecutionException {
        log.info("进入任务调用服务【{}】", "GanSuUserSync");
        JobDetail jobDetail = context.getJobDetail();
        JobDataMap jobDataMap = jobDetail.getJobDataMap();
        String taskParam = jobDataMap.getString("taskParam");
        JSONObject jsonObject = JSON.parseObject(taskParam);
        String gsRoleCode = jsonObject.getString("roleCode");
        JSONArray orgIdAndOrgCode = jsonObject.getJSONArray("orgIds");
        String token = this.getToken(this.userName, this.passWord);

        for(int i = 0; i < orgIdAndOrgCode.size(); ++i) {
            JSONObject jsonValue = (JSONObject)orgIdAndOrgCode.get(i);
            String gsOrgCode = jsonValue.getString("orgCode");
            PtyOrg ptyOrg = this.orgService.selectByOrgCode(gsOrgCode, "87");
            if (Objects.isNull(ptyOrg)) {
                log.error("------> 系统OrgCode {} 为空", gsOrgCode);
            } else {
                String localOrgId = ptyOrg.getOrgId();
                if (localOrgId.isEmpty()) {
                    log.error("----->localOrgId {} 为空", localOrgId);
                } else {
                    String gsOrgId = jsonValue.getString("orgId");
                    if (gsOrgId.isEmpty()) {
                        log.error("----->gsOrgId {} 参数机构id为空", gsOrgId);
                    } else {
                        String userJson = this.getUser(token, gsOrgId);
                        List<PtyUser> userList = this.readjson(userJson, localOrgId);
                        this.insertUser(userList, gsRoleCode, localOrgId);
                        Iterator var17 = userList.iterator();

                        while(var17.hasNext()) {
                            PtyUser user = (PtyUser)var17.next();
                            log.info("------>userList {} 插入的用户", user.getUserCode() + " " + user.getUserName());
                        }

                        log.info("----->userList {} 插入的用户的数量", userList.size());
                    }
                }
            }
        }

    }

第三部分代码(被第二部分代码调用):

   private String getToken(String username, String password) {
        Map<String, Object> paramMap = new HashMap();
        paramMap.put("username", username);
        paramMap.put("password", password);
        paramMap.put("grant_type", "password");
        paramMap.put("scope", "read");
        paramMap.put("client_id", "0");
        paramMap.put("client_secret", "test");
        String result = HttpRequest.post(this.syncUri + "/oauth/token").form(paramMap).timeout(20000).execute().body();
        log.info("冰岛用户同步获取门户token,远程调用结果【{}】", result);
        JSONObject jsonObject = JSONObject.parseObject(result);
        return jsonObject.getString("access_token");
    }
   private String getUser(String token, String gsOrgId) {
        Map<String, Object> paramMap = new HashMap();
        paramMap.put("access_token", token);
        paramMap.put("officeId", gsOrgId);
        String s = HttpUtil.get(this.syncUri + "/rs/user/getUserList", paramMap);
        log.info("获取门户待同步用户结果为:【{}】", s);
        return s;
    }

    private List<PtyUser> readjson(String jsonResult, String localOrgId) {
        JSONObject jsonObject = JSON.parseObject(jsonResult);
        List<PtyUser> list = new ArrayList();
        if (jsonObject.getString("code").equals("200")) {
            JSONArray data = jsonObject.getJSONArray("data");

            for(int i = 0; i < data.size(); ++i) {
                PtyUser ptyUser = new PtyUser();
                JSONObject jsonObj = data.getJSONObject(i);
                ptyUser.setUserCode(jsonObj.getString("loginName"));
                ptyUser.setUserName(jsonObj.getString("name"));
                ptyUser.setUserId(jsonObj.getString("id"));
                log.info("userId:[{}]" + jsonObj.getString("id"));
                ptyUser.setMainOrgid(localOrgId);
                list.add(ptyUser);
            }
        }

        return list;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值