fairnet/src/main/java/kcc/web/MainController.java
tolag3 c374bbb783 Merge branch 'tolag3'
본인인증 개발중
2024-10-15 10:30:51 +09:00

1444 lines
57 KiB
Java

package kcc.web;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import java.util.stream.Collectors;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.annotation.Resource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.ibatis.annotations.Case;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.fdl.property.EgovPropertyService;
import egovframework.rte.fdl.security.intercept.EgovReloadableFilterInvocationSecurityMetadataSource;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import kcc.com.cmm.CmmUtil;
import kcc.com.cmm.ComDefaultVO;
import kcc.com.cmm.LoginVO;
import kcc.com.cmm.service.EgovCmmUseService;
import kcc.com.cmm.service.EgovFileMngUtil;
import kcc.com.cmm.service.FileVO;
import kcc.com.cmm.util.WebUtil;
import kcc.com.uss.ion.bnr.service.BannerVO;
import kcc.com.uss.ion.bnr.service.EgovBannerService;
import kcc.com.uss.ion.cnf.service.MetaTagManageService;
import kcc.com.uss.ion.cyb.service.CyberAlertManageService;
import kcc.com.uss.ion.fms.service.FmsFileVO;
import kcc.com.uss.ion.pwm.service.EgovPopupManageService;
import kcc.com.uss.ion.pwm.service.MainzoneVO;
import kcc.com.uss.ion.pwm.service.PopupManageVO;
import kcc.com.uss.ion.pwm.service.PopupzoneVO;
import kcc.com.utl.fcc.service.EgovStringUtil;
import kcc.let.cop.bbs.service.BoardMasterVO;
import kcc.let.cop.bbs.service.BoardVO;
import kcc.let.cop.bbs.service.EgovBBSAttributeManageService;
import kcc.let.cop.bbs.service.EgovBBSManageService;
import kcc.let.sts.cst.service.EgovConectStatsService;
import kcc.let.sym.ccm.cde.service.EgovCcmCmmnDetailCodeManageService;
import kcc.let.sym.log.clg.service.EgovLoginLogService;
import kcc.let.sym.log.clg.service.LoginLog;
import kcc.let.sym.mnu.mcm.service.EgovMenuCreateManageService;
import kcc.let.sym.mnu.mpm.service.EgovMenuManageService;
import kcc.let.sym.mnu.mpm.service.MenuManageJTreeVO;
import kcc.let.sym.mnu.mpm.service.MenuManageVO;
import kcc.let.sym.prm.service.EgovProgrmManageService;
import kcc.let.sym.prm.service.ProgrmManageVO;
import kcc.let.sym.site.service.EgovSiteManagerService;
import kcc.let.sym.site.service.SiteManagerVO;
import seed.com.gtm.board.CaseBoardService;
import seed.com.gtm.exam.ExamBoardService;
import seed.com.gtm.faqbbs.faqBpardService;
import seed.utils.SeedConstants;
/**
* 템플릿 메인 페이지 컨트롤러 클래스(Sample 소스)
*
* @author 실행환경 개발팀 JJY
* @since 2011.08.31
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2011.08.31 JJY 최초 생성
*
* </pre>
*/
@Controller
@SessionAttributes(types = ComDefaultVO.class)
public class MainController {
/** EgovProgrmManageService */
@Resource(name = "progrmManageService")
private EgovProgrmManageService progrmManageService;
/** EgovPropertyService */
@Resource(name = "propertiesService")
protected EgovPropertyService propertiesService;
/**
* EgovBBSManageService
*/
@Resource(name = "EgovBBSManageService")
private EgovBBSManageService bbsMngService;
/** EgovMenuManageService */
@Resource(name = "meunManageService")
private EgovMenuManageService menuManageService;
@Resource(name = "egovBannerService")
private EgovBannerService egovBannerService;
/** EgovPopupManageService */
@Resource(name = "egovPopupManageService")
private EgovPopupManageService egovPopupManageService;
/** cyberAlertManageService */
@Resource(name = "cyberAlertManageService")
private CyberAlertManageService cyberAlertManageService;
@Resource(name = "EgovLoginLogService")
private EgovLoginLogService loginLogService;
@Resource(name = "conectStatsService")
private EgovConectStatsService conectStatsService;
@Resource(name = "databaseSecurityMetadataSource")
EgovReloadableFilterInvocationSecurityMetadataSource databaseSecurityMetadataSource;
/** cmmUseService */
@Resource(name = "EgovCmmUseService")
private EgovCmmUseService cmmUseService;
/** EgovMenuManageService */
@Resource(name = "meunCreateManageService")
private EgovMenuCreateManageService menuCreateManageService;
@Resource(name = "egovSiteManagerService")
EgovSiteManagerService egovSiteManagerService;
@Resource(name = "EgovBBSAttributeManageService")
private EgovBBSAttributeManageService bbsAttrbService;
/** metaTagManageService 메타태그 */
@Resource(name = "metaTagManageService")
private MetaTagManageService metaTagManageService;
@Resource(name = "EgovFileMngUtil")
private EgovFileMngUtil fileUtil;
@Value("#{globalSettings['Globals.email.host']}")
private String Globals_email_host;
@Value("#{globalSettings['Globals.email.port']}")
private String Globals_email_port;
@Value("#{globalSettings['Globals.email.fromUser']}")
private String Globals_email_fromUser;
@Value("#{globalSettings['Globals.email.fromEmail']}")
private String Globals_email_fromEmail;
@Value("#{globalSettings['Globals.email.fromEmail.password']}")
private String Globals_email_fromEmail_password;
@Value("#{globalSettings['Globals.email.toEmail']}")
private String Globals_email_toEmail;
@Value("#{globalSettings['Globals.email.toEmail.BCC']}")
private String Globals_email_toEmail_BCC;
@Resource(name = "CmmnDetailCodeManageService")
private EgovCcmCmmnDetailCodeManageService cmmnDetailCodeManageService;
@Autowired
private CaseBoardService caseBoardService;
@Autowired
private faqBpardService faqBoardservice;
@Autowired
private ExamBoardService examBoardService;
@RequestMapping(value = "/web/main/mainPage.do")
public String siteMainPage(HttpServletRequest request, ModelMap model, HttpSession session) throws Exception {
/** 메인비주얼 */
model.addAttribute("mainzoneImg", this.mainzone()); // PC
/** 팝업 괸리 */
model.addAttribute("popupList", this.Popup());
/** 알림창괸리 */
model.addAttribute("popupzoneImg", this.popupzone());
/** 배너괸리 */
model.addAttribute("bannerList", this.banner());
/** 공지사항 */
model.addAttribute("noticeList", this.bbsList("notice", 0, 5));
/** 뉴스레터 */
model.addAttribute("newsLetterList", this.bbsList("news", 0, 2));
/** 뉴스레터 */
model.addAttribute("faqList", this.faqList());
model.addAttribute("examList", this.examList());
return "web/main/mainPage";
}
/**
* 사용자 상단 매뉴
*/
@RequestMapping(value = "/web/com/webCommonHeader.do")
public String siteWebCommonHeader(@RequestParam Map<String, Object> commandMap,
@ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model, HttpServletRequest request,
HttpSession session) throws Exception {
// 로그인 권한정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()
? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser()
: null;
String userAuthority = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority());
// 권한별 메뉴표시
if (!userAuthority.equals("ROLE_ADMIN") && userAuthority != "") {
menuManageVO.setAuthorCode(userAuthority);
} else if (userAuthority.equals("ROLE_ADMIN")) {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
} else {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
}
List<MenuManageJTreeVO> menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO);
menuDepth2ChildCnt(menuResultList);
model.addAttribute("menuResultList", menuResultList);
return "web/com/webCommonHeader";
}
/**
* 사용자 footer
*/
@RequestMapping(value = "/web/com/webCommonFooter.do")
public String siteWebCommonFooter(@RequestParam Map<String, Object> commandMap, HttpServletRequest request,
ModelMap model) throws Exception {
LoginLog loginLog = new LoginLog();
if (request.getRequestURI().contains("/web/main/mainPage.do")) { // 사용자 메인
loginLog.setProgrmFileNm("mainPage");
loginLog.setMenuNm("사용자메인");
} else if (request.getRequestURI().contains("/web/survey/surveyList")) { // 설문조사
loginLog.setProgrmFileNm("surveyList");
loginLog.setMenuNm("설문조사");
} else if (request.getRequestURI().contains("/web/content.do")) { // 컨텐츠
if (commandMap.get("proFn") != null) {
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchCondition("proFn");
tempMenuManageVO.setAuthorCode((String) commandMap.get("proFn"));
MenuManageVO resultVO = menuManageService.selectMenuManage(tempMenuManageVO);
loginLog.setProgrmFileNm((String) commandMap.get("proFn"));
if (resultVO != null) {
loginLog.setMenuNm(resultVO.getMenuNm());
}
}
} else if (commandMap.get("bbsId") != null) { // 나머지 모든 게시판
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchKeyword((String) commandMap.get("bbsId"));
tempMenuManageVO.setSearchCondition("bbsId");
MenuManageVO resultVO = menuManageService.selectMenuManage(tempMenuManageVO);
loginLog.setProgrmFileNm((String) commandMap.get("bbsId"));
if (resultVO != null) {
loginLog.setMenuNm(resultVO.getMenuNm());
}
} else {
loginLog.setProgrmFileNm(null);
}
// 사용자 방문수 insert
{
// if(null == loginLogService.selectLoginUserLog(loginLog)){ //오늘날짜의 IP조회
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat("yyyyMMdd", Locale.KOREA);
Date currentTime = new Date();
String mTime = mSimpleDateFormat.format(currentTime);
HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
String ip = req.getHeader("X-FORWARDED-FOR");
if (ip == null) {
ip = req.getRemoteAddr();
}
loginLog.setLoginIp(ip);
loginLog.setCreatDt(mTime);
loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O
loginLog.setErrOccrrAt("N");
loginLog.setErrorCode("");
loginLog.setUserAt("U");
Object obj = EgovUserDetailsHelper.getAuthenticatedUser();
if (obj != null && !"anonymousUser".equals(obj)) {
LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
loginLog.setLoginId(loginVO.getId());
} else {
loginLog.setLoginId("");
}
if (isMobile(request)) {
loginLog.setDeviceType("M");
} else {
loginLog.setDeviceType("P");
}
if (null != request.getQueryString() && !"".equals(request.getQueryString())) {
loginLog.setUrl(request.getRequestURI() + "?" + request.getQueryString());
} else {
loginLog.setUrl(request.getRequestURI());
}
// loginLogService.logInsertLoginLog(loginLog);
// loginLogService.logInsertLoginLogNewStep1(loginLog);
// }
// 오늘 접속 / 최종접속
// LoginLog footerLog = new LoginLog();
// footerLog = loginLogService.selectLogCnt(footerLog);
// model.addAttribute("footerLog", footerLog);
}
// model.addAttribute("loginLog", loginLog);
return "web/com/webCommonFooter";
}
/**
* 사용자 만족도 관리/매뉴 담당자 가져오기
*/
@RequestMapping(value = "/web/com/webSatisCommonFooter.do")
public String siteWebSatisCommonFooter(@RequestParam Map<String, Object> commandMap, HttpServletRequest request,
ModelMap model, Model model2) throws Exception {
MenuManageVO tempMenuManageVO = new MenuManageVO();
String url = request.getRequestURI();
String AuthorCode = "ROLE_ANONYMOUS"; // 해당 푸터는 데코레이트에서 */web/*만 타므로 무조건 사용자 메뉴이다.
if (request.getRequestURI().contains("/web/content.do")) {
tempMenuManageVO.setSearchCondition("proFn");
tempMenuManageVO.setAuthorCode(AuthorCode);
tempMenuManageVO.setSearchKeyword((String) commandMap.get("proFn"));
url += "?proFn=" + commandMap.get("proFn");
} else if (commandMap.get("bbsId") != null) {
tempMenuManageVO.setSearchKeyword((String) commandMap.get("bbsId"));
tempMenuManageVO.setSearchCondition("bbsId");
tempMenuManageVO.setAuthorCode(AuthorCode);
url += "?" + commandMap.get("bbsId");
} else {
String tempUrl = request.getRequestURI();
ComDefaultVO searchVO = new ComDefaultVO();
searchVO.setSearchKeyword(tempUrl);
ProgrmManageVO progrmManageVO = progrmManageService.selectProgrmUrl(searchVO);
if (null != progrmManageVO) {
tempMenuManageVO.setSearchCondition("Y");
tempMenuManageVO.setSearchKeyword(progrmManageVO.getProgrmFileNm());
}
}
MenuManageVO resultVO = menuManageService.selectMenuManage_Satis(tempMenuManageVO);
model.addAttribute("resultVO", resultVO);
model.addAttribute("url", url);
return "web/com/webSatisCommonFooter";
}
/**
* 사용자 footer
*/
@RequestMapping(value = "/{siteId}/web/com/webThemeCommonFooter.do")
public String webThemeCommonFooter(@PathVariable("siteId") String siteId,
@RequestParam Map<String, Object> commandMap, HttpServletRequest request, ModelMap model) throws Exception {
LoginLog loginLog = new LoginLog();
if (request.getRequestURI().contains("/web/main/mainPage.do")) { // 사용자 메인
loginLog.setProgrmFileNm("mainPage");
loginLog.setMenuNm("사용자메인");
} else if (request.getRequestURI().contains("/web/survey/surveyList")) { // 설문조사
loginLog.setProgrmFileNm("surveyList");
loginLog.setMenuNm("설문조사");
} else if (request.getRequestURI().contains("/web/content.do")) { // 컨텐츠
if (commandMap.get("proFn") != null) {
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchCondition("proFn");
tempMenuManageVO.setAuthorCode((String) commandMap.get("proFn"));
MenuManageVO resultVO = menuManageService.selectMenuManage(tempMenuManageVO);
loginLog.setProgrmFileNm((String) commandMap.get("proFn"));
if (resultVO != null) {
loginLog.setMenuNm(resultVO.getMenuNm());
}
}
} else if (commandMap.get("bbsId") != null) { // 나머지 모든 게시판
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchKeyword((String) commandMap.get("bbsId"));
tempMenuManageVO.setSearchCondition("bbsId");
/*
* ComDefaultVO searchVO = new ComDefaultVO();
* searchVO.setSearchCondition("bbsId");
* searchVO.setSearchKeyword((String)commandMap.get("bbsId"));
*/ MenuManageVO resultVO = menuManageService.selectMenuManage(tempMenuManageVO);
loginLog.setProgrmFileNm((String) commandMap.get("bbsId"));
if (resultVO != null) {
loginLog.setMenuNm(resultVO.getMenuNm());
}
} else {
loginLog.setProgrmFileNm(null);
}
// 사용자 방문수 insert
{
if (loginLog.getProgrmFileNm() != null) { // 미리보기 경우가 아닌경우
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat("yyyyMMdd", Locale.KOREA);
Date currentTime = new Date();
String mTime = mSimpleDateFormat.format(currentTime);
HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
String ip = req.getHeader("X-FORWARDED-FOR");
if (ip == null) {
ip = req.getRemoteAddr();
}
loginLog.setLoginIp(ip);
loginLog.setCreatDt(mTime);
loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O
loginLog.setErrOccrrAt("N");
loginLog.setErrorCode("");
loginLog.setUserAt("U");
loginLog.setLoginId(""); // connnect_id
if (isMobile(request)) {
loginLog.setDeviceType("M");
} else {
loginLog.setDeviceType("P");
}
loginLogService.logInsertLoginLog(loginLog);
}
}
model.addAttribute("loginLog", loginLog);
model.addAttribute("siteId", siteId);
String siteFolder = "site/" + siteId;
if (siteId.equals("linc") || siteId.equals("klc")) {
return "web/" + siteFolder + "/com/webCommonFooter";
} else {
SiteManagerVO siteManagerVO = new SiteManagerVO();
siteManagerVO.setSiteId(siteId);
setSiteinfo(siteManagerVO, model, request);
// return
// "web/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()+"/com/webCommonFooter";
return "web/site/" + siteId + "/" + siteManagerVO.getIsMobile() + "/com/webCommonFooter";
}
}
/* 모바일접속 유무 */
private boolean isMobile(HttpServletRequest request) {
String userAgent = request.getHeader("user-agent");
boolean mobile1 = userAgent.matches(
".*(iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson).*");
boolean mobile2 = userAgent.matches(".*(LG|SAMSUNG|Samsung).*");
if (mobile1 || mobile2) {
return true;
}
return false;
}
/* 최초 사이트 체크와 동시에 session 설정, 점검중 페이지 적용 */
@RequestMapping(value = "/com/firstSiteCheck.do")
public String firstSiteCheck(@ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO,
HttpServletRequest request, @RequestParam Map<String, Object> commandMap, ModelMap model) throws Exception {
// 로그인 권한정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()
? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser()
: null;
String userAuthority = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority());
// 권한별 메뉴표시
if (!userAuthority.equals("ROLE_ADMIN")
/* && !userAuthority.equals("ROLE_ADR_ADMIN") */
&& userAuthority != "") {
menuManageVO.setAuthorCode(userAuthority);
} else if (userAuthority.equals("ROLE_ADMIN") || userAuthority.equals("ROLE_ADR_ADMIN")) {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
} else {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
}
// 대국민, 조정위원일 경우 원뎁스 메뉴에 대시보드 링크를 걸기위해 권한 넘겨줌
model.addAttribute("auth", menuManageVO.getAuthorCode());
menuManageVO.setMenuUserType(menuManageVO.getMenuUserType());
List<MenuManageJTreeVO> menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO);
List<String> menuTwoExist = new ArrayList<>(); // 2뎁스의 하위 매뉴가 있는것 조회
HashSet<String> underMenuEmpty = new HashSet<String>(); // 2뎁스의 하위매뉴 없는것 조회
for (MenuManageJTreeVO menuManage : menuResultList) {
if (menuManage.getDepths().equals("3")) {
menuTwoExist.add(menuManage.getUpperMenuId());
}
if (menuManage.getDepths().equals("2")) {
underMenuEmpty.add(menuManage.getMenuNo());
}
}
HashSet<String> underMenuExist = new HashSet<String>(menuTwoExist); // 하위매뉴가 있는것
underMenuEmpty.removeAll(underMenuExist); // 하위매뉴가 없는것
MenuManageJTreeVO menuManageTopVO = new MenuManageJTreeVO();
menuManageTopVO.setUpperMenuId("#");
menuManageTopVO.setMenuNo("0");
model.addAttribute("menuResultList", menuResultList);
model.addAttribute("underMenuExist", underMenuExist);
model.addAttribute("underMenuEmpty", underMenuEmpty);
// 자신의 위치 정보
List<MenuManageJTreeVO> menuCurrentResultList = new ArrayList<MenuManageJTreeVO>(); // 자신의 위치
MenuManageVO resultVO = new MenuManageVO();
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchCondition("Y");
setViewMenu(request, commandMap, tempMenuManageVO, resultVO, menuManageVO);
menuCurrentResultList = menuCreateManageService.selectMenuListCurrentJtreeWeb(menuManageVO);
Collections.reverse(menuCurrentResultList); // 타이틀 역순을 위해
model.addAttribute("menuCurrentResultList", menuCurrentResultList);
// SiteManagerVO siteManagerVO = new SiteManagerVO();
// 점검중 페이지 체크
// siteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO);
// if("Y".equals(siteManagerVO.getInspFlag() )){ //점검중
// return "web/com/insp";
// }
// SSO 토큰 유효시간 timeout 시 메인페이지로 이동
// if(!"".equals(request.getSession().getAttribute("SsoLogout"))) {
// if(request.getSession().getAttribute("SsoLogout") != null) {
// request.removeAttribute("SsoLogout");
// return "redirect:/";
// }
// }
// model.addAttribute("siteManagerVO", siteManagerVO);
return "web/com/webLayout";
}
/* 사이트 체크 유무 */
@RequestMapping(value = "/{siteId}/web/siteCheck.do")
private String siteCheck(@PathVariable("siteId") String siteId, SiteManagerVO siteManagerVO,
HttpServletRequest request, RedirectAttributes redirectAttributes) {
int totCnt = 0;
siteManagerVO.setSiteId(siteId);
try {
totCnt = egovSiteManagerService.selectSiteManagerListTotCnt(siteManagerVO);
} catch (Exception e) {
System.out.println("Exception Occured!!!");
}
if (totCnt == 0) {
return "web/com/alert_site";
/*
* redirectAttributes.addFlashAttribute("message", "등록된 사이트가 없습니다.");
* RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/blank"); return
* redirectUrlMaker.getRedirectUrl();
*/
} else {
return "blank";
}
// return "web/main/mainPage";
}
private void setViewMenu(HttpServletRequest request, Map<String, Object> commandMap, MenuManageVO tempMenuManageVO,
MenuManageVO resultVO, MenuManageJTreeVO menuManageVO) throws Exception {
if (request.getRequestURI().contains("/web/survey_back")) {// 설문조사(각 사이트 마다 이름이 달라) survey > survey_back 으로 사용한
tempMenuManageVO.setSearchKeyword("surveyList");
} else if (request.getRequestURI().contains("schdlr")) { // 스케줄러 경우(일,월,년 url이 달라
tempMenuManageVO.setSearchKeyword("schdlrManage");
} else if (null != (String) commandMap.get("proFn") || null != (String) commandMap.get("bbsId")
|| null != (String) commandMap.get("nttId")) { // 컨텐츠 타입, 게시판 타입의 경우
if (null != (String) commandMap.get("proFn")) { // 컨텐츠
tempMenuManageVO.setSearchKeyword((String) commandMap.get("proFn"));
} else if (null != (String) commandMap.get("bbsId")) { // 게시판
ComDefaultVO searchVO = new ComDefaultVO();
String url = progrmManageService.getBbsUrlByNttId((String) commandMap.get("bbsId"));
searchVO.setSearchKeyword(url);
ProgrmManageVO progrmManageVO = progrmManageService.selectProgrmUrl(searchVO);
if (null != progrmManageVO) {
tempMenuManageVO.setSearchKeyword(progrmManageVO.getProgrmFileNm());
}
} else { // nttId 통합검색시
BoardVO tempBoardVO = new BoardVO();
tempBoardVO.setNttId(Integer.parseInt((String) commandMap.get("nttId")));
BoardMasterVO bmVO = bbsAttrbService.selectBbsIdByNttId(tempBoardVO);
ComDefaultVO searchVO = new ComDefaultVO();
String url = progrmManageService.getBbsUrlByNttId(bmVO == null ? "" : bmVO.getBbsId());
searchVO.setSearchKeyword(url);
ProgrmManageVO progrmManageVO = progrmManageService.selectProgrmUrl(searchVO);
if (null != progrmManageVO) {
tempMenuManageVO.setSearchKeyword(progrmManageVO.getProgrmFileNm());
}
}
} else { // ajax 로 검색시
// 일반 프로그램시
if (commandMap.get("url") != null) {
String menuUrl = request.getRequestURI();
if (menuUrl.equals("/web/cop/org/selectOrgDetail.do")) {
menuUrl = "/web/cop/org/selectOrgList.do";
}
/* 메뉴에 표시되는 방법 */
else if (menuUrl.equals("/web/kccadr/adjstExpDetail/adjstReqStatusDetail.do") // 체험하기
|| menuUrl.equals("/web/kccadr/adjstExp/adjstIncidentList.do")
|| menuUrl.equals("/web/kccadr/adjstExpDetail/adjstIncidentEndDetail.do")) { // 체험하기
menuUrl = "/web/kccadr/adjstExp/adjstExpMainPage.do";
}
/* 분쟁조정 상담 > 무료법률 상담 */
else if(menuUrl.contains("/web/user/lawCounsel/case/02/159/step")) {
menuUrl = "/web/user/lawCounsel/case/02/159/step01.do";
}
// 상세화면 URL로 메뉴화면 매핑이 안되어, 문자열 치환으로 매핑...
String strUrl = menuUrl/* .replace("Info", "List") */
.replace("Detail", "List")
/* .replace("Regist", "List") */
.replace("Article", "List").replace("Inqire", "List").replace("addFcltMgr", "fcltMgrList")
.replace("mainzoneModify", "mainzoneList");
menuUrl = strUrl;
ComDefaultVO searchVO = new ComDefaultVO();
searchVO.setSearchKeyword(menuUrl);
ProgrmManageVO progrmManageVO = progrmManageService.selectProgrmUrl(searchVO);
if (null != progrmManageVO) {
tempMenuManageVO.setSearchKeyword(progrmManageVO.getProgrmFileNm());
}
} else { // 조직도 상세
String menuUrl = request.getRequestURI();
if (menuUrl.equals("/web/cop/org/selectOrgDetail.do")) {
menuUrl = "/web/cop/org/selectOrgList.do";
ComDefaultVO searchVO = new ComDefaultVO();
searchVO.setSearchKeyword(menuUrl);
ProgrmManageVO progrmManageVO = progrmManageService.selectProgrmUrl(searchVO);
if (null != progrmManageVO) {
tempMenuManageVO.setSearchKeyword(progrmManageVO.getProgrmFileNm());
}
}
}
}
if (!"dir".equals(tempMenuManageVO.getSearchKeyword())) {
resultVO = menuManageService.selectMenuManage(tempMenuManageVO);
}
// menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
if (resultVO != null) {
menuManageVO.setMenuNo(resultVO.getMenuNo() + "");
}
}
/**
* 사용자 페이지의 네비 상단 매뉴
*/
@RequestMapping(value = "/web/com/naviWrap.do")
public String siteWebCommonNaviWrap(@RequestParam Map<String, Object> commandMap, HttpServletRequest request,
@ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception {
// 전자조정 시작
// 아래 처리중 중간네비 메뉴 조회를 위해 with recurseive 중첩절을 쓰는 쿼리가 있음으로, 큐브리드 쿼리화 필요
// 로그인 권한 정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()
? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser()
: null;
String auth = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority());
if (auth.equals("")) {
auth = "ROLE_ANONYMOUS";
}
// 현재 로그인한 권한으로 셋팅해준다.
menuManageVO.setAuthorCode(auth);
// 자신의 위치 정보
List<MenuManageJTreeVO> menuCurrentResultList = new ArrayList<MenuManageJTreeVO>(); // 자신의 위치
List<MenuManageJTreeVO> menuLeftResultList = new ArrayList<MenuManageJTreeVO>(); // 자신이 속한 위치
MenuManageVO resultVO = new MenuManageVO();
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchCondition("Y");
setViewMenu(request, commandMap, tempMenuManageVO, resultVO, menuManageVO);
menuCurrentResultList = menuCreateManageService.selectMenuListCurrentJtreeWeb(menuManageVO);
// 최상단 매뉴 가져오기 : 상단 그림 변화
menuLeftResultList = menuCreateManageService.selectMenuLeftListJtreeWeb(menuManageVO);
List<MenuManageJTreeVO> showOneDepthMenu = new ArrayList<MenuManageJTreeVO>();
List<MenuManageJTreeVO> showTwoDepthMenu = new ArrayList<MenuManageJTreeVO>();
for (MenuManageJTreeVO tempLeftMenu : menuLeftResultList) {
if (tempLeftMenu.getDepths().equals("2")) {
for (MenuManageJTreeVO tempCurrentTwoMenu : menuCurrentResultList) {
if (tempLeftMenu.getUpperMenuId().equals(tempCurrentTwoMenu.getMenuNo())) {
showTwoDepthMenu.add(tempLeftMenu);
}
}
}
}
menuManageVO.setAuthorCode(auth);
menuManageVO.setMenuUserType(menuManageVO.getMenuUserType());
List<MenuManageJTreeVO> menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO);
for (MenuManageJTreeVO tempResultVo : menuResultList) { // 1 뎁스
if (tempResultVo.getDepths().equals("1")) {
showOneDepthMenu.add(tempResultVo);
}
}
// model.addAttribute("topMenuId", topMenuId);
// model.addAttribute("subMenuFile", subMenuFile);
// model.addAttribute("pozNmText", pozNmText);
//
// model.addAttribute("menuText", menuText);
model.addAttribute("showOneDepthMenu", showOneDepthMenu);
model.addAttribute("showTwoDepthMenu", showTwoDepthMenu);
// model.addAttribute("showThreeDepthMenu", showThreeDepthMenu);
// model.addAttribute("showFourDepthMenu", showFourDepthMenu);
// model.addAttribute("menuUnderResultList", menuUnderResultList); //하단매뉴
model.addAttribute("menuCurrentResultList", menuCurrentResultList);
model.addAttribute("menuLeftResultList", menuLeftResultList);
// model.addAttribute("menuResultList", menuResultList);
// 아래 처리중 중간네비 메뉴 조회를 위해 with recurseive 중첩절을 쓰는 쿼리가 있음으로, 큐브리드 쿼리화 필요
// 전자조정 종료
return "web/com/webCommonNaviWrap";
}
/**
* 사용자 좌측 매뉴
*/
@RequestMapping(value = "/web/com/leftMenu.do")
public String webCommonLeftMenu(HttpServletRequest request,
@ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model,
@RequestParam Map<String, Object> commandMap) throws Exception {
// 로그인 권한정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()
? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser()
: null;
String userAuthority = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority());
// 권한별 메뉴표시
if (!userAuthority.equals("ROLE_ADMIN") && userAuthority != "") {
menuManageVO.setAuthorCode(userAuthority);
} else if (userAuthority.equals("ROLE_ADMIN")) {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
} else {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
}
// 자신의 위치 정보
List<MenuManageJTreeVO> menuCurrentResultList = new ArrayList<MenuManageJTreeVO>();
List<MenuManageJTreeVO> whereAmIList = new ArrayList<MenuManageJTreeVO>();
MenuManageVO resultVO = new MenuManageVO();
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchCondition("Y");
setViewMenu(request, commandMap, tempMenuManageVO, resultVO, menuManageVO);
menuCurrentResultList = menuCreateManageService.selectMenuListCurrentJtreeWebCustom(menuManageVO);
MenuManageJTreeVO whereAmIVO = new MenuManageJTreeVO();
if (menuCurrentResultList != null && menuCurrentResultList.size() > 0) {
whereAmIVO = menuCurrentResultList.get(0);
whereAmIVO.setAuthorCode(menuManageVO.getAuthorCode());
whereAmIList = menuCreateManageService.selectMenuListJtreeWebCustom(whereAmIVO);
}
List<Map<String, Object>> depth2CntList = new ArrayList<Map<String, Object>>();
for(MenuManageJTreeVO tmpVO : whereAmIList.stream().filter(t -> "2".equals(t.getDepth())).collect(Collectors.toList())) {
Map<String, Object> depth2Cnt = new HashMap<String, Object>();
Integer tmpInt = 0;
tmpInt = (int) whereAmIList.stream().filter(t ->
t.getDepth().equals("3")
&& tmpVO.getMenuNo().equals(t.getUpperMenuId())
).count();
depth2Cnt.put("menuNo", tmpVO.getMenuNo());
depth2Cnt.put("cnt", tmpInt);
depth2CntList.add(depth2Cnt);
}
model.addAttribute("depth2CntList", depth2CntList);
model.addAttribute("whereAmIVO", whereAmIVO);
MenuManageJTreeVO whereAmIVO_dep2 = new MenuManageJTreeVO();
if (whereAmIList != null && whereAmIList.size() > 0) {
whereAmIVO_dep2 = whereAmIList.stream().filter(t ->
menuManageVO.getMenuNo().equals(t.getMenuNo())
).findFirst().get();
if("2".equals(whereAmIVO_dep2.getDepth())) {
model.addAttribute("whereAmIVO_dep2", whereAmIVO_dep2.getMenuNo());
}else {
model.addAttribute("whereAmIVO_dep2", whereAmIVO_dep2.getUpperMenuId());
}
}
model.addAttribute("whereAmIList", whereAmIList);
List<MenuManageJTreeVO> menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO);
model.addAttribute("menuResultList", menuResultList);
return "web/com/webCommonLeftMenu";
}
private void setSiteinfo(SiteManagerVO siteManagerVO, ModelMap model, HttpServletRequest request) throws Exception {
SiteManagerVO tempSiteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO);
if (tempSiteManagerVO != null) {
siteManagerVO.setIsMobile("pc");
siteManagerVO.setTheme(tempSiteManagerVO.getTheme());
siteManagerVO.setSiteNm(tempSiteManagerVO.getSiteNm());
} else {
siteManagerVO.setTheme("01");
siteManagerVO.setSiteNm("타이틀");
}
WebUtil util = new WebUtil();
if (util.isMobile(request)) {
siteManagerVO.setIsMobile("mobile");
}
model.addAttribute("siteId", siteManagerVO.getSiteId());
model.addAttribute("siteNm", siteManagerVO.getSiteNm());
// model.addAttribute("site_path" ,
// "/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile());
model.addAttribute("site_path", "/site/" + siteManagerVO.getSiteId() + "/" + siteManagerVO.getIsMobile());
}
/*
* @RequestMapping(value="/{siteId}/web/siteMap.do") public String
* siteMap(@PathVariable("siteId") String siteId, @RequestParam Map<String,
* Object> commandMap, HttpServletRequest
* request, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO,
* ModelMap model) throws Exception {
*
* model.addAttribute("siteId", siteId); String siteFolder = "site/"+siteId ;
*
* model.addAttribute("site_path", "/"+siteFolder); return
* "web/"+siteFolder+"/member/sitemap";
*
* }
*/
// 사이트맵 개발
@RequestMapping(value = "/{siteId}/web/siteMap.do")
public String siteMap(@PathVariable("siteId") String siteId, @RequestParam Map<String, Object> commandMap,
HttpServletRequest request, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model)
throws Exception {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
menuManageVO.setMenuUserType(menuManageVO.getMenuUserType());
// List<MenuManageJTreeVO> menuResultList =
// menuCreateManageService.selectMenuListJtree(menuManageVO) ;
menuManageVO.setSiteId(siteId);
List<MenuManageJTreeVO> menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO);
List<String> menuTwoExist = new ArrayList<>(); // 2뎁스의 하위 매뉴가 있는것 조회
HashSet<String> underMenuEmpty = new HashSet<String>(); // 2뎁스의 하위매뉴 없는것 조회
for (MenuManageJTreeVO menuManage : menuResultList) {
if (menuManage.getDepths().equals("3")) {
menuTwoExist.add(menuManage.getUpperMenuId());
}
if (menuManage.getDepths().equals("2")) {
underMenuEmpty.add(menuManage.getMenuNo());
}
}
HashSet<String> underMenuExist = new HashSet<String>(menuTwoExist); // 하위매뉴가 있는것
underMenuEmpty.removeAll(underMenuExist); // 하위매뉴가 없는것
MenuManageJTreeVO menuManageTopVO = new MenuManageJTreeVO();
menuManageTopVO.setUpperMenuId("#");
menuManageTopVO.setMenuNo("0");
model.addAttribute("menuResultList", menuResultList);
model.addAttribute("underMenuExist", underMenuExist);
model.addAttribute("underMenuEmpty", underMenuEmpty);
model.addAttribute("siteId", siteId);
String siteFolder = "site/" + siteId;
model.addAttribute("site_path", "/" + siteFolder);
// 샘플테마사용시 고정 이미지 가져오기
SiteManagerVO siteManagerVO = new SiteManagerVO();
siteManagerVO.setSiteId(siteId);
siteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO);
if (!"".equals(siteManagerVO.getTheme()) && null != siteManagerVO.getTheme()) {
model.addAttribute("siteManagerVO", siteManagerVO);
}
return "web/" + siteFolder + "/member/sitemap";
}
/**
* 사용자 페이지의 네비 상단 매뉴
*/
@RequestMapping(value = "/{siteId}/web/com/naviWrapAjax.do")
public String ajaxSiteWebCommonNaviWrap(@PathVariable("siteId") String siteId,
@RequestParam Map<String, Object> commandMap, HttpServletRequest request,
@ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception {
// 자신의 위치 정보
List<MenuManageJTreeVO> menuCurrentResultList = new ArrayList<MenuManageJTreeVO>(); // 자신의 위치
List<MenuManageJTreeVO> menuLeftResultList = new ArrayList<MenuManageJTreeVO>(); // 자신이 속한 위치
List<MenuManageJTreeVO> menuUnderResultList = new ArrayList<MenuManageJTreeVO>(); // 한단계 하위 위치
MenuManageVO resultVO = new MenuManageVO();
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchCondition("Y");
setViewMenu(request, commandMap, tempMenuManageVO, resultVO, menuManageVO);
menuCurrentResultList = menuCreateManageService.selectMenuListCurrentJtreeWeb(menuManageVO);
// 최상단 매뉴 가져오기 : 상단 그림 변화
menuLeftResultList = menuCreateManageService.selectMenuLeftListJtreeWeb(menuManageVO);
menuUnderResultList = menuCreateManageService.selectMenuUnderListJtreeWeb(menuManageVO);
List<MenuManageJTreeVO> showOneDepthMenu = new ArrayList<MenuManageJTreeVO>();
List<MenuManageJTreeVO> showTwoDepthMenu = new ArrayList<MenuManageJTreeVO>();
List<MenuManageJTreeVO> showThreeDepthMenu = new ArrayList<MenuManageJTreeVO>();
List<MenuManageJTreeVO> showFourDepthMenu = new ArrayList<MenuManageJTreeVO>();
for (MenuManageJTreeVO tempLeftMenu : menuLeftResultList) {
if (tempLeftMenu.getDepths().equals("2")) {
for (MenuManageJTreeVO tempCurrentTwoMenu : menuCurrentResultList) {
if (tempLeftMenu.getUpperMenuId().equals(tempCurrentTwoMenu.getMenuNo())) {
showTwoDepthMenu.add(tempLeftMenu);
}
}
}
if (tempLeftMenu.getDepths().equals("3")) {
for (MenuManageJTreeVO tempCurrentThreeMenu : menuCurrentResultList) {
if (tempLeftMenu.getUpperMenuId().equals(tempCurrentThreeMenu.getMenuNo())) {
showThreeDepthMenu.add(tempLeftMenu);
}
}
}
if (tempLeftMenu.getDepths().equals("4")) {
for (MenuManageJTreeVO tempCurrentThreeMenu : menuCurrentResultList) {
if (tempLeftMenu.getUpperMenuId().equals(tempCurrentThreeMenu.getMenuNo())) {
showFourDepthMenu.add(tempLeftMenu);
}
}
}
}
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
menuManageVO.setMenuUserType(menuManageVO.getMenuUserType());
List<MenuManageJTreeVO> menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO);
for (MenuManageJTreeVO tempResultVo : menuResultList) { // 1 뎁스
if (tempResultVo.getDepths().equals("1")) {
showOneDepthMenu.add(tempResultVo);
}
}
model.addAttribute("showOneDepthMenu", showOneDepthMenu);
model.addAttribute("showTwoDepthMenu", showTwoDepthMenu);
model.addAttribute("showThreeDepthMenu", showThreeDepthMenu);
model.addAttribute("showFourDepthMenu", showFourDepthMenu);
model.addAttribute("menuUnderResultList", menuUnderResultList); // 하단매뉴
model.addAttribute("menuCurrentResultList", menuCurrentResultList);
model.addAttribute("menuLeftResultList", menuLeftResultList);
model.addAttribute("menuResultList", menuResultList);
model.addAttribute("siteId", siteId);
String siteFolder = "site/" + siteId;
model.addAttribute("site_path", "/" + siteFolder);
return "web/" + siteFolder + "/com/webCommonNaviWrapAjax";
}
/* 메일전송 첨부파일등록/수정 view */
@RequestMapping(value = "/kcc/mail/itnSendMailForm.do")
public String intSendMailForm(@RequestParam Map<?, ?> commandMap, @ModelAttribute("fmsFileVO") FmsFileVO fmsFileVO,
HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes,
Model model, HttpSession session) throws Exception {
List<FmsFileVO> fmsFileList = new ArrayList<FmsFileVO>();
model.addAttribute("fmsFileList", fmsFileList); // fms파일정보
List<FmsFileVO> fileList = new ArrayList<>();
model.addAttribute("fileList", fileList);
return "uss/ion/fms/ItnSendMailForm";
}
/* 메일전송 process */
@RequestMapping(value = "/kcc/mail/itnSendMailPro.do")
public ModelAndView insertFmsFileOrg(@RequestParam Map<?, ?> commandMap,
@ModelAttribute("fmsFileVO") FmsFileVO fmsFileVO, final MultipartHttpServletRequest multiRequest,
HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
String recipient = Globals_email_toEmail; // 받는 사람의 메일주소를 입력해주세요.
Properties props = System.getProperties(); // SMTP 서버 정보 설정
props.put("mail.smtp.host", Globals_email_host);
props.put("mail.smtp.port", Globals_email_port);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.trust", Globals_email_host);
Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { // Session 생성
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(Globals_email_fromUser, Globals_email_fromEmail_password);
}
});
// 테스트용
String revRecipient = (String) commandMap.get("emailAddrRev");
try {
Message message = new MimeMessage(session); // MimeMessage 생성
message.setFrom(new InternetAddress(Globals_email_fromEmail)); // 발신자 셋팅 , 보내는 사람의 이메일주소를 한번 더 입력합니다. 이때는
// 이메일 풀 주소를 다 작성해주세요.
message.setRecipient(Message.RecipientType.TO, new InternetAddress(revRecipient)); // 수신자셋팅
message.addRecipient(Message.RecipientType.BCC, new InternetAddress(Globals_email_toEmail_BCC)); // 숨은참조자
message.setSubject((String) commandMap.get("subject")); // 제목셋팅
// 메일 내용을 설정을 위한 클래스를 설정합니다.
message.setContent(new MimeMultipart());
// 메일 내용을 위한 Multipart클래스를 받아온다. (위 new MimeMultipart()로 넣은 클래스입니다.)
Multipart multipart = (Multipart) message.getContent();
// html 형식으로 본문을 작성해서 바운더리에 넣습니다.
StringBuffer contentBf = new StringBuffer();
contentBf.append("<작성자 메일주소 >: " + (String) commandMap.get("emailAddr"));
contentBf.append("\r\n");
contentBf.append("\r\n");
contentBf.append("\r\n");
contentBf.append("<내용> ");
contentBf.append("\r\n");
contentBf.append((String) commandMap.get("content"));
multipart.addBodyPart(getContents(contentBf.toString()));
/* 파일등록 */
List<FileVO> result = null;
String uploadFolder = "";
final Map<String, MultipartFile> files = multiRequest.getFileMap();
FileVO vo = null;
String realFileLoc = "";
if (!files.isEmpty()) {
result = fileUtil.parseFileInf(files, "MAIL_", 0, "", uploadFolder, "");
Iterator<FileVO> iter = result.iterator();
while (iter.hasNext()) {
vo = iter.next();
realFileLoc = vo.getFileStreCours() + vo.getStreFileNm();
// addMulitAttachment(multipart , "C:"+realFileLoc , vo.getOrignlFileNm());
addMulitAttachment(multipart, realFileLoc, vo.getOrignlFileNm());
}
if (vo == null) {
} else {
}
}
Transport.send(message);
} catch (Exception e) {
System.out.println("file Exception Error");
}
return modelAndView;
}
@RequestMapping(value = "/web/kccadr/kccadrCom/kccadrConstantsJsp.do")
public String kccadrConstantsJsp() throws Exception {
return "web/kccadr/kccadrCom/kccadrConstantsJsp";
}
/**
* 사용자 퀵 매뉴
*/
@RequestMapping(value = "/web/com/quickWrap.do")
public String webCommonQuickMenu(ModelMap model) throws Exception {
return "web/com/webCommonQuickMenu";
}
/**
* 사용자 좌측 매뉴
*/
@RequestMapping(value = "/web/com/subVisual.do")
public String webCommonSubVisual(HttpServletRequest request,
@ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model,
@RequestParam Map<String, Object> commandMap) throws Exception {
// 로그인 권한정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()
? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser()
: null;
String userAuthority = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority());
if (!userAuthority.equals("ROLE_ADMIN") && userAuthority != "") {
menuManageVO.setAuthorCode(userAuthority);
} else if (userAuthority.equals("ROLE_ADMIN")) {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
} else {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
}
// 자신의 위치 정보
List<MenuManageJTreeVO> menuCurrentResultList = new ArrayList<MenuManageJTreeVO>();
List<MenuManageJTreeVO> whereAmIList = new ArrayList<MenuManageJTreeVO>();
MenuManageVO resultVO = new MenuManageVO();
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchCondition("Y");
setViewMenu(request, commandMap, tempMenuManageVO, resultVO, menuManageVO);
menuCurrentResultList = menuCreateManageService.selectMenuListCurrentJtreeWebCustom(menuManageVO);
MenuManageJTreeVO whereAmIVO = new MenuManageJTreeVO();
if (menuCurrentResultList != null && menuCurrentResultList.size() > 0) {
whereAmIVO = menuCurrentResultList.get(0);
whereAmIVO.setAuthorCode(menuManageVO.getAuthorCode());
whereAmIList = menuCreateManageService.selectMenuListJtreeWebCustom(whereAmIVO);
}
model.addAttribute("whereAmIVO", whereAmIVO);
return "web/com/webCommonSubVisual";
}
// 다수의 파일 첨부 파일을 로컬로 부터 읽어와서 BodyPart 클래스로 만든다. (바운더리 변환)
private void addMulitAttachment(Multipart multipart, String realFileLoc, String filename)
throws MessagingException {
try {
DataSource source = new FileDataSource(realFileLoc);
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(MimeUtility.encodeText(filename)); // 한글깨짐방지
multipart.addBodyPart(messageBodyPart);
} catch (UnsupportedEncodingException e) {
System.out.println("UnsupportedEncodingException Occured!!!");
}
}
// 메일의 본문 내용 설정
private BodyPart getContents(String html) throws MessagingException {
BodyPart mbp = new MimeBodyPart();
mbp.setText(html); // setText를 이용할 경우 일반 텍스트 내용으로 설정된다.
// html 형식으로 설정(줄개행 > br로)
// mbp.setContent(html.replaceAll("(\r\n|\n)", "<br />"), "text/html;
// charset=utf-8"); //줄바꿈이 필요해서
return mbp;
}
private void menuDepth2ChildCnt(List<MenuManageJTreeVO> menuResultList) {
List<MenuManageJTreeVO> list = new ArrayList<MenuManageJTreeVO>(menuResultList.stream().filter(t -> "2".equals(t.getDepths())).collect(Collectors.toList()));
for(MenuManageJTreeVO tmpVO : list) {
tmpVO.setChildMenuCnt(
new Long(menuResultList.stream()
.filter( t ->
tmpVO.getMenuNo().equals(t.getUpperMenuId())
)
.count()
).intValue()
);
}
}
/**
* @methodName : mainzone
* @author : JunHo Lee
* @date : 2024.10.10
* @description :
* @return
*/
private EgovMap mainzone(){
/** EgovPropertyService.sample */
MainzoneVO mainzoneVO = new MainzoneVO();
mainzoneVO.setPageUnit(propertiesService.getInt("pageUnit"));
mainzoneVO.setPageSize(propertiesService.getInt("pageSize"));
CmmUtil.getPageing(mainzoneVO, 10);
/** pageing */
mainzoneVO.setUseYn("Y"); // 사용하는것만
mainzoneVO.setDeviceType("P"); // PC
List<EgovMap> mainzoneList = new ArrayList<>();
try {
mainzoneList = (List<EgovMap>)egovPopupManageService.selectMainzoneList(mainzoneVO);
} catch (Exception e) {
} // 상단메인 이미지
if(mainzoneList.size() > 0) {
mainzoneList.sort(Comparator.comparing((EgovMap map) -> Integer.valueOf(((BigDecimal) map.get("sort")).intValue())));
}
return mainzoneList.stream().findFirst().orElse(null);
}
/**
* @methodName : Popup
* @author : JunHo Lee
* @date : 2024.10.10
* @description :
* @return
*/
private List<?> Popup(){
PopupManageVO popupManageVO = new PopupManageVO();
popupManageVO.setRecordCountPerPage(10); // 10개만
popupManageVO.setNtceAt("Y"); // 사용만
popupManageVO.setMainPageFlag("Y"); // 메인화면의 용도(시작일 종료일 사이 조회)
List<?> popupList = new ArrayList<>();
try {
popupList = egovPopupManageService.selectPopupMainList(popupManageVO);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return popupList;
}
/**
* @methodName : popupzone
* @author : JunHo Lee
* @date : 2024.10.10
* @description :
* @return
*/
private EgovMap popupzone(){
/** 알림창괸리 */
PopupzoneVO popupzoneVo = new PopupzoneVO();
popupzoneVo.setFirstIndex(0);
popupzoneVo.setSeCd("02"); // 좌측팝업
popupzoneVo.setUseYn("Y");
popupzoneVo.setSearchSortCnd("MB.sort");
popupzoneVo.setSearchSortOrd("ASC");
List<EgovMap> popupzoneList = new ArrayList<>();
try {
popupzoneList = (List<EgovMap>)egovPopupManageService.selectPopupzoneList(popupzoneVo);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(popupzoneList.size() > 0) {
popupzoneList.sort(Comparator.comparing((EgovMap map) -> Integer.valueOf(((BigDecimal) map.get("sort")).intValue())));
}
return popupzoneList.stream().findFirst().orElse(null);
}
/**
* @methodName : banner
* @author : JunHo Lee
* @date : 2024.10.10
* @description :
* @return
*/
private List<?> banner(){
BannerVO bannerVO = new BannerVO();
bannerVO.setFirstIndex(0);
bannerVO.setRecordCountPerPage(999);
List<BannerVO> bannerList = new ArrayList<>();
try {
bannerList = egovBannerService.selectBannerList(bannerVO);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bannerList;
}
/**
* @methodName : bbsNoticeNews
* @author : JunHo Lee
* @date : 2024.10.10
* @description :
* @param boardIdx
* @param pageStart
* @param perPageNum
* @return
*/
private List<Map<String,Object>> bbsList(String boardIdx, int pageStart, int perPageNum){
Map<String,Object> paramMap = new HashMap<String, Object>();
//페이징 관련
paramMap.put("pageStart", pageStart);
paramMap.put("perPageNum", perPageNum);
paramMap.put("boardIdx", boardIdx);
List<Map<String,Object>> bbsList = caseBoardService.boardList(paramMap);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 공지로 등록된 항목 맨 위로
// 시간 변환
bbsList = bbsList.stream()
.sorted((map1, map2) -> {
String noticeYn1 = (String) map1.get("noticeYn");
String noticeYn2 = (String) map2.get("noticeYn");
if (noticeYn1 == null && noticeYn2 == null) return 0; // 둘 다 null인 경우
if (noticeYn1 == null) return 1; // noticeYn1이 null이면 뒤로 보냄
if (noticeYn2 == null) return -1; // noticeYn2가 null이면 뒤로 보냄
return noticeYn2.compareTo(noticeYn1);
})
.peek(map -> {
Timestamp regTimestamp = (Timestamp) map.get("BBS_REG_DATE");
if (regTimestamp != null) {
LocalDate date = regTimestamp.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
map.put("BBS_REG_DATE", date.format(formatter));
}
})
.collect(Collectors.toList());
return bbsList;
}
private List<Map<String,Object>> faqList(){
Map<String,Object> paramMap = new HashMap<String, Object>();
paramMap.put("PAGESTART", 0);
paramMap.put("PERPAGENUM", 5);
List<Map<String,Object>> bbsList = faqBoardservice.boardListAllFaq(paramMap);
bbsList.stream()
.forEach(t -> {
String faqSetIdx = t.get("FAQ_SETIDX").toString();
//조정신청
if(SeedConstants.FAQ_JOJUNGSINCHUNG.equals(faqSetIdx)) {
t.put("bbsTypeNm", "조정신청");
t.put("bbsTypeUrl", "/web/user/faqBbs/case/101/147/faq101Detail.do?faqSeq="+ t.get("FAQ_SEQ_NUMBER").toString() +"&page=1&searchType=title&searchTilte=");
}
//절차진행
else if(SeedConstants.FAQ_JULCHAJINHENG.equals(faqSetIdx)) {
t.put("bbsTypeNm", "절차진행");
t.put("bbsTypeUrl", "/web/user/faqBbs/case/102/148/faq102Detail.do?faqSeq="+ t.get("FAQ_SEQ_NUMBER").toString() +"&page=1&searchType=title&searchTilte=");
}
//절차종료
else if(SeedConstants.FAQ_JULCHAJONGRYO.equals(faqSetIdx)) {
t.put("bbsTypeNm", "절차종료");
t.put("bbsTypeUrl", "/web/user/faqBbs/case/103/149/faq103Detail.do?faqSeq="+ t.get("FAQ_SEQ_NUMBER").toString() +"&page=1&searchType=title&searchTilte=");
}
});
return bbsList;
}
private List<Map<String,Object>> examList(){
List<Map<String,Object>> bbsList = new ArrayList<>();
for(
int i = Integer.valueOf(SeedConstants.EXAM_GONGJUNG) ;
i < Integer.valueOf(SeedConstants.EXAM_DAERIJUM)+1 ;
i ++
) {
Map<String,Object> paramMap = new HashMap<String, Object>();
paramMap.put("pageStart", 0);
paramMap.put("perPageNum", 1);
paramMap.put("boardIdx", String.valueOf(i));
List<Map<String,Object>> tmpList = new ArrayList<>(examBoardService.boardList(paramMap));
if(tmpList.size() > 0) {
bbsList.add(tmpList.get(0));
}
}
bbsList.stream().forEach(t -> {
String examId = t.get("EXAM_ID").toString();
if(SeedConstants.EXAM_GONGJUNG.equals(examId)){
t.put("menuNm", "공정거래");
t.put("titleColor", "orange");
t.put("url", "/web/user/exam/case/402/162/exam402Detail.do?examNo="+ t.get("EXAM_NO") +"&page=1&titleName=&fileFuncType=exam&searchMenu=ALL&searchType=title&searchTilte=");
} else if(SeedConstants.EXAM_GAMENG.equals(examId)){
t.put("menuNm", "가맹사업거래");
t.put("titleColor", "red");
t.put("url", "/web/user/exam/case/403/163/exam403Detail.do?examNo="+ t.get("EXAM_NO") +"&page=1&titleName=&fileFuncType=exam&searchMenu=ALL&searchType=title&searchTilte=");
} else if(SeedConstants.EXAM_HADO.equals(examId)){
t.put("menuNm", "하도급거래");
t.put("titleColor", "yellow");
t.put("url", "/web/user/exam/case/404/164/exam404Detail.do?examNo="+ t.get("EXAM_NO") +"&page=1&titleName=&fileFuncType=exam&searchMenu=ALL&searchType=title&searchTilte=");
} else if(SeedConstants.EXAM_DAEGYUMO.equals(examId)){
t.put("menuNm", "대규모유통업거래");
t.put("titleColor", "darkorange");
t.put("url", "/web/user/exam/case/405/165/exam405Detail.do?examNo="+ t.get("EXAM_NO") +"&page=1&titleName=&fileFuncType=exam&searchMenu=ALL&searchType=title&searchTilte=");
} else if(SeedConstants.EXAM_BULGONGJUNG.equals(examId)){
t.put("menuNm", "불공정약관");
t.put("titleColor", "darkred");
t.put("url", "/web/user/exam/case/406/166/exam406Detail.do?examNo="+ t.get("EXAM_NO") +"&page=1&titleName=&fileFuncType=exam&searchMenu=ALL&searchType=title&searchTilte=");
} else if(SeedConstants.EXAM_DAERIJUM.equals(examId)){
t.put("menuNm", "대리점거래");
t.put("titleColor", "darkyellow");
t.put("url", "/web/user/exam/case/407/282/exam407Detail.do?examNo="+ t.get("EXAM_NO") +"&page=1&titleName=&fileFuncType=exam&searchMenu=ALL&searchType=title&searchTilte=");
}else {
t.put("menuNm", "공정거래");
t.put("titleColor", "orange");
t.put("url", "/web/user/exam/case/402/162/exam402List.do");
}
});
return bbsList;
}
}