fix : 상점관리 > 쇼핑몰관리 > 쇼핑몰 등록/수정 - 구독서비스 결제수단 추가

(cherry picked from commit 16523bba0a)
This commit is contained in:
이대환
2026-04-16 11:58:15 +09:00
parent 81757e1217
commit b0c35f531f
4 changed files with 952 additions and 678 deletions

View File

@@ -437,39 +437,12 @@ public class BOMaSopmalService {
log.debug("masopmal {}", vo);
// update payLink
mapper.updateBOShopPayLink(vo);
// PC 결제 정보
String pcSetleType = vo.getPcSetleTypeList();
String[] pcSetleTypeArr = null;
DataMap pcSetleInfoDm = new DataMap();
if (!StringUtil.isEmpty(pcSetleType)) {
pcSetleTypeArr = StringUtil.split(pcSetleType, "$");
pcSetleInfoDm = ynSetParam(pcSetleTypeArr);
pcSetleInfoDm.put("updusr", vo.getUpdusr());
pcSetleInfoDm.put("setleInfoInnb", vo.getPcSetleInfoInnb());
mapper.updateBOShopPayInfo(pcSetleInfoDm);
} else {
pcSetleInfoDm = ynSetParam(pcSetleTypeArr);
pcSetleInfoDm.put("updusr", vo.getUpdusr());
pcSetleInfoDm.put("setleInfoInnb", vo.getPcSetleInfoInnb());
mapper.updateBOShopPayInfo(pcSetleInfoDm);
}
// MOBILE 결제 정보
String mobileSetleType = vo.getMobileSetleTypeList();
String[] mobileSetleTypeArr = null;
DataMap mobileSetleInfoDm = new DataMap();
if (!StringUtil.isEmpty(mobileSetleType)) {
mobileSetleTypeArr = StringUtil.split(mobileSetleType, "$");
mobileSetleInfoDm = ynSetParam(mobileSetleTypeArr);
mobileSetleInfoDm.put("updusr", vo.getUpdusr());
mobileSetleInfoDm.put("setleInfoInnb", vo.getMobileSetleInfoInnb());
mapper.updateBOShopPayInfo(mobileSetleInfoDm);
} else {
mobileSetleInfoDm = ynSetParam(mobileSetleTypeArr);
mobileSetleInfoDm.put("updusr", vo.getUpdusr());
mobileSetleInfoDm.put("setleInfoInnb", vo.getMobileSetleInfoInnb());
mapper.updateBOShopPayInfo(mobileSetleInfoDm);
}
// 결제 정보 업데이트
updateSetleInfo(vo.getPcSetleTypeList(), vo.getPcSetleInfoInnb(), vo.getUpdusr()); // PC
updateSetleInfo(vo.getMobileSetleTypeList(), vo.getMobileSetleInfoInnb(), vo.getUpdusr()); // MOBILE
updateSetleInfo(vo.getPcSubsvcSetleTypeList(), vo.getPcSubsvcSetleInfoInnb(), vo.getUpdusr()); // 구독서비스 PC
updateSetleInfo(vo.getMobileSubsvcSetleTypeList(), vo.getMobileSubsvcSetleInfoInnb(), vo.getUpdusr()); // 구독서비스 MOBILE
if (!ObjectUtils.isEmpty(vo.getFamilySiteNmArr())) {
String[] siteNm = vo.getFamilySiteNmArr();
@@ -523,6 +496,26 @@ public class BOMaSopmalService {
return message;
}
/**
* 결제정보 업데이트
* @param setleType 결제정보 List
* @param setleInfoInnb 결제정보 고유번호
* @param updusr 수정자 고유번호
*/
private void updateSetleInfo(String setleType, String setleInfoInnb, int updusr) {
String[] setleTypeArr = null;
if (!StringUtil.isEmpty(setleType)) {
setleTypeArr = StringUtil.split(setleType, "$");
}
DataMap dm = ynSetParam(setleTypeArr);
dm.put("updusr", updusr);
dm.put("setleInfoInnb", setleInfoInnb);
mapper.updateBOShopPayInfo(dm);
}
private void setBOMaSopmalVO(BOMaSopmalVO vo) {
if(!StringUtil.isEmpty(vo.getSmsAtmcSndngLmttBgntme()))

View File

@@ -483,12 +483,24 @@ public class BOMaSopmalVO extends AbstractVO {
/** mobile 결제정보 List */
private String mobileSetleTypeList;
/** 구독서비스 pc 결제정보 List */
private String pcSubsvcSetleTypeList;
/** 구독서비스 mobile 결제정보 List */
private String mobileSubsvcSetleTypeList;
/** pc 결제정보 Innb */
private String pcSetleInfoInnb;
/** mobile 결제정보 Innb */
private String mobileSetleInfoInnb;
/** 구독서비스 pc 결제정보 Innb */
private String pcSubsvcSetleInfoInnb;
/** 구독서비스 mobile 결제정보 Innb */
private String mobileSubsvcSetleInfoInnb;
/** 회원가입 안내 타이틀 */
private String joinGuidanceSj;

View File

@@ -271,34 +271,18 @@
}
/* ********************************************************
* PC 결제정보 합치기
* 결제정보 합치기
******************************************************** */
const fn_make_pc_setleTyCds = function() {
var pcSetleTypeList = '';
const fn_make_setleTyCds = function(setleTyName) {
var setleTypeList = '';
$('[name=pc-setle-type]:checked').each(function() {
pcSetleTypeList += '$' + $(this).val();
$('[name='+setleTyName+']:checked').each(function() {
setleTypeList += '$' + $(this).val();
});
pcSetleTypeList = pcSetleTypeList.substring(1);
return pcSetleTypeList;
setleTypeList = setleTypeList.substring(1);
return setleTypeList;
}
/* ********************************************************
* MOBILE 결제정보 합치기
******************************************************** */
const fn_make_mobile_setleTyCds = function() {
var mobileSetleTypeList = '';
$('[name=mobile-setle-type]:checked').each(function() {
mobileSetleTypeList += '$' + $(this).val();
});
mobileSetleTypeList = mobileSetleTypeList.substring(1);
return mobileSetleTypeList;
}
/* ********************************************************
* 입력창 추가
******************************************************** */
@@ -492,8 +476,10 @@
fn_make_externalLinkages();
fn_make_eamil();
var pcSetleTypeList = fn_make_pc_setleTyCds();
var mobileSetleTypeList = fn_make_mobile_setleTyCds();
var pcSetleTypeList = fn_make_setleTyCds('pc-setle-type');
var mobileSetleTypeList = fn_make_setleTyCds('mobile-setle-type');
var pcSubsvcSetleTypeList = fn_make_setleTyCds('pc-subsvc-setle-type');
var mobileSubsvcSetleTypeList = fn_make_setleTyCds('mobile-subsvc-setle-type');
let regForm = $('#regForm');
regForm.find("#joinGuidanceSj").val(fn_get_editor_data('#joinGuidanceSj'));
@@ -517,6 +503,8 @@
params += "&pcSetleTypeList="+pcSetleTypeList;
params += "&mobileSetleTypeList="+mobileSetleTypeList;
params += "&pcSubsvcSetleTypeList="+pcSubsvcSetleTypeList;
params += "&mobileSubsvcSetleTypeList="+mobileSubsvcSetleTypeList;
$.ajax({
@@ -1453,6 +1441,144 @@
</div>
</td>
</tr>
<tr>
<th>구독서비스 PC 결제수단</th>
<td colspan="3">
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="gcpayCard" class="tossBrand">
<span class="check"></span>
<span class="control-label">GCPAY 카드결제</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="gcpayAcntnb" class="tossBrand">
<span class="check"></span>
<span class="control-label">GCPAY 계좌결제</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="card" class="setle">
<span class="check"></span>
<span class="control-label">신용카드</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="rltmAcnt" class="setle">
<span class="check"></span>
<span class="control-label">실시간 계좌이체</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="virtlAcnt" class="setle">
<span class="check"></span>
<span class="control-label">가상계좌</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="virtlAcntEscw" class="setle">
<span class="check"></span>
<span class="control-label">가상계좌(에스크로)</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="payco" class="setle">
<span class="check"></span>
<span class="control-label">페이코</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="nbkk" >
<span class="check"></span>
<span class="control-label">무통장입금</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="tpay" class="toss">
<span class="check"></span>
<span class="control-label">토스페이</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="memor" class="handWritingSetle">
<span class="check"></span>
<span class="control-label">수기결제</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="npay" ${f:setChecked(fn:contains(payInfoList.npayUseAt, 'Y'), true)} class="npay">
<span class="check"></span>
<span class="control-label">네이버페이</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="kpay" ${f:setChecked(fn:contains(payInfoList.kpayUseAt, 'Y'), true)} class="kpay">
<span class="check"></span>
<span class="control-label">카카오페이</span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>구독서비스 MOBILE 결제수단</th>
<td colspan="3">
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="gcpayCard" class="tossBrand">
<span class="check"></span>
<span class="control-label">GCPAY 카드결제</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="gcpayAcntnb" class="tossBrand">
<span class="check"></span>
<span class="control-label">GCPAY 계좌결제</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="card" class="setle">
<span class="check"></span>
<span class="control-label">신용카드</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="rltmAcnt" class="setle">
<span class="check"></span>
<span class="control-label">실시간 계좌이체</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="virtlAcnt" class="setle">
<span class="check"></span>
<span class="control-label">가상계좌</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="virtlAcntEscw" class="setle">
<span class="check"></span>
<span class="control-label">가상계좌(에스크로)</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="payco" class="setle">
<span class="check"></span>
<span class="control-label">페이코</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="nbkk" >
<span class="check"></span>
<span class="control-label">무통장입금</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="tpay" class="toss">
<span class="check"></span>
<span class="control-label">토스페이</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="memor" class="handWritingSetle">
<span class="check"></span>
<span class="control-label">수기결제</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="npay" ${f:setChecked(fn:contains(payInfoList.npayUseAt, 'Y'), true)} class="npay">
<span class="check"></span>
<span class="control-label">네이버페이</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="kpay" ${f:setChecked(fn:contains(payInfoList.kpayUseAt, 'Y'), true)} class="kpay">
<span class="check"></span>
<span class="control-label">카카오페이</span>
</label>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>

View File

@@ -265,29 +265,16 @@
}
/* ********************************************************
* PC 결제정보 합치기
* 결제정보 합치기
******************************************************** */
const fn_make_pc_setleTyCds = function() {
var pcSetleTypeList = '';
const fn_make_setleTyCds = function(setleTyName) {
var setleTypeList = '';
$('[name=pc-setle-type]:checked').each(function() {
pcSetleTypeList += '$' + $(this).val();
$('[name='+setleTyName+']:checked').each(function() {
setleTypeList += '$' + $(this).val();
});
pcSetleTypeList = pcSetleTypeList.substring(1);
return pcSetleTypeList;
}
/* ********************************************************
* MOBILE 결제정보 합치기
******************************************************** */
const fn_make_mobile_setleTyCds = function() {
var mobileSetleTypeList = '';
$('[name=mobile-setle-type]:checked').each(function() {
mobileSetleTypeList += '$' + $(this).val();
});
mobileSetleTypeList = mobileSetleTypeList.substring(1);
return mobileSetleTypeList;
setleTypeList = setleTypeList.substring(1);
return setleTypeList;
}
/* ********************************************************
@@ -691,8 +678,10 @@
fn_make_externalLinkages();
fn_make_eamil();
var pcSetleTypeList = fn_make_pc_setleTyCds();
var mobileSetleTypeList = fn_make_mobile_setleTyCds();
var pcSetleTypeList = fn_make_setleTyCds('pc-setle-type');
var mobileSetleTypeList = fn_make_setleTyCds('mobile-setle-type');
var pcSubsvcSetleTypeList = fn_make_setleTyCds('pc-subsvc-setle-type');
var mobileSubsvcSetleTypeList = fn_make_setleTyCds('mobile-subsvc-setle-type');
let updForm = $('#updForm');
updForm.find("#joinGuidanceSj").val(fn_get_editor_data('#joinGuidanceSj'));
@@ -710,6 +699,8 @@
params += "&pcSetleTypeList="+pcSetleTypeList;
params += "&mobileSetleTypeList="+mobileSetleTypeList;
params += "&pcSubsvcSetleTypeList="+pcSubsvcSetleTypeList;
params += "&mobileSubsvcSetleTypeList="+mobileSubsvcSetleTypeList;
$.ajax({
type: 'post',
@@ -1589,6 +1580,158 @@
</div>
</td>
</tr>
<tr>
<th>구독서비스 PC 결제수단</th>
<td colspan="3">
<div class="td-inner">
<div class="b-checkbox-container">
<c:if test="${not empty resultMap.payInfoList}">
<c:forEach var="payInfoList" items="${resultMap.payInfoList}" varStatus="piStatus">
<c:if test="${payInfoList.setlePltfomTyCd eq '03'}">
<input type="hidden" id="pcSubsvcSetleInfoInnb" name="pcSubsvcSetleInfoInnb" value="${payInfoList.setleInfoInnb}" >
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="gcpayCard" ${f:setChecked(fn:contains(payInfoList.gcpayCardUseAt, 'Y'), true)} class="tossBrand">
<span class="check"></span>
<span class="control-label">GCPAY 카드결제</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="gcpayAcntnb" ${f:setChecked(fn:contains(payInfoList.gcpayAcntnbUseAt, 'Y'), true)} class="tossBrand">
<span class="check"></span>
<span class="control-label">GCPAY 계좌결제</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="card" ${f:setChecked(fn:contains(payInfoList.cardUseAt, 'Y'), true)} class="setle">
<span class="check"></span>
<span class="control-label">신용카드</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="rltmAcnt" ${f:setChecked(fn:contains(payInfoList.rltmAcntUseAt, 'Y'), true)} class="setle">
<span class="check"></span>
<span class="control-label">실시간 계좌이체</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="virtlAcnt" ${f:setChecked(fn:contains(payInfoList.virtlAcntUseAt, 'Y'), true)} class="setle">
<span class="check"></span>
<span class="control-label">가상계좌</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="virtlAcntEscw" ${f:setChecked(fn:contains(payInfoList.virtlAcntEscwUseAt, 'Y'), true)} class="setle">
<span class="check"></span>
<span class="control-label">가상계좌(에스크로)</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="payco" ${f:setChecked(fn:contains(payInfoList.paycoUseAt, 'Y'), true)} class="setle">
<span class="check"></span>
<span class="control-label">페이코</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="nbkk" ${f:setChecked(fn:contains(payInfoList.nbkkUseAt, 'Y'), true)} >
<span class="check"></span>
<span class="control-label">무통장입금</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="tpay" ${f:setChecked(fn:contains(payInfoList.tpayUseAt, 'Y'), true)} class="toss">
<span class="check"></span>
<span class="control-label">토스페이</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="memor" ${f:setChecked(fn:contains(payInfoList.memorUseAt, 'Y'), true)} class="handWritingSetle">
<span class="check"></span>
<span class="control-label">수기결제</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="npay" ${f:setChecked(fn:contains(payInfoList.npayUseAt, 'Y'), true)} class="npay">
<span class="check"></span>
<span class="control-label">네이버페이</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="pc-subsvc-setle-type" value="kpay" ${f:setChecked(fn:contains(payInfoList.kpayUseAt, 'Y'), true)} class="kpay">
<span class="check"></span>
<span class="control-label">카카오페이</span>
</label>
</c:if>
</c:forEach>
</c:if>
</div>
</div>
</td>
</tr>
<tr>
<th>구독서비스 MOBILE 결제수단</th>
<td colspan="3">
<div class="td-inner">
<div class="b-checkbox-container">
<c:if test="${not empty resultMap.payInfoList}">
<c:forEach var="payInfoList" items="${resultMap.payInfoList}" varStatus="piStatus">
<c:if test="${payInfoList.setlePltfomTyCd eq '04'}">
<input type="hidden" id="mobileSubsvcSetleInfoInnb" name="mobileSubsvcSetleInfoInnb" value="${payInfoList.setleInfoInnb}" >
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="gcpayCard" ${f:setChecked(fn:contains(payInfoList.gcpayCardUseAt, 'Y'), true)} class="tossBrand">
<span class="check"></span>
<span class="control-label">GCPAY 카드결제</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="gcpayAcntnb" ${f:setChecked(fn:contains(payInfoList.gcpayAcntnbUseAt, 'Y'), true)} class="tossBrand">
<span class="check"></span>
<span class="control-label">GCPAY 계좌결제</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="card" ${f:setChecked(fn:contains(payInfoList.cardUseAt, 'Y'), true)} class="setle">
<span class="check"></span>
<span class="control-label">신용카드</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="rltmAcnt" ${f:setChecked(fn:contains(payInfoList.rltmAcntUseAt, 'Y'), true)} class="setle">
<span class="check"></span>
<span class="control-label">실시간 계좌이체</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="virtlAcnt" ${f:setChecked(fn:contains(payInfoList.virtlAcntUseAt, 'Y'), true)} class="setle">
<span class="check"></span>
<span class="control-label">가상계좌</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="virtlAcntEscw" ${f:setChecked(fn:contains(payInfoList.virtlAcntEscwUseAt, 'Y'), true)} class="setle">
<span class="check"></span>
<span class="control-label">가상계좌(에스크로)</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="payco" ${f:setChecked(fn:contains(payInfoList.paycoUseAt, 'Y'), true)} class="setle">
<span class="check"></span>
<span class="control-label">페이코</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="nbkk" ${f:setChecked(fn:contains(payInfoList.nbkkUseAt, 'Y'), true)} >
<span class="check"></span>
<span class="control-label">무통장입금</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="tpay" ${f:setChecked(fn:contains(payInfoList.tpayUseAt, 'Y'), true)} class="toss">
<span class="check"></span>
<span class="control-label">토스페이</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="memor" ${f:setChecked(fn:contains(payInfoList.memorUseAt, 'Y'), true)} class="handWritingSetle">
<span class="check"></span>
<span class="control-label">수기결제</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="npay" ${f:setChecked(fn:contains(payInfoList.npayUseAt, 'Y'), true)} class="npay">
<span class="check"></span>
<span class="control-label">네이버페이</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="mobile-subsvc-setle-type" value="kpay" ${f:setChecked(fn:contains(payInfoList.kpayUseAt, 'Y'), true)} class="kpay">
<span class="check"></span>
<span class="control-label">카카오페이</span>
</label>
</c:if>
</c:forEach>
</c:if>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>