OWL ITS + 탐지시스템(인터넷 진흥원)
defaultYn 추가
basicUser 추가
엑셀, 상세조회 진행중
일반회원 조회 추가
V1_10 Table 변경(데이터 삭제후 진행)
14개 파일 변경됨
294 ■■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/constant/MsgConstants.java 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/domain/User.java 8 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/domain/UserLevel.java 18 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/repository/UserLevelRepository.java 5 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/UserLevelService.java 16 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java 149 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java 9 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/UserLevelVo.java 18 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/condition/UserLevelCondition.java 18 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/controller/UserLevelController.java 21 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/form/UserLevelForm.java 18 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/migration/V1_10__Alter_Table.sql 5 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/user-template.xml 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/userLevel-template.xml 3 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/constant/MsgConstants.java
@@ -207,5 +207,9 @@
    public static final String USER_LEVEL_ALREADY_IN_USE = "USER_LEVEL_ALREADY_IN_USE"; // 사용자 등급을 사용하고 있는 사용자가 있습니다.
    public static final String USER_LEVEL_ALREADY = "USER_LEVEL_ALREADY"; // 사용자 등급을 사용하고 있는 사용자가 있습니다.
    public static final String USER_LEVEL_PERMISSION_DENIED = "USER_LEVEL_PERMISSION_DENIED"; // 사용자 등급 정보를 수정할수 없습니다.
    public static final String USER_LEVEL_NOT_EXIST = "USER_LEVEL_NOT_EXIST";   //  사용자 등급이 존재하지 않습니다.
    public static final String USER_LEVEL_NOT_DELETE = "USER_LEVEL_NOT_DELETE";   // 기본 사용자 등급은 삭제할수 없습니다.
}
src/main/java/kr/wisestone/owl/domain/User.java
@@ -310,10 +310,10 @@
        return this.userLevel.getPermission();
    }
    // TEST
    //public void setPermission(Integer permission) {
    //    this.userLevel.setPermission(permission);
    //}
    // wyu - TEST
