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); } // 첨부파일 처리