From ef3f0e802a975b38d4e3f37d7854856b243af1e8 Mon Sep 17 00:00:00 2001 From: Rinjae-gf63 Date: Thu, 18 Jun 2026 16:31:22 +0900 Subject: [PATCH] =?UTF-8?q?-=20=EC=82=AC=EC=9A=A9=EC=9E=90=20ID=20?= =?UTF-8?q?=EA=B2=80=EC=A6=9D=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?(PortalUserService)=20-=20=EC=82=AC=EC=97=85=EC=A0=9C=ED=9C=B4?= =?UTF-8?q?=20=EA=B4=80=EB=A6=AC=20>=20=EC=82=AD=EC=A0=9C/=EB=8B=A4?= =?UTF-8?q?=EC=A4=91=20=EC=82=AD=EC=A0=9C=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B0=8F=20=ED=99=94=EB=A9=B4=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=20-=20=ED=94=BC=EB=93=9C=EB=B0=B1/=EA=B0=9C=EC=84=A0=20?= =?UTF-8?q?=EC=9A=94=EC=B2=AD=EC=9C=BC=EB=A1=9C=20=EB=AA=85=EC=B9=AD=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20(=EC=82=AC=EC=97=85=EC=A0=9C=ED=9C=B4=20?= =?UTF-8?q?=EA=B4=80=EB=A6=AC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebContent/WEB-INF/auditpoints.dat | 2 +- .../portalPartnershipMan.jsp | 76 +++++++++++++++++-- .../portalPartnershipManDetail.jsp | 2 +- .../PortalPartnershipService.java | 6 ++ .../apim/portaluser/PortalUserService.java | 4 + .../PortalPartnershipManController.java | 12 +++ .../PortalPartnershipManService.java | 42 +++++++++- 7 files changed, 132 insertions(+), 12 deletions(-) diff --git a/WebContent/WEB-INF/auditpoints.dat b/WebContent/WEB-INF/auditpoints.dat index 1c2969a..136d44c 100644 --- a/WebContent/WEB-INF/auditpoints.dat +++ b/WebContent/WEB-INF/auditpoints.dat @@ -12,6 +12,6 @@ PortalTermsManController_약관관리_APIGW_INSERT,UPDATE,DELETE ProdClientManController_운영Client (키정보)관리_APIGW_INSERT,UPDATE,DELETE ApiSpecController_API스펙관리_APIGW_INSERT,DELETE MessageTemplateManController_메세지템플릿관리_APIGW_INSERT,UPDATE,DELETE -PortalPartnershipManController_사업제휴신청관리_APIGW_UNMASK +PortalPartnershipManController_피드백/개선요청관리_APIGW_UNMASK PortalPropertyController_포탈 프로퍼티 관리_APIGW_UPDATE PortalUserTermsManController_약관동의 이력_APIGW_UNMASK \ No newline at end of file diff --git a/WebContent/jsp/onl/apim/portalpartnership/portalPartnershipMan.jsp b/WebContent/jsp/onl/apim/portalpartnership/portalPartnershipMan.jsp index 15b3f38..27f5b61 100644 --- a/WebContent/jsp/onl/apim/portalpartnership/portalPartnershipMan.jsp +++ b/WebContent/jsp/onl/apim/portalpartnership/portalPartnershipMan.jsp @@ -26,7 +26,63 @@ function formatFile(cellvalue, options, rowObject) { return cellvalue + icon; } -$(document).ready(function() { +function formatDelete(cellvalue, options, rowObject) { + return ''; +} + +function deleteRow(id) { + if (!confirm('선택한 항목을 삭제하시겠습니까?')) { + return; + } + + $.ajax({ + type: "POST", + url: url, + dataType: "json", + data: { cmd: 'DELETE', id: id }, + success: function(data) { + alert('삭제되었습니다.'); + $("#grid").trigger("reloadGrid"); + }, + error: function(e) { + alert('삭제 중 오류가 발생했습니다.'); + } + }); +} + +function deleteSelectedRows() { + var selectedIds = $("#grid").jqGrid('getGridParam', 'selarrrow'); + + if (selectedIds.length === 0) { + alert('항목을 선택하세요.'); + return; + } + + if (!confirm('선택된 ' + selectedIds.length + '개 항목을 삭제하시겠습니까?')) { + return; + } + + $.ajax({ + type: "POST", + url: url, + dataType: "json", + data: { + cmd: 'DELETE_BULK', + ids: selectedIds.join(',') + }, + success: function(data) { + alert('삭제되었습니다.'); + $("#grid").jqGrid('clearGridData', true); + $("#grid").trigger("reloadGrid"); + }, + error: function(e) { + alert('삭제 중 오류가 발생했습니다.'); + } + }); +} + +$(document).ready(function() { $('#grid').jqGrid({ datatype:"json", mtype: 'POST', @@ -35,17 +91,18 @@ $(document).ready(function() { searchBizSubject: $('input[name=searchBizSubject]').val() , searchBizDetail: $('input[name=searchBizDetail]').val() }, - colNames:['No.', 'ID', '제목', '작성자', '작성일시'], + colNames:['No.', 'ID', '제목', '작성자', '작성일시', '관리'], colModel:[ { name : 'rowNum' , align:'center', width: 40, sortable: false }, { name : 'id' , align:'center', key: true, hidden: true}, { name : 'bizSubject' , align:'center', width: 150, formatter: formatFile }, { name : 'createdByName' , align:'center' ,width: 80}, - { name : 'createdDate' , align:'center', width: 100, formatter: timeStampFormat } + { name : 'createdDate' , align:'center', width: 100, formatter: timeStampFormat }, + { name : 'act' , align:'center', width: 60, sortable: false, formatter: formatDelete } ], jsonReader: { repeatitems:false - }, + }, pager : $('#pager'), page : '${param.page}', rowNum : '${rmsDefaultRowNum}', @@ -54,6 +111,8 @@ $(document).ready(function() { autowidth: true, viewrecords: true, rowList : eval('[${rmsDefaultRowList}]'), + multiselect: true, + multiboxonly: true, ondblClickRow: function(rowId) { var rowData = $(this).getRowData(rowId); var id = rowData['id']; @@ -94,10 +153,14 @@ $(document).ready(function() { resizeJqGridWidth('grid','content_middle','1000'); $("#btn_search").click(function(){ - var postData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로 + var postData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로 $("#grid").setGridParam({ url:url,postData: postData ,page:1 }).trigger("reloadGrid"); }); + $("#btn_delete_selected").click(function(){ + deleteSelectedRows(); + }); + $("input[name^=search]").keydown(function(key){ if (key.keyCode == 13){ $("#btn_search").click(); @@ -120,8 +183,9 @@ $(document).ready(function() {
+
-
사업제휴 신청 목록
+
피드백/개선요청 신청 목록
diff --git a/WebContent/jsp/onl/apim/portalpartnership/portalPartnershipManDetail.jsp b/WebContent/jsp/onl/apim/portalpartnership/portalPartnershipManDetail.jsp index 75bedfc..756a7f5 100644 --- a/WebContent/jsp/onl/apim/portalpartnership/portalPartnershipManDetail.jsp +++ b/WebContent/jsp/onl/apim/portalpartnership/portalPartnershipManDetail.jsp @@ -136,7 +136,7 @@ $(document).ready(function() { -
사업제휴 신청 상세
+
피드백/개선요청 신청 상세
diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/portalpartnerslhip/PortalPartnershipService.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/portalpartnerslhip/PortalPartnershipService.java index 8e1dbc4..fdc09fa 100644 --- a/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/portalpartnerslhip/PortalPartnershipService.java +++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/portalpartnerslhip/PortalPartnershipService.java @@ -10,10 +10,16 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + @Service @Transactional(transactionManager = "transactionManagerForEMS") public class PortalPartnershipService extends AbstractEMSDataSerivce { + public void deleteByIds(List ids) { + repository.deleteAllById(ids); + } + public Page findAll(Pageable pageable, String searchBizSubject, String searchBizDetail) { QPartnershipApplication qPartnershipApplication = QPartnershipApplication.partnershipApplication; diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/portaluser/PortalUserService.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/portaluser/PortalUserService.java index ebbd9d9..965f0c7 100644 --- a/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/portaluser/PortalUserService.java +++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/portaluser/PortalUserService.java @@ -77,6 +77,10 @@ public class PortalUserService extends AbstractEMSDataSerivce delete(String id) { + portalPartnershipManService.delete(id); + return ResponseEntity.ok().build(); + } + + @PostMapping(value = "/onl/apim/portalpartnership/portalPartnershipMan.json", params = "cmd=DELETE_BULK") + public ResponseEntity deleteBulk(String ids) { + portalPartnershipManService.deleteBulk(ids); + return ResponseEntity.ok().build(); + } + } diff --git a/src/main/java/com/eactive/eai/rms/onl/apim/portalpartnership/PortalPartnershipManService.java b/src/main/java/com/eactive/eai/rms/onl/apim/portalpartnership/PortalPartnershipManService.java index 5661789..4537b99 100644 --- a/src/main/java/com/eactive/eai/rms/onl/apim/portalpartnership/PortalPartnershipManService.java +++ b/src/main/java/com/eactive/eai/rms/onl/apim/portalpartnership/PortalPartnershipManService.java @@ -15,6 +15,10 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; + @Service @Transactional(transactionManager = "transactionManagerForEMS") public class PortalPartnershipManService extends BaseService { @@ -51,18 +55,48 @@ public class PortalPartnershipManService extends BaseService { return convertToUIWithMaskOption(partnershipApplication, false); } + public void delete(String id) { + PartnershipApplication partnership = partnershipService.getById(id); + Optional.ofNullable(partnership.getFileId()) + .filter(StringUtils::isNotBlank) + .ifPresent(fileService::deleteFile); + partnershipService.deleteById(id); + } + + public void deleteBulk(String ids) { + if (StringUtils.isBlank(ids)) { + return; + } + + List idList = Arrays.asList(ids.split(",")); + + // 첨부파일 정리 (단건 삭제와 동일한 처리) + idList.forEach(id -> { + PartnershipApplication partnership = partnershipService.getById(id); + Optional.ofNullable(partnership.getFileId()) + .filter(StringUtils::isNotBlank) + .ifPresent(fileService::deleteFile); + }); + + partnershipService.deleteByIds(idList); + } + private PortalPartnershipUI convertToUIWithMaskOption(PartnershipApplication partnership, boolean isMasked) { PortalPartnershipUI partnershipUI = portalPartnershipUIMapper.toVo(partnership); PortalUser user = findUser(partnership.getCreatedBy()); + // 작성자(createdBy)에 해당하는 포털 사용자가 없을 수 있음(탈퇴/삭제, 시스템 작성 등) + String userName = user != null ? user.getUserName() : null; + String loginId = user != null ? user.getLoginId() : null; + if (isMasked) { // 마스킹 처리 - partnershipUI.setCreatedByName(MaskingUtils.maskName(user.getUserName())); - partnershipUI.setCreatedById(MaskingUtils.maskEmailId(user.getLoginId())); + partnershipUI.setCreatedByName(MaskingUtils.maskName(userName)); + partnershipUI.setCreatedById(MaskingUtils.maskEmailId(loginId)); } else { // 마스킹 해제 상태 - partnershipUI.setCreatedByName(user.getUserName()); - partnershipUI.setCreatedById(user.getLoginId()); + partnershipUI.setCreatedByName(userName); + partnershipUI.setCreatedById(loginId); } // 첨부파일 처리