관련사이트 등록수정삭제

thkim
유민형 2024-02-28 16:03:40 +09:00
parent 12feac5480
commit f86690f8be
4 changed files with 114 additions and 28 deletions

View File

@ -41,20 +41,22 @@ function AboutSiteModal({props, reloadFunction}) {
}
}
function editBoard(e) {
function editPartnerSite(e) {
e.preventDefault();
e.stopPropagation();
const form = e.target;
const info = {
bbsId: form.bbsId.value,
bbsTitle: form.bbsTitle.value,
bbsDesc: form.bbsDesc.value
siteTitle: form.siteTitle.value,
siteUrl: form.siteUrl.value,
fileGrpId: form.fileGrpId.value,
siteOrder: form.siteOrder.value,
useYn: form.useYn.value
}
if (modeInfo.mode === CODE.MODE_MODIFY) {
info.bbsSeq = props.bbsSeq;
info.siteSeq = props.siteSeq;
}
EgovNet.requestFetch(
'/admin/boards/board-mgt',
'/admin/config/partner-site-mgt',
{
method: "PUT",
headers: {
@ -75,16 +77,16 @@ function AboutSiteModal({props, reloadFunction}) {
)
}
function deleteBoard(bbs){
function deletePartnerSite(partnerSite){
if(window.confirm("삭제하시겠습니까?")) {
EgovNet.requestFetch(
'/admin/boards/board-mgt',
'/admin/config/partner-site-mgt',
{
method: "DELETE",
headers: {
'Content-type': 'application/json'
},
body: JSON.stringify(bbs)
body: JSON.stringify(partnerSite)
},
(resp) => {
if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) {
@ -103,6 +105,8 @@ function AboutSiteModal({props, reloadFunction}) {
console.log("------------------------------AboutSiteModal [End]");
console.groupEnd("AboutSiteModal");
const defaultUseYn = props?.useYn ? props.useYn : "Y";
return (
<>
{/* <!-- 본문 --> */}
@ -115,40 +119,40 @@ function AboutSiteModal({props, reloadFunction}) {
<Modal.Body>
<div className="board_view2">
<Form onSubmit={(e) => {editBoard(e)}} noValidate>
<Form onSubmit={(e) => {editPartnerSite(e)}} noValidate>
<dl>
<dt><label htmlFor="bbsId">사이트명</label><span className="req">필수</span></dt>
<dt><label htmlFor="siteTitle">사이트명</label><span className="req">필수</span></dt>
<dd>
<Form.Control className="f_input2 w_full" type="text" name="bbsId" placeholder="사이트명" required
<Form.Control className="f_input2 w_full" type="text" name="siteTitle" placeholder="사이트명" required
defaultValue={props?.siteTitle} readOnly={props!==undefined}/>
</dd>
</dl>
<dl>
<dt><label htmlFor="bbsTitle">URL</label><span className="req">필수</span></dt>
<dt><label htmlFor="siteUrl">URL</label><span className="req">필수</span></dt>
<dd>
<Form.Control className="f_input2 w_full" type="text" name="bbsTitle" placeholder="URL" required
<Form.Control className="f_input2 w_full" type="text" name="siteUrl" placeholder="URL" required
defaultValue={props?.siteUrl}/>
</dd>
</dl>
<dl>
<dt><label htmlFor="bbsDesc">배너이미지</label><span className="req">필수</span></dt>
<dt><label htmlFor="fileGrpId">배너이미지</label><span className="req">필수</span></dt>
<dd>
<Form.Control className="f_txtar w_full" type="text" name="bbsDesc" placeholder="배너이미지" required
<Form.Control className="f_txtar w_full" type="text" name="fileGrpId" placeholder="배너이미지" required
defaultValue={props?.fileGrpId}/>
</dd>
</dl>
<dl>
<dt><label htmlFor="bbsDesc">정렬순서</label><span className="req">필수</span></dt>
<dt><label htmlFor="siteOrder">정렬순서</label><span className="req">필수</span></dt>
<dd>
<Form.Control className="f_txtar w_full" type="text" name="bbsDesc" placeholder="정렬순서" required
<Form.Control className="f_txtar w_full" type="text" name="siteOrder" placeholder="정렬순서" required
defaultValue={props?.siteOrder}/>
</dd>
</dl>
<dl>
<dt><label htmlFor="bbsDesc">사용여부</label><span className="req">필수</span></dt>
<dt><label htmlFor="useYn">사용여부</label><span className="req">필수</span></dt>
<dd>
<Form.Control className="f_txtar w_full" type="text" name="bbsDesc" placeholder="사용여부" required
defaultValue={props?.useYn}/>
<Form.Check inline type="radio" label="Y" name="useYn" value="Y" defaultChecked={defaultUseYn === "Y"}/>
<Form.Check inline type="radio" label="N" name="useYn" value="N" defaultChecked={defaultUseYn === "N"}/>
</dd>
</dl>
@ -158,7 +162,7 @@ function AboutSiteModal({props, reloadFunction}) {
<button type="submit" className="btn btn_skyblue_h46 w_100">저장
</button>
{modeInfo.mode === CODE.MODE_MODIFY &&
<button type={"button"} className="btn btn_skyblue_h46 w_100" onClick={()=>{deleteBoard(props)}}>삭제</button>
<button type={"button"} className="btn btn_skyblue_h46 w_100" onClick={()=>{deletePartnerSite(props)}}>삭제</button>
}
</div>

View File

@ -1,6 +1,8 @@
package com.dbnt.kcscbackend.admin.config;
import com.dbnt.kcscbackend.admin.boards.entity.TnBbs;
import com.dbnt.kcscbackend.admin.config.entity.TcMenu;
import com.dbnt.kcscbackend.admin.config.entity.TnPartnerSite;
import com.dbnt.kcscbackend.admin.config.model.CreateCommitteeCodeManagementVO;
import com.dbnt.kcscbackend.admin.config.service.AdminCommitteeCodeManagementService;
import com.dbnt.kcscbackend.admin.standardResearch.service.AdminStandardResearchService;
@ -465,4 +467,62 @@ public class AdminConfigController extends BaseController {
return resultVO;
}
@Operation(
summary = "관련사이트 저장",
description = "관련사이트 저장",
tags = {"AdminConfigController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "저장 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@RequestMapping(method = RequestMethod.PUT, value = "/partner-site-mgt")
public ResultVO savePartnerSite(@RequestBody @Valid TnPartnerSite tnPartnerSite, Errors errors, @AuthenticationPrincipal LoginVO user) {
ResultVO resultVO = new ResultVO();
if (user == null) {
resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode());
} else {
if (errors.hasErrors()) {
StringBuilder msg = new StringBuilder();
for (FieldError error : errors.getFieldErrors()) {
msg.append(error.getDefaultMessage());
msg.append("\n");
}
resultVO.setResultCode(ResponseCode.INPUT_CHECK_ERROR.getCode());
resultVO.setResultMessage(msg.toString());
} else {
System.out.println("@@@ bbs.getBbsSeq() : " + tnPartnerSite.getSiteSeq());
adminConfigService.savePartnerSite(tnPartnerSite, user.getId());
resultVO.setResultCode(ResponseCode.SUCCESS.getCode());
}
}
return resultVO;
}
@Operation(
summary = "관련사이트 삭제",
description = "관련사이트 삭제",
tags = {"AdminConfigController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "삭제 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@RequestMapping(method = RequestMethod.DELETE, value = "/partner-site-mgt")
public ResultVO removePartnerSite(@RequestBody TnPartnerSite tnPartnerSite, @AuthenticationPrincipal LoginVO user) {
ResultVO resultVO = new ResultVO();
if (user == null) {
resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode());
} else {
String result = adminConfigService.deletePartnerSite(tnPartnerSite, user.getId());
if (result == null) {
resultVO.setResultCode(ResponseCode.SUCCESS.getCode());
} else if (result.equals("notFind")) {
resultVO.setResultCode(ResponseCode.SAVE_ERROR.getCode());
resultVO.setResultMessage("대상이 존재하지 않습니다.");
}
}
return resultVO;
}
}

View File

@ -5,11 +5,8 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
@Getter
@Setter
@ -22,7 +19,7 @@ public class TnPartnerSite {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "site_seq")
private int siteSeq;
private Long siteSeq;
@Column(name = "site_title", nullable = false, length = 500)
private String siteTitle;
@ -34,8 +31,8 @@ public class TnPartnerSite {
private String fileGrpId;
@Column(name = "site_order", nullable = false)
private int siteOrder;
private Long siteOrder;
@Column(name = "use_yn", nullable = false, length = 1)
private char useYn;
private String useYn;
}

View File

@ -20,6 +20,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@Service
@RequiredArgsConstructor
@ -174,4 +175,28 @@ public class AdminConfigService extends EgovAbstractServiceImpl {
return tnPartnerSiteRepository.findAllByOrderBySiteOrder();
}
@Transactional
public void savePartnerSite(TnPartnerSite tnPartnerSite, String userId) {
if (tnPartnerSite.getSiteSeq() == null) {
tnPartnerSiteRepository.save(tnPartnerSite);
} else {
TnPartnerSite savedPartnerSite = tnPartnerSiteRepository.findById(tnPartnerSite.getSiteSeq()).orElse(null);
savedPartnerSite.setSiteTitle(tnPartnerSite.getSiteTitle());
savedPartnerSite.setSiteUrl(tnPartnerSite.getSiteUrl());
savedPartnerSite.setFileGrpId(tnPartnerSite.getFileGrpId());
savedPartnerSite.setSiteOrder(tnPartnerSite.getSiteOrder());
savedPartnerSite.setUseYn(tnPartnerSite.getUseYn());
tnPartnerSiteRepository.save(savedPartnerSite);
}
}
@Transactional
public String deletePartnerSite(TnPartnerSite tnPartnerSite, String userId) {
Optional<TnPartnerSite> optionalTnPartnerSite = tnPartnerSiteRepository.findById(tnPartnerSite.getSiteSeq());
optionalTnPartnerSite.ifPresent(partnerSite -> {
tnPartnerSiteRepository.delete(partnerSite);
});
return optionalTnPartnerSite.isPresent() ? null : "notFind";
}
}