- 사업제휴 관리 > 삭제/다중 삭제 기능 추가 및 화면 수정 - 피드백/개선 요청으로 명칭 변경 (사업제휴 관리)
This commit is contained in:
@@ -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
|
||||
@@ -26,6 +26,62 @@ function formatFile(cellvalue, options, rowObject) {
|
||||
return cellvalue + icon;
|
||||
}
|
||||
|
||||
function formatDelete(cellvalue, options, rowObject) {
|
||||
return '<button type="button" class="cssbtn" level="W" onclick="deleteRow(\'' + rowObject.id + '\');" '
|
||||
+ 'style="background-color:#dc3545;border-color:#dc3545;color:white;padding:2px 8px;">삭제</button>';
|
||||
}
|
||||
|
||||
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",
|
||||
@@ -35,13 +91,14 @@ $(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
|
||||
@@ -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'];
|
||||
@@ -98,6 +157,10 @@ $(document).ready(function() {
|
||||
$("#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() {
|
||||
<div class="content_middle" id="content_middle">
|
||||
<div class="search_wrap">
|
||||
<button type="button" class="cssbtn" id="btn_search" level="R" ><i class="material-icons">search</i> <%= localeMessage.getString("button.search") %></button>
|
||||
<button type="button" class="cssbtn" id="btn_delete_selected" level="W" style="background-color: #dc3545; border-color: #dc3545; color: white;"><i class="material-icons">delete_forever</i> 선택 삭제</button>
|
||||
</div>
|
||||
<div class="title">사업제휴 신청 목록</div>
|
||||
<div class="title">피드백/개선요청 신청 목록</div>
|
||||
<form id="ajaxForm" onsubmit="return false;">
|
||||
<table class="search_condition" cellspacing=0;>
|
||||
<tbody>
|
||||
|
||||
@@ -136,7 +136,7 @@ $(document).ready(function() {
|
||||
<button type="button" class="cssbtn" id="btn_unmask" level="W" status="DETAIL"><i class="material-icons">lock_open</i> 마스킹해제</button>
|
||||
<button type="button" class="cssbtn" id="btn_previous" level="R" status="DETAIL,NEW"><i class="material-icons">arrow_back</i> <%= localeMessage.getString("button.previous") %></button>
|
||||
</div>
|
||||
<div class="title">사업제휴 신청 상세</div>
|
||||
<div class="title">피드백/개선요청 신청 상세</div>
|
||||
|
||||
<table id="grid" ></table>
|
||||
<div id="pager"></div>
|
||||
|
||||
+6
@@ -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<PartnershipApplication, String, PortalPartnershipRepository> {
|
||||
|
||||
public void deleteByIds(List<String> ids) {
|
||||
repository.deleteAllById(ids);
|
||||
}
|
||||
|
||||
public Page<PartnershipApplication> findAll(Pageable pageable, String searchBizSubject, String searchBizDetail) {
|
||||
QPartnershipApplication qPartnershipApplication = QPartnershipApplication.partnershipApplication;
|
||||
|
||||
|
||||
+4
@@ -77,6 +77,10 @@ public class PortalUserService extends AbstractEMSDataSerivce<PortalUser, String
|
||||
}
|
||||
|
||||
public PortalUser findByUserId(String userId) {
|
||||
if (StringUtils.isBlank(userId)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
QPortalUser qPortalUser = QPortalUser.portalUser;
|
||||
|
||||
return getJPAQueryFactory()
|
||||
|
||||
+12
@@ -55,4 +55,16 @@ public class PortalPartnershipManController extends BaseAnnotationController {
|
||||
return ResponseEntity.ok(portalPartnershipUI);
|
||||
}
|
||||
|
||||
@PostMapping(value = "/onl/apim/portalpartnership/portalPartnershipMan.json", params = "cmd=DELETE")
|
||||
public ResponseEntity<Void> delete(String id) {
|
||||
portalPartnershipManService.delete(id);
|
||||
return ResponseEntity.ok().build();
|
||||
}
|
||||
|
||||
@PostMapping(value = "/onl/apim/portalpartnership/portalPartnershipMan.json", params = "cmd=DELETE_BULK")
|
||||
public ResponseEntity<Void> deleteBulk(String ids) {
|
||||
portalPartnershipManService.deleteBulk(ids);
|
||||
return ResponseEntity.ok().build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+38
-4
@@ -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<String> 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);
|
||||
}
|
||||
|
||||
// 첨부파일 처리
|
||||
|
||||
Reference in New Issue
Block a user