diff --git a/src/main/java/seed/manager/bbs/service/ManagerBbsAuthService.java b/src/main/java/seed/manager/bbs/service/ManagerBbsAuthService.java new file mode 100644 index 00000000..34d99def --- /dev/null +++ b/src/main/java/seed/manager/bbs/service/ManagerBbsAuthService.java @@ -0,0 +1,15 @@ +package seed.manager.bbs.service; + +import java.util.List; + +import seed.map.T_BBS_AUTH; + +public interface ManagerBbsAuthService { + + //ManagerBbsController + public List getBbsAuthList(Integer bbsSetIdx, String[] qryColumns); + + //ManagerBbsController + public boolean setBbsAuthModProc(Integer[] bbsAuthIdxs, Integer[] bbsAuthCertifys, Integer[] bbsAuthLists, + Integer[] bbsAuthContents, Integer[] bbsAuthWrites, Integer[] bbsAuthReplys); +} diff --git a/src/main/java/seed/manager/bbs/service/ManagerBbsAuthServiceImpl.java b/src/main/java/seed/manager/bbs/service/ManagerBbsAuthServiceImpl.java new file mode 100644 index 00000000..0333e409 --- /dev/null +++ b/src/main/java/seed/manager/bbs/service/ManagerBbsAuthServiceImpl.java @@ -0,0 +1,81 @@ +package seed.manager.bbs.service; + +import java.util.Date; +import java.util.List; + +import org.apache.commons.lang3.ArrayUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import egovframework.rte.fdl.cmmn.AbstractServiceImpl; + +import seed.dao.BbsAuthDAO; +import seed.map.T_BBS_AUTH; + +@Service +public class ManagerBbsAuthServiceImpl extends AbstractServiceImpl implements ManagerBbsAuthService{ + + @Autowired + private BbsAuthDAO bbsAuthDAO; + + //ManagerBbsController + public List getBbsAuthList(Integer bbsSetIdx, String[] qryColumns){ + + return bbsAuthDAO.getBbsAuthList(bbsSetIdx, qryColumns); + } + + //ManagerBbsController + @Transactional + public boolean setBbsAuthModProc(Integer[] bbsAuthIdxs, Integer[] bbsAuthCertifys, Integer[] bbsAuthLists, + Integer[] bbsAuthContents, Integer[] bbsAuthWrites, Integer[] bbsAuthReplys){ + + boolean success = false; + + for(int a=0; a getBbsCategoryList(Integer bbsSetIdx, String[] qryColumns); + + //ManagerBbsController + public List getBbsCategoryListt(Integer bbsSetIdx, String[] qryColumns); + + //ManagerBbsController + public T_BBS_CATEGORY getBbsCategoryForm(Integer bbsCategoryIdx); + + //ManagerBbsController + public boolean setBbsCategoryRegProc(T_BBS_CATEGORY tBbsCategory, Integer memberIdx); + + //ManagerBbsController + public boolean setBbsCategoryModProc(T_BBS_CATEGORY tBbsCategory, Integer memberIdx); + + //ManagerBbsController + public boolean setBbsCategoryDelProc(Integer bbsCategoryIdx); + + //ManagerBbsController + public boolean setBbsCategoryStatusProc(Integer bbsCategoryIdx, String status, Integer memberIdx); + + //ManagerBbsController + public boolean setBbsCategoryOrderProc(Integer bbsSetIdx, Integer bbsCategoryIdx, String orderType, Integer memberIdx); +} diff --git a/src/main/java/seed/manager/bbs/service/ManagerBbsCategoryServiceImpl.java b/src/main/java/seed/manager/bbs/service/ManagerBbsCategoryServiceImpl.java new file mode 100644 index 00000000..ac8a2b81 --- /dev/null +++ b/src/main/java/seed/manager/bbs/service/ManagerBbsCategoryServiceImpl.java @@ -0,0 +1,351 @@ +package seed.manager.bbs.service; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import egovframework.rte.fdl.cmmn.AbstractServiceImpl; + +import seed.dao.BbsCategoryDAO; +import seed.map.T_BBS_CATEGORY; +import seed.map.T_MEMBER; +import seed.map.VIEW_BBS_CATEGORY; + +@Service +public class ManagerBbsCategoryServiceImpl extends AbstractServiceImpl implements ManagerBbsCategoryService{ + + @Autowired + private BbsCategoryDAO bbsCategoryDAO; + + //ManagerBbsController + public List getBbsCategoryList(Integer bbsSetIdx, String[] qryColumns){ + + return bbsCategoryDAO.getBbsCategoryList(bbsSetIdx, qryColumns); + } + + //ManagerBbsController + public List getBbsCategoryListt(Integer bbsSetIdx, String[] qryColumns){ + + return bbsCategoryDAO.getBbsCategoryListt(bbsSetIdx, qryColumns); + } + + //ManagerBbsController + public T_BBS_CATEGORY getBbsCategoryForm(Integer bbsCategoryIdx){ + + return bbsCategoryDAO.getBbsCategoryForm(bbsCategoryIdx); + } + + //ManagerBbsController + @Transactional + public boolean setBbsCategoryRegProc(T_BBS_CATEGORY tBbsCategory, Integer memberIdx){ + + Integer bbsCategoryDepth = 0; + Integer bbsCategoryOrder = 0; + String bbsCategoryIdxs = ""; + + T_MEMBER tMember = new T_MEMBER(); + tMember.setMemberIdx(memberIdx); + + tBbsCategory.settMember(tMember); + tBbsCategory.setBbsCategoryRegDate(new Date()); + tBbsCategory.setBbsCategoryModDate(new Date()); + + String[] qryColumns = {"bbsCategoryIdxs", "bbsCategoryName", "bbsCategoryIdx1", "bbsCategoryIdx2", "bbsCategoryIdx3", "bbsCategoryIdx4", "bbsCategoryIdx5", + "bbsCategoryDepth", "bbsCategoryOrder", "bbsCategoryParentIdx", "bbsCategoryStatus"}; + + Map bbsCategoryParentMap = bbsCategoryDAO.getBbsCategoryParentForm(tBbsCategory.gettBbsSet().getBbsSetIdx(), tBbsCategory.getBbsCategoryParentIdx(), qryColumns); + + if(bbsCategoryParentMap == null){ //같은 그룹에 데이타가 없을때 (하위 메뉴 추가) + + if(tBbsCategory.getBbsCategoryParentIdx().equals("0")){ //최상위에서 추가 + + tBbsCategory.setBbsCategoryParentIdx("0"); + tBbsCategory.setBbsCategoryDepth(1); + tBbsCategory.setBbsCategoryOrder(1); + tBbsCategory.setBbsCategoryIdx1("01"); + tBbsCategory.setBbsCategoryIdx2("00"); + tBbsCategory.setBbsCategoryIdx3("00"); + tBbsCategory.setBbsCategoryIdx4("00"); + tBbsCategory.setBbsCategoryIdx5("00"); + tBbsCategory.setBbsCategoryStatus("U"); + + }else{ //선택된 키를 구해서 해당 데이타에서 추가(하위 메뉴 추가) + + Map bbsCategoryMap = bbsCategoryDAO.getBbsCategoryForm(tBbsCategory.gettBbsSet().getBbsSetIdx(), tBbsCategory.getBbsCategoryParentIdx(), qryColumns); + + bbsCategoryDepth = Integer.parseInt(bbsCategoryMap.get("_bbsCategoryDepth").toString()); + bbsCategoryOrder = Integer.parseInt(bbsCategoryMap.get("_bbsCategoryOrder").toString()); + + tBbsCategory.setBbsCategoryOrder(bbsCategoryOrder+1); + tBbsCategory.setBbsCategoryDepth(bbsCategoryDepth+1); + tBbsCategory.setBbsCategoryIdx1(bbsCategoryMap.get("_bbsCategoryIdx1").toString()); + tBbsCategory.setBbsCategoryIdx2(bbsCategoryMap.get("_bbsCategoryIdx2").toString()); + tBbsCategory.setBbsCategoryIdx3(bbsCategoryMap.get("_bbsCategoryIdx3").toString()); + tBbsCategory.setBbsCategoryIdx4(bbsCategoryMap.get("_bbsCategoryIdx4").toString()); + tBbsCategory.setBbsCategoryIdx5(bbsCategoryMap.get("_bbsCategoryIdx5").toString()); + tBbsCategory.setBbsCategoryStatus(bbsCategoryMap.get("_bbsCategoryStatus").toString()); + + switch (tBbsCategory.getBbsCategoryDepth()) { + case 1: + tBbsCategory.setBbsCategoryIdx1(getMenuIdx(bbsCategoryMap.get("_bbsCategoryIdx1").toString())); + break; + case 2: + tBbsCategory.setBbsCategoryIdx2(getMenuIdx(bbsCategoryMap.get("_bbsCategoryIdx2").toString())); + break; + case 3: + tBbsCategory.setBbsCategoryIdx3(getMenuIdx(bbsCategoryMap.get("_bbsCategoryIdx3").toString())); + break; + case 4: + tBbsCategory.setBbsCategoryIdx4(getMenuIdx(bbsCategoryMap.get("_bbsCategoryIdx4").toString())); + break; + case 5: + tBbsCategory.setBbsCategoryIdx5(getMenuIdx(bbsCategoryMap.get("_bbsCategoryIdx5").toString())); + break; + } + } + + }else{ //같은 그룹의 부모키가 같은게 있을때 (같은 DEPTH에 메뉴 추가) + + bbsCategoryDepth = Integer.parseInt(bbsCategoryParentMap.get("_bbsCategoryDepth").toString()); + + if(tBbsCategory.getBbsCategoryParentIdx().equals("0")){ //사이트에서 추가 + tBbsCategory.setBbsCategoryParentIdx("0"); + tBbsCategory.setBbsCategoryDepth(1); + }else{ + tBbsCategory.setBbsCategoryParentIdx(tBbsCategory.getBbsCategoryParentIdx()); + tBbsCategory.setBbsCategoryDepth(bbsCategoryDepth); + } + + //상위 DEPTH에서 마지막 bbsCategoryOrder를 구해옴 + tBbsCategory.setBbsCategoryOrder(bbsCategoryDAO.getBbsCategoryOrderForm(tBbsCategory.gettBbsSet().getBbsSetIdx(), bbsCategoryParentMap.get("_bbsCategoryIdxs").toString(), bbsCategoryDepth-1)+1); + tBbsCategory.setBbsCategoryIdx1(bbsCategoryParentMap.get("_bbsCategoryIdx1").toString()); + tBbsCategory.setBbsCategoryIdx2(bbsCategoryParentMap.get("_bbsCategoryIdx2").toString()); + tBbsCategory.setBbsCategoryIdx3(bbsCategoryParentMap.get("_bbsCategoryIdx3").toString()); + tBbsCategory.setBbsCategoryIdx4(bbsCategoryParentMap.get("_bbsCategoryIdx4").toString()); + tBbsCategory.setBbsCategoryIdx5(bbsCategoryParentMap.get("_bbsCategoryIdx5").toString()); + tBbsCategory.setBbsCategoryStatus(bbsCategoryParentMap.get("_bbsCategoryStatus").toString()); + + switch (bbsCategoryDepth) { + case 1: + tBbsCategory.setBbsCategoryIdx1(getMenuIdx(bbsCategoryParentMap.get("_bbsCategoryIdx1").toString())); + break; + case 2: + tBbsCategory.setBbsCategoryIdx2(getMenuIdx(bbsCategoryParentMap.get("_bbsCategoryIdx2").toString())); + break; + case 3: + tBbsCategory.setBbsCategoryIdx3(getMenuIdx(bbsCategoryParentMap.get("_bbsCategoryIdx3").toString())); + break; + case 4: + tBbsCategory.setBbsCategoryIdx4(getMenuIdx(bbsCategoryParentMap.get("_bbsCategoryIdx4").toString())); + break; + case 5: + tBbsCategory.setBbsCategoryIdx5(getMenuIdx(bbsCategoryParentMap.get("_bbsCategoryIdx5").toString())); + break; + } + } + + bbsCategoryIdxs = tBbsCategory.getBbsCategoryIdx1()+tBbsCategory.getBbsCategoryIdx2()+tBbsCategory.getBbsCategoryIdx3()+ + tBbsCategory.getBbsCategoryIdx4()+tBbsCategory.getBbsCategoryIdx5(); + + tBbsCategory.setBbsCategoryIdxs(bbsCategoryIdxs); + + bbsCategoryDAO.setBbsCategoryOrderProc(tBbsCategory.gettBbsSet().getBbsSetIdx(), tBbsCategory.getBbsCategoryOrder(), 0, "plus"); + + return bbsCategoryDAO.setBbsCategoryRegProc(tBbsCategory); + } + + //ManagerBbsController + @Transactional + public boolean setBbsCategoryModProc(T_BBS_CATEGORY tBbsCategory, Integer memberIdx){ + + T_BBS_CATEGORY tBbsCategoryDB = bbsCategoryDAO.getBbsCategoryForm(tBbsCategory.getBbsCategoryIdx()); + + T_MEMBER tMember = new T_MEMBER(); + tMember.setMemberIdx(memberIdx); + + tBbsCategoryDB.settMember(tMember); + tBbsCategoryDB.setBbsCategoryModDate(new Date()); + tBbsCategoryDB.setBbsCategoryName(tBbsCategory.getBbsCategoryName()); + + return bbsCategoryDAO.setBbsCategoryModProc(tBbsCategoryDB); + } + + //ManagerBbsController + @Transactional + public boolean setBbsCategoryDelProc(Integer bbsCategoryIdx){ + + boolean success = false; + + T_BBS_CATEGORY tBbsCategoryDB = bbsCategoryDAO.getBbsCategoryForm(bbsCategoryIdx); + + Integer bbsSetIdx = tBbsCategoryDB.gettBbsSet().getBbsSetIdx(); + + List bbsCategoryList = bbsCategoryDAO.getBbsCategoryList(tBbsCategoryDB.gettBbsSet().getBbsSetIdx(), tBbsCategoryDB.getBbsCategoryIdxs(), tBbsCategoryDB.getBbsCategoryDepth()); + + for(int i=0; i 1){ + bbsCategoryDAO.setBbsCategoryOrderProc(bbsSetIdx, tBbsCategory.getBbsCategoryOrder(), bbsCategoryList.size(), "minuss"); + }else{ + bbsCategoryDAO.setBbsCategoryOrderProc(bbsSetIdx, tBbsCategory.getBbsCategoryOrder(), 0, "minus"); + } + } + + if(bbsCategoryDAO.setBbsCategoryDelProc(tBbsCategory)){ + success = true; + }else{ + success = false; + break; + } + } + + return success; + } + + //ManagerBbsController + @Transactional + public boolean setBbsCategoryStatusProc(Integer bbsCategoryIdx, String status, Integer memberIdx){ + + boolean success = false; + + T_BBS_CATEGORY tBbsCategoryDB = bbsCategoryDAO.getBbsCategoryForm(bbsCategoryIdx); + + List bbsCategoryList = bbsCategoryDAO.getBbsCategoryList(tBbsCategoryDB.gettBbsSet().getBbsSetIdx(), tBbsCategoryDB.getBbsCategoryIdxs(), tBbsCategoryDB.getBbsCategoryDepth()); + + for(int i=0; i bbsCategoryList = bbsCategoryDAO.getBbsCategoryList(bbsSetIdx, tBbsCategory.getBbsCategoryIdxs(), tBbsCategory.getBbsCategoryDepth()); //선택한 메뉴에 속한 메뉴 리스트 + + List bbsCategoryOrderList = bbsCategoryDAO.getBbsCategoryList(bbsSetIdx, tBbsCategoryOrder.getBbsCategoryIdxs(), tBbsCategoryOrder.getBbsCategoryDepth()); //선택한 메뉴 데이타의 UP 또는 DOWN 데이타에 속한 메뉴 리스트 + + if(orderType.equals("up")){ + + bbsCategoryOrder = bbsCategoryOrderList.get(0).getBbsCategoryOrder(); + + for(int i=0; i getBbsCommentList(Integer bbsDataIdx, int page, int row, String[] qryColumns); + + //ManagerBbsController + public boolean setBbsCommentRegProc(T_BBS_COMMENT tBbsComment, Integer memberIdx, String memberIp); + + //ManagerBbsController + public boolean setBbsCommentDelProc(Integer bbsCommentIdx); +} diff --git a/src/main/java/seed/manager/bbs/service/ManagerBbsCommentServiceImpl.java b/src/main/java/seed/manager/bbs/service/ManagerBbsCommentServiceImpl.java new file mode 100644 index 00000000..6767088f --- /dev/null +++ b/src/main/java/seed/manager/bbs/service/ManagerBbsCommentServiceImpl.java @@ -0,0 +1,97 @@ +package seed.manager.bbs.service; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import egovframework.rte.fdl.cmmn.AbstractServiceImpl; + +import seed.dao.BbsCommentDAO; +import seed.dao.BbsDataDAO; +import seed.map.T_BBS_COMMENT; +import seed.map.T_BBS_DATA; +import seed.map.T_MEMBER; +import seed.map.T_POINT; +import seed.utils.SeedUtils; + +@Service +public class ManagerBbsCommentServiceImpl extends AbstractServiceImpl implements ManagerBbsCommentService{ + + @Autowired + private BbsCommentDAO bbsCommentDAO; + + @Autowired + private BbsDataDAO bbsDataDAO; + + //ManagerBbsController + public Long getBbsCommentListCnt(Integer bbsDataIdx){ + + return bbsCommentDAO.getBbsCommentListCnt(bbsDataIdx); + } + + //ManagerBbsController + public List getBbsCommentList(Integer bbsDataIdx, int page, int row, String[] qryColumns){ + + return bbsCommentDAO.getBbsCommentList(bbsDataIdx, ((page-1) * row), row, qryColumns); + } + + //ManagerBbsController + @Transactional + public boolean setBbsCommentRegProc(T_BBS_COMMENT tBbsComment, Integer memberIdx, String memberIp){ + + boolean success = false; + + T_MEMBER tMember = new T_MEMBER(); + tMember.setMemberIdx(memberIdx); + + tBbsComment.settMember(tMember); + tBbsComment.setBbsCommentRegDate(new Date()); + tBbsComment.setBbsCommentMemberIp(memberIp); + + if(bbsCommentDAO.setBbsCommentRegProc(tBbsComment)){ + T_BBS_DATA tBbsDataDB = bbsDataDAO.getBbsDataForm(tBbsComment.gettBbsData().getBbsDataIdx()); + tBbsDataDB.setBbsCommentCount(tBbsDataDB.getBbsCommentCount()+1); + success = bbsDataDAO.setBbsDataModProc(tBbsDataDB); + + if(SeedUtils.setReplaceNull(tBbsDataDB.gettBbsSet().getBbsSetPoint()).equals("Y")){ + //코멘트 포인트 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + T_POINT tPoint = new T_POINT(); + + tPoint.setPointSetIdx(tBbsDataDB.getBbsDataIdx()); + tPoint.setPointDataIdx(tBbsComment.getBbsCommentIdx()); + tPoint.setPointRegdate(sdf.format(new Date())); + tPoint.setMemberIp(memberIp); + tPoint.setMemberIdx(memberIdx); + tPoint.setSiteIdx(tBbsDataDB.gettBbsSet().gettSite().getSiteIdx()); + tPoint.setFuncType("COMMENT"); + tPoint.setPointScore(tBbsDataDB.gettBbsSet().getBbsSetPointWrite()); + bbsDataDAO.setBbsPointProc(tPoint); + } + } + + return success; + } + + //ManagerBbsController + @Transactional + public boolean setBbsCommentDelProc(Integer bbsCommentIdx){ + + boolean success = false; + + T_BBS_COMMENT tBbsComment = bbsCommentDAO.getBbsCommentForm(bbsCommentIdx); + + if(bbsCommentDAO.setBbsCommentDelProc(tBbsComment)){ + T_BBS_DATA tBbsDataDB = bbsDataDAO.getBbsDataForm(tBbsComment.gettBbsData().getBbsDataIdx()); + tBbsDataDB.setBbsCommentCount(tBbsDataDB.getBbsCommentCount()-1); + success = bbsDataDAO.setBbsDataModProc(tBbsDataDB); + } + + return success; + } +} diff --git a/src/main/java/seed/manager/bbs/service/ManagerBbsFileService.java b/src/main/java/seed/manager/bbs/service/ManagerBbsFileService.java new file mode 100644 index 00000000..b22c35d1 --- /dev/null +++ b/src/main/java/seed/manager/bbs/service/ManagerBbsFileService.java @@ -0,0 +1,15 @@ +package seed.manager.bbs.service; + +import java.util.List; +import java.util.Map; + +import seed.map.T_BBS_FILE; + +public interface ManagerBbsFileService { + + //ManagerBbsController + public List getBbsFileList(Integer bbsDataIdx, String[] qryColumns); + + //ManagerBbsController + public List> getBbsFileListMap(Integer bbsDataIdx, String[] qryColumns); +} diff --git a/src/main/java/seed/manager/bbs/service/ManagerBbsFileServiceImpl.java b/src/main/java/seed/manager/bbs/service/ManagerBbsFileServiceImpl.java new file mode 100644 index 00000000..38a919e7 --- /dev/null +++ b/src/main/java/seed/manager/bbs/service/ManagerBbsFileServiceImpl.java @@ -0,0 +1,31 @@ +package seed.manager.bbs.service; + +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import egovframework.rte.fdl.cmmn.AbstractServiceImpl; + +import seed.dao.BbsFileDAO; +import seed.map.T_BBS_FILE; + +@Service +public class ManagerBbsFileServiceImpl extends AbstractServiceImpl implements ManagerBbsFileService{ + + @Autowired + private BbsFileDAO bbsFileDAO; + + //ManagerBbsController + public List getBbsFileList(Integer bbsDataIdx, String[] qryColumns){ + + return bbsFileDAO.getBbsFileList(bbsDataIdx, qryColumns); + } + + //ManagerBbsController + public List> getBbsFileListMap(Integer bbsDataIdx, String[] qryColumns){ + + return bbsFileDAO.getBbsFileListMap(bbsDataIdx, qryColumns); + } +} diff --git a/src/main/java/seed/manager/bbs/service/ManagerBbsSkinService.java b/src/main/java/seed/manager/bbs/service/ManagerBbsSkinService.java new file mode 100644 index 00000000..070221b9 --- /dev/null +++ b/src/main/java/seed/manager/bbs/service/ManagerBbsSkinService.java @@ -0,0 +1,37 @@ +package seed.manager.bbs.service; + +import java.util.List; + +import org.springframework.web.multipart.MultipartFile; + +import seed.map.T_BBS_SKIN; + +public interface ManagerBbsSkinService { + + //ManagerBbsController + public String getBbsSkinHtml(String rootPath, String skinType); + + //ManagerBbsController + public String getBbsSkinHtml(T_BBS_SKIN tBbsSkinDB, String rootPath); + + //ManagerBbsController + public T_BBS_SKIN getBbsSkinForm(Integer bbsSkinIdx); + + //ManagerBbsController + public Long getBbsSkinListCnt(String siteIdx); + + //ManagerBbsController + public List getBbsSkinList(String siteIdx, int page, int row, String[] qryColumns); + + //ManagerBbsController + public Integer setBbsSkinRegProc(T_BBS_SKIN tBbsSkin, String bbsSkinHtml, MultipartFile upFile, List multiFiles, Integer memberIdx, String rootPath); + + //ManagerBbsController + public boolean setBbsSkinModProc(T_BBS_SKIN tBbsSkin, String bbsSkinHtml, MultipartFile upFile, List multiFiles, Integer memberIdx, String rootPath); + + //ManagerBbsController + public boolean setBbsSkinDelProc(Integer bbsSkinIdx, String rootPath); + + //ManagerBbsController + public boolean setBbsSkinStatusProc(Integer bbsSkinIdx, String status, Integer memberIdx); +} diff --git a/src/main/java/seed/manager/bbs/service/ManagerBbsSkinServiceImpl.java b/src/main/java/seed/manager/bbs/service/ManagerBbsSkinServiceImpl.java new file mode 100644 index 00000000..69e922ad --- /dev/null +++ b/src/main/java/seed/manager/bbs/service/ManagerBbsSkinServiceImpl.java @@ -0,0 +1,427 @@ +package seed.manager.bbs.service; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import egovframework.rte.fdl.cmmn.AbstractServiceImpl; + +import seed.dao.BbsSkinDAO; +import seed.map.T_BBS_SKIN; +import seed.map.T_MEMBER; +import seed.utils.SeedFtpType; +import seed.utils.SeedUtils; + +@Service +public class ManagerBbsSkinServiceImpl extends AbstractServiceImpl implements ManagerBbsSkinService{ + + private Logger log = Logger.getLogger(this.getClass()); + + @Autowired + private BbsSkinDAO bbsSkinDAO; + + //ManagerBbsController + public synchronized String getBbsSkinHtml(String rootPath, String skinType){ + + StringBuffer fileHtml = new StringBuffer(); + String filePath = rootPath.substring(0, rootPath.lastIndexOf("/site")) + "/_common/_css/user/bbs/"+skinType+".css"; + filePath = SeedUtils.setFilePathReplaceAll(filePath); + + FileInputStream fileInputStream = null; + InputStreamReader inputStreamReader = null; + BufferedReader bufferedReader = null; + + try{ + + File cssFile = new File(filePath); + + if(cssFile.exists()){ + fileInputStream = new FileInputStream(filePath); + inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8"); + bufferedReader = new BufferedReader(inputStreamReader); + + String fileBuffer = ""; + + while((fileBuffer = bufferedReader.readLine()) != null){ + fileHtml.append(fileBuffer); + fileHtml.append("\n"); + } + } + }catch(FileNotFoundException e){ + log.error("CHECK ERROR:",e); + }catch(IOException e){ + log.error("CHECK ERROR:",e); + }finally{ + if(bufferedReader!=null){try{bufferedReader.close();}catch(IOException e){log.error("CHECK ERROR:",e);}} + if(inputStreamReader!=null){try{inputStreamReader.close();}catch(IOException e){log.error("CHECK ERROR:",e);}} + if(fileInputStream!=null){try{fileInputStream.close();}catch(IOException e){log.error("CHECK ERROR:",e);}} + } + + return fileHtml.toString(); + } + + //ManagerBbsController + public synchronized String getBbsSkinHtml(T_BBS_SKIN tBbsSkinDB, String rootPath){ + + StringBuffer fileHtml = new StringBuffer(); + String filePath = rootPath + "/" + tBbsSkinDB.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode() + "/_css/skin_"+tBbsSkinDB.getBbsSkinCode() + ".txt"; + filePath = SeedUtils.setFilePathReplaceAll(filePath); + FileInputStream fileInputStream = null; + InputStreamReader inputStreamReader = null; + BufferedReader bufferedReader = null; + + try{ + + File cssFile = new File(filePath); + + if(cssFile.exists()){ + fileInputStream = new FileInputStream(filePath); + inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8"); + bufferedReader = new BufferedReader(inputStreamReader); + + String fileBuffer = ""; + + while((fileBuffer = bufferedReader.readLine()) != null){ + fileHtml.append(fileBuffer); + fileHtml.append("\n"); + } + } + }catch(FileNotFoundException e){ + log.error("CHECK ERROR:",e); + }catch(IOException e){ + log.error("CHECK ERROR:",e); + }finally{ + if(bufferedReader!=null){try{bufferedReader.close();}catch(IOException e){log.error("CHECK ERROR:",e);}} + if(inputStreamReader!=null){try{inputStreamReader.close();}catch(IOException e){log.error("CHECK ERROR:",e);}} + if(fileInputStream!=null){try{fileInputStream.close();}catch(IOException e){log.error("CHECK ERROR:",e);}} + } + + return fileHtml.toString(); + } + + //ManagerBbsController + public T_BBS_SKIN getBbsSkinForm(Integer bbsSkinIdx){ + + return bbsSkinDAO.getBbsSkinForm(bbsSkinIdx); + } + + //ManagerBbsController + public Long getBbsSkinListCnt(String siteIdx){ + + return bbsSkinDAO.getBbsSkinListCnt(siteIdx); + } + + //ManagerBbsController + public List getBbsSkinList(String siteIdx, int page, int row, String[] qryColumns){ + + return bbsSkinDAO.getBbsSkinList(siteIdx, ((page-1) * row), row, qryColumns); + } + + //ManagerBbsController + @Transactional + public Integer setBbsSkinRegProc(T_BBS_SKIN tBbsSkin, String bbsSkinHtml, MultipartFile upFile, List multiFiles, Integer memberIdx, String rootPath){ + + Integer bbsSkinIdx = 0; + + FileOutputStream htmlFileOutputStream = null; + OutputStreamWriter htmlOutputStreamWriter = null; + BufferedWriter htmlWriter = null; + + FileOutputStream cssFileOutputStream = null; + OutputStreamWriter cssOutputStreamWriter = null; + BufferedWriter cssWriter = null; + + try{ + + //FTP 전송 + SeedFtpType seedFtpType = new SeedFtpType(); + + String bbsSkinCode = bbsSkinDAO.getBbsSkinCode(tBbsSkin.gettSite().getSiteIdx()); + + T_MEMBER tMember = new T_MEMBER(); + tMember.setMemberIdx(memberIdx); + + tBbsSkin.settMember(tMember); + tBbsSkin.setBbsSkinCode(bbsSkinCode); + tBbsSkin.setBbsSkinThumb("skin_"+bbsSkinCode); + tBbsSkin.setBbsSkinStatus("U"); + tBbsSkin.setBbsSkinRegDate(new Date()); + tBbsSkin.setBbsSkinModDate(new Date()); + + SeedUtils.setSeedMkDirs(rootPath + "/" + tBbsSkin.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + bbsSkinCode + "/_css"); + SeedUtils.setSeedMkDirs(rootPath + "/" + tBbsSkin.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + bbsSkinCode + "/_images"); + + SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String reFileName = bbsSkinCode + "_" + tBbsSkin.gettSite().getSiteIdx() + "_" + sdfFormat.format(new Date()) + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1))); + + File makeFile = new File(rootPath + "/" + tBbsSkin.gettSite().getSiteIdx() + + "/jsp/bbs/skin/" + bbsSkinCode + "/" + reFileName + + upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf("."))); + upFile.transferTo(makeFile); + + //WEB 서버의 경로 + seedFtpType.setDestFilePath(tBbsSkin.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + bbsSkinCode); + //WAS 서버의 경로 + seedFtpType.setSrcFilePath(rootPath + "/" + tBbsSkin.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + bbsSkinCode); + //WAS 파일명 + seedFtpType.setFileName(reFileName + upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf("."))); + //파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제 + seedFtpType.setFtpType("regFile"); + seedFtpType.setSeedFtp(); + + tBbsSkin.setBbsSkinReThumb(reFileName+upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf("."))); + + T_BBS_SKIN tBbsSkinDB = bbsSkinDAO.setBbsSkinRegProc(tBbsSkin); + + if(tBbsSkinDB.getBbsSkinIdx() > 0){ + bbsSkinIdx = tBbsSkinDB.getBbsSkinIdx(); + } + + String filePath = rootPath + "/" + tBbsSkin.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + bbsSkinCode + "/_css/skin_"+bbsSkinCode; + + htmlFileOutputStream = new FileOutputStream(filePath+".txt"); + htmlOutputStreamWriter = new OutputStreamWriter(htmlFileOutputStream, "UTF-8"); + htmlWriter = new BufferedWriter(htmlOutputStreamWriter); + + htmlWriter.write(bbsSkinHtml); + htmlWriter.flush(); + + //WEB 서버의 경로 + seedFtpType.setDestFilePath(tBbsSkin.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + bbsSkinCode + "/_css"); + //WAS 서버의 경로 + seedFtpType.setSrcFilePath(rootPath + "/" + tBbsSkin.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + bbsSkinCode + "/_css"); + //WAS 파일명 + seedFtpType.setFileName("skin_"+bbsSkinCode+".txt"); + //파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제 + seedFtpType.setFtpType("regFile"); + seedFtpType.setSeedFtp(); + + cssFileOutputStream = new FileOutputStream(filePath+".css"); + cssOutputStreamWriter = new OutputStreamWriter(cssFileOutputStream, "UTF-8"); + cssWriter = new BufferedWriter(cssOutputStreamWriter); + + cssWriter.write(bbsSkinHtml); + cssWriter.flush(); + + //WEB 서버의 경로 + seedFtpType.setDestFilePath(tBbsSkin.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + bbsSkinCode + "/_css"); + //WAS 서버의 경로 + seedFtpType.setSrcFilePath(rootPath + "/" + tBbsSkin.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + bbsSkinCode + "/_css"); + //WAS 파일명 + seedFtpType.setFileName("skin_"+bbsSkinCode+".css"); + //파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제 + seedFtpType.setFtpType("regFile"); + seedFtpType.setSeedFtp(); + + for(int f=0; f multiFiles, Integer memberIdx, String rootPath){ + + T_BBS_SKIN tBbsSkinDB = bbsSkinDAO.getBbsSkinForm(tBbsSkin.getBbsSkinIdx()); + + FileOutputStream htmlFileOutputStream = null; + OutputStreamWriter htmlOutputStreamWriter = null; + BufferedWriter htmlWriter = null; + + FileOutputStream cssFileOutputStream = null; + OutputStreamWriter cssOutputStreamWriter = null; + BufferedWriter cssWriter = null; + + try{ + + //FTP 전송 + SeedFtpType seedFtpType = new SeedFtpType(); + + T_MEMBER tMember = new T_MEMBER(); + tMember.setMemberIdx(memberIdx); + + tBbsSkinDB.settMember(tMember); + tBbsSkinDB.setBbsSkinModDate(new Date()); + tBbsSkinDB.setBbsSkinType(tBbsSkin.getBbsSkinType()); + tBbsSkinDB.setBbsSkinSubType(tBbsSkin.getBbsSkinSubType()); + + if(upFile != null && upFile.getBytes().length > 0){ + + SeedUtils.setSeedDeleteFile(rootPath + "/" + tBbsSkinDB.gettSite().getSiteIdx() + + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode() + "/" + tBbsSkinDB.getBbsSkinReThumb()); + + //WEB 서버의 경로 + seedFtpType.setDestFilePath(tBbsSkinDB.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode()); + //WAS 서버의 경로 + seedFtpType.setSrcFilePath(""); + //WAS 파일명 + seedFtpType.setFileName(tBbsSkinDB.getBbsSkinReThumb()); + //파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제 + seedFtpType.setFtpType("delFile"); + seedFtpType.setSeedFtp(); + + SeedUtils.setSeedMkDirs(rootPath + "/" + tBbsSkinDB.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode() + "/_css"); + SeedUtils.setSeedMkDirs(rootPath + "/" + tBbsSkinDB.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode() + "/_images"); + + SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String reFileName = tBbsSkinDB.getBbsSkinCode() + "_" + tBbsSkinDB.gettSite().getSiteIdx() + "_" + sdfFormat.format(new Date()) + "_" + SeedUtils.getSeedMD5Code(String.valueOf(SeedUtils.getRandom(999,1))); + + File makeFile = new File(rootPath + "/" + tBbsSkinDB.gettSite().getSiteIdx() + + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode() + "/" + reFileName + + upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf("."))); + upFile.transferTo(makeFile); + + //WEB 서버의 경로 + seedFtpType.setDestFilePath(tBbsSkinDB.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode()); + //WAS 서버의 경로 + seedFtpType.setSrcFilePath(rootPath + "/" + tBbsSkinDB.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode()); + //WAS 파일명 + seedFtpType.setFileName(reFileName + upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf("."))); + //파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제 + seedFtpType.setFtpType("regFile"); + seedFtpType.setSeedFtp(); + + tBbsSkinDB.setBbsSkinReThumb(reFileName+upFile.getOriginalFilename().substring(upFile.getOriginalFilename().lastIndexOf("."))); + } + + String filePath = rootPath + "/" + tBbsSkin.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode() + "/_css/skin_"+tBbsSkinDB.getBbsSkinCode(); + + htmlFileOutputStream = new FileOutputStream(filePath+".txt"); + htmlOutputStreamWriter = new OutputStreamWriter(htmlFileOutputStream, "UTF-8"); + htmlWriter = new BufferedWriter(htmlOutputStreamWriter); + + htmlWriter.write(bbsSkinHtml); + htmlWriter.flush(); + + //WEB 서버의 경로 + seedFtpType.setDestFilePath(tBbsSkin.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode() + "/_css"); + //WAS 서버의 경로 + seedFtpType.setSrcFilePath(rootPath + "/" + tBbsSkin.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode() + "/_css"); + //WAS 파일명 + seedFtpType.setFileName("skin_"+tBbsSkinDB.getBbsSkinCode()+".txt"); + //파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제 + seedFtpType.setFtpType("regFile"); + seedFtpType.setSeedFtp(); + + cssFileOutputStream = new FileOutputStream(filePath+".css"); + cssOutputStreamWriter = new OutputStreamWriter(cssFileOutputStream, "UTF-8"); + cssWriter = new BufferedWriter(cssOutputStreamWriter); + + cssWriter.write(bbsSkinHtml); + cssWriter.flush(); + + //WEB 서버의 경로 + seedFtpType.setDestFilePath(tBbsSkin.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode() + "/_css"); + //WAS 서버의 경로 + seedFtpType.setSrcFilePath(rootPath + "/" + tBbsSkin.gettSite().getSiteIdx() + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode() + "/_css"); + //WAS 파일명 + seedFtpType.setFileName("skin_"+tBbsSkinDB.getBbsSkinCode()+".css"); + //파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제 + seedFtpType.setFtpType("regFile"); + seedFtpType.setSeedFtp(); + + for(int f=0; f> getBbsTrashList(Integer bbsSetIdx, int page, int row, String column, String search, String bbsSetType, String searchSDate, String searchEDate, ArrayList qryArrayList); + + //ManagerBbsController + public boolean setBbsTrashProc(Integer bbsDataIdx, String status, String rootPath); +} diff --git a/src/main/java/seed/manager/bbs/service/ManagerBbsTrashServiceImpl.java b/src/main/java/seed/manager/bbs/service/ManagerBbsTrashServiceImpl.java new file mode 100644 index 00000000..c9bb85b3 --- /dev/null +++ b/src/main/java/seed/manager/bbs/service/ManagerBbsTrashServiceImpl.java @@ -0,0 +1,189 @@ +package seed.manager.bbs.service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import egovframework.rte.fdl.cmmn.AbstractServiceImpl; + +import seed.dao.BbsDataDAO; +import seed.dao.BbsFileDAO; +import seed.map.T_BBS_DATA; +import seed.map.T_BBS_FILE; +import seed.utils.SeedFtpType; +import seed.utils.SeedUtils; + +@Service +public class ManagerBbsTrashServiceImpl extends AbstractServiceImpl implements ManagerBbsTrashService{ + + @Autowired + private BbsDataDAO bbsDataDAO; + + @Autowired + private BbsFileDAO bbsFileDAO; + + //ManagerBbsController + public T_BBS_DATA getBbsTrashForm(Integer bbsDataIdx){ + + return bbsDataDAO.getBbsTrashForm(bbsDataIdx); + } + + //ManagerBbsController + public Long getBbsTrashListCnt(Integer bbsSetIdx, String column, String search, String bbsSetType, String searchSDate, String searchEDate){ + + return bbsDataDAO.getBbsTrashListCnt(bbsSetIdx, column, search, bbsSetType, searchSDate, searchEDate); + } + + //ManagerBbsController + public List> getBbsTrashList(Integer bbsSetIdx, int page, int row, String column, String search, String bbsSetType, String searchSDate, String searchEDate, ArrayList qryArrayList){ + + return bbsDataDAO.getBbsTrashList(bbsSetIdx, ((page-1) * row), row, column, search, bbsSetType, searchSDate, searchEDate, qryArrayList); + } + + //ManagerBbsController + @Transactional + public boolean setBbsTrashProc(Integer bbsDataIdx, String status, String rootPath){ + + T_BBS_DATA tBbsDataDB = bbsDataDAO.getBbsTrashForm(bbsDataIdx); + + String siteIdx = tBbsDataDB.gettBbsSet().gettSite().getSiteIdx(); + Integer bbsSetIdx = tBbsDataDB.gettBbsSet().getBbsSetIdx(); + String bbsSetType = tBbsDataDB.gettBbsSet().getBbsSetType(); + Integer bbsDataGroup = tBbsDataDB.getBbsDataGroup(); + Integer bbsDataFam = tBbsDataDB.getBbsDataFam(); + + tBbsDataDB.setBbsDataStatus(status); + + if(status.equals("D")){ + + //답글 게시판인 경우 해당 글의 답글도 삭제 + if(bbsSetType.equals("W")){ + + T_BBS_DATA tBbsReplyDB = bbsDataDAO.getBbsReplyForm(bbsDataGroup, bbsDataFam); + + if(tBbsReplyDB != null){ + + List tBbsFileReplyList = bbsFileDAO.getBbsFileList(tBbsReplyDB.getBbsDataIdx(), new String[] {}); + + if(tBbsFileReplyList != null && tBbsFileReplyList.size() > 0){ + + //FTP 전송 + SeedFtpType seedFtpType = new SeedFtpType(); + + for(int f=0; f tBbsFileList = bbsFileDAO.getBbsFileList(bbsDataIdx, new String[] {}); + + if(tBbsFileList != null && tBbsFileList.size() > 0){ + + //FTP 전송 + SeedFtpType seedFtpType = new SeedFtpType(); + + for(int f=0; f map, + @PathVariable(value="siteIdx") String siteIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="siteMenuIdx", defaultValue="0", required=false) Integer siteMenuIdx, + @RequestParam(value="menuCode", defaultValue="N", required=false) String menuCode, + @RequestParam(value="orderColumn", defaultValue="bbsSetIdx", required=false) String orderColumn, + @RequestParam(value="order", defaultValue="DESC", required=false) String order, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/bbsSetList.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + //기능 관리자 URL로 넘어온 경우 + if(pageType.equals("gte")){ + + if(memberIdx == 0){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + //기능 관리자인데 슈퍼관리자나 해당 사이트관리자가 들어오면 모든 게시판을 보여준다 + if(memberGrant.equals("S") || memberAuth){ + + String[] qryColumns = {"groupBy", "bbsSetIdx", "bbsSetName", "bbsSetType", "bbsSetStatus", "bbsSetRegDate"}; + + paging.setCount(managerBbsSetService.getBbsSetListCnt(siteIdx, column, search)); + + map.put("bbsSetListCnt", paging.getCount()); + map.put("bbsSetList", managerBbsSetService.getBbsSetList(siteIdx, paging.getPage(), paging.getRow(), orderColumn, order, column, search, qryColumns)); + + }else{ + + String[] qryColumns = {"tBbsSet.bbsSetIdx", "tBbsSet.bbsSetName", "tBbsSet.bbsSetType", "tBbsSet.bbsSetStatus", "tBbsSet.bbsSetRegDate"}; + + paging.setCount(managerBbsManagerService.getBbsManagerListCnt(siteIdx, memberIdx, column, search)); + + String orderColumnTmp = ""; + + if(orderColumn.indexOf("bbsSet") > -1){ + orderColumnTmp = "tBbsSet."+orderColumn; + }else{ + orderColumnTmp = orderColumn; + } + + map.put("bbsSetListCnt", paging.getCount()); + map.put("bbsSetList", managerBbsManagerService.getBbsManagerList(siteIdx, memberIdx, paging.getPage(), paging.getRow(), orderColumnTmp, order, column, search, qryColumns)); + } + + map.put("page", paging.getPage()); + map.put("row", paging.getRow()); + map.put("pages", paging.getPages()); + map.put("blocks", paging.getBlocks()); + map.put("block", paging.getBlock()); + map.put("fPage", paging.getfPage()); + map.put("lPage", paging.getlPage()); + + map.put("orderColumn", orderColumn); + map.put("order", order); + map.put("column", column); + map.put("search", search); + + map.put("memberGrant", memberGrant); + map.put("memberAuth", memberAuth); + + return new ModelAndView("/manager/bbs/bbsESetList"); + + }else{ + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + String[] qryColumns = {"groupBy", "tBbsDatas.bbsDataIdxCnt", "bbsSetIdx", "bbsSetName", "bbsSetType", "bbsSetStatus", "bbsSetRegDate", "tMember.memberId", "tMember.memberName"}; + + paging.setCount(managerBbsSetService.getBbsSetListCnt(siteIdx, column, search)); + + map.put("bbsSetListCnt", paging.getCount()); + map.put("bbsSetList", managerBbsSetService.getBbsSetList(siteIdx, paging.getPage(), paging.getRow(), orderColumn, order, column, search, qryColumns)); + + map.put("siteMenuIdx", siteMenuIdx); + map.put("menuCode", menuCode); + + map.put("page", paging.getPage()); + map.put("row", paging.getRow()); + map.put("pages", paging.getPages()); + map.put("blocks", paging.getBlocks()); + map.put("block", paging.getBlock()); + map.put("fPage", paging.getfPage()); + map.put("lPage", paging.getlPage()); + + map.put("orderColumn", orderColumn); + map.put("order", order); + map.put("column", column); + map.put("search", search); + + map.put("memberGrant", memberGrant); + map.put("memberAuth", memberAuth); + + return new ModelAndView("/manager/bbs/bbsSetList"); + } + } + + @RequestMapping(value = "/gtm/{siteIdx}/bbsSetForm.do") + public ModelAndView getBbsSetForm(HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){ + setSessionRemove(session); + map.put("url", "/gtm/login.do"); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + map.put("memberAuth", memberAuth); + + return new ModelAndView("/manager/bbs/bbsSetForm"); + } + + @RequestMapping(value = {"/gtm/{siteIdx}/bbsSetEdit/{bbsSetIdx}.do", "/gte/{siteIdx}/bbsSetEdit/{bbsSetIdx}.do"}, method=RequestMethod.GET) + public ModelAndView getBbsSetEdit(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="orderColumn", defaultValue="bbsSetIdx", required=false) String orderColumn, + @RequestParam(value="order", defaultValue="DESC", required=false) String order, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/bbsSetEdit/"+bbsSetIdx+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + //memberAuthM을 추가한 이유는 해당 담당자가 게시글 권한이 있을경우 로그인 하기 위해서 추가함 + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + //해당 권한이 슈퍼관리자,사이트 관리자,게시판 권한 관리자가 아닌경우, memberAuthM의 권한이 있는 경우 해당 게시글 리스트 페이지로 이동 + if(!memberGrant.equals("S") && !memberAuth && !memberAuthG){ + + //기능 관리자 URL로 넘어온 경우 + if(pageType.equals("gte")){ + return new ModelAndView("redirect:/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsDataList.do"); + }else{ + return new ModelAndView("redirect:/gtm/"+siteIdx+"/"+bbsSetIdx+"/bbsDataList.do"); + } + } + + map.put("page", paging.getPage()); + map.put("row", paging.getRow()); + + map.put("orderColumn", orderColumn); + map.put("order", order); + map.put("column", column); + map.put("search", search); + + map.put("tBbsSetDB", managerBbsSetService.getBbsSetForm(bbsSetIdx)); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + + return new ModelAndView("/manager/bbs/bbsSetEdit"); + } + + @RequestMapping(value = "/gtm/proc/{siteIdx}/bbsSetRegProc.do", method=RequestMethod.POST) + public ModelAndView setBbsSetRegProc(HttpServletResponse httpServletResponse, HttpSession session, Map map, MultipartFile upFile, + @PathVariable(value="siteIdx") String siteIdx, + @ModelAttribute("T_BBS_SET") T_BBS_SET tBbsSet, + BindingResult bindingResult){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){ + setSessionRemove(session); + map.put("url", "/gtm/login.do"); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(upFile != null && upFile.getSize() > 0){ + + if (!Pattern.matches("(?i)^[\\d\\D]*\\.(jpg|gif|png|bmp)$", upFile.getOriginalFilename().toLowerCase())) { + map.put("url", "/gtm/"+siteIdx+"/bbsSetForm.do"); + map.put("message", "common.fileupload.message.image.upload"); + return new ModelAndView("/_common/jsp/message"); + } + } + + Integer bbsSetIdx= managerBbsSetService.setBbsSetRegProc(tBbsSet, upFile, memberIdx, memberMerge, memberMergeSiteIdx, rootPath); + + if(bbsSetIdx > 0){ + map.put("url", "/gtm/"+siteIdx+"/bbsSetList.do"); + map.put("message", "common.message.reg"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, bbsSetIdx); + + }else{ + map.put("url", "/gtm/"+siteIdx+"/bbsSetForm.do"); + map.put("message", "common.message.error.reg"); + } + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/bbsSetModProc.do", "/gte/proc/{siteIdx}/bbsSetModProc.do"}, method=RequestMethod.POST) + public ModelAndView setBbsSetModProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, MultipartFile upFile, + @PathVariable(value="siteIdx") String siteIdx, + @ModelAttribute("T_BBS_SET") T_BBS_SET tBbsSet, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="orderColumn", defaultValue="BbsSetIdx", required=false) String orderColumn, + @RequestParam(value="order", defaultValue="DESC", required=false) String order, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + BindingResult bindingResult){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(tBbsSet.getBbsSetIdx(), memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/bbsSetModProc.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(upFile != null && upFile.getSize() > 0){ + + if (!Pattern.matches("(?i)^[\\d\\D]*\\.(jpg|gif|png|bmp)$", upFile.getOriginalFilename().toLowerCase())) { + map.put("url", "/gtm/"+siteIdx+"/bbsSetEdit/"+tBbsSet.getBbsSetIdx()+".do?"+ + "page="+paging.getPage()+"&"+ + "row="+paging.getRow()+"&"+ + "orderColumn="+orderColumn+"&"+ + "order="+order+"&"+ + "column="+column+"&"+ + "search="+search); + map.put("message", "common.fileupload.message.image.upload"); + return new ModelAndView("/_common/jsp/message"); + } + } + + //파일 암호화 여부 + boolean fileEncryChk = false; + + //파일 암호화 해야하는 코드 + String[] fileEncryptions = fileEncryptionType.split(","); + + if(fileEncryption.equals("true")){ + for(int i=0; i map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="orderColumn", defaultValue="BbsSetIdx", required=false) String orderColumn, + @RequestParam(value="order", defaultValue="DESC", required=false) String order, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){ + setSessionRemove(session); + map.put("url", "/gtm/login.do"); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsSetService.setBbsSetDelProc(bbsSetIdx, rootPath)){ + map.put("message", "common.message.del"); + + //미니리스트 컴파일 + setBbsFileDelMiniList(siteIdx, bbsSetIdx); + + }else{ + map.put("message", "common.message.error.del"); + } + + map.put("url", "/gtm/"+siteIdx+"/bbsSetList.do?"+ + "page="+paging.getPage()+"&"+ + "row="+paging.getRow()+"&"+ + "orderColumn="+orderColumn+"&"+ + "order="+order+"&"+ + "column="+column+"&"+ + "search="+search); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = "/gtm/proc/{siteIdx}/bbsSetStatusProc.do", method=RequestMethod.POST) + public ModelAndView setBbsSetStatusProc(HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="orderColumn", defaultValue="bbsSetIdx", required=false) String orderColumn, + @RequestParam(value="order", defaultValue="DESC", required=false) String order, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="idxs", required=true) Integer[] idxs, + @RequestParam(value="selStatus", required=true) String selStatus){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){ + setSessionRemove(session); + map.put("url", "/gtm/login.do"); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + boolean chk = false; + + if(idxs.length > 0){ + for(int i=0; i map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="bbsDataCategory", defaultValue="", required=false) String bbsDataCategory, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsDataList.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_SET tBbsSetDB = managerBbsSetService.getBbsSetForm(bbsSetIdx); + + ArrayList qryArrayList = new ArrayList(); + boolean bbsDataContent = false; + boolean bbsDataReplyStatus = false; + + qryArrayList.add("bbsDataIdx"); + qryArrayList.add("bbsDataDepth"); + qryArrayList.add("bbsDataGroup"); + qryArrayList.add("bbsDataFam"); + qryArrayList.add("bbsDataPosition"); + qryArrayList.add("bbsDataSecret"); + qryArrayList.add("bbsDataLinkUrl"); + qryArrayList.add("bbsDataLinkType"); + qryArrayList.add("bbsDataRegDate"); + qryArrayList.add("bbsCommentCount"); + + if(tBbsSetDB.getBbsSetType().equals("A") || tBbsSetDB.getBbsSetType().equals("M")){ //앨범게시판 이거나 동영상게시판 일때는 해당 컬럼을 추가하여 가져옴 + qryArrayList.add("bbsDataThumb"); + qryArrayList.add("bbsDataThumbText"); + } + + String[] qryColumns = {"groupBy", "bbsItemGroup", "bbsItemPattern", "bbsItemWL", "bbsItemName", "bbsItemColWidth", + "bbsItemEssential", "bbsItemList", "bbsItemLink", "bbsItemSearch", + "bbsItemStatus", "bbsItemListOrder", "bbsItemType", "bbsItemDataLength", "bbsItemActiveHidden"}; + + List> tBbsItemList = managerBbsItemService.getBbsItemList(bbsSetIdx, "List", qryColumns); + + map.put("bbsItemList", tBbsItemList); + map.put("bbsItemListCnt", tBbsItemList.size()); + + String[] qryColumnsiv = {"bbsItemIdx", "bbsItemGroup", "bbsItemValue", "bbsItemWidth", "bbsItemHeight"}; + + map.put("bbsItemValuesList", managerBbsItemService.getBbsItemValuesList(bbsSetIdx, "List", qryColumnsiv)); + + for(int i=0; i bbsItemMap = (Map)tBbsItemList.get(i); + if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemList")).toString().equals("Y") && + SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemStatus")).toString().equals("U")){ + + if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataFile")){ + qryArrayList.add("bbsFileCount"); + }else if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataContent")){ + bbsDataContent = true; + }else if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataReplyStatus")){ + bbsDataReplyStatus = true; + }else if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataRegDate")){ + continue; + }else{ + qryArrayList.add(bbsItemMap.get("_bbsItemGroup").toString()); + } + + if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataName")){ + if(SeedUtils.setReplaceNull(tBbsSetDB.getBbsSetDataSaveType()).equals("memberDept")){ + qryArrayList.add("bbsDataDept"); + }else{ + qryArrayList.add("tMember.memberName"); + } + } + } + } + + if(tBbsSetDB.getBbsSetType().equals("B") || tBbsSetDB.getBbsSetType().equals("F") || tBbsSetDB.getBbsSetType().equals("L") || tBbsSetDB.getBbsSetType().equals("W")){ + + List> bbsNoticeDataMapList = managerBbsDataService.getBbsNoticeDataList(bbsSetIdx, column, search, SeedUtils.setReplaceNull(tBbsSetDB.getBbsSetDateOrder(), "N"), bbsDataCategory, searchSDate, searchEDate, qryArrayList); + + if(tBbsSetDB.getBbsSetType().equals("F")){ + + ArrayList bbsNoticeFileMapList = new ArrayList(); + + for(int n=0; n bbsDataMap = bbsNoticeDataMapList.get(n); + Integer bbsDataIdx = Integer.parseInt(bbsDataMap.get("_bbsDataIdx").toString()); + + String[] qryColumnsf = null; + + List bbsFileList = managerBbsFileService.getBbsFileList(bbsDataIdx, qryColumnsf); + + for(int f=0; f bbsNoticeDataMap = bbsNoticeDataMapList.get(i); + + bbsNoticeDataMap.put("_bbsDataContent", SeedUtils.setTagRemove(managerBbsDataService.getBbsDataForm(Integer.parseInt(bbsNoticeDataMap.get("_bbsDataIdx").toString())).getBbsDataContent())); + } + } + + //답변게시판일때 해당 글의 답변 글의 답변상태를 가져옴 + if(bbsDataReplyStatus && tBbsSetDB.getBbsSetType().equals("W")){ + + for(int i=0; i bbsNoticeDataMap = bbsNoticeDataMapList.get(i); + + T_BBS_DATA tBbsReplyDB = managerBbsDataService.getBbsReplyForm(Integer.parseInt(bbsNoticeDataMap.get("_bbsDataGroup").toString()), Integer.parseInt(bbsNoticeDataMap.get("_bbsDataFam").toString())); + + if(tBbsReplyDB != null){ + bbsNoticeDataMap.put("_bbsDataReplyStatus", SeedUtils.setReplaceNull(tBbsReplyDB.getBbsDataReplyStatus())); + bbsNoticeDataMap.put("_bbsDataReplySecret", SeedUtils.setReplaceNull(tBbsReplyDB.getBbsDataSecret())); + }else{ + + //데이타가 없을때 ITEM VALEUS값의 가장 상단의 데이타를 가져옴 + T_BBS_ITEM tBbsItemDB = managerBbsItemService.getBbsItemValueForm(bbsSetIdx, "bbsDataReplyStatus"); + + bbsNoticeDataMap.put("_bbsDataReplyStatus", SeedUtils.setReplaceNull(tBbsItemDB.getBbsItemValue())); + bbsNoticeDataMap.put("_bbsDataReplySecret", "N"); + } + } + } + + map.put("bbsNoticeDataList", bbsNoticeDataMapList); + } + + paging.setCount(managerBbsDataService.getBbsDataListCnt(bbsSetIdx, column, search, tBbsSetDB.getBbsSetType(), bbsDataCategory, searchSDate, searchEDate, qryArrayList)); + + map.put("bbsDataCnt", paging.getCount()); + + List> bbsDataMapList = managerBbsDataService.getBbsDataList(bbsSetIdx, paging.getPage(), paging.getRow(), column, search, SeedUtils.setReplaceNull(tBbsSetDB.getBbsSetDateOrder(), "N"), tBbsSetDB.getBbsSetType(), bbsDataCategory, searchSDate, searchEDate, qryArrayList); + + if(tBbsSetDB.getBbsSetType().equals("F")){ + + ArrayList bbsFileMapList = new ArrayList(); + + for(int n=0; n bbsDataMap = bbsDataMapList.get(n); + Integer bbsDataIdx = Integer.parseInt(bbsDataMap.get("_bbsDataIdx").toString()); + + String[] qryColumnsf = null; + + List bbsFileList = managerBbsFileService.getBbsFileList(bbsDataIdx, qryColumnsf); + + for(int f=0; f bbsDataMap = bbsDataMapList.get(i); + + bbsDataMap.put("_bbsDataContent", SeedUtils.setTagRemove(managerBbsDataService.getBbsDataForm(Integer.parseInt(bbsDataMap.get("_bbsDataIdx").toString())).getBbsDataContent())); + } + } + + //답변게시판일때 해당 글의 답변 글의 답변상태를 가져옴 + if(bbsDataReplyStatus && tBbsSetDB.getBbsSetType().equals("W")){ + + for(int i=0; i bbsDataMap = bbsDataMapList.get(i); + + T_BBS_DATA tBbsReplyDB = managerBbsDataService.getBbsReplyForm(Integer.parseInt(bbsDataMap.get("_bbsDataGroup").toString()), Integer.parseInt(bbsDataMap.get("_bbsDataFam").toString())); + + if(tBbsReplyDB != null){ + bbsDataMap.put("_bbsDataReplyStatus", SeedUtils.setReplaceNull(tBbsReplyDB.getBbsDataReplyStatus())); + bbsDataMap.put("_bbsDataReplySecret", SeedUtils.setReplaceNull(tBbsReplyDB.getBbsDataSecret())); + }else{ + + //데이타가 없을때 ITEM VALEUS값의 가장 상단의 데이타를 가져옴 + T_BBS_ITEM tBbsItemDB = managerBbsItemService.getBbsItemValueForm(bbsSetIdx, "bbsDataReplyStatus"); + + bbsDataMap.put("_bbsDataReplyStatus", SeedUtils.setReplaceNull(tBbsItemDB.getBbsItemValue())); + bbsDataMap.put("_bbsDataReplySecret", "N"); + } + } + } + + map.put("bbsDataList", bbsDataMapList); + + String[] qryColumnsic = {"bbsCategoryName", "bbsCategoryIdxs", "bbsCategoryParentIdx", "bbsCategoryDepth", "bbsCategoryOrder"}; + + map.put("bbsCategoryList", managerBbsCategoryService.getBbsCategoryListt(bbsSetIdx, qryColumnsic)); + + SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyy-MM-dd"); + + map.put("bbsSetTypeList", managerBbsSetService.getBbsSetList(siteIdx, bbsSetIdx, tBbsSetDB.getBbsSetType(), new String[] {"bbsSetIdx", "bbsSetName", "bbsSetType"})); + map.put("tBbsSetDB", tBbsSetDB); + map.put("toDate", sdfFormat.format(new Date())); + + map.put("page", paging.getPage()); + map.put("row", paging.getRow()); + map.put("pages", paging.getPages()); + map.put("blocks", paging.getBlocks()); + map.put("block", paging.getBlock()); + map.put("fPage", paging.getfPage()); + map.put("lPage", paging.getlPage()); + + map.put("column", column); + map.put("search", search); + map.put("bbsDataCategory", bbsDataCategory); + map.put("searchSDate", searchSDate); + map.put("searchEDate", searchEDate); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + map.put("memberAuthM", memberAuthM); + + if(tBbsSetDB.getBbsSetType().equals("A")){ + return new ModelAndView("/manager/bbs/album/albumDataList"); + }else if(tBbsSetDB.getBbsSetType().equals("M")){ + return new ModelAndView("/manager/bbs/movie/movieDataList"); + }else if(tBbsSetDB.getBbsSetType().equals("T")){ + return new ModelAndView("/manager/bbs/thumbfile/thumbfileDataList"); + }else if(tBbsSetDB.getBbsSetType().equals("W")){ + return new ModelAndView("/manager/bbs/answer/answerDataList"); + }else{ + return new ModelAndView("/manager/bbs/bbs/bbsDataList"); + } + } + */ + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsDataList.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsDataList.do"}) + public ModelAndView getBbsDataList(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="bbsDataCategory", defaultValue="", required=false) String bbsDataCategory, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsDataList.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_SET tBbsSetDB = managerBbsSetService.getBbsSetForm(bbsSetIdx); + + ArrayList qryArrayList = new ArrayList(); + + qryArrayList.add("bbsDataIdx"); + qryArrayList.add("bbsDataTitle"); + qryArrayList.add("bbsDataHit"); + qryArrayList.add("bbsDataDepth"); + qryArrayList.add("bbsDataGroup"); + qryArrayList.add("bbsDataFam"); + qryArrayList.add("bbsDataPosition"); + qryArrayList.add("bbsDataSecret"); + qryArrayList.add("bbsDataLinkUrl"); + qryArrayList.add("bbsDataLinkType"); + qryArrayList.add("bbsDataRegDate"); + qryArrayList.add("bbsCommentCount"); + qryArrayList.add("bbsFileCount"); + + if(tBbsSetDB.getBbsSetType().equals("A") || tBbsSetDB.getBbsSetType().equals("M") || tBbsSetDB.getBbsSetType().equals("T") || tBbsSetDB.getBbsSetType().equals("E")){ //앨범게시판 이거나 동영상게시판 일때는 해당 컬럼을 추가하여 가져옴 + qryArrayList.add("bbsDataThumb"); + qryArrayList.add("bbsDataThumbText"); + + //이벤트게시판일 경우 해당 이벤트 기간 시작일~종료일을 가져옴 + if(tBbsSetDB.getBbsSetType().equals("E")){ + qryArrayList.add("bbsDataEventSdate"); + qryArrayList.add("bbsDataEventEdate"); + } + } + + if(SeedUtils.setReplaceNull(tBbsSetDB.getBbsSetDataSaveType()).equals("memberDept")){ + qryArrayList.add("bbsDataDept"); + }else{ + qryArrayList.add("tMember.memberName"); + } + + if(tBbsSetDB.getBbsSetType().equals("B") || tBbsSetDB.getBbsSetType().equals("F") || tBbsSetDB.getBbsSetType().equals("L") || tBbsSetDB.getBbsSetType().equals("W")){ + + List> bbsNoticeDataMapList = managerBbsDataService.getBbsNoticeDataList(bbsSetIdx, column, search, SeedUtils.setReplaceNull(tBbsSetDB.getBbsSetDateOrder(), "N"), bbsDataCategory, searchSDate, searchEDate, qryArrayList); + + if(tBbsSetDB.getBbsSetType().equals("F")){ + + ArrayList bbsNoticeFileMapList = new ArrayList(); + + for(int n=0; n bbsDataMap = bbsNoticeDataMapList.get(n); + Integer bbsDataIdx = Integer.parseInt(bbsDataMap.get("_bbsDataIdx").toString()); + + String[] qryColumnsf = null; + + List bbsFileList = managerBbsFileService.getBbsFileList(bbsDataIdx, qryColumnsf); + + for(int f=0; f bbsNoticeDataMap = bbsNoticeDataMapList.get(i); + + T_BBS_DATA tBbsReplyDB = managerBbsDataService.getBbsReplyForm(Integer.parseInt(bbsNoticeDataMap.get("_bbsDataGroup").toString()), Integer.parseInt(bbsNoticeDataMap.get("_bbsDataFam").toString())); + + if(tBbsReplyDB != null){ + bbsNoticeDataMap.put("_bbsDataReplyStatus", SeedUtils.setReplaceNull(tBbsReplyDB.getBbsDataReplyStatus())); + bbsNoticeDataMap.put("_bbsDataReplySecret", SeedUtils.setReplaceNull(tBbsReplyDB.getBbsDataSecret())); + }else{ + + //데이타가 없을때 ITEM VALEUS값의 가장 상단의 데이타를 가져옴 + T_BBS_ITEM tBbsItemDB = managerBbsItemService.getBbsItemValueForm(bbsSetIdx, "bbsDataReplyStatus"); + + bbsNoticeDataMap.put("_bbsDataReplyStatus", SeedUtils.setReplaceNull(tBbsItemDB.getBbsItemValue())); + bbsNoticeDataMap.put("_bbsDataReplySecret", "N"); + } + } + } + + map.put("bbsNoticeDataList", bbsNoticeDataMapList); + } + + paging.setCount(managerBbsDataService.getBbsDataListCnt(bbsSetIdx, column, search, tBbsSetDB.getBbsSetType(), bbsDataCategory, searchSDate, searchEDate, qryArrayList)); + + map.put("bbsDataCnt", paging.getCount()); + + List> bbsDataMapList = managerBbsDataService.getBbsDataList(bbsSetIdx, paging.getPage(), paging.getRow(), column, search, SeedUtils.setReplaceNull(tBbsSetDB.getBbsSetDateOrder(), "N"), tBbsSetDB.getBbsSetType(), bbsDataCategory, searchSDate, searchEDate, qryArrayList); + + if(tBbsSetDB.getBbsSetType().equals("F")){ + + ArrayList bbsFileMapList = new ArrayList(); + + for(int n=0; n bbsDataMap = bbsDataMapList.get(n); + Integer bbsDataIdx = Integer.parseInt(bbsDataMap.get("_bbsDataIdx").toString()); + + String[] qryColumnsf = null; + + List bbsFileList = managerBbsFileService.getBbsFileList(bbsDataIdx, qryColumnsf); + + for(int f=0; f bbsDataMap = bbsDataMapList.get(i); + + T_BBS_DATA tBbsReplyDB = managerBbsDataService.getBbsReplyForm(Integer.parseInt(bbsDataMap.get("_bbsDataGroup").toString()), Integer.parseInt(bbsDataMap.get("_bbsDataFam").toString())); + + if(tBbsReplyDB != null){ + bbsDataMap.put("_bbsDataReplyStatus", SeedUtils.setReplaceNull(tBbsReplyDB.getBbsDataReplyStatus())); + bbsDataMap.put("_bbsDataReplySecret", SeedUtils.setReplaceNull(tBbsReplyDB.getBbsDataSecret())); + }else{ + + //데이타가 없을때 ITEM VALEUS값의 가장 상단의 데이타를 가져옴 + T_BBS_ITEM tBbsItemDB = managerBbsItemService.getBbsItemValueForm(bbsSetIdx, "bbsDataReplyStatus"); + + bbsDataMap.put("_bbsDataReplyStatus", SeedUtils.setReplaceNull(tBbsItemDB.getBbsItemValue())); + bbsDataMap.put("_bbsDataReplySecret", "N"); + } + } + } + + map.put("bbsDataList", bbsDataMapList); + + String[] qryColumnsic = {"bbsCategoryName", "bbsCategoryIdxs", "bbsCategoryParentIdx", "bbsCategoryDepth", "bbsCategoryOrder"}; + + map.put("bbsCategoryList", managerBbsCategoryService.getBbsCategoryListt(bbsSetIdx, qryColumnsic)); + + SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyy-MM-dd"); + + map.put("bbsSetTypeList", managerBbsSetService.getBbsSetList(siteIdx, bbsSetIdx, tBbsSetDB.getBbsSetType(), new String[] {"bbsSetIdx", "bbsSetName", "bbsSetType"})); + map.put("tBbsSetDB", tBbsSetDB); + map.put("toDate", sdfFormat.format(new Date())); + + map.put("page", paging.getPage()); + map.put("row", paging.getRow()); + map.put("pages", paging.getPages()); + map.put("blocks", paging.getBlocks()); + map.put("block", paging.getBlock()); + map.put("fPage", paging.getfPage()); + map.put("lPage", paging.getlPage()); + + map.put("column", column); + map.put("search", search); + map.put("bbsDataCategory", bbsDataCategory); + map.put("searchSDate", searchSDate); + map.put("searchEDate", searchEDate); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + map.put("memberAuthM", memberAuthM); + + if(tBbsSetDB.getBbsSetType().equals("A")){ + return new ModelAndView("/manager/bbs/album/albumDataList"); + }else if(tBbsSetDB.getBbsSetType().equals("M")){ + return new ModelAndView("/manager/bbs/movie/movieDataList"); + }else if(tBbsSetDB.getBbsSetType().equals("T")){ + return new ModelAndView("/manager/bbs/thumbfile/thumbfileDataList"); + }else if(tBbsSetDB.getBbsSetType().equals("W")){ + return new ModelAndView("/manager/bbs/answer/answerDataList"); + }else if(tBbsSetDB.getBbsSetType().equals("E")){ + return new ModelAndView("/manager/bbs/event/eventDataList"); + }else{ + return new ModelAndView("/manager/bbs/bbs/bbsDataList"); + } + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsDataListExcelProc.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsDataListExcelProc.do"}) + public ModelAndView setBbsDataExcelList(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="bbsDataCategory", defaultValue="", required=false) String bbsDataCategory, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsDataListExcelProc.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_SET tBbsSetDB = managerBbsSetService.getBbsSetForm(bbsSetIdx); + + ArrayList qryArrayList = new ArrayList(); + boolean bbsDataContent = false; + boolean bbsDataReplyStatus = false; + + qryArrayList.add("bbsDataIdx"); + qryArrayList.add("bbsDataDepth"); + qryArrayList.add("bbsDataGroup"); + qryArrayList.add("bbsDataFam"); + qryArrayList.add("bbsDataPosition"); + qryArrayList.add("bbsDataHit"); + qryArrayList.add("bbsDataRegDate"); + + String[] qryColumns = {"groupBy", "bbsItemGroup", "bbsItemPattern", "bbsItemName", "bbsItemColWidth", + "bbsItemEssential", "bbsItemList", "bbsItemLink", "bbsItemSearch", + "bbsItemStatus", "bbsItemListOrder", "bbsItemType", "bbsItemDataLength"}; + + List> tBbsItemList = managerBbsItemService.getBbsItemList(bbsSetIdx, "List", qryColumns); + + map.put("bbsItemList", tBbsItemList); + map.put("bbsItemListCnt", tBbsItemList.size()); + + String[] qryColumnsiv = {"bbsItemIdx", "bbsItemGroup", "bbsItemValue", "bbsItemWidth", "bbsItemHeight"}; + + map.put("bbsItemValuesList", managerBbsItemService.getBbsItemValuesList(bbsSetIdx, "List", qryColumnsiv)); + + for(int i=0; i bbsItemMap = (Map)tBbsItemList.get(i); + if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemList")).toString().equals("Y") && + SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemStatus")).toString().equals("U")){ + + if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataContent")){ + bbsDataContent = true; + }else if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataReplyStatus")){ + bbsDataReplyStatus = true; + }else if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataRegDate") || + SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataHit") || + SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataFile")){ + continue; + }else{ + qryArrayList.add(bbsItemMap.get("_bbsItemGroup").toString()); + } + + if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataName")){ + if(SeedUtils.setReplaceNull(tBbsSetDB.getBbsSetDataSaveType()).equals("memberDept")){ + qryArrayList.add("bbsDataDept"); + }else{ + qryArrayList.add("tMember.memberName"); + } + } + } + } + + List> bbsDataExcelList = managerBbsDataService.getBbsDataList(bbsSetIdx, column, search, tBbsSetDB.getBbsSetType(), bbsDataCategory, searchSDate, searchEDate, qryArrayList); + + if(bbsDataContent){ + + for(int i=0; i bbsDataMap = bbsDataExcelList.get(i); + + bbsDataMap.put("_bbsDataContent", SeedUtils.setTagRemove(managerBbsDataService.getBbsDataForm(Integer.parseInt(bbsDataMap.get("_bbsDataIdx").toString())).getBbsDataContent())); + } + } + + //답변게시판일때 해당 글의 답변 글의 답변상태를 가져옴 + if(bbsDataReplyStatus && tBbsSetDB.getBbsSetType().equals("W")){ + + for(int i=0; i bbsDataMap = bbsDataExcelList.get(i); + + T_BBS_DATA tBbsReplyDB = managerBbsDataService.getBbsReplyForm(Integer.parseInt(bbsDataMap.get("_bbsDataGroup").toString()), Integer.parseInt(bbsDataMap.get("_bbsDataFam").toString())); + + if(tBbsReplyDB != null){ + bbsDataMap.put("_bbsDataReplyStatus", SeedUtils.setReplaceNull(tBbsReplyDB.getBbsDataReplyStatus())); + bbsDataMap.put("_bbsDataReplySecret", SeedUtils.setReplaceNull(tBbsReplyDB.getBbsDataSecret())); + }else{ + bbsDataMap.put("_bbsDataReplyStatus", ""); + bbsDataMap.put("_bbsDataReplySecret", "N"); + } + } + } + + //첨부파일 다운로드수 추가 + for(int i=0; i bbsDataMap = bbsDataExcelList.get(i); + + List> bbsFileDownList = managerBbsFileService.getBbsFileListMap( + Integer.parseInt(bbsDataMap.get("_bbsDataIdx").toString()), new String[] {"bbsFileDownCnt"}); + + if(bbsFileDownList != null && bbsFileDownList.size() > 0){ + for(int f=0; f bbsFileDownMap = bbsFileDownList.get(f); + bbsFileDownCnt += Integer.parseInt(SeedUtils.setReplaceNull(bbsFileDownMap.get("_bbsFileDownCnt"), "0")); + } + } + + bbsDataMap.put("_bbsFileDownCnt", bbsFileDownCnt); + } + + String[] qryColumnsic = {"bbsCategoryName", "bbsCategoryIdxs", "bbsCategoryParentIdx", "bbsCategoryDepth", "bbsCategoryOrder"}; + + map.put("bbsCategoryList", managerBbsCategoryService.getBbsCategoryListt(bbsSetIdx, qryColumnsic)); + + map.put("bbsDataExcelList", bbsDataExcelList); + + //map.put("bbsDataExcelList", managerBbsDataService.getBbsDataList(bbsSetIdx, column, search, tBbsSetDB.getBbsSetType(), bbsDataCategory, qryArrayList)); + + map.put("tBbsSetDB", tBbsSetDB); + + return new ModelAndView("/manager/bbs/bbsDataExcelList"); + } + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsDataForm.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsDataForm.do"}) + public ModelAndView getBbsDataForm(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, + Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsDataForm.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_SET tBbsSetDB = managerBbsSetService.getBbsSetForm(bbsSetIdx); + + //Temp파일 Code생성 + SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String fileCode = sdfFormat.format(new Date())+String.valueOf(SeedUtils.getRandom(999,1)); + + String[] qryColumnsi = {"groupBy", "bbsItemGroup", "bbsItemPattern", "bbsItemName", "bbsItemText", "bbsItemColWidth", + "bbsItemEssential", "bbsItemList", "bbsItemLink", "bbsItemSearch", + "bbsItemStatus", "bbsItemViewOrder", "bbsItemType"}; + + map.put("bbsItemList", managerBbsItemService.getBbsItemList(bbsSetIdx, "View", qryColumnsi)); + + String[] qryColumnsiv = {"bbsItemIdx", "bbsItemGroup", "bbsItemValue", "bbsItemWidth", "bbsItemHeight"}; + + map.put("bbsItemValuesList", managerBbsItemService.getBbsItemValuesList(bbsSetIdx, "View", qryColumnsiv)); + + String[] qryColumnsic = {"bbsCategoryName", "bbsCategoryIdxs", "bbsCategoryParentIdx", "bbsCategoryDepth", "bbsCategoryOrder"}; + + map.put("bbsCategoryList", managerBbsCategoryService.getBbsCategoryListt(bbsSetIdx, qryColumnsic)); + + map.put("fileCode", SeedUtils.getSeedMD5Code(fileCode)); + map.put("tBbsSetDB", tBbsSetDB); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + map.put("memberAuthM", memberAuthM); + + if(tBbsSetDB.getBbsSetType().equals("A")){ + return new ModelAndView("/manager/bbs/album/albumDataForm"); + }else if(tBbsSetDB.getBbsSetType().equals("M")){ + return new ModelAndView("/manager/bbs/movie/movieDataForm"); + }else if(tBbsSetDB.getBbsSetType().equals("L")){ + return new ModelAndView("/manager/bbs/link/linkDataForm"); + }else if(tBbsSetDB.getBbsSetType().equals("T")){ + return new ModelAndView("/manager/bbs/thumbfile/thumbfileDataForm"); + }else if(tBbsSetDB.getBbsSetType().equals("W")){ + return new ModelAndView("/manager/bbs/answer/answerDataForm"); + }else if(tBbsSetDB.getBbsSetType().equals("E")){ + return new ModelAndView("/manager/bbs/event/eventDataForm"); + }else{ + return new ModelAndView("/manager/bbs/bbs/bbsDataForm"); + } + } + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsDataReply/{bbsFamIdx}.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsDataReply/{bbsFamIdx}.do"}, method=RequestMethod.GET) + public ModelAndView getBbsDataReply(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, + Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsFamIdx") Integer bbsFamIdx, + @ModelAttribute("paging") Paging paging){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsDataReply/"+bbsFamIdx+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_SET tBbsSetDB = managerBbsSetService.getBbsSetForm(bbsSetIdx); + + //Temp파일 Code생성 + SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String fileCode = sdfFormat.format(new Date())+String.valueOf(SeedUtils.getRandom(999,1)); + + map.put("fileCode", SeedUtils.getSeedMD5Code(fileCode)); + map.put("tBbsSetDB", tBbsSetDB); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + map.put("memberAuthM", memberAuthM); + + String[] qryColumnsi = {"groupBy", "bbsItemGroup", "bbsItemPattern", "bbsItemWL", "bbsItemName", "bbsItemText", "bbsItemColWidth", + "bbsItemEssential", "bbsItemList", "bbsItemLink", "bbsItemSearch", + "bbsItemStatus", "bbsItemViewOrder", "bbsItemType"}; + + map.put("bbsItemList", managerBbsItemService.getBbsItemList(bbsSetIdx, "View", qryColumnsi)); + + String[] qryColumnsiv = {"bbsItemIdx", "bbsItemGroup", "bbsItemValue", "bbsItemWidth", "bbsItemHeight"}; + + map.put("bbsItemValuesList", managerBbsItemService.getBbsItemValuesList(bbsSetIdx, "View", qryColumnsiv)); + + if(tBbsSetDB.getBbsSetType().equals("W")){ + + return new ModelAndView("/manager/bbs/answer/answerDataReply"); + + }else{ + + String[] qryColumnsic = {"bbsCategoryName", "bbsCategoryIdxs", "bbsCategoryParentIdx", "bbsCategoryDepth", "bbsCategoryOrder"}; + + map.put("bbsCategoryList", managerBbsCategoryService.getBbsCategoryListt(bbsSetIdx, qryColumnsic)); + + return new ModelAndView("/manager/bbs/bbs/bbsDataReply"); + } + } + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsDataView/{bbsDataIdx}.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsDataView/{bbsDataIdx}.do"}, method=RequestMethod.GET) + public ModelAndView getBbsDataView(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsDataIdx") Integer bbsDataIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="bbsDataCategory", defaultValue="", required=false) String bbsDataCategory, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsDataView/"+bbsDataIdx+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_DATA tBbsDataDB = managerBbsDataService.getBbsDataForm(bbsDataIdx); + + //bbsSetDataCookieTime가 0일때는 쿠키없이 카운트 증가 + if(SeedUtils.setReplaceNull(tBbsDataDB.gettBbsSet().getBbsSetDataCookieTime(), "0").equals("0")){ + managerBbsDataService.setBbsDataHitProc(tBbsDataDB.getBbsDataIdx()); + }else{ + if (SeedUtils.isCookieChk("seedBbsData_" + bbsSetIdx + "_" + bbsDataIdx, + Integer.parseInt(SeedUtils.setReplaceNull(tBbsDataDB.gettBbsSet().getBbsSetDataCookieTime(), "0")), + httpServletRequest, httpServletResponse)) { + managerBbsDataService.setBbsDataHitProc(tBbsDataDB.getBbsDataIdx()); + } + } + + SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyy-MM-dd"); + + String[] qryColumnsi = {"groupBy", "bbsItemGroup", "bbsItemPattern", "bbsItemName", "bbsItemColWidth", + "bbsItemEssential", "bbsItemList", "bbsItemView", "bbsItemLink", "bbsItemSearch", + "bbsItemStatus", "bbsItemViewOrder", "bbsItemType"}; + + map.put("bbsItemList", managerBbsItemService.getBbsItemList(bbsSetIdx, "View", qryColumnsi)); + + String[] qryColumnsiv = {"bbsItemIdx", "bbsItemGroup", "bbsItemValue", "bbsItemWidth", "bbsItemHeight"}; + + map.put("bbsItemValuesList", managerBbsItemService.getBbsItemValuesList(bbsSetIdx, "View", qryColumnsiv)); + + String[] qryColumnsPN = {"groupBy", "bbsCommentCount", "bbsDataIdx", "bbsDataTitle", "bbsDataName", "bbsDataRegDate", "bbsDataGroup", "bbsDataPosition"}; + + map.put("tBbsDataPreDB", managerBbsDataService.getBbsDataPreForm(tBbsDataDB, column, search, bbsDataCategory, searchSDate, searchEDate, qryColumnsPN)); + map.put("tBbsDataNextDB", managerBbsDataService.getBbsDataNextForm(tBbsDataDB, column, search, bbsDataCategory, searchSDate, searchEDate, qryColumnsPN)); + + String[] qryColumnsc = {"bbsCommentIdx", "bbsCommentContent", "bbsCommentRegDate", "tMember.memberId", "tMember.memberName"}; + + paging.setCountc(managerBbsCommentService.getBbsCommentListCnt(tBbsDataDB.getBbsDataIdx())); + + map.put("bbsCommentCnt", paging.getCountc()); + map.put("bbsCommentList", managerBbsCommentService.getBbsCommentList(tBbsDataDB.getBbsDataIdx(), paging.getPagec(), paging.getRowc(), qryColumnsc)); + + String[] qryColumnsf = {"bbsFileIdx", "bbsFileName", "bbsFileReName", "bbsFileText", "bbsFileType"}; + + map.put("bbsFileList", managerBbsFileService.getBbsFileList(tBbsDataDB.getBbsDataIdx(), qryColumnsf)); + + String[] qryColumnsic = {"bbsCategoryName", "bbsCategoryIdxs", "bbsCategoryParentIdx", "bbsCategoryDepth", "bbsCategoryOrder"}; + + map.put("bbsCategoryList", managerBbsCategoryService.getBbsCategoryListt(bbsSetIdx, qryColumnsic)); + + //답변게시판일때 해당 글의 답변 글을 가져옴 + if(tBbsDataDB.gettBbsSet().getBbsSetType().equals("W")){ + + T_BBS_DATA tBbsReplyDB = managerBbsDataService.getBbsReplyForm(tBbsDataDB.getBbsDataGroup(), tBbsDataDB.getBbsDataFam()); + + map.put("tBbsReplyDB", tBbsReplyDB); + + if(tBbsReplyDB != null){ + map.put("bbsReplyFileList", managerBbsFileService.getBbsFileList(tBbsReplyDB.getBbsDataIdx(), qryColumnsf)); + } + } + + map.put("tBbsDataDB", tBbsDataDB); + map.put("toDate", sdfFormat.format(new Date())); + + map.put("page", paging.getPage()); + map.put("row", paging.getRow()); + map.put("pagec", paging.getPagec()); + map.put("rowc", paging.getRowc()); + map.put("pagesc", paging.getPagesc()); + map.put("blocksc", paging.getBlocksc()); + map.put("blockc", paging.getBlockc()); + map.put("fPagec", paging.getfPagec()); + map.put("lPagec", paging.getlPagec()); + + map.put("column", column); + map.put("search", search); + map.put("bbsDataCategory", bbsDataCategory); + map.put("searchSDate", searchSDate); + map.put("searchEDate", searchEDate); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + map.put("memberAuthM", memberAuthM); + + if(tBbsDataDB.gettBbsSet().getBbsSetType().equals("A")){ + return new ModelAndView("/manager/bbs/album/albumDataView"); + }else if(tBbsDataDB.gettBbsSet().getBbsSetType().equals("M")){ + return new ModelAndView("/manager/bbs/movie/movieDataView"); + }else if(tBbsDataDB.gettBbsSet().getBbsSetType().equals("T")){ + return new ModelAndView("/manager/bbs/thumbfile/thumbfileDataView"); + }else if(tBbsDataDB.gettBbsSet().getBbsSetType().equals("W")){ + return new ModelAndView("/manager/bbs/answer/answerDataView"); + }else if(tBbsDataDB.gettBbsSet().getBbsSetType().equals("E")){ + return new ModelAndView("/manager/bbs/event/eventDataView"); + }else{ + return new ModelAndView("/manager/bbs/bbs/bbsDataView"); + } + } + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsDataEdit/{bbsDataIdx}.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsDataEdit/{bbsDataIdx}.do"}, method=RequestMethod.GET) + public ModelAndView getBbsDataEdit(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsDataIdx") Integer bbsDataIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="bbsDataCategory", defaultValue="", required=false) String bbsDataCategory, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsDataEdit/"+bbsDataIdx+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_DATA tBbsDataDB = managerBbsDataService.getBbsDataForm(bbsDataIdx); + + //Temp파일 Code생성 + SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String fileCode = sdfFormat.format(new Date())+String.valueOf(SeedUtils.getRandom(999,1)); + + String[] qryColumnsi = {"groupBy", "bbsItemGroup", "bbsItemPattern", "bbsItemName", "bbsItemText", "bbsItemColWidth", + "bbsItemEssential", "bbsItemList", "bbsItemLink", "bbsItemSearch", + "bbsItemStatus", "bbsItemViewOrder", "bbsItemType"}; + + map.put("bbsItemList", managerBbsItemService.getBbsItemList(bbsSetIdx, "View", qryColumnsi)); + + String[] qryColumnsiv = {"bbsItemIdx", "bbsItemGroup", "bbsItemValue", "bbsItemWidth", "bbsItemHeight"}; + + map.put("bbsItemValuesList", managerBbsItemService.getBbsItemValuesList(bbsSetIdx, "View", qryColumnsiv)); + + String[] qryColumnsic = {"bbsCategoryName", "bbsCategoryIdxs", "bbsCategoryParentIdx", "bbsCategoryDepth", "bbsCategoryOrder"}; + + map.put("bbsCategoryList", managerBbsCategoryService.getBbsCategoryListt(bbsSetIdx, qryColumnsic)); + + String[] qryColumnsf = {"bbsFileIdx", "bbsFileName", "bbsFileReName", "bbsFileText", "bbsFileType", "bbsFileSize"}; + + List> tBbsFileList = managerBbsFileService.getBbsFileListMap(tBbsDataDB.getBbsDataIdx(), qryColumnsf); + + Long fileSize = 0L; + + if(tBbsFileList != null && tBbsFileList.size() > 0){ + for(int i=0; i < tBbsFileList.size() ; i++){ + Map fileMap = tBbsFileList.get(i); + fileSize += Long.parseLong(fileMap.get("_bbsFileSize").toString()); + } + + Formatter format = new Formatter(); + format.format("%.2f" ,(Float)((Float.parseFloat(fileSize.toString()) / 1024) / 1024)); + String file = format.toString(); + map.put("fileSize", file); + }else{ + map.put("fileSize", fileSize); + } + + map.put("fileMaxSize", tBbsDataDB.gettBbsSet().getBbsSetFileSize()); + + map.put("bbsFileList", tBbsFileList); + + map.put("fileCode", SeedUtils.getSeedMD5Code(fileCode)); + map.put("tBbsDataDB", tBbsDataDB); + + map.put("page", paging.getPage()); + map.put("row", paging.getRow()); + + map.put("column", column); + map.put("search", search); + map.put("bbsDataCategory", bbsDataCategory); + map.put("searchSDate", searchSDate); + map.put("searchEDate", searchEDate); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + map.put("memberAuthM", memberAuthM); + + if(tBbsDataDB.gettBbsSet().getBbsSetType().equals("A")){ + return new ModelAndView("/manager/bbs/album/albumDataEdit"); + }else if(tBbsDataDB.gettBbsSet().getBbsSetType().equals("M")){ + return new ModelAndView("/manager/bbs/movie/movieDataEdit"); + }else if(tBbsDataDB.gettBbsSet().getBbsSetType().equals("L")){ + return new ModelAndView("/manager/bbs/link/linkDataEdit"); + }else if(tBbsDataDB.gettBbsSet().getBbsSetType().equals("T")){ + return new ModelAndView("/manager/bbs/thumbfile/thumbfileDataEdit"); + }else if(tBbsDataDB.gettBbsSet().getBbsSetType().equals("W")){ + return new ModelAndView("/manager/bbs/answer/answerDataEdit"); + }else if(tBbsDataDB.gettBbsSet().getBbsSetType().equals("E")){ + return new ModelAndView("/manager/bbs/event/eventDataEdit"); + }else{ + return new ModelAndView("/manager/bbs/bbs/bbsDataEdit"); + } + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsDataCMProc.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsDataCMProc.do"}, method=RequestMethod.POST) + public ModelAndView setBbsDataCMProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="dataCMType", required=true) String dataCMType, + @RequestParam(value="selDataCM", required=true) Integer selDataCM, + @RequestParam(value="dataIdxs", required=true) Integer[] dataIdxs, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="bbsDataCategory", defaultValue="", required=false) String bbsDataCategory, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsDataCMProc.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + boolean success = false; + + httpServletRequest.getHeader("WL-Proxy-Client-IP"); + + String memberIp = httpServletRequest.getRemoteAddr(); + + if(dataCMType.equals("C")){ + + for(int d=dataIdxs.length-1; d>=0; d--){ + + if(managerBbsDataService.setBbsDataCopyProc(dataIdxs[d], selDataCM, memberIdx, memberIp, thumbWidth, thumbHeight, rootPath)){ + success = true; + }else{ + success = false; + break; + } + } + + if(success){ + map.put("message", "common.message.copy"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, selDataCM); + }else{ + map.put("message", "common.message.error.copy"); + } + + }else if(dataCMType.equals("M")){ + + for(int d=dataIdxs.length-1; d>=0; d--){ + + if(managerBbsDataService.setBbsDataMoveProc(dataIdxs[d], selDataCM)){ + success = true; + }else{ + success = false; + break; + } + } + + if(success){ + map.put("message", "common.message.move"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, selDataCM); + }else{ + map.put("message", "common.message.error.move"); + } + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsDataList.do?" + + "column="+column+"&"+ + "search="+search+"&"+ + "searchSDate="+searchSDate+"&"+ + "searchEDate="+searchEDate+"&"+ + "bbsDataCategory="+bbsDataCategory+"&"+ + "page="+paging.getPage()+"&"+ + "row="+paging.getRow()); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsDataRegProc.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsDataRegProc.do"}, method=RequestMethod.POST) +// public ModelAndView setBbsDataRegProc(HttpServletRequest httpServletRequest, MultipartHttpServletRequest multipartHttpServletRequest, + public ModelAndView setBbsDataRegProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @RequestParam(value="fileCode", required=true) String fileCode, + @ModelAttribute("T_BBS_DATA") T_BBS_DATA tBbsData, + BindingResult bindingResult){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberDept = SeedUtils.setReplaceNull(session.getAttribute("memberDept")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsDataRegProc.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + List upFiles = null; + + String[] fileIdxs = null; + + /*//html5일 경우 해당 파일 확장자 체크 + if(SeedUtils.getBrowserHtml5(httpServletRequest.getHeader("User-Agent").toLowerCase()) && SeedUtils.setReplaceNull(fileMulti).equals("true")){ + + if(!SeedUtils.setReplaceNull(httpServletRequest.getParameterValues("fileIdxs")).equals("")){ + fileIdxs = httpServletRequest.getParameterValues("fileIdxs"); + } + + upFiles = multipartHttpServletRequest.getFiles("upFile"); + + if(upFiles != null && upFiles.size() > 0){ + + for(int f=0; f 0){ + for(int d=0; d 0){ + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsDataList.do?bbsDataCategory="+tBbsData.getBbsDataCategory()); + map.put("message", "common.message.reg"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, bbsSetIdx); + }else{ + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsDataForm.do"); + map.put("message", "common.message.error.reg"); + } + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsDataReplyProc.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsDataReplyProc.do"}, method=RequestMethod.POST) +// public ModelAndView setBbsDataReplyProc(HttpServletRequest httpServletRequest, MultipartHttpServletRequest multipartHttpServletRequest, + public ModelAndView setBbsDataReplyProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @ModelAttribute("T_BBS_DATA") T_BBS_DATA tBbsData, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="fileCode", required=true) String fileCode, + @RequestParam(value="bbsFamIdx", required=true) Integer bbsFamIdx, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + BindingResult bindingResult){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberDept = SeedUtils.setReplaceNull(session.getAttribute("memberDept")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsDataReplyProc.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + List upFiles = null; + + String[] fileIdxs = null; + + /*//html5일 경우 해당 파일 확장자 체크 + if(SeedUtils.getBrowserHtml5(httpServletRequest.getHeader("User-Agent").toLowerCase()) && SeedUtils.setReplaceNull(fileMulti).equals("true")){ + + if(!SeedUtils.setReplaceNull(httpServletRequest.getParameterValues("fileIdxs")).equals("")){ + fileIdxs = httpServletRequest.getParameterValues("fileIdxs"); + } + + upFiles = multipartHttpServletRequest.getFiles("upFile"); + + if(upFiles != null && upFiles.size() > 0){ + + for(int f=0; f 0){ + for(int d=0; d 0){ + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsDataList.do?"+ + "bbsDataCategory="+tBbsData.getBbsDataCategory()+"&"+ + "page="+paging.getPage()+"&"+ + "row="+paging.getRow()+"&"+ + "column="+column+"&"+ + "search="+search); + map.put("message", "common.message.reg"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, bbsSetIdx); + + }else{ + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsDataReply/"+bbsFamIdx+".do"); + map.put("message", "common.message.error.reg"); + } + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsDataModProc.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsDataModProc.do"}, method=RequestMethod.POST) +// public ModelAndView setBbsDataModProc(HttpServletRequest httpServletRequest, MultipartHttpServletRequest multipartHttpServletRequest, + public ModelAndView setBbsDataModProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @ModelAttribute("T_BBS_DATA") T_BBS_DATA tBbsData, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="fileCode", required=true) String fileCode, + @RequestParam(value="bbsFileIdx", defaultValue="0", required=false) Integer[] bbsFileIdx, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="bbsDataCategory", defaultValue="", required=false) String bbsDataCategory, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate, + BindingResult bindingResult){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberDept = SeedUtils.setReplaceNull(session.getAttribute("memberDept")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsDataModProc.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + List upFiles = null; + + String[] fileIdxs = null; + + /*//html5일 경우 해당 파일 확장자 체크 + if(SeedUtils.getBrowserHtml5(httpServletRequest.getHeader("User-Agent").toLowerCase()) && SeedUtils.setReplaceNull(fileMulti).equals("true")){ + + if(!SeedUtils.setReplaceNull(httpServletRequest.getParameterValues("fileIdxs")).equals("")){ + fileIdxs = httpServletRequest.getParameterValues("fileIdxs"); + } + + upFiles = multipartHttpServletRequest.getFiles("upFile"); + + if(upFiles != null && upFiles.size() > 0){ + + for(int f=0; f 0){ + for(int d=0; d= 1){ + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsDataView/"+tBbsDataDB.getBbsDataFam()+".do?"+ + "column="+column+"&"+ + "search="+search+"&"+ + "searchSDate="+searchSDate+"&"+ + "searchEDate="+searchEDate+"&"+ + "bbsDataCategory="+bbsDataCategory+"&"+ + "page="+paging.getPage()+"&"+ + "row="+paging.getRow()); + }else{ + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsDataView/"+tBbsData.getBbsDataIdx()+".do?"+ + "column="+column+"&"+ + "search="+search+"&"+ + "searchSDate="+searchSDate+"&"+ + "searchEDate="+searchEDate+"&"+ + "bbsDataCategory="+bbsDataCategory+"&"+ + "page="+paging.getPage()+"&"+ + "row="+paging.getRow()); + } + }else{ + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsDataView/"+tBbsData.getBbsDataIdx()+".do?"+ + "column="+column+"&"+ + "search="+search+"&"+ + "searchSDate="+searchSDate+"&"+ + "searchEDate="+searchEDate+"&"+ + "bbsDataCategory="+bbsDataCategory+"&"+ + "page="+paging.getPage()+"&"+ + "row="+paging.getRow()); + } + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsDataDelProc/{bbsDataIdx}.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsDataDelProc/{bbsDataIdx}.do"}, method=RequestMethod.GET) + public ModelAndView setBbsDataDelProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsDataIdx") Integer bbsDataIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="bbsDataPw", required=true) String bbsDataPw, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="bbsDataCategory", defaultValue="", required=false) String bbsDataCategory, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsDataDelProc/"+bbsDataIdx+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_SET tBbsSetDB = managerBbsSetService.getBbsSetForm(bbsSetIdx); + + String success = managerBbsDataService.setBbsDataDelProc(bbsDataIdx, SeedUtils.setReplaceNull(tBbsSetDB.getBbsSetTrash()), rootPath); + + if(success.equals("Y")){ + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsDataList.do?"+ + "column="+column+"&"+ + "search="+search+"&"+ + "searchSDate="+searchSDate+"&"+ + "searchEDate="+searchEDate+"&"+ + "bbsDataCategory="+bbsDataCategory+"&"+ + "page="+paging.getPage()+"&"+ + "row="+paging.getRow()); + map.put("message", "common.message.del"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, bbsSetIdx); + + }else{ + if(success.equals("RE")){ + map.put("message", "user.bbs.message.comment"); + }else{ + map.put("message", "common.message.error.del"); + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsDataView/"+bbsDataIdx+".do?"+ + "column="+column+"&"+ + "search="+search+"&"+ + "searchSDate="+searchSDate+"&"+ + "searchEDate="+searchEDate+"&"+ + "bbsDataCategory="+bbsDataCategory+"&"+ + "page="+paging.getPage()+"&"+ + "row="+paging.getRow()); + } + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsDataStatusProc.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsDataStatusProc.do"}, method=RequestMethod.POST) + public ModelAndView setBbsDataStatusProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="bbsDataCategory", defaultValue="", required=false) String bbsDataCategory, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate, + @RequestParam(value="idxs", required=true) Integer[] idxs){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + boolean success = false; + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsDataStatusProc.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_SET tBbsSetDB = managerBbsSetService.getBbsSetForm(bbsSetIdx); + + httpServletRequest.getHeader("WL-Proxy-Client-IP"); + + String memberIp = httpServletRequest.getRemoteAddr(); + + if(idxs.length > 0){ + for(int i=0; i map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsDataIdx") Integer bbsDataIdx, + @ModelAttribute("T_BBS_COMMENT") T_BBS_COMMENT tBbsComment, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="bbsDataCategory", defaultValue="", required=false) String bbsDataCategory, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate, + BindingResult bindingResult){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/"+bbsDataIdx+"/bbsCommentRegProc.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + httpServletRequest.getHeader("WL-Proxy-Client-IP"); + + String memberIp = httpServletRequest.getRemoteAddr(); + + if(managerBbsCommentService.setBbsCommentRegProc(tBbsComment, memberIdx, memberIp)){ + map.put("message", "user.bbs.message.comment.reg"); + }else{ + map.put("message", "user.bbs.message.comment.error.reg"); + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsDataView/"+bbsDataIdx+".do?"+ + "column="+column+"&"+ + "search="+search+"&"+ + "searchSDate="+searchSDate+"&"+ + "searchEDate="+searchEDate+"&"+ + "bbsDataCategory="+bbsDataCategory+"&"+ + "page="+paging.getPage()+"&"+ + "row="+paging.getRow()+"&"+ + "pagec=1"+"&"+ + "rowc="+paging.getRowc()); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/{bbsDataIdx}/bbsCommentDelProc/{bbsCommentIdx}.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/{bbsDataIdx}/bbsCommentDelProc/{bbsCommentIdx}.do"}, method=RequestMethod.GET) + public ModelAndView setBbsCommentDelProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsDataIdx") Integer bbsDataIdx, + @PathVariable(value="bbsCommentIdx") Integer bbsCommentIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="bbsDataCategory", defaultValue="", required=false) String bbsDataCategory, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + boolean memberAuthM = managerBbsManagerService.getBbsManagerListCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/"+bbsDataIdx+"/bbsCommentDelProc/"+bbsCommentIdx+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG && !memberAuthM)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsCommentService.setBbsCommentDelProc(bbsCommentIdx)){ + map.put("message", "user.bbs.message.comment.del"); + }else{ + map.put("message", "user.bbs.message.comment.error.del"); + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsDataView/"+bbsDataIdx+".do?"+ + "column="+column+"&"+ + "search="+search+"&"+ + "searchSDate="+searchSDate+"&"+ + "searchEDate="+searchEDate+"&"+ + "bbsDataCategory="+bbsDataCategory+"&"+ + "page="+paging.getPage()+"&"+ + "row="+paging.getRow()+"&"+ + "pagec=1"+"&"+ + "rowc="+paging.getRowc()); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsAuthEdit.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsAuthEdit.do"}, method=RequestMethod.GET) + public ModelAndView getBbsAuthEdit(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsAuthEdit.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + String[] qryColumns = {"bbsAuthIdx", "tGroup.groupName", "tGroup.groupLevel", "bbsAuthCertify", "bbsAuthList", "bbsAuthContent", "bbsAuthWrite", "bbsAuthReply"}; + + map.put("bbsAuthList", managerBbsAuthService.getBbsAuthList(bbsSetIdx, qryColumns)); + map.put("tBbsSetDB", managerBbsSetService.getBbsSetForm(bbsSetIdx)); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + + return new ModelAndView("/manager/bbs/bbsAuthEdit"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsAuthModProc.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsAuthModProc.do"}, method=RequestMethod.POST) + public ModelAndView setBbsAuthModProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @RequestParam(value="bbsAuthIdxs", defaultValue="", required=true) Integer[] bbsAuthIdxs, + @RequestParam(value="bbsAuthCertifys", defaultValue="", required=true) Integer[] bbsAuthCertifys, + @RequestParam(value="bbsAuthLists", defaultValue="", required=true) Integer[] bbsAuthLists, + @RequestParam(value="bbsAuthContents", defaultValue="", required=true) Integer[] bbsAuthContents, + @RequestParam(value="bbsAuthWrites", defaultValue="", required=true) Integer[] bbsAuthWrites, + @RequestParam(value="bbsAuthReplys", defaultValue="", required=true) Integer[] bbsAuthReplys){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsAuthModProc.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsAuthService.setBbsAuthModProc(bbsAuthIdxs, bbsAuthCertifys, bbsAuthLists, + bbsAuthContents, bbsAuthWrites, bbsAuthReplys)){ + + map.put("message", "common.message.mod"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, bbsSetIdx); + + }else{ + map.put("message", "common.message.error.mod"); + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsAuthEdit.do"); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsCategoryList.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsCategoryList.do"}) + public ModelAndView getBbsCategoryList(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsCategoryList.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + String[] qryColumns = {"bbsCategoryIdxs", "bbsCategoryIdx", "bbsCategoryName", + "bbsCategoryUp", "bbsCategoryDown", "bbsCategoryDepth", + "bbsCategoryOrder", "bbsCategoryRegDate", "bbsCategoryStatus"}; + + map.put("bbsSetName", managerBbsSetService.getBbsSetForm(bbsSetIdx).getBbsSetName()); + map.put("bbsCategoryList", managerBbsCategoryService.getBbsCategoryList(bbsSetIdx, qryColumns)); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + + return new ModelAndView("/manager/bbs/bbsCategoryList"); + } + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsCategoryForm/{bbsCategoryParentIdx}.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsCategoryForm/{bbsCategoryParentIdx}.do"}) + public ModelAndView getBbsCategoryForm(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsCategoryParentIdx") String bbsCategoryParentIdx, + @RequestParam(value="bbsCategoryChk", defaultValue="N", required=true) String bbsCategoryChk){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsCategoryForm/"+bbsCategoryParentIdx+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("self", "close"); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + map.put("bbsCategoryChk", bbsCategoryChk); + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + + return new ModelAndView("/manager/bbs/bbsCategoryForm"); + } + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsCategoryEdit/{bbsCategoryIdx}.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsCategoryEdit/{bbsCategoryIdx}.do"}, method=RequestMethod.GET) + public ModelAndView getBbsCategoryEdit(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsCategoryIdx") Integer bbsCategoryIdx){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsCategoryEdit/"+bbsCategoryIdx+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("self", "close"); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + map.put("tBbsCategoryDB", managerBbsCategoryService.getBbsCategoryForm(bbsCategoryIdx)); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + + return new ModelAndView("/manager/bbs/bbsCategoryEdit"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsCategoryRegProc.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsCategoryRegProc.do"}, method=RequestMethod.POST) + public ModelAndView setBbsCategoryRegProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @ModelAttribute("T_BBS_CATEGORY") T_BBS_CATEGORY tBbsCategory, + BindingResult bindingResult){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsCategoryRegProc.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + map.put("opener", "loaction"); + map.put("self", "close"); + return new ModelAndView("/_common/jsp/message"); + } + + /* + if(managerBbsItemService.getBbsItemListCnt(bbsSetIdx) >= 17){ + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsItemList.do"); + map.put("message", "manager.bbs.message.no.item"); + return new ModelAndView("/_common/jsp/message"); + } + */ + + if(managerBbsCategoryService.setBbsCategoryRegProc(tBbsCategory, memberIdx)){ + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsCategoryForm/0.do?bbsCategoryChk=Y"); + map.put("message", "common.message.reg"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, bbsSetIdx); + + }else{ + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsCategoryForm.do"); + map.put("message", "common.message.error.reg"); + } + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsCategoryModProc.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsCategoryModProc.do"}, method=RequestMethod.POST) + public ModelAndView setBbsCategoryModProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @ModelAttribute("T_BBS_CATEGORY") T_BBS_CATEGORY tBbsCategory, + BindingResult bindingResult){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsCategoryModProc.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + map.put("opener", "loaction"); + map.put("self", "close"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsCategoryService.setBbsCategoryModProc(tBbsCategory, memberIdx)){ + map.put("message", "common.message.mod"); + map.put("opener", "reload"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, bbsSetIdx); + + }else{ + map.put("message", "common.message.error.mod"); + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsCategoryEdit/"+tBbsCategory.getBbsCategoryIdx()+".do"); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsCategoryDelProc/{bbsCategoryIdx}.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsCategoryDelProc/{bbsCategoryIdx}.do"}, method=RequestMethod.GET) + public ModelAndView setBbsCategoryDelProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsCategoryIdx") Integer bbsCategoryIdx){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsCategoryDelProc/"+bbsCategoryIdx+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsCategoryService.setBbsCategoryDelProc(bbsCategoryIdx)){ + map.put("message", "common.message.del"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, bbsSetIdx); + + }else{ + map.put("message", "common.message.error.del"); + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsCategoryList.do"); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsCategoryStatusProc/{bbsCategoryIdx}.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsCategoryStatusProc/{bbsCategoryIdx}.do"}, method=RequestMethod.GET) + public ModelAndView setBbsCategoryStatusProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsCategoryIdx") Integer bbsCategoryIdx, + @RequestParam(value="status", required=true) String status){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsCategoryStatusProc/"+bbsCategoryIdx+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsCategoryService.setBbsCategoryStatusProc(bbsCategoryIdx, status, memberIdx)){ + map.put("message", "common.message.status"); + }else{ + map.put("message", "common.message.error.status"); + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsCategoryList.do"); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsCategoryOrderProc/{bbsCategoryIdx}.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsCategoryOrderProc/{bbsCategoryIdx}.do"}, method=RequestMethod.GET) + public ModelAndView setSiteMenuOrderProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsCategoryIdx") Integer bbsCategoryIdx, + @RequestParam(value="orderType", required=true) String orderType){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsCategoryOrderProc/"+bbsCategoryIdx+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsCategoryService.setBbsCategoryOrderProc(bbsSetIdx, bbsCategoryIdx, orderType, memberIdx)){ + map.put("message", "common.message.order"); + }else{ + map.put("message", "common.message.error.order"); + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsCategoryList.do"); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsItemList.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsItemList.do"}) + public ModelAndView getBbsItemList(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsItemList.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + String[] qryColumns = {"groupBy", "bbsItemGroup", "bbsItemPattern", "bbsItemName", "bbsItemColWidth", + "bbsItemEssential", "bbsItemMiniList", "bbsItemList", "bbsItemView", "bbsItemLink", "bbsItemSearch", + "bbsItemStatus", "bbsItemListOrder", "bbsItemType"}; + + List> bbsItemList = managerBbsItemService.getBbsItemList(bbsSetIdx, "List", qryColumns); + + map.put("bbsItemList", bbsItemList); + map.put("bbsItemListCnt", bbsItemList.size()); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + + return new ModelAndView("/manager/bbs/bbsItemList"); + } + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsItemForm.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsItemForm.do"}) + public ModelAndView getBbsItemForm(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsItemForm.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + + return new ModelAndView("/manager/bbs/bbsItemForm"); + } + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsItemEdit/{bbsItemGroup}.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsItemEdit/{bbsItemGroup}.do"}, method=RequestMethod.GET) + public ModelAndView getBbsItemEdit(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsItemGroup") String bbsItemGroup){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsItemEdit/"+bbsItemGroup+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + String[] qryColumns = {"bbsItemIdx", "bbsItemGroup", "bbsItemValue", "bbsItemWidth", "bbsItemHeight"}; + + map.put("bbsItemValuesList", managerBbsItemService.getBbsItemValuesGroupList(bbsSetIdx, bbsItemGroup, qryColumns)); + map.put("tBbsItemDB", managerBbsItemService.getBbsItemForm(bbsSetIdx, bbsItemGroup)); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + + return new ModelAndView("/manager/bbs/bbsItemEdit"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsItemRegProc.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsItemRegProc.do"}, method=RequestMethod.POST) + public ModelAndView setBbsItemRegProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @RequestParam(value="bbsItemWidth", defaultValue="", required=false) Integer[] bbsItemWidth, + @RequestParam(value="bbsItemHeight", defaultValue="", required=false) Integer[] bbsItemHeight, + @RequestParam(value="bbsItemValues", defaultValue="", required=false) String[] bbsItemValues, + @ModelAttribute("T_BBS_ITEM") T_BBS_ITEM tBbsItem, + BindingResult bindingResult){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsItemRegProc.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsItemService.getBbsItemListCnt(bbsSetIdx) >= 18){ + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsItemList.do"); + map.put("message", "manager.bbs.message.no.item"); + return new ModelAndView("/_common/jsp/message"); + } + + String bbsItemGroup = managerBbsItemService.setBbsItemRegProc(tBbsItem, bbsItemWidth, bbsItemHeight, bbsItemValues, memberIdx); + + if(!bbsItemGroup.equals("")){ + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsItemList.do"); + map.put("message", "common.message.reg"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, bbsSetIdx); + + }else{ + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsItemForm.do"); + map.put("message", "common.message.error.reg"); + } + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsItemModProc.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsItemModProc.do"}, method=RequestMethod.POST) + public ModelAndView setBbsItemModProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @RequestParam(value="bbsItemWidth", defaultValue="", required=false) Integer[] bbsItemWidth, + @RequestParam(value="bbsItemHeight", defaultValue="", required=false) Integer[] bbsItemHeight, + @RequestParam(value="bbsItemValues", defaultValue="", required=false) String[] bbsItemValues, + @RequestParam(value="bbsItemIdxs", defaultValue="", required=false) Integer[] bbsItemIdxs, + @ModelAttribute("T_BBS_ITEM") T_BBS_ITEM tBbsItem, + BindingResult bindingResult){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsItemModProc.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsItemService.setBbsItemModProc(tBbsItem, bbsItemWidth, bbsItemHeight, bbsItemValues, bbsItemIdxs)){ + map.put("message", "common.message.mod"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, bbsSetIdx); + + }else{ + map.put("message", "common.message.error.mod"); + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsItemEdit/"+tBbsItem.getBbsItemGroup()+".do"); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsItemDelProc/{bbsItemGroup}.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsItemDelProc/{bbsItemGroup}.do"}, method=RequestMethod.GET) + public ModelAndView setBbsItemDelProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsItemGroup") String bbsItemGroup){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsItemDelProc/"+bbsItemGroup+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsItemService.setBbsItemDelProc(bbsSetIdx, bbsItemGroup)){ + map.put("message", "common.message.del"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, bbsSetIdx); + + }else{ + map.put("message", "common.message.error.del"); + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsItemList.do"); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsItemStatusProc.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsItemStatusProc.do"}, method=RequestMethod.POST) + public ModelAndView setBbsItemStatusProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @RequestParam(value="idxs", required=true) String[] idxs, + @RequestParam(value="selStatus", required=true) String selStatus){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsItemStatusProc.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + boolean chk = false; + + if(idxs.length > 0){ + for(int i=0; i map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsItemListOrder") Integer bbsItemListOrder, + @RequestParam(value="orderType", required=true) String orderType){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsItemListOrderProc/"+bbsItemListOrder+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsItemService.setBbsItemListOrderProc(bbsSetIdx, bbsItemListOrder, orderType)){ + map.put("message", "common.message.order"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, bbsSetIdx); + + }else{ + map.put("message", "common.message.error.order"); + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsItemList.do"); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsItemViewOrderList.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsItemViewOrderList.do"}) + public ModelAndView getBbsItemViewOrderList(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsItemViewOrderList.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + map.put("self", "close"); + return new ModelAndView("/_common/jsp/message"); + } + + String[] qryColumns = {"groupBy", "bbsItemGroup", "bbsItemName", "bbsItemStatus", "bbsItemViewOrder"}; + + List bbsItemViewOrderList = managerBbsItemService.getBbsItemViewOrderList(bbsSetIdx, qryColumns); + + map.put("bbsItemViewOrderList", bbsItemViewOrderList); + map.put("bbsItemViewOrderListCnt", bbsItemViewOrderList.size()); + + return new ModelAndView("/manager/bbs/bbsItemViewOrderList"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsItemViewOrderProc/{bbsItemViewOrder}.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsItemViewOrderProc/{bbsItemViewOrder}.do"}, method=RequestMethod.GET) + public ModelAndView setBbsItemViewOrderProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsItemViewOrder") Integer bbsItemViewOrder, + @RequestParam(value="orderType", required=true) String orderType){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsItemViewOrderProc/"+bbsItemViewOrder+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsItemService.setBbsItemViewOrderProc(bbsSetIdx, bbsItemViewOrder, orderType)){ + map.put("message", "common.message.order"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, bbsSetIdx); + + }else{ + map.put("message", "common.message.error.order"); + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsItemViewOrderList.do"); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsItemMiniOrderList.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsItemMiniOrderList.do"}) + public ModelAndView getBbsItemMiniOrderList(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsItemMiniOrderList.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("self", "close"); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + String[] qryColumns = {"groupBy", "bbsItemGroup", "bbsItemName", "bbsItemMiniList", "bbsItemStatus", "bbsItemMiniOrder"}; + + List bbsItemMiniOrderList = managerBbsItemService.getBbsItemMiniOrderList(bbsSetIdx, qryColumns); + + map.put("bbsItemMiniOrderList", bbsItemMiniOrderList); + map.put("bbsItemMiniOrderListCnt", bbsItemMiniOrderList.size()); + + return new ModelAndView("/manager/bbs/bbsItemMiniOrderList"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsItemMiniOrderProc/{bbsItemMiniOrder}.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsItemMiniOrderProc/{bbsItemMiniOrder}.do"}, method=RequestMethod.GET) + public ModelAndView setBbsItemMiniOrderProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsItemMiniOrder") Integer bbsItemMiniOrder, + @RequestParam(value="orderType", required=true) String orderType){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsItemMiniOrderProc/"+bbsItemMiniOrder+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsItemService.setBbsItemMiniOrderProc(bbsSetIdx, bbsItemMiniOrder, orderType)){ + map.put("message", "common.message.order"); + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, bbsSetIdx); + + }else{ + map.put("message", "common.message.error.order"); + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsItemMiniOrderList.do"); + + return new ModelAndView("/_common/jsp/message"); + }/* + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsTrashList.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsTrashList.do"}) + public ModelAndView getBbsTrashList(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsTrashList.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_SET tBbsSetDB = managerBbsSetService.getBbsSetForm(bbsSetIdx); + + ArrayList qryArrayList = new ArrayList(); + + qryArrayList.add("bbsDataIdx"); + qryArrayList.add("bbsDataDepth"); + qryArrayList.add("bbsDataGroup"); + qryArrayList.add("bbsDataPosition"); + + String[] qryColumns = {"groupBy", "bbsItemGroup", "bbsItemPattern", "bbsItemName", "bbsItemColWidth", + "bbsItemEssential", "bbsItemList", "bbsItemLink", "bbsItemSearch", + "bbsItemStatus", "bbsItemListOrder", "bbsItemType"}; + + List> tBbsItemList = managerBbsItemService.getBbsItemList(bbsSetIdx, "List", qryColumns); + + map.put("bbsItemList", tBbsItemList); + map.put("bbsItemListCnt", tBbsItemList.size()); + + String[] qryColumnsiv = {"bbsItemIdx", "bbsItemGroup", "bbsItemValue", "bbsItemWidth", "bbsItemHeight"}; + + map.put("bbsItemValuesList", managerBbsItemService.getBbsItemValuesList(bbsSetIdx, "List", qryColumnsiv)); + + for(int i=0; i bbsItemMap = (Map)tBbsItemList.get(i); + if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemList")).toString().equals("Y") && + SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemStatus")).toString().equals("U")){ + + if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataFile")){ + qryArrayList.add("bbsFileCount"); + }else if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataContent")){ + continue; + }else{ + qryArrayList.add(bbsItemMap.get("_bbsItemGroup").toString()); + } + + if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataName")){ + if(SeedUtils.setReplaceNull(tBbsSetDB.getBbsSetDataSaveType()).equals("memberDept")){ + qryArrayList.add("bbsDataDept"); + }else{ + qryArrayList.add("tMember.memberName"); + } + } + } + } + + String[] qryColumnsic = {"bbsCategoryName", "bbsCategoryIdxs", "bbsCategoryParentIdx", "bbsCategoryDepth", "bbsCategoryOrder"}; + + map.put("bbsCategoryList", managerBbsCategoryService.getBbsCategoryListt(bbsSetIdx, qryColumnsic)); + + paging.setCount(managerBbsTrashService.getBbsTrashListCnt(bbsSetIdx, column, search, tBbsSetDB.getBbsSetType(), searchSDate, searchEDate)); + + map.put("bbsTrashCnt", paging.getCount()); + map.put("bbsTrashList", managerBbsTrashService.getBbsTrashList(bbsSetIdx, paging.getPage(), paging.getRow(), column, search, tBbsSetDB.getBbsSetType(), searchSDate, searchEDate, qryArrayList)); + + SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyy-MM-dd"); + + map.put("tBbsSetDB", tBbsSetDB); + map.put("toDate", sdfFormat.format(new Date())); + + map.put("page", paging.getPage()); + map.put("row", paging.getRow()); + map.put("pages", paging.getPages()); + map.put("blocks", paging.getBlocks()); + map.put("block", paging.getBlock()); + map.put("fPage", paging.getfPage()); + map.put("lPage", paging.getlPage()); + + map.put("column", column); + map.put("search", search); + map.put("searchSDate", searchSDate); + map.put("searchEDate", searchEDate); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + + return new ModelAndView("/manager/bbs/bbsTrashList"); + }*/ + + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsTrashList.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsTrashList.do"}) + public ModelAndView getBbsTrashList(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsTrashList.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_SET tBbsSetDB = managerBbsSetService.getBbsSetForm(bbsSetIdx); + + ArrayList qryArrayList = new ArrayList(); + + qryArrayList.add("bbsDataIdx"); + qryArrayList.add("bbsDataTitle"); + qryArrayList.add("bbsDataHit"); + qryArrayList.add("bbsDataDepth"); + qryArrayList.add("bbsDataGroup"); + qryArrayList.add("bbsDataFam"); + qryArrayList.add("bbsDataPosition"); + qryArrayList.add("bbsDataSecret"); + qryArrayList.add("bbsDataLinkUrl"); + qryArrayList.add("bbsDataLinkType"); + qryArrayList.add("bbsDataRegDate"); + qryArrayList.add("bbsCommentCount"); + qryArrayList.add("bbsFileCount"); + + if(SeedUtils.setReplaceNull(tBbsSetDB.getBbsSetDataSaveType()).equals("memberDept")){ + qryArrayList.add("bbsDataDept"); + }else{ + qryArrayList.add("tMember.memberName"); + } + + String[] qryColumnsic = {"bbsCategoryName", "bbsCategoryIdxs", "bbsCategoryParentIdx", "bbsCategoryDepth", "bbsCategoryOrder"}; + + map.put("bbsCategoryList", managerBbsCategoryService.getBbsCategoryListt(bbsSetIdx, qryColumnsic)); + + paging.setCount(managerBbsTrashService.getBbsTrashListCnt(bbsSetIdx, column, search, tBbsSetDB.getBbsSetType(), searchSDate, searchEDate)); + + map.put("bbsTrashCnt", paging.getCount()); + map.put("bbsTrashList", managerBbsTrashService.getBbsTrashList(bbsSetIdx, paging.getPage(), paging.getRow(), column, search, tBbsSetDB.getBbsSetType(), searchSDate, searchEDate, qryArrayList)); + + SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyy-MM-dd"); + + map.put("tBbsSetDB", tBbsSetDB); + map.put("toDate", sdfFormat.format(new Date())); + + map.put("page", paging.getPage()); + map.put("row", paging.getRow()); + map.put("pages", paging.getPages()); + map.put("blocks", paging.getBlocks()); + map.put("block", paging.getBlock()); + map.put("fPage", paging.getfPage()); + map.put("lPage", paging.getlPage()); + + map.put("column", column); + map.put("search", search); + map.put("searchSDate", searchSDate); + map.put("searchEDate", searchEDate); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + + return new ModelAndView("/manager/bbs/bbsTrashList"); + } + + @RequestMapping(value = {"/gtm/{siteIdx}/{bbsSetIdx}/bbsTrashView/{bbsDataIdx}.do", "/gte/{siteIdx}/{bbsSetIdx}/bbsTrashView/{bbsDataIdx}.do"}, method=RequestMethod.GET) + public ModelAndView getBbsTrashView(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsDataIdx") Integer bbsDataIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsTrashView/"+bbsDataIdx+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_DATA tBbsDataDB = managerBbsTrashService.getBbsTrashForm(bbsDataIdx); + + SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyy-MM-dd"); + + String[] qryColumnsi = {"groupBy", "bbsItemGroup", "bbsItemPattern", "bbsItemName", "bbsItemColWidth", + "bbsItemEssential", "bbsItemList", "bbsItemLink", "bbsItemSearch", + "bbsItemStatus", "bbsItemViewOrder", "bbsItemType"}; + + map.put("bbsItemList", managerBbsItemService.getBbsItemList(bbsSetIdx, "View", qryColumnsi)); + + String[] qryColumnsiv = {"bbsItemIdx", "bbsItemGroup", "bbsItemValue", "bbsItemWidth", "bbsItemHeight"}; + + map.put("bbsItemValuesList", managerBbsItemService.getBbsItemValuesList(bbsSetIdx, "View", qryColumnsiv)); + + String[] qryColumnsf = {"bbsFileIdx", "bbsFileName", "bbsFileText", "bbsFileType"}; + + map.put("bbsFileList", managerBbsFileService.getBbsFileList(tBbsDataDB.getBbsDataIdx(), qryColumnsf)); + + String[] qryColumnsic = {"bbsCategoryName", "bbsCategoryIdxs", "bbsCategoryParentIdx", "bbsCategoryDepth", "bbsCategoryOrder"}; + + map.put("bbsCategoryList", managerBbsCategoryService.getBbsCategoryListt(bbsSetIdx, qryColumnsic)); + + //답변게시판일때 해당 글의 답변 글을 가져옴 + if(tBbsDataDB.gettBbsSet().getBbsSetType().equals("W")){ + + T_BBS_DATA tBbsReplyDB = managerBbsDataService.getBbsReplyForm(tBbsDataDB.getBbsDataGroup(), tBbsDataDB.getBbsDataFam()); + + map.put("tBbsReplyDB", tBbsReplyDB); + + if(tBbsReplyDB != null){ + map.put("bbsReplyFileList", managerBbsFileService.getBbsFileList(tBbsReplyDB.getBbsDataIdx(), qryColumnsf)); + } + } + + map.put("tBbsTrashDB", tBbsDataDB); + map.put("toDate", sdfFormat.format(new Date())); + + map.put("page", paging.getPage()); + map.put("row", paging.getRow()); + + map.put("column", column); + map.put("search", search); + map.put("searchSDate", searchSDate); + map.put("searchEDate", searchEDate); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + + return new ModelAndView("/manager/bbs/bbsTrashView"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsTrashProc/{bbsDataIdx}.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsTrashProc/{bbsDataIdx}.do"}, method=RequestMethod.GET) + public ModelAndView setBbsTrashProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsDataIdx") Integer bbsDataIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="status", required=true) String status, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsTrashProc/"+bbsDataIdx+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsTrashService.setBbsTrashProc(bbsDataIdx, status, rootPath)){ + if(status.equals("D")){ + map.put("message", "common.message.del"); + }else{ + map.put("message", "manager.bbs.message.restore"); + } + + //미니리스트 컴파일 + setBbsDataMiniList(siteIdx, bbsSetIdx); + + }else{ + if(status.equals("D")){ + map.put("message", "common.message.error.del"); + }else{ + map.put("message", "manager.bbs.message.error.restore"); + } + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsTrashList.do?"+ + "page="+paging.getPage()+"&"+ + "row="+paging.getRow()+"&"+ + "column="+column+"&"+ + "search="+search+"&"+ + "searchSDate="+searchSDate+"&"+ + "searchEDate="+searchEDate); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsTrashStatusProc.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsTrashStatusProc.do"}, method=RequestMethod.POST) + public ModelAndView setBbsTrashStatusProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="column", defaultValue="", required=false) String column, + @RequestParam(value="search", defaultValue="", required=false) String search, + @RequestParam(value="searchSDate", defaultValue="", required=false) String searchSDate, + @RequestParam(value="searchEDate", defaultValue="", required=false) String searchEDate, + @RequestParam(value="idxs", required=true) Integer[] idxs, + @RequestParam(value="selStatus", required=true) String selStatus){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsTrashStatusProc.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + boolean chk = false; + + if(idxs.length > 0){ + for(int i=0; i map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @ModelAttribute("paging") Paging paging){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/"+siteIdx+"/"+bbsSetIdx+"/bbsSetSkinList.do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_SET tBbsSetDB = managerBbsSetService.getBbsSetForm(bbsSetIdx); + + String bbsSetSkinCode = tBbsSetDB.getBbsSetSkinCode(); + String bbsSetType = tBbsSetDB.getBbsSetType().toString(); + String bbsSetSubType = tBbsSetDB.getBbsSetSubType().toString(); + + String[] qryColumns = {"groupBy", "bbsSkinIdx", "bbsSkinCode", "bbsSkinThumb", "bbsSkinReThumb", "bbsSkinType", "bbsSkinSubType", "bbsSkinRegDate", "bbsSkinStatus", "tMember.memberId", "tMember.memberName"}; + + String bbsSetTypeTmp = bbsSetType; + + if(bbsSetTypeTmp.equals("B") || bbsSetTypeTmp.equals("L") || bbsSetTypeTmp.equals("R") || bbsSetTypeTmp.equals("F") || bbsSetTypeTmp.equals("W")){ + bbsSetTypeTmp = "B"; + }else if(bbsSetTypeTmp.equals("A") || bbsSetTypeTmp.equals("T") ){ + bbsSetTypeTmp = "A"; + }else if(bbsSetTypeTmp.equals("M")){ + bbsSetTypeTmp = "M"; + } + + System.out.println("bbsSetTypeTmp :" + bbsSetTypeTmp); + System.out.println("bbsSetSubType :" + bbsSetSubType); + + paging.setCount(managerBbsSetService.getBbsSetSkinListCnt(siteIdx, bbsSetTypeTmp, bbsSetSubType)); + + map.put("bbsSetSkinListCnt", paging.getCount()); + map.put("bbsSetSkinList", managerBbsSetService.getBbsSetSkinList(siteIdx, bbsSetTypeTmp, bbsSetSubType, paging.getPage(), paging.getRow(), qryColumns)); + + map.put("page", paging.getPage()); + map.put("row", paging.getRow()); + map.put("pages", paging.getPages()); + map.put("blocks", paging.getBlocks()); + map.put("block", paging.getBlock()); + map.put("fPage", paging.getfPage()); + map.put("lPage", paging.getlPage()); + + if(bbsSetType.equals("B") || bbsSetType.equals("L") || bbsSetType.equals("R") || bbsSetType.equals("F") || bbsSetType.equals("W")){ + map.put("bbsSkinType", "bbs"); + }else if(bbsSetType.equals("A") || bbsSetType.equals("T") ){ + map.put("bbsSkinType", "album"); + }else if(bbsSetType.equals("M")){ + map.put("bbsSkinType", "movie"); + } + + map.put("bbsSetSkinCode", bbsSetSkinCode); + + map.put("memberAuth", memberAuth); + map.put("memberAuthG", memberAuthG); + + return new ModelAndView("/manager/bbs/bbsSetSkinList"); + } + + @RequestMapping(value = {"/gtm/proc/{siteIdx}/{bbsSetIdx}/bbsSetSkinProc/{bbsSkinCode}.do", "/gte/proc/{siteIdx}/{bbsSetIdx}/bbsSetSkinProc/{bbsSkinCode}.do"}, method=RequestMethod.GET) + public ModelAndView setBbsSetSkinProc(HttpServletRequest httpServletRequest, + HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSetIdx") Integer bbsSetIdx, + @PathVariable(value="bbsSkinCode") String bbsSkinCode, + @ModelAttribute("paging") Paging paging){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + boolean memberAuthG = managerBbsManagerService.getBbsManagerListGrantCnt(bbsSetIdx, memberIdx); + + String location = ""; + String pageType = ""; + + //기능 관리자 URL로 넘어온 경우 + if(httpServletRequest.getRequestURI().indexOf("/gte/proc/"+siteIdx+"/"+bbsSetIdx+"/bbsSetSkinProc/"+bbsSkinCode+".do") > -1){ + location = "/gte/login.do"; + pageType = "gte"; + }else{ + location = "/gtm/login.do"; + pageType = "gtm"; + } + map.put("pageType", pageType); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth && !memberAuthG)){ + setSessionRemove(session); + map.put("url", location); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsSetService.setBbsSetSkinProc(bbsSetIdx, bbsSkinCode, memberIdx)){ + map.put("message", "common.message.mod"); + }else{ + map.put("message", "common.message.error.mod"); + } + + map.put("url", "/"+pageType+"/"+siteIdx+"/"+bbsSetIdx+"/bbsSetSkinList.do?"+ + "page="+paging.getPage()+"&"+ + "row="+paging.getRow()); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = "/gtm/{siteIdx}/bbsSkinForm.do") + public ModelAndView getBbsSkinForm(HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){ + setSessionRemove(session); + map.put("url", "/gtm/login.do"); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + map.put("bbsSkinBHtml", managerBbsSkinService.getBbsSkinHtml(rootPath, "bbs")); + map.put("bbsSkinLHtml", managerBbsSkinService.getBbsSkinHtml(rootPath, "albumL")); + map.put("bbsSkinIHtml", managerBbsSkinService.getBbsSkinHtml(rootPath, "albumI")); + map.put("bbsSkinGHtml", managerBbsSkinService.getBbsSkinHtml(rootPath, "albumG")); + map.put("bbsSkinSHtml", managerBbsSkinService.getBbsSkinHtml(rootPath, "albumS")); + map.put("bbsSkinELHtml", managerBbsSkinService.getBbsSkinHtml(rootPath, "eventL")); + map.put("bbsSkinEIHtml", managerBbsSkinService.getBbsSkinHtml(rootPath, "eventI")); + map.put("bbsSkinESHtml", managerBbsSkinService.getBbsSkinHtml(rootPath, "eventG")); + map.put("bbsSkinEGHtml", managerBbsSkinService.getBbsSkinHtml(rootPath, "eventS")); + + map.put("memberAuth", memberAuth); + + return new ModelAndView("/manager/bbs/bbsSkinForm"); + } + + @RequestMapping(value = "/gtm/{siteIdx}/bbsSkinEdit/{bbsSkinIdx}.do", method=RequestMethod.GET) + public ModelAndView getBbsSkinEdit(HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSkinIdx") Integer bbsSkinIdx, + @ModelAttribute("paging") Paging paging){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){ + setSessionRemove(session); + map.put("url", "/gtm/login.do"); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_SKIN tBbsSkinDB = managerBbsSkinService.getBbsSkinForm(bbsSkinIdx); + + if(tBbsSkinDB.getBbsSkinCode().equals("basic")){ + map.put("url", "/gtm/bbs/bbsSkinList.do"); + map.put("message", "common.message.error"); + return new ModelAndView("/_common/jsp/message"); + } + + map.put("tBbsSkinDB", tBbsSkinDB); + map.put("bbsSkinHtml", managerBbsSkinService.getBbsSkinHtml(tBbsSkinDB, rootPath)); + + String filePath = rootPath + "/" + siteIdx + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode() + "/_images"; + + map.put("fileList", SeedUtils.getSeedDirFiles(filePath, "F")); + + map.put("page", paging.getPage()); + map.put("row", paging.getRow()); + + map.put("memberAuth", memberAuth); + + return new ModelAndView("/manager/bbs/bbsSkinEdit"); + } + + @RequestMapping(value = "/gtm/{siteIdx}/bbsSkinList.do") + public ModelAndView getBbsSkinList(HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @ModelAttribute("paging") Paging paging){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){ + setSessionRemove(session); + map.put("url", "/gtm/login.do"); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + String[] qryColumns = {"groupBy", "bbsSkinIdx", "bbsSkinCode", "bbsSkinThumb", "bbsSkinReThumb", "bbsSkinType", "bbsSkinRegDate", "bbsSkinStatus", "tMember.memberId", "tMember.memberName"}; + + paging.setCount(managerBbsSkinService.getBbsSkinListCnt(siteIdx)); + + map.put("bbsSkinListCnt", paging.getCount()); + map.put("bbsSkinList", managerBbsSkinService.getBbsSkinList(siteIdx, paging.getPage(), paging.getRow(), qryColumns)); + + map.put("page", paging.getPage()); + map.put("row", paging.getRow()); + map.put("pages", paging.getPages()); + map.put("blocks", paging.getBlocks()); + map.put("block", paging.getBlock()); + map.put("fPage", paging.getfPage()); + map.put("lPage", paging.getlPage()); + + map.put("memberAuth", memberAuth); + + return new ModelAndView("/manager/bbs/bbsSkinList"); + } + + @RequestMapping(value = "/gtm/proc/{siteIdx}/bbsSkinRegProc.do", method=RequestMethod.POST) + public ModelAndView setBbsSkinRegProc(HttpServletResponse httpServletResponse, HttpSession session, Map map, MultipartFile upFile, + MultipartHttpServletRequest multiFile, + @PathVariable(value="siteIdx") String siteIdx, + @RequestParam(value="bbsSkinHtml", defaultValue="", required=false) String bbsSkinHtml, + @ModelAttribute("T_BBS_SKIN") T_BBS_SKIN tBbsSkin, + BindingResult bindingResult){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){ + setSessionRemove(session); + map.put("url", "/gtm/login.do"); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + if (!Pattern.matches("(?i)^[\\d\\D]*\\.(jpg|gif|png|bmp)$", upFile.getOriginalFilename().toLowerCase())) { + map.put("url", "/gtm/"+siteIdx+"/bbsSkinForm.do"); + map.put("message", "common.fileupload.message.image.upload"); + return new ModelAndView("/_common/jsp/message"); + } + + List multiFiles = multiFile.getFiles("multiFile"); + + if(multiFiles.size() > 0){ + for(int f=0; f 0){ + map.put("url", "/gtm/"+siteIdx+"/bbsSkinList.do"); + map.put("message", "common.message.reg"); + }else{ + map.put("url", "/gtm/"+siteIdx+"/bbsSkinForm.do"); + map.put("message", "common.message.error.reg"); + } + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = "/gtm/proc/{siteIdx}/bbsSkinModProc.do", method=RequestMethod.POST) + public ModelAndView setBbsSkinModProc(HttpServletResponse httpServletResponse, HttpSession session, Map map, MultipartFile upFile, + MultipartHttpServletRequest multiFile, + @PathVariable(value="siteIdx") String siteIdx, + @ModelAttribute("T_BBS_SKIN") T_BBS_SKIN tBbsSkin, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="bbsSkinHtml", defaultValue="", required=false) String bbsSkinHtml, + BindingResult bindingResult){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){ + setSessionRemove(session); + map.put("url", "/gtm/login.do"); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_SKIN tBbsSkinDB = managerBbsSkinService.getBbsSkinForm(tBbsSkin.getBbsSkinIdx()); + + if(tBbsSkinDB.getBbsSkinCode().equals("basic")){ + map.put("url", "/gtm/bbs/bbsSkinList.do"); + map.put("message", "common.message.error"); + return new ModelAndView("/_common/jsp/message"); + } + + try{ + + if(upFile != null && upFile.getBytes().length > 0){ + + if (!Pattern.matches("(?i)^[\\d\\D]*\\.(jpg|gif|png|bmp)$", upFile.getOriginalFilename().toLowerCase())) { + map.put("url", "/gtm/"+siteIdx+"/bbsSkinEdit/"+tBbsSkin.getBbsSkinIdx()+".do?" + + "page="+paging.getPage()+"&"+ + "row="+paging.getRow()); + map.put("message", "common.fileupload.message.image.upload"); + return new ModelAndView("/_common/jsp/message"); + } + } + }catch(IOException e){ + log.error("CHECK ERROR:",e); + } + + List multiFiles = multiFile.getFiles("multiFile"); + + if(multiFiles.size() > 0){ + for(int f=0; f map, + @PathVariable(value="siteIdx") String siteIdx, + @ModelAttribute("paging") Paging paging, + @RequestParam(value="idxs", required=true) Integer[] idxs, + @RequestParam(value="selStatus", required=true) String selStatus){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){ + setSessionRemove(session); + map.put("url", "/gtm/login.do"); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + boolean chk = false; + + if(idxs.length > 0){ + for(int i=0; i map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSkinIdx") Integer bbsSkinIdx, + @ModelAttribute("paging") Paging paging){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + setPaging(paging); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){ + setSessionRemove(session); + map.put("url", "/gtm/login.do"); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_SKIN tBbsSkinDB = managerBbsSkinService.getBbsSkinForm(bbsSkinIdx); + + if(tBbsSkinDB.getBbsSkinCode().equals("basic")){ + map.put("url", "/gtm/bbs/bbsSkinList.do"); + map.put("message", "common.message.error"); + return new ModelAndView("/_common/jsp/message"); + } + + if(managerBbsSkinService.setBbsSkinDelProc(bbsSkinIdx, rootPath)){ + map.put("message", "common.message.del"); + }else{ + map.put("message", "common.message.error.del"); + } + + map.put("url", "/gtm/"+siteIdx+"/bbsSkinList.do?"+ + "page="+paging.getPage()+"&"+ + "row="+paging.getRow()); + + return new ModelAndView("/_common/jsp/message"); + } + + @RequestMapping(value = "/gtm/proc/{siteIdx}/bbsSkinFileDelProc/{bbsSkinIdx}.do", method=RequestMethod.GET) + public ModelAndView setBbsSkinFileDelProc(HttpServletResponse httpServletResponse, Map map, HttpSession session, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSkinIdx") Integer bbsSkinIdx, + @RequestParam(value="fileName", required=true) String fileName){ + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){ + setSessionRemove(session); + map.put("url", "/gtm/login.do"); + map.put("message", "common.message.no.grant"); + return new ModelAndView("/_common/jsp/message"); + } + + T_BBS_SKIN tBbsSkinDB = managerBbsSkinService.getBbsSkinForm(bbsSkinIdx); + + if(tBbsSkinDB.getBbsSkinCode().equals("basic")){ + map.put("url", "/gtm/bbs/bbsSkinList.do"); + map.put("message", "common.message.error"); + return new ModelAndView("/_common/jsp/message"); + } + + String success = "N"; + + SeedUtils.setSeedDeleteFile(rootPath + "/" + siteIdx + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode() + "/_images/" + fileName); + + //FTP 전송 + SeedFtpType seedFtpType = new SeedFtpType(); + //WEB 서버의 경로 + seedFtpType.setDestFilePath(siteIdx + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode() + "/_images"); + //WAS 서버의 경로 + seedFtpType.setSrcFilePath(""); + //WAS 파일명 + seedFtpType.setFileName(fileName); + //파일 전송 타입 regFile=WEB 서버에 파일전송, delFile=WEB 서버에 파일삭제 + seedFtpType.setFtpType("delFile"); + seedFtpType.setSeedFtp(); + + success = "Y"; + + if(success.equals("Y")){ + map.put("message", "common.message.del"); + }else{ + map.put("message", "common.message.error.del"); + } + + map.put("url", "/gtm/"+siteIdx+"/bbsSkinEdit/"+bbsSkinIdx+".do"); + + return new ModelAndView("/_common/jsp/message"); + } + + @ResponseBody + @RequestMapping(value = "/gtm/proc/{siteIdx}/bbsSkinFileDownLoad/{bbsSkinIdx}.do", method=RequestMethod.GET) + public void getMultiFileDownLoad(HttpServletResponse httpServletResponse, HttpSession session, Map map, + @PathVariable(value="siteIdx") String siteIdx, + @PathVariable(value="bbsSkinIdx") Integer bbsSkinIdx, + @RequestParam(value="fileName", required=true) String fileName, + HttpServletRequest request,HttpServletResponse response) { + + getSeedLicense(httpServletResponse); + + setSessionMessageRemove(session); + + Integer memberIdx = Integer.valueOf(SeedUtils.setReplaceNull(session.getAttribute("memberIdx"),"0")); + String memberGrant = (memberIdx == 0) ? "N" : SeedUtils.setReplaceNull(managerMemberService.getMemberMapForm(memberIdx, new String[] {"memberGrant"}).get("_memberGrant"), "N"); + boolean memberAuth = managerSiteManagerService.getSiteManagerListCnt(siteIdx, memberIdx); + + if(memberIdx == 0 || (!memberGrant.equals("S") && !memberAuth)){ + setSessionRemove(session); + session.setAttribute("url", "/gtm/login.do"); + session.setAttribute("message", "common.message.no.grant"); + try { + httpServletResponse.sendRedirect("/common/message.do"); + } catch (IOException ex) { + log.error("CHECK ERROR:",ex); + } + }else{ + + try{ + + response.reset(); + + response.setContentType("application/octet-stream; charset=UTF-8"); + + T_BBS_SKIN tBbsSkinDB = managerBbsSkinService.getBbsSkinForm(bbsSkinIdx); + + File file = new File(rootPath + "/" + siteIdx + "/jsp/bbs/skin/" + tBbsSkinDB.getBbsSkinCode() + "/_images/" + fileName); + + if(this.getBrowser(request).equals("MSIE")){ + response.setHeader("Content-Disposition", "attachment; filename=\""+URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20")+"\""); + }else if(this.getBrowser(request).equals("Chrome")){ + response.setHeader("Content-Disposition", "attachment; filename=\""+new String(fileName.getBytes("UTF-8"), "8859_1").replaceAll("\\+", "%20")+"\""); + }else if(this.getBrowser(request).equals("Firefox")){ + response.setHeader("Content-Disposition", "attachment; filename=\""+new String(fileName.getBytes("UTF-8"), "8859_1").replaceAll("\\+", "%20")+"\""); + }else if(this.getBrowser(request).equals("Opera")){ + response.setHeader("Content-Disposition", "attachment; filename=\""+new String(fileName.getBytes("UTF-8"), "8859_1").replaceAll("\\+", "%20")+"\""); + } + + response.setHeader("Content-Transfer-Encoding", "binary"); + + response.setContentLength((int)file.length()); + response.setHeader("Pargma", "no-cache"); + response.setHeader("Expires", "-1"); + + FileCopyUtils.copy(new FileInputStream(file), response.getOutputStream()); + + }catch(UnsupportedEncodingException e){ + log.error("CHECK ERROR:",e); + }catch(FileNotFoundException e){ + log.error("CHECK ERROR:",e); + }catch(IOException e){ + log.error("CHECK ERROR:",e); + }catch(Exception e){ + log.error("CHECK ERROR:",e); + } + } + } + + //미니게시판 컴파일 + public void setBbsDataMiniList(String siteIdx, Integer bbsSetIdx){ + + T_BBS_SET tBbsSetDB = managerBbsSetService.getBbsSetForm(bbsSetIdx); + + /* + String bbsManager = ""; + + Iterator iteratorList = tBbsSetDB.gettBbsManagers().iterator(); + + while(iteratorList.hasNext()){ + + T_BBS_MANAGER tBbsManagerDB = iteratorList.next(); + + if(tBbsManagerDB.getBbsManagerStatus().equals("U")){ + bbsManager += "|" + tBbsManagerDB.gettMember().getMemberIdx() + "|,"; + } + } + + if(!bbsManager.equals("")){ + bbsManager = bbsManager.substring(0, bbsManager.length()-1); + } + */ + + boolean bbsDataContent = false; + + ArrayList> bbsDataMiniArrayList = new ArrayList>(); + + ArrayList bbsItemGroupList = new ArrayList(); + + ArrayList bbsItemMiniLengthList = new ArrayList(); + + ArrayList qryArrayList = new ArrayList(); + + String[] qryColumnsi = {"groupBy", "bbsItemGroup", "bbsItemMiniList", "bbsItemStatus", "bbsItemMiniOrder", "bbsItemDataMiniLength"}; + + List> tBbsItemList = managerBbsItemService.getBbsItemMiniList(bbsSetIdx, qryColumnsi); + + qryArrayList.add("bbsDataIdx"); + qryArrayList.add("tMember.memberIdx"); + qryArrayList.add("bbsDataGroup"); + qryArrayList.add("bbsDataPosition"); + qryArrayList.add("bbsDataThumb"); + qryArrayList.add("bbsDataThumbText"); + qryArrayList.add("bbsDataRegDate"); + + for(int i=0; i bbsItemMap = (Map)tBbsItemList.get(i); + + bbsItemGroupList.add("_"+bbsItemMap.get("_bbsItemGroup").toString()); + bbsItemMiniLengthList.add(Integer.parseInt(bbsItemMap.get("_bbsItemDataMiniLength").toString())); + + if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataFile")){ + qryArrayList.add("bbsFileCount"); + }else if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataContent")){ + bbsDataContent = true; + }else if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataEventDate")){ + qryArrayList.add("bbsDataEventSdate"); + qryArrayList.add("bbsDataEventEdate"); + }else if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataRegDate")){ + continue; + }else{ + qryArrayList.add(bbsItemMap.get("_bbsItemGroup").toString()); + } + + if(SeedUtils.setReplaceNull(bbsItemMap.get("_bbsItemGroup")).toString().equals("bbsDataName")){ + if(SeedUtils.setReplaceNull(tBbsSetDB.getBbsSetDataSaveType()).equals("memberDept")){ + qryArrayList.add("bbsDataDept"); + }else{ + qryArrayList.add("tMember.memberName"); + } + } + } + + SimpleDateFormat sdfFormat = new SimpleDateFormat("yyyy-MM-dd"); + + String toDate = sdfFormat.format(new Date()); + + String filePath = rootPath + "/" + siteIdx + "/jsp/bbs"; + + String bbsSkin = "/img/user/bbs"; + + if(!tBbsSetDB.getBbsSetSkinCode().equals("basic")){ + bbsSkin = "/site/"+siteIdx+"/jsp/bbs/skin/"+tBbsSetDB.getBbsSetSkinCode()+"/_images"; + } + + SeedUtils.setSeedMkDirs(filePath); + + FileOutputStream jspFileOutputStream = null; + OutputStreamWriter jspOutputStreamWriter = null; + BufferedWriter jspWriter = null; + + try{ + + jspFileOutputStream = new FileOutputStream(filePath + "/bbs_" + bbsSetIdx+".jsp"); + jspOutputStreamWriter = new OutputStreamWriter(jspFileOutputStream, "UTF-8"); + jspWriter = new BufferedWriter(jspOutputStreamWriter); + + jspWriter.write("<%@ page language='java' contentType='text/html; charset=UTF-8'%>"); + jspWriter.write("\n"); + jspWriter.write("<%@ taglib uri='http://www.springframework.org/tags' prefix='s'%>"); + jspWriter.write("\n"); + jspWriter.write("<%@ taglib uri='http://www.springframework.org/tags/form' prefix='form'%>"); + jspWriter.write("\n"); + jspWriter.write("<%@ taglib uri='http://java.sun.com/jsp/jstl/functions' prefix='fn'%>"); + jspWriter.write("\n"); + jspWriter.write("<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>"); + jspWriter.write("\n"); + jspWriter.write("<%@ taglib uri='http://java.sun.com/jsp/jstl/fmt' prefix='fmt'%>"); + jspWriter.write("\n"); + jspWriter.write("\n"); + jspWriter.write("\" />"); + jspWriter.write("\n"); + jspWriter.write(""); + jspWriter.write("\n"); + jspWriter.write("\n"); + /* + jspWriter.write(""); + jspWriter.write("\n"); + jspWriter.write(""); + jspWriter.write("\n"); + jspWriter.write(""); + jspWriter.write("\n"); + jspWriter.write(""); + jspWriter.write("\n"); + jspWriter.write(""); + jspWriter.write("\n"); + jspWriter.write("\n"); + */ + + if(tBbsSetDB == null || !tBbsSetDB.getBbsSetStatus().equals("U")){ + + jspWriter.write("
  • "); + jspWriter.write("\n"); + + jspWriter.write(""); + + jspWriter.write("\n"); + jspWriter.write("
  • "); + + }else{ + + int miniRow = 0; + String siteMenuIdxs[] = SeedUtils.setReplaceNull(tBbsSetDB.getSiteMenuIdxs(), "0").split("\\|"); + + if((tBbsSetDB.getBbsSetType().equals("A") || tBbsSetDB.getBbsSetType().equals("M")) && + (tBbsSetDB.getBbsSetSubType().equals("G"))){ + miniRow = tBbsSetDB.getBbsSetDataMiniRow() * tBbsSetDB.getBbsSetDataMiniCol(); + }else{ + miniRow = tBbsSetDB.getBbsSetDataMiniRow(); + } + + List> bbsDataMiniList = managerBbsDataService.getBbsDataMiniList(bbsSetIdx, 1, miniRow, SeedUtils.setReplaceNull(tBbsSetDB.getBbsSetDateOrder(), "N"), qryArrayList); + + if(bbsDataContent){ + + for(int i=0; i bbsDataMiniMap = bbsDataMiniList.get(i); + + bbsDataMiniMap.put("_bbsDataContent", SeedUtils.setTagRemove(managerBbsDataService.getBbsDataForm(Integer.parseInt(bbsDataMiniMap.get("_bbsDataIdx").toString())).getBbsDataContent())); + bbsDataMiniArrayList.add(bbsDataMiniMap); + } + + if(bbsDataMiniArrayList.size() > 0){ + + for(int i=0; i"); + jspWriter.write("\n"); + + Map bbsDataMiniMap = bbsDataMiniArrayList.get(i); + + jspWriter.write(""); + jspWriter.write("\n"); + + //new_icon.gif 나올지 안나올지 확인 + String bbsDataRegDate = SeedUtils.setReplaceNull(bbsDataMiniMap.get("_bbsDataRegDate").toString()); + + if(!bbsDataRegDate.equals("") && bbsDataRegDate.length() > 10){ + bbsDataRegDate = bbsDataRegDate.substring(0, 10); + } + + if(bbsDataRegDate.equals(toDate)){ + bbsDataRegDate = "<s:message code=' />"; + }else{ + bbsDataRegDate = ""; + } + + for(int j=0; j 10){ + bbsDataRegDateTmp = bbsDataRegDateTmp.substring(0, 10); + } + + bbsDataMiniMapData = bbsDataRegDateTmp; + + }else if(bbsItemGroupList.get(j).toString().equals("_bbsDataThumb")){ + String bbsDataThumb = SeedUtils.setReplaceNull(bbsDataMiniMap.get(bbsItemGroupList.get(j).toString())); + String fileChk = bbsDataThumb.substring(0, bbsDataThumb.indexOf("_") + 1); + + if(fileChk.equals(bbsSetIdx+"_")){ + bbsDataThumb = "/site/"+tBbsSetDB.gettSite().getSiteIdx()+"/upload/bbs/"+bbsSetIdx+"/thumb_"+bbsDataThumb; + } + bbsDataMiniMapData = ""+SeedUtils.setReplaceNull(bbsDataMiniMap.get("_bbsDataThumbText"))+""; + }else if(bbsItemGroupList.get(j).toString().equals("_bbsDataName")){ + if(SeedUtils.setReplaceNull(bbsDataMiniMap.get(bbsItemGroupList.get(j).toString())).equals("")){ + bbsDataMiniMapData = SeedUtils.setReplaceNull(bbsDataMiniMap.get("_memberName")); + }else{ + bbsDataMiniMapData = SeedUtils.setReplaceNull(bbsDataMiniMap.get(bbsItemGroupList.get(j).toString())); + } + }else{ + + bbsDataMiniMapData = SeedUtils.setReplaceNull(bbsDataMiniMap.get(bbsItemGroupList.get(j).toString())); + + if(bbsDataMiniMapData.length() > bbsItemMiniLengthList.get(j) && Integer.parseInt(bbsItemMiniLengthList.get(j).toString()) > 0){ + bbsDataMiniMapData = bbsDataMiniMapData.substring(0, bbsItemMiniLengthList.get(j)) + ".."; + } + + if(!bbsDataRegDate.equals("")){ + bbsDataMiniMapData = bbsDataMiniMapData + bbsDataRegDate; + bbsDataRegDate = ""; + } + } + + jspWriter.write(""+bbsDataMiniMapData+""); + } + + jspWriter.write("\n"); + jspWriter.write(""); + jspWriter.write("\n"); + jspWriter.write(""); + jspWriter.write("\n"); + } + }else{ + + jspWriter.write("
  • "); + jspWriter.write("\n"); + + jspWriter.write(""); + + jspWriter.write("\n"); + jspWriter.write("
  • "); + } + + }else{ + + if(bbsDataMiniList.size() > 0){ + + for(int i=0; i"); + jspWriter.write("\n"); + + Map bbsDataMiniMap = bbsDataMiniList.get(i); + + jspWriter.write(""); + jspWriter.write("\n"); + + //new_icon.gif 나올지 안나올지 확인 + String bbsDataRegDate = SeedUtils.setReplaceNull(bbsDataMiniMap.get("_bbsDataRegDate").toString()); + + if(!bbsDataRegDate.equals("") && bbsDataRegDate.length() > 10){ + bbsDataRegDate = bbsDataRegDate.substring(0, 10); + } + + if(bbsDataRegDate.equals(toDate)){ + bbsDataRegDate = "<s:message code=' />"; + }else{ + bbsDataRegDate = ""; + } + + for(int j=0; j 10){ + bbsDataRegDateTmp = bbsDataRegDateTmp.substring(0, 10); + } + + bbsDataMiniMapData = bbsDataRegDateTmp; + + }else if(bbsItemGroupList.get(j).toString().equals("_bbsDataThumb")){ + String bbsDataThumb = SeedUtils.setReplaceNull(bbsDataMiniMap.get(bbsItemGroupList.get(j).toString())); + String fileChk = bbsDataThumb.substring(0, bbsDataThumb.indexOf("_") + 1); + + if(fileChk.equals(bbsSetIdx+"_")){ + bbsDataThumb = "/site/"+tBbsSetDB.gettSite().getSiteIdx()+"/upload/bbs/"+bbsSetIdx+"/thumb_"+bbsDataThumb; + } + bbsDataMiniMapData = ""+SeedUtils.setReplaceNull(bbsDataMiniMap.get("_bbsDataThumbText"))+""; + }else if(bbsItemGroupList.get(j).toString().equals("_bbsDataName")){ + if(SeedUtils.setReplaceNull(bbsDataMiniMap.get(bbsItemGroupList.get(j).toString())).equals("")){ + bbsDataMiniMapData = SeedUtils.setReplaceNull(bbsDataMiniMap.get("_memberName")); + }else{ + bbsDataMiniMapData = SeedUtils.setReplaceNull(bbsDataMiniMap.get(bbsItemGroupList.get(j).toString())); + } + }else{ + + bbsDataMiniMapData = SeedUtils.setReplaceNull(bbsDataMiniMap.get(bbsItemGroupList.get(j).toString())); + + if(bbsDataMiniMapData.length() > bbsItemMiniLengthList.get(j) && Integer.parseInt(bbsItemMiniLengthList.get(j).toString()) > 0){ + bbsDataMiniMapData = bbsDataMiniMapData.substring(0, bbsItemMiniLengthList.get(j)) + ".."; + } + + if(!bbsDataRegDate.equals("")){ + bbsDataMiniMapData = bbsDataMiniMapData + bbsDataRegDate; + bbsDataRegDate = ""; + } + } + + jspWriter.write(""+bbsDataMiniMapData+""); + } + + jspWriter.write("\n"); + jspWriter.write(""); + jspWriter.write("\n"); + jspWriter.write(""); + jspWriter.write("\n"); + } + }else{ + + jspWriter.write("
  • "); + jspWriter.write("\n"); + + jspWriter.write(""); + + jspWriter.write("\n"); + jspWriter.write("
  • "); + } + } + } + + jspWriter.flush(); + + SeedFtpType seedFtpType = new SeedFtpType(); + + //WEB 서버의 경로 + seedFtpType.setDestFilePath(siteIdx + "/jsp/bbs"); + //WAS 서버의 경로 + seedFtpType.setSrcFilePath(rootPath + "/" + siteIdx + "/jsp/bbs"); + //WAS 파일명 + seedFtpType.setFileName("bbs_" + bbsSetIdx+".jsp"); + //파일 전송 타입 regFile=파일전송, delFile=파일삭제 + seedFtpType.setFtpType("regFile"); + seedFtpType.setSeedFtp(); + + }catch(FileNotFoundException e){ + log.error("CHECK ERROR:",e); + }catch(IOException e){ + log.error("CHECK ERROR:",e); + }finally{ + if(jspWriter!=null){try{jspWriter.close();}catch(IOException e){log.error("CHECK ERROR:",e);}} + if(jspOutputStreamWriter!=null){try{jspOutputStreamWriter.close();}catch(IOException e){log.error("CHECK ERROR:",e);}} + if(jspFileOutputStream!=null){try{jspFileOutputStream.close();}catch(IOException e){log.error("CHECK ERROR:",e);}} + } + } + + public void setBbsFileDelMiniList(String siteIdx, Integer bbsSetIdx) { + + String filePath = rootPath + "/" + siteIdx + "/jsp/bbs"; + SeedUtils.setSeedDeleteFile(filePath + "/bbs_" + bbsSetIdx+".jsp"); + } + + private String getBrowser(HttpServletRequest request){ + String header = request.getHeader("User-Agent").toLowerCase(); + + if(header.indexOf("msie") > -1){ + return "MSIE"; + }else if(header.indexOf("trident/") > -1){ + return "MSIE"; + }else if(header.indexOf("chrome") > -1){ + return "Chrome"; + }else if(header.indexOf("opera") > -1){ + return "Opera"; + } + return "Firefox"; + } +} \ No newline at end of file diff --git a/src/main/resources/egovframework/sqlmap/config/mappers/trublend/trublend_sql.xml b/src/main/resources/egovframework/sqlmap/config/mappers/trublend/trublend_sql.xml new file mode 100644 index 00000000..9e002927 --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/config/mappers/trublend/trublend_sql.xml @@ -0,0 +1,820 @@ + + + + + + + SELECT * FROM + ( + SELECT ROW_.*, ROWNUM AS RNUM FROM + ( + + + + + ) ROW_ + ) + WHERE RNUM > #{pageStart} AND #{perPageNum} >= ROWNUM + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE C_MASTER + SET CASE_MEMO1 = #{caseMemo} + WHERE CASE_NO = #{caseNo} + + + + UPDATE C_MASTER + SET CASE_MEMO2 = #{caseMemo} + WHERE CASE_NO = #{caseNo} + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/manager/bbs/bbsSetEdit.jsp b/src/main/webapp/WEB-INF/jsp/manager/bbs/bbsSetEdit.jsp new file mode 100644 index 00000000..04ec8252 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/manager/bbs/bbsSetEdit.jsp @@ -0,0 +1,882 @@ +<%@ page contentType="text/html;charset=utf-8" %> +<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%> +<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> + + + + + <s:message code="manager.bbs.bbsSetEdit.title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    +
    + +
    +

    +
    +
    +
    +
    + + + + + + + + + + + +
    + + +
    +
    +

    +
    + +
    + + +
    +
    +
    + +
    +

    +
    + " value="" required /> +
    +
    + +
    +

    +
    + checked" name="bbsSetType" id="bbsSetTypeB" value="B" checked> + checked" name="bbsSetType" id="bbsSetTypeW" value="W" checked> + checked" name="bbsSetType" id="bbsSetTypeL" value="L" checked> + checked" name="bbsSetType" id="bbsSetTypeA" value="A" checked> + checked" name="bbsSetType" id="bbsSetTypeM" value="M" checked> + checked" name="bbsSetType" id="bbsSetTypeT" value="T" checked> + checked" name="bbsSetType" id="bbsSetTypeF" value="F" checked> + checked" name="bbsSetType" id="bbsSetTypeR" value="R" checked> + checked" name="bbsSetType" id="bbsSetTypeE" value="E" checked> +
    +
    + +
    +

    +
    + checked" name="bbsSetSubType" id="bbsSetSubTypeL" value="L" checked/> + checked" name="bbsSetSubType" id="bbsSetSubTypeI" value="I" checked/> + checked" name="bbsSetSubType" id="bbsSetSubTypeG" value="G" checked/> + +
    +
    + +
    +

    +
    + checked" name="bbsSetYoutube" id="bbsSetYoutube" value="Y" checked/> +
    +
    + +
    +

    +
    + + + , + + + + + +
    +
    + +
    +

    +
    +
    +   :   + / +     + + + / + + +
    +
    +   :   + / +     + + / + + +
    +
    +
    +   :   +     +
    +
    +
    +
    + +
    +

    +
    +

    : " required value='${tBbsSetDB.bbsSetFileSize}' /> Mbyte

    +

    : " required value='${tBbsSetDB.bbsSetFileCount}' />

    +
    +
    + +
    +

    +
    + " required value='${tBbsSetDB.bbsSetDataCookieTime}' /> +
    +
    + +
    +

    +
    + +
    +
    + +
    +

    +
    + checked" name="bbsSetCertify" id="bbsSetCertify" value="Y" checked/> +
    +
    + +
    +

    +
    + checked" name="bbsSetCategory" id="bbsSetCategory" value="Y" checked/>   + checked" name="bbsSetCategoryView" id="bbsSetCategoryView" value="Y" checked/> +
    +
    + +
    +

    +
    + checked" name="bbsSetEditor" id="bbsSetEditor" value="Y" checked/> +
    +
    + +
    +

    +
    + checked" name="bbsSetTrash" id="bbsSetTrash" value="Y" checked/> +
    +
    + +
    +

    +
    + checked" name="bbsSetBest" id="bbsSetBest" value="Y" checked/>   + +
    +
    + +
    +

    +
    + checked" name="bbsSetDateOrder" id="bbsSetDateOrder" value="Y" checked/> +
    +
    + +
    +

    +
    + checked" name="bbsSetReply" id="bbsSetReply" value="Y" checked/> +
    +
    + +
    +

    +
    + checked" name="bbsSetComment" id="bbsSetComment" value="Y" checked/> +
    +
    + +
    +

    +
    + checked" name="bbsSetNP" id="bbsSetNP" value="Y" checked/> +
    +
    + +
    +

    +
    + checked" name="bbsSetSecret" id="bbsSetSecret" value="Y" checked/> +
    +
    + +
    +

    +
    + checked" name="bbsSetMyData" id="bbsSetMyData" value="Y" checked/> +
    +
    + +
    +

    +
    +
    + checked" name="bbsSetPoint" id="bbsSetPoint" value="Y" checked/> +
    +
      :  " value='${tBbsSetDB.bbsSetPointWrite}' />  point
    +
          :  " value='${tBbsSetDB.bbsSetPointReply}' />  point
    +
      :  " value='${tBbsSetDB.bbsSetPointComment}' />  point
    +
    +
    + +
    +

    +
    + checked" name="bbsSetWaterMark" id="bbsSetWaterMark" value="Y" checked/> +
    +
    + +
    +

    +
    +
    + +
    + <c:out escapeXml='true' value='${tBbsSetDB.bbsSetWaterMarkImg}' /> +
    +
    +
    +
    + +
    +

    +
    + +
    + + +
    +
    +
    +
    +
    + + + + + + + + + +
    +
    +
    + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/manager/bbs/bbsSetForm.jsp b/src/main/webapp/WEB-INF/jsp/manager/bbs/bbsSetForm.jsp new file mode 100644 index 00000000..3b53f284 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/manager/bbs/bbsSetForm.jsp @@ -0,0 +1,778 @@ +<%@ page contentType="text/html;charset=utf-8" %> +<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%> +<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> + + + + + <s:message code="manager.bbs.bbsSetForm.title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +

    +
    + +
    +

    +
    +
    +
    +
    + + + + + + +
    + +
    + +
    +

    +
    + +
    + + +
    +
    +
    + +
    +

    +
    + " value="" required /> +
    +
    + +
    +

    +
    + + + + + + + + + +
    +
    + +
    +

    +
    + + + + +
    +
    + +
    +

    +
    + +
    +
    + +
    +

    +
    +
    +   :   + / +     + + + / + + +
    +
    +   :   + / +     + + / + + +
    +
    +
    +   :   +     +
    +
    +
    +
    + +
    +

    +
    +

    : " value="10" /> M byte

    +

    : " value="10" />

    +
    +
    + +
    +

    +
    + " required value="0" /> +
    +
    + +
    +

    +
    + +
    +
    + +
    +

    +
    + + +
    +
    + +
    +

    +
    + +    +
    +
    + +
    +

    +
    + + +
    +
    + +
    +

    +
    + +
    +
    + +
    +

    +
    +    + +
    +
    + +
    +

    +
    + +
    +
    + +
    +

    +
    + +
    +
    + +
    +

    +
    + +
    +
    + +
    +

    +
    + +
    +
    + +
    +

    +
    + +
    +
    + +
    +

    +
    + +
    +
    + +
    +

    +
    +
    + +
    +
      :  " value="0" />  point
    +
          :  " value="0" />  point
    +
      :  " value="0" />  point
    +
    +
    + +
    +

    +
    + +
    +
    + +
    +

    +
    + +
    +
    +
    +

    +
    + +
    + + +
    +
    +
    +
    + + +
    + + +
    +
    + +
    +
    + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/manager/bbs/bbsSetList.jsp b/src/main/webapp/WEB-INF/jsp/manager/bbs/bbsSetList.jsp new file mode 100644 index 00000000..19b12dd0 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/manager/bbs/bbsSetList.jsp @@ -0,0 +1,292 @@ +<%@ page contentType="text/html;charset=utf-8" %> +<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%> +<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> + + + + + <s:message code="manager.bbs.bbsSetList.title"/> + + + + + + +
    + + +
    +
    +

    +
    + +
    +

    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + +
    + 검색 폼 + + " class="sch-text"> + +
    +
    +
    +
    + + + + + + + + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    " />  /gtm//menu//bbsSetList.do?page=&row=&orderColumn=bbsSetName&order=ASC&column=&search=&siteMenuIdx=&menuCode=">" width="7" height="10" alt="" /> /gtm//menu//bbsSetList.do?page=&row=&orderColumn=bbsSetName&order=DESC&column=&search=&siteMenuIdx=&menuCode=">" width="7" height="10" alt="" />  /gtm//menu//bbsSetList.do?page=&row=&orderColumn=bbsSetType&order=ASC&column=&search=&siteMenuIdx=&menuCode=">" width="7" height="10" alt="" /> /gtm//menu//bbsSetList.do?page=&row=&orderColumn=bbsSetType&order=DESC&column=&search=&siteMenuIdx=&menuCode=">" width="7" height="10" alt="" />  /gtm//menu//bbsSetList.do?page=&row=&orderColumn=tMember.memberName&order=ASC&column=&search=&siteMenuIdx=&menuCode=">" width="7" height="10" alt="" /> /gtm//menu//bbsSetList.do?page=&row=&orderColumn=tMember.memberName&order=DESC&column=&search=&siteMenuIdx=&menuCode=">" width="7" height="10" alt="" />  /gtm//menu//bbsSetList.do?page=&row=&orderColumn=bbsSetRegDate&order=ASC&column=&search=&siteMenuIdx=&menuCode=">" width="7" height="10" alt="" /> /gtm//menu//bbsSetList.do?page=&row=&orderColumn=bbsSetRegDate&order=DESC&column=&search=&siteMenuIdx=&menuCode=">" width="7" height="10" alt="" />  /gtm//menu//bbsSetList.do?page=&row=&orderColumn=bbsSetStatus&order=ASC&column=&search=&siteMenuIdx=&menuCode=">" width="7" height="10" alt="" /> /gtm//menu//bbsSetList.do?page=&row=&orderColumn=bbsSetStatus&order=DESC&column=&search=&siteMenuIdx=&menuCode=">" width="7" height="10" alt="" />
    <%-- ${bbsSetListCnt - (page-1)*row - status.index} --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + () + +
    +
    + + +
    + + + +
    +
    + +
    + +
    + + + + +
    + + +
    +
    + + + + +
    +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/manager/layout/layout.jsp b/src/main/webapp/WEB-INF/jsp/manager/layout/layout.jsp new file mode 100644 index 00000000..99e51d17 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/manager/layout/layout.jsp @@ -0,0 +1,14 @@ +<%@ page contentType="text/html;charset=utf-8" %> +<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/seed/_extra/gtm/trublend/trublendList.jsp b/src/main/webapp/WEB-INF/jsp/seed/_extra/gtm/trublend/trublendList.jsp new file mode 100644 index 00000000..712c2403 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/seed/_extra/gtm/trublend/trublendList.jsp @@ -0,0 +1,366 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> + + + + + + + + + + + + + + + + + +
    +
    +

    종료사건 조회

    +
    + +
    +
    + +
    +

    종료사건 조회 화면 입니다.

    +
    +
    +
    +
    +
    + + + + + + + +
    +
    +
    + ~ +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    분쟁사건에 대한 처리관리 목록화면 입니다.
    사건번호종료회차당사자 +
      +
    • 신청인
    • +
    • 피신청인
    • +
    +
    처리결과 +
      +
    • 대분류
    • +
    • 중분류
    • +
    +
    접수일자협의회 의결일담당자기간연장여부
    ${list.caseNo}${list.conferenceNames} +
      +
    • + + + + + + ( 대표) + + + + + + (대표이사 ) + + + + + + + +
    • +
    • + + + + + + ( 대표) + + + + + + (대표이사 ) + + + + + + + +
    • +
    +
    +
      +
    • ${list.mediationBig}
    • +
    • ${list.mediationSmall}
    • +
    +
    ${list.caseDate}${list.fixDay }${list.caseExaminerName}연장N
    +
    +
    + + +
    +
    + + + + + +
    +
    + + + +
    \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/seed/_extra/gtm/trublend/trublendView.jsp b/src/main/webapp/WEB-INF/jsp/seed/_extra/gtm/trublend/trublendView.jsp new file mode 100644 index 00000000..d06e424d --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/seed/_extra/gtm/trublend/trublendView.jsp @@ -0,0 +1,3162 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + + + +
    + +
    +

    종료사건 조회

    +
    + +
    + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    사건번호 + + ( 접수. 일 경과) +
    신청인 + + + + + + + + ( 대표) + + + + + + (대표이사 ) + + + + () + + + + + +
    피신청인 + + + + + + + + ( 대표) + + + + + + (대표이사 ) + + + + + + +
    신청인 조회 비밀번호 + +
    피신청인 조회 비밀번호 + +
    +
    + +

    +
    +
    +

    조정유형

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    신청사유

    +
    + 01. +
    02.
    +
    03.
    +
    +
    +
    +

    문서접수구분

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    문서접수경로

    +
    +
    +
    + + + + , + + + , + +
    +
    +
    +
    +
    + +

    협의회 결과

    +
    +
    +
    +

    협의회 결과

    +
    + + . + (, ) +

    +
    +
    +
    +
    +
    + +

    분쟁조정 처리기간

    +
    +
    +
    +

    신청인 보완요청일

    +
    + +
    +

    신청인 제출일

    +
    + +
    +

    신청인 보완기간

    +
    + +
    +
    +
    +
    +
    +

    답변요청일

    +
    + +
    +

    피신청인
    답변서 제출일

    +
    + +
    +

    답변서 제출기간

    +
    + +
    +
    +
    +
    +
    +

    조정종료일

    +
    + +
    +

    처리기간

    +
    + +
    +
    +
    +
    +

    조정신청내역

    +
    +
    +
    +

    조정결과

    +
    + 소분류:
    + 대분류: +
    +
    +
    +

    경제적 성과

    +
    + 신청금액 : + + / 조정금액 : + +
    +
    +
    +

    인지대

    +
    + +
    +
    +
    +

    송달료

    +
    + +
    +
    +
    +

    변호사수임료

    +
    + +
    +
    +
    +

    소송비용

    +
    + +
    +
    +
    +

    성과금액

    +
    + +
    +
    +
    +

    합의서 및
    종료요청서

    + +
    + + + + +
    /trublend/trublendMemoUpdate.do" method="post"> + + + "/> + +
    +

    메모

    +
    + +
    +
    +
    + +
    +
    +
    +
    + +

    분쟁정보

    +
    +
    +
    +

    신청취지

    +
    + +
    +
    +
    +

    신청이유

    +
    + +
    +
    +
    +

    신청인 사건문서첨부

    + +
    +
    +

    조사관 사건문서첨부(신청인)

    + +
    +
    +

    피신청인 사건문서첨부

    + +
    +
    +

    조사관 사건문서첨부
    (피신청인)

    + +
    +
    +
    + +

    조정절차 관련 공문서

    +
    +
    +
    +

    접수사실 통지 및 신청서 보완요구

    + +
    +
    +

    사실관계의 확인을 위한 출석요구

    + +
    +
    +

    조정안에 대한 수락여부 조회

    + +
    + + + + + + + + + + + + + + +
    +

    조정절차 종료사실 통지

    + <%-- --%> +
    + +
    + + +
    + +
    + + + +
    +
    +
    +
    +
    +
    +
    +

    조정안 수락/불수락 통지서

    +
    +
    +
    +

    조정안 수락 통지서

    + +
    +
    +

    조정안 불수락 통지서

    + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    주요 재무현황자본금 + + 자산총액 + +
    총매출액 + + 영업이익 + +
    사건 확인사항최초 계약체결일 + +
    계약기간 + + ~ + +
    계약서 사본 + +
    신청인담당자 인적사항성함 + + 전화번호 + +
    휴대폰 + + FAX + +
    부서/직위 + + E-mail + +
    피신청인 담당자 인적사항성함 + + 전화번호 + +
    휴대폰 + + FAX + +
    부서/직위 + + E-mail + +
    기타 확인사항소송 + 미진행 + 진행 + + +
    타 협의회 조정 + 미진행 + 진행 + + +
    중재 + 미진행 + 진행 + + +
    타 조정기구 조정 + 미진행 + 진행 + + +
    공정거래위원회 조사 + 미진행 + 진행 + + +
    +
    +
    + +
    + +
    +
    +
    신청인 기입사항
    +
    +
    + + +
    + +
    +
    +

    상호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    대표자

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    개인/법인

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    우편번호

    +
    +
    + +
    +
    +
    +
    +

    지번주소

    +
    +
    + +
    +
    + +
    +
    +
    +
    +

    도로명주소

    +
    +
    + +
    +
    + +
    +
    +
    +
    +

    대표 전화번호(휴대폰)

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    FAX번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    사업자등록번호('-')제외

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    법인등록번호('-')제외

    +
    +
    +
    + +
    +
    +
    +
    +
    +
    기업 Overview(NICE KPI)
    +
    +
    +

    기업명(기업코드)

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    대표자명

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    설립일자/상장일자

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    사업자번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    법인번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    기업형태

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    업종

    +
    +
    + +
    +
    +
    +
    +

    그룹명

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    종업원수

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    주요상품

    +
    +
    + +
    +
    +
    +
    +

    전화번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    우편번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    지번주소

    +
    +
    + +
    +
    +
    +
    +

    도로명주소

    +
    +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    경영진현황
    NO직위성명
    1
    2
    3
    4
    5
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    관계회사 현황
    NO기업명대표자지분율
    1
    2
    3
    4
    5
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    주요 KPI
    년도감사의견자산총계부채총계매출액영업이익영엽이익률순이익률
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    신청인 대리인 기입사항
    +
    +
    + + +
    + + +
    +
    +

    상호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    담당변호사

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    우편번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    지번주소

    +
    +
    + +
    +
    + +
    +
    +
    +
    +

    도로명주소

    +
    +
    + +
    +
    + +
    +
    +
    +
    +

    휴대폰번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    전화번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    이메일

    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + + +
    +
    +
    피신청인 기입사항
    +
    +
    + + +
    + +
    +
    +

    상호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    대표자

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    개인/법인

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    우편번호

    +
    +
    + +
    +
    +
    +
    +

    지번주소

    +
    +
    + +
    +
    + +
    +
    +
    +
    +

    도로명주소

    +
    +
    + +
    +
    + +
    +
    +
    +
    +

    대표 전화번호(휴대폰)

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    FAX번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    사업자등록번호('-')제외

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    법인등록번호('-')제외

    +
    +
    +
    + +
    +
    +
    +
    +
    +
    기업 Overview(NICE KPI)
    +
    +
    +

    기업명(기업코드)

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    대표자명

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    설립일자/상장일자

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    사업자번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    법인번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    기업형태

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    업종

    +
    +
    + +
    +
    +
    +
    +

    그룹명

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    종업원수

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    주요상품

    +
    +
    + +
    +
    +
    +
    +

    전화번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    우편번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    지번주소

    +
    +
    + +
    +
    +
    +
    +

    도로명주소

    +
    +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    경영진현황
    NO직위성명
    1
    2
    3
    4
    5
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    관계회사 현황
    NO기업명대표자지분율
    1
    2
    3
    4
    5
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    주요 KPI
    년도감사의견자산총계부채총계매출액영업이익영엽이익률순이익률
    +
    +
    +
    +
    +
    + +
    +
    + + +
    +
    +
    피신청인 대리인 기입사항
    +
    +
    + + +
    + + +
    +
    +

    상호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    담당변호사

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    우편번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    지번주소

    +
    +
    + +
    +
    + +
    +
    +
    +
    +

    도로명주소

    +
    +
    + +
    +
    + +
    +
    +
    +
    +

    휴대폰번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    전화번호

    +
    +
    +
    + +
    +
    +
    +
    +
    +

    이메일

    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +

    협의회별 상세 현황

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    하도급 분야상시종업원수
    (단위:명)
    + + 대/중소기업 구분 + +
    공사업등록여부 + 등록 + 미등록 + 시공능력 평가액 + +
    +
    +
    +

    하도급대금 내역 (신청인)

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    목적물인도(수)
    (기성청구서상)
    하도급대금수령(지급)비고
    구분일자금액현금어음총액미지급
    일자금액지급일만기일금액
    + +
    + +
    소계:
    +
    +
    +

    도급대금 내역 (피신청인)

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    목적물인도
    (기성청구서상)
    도급대금수령비고
    구분일자금액현금어음총액미지급
    일자금액지급일만기일금액
    + 구분: +
    + +
    소계:
    +
    +
    +
    + + +

    협의회별 상세 현황

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    가맹 분야현 가맹점수
    (단위:개)
    + + 업종 + +
    브랜드 명 + + 정보공개서
    등록여부
    + 등록 + 미등록 +
    가맹금예치제
    실시여부
    + 실시 + 미실시 + 신청인 가맹점명 + +
    계약기간 + + ~ + +
    계약체결일정보공개서 제공일
    가맹금액가맹금 수령일
    가맹금 예치여부 + 예치 + 미예치 + 가맹금 예치기관
    +
    +

    * 우편용 신청서 참조, 가맹본부(피신청인)만 해당

    +
    +
    + + +

    협의회별 상세 현황

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    유통 분야상시고용
    종업원수
    (단위:명)
    + + 시장점유율
    (단위:%)
    + + 소매업 사용
    점포의 총 면적
    + +
    소매업종 매출액 + + 공정위 시정조치 사실 + +
    +
    +

    * 우편용 신청서 참조, 대규모유통업자(피신청인)만 해당

    +
    +
    + +
    /trublend/trublendMemoUpdate.do" method="post"> + + + "/> + +

    분쟁사건 종료 후속 결과 등

    +
    +
    +

    후속결과(취하사유, 이행현황 등)

    +
    + +
    +
    +
    +
    + +
    +
    + +
    + +
    + +
    + +
    + + +
    + +
    +
    diff --git a/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/WNCollection.jsp b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/WNCollection.jsp new file mode 100644 index 00000000..05df4db3 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/WNCollection.jsp @@ -0,0 +1,196 @@ +<%@ page pageEncoding = "UTF-8" %> +<%@ include file="./api/WNDefine.jsp" %> +<%! + + static String SEARCH_IP="211.245.106.116"; + static int SEARCH_PORT=7000; + static String MANAGER_IP="211.245.106.11"; + static int MANAGER_PORT=7800; + + public String[] COLLECTIONS = new String[]{"process","conference","application","completed","board","counsel"}; + public String[] COLLECTIONS_NAME = new String[]{"process","conference","application","completed","board","counsel"}; + public String[] MERGE_COLLECTIONS = new String[]{""}; + public class WNCollection{ + public String[][] MERGE_COLLECTION_INFO = null; + public String[][] COLLECTION_INFO = null; + WNCollection(){ + COLLECTION_INFO = new String[][] + { + { + "process", // set index name + "process", // set collection name + "0,3", // set pageinfo (start,count) + "1,0,0,0,0", // set query analyzer (useKMA,isCase,useOriginal,useSynonym, duplcated detection) + "RANK/DESC,DATE/DESC", // set sort field (field,order) multi sort '/' + "basic,rpmol,100", // set sort field (field,order) multi sort '/' + "DOCID/150,APPLCNT_COMPANY/120,RESPONDENT_COMPANY/120,COMPANY_CEO/120,RESPONDENT_CEO/120,MEDIATION_BIG/100,MEDIATION_SMALL/90,APPLICATION_OBJ/80,ROAD_ADDR,DOC_CHECK/70,FILE_NAME/60,ATTACH/50,KPI_ASSETS1/40",// set search field + "DOCID,DATE,CASE_GUBUN,GUBUN_NM,EXAMINER_NM,STATE_NM,STATE_NEXT,MEDIATION_BIG,MEDIATION_SMALL,CASE_DATE,PRO_DATE,TERM_CHECK,TIMHDER_ASSIGN,FILE_NAME,ATTACH,CASE_NO,COMPANY_CEO,APPLCNT_COMPANY,RESPONDENT_CEO,RESPONDENT_COMPANY,CONTACT_HP,P_CONTACT_HP,APPLICATION_OBJ,ROAD_ADDR,DOC_CHECK,KPI_ASSETS1,ALIAS",// set document field + "", // set date range + "", // set rank range + "", // set prefix query, example: |/1, (fieldname:contains:value) and ' ', or '|', not '!' / operator (AND:1, OR:0) + "", // set collection query (/option...) and ' ', or '|' + "", // set boost query ( | ...) and ' ', or '|' + "", // set filter operation () + "", // set groupby field(field, count) + "", // set sort field group(field/order,field/order,...) + "", // set categoryBoost(fieldname,matchType,boostID,boostKeyword) + "", // set categoryGroupBy (fieldname:value) + "", // set categoryQuery (fieldname:value) + "", // set property group (fieldname,min,max, groupcount) + "TIMHDER_ASSIGN", // use check prefix query filed + "TIMHDER_ASSIGN", // set use check fast access field + "", // set multigroupby field + "", // set auth query (Auth Target Field, Auth Collection, Auth Reference Field, Authority Query) + "", // set Duplicate Detection Criterion Field, RANK/DESC,DATE/DESC + "사건처리관리" // collection display name + } + , + { + "conference", // set index name + "conference", // set collection name + "0,3", // set pageinfo (start,count) + "1,0,0,0,0", // set query analyzer (useKMA,isCase,useOriginal,useSynonym, duplcated detection) + "RANK/DESC,DATE/DESC", // set sort field (field,order) multi sort '/' + "basic,rpmol,100", // set sort field (field,order) multi sort '/' + "APPLCNT_COMPANY/120,RESPONDENT_COMPANY/120,COMPANY_CEO/120,RESPONDENT_CEO/120,MEDIATION_BIG/100,MEDIATION_SMALL/90,APPLICATION_OBJ/80,ROAD_ADDR1/70,MEMBER_NAME/60,PLACE,CASE_NO/150,FILE_NAME/50,TITLE",// set search field + "DOCID,DATE,CASE_GUBUN,STATE_PRO,TITLE,MEMBER_NAME,REPORT,CONSIDERATION,FIX_DAY,PLACE,CON_DIVISION,STATE_PRO_NM,CASE_EXAMINER_NM,FILE_NAME,ATTACH,CFRNC_NO,APPLCNT_COMPANY,RESPONDENT_COMPANY,COMPANY_CEO,RESPONDENT_CEO,CONTACT_HP,P_CONTACT_HP,APPLICATION_OBJ,ROAD_ADDR1,MEDIATION_BIG,MEDIATION_SMALL,CASE_NO,ALIAS",// set document field + "", // set date range + "", // set rank range + "", // set prefix query, example: |/1, (fieldname:contains:value) and ' ', or '|', not '!' / operator (AND:1, OR:0) + "", // set collection query (/option...) and ' ', or '|' + "", // set boost query ( | ...) and ' ', or '|' + "", // set filter operation () + "", // set groupby field(field, count) + "", // set sort field group(field/order,field/order,...) + "", // set categoryBoost(fieldname,matchType,boostID,boostKeyword) + "", // set categoryGroupBy (fieldname:value) + "", // set categoryQuery (fieldname:value) + "", // set property group (fieldname,min,max, groupcount) + "CASE_GUBUN", // use check prefix query filed + "CASE_GUBUN", // set use check fast access field + "", // set multigroupby field + "", // set auth query (Auth Target Field, Auth Collection, Auth Reference Field, Authority Query) + "", // set Duplicate Detection Criterion Field, RANK/DESC,DATE/DESC + "협의회관리" // collection display name + } + , + { + "application", // set index name + "application", // set collection name + "0,3", // set pageinfo (start,count) + "1,0,0,0,0", // set query analyzer (useKMA,isCase,useOriginal,useSynonym, duplcated detection) + "RANK/DESC,DATE/DESC", // set sort field (field,order) multi sort '/' + "basic,rpmol,100", // set sort field (field,order) multi sort '/' + "COMPANY_CEO/100,APPLCNT_COMPANY/150,RESPONDENT_CEO/100,RESPONDENT_COMPANY/150,MEMBER_NAME/80,FILE_NAME/70,ATTACH/60",// set search field + "DOCID,COMPANY_CEO,APPLCNT_COMPANY,RESPONDENT_CEO,RESPONDENT_COMPANY,DATE,CASE_GUBUN,MEMBER_NAME,FILE_NAME,ATTACH,RCEPT_NO,CONTACT_HP,P_CONTACT_HP,APPLICATION_OBJ,ROAD_ADDR,DOC_CHECK,ALIAS",// set document field + "", // set date range + "", // set rank range + "", // set prefix query, example: |/1, (fieldname:contains:value) and ' ', or '|', not '!' / operator (AND:1, OR:0) + "", // set collection query (/option...) and ' ', or '|' + "", // set boost query ( | ...) and ' ', or '|' + "", // set filter operation () + "", // set groupby field(field, count) + "", // set sort field group(field/order,field/order,...) + "", // set categoryBoost(fieldname,matchType,boostID,boostKeyword) + "", // set categoryGroupBy (fieldname:value) + "", // set categoryQuery (fieldname:value) + "", // set property group (fieldname,min,max, groupcount) + "CASE_GUBUN", // use check prefix query filed + "CASE_GUBUN", // set use check fast access field + "", // set multigroupby field + "", // set auth query (Auth Target Field, Auth Collection, Auth Reference Field, Authority Query) + "", // set Duplicate Detection Criterion Field, RANK/DESC,DATE/DESC + "신청관리" // collection display name + } + , + { + "completed", // set index name + "completed", // set collection name + "0,3", // set pageinfo (start,count) + "1,0,0,0,0", // set query analyzer (useKMA,isCase,useOriginal,useSynonym, duplcated detection) + "RANK/DESC,DATE/DESC", // set sort field (field,order) multi sort '/' + "basic,rpmol,100", // set sort field (field,order) multi sort '/' + "DOCID/150,APPLCNT_COMPANY/120,RESPONDENT_COMPANY/120,COMPANY_CEO/120,RESPONDENT_CEO/120,MEDIATION_BIG/90,MEDIATION_SMALL/90,APPLICATION_OBJ/80,ROAD_ADDR/70,KPI_ASSETS/60,FILE_NAME/50",// set search field + "DOCID,DATE,CASE_GUBUN,GUBUN_NM,EXAMINER_NM,MEDIATION_BIG,MEDIATION_SMALL,CASE_DATE,CASE_NO,COMPANY_CEO,APPLCNT_COMPANY,RESPONDENT_CEO,RESPONDENT_COMPANY,CONTACT_HP,P_CONTACT_HP,APPLICATION_OBJ,ROAD_ADDR,KPI_ASSETS,CONFERENCE_NAMES,FILE_NAME,ATTACH,FIX_DAY,ALIAS",// set document field + "", // set date range + "", // set rank range + "", // set prefix query, example: |/1, (fieldname:contains:value) and ' ', or '|', not '!' / operator (AND:1, OR:0) + "", // set collection query (/option...) and ' ', or '|' + "", // set boost query ( | ...) and ' ', or '|' + "", // set filter operation () + "", // set groupby field(field, count) + "", // set sort field group(field/order,field/order,...) + "", // set categoryBoost(fieldname,matchType,boostID,boostKeyword) + "", // set categoryGroupBy (fieldname:value) + "", // set categoryQuery (fieldname:value) + "", // set property group (fieldname,min,max, groupcount) + "CASE_GUBUN", // use check prefix query filed + "CASE_GUBUN", // set use check fast access field + "", // set multigroupby field + "", // set auth query (Auth Target Field, Auth Collection, Auth Reference Field, Authority Query) + "", // set Duplicate Detection Criterion Field, RANK/DESC,DATE/DESC + "사건종료관리" // collection display name + } + , + { + "board", // set index name + "board", // set collection name + "0,3", // set pageinfo (start,count) + "1,0,0,0,0", // set query analyzer (useKMA,isCase,useOriginal,useSynonym, duplcated detection) + "RANK/DESC,DATE/DESC", // set sort field (field,order) multi sort '/' + "basic,rpmol,100", // set sort field (field,order) multi sort '/' + "TITLE/100,CONTENT,REGID/80,DATE,FILE_NAME",// set search field + "DOCID,TITLE,CONTENT,REGID,DATE,TEAM_NO,FILE_NAME,ATTACH,TEAM_GUBUN,ALIAS",// set document field + "", // set date range + "", // set rank range + "", // set prefix query, example: |/1, (fieldname:contains:value) and ' ', or '|', not '!' / operator (AND:1, OR:0) + "", // set collection query (/option...) and ' ', or '|' + "", // set boost query ( | ...) and ' ', or '|' + "", // set filter operation () + "", // set groupby field(field, count) + "", // set sort field group(field/order,field/order,...) + "", // set categoryBoost(fieldname,matchType,boostID,boostKeyword) + "", // set categoryGroupBy (fieldname:value) + "", // set categoryQuery (fieldname:value) + "", // set property group (fieldname,min,max, groupcount) + "TEAM_GUBUN", // use check prefix query filed + "TEAM_GUBUN", // set use check fast access field + "", // set multigroupby field + "", // set auth query (Auth Target Field, Auth Collection, Auth Reference Field, Authority Query) + "", // set Duplicate Detection Criterion Field, RANK/DESC,DATE/DESC + "게시판" // collection display name + } + , + { + "counsel", // set index name + "counsel", // set collection name + "0,3", // set pageinfo (start,count) + "1,0,0,0,0", // set query analyzer (useKMA,isCase,useOriginal,useSynonym, duplcated detection) + "RANK/DESC,DATE/DESC", // set sort field (field,order) multi sort '/' + "basic,rpmol,100", // set sort field (field,order) multi sort '/' + "APPLCNT_NM/100,MANAGER_NM/80,CIVIL_TYPE/60,NOTICE_TYPE/50,FILE_NAME",// set search field + "DOCID,APPLCNT_NM,MEDIATION_TYPE,TITLE,DATE,MANAGER_NM,NOTICE_DATE,COUNSEL_STATE,ATTACH,FILE_NAME,COUNSEL_SEQ,CIVIL_TYPE,NOTICE_TYPE,ALIAS",// set document field + "", // set date range + "", // set rank range + "", // set prefix query, example: |/1, (fieldname:contains:value) and ' ', or '|', not '!' / operator (AND:1, OR:0) + "", // set collection query (/option...) and ' ', or '|' + "", // set boost query ( | ...) and ' ', or '|' + "", // set filter operation () + "", // set groupby field(field, count) + "", // set sort field group(field/order,field/order,...) + "", // set categoryBoost(fieldname,matchType,boostID,boostKeyword) + "", // set categoryGroupBy (fieldname:value) + "", // set categoryQuery (fieldname:value) + "", // set property group (fieldname,min,max, groupcount) + "COUNSEL_SEQ", // use check prefix query filed + "COUNSEL_SEQ", // set use check fast access field + "", // set multigroupby field + "", // set auth query (Auth Target Field, Auth Collection, Auth Reference Field, Authority Query) + "", // set Duplicate Detection Criterion Field, RANK/DESC,DATE/DESC + "상담관리" // collection display name + } + + }; + } + } +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/api/WNAnchor.jsp b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/api/WNAnchor.jsp new file mode 100644 index 00000000..a9053e60 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/api/WNAnchor.jsp @@ -0,0 +1,117 @@ +<%! +/** +* file: WNAnchor.jsp +* subject: 페이징 처리를 하기 위한 정보처리클래스 +* ------------------------------------------------------------------------ +* @original author: WISEnut +* @edit author:WISEnut +* @update date 2012.02.03 +* ------------------------------------------------------------------------ +*/ + public class WNAnchor { + private int m_before = -1; + private int m_next = -1; + private int m_bundleBefore = -1; + private int m_bundleNext = -1; + private int m_firstPage = -1; + private int m_lastPage = -1; + private int m_totalPgCount = 0; + private int m_totlalBundlePgCount = 0; + private int m_pageCount = 0; + private int m_curPageNumber = 1; + private String[][] m_pages = new String[1][2]; + + public WNAnchor() { + m_pages[0][0] = "1"; + m_pages[0][1] = "-1"; + } + + public int getBefore() { + return m_before; + } + + public void setBefore(int before) { + m_before = before; + } + + public int getFirstPage() { + return m_firstPage; + } + + public void setFirstPage(int firstPage) { + m_firstPage = firstPage; + } + + public int getLastPage() { + return m_lastPage; + } + + public void setLastPage(int lastPage) { + m_lastPage = lastPage; + } + + public int getNext() { + return m_next; + } + + public void setNext(int next) { + m_next = next; + } + + public int getBundleBefore() { + return m_bundleBefore; + } + + public void setBundleBefore(int bundleBefore) { + m_bundleBefore = bundleBefore; + } + + public int getBundleNext() { + return m_bundleNext; + } + + public void setBundleNext(int bundleNext) { + m_bundleNext = bundleNext; + } + + public int getTotalPgCount() { + return m_totalPgCount; + } + + public void setTotalPgCount(int totalPgCount) { + m_totalPgCount = totalPgCount; + } + + public int getTotlalBundlePgCount() { + return m_totlalBundlePgCount; + } + + public void setTotlalBundlePgCount(int totlalBundlePgCount) { + m_totlalBundlePgCount = totlalBundlePgCount; + } + + public int getPageCount() { + return m_pageCount; + } + + public void setPageCount(int pageCount) { + m_pageCount = pageCount; + } + + public int getCurPageNumber() { + return m_curPageNumber; + } + + public void setCurPageNumber(int curPageNumber) { + m_curPageNumber = curPageNumber; + } + + public String[][] getPages() { + return m_pages; + } + + public void setPages(String[][] pages) { + m_pages = pages; + } + } +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/api/WNCommon.jsp b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/api/WNCommon.jsp new file mode 100644 index 00000000..6a7d7849 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/api/WNCommon.jsp @@ -0,0 +1,1486 @@ +<%@ page import="java.util.*,java.io.IOException,javax.servlet.jsp.JspWriter,QueryAPI530.Search"%><%@ include file="./WNUtils.jsp"%><%! +/** +* file: WNCommon.jsp +* subject: Search Formula-1 API Wrapper 클래스 +* ------------------------------------------------------------------------ +* @original author: WISEnut +* @edit author: WISEnut +* @update date 2012.04.24 +* ------------------------------------------------------------------------ +*/ +public class WNCommon { + private Search search = null; + private JspWriter out = null; + boolean isDebug = false; + + /** + * SF-1 Search 클래스 객체를 생성하는 WNCommon의 생성자 함수이다. + */ + public WNCommon() { + this.search = new Search(); + } + + /** + * WNCommon 오버로딩(overloading) 함수이다. + * WNCommon을 단독으로 사용할 경우 debug 사용유무를 지정할 수 있다. + * @param out + * @param isDubug + */ + public WNCommon(JspWriter out, boolean isDubug) { + this.search = new Search(); + this.out = out; + this.isDebug = isDubug; + } + + /** + * 검색 질의 키워드와 질의나 출력에 사용될 문자집합을 정한다. + * v4.x 호환 method이므로 COMMON_OR_WHEN_NORESULT을 지정하지 않는다. + * @param query + * @param charSet + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + * @deprecated As of v4.x, replaced by + * {@link #setCommonQuery(String,String,int)} + */ + public int setCommonQuery(String query, String charSet) { + int ret = 0; + ret = search.w3SetCodePage(charSet); + ret = search.w3SetQueryLog(1); + ret = search.w3SetTraceLog(0); + ret = search.w3SetCommonQuery(query, 0); + return ret; + } + + /** + * 검색 질의 UID와 질의나 출력에 사용될 문자집합을 정한다. + * @param charSet + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setUidQuery(String charSet) { + int ret = 0; + ret = search.w3SetCodePage(charSet); + ret = search.w3SetQueryLog(0); + return ret; + } + + /** + * 검색 질의 키워드와 질의나 출력에 사용될 문자집합을 정한다. + * @param query + * @param charSet + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setCommonQuery(String query, String charSet, int useOrResult, boolean useSuggestedQuery) { + int ret = 0; + ret = search.w3SetCodePage(charSet); + ret = search.w3SetQueryLog(1); + ret = search.w3SetTraceLog(0); + ret = search.w3SetCommonQuery(query, useOrResult); + if(useSuggestedQuery) { + ret = search.w3SetSpellCorrectionQuery(query, 0); + } + return ret; + } + + /** + * setCommonQuery의 오버로딩(overloading) 함수로 + * session정보를 부가기능으로 사용할 수 있다. + * v4.x 호환 method이므로 COMMON_OR_WHEN_NORESULT을 지정하지 않는다. + * @param query + * @param charSet + * @param logInfo + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + * @deprecated As of v4.x, replaced by + * {@link #setCommonQuery(String,String,String[],int)} + */ + public int setCommonQuery(String query, String charSet, String[] logInfo) { + int ret = 0; + if (logInfo != null && logInfo.length > 2) { + ret = search.w3SetSessionInfo(logInfo[0], logInfo[1], logInfo[2]); + } + setCommonQuery(query, charSet); + return ret; + } + + + /** + * setCommonQuery의 오버로딩(overloading) 함수로 + * session정보를 부가기능으로 사용할 수 있다. + * @param query + * @param charSet + * @param logInfo + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setCommonQuery(String query, String charSet, int useOrResult, String[] logInfo) { + int ret = 0; + if (logInfo != null && logInfo.length > 2) { + ret = search.w3SetSessionInfo(logInfo[0], logInfo[1], logInfo[2]); + } + ret = search.w3SetCodePage(charSet); + ret = search.w3SetQueryLog(1); + ret = search.w3SetCommonQuery(query, useOrResult); + return ret; + } + + /** + * setCommonQuery의 오버로딩(overloading) 함수로 + * session정보를 부가기능으로 사용할 수 있다. + * @param query + * @param charSet + * @param logInfo + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setCommonQuery(String query, String charSet, int useOrResult, boolean useSuggestedQuery, String[] logInfo) { + int ret = 0; + if (logInfo != null && logInfo.length > 2) { + ret = search.w3SetSessionInfo(logInfo[0], logInfo[1], logInfo[2]); + } + ret = search.w3SetCodePage(charSet); + ret = search.w3SetQueryLog(1); + ret = search.w3SetCommonQuery(query, useOrResult); + if(useSuggestedQuery) { + ret = search.w3SetSpellCorrectionQuery(query, 0); + } + return ret; + } + + /** + * 컬렉션 별로 검색어 지정 + * @param collectionName + * @param query + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setCollectionQuery(String collectionName, String query) { + return search.w3SetCollectionQuery(collectionName, query); + } + + + /** + * 컬렉션 별로 boost query 지정 + * @param collectionName + * @param boost query + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setBoostQuery(String collectionName, String query) { + int idx = query.lastIndexOf("/"); + int option = Integer.parseInt(query.substring(idx, query.length())); + return search.w3SetBoostQuery(collectionName, query, option); + } + + /** + * 컬렉션 별로 boost query 지정 + * @param collectionName + * @param boost query + * @param option 0,1,2 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setBoostQuery(String collectionName, String query, int option) { + return search.w3SetBoostQuery(collectionName, query, option); + } + + /** + * 검색하고자 하는 컬렉션의 UID를 설정한다. + * @param collectionName + * @param values + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setUid(String collectionName, String[] values, + String searcherId) { + int ret = 0; + for (int i = 0; i < values.length; i++) { + long uid = 0L; + try { + uid = Long.parseLong(values[i]); + } catch (NumberFormatException e) { + return -1; + } + ret = search.w3AddUid(collectionName, uid, searcherId); + } + return ret; + } + + /** + * 검색대상 컬렉션, 언어분석기 사용유무, 대소문자 구분유무를 설정한다. + * v4.x 호환 method이므로 USEORIGINAL, USESYNONYM을 지정하지 않는다. + * @param collectionName + * @param useKma + * @param isCase + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + * @deprecated As of v4.5, replaced by + * {@link #addCollection(String,int,int,int,int,int)} + */ + public int addCollection(String collectionName, int useKma, int isCase) { + int ret = 0; + ret = search.w3AddCollection(collectionName); + //USEMA, ISCASE, USEORIGINAL, USESYNONYM + ret = search.w3SetQueryAnalyzer(collectionName, useKma, isCase, 1,1); + ret = search.w3SetDuplicateDetection(collectionName); + //systemOut("[w3AddCollection] "+collectionName); + return ret; + } + + /** + * 검색대상 컬렉션, 언어분석기 사용유무, 대소문자 구분유무를 설정한다. + * @param collectionName + * @param useKma + * @param isCase + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int addCollection(String collectionName, int useKma, int isCase, + int useOriginal, int useSynonym, int duplicateDectection) { + int ret = 0; + ret = search.w3AddCollection(collectionName); + //USEMA, ISCASE, USEORIGINAL, USESYNONYM + ret = search.w3SetQueryAnalyzer(collectionName, useKma, isCase, useOriginal, useSynonym); + //systemOut("[w3AddCollection] "+collectionName); + if(duplicateDectection == 1) { + ret = search.w3SetDuplicateDetection(collectionName); + } + return ret; + } + + /** + * 추상 컬렉션 추가 + * v4.x 호환 method이므로 USEORIGINAL, USESYNONYM을 지정하지 않는다. + * @param aliasName 설정한 별칭 컬렉션명 + * @param collectionName 실제 컬렉션 + * @param useKma + * @param isCase + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + * @deprecated As of v4.5, replaced by + * {@link #addAliasCollection(String,String,int,int,int,int,int)} + */ + public int addAliasCollection(String aliasName, String collectionName, + int useKma, int isCase) { + int ret = 0; + ret = search.w3AddAliasCollection(aliasName, collectionName); + ret = search.w3SetQueryAnalyzer(aliasName, useKma, isCase, 1, 1); + ret = search.w3SetDuplicateDetection(aliasName); + return ret; + } + + /** + * 추상 컬렉션 추가 + * @param aliasName 설정한 별칭 컬렉션명 + * @param collectionName 실제 컬렉션 + * @param useKma + * @param isCase + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int addAliasCollection(String aliasName, String collectionName, + int useKma, int isCase, int useOriginal, int useSynonym, int duplicateDectection) { + int ret = 0; + ret = search.w3AddAliasCollection(aliasName, collectionName); + ret = search.w3SetQueryAnalyzer(aliasName, useKma, isCase, + useOriginal, useSynonym); + if(duplicateDectection == 1) { + ret = search.w3SetDuplicateDetection(aliasName); + } + return ret; + } + + /** + * 검색기 연결 + * @param ip + * @param port + * @param timeOut + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int getConnection(String ip, int port, int timeOut) { + int ret = search.w3ConnectServer(ip, port, timeOut); + return ret; + } + + /** + * 해당 컬렉션의 검색 대상 필드를 여러 개를 설정한다. + * v4.x 호환 method이므로 fieldscore를 지정하지 않는다. + * @param collectionName + * @param fields + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + * @deprecated As of v4.5, replaced by + * {@link #setSearchField(String,String)} + **/ + public int addSearchField(String collectionName, String[] fields) { + int ret = 0; + for (int i = 0; i < fields.length; i++) { + ret = search.w3AddSearchField(collectionName, fields[i]); + systemOut("[w3AddSearchField] " + collectionName + " / " + + fields[i]); + } + return ret; + } + + /** + * 검색 필드별 랭킹 스코어(score)를 설정한다. + * @param collectionName + * @param fields TITLE,CONTENT + * @param rankScores 100,30 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int addSearchFieldScore(String collectionName, String[] fields, int[] rankScores) { + int ret = 0; + for (int i = 0; i < fields.length; i++) { + ret = search.w3AddSearchFieldScore(collectionName, fields[i], rankScores[i]); + systemOut("[w3AddSearchFieldScore] " + collectionName + " / "+ fields[i] + "/" + rankScores[i]); + } + return ret; + } + + /** + * 해당 컬렉션의 검색 대상 필드를 여러 개를 설정한다. + * @param collectionName + * @param fields TITLE/100,CONTENT/30 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setSearchField(String collectionName, String fields) { + int ret = 0; + String[] searchFieldTemp = split(fields, ","); //TITLE/100,CONTENT/30 + for (int i = 0; i < searchFieldTemp.length; i++) { + String[] searchField = split(searchFieldTemp[i], "/"); + if (searchField != null && searchField.length > 0) { + ret = search.w3AddSearchField(collectionName, + searchField[0]); + systemOut("[w3AddSearchField] " + collectionName + " / "+ searchField[0]); + } + } + ret = search.w3SetSearchFieldScore(collectionName, fields); + systemOut("[w3AddSearchField] " + collectionName + " / " + fields); + return ret; + } + + + + /** + * 검색결과의 정렬필드를 설정한다. + * v4.x 호환 method + * @param collectionName + * @param sortField + * @param sortOrder + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + * @deprecated As of v4.5, replaced by + * {@link #setSortField(String,String)} + */ + public int addSortField(String collectionName, String sortField, int sortOrder) { + int ret = 0; + ret = search.w3AddSortField(collectionName, sortField, sortOrder); + systemOut("[w3AddSortField] " + collectionName + " / " + sortField); + return ret; + } + + /** + * 검색결과의 정렬필드를 설정한다. + * @param collectionName + * @param sortValue + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setSortField(String collectionName, String sortValue) { + int ret = 0; + ret = search.w3SetSortField(collectionName, sortValue); + systemOut("[w3SetSortField] " + collectionName + " / " + sortValue); + return ret; + } + + /** + * 검색결과 RANKING을 설정한다. SF-1 v5.0 신규 추가 method. + * @param collectionName + * @param method 랭킹 메소드( basic, custom, BM25 ) + * @param option + - p( proximity ) + - r( field weight ) + - k( multi keyword factor ) + - f( frequency ) + - m( morpheme ) + - o( offset ) + - l( length ) + * @param maxcount Ranking 표기의 MAX 값. (예) %로 표기할 시 100 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setRanking(String collectionName, String method, String option, int maxcount) { + return search.w3SetRanking(collectionName, method, option, maxcount); + } + + /** + * 검색한 결과 랭크값에 대한 범위를 지정 + * @param collectionName Collection 이름 + * @param minRank 최소 랭킹 값 + * @param maxRank 최대 랭킹 값 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setRankRange(String collectionName, int minRank, int maxRank) { + return search.w3SetRankRange(collectionName, minRank, maxRank); + + } + + /** + * + * @param collectionName + * @param fieldNameValues + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setPrefixQuery(String collectionName, + String fieldNameValues) { + //value값에 /가 있을 수 있으므로 >/로 찾아서 query와 연산자를 분리한다. + fieldNameValues = fieldNameValues.trim(); + int index = fieldNameValues.lastIndexOf("/"); + String prefixQuery = ""; + int operator = 1; + if(index != -1) { + prefixQuery = fieldNameValues.substring(0, index); + String temp = fieldNameValues.substring(index+1, fieldNameValues.length()); + temp = temp.trim(); + operator = Integer.parseInt(temp); + }else{ + prefixQuery = fieldNameValues.trim(); + } + int ret = search.w3SetPrefixQuery(collectionName, prefixQuery, operator); + systemOut("[w3SetPrefixQuery]" + fieldNameValues); + return ret; + } + + /** + * + * @param collectionName + * @param fieldNameValues + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setFilterOperation(String collectionName, String fieldNameValues) { + int ret = search.w3SetFilterQuery(collectionName, fieldNameValues); + systemOut("[w3SetFilterQuery]" + fieldNameValues); + return ret; + } + + /** + * + * @param collectionName + * @param fieldNameValues + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setFilterQuery(String collectionName, String fieldNameValues) { + int ret = search.w3SetFilterQuery(collectionName, fieldNameValues); + systemOut("[w3SetFilterQuery]" + fieldNameValues); + return ret; + } + + /** + * setResultField에서 지정한 결과 필드들의 값을 얻는 함수이다. + * v4.x 호환 method이다. displaylength를 지정하지 않으므로 주의해야한다. + * @param collectionName + * @param fields + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + * @deprecated As of v4.5, replaced by + * {@link #setResultField(String,String)} + */ + public int setResultField(String collectionName, String[] fields) { + int ret = 0; + for(int i=0; i< fields.length; i++) { + ret = search.w3AddDocumentField(collectionName, fields[i], 0); + systemOut("[w3AddDocumentField] " + collectionName + " / " + fields[i]); + } + return ret; + } + + /** + * setResultField에서 지정한 결과 필드들의 값을 얻는 함수이다. + * @param collectionName + * @param fields + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setResultField(String collectionName, String fields) { + int ret = 0; + ret = search.w3SetDocumentField(collectionName, fields); + systemOut("[w3SetDocumentField] " + collectionName + " / " + fields); + return ret; + } + + /** + * 해당 컬렉션의 몇 번째 검색 결과부터 몇 개를 + * 가져올 것인지를 지정하고 하이라이트 기능과 요약기능을 지정하는 함수이다. + * 검색 API v3.5에서는 w3SetHighlight의 파라미터가 2개이지만 v3.7에서는 3개이다. + * @param collName + * @param highlight + * @param startPos + * @param resultCnt + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setPageInfo(String collName, int highlight, int startPos, + int resultCnt) { + int ret = 0; + if (highlight == 1) { //OFF, ON + ret = search.w3SetHighlight(collName, 0, 1); + } else if (highlight == 2) { //ON , OFF + ret = search.w3SetHighlight(collName, 1, 0); + } else if (highlight == 3) { //ON, ON + ret = search.w3SetHighlight(collName, 1, 1); + } else {//OFF, OFF + ret = search.w3SetHighlight(collName, 0, 0); + } + // 페이지, 기본정렬 설정 + ret = search.w3SetPageInfo(collName, startPos, resultCnt); + + return ret; + } + + /** + * 검색한 결과 날짜/시간 범위를 지정하고 + * 시작날짜와 종료날짜의 형식이 YYYY/MM/DD가 아니라면 + * 변경할 문자를 인자로 지정한다. + * @param collectionName + * @param startDate + * @param endDate + * @param replaceChr + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setDateRange(String collectionName, String startDate, + String endDate, String replaceChr) { + // 날짜 조건 세팅 + int ret = 0; + if (!startDate.equals("") && !endDate.equals("")) { + startDate = replace(startDate, replaceChr, "/"); + endDate = replace(endDate, replaceChr, "/"); + ret = search.w3SetDateRange(collectionName, startDate, endDate); + } + return ret; + } + + /** + * + * @param collectionName + * @param field + * @param matchType + * @param boostID + * @param boostKeyword + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + * @deprecated As of v4.x, replaced by + * {@link #setBoostCategory(String,String,String,String)} + */ + public int setCategoryBoost(String collectionName, String field, + String matchType, String boostID, String boostKeyword) { + int ret = 0; + ret = search.w3SetBoostCategory(collectionName, field, matchType, boostKeyword); + return ret; + } + + /** + * + * @param collectionName + * @param field + * @param matchType + * @param boostID + * @param boostKeyword + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setBoostCategory(String collectionName, String field, + String matchType, String boostID, String boostKeyword) { + return search.w3SetBoostCategory(collectionName, field, matchType, boostKeyword); + } + + /** + * 검색결과에서 중복문서 정렬 기준을 설정한다. + * @param collectionName Collection 명 + * @param categoryGroup Category 그룹정보 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int addDuplicateDetectionCriterionField(String collection, String field, int nOrder) { + int ret = -1; + ret = search.w3AddDuplicateDetectionCriterionField(collection, field, nOrder); + return ret; + } + + + /** + * 검색결과에서 중복문서 정렬 기준을 설정한다. + * @param collectionName Collection 명 + * @param categoryGroup Category 그룹정보 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setDuplicateDetectionCriterionField(String collection, String fieldList ) { + int ret = -1; + ret = search.w3SetDuplicateDetectionCriterionField(collection, fieldList); + return ret; + } + + /** + * 검색결과 패킷에 카테고리 지정 컬렉션의 카테고리 필드에서 Depth별 Category의 리스트를 포함시킨다. + * @param collectionName Collection 명 + * @param categoryGroup Category 그룹정보 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int addCategoryGroupBy(String collectionName, String[] categoryGroup) { + int ret = -1; + int length = categoryGroup.length; + for(int i=0; i < length; i++) { + String[] dataFields = split(categoryGroup[i], ":"); + if(dataFields.length == 2){ + //depthList depth의 list를 콤마(:) 로 구분하여 입력 + ret = search.w3AddCategoryGroupBy(collectionName, dataFields[0], dataFields[1]); + } + } + return ret; + } + + /** + * 선택한 컬렉션 내의 선택 카테고리 필드의 값으로 검색결과를 필터링 한다. + * 혹은 다른 쿼리없이 본쿼리를 실행하면 해당 카테고리의 값에 매치되는 문서를 출력한다. + * @param collectionName Collection 명 + * @param categoryQuery + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int addCategoryQuery(String collectionName, String[] categoryQuery) { + int ret = -1; + int length = categoryQuery.length; + for(int i=0; i < length; i++) { + String[] dataFields = split(categoryQuery[i], "/"); + if(dataFields.length == 2){ + ret = search.w3AddCategoryQuery(collectionName, dataFields[0], dataFields[1]); + } + } + return ret; + } + + /** + * w3SetCategoryGroupBy를 통해 패킷에 포함된 해당 collection-field-depth를 key로 하는 + * 카테고리의 총 개수를 반환 + * @param collectionName 검색 대상 collection명 + * @param fieldName Category Field 명 + * @param depth 현재 그룹핑하여 보고자 하는 depth + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int getCategoryCount(String collectionName, String field, int depth) { + return search.w3GetCategoryCount(collectionName, field, depth); + } + + /** + * w3SetCategoryGroupBy를 통해 패킷에 포함된 해당 collection-field-depth를 key로 하는 + * 카테고리 중 categoryIdx번째의 완전한 카테고리 이름을 반환 + * @param collectionName 검색 대상 collection명 + * @param fieldName Category Field 명 + * @param depth 현재 그룹핑하여 보고자 하는 depth + * @param idx 해당 컬렉션-카테고리-Depth에 해당하는 카테고리 결과의 인덱스 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public String getCategoryName(String collectionName, String field, int depth, int idx){ + return search.w3GetCategoryName(collectionName, field, depth, idx); + } + + /** + * w3SetCategoryGroupBy를 통해 패킷에 포함된 해당 collection-field-depth를 key로 하는 카테고리 중 + * categoryIdx번째의 카테고리안에 몇 개의 문서가 포함되어있는지(검색 결과내에서)를 반환 + * @param collectionName 검색 대상 collection명 + * @param fieldName Category Field 명 + * @param depth 현재 그룹핑하여 보고자 하는 depth + * @param idx 해당 컬렉션-카테고리-Depth에 해당하는 카테고리 결과의 인덱스 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int getDocumentCountInCategory(String collectionName, String field, int depth, int idx){ + return search.w3GetDocumentCountInCategory(collectionName, field, depth, idx); + } + + /** + * 특정 필드의 값을 기준으로 범위 별로 그룹을 만들거나, 이 필드 값이 특정 범위에 속하는 레코드만 추출 + * @ collectionName + * @ field + * @ min + * @ max + * @ groupCount + */ + public int setPropertyGroup(String collectionName, String field, int min, int max, int groupCount) { + int ret = 0; + ret = search.w3SetPropertyGroup(collectionName, field, min, max, groupCount); + return ret; + } + + /** + * v3.7에서는 2개의 전달인자 v4.0에서는 3개의 전달인자 + * @param collectionName + * @param field + * @param docCount + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setGroupBy(String collectionName, String field, int docCount) { + int ret = 0; + ret = search.w3SetGroupBy(collectionName, field, docCount); + return ret; + } + + /** + * 단순히 최종 결과에서 특정 필드(들)값의 그룹핑된 결과를 얻어오기 원할 때 사용 + * @param collectionName 컬렉션명 + * @param fieldName 그룹핑할 필드명 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int addMultiGroupBy(String collectionName, String fields) { + int ret = 0; + String[] field = split(fields, ","); + int length = field.length; + for(int i = 0; i < length; i++ ) { + ret = search.w3AddMultiGroupBy(collectionName, field[i]); + } + return ret ; + } + + public int setMultiGroupBy (String collectionName, String fields) { + return search.w3SetMultiGroupBy(collectionName, fields); + } + + /** + * 멀티 그룹바이된 결과를 반환 + * @param collectionName 컬렉션명 + * @param fieldName 그룹핑할 필드명 + * @return 성공 시 해당 컬렉션 결과에서 인자로 주어진 필드의 그룹핑 결과 문자열을 반환하며, 에러 발생시 빈 문자열을 반환 + */ + public String getMultiGroupByResult(String collectionName, String field) { + String ret = ""; + ret = search.w3GetMultiGroupByResult(collectionName, field); + return ret ; + } + + /** + * 그룹 검색결과의 정렬필드를 설정한다. + * @param collectionName + * @param sortField + * @param sortOrder + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int addSortFieldInGroup(String collectionName, String sortField, + int sortOrder) { + int ret = 0; + ret = search.w3AddSortFieldInGroup(collectionName, sortField, + sortOrder); + systemOut("[w3AddSortFieldInGroup] " + collectionName + " / " + + sortField); + return ret; + } + + /** + * 그룹내의 문서들의 정렬 정보들을 지정해 주는 함수 + * @param collectionName + * @param sortValue url/DESC,RANK/DESC,DATE/ASC + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setSortFieldInGroup(String collectionName, String sortValue) { + int ret = 0; + ret = search.w3SetSortFieldInGroup(collectionName, sortValue); + systemOut("[w3SetSortFieldInGroup] " + collectionName + " / " + sortValue); + return ret; + } + + + /** + * 권한 쿼리 (Authority Query) + * @param collection + * @param authTargetField + * @param authCollection + * @param authReferField + * @param authorityQuery + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int setAuthorityQuery(String collection, String authTargetField, + String authCollection, String authReferField, String authorityQuery ) { + int ret = search.w3SetAuthorityQuery(collection, authTargetField, + authCollection, authReferField, authorityQuery); + systemOut("[w3SetAuthorityQuery]" + authorityQuery); + return ret; + } + + /** + * + * @param collectionName + * @return 검색기로부터 받아온 속성 그룹의 개수를 반환 + */ + public int getCountPropertyGroup(String collectionName) { + return search.w3GetCountPropertyGroup(collectionName); + } + + /** + * + * @param collectionName + * @return 전체 그룹 개수 + */ + public int getResultGroupCount(String collectionName) { + return search.w3GetResultGroupCount(collectionName); + } + + + /** + * + * @param collectionName + * @return 전체 그룹 개수 + */ + public int getResultTotalGroupCount(String collectionName) { + return search.w3GetResultTotalGroupCount(collectionName); + } + + /** + * + * @param collectionName + * @parma groupIndex + * @return 그룹에 속하는 문서 중 가져온 문서 개수 + */ + public int getCountInGroup(String collectionName, int groupIndex) { + return search.w3GetCountInGroup(collectionName, groupIndex); + } + + /** + * + * @param collectionName + * @parma groupIndex + * @return 그룹에 속하는 전체문서 개수 + */ + public int getTotalCountInGroup(String collectionName, int groupIndex) { + return search.w3GetTotalCountInGroup(collectionName, groupIndex); + } + + + /** + * + * @param collectionName + * @return 성공시 해당 속성 그룹의 최소값을 반환하며, 에러 발생시 음수를 반환 + */ + public int getMinValuePropertyGroup(String collectionName){ + return search.w3GetMinValuePropertyGroup(collectionName); + } + + /** + * + * @param collectionName + * @return 성공시 해당 속성 그룹의 최대값을 반환하며, 에러 발생시 음수를 반환 + */ + public int getMaxValuePropertyGroup(String collectionName){ + return search.w3GetMaxValuePropertyGroup(collectionName); + } + + /** + * + * @param collectionName + * @parma groupIndex + * @return 성공시 속성 그룹 결과의 최소값을 반환하며, 에러 발생시 음수를 반환 + */ + public int getMinValueInPropertyGroup(String collectionName, int groupIndex){ + return search.w3GetMinValueInPropertyGroup(collectionName, groupIndex); + } + + /** + * + * @param collectionName + * @parma groupIndex + * @return 성공시 속성 그룹 결과의 최대값을 반환하며, 에러 발생시 음수를 반환 + */ + public int getMaxValueInPropertyGroup(String collectionName, int groupIndex){ + return search.w3GetMaxValueInPropertyGroup(collectionName, groupIndex); + } + + + /** + * + * @param collectionName + * @parma groupIndex + * @return 지정된 속성 그룹 내 문서개수를 반환 + */ + public int getDocumentCountInPropertyGroup(String collectionName, int groupIndex){ + return search.w3GetDocumentCountInPropertyGroup(collectionName, groupIndex); + } + + /** + * 그룹화된 문서 중 지정된 순서의 그룹 내에서 주어진 collection 결과 에서 index 번째 문서의 Collection ID를 반환 + * @param collectionName + * @param groupIndex + * @param docIndex + * @return 그룹에 속하는 문서중 원하는 문서의 필드값 + */ + public String getCollectionIdInGroup(String collectionName, int groupIndex, int docIndex) { + return search.w3GetCollectionIdInGroup(collectionName, groupIndex, docIndex); + } + + /** + * + * @param collectionName + * @param groupIndex + * @param docIndex + * @return 그룹에 속하는 문서중 원하는 문서의 필드값 + */ + public long getRankInGroup(String collectionName, int groupIndex, int docIndex) { + return search.w3GetRankInGroup(collectionName, groupIndex, docIndex); + } + + /** + * + * @param collectionName + * @param groupIndex + * @param docIndex + * @return 그룹에 속하는 문서중 원하는 문서의 필드값 + */ + public String getFieldInGroup(String collectionName, String fieldName, + int groupIndex, int docIndex) { + return search.w3GetFieldInGroup(collectionName, fieldName, + groupIndex, docIndex); + } + + /** + * + * @param collectionName + * @param groupIndex + * @param docIndex + * @return 그룹에 속하는 문서중 원하는 문서의 uid값 + */ + public long getUidInGroup(String collectionName, int groupIndex, + int docIndex) { + return search.w3GetUidInGroup(collectionName, groupIndex, docIndex); + } + + /** + * + * @param collectionName + * @param groupIndex + * @param docIndex + * @return 그룹에 속하는 문서중 원하는 문서의 가중치 값 + */ + public long getWeightInGroup(String collectionName, int groupIndex, + int docIndex) { + return search.w3GetWeightInGroup(collectionName, groupIndex, + docIndex); + } + + /** + * + * @param collectionName + * @param groupIndex + * @param docIndex + * @return 그룹에 속하는 문서중 원하는 문서의 날짜 정보 + */ + public String getDateInGroup(String collectionName, int groupIndex, + int docIndex) { + return search + .w3GetDateInGroup(collectionName, groupIndex, docIndex); + } + + /** + * + * @param collectionName + * @param groupIndex + * @param docIndex + * @return 그룹에 속하는 문서중 원하는 문서의 sc 정보 + */ + public String getSearcherIdInGroup(String collectionName, int groupIndex, + int docIndex) { + return search.w3GetSearcherIdInGroup(collectionName, groupIndex, docIndex); + } + + + /** + * v4.x 호환 method + * v5.0에서는 삭제되었다. + * 하이라이팅될 문자열을 보여주는 함수이다. + * @return 하이라이팅될 문자열 + public String getHighlightKeyword() { + String keyWord = this.search.w3GetHighlightKeyword().trim(); + return keyWord; + } + */ + + /** + * 형태소 분석된 결과 문자열을 보여주는 함수이다. + * @param colName + * @param field + * @return 하이라이팅될 문자열 + */ + public String getHighlightKeywordByField(String colName, + String searchField) { + String keyWord = this.search.w3GetHighlightByField(colName, + searchField); + return keyWord; + } + + /** + * + * @param collectionName + * @return 검색결과 개수 + */ + public int getResultCount(String collectionName) { + return search.w3GetResultCount(collectionName); + } + + /** + * + * @param collectionName + * @return 검색결과 총 개수 + */ + public int getResultTotalCount(String collectionName) { + return search.w3GetResultTotalCount(collectionName); + } + + + /** + * + * @param collectionName + * @param idx + * @return 검색한 해당 문서의 중복문서 개수를 반환 + */ + public int getDuplicateDocumentCount(String collectionName, int idx) { + return search.w3GetDuplicateDocumentCount(collectionName, idx); + } + + /** + * + * @param collectionName + * @param groupIndex + * @param docIndex + * @return 그룹화된 문서 중 지정된 순서의 그룹 내에서 각 결과들이 중복된 문서의 개수를 반환 + */ + public int getDuplicateDocumentCountInGroup(String collectionName, int groupIndex, + int docIndex) { + return search.w3GetDuplicateDocumentCountInGroup(collectionName, groupIndex, docIndex); + } + + /** + * 최근에 검색된 키워드리스트를 반환한다. + * @param count + * @return 최근에 검색된 키워드리스트 + */ + public String[] receiveRecentQueryListResult(int mode, int count) { + int ret = search.w3ReceiveRecentQueryListResult(mode, count); + if( ret < 0 ){ + systemOut("[W3ReceiveRecentQueryListResult] " + search.w3GetErrorInfo() + ", ret=" + ret); + return null; + } + int size = search.w3GetRecentQueryListSize(); + String[] keyList = new String[size]; + for(int i=0; icode:" + errorCode + + ")"; + } + return errorMsg; + } + + + + /** + * 검색결과의 에러가 발생하면 에러 코드와 메시지를 반환한다. + * @return + */ + public String getErrorInfo() { + String errorMsg = ""; + int errorCode = search.w3GetError(); + if (errorCode != 0) { + errorMsg = search.w3GetErrorInfo(); + errorMsg = errorMsg + "(code:" + errorCode + + ")"; + } + return errorMsg; + } + + /** + * 검색 api의 버전정보를 반환한다. + * @return + */ + public String getVersionInfo() { + return search.w3GetVersionInfo(); + } + + + + /** + * 에러 코드에 대한 에러정보를 web application의 standard out log에 출력한다. + * @param msg + */ + public void systemOut(String msg) { + if (out != null && isDebug) { + try { + out.println(msg + "
    "); + } catch (IOException e) { + e.printStackTrace(); + } + } + } +} +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/api/WNDefine.jsp b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/api/WNDefine.jsp new file mode 100644 index 00000000..9d76c05e --- /dev/null +++ b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/api/WNDefine.jsp @@ -0,0 +1,76 @@ +<%@ page pageEncoding = "UTF-8" %><%! + /** + * subject: 검색 환경 설정 페이지 + **/ + + final static int CONNECTION_TIMEOUT = 20000; + final static String CHARSET = "UTF-8"; + final static int REALTIME_COUNT=100; + final static int PAGE_SCALE = 10; //view page list count + + final static int CONNECTION_KEEP = 0; //recevive mode + final static int CONNECTION_REUSE = 2; + final static int CONNECTION_CLOSE = 3; + + final static int ASC = 0; //order + final static int DESC = 1; //order + + final static int USE_KMA_OFFOFF = 0; //synonym, morpheme + final static int USE_KMA_ONON = 1; + final static int USE_KMA_ONOFF = 2; + + final static int USE_RESULT_STRING = 0; //result data type + final static int USE_RESULT_XML = 1; + final static int USE_RESULT_JSON = 2; + final static int USE_RESULT_DUPLICATE_STRING = 3; //uid result data type + final static int USE_RESULT_DUPLICATE_XML = 4; + final static int USE_RESULT_DUPLICATE_JSON = 5; + + final static int IS_CASE_ON = 1; //case on, off + final static int IS_CASE_OFF = 0; + + final static int HI_SUM_OFFOFF = 0; //summarizing, highlighting + final static int HI_SUM_OFFON = 1; + final static int HI_SUM_ONOFF = 2; + final static int HI_SUM_ONON = 3; + + final static int COMMON_OR_WHEN_NORESULT_OFF = 0; + final static int COMMON_OR_WHEN_NORESULT_ON = 1; + + final static int INDEX_NAME = 0; + final static int COLLECTION_NAME = 1; + final static int PAGE_INFO = 2; + final static int ANALYZER = 3; + final static int SORT_FIELD = 4; + final static int RANKING_OPTION = 5; + final static int SEARCH_FIELD = 6; + final static int RESULT_FIELD = 7; + final static int DATE_RANGE = 8; + final static int RANK_RANGE = 9; + final static int EXQUERY_FIELD = 10; + final static int COLLECTION_QUERY =11; + final static int BOOST_QUERY =12; + final static int FILTER_OPERATION = 13; + final static int GROUP_BY = 14; + final static int GROUP_SORT_FIELD = 15; + final static int CATEGORY_BOOST = 16; + final static int CATEGORY_GROUPBY = 17; + final static int CATEGORY_QUERY = 18; + final static int PROPERTY_GROUP = 19; + final static int PREFIX_FIELD = 20; + final static int FAST_ACCESS = 21; + final static int MULTI_GROUP_BY = 22; + final static int AUTH_QUERY = 23; + final static int DEDUP_SORT_FIELD = 24; + final static int COLLECTION_KOR = 25; + + final static int MERGE_COLLECTION_NAME = 0; + final static int MERGE_MAPPING_COLLECTION_NAME = 1; + final static int MERGE_PAGE_INFO = 2; + final static int MERGE_RESULT_FIELD = 3; + final static int MERGE_MAPPING_RESULT_FIELD = 4; + final static int MERGE_MULTI_GROUP_BY_FIELD = 5; + final static int MERGE_MAPPING_MULTI_GROUP_BY_FIELD = 6; + final static int MERGE_CATEGORY_GROUPBY_FIELD = 7; + final static int MERGE_MAPPING_CATEGORY_GROUPBY_FIELD = 8; +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/api/WNSearch.jsp b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/api/WNSearch.jsp new file mode 100644 index 00000000..9d7bbeef --- /dev/null +++ b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/api/WNSearch.jsp @@ -0,0 +1,2320 @@ +<%@ page contentType="text/html; charset=UTF-8"%><%@ page import="java.util.*, + java.io.IOException, + javax.servlet.jsp.JspWriter"%><%@ +include file="./WNAnchor.jsp" %><%@ +include file="../WNCollection.jsp" %><%@ +include file="./WNCommon.jsp" %><%! + /** + * file: WNSearch.jsp + * subject: 검색페이지에서 사용되는 메소드를 정의한 클래스 + * ------------------------------------------------------------------------ + * @original author: WISEnut + * @edit author: WISEnut + * @update date 2012.04.24 + * ------------------------------------------------------------------------ + */ + public class WNSearch { + private WNCommon common ; + private WNCollection wncol; + private String[] collections ; + private String[] mergeCollections ; + private String[] searchFields; + private String managerURL = ""; + private int hiSum = 0; + private int connectionOpt = 0; + private StringBuffer sb = null; + private StringBuffer warningMsg = null; + + private String searcherId = ""; + private boolean isDebug = false; + private boolean isUidSrch = false; + private int resultType = 0; + + public String realTimeKeywords= ""; + public String suggestedQuery = ""; + /** + * WNCommon객체를 생성하고 검색 대상 컬렉션과 검색 대상 필드들을 설정한다. + * @param searcherId 검색 대상 sc id + * @param isDebug 검색설정을 화면에 출력할 것인지 여부를 결정 + * @param isUidSrch 키워드 검색을 할 것인지 UID 검색을 할 것인지 여부를 결정 + * @param collections 검색하고자 하는 컬렉션들을 Array로 지정한다. + * @param searchFields 검색하고자 하는 검색필드들을 Array로 지정한다. + */ + public WNSearch(String searcherId, boolean isDebug, boolean isUidSrch, + String[] collections, String[] searchFields){ + this.common = new WNCommon(); + this.wncol = new WNCollection(); + this.collections = collections; + this.searchFields = searchFields; + this.sb = new StringBuffer(); + this.warningMsg = new StringBuffer(); + this.isDebug = isDebug; + this.isUidSrch = isUidSrch; + this.searcherId = searcherId; + } + + /** + * WNCommon객체를 생성하고 검색 대상 컬렉션과 검색 대상 필드들을 설정한다. + * @param searcherId 검색 대상 sc id + * @param isDebug 검색설정을 화면에 출력할 것인지 여부를 결정 + * @param isUidSrch 키워드 검색을 할 것인지 UID 검색을 할 것인지 여부를 결정 + * @param collections 검색하고자 하는 컬렉션들을 Array로 지정한다. + * @param searchFields 검색하고자 하는 검색필드들을 Array로 지정한다. + * @param resultType 검색결과를 반환받고자 하는 데이터 형태 + */ + public WNSearch(String searcherId, boolean isDebug, boolean isUidSrch, + String[] collections, String[] searchFields, int resultType){ + this.common = new WNCommon(); + this.wncol = new WNCollection(); + this.collections = collections; + this.searchFields = searchFields; + this.sb = new StringBuffer(); + this.warningMsg = new StringBuffer(); + this.isDebug = isDebug; + this.isUidSrch = isUidSrch; + this.searcherId = searcherId; + this.resultType = resultType; + } + + /** + * WNCommon객체를 생성하고 검색 대상 컬렉션과 검색 대상 필드들을 설정한다. + * @param searcherId 검색 대상 sc id + * @param isDebug 검색설정을 화면에 출력할 것인지 여부를 결정 + * @param isUidSrch 키워드 검색을 할 것인지 UID 검색을 할 것인지 여부를 결정 + * @param collections 검색하고자 하는 컬렉션들을 Array로 지정한다. + * @param mergeCollections 검색하고자 하는 가상통합컬렉션을 Array로 지정한다. + * @param searchFields 검색하고자 하는 검색필드들을 Array로 지정한다. + * @param resultType 검색결과를 반환받고자 하는 데이터 형태 + */ + public WNSearch(String searcherId, boolean isDebug, boolean isUidSrch, + String[] collections, String[] mergeCollections, String[] searchFields, int resultType){ + this.common = new WNCommon(); + this.wncol = new WNCollection(); + this.collections = collections; + this.mergeCollections = mergeCollections; + this.searchFields = searchFields; + this.sb = new StringBuffer(); + this.warningMsg = new StringBuffer(); + this.isDebug = isDebug; + this.isUidSrch = isUidSrch; + this.searcherId = searcherId; + this.resultType = resultType; + } + + /** + * WNCommon객체를 생성하고 검색 대상 컬렉션과 검색 대상 필드들을 설정한다. + * @param isDebug 검색설정을 화면에 출력할 것인지 여부를 결정 + * @param isUidSrch 키워드 검색을 할 것인지 UID 검색을 할 것인지 여부를 결정 + * @param collections 검색하고자 하는 컬렉션들을 Array로 지정한다. + * @param searchFields 검색하고자 하는 검색필드들을 Array로 지정한다. + * @param resultType 검색결과를 반환받고자 하는 데이터 형태 + */ + public WNSearch(boolean isDebug, boolean isUidSrch, String[] collections, + String[] searchFields, int resultType){ + this.common = new WNCommon(); + this.wncol = new WNCollection(); + this.collections = collections; + this.searchFields = searchFields; + this.sb = new StringBuffer(); + this.warningMsg = new StringBuffer(); + this.isDebug = isDebug; + this.isUidSrch = isUidSrch; + this.resultType = resultType; + } + + /** + * WNCommon객체를 생성하고 검색 대상 컬렉션과 검색 대상 필드들을 설정한다. + * @param isDebug 검색설정을 화면에 출력할 것인지 여부를 결정 + * @param isUidSrch 키워드 검색을 할 것인지 UID 검색을 할 것인지 여부를 결정 + * @param collections 검색하고자 하는 컬렉션들을 Array로 지정한다. + * @param mergeCollections 검색하고자 하는 가상통합컬렉션을 Array로 지정한다. + * @param searchFields 검색하고자 하는 검색필드들을 Array로 지정한다. + * @param resultType 검색결과를 반환받고자 하는 데이터 형태 + */ + public WNSearch(boolean isDebug, boolean isUidSrch, String[] collections, + String[] mergeCollections, String[] searchFields, int resultType){ + this.common = new WNCommon(); + this.wncol = new WNCollection(); + this.collections = collections; + this.mergeCollections = mergeCollections; + this.searchFields = searchFields; + this.sb = new StringBuffer(); + this.warningMsg = new StringBuffer(); + this.isDebug = isDebug; + this.isUidSrch = isUidSrch; + this.resultType = resultType; + } + + + /** + * WNCommon객체를 생성하고 검색 대상 컬렉션과 검색 대상 필드들을 설정한다. + * @param isDebug 검색설정을 화면에 출력할 것인지 여부를 결정 + * @param isUidSrch 키워드 검색을 할 것인지 UID 검색을 할 것인지 여부를 결정 + * @param collections 검색하고자 하는 컬렉션들을 Array로 지정한다. + * @param searchFields 검색하고자 하는 검색필드들을 Array로 지정한다. + */ + public WNSearch(boolean isDebug, boolean isUidSrch, String[] collections, String[] searchFields){ + this.common = new WNCommon(); + this.wncol = new WNCollection(); + this.collections = collections; + this.searchFields = searchFields; + this.sb = new StringBuffer(); + this.warningMsg = new StringBuffer(); + this.isDebug = isDebug; + this.isUidSrch = isUidSrch; + } + + /** + * WNCommon객체를 생성하고 검색 대상 컬렉션과 검색 대상 필드들을 설정한다. + * @param isDebug 검색설정을 화면에 출력할 것인지 여부를 결정 + * @param isUidSrch 키워드 검색을 할 것인지 UID 검색을 할 것인지 여부를 결정 + * @param collections 검색하고자 하는 컬렉션들을 Array로 지정한다. + * @param mergeCollections 검색하고자 하는 가상통합컬렉션을 Array로 지정한다. + * @param searchFields 검색하고자 하는 검색필드들을 Array로 지정한다. + */ + public WNSearch(boolean isDebug, boolean isUidSrch, String[] collections, + String[] mergeCollections, String[] searchFields){ + this.common = new WNCommon(); + this.wncol = new WNCollection(); + this.collections = collections; + this.mergeCollections = mergeCollections; + this.searchFields = searchFields; + this.sb = new StringBuffer(); + this.warningMsg = new StringBuffer(); + this.isDebug = isDebug; + this.isUidSrch = isUidSrch; + } + + /** + * 검색 키워드를 설정한다. + * @param query 검색 키워드 + * @param isRealQuery 실시간 검색어를 출력한 것인지 여부를 결정 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int search(String query, boolean isRealQuery) { + return search(query, isRealQuery, null, HI_SUM_ONON, COMMON_OR_WHEN_NORESULT_OFF, CONNECTION_CLOSE, false); + } + + + /** + * 검색 키워드를 설정한다. + * @param query 검색 키워드 + * @param isRealQuery 실시간 검색어를 출력한 것인지 여부를 결정 + * @param useOrResult 검색결과 없을 때 OR로 검색할지 여부를 결정 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int search(String query, boolean isRealQuery, int useOrResult) { + return search(query, isRealQuery, null, HI_SUM_ONON, useOrResult, CONNECTION_CLOSE, false); + } + + /** + * 검색 키워드를 설정한다. + * @param query 검색 키워드 + * @param isRealQuery 실시간 검색어를 출력한 것인지 여부를 결정 + * @param connectionOpt 검색기와 연결을 유지할 것인지 끊을 것인지 여부를 결정 + * @param useSuggestedQuery speller 결과를 사용할 것인지 여부를 결정 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int search(String query, boolean isRealQuery, int connectionOpt, boolean useSuggestedQuery) { + this.connectionOpt = connectionOpt; + return search(query, isRealQuery, null, HI_SUM_ONON, COMMON_OR_WHEN_NORESULT_OFF, connectionOpt, useSuggestedQuery); + } + + + /** + * 검색 키워드를 설정한다. + * @param query 검색 키워드 + * @param isRealQuery 실시간 검색어를 출력한 것인지 여부를 결정 + * @param useOrResult 검색결과 없을 때 OR로 검색할지 여부를 결정 + * @param connectionOpt 검색기와 연결을 유지할 것인지 끊을 것인지 여부를 결정 + * @param useSuggestedQuery speller 결과를 사용할 것인지 여부를 결정 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int search(String query, boolean isRealQuery, int useOrResult, int connectionOpt, boolean useSuggestedQuery) { + this.connectionOpt = connectionOpt; + return search(query, isRealQuery, null, HI_SUM_ONON, useOrResult, connectionOpt, useSuggestedQuery); + } + + /** + * 검색 키워드를 설정한다. + * @param query 검색 키워드 + * @param isRealQuery 실시간 검색어를 출력한 것인지 여부를 결정 + * @param useOrResult 검색결과 없을 때 OR로 검색할지 여부를 결정 + * @param connectionOpt 검색기와 연결을 유지할 것인지 끊을 것인지 여부를 결정 + * @param hisum 하이라이팅과 요약을 사용할 옵션을 결정 + * @param useSuggestedQuery speller 결과를 사용할 것인지 여부를 결정 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int search(String query, boolean isRealQuery, int useOrResult, int connectionOpt, int hiSum, boolean useSuggestedQuery) { + this.connectionOpt = connectionOpt; + return search(query, isRealQuery, null, hiSum, useOrResult, connectionOpt, useSuggestedQuery); + } + + /** + * 검색 키워드를 설정한다. + * @param query 검색 키워드 + * @param isRealQuery 실시간 검색어를 출력한 것인지 여부를 결정 + * @param userInfo 사용자 정보를 QueryLog파일이 저장할 때 사용된다 + * @param hisum 하이라이팅과 요약을 사용할 옵션을 결정 + * @param useOrResult 검색결과 없을 때 OR로 검색할지 여부를 결정 + * @param connectionOpt 검색기와 연결을 유지할 것인지 끊을 것인지 여부를 결정 + * @param useSuggestedQuery speller 결과를 사용할 것인지 여부를 결정 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + private int search(String query, boolean isRealQuery, String[] userInfo, int hiSum, int useOrResult, int connectionOpt, boolean useSuggestedQuery) { + this.connectionOpt = connectionOpt; + this.hiSum = hiSum; + int ret = 0; + if(!isUidSrch) { + ret = common.setCommonQuery(query, CHARSET, useOrResult, useSuggestedQuery, userInfo); + } else { + ret = common.setUidQuery(CHARSET); + } + + if( collections != null){ + for(int i=0; i", ""); + content = content.replaceAll("", ""); + } + return content; + } + + + /** + * 검색된 키워드의 분석 결과의 리스트를 얻어서 인자로 받은 문자열에 하이라이팅 한다. + * @param content 하이라이팅 하고자 하는 문자열 + * @param startTag 하이라이팅 하고자 하는 Tag의 시작 문자 + * @param endTag 하이라이팅 하고자 하는 Tag의 끝 문자 + * @return 하이라이팅된 문자열을 반환한다. + */ + public String getKeywordHl(String content, String startTag, String endTag) { + if(content != null) { + content = replace(content, "", startTag); + content = replace(content, "", endTag); + } + return content; + } + + + /** + * WNCollection에서 정의된 COLLECTIONS의 index를 얻는다. + * @param collName 검색하고자 하는 컬렉션의 이름 + * @return 컬렉션 index를 반환한다. + */ + public int getCollIdx(String collName) { + for(int i=0; i < COLLECTIONS.length; i++) { + if (COLLECTIONS[i].trim().equals(collName.trim())) return i; + } + return -1; + } + + /** + * WNCollection에서 정의된 MERGE COLLECTIONS의 index를 얻는다. + * @param collName 검색하고자 하는 컬렉션의 이름 + * @return 컬렉션 index를 반환한다. + */ + public int getMergeCollIdx(String collName) { + for(int i=0; i < MERGE_COLLECTIONS.length; i++) { + if( MERGE_COLLECTIONS[i].trim().equals(collName.trim()) ) return i; + } + return -1; + } + + /** + * 검색 후 해당 Collection의 Erro정보를 반환한다. + * @param collectionName 검색을 수행한 컬렉션 이름 + * @return collection의 에러정보 + */ + public String getCollectionErrorInfo(String collectionName) { + return common.getCollectionErrorInfo(collectionName); + } + + /** + * 검색 API의 버전정보를 반환한다. + * @return API 버전정보 + */ + public String getVersionInfo() { + return common.getVersionInfo(); + } + + /** + * 형태소 분석 및 대소문자 값을 체크한다. + * @param useKma 형태소 분석 값 + * @param isCase 대소문자 구분 여부 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int checkKeywordAnalyzer(String collectionName, int useKma, int isCase, int useOriginal, int useSynonym, int useDuplicateDetection) { + int chk = 0; + if(useKma != 0 && useKma != 1 && useKma != 2) { + appendWarnings("[WARNING] [w3SetQueryAnalyzer] [checkKeywordAnalyzer] ["+ collectionName + "] '" + useKma + "' is not kma option"); + return -1; + } + if(isCase != 0 && isCase != 1) { + appendWarnings("[WARNING] [w3SetQueryAnalyzer] [checkKeywordAnalyzer] ["+ collectionName + "] '" + isCase + "' is not case option"); + return -1; + } + if(useOriginal != 0 && useOriginal != 1) { + appendWarnings("[WARNING] [w3SetQueryAnalyzer] [checkKeywordAnalyzer] ["+ collectionName + "] '" + useOriginal + "' is not use original option"); + return -1; + } + if(useSynonym != 0 && useSynonym != 1) { + appendWarnings("[WARNING] [w3SetQueryAnalyzer] [checkKeywordAnalyzer] ["+ collectionName + "] '" + useSynonym + "' is not use synonym option"); + return -1; + } + if(useDuplicateDetection !=0 && useDuplicateDetection != 1) { + appendWarnings("[WARNING] [w3SetQueryAnalyzer] [checkKeywordAnalyzer] ["+ collectionName + "] '" + useDuplicateDetection + "' is not use duplicate detection option"); + return -1; + } + + return chk; + } + + + /** + * 검색하고자 하는 컬렉션을 체크한다. + * @param collectionName 검색하고자 하는 컬렉션 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int checkValidCollection(String msg, String collectionName) { + + int chk = getCollIdx(collectionName); + if(chk == -1 && mergeCollections != null) { //merge collection에서 check를 다시한다. + chk = getMergeCollIdx(collectionName); + } + + if(chk == -1) { + appendWarnings("[WARNING] "+msg+" [" + collectionName + "] Collection name is not exist."); + } + return chk; + } + + + /** + * 필드를 체크하는 각 함수에서 사용된다. + * @param collectionName 검색하고자 하는 컬렉션 + * @param field 필드 이름 + * @param item WNCollection에 지정된 상수 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int checkValidField(String collectionName, String field, int item) { + + int idx = getCollIdx(collectionName); + String[] fields = split(wncol.COLLECTION_INFO[idx][item], ","); + int chk = findArrayValue(field, fields); + return chk; + } + + + /** + * 필드를 체크하는 각 함수에서 사용된다. + * @param collectionName 검색하고자 하는 컬렉션 + * @param field 필드 이름 + * @param item WNCollection에 지정된 상수 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int checkValidDocumentField(String collectionName, String field, int item) { + int chk = -1; + int idx = getCollIdx(collectionName); + if(idx != -1){ + String[] fields = split(wncol.COLLECTION_INFO[idx][item], ","); + int length = fields.length; + + for(int i=0; i 0 && documentFields[0].equals(field)){ + chk = i; + } + } + }else{ //merge collection도 체크한다. + idx = getMergeCollIdx(collectionName); + if(idx != -1) { + String[] fields = split(wncol.MERGE_COLLECTION_INFO[idx][MERGE_RESULT_FIELD], ","); + int length = fields.length; + for(int i=0; i"}; + for(int i=0; i < replaceChar.length; i++) { + value = replace(value, replaceChar[i], " "); + } + + String[] fieldName = split(value, " "); + for(int i=0; i < fieldName.length; i++) { + int index = 0; + if(fieldName[i].indexOf(":", 0) != -1) { + index = fieldName[i].indexOf(":", 0); + fieldName[i] = fieldName[i].trim().substring(0, index); + } + // 확장검색 필드 검사 + if(checkValidField(collectionName, fieldName[i], PREFIX_FIELD) == -1) { + appendWarnings("[WARNING] " + msg + "[" + collectionName + "] " +fieldName[i]+ " is not prefix field."); + chk = -1; + } + } + return chk; + } + + /** + * 검색하고자 하는 컬렉션의 쿼리 필드 값을 체크한다. + * @param msg 화면에 출력할 메시지 + * @param collectionName 검색하고자 하는 컬렉션 + * @param value 체크하고자 하는 필드 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int checkCollectionQueryFieldName(String msg, String collectionName, String value) { + int chk = 0; + String[] replaceChar = new String[]{"!", "|", "(", ")", "[", "]", "{", "}", "\"", "^", "<", ">"}; + for(int i=0; i < replaceChar.length; i++) { + value = replace(value, replaceChar[i], " "); + } + + String[] fieldName = split(value, " "); + for(int i=0; i < fieldName.length; i++) { + int index = 0; + if(fieldName[i].indexOf(":", 0) != -1) { + index = fieldName[i].indexOf(":", 0); + fieldName[i] = fieldName[i].trim().substring(0, index); + } + String[] fields = fieldName[i].split(","); + for(int j=0;j < fields.length; j++){ + // 컬렉션 쿼리 필드 검사 + if(checkValidField(collectionName, fields[j], PREFIX_FIELD) != -1) { + appendWarnings("[WARNING] " + msg + "[" + collectionName + "] " +fields[j]+ " is prefix field."); + chk = -1; + } + } + } + return chk; + } + + /** + * 검색하고자 하는 컬렉션의 필터링 필드 값을 체크한다. + * @param msg 화면에 출력할 메시지 + * @param collectionName 검색하고자 하는 컬렉션 + * @param value 체크하고자 하는 필드 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int checkFilterFieldName(String msg, String collectionName, String value) { + int chk = 0; + String[] replaceChar = new String[]{"|", "(", ")", "[", "]", "{", "}", "\"", "^"}; + for(int i=0; i < replaceChar.length; i++) { + value = replace(value, replaceChar[i], " "); + } + + String[] fieldName = split(value, " "); + for(int i=0; i < fieldName.length; i++) { + int index = 0; + if(fieldName[i].indexOf("<", 0) != -1) { + index = fieldName[i].indexOf("<", 0); + fieldName[i] = fieldName[i].trim().substring(0, index); + // 필터링 검색 필드 검사 + if(checkValidField(collectionName, fieldName[i], FAST_ACCESS) == -1) { + appendWarnings("[WARNING] " + msg + " [" + collectionName + "] " +fieldName[i]+ " is not fastaccess field."); + chk = -1; + } + } + } + return chk; + } + + + /** + * 검색결과의 지정 범위를 체크한다. + * @param collectionName 검색하고자 하는 컬렉션 + * @param highlight 하이라이팅 옵션 값 + * @param startPos 검색결과 시작 offset + * @param resultCnt 검색 결과 count + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int checkSetPageInfo(String collectionName, int highlight, int startPos, int resultCnt) { + int chk = 0; + if(highlight < 0 || highlight> 3 || startPos < 0 || resultCnt < 0) { + appendWarnings("[WARNING] [] [checkSetPageInfo] [" + collectionName + "] Highlight: '" + + highlight + "', StartPosition: '"+startPos+ "', ResultCount: '"+resultCnt+"' is invalid value"); + return -1; + } + return chk; + } + + + /** + * 검색 정렬 필드를 체크한다. + * @param collectionName 검색하고자 하는 컬렉션 + * @param sortField 정렬필드 + * @param sortOrder 오름차순/내림차순 + * @return 성공이면 0을 반환한다. 실패면 0이 아닌 값을 반환한다. + */ + public int checkSortFieldName(String collectionName, String sortField, String sortOrder) { + if(sortField.toUpperCase().equals("DATE")) { + if(sortOrder.equals("DESC") == false && sortOrder.equals("ASC") == false) { + //DATE는 오름차순과 내림차순으로만 정렬 가능 + appendWarnings("[ERROR] [w3AddSortField] [checkSortFieldName] [" + collectionName + "] Date sortOrder is '" + sortOrder + "'. Only DESC or ASC is allowed."); + return -1; + } + } else if(sortField.toUpperCase().equals("RANK")) { + if(sortOrder.equals("DESC") == false) { + //RANK는 내림차순(1)으로만 정렬 가능 + appendWarnings("[ERROR] [w3AddSortField] [checkSortFieldName] [" + collectionName + "] RANK sortOrder is '" + sortOrder +"' Only DESC is allowed."); + return -1; + } + }else if(sortField.toUpperCase().equals("WEIGHT")) { + if(sortOrder.equals("DESC") == false && sortOrder.equals("ASC") == false) { + //WEIGHT는 오름차순(0)과 내림차순(1)으로만 정렬 가능 + appendWarnings("[ERROR] [w3AddSortField] [checkSortFieldName] [" + collectionName + "] WEIGHT sortOrder is '" + sortOrder +"' Only DESC or ASC is allowed"); + return -1; + } + }else { + // 정렬 필드 검사 + if(checkValidDocumentField(collectionName, sortField, RESULT_FIELD) == -1) { + appendWarnings("[ERROR] [w3AddSortField] [checkSortFieldName] [" + collectionName + "] '" + sortField + "' is not exist."); + return -1; + } + if(checkValidField(collectionName, sortField, FAST_ACCESS) == -1) { + // fastaccess가 지정되지 않은 필드에서 속도 느릴수 있음. + appendWarnings("[WARNING] [w3AddSortField] [checkSortFieldName] [" + collectionName + "] " +sortField+ " is not fastaccess field."); + } + } + return 0; + } + + /** + * 디버그 메시지를 구성한다. + * @param isRealQuery + * @param query + */ + public void debugMsg(boolean isRealQuery, String query){ + sb.append("[CHARSET] " + CHARSET + " [QUERY] " + query); + sb.append("
    [w3ConnectServer] [IP] " + SEARCH_IP + " [PORT] " + SEARCH_PORT + " [TIMEOUT]" + CONNECTION_TIMEOUT); + if(!isUidSrch) { + sb.append("
    [w3RecvResult] Mode : " + this.connectionOpt); + if(isRealQuery){ + sb.append("
    [W3ReceiveRecentQueryListResult] Set Count : " + REALTIME_COUNT); + } + } + + sb.append("
    "); + for(int i=0; i < collections.length; i++) { + int idx = getCollIdx(collections[i]); + + if(idx < 0){ + return; + } + int count = 0; + + // 컬렉션 정보 + String content = wncol.COLLECTION_INFO[idx][INDEX_NAME]; + if(content != null && !content.equals("")){ + sb.append("
    [w3AddCollection] " + content + ""); + } + if(!isUidSrch) { + //페이지 설정 + content = wncol.COLLECTION_INFO[idx][PAGE_INFO]; + if(content != null && !content.equals("")){ + sb.append("
    [w3SetPageInfo] " + content); + } + + //분석 정보 + content = wncol.COLLECTION_INFO[idx][ANALYZER]; + if(content != null && !content.equals("")){ + sb.append("
    [w3SetQueryAnalyzer] " + content); + } + + //하이라이팅 정보 + count = this.hiSum; + if(count >= 0){ + switch(count){ + case 0: + content = " : Highlight off, Snippet off.";break; + case 1: + content = " : Highlight off, Snippet on.";break; + case 2: + content = " : Highlight on, Snippet off.";break; + case 3: + content = " : Highlight on, Snippet on.";break; + default: + content = " : wrong infomation"; + } + sb.append("
    [w3SetQueryAnalyzer] " + count + content); + } + + //정렬 정보 + content = wncol.COLLECTION_INFO[idx][SORT_FIELD]; + if(content != null && !content.equals("")){ + sb.append("
    [w3AddSortField] " + content); + } + + //검색 필드 정보 + String search_field = wncol.COLLECTION_INFO[idx][SEARCH_FIELD]; + String[] searchField = search_field.split(","); + + content = wncol.COLLECTION_INFO[idx][SEARCH_FIELD]; + if(content != null && !content.equals("")){ + sb.append("
    [w3AddSearchField] " ); + for(int k = 0; k[w3SetDateRange] " + content); + } + + //확장 검색 정보 + content = wncol.COLLECTION_INFO[idx][EXQUERY_FIELD]; + if(content != null && !content.equals("")){ + sb.append("
    [w3SetPrefixQuery] " + content.replaceAll("<", "<").replaceAll(">", ">")); + } + + //카테고리 부스트 정보 + content = wncol.COLLECTION_INFO[idx][CATEGORY_BOOST]; + if(content != null && !content.equals("")){ + sb.append("
    [w3SetBoostCategory] " + content); + } + + //컬렉션 쿼리 정보 + content = wncol.COLLECTION_INFO[idx][COLLECTION_QUERY]; + if(content != null && !content.equals("")){ + sb.append("
    [w3SetCollectionQuery] " + content.replaceAll("<", "<").replaceAll(">", ">")); + } + + //필터 정보 + content = wncol.COLLECTION_INFO[idx][FILTER_OPERATION]; + if(content != null && !content.equals("")){ + sb.append("
    [w3SetFilterQuery] " + content.replaceAll("<", "<").replaceAll(">", ">")); + } + + //그룹화 정보 + content = wncol.COLLECTION_INFO[idx][GROUP_BY]; + if(content != null && !content.equals("")){ + sb.append("
    [w3SetGroupBy] " + content); + } + + //그룹 정렬 정보 + content = wncol.COLLECTION_INFO[idx][GROUP_SORT_FIELD]; + if(content != null && !content.equals("")){ + sb.append("
    [w3AddSortFieldInGroup] " + content); + } + + + if(!wncol.COLLECTION_INFO[idx][GROUP_BY].equals("")){ + //전체 그룹 개수 정보 + count = getResultGroupCount(collections[i]); + if(count > 0){ + sb.append("
    [w3GetGroupBycount] " + count); + } + } + + // dedup field + content = wncol.COLLECTION_INFO[idx][DEDUP_SORT_FIELD]; + if(content != null && !content.equals("")){ + sb.append("
    [w3SetDuplicateDetectionCriterionField] " + content); + } + } + + //결과 필드 정보 + content = wncol.COLLECTION_INFO[idx][RESULT_FIELD]; + if(content != null && !content.equals("")){ + sb.append("
    [w3AddDocumentField] " + content); + } + sb.append("
    "); + } + + //merge collection debug info + if(mergeCollections != null) { + for(int i=0; i < mergeCollections.length; i++) { + int idx = getMergeCollIdx(mergeCollections[i]); + + if(idx < 0){ + return; + } + + //merge collection name 정보 + String content = wncol.MERGE_COLLECTION_INFO[idx][MERGE_COLLECTION_NAME]; + String mappingColl = wncol.MERGE_COLLECTION_INFO[idx][MERGE_MAPPING_COLLECTION_NAME]; + if(content != null && !content.equals("") && mappingColl != null && !mappingColl.equals("")){ + sb.append("
    [w3AddMergeCollection] " + content + ", [Collection Name]" + mappingColl + ""); + } + + content = wncol.MERGE_COLLECTION_INFO[idx][MERGE_PAGE_INFO]; + if(content != null && !content.equals("")){ + sb.append("
    [w3SetMergePageInfo] " + content); + } + + content = wncol.MERGE_COLLECTION_INFO[idx][MERGE_RESULT_FIELD]; + String mappingDocs = wncol.MERGE_COLLECTION_INFO[idx][MERGE_MAPPING_RESULT_FIELD]; + if(content != null && !content.equals("") && mappingDocs != null && !mappingDocs.equals("")){ + sb.append("
    [w3AddMergeDocumentField] " + content + ", [Collection Document Fields]" + mappingDocs); + } + + content = wncol.MERGE_COLLECTION_INFO[idx][MERGE_MULTI_GROUP_BY_FIELD]; + String mappingMulti = wncol.MERGE_COLLECTION_INFO[idx][MERGE_MAPPING_MULTI_GROUP_BY_FIELD]; + if(content != null && !content.equals("") && mappingMulti != null && !mappingMulti.equals("")){ + sb.append("
    [w3AddMergeMultiGroupByField] " + content + ", [Collection Multi-Groupby Fields]" + mappingMulti); + } + + content = wncol.MERGE_COLLECTION_INFO[idx][MERGE_CATEGORY_GROUPBY_FIELD]; + String mappingCategory = wncol.MERGE_COLLECTION_INFO[idx][MERGE_MAPPING_CATEGORY_GROUPBY_FIELD]; + if(content != null && !content.equals("") && mappingCategory != null && !mappingCategory.equals("")){ + sb.append("
    [w3AddMergeCategoryGroupByField] " + content + ", [Collection Category Groupby Fields]" + mappingCategory); + } + } + + sb.append("
    "); + } + } + + /** + * 경고 메시지를 버퍼에 저장한다. + * @param msg 경고 메시지 + */ + public void appendWarnings(String msg) { + if(isDebug && !msg.equals("")){ + warningMsg.append(msg + "
    "); + } + } + + + /** + * 에러 메시지를 버퍼에 저장한다. + * @param msg 에러 메시지 + */ + public void appendErrors(String msg) { + if(!msg.equals("")){ + sb.append("
    " + msg + "
    "); + } + } + + /** + * 디버그 정보를 화면에 출력할 경우 메시지를 반환한다. + * @return 디버그 정보 반환 + */ + public String printDebug() { + if(!warningMsg.toString().equals("")){ + return sb.toString() + "
    " + warningMsg.toString()+ "
    "; + } + return sb.toString(); + } + + /** + * 관리도구의 경로를 지정한다. + * @param managerURL 관리도구 경로 + */ + public void setManagerMode(String managerURL){ + if(managerURL != null && !managerURL.trim().equals("")){ + this.managerURL = managerURL; + } + } + + /* + * 매니저 동작 준비 테그를 생성한다. + * @param colName 컬렉션 명 + * @param idx 결과 인덱스 + * @param docid 특정 결과 DOCID + * @return 매니저 동작 준비 테그 + */ + public String getManagerOperationTag(String colName, int idx, String docid){ + String uniid = colName + "_" + idx; + if (!this.managerURL.equals("")){ + return "" + docid + " "; + }else{ + return ""; + } + } + + /* + * 매니저 동작 테그를 생성한다. + * @param transferURL xml 파싱 파일 경로 + * @return 매니저 동작 테그 + */ + public String getManagerActionTag(String transferURL) { + if (!this.managerURL.equals("")) + return ""; + else + return ""; + } + + /** + * 검색 결과 페이징 번호를 출력한다. + * @param startCount 검색 결과 시작 offset + * @param totalCount 검색 결과의 총 개수 + * @param viewListCount 검색결과로 요청된 offset의 개수 + * @param bundleCount 페이지 이동할 개수 + * @return 페이징 문자열 반환 + */ + public String getPageLinks(int startCount, int totalCount, int viewListCount, int bundleCount) { + StringBuffer sbRet = new StringBuffer(); + WNAnchor wnanchor = getPageAnchor(startCount, totalCount, viewListCount, bundleCount); + + if(wnanchor.getFirstPage() != -1) { + sbRet.append("이전페이지"); + } else { + sbRet.append("이전페이지"); + } + + int pageCount = wnanchor.getPageCount(); + String pages[][] = wnanchor.getPages(); + + for(int i=0; i" + pages[i][0] + ""); + } else { + sbRet.append(" "+pages[i][0]+" "); + } + } + + if(wnanchor.getBundleNext() != -1) { + sbRet.append("다음페이지"); + } else { + sbRet.append("다음페이지"); + } + + return sbRet.toString(); + } + + /** + * 페이지 Anchor를 생성한다. + * @param startNum 검색 결과 시작 offset + * @param totalcount 검색 결과의 총 개수 + * @param resultCnt 검색결과로 요청된 offset의 개수 + * @param anchorSacle 페이지 이동할 개수 + * @return WNAnchor Object를 반환 + */ + public WNAnchor getPageAnchor(int startNum, int totalcount, int resultCnt, int anchorSacle) { + WNAnchor anchor = new WNAnchor(); + + if(totalcount == 0) { //등록된 정보가 없으면 페이지 Anchor를 생성 하지 않는다. + return anchor; + } + + int curBunbleNum = startNum / (resultCnt * anchorSacle); + int totalPageCnt = totalcount / resultCnt; + if(totalcount % resultCnt > 0) { + totalPageCnt++; + } + + anchor.setTotalPgCount(totalPageCnt); // 전체 페이지 세팅 + + if ( startNum > 0){ // 이전 페이지 + int beforePg = startNum - resultCnt; + anchor.setBefore(beforePg); + } + + if( startNum+resultCnt < totalcount ){ // 다음페이지 + int nextPg = startNum + resultCnt; + anchor.setNext(nextPg); + } + + //번들 뒤로 이동 + int bunbleBeforePg = (curBunbleNum-1) * resultCnt * anchorSacle; //이전 번들로 이동하는 번호 + if(curBunbleNum > 0){ + anchor.setBundleBefore(bunbleBeforePg); + } + + //번들 앞으로 이동 + int bundleNextPg = (1 + curBunbleNum) * anchorSacle * resultCnt; + if( totalPageCnt >= anchorSacle && (curBunbleNum+1) * anchorSacle < totalPageCnt ){ + anchor.setBundleNext(bundleNextPg); + } + + //맨처음.. + if(startNum != 0 && curBunbleNum != 0){ + anchor.setFirstPage(0); + } + //맨끝... + int lastPage = (resultCnt * totalPageCnt) - resultCnt ; + if( totalPageCnt >= anchorSacle && (curBunbleNum+1) * anchorSacle < totalPageCnt ) { + anchor.setLastPage(lastPage); + } + + int pageCount = 1; + String[][] pages = new String[anchorSacle][2]; + for(int i = 0; i < anchorSacle; i++) { + int startCnt = ((curBunbleNum * anchorSacle) + i) * resultCnt; + int pageNum = (curBunbleNum * anchorSacle) + i + 1; + if(startCnt < totalcount) { + if (startCnt != startNum) { + pages[i][0] = Integer.toString(pageNum); + pages[i][1] = Integer.toString(startCnt); + } else { + pages[i][0] = Integer.toString(pageNum); + pages[i][1] = "-1"; + anchor.setCurPageNumber(pageNum); + } + anchor.setPageCount(pageCount); + pageCount++; + } + } + anchor.setPages(pages); + return anchor; + } + + + + /** + * 검색 결과 페이징 번호를 출력한다. + * @param startCount 검색 결과 시작 offset + * @param totalCount 검색 결과의 총 개수 + * @param viewListCount 검색결과로 요청된 offset의 개수 + * @param bundleCount 페이지 이동할 개수 + * @return 페이징 문자열 반환 + */ + public String getPageLinksWebAccess(String base, String url, int startCount, int totalCount, int viewListCount, int bundleCount) { + + String RequestURI = base; + String RequestURL = url; + + StringBuffer sbRet = new StringBuffer(); + WNAnchor wnanchor = getPageAnchor(startCount, totalCount, viewListCount, bundleCount); + String ppreImg=""; + String preImg=""; + String nextImg=""; + String nnextImg=""; + ppreImg = ""; + preImg = ""; + nextImg = ""; + nnextImg = ""; + + if(wnanchor.getFirstPage() != -1) { + sbRet.append(""+ppreImg+"  "); + } else { + sbRet.append(ppreImg+" "); + } + if(wnanchor.getBundleBefore() != -1) { + sbRet.append(""+preImg+"  "); + } else { + sbRet.append(preImg+" "); + } + + int pageCount = wnanchor.getPageCount(); + String pages[][] = wnanchor.getPages(); + + for(int i=0; i" + pages[i][0]+""); + } else { + sbRet.append(" "+pages[i][0]+" "); + } + if(pageCount > i+1) { + sbRet.append(" | ");// 페이지 경계 1 | 2 | 3 + } + } + if(wnanchor.getBundleNext() != -1) { + sbRet.append("  "+nextImg+""); + } else { + sbRet.append("  "+nextImg+""); + } + if(wnanchor.getLastPage() != -1) { + sbRet.append("  "+nnextImg+""); + } else { + sbRet.append("  "+nnextImg+""); + } + return sbRet.toString(); + } + + + public String getCollectionKorName(String col) { + String value = ""; + for ( int idx=0;idx< COLLECTIONS.length; idx++){ + String coll = wncol.COLLECTION_INFO[idx][COLLECTION_NAME].trim(); + if ( coll.equals(col) ) + return wncol.COLLECTION_INFO[idx][COLLECTION_KOR]; + + } + + return value; + } + + public String getCollectionName(String col) { + String value = ""; + for ( int idx=0;idx< COLLECTIONS.length; idx++){ + if ( COLLECTIONS[idx].equals(col) ) { + return COLLECTIONS_NAME[idx]; + } + } + + return value; + } + } +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/api/WNUtils.jsp b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/api/WNUtils.jsp new file mode 100644 index 00000000..ebea010c --- /dev/null +++ b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/common/api/WNUtils.jsp @@ -0,0 +1,481 @@ +<%@ page import="java.text.DecimalFormat, + java.text.FieldPosition, + java.io.UnsupportedEncodingException, + java.text.*, + javax.xml.parsers.*, + org.w3c.dom.*, + org.xml.sax.SAXException, + java.util.*"%><%! +/** + * file: WNUtils.jsp + * subject: 검색 구현에 필요한 일반 메소드를 구현한다. + * ------------------------------------------------------------------------ + * @original author: KoreaWISEnut + * @edit author: KoreaWISEnut + * @update date 2006.12.03 + * ------------------------------------------------------------------------ + */ + /* + * 문자셋 관련 설정 + */ + final static String ENCODE_ORI = "EUC-KR"; + final static String ENCODE_NEW = "UTF-8"; + + /** + * 문자 배열 값을 검색하여 키 값을 리턴 + * @param fieldName + * @param value + * @param operation + * @return + */ + private int findArrayValue(String find, String[] arr) { + int findKey = -1; + for (int i = 0; i < arr.length; i++) { + if (find.equals(arr[i])){ + findKey = i; + break; + } + } + return findKey; + } + + /** + * + * @param s + * @param findStr + * @param replaceStr + * @return + */ + public static String replace(String s, String findStr, String replaceStr){ + int pos; + int index = 0; + + while ((pos = s.indexOf(findStr, index)) >= 0) { + s = s.substring(0, pos) + replaceStr + s.substring(pos + findStr.length()); + index = pos + replaceStr.length(); + } + + return s; + } + + /** + * + * @param s + * @return + */ + public static String trimDuplecateSpace(String s){ + StringBuffer sb = new StringBuffer(); + for(int i=0; i 0) { + try { + str = new String(str.getBytes(oriEncode), newEncode); + } catch (UnsupportedEncodingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + return str; + } + + + /** + * 구분자를 가지고 있는 문자열을 구분자를 기준으로 나누어주는 메소드 + * @param splittee 구분자를 가진 문자열 + * @param splitChar 구분자 + * @return + */ + public static String[] split(String splittee, String splitChar){ + String taRetVal[] = null; + StringTokenizer toTokenizer = null; + int tnTokenCnt = 0; + + try { + toTokenizer = new StringTokenizer(splittee, splitChar); + tnTokenCnt = toTokenizer.countTokens(); + taRetVal = new String[tnTokenCnt]; + + for(int i=0; i= 0 ) { + params[idx] = param + "=" + value; + } + + sURL = sURL + params[idx] ; + + if ( idx + 1 < params.length) + sURL = sURL + "&" ; + + } + + } else { + sURL = param + "=" + value; + } + + sURL = base + "?" + sURL; + + + return sURL; + + } + + /** + * null체크 + **/ + public String nvl(String parameter, String default_value) { + String req_value = parameter !=null ? parameter:default_value; + return req_value; + } + + /** + * request null체크, uncoding + **/ + public String getCheckReqUnocode(javax.servlet.http.HttpServletRequest req, String parameter, String default_value) { + String req_value = req.getParameter(parameter)!=null ? encoding(req.getParameter(parameter), ENCODE_ORI, ENCODE_NEW):default_value; + return req_value; + } + + /** + * request Array null체크, uncoding + **/ + public String[] getCheckReqsUnocode(javax.servlet.http.HttpServletRequest req, String parameter, String[] default_value) { + String[] req_value = req.getParameterValues(parameter); + String[] tmp = null; + int c = 0; + if(req_value!=null) { + tmp = new String[req_value.length]; + for(int i=0; i"); + sb.append("
      "); + sb.append("
    • \"\" " + eQuery.getTextContent() + "
    • "); + sb.append("
    • "); + + if (eQuery.getAttribute("updown") == "U") { + sb.append("\"상승\""); + } else if (eQuery.getAttribute("updown") == "D") { + sb.append("\"하락\""); + } else if (eQuery.getAttribute("updown") == "N") { + sb.append("\"신규\""); + } else if (eQuery.getAttribute("updown") == "C") { + sb.append("-"); + } + + sb.append("
    • "); + sb.append("
    • " + eQuery.getAttribute("count") + "
    • "); + sb.append(" "); + sb.append("
    "); + sb.append(""); + } + } + + } catch (ParserConfigurationException e) { + e.printStackTrace(); + } catch (SAXException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + return sb.toString(); + }*/ + + /** + * 문자의 길이를 지정된 길이만큼 잘라서 반환하는 함수
    + * 한글과 영문,숫자에 따라서 길이를 다르게 계산한다. + * @param str 변환할 문자열
    + * byteLength 문자열의 길이 + * @return rtStr 지정된 길이로 수정된 문자열을 반환한다. + */ + public static String getSubString(String str, int byteLength) { + if (str==null) { + return ""; + } + + StringBuffer rtStr = new StringBuffer(); + + rtStr.append(str.substring(0,getLengthInString(str,byteLength))); + + if(rtStr.length() != str.length()) { + rtStr.append("..."); + } + + return rtStr.toString(); + } + + + /** + * 문자의 길이를 한글 2자 영문,숫자를 1자로 계산하여
    + * 문자열의 길이를 반환하는 함수 + * @param str 변환할 문자열
    + * byteLength 문자열의 길이 + * @return int 문자열의 길이 + */ + public static int getLengthInString(String str, int byteLength) + { + int length = str.length(); + int retLength = 0; + int tempSize = 0; + int asc; + + for(int i = 1; i<=length; i++) { + asc = (int)str.charAt(i-1); + + if(asc > 127) { + if ( byteLength > tempSize ) { + tempSize += 2; + retLength++; + } + } else { + if ( byteLength > tempSize ) { + tempSize++; + retLength++; + } + } + } + + return retLength; + } + + /** + * request XSS 처리 + **/ + public String getCheckReqXSS(javax.servlet.http.HttpServletRequest req, String parameter, String default_value) { + String req_value = (req.getParameter(parameter) == null || req.getParameter(parameter).equals("")) ? default_value : req.getParameter(parameter); + req_value = req_value.replaceAll("",""); + req_value = req_value.replaceAll(">",""); + req_value = req_value.replaceAll(">",""); + return req_value; + } +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_application.jsp b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_application.jsp new file mode 100644 index 00000000..70d837a5 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_application.jsp @@ -0,0 +1,66 @@ +<%@ page contentType="text/html; charset=UTF-8"%> + +<% +/* +* subject: application 페이지 +* @original author: SearchTool +*/ + thisCollection = "application"; + if (collection.equals("ALL") || collection.equals(thisCollection)) { + int count = wnsearch.getResultCount(thisCollection); + int thisTotalCount = wnsearch.getResultTotalCount(thisCollection); + + if ( thisTotalCount > 0 ) { +%> +
    +

    신청관리

    +<% + for(int idx = 0; idx < count; idx ++) { + String DOCID = wnsearch.getField(thisCollection,"DOCID",idx,false); + String COMPANY_CEO = wnsearch.getField(thisCollection,"COMPANY_CEO",idx,true); + String APPLCNT_COMPANY = wnsearch.getField(thisCollection,"APPLCNT_COMPANY",idx,true); + String RESPONDENT_CEO = wnsearch.getField(thisCollection,"RESPONDENT_CEO",idx,true); + String RESPONDENT_COMPANY = wnsearch.getField(thisCollection,"RESPONDENT_COMPANY",idx,true); + String DATE = wnsearch.getField(thisCollection,"DATE",idx,false); + String CASE_GUBUN = wnsearch.getField(thisCollection,"CASE_GUBUN",idx,false); + String MEMBER_NAME = wnsearch.getField(thisCollection,"MEMBER_NAME",idx,false); + String FILE_NAME = wnsearch.getField(thisCollection,"FILE_NAME",idx,true); + String RCEPT_NO = wnsearch.getField(thisCollection,"RCEPT_NO",idx,true); + String CONTACT_HP = wnsearch.getField(thisCollection,"CONTACT_HP",idx,false); + String P_CONTACT_HP = wnsearch.getField(thisCollection,"P_CONTACT_HP",idx,false); + String APPLICATION_OBJ = wnsearch.getField(thisCollection,"APPLICATION_OBJ",idx,true); + String ROAD_ADDR = wnsearch.getField(thisCollection,"ROAD_ADDR",idx,true); + String DOC_CHECK = wnsearch.getField(thisCollection,"DOC_CHECK",idx,true); + String ALIAS = wnsearch.getField(thisCollection,"ALIAS",idx,false); + + String URL = "/gtm/case/trublreqstmng/administView/View.do?type=TRS_EDIT&rceptNo="+DOCID; + + +%> +
    + <%=RCEPT_NO%> +
    신청인: <%=COMPANY_CEO%>, 신청인 상호명: <%=APPLCNT_COMPANY%>, 신청인소재지 <%=ROAD_ADDR %>, 신청경로 <%=DOC_CHECK %>
    +
    신청인담당자 연락처: <%=CONTACT_HP%>
    +
    피신청인: <%=RESPONDENT_CEO%>, 피신청인 상호명: <%=RESPONDENT_COMPANY%>
    +
    피신청인담당자 연락처: <%=P_CONTACT_HP%>
    +
    신청취지: <%=APPLICATION_OBJ%>
    +
    분쟁유형: <%=CASE_GUBUN%>
    +
    담당자: <%=MEMBER_NAME%>
    + + 등록일 : <%=DATE %> +
    + + <% + } + + if ( collection.equals("ALL") && thisTotalCount > TOTALVIEWCOUNT ) { +%> + 더보기 +<% + } + %> +
    + <% + } + } +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_board.jsp b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_board.jsp new file mode 100644 index 00000000..edc85ecd --- /dev/null +++ b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_board.jsp @@ -0,0 +1,51 @@ +<%@ page contentType="text/html; charset=UTF-8"%><% +/* +* subject: board 페이지 +* @original author: SearchTool +*/ + thisCollection = "board"; + if (collection.equals("ALL") || collection.equals(thisCollection)) { + int count = wnsearch.getResultCount(thisCollection); + int thisTotalCount = wnsearch.getResultTotalCount(thisCollection); + + if ( thisTotalCount > 0 ) { +%> +
    +

    게시판

    +<% + for(int idx = 0; idx < count; idx ++) { + String DOCID = wnsearch.getField(thisCollection,"DOCID",idx,false); + String TITLE = wnsearch.getField(thisCollection,"TITLE",idx,false); + String CONTENT = wnsearch.getField(thisCollection,"CONTENT",idx,false); + String REGID = wnsearch.getField(thisCollection,"REGID",idx,false); + String DATE = wnsearch.getField(thisCollection,"DATE",idx,false); + String TEAM_NO = wnsearch.getField(thisCollection,"TEAM_NO",idx,false); + String TEAM_GUBUN = wnsearch.getField(thisCollection,"TEAM_GUBUN",idx,false); + String ALIAS = wnsearch.getField(thisCollection,"ALIAS",idx,false); + TITLE= wnsearch.getKeywordHl(TITLE,"",""); + CONTENT= wnsearch.getKeywordHl(CONTENT,"",""); + REGID= wnsearch.getKeywordHl(REGID,"",""); + DATE= wnsearch.getKeywordHl(DATE,"",""); + String URL = "/gtm/case/team/board/view.do?fileFuncType=team&page=1&teamNo="+DOCID; + +%> +
    + <%=TITLE%> +
    내용: <%=CONTENT %>
    +
    작성자: <%=REGID %>
    + 작성일: <%=DATE %> +
    + <% + } + + if ( collection.equals("ALL") && thisTotalCount > TOTALVIEWCOUNT ) { +%> + 더보기 +<% + } + %> +
    + <% + } + } +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_completed.jsp b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_completed.jsp new file mode 100644 index 00000000..0176512e --- /dev/null +++ b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_completed.jsp @@ -0,0 +1,68 @@ +<%@ page contentType="text/html; charset=UTF-8"%><% +/* +* subject: completed 페이지 +* @original author: SearchTool +*/ + thisCollection = "completed"; + if (collection.equals("ALL") || collection.equals(thisCollection)) { + int count = wnsearch.getResultCount(thisCollection); + int thisTotalCount = wnsearch.getResultTotalCount(thisCollection); + + if ( thisTotalCount > 0 ) { +%> +
    +

    사건종료관리

    +<% + for(int idx = 0; idx < count; idx ++) { + String DOCID = wnsearch.getField(thisCollection,"DOCID",idx,true); + String DATE = wnsearch.getField(thisCollection,"DATE",idx,false); + String CASE_GUBUN = wnsearch.getField(thisCollection,"CASE_GUBUN",idx,false); + String GUBUN_NM = wnsearch.getField(thisCollection,"GUBUN_NM",idx,false); + String EXAMINER_NM = wnsearch.getField(thisCollection,"EXAMINER_NM",idx,false); + String MEDIATION_BIG = wnsearch.getField(thisCollection,"MEDIATION_BIG",idx,false); + String MEDIATION_SMALL = wnsearch.getField(thisCollection,"MEDIATION_SMALL",idx,false); + String CASE_DATE = wnsearch.getField(thisCollection,"CASE_DATE",idx,false); + String CASE_NO = wnsearch.getField(thisCollection,"CASE_NO",idx,false); + String COMPANY_CEO = wnsearch.getField(thisCollection,"COMPANY_CEO",idx,true); + String APPLCNT_COMPANY = wnsearch.getField(thisCollection,"APPLCNT_COMPANY",idx,true); + String RESPONDENT_CEO = wnsearch.getField(thisCollection,"RESPONDENT_CEO",idx,true); + String RESPONDENT_COMPANY = wnsearch.getField(thisCollection,"RESPONDENT_COMPANY",idx,true); + String CONTACT_HP = wnsearch.getField(thisCollection,"CONTACT_HP",idx,false); + String P_CONTACT_HP = wnsearch.getField(thisCollection,"P_CONTACT_HP",idx,false); + String APPLICATION_OBJ = wnsearch.getField(thisCollection,"APPLICATION_OBJ",idx,true); + String ROAD_ADDR = wnsearch.getField(thisCollection,"ROAD_ADDR",idx,true); + String KPI_ASSETS = wnsearch.getField(thisCollection,"KPI_ASSETS",idx,true); + String CONFERENCE_NAMES = wnsearch.getField(thisCollection,"CONFERENCE_NAMES",idx,false); + String FILE_NAME = wnsearch.getField(thisCollection,"FILE_NAME",idx,true); + String FIX_DAY = wnsearch.getField(thisCollection,"FIX_DAY",idx,false); + String ALIAS = wnsearch.getField(thisCollection,"ALIAS",idx,false); + String URL = "/gtm/case/trublend/trublendView/View.do?type=TP_RCEPTEDIT&caseNo="+java.net.URLEncoder.encode(CASE_NO, "UTF-8"); + +%> +
    + <%=DOCID %> +
    신청인: <%=COMPANY_CEO %>, 피신청인: <%=APPLCNT_COMPANY %>, 신청인소재지: <%=ROAD_ADDR %>
    +
    신청인 담당자 연락처: <%=CONTACT_HP %>
    +
    피신청인: <%=RESPONDENT_CEO %>, 피신청인: <%=RESPONDENT_COMPANY %>
    +
    피신청인 담당자 연락처: <%=P_CONTACT_HP %>
    +
    신청취지: <%=APPLICATION_OBJ%>
    +
    조정결과: <%=MEDIATION_BIG %> [<%=MEDIATION_SMALL %>]
    +
    접수일: <%=DATE %>, 종료회차 :<%=CONFERENCE_NAMES %>
    +
    담당자: <%=EXAMINER_NM %>
    + + 종료일자 : <%=FIX_DAY %> +
    + <% + } + + if ( collection.equals("ALL") && thisTotalCount > TOTALVIEWCOUNT ) { +%> + 더보기 +<% + } + %> +
    + <% + } + } +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_conference.jsp b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_conference.jsp new file mode 100644 index 00000000..58805fbb --- /dev/null +++ b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_conference.jsp @@ -0,0 +1,92 @@ +<%@ page contentType="text/html; charset=UTF-8"%> + + +<% + +/* +* subject: conference 페이지 +* @original author: SearchTool +*/ + thisCollection = "conference"; + if (collection.equals("ALL") || collection.equals(thisCollection)) { + int count = wnsearch.getResultCount(thisCollection); + int thisTotalCount = wnsearch.getResultTotalCount(thisCollection); + + if ( thisTotalCount > 0 ) { +%> +
    +

    협의회관리

    +<% + for(int idx = 0; idx < count; idx ++) { + String DOCID = wnsearch.getField(thisCollection,"DOCID",idx,true); + String DATE = wnsearch.getField(thisCollection,"DATE",idx,false); + String CASE_GUBUN = wnsearch.getField(thisCollection,"CASE_GUBUN",idx,false); + String STATE_PRO = wnsearch.getField(thisCollection,"STATE_PRO",idx,false); + String TITLE = wnsearch.getField(thisCollection,"TITLE",idx,false); + String MEMBER_NAME = wnsearch.getField(thisCollection,"MEMBER_NAME",idx,true); + String REPORT = wnsearch.getField(thisCollection,"REPORT",idx,false); + String CONSIDERATION = wnsearch.getField(thisCollection,"CONSIDERATION",idx,false); + String FIX_DAY = wnsearch.getField(thisCollection,"FIX_DAY",idx,false); + String PLACE = wnsearch.getField(thisCollection,"PLACE",idx,false); + String CON_DIVISION = wnsearch.getField(thisCollection,"CON_DIVISION",idx,true); //회의구분 + String STATE_PRO_NM = wnsearch.getField(thisCollection,"STATE_PRO_NM",idx,true); + String CASE_EXAMINER_NM = wnsearch.getField(thisCollection,"CASE_EXAMINER_NM",idx,false); + String FILE_NAME = wnsearch.getField(thisCollection,"FILE_NAME",idx,true); + String CFRNC_NO = wnsearch.getField(thisCollection,"CFRNC_NO",idx,true); + String APPLCNT_COMPANY = wnsearch.getField(thisCollection,"APPLCNT_COMPANY",idx,true); + String RESPONDENT_COMPANY = wnsearch.getField(thisCollection,"RESPONDENT_COMPANY",idx,true); + String COMPANY_CEO = wnsearch.getField(thisCollection,"COMPANY_CEO",idx,true); + String RESPONDENT_CEO = wnsearch.getField(thisCollection,"RESPONDENT_CEO",idx,true); + String CONTACT_HP = wnsearch.getField(thisCollection,"CONTACT_HP",idx,false); + String P_CONTACT_HP = wnsearch.getField(thisCollection,"P_CONTACT_HP",idx,false); + String APPLICATION_OBJ = wnsearch.getField(thisCollection,"APPLICATION_OBJ",idx,true); //신청취지 + String ROAD_ADDR1 = wnsearch.getField(thisCollection,"ROAD_ADDR1",idx,true); + String MEDIATION_BIG = wnsearch.getField(thisCollection,"MEDIATION_BIG",idx,true); + String MEDIATION_SMALL = wnsearch.getField(thisCollection,"MEDIATION_SMALL",idx,true); + String CASE_NO = wnsearch.getField(thisCollection,"CASE_NO",idx,true); + String ALIAS = wnsearch.getField(thisCollection,"ALIAS",idx,false); + + System.out.println("["+idx+"]"+CFRNC_NO); + + String URL = ""; + if(STATE_PRO.equals("0501000000")){ + URL = "/gtm/case/trublcfrncmng/redyView/View.do?type=N&cfrncNo="+CFRNC_NO; + }else if(STATE_PRO.equals("0502000000")){ + URL ="/gtm/case/trublcfrncmng/reportView/View.do?type=N&cfrncNo="+CFRNC_NO; + }else if(STATE_PRO.equals("0503000000")){ + URL ="/gtm/case/trublcfrncmng/endNticeView/View.do?type=N&cfrncNo="+CFRNC_NO; + } + + +%> +
    + <%=TITLE%> +
    사건번호: <%=CASE_NO %>
    +
    신청인: <%=COMPANY_CEO %>, 신청인상호명: <%=APPLCNT_COMPANY %>, 신청인 소재지:<%=ROAD_ADDR1 %>
    +
    신청인 담당자 전화번호: <%=CONTACT_HP %>
    +
    피신청인: <%=RESPONDENT_CEO %>, 피신청인상호명: <%=RESPONDENT_COMPANY %>
    +
    피신청인 담당자 전화번호: <%=P_CONTACT_HP %>
    +
    신청취지: <%=APPLICATION_OBJ%>
    +
    조정결과: <%=MEDIATION_BIG%> [<%=MEDIATION_SMALL %>]
    +
    회의구분: <%=CON_DIVISION%> [<%=STATE_PRO_NM%>]
    +
    보고안건: <%=REPORT %>, 심의안건: <%=CONSIDERATION %>
    +
    참석의원: <%=MEMBER_NAME %>
    +
    회의장소: <%=PLACE %>
    + + 개최일시 : <%=FIX_DAY%> +
    + + <% + } + + if ( collection.equals("ALL") && thisTotalCount > TOTALVIEWCOUNT ) { +%> + 더보기 +<% + } +%> +
    +<% + } + } +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_counsel.jsp b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_counsel.jsp new file mode 100644 index 00000000..27583178 --- /dev/null +++ b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_counsel.jsp @@ -0,0 +1,60 @@ +<%@ page contentType="text/html; charset=UTF-8"%><% +/* +* subject: counsel 페이지 +* @original author: SearchTool +*/ + thisCollection = "counsel"; + if (collection.equals("ALL") || collection.equals(thisCollection)) { + int count = wnsearch.getResultCount(thisCollection); + int thisTotalCount = wnsearch.getResultTotalCount(thisCollection); + + if ( thisTotalCount > 0 ) { +%> +
    +

    상담관리

    + +<% + for(int idx = 0; idx < count; idx ++) { + String DOCID = wnsearch.getField(thisCollection,"DOCID",idx,false); + String APPLCNT_NM = wnsearch.getField(thisCollection,"APPLCNT_NM",idx,false); + String MEDIATION_TYPE = wnsearch.getField(thisCollection,"MEDIATION_TYPE",idx,false); + String TITLE = wnsearch.getField(thisCollection,"TITLE",idx,false); + String DATE = wnsearch.getField(thisCollection,"DATE",idx,false); + String MANAGER_NM = wnsearch.getField(thisCollection,"MANAGER_NM",idx,false); + String NOTICE_DATE = wnsearch.getField(thisCollection,"NOTICE_DATE",idx,false); + String COUNSEL_STATE = wnsearch.getField(thisCollection,"COUNSEL_STATE",idx,false); + String COUNSEL_SEQ = wnsearch.getField(thisCollection,"COUNSEL_SEQ",idx,false); + String CIVIL_TYPE = wnsearch.getField(thisCollection,"CIVIL_TYPE",idx,false); + String NOTICE_TYPE = wnsearch.getField(thisCollection,"NOTICE_TYPE",idx,false); + String ALIAS = wnsearch.getField(thisCollection,"ALIAS",idx,false); + + String URL = ""; + if(CIVIL_TYPE.equals("online")){ + URL = "/gtm/case/onlineCounsel/view.do?type=L&fileFuncType=CIVIL_TYPE&counselSeq="+COUNSEL_SEQ; + } else if(CIVIL_TYPE.equals("law")){ + URL ="/gtm/case/onlineCounsel/lawView.do?type=L&fileFuncType=CIVIL_TYPE&counselSeq="+COUNSEL_SEQ; + } + +%> +
    + <%=TITLE %> +
    상담번호: <%=COUNSEL_SEQ %>
    +
    신청인: <%=APPLCNT_NM %>, 조정유형: <%=MEDIATION_TYPE %>
    +
    상담방식: <%=CIVIL_TYPE %>, 상담경로: <%=NOTICE_TYPE %>
    +
    진행상태: <%=COUNSEL_STATE %>, 처리일자 :<%=NOTICE_DATE %>, 담당자: <%=MANAGER_NM %>
    + 등록일: <%=DATE %> +
    +<% + } + + if ( collection.equals("ALL") && thisTotalCount > TOTALVIEWCOUNT ) { +%> + 더보기 +<% + } + %> +
    + <% + } + } +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_process.jsp b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_process.jsp new file mode 100644 index 00000000..c95ece3a --- /dev/null +++ b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/result/result_process.jsp @@ -0,0 +1,86 @@ +<%@ page contentType="text/html; charset=UTF-8"%> + +<% + /* + * subject: process 페이지 + * @original author: SearchTool + */ + thisCollection = "process"; + if (collection.equals("ALL") || collection.equals(thisCollection)) { + int count = wnsearch.getResultCount(thisCollection); + int thisTotalCount = wnsearch.getResultTotalCount(thisCollection); + + if ( thisTotalCount > 0 ) { +%> + + +
    + +

    사건처리관리

    + + <% + for(int idx = 0; idx < count; idx ++) { + String DOCID = wnsearch.getField(thisCollection,"DOCID",idx,true); + String DATE = wnsearch.getField(thisCollection,"DATE",idx,false); + String CASE_GUBUN = wnsearch.getField(thisCollection,"CASE_GUBUN",idx,false); + String GUBUN_NM = wnsearch.getField(thisCollection,"GUBUN_NM",idx,false); + String EXAMINER_NM = wnsearch.getField(thisCollection,"EXAMINER_NM",idx,false); + String STATE_NM = wnsearch.getField(thisCollection,"STATE_NM",idx,false); + String STATE_NEXT = wnsearch.getField(thisCollection,"STATE_NEXT",idx,true); + String MEDIATION_BIG = wnsearch.getField(thisCollection,"MEDIATION_BIG",idx,true); + String MEDIATION_SMALL = wnsearch.getField(thisCollection,"MEDIATION_SMALL",idx,true); + String CASE_DATE = wnsearch.getField(thisCollection,"CASE_DATE",idx,false); + String PRO_DATE = wnsearch.getField(thisCollection,"PRO_DATE",idx,false); + String TERM_CHECK = wnsearch.getField(thisCollection,"TERM_CHECK",idx,false); + String TIMHDER_ASSIGN = wnsearch.getField(thisCollection,"TIMHDER_ASSIGN",idx,false); + String FILE_NAME = wnsearch.getField(thisCollection,"FILE_NAME",idx,true); + String CASE_NO = wnsearch.getField(thisCollection,"CASE_NO",idx,false); + String COMPANY_CEO = wnsearch.getField(thisCollection,"COMPANY_CEO",idx,true); + String APPLCNT_COMPANY = wnsearch.getField(thisCollection,"APPLCNT_COMPANY",idx,true); + String RESPONDENT_CEO = wnsearch.getField(thisCollection,"RESPONDENT_CEO",idx,true); + String RESPONDENT_COMPANY = wnsearch.getField(thisCollection,"RESPONDENT_COMPANY",idx,true); + String CONTACT_HP = wnsearch.getField(thisCollection,"CONTACT_HP",idx,false); + String P_CONTACT_HP = wnsearch.getField(thisCollection,"P_CONTACT_HP",idx,false); + String APPLICATION_OBJ = wnsearch.getField(thisCollection,"APPLICATION_OBJ",idx,true); + String ROAD_ADDR = wnsearch.getField(thisCollection,"ROAD_ADDR",idx,true); + String DOC_CHECK = wnsearch.getField(thisCollection,"DOC_CHECK",idx,true); + String KPI_ASSETS1 = wnsearch.getField(thisCollection,"KPI_ASSETS1",idx,true); + String ALIAS = wnsearch.getField(thisCollection,"ALIAS",idx,false); + + + String URL = "/gtm/case/trublprocessmng/rceptEdit/Edit.do?type=TP_RCEPTEDIT&caseNo="+java.net.URLEncoder.encode(CASE_NO, "UTF-8"); + + %> + + +
    + <%=DOCID%> +
    사건구분: <%=GUBUN_NM %>
    +
    신청인: <%=COMPANY_CEO%>, 신청인 상호명: <%=APPLCNT_COMPANY%>, 신청인소재지: <%=ROAD_ADDR %>, 신청경로: <%=DOC_CHECK %>
    +
    신청인 담당자 연락처: <%=CONTACT_HP%>
    +
    피신청인: <%=RESPONDENT_CEO%>, 피신청인 상호명: <%=RESPONDENT_COMPANY%>, 자산총액: <%=KPI_ASSETS1 %>
    +
    피신청인 담당자 연락처: <%=P_CONTACT_HP%>
    +
    신청취지: <%=APPLICATION_OBJ%>
    +
    현재단계: <%=STATE_NM%>, 다음단계: <%=STATE_NEXT%>, 기간경과여부: <%=TERM_CHECK%>
    +
    조정결과: <%=MEDIATION_BIG%> [<%=MEDIATION_SMALL %>]
    +
    담당자: <%=EXAMINER_NM%>, 진행일수:
    + + 접수일 : <%=DATE%> +
    + + <% + } + + if ( collection.equals("ALL") && thisTotalCount > TOTALVIEWCOUNT ) { + %> + 더보기 + + <% + } + %> +
    +<% + } + + } +%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/searchList.jsp b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/searchList.jsp new file mode 100644 index 00000000..0b33b3dd --- /dev/null +++ b/src/main/webapp/WEB-INF/views/_extra/gtm/unifiedSearch/searchList.jsp @@ -0,0 +1,394 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ include file="./common/api/WNSearch.jsp" %><% request.setCharacterEncoding("UTF-8");%><% + + + /* + * subject: 검색 메인 페이지 + * @original author: SearchTool + */ + + //session value + String memberDept = (String)session.getAttribute("memberDept"); + String memberPosition =(String)session.getAttribute("memberPosition"); + String memberId =(String)session.getAttribute("memberId "); + + System.out.println("[memberDept]"+memberDept+" [memberPosition]"+memberPosition+" [memberId]"+memberId); + + //실시간 검색어 화면 출력 여부 체크 + boolean isRealTimeKeyword = false; + //오타 후 추천 검색어 화면 출력 여부 체크 + boolean useSuggestedQuery = true; + String suggestQuery = ""; + + //디버깅 보기 설정 + boolean isDebug = true; + + int TOTALVIEWCOUNT = 3; //통합검색시 출력건수 + int COLLECTIONVIEWCOUNT = 10; //더보기시 출력건수 + + String START_DATE = "1970.01.01"; // 기본 시작일 + + // 결과 시작 넘버 + int startCount = parseInt(getCheckReqXSS(request, "startCount", "0"), 0); //시작 번호 + String query = getCheckReqXSS(request, "query", ""); //검색어 + String collection = getCheckReqXSS(request, "collection", "ALL"); //컬렉션이름 + String rt = getCheckReqXSS(request, "rt", ""); //결과내 재검색 체크필드 + String rt2 = getCheckReqXSS(request, "rt2", ""); //결과내 재검색 체크필드 + String reQuery = getCheckReqXSS(request, "reQuery", ""); //결과내 재검색 체크필드 + String realQuery = getCheckReqXSS(request, "realQuery", ""); //결과내 검색어 + String sort = getCheckReqXSS(request, "sort", "RANK"); //정렬필드 + String range = getCheckReqXSS(request, "range", "A"); //기간관련필드 + String startDate = getCheckReqXSS(request, "startDate", START_DATE); //시작날짜 + String endDate = getCheckReqXSS(request, "endDate", getCurrentDate()); //끝날짜 + String writer = getCheckReqXSS(request, "writer", ""); //작성자 + String searchField = getCheckReqXSS(request, "searchField", ""); //검색필드 + String strOperation = "" ; //operation 조건 필드 + String exquery = "" ; //exquery 조건 필드 + int totalCount = 0; + + String[] searchFields = null; + + // 상세검색 검색 필드 설정이 되었을때 + if (!searchField.equals("")) { + // 작성자 + if (!writer.equals("")) { + exquery = ""; + } + } else { + searchField = "ALL"; + } + + String[] collections = COLLECTIONS; + + + if (reQuery.equals("1")) { + realQuery = query + " " + realQuery; + } else if (!reQuery.equals("2")) { + realQuery = query; + } + + WNSearch wnsearch = new WNSearch(isDebug,false, collections, searchFields); + + int viewResultCount = COLLECTIONVIEWCOUNT; + if ( collection.equals("ALL") || collection.equals("") ) + viewResultCount = TOTALVIEWCOUNT; + + for (int i = 0; i < collections.length; i++) { + + //출력건수 + wnsearch.setCollectionInfoValue(collections[i], PAGE_INFO, startCount+","+viewResultCount); + + //검색어가 없으면 DATE_RANGE 로 전체 데이터 출력 + if (!query.equals("") ) { + wnsearch.setCollectionInfoValue(collections[i], SORT_FIELD, sort + "/DESC,DATE/DESC"); + } else { + wnsearch.setCollectionInfoValue(collections[i], DATE_RANGE, START_DATE.replaceAll("[.]","/") + ",2030/12/31,-"); + wnsearch.setCollectionInfoValue(collections[i], SORT_FIELD, " "); + } + + //searchField 값이 있으면 설정, 없으면 기본검색필드 + if (!searchField.equals("") && !searchField.equals("WRITER") && searchField.indexOf("ALL") == -1 ) { + wnsearch.setCollectionInfoValue(collections[i], SEARCH_FIELD, searchField); + } + + //operation 설정 + if (!strOperation.equals("")) { + wnsearch.setCollectionInfoValue(collections[i], FILTER_OPERATION, strOperation); + } + + //exquery 설정 + //seed 의 세션값 [memberDept]1020000000 [memberPosition]0915000000 [memberId]null + if(collections[i].equals("process")) { + if("1020000000".equals(memberDept) || "0910000000".equals(memberPosition) ) { + + }else if("0911000000".equals(memberPosition) || "0912000000".equals(memberPosition) ) { + exquery = ""; + }else { + exquery = ""; + } + out.print("[exquery]"+exquery); + wnsearch.setCollectionInfoValue(collections[i], EXQUERY_FIELD, exquery); + + }else if(collections[i].equals("conference")) { + if("1020000000".equals(memberDept) || "0910000000".equals(memberPosition) ) { + + }else if("1004000000".equals(memberDept)) { + exquery = ""; + }else if("1005000000".equals(memberDept) ) { + exquery = ""; + }else if("1006000000".equals(memberDept) || "1007000000".equals(memberDept) ) { + exquery = ""; + }else if("1008000000".equals(memberDept)) { + exquery = ""; + }else if("1030000000".equals(memberDept)) { + exquery = ""; + }else if("1009000000".equals(memberDept)) { + exquery = ""; + }else { + exquery = ""; + } + wnsearch.setCollectionInfoValue(collections[i], EXQUERY_FIELD, exquery); + + }else if(collections[i].equals("application")||collections[i].equals("completed")) { + if("1020000000".equals(memberDept) || "0903000000".equals(memberPosition) || "0910000000".equals(memberPosition) ) { + + }else if("1004000000".equals(memberDept)) { + exquery = ""; + }else if("1005000000".equals(memberDept) ) { + exquery = ""; + }else if("1006000000".equals(memberDept) || "1007000000".equals(memberDept) ) { + exquery = ""; + }else if("1008000000".equals(memberDept)) { + exquery = ""; + }else if("1030000000".equals(memberDept)) { + exquery = ""; + }else if("1009000000".equals(memberDept)) { + exquery = ""; + }else { + exquery = ""; + } + wnsearch.setCollectionInfoValue(collections[i], EXQUERY_FIELD, exquery); + + } else if(collections[i].equals("board")) { + if("1020000000".equals(memberDept) ||"0910000000".equals(memberDept)||"1004000000".equals(memberDept)||"1005000000".equals(memberDept)||"1006000000".equals(memberDept)||"1007000000".equals(memberDept)||"1008000000".equals(memberDept)||"1030000000".equals(memberDept)||"1009000000".equals(memberDept)) { + + }else { + exquery = ""; + } + wnsearch.setCollectionInfoValue(collections[i], EXQUERY_FIELD, exquery); + }else if(collections[i].equals("counsel")) { + if("1010000000".equals(memberDept) || "0910000000".equals(memberPosition) || "1020000000".equals(memberDept)) { + + }else { + exquery = ""; + } + wnsearch.setCollectionInfoValue(collections[i], EXQUERY_FIELD, exquery); + } + + //기간 설정 , 날짜가 모두 있을때 + if (!startDate.equals("") && !endDate.equals("") ) { + wnsearch.setCollectionInfoValue(collections[i], DATE_RANGE, startDate.replaceAll("[.]","/") + "," + endDate.replaceAll("[.]","/") + ",-"); + } + }; + + wnsearch.search(realQuery, isRealTimeKeyword, CONNECTION_CLOSE, useSuggestedQuery); + + // 디버그 메시지 출력 + String debugMsg = wnsearch.printDebug() != null ? wnsearch.printDebug().trim() : ""; + if ( !debugMsg.trim().equals("")) { + //out.println(debugMsg); + } + + + + // 전체건수 구하기 + if ( collection.equals("ALL")) { + for (int i = 0; i < collections.length; i++) { + + + totalCount += wnsearch.getResultTotalCount(collections[i]); + } + } else { + //개별건수 구하기 + totalCount = wnsearch.getResultTotalCount(collection); + } + + + String thisCollection = ""; + if(useSuggestedQuery) { + suggestQuery = wnsearch.suggestedQuery; + } +%> + + + + 정보 관리 + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + +
    + + + +
    + +
    +
    +
    + + + +
    + + + + \ No newline at end of file