Skip to main content

유저 정보 매핑 ( by Json )

Json타입의 유저정보 객체로 매핑


  • Json타입으로 받은 객체정보를 Java Dto 로 매핑


private SwitUserDto switUserMappingByJson(JsonElement user) throws Exception{
    SwitUserDto retVal = new SwitUserDto();//사용자 정보
    List<SwitDeptDto> teams = new ArrayList<>();    //사용자 조직 정보

    // 사용자 정보를 가져 온다.
    retVal.setUserId(user.getAsJsonObject().get("user_id").getAsString());      //사용자 아이디
    retVal.setUserName(user.getAsJsonObject().get("user_name").getAsString());  //사용자 이름
    retVal.setEmail(user.getAsJsonObject().get("email").getAsString()); //이메일
    retVal.setRole(user.getAsJsonObject().get("role").getAsInt());  //역할코드
    retVal.setStatus(user.getAsJsonObject().get("status").getAsString());   //상태
    retVal.setMode(user.getAsJsonObject().get("mode").getAsString());   //모드?
    retVal.setTel(user.getAsJsonObject().get("tel").getAsString()); //전화번호
    retVal.setTimezone(user.getAsJsonObject().get("timezone").getAsString());   //타입존
    retVal.setTimezoneAutoFlag(user.getAsJsonObject().get("timezone_auto_flag").getAsInt());    //타임존 자동 여부
    retVal.setMsg(user.getAsJsonObject().get("msg").getAsString());
    retVal.setBgColor(user.getAsJsonObject().get("bg_color").getAsString());    //배경색
    retVal.setPhoto(user.getAsJsonObject().get("photo").getAsString());     //프로필 이미지
    retVal.setActive(user.getAsJsonObject().get("is_active").getAsBoolean());   //활성화 여부
    retVal.setLanguage(user.getAsJsonObject().get("language").getAsString().trim());    //사용언언
    // 날짜 포맷을 맞춰 준다.
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    if (StringUtils.hasText(user.getAsJsonObject().get("created").getAsString())) {
        Date createdDate = sdf.parse(user.getAsJsonObject().get("created").getAsString().trim().replace("T", " ").replace("Z", ""));
        LocalDateTime created = LocalDateTime.ofInstant(createdDate.toInstant(), ZoneId.of("Asia/Seoul"));
        retVal.setCreated(created);
    }
    if (StringUtils.hasText(user.getAsJsonObject().get("last_activity").getAsString())) {
        Date lastActivityDate = sdf.parse(user.getAsJsonObject().get("last_activity").getAsString().trim().replace("T", " ").replace("Z", ""));
        LocalDateTime lastActivity = LocalDateTime.ofInstant(lastActivityDate.toInstant(), ZoneId.of("Asia/Seoul"));
        retVal.setLastActivity(lastActivity);
    }

    // 팀 정보
    if (user.getAsJsonObject().get("team") != null && !user.getAsJsonObject().get("team").toString().equals("null")) {
        JsonArray userTeams = user.getAsJsonObject().get("team").getAsJsonArray();
        for (JsonElement team : userTeams) {
            SwitDeptDto teamDto = new SwitDeptDto();
            teamDto.setTeamId(team.getAsJsonObject().get("team_id").getAsString());
            teamDto.setTeamName(team.getAsJsonObject().get("team_name").getAsString());
            teamDto.setMainDeptYn(team.getAsJsonObject().get("main_dept_yn").getAsString());
            teams.add(teamDto);
            //메인부서일 경우 등록해 준다.
            if (StringUtils.hasText(teamDto.getMainDeptYn())
                    && "Y".equalsIgnoreCase(teamDto.getMainDeptYn())) {
                retVal.setTeamId(teamDto.getTeamId());
                retVal.setTeamName(teamDto.getTeamName());
            }
        }
    }
    retVal.setTeam(teams);
    return retVal;
}