//    public void setPermission(Integer permission) {
//        this.userLevel.setPermission(permission);
//    }
    public String getLicensekey() {
        return licensekey;
src/main/java/kr/wisestone/owl/domain/UserLevel.java
@@ -13,6 +13,8 @@
    private Long id;
    private String levelName;
    private Integer permission;
    private String defaultYn;
    private String basicUser;
    public UserLevel() {
    }
@@ -40,4 +42,20 @@
    public void setPermission(Integer permission) {
        this.permission = permission;
    }
    public String getDefaultYn() {
        return defaultYn;
    }
    public void setDefaultYn(String defaultYn) {
        this.defaultYn = defaultYn;
    }
    public String getBasicUser() {
        return basicUser;
    }
    public void setBasicUser(String basicUser) {
        this.basicUser = basicUser;
    }
}
src/main/java/kr/wisestone/owl/repository/UserLevelRepository.java
@@ -1,8 +1,13 @@
package kr.wisestone.owl.repository;
import kr.wisestone.owl.domain.User;
import kr.wisestone.owl.domain.UserLevel;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.query.Param;
import java.util.List;
public interface UserLevelRepository extends JpaRepository<UserLevel, Long> {
    List<UserLevel> findByBasicUser(@Param("basicUser") String basicUser);
}
src/main/java/kr/wisestone/owl/service/UserLevelService.java
@@ -1,5 +1,6 @@
package kr.wisestone.owl.service;
import kr.wisestone.owl.domain.Qna;
import kr.wisestone.owl.domain.UserLevel;
import kr.wisestone.owl.vo.UserLevelVo;
import kr.wisestone.owl.web.condition.UserCondition;
@@ -8,8 +9,11 @@
import kr.wisestone.owl.web.form.UserLevelForm;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.ui.Model;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
@@ -18,10 +22,22 @@
    UserLevel addSuperUserLevel();
    UserLevel addNormalUserLevel();
    UserLevel addNormalAdminUserLevel();
    List<UserLevelVo> findUser(Map<String, Object> resJsonData,
                                    UserLevelCondition make, Pageable pageable);
    UserLevel getUserLevel(Long id);
    UserLevel getBasicUserLevel();
    void modifyUserLevel(UserLevelForm userLevelForm);
    void removeUserLevel(UserLevelForm userLevelForm);
    void detailUserLevel(Map<String, Object> resJsonData, UserLevelCondition make);
    ModelAndView downloadExcel(HttpServletRequest request, Model model);
}
src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java
@@ -1,32 +1,40 @@
package kr.wisestone.owl.service.impl;
import com.google.common.collect.Lists;
import kr.wisestone.owl.common.ExcelConditionCheck;
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.domain.*;
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.service.WorkspaceService;
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.vo.*;
import kr.wisestone.owl.web.condition.IssueStatusCondition;
import kr.wisestone.owl.web.condition.UserCondition;
import kr.wisestone.owl.web.condition.UserLevelCondition;
import kr.wisestone.owl.web.condition.WorkflowCondition;
import kr.wisestone.owl.web.form.ManageUserForm;
import kr.wisestone.owl.web.form.ProjectForm;
import kr.wisestone.owl.web.form.UserLevelForm;
import kr.wisestone.owl.web.view.ExcelView;
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.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -42,6 +50,18 @@
    @Autowired
    private UserService userService;
    @Autowired
    private UserLevelService userLevelService;
    @Autowired
    private WorkspaceService workspaceService;
    @Autowired
    private ExcelView excelView;
    @Autowired
    private ExcelConditionCheck excelConditionCheck;
    @Override
    protected JpaRepository<UserLevel, Long> getRepository() {
        return this.userLevelRepository;
@@ -55,22 +75,34 @@
        userLevelRepository.saveAndFlush(userLevel);
        return userLevel;
    }
    // 최고관리자 등급 추가
    @Override
    public UserLevel addSuperUserLevel() {
        UserLevel userLevel = new UserLevel();
        userLevel.setLevelName("최고관리자");
        userLevel.setPermission(MngPermission.makeAllPermission());
        return  addUserLevel("최고관리자", MngPermission.makeAllPermission(),"Y", "N");
    }
        userLevel = userLevelRepository.saveAndFlush(userLevel);
        return userLevel;
    public UserLevel addNormalUserLevel() {
        return  addUserLevel("일반회원", 0,"Y" , "Y");
    }
    public UserLevel addNormalAdminUserLevel() {
        return  addUserLevel("일반관리자", MngPermission.makeSubAllPermission(),"N", "N");
    }
    // 사용자 등급 추가
    public UserLevel addUserLevel(String name, Integer permission, String defaultYn, String basicUser) {
        UserLevel userLevel = new UserLevel();
        userLevel.setLevelName(name);
        userLevel.setPermission(permission);
        userLevel.setDefaultYn(defaultYn);
        userLevel.setBasicUser(basicUser);
        return userLevelRepository.saveAndFlush(userLevel);
    }
    // 사용자 등급 목록을 가져온다.
    @Override
    public List<UserLevelVo> findUser(Map<String, Object> resJsonData,
                                           UserLevelCondition condition, Pageable pageable) {
                                      UserLevelCondition condition, Pageable pageable) {
        condition.setPage(pageable.getPageNumber() * pageable.getPageSize());
        condition.setPageSize(pageable.getPageSize());
@@ -80,19 +112,72 @@
        return this.convertUserLevelVoToMap(results, totalUsersCount, pageable, resJsonData);
    }
    // 사용자 등급 ID로 조회한다.
    @Override
    public UserLevel getUserLevel(Long id) {
        if (id == null) {
            throw new OwlRuntimeException(
                    this.messageAccessor.getMessage(MsgConstants.USER_LEVEL_NOT_EXIST));
        }
        UserLevel userLevel = this.findOne(id);
        if (userLevel == null) {
            throw new OwlRuntimeException(
                    this.messageAccessor.getMessage(MsgConstants.USER_LEVEL_NOT_EXIST));
        }
        return userLevel;
    }
    @Override
    public UserLevel getBasicUserLevel() {
        List<UserLevel> userLevels = userLevelRepository.findByBasicUser("Y");
        if (userLevels.size() > 0) {
            return  userLevels.get(0);
        }
        return null;
    }
    // 사용자 등급 상세 조회한다.
    @Override
    public void detailUserLevel(Map<String, Object> resJsonData, UserLevelCondition userLevelCondition) {
        UserLevelVo userLevelVo = new UserLevelVo();
        if (userLevelCondition.getId() != null) {
            UserLevel userLevel = this.getUserLevel(userLevelCondition.getId());
            userLevelVo = ConvertUtil.copyProperties(userLevel, UserLevelVo.class);
        }
        resJsonData.put(Constants.RES_KEY_CONTENTS, userLevelVo);
    }
    //  사용자 등급 정보를 수정한다.
    @Override
    public void modifyUserLevel(UserLevelForm userLevelForm) {
        userLevelForm.makePermission();
        UserLevel userLevel = ConvertUtil.copyProperties(userLevelForm, UserLevel.class);
        userLevelRepository.saveAndFlush(userLevel);
        if (userLevelForm.getId() == 1){        // 사용자 등급이 최고관리자이어야만 정보를 수정할수 있다.
            userLevelForm.makePermission();
            UserLevel userLevel = ConvertUtil.copyProperties(userLevelForm, UserLevel.class);
            userLevelRepository.saveAndFlush(userLevel);
        } else {
            throw new OwlRuntimeException(
                    this.messageAccessor.getMessage(MsgConstants.USER_LEVEL_PERMISSION_DENIED));
        }
    }
    // 사용자 등급을 삭제한다.
    @Override
    public void removeUserLevel(UserLevelForm userLevelForm) {
        if (userLevelForm.getRemoveIds().size() < 1) {
            throw new OwlRuntimeException(
                    this.messageAccessor.getMessage(MsgConstants.PROJECT_REMOVE_NOT_SELECT));
        }
        // 기본 사용자 등급 삭제 체크
        if (userLevelForm.getDefaultYn() == "Y") {
            throw new OwlRuntimeException(
                    this.messageAccessor.getMessage(MsgConstants.USER_LEVEL_NOT_DELETE));
        }
        for (Long id : userLevelForm.getRemoveIds()) {
@@ -103,9 +188,9 @@
                        this.messageAccessor.getMessage(MsgConstants.USER_LEVEL_ALREADY_IN_USE));
            }
        }
        this.userLevelRepository.flush();
    }
    //  검색 결과를 UserLevelVo 로 변환한다.
    private List<UserLevelVo> convertUserLevelVoToMap(List<Map<String, Object>> results, Long totalUsersCount, Pageable pageable, Map<String, Object> resJsonData) {
@@ -126,4 +211,34 @@
        return userLevelVos;
    }
    //  사용자 목록을 엑셀로 다운로드 한다.
    @Override
    public ModelAndView downloadExcel(HttpServletRequest request, Model model) {
        ModelAndView modelAndView = this.workspaceService.checkUseExcelDownload(model);
        if (modelAndView != null) {
            return modelAndView;
        }
        Map<String, Object> conditions = new HashMap<>();
        //  엑셀 다운로드에 필요한 검색 조건 정보를 추출하고 검색 조건 추출에 오류가 발생하면 경고를 표시해준다.
        modelAndView = this.excelConditionCheck.checkCondition(conditions, request, model);
        if (modelAndView != null) {
            return modelAndView;
        }
        UserLevelCondition userLevelCondition = UserLevelCondition.make(conditions);
        userLevelCondition.setLevelName(this.userLevelService.getUserLevel(this.webAppUtil.getLoginId()).getLevelName());
        List<Map<String, Object>> results = this.userLevelMapper.find(userLevelCondition);
        List<UserLevelVo> userLevelVos = ConvertUtil.convertListToListClass(results, UserLevelVo.class);
        ExportExcelVo excelInfo = new ExportExcelVo();
        excelInfo.setFileName(this.messageAccessor.message("사용자 목록"));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("levelName", "등급명", 6, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.setDatas(userLevelVos);
        model.addAttribute(Constants.EXCEL, excelInfo);
        return new ModelAndView(this.excelView);
    }
}
src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java
@@ -228,7 +228,8 @@
            this.userInviteService.includePrimaryWorkspace(user, primaryWorkspace);
            UserLevel userLevel = this.userLevelService.getBasicUserLevel();
            user.setUserLevel(userLevel);
            // edit by zenith for permission at 20200803
            /*user.setPermission(MngPermission.USER_PERMISSION_MNG_NONE);*/
