유저 정보 매핑 ( 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;
}