From d64ce641aa6985cf531abe819ea7991f4fd2ec94 Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 화, 14 12월 2021 20:20:13 +0900 Subject: [PATCH] 사용자등급, 프로젝트 엑셀 다운로드 오류 해결 --- src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java | 259 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 252 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..18831c2 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java @@ -1,30 +1,50 @@ 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.jsoup.Jsoup; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; 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; @Service public class UserLevelServiceImpl extends AbstractServiceImpl<UserLevel, Long, JpaRepository<UserLevel, Long>> implements UserLevelService { + + private static final Logger log = LoggerFactory.getLogger(IssueServiceImpl.class); @Autowired private UserLevelRepository userLevelRepository; @@ -32,21 +52,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 +120,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 +218,106 @@ 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("permAllIssueAndProjectSetting", this.messageAccessor.message("manageUser.manageAllIssueAndProjectPerm"), 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)); + + // userLevelVos �뜲�씠�꽣瑜� �뿊���뿉�꽌 �몴�떆�븷 �닔 �엳�뒗 �뜲�씠�꽣濡� 蹂�寃쏀븳�떎. + List<Map<String, Object>> convertExcelViewToUserLevelMaps = this.convertExcelViewToUserLevelVos(userLevelVos); + excelInfo.setDatas(convertExcelViewToUserLevelMaps); + + model.addAttribute(Constants.EXCEL, excelInfo); + return new ModelAndView(this.excelView); + } + + // userLevelVos �뜲�씠�꽣瑜� �뿊���뿉�꽌 �몴�떆�븷 �닔 �엳�뒗 �뜲�씠�꽣濡� 蹂�寃쏀븳�떎. + private List<Map<String, Object>> convertExcelViewToUserLevelVos(List<UserLevelVo> userLevelVos) { + List<Map<String, Object>> results = Lists.newArrayList(); + + for (UserLevelVo userLevelVo : userLevelVos){ + try { + Map<String, Object> result = new HashMap<>(); + result.put("levelName", userLevelVo.getLevelName()); + result.put("permAllIssueAndProjectSetting", userLevelVo.getPermAllIssueAndProjectSetting()); + result.put("permPartnerSetting", userLevelVo.getPermPartnerSetting()); + result.put("permWorkSpaceSetting", userLevelVo.getPermWorkSpaceSetting()); + result.put("permProjectSetting", userLevelVo.getPermProjectSetting()); + result.put("permIssueSetting", userLevelVo.getPermIssueSetting()); + result.put("permApi", userLevelVo.getPermApi()); + result.put("permNotice", userLevelVo.getPermNotice()); + result.put("permFAQ", userLevelVo.getPermFAQ()); + result.put("permQnA", userLevelVo.getPermQnA()); + result.put("permGuide", userLevelVo.getPermGuide()); + + results.add(result); + } catch (Exception e) { + log.error("�뿊�� �떎�슫濡쒕뱶 �삤瑜� 諛쒖깮"); + } + } + return results; + } + + // �궗�슜�옄 �벑湲� �긽�깭瑜� 蹂�寃쏀븳�떎. + @Override + public void modifyLevelPermission(UserLevelForm userLevelForm) { + int newPermission = MngPermission.USER_PERMISSION_MNG_NONE; + + newPermission |= MngPermission.makePermission(userLevelForm.getPermAllIssueAndProjectSetting(), MngPermission.USER_PERMISSION_MNG_ISSUE_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