@@ -238,6 +239,10 @@
            UserLevel userLevel = this.userLevelService.addSuperUserLevel();
            user.setUserLevel(userLevel);
            this.userLevelService.addNormalAdminUserLevel();
            this.userLevelService.addNormalUserLevel();
            // DepartmentManagement에 임시로 Name, Description 값 추가
            DepartmentManagementForm departmentManagementForm = new DepartmentManagementForm();
@@ -1194,7 +1199,7 @@
    @Transactional(readOnly = true)
    public User getUserSession(Map<String, Object> resJsonData, HttpServletRequest httpServletRequest) {
        User user = this.getUser(this.webAppUtil.getLoginId());
        UserVo userVo = ConvertUtil.copyProperties(user, UserVo.class, "password", "permission");
        UserVo userVo = ConvertUtil.copyProperties(user, UserVo.class, "password","permission"); // wyu - ignores permission ??
        // user에서 Permission 값을 가져와서 userVo 에 setPermission 함
        userVo.setPermission(user.getPermission());
        userVo.setAccount(CommonUtil.decryptAES128(userVo.getAccount()));
src/main/java/kr/wisestone/owl/vo/UserLevelVo.java
@@ -13,6 +13,8 @@
    private Long id;
    private String levelName;
    private Integer permission;
    private String defaultYn;
    private String basicUser;
    public Boolean permWorkSpaceSetting;
    public Boolean permProjectSetting;
@@ -57,6 +59,22 @@
    public void setPermission(Integer permission) { this.permission = permission; }
    public String getDefaultYn() {
        return defaultYn;
    }
    public void setDefaultYn(String defaultYn) {
        this.defaultYn = defaultYn;
    }
    public String getBasicUser() {
        return basicUser;
    }
    public void setBasicUser(String basicUser) {
        this.basicUser = basicUser;
    }
    public Boolean getModifyPermissionCheck() {
        return modifyPermissionCheck;
    }
src/main/java/kr/wisestone/owl/web/condition/UserLevelCondition.java
@@ -14,6 +14,8 @@
    private Long id;
    private String levelName;
    private Integer permission;
    private String defaultYn;
    private String basicUser;
    private Integer page;
    private Integer pageSize;
@@ -45,6 +47,22 @@
        this.permission = permission;
    }
    public String getDefaultYn() {
        return defaultYn;
    }
    public void setDefaultYn(String defaultYn) {
        this.defaultYn = defaultYn;
    }
    public String getBasicUser() {
        return basicUser;
    }
    public void setBasicUser(String basicUser) {
        this.basicUser = basicUser;
    }
    public Integer getPage() {
        return page;
    }
