Compare commits

...

4 Commits

22 changed files with 364 additions and 123 deletions

View File

@ -52,10 +52,10 @@
.board_list .head {display: table; table-layout: fixed; width: 100%;}
/* changed by lim padding: 25px 0 27px 0; */
.board_list .head > span {display: table-cell; padding: 10px 0 10px 0; border-bottom: 1px solid #888; font-size: 16px; font-weight: 500px; text-align: center;}
.logs_list .result {max-height: 430px;}
.logs_list .result {max-height: 430px;} /* added by lim .logs_list .result {max-height: 430px;} */
.board_list .result .list_item {display: table; width: 100%; table-layout: fixed;}
/* changed by lim padding: 18px 0 20px 0; */
.board_list .result .list_item > div {display: table-cell; padding: 7px 0 7px 0; border-bottom: 1px solid #dde2e5; color: #666; font-size: 16px; text-align: center; vertical-align: middle;}
.board_list .result .list_item > div {display: table-cell; padding: 7px 0 7px 0; border-bottom: 1px solid #dde2e5; color: #666; font-size: 14px; text-align: center; vertical-align: middle;}
.board_list .result .list_item > div.al {padding: 18px 30px 20px 30px; text-align: left;}
.board_list .result .list_item > div.reply {position: relative; padding: 18px 30px 20px 52px;}
.board_list .result .list_item > div.reply::before {content: ""; display: block; position: absolute; left: 27px; top: 24px; width: 22px; height: 14px; background: url(css/images/ico_reply.png) no-repeat;}

View File

@ -50,7 +50,7 @@ body {min-width: 1400px;}
.c_wrap .layout {display: table; width: 100%; table-layout: fixed; padding-bottom: 20px;} /* added by lim padding-bottom: 20px; */
/* sub navigation */
.c_wrap .layout .nav {display: table-cell; width: 260px; vertical-align: top;}
.c_wrap .layout .nav {display: table-cell; width: 220px; vertical-align: top;} /* changed by lim width: 260px; */
.c_wrap .layout .nav .inner {border: 1px solid #dde2e5; border-radius: 10px;}
.nav_title{padding: 35px 30px 26px 30px;} /* changed by lim border-bottom: 4px solid #dde2e5; */
.c_wrap .layout .nav h2 {color: #222; font-size: 24px;}

View File

@ -152,6 +152,22 @@
.BRD006 .result .list_item > div:nth-child(5) {width: 140px;}
.BRD006 .result .list_item > div:nth-child(6) {width: 140px;}
/* 사이트관리 > 사용자관리 > 사용자목록 */
.userList .head > span:nth-child(1) {width: 60px;}
.userList .head > span:nth-child(2) {width: 100px;}
.userList .head > span:nth-child(3) {width: 100px;}
.userList .head > span:nth-child(4) {width: 120px;}
.userList .head > span:nth-child(5) {width: 100px;}
.userList .head > span:nth-child(6) {width: 100px;}
.userList .head > span:nth-child(7) {width: 100px;}
.userList .result .list_item > div:nth-child(1) {width: 60px;}
.userList .result .list_item > div:nth-child(2) {width: 100px;}
.userList .result .list_item > div:nth-child(3) {width: 100px;}
.userList .result .list_item > div:nth-child(4) {width: 120px;}
.userList .result .list_item > div:nth-child(5) {width: 100px;}
.userList .result .list_item > div:nth-child(6) {width: 100px;}
.userList .result .list_item > div:nth-child(7) {width: 100px;}
/* 사이트소개 */
.SITE_INTRO .ds_1 .t_1 {margin-top: 52px; color: #000; font-size: 26px; font-weight: 500; text-align: center;}
.SITE_INTRO .ds_1 .li_1 {position: relative; margin-top: 34px; font-size: 0; text-align: center;}
@ -220,17 +236,18 @@
.BRD008 .result .list_item > div:nth-child(5) {width: 120px;}
/* 공지사항 */
/* 로그현황 - 개인정보 로그현황*/
.BRD009 .head > span:nth-child(1) {width: 60px;}
.BRD009 .head > span:nth-child(3) {width: 200px;}
.BRD009 .head > span:nth-child(4) {width: 200px;}
.BRD009 .head > span:nth-child(5) {width: 200px;}
.BRD009 .head > span:nth-child(2) {width: 150px;}
.BRD009 .head > span:nth-child(3) {width: 150px;}
.BRD009 .head > span:nth-child(4) {width: 150px;}
.BRD009 .head > span:nth-child(5) {width: 150px;}
.BRD009 .head > span:nth-child(6) {width: 150px;}
.BRD009 .result .list_item > div:nth-child(1) {width: 60px;}
.BRD009 .result .list_item > div:nth-child(2) {text-overflow: ellipsis; white-space: nowrap; overflow: hidden;}
.BRD009 .result .list_item > div:nth-child(3) {width: 200px;}
.BRD009 .result .list_item > div:nth-child(4) {width: 200px;}
.BRD009 .result .list_item > div:nth-child(5) {width: 200px;}
.BRD009 .result .list_item > div:nth-child(2) {width: 150px; text-overflow: ellipsis; white-space: nowrap; overflow: hidden;}
.BRD009 .result .list_item > div:nth-child(3) {width: 150px;}
.BRD009 .result .list_item > div:nth-child(4) {width: 150px;}
.BRD009 .result .list_item > div:nth-child(5) {width: 150px;}
.BRD009 .result .list_item > div:nth-child(6) {width: 150px;}
/* 게시판 사용관리 등록 */

View File

@ -1,6 +1,5 @@
@charset "utf-8";
@media (max-width: 800px) {
/* Layout */
@ -44,14 +43,14 @@
.c_wrap {width: 100%; padding: 0;}
.c_wrap .layout {display: block;}
.c_wrap .layout .nav {display: block; position: relative; width: 100%;}
.c_wrap .layout .nav .inner {border: 0; border-radius: 0; border-bottom: 1px solid #e6e6e6; overflow-x: auto; -ms-overflow-style: none; box-shadow: 3px 4px 5px #ccc;}
.c_wrap .layout .nav .inner {border: 0; border-radius: 5px; border-bottom: 1px solid #e6e6e6; overflow-x: auto; -ms-overflow-style: none; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); margin-top: 5px;}
.c_wrap .layout .nav .inner::-webkit-scrollbar {display: none;}
.c_wrap .layout .nav h2 {position: absolute; top: -9999px;}
.c_wrap .layout .nav ul {padding: 0 20px;}
.c_wrap .layout .nav ul.menu4 {width: 570px;}
.c_wrap .layout .nav ul.menu4 {max-width: 570px;}
.c_wrap .layout .nav ul.menu6 {width: 1000px;}
.c_wrap .layout .nav ul::after {content: ""; display: block; clear: both;}
.c_wrap .layout .nav ul li {float: left;}
.c_wrap .layout .nav ul li {float: left; width: 50%; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; } /* added by lim width: 50%; ~~~~ overflow: hidden;*/
.c_wrap .layout .nav ul li + li {margin-top: 0;}
.c_wrap .layout .nav ul li a {height: 45px; padding: 0 25px; font-size: 15px; line-height: 45px;}
.c_wrap .layout .nav ul li a:hover::after {content: none;}
@ -432,6 +431,7 @@
.QNA_LIST .third_2 .w_500 {width: 100%;}
/* 로그현황 - 개인정보 로그현황*/
.BRD009 .head {display: none;}
.BRD009 .result .list_item {padding: 16px 0; border-bottom: 1px solid #dde2e5;}
.BRD009 .result .list_item > div {border-bottom: 0; font-size: 14px;}
@ -544,6 +544,7 @@
.SITE_INTRO .ds_1 .li_1 li {width: 90px; height: 90px; padding-top: 25px;}
.SITE_INTRO .ds_1 .li_1 li + li {margin-left: 5px;}
/* 로그현황 - 개인정보 로그현황*/
.BRD009 .result .list_item > div:nth-child(3),
.BRD009 .result .list_item > div:nth-child(4),
.BRD009 .result .list_item > div:nth-child(5),

View File

@ -6,7 +6,6 @@ import { default as EgovLeftNav } from 'components/leftmenu/EgovLeftNavAdmin';
import EgovPaging from "components/EgovPaging";
import * as EgovNet from "api/egovFetch";
import {itemIdxByPage} from "utils/calc";
import Button from "react-bootstrap/Button";
function List(props) {
@ -43,35 +42,16 @@ function List(props) {
const listIdx = itemIdxByPage(resultCnt , currentPageNo, pageSize, index);
mutListTag.push(
<div>
<span>{item.userSe}</span>
<span>{item.userId}</span>
<span>{item.userNm}</span>
<span>{item.email}</span>
<span>{item.phoneNum}</span>
<span>{item.useYn}</span>
<span><Button variant={"danger"} size={"sm"}>삭제</Button></span>
<div className={"list_item"}>
<div>{item.userSe}</div>
<div>{item.userId}</div>
<div>{item.userNm}</div>
<div>{item.email}</div>
<div>{item.phoneNum}</div>
<div>{item.useYn}</div>
<div><button className={"btn btn_red_h31 px-1"}>삭제</button></div>
</div>
);
/*<Link to={{pathname: URL.ADMIN_NOTICE_DETAIL}}
state={{
nttId: item.nttId,
searchCondition: searchCondition
}}
key={listIdx} className="list_item" >
<div>{listIdx}</div>
{(item.replyLc * 1 ? true : false) &&
<><div className="al reply">
{item.nttSj}
</div></>}
{(item.replyLc * 1 ? false : true) &&
<><div className="al">
{item.nttSj}
</div></>}
<div>{item.frstRegisterNm}</div>
<div>{item.frstRegisterPnttm}</div>
<div>{item.inqireCo}</div>
</Link>*/
});
if(!mutListTag.length) mutListTag.push(<p className="no_data" key="0">검색된 결과가 없습니다.</p>); //
setListTag(mutListTag);
@ -127,7 +107,7 @@ function List(props) {
<option value="id">아이디</option>
<option value="name">이름</option>
<option value="email">이메일</option>
<option value="phoneNum">전화번호</option>
<option value="phoneNum">연락처</option>
</select>
</label>
</li>
@ -152,13 +132,13 @@ function List(props) {
</ul>
</div>
<div className="board_list BRD002">
<div className="board_list userList">
<div className="head">
<span>구분</span>
<span>아이디</span>
<span>이름</span>
<span>이메일</span>
<span>전화번호</span>
<span>연락처</span>
<span>상태</span>
<span>삭제</span>
</div>

View File

@ -19,7 +19,7 @@ function Join(props) {
const location = useLocation();
console.log("JoinContent [location] : ", location);
const [userInfo, setUserInfo] = useState({ id: '', email: '', password: '', passwordChk: '' });
const [userInfo, setUserInfo] = useState({ id: '', password: '', passwordChk: '', userNm: '', email: '', phoneNum: ''});
const [infoShareChk, setInfoShareChk] = useState(false);
const [submitFlag, setSubmitFlag] = useState(true);
@ -92,12 +92,16 @@ function Join(props) {
<span className="group">
<input type="text" name="" title="아이디" placeholder="아이디" value={userInfo?.id}
onChange={e => setUserInfo({ ...userInfo, id: e.target.value })} />
<input type="text" name="" title="이메일" placeholder="이메일" value={userInfo?.email}
onChange={e => setUserInfo({ ...userInfo, email: e.target.value })} />
<input type="password" name="" id="passwordInput" title="비밀번호" placeholder="비밀번호"
onChange={e => setUserInfo({ ...userInfo, password: e.target.value })}/>
<input type="password" name="" id="passwordChkInput" title="비밀번호 확인" placeholder="비밀번호 확인"
onChange={e => setUserInfo({ ...userInfo, passwordChk: e.target.value })}/>
<input type="text" name="" title="이름" placeholder="이름" value={userInfo?.userNm}
onChange={e => setUserInfo({ ...userInfo, userNm: e.target.value })} />
<input type="text" name="" title="이메일" placeholder="이메일" value={userInfo?.email}
onChange={e => setUserInfo({ ...userInfo, email: e.target.value })} />
<input type="text" name="" title="연락처" placeholder="연락처" value={userInfo?.phoneNum}
onChange={e => setUserInfo({ ...userInfo, phoneNum: e.target.value })} />
</span>
<ul className="list">
<li>비밀번호는 6~12자의 영문 /소문자, 숫자, 특수문자를 혼합해서 사용하실 있습니다.</li>

View File

@ -39,3 +39,5 @@ out/
**/.idea
**/.vscode
/kcscDev/kcsc-back-end/src/main/resources/application-local.properties

View File

@ -90,4 +90,5 @@ dependencies {
implementation 'org.apache.commons:commons-lang3'
}

View File

@ -2,32 +2,23 @@ package com.dbnt.kcscbackend.admin.committee.schedules.controller;
import com.dbnt.kcscbackend.admin.committee.schedules.model.CreateScheduleVO;
import com.dbnt.kcscbackend.admin.committee.schedules.service.EgovIndvdlSchdulManageService;
import com.dbnt.kcscbackend.config.common.ResultVO;
import io.swagger.annotations.Api;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
/**
* Controller Class
* @since 2009.04.10
* @see
* <pre>
* << (Modification Information) >>
*
* ------- -------- ---------------------------
* 2009.04.10
* 2011.05.31 JJY
* </pre>
* @author
* @version 1.0
* @created 09-6-2011 10:08:04
*/
@Api("SchedulesApiController")
@RestController
@Tag(name="SchedulesApiController",description = "일정 관리")
public class SchedulesApiController {
@ -36,34 +27,6 @@ public class SchedulesApiController {
@Resource(name = "egovIndvdlSchdulManageService")
private EgovIndvdlSchdulManageService egovIndvdlSchdulManageService;
/**
* 0
* @return String
* @throws
*/
public String DateTypeIntForString(int iInput) {
String sOutput = "";
if (Integer.toString(iInput).length() == 1) {
sOutput = "0" + Integer.toString(iInput);
} else {
sOutput = Integer.toString(iInput);
}
return sOutput;
}
/**
* ' ' > ' ' '' ' ' , API
* @param commandMap
* @return resultVO
* @throws Exception
*/
@Operation(
summary = "'위원회 일정 등록' 페이지 로딩 시, 필요한 데이터 불러 오는 API",
description = "관리자 단에서 '위원회 관리' > '위원회 일정 관리'에 '등록' 버튼을 누른 후 '위원회 일정 등록' 페이지 로딩 시, 필요한 데이터 불러 오는 API",
@ -74,18 +37,12 @@ public class SchedulesApiController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@GetMapping(value = "/schedule/init")
public ResultVO ScheduleInit(@RequestParam Map<String, Object> commandMap) throws Exception {
public ResultVO scheduleInit(@RequestParam Map<String, Object> commandMap) throws Exception {
ResultVO resultVO = new ResultVO();
return egovIndvdlSchdulManageService.ScheduleInit(resultVO);
return egovIndvdlSchdulManageService.scheduleInit(resultVO);
}
/**
* ' ' , API
* @param paramCodeGroup
* @return
* @throws Exception
*/
@Operation(
summary = "'위원회 일정 등록' 페이지에서 심의위원회 첫 번째 거 선택 시, 하위 목록 불러오는 API",
description = "관리자 단에서 '위원회 관리' > '위원회 일정 관리'에 '등록' 버튼을 누른 후 '위원회 일정 등록' 페이지에서 심의위원회 첫 번째 거 선택 시, 하위 목록 불러오는 API",
@ -96,9 +53,43 @@ public class SchedulesApiController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@GetMapping(value = "/schedule/api/org-api/depth/list")
public ResultVO ScheduleApiOrgApiDepthList(@RequestParam Integer paramCodeGroup) throws Exception {
public ResultVO scheduleApiOrgApiDepthList(@RequestParam Long paramCodeGroup) throws Exception {
ResultVO resultVO = new ResultVO();
return egovIndvdlSchdulManageService.ScheduleApiOrgApiDepthList(resultVO, paramCodeGroup);
return egovIndvdlSchdulManageService.scheduleApiOrgApiDepthList(resultVO, paramCodeGroup);
}
@Operation(
summary = "'위원회 일정 등록' 페이지에서 일정 등록하는 API",
description = "관리자 단에서 '위원회 관리' > '위원회 일정 관리'에 '등록' 버튼을 누른 후 '위원회 일정 등록' 페이지에서 일정 등록하는 API",
tags = {"SchedulesApiController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "등록 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@PostMapping(value = "/schedule")
public ResultVO createSchedule(HttpServletRequest request, CreateScheduleVO createScheduleVO) throws Exception {
ResultVO resultVO = new ResultVO();
try {
resultVO = egovIndvdlSchdulManageService.createSchedule(resultVO, request, createScheduleVO);
} catch (Exception e) {
resultVO.setResultCode(-1);
resultVO.setResultMessage(e.getMessage());
}
System.out.println(
"\n--------------------------------------------------------------\n" +
request.getRequestURI() + " OUT:" +
"\n--------------------------------------------------------------\n" +
"resultVO.toString():" + "\n" +
resultVO.toString() + "\n" +
"\n--------------------------------------------------------------\n"
);
return resultVO;
}

View File

@ -0,0 +1,39 @@
package com.dbnt.kcscbackend.admin.committee.schedules.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import java.io.Serializable;
import java.time.LocalDateTime;
@ApiModel(value = "createScheduleVO", description =
"관리자 단에서 '위원회 관리' > '위원회 일정 관리'에 '등록' 버튼을 누른 후 '위원회 일정 등록' 페이지에서 일정 등록하는 API에 사용된다." + ""
)
@RequiredArgsConstructor
@Getter
@Setter
@ToString
public class CreateScheduleVO implements Serializable {
private static final long serialVersionUID = 6544623713351174876L;
@ApiModelProperty(value = "eventId")
private Integer eventId;
@ApiModelProperty(value = "startDate")
private String startDate;
@ApiModelProperty(value = "endDate")
private String endDate;
@ApiModelProperty(value = "title")
private String title;
@ApiModelProperty(value = "contents")
private String contents;
@ApiModelProperty(value = "location")
private String location;
@ApiModelProperty(value = "divMeet")
private String divMeet;
@ApiModelProperty(value = "upCommittee")
private Integer upCommittee;
@ApiModelProperty(value = "committee")
private Integer committee;
}

View File

@ -1,7 +1,12 @@
package com.dbnt.kcscbackend.admin.committee.schedules.service;
import com.dbnt.kcscbackend.admin.committee.schedules.model.CreateScheduleVO;
import com.dbnt.kcscbackend.config.common.ResultVO;
import org.springframework.web.bind.annotation.RequestBody;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletRequest;
/**
*
@ -22,8 +27,10 @@ public interface EgovIndvdlSchdulManageService {
public ResultVO ScheduleInit(ResultVO resultVO) throws Exception;
public ResultVO scheduleInit(ResultVO resultVO) throws Exception;
public ResultVO ScheduleApiOrgApiDepthList(ResultVO resultVO, Integer paramCodeGroup) throws Exception;
public ResultVO scheduleApiOrgApiDepthList(ResultVO resultVO, Long paramCodeGroup) throws Exception;
public ResultVO createSchedule(ResultVO resultVO, HttpServletRequest request, CreateScheduleVO createScheduleVO) throws Exception;
}

View File

@ -1,18 +1,28 @@
package com.dbnt.kcscbackend.admin.committee.schedules.service.impl;
import com.dbnt.kcscbackend.admin.committee.schedules.model.CreateScheduleVO;
import com.dbnt.kcscbackend.admin.committee.schedules.service.EgovIndvdlSchdulManageService;
import com.dbnt.kcscbackend.admin.config.repository.TcCodeItemRepository;
import com.dbnt.kcscbackend.admin.config.repository.TnCmtEventRepository;
import com.dbnt.kcscbackend.admin.config.repository.TnCmtOrgRepository;
import com.dbnt.kcscbackend.config.common.ResultVO;
import lombok.RequiredArgsConstructor;
import org.apache.tomcat.util.json.JSONParser;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.springframework.boot.configurationprocessor.json.JSONObject;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -36,9 +46,12 @@ public class EgovIndvdlSchdulManageServiceImpl extends EgovAbstractServiceImpl i
private final TcCodeItemRepository tcCodeItemRepository;
private final TnCmtOrgRepository tnCmtOrgRepository;
private final TnCmtEventRepository tnCmtEventRepository;
@Override
public ResultVO ScheduleInit(ResultVO resultVO) throws Exception {
public ResultVO scheduleInit(ResultVO resultVO) throws Exception {
Map<String, Object> resultMap = new HashMap<String, Object>();
@ -52,7 +65,7 @@ public class EgovIndvdlSchdulManageServiceImpl extends EgovAbstractServiceImpl i
})
.collect(Collectors.toList());
List<Map<String, Object>> listSubOrg = tnCmtOrgRepository.findByUseYnAndUpCmtSeqOrderByCmtOrder("Y", 3).stream()
List<Map<String, Object>> listSubOrg = tnCmtOrgRepository.findByUseYnAndUpCmtSeqOrderByCmtOrder("Y", 3L).stream()
.map(item -> {
Map<String, Object> codeMap = new HashMap<>();
codeMap.put("id", item.getCmtSeq());
@ -60,7 +73,7 @@ public class EgovIndvdlSchdulManageServiceImpl extends EgovAbstractServiceImpl i
return codeMap;
})
.collect(Collectors.toList());
List<Map<String, Object>> listTopOrg = tnCmtOrgRepository.findByUseYnAndUpCmtSeqOrderByCmtOrder("Y", 2).stream()
List<Map<String, Object>> listTopOrg = tnCmtOrgRepository.findByUseYnAndUpCmtSeqOrderByCmtOrder("Y", 2L).stream()
.map(item -> {
Map<String, Object> codeMap = new HashMap<>();
codeMap.put("id", item.getCmtSeq());
@ -78,7 +91,7 @@ public class EgovIndvdlSchdulManageServiceImpl extends EgovAbstractServiceImpl i
}
@Override
public ResultVO ScheduleApiOrgApiDepthList(ResultVO resultVO, Integer paramCodeGroup) throws Exception {
public ResultVO scheduleApiOrgApiDepthList(ResultVO resultVO, Long paramCodeGroup) throws Exception {
Map<String, Object> resultMap = new HashMap<String, Object>();
@ -98,5 +111,55 @@ public class EgovIndvdlSchdulManageServiceImpl extends EgovAbstractServiceImpl i
return resultVO;
}
@Override
@Transactional(rollbackFor = {Exception.class})
public ResultVO createSchedule(ResultVO resultVO, HttpServletRequest request, CreateScheduleVO createScheduleVO) throws Exception {
System.out.println(
"\n--------------------------------------------------------------\n" +
request.getRequestURI() + " IN:" +
"\n--------------------------------------------------------------\n" +
"createScheduleVO:" + "\n" +
createScheduleVO.toString() + "\n" +
"\n--------------------------------------------------------------\n"
);
Locale currentLocale = new Locale("KOREAN", "KOREA");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", currentLocale);
Date date = formatter.parse(createScheduleVO.getStartDate());
LocalDate startDate = date.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
LocalDateTime endDate = Instant.ofEpochMilli(date.getTime())
.atZone(ZoneId.systemDefault())
.toLocalDateTime();
Timestamp ts=new Timestamp(date.getTime());
tnCmtEventRepository.sp_add_tn_cmt_event(
createScheduleVO.getDivMeet(),
createScheduleVO.getUpCommittee(),
createScheduleVO.getCommittee(),
createScheduleVO.getTitle(),
createScheduleVO.getLocation(),
createScheduleVO.getContents(),
date,
date,
"admin",
null,
null,
null,
null
);
//resultVO.setResult();
resultVO.setResultMessage("OK");
resultVO.setResultCode(0);
return resultVO;
}
}

View File

@ -0,0 +1,77 @@
package com.dbnt.kcscbackend.admin.config.entity;
import lombok.*;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDateTime;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "tn_cmt_event")
public class TnCmtEvent {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "evt_seq")
private Long evt_seq;
@Column(name = "evt_type")
private String evt_type;
@Column(name = "up_cmt_seq")
private Long up_cmt_seq;
@Column(name = "cmt_seq")
private Long cmt_seq;
@Column(name = "evt_title")
private String evt_title;
@Column(name = "evt_location")
private String evt_location;
@Column(name = "evt_contents")
private String evt_contents;
@Column(name = "evt_start_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime evt_start_dt;
@Column(name = "evt_end_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime evt_end_dt;
@Column(name = "frst_crt_id")
private String frst_crt_id;
@Column(name = "frst_crt_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime frst_crt_dt;
@Column(name = "last_chg_id")
private String last_chg_id;
@Column(name = "last_chg_dt")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime last_chg_dt;
@Column(name = "use_yn")
private String use_yn;
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class TnCmtEventId implements Serializable {
private Long evt_seq;
}
}

View File

@ -20,7 +20,7 @@ public class TnCmtOrg {
@Id
@Column(name = "cmt_seq")
private Integer cmtSeq;
private Long cmtSeq;
@Column(name = "cmt_nm")
private String cmtNm;
@ -32,7 +32,7 @@ public class TnCmtOrg {
private String cmtDesc;
@Column(name = "up_cmt_seq")
private Integer upCmtSeq;
private Long upCmtSeq;
@Column(name = "cmt_order")
private Integer cmtOrder;
@ -55,7 +55,7 @@ public class TnCmtOrg {
private String useYn;
@Column(name = "old_seq")
private Integer oldSeq;
private Long oldSeq;
@Embeddable
@Data

View File

@ -0,0 +1,47 @@
package com.dbnt.kcscbackend.admin.config.repository;
import com.dbnt.kcscbackend.admin.config.entity.TnCmtEvent;
import com.dbnt.kcscbackend.admin.config.entity.TnCmtOrg;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.query.Procedure;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
public interface TnCmtEventRepository extends JpaRepository<TnCmtEvent, TnCmtEvent.TnCmtEventId> {
@Procedure
int sp_add_tn_cmt_event(
String evtType,
Integer upCmtSeq,
Integer cmtSeq,
String evtTitle,
String evtLocation,
String evtContents,
Date evtStartDt,
Date evtEndDt,
String modiId,
Integer _evt_seq,
Integer _result_count,
String _result_code,
String _error_message
);
/*
@Procedure
int sp_add_tn_cmt_event(
String _evt_type,
Integer _up_cmt_seq,
Integer _cmt_seq,
String _evt_title,
String _evt_location,
String _evt_contents,
String _evt_start_dt,
String _evt_end_dt,
String _modi_id
);
*/
}

View File

@ -7,6 +7,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface TnCmtOrgRepository extends JpaRepository<TnCmtOrg, TnCmtOrg.TnCmtOrgId> {
List<TnCmtOrg> findByUseYnAndUpCmtSeqOrderByCmtOrder(String useYn, Integer upCmtSeq);
List<TnCmtOrg> findByUseYnAndUpCmtSeqOrderByCmtOrder(String useYn, Long upCmtSeq);
}

View File

@ -59,7 +59,12 @@ public class LoginVO implements Serializable{
private String userSe;
@Schema(description = "이름")
private String name;
@NotBlank(message = "이름을 입력해주세요.")
private String userNm;
@Schema(description = "연락처")
@NotBlank(message = "연락처를 입력해주세요.")
private String phoneNum;
@Schema(description = "주민등록번호")
private String ihidNum;

View File

@ -59,8 +59,10 @@ public class EgovLoginServiceImpl extends EgovAbstractServiceImpl implements Ego
UserInfo info = new UserInfo();
info.setUserId(loginVO.getId());
info.setPassword(convertPassword(loginVO.getPassword()));
info.setUserNm(loginVO.getUserNm());
info.setEmail(loginVO.getEmail());
info.setUserSe("USR");
info.setPhoneNum(loginVO.getPhoneNum());
info.setUserSe("ACC_TP02");
userInfoRepository.save(info);
return info.getUserSeq();
}

View File

@ -21,6 +21,7 @@ spring.datasource.password=dbnt0928!
spring.jpa.show-sql=true
spring.jpa.generate-ddl=false
spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.properties.hibernate.proc.param_null_passing=true
# MyBatis
mybatis.mapper-locations: mybatisMapper/*.xml

View File

@ -13,8 +13,8 @@ spring.datasource.hikari.maximum-pool-size=4
#spring.datasource.username=kcsc
#spring.datasource.password=dbnt0928!
spring.datasource.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
#spring.datasource.url=jdbc:log4jdbc:postgresql://127.0.0.1:5432/kcsc
spring.datasource.url=jdbc:log4jdbc:postgresql://118.219.150.34:50503/kcsc
spring.datasource.url=jdbc:log4jdbc:postgresql://127.0.0.1:5432/kcsc
#spring.datasource.url=jdbc:log4jdbc:postgresql://118.219.150.34:50503/kcsc
spring.datasource.username=dbnt0031
spring.datasource.password=dbnt0928!
@ -22,6 +22,8 @@ spring.datasource.password=dbnt0928!
spring.jpa.show-sql=true
spring.jpa.generate-ddl=false
spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.properties.hibernate.proc.param_null_passing=true
# MyBatis
mybatis.mapper-locations: mybatisMapper/*.xml

View File

@ -24,6 +24,7 @@ spring.datasource.password=dbnt0928!
spring.jpa.show-sql=false
spring.jpa.generate-ddl=false
spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.properties.hibernate.proc.param_null_passing=true
# MyBatis
mybatis.mapper-locations: mybatisMapper/*.xml

View File

@ -24,6 +24,7 @@ spring.datasource.password=dbnt0928!
spring.jpa.show-sql=false
spring.jpa.generate-ddl=false
spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.properties.hibernate.proc.param_null_passing=true
# MyBatis
mybatis.mapper-locations: mybatisMapper/*.xml