From d78323a9138aab73f9f1b25e0a74283780176452 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 목, 09 12월 2021 20:43:47 +0900
Subject: [PATCH] - 이슈전체보기/이슈프로젝트보기 권한 생성 - 워크스페이스 권한을 가진 사용자 OWL정보 오류 해결

---
 src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java |  227 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 220 insertions(+), 7 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java
index d5c5fdf..899301b 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java
@@ -1,25 +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.domain.UserLevel;
+import kr.wisestone.owl.constant.MngPermission;
+import kr.wisestone.owl.constant.MsgConstants;
+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;
 
@@ -32,21 +47,64 @@
     @Autowired
     private UserLevelMapper userLevelMapper;
 
+    @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;
     }
 
+    // �궗�슜�옄 媛��엯 �썑 UserLevel 媛� ���옣
     @Override
     public UserLevel addUserLevel(UserLevelForm userLevelForm) {
+        userLevelForm.makePermission();
+        userLevelForm.setDefaultYn(UserLevel.YN_FIELD_NO);
+        userLevelForm.setBasicUser(UserLevel.YN_FIELD_NO);
         UserLevel userLevel = ConvertUtil.copyProperties(userLevelForm, UserLevel.class);
         userLevelRepository.saveAndFlush(userLevel);
         return userLevel;
     }
-
     @Override
-    public List<UserLevelVo> findUser(Map<String, Object> resJsonData, UserLevelCondition condition,
-                         Pageable pageable) {
+    public UserLevel addSuperUserLevel() {
+        return  addUserLevel("理쒓퀬愿�由ъ옄", MngPermission.makeAllPermission(),UserLevel.YN_FIELD_YES,UserLevel.YN_FIELD_NO);
+    }
+
+    public UserLevel addNormalUserLevel() {
+        return  addUserLevel("�씪諛섑쉶�썝", 0,UserLevel.YN_FIELD_YES , UserLevel.YN_FIELD_YES);
+    }
+
+    public UserLevel addNormalAdminUserLevel() {
+        return  addUserLevel("�씪諛섍�由ъ옄", MngPermission.makeSubAllPermission(),UserLevel.YN_FIELD_NO, UserLevel.YN_FIELD_NO);
+    }
+
+    // �궗�슜�옄 �벑湲� 異붽�
+    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) {
 
         condition.setPage(pageable.getPageNumber() * pageable.getPageSize());
         condition.setPageSize(pageable.getPageSize());
@@ -57,12 +115,92 @@
         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) {
+        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.USER_LEVEL_REMOVE_NOT_SELECT));
+        }
+
+        // 湲곕낯 �궗�슜�옄 �벑湲� �궘�젣 泥댄겕
+        if (userLevelForm.getDefaultYn() == "Y") {
+            throw new OwlRuntimeException(
+                    this.messageAccessor.getMessage(MsgConstants.USER_LEVEL_NOT_DELETE));
+        }
+
+        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_IN_USE));
+            }
+        }
+        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);
         }
 
@@ -75,4 +213,79 @@
         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);
