File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
2024-11-14
File name
Commit message
Commit date
2024-11-14
2024-09-10
2024-11-14
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;
}
}