Skip to main content

사용자 등록

Swit User 생성


  • Swit 의 User API를 이용하여 사용자를 등록 합니다.
  • 소속팀 정보는 유저를 생성후 유저아이디를 가지고 생성되어 있는 팀에 추가 시켜줘야 합니다.

public HrUserDto createSwitUser(SwitUserDto user) throws Exception {
    HrUserDto hrUserDto = new HrUserDto();
    try {
        // 유저생성 파라미터를 설정한다.
        JSONObject params = new JSONObject();
        params.put("language", user.getLanguage());
        params.put("timezone", user.getTimezone());
        params.put("user_name", user.getUserName());
        params.put("user_email", user.getEmail());
        params.put("tel", user.getTel());
        params.put("msg", user.getMsg());


        SwitTokenDto tokenDto = authService.getSwitTokenByDb("cts-api");
        JsonObject result = httpUtils.post("organization.user.create", params, tokenDto);

        // 팀에 유저 추가 및 메인팀 설정
        List<String> userIds = new ArrayList<String>();
        userIds.add(result.get("data").getAsJsonObject().get("user").getAsJsonObject().get("user_id").getAsString());
        teamService.addUserToSwitTeam(user.getTeamId(), userIds); // return값 없음
        //Team에 유저 등록하면 main_dept_yn 자동 Y
    // 유저생셩 및 팀추가 결과 반영
        JsonElement data = result.get("data");
        JsonElement returnUser = data.getAsJsonObject().get("user");

        user = this.getSwitUserByAPI(returnUser.getAsJsonObject().get("user_id").getAsString());

        // Swit DB 저장
        List<SwitUserEntity> switUserEntities = new ArrayList<>();
        List<SwitTeamUserEntity> switTeamUserEntities = new ArrayList<>();
        switUserEntities.add(user.toEntity());
        for(SwitDeptDto team : user.getTeam()){
            SwitTeamUserEntity entity = new SwitTeamUserEntity();
            entity.setUserId(user.getUserId());
            entity.setTeamId(team.getTeamId());
            entity.setMainDeptYn(team.getMainDeptYn());
            entity.setUpdated(LocalDateTime.now());
            switTeamUserEntities.add(entity);
        }
        this.saveSwitUsers(switUserEntities);
        this.teamService.saveSwitTeamUser(switTeamUserEntities);

        // HR DB 저장
        hrUserDto.setUserId(user.getEmail());
        hrUserDto.setUserEmail(user.getEmail());
        hrUserDto.setSwitId(user.getUserId());
        hrUserDto.setUserName(user.getUserName());
        hrUserDto.setTel(user.getTel());
        hrUserDto.setActive(true);
        hrUserDto.setDeptId(teamService.getHrDeptByTeamId(user.getTeamId()).getDeptId());
        this.updateHrUser(hrUserDto.toEntity());
    } catch (Exception e) {
        log.error(e.getMessage());
        throw new Exception(e);
    }
    return hrUserDto;
}




public SwitDeptDto addUserToSwitTeam(String teamId, List<String> userIds) throws Exception{
    SwitDeptDto retVal = new SwitDeptDto();
    JSONObject params = new JSONObject();
    try {
        JSONArray userList = new JSONArray();
        for(String id : userIds)
            userList.add(id);
        params.put("user_ids", userList);
        params.put("id", teamId);
        SwitTokenDto tokenDto = authService.getSwitTokenByDb("cts-api");

        JsonObject result = httpUtils.post("team.user.add", params, tokenDto);
        JsonElement data = result.getAsJsonObject().get("data").getAsJsonObject().get("data");
        retVal = this.parsingTeamResult(data);
    } catch (Exception e) {
        log.error(e.getMessage());
        throw new Exception(e);
    }
    return retVal;
}