src/main/java/kr/wisestone/owl/web/controller/UserLevelController.java
@@ -5,6 +5,7 @@
import kr.wisestone.owl.service.UserLevelService;
import kr.wisestone.owl.service.UserService;
import kr.wisestone.owl.util.ConvertUtil;
import kr.wisestone.owl.web.condition.NoticeCondition;
import kr.wisestone.owl.web.condition.UserCondition;
import kr.wisestone.owl.web.condition.UserLevelCondition;
import kr.wisestone.owl.web.form.UserForm;
@@ -56,6 +57,17 @@
        return this.setSuccessMessage(resJsonData);
    }
    //  사용자등급 상세 조회
    @RequestMapping(value = "/userLevel/detail", produces = MediaType.APPLICATION_JSON_VALUE)
    public
    @ResponseBody
    Map<String, Object> detail(@RequestBody Map<String, Map<String, Object>> params) {
        Map<String, Object> resJsonData = new HashMap<>();
        this.userLevelService.detailUserLevel(resJsonData, UserLevelCondition.make(params.get(Constants.REQ_KEY_CONTENT)));
        return this.setSuccessMessage(resJsonData);
    }
    //  사용자등급 수정
    @RequestMapping(value = "/userLevel/modify", produces = MediaType.APPLICATION_JSON_VALUE)
    public
