Initial commit
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
= 개발툴/빌드 스크립드
|
||||
|
||||
SDL을 이용한 웹 어플리케이션 개발에 필요한 툴과 빌드, 배포 방법은 <<_설치,설치>>를 참고한다.
|
||||
@@ -0,0 +1,116 @@
|
||||
= 게시판 관리
|
||||
|
||||
== 개요
|
||||
|
||||
SDL에서 제공하는 게시판 관리 기능으로 공지사항(메인화면 공지팝업 연동)이나 FAQ 게시판 등 Community 성격으로 게시글 등록 및 답변기능을 사용할 수 있는 게시판 기능이다. +
|
||||
관리 기능에서 게시판 등록 및 관리를 할 수 있으며 사용자용과 관리자용 메뉴를 따로 만들어 권한별로 게시판 기능을 사용할 수 있도록 제공한다.
|
||||
|
||||
== Table
|
||||
|
||||
* 게시판 : TN_CF_BOARD
|
||||
* 게시판 분류 : TN_CF_BOARD_CLASSIFICATION
|
||||
* 게시판 컬럼 : TN_CF_BOARD_COLUMN
|
||||
|
||||
== API
|
||||
|
||||
.BoardController.java
|
||||
|
||||
. 게시판 목록 조회(페이징) +
|
||||
GET /boards-with-paging +
|
||||
Query ID : selectBoardPagingList
|
||||
|
||||
. 게시판 상세정보 조회 +
|
||||
GET /boards/{boardId} +
|
||||
Query ID : selectBoard
|
||||
|
||||
. 게시판 등록 +
|
||||
POST /boards +
|
||||
Query ID : insertBoard, insertBoardClassification, insertBoardColumn
|
||||
* 게시판 등록 시 등록화면에서 추가한 게시판 분류 목록과 default 컬럼 정보가 저장된다.
|
||||
|
||||
[source,java]
|
||||
----
|
||||
@Override
|
||||
@Transactional
|
||||
public void insertBoard(Board board) {
|
||||
|
||||
// 게시판 저장.
|
||||
boardDao.insertBoard(board);
|
||||
|
||||
// 게시판 분류 저장.
|
||||
if (!board.getClassifications().isEmpty()) {
|
||||
for (BoardClassification boardClassification : board.getClassifications()) {
|
||||
boardClassification.setBoardId(board.getBoardId());
|
||||
boardClassification.setClassificationId(idGenService.getNextStringId());
|
||||
boardDao.insertBoardClassification(boardClassification);
|
||||
}
|
||||
}
|
||||
|
||||
// 게시판 컬럼 저장.
|
||||
boardDao.insertBoardColumn(board.getBoardId());
|
||||
}
|
||||
----
|
||||
|
||||
[start=5]
|
||||
. 게시판 수정 +
|
||||
PUT /boards/{boardId} +
|
||||
Query ID : updateBoard, updateBoardClassification, updateBoardColumn
|
||||
* 게시판 수정시 변경된 게시판 분류 목록과 컬럼 정보가 수정된다.
|
||||
|
||||
[source,java]
|
||||
----
|
||||
@Override
|
||||
@Transactional
|
||||
public void updateBoard(Board board) {
|
||||
|
||||
// 게시판 수정.
|
||||
boardDao.updateBoard(board);
|
||||
|
||||
// 게시판 분류 수정.
|
||||
List<BoardClassification> beforeClassifications = boardDao.getBoardClassificationList(board.getBoardId());
|
||||
List<String> beforeClassificationIdList = new ArrayList<>();
|
||||
-- 생략 --
|
||||
}
|
||||
----
|
||||
|
||||
[start=6]
|
||||
. 게시판 삭제 +
|
||||
DELETE /boards/{boardId} +
|
||||
Query ID : deleteBoard
|
||||
|
||||
== 화면
|
||||
|
||||
. 게시판 목록 화면
|
||||
|
||||
image::boardManagement_01.png[]
|
||||
|
||||
* 게시판 목록을 확인할 수 있다.
|
||||
* 해당 게시판의 등록된 게시글 등록건수와 현재 사용 여부등의 정보를 보여준다.
|
||||
* 등록 버튼 클릭 시 등록화면으로 이동되며 게시판 명 클릭 시 게시판 수정화면으로 이동된다.
|
||||
|
||||
[start=2]
|
||||
. 게시판 등록 화면
|
||||
|
||||
image::boardManagement_02.png[]
|
||||
|
||||
* 게시판을 등록할 수 있다.
|
||||
* 게시판 세부기능 속성
|
||||
** 에디터 사용여부 : CafeNote 등 에디터를 사용할지 선택('미사용' 선택 시 textarea 태그로 구현된다)
|
||||
** 이미지파일사용 : 이미지 파일 등록 시 본문에 이미지를 표시한다.(사진형 게시판일 경우 필수사용)
|
||||
** 메인 공지팝업 : 게시글 등록 시 메인 공지사항 팝업창에 해당 기간동안 게시글이 노출된다.
|
||||
** 게시글 '공지'라벨 표시 : 게시글 등록 시 게시글 목록 상단에 공지 게시글로 노출된다.
|
||||
|
||||
[start=3]
|
||||
. 게시판 상세정보 수정 화면
|
||||
|
||||
image::boardManagement_03.png[]
|
||||
|
||||
* 게시판 세부기능 속성 변경이 가능하다.
|
||||
* '공지팝업 제한' 기능은 해당 게시판의 공지게시글을 일시적으로 제한할 수 있는 기능이다.
|
||||
|
||||
image::boardManagement_04.png[]
|
||||
|
||||
* 게시판의 검색 조건을 선택할 수 있다.
|
||||
* 게시글 목록화면에서 보여줄 정보를 선택 할수 있다.
|
||||
** 각 컬럼의 사용 여부에 따라서 넓이가 합산 100%로 변경된다.
|
||||
* 게시글 목록 정렬 기준을 선택 할 수 있으며 작성일 내림차순이 기본으로 선택된다.
|
||||
@@ -0,0 +1,29 @@
|
||||
= 공지사항 알림 뱃지
|
||||
|
||||
== 개요
|
||||
관리자가 작성한 공지사항이 등록되면 메인페이지에 알림이 보인다.
|
||||
|
||||
== Table
|
||||
* 게시판 : TN_CF_BOARD
|
||||
* 게시글 : TN_CF_POST
|
||||
* 게시판 분류 : TN_CF_BOARD_CLASSIFICATION
|
||||
* 사용자 : TN_CF_USER
|
||||
* 공지사항 확인 : TN_CF_NOTICE_CHECKED
|
||||
|
||||
== API
|
||||
.BoardController.java
|
||||
|
||||
. 공지사항 팝업 게시글 목록 조회(메인화면 용) +
|
||||
GET /notice-popup-posts +
|
||||
Query ID : selectNoticePopupPostList
|
||||
|
||||
. 공지사항 팝업 게시글 체크 +
|
||||
POST /check-notice +
|
||||
Query ID : selectNoticeChecked, insertNoticeChecked
|
||||
|
||||
== 화면
|
||||
* MainTopMenu.vue
|
||||
|
||||
image::notice_alarm.png[800,600]
|
||||
|
||||
image::notice.png[800,600]
|
||||
@@ -0,0 +1 @@
|
||||
= 공통 페이지
|
||||
@@ -0,0 +1,39 @@
|
||||
= 링크 사이트
|
||||
|
||||
== 개요
|
||||
링크 사이트를 관리한다.
|
||||
|
||||
== Table
|
||||
* 링크사이트 : TN_CF_LINK_SITE
|
||||
|
||||
== API
|
||||
.LinkSiteController.java
|
||||
|
||||
. 링크사이트 목록 조회(페이징) +
|
||||
GET /linksite/linksites-with-paging +
|
||||
Query ID : selectLinkSitePagingList
|
||||
|
||||
. 링크사이트 등록 +
|
||||
POST /linksite/linksites +
|
||||
Query ID : insertLinkSite
|
||||
* LINK_SITE_ID는 IdGenService를 사용하여 유니크한 ID를 만들어서 등록한다.
|
||||
|
||||
. 링크사이트 수정 +
|
||||
PUT /linksite/linksites +
|
||||
Query ID : updateLinkSite
|
||||
|
||||
. 링크사이트 삭제 +
|
||||
DELETE /linksite/linksites +
|
||||
Query ID : deleteLinkSite
|
||||
|
||||
== 화면
|
||||
|
||||
외부 링크사이트를 관리기능 > 기타관리 > 링크사이트 관리를 통해 할 수 있다.
|
||||
|
||||
image::front_05_01.png[]
|
||||
|
||||
* 구분 : 공통코드 type이 'LINKSITE'인 항목
|
||||
* 사이트명(기본) : 기본 사이트명을 입력한다.
|
||||
* 사이트명(locale) : 다국어별 사이트명을 입력한다.
|
||||
* 설명 : 사이트에 대한 설명을 입력한다.
|
||||
* URL : 사이트의 URL을 등록한다.
|
||||
@@ -0,0 +1,12 @@
|
||||
= 메인 페이지
|
||||
|
||||
== 구성
|
||||
* Header Section (TopMenu)
|
||||
** Navigation - My Menu(즐겨찾기) | navigation(결재함, 게시판, 샘플 페이지, 관리기능)
|
||||
** RightSide - 메인공지팝업 | 번역, 통합검색, 사이트맵 | 표준시간, 언어선택 | 프로필
|
||||
+
|
||||
NOTE: 통합검색의 경우 검색솔루션 등을 통해 따로 구현해야함.
|
||||
* MainContainer Section - 메인 컨텐츠(공지사항, FAQ, 연락처 등)
|
||||
* Footer Section - 개인정보취급방침, 이용약관
|
||||
|
||||
image::mainPage.png[]
|
||||
@@ -0,0 +1,24 @@
|
||||
= 업무 담당자 관리
|
||||
|
||||
== 개요
|
||||
주요 업무 담당자 페이지를 관리한다.
|
||||
|
||||
NOTE: 정적 HTML 로 만든 페이지를 업로드 하여 그대로 보여주고 싶을 때 사용한다. (업무 담당자 관리, 주요 연락처 관리)
|
||||
|
||||
== 화면
|
||||
image::front_06_01.png[]
|
||||
* 등록된 업무 담당자 페이지 목록을 볼 수 있다.
|
||||
* 목록의 Key 컬럼을 클릭하여 업무 담당자 페이지 정보를 수정할 수 있다.
|
||||
* 팝업 미리보기를 클릭하여 등록된 업무 담당자 페이지를 확인 할 수 있다.
|
||||
|
||||
image::front_06_02.png[]
|
||||
* Key: Unique한 키를 지정(영문, 숫자만 가능)
|
||||
* 제목: 업무 담당자 페이지 제목
|
||||
* 설명: 업무 담당자 페이지 설명
|
||||
* 첨부파일: 업무 담당자 HTML 페이지 (html, htm 확장자)
|
||||
|
||||
image::front_06_02_01.png[]
|
||||
* 메뉴관리에서 메뉴를 등록하고 Page/API 를 추가한다.
|
||||
- Page Path에 업무 담당자 관리에서 등록한 Key를 포함한다.
|
||||
- Vue Component는 SampleStaff.vue 를 참조하여 생성 후 등록한다.
|
||||
- API URL에 업무 담당자 조회 API URL을 등록한다. (/html-templates/group/{templateGroupCode=STAFF}/key/{templateKey})
|
||||
@@ -0,0 +1,23 @@
|
||||
= 일괄 작업 관리 및 이력 조회
|
||||
|
||||
== 일괄작업 관리
|
||||
* 일괄작업 관리를 위해서는 **구현 Service** (com.samsung..*Impl.*) 의 메서드에 `@BatchJob` annotation이 설정되어 있어야 한다.
|
||||
* 관리기능 > 일괄작업 관리> 일괄작업 관리 메뉴에서 아래와 같이 설정해야만 이력관리가 남게 된다.
|
||||
|
||||
image::batchJobMgmt.png[]
|
||||
|
||||
image::batchJobMgmtUpdate.png[]
|
||||
|
||||
* 일괄작업 관리 화면에서 관리하고자 하는 Batch 정보를 위와 같이 입력한다.
|
||||
** 구분 : 그룹코드 BATCHGUBUN 에 등록한 공통코드명을 입력한다.
|
||||
** 작업명 : Batch 작업명을 입력한다.
|
||||
** 작업클래스 : com.samsung.accesslog.impl.SysUseLogMngImpl.loadBatchData과 같이 Batch 실행시 실행되는 Package명을 포함한 클래스명 및 메소드명을 입력한다. (`@BatchJob` annotation에 설정한 값)
|
||||
** URL : Batch를 직접 실행하기 위한 URL을 입력한다. 여기에 입력한 URL은 일괄작업이력 화면에서 해당 배치실행 버튼을 클릭하였을때 Call 된다.
|
||||
URL을 입력할 경우에는 해당 Request를 처리할 Controller를 구현해야 한다.
|
||||
|
||||
== 일괄작업 이력
|
||||
일괄작업 관리에 등록한 작업이 수행되면 일괄작업 이력에 아래와 같이 나타난다.
|
||||
|
||||
image::batchJobLogList.png[]
|
||||
* 배치가 실행되는 시작 시간과 종료시간, 소요시간, 작업결과 등이 나타난다.
|
||||
* 작업이 실패 했을경우 실행 할 수 있는 배치실행 버튼이 나타난다.(일괄작업관리 등록시 URL을 등록해야 나타남).
|
||||
@@ -0,0 +1,52 @@
|
||||
= 작업 스케쥴링
|
||||
|
||||
== 개요
|
||||
SDL의 작업 스케쥴링은 http://www.quartz-scheduler.org/documentation/[Quartz]를 이용하여 구현하고 있다.
|
||||
수행할 작업(Job)을 등록하고 Trigger에 Job을 추가한 후 Scheduler에 Trigger(s)를 설정한다.
|
||||
|
||||
=== 스케줄러 설정 예
|
||||
.config.properties
|
||||
[source,properties]
|
||||
----
|
||||
batch.user.long-term-check.cron=0 10 00 * * ?
|
||||
----
|
||||
|
||||
.UserBatchConfig
|
||||
[source,java]
|
||||
----
|
||||
@Configuration
|
||||
public class UserBatchConfig {
|
||||
|
||||
@Value("${batch.user.long-term-check.cron}")
|
||||
private String batchUserLongTermCheckCron;
|
||||
|
||||
/**
|
||||
* 장기 미사용자 관리 Job
|
||||
*/
|
||||
@Bean
|
||||
public JobDetail batchUserLongTermCheckJob() {
|
||||
return JobBuilder
|
||||
.newJob(UserBatchExecutor.class) // <1>
|
||||
.withIdentity("batchUserLongTermCheck") // <2>
|
||||
.withDescription("User LongTerm Check Batch")
|
||||
.storeDurably(true)
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 장기 미사용자 관리 Trigger
|
||||
*/
|
||||
@Bean
|
||||
public CronTriggerFactoryBean batchUserLongTermCheckTrigger() {
|
||||
CronTriggerFactoryBean trigger = new CronTriggerFactoryBean();
|
||||
trigger.setJobDetail(batchUserLongTermCheckJob()); // <3>
|
||||
trigger.setCronExpression(batchUserLongTermCheckCron); // <4>
|
||||
return trigger;
|
||||
}
|
||||
|
||||
}
|
||||
----
|
||||
<1> 서비스를 수행할 Job Class
|
||||
<2> Job 구분 명
|
||||
<3> Job 등록
|
||||
<4> Cron 표현식 설정
|
||||
@@ -0,0 +1,22 @@
|
||||
= 주요 전화 번호 관리
|
||||
|
||||
== 개요
|
||||
주요 전화번호 페이지를 관리한다.
|
||||
|
||||
== 화면
|
||||
|
||||
image::front_06_03.png[]
|
||||
* 등록된 주요 전화번호 페이지 목록을 볼 수 있다.
|
||||
* 리스트의 Key 컬럼을 클릭하여 주요 전화번호 페이지 정보를 수정할 수 있다.
|
||||
* 팝업 미리보기를 클릭하여 등록된 주요 전화번호 페이지를 확인 할 수 있다.
|
||||
|
||||
image::front_06_04.png[]
|
||||
* Key : Unique한 키를 지정(영문, 숫자만 가능)
|
||||
* 제목 : 주요 전화번호 페이지 제목
|
||||
* 설명 : 주요 전화번호 페이지 설명
|
||||
* 첨부파일 : 주요 전화번호 HTML 파일 (html, htm 확장자)
|
||||
|
||||
[%hardbreaks]
|
||||
* 메뉴관리에서 메뉴를 등록하고 Page/API 를 추가한다.
|
||||
- Page Path에 주요 전화번호 관리에서 등록한 Key를 포함한다.
|
||||
- API URL에 주요 전화번호 조회 API URL을 등록한다. (/html-templates/group/{templateGroupCode=CONTACT}/key/{templateKey})
|
||||
@@ -0,0 +1,6 @@
|
||||
= 캐시 관리
|
||||
|
||||
== 개요
|
||||
시스템 전체 캐시를 초기화 한다.
|
||||
|
||||
image::cacheMgmt.png[캐시 관리]
|
||||
@@ -0,0 +1,76 @@
|
||||
= 코드 관리
|
||||
|
||||
== 개요
|
||||
그룹 코드를 등록하고 그룹 코드의 공통 코드를 등록하여 추가, 수정 및 삭제를 관리한다. +
|
||||
groupcodes는 그룹 코드를 나타내고, commcodes는 공통 코드를 나타낸다. 그룹 코드가 상위, 공통 코드가 그룹 코드의 하위 개념이다.
|
||||
|
||||
== Table
|
||||
* 그룹 코드 : TC_CF_COMM_CODE_TYPE
|
||||
* 공통 코드 : TC_CF_COMM_CODE
|
||||
|
||||
== API
|
||||
.CommCodeController.java
|
||||
|
||||
. 그룹 코드 목록 조회 +
|
||||
GET /commcode/groupcodes-with-paging +
|
||||
Query ID : selectGroupCodePagingList
|
||||
.. 검색조건에는 코드, 코드명, 설명이 있다. +
|
||||
"그룹 코드 목록 조회(페이징)"을 사용하며 각 조건에 맞게 쿼리를 실행한다. +
|
||||
특히 코드명은 한글, 영어, 중국어에 상관없이 입력한 값의 대소문자를 가리지 않고 1글자만 입력해도 검색이 된다.
|
||||
.. orderBy는 기본이 COMM_CODE_TYPE_CODE(코드명) 이다.
|
||||
|
||||
. 그룹 코드 등록 +
|
||||
POST /commcode/groupcodes
|
||||
** 그룹 코드는 20자 이내로 입력해야 한다. 영문자와 숫자, 특수문자만 사용할 수 있고 한글은 입력이 안 되게 정규식을 사용하여 프론트단에서 유효성 체크를 한다.
|
||||
|
||||
. 그룹 코드 삭제 +
|
||||
DELETE /commcode/groupcodes/{groupCode}
|
||||
.. 그룹 코드는 TC_CF_COMM_CODE_TYPE.DELETE_YN 컬럼 값을 true로 업데이트 하는 식으로 삭제한다.
|
||||
... 먼저 그룹 코드에 추가되어 있는 공통 코드의 하위를 전부 조회하여 찾은 후 공통 코드 전부 TC_CF_COMM_CODE.DELETE_YN 컬럼을 true로 업데이트 한다.
|
||||
.... Query ID : updateCommCodeDeleted
|
||||
... 그 후 그룹 코드의 DELETE_YN 컬럼을 true로 업데이트 하여 삭제한다.
|
||||
.... Query ID : updateGroupCode
|
||||
|
||||
. 공통 코드 추가 +
|
||||
POST /commcode/groupcodes/{groupCode}/commcodes
|
||||
** 추가시에 중복체크하고 없으면 등록하는데 TC_CF_COMM_CODE.CODE_ID는 IdGenService를 사용하여 유니크한 ID를 만들어서 등록한다.
|
||||
|
||||
. 공통 코드 삭제 +
|
||||
DELETE /commcode/groupcodes/{groupCode}/commcodes/{commCodeId}
|
||||
** 삭제하려는 공통 코드의 자신과 자식들 코드를 조회하여 DELETE_YN 컬럼 값을 true로 업데이트 하는 식으로 삭제한다.
|
||||
*** Query ID : updateCommCodeDeleted
|
||||
|
||||
== 화면
|
||||
그룹 코드 및 그룹코드에 대한 공통 코드를 추가, 수정 및 삭제 기능을 수행하여 관리한다. +
|
||||
|
||||
image::commonCodeList.png[]
|
||||
|
||||
=== 기능별 설명
|
||||
- 등록 : 코드 정보를 등록하는 화면으로 이동
|
||||
|
||||
== 코드 등록
|
||||
그룹 코드를 등록 +
|
||||
* 영문자와 숫자, '-', '_' 2개의 특수문자만 사용하여 등록 가능하다.
|
||||
|
||||
image::commonCodeDetail_Reg.png[]
|
||||
|
||||
=== 기능별 설명
|
||||
- 목록 : 코드 관리 화면으로 이동
|
||||
- 저장 : 그룹 코드 정보를 저장
|
||||
|
||||
== 코드 상세 정보
|
||||
그룹 코드의 상세 정보를 수정, 삭제하고 그에 대한 공통 코드를 추가, 수정, 삭제하여 관리
|
||||
|
||||
image::commonCodeDetail.png[]
|
||||
|
||||
=== 기능별 설명
|
||||
==== 그룹코드 정보
|
||||
- 엑셀다운로드 : 조회 조건과 동일한 조회 결과 값을 담은 엑셀 파일을 다운로드 하는 기능
|
||||
- 목록 : 코드 관리 화면으로 이동
|
||||
- 삭제 : 그룹코드를 삭제
|
||||
- 저장 : 수정된 그룹코드 상세 정보를 수정
|
||||
|
||||
==== 공통코드 목록
|
||||
- 추가 : 공통코드를 등록하는 Popup 호출
|
||||
- 수정 : 공통코드를 수정하는 Popup 호출
|
||||
- 삭제 : 공통코드를 삭제
|
||||
Reference in New Issue
Block a user