OWL ITS + 탐지시스템(인터넷 진흥원)
wyu
2021-11-03 76806da455b31bdcff001d866afde72a284e00ff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package kr.wisestone.owl.service.impl;
 
import com.google.common.collect.Lists;
import kr.wisestone.owl.constant.Constants;
import kr.wisestone.owl.constant.MngPermission;
import kr.wisestone.owl.constant.MsgConstants;
import kr.wisestone.owl.domain.User;
import kr.wisestone.owl.domain.UserLevel;
import kr.wisestone.owl.exception.OwlRuntimeException;
import kr.wisestone.owl.mapper.UserLevelMapper;
import kr.wisestone.owl.mapper.UserMapper;
import kr.wisestone.owl.repository.UserLevelRepository;
import kr.wisestone.owl.service.UserLevelService;
import kr.wisestone.owl.service.UserService;
import kr.wisestone.owl.util.CommonUtil;
import kr.wisestone.owl.util.ConvertUtil;
import kr.wisestone.owl.vo.ResPage;
import kr.wisestone.owl.vo.UserLevelVo;
import kr.wisestone.owl.vo.UserVo;
import kr.wisestone.owl.web.condition.UserCondition;
import kr.wisestone.owl.web.condition.UserLevelCondition;
import kr.wisestone.owl.web.form.ManageUserForm;
import kr.wisestone.owl.web.form.UserLevelForm;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
 
import java.util.List;
import java.util.Map;
 
@Service
public class UserLevelServiceImpl extends AbstractServiceImpl<UserLevel, Long, JpaRepository<UserLevel, Long>> implements UserLevelService {
 
    @Autowired
    private UserLevelRepository userLevelRepository;
 
    @Autowired
    private UserLevelMapper userLevelMapper;
 
    @Autowired
    private UserService userService;
 
    @Override
    protected JpaRepository<UserLevel, Long> getRepository() {
        return this.userLevelRepository;
    }
 
    // 사용자 가입 후 UserLevel 값 저장
    @Override
    public UserLevel addUserLevel(UserLevelForm userLevelForm) {
        userLevelForm.makePermission();
        UserLevel userLevel = ConvertUtil.copyProperties(userLevelForm, UserLevel.class);
        userLevelRepository.saveAndFlush(userLevel);
        return userLevel;
    }
 
    // 최고관리자 등급 추가
    @Override
    public UserLevel addSuperUserLevel() {
        UserLevel userLevel = new UserLevel();
        userLevel.setLevelName("최고관리자");
        userLevel.setPermission(MngPermission.makeAllPermission());
 
        userLevel = userLevelRepository.saveAndFlush(userLevel);
        return userLevel;
    }
 
    // 사용자 등급 목록을 가져온다.
    @Override
    public List<UserLevelVo> findUser(Map<String, Object> resJsonData,
                                           UserLevelCondition condition, Pageable pageable) {
 
        condition.setPage(pageable.getPageNumber() * pageable.getPageSize());
        condition.setPageSize(pageable.getPageSize());
 
        List<Map<String, Object>> results = this.userLevelMapper.find(condition);
        Long totalUsersCount = this.userLevelMapper.count(condition);
 
        return this.convertUserLevelVoToMap(results, totalUsersCount, pageable, resJsonData);
    }
    //  사용자 등급 정보를 수정한다.
    @Override
    public void modifyUserLevel(UserLevelForm userLevelForm) {
        userLevelForm.makePermission();
        UserLevel userLevel = ConvertUtil.copyProperties(userLevelForm, UserLevel.class);
        userLevelRepository.saveAndFlush(userLevel);
    }
 
    @Override
    public void removeUserLevel(UserLevelForm userLevelForm) {
        if (userLevelForm.getRemoveIds().size() < 1) {
            throw new OwlRuntimeException(
                    this.messageAccessor.getMessage(MsgConstants.PROJECT_REMOVE_NOT_SELECT));
        }
 
        for (Long id : userLevelForm.getRemoveIds()) {
            if (!this.userService.useUserLevel(id)) {
                this.userLevelRepository.deleteById(id);
            } else {
                throw new OwlRuntimeException(
                        this.messageAccessor.getMessage(MsgConstants.USER_LEVEL_ALREADY));
            }
        }
 
        this.userLevelRepository.flush();
    }
 
    //  검색 결과를 UserLevelVo 로 변환한다.
    private List<UserLevelVo> convertUserLevelVoToMap(List<Map<String, Object>> results, Long totalUsersCount, Pageable pageable, Map<String, Object> resJsonData) {
        List<UserLevelVo> userLevelVos = Lists.newArrayList();
 
        for (Map<String, Object> result : results) {
            UserLevelVo userLevelVo = ConvertUtil.convertMapToClass(result, UserLevelVo.class);
            userLevelVo.toPermissionValues();
            userLevelVos.add(userLevelVo);
        }
 
        int totalPage = (int) Math.ceil((totalUsersCount - 1) / pageable.getPageSize()) + 1;
 
        resJsonData.put(Constants.RES_KEY_CONTENTS, userLevelVos);
        resJsonData.put(Constants.REQ_KEY_PAGE_VO, new ResPage(pageable.getPageNumber(), pageable.getPageSize(),
                totalPage, totalUsersCount));
 
        return userLevelVos;
    }
 
}