@@ -81,11 +93,12 @@
        return this.setSuccessMessage(resJsonData);
    }
    //  사용자 등급 엑셀 다운로드
//    @RequestMapping(value = "/userLevel/downloadExcel", method = RequestMethod.POST)
//    public ModelAndView downloadExcel(HttpServletRequest request, Model model) {
//        return this.userService.downloadExcel(model);
//    }
    @RequestMapping(value = "/userLevel/downloadExcel", method = RequestMethod.POST)
    public ModelAndView downloadExcel(HttpServletRequest request, Model model) {
        return this.userLevelService.downloadExcel(request, model);
    }
    /*//  이벤트 당첨자 엑셀 다운로드
    @RequestMapping(value = "/user/downloadExcelEvent", method = RequestMethod.POST)
src/main/java/kr/wisestone/owl/web/form/UserLevelForm.java
@@ -17,6 +17,8 @@
    private Long id;
    private String levelName;
    private Integer permission;
    private String defaultYn;
    private String basicUser;
    private List<Long> removeIds = Lists.newArrayList();
    public Boolean permWorkspaceSetting;
@@ -68,6 +70,22 @@
        this.permission = permission;
    }
    public String getDefaultYn() {
        return defaultYn;
    }
    public void setDefaultYn(String defaultYn) {
        this.defaultYn = defaultYn;
    }
    public String getBasicUser() {
        return basicUser;
    }
    public void setBasicUser(String basicUser) {
        this.basicUser = basicUser;
    }
    public Boolean getPermWorkspaceSetting() {
        return permWorkspaceSetting;
    }
src/main/resources/migration/V1_10__Alter_Table.sql
@@ -21,5 +21,8 @@
    `register_date` TIMESTAMP NULL COMMENT 'register_date',
    `modify_id` BIGINT(20) NOT NULL COMMENT 'modify_id',
    `modify_date` TIMESTAMP NULL COMMENT 'modify_date',
    `default_yn` VARCHAR (1) NOT NULL DEFAULT 'N',
    `basic_user` VARCHAR (1) NOT NULL DEFAULT 'N',
    PRIMARY KEY (`id`) USING btree
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
src/main/resources/mybatis/query-template/user-template.xml
@@ -173,7 +173,7 @@
    <select id="findByLevelId" resultType="java.lang.Long" parameterType="java.lang.Long">
        SELECT count(u.id)
        FROM user u
        WHERE u.level_id = #{levelId}
        WHERE u.level_id = #{id}
    </select>
</mapper>
src/main/resources/mybatis/query-template/userLevel-template.xml
@@ -14,6 +14,9 @@
        <if test="levelName != '' and levelName != null">
            AND ul.level_name like CONCAT('%',#{levelName},'%')
        </if>
        <if test="id != '' and id != null">
            AND ul.id like CONCAT('%',#{id},'%')
        </if>
        limit #{pageSize} offset #{page};
    </select>