-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnote.go
198 lines (154 loc) · 8.01 KB
/
note.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
egovMSA-AuthServer
egovMSA-Customer
egovMSA-Catalogs
egovMSA-ConfigClient
egovMSA-ConfigClientBus
egovMSA-ConfigServer
egovMSA-docker-compose
egovMSA-EurekaServer
egovMSA-GatewayServer
totally9 projects: AuthServer, Catalogs, ConfigClient, ConfigClientBus, ConfigServer, Customers, docker-compose, EurekaServer,GatewayServer
with Docker, OpenSearch, RabbitMQ
Auth 인증 토근발급
localhost:8080/auth/authenticate?username=admin&password=admin
eyJ0eXBlIjoiand0IiwiYWxnIjoiSFM1MTIifQ.eyJzdWIiOiJhZG1pbiIsImF1dGhvcml0aWVzIjoiUk9MRV9BRE1JTiIsImlhdCI6MTcxNjE4MjQ1OCwiZXhwIjoxNzE2MTgyNzU4fQ.FgqtI7TCgqoXRYBLdRK0UrPsy9uQaaSoFZFF08vmKWCgAVznjywL-lt-I3wCYBo3VDIiRKqEQsj1nz_d5aknzw
## React
# day1 2024/05/17
참고: https://codedthemes.gitbook.io/mantis/figma
workspace: C:\VueReact\mantis-material-react-3.1.0
--mentis seed 프로젝트--
-메뉴/화면 추가 방법
pages.jsx : 메뉴명 추가(view)
MainRoutes.jsx : 메인화면에서 클릭해서 진입하는 경로 추가
-egov template 프로젝트-
# day2
VSCODE에서 키워드로 검색: ctrl + shift + f
VSCODE에서 파일명으로 검색: ctrl + p
VSCODE에서 주석: ctrl + /
axios 사용참고: JWTContext.jsx
# project template
C:\VueReact\egovframe-template-simple-react-4.2.x
C:\eGovFrameDev-4.2.0\workspace\egovframe-template-simple-backend-main
1.동작 프로세스
1.1 로그인
EgovLoginContect.jsx 에서 id,pwd 입력하여 로그인클릭 ->
<백엔드>
EgovLoginApiController.java 의 /auth/login-jwt 으로 이동 ->
EgovLoginServiceImpl.java 의 actionLogin 에서 로그인처리:
1. 입력한 비밀번호를 암호화
2. 아이디와 암호화된 비밀번호가 DB와 일치하는지 확인
3. 결과를 리턴
2024.05.30 'xxx' 님이, 관리자로 로그인 하셨습니다 -> 로그인 사용자 이름 및 관리자/사용자 표시 올바르게 보여주기
사용자/관리자: comvnusermaster테이블의 USER_NM 을 활용하자.
1.2 비밀번호변경
EgovAdminPasswordUpdate.jsx 에서 변경버튼 클릭 ->
EgovSiteManagerApiController.java 의 /adminPassword 으로 이동
메소드 updateAdminPassword 에서 비밀번호변경처리
1.3 회원등록
1.3.1 아이디 중복확인
EgovRegister.jsx 에서 중복확인 버튼클릭
EgovUserRegisterController.java 의 /idCheck 으로 이동
userRegisterService.countId 메소드로 아이디 중복 체크
(userRegisterServiceImpl->LoginDAO.java->EgovLoginUsr_SQL_mysql.xml)
1.3.2 회원등록신청
EgovRegister.jsx 에서 회원등록신청 버튼클릭
EgovUserRegisterController.java 의 /userRegister으로 이동
EgovUserRegisterService.java 의 userRegister 에서 회원등록
1.3.3 알림마당>공지사항
1.3.3.1 공지사항 목록 (case1.메인화면에서 case2.알림마당에서 )
EgovMain.jsx에서 <ul>{noticeListTag}</ul> 가 목록을 가져온다.
EgovNoticeList.jsx 에서 <div className="result">{listTag}</div>가 목록을 가져온다.
이 리스트는 pathname: URL.INFORM_NOTICE_DETAIL 에서 가져온다.
(해당 ADMIN_NOTICE_DETAIL 에 매핑되는 element 인 EgovAdminNoticeDetail 은 index.jsx 에서 가져온다.)
@GetMapping(value = "/board")
EgovBBSManageApiController.selectBoardArticles>EgovBBSManageServiceImpl.selectBoardArticles>BBSManageDAO.selectBoardArticleList>EgovBoard_SQL_mysql.xml 의 쿼리 id="selectBoardArticleList"
1.3.3.2 상세(한건조회)
EgovAdminNoticeDetail.jsx 에서 retrieveDetail 함수가 `/board/${bbsId}/${nttId}` 경로로 requestPatch. 해당 ADMIN_NOTICE_DETAIL
@GetMapping(value = "/board/{bbsId}/{nttId}")
EgovBBSManageApiController.selectBBSMasterInf>EgovBBSAttributeManageService.selectBBSMasterInf>EgovBBSAttributeManageServiceImpl.selectBBSMasterInf>EgovBoard_SQL_mysql.xml 의 쿼리 id=selectBoardArticle
2024.05.28 해당 쿼리가 게시글 상세를 2개이상 가져오는 쿼리오류가 있어서 DISTINCT를 쿼리에 추가
2024.05.28 id=selectBBSMasterInf 쿼리도 2개이상 가져오는 오류로 DISTINCT를 추가
2024.05.29 게시글목록 조회시 중복 결과가 나오는 이슈 ->
쿼리 id = selectBoardArticleList 에 DISTINCT를 추가
2024.05.29 조회수 2+ 이상 증가하는 이슈
조회수 파라미터명: inqireCo
조회수 업데이트쿼리: updateInqireCo
조회수 확인쿼리:@GetMapping(value = "/board") selectBoardArticles >selectBoardArticle> BBSManageDAO >selectMaxInqireCo
2024.05.29 게시판 목록번호가 1,2,3... 이 아니라 45,44,43... 으로 나오는 이슈
게시글번호 : listIdx <- util파일인 calc.js 의 itemIdxByPage함수에 의해 게시글번호가 계산된다
-> EgovNoticeList.jsx 에서 게시글 목록번호인 const listIdx 구하는 방식을 수정함
2024.05.29 사이트갤러리 목록번호가 1,2,3... 이 아니라 45,44,43... 으로 나오는 이슈. 위와 동일한 방법으로 해결
2024.05.30 관리자의 공지사항 내용 수정및 삭제 기능 추가(백엔드 기능은 이미 구현되어 있어 프론트만 만들어줌)
사이트관리>공지사항관리에서는 해당 기능 가능해야 함.
알림마당>공지사항 에서는 내용생성/수정/삭제 일절 불가. 사용자가 접근 하는 곳 이므로.
2024.50.30 관리자의 공지사항 내용 생성 기능 추가
사이트관리>공지사항관리에서는 관리자가 내용생성 가능해야 함.
알림마당>공지사항 에서는 내용생성/수정/삭제 일절 불가. 사용자가 접근 하는 곳 이므로.
2.frontend
2.1 이미지파일위치 /assets/images/
2.2 url등록
url.js
index.jsx : url.js 에서 등록한 코드화한 각 화면 진입 경로 추가
2.3 화면개요
메인화면 전체 프레임 index.jsx
메인화면 중 body EgovMain.jsx
메인화면 중 header EgovHeader.jsx
메인화면 중 footer EgovFooter.jsx
왼쪽네이게이션 EgovLeftNavIntro.jsx
3.backend
#hsql - local hssql 사용시에 적용 (내장 hsql은 정보 필요 없음)
Globals.hsql.DriverClassName=net.sf.log4jdbc.DriverSpy
Globals.hsql.Url=jdbc:log4jdbc:hsqldb:hsql://127.0.0.1/sampledb
Globals.hsql.UserName=sa
Globals.hsql.Password=
0.TEST 중...
eGovFrame > start > new eGovFrame MSA Template Project
MSA boot template project - service portal 기능 확인하기. React 와 연동 되는지?
gradle로 자동생성된다. JPA로 되어있음
1. 게시판서비스 BoardServiceClient.java, BoardResponseDto.java,
2. 배너지원 Banner.java
3. 공통코드 crud 지원 Code.java
4. 메뉴지원 Menu.java
5. 메뉴권한 MenuRole.java
*참고 from internet*
Board Service : 게시판관리, 게시물관리, 첨부파일관리 기능을 제공
Portal Service : 메뉴관리, 권한관리, 공통코드관리 및 컨텐츠관리 등의 기능을 제공
User Service : 로그인, 회원관리 및 관리자 기능을 제공
onClick={login}
, {
headers: {
Authorization:
'eyJ0eXBlIjoiand0IiwiYWxnIjoiSFM1MTIifQ.eyJzdWIiOiJhZG1pbiIsImF1dGhvcml0aWVzIjoiUk9MRV9BRE1JTiIsImlhdCI6MTcxNjE4Mjg2NiwiZXhwIjoxNzE2MTgzMTY2fQ.BcPl5sz_3GcKvZE_9azJ1bZcIcjJ26f3W6Jdmu3fR2qY9tFq4xe8r4uBdC8fIky9UK74AZAzLuxoM47y81_gaQ',
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': 'http://localhost:8088/customers/1234', // cors origin (서버의 cors 설정이 동일해야 응답)
'Access-Control-Allow-Creadentials': true // 쿠키를 요청에 포함 (cors 설정도 동일해야 가능)
},
withCredentials: true}
//사용x
const GetCustomerid2 = () => {
console.log('getCustomerId starts');
const init = async () => {
const response = await axios.get('http://localhost:8088/customers/1234', {
headers: {
'Content-Type': 'application/json'
},
withCredentials: true
});
console.log(response.data);
// const { user } = response.data;
};
init();
};
// 예제 코드. 이런식으로 로그인.
axios.post( 'url',
{ // 본문으로 보낼 데이터
username: 'Hayeong',
id: '[email protected]'
},
{ //
headers: {
'Content-type': 'application/json',
'Accept': 'application/json'
}
}
)