+        List<Map<String, Object>> results = this.userLevelMapper.find(userLevelCondition);
+        List<UserLevelVo> userLevelVos = ConvertUtil.convertListToListClass(results, UserLevelVo.class);
+
+        for (UserLevelVo vo : userLevelVos) {
+            vo.toPermissionValues();
+        }
+
+        // code_ko_KR �뿉 code紐� �꽕�젙
+        ExportExcelVo excelInfo = new ExportExcelVo();
+        excelInfo.setFileName(this.messageAccessor.message("�궗�슜�옄 紐⑸줉"));
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("levelName", this.messageAccessor.message("managementWorkspace.levelName"), 6, ExportExcelAttrVo.ALIGN_CENTER));
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("permAllIssueSetting", this.messageAccessor.message("manageUser.manageAllIssuePerm"), 3, ExportExcelAttrVo.ALIGN_CENTER));
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("permAllProjectSetting", this.messageAccessor.message("manageUser.manageAllProjectPerm"), 3, ExportExcelAttrVo.ALIGN_CENTER));
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("permPartnerSetting", this.messageAccessor.message("manageUser.managePartnerPerm"), 3, ExportExcelAttrVo.ALIGN_CENTER));
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("permWorkSpaceSetting", this.messageAccessor.message("manageUser.manageWorkspacePerm"), 3, ExportExcelAttrVo.ALIGN_CENTER));
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("permProjectSetting", this.messageAccessor.message("manageUser.manageProjectPerm"), 3, ExportExcelAttrVo.ALIGN_CENTER));
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("permIssueSetting", this.messageAccessor.message("manageUser.manageIssueSystemPerm"), 3, ExportExcelAttrVo.ALIGN_CENTER));
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("permApi", this.messageAccessor.message("manageUser.manageUserApi"), 3, ExportExcelAttrVo.ALIGN_CENTER));
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("permNotice", this.messageAccessor.message("manageUser.manageNoticePerm"), 3, ExportExcelAttrVo.ALIGN_CENTER));
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("permFAQ", this.messageAccessor.message("manageUser.manageFAQPerm"), 3, ExportExcelAttrVo.ALIGN_CENTER));
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("permQnA", this.messageAccessor.message("manageUser.manageQnAPerm"), 3, ExportExcelAttrVo.ALIGN_CENTER));
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("permGuide", this.messageAccessor.message("manageUser.manageGuidePerm"), 3, ExportExcelAttrVo.ALIGN_CENTER));
+
+        excelInfo.setDatas(userLevelVos);
+
+        model.addAttribute(Constants.EXCEL, excelInfo);
+        return new ModelAndView(this.excelView);
+    }
+
+    // �궗�슜�옄 �벑湲� �긽�깭瑜� 蹂�寃쏀븳�떎.
+    @Override
+    public void modifyLevelPermission(UserLevelForm userLevelForm) {
+        int newPermission = MngPermission.USER_PERMISSION_MNG_NONE;
+
+        newPermission |= MngPermission.makePermission(userLevelForm.getPermAllIssueSetting(), MngPermission.USER_PERMISSION_MNG_ISSUE_ALL);
+        newPermission |= MngPermission.makePermission(userLevelForm.getPermAllProjectSetting(), MngPermission.USER_PERMISSION_MNG_PROJECT_ALL);
+        newPermission |= MngPermission.makePermission(userLevelForm.getPermPartnerSetting(), MngPermission.USER_PERMISSION_MNG_PARTNER);
+        newPermission |= MngPermission.makePermission(userLevelForm.getPermWorkSpaceSetting(), MngPermission.USER_PERMISSION_MNG_WORKSPACE);
+        newPermission |= MngPermission.makePermission(userLevelForm.getPermProjectSetting(), MngPermission.USER_PERMISSION_MNG_PROJECT);
+        newPermission |= MngPermission.makePermission(userLevelForm.getPermIssueSetting(), MngPermission.USER_PERMISSION_MNG_ISSUE_SETTING);
+        newPermission |= MngPermission.makePermission(userLevelForm.getPermApi(), MngPermission.USER_PERMISSION_MNG_API);
+        newPermission |= MngPermission.makePermission(userLevelForm.getPermNotice(), MngPermission.USER_PERMISSION_MNG_NOTICE);
+        newPermission |= MngPermission.makePermission(userLevelForm.getPermFAQ(), MngPermission.USER_PERMISSION_MNG_FAQ);
+        newPermission |= MngPermission.makePermission(userLevelForm.getPermQnA(), MngPermission.USER_PERMISSION_MNG_QNA);
+        /*newPermission |= MngPermission.makePermission(userLevelForm.getPermEvent(), MngPermission.USER_PERMISSION_MNG_EVENT);*/
+        newPermission |= MngPermission.makePermission(userLevelForm.getPermGuide(), MngPermission.USER_PERMISSION_MNG_GUIDE);
+
+        UserLevel userLevel = userLevelService.getUserLevel(userLevelForm.getId());
+        /*        user.setPermission(newPermission);*/
+        userLevel.setPermission(newPermission);
+        this.userLevelRepository.saveAndFlush(userLevel);
+    }
+
+    @Override
+    public void modifyLevelName(UserLevelForm userLevelForm) {
+        UserLevel userLevel = userLevelService.getUserLevel(userLevelForm.getId());
+        userLevel.setLevelName(userLevelForm.getLevelName());
+        this.userLevelRepository.saveAndFlush(userLevel);
+    }
 }

--
Gitblit v1.8.0