File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package itn.let.mjo.addragency.web;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
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.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import itn.com.cmm.EgovMessageSource;
import itn.com.cmm.LoginVO;
import itn.com.cmm.service.EgovFileMngService;
import itn.com.cmm.service.EgovFileMngUtil;
import itn.com.cmm.service.FileVO;
import itn.com.cmm.util.RedirectUrlMaker;
import itn.let.cop.bbs.service.Board;
import itn.let.cop.bbs.service.BoardMasterVO;
import itn.let.cop.bbs.service.EgovBBSAttributeManageService;
import itn.let.mjo.addr.service.AddrGroupService;
import itn.let.mjo.addr.service.AddrService;
import itn.let.mjo.addragency.service.AddrAgencyService;
import itn.let.mjo.addragency.service.AddrAgencyVO;
import itn.let.mjo.mjocommon.MjonCommon;
import itn.let.sym.site.service.EgovSiteManagerService;
import itn.let.sym.site.service.JoinSettingVO;
import itn.let.utl.sim.service.EgovClntInfo;
import itn.let.utl.user.service.CheckBoardUtil;
import itn.let.utl.user.service.CheckFileUtil;
import itn.let.utl.user.service.CheckLoginUtil;
import itn.let.utl.user.service.MjonNoticeSendUtil;
@Controller
public class AddrAgencyController {
/*
@Resource(name = "MjonMsgSentService")
private MjonMsgSentService mjonMsgSentService;
@Resource(name = "EgovCmmUseService")
private EgovCmmUseService cmmUseService;
*/
@Resource(name="addrAgencyService")
private AddrAgencyService addrAgencyService;
@Resource(name = "checkBoardUtil")
private CheckBoardUtil checkBoardUtil;
@Resource(name = "checkFileUtil")
private CheckFileUtil checkFileUtil;
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
@Resource(name = "EgovBBSAttributeManageService")
private EgovBBSAttributeManageService bbsAttrbService;
@Resource(name="egovMessageSource")
EgovMessageSource egovMessageSource;
@Resource(name="EgovFileMngUtil")
private EgovFileMngUtil egovFileMngUtil;
@Resource(name="EgovFileMngService")
private EgovFileMngService fileMngService;
@Resource(name="AddrService")
private AddrService addrService;
@Resource(name="AddrGroupService")
private AddrGroupService addrGroupService;
/** 알림전송 Util */
@Resource(name = "mjonNoticeSendUtil")
private MjonNoticeSendUtil mjonNoticeSendUtil;
@Resource(name="MjonCommon")
private MjonCommon mjonCommon;
/** 사이트 설정 */
@Resource(name = "egovSiteManagerService")
EgovSiteManagerService egovSiteManagerService;
private static final Logger logger = LoggerFactory.getLogger(AddrAgencyController.class);
/////////////////////////////////////////////////////////////////////////////////////////
//
//
// USER
//
//
/**
* 주소록 입력 대행(무료) 등록 및 리스트 화면
* @param addrVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping(value= {"/web/mjon/addragency/selectAddrAgencyList.do"})
public String selectAddrAgencyListUser(
HttpServletRequest request
, @ModelAttribute("searchVO") AddrAgencyVO addrAgencyVO
, ModelMap model
, RedirectAttributes redirectAttributes
) throws Exception {
logger.debug("AddrAgencyController-selectAddrAgencyListUser");
//사용자 로그인 여부 체크
String isLogin = checkLoginUtil.isUserLogin4PageMove(redirectAttributes);
if (!"Y".equals(isLogin)) return isLogin;
//login 정보 전달
LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
model.addAttribute("loginVO", loginVO);
//ajax를 위한 현재 URL 정보 전달
addrAgencyVO.setUrl(request.getRequestURI());
return "/web/addragency/AddrAgencyList";
}
/**
* 주소록 입력 대행(무료) 등록 리스트 ajax 부분
* @param addrVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping(value= {"/web/mjon/addragency/selectAddrAgencyListAjax.do"})
public String selectAddrAgencyListAjax(
HttpServletRequest request
, @ModelAttribute("searchVO") AddrAgencyVO addrAgencyVO
, ModelMap model
, RedirectAttributes redirectAttributes
) throws Exception {
logger.debug("AddrAgencyController-selectAddrAgencyListAjax");
//사용자 로그인 여부 체크
String isLogin = checkLoginUtil.isLoginCheck4JsonPage(redirectAttributes);
if (!"Y".equals(isLogin)) return "/web/mjon/addragency/selectAddrAgencyList"; //호출하는 base 페이지로 return 해야 한다.
//로그인 정보 획득
LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
// pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(addrAgencyVO);
// pageing step2
addrAgencyVO = this.setPagingStep2(addrAgencyVO, paginationInfo);
//대상 리스트 가져오기
addrAgencyVO.setSiteNm(loginVO.getId());
List<AddrAgencyVO> addrList = addrAgencyService.selectList(addrAgencyVO);
// pageing step3
paginationInfo = this.setPagingStep3(addrList, paginationInfo);
//대상 리스트, 페이징 정보 전달
model.addAttribute("resultList", addrList);
model.addAttribute("paginationInfo", paginationInfo);
return "/web/addragency/AddrAgencyListAjax";
}
/**
* (사용자)게시물을 등록한다.
*
* @param boardVO
* @param board
* @param model
* @return
* @throws Exception
*/
@RequestMapping(value=
{
"/web/mjon/addragency/insertAddrAgencyAjax.do"
, "/uss/ion/addragency/insertAddrAgencyAjax.do"
}
)
public ModelAndView insertAddrAgencyAjax(
HttpServletRequest request
, @ModelAttribute("insertAgency") AddrAgencyVO addrAgencyVO
, final MultipartHttpServletRequest multiRequest
, @ModelAttribute("board") Board board
//, ModelMap model
, ModelAndView modelAndView
, RedirectAttributes redirectAttributes
) throws Exception {
logger.debug("AddrAgencyController-insertAddrAgencyAjax");
//json 알림
modelAndView.setViewName("jsonView");
//사용자 로그인 여부 체크 for json
String isLogin = checkLoginUtil.isLoginCheck4JsonAction(modelAndView);
if ("N".equals(isLogin)) return modelAndView;
//로그인 정보 획득
LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
//게시판 관리 정보 획득 및 사용 여부 체크
BoardMasterVO bmVO = checkBoardUtil.checkBoardUse(board.getBbsId(), modelAndView, bbsAttrbService);
if (bmVO == null) return modelAndView;
//파일 정상 처리 여부와 첨부 파일 정보
String atchFileId = this.takeFile(multiRequest, modelAndView, bmVO);
if ("ERROR".equals(atchFileId)) return modelAndView;
//게시판 등록하기
modelAndView = this.insertAddrAgencyBoard(modelAndView, atchFileId, addrAgencyVO, board.getNttCn(), loginVO.getId(), multiRequest);
// 법인폰 알람여부 체크
JoinSettingVO joinSettingVO = new JoinSettingVO();
joinSettingVO = egovSiteManagerService.selectAdminNotiDetail();
// 이메일 체크
if (joinSettingVO != null && joinSettingVO.getEmailNoti().equals("Y")) {
String emailTitle = "번호관리 > 주소록 입력대행 요청";
// CS관리자 이메일 알림전송
mjonNoticeSendUtil.csAdminEmailNoticeSend(loginVO.getName(), loginVO.getId(), emailTitle);
}
// SMS 체크
if (joinSettingVO != null && joinSettingVO.getSmsNoti().equals("Y")) {
String smsTitle = "주소록 입력대행 요청";
// CS관리자 SMS 알림전송
mjonNoticeSendUtil.csAdminSmsNoticeSend(loginVO.getId(), smsTitle);
}
// SLACK 체크
if (joinSettingVO != null && joinSettingVO.getSlackNoti().equals("Y")) {
// Slack 메시지 발송(단순본문)
String msg = "[문자온] 주소록 입력대행 요청 - " + loginVO.getName() +"("+ loginVO.getId() + ")";
mjonCommon.sendSimpleSlackMsg(msg);
}
return modelAndView;
}
/*
* 1.url 이동
* 2.ajax
* 2-1.page call return htem
* 2-2.action call return success or fail
*
* 1.
* a call b redirect c
*
* 2-1.ajax call
* blank html
*
* 2-2.
* return fail
*
* */
/////////////////////////////////////////////////////////////////////////////////////////
//
//
// ADMIN
//
//
/**
* 주소록 입력 대행(무료) 관리 화면
* @param addrVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping(value= {"/uss/ion/addragency/selectAddrAgencyList.do"})
public String selectAddrAgencyList(
HttpServletRequest request
, @ModelAttribute("searchVO") AddrAgencyVO addrAgencyVO
, ModelMap model
, RedirectAttributes redirectAttributes
) throws Exception {
logger.debug("AddrAgencyController-selectAddrAgencyList");
//관리자 로그인 여부 체크
String isLogin = checkLoginUtil.isAdminLogin4PageMove(redirectAttributes);
if (!"Y".equals(isLogin)) return isLogin;
//로그인 정보 획득
LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
//login 정보
model.addAttribute("loginVO", loginVO);
//ajax를 위한 현재 URL 정보 받기
addrAgencyVO.setUrl(request.getRequestURI());
return "/uss/ion/addragency/AddrAgencyList";
}
/**
* 주소록 입력 대행(무료) 관리 리스트 ajax 부분
* @param addrVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping(value= {"/uss/ion/addragency/selectAddrAgencyListAjax.do"})
public String selectAddrAgencyListAjaxAdmin(
HttpServletRequest request
, @ModelAttribute("searchVO") AddrAgencyVO addrAgencyVO
, ModelMap model
, RedirectAttributes redirectAttributes
) throws Exception {
logger.debug("AddrAgencyController-selectAddrAgencyListAjaxAdmin");
//관리자 로그인 여부 체크
String isLogin = checkLoginUtil.isLoginCheck4JsonPage(redirectAttributes);
if ("N".equals(isLogin)) return "/uss/ion/addragency/AddrAgencyListAjax";
// pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(addrAgencyVO);
// pageing step2
addrAgencyVO = this.setPagingStep2(addrAgencyVO, paginationInfo);
//대상 리스트 가져오기
//관리자 리스트는 30일 마감에 대한 제한을 없애기 위해서 해당 값을 넣어준다.
addrAgencyVO.setSiteNm("ADMIN");
List<AddrAgencyVO> addrList = addrAgencyService.selectList(addrAgencyVO);
// pageing step3
paginationInfo = this.setPagingStep3(addrList, paginationInfo);
//대상 리스트, 페이징 정보 전달
model.addAttribute("resultList", addrList);
model.addAttribute("paginationInfo", paginationInfo);
return "/uss/ion/addragency/AddrAgencyListAjax";
}
/**
* 발신/수신/거부 번호 등록/수정
* @param searchVO
* @param model
* @return "/uss/ion/msg/SendMsgModify"
* @throws Exception
*/
@RequestMapping(value =
{"/uss/ion/addragency/AddrAgencyInsert.do"
})
public String AddrAgencyInsert(
@ModelAttribute("searchVO") AddrAgencyVO searchVO
, HttpServletRequest request
, RedirectAttributes redirectAttributes
, Model model) throws Exception {
logger.debug("AddrAgencyController-AddrAgencyInsert");
//관리자 로그인 여부 체크
String isLogin = checkLoginUtil.isAdminLogin4PageMove(redirectAttributes);
if (!"Y".equals(isLogin)) return isLogin;
//사용자 정보
LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
model.addAttribute("loginVO", loginVO);
return "/uss/ion/addragency/AddrAgencyInsert";
}
/**
* 발신/수신/거부 번호 등록/수정
* @param searchVO
* @param model
* @return "/uss/ion/msg/SendMsgModify"
* @throws Exception
*/
@RequestMapping(value = {"/uss/ion/addragency/AddrAgencyModify.do"})
public String AddrAgencyModify(
@ModelAttribute("searchVO") AddrAgencyVO searchVO
, HttpServletRequest request
, Model model
, RedirectAttributes redirectAttributes
) throws Exception {
logger.debug("AddrAgencyController-AddrAgencyModify");
//관리자 로그인 여부 체크
String isLogin = checkLoginUtil.isAdminLogin4PageMove(redirectAttributes);
if (!"Y".equals(isLogin)) return isLogin;
//수정 대상 정보 가져오기
AddrAgencyVO addrAgencyVO = addrAgencyService.selectDetail(searchVO);
model.addAttribute("AddrAgencyVO", addrAgencyVO);
return "/uss/ion/addragency/AddrAgencyModify";
}
/**
* (관리자) 주소록 무료대행 엑셀업로드
*
* @param AddrAgencyVO
* @param board
* @param model
* @return
* @throws Exception
*/
@RequestMapping(value= {"/uss/ion/addragency/updateAddrAgencyAjax.do"})
public ModelAndView updateAddrAgencyAjax(
HttpServletRequest request
, @ModelAttribute("updateAgency") AddrAgencyVO addrAgencyVO
, final MultipartHttpServletRequest multiRequest
, @ModelAttribute("board") Board board
//, ModelMap model
, ModelAndView modelAndView
, RedirectAttributes redirectAttributes
) throws Exception {
logger.debug("AddrAgencyController-updateAddrAgencyAjax");
modelAndView.setViewName("jsonView");
//사용자 로그인 여부 체크 for json
LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
String isLogin = checkLoginUtil.isLoginCheck4JsonAction(modelAndView);
if ("N".equals(isLogin)) return modelAndView;
try {
/*
//1. 주소록 그룹 등록하기
AddrGroupVO addrGroupVO = new AddrGroupVO();
addrGroupVO.setMberId(addrAgencyVO.getRegisterId());
addrGroupVO.setAddrGrpNm(addrAgencyVO.getAddrGrpNm());
String addrNewGrpId = addrGroupService.insertAddrGroup(addrGroupVO);
AddrVO addrVO = new AddrVO();
//주소록 대행 신청자 아이디 SET
addrVO.setMberId(addrAgencyVO.getRegisterId());
addrVO.setFrstRegisterId(loginVO.getUniqId());
//새로 생성한 그룹 아이디 SET
addrVO.setAddrGrpId(addrNewGrpId);
//2. 엑셀 업로드하기
//final Map<String, MultipartFile> files = multiRequest.getFileMap();
List<MultipartFile> files = (List<MultipartFile>) multiRequest.getFiles("file0");
String errMessage = "";
String cellValue = "";
//String phoneRegExp = "^01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$";
String phoneRegExp = "^(050[234567]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$";
int errPhoneCnt = 0;
if(!files.isEmpty()) {
if (files.get(0).getSize() > 0
&& (files.get(0).getContentType().indexOf("spreadsheetml") > -1)
|| files.get(0).getContentType().indexOf("ms-excel") > -1
|| files.get(0).getOriginalFilename().split("[.]")[1].indexOf("xlsx") > -1
|| files.get(0).getOriginalFilename().split("[.]")[1].indexOf("xls") > -1) {
String Ext = files.get(0).getOriginalFilename().split("[.]")[1];
//엑셀 확장자에 따른 처리 로직 분리
if(Ext.equals("xls")) {
HSSFWorkbook workbook = new HSSFWorkbook(files.get(0).getInputStream());
HSSFSheet sheet = workbook.getSheetAt(0);
if(sheet.getLastRowNum() > 100000) { //
errMessage = "100000줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다.";
modelAndView.addObject("errMessage", errMessage);
modelAndView.addObject("result", "fail");
return modelAndView;
}
for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
HSSFRow row = sheet.getRow(i); //열읽기
if(null == row) {
continue;
}
HashMap<String, String> jm = new HashMap<>();
// 행의 두번째 열(핸드폰부터 받아오기)
HSSFCell cell = null;
for(int j=0 ; j<2; j++){ //행읽기(6행까지나 2행까지만 필요)
cellValue = "";
cell = row.getCell(j); //핸드폰/이름/info1/info2/info3/info4/메모
// 핸드폰, 이름만 공백체크
if(j <= 1 && (cell == null || !StringUtils.isNotBlank(cell.toString().trim()))) { //셀에 값이 없으면
//System.out.println("Cell 데이터가 없습니다.");
errMessage = "Cell 데이터가 없습니다.";
modelAndView.addObject("errMessage", errMessage);
modelAndView.addObject("result", "fail");
return modelAndView;
}
if(null != cell){
switch(cell.getCellType()){ //숫자타임을 문자로 변환
case Cell.CELL_TYPE_NUMERIC:
cell.setCellType(Cell.CELL_TYPE_STRING);
}
cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ;
}
if(j == 0) {
//전화번호
if(cellValue.matches(phoneRegExp)) {
addrVO.setAddrPhoneNo(cellValue);
}else {
errPhoneCnt++;
}
}
if(j == 1) addrVO.setAddrNm(cellValue); //이름
}
addrService.insertAddr(addrVO);
}
modelAndView.addObject("result", "success");
if(errPhoneCnt > 0) {
modelAndView.addObject("errPhoneCnt", errPhoneCnt);
}
}else { //확장자가 xlsx
OPCPackage opcPackage = OPCPackage.open(files.get(0).getInputStream());
XSSFWorkbook workbook = new XSSFWorkbook(opcPackage);
XSSFSheet sheet = workbook.getSheetAt(0); // 첫번째 시트 불러오기
opcPackage.close();
if(sheet.getLastRowNum() > 100000) { //
errMessage = "100000줄 이상의 업로드는 데이터 부하로 업로드 할수 없습니다.";
modelAndView.addObject("errMessage", errMessage);
modelAndView.addObject("result", "fail");
return modelAndView;
}
for(int i=2; i<sheet.getLastRowNum()+2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
XSSFRow row = sheet.getRow(i); //열읽기
if(null == row) {
continue;
}
// 행의 두번째 열(핸드폰부터 받아오기)
XSSFCell cell = null;
for(int j=0 ; j<2; j++){ //행읽기(6행까지나 2행까지만 필요)
cellValue = "";
cell = row.getCell(j); //핸드폰/이름/info1/info2/info3/info4/메모
// 핸드폰, 이름만 공백체크
if(j <= 1 && (cell == null || !StringUtils.isNotBlank(cell.toString().trim()))) { //셀에 값이 없으면
//System.out.println("Cell 데이터가 없습니다.");
errMessage = "Cell 데이터가 없습니다.";
modelAndView.addObject("errMessage", errMessage);
modelAndView.addObject("result", "fail");
return modelAndView;
}
if(null != cell){
switch(cell.getCellType()){ //숫자타임을 문자로 변환
case Cell.CELL_TYPE_NUMERIC:
cell.setCellType(Cell.CELL_TYPE_STRING);
}
cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ;
}
if(j == 0) {
//전화번호
if(cellValue.matches(phoneRegExp)) {
addrVO.setAddrPhoneNo(cellValue);
}else {
errPhoneCnt++;
}
}
if(j == 1) addrVO.setAddrNm(cellValue); //이름
}
addrService.insertAddr(addrVO);
}
modelAndView.addObject("result", "success");
if(errPhoneCnt > 0) {
modelAndView.addObject("errPhoneCnt", errPhoneCnt);
}
} //xlsx 처리 끝
}
}
*/
//3. 주소록 무료대행 처리상태 변경
addrAgencyVO.setProcessStatus("E");
addrAgencyService.update(addrAgencyVO);
modelAndView.addObject("message", egovMessageSource.getMessage("success.common.update"));
modelAndView.addObject("result", "success");
}catch(Exception ex){
ex.printStackTrace();
modelAndView.addObject("message", egovMessageSource.getMessage("fail.common.update"));
modelAndView.addObject("result", "fail");
}
return modelAndView;
}
/**
* 주소록 입력 대행(무료) 관리 삭제 프로세서(del_flag : Y로 업데이트)
* @param searchVO
* @param model
* @return "/uss/ion/addragency/AddrAgencyDelete.do"
* @throws Exception
*/
@RequestMapping(value = {
"/uss/ion/addragency/AddrAgencyDelete.do"
}
)
public String AddrAgencyDelete(
@RequestParam("del") String[] del
, @ModelAttribute("searchVO") AddrAgencyVO addrAgencyVO
, HttpServletRequest request
, RedirectAttributes redirectAttributes
, Model model
) throws Exception {
logger.debug("AddrAgencyController-AddrAgencyDelete");
//관리자 로그인 여부 체크
String isLogin = checkLoginUtil.isAdminLogin4PageMove(redirectAttributes);
if (!"Y".equals(isLogin)) return isLogin;
//전달받은 AddrAgencyId로 삭제처리
try {
for(String id: del) {
addrAgencyVO.setAddrAgencyId(id);
addrAgencyVO.setDelFlag("Y");
addrAgencyService.update(addrAgencyVO);
}
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete"));
}catch(Exception e) {
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.delete"));
}
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uss/ion/addragency/selectAddrAgencyList.do");
return redirectUrlMaker.getRedirectUrl();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
// private function
//
//
//페이징을 위한 처리 step1 - 페이징 기본 정보 설정
private PaginationInfo setPagingStep1(AddrAgencyVO p_addrAgencyVO)throws Exception{
// pageing step1
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(p_addrAgencyVO.getPageIndex());
paginationInfo.setRecordCountPerPage(p_addrAgencyVO.getPageUnit());
paginationInfo.setPageSize(p_addrAgencyVO.getPageSize());
return paginationInfo;
}
//페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 및 검색 조건 초기화
private AddrAgencyVO setPagingStep2(
AddrAgencyVO p_addrAgencyVO
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step2
p_addrAgencyVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex());
p_addrAgencyVO.setLastIndex(p_paginationInfo.getLastRecordIndex());
p_addrAgencyVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage());
if("".equals(p_addrAgencyVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
p_addrAgencyVO.setSearchSortCnd("registPnttm");
p_addrAgencyVO.setSearchSortOrd("desc");
}
return p_addrAgencyVO;
}
//페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기
private PaginationInfo setPagingStep3(
List<AddrAgencyVO> p_addrList
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step3
int totCnt = 0;
if(p_addrList.size() > 0) totCnt = p_addrList.get(0).getTotCnt();
p_paginationInfo.setTotalRecordCount(totCnt);
return p_paginationInfo;
}
//사용자 업로드 파일 처리 - 하나의 파일만 처리
private String takeFile(
MultipartHttpServletRequest p_multiRequest
, ModelAndView p_modelAndView
, BoardMasterVO p_bmVO
) throws Exception{
//Map<String, Object> p_map = new Map<>();
//Map<String, Object> in_map = new HashMap<>();
boolean in_bool = true;
List<FileVO> result = null;
String atchFileId = "";
String isThumbFile = "";
//String isThumbFile = "thumbFile"; //"thumbFile" - 썸네일을 생성한다.
final Map<String, MultipartFile> files = p_multiRequest.getFileMap();
if (!files.isEmpty()) {
result = egovFileMngUtil.parseFileInf(files, "ADDRAGENCY_", 0, "", "", isThumbFile);
// 파일 사이즈, 개수, 확장자 체크. model에 체크 오류 메세지 set
//관리자에서 게시판 설정시 업로드 파일 사이즈와 수량 체크용
if(!checkFileUtil.isPosblAtchFileMvWithBoardMaster(result, p_modelAndView, 0, "xlsx|xls|zip|hwp|txt|doc|docx|csv|vcf", p_bmVO)) {
// 공통코드 Set
//setBBSCommCd(model, bmVO);
//model.addAttribute("bdMstr", bmVO);
//return "web/cop/bbs/EgovNoticeRegist";
//modelAndView.addObject("bdMstr", bmVO);
p_modelAndView.addObject("result", "fail");
in_bool = false;
}
atchFileId = fileMngService.insertFileInfs(result); //첨부 파일
}
if (!in_bool) atchFileId = "ERROR";
return atchFileId;
}
//addragency 게시물에 글 남기기
private ModelAndView insertAddrAgencyBoard(
ModelAndView p_modelAndView
//, Map<String, Object> p_fileResult
, String p_atchFileId
, AddrAgencyVO p_addrAgencyVO
, String p_content
, String p_registerId
//, String p_processStatus
, MultipartHttpServletRequest p_multiRequest
) throws Exception{
//게시판 등록하기
try {
String p_processStatus = "";
p_processStatus = p_addrAgencyVO.getProcessStatus();
if ("".equals(p_processStatus) || p_processStatus==null) p_processStatus = "B";
p_addrAgencyVO.setAtchFileId(p_atchFileId);
p_addrAgencyVO.setRequestTxt(unscript(p_content)); // XSS 방지
p_addrAgencyVO.setProcessStatus(p_processStatus); //처리상태 B/I/E
p_addrAgencyVO.setRegisterId(p_registerId);
String userIp = EgovClntInfo.getClntIP(p_multiRequest);
p_addrAgencyVO.setNtcrIp(userIp);
addrAgencyService.insert(p_addrAgencyVO);
p_modelAndView.addObject("message", egovMessageSource.getMessage("success.common.insert"));
p_modelAndView.addObject("result", "success");
}catch(Exception ex){
ex.printStackTrace();
p_modelAndView.addObject("message", egovMessageSource.getMessage("fail.common.insert"));
p_modelAndView.addObject("result", "fail");
}
return p_modelAndView;
}
/**
* XSS 방지 처리.
*
* @param data
* @return
*/
protected String unscript(String data) {
if (data == null || data.trim().equals("")) {
return "";
}
String ret = data;
ret = ret.replaceAll("<(S|s)(C|c)(R|r)(I|i)(P|p)(T|t)", "<script");
ret = ret.replaceAll("</(S|s)(C|c)(R|r)(I|i)(P|p)(T|t)", "</script");
ret = ret.replaceAll("<(O|o)(B|b)(J|j)(E|e)(C|c)(T|t)", "<object");
ret = ret.replaceAll("</(O|o)(B|b)(J|j)(E|e)(C|c)(T|t)", "</object");
ret = ret.replaceAll("<(A|a)(P|p)(P|p)(L|l)(E|e)(T|t)", "<applet");
ret = ret.replaceAll("</(A|a)(P|p)(P|p)(L|l)(E|e)(T|t)", "</applet");
ret = ret.replaceAll("<(E|e)(M|m)(B|b)(E|e)(D|d)", "<embed");
ret = ret.replaceAll("</(E|e)(M|m)(B|b)(E|e)(D|d)", "<embed");
ret = ret.replaceAll("<(F|f)(O|o)(R|r)(M|m)", "<form");
ret = ret.replaceAll("</(F|f)(O|o)(R|r)(M|m)", "<form");
//ret = ret.replaceAll("<", "<");
ret = ret.replaceAll("alert", "");
//ret = ret.replaceAll("iframe", "");
return ret;
}
}