feat: 쇼핑몰 상품 배지 마스터 연동

This commit is contained in:
이주일
2026-07-15 18:09:39 +09:00
parent 331587ee56
commit dee18f8605
24 changed files with 228 additions and 116 deletions

View File

@@ -34,6 +34,8 @@ public interface BOGoodsMapper {
public Integer selectBOGoodsCount(BOGoodsVO vo);
// 일반 상품 목록 리스트
public List<DataMap> selectBOGoodsList(BOGoodsVO vo);
// 관리자 상품 배지 목록
public List<DataMap> selectBOGoodsBadgeList(BOGoodsVO vo);
// 카테고리별 상품 목록 수정
public void updateBOCtgryGoodsList(BOGoodsVO vo);
// 관리자 > 일반 상품 상세

View File

@@ -76,6 +76,15 @@ public class BOGoodsService {
return resultList;
}
/**
* 관리자 상품 배지 목록 조회
* @param vo
* @return
*/
public List<DataMap> selectBOGoodsBadgeList(BOGoodsVO vo) {
return mapper.selectBOGoodsBadgeList(vo);
}
/**
* 사용자 > 상품 목록 조회
* @param vo

View File

@@ -479,10 +479,8 @@ public class GoodsmngrController {
List<?> cgo134List = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
content.put("goodsDftinfoInvntryPolicyList", cgo134List);
// 상품아이콘
maComncdVO = new BOMaComncdVO();
maComncdVO.setGroupCd("GOODS_ICON");
List<?> iconList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
// 상품 배지
List<DataMap> iconList = service.selectBOGoodsBadgeList(vo);
content.put("iconList", iconList);
// 실시간수량배너구분코드
@@ -664,10 +662,7 @@ public class GoodsmngrController {
content.put("goodsDftinfoInvntryPolicyList", cgo134List); // 재고에 따른 판매
maComncdVO = new BOMaComncdVO();
maComncdVO.setGroupCd("GOODS_ICON");
List<?> iconList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
List<DataMap> iconList = service.selectBOGoodsBadgeList(vo);
//브랜드 목록조회
@@ -1466,10 +1461,7 @@ public class GoodsmngrController {
content.put("goodsDftinfoInvntryPolicyList", cgo134List); // 재고에 따른 판매
maComncdVO = new BOMaComncdVO();
maComncdVO.setGroupCd("GOODS_ICON");
List<?> iconList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
List<DataMap> iconList = service.selectBOGoodsBadgeList(vo);
//브랜드 목록조회

View File

@@ -190,6 +190,23 @@ public class GoodsController {
return Util.getDeviceType(request)+"/goods/GoodsSrchRForm";
}
/**
* 사용자 화면 상품 배지 목록 조회
* @return
*/
@Policy(AuthPolicy.PUBLIC)
@RequestMapping(value = "/selectGoodsBadgeList", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<List<DataMap>> selectGoodsBadgeList() {
BOGoodsVO vo = new BOGoodsVO();
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
if ("01".equals(user.getSysDvCd())) {
vo.setSopmalCd(user.getSopmalCd());
}
return ResponseEntity.ok(service.selectBOGoodsBadgeList(vo));
}
/**
* 상품 검색 리스트
* @param vo
@@ -462,6 +479,7 @@ public class GoodsController {
// 상세 조회
DataMap goodsDtl = service.selectBOGoodsDtlInfo(vo);
List<DataMap> goodsBadgeList = service.selectBOGoodsBadgeList(vo);
//상품 옵션 조회
DataMap goodsOptList = service.selectBOGoodsOptionList(vo);
@@ -513,6 +531,7 @@ public class GoodsController {
//담기
Map<String, Object> content = new HashMap<>();
content.put("goodsDtl", goodsDtl);
content.put("goodsBadgeList", goodsBadgeList);
content.put("evtBannerList", evtBannerList);
content.put("goodsOptList", goodsOptList);
content.put("GoodsRelateInfo", goodsReleateInfo);

View File

@@ -5,6 +5,20 @@
상품/사은품 START
############################-->
<!-- 관리자 상품 배지 목록 -->
<select id="selectBOGoodsBadgeList" parameterType="com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO" resultType="dataMap">
SELECT BADGE_CD AS cd
, BADGE_NM AS cdNm
, FONT_COLOR AS fontColor
, BG_COLOR AS bgColor
, BORDER_COLOR AS borderColor
, SORT_ORDR AS sortOrdr
FROM GC_GOODS_BADGE
WHERE SOPMAL_CD = #{sopmalCd}
AND USE_AT = 'Y'
ORDER BY SORT_ORDR ASC, BADGE_CD ASC
</select>
<sql id="goodsWhere">
<!-- 검색조건 별 검색 -->
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStr)">

View File

@@ -53,6 +53,42 @@
<!-- 스크립트 -->
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<script src="<c:url value='/js/sopmal/common.js'/>"></script>
<script>
(function () {
var badgeMap = {};
function applyBadge(element) {
var badge = badgeMap[element.dataset.badgeCd.toLowerCase()];
if (!badge) { return; }
element.textContent = badge.cdNm || element.textContent;
if (badge.fontColor) { element.style.setProperty('color', badge.fontColor, 'important'); }
if (badge.bgColor) { element.style.setProperty('background-color', badge.bgColor, 'important'); }
if (badge.borderColor) { element.style.setProperty('border-color', badge.borderColor, 'important'); }
}
function applyBadges(root) {
if (root.nodeType === Node.ELEMENT_NODE && root.matches('.product-badge[data-badge-cd]')) {
applyBadge(root);
}
if (root.querySelectorAll) {
root.querySelectorAll('.product-badge[data-badge-cd]').forEach(applyBadge);
}
}
function initialize() {
fetch('/sopmal/goods/selectGoodsBadgeList')
.then(function (response) { return response.ok ? response.json() : []; })
.then(function (badgeList) {
badgeList.forEach(function (badge) { badgeMap[badge.cd.toLowerCase()] = badge; });
applyBadges(document);
new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) { mutation.addedNodes.forEach(applyBadges); });
}).observe(document.documentElement, { childList: true, subtree: true });
});
}
document.addEventListener('DOMContentLoaded', initialize);
}());
</script>
<script src="<c:url value='/pc/js/script.js'/>" defer></script>
<script src="<c:url value='/js/sopmal/gcone.js'/>"></script>

View File

@@ -32,6 +32,42 @@
<!-- 스크립트 -->
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<script src="/mobile/js/script.js" defer=""></script>
<script>
(function () {
var badgeMap = {};
function applyBadge(element) {
var badge = badgeMap[element.dataset.badgeCd.toLowerCase()];
if (!badge) { return; }
element.textContent = badge.cdNm || element.textContent;
if (badge.fontColor) { element.style.setProperty('color', badge.fontColor, 'important'); }
if (badge.bgColor) { element.style.setProperty('background-color', badge.bgColor, 'important'); }
if (badge.borderColor) { element.style.setProperty('border-color', badge.borderColor, 'important'); }
}
function applyBadges(root) {
if (root.nodeType === Node.ELEMENT_NODE && root.matches('.product-badge[data-badge-cd]')) {
applyBadge(root);
}
if (root.querySelectorAll) {
root.querySelectorAll('.product-badge[data-badge-cd]').forEach(applyBadge);
}
}
function initialize() {
fetch('/sopmal/goods/selectGoodsBadgeList')
.then(function (response) { return response.ok ? response.json() : []; })
.then(function (badgeList) {
badgeList.forEach(function (badge) { badgeMap[badge.cd.toLowerCase()] = badge; });
applyBadges(document);
new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) { mutation.addedNodes.forEach(applyBadges); });
}).observe(document.documentElement, { childList: true, subtree: true });
});
}
document.addEventListener('DOMContentLoaded', initialize);
}());
</script>
<script src="<c:url value='/js/gcone.js'/>"></script>
<script src="/mobile/js/bottom-sheet.js" defer=""></script>

View File

@@ -104,10 +104,10 @@
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -282,10 +282,10 @@
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -414,10 +414,10 @@
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -521,10 +521,10 @@
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -614,10 +614,10 @@
<c:forEach items="${fn:split(case06.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -727,10 +727,10 @@
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -863,10 +863,10 @@
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -1532,10 +1532,10 @@
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -1710,10 +1710,10 @@
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -1842,10 +1842,10 @@
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -1949,10 +1949,10 @@
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -2042,10 +2042,10 @@
<c:forEach items="${fn:split(case06.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -2155,10 +2155,10 @@
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -2291,10 +2291,10 @@
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -3055,9 +3055,9 @@
if (iconCdNm.includes('-')) {
let temp = upper.replace(/-/g, ' ');
str += '<span class="product-badge ' + lower + '">' + temp + '</span>';
str += '<span class="product-badge ' + lower + '" data-badge-cd="' + iconCdNm + '">' + temp + '</span>';
} else {
str += '<span class="product-badge ' + lower + '">' + upper + '</span>';
str += '<span class="product-badge ' + lower + '" data-badge-cd="' + iconCdNm + '">' + upper + '</span>';
}
});
}

View File

@@ -2661,7 +2661,7 @@
<input type="checkbox" value="${ iconList.cd }" name="iconCd">
<span class="check"></span>
<span class="control-label">
<span class="product-badge ${fn:toLowerCase(iconList.cd)}">${ iconList.cdNm }</span>
<span class="product-badge ${fn:toLowerCase(iconList.cd)}" style="color: ${iconList.fontColor} !important; background-color: ${iconList.bgColor} !important; border-color: ${iconList.borderColor} !important;">${ iconList.cdNm }</span>
</span>
</label>
</c:forEach>

View File

@@ -2832,7 +2832,7 @@
<input type="checkbox" value="${iconList.cd}" name="iconCd" ${isChecked}/>
<span class="check"></span>
<span class="control-label">
<span class="product-badge ${fn:toLowerCase(iconList.cd)}">${iconList.cdNm}</span>
<span class="product-badge ${fn:toLowerCase(iconList.cd)}" style="color: ${iconList.fontColor} !important; background-color: ${iconList.bgColor} !important; border-color: ${iconList.borderColor} !important;">${iconList.cdNm}</span>
</span>
</label>

View File

@@ -3283,7 +3283,7 @@
<input type="checkbox" value="${iconList.cd}" name="iconCd" ${isChecked}/>
<span class="check"></span>
<span class="control-label">
<span class="product-badge ${fn:toLowerCase(iconList.cd)}">${iconList.cdNm}</span>
<span class="product-badge ${fn:toLowerCase(iconList.cd)}" style="color: ${iconList.fontColor} !important; background-color: ${iconList.bgColor} !important; border-color: ${iconList.borderColor} !important;">${iconList.cdNm}</span>
</span>
</label>

View File

@@ -180,10 +180,10 @@
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -355,10 +355,10 @@
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -507,10 +507,10 @@
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -622,10 +622,10 @@
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -754,10 +754,10 @@
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -1220,10 +1220,10 @@
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -1403,10 +1403,10 @@
var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -1566,10 +1566,10 @@
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -1681,10 +1681,10 @@
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -1813,10 +1813,10 @@
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>
@@ -2156,9 +2156,9 @@
if (iconCdNm.includes('-')) {
let temp = upper.replace(/-/g, ' ');
str += '<span class="product-badge ' + lower + '">' + temp + '</span>';
str += '<span class="product-badge ' + lower + '" data-badge-cd="' + iconCdNm + '">' + temp + '</span>';
} else {
str += '<span class="product-badge ' + lower + '">' + upper + '</span>';
str += '<span class="product-badge ' + lower + '" data-badge-cd="' + iconCdNm + '">' + upper + '</span>';
}
});
}

View File

@@ -972,19 +972,19 @@
<c:if test = "${not empty item.goodsIconCd}">
<c:forEach items="${fn:split(item.goodsIconCd, ',')}" var="icon">
<c:if test="${icon eq 'new'}">
<span class="product-badge new">NEW</span>
<span class="product-badge new" data-badge-cd="new">NEW</span>
</c:if>
<c:if test="${icon eq 'hot'}">
<span class="product-badge hot">HOT</span>
<span class="product-badge hot" data-badge-cd="hot">HOT</span>
</c:if>
<c:if test="${icon eq 'best'}">
<span class="product-badge best">BEST</span>
<span class="product-badge best" data-badge-cd="best">BEST</span>
</c:if>
<c:if test="${icon eq 'md-pick'}">
<span class="product-badge md-pick">MD PICK</span>
<span class="product-badge md-pick" data-badge-cd="md-pick">MD PICK</span>
</c:if>
<c:if test="${icon eq 'hot-deal'}">
<span class="product-badge four-row">HOT DEAL</span>
<span class="product-badge four-row" data-badge-cd="four-row">HOT DEAL</span>
</c:if>
</c:forEach>
</c:if>

View File

@@ -3922,14 +3922,16 @@
<c:if test="${not empty resultMap.goodsDtl.goodsIconCd}">
<div class="product-badge-container">
<c:forTokens var="iconNm" items="${resultMap.goodsDtl.goodsIconCd}" delims=",">
<c:choose>
<c:when test="${fn:contains(iconNm,'-')}">
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}"> ${fn:toUpperCase(fn:replace(iconNm, '-', ' '))}</span>
</c:when>
<c:otherwise>
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}"> ${fn:toUpperCase(iconNm)}</span>
</c:otherwise>
</c:choose>
<c:set var="badgeMatched" value="false"/>
<c:forEach items="${resultMap.goodsBadgeList}" var="badge">
<c:if test="${badge.cd eq iconNm}">
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}" data-badge-cd="${iconNm}" style="color: ${badge.fontColor} !important; background-color: ${badge.bgColor} !important; border-color: ${badge.borderColor} !important;">${badge.cdNm}</span>
<c:set var="badgeMatched" value="true"/>
</c:if>
</c:forEach>
<c:if test="${not badgeMatched}">
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}" data-badge-cd="${iconNm}">${fn:toUpperCase(fn:replace(iconNm, '-', ' '))}</span>
</c:if>
</c:forTokens>
</div>
</c:if>

View File

@@ -84,10 +84,10 @@
<c:forEach items="${fn:split(list.iconCdNmList, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>

View File

@@ -78,10 +78,10 @@
<c:forEach items="${fn:split(list.iconCdNmList, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>

View File

@@ -1002,10 +1002,10 @@
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>

View File

@@ -1564,10 +1564,10 @@
<c:forEach var="iconNm" items="${fn:split(goodsInfo.iconCdNmList,',')}">
<c:choose>
<c:when test="${fn:contains(iconNm,'-')}">
<span class="product-badge ${fn:toLowerCase(iconNm)}"> ${fn:toUpperCase(fn:replace(iconNm, '-', ' '))}</span>
<span class="product-badge ${fn:toLowerCase(iconNm)}" data-badge-cd="${iconNm}"> ${fn:toUpperCase(fn:replace(iconNm, '-', ' '))}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconNm)}"> ${fn:toUpperCase(iconNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconNm)}" data-badge-cd="${iconNm}"> ${fn:toUpperCase(iconNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>

View File

@@ -1459,19 +1459,19 @@
<c:set var="iconCdList" value="${fn:split(iconString, ',')}" />
<c:forEach var = "iconCd" items="${iconCdList}">
<c:if test = "${iconCd eq 'new'}">
<span class="product-badge new">NEW</span>
<span class="product-badge new" data-badge-cd="new">NEW</span>
</c:if>
<c:if test = "${iconCd eq 'hot'}">
<span class="product-badge hot">HOT</span>
<span class="product-badge hot" data-badge-cd="hot">HOT</span>
</c:if>
<c:if test = "${iconCd eq 'best'}">
<span class="product-badge best">BEST</span>
<span class="product-badge best" data-badge-cd="best">BEST</span>
</c:if>
<c:if test = "${iconCd eq 'md-pick'}">
<span class="product-badge md-pick">MD PICK</span>
<span class="product-badge md-pick" data-badge-cd="md-pick">MD PICK</span>
</c:if>
<c:if test = "${iconCd eq 'hot-deal'}">
<span class="product-badge four-row">HOT DEAL</span>
<span class="product-badge four-row" data-badge-cd="four-row">HOT DEAL</span>
</c:if>
</c:forEach>
<div class="product-unit-info__inner">

View File

@@ -3708,14 +3708,16 @@ const fn_move_goodsDtl_login = () => {
<c:if test="${not empty resultMap.goodsDtl.goodsIconCd}">
<div class="product-badge-container">
<c:forTokens var="iconNm" items="${resultMap.goodsDtl.goodsIconCd}" delims=",">
<c:choose>
<c:when test="${fn:contains(iconNm,'-')}">
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}"> ${fn:toUpperCase(fn:replace(iconNm, '-', ' '))}</span>
</c:when>
<c:otherwise>
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}"> ${fn:toUpperCase(iconNm)}</span>
</c:otherwise>
</c:choose>
<c:set var="badgeMatched" value="false"/>
<c:forEach items="${resultMap.goodsBadgeList}" var="badge">
<c:if test="${badge.cd eq iconNm}">
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}" data-badge-cd="${iconNm}" style="color: ${badge.fontColor} !important; background-color: ${badge.bgColor} !important; border-color: ${badge.borderColor} !important;">${badge.cdNm}</span>
<c:set var="badgeMatched" value="true"/>
</c:if>
</c:forEach>
<c:if test="${not badgeMatched}">
<span class="product-badge product-badge--lg ${fn:toLowerCase(iconNm)}" data-badge-cd="${iconNm}">${fn:toUpperCase(fn:replace(iconNm, '-', ' '))}</span>
</c:if>
</c:forTokens>
</div>
</c:if>

View File

@@ -94,10 +94,10 @@
<c:forEach items="${fn:split(list.iconCdNmList, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>

View File

@@ -205,9 +205,9 @@
list += ` <div class="product-badge-container col order-${'${item.iconExpsrOrdr-1}'}" style="order: ${'${item.iconExpsrOrdr-1}'} ">`;
for (const iconCdNm of item.iconCdNmList.split(',')){
if(iconCdNm.indexOf('-') > -1){
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}">${'${iconCdNm.toUpperCase().replace("-", " ")}'}</span>`;
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}" data-badge-cd="${'${iconCdNm}'}">${'${iconCdNm.toUpperCase().replace("-", " ")}'}</span>`;
}else{
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}">${'${iconCdNm.toUpperCase()}'}</span>`;
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}" data-badge-cd="${'${iconCdNm}'}">${'${iconCdNm.toUpperCase()}'}</span>`;
}
}
}

View File

@@ -90,10 +90,10 @@
<c:forEach items="${fn:split(list.iconCdNmList, ',')}" var="iconCdNm" varStatus="iconStatus">
<c:choose>
<c:when test="${fn:contains(iconCdNm, '-')}">
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
</c:when>
<c:otherwise>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}">${fn:toUpperCase(iconCdNm)}</span>
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:toUpperCase(iconCdNm)}</span>
</c:otherwise>
</c:choose>
</c:forEach>

View File

@@ -195,9 +195,9 @@
list += ` <div class="product-badge-container col order-${'${item.iconExpsrOrdr-1}'}" style="order: ${'${item.iconExpsrOrdr-1}'} ">`;
for (const iconCdNm of item.iconCdNmList.split(',')){
if(iconCdNm.indexOf('-') > -1){
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}">${'${iconCdNm.toUpperCase().replace("-", " ")}'}</span>`;
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}" data-badge-cd="${'${iconCdNm}'}">${'${iconCdNm.toUpperCase().replace("-", " ")}'}</span>`;
}else{
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}">${'${iconCdNm.toUpperCase()}'}</span>`;
list += ` <span class="product-badge ${'${iconCdNm.toLowerCase()}'}" data-badge-cd="${'${iconCdNm}'}">${'${iconCdNm.toUpperCase()}'}</span>`;
}
}
}