Compare commits
234 Commits
6ea1568800
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2e33dc43f3 | ||
|
|
5f3687deb1 | ||
|
|
a59dc92601 | ||
|
|
5527c23171 | ||
|
|
7b24a5395f | ||
|
|
87da1e547e | ||
|
|
889639a63b | ||
|
|
7594ebcb88 | ||
|
|
60f28bae5a | ||
|
|
4ad51df503 | ||
|
|
bb3ecebad1 | ||
|
|
342bea50d6 | ||
|
|
103621fe2a | ||
|
|
8be851c472 | ||
|
|
27301d554b | ||
|
|
668823a32a | ||
|
|
24c697bfbf | ||
|
|
9347d5407c | ||
|
|
0aad369f61 | ||
|
|
04493a107c | ||
|
|
a86e1e5c16 | ||
|
|
f4e9a49b12 | ||
|
|
4bec8b7eb9 | ||
|
|
808b2c8b03 | ||
|
|
f9b8c8712a | ||
|
|
c6c041819b | ||
|
|
f1767425a0 | ||
|
|
cb0157a73b | ||
|
|
7564dc21e5 | ||
|
|
06760482aa | ||
|
|
923bb4a1a4 | ||
|
|
1c48d65b7b | ||
|
|
15f299d842 | ||
|
|
49738b87bd | ||
|
|
1b52e2ecbd | ||
|
|
de7bb587e2 | ||
|
|
de3c84957d | ||
|
|
f4df00c1d2 | ||
|
|
3458cfc963 | ||
|
|
8412f58b59 | ||
|
|
31fa5bf0ec | ||
|
|
afbc268b57 | ||
|
|
ff289ac2c8 | ||
|
|
713bd6a64d | ||
|
|
19586bd744 | ||
|
|
5e4d837012 | ||
|
|
48af5d88f4 | ||
|
|
fc47ad11ad | ||
|
|
ad649de088 | ||
|
|
c96dde1323 | ||
|
|
00c5235366 | ||
|
|
c6d656b648 | ||
|
|
ac2402d764 | ||
|
|
64fcbdefea | ||
|
|
dee18f8605 | ||
|
|
331587ee56 | ||
|
|
df8c176dbb | ||
|
|
dbe74eeb36 | ||
|
|
846de3009c | ||
|
|
c5948e87ec | ||
|
|
194ab35ba6 | ||
|
|
44bc0104ce | ||
|
|
f894756a5f | ||
|
|
82ec7f8b20 | ||
|
|
ec3718a2c4 | ||
|
|
89249429ad | ||
|
|
16b1ad14f4 | ||
|
|
cba5e39c8e | ||
|
|
6222c3b7d1 | ||
|
|
5be8b39cd7 | ||
|
|
efda4e8471 | ||
|
|
184dbbe21b | ||
|
|
edfd9e2474 | ||
|
|
2e28122d97 | ||
|
|
297664b621 | ||
|
|
02c35d87d2 | ||
|
|
c51f716cc4 | ||
|
|
ca00a15c57 | ||
|
|
2b8e84799d | ||
|
|
2b2d00cdd0 | ||
|
|
cb655263af | ||
|
|
ed4d0a98a7 | ||
|
|
1de8b5c39f | ||
|
|
5f90985157 | ||
|
|
4074ace97d | ||
|
|
49c8d6c20c | ||
|
|
28ee8f8556 | ||
|
|
1c3238a7b4 | ||
|
|
bbeb2a630a | ||
|
|
480a9997f3 | ||
|
|
de1dc3cea5 | ||
|
|
bc7f738e55 | ||
|
|
32250636e9 | ||
|
|
6bb7c4928d | ||
|
|
6858b24344 | ||
|
|
ee95e09d12 | ||
|
|
c04668fda2 | ||
|
|
3ab6988fb8 | ||
|
|
beb9fbab7b | ||
|
|
1cab83f69f | ||
|
|
784cadc6f2 | ||
|
|
b00534af6b | ||
|
|
39ce46c4dc | ||
|
|
3eda19f6fd | ||
|
|
03ec9d863e | ||
|
|
3e2ebaabc8 | ||
|
|
04ee9f1275 | ||
|
|
7bfa5a288c | ||
|
|
9b2fdee768 | ||
|
|
56f29943b6 | ||
|
|
913e5bd678 | ||
|
|
465cde8a16 | ||
|
|
31561200c2 | ||
|
|
5fa4aa5c37 | ||
|
|
f2038728fd | ||
|
|
923d74d37a | ||
|
|
2ec020ecd4 | ||
|
|
d55f52b752 | ||
|
|
3cddf4e038 | ||
|
|
450e43aecb | ||
|
|
99bbfec448 | ||
|
|
1d72e28600 | ||
|
|
25fcfc3555 | ||
|
|
e298e9066c | ||
|
|
3668cc89b2 | ||
|
|
de463cbb8f | ||
|
|
e293ffe451 | ||
|
|
262c9ba03e | ||
|
|
acb8d314d9 | ||
|
|
45c85b6079 | ||
|
|
7be7a8851d | ||
|
|
f590507308 | ||
|
|
1e1ee301d6 | ||
|
|
472d5b07e9 | ||
|
|
c08a3d3a90 | ||
|
|
edcf9f7ad7 | ||
|
|
5a5e9944da | ||
|
|
77fb6d7e19 | ||
|
|
e5e4a72577 | ||
|
|
f4370db796 | ||
|
|
8294c9c591 | ||
|
|
99a3c126f6 | ||
|
|
737ee90122 | ||
|
|
c014f00a13 | ||
|
|
5d94218e98 | ||
|
|
59cf8da8e4 | ||
|
|
3fbd19a1e7 | ||
|
|
903374cbee | ||
|
|
891b0a7f4f | ||
|
|
d4d47751c0 | ||
|
|
e649dc3eca | ||
|
|
174657ac2c | ||
|
|
5bce776193 | ||
|
|
a6fdcbe2fb | ||
|
|
c43eea70c5 | ||
|
|
60314eb74f | ||
|
|
08397d4e0a | ||
|
|
21fb2f49d6 | ||
|
|
060ccf4e36 | ||
|
|
500dba1467 | ||
|
|
2ecfaf72c9 | ||
|
|
02e46d49e9 | ||
|
|
9807d160cd | ||
|
|
27ca12d172 | ||
|
|
8c63f6e8cf | ||
|
|
d49666bac0 | ||
|
|
b0c35f531f | ||
|
|
81757e1217 | ||
|
|
45202b0006 | ||
|
|
3fc2d38980 | ||
|
|
46755ce33d | ||
|
|
da27656993 | ||
|
|
ef77395a37 | ||
|
|
b9749e8162 | ||
|
|
cac103e3ec | ||
|
|
14fb6f8328 | ||
|
|
b42eee8e8e | ||
|
|
ce15736c9d | ||
|
|
ce9b1c1bfc | ||
|
|
1f96164136 | ||
|
|
9f8e6408aa | ||
|
|
f97b553071 | ||
|
|
c8c90d8d56 | ||
|
|
2738b519a4 | ||
|
|
e68507a5b5 | ||
|
|
92ab84e7f3 | ||
|
|
0718316c84 | ||
|
|
2f31b9b306 | ||
|
|
031a05ed03 | ||
|
|
089210a16e | ||
|
|
c418d01f46 | ||
|
|
a9c717e24c | ||
|
|
2274326754 | ||
|
|
ff6a4146c9 | ||
|
|
cb9c22ec5b | ||
|
|
4bf7b05081 | ||
|
|
e6f8d4a5f1 | ||
|
|
58a1931f90 | ||
|
|
18a08fc439 | ||
|
|
9f7916d913 | ||
|
|
9301624be5 | ||
|
|
a88977dd6d | ||
|
|
194d626b62 | ||
|
|
a9e098b238 | ||
|
|
9b9b28ede4 | ||
|
|
649f1d4ed6 | ||
|
|
71fe6c9a9a | ||
|
|
bff3e3f0c9 | ||
|
|
f00a4eff6b | ||
|
|
3332952125 | ||
|
|
c39b50bf82 | ||
|
|
08240b57bc | ||
|
|
0bb0ad9102 | ||
|
|
31eeaec62c | ||
|
|
9d382d91ce | ||
|
|
59985dcede | ||
|
|
09f40f62e2 | ||
|
|
569d5e8904 | ||
|
|
66df63b232 | ||
|
|
6c55f53647 | ||
|
|
33bb861300 | ||
|
|
784ea1a6aa | ||
|
|
92a50f7b39 | ||
|
|
6e48c10f60 | ||
|
|
93a00f0ac6 | ||
|
|
ed20ff652f | ||
|
|
dbaf3d8dfe | ||
|
|
7e98b7acfb | ||
|
|
0c2be2d1d2 | ||
|
|
1df2a1ab65 | ||
|
|
3a00e1ab65 | ||
|
|
f248c38d72 | ||
|
|
8bc5302f4f | ||
|
|
4b0b0b3c63 |
@@ -3,6 +3,7 @@ package com.wb.domainserver.domain.admin.store.sopmal.mapper;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.Shop;
|
import com.wb.domainserver.domain.admin.store.sopmal.vo.Shop;
|
||||||
|
import com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO;
|
||||||
import com.wb.domainserver.domain.gcone.promtn.coupon.vo.BOCouponVO;
|
import com.wb.domainserver.domain.gcone.promtn.coupon.vo.BOCouponVO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
@@ -202,4 +203,7 @@ public interface BOMaSopmalMapper {
|
|||||||
|
|
||||||
/*전체 쇼핑몰 목록*/
|
/*전체 쇼핑몰 목록*/
|
||||||
List<DataMap> selectSopmalList();
|
List<DataMap> selectSopmalList();
|
||||||
|
|
||||||
|
// XML 수정 임시
|
||||||
|
public List<DataMap> selectSitemapXml(String sopmalCd);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO;
|
|||||||
import com.wb.domainserver.domain.gcone.goods.goodsinfo.mapper.BOGoodsinfoMapper;
|
import com.wb.domainserver.domain.gcone.goods.goodsinfo.mapper.BOGoodsinfoMapper;
|
||||||
import com.wb.domainserver.domain.gcone.goods.goodsinfo.vo.BOGoodsInfoVO;
|
import com.wb.domainserver.domain.gcone.goods.goodsinfo.vo.BOGoodsInfoVO;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.apache.commons.text.StringEscapeUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -984,4 +985,43 @@ public class BOMaSopmalService {
|
|||||||
return mapper.selectSopmalList();
|
return mapper.selectSopmalList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 사이트맵 XML
|
||||||
|
* @param sopmalCd
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Transactional
|
||||||
|
public String selectSitemapXml(String sopmalCd) {
|
||||||
|
List<DataMap> resultList = new ArrayList<>();
|
||||||
|
StringBuilder xml = new StringBuilder();
|
||||||
|
|
||||||
|
try {
|
||||||
|
xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
|
||||||
|
xml.append("<?xml-stylesheet type=\"text/css\" href=\"https://www.xml-sitemaps.com/css/sitemap.css\"?>");
|
||||||
|
xml.append("<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns:xhtml=\"http://www.w3.org/1999/xhtml\">\n");
|
||||||
|
|
||||||
|
resultList = mapper.selectSitemapXml(sopmalCd);
|
||||||
|
for (DataMap data : resultList) {
|
||||||
|
xml.append(" <url>");
|
||||||
|
xml.append(" <loc>")
|
||||||
|
.append(StringEscapeUtils.escapeXml11(String.valueOf(data.get("targetUrl"))))
|
||||||
|
.append("</loc>");
|
||||||
|
xml.append(" <lastmod>")
|
||||||
|
.append(StringEscapeUtils.escapeXml11(String.valueOf(data.get("lastModified"))))
|
||||||
|
.append("</lastmod>");
|
||||||
|
xml.append(" <priority>")
|
||||||
|
.append(StringEscapeUtils.escapeXml11(String.valueOf(data.get("priority"))))
|
||||||
|
.append("</priority>");
|
||||||
|
xml.append(" </url>");
|
||||||
|
}
|
||||||
|
|
||||||
|
xml.append("</urlset>");
|
||||||
|
} catch (WnbtRestException wre){
|
||||||
|
throw new WnbtRestException(wre.getMessage());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return xml.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -393,6 +393,7 @@ public class BOBbsService {
|
|||||||
if (vo.getBbscttRedngAuthorDvCd() != null && "01".equals(vo.getBbscttRedngAuthorDvCd())) {
|
if (vo.getBbscttRedngAuthorDvCd() != null && "01".equals(vo.getBbscttRedngAuthorDvCd())) {
|
||||||
vo.setBbscttRedngAuthorDvCd("[all]");
|
vo.setBbscttRedngAuthorDvCd("[all]");
|
||||||
} else if (vo.getBbscttRedngAuthorDvCd() != null && "02".equals(vo.getBbscttRedngAuthorDvCd())) {
|
} else if (vo.getBbscttRedngAuthorDvCd() != null && "02".equals(vo.getBbscttRedngAuthorDvCd())) {
|
||||||
|
validateMemberGradeSelection(vo.getBbscttRedngAuthorDvCd_c(), "게시판 읽기");
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
for (String mbrInnb : vo.getBbscttRedngAuthorDvCd_c()) {
|
for (String mbrInnb : vo.getBbscttRedngAuthorDvCd_c()) {
|
||||||
@@ -431,6 +432,8 @@ public class BOBbsService {
|
|||||||
if (vo.getBbscttRegistAuthorDvCd() != null && "01".equals(vo.getBbscttRegistAuthorDvCd())) {
|
if (vo.getBbscttRegistAuthorDvCd() != null && "01".equals(vo.getBbscttRegistAuthorDvCd())) {
|
||||||
vo.setBbscttRegistAuthorDvCd("[all]");
|
vo.setBbscttRegistAuthorDvCd("[all]");
|
||||||
} else if (vo.getBbscttRegistAuthorDvCd() != null && "02".equals(vo.getBbscttRegistAuthorDvCd())) {
|
} else if (vo.getBbscttRegistAuthorDvCd() != null && "02".equals(vo.getBbscttRegistAuthorDvCd())) {
|
||||||
|
validateMemberGradeSelection(vo.getBbscttRegistAuthorDvCd_c(), "게시판 쓰기");
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
for (String mbrInnb : vo.getBbscttRegistAuthorDvCd_c()) {
|
for (String mbrInnb : vo.getBbscttRegistAuthorDvCd_c()) {
|
||||||
|
|
||||||
@@ -465,6 +468,8 @@ public class BOBbsService {
|
|||||||
if (vo.getAnswRegistAuthorDvCd() != null && "01".equals(vo.getAnswRegistAuthorDvCd())) {
|
if (vo.getAnswRegistAuthorDvCd() != null && "01".equals(vo.getAnswRegistAuthorDvCd())) {
|
||||||
vo.setAnswRegistAuthorDvCd("[all]");
|
vo.setAnswRegistAuthorDvCd("[all]");
|
||||||
} else if (vo.getAnswRegistAuthorDvCd() != null && "02".equals(vo.getAnswRegistAuthorDvCd())) {
|
} else if (vo.getAnswRegistAuthorDvCd() != null && "02".equals(vo.getAnswRegistAuthorDvCd())) {
|
||||||
|
validateMemberGradeSelection(vo.getAnswRegistAuthorDvCd_c(), "답글 쓰기");
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
for (String mbrInnb : vo.getAnswRegistAuthorDvCd_c()) {
|
for (String mbrInnb : vo.getAnswRegistAuthorDvCd_c()) {
|
||||||
|
|
||||||
@@ -499,6 +504,8 @@ public class BOBbsService {
|
|||||||
if (vo.getCmRegistAuthorDvCd() != null && "01".equals(vo.getCmRegistAuthorDvCd())) {
|
if (vo.getCmRegistAuthorDvCd() != null && "01".equals(vo.getCmRegistAuthorDvCd())) {
|
||||||
vo.setCmRegistAuthorDvCd("[all]");
|
vo.setCmRegistAuthorDvCd("[all]");
|
||||||
} else if (vo.getCmRegistAuthorDvCd() != null && "02".equals(vo.getCmRegistAuthorDvCd())) {
|
} else if (vo.getCmRegistAuthorDvCd() != null && "02".equals(vo.getCmRegistAuthorDvCd())) {
|
||||||
|
validateMemberGradeSelection(vo.getCmRegistAuthorDvCd_c(), "댓글 쓰기");
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
for (String mbrInnb : vo.getCmRegistAuthorDvCd_c()) {
|
for (String mbrInnb : vo.getCmRegistAuthorDvCd_c()) {
|
||||||
|
|
||||||
@@ -685,15 +692,21 @@ public class BOBbsService {
|
|||||||
msgMap.put("bbsid", bbsId);
|
msgMap.put("bbsid", bbsId);
|
||||||
|
|
||||||
} catch (WnbtRestException wre){
|
} catch (WnbtRestException wre){
|
||||||
throw new WnbtRestException(wre.getMessage());
|
throw wre;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
|
throw new WnbtRestException("게시판 등록 중 오류가 발생했습니다.", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return msgMap;
|
return msgMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void validateMemberGradeSelection(String[] memberGradeArr, String authorizationName) {
|
||||||
|
if (memberGradeArr == null || memberGradeArr.length == 0) {
|
||||||
|
throw new WnbtRestException(authorizationName + " 권한의 회원등급을 선택해 주세요.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 게시판 삭제
|
* 게시판 삭제
|
||||||
|
|||||||
@@ -232,6 +232,9 @@ public class BOGnrlbbscttService {
|
|||||||
BOGnrlbbscttVO resultCnt = new BOGnrlbbscttVO();
|
BOGnrlbbscttVO resultCnt = new BOGnrlbbscttVO();
|
||||||
switch (bbsTyCd) {
|
switch (bbsTyCd) {
|
||||||
case "01": //일반게시글 조회
|
case "01": //일반게시글 조회
|
||||||
|
log.debug("일반게시글 getServerDv : {}",bbsctt.getServerDv());
|
||||||
|
log.debug("일반게시글 getMbrDvCd : {}",bbsctt.getMbrDvCd());
|
||||||
|
log.debug("일반게시글 getSopmalCd : {}",bbsctt.getSopmalCd());
|
||||||
resultCnt = mapper.selectBOGnrlBbscttListCnt(bbsctt);
|
resultCnt = mapper.selectBOGnrlBbscttListCnt(bbsctt);
|
||||||
totCnt = resultCnt.getTotCnt();
|
totCnt = resultCnt.getTotCnt();
|
||||||
if (StringUtil.isEmpty(bbsctt.getNtcAt())) {/*공지 제외 검색 조건*/
|
if (StringUtil.isEmpty(bbsctt.getNtcAt())) {/*공지 제외 검색 조건*/
|
||||||
@@ -567,19 +570,11 @@ public class BOGnrlbbscttService {
|
|||||||
Map<String, Object> map = new HashMap<String, Object>();
|
Map<String, Object> map = new HashMap<String, Object>();
|
||||||
// 게시글 연관상품 조회
|
// 게시글 연관상품 조회
|
||||||
List<DataMap> goodsList = new ArrayList<>();
|
List<DataMap> goodsList = new ArrayList<>();
|
||||||
DataMap result = new DataMap();
|
|
||||||
|
|
||||||
goodsList = mapper.selectBOBbscttDtlGoods(bbsctt);
|
goodsList = mapper.selectBOBbscttDtlGoods(bbsctt);
|
||||||
|
|
||||||
/*게시판 설정 > 추천 상품 노출 선택 시 사용자 게시글 상세 상품 노출 */
|
|
||||||
if (!goodsList.isEmpty()) {
|
|
||||||
if ("sopmal".equals(bbsctt.getServerDv())) {
|
|
||||||
result = goodsService.selectBoGoodsRelateList(goodsList);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*사용자 , 관리자 페이지 구분*/
|
/*사용자 , 관리자 페이지 구분*/
|
||||||
if ("sopmal".equals(bbsctt.getServerDv())) {
|
if ("sopmal".equals(bbsctt.getServerDv())) {
|
||||||
map.put("goodsList", result);
|
map.put("goodsList", goodsList);
|
||||||
} else {
|
} else {
|
||||||
map.put("goodsList", goodsList);
|
map.put("goodsList", goodsList);
|
||||||
}
|
}
|
||||||
@@ -917,6 +912,7 @@ public class BOGnrlbbscttService {
|
|||||||
throw new WnbtRestException(wre.getMessage());
|
throw new WnbtRestException(wre.getMessage());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
|
throw new WnbtRestException("게시글 등록 중 오류가 발생했습니다.", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return message;
|
return message;
|
||||||
@@ -1103,7 +1099,7 @@ public class BOGnrlbbscttService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*1:1 문의 게시판이 아닌경우만 처리 */
|
/*1:1 문의 게시판이 아닌경우만 처리 */
|
||||||
if("12".equals(bbsctt.getBbsTyCd())){
|
if(!"12".equals(bbsctt.getBbsTyCd())){
|
||||||
//게시글 연관 상품 삭제
|
//게시글 연관 상품 삭제
|
||||||
mapper.deleteBOBbscttGoods(bbsctt);
|
mapper.deleteBOBbscttGoods(bbsctt);
|
||||||
//게시글 연관 상품 등록(fm_boarddata_goods)
|
//게시글 연관 상품 등록(fm_boarddata_goods)
|
||||||
@@ -1134,6 +1130,7 @@ public class BOGnrlbbscttService {
|
|||||||
throw new WnbtRestException(wre.getMessage());
|
throw new WnbtRestException(wre.getMessage());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
|
throw new WnbtRestException("게시글 수정 중 오류가 발생했습니다.", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return message;
|
return message;
|
||||||
|
|||||||
@@ -75,6 +75,8 @@ public class BOGnrlbbscttVO extends AbstractVO {
|
|||||||
@Length(max = 16777215, message = "내용")
|
@Length(max = 16777215, message = "내용")
|
||||||
/** 내용 */
|
/** 내용 */
|
||||||
private String cn;
|
private String cn;
|
||||||
|
/** 내용 */
|
||||||
|
private String relateGoodsWords;
|
||||||
/** 조회건수 */
|
/** 조회건수 */
|
||||||
private Integer inqireCnt;
|
private Integer inqireCnt;
|
||||||
/** 댓글건수 */
|
/** 댓글건수 */
|
||||||
|
|||||||
@@ -46,6 +46,9 @@ public class BOCommonService {
|
|||||||
|
|
||||||
@Value("${secret.key}")
|
@Value("${secret.key}")
|
||||||
private String secretKey;
|
private String secretKey;
|
||||||
|
|
||||||
|
@Value("${aciexpress.apikey}")
|
||||||
|
private String aciApiKey;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>비밀번호를 암호화 한다</p>
|
* <p>비밀번호를 암호화 한다</p>
|
||||||
@@ -287,4 +290,10 @@ public class BOCommonService {
|
|||||||
return secretKey;
|
return secretKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* aci Api키 조회
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String selectAciApiKey() {return aciApiKey;}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.wb.domainserver.domain.gcone.goods.badge.mapper;
|
||||||
|
|
||||||
|
import com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO;
|
||||||
|
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface BOGoodsBadgeMapper {
|
||||||
|
List<DataMap> selectBOGoodsBadgeList(BOGoodsBadgeVO vo);
|
||||||
|
int selectBOGoodsBadgeCount(BOGoodsBadgeVO vo);
|
||||||
|
int insertBOGoodsBadge(BOGoodsBadgeVO vo);
|
||||||
|
int updateBOGoodsBadge(BOGoodsBadgeVO vo);
|
||||||
|
}
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
package com.wb.domainserver.domain.gcone.goods.badge.service;
|
||||||
|
|
||||||
|
import com.wb.domainserver.domain.gcone.goods.badge.mapper.BOGoodsBadgeMapper;
|
||||||
|
import com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO;
|
||||||
|
import com.wb.domainserver.exception.WnbtRestException;
|
||||||
|
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class BOGoodsBadgeService {
|
||||||
|
private static final Pattern COLOR_PATTERN = Pattern.compile("^#[0-9A-Fa-f]{6}$");
|
||||||
|
private static final Pattern BADGE_CODE_PATTERN = Pattern.compile("^[A-Za-z0-9_-]+$");
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BOGoodsBadgeMapper mapper;
|
||||||
|
|
||||||
|
public List<DataMap> selectBOGoodsBadgeList(BOGoodsBadgeVO vo) {
|
||||||
|
return mapper.selectBOGoodsBadgeList(vo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public DataMap updateBOGoodsBadgeSetup(BOGoodsBadgeVO request) {
|
||||||
|
DataMap message = new DataMap();
|
||||||
|
String[] badgeCdArr = request.getBadgeCdArr();
|
||||||
|
if (badgeCdArr == null || badgeCdArr.length == 0) {
|
||||||
|
message.put("result", "success");
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
validateArrayLengths(request, badgeCdArr.length);
|
||||||
|
Set<String> newBadgeCodes = new HashSet<>();
|
||||||
|
for (int i = 0; i < badgeCdArr.length; i++) {
|
||||||
|
BOGoodsBadgeVO badge = createBadge(request, i);
|
||||||
|
validateBadge(badge);
|
||||||
|
if ("Y".equals(badge.getNewAt())) {
|
||||||
|
if (!newBadgeCodes.add(badge.getBadgeCd()) || mapper.selectBOGoodsBadgeCount(badge) > 0) {
|
||||||
|
throw new WnbtRestException("이미 등록된 배지코드입니다.");
|
||||||
|
}
|
||||||
|
mapper.insertBOGoodsBadge(badge);
|
||||||
|
} else {
|
||||||
|
if (!badge.getBadgeCd().equals(trim(request.getOriginalBadgeCdArr()[i]))) {
|
||||||
|
throw new WnbtRestException("기존 배지코드는 변경할 수 없습니다.");
|
||||||
|
}
|
||||||
|
if (mapper.selectBOGoodsBadgeCount(badge) == 0) {
|
||||||
|
throw new WnbtRestException("존재하지 않는 배지코드입니다.");
|
||||||
|
}
|
||||||
|
mapper.updateBOGoodsBadge(badge);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message.put("result", "success");
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateArrayLengths(BOGoodsBadgeVO vo, int size) {
|
||||||
|
if (vo.getOriginalBadgeCdArr() == null || vo.getBadgeNmArr() == null || vo.getFontColorArr() == null || vo.getBgColorArr() == null
|
||||||
|
|| vo.getBorderColorArr() == null || vo.getSortOrdrArr() == null || vo.getUseAtArr() == null
|
||||||
|
|| vo.getNewAtArr() == null || vo.getOriginalBadgeCdArr().length != size || vo.getBadgeNmArr().length != size || vo.getFontColorArr().length != size
|
||||||
|
|| vo.getBgColorArr().length != size || vo.getBorderColorArr().length != size
|
||||||
|
|| vo.getSortOrdrArr().length != size || vo.getUseAtArr().length != size || vo.getNewAtArr().length != size) {
|
||||||
|
throw new WnbtRestException("배지 저장 요청 값이 올바르지 않습니다.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private BOGoodsBadgeVO createBadge(BOGoodsBadgeVO request, int index) {
|
||||||
|
BOGoodsBadgeVO badge = new BOGoodsBadgeVO();
|
||||||
|
badge.setSopmalCd(request.getSopmalCd());
|
||||||
|
badge.setRegusr(request.getRegusr());
|
||||||
|
badge.setUpdusr(request.getUpdusr());
|
||||||
|
badge.setBadgeCd(trim(request.getBadgeCdArr()[index]));
|
||||||
|
badge.setBadgeNm(trim(request.getBadgeNmArr()[index]));
|
||||||
|
badge.setFontColor(trim(request.getFontColorArr()[index]));
|
||||||
|
badge.setBgColor(trim(request.getBgColorArr()[index]));
|
||||||
|
badge.setBorderColor(trim(request.getBorderColorArr()[index]));
|
||||||
|
badge.setSortOrdr(trim(request.getSortOrdrArr()[index]));
|
||||||
|
badge.setUseAt(trim(request.getUseAtArr()[index]));
|
||||||
|
badge.setNewAt(trim(request.getNewAtArr()[index]));
|
||||||
|
return badge;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateBadge(BOGoodsBadgeVO badge) {
|
||||||
|
if (!StringUtils.hasText(badge.getBadgeCd()) || ("Y".equals(badge.getNewAt()) && !BADGE_CODE_PATTERN.matcher(badge.getBadgeCd()).matches())) {
|
||||||
|
throw new WnbtRestException("배지코드는 영문, 숫자, 밑줄, 하이픈만 입력할 수 있습니다.");
|
||||||
|
}
|
||||||
|
if (!StringUtils.hasText(badge.getBadgeNm()) || !COLOR_PATTERN.matcher(badge.getFontColor()).matches()
|
||||||
|
|| !COLOR_PATTERN.matcher(badge.getBgColor()).matches() || !COLOR_PATTERN.matcher(badge.getBorderColor()).matches()) {
|
||||||
|
throw new WnbtRestException("배지명과 색상값을 확인해 주세요.");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if (Integer.parseInt(badge.getSortOrdr()) < 0) {
|
||||||
|
throw new NumberFormatException();
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
throw new WnbtRestException("노출순서는 0 이상의 정수만 입력할 수 있습니다.");
|
||||||
|
}
|
||||||
|
if (!("Y".equals(badge.getUseAt()) || "N".equals(badge.getUseAt()))
|
||||||
|
|| !("Y".equals(badge.getNewAt()) || "N".equals(badge.getNewAt()))) {
|
||||||
|
throw new WnbtRestException("배지 저장 요청 값이 올바르지 않습니다.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String trim(String value) {
|
||||||
|
return value == null ? "" : value.trim();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
package com.wb.domainserver.domain.gcone.goods.badge.vo;
|
||||||
|
|
||||||
|
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
public class BOGoodsBadgeVO extends AbstractVO {
|
||||||
|
|
||||||
|
private String sopmalCd;
|
||||||
|
private String badgeCd;
|
||||||
|
private String badgeNm;
|
||||||
|
private String fontColor;
|
||||||
|
private String bgColor;
|
||||||
|
private String borderColor;
|
||||||
|
private String sortOrdr;
|
||||||
|
private String newAt;
|
||||||
|
private String[] badgeCdArr;
|
||||||
|
private String[] originalBadgeCdArr;
|
||||||
|
private String[] badgeNmArr;
|
||||||
|
private String[] fontColorArr;
|
||||||
|
private String[] bgColorArr;
|
||||||
|
private String[] borderColorArr;
|
||||||
|
private String[] sortOrdrArr;
|
||||||
|
private String[] useAtArr;
|
||||||
|
private String[] newAtArr;
|
||||||
|
}
|
||||||
@@ -34,6 +34,8 @@ public interface BOGoodsMapper {
|
|||||||
public Integer selectBOGoodsCount(BOGoodsVO vo);
|
public Integer selectBOGoodsCount(BOGoodsVO vo);
|
||||||
// 일반 상품 목록 리스트
|
// 일반 상품 목록 리스트
|
||||||
public List<DataMap> selectBOGoodsList(BOGoodsVO vo);
|
public List<DataMap> selectBOGoodsList(BOGoodsVO vo);
|
||||||
|
// 관리자 상품 배지 목록
|
||||||
|
public List<DataMap> selectBOGoodsBadgeList(BOGoodsVO vo);
|
||||||
// 카테고리별 상품 목록 수정
|
// 카테고리별 상품 목록 수정
|
||||||
public void updateBOCtgryGoodsList(BOGoodsVO vo);
|
public void updateBOCtgryGoodsList(BOGoodsVO vo);
|
||||||
// 관리자 > 일반 상품 상세
|
// 관리자 > 일반 상품 상세
|
||||||
@@ -85,6 +87,8 @@ public interface BOGoodsMapper {
|
|||||||
public void updateBOGoodsAdditionDtl(BOGoodsAdditionVO vo);
|
public void updateBOGoodsAdditionDtl(BOGoodsAdditionVO vo);
|
||||||
// 일반 상품 > 추가정보 삭제
|
// 일반 상품 > 추가정보 삭제
|
||||||
public void deleteBOGoodsAddition(BOGoodsAdditionVO vo);
|
public void deleteBOGoodsAddition(BOGoodsAdditionVO vo);
|
||||||
|
// 사용자 - 검색 - 검색어 로그 저장
|
||||||
|
public int insertBOSrchwrdLog(BOGoodsVO vo);
|
||||||
// 사용자 - 검색 - 상품명 검색어 조회
|
// 사용자 - 검색 - 상품명 검색어 조회
|
||||||
public List<DataMap> selectBOSrchGoodsNm(BOGoodsVO vo);
|
public List<DataMap> selectBOSrchGoodsNm(BOGoodsVO vo);
|
||||||
// 일반 상품 > 일괄 업데이트
|
// 일반 상품 > 일괄 업데이트
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.wb.domainserver.domain.gcone.common.service.BOCommonService;
|
|||||||
import com.wb.domainserver.domain.gcone.goods.goods.mapper.BOGoodsMapper;
|
import com.wb.domainserver.domain.gcone.goods.goods.mapper.BOGoodsMapper;
|
||||||
import com.wb.domainserver.domain.gcone.goods.goods.vo.*;
|
import com.wb.domainserver.domain.gcone.goods.goods.vo.*;
|
||||||
import com.wb.domainserver.exception.WnbtRestException;
|
import com.wb.domainserver.exception.WnbtRestException;
|
||||||
|
import com.wb.domainserver.exception.code.ErrorCode;
|
||||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||||
import com.wb.domainserver.util.string.StringUtil;
|
import com.wb.domainserver.util.string.StringUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -16,6 +17,7 @@ import org.springframework.beans.factory.annotation.Value;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.util.ObjectUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
@@ -74,6 +76,15 @@ public class BOGoodsService {
|
|||||||
return resultList;
|
return resultList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 관리자 상품 배지 목록 조회
|
||||||
|
* @param vo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<DataMap> selectBOGoodsBadgeList(BOGoodsVO vo) {
|
||||||
|
return mapper.selectBOGoodsBadgeList(vo);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 사용자 > 상품 목록 조회
|
* 사용자 > 상품 목록 조회
|
||||||
* @param vo
|
* @param vo
|
||||||
@@ -1505,6 +1516,27 @@ public class BOGoodsService {
|
|||||||
return mapper.selectBOGoodsCategoryLink(vo);
|
return mapper.selectBOGoodsCategoryLink(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 검색어 로그 저장
|
||||||
|
* @param vo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public DataMap insertBOSrchwrdLog(BOGoodsVO vo){
|
||||||
|
DataMap message = new DataMap();
|
||||||
|
|
||||||
|
try {
|
||||||
|
mapper.insertBOSrchwrdLog(vo);
|
||||||
|
|
||||||
|
message.put("result", "success");
|
||||||
|
} catch (WnbtRestException wre) {
|
||||||
|
throw new WnbtRestException(wre.getMessage());
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 상품명 검색어 조회
|
* 상품명 검색어 조회
|
||||||
* @param vo
|
* @param vo
|
||||||
|
|||||||
@@ -485,6 +485,10 @@ public class BOGoodsVO extends AbstractVO {
|
|||||||
private String srchType;
|
private String srchType;
|
||||||
/** 검색어 */
|
/** 검색어 */
|
||||||
private String srchStr;
|
private String srchStr;
|
||||||
|
/** 유입경로 */
|
||||||
|
private String conectUrl;
|
||||||
|
/** 유입경로 도메인 */
|
||||||
|
private String conectDomn;
|
||||||
/** 선택 삭제 */
|
/** 선택 삭제 */
|
||||||
private List<HashMap<String, Object>> delInnbArr;
|
private List<HashMap<String, Object>> delInnbArr;
|
||||||
/** 이미지 파일 업로드 */
|
/** 이미지 파일 업로드 */
|
||||||
|
|||||||
@@ -101,6 +101,11 @@ public class BOMbrService {
|
|||||||
|
|
||||||
List<DataMap> resultList = null;
|
List<DataMap> resultList = null;
|
||||||
Map<String, Object> resultMap = new HashMap<>();
|
Map<String, Object> resultMap = new HashMap<>();
|
||||||
|
|
||||||
|
BOMaComncdVO comncdVO = new BOMaComncdVO();
|
||||||
|
comncdVO.setGroupCd("SRCH_DV");
|
||||||
|
bOMbrSrchVO.setSrchDv((String) selectCommCode(comncdVO).get(0).get("cd"));
|
||||||
|
|
||||||
// 건수 조회
|
// 건수 조회
|
||||||
Integer totCnt = mapper.selectBOMbrListTotCnt(bOMbrSrchVO);
|
Integer totCnt = mapper.selectBOMbrListTotCnt(bOMbrSrchVO);
|
||||||
// 건수 갯수 페이징vo에 set
|
// 건수 갯수 페이징vo에 set
|
||||||
|
|||||||
@@ -26,35 +26,38 @@ import lombok.EqualsAndHashCode;
|
|||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
public class BOMbrSrchVO extends AbstractVO {
|
public class BOMbrSrchVO extends AbstractVO {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
/**검색어 구분*/
|
/**검색어 구분*/
|
||||||
private String srchKywordDv;
|
private String srchKywordDv;
|
||||||
|
|
||||||
/**검색어 키워드*/
|
/**검색어 키워드*/
|
||||||
private String srchKyword;
|
private String srchKyword;
|
||||||
|
|
||||||
/*검색어 이름*/
|
/*검색어 이름*/
|
||||||
private String srchMbrNm;
|
private String srchMbrNm;
|
||||||
|
|
||||||
/*검색어 아이디*/
|
/*검색어 아이디*/
|
||||||
private String srchKywordID;
|
private String srchKywordID;
|
||||||
|
|
||||||
/*검색어 이메일*/
|
/*검색어 이메일*/
|
||||||
private String srchKywordEmail;
|
private String srchKywordEmail;
|
||||||
|
|
||||||
/*검색어 휴대폰번호*/
|
/*검색어 휴대폰번호*/
|
||||||
private String srchKywordMb;
|
private String srchKywordMb;
|
||||||
|
|
||||||
/*회원고유번호*/
|
/*회원고유번호*/
|
||||||
private String srchMbrInnb;
|
private String srchMbrInnb;
|
||||||
|
|
||||||
/**정렬 방식*/
|
/**검색조건 비교 방식*/
|
||||||
private String sortDv;
|
private String srchDv;
|
||||||
|
|
||||||
|
/**정렬 방식*/
|
||||||
|
private String sortDv;
|
||||||
|
|
||||||
/**쇼핑몰코드*/
|
/**쇼핑몰코드*/
|
||||||
private String sopmalCd;
|
private String sopmalCd;
|
||||||
|
|
||||||
/*회원 구분 코드*/
|
/*회원 구분 코드*/
|
||||||
private String srchMbrDvCd;
|
private String srchMbrDvCd;
|
||||||
|
|
||||||
/*요청 페이지 구분 mngr인지 integ인지*/
|
/*요청 페이지 구분 mngr인지 integ인지*/
|
||||||
|
|||||||
@@ -161,6 +161,14 @@ public interface BODlivyMapper {
|
|||||||
public List<BODlivyVO> selectBOOrdrDlvyDtlsInqireGroupOrdr(BODlivyVO boDlivyVO);
|
public List<BODlivyVO> selectBOOrdrDlvyDtlsInqireGroupOrdr(BODlivyVO boDlivyVO);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 주문 배송 추적 조회 : 송장번호 조회
|
||||||
|
* @param boDlivyVO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String selectBOOrdrInvcnb(BODlivyVO boDlivyVO);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 출고 상태 '상품 준비' or '배송중' 되돌리기 / 출고 상태 변경 단건
|
* 출고 상태 '상품 준비' or '배송중' 되돌리기 / 출고 상태 변경 단건
|
||||||
* @param dlivyVO
|
* @param dlivyVO
|
||||||
|
|||||||
@@ -1,59 +1,40 @@
|
|||||||
package com.wb.domainserver.domain.gcone.ordr.dlivy.service;
|
package com.wb.domainserver.domain.gcone.ordr.dlivy.service;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.StringReader;
|
|
||||||
import java.io.StringWriter;
|
|
||||||
import java.io.UnsupportedEncodingException;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.BigInteger;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
||||||
import com.fasterxml.jackson.databind.JsonMappingException;
|
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOShopSetupVO;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.wb.domainserver.domain.gcone.common.service.BOCommonService;
|
||||||
import com.wb.domainserver.domain.gcone.goods.purchs.mapper.BOPurchsMapper;
|
import com.wb.domainserver.domain.gcone.goods.purchs.mapper.BOPurchsMapper;
|
||||||
import com.wb.domainserver.domain.gcone.goods.purchs.vo.BOOrderLogVO;
|
import com.wb.domainserver.domain.gcone.goods.purchs.vo.BOOrderLogVO;
|
||||||
import com.wb.domainserver.domain.gcone.mbr.mlg.service.BOMlgService;
|
import com.wb.domainserver.domain.gcone.mbr.mlg.service.BOMlgService;
|
||||||
import com.wb.domainserver.domain.gcone.mbr.mlg.vo.BOMlgVO;
|
import com.wb.domainserver.domain.gcone.mbr.mlg.vo.BOMlgVO;
|
||||||
import com.wb.domainserver.domain.gcone.ntcn.mssage.service.BOMssageService;
|
import com.wb.domainserver.domain.gcone.ntcn.mssage.service.BOMssageService;
|
||||||
import com.wb.domainserver.domain.gcone.ordr.atmcrcpmny.vo.BOAtmcRcpmnyCnfirmVO;
|
import com.wb.domainserver.domain.gcone.ordr.dlivy.mapper.BODlivyMapper;
|
||||||
import com.wb.domainserver.domain.gcone.ordr.dlivy.vo.*;
|
import com.wb.domainserver.domain.gcone.ordr.dlivy.vo.*;
|
||||||
import com.wb.domainserver.domain.gcone.ordr.ordr.mapper.BOOrdrMapper;
|
import com.wb.domainserver.domain.gcone.ordr.ordr.mapper.BOOrdrMapper;
|
||||||
import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrService;
|
import com.wb.domainserver.domain.gcone.ordr.ordr.service.BOOrdrService;
|
||||||
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrLogVO;
|
|
||||||
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrShippingVO;
|
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrShippingVO;
|
||||||
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrVO;
|
import com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrVO;
|
||||||
import com.wb.domainserver.domain.gcone.ordr.pay.service.BOPayService;
|
import com.wb.domainserver.domain.gcone.ordr.pay.service.BOPayService;
|
||||||
import com.wb.domainserver.domain.gcone.ordr.pay.vo.BOPayVO;
|
import com.wb.domainserver.domain.gcone.ordr.pay.vo.BOPayVO;
|
||||||
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.service.BORtngudrefndService;
|
import com.wb.domainserver.domain.gcone.ordr.rtngudrefnd.service.BORtngudrefndService;
|
||||||
import com.wb.domainserver.exception.WnbtRestException;
|
import com.wb.domainserver.exception.WnbtRestException;
|
||||||
|
import com.wb.domainserver.exception.code.ErrorCode;
|
||||||
|
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||||
import com.wb.domainserver.util.string.StringUtil;
|
import com.wb.domainserver.util.string.StringUtil;
|
||||||
import io.micrometer.common.util.StringUtils;
|
import io.micrometer.common.util.StringUtils;
|
||||||
import jakarta.xml.bind.JAXBContext;
|
|
||||||
import jakarta.xml.bind.JAXBException;
|
|
||||||
import jakarta.xml.bind.Marshaller;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import com.wb.domainserver.domain.gcone.ordr.dlivy.mapper.BODlivyMapper;
|
|
||||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.*;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.util.ObjectUtils;
|
import org.springframework.web.client.RestTemplate;
|
||||||
import org.w3c.dom.Document;
|
|
||||||
import org.w3c.dom.Element;
|
|
||||||
import org.w3c.dom.Node;
|
|
||||||
import org.w3c.dom.NodeList;
|
|
||||||
import org.xml.sax.InputSource;
|
|
||||||
|
|
||||||
import javax.xml.parsers.DocumentBuilder;
|
import java.io.IOException;
|
||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
import java.math.BigDecimal;
|
||||||
|
import java.math.BigInteger;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -83,6 +64,9 @@ public class BODlivyService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
BORtngudrefndService boRtngudrefndService;
|
BORtngudrefndService boRtngudrefndService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BOCommonService boCommonService;
|
||||||
|
|
||||||
|
|
||||||
/* ####################################
|
/* ####################################
|
||||||
출고 리스트 서비스 시작
|
출고 리스트 서비스 시작
|
||||||
@@ -494,6 +478,167 @@ public class BODlivyService {
|
|||||||
return contents;
|
return contents;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ACI Key 발급 API
|
||||||
|
* @param
|
||||||
|
* @return List<DataMap>
|
||||||
|
*/
|
||||||
|
public DataMap selectBOAciKey() throws WnbtRestException {
|
||||||
|
String apiKey = boCommonService.selectAciApiKey();
|
||||||
|
DataMap message = new DataMap();
|
||||||
|
|
||||||
|
try {
|
||||||
|
HttpHeaders headers = new HttpHeaders();
|
||||||
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||||
|
headers.set("USERID", "UNIHAN");
|
||||||
|
headers.set("APIKEY", apiKey);
|
||||||
|
|
||||||
|
Map<String, Object> body = new HashMap<>();
|
||||||
|
|
||||||
|
HttpEntity<String> apiRequest =
|
||||||
|
new HttpEntity<>("{}", headers);
|
||||||
|
|
||||||
|
RestTemplate restTemplate = new RestTemplate();
|
||||||
|
ResponseEntity<String> response = restTemplate.exchange(
|
||||||
|
"https://acieshop.com/api/kr/token/",
|
||||||
|
HttpMethod.POST,
|
||||||
|
apiRequest,
|
||||||
|
String.class
|
||||||
|
);
|
||||||
|
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
JsonNode jsonNode = objectMapper.readTree(response.getBody());
|
||||||
|
|
||||||
|
message.put("status", jsonNode.get("Status").asText());
|
||||||
|
message.put("aciKey", jsonNode.get("ACIKey").asText());
|
||||||
|
message.put("errMsg", jsonNode.get("ErrMsg").asText());
|
||||||
|
}catch (WnbtRestException wre){
|
||||||
|
log.error(wre.getMessage());
|
||||||
|
throw wre;
|
||||||
|
}catch (RuntimeException re){
|
||||||
|
log.error(re.getMessage());
|
||||||
|
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||||
|
}catch (Exception e) {
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 화물 추적 - 운송장 조회 API
|
||||||
|
* @param boDlivyVO
|
||||||
|
* @return List<DataMap>
|
||||||
|
*/
|
||||||
|
public DataMap updateBOAciDelivery(BODlivyVO boDlivyVO) throws WnbtRestException {
|
||||||
|
DataMap aciMap = selectBOAciKey();
|
||||||
|
String aciKey = String.valueOf(aciMap.get("aciKey"));
|
||||||
|
DataMap message = new DataMap();
|
||||||
|
|
||||||
|
try {
|
||||||
|
HttpHeaders headers = new HttpHeaders();
|
||||||
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||||
|
headers.set("USERID", "UNIHAN");
|
||||||
|
headers.set("ACIKey", aciKey);
|
||||||
|
|
||||||
|
Map<String, Object> body = new HashMap<>();
|
||||||
|
body.put("BLNO", List.of(mapper.selectBOOrdrInvcnb(boDlivyVO)));
|
||||||
|
|
||||||
|
HttpEntity<Map<String, Object>> apiRequest =
|
||||||
|
new HttpEntity<>(body, headers);
|
||||||
|
|
||||||
|
RestTemplate restTemplate = new RestTemplate();
|
||||||
|
ResponseEntity<String> response = restTemplate.exchange(
|
||||||
|
"https://acieshop.com/api/kr/pod/v1.5/",
|
||||||
|
HttpMethod.POST,
|
||||||
|
apiRequest,
|
||||||
|
String.class
|
||||||
|
);
|
||||||
|
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
JsonNode jsonNode = objectMapper.readTree(response.getBody());
|
||||||
|
|
||||||
|
message.put("status", jsonNode.get("Status").asText());
|
||||||
|
JsonNode podInfoNode = jsonNode.get("PODInfo");
|
||||||
|
if(!podInfoNode.isNull()) {
|
||||||
|
List<DataMap> podInfoList = new ArrayList<>();
|
||||||
|
for(JsonNode podInfoItem : podInfoNode) {
|
||||||
|
DataMap PODInfo = new DataMap();
|
||||||
|
PODInfo.put("blno", podInfoItem.get("BLNO").asText());
|
||||||
|
PODInfo.put("dateLocalwhin", podInfoItem.get("DATE_LOCALWHIN").asText());
|
||||||
|
PODInfo.put("dateLocaldeparture", podInfoItem.get("DATE_LOCALDEPARTURE").asText());
|
||||||
|
PODInfo.put("dateIcnarrival", podInfoItem.get("DATE_ICNARRIVAL").asText());
|
||||||
|
PODInfo.put("dateCustomes", podInfoItem.get("DATE_CUSTOMES").asText());
|
||||||
|
PODInfo.put("dateDelivery", podInfoItem.get("DATE_DELIVERY").asText());
|
||||||
|
PODInfo.put("recipient", podInfoItem.get("RECIPIENT").asText());
|
||||||
|
PODInfo.put("wta", podInfoItem.get("WTA").asText());
|
||||||
|
PODInfo.put("wtdan", podInfoItem.get("WTDAN").asText());
|
||||||
|
|
||||||
|
List<DataMap> volumeList = new ArrayList<>();
|
||||||
|
for(JsonNode volumeItem : podInfoItem.get("VOLUME")) {
|
||||||
|
DataMap volume = new DataMap();
|
||||||
|
volume.put("width", volumeItem.get("WIDTH").asText());
|
||||||
|
volume.put("length", volumeItem.get("LENGTH").asText());
|
||||||
|
volume.put("height", volumeItem.get("HEIGHT").asText());
|
||||||
|
|
||||||
|
volumeList.add(volume);
|
||||||
|
}
|
||||||
|
PODInfo.put("volume", volumeList);
|
||||||
|
|
||||||
|
List<List> customsList = new ArrayList<>();
|
||||||
|
for(JsonNode customsItem : podInfoItem.get("CUSTOMS")) {
|
||||||
|
List<DataMap> customDetail = new ArrayList<>();
|
||||||
|
for(JsonNode customItem : customsItem) {
|
||||||
|
DataMap Custom = new DataMap();
|
||||||
|
Custom.put("dateEvent", customItem.get("DATE_EVENT").asText());
|
||||||
|
Custom.put("traceStatus", customItem.get("TRACE_STATUS").asText());
|
||||||
|
|
||||||
|
customDetail.add(Custom);
|
||||||
|
}
|
||||||
|
customsList.add(customDetail);
|
||||||
|
}
|
||||||
|
PODInfo.put("customs", customsList);
|
||||||
|
|
||||||
|
List<DataMap> localPodList = new ArrayList<>();
|
||||||
|
for(JsonNode localPodItem : podInfoItem.get("LOCAL_POD")) {
|
||||||
|
DataMap localPod = new DataMap();
|
||||||
|
localPod.put("traceStatus", localPodItem.get("TRACE_STATUS").asText());
|
||||||
|
localPod.put("dateEvent", localPodItem.get("DATE_EVENT").asText());
|
||||||
|
localPod.put("position", localPodItem.get("POSITION").asText());
|
||||||
|
|
||||||
|
localPodList.add(localPod);
|
||||||
|
}
|
||||||
|
PODInfo.put("localPod", localPodList);
|
||||||
|
|
||||||
|
podInfoList.add(PODInfo);
|
||||||
|
}
|
||||||
|
message.put("podInfo", podInfoList);
|
||||||
|
} else {
|
||||||
|
message.put("errMsg", jsonNode.get("ErrMsg").asText());
|
||||||
|
}
|
||||||
|
}catch (WnbtRestException wre){
|
||||||
|
log.error(wre.getMessage());
|
||||||
|
throw wre;
|
||||||
|
}catch (RuntimeException re){
|
||||||
|
log.error(re.getMessage());
|
||||||
|
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||||
|
}catch (Exception e) {
|
||||||
|
log.error(e.getMessage(), e);
|
||||||
|
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 송장번호 조회
|
||||||
|
* @param boDlivyVO
|
||||||
|
* @return List<DataMap>
|
||||||
|
*/
|
||||||
|
public String selectBOOrdrInvcnb(BODlivyVO boDlivyVO) throws WnbtRestException {
|
||||||
|
return mapper.selectBOOrdrInvcnb(boDlivyVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -238,13 +238,6 @@ public interface BOOrdrMapper {
|
|||||||
* @return List<LinkedHashMap>
|
* @return List<LinkedHashMap>
|
||||||
*/
|
*/
|
||||||
public List<LinkedHashMap> selectExcelListByOrder(BOOrdrSrchVO ordrSrchVO);
|
public List<LinkedHashMap> selectExcelListByOrder(BOOrdrSrchVO ordrSrchVO);
|
||||||
|
|
||||||
/**
|
|
||||||
* 관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문 목록 조회 > 엑셀다운로드 발주서
|
|
||||||
* @param ordrSrchVO
|
|
||||||
* @return List<LinkedHashMap>
|
|
||||||
*/
|
|
||||||
public List<DataMap> selectExcelListPurchOrder(BOOrdrSrchVO ordrSrchVO);
|
|
||||||
/* ####################################
|
/* ####################################
|
||||||
관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문 목록 조회 종료
|
관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문 목록 조회 종료
|
||||||
#################################### */
|
#################################### */
|
||||||
@@ -504,6 +497,40 @@ public interface BOOrdrMapper {
|
|||||||
관리자 > 주문 > 주문관리 > 다운로드항목설정 종료
|
관리자 > 주문 > 주문관리 > 다운로드항목설정 종료
|
||||||
#################################### */
|
#################################### */
|
||||||
|
|
||||||
|
/* ####################################
|
||||||
|
관리자 > 주문 > 주문관리 > 발주서 관리 시작
|
||||||
|
#################################### */
|
||||||
|
/**
|
||||||
|
* 관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문 목록 조회 > 발주서 건수
|
||||||
|
* @param ordrSrchVO
|
||||||
|
* @return List<LinkedHashMap>
|
||||||
|
*/
|
||||||
|
public Integer selectExcelListPurchOrderTotCnt(BOOrdrSrchVO ordrSrchVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문 목록 조회 > 발주서 목록 조회
|
||||||
|
* @param ordrSrchVO
|
||||||
|
* @return List<LinkedHashMap>
|
||||||
|
*/
|
||||||
|
public List<DataMap> selectExcelListPurchOrder(BOOrdrSrchVO ordrSrchVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문 목록 조회 > 발주서 엑셀다운로드
|
||||||
|
* @param ordrSrchVO
|
||||||
|
* @return List<LinkedHashMap>
|
||||||
|
*/
|
||||||
|
public List<DataMap> selectExcelPoListDwld(BOOrdrSrchVO ordrSrchVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문 목록 조회 > 엑셀 다운로드 일시 업데이트
|
||||||
|
* @param ordrSrchVO
|
||||||
|
* @return List<LinkedHashMap>
|
||||||
|
*/
|
||||||
|
public Integer updateExcelDownDt(BOOrdrSrchVO ordrSrchVO);
|
||||||
|
/* ####################################
|
||||||
|
관리자 > 주문 > 주문관리 > 발주서 관리 종료
|
||||||
|
#################################### */
|
||||||
|
|
||||||
/* ####################################
|
/* ####################################
|
||||||
사용자 > 마이페이지 > MY쇼핑 > 개인결제 시작
|
사용자 > 마이페이지 > MY쇼핑 > 개인결제 시작
|
||||||
#################################### */
|
#################################### */
|
||||||
|
|||||||
@@ -682,15 +682,6 @@ public class BOOrdrService{
|
|||||||
return mapper.selectExcelListByOrder(ordrSrchVO);
|
return mapper.selectExcelListByOrder(ordrSrchVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문 목록 조회 > 엑셀다운로드 발주서
|
|
||||||
* @param ordrSrchVO
|
|
||||||
* @return List<LinkedHashMap>
|
|
||||||
*/
|
|
||||||
public List<DataMap> selectExcelListPurchOrder(BOOrdrSrchVO ordrSrchVO) {
|
|
||||||
return mapper.selectExcelListPurchOrder(ordrSrchVO);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문 목록 조회 > 주문내역서 정보 조회
|
* 관리자 > 주문 > 주문관리 > 전체 주문 조회 > 전체주문 목록 조회 > 주문내역서 정보 조회
|
||||||
* @param ordrVO
|
* @param ordrVO
|
||||||
@@ -1307,6 +1298,49 @@ public class BOOrdrService{
|
|||||||
관리자 > 주문 > 주문관리 > 다운로드항목설정 종료
|
관리자 > 주문 > 주문관리 > 다운로드항목설정 종료
|
||||||
#################################### */
|
#################################### */
|
||||||
|
|
||||||
|
/* ####################################
|
||||||
|
관리자 > 주문 > 주문관리 > 발주서 관리 시작
|
||||||
|
#################################### */
|
||||||
|
/**
|
||||||
|
* 관리자 > 주문 > 주문관리 > 발주서 다운로드 > 발주서 목록 조회
|
||||||
|
* @param ordrSrchVO
|
||||||
|
* @return List<LinkedHashMap>
|
||||||
|
*/
|
||||||
|
public List<DataMap> selectExcelPoList(BOOrdrSrchVO ordrSrchVO) {
|
||||||
|
List<DataMap> excelListPO = null;
|
||||||
|
|
||||||
|
// 건수 조회
|
||||||
|
Integer totCnt = mapper.selectExcelListPurchOrderTotCnt(ordrSrchVO);
|
||||||
|
ordrSrchVO.getPaginationInfo().setTotalRecordCount(totCnt);
|
||||||
|
|
||||||
|
if(totCnt > 0) {
|
||||||
|
excelListPO = mapper.selectExcelListPurchOrder(ordrSrchVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
return excelListPO;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 관리자 > 주문 > 주문관리 > 발주서 다운로드 > 발주서 다운로드
|
||||||
|
* @param ordrSrchVO
|
||||||
|
* @return List<LinkedHashMap>
|
||||||
|
*/
|
||||||
|
public List<DataMap> selectExcelPoListDwld(BOOrdrSrchVO ordrSrchVO) {
|
||||||
|
return mapper.selectExcelPoListDwld(ordrSrchVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 관리자 > 주문 > 주문관리 > 발주서 다운로드 > 엑셀 다운로드 일시 업데이트
|
||||||
|
* @param ordrSrchVO
|
||||||
|
* @return List<LinkedHashMap>
|
||||||
|
*/
|
||||||
|
public Integer updateExcelDownDt(BOOrdrSrchVO ordrSrchVO) {
|
||||||
|
return mapper.updateExcelDownDt(ordrSrchVO);
|
||||||
|
}
|
||||||
|
/* ####################################
|
||||||
|
관리자 > 주문 > 주문관리 > 발주서 관리 종료
|
||||||
|
#################################### */
|
||||||
|
|
||||||
/* ####################################
|
/* ####################################
|
||||||
관리자 > 주문 > 개인결제관리 시작
|
관리자 > 주문 > 개인결제관리 시작
|
||||||
#################################### */
|
#################################### */
|
||||||
@@ -3769,7 +3803,7 @@ public class BOOrdrService{
|
|||||||
setleAmt = setleAmt.add(dlvyAmt).subtract(dlvyCouponDscntAmt).subtract(enuriAmt).subtract(useMlgAmt).subtract(useCashMlgAmt).compareTo(BigDecimal.ZERO) > 0 ? setleAmt.add(dlvyAmt).subtract(dlvyCouponDscntAmt).subtract(enuriAmt).subtract(useMlgAmt).subtract(useCashMlgAmt) : BigDecimal.ZERO;
|
setleAmt = setleAmt.add(dlvyAmt).subtract(dlvyCouponDscntAmt).subtract(enuriAmt).subtract(useMlgAmt).subtract(useCashMlgAmt).compareTo(BigDecimal.ZERO) > 0 ? setleAmt.add(dlvyAmt).subtract(dlvyCouponDscntAmt).subtract(enuriAmt).subtract(useMlgAmt).subtract(useCashMlgAmt) : BigDecimal.ZERO;
|
||||||
// 환율계산
|
// 환율계산
|
||||||
setleAmtKr = setleAmt.multiply(buyRate);
|
setleAmtKr = setleAmt.multiply(buyRate);
|
||||||
setleAmtKr = setleAmtKr.setScale(0,RoundingMode.HALF_UP);
|
setleAmtKr = setleAmtKr.setScale(-1, RoundingMode.DOWN);
|
||||||
lmttUseMlg = goodsAmt.subtract(dscntAmt.add(cartCouponDscntAmt));
|
lmttUseMlg = goodsAmt.subtract(dscntAmt.add(cartCouponDscntAmt));
|
||||||
log.debug(" 결제 예정 금액 : {}", setleAmt);
|
log.debug(" 결제 예정 금액 : {}", setleAmt);
|
||||||
|
|
||||||
|
|||||||
@@ -29,61 +29,66 @@ public class BODwldItmVO extends AbstractVO {
|
|||||||
private String[] selItems;
|
private String[] selItems;
|
||||||
|
|
||||||
public enum items {
|
public enum items {
|
||||||
item01("export_group_innb", "출고그룹"),
|
exportGroupInnb("export_group_innb", "출고그룹"),
|
||||||
item02("ordr_innb_with_export_group_innb", "주문번호+출고그룹"),
|
ordrInnbWithExportGroupInnb("ordr_innb_with_export_group_innb", "주문번호+출고그룹"),
|
||||||
item03("ordr_innb", "주문번호"),
|
ordrInnb("ordr_innb", "주문번호"),
|
||||||
item04("smrt_shopng_ordrnb", "npay주문번호"),
|
smrtShopngOrdrnb("smrt_shopng_ordrnb", "npay주문번호"),
|
||||||
item05("ordr_rcept_dt", "주문일"),
|
ordrRceptDt("ordr_rcept_dt", "주문일"),
|
||||||
item06("ordrr_nm", "주문자명"),
|
ordrrNm("ordrr_nm", "주문자명"),
|
||||||
item07("mbr_id", "주문자아이디"),
|
mbrId("mbr_id", "주문자아이디"),
|
||||||
item08("ordrr_mbtlnb", "주문자휴대폰"),
|
ordrrMbtlnb("ordrr_mbtlnb", "주문자휴대폰"),
|
||||||
item09("ordrr_email", "주문자이메일"),
|
ordrrEmail("ordrr_email", "주문자이메일"),
|
||||||
item10("order_memo", "사용자메모"),
|
orderMemo("order_memo", "사용자메모"),
|
||||||
item11("lgstc_adm_memo", "물류담당자메모"),
|
lgstcAdmMemo("lgstc_adm_memo", "물류담당자메모"),
|
||||||
item12("inflow_cours_url", "주문경로"),
|
inflowCoursUrl("inflow_cours_url", "주문경로"),
|
||||||
item13("dlivy_dt", "출고일"),
|
dlivyDt("dlivy_dt", "출고일"),
|
||||||
item14("dlvy_mth_nm", "받는방법"),
|
dlvyMthNm("dlvy_mth_nm", "받는방법"),
|
||||||
item15("hdrycpn_nm", "택배사"),
|
hdrycpnNm("hdrycpn_nm", "택배사"),
|
||||||
item16("invcnb", "운송장번호"),
|
invcnb("invcnb", "운송장번호"),
|
||||||
item17("dlvylc_adres_info", "받는정보"),
|
dlvylcAdresInfo("dlvylc_adres_info", "받는정보"),
|
||||||
item18("recpnt_nm", "수령인"),
|
recpntNm("recpnt_nm", "수령인"),
|
||||||
item19("recpnt_mbtlnb", "수령인휴대폰"),
|
recpntMbtlnb("recpnt_mbtlnb", "수령인휴대폰"),
|
||||||
item20("dlvylc_zip", "우편번호"),
|
dlvylcZip("dlvylc_zip", "우편번호"),
|
||||||
item21("dlvylc_rnm_adres", "전체주소(도로명)"),
|
dlvylcRnmAdres("dlvylc_rnm_adres", "전체주소(도로명)"),
|
||||||
item22("dlvy_amt", "배송비"),
|
dlvyAmt("dlvy_amt", "배송비"),
|
||||||
item23("ordr_goods_innb", "상품고유번호"),
|
ordrGoodsInnb("ordr_goods_innb", "상품고유번호"),
|
||||||
item24("npay_goods_ordrnb", "npay상품주문번호"),
|
npayGoodsOrdrnb("npay_goods_ordrnb", "npay상품주문번호"),
|
||||||
item25("goods_nm", "상품명"),
|
goodsNm("goods_nm", "상품명"),
|
||||||
item26("invntry_qy", "현재고"),
|
goodsNmEn("goods_nm_en", "상품명(영문)"),
|
||||||
item27("prchspric", "매입가"),
|
invntryQy("invntry_qy", "현재고"),
|
||||||
item28("cnsmrpric", "정가"),
|
prchspric("prchspric", "매입가"),
|
||||||
item29("dscntpric", "할인가"),
|
cnsmrpric("cnsmrpric", "정가"),
|
||||||
item30("pric_by_ordr_qy", "할인가x수량"),
|
dscntpric("dscntpric", "할인가"),
|
||||||
item31("taxt_trget_at", "과세여부"),
|
pricByOrdrQy("pric_by_ordr_qy", "할인가x수량"),
|
||||||
item32("input_optn", "추가입력옵션"),
|
taxtTrgetAt("taxt_trget_at", "과세여부"),
|
||||||
item33("ordr_qy", "주문수량"),
|
inputOptn("input_optn", "추가입력옵션"),
|
||||||
item34("refnd_qy", "취소수량"),
|
ordrQy("ordr_qy", "주문수량"),
|
||||||
item35("bfr_sndng_qy", "보낸수량"),
|
refndQy("refnd_qy", "취소수량"),
|
||||||
item36("aftr_sndng_qy", "보낼수량"),
|
bfrSndngQy("bfr_sndng_qy", "보낸수량"),
|
||||||
item37("ordr_sttus_nm", "주문상품상태"),
|
aftrSndngQy("aftr_sndng_qy", "보낼수량"),
|
||||||
item38("goods_dscnt_amt", "상품쿠폰할인"),
|
ordrSttusNm("ordr_sttus_nm", "주문상품상태"),
|
||||||
item39("event_dscnt_amt", "이벤트할인"),
|
goodsDscntAmt("goods_dscnt_amt", "상품쿠폰할인"),
|
||||||
item40("mlt_dscnt_amt", "복수구매할인"),
|
eventDscntAmt("event_dscnt_amt", "이벤트할인"),
|
||||||
item41("dlvy_dscnt_amt", "배송비쿠폰"),
|
mltDscntAmt("mlt_dscnt_amt", "복수구매할인"),
|
||||||
item42("mlg_dscnt_amt", "마일리지사용"),
|
dlvyDscntAmt("dlvy_dscnt_amt", "배송비쿠폰"),
|
||||||
item43("spbk_dscnt_amt", "장바구니할인쿠폰"),
|
mlgDscntAmt("mlg_dscnt_amt", "마일리지사용"),
|
||||||
item44("enuri_dscnt_amt", "에누리"),
|
spbkDscntAmt("spbk_dscnt_amt", "장바구니할인쿠폰"),
|
||||||
item45("setle_amt", "결제금액"),
|
enuriDscntAmt("enuri_dscnt_amt", "에누리"),
|
||||||
item46("setle_dt", "결제일"),
|
setleAmt("setle_amt", "결제금액"),
|
||||||
item47("setle_mth_nm", "결제방법"),
|
setleDt("setle_dt", "결제일"),
|
||||||
item48("snggds_accml_mlg_amt", "지급마일리지"),
|
setleMthNm("setle_mth_nm", "결제방법"),
|
||||||
item49("dlvylc_group_nb", "배송그룹번호"),
|
snggdsAccmlMlgAmt("snggds_accml_mlg_amt", "지급마일리지"),
|
||||||
item50("dlvy_amt_setle_mth_nm", "배송비결제방식"),
|
dlvylcGroupNb("dlvylc_group_nb", "배송그룹번호"),
|
||||||
item51("ordr_ty_nm", "주문유형"),
|
dlvyAmtSetleMthNm("dlvy_amt_setle_mth_nm", "배송비결제방식"),
|
||||||
item52("optn_cd_1", "상품코드"),
|
ordrTyNm("ordr_ty_nm", "주문유형"),
|
||||||
item53("dlvy_mssage_cn", "배송메시지"),
|
optnCd_1("optn_cd_1", "상품코드"),
|
||||||
item54("shipping_sttus_nm", "출고상태"),
|
hscode("hscode", "HS Code"),
|
||||||
item55("subsvc_at", "주문구분");
|
realWt("realWt", "실무게"),
|
||||||
|
volWt("volWt", "부피무게"),
|
||||||
|
packageCnt("packageCnt", "포장개수"),
|
||||||
|
dlvyMssageCn("dlvy_mssage_cn", "배송메시지"),
|
||||||
|
shippingSttusNm("shipping_sttus_nm", "출고상태"),
|
||||||
|
subsvcAt("subsvc_at", "주문구분");
|
||||||
|
|
||||||
private final String key;
|
private final String key;
|
||||||
private final String value;
|
private final String value;
|
||||||
|
|||||||
@@ -40,6 +40,9 @@ public class BOOrdrShippingVO extends AbstractVO {
|
|||||||
/** 받는자휴대폰번호 */
|
/** 받는자휴대폰번호 */
|
||||||
private String recpntMbtlnb;
|
private String recpntMbtlnb;
|
||||||
|
|
||||||
|
/** 개인통관부호 */
|
||||||
|
private String cstmclerCd;
|
||||||
|
|
||||||
/** 배송지역코드 */
|
/** 배송지역코드 */
|
||||||
private String dlvylcAreaCd;
|
private String dlvylcAreaCd;
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
|||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
public class BOOrdrSrchVO extends AbstractVO{
|
public class BOOrdrSrchVO extends AbstractVO{
|
||||||
@@ -82,7 +86,15 @@ public class BOOrdrSrchVO extends AbstractVO{
|
|||||||
|
|
||||||
private String[] srchOrdrInnbs; // 주문번호 배열
|
private String[] srchOrdrInnbs; // 주문번호 배열
|
||||||
|
|
||||||
|
private String[] srchOrdrDlvyInnbs; // 배송번호 배열
|
||||||
|
|
||||||
|
private List<Map<String, String>> srchInnbPairs; // 발주서 주키 배열
|
||||||
|
|
||||||
private String srchDatePeriod; // 날짜구간코드
|
private String srchDatePeriod; // 날짜구간코드
|
||||||
|
|
||||||
|
private String[] dlvylcAreaCds; // 배송지역코드
|
||||||
|
|
||||||
|
private String excelInclude; // 엑셀 다운여부
|
||||||
/*
|
/*
|
||||||
####################################
|
####################################
|
||||||
전체 주문 조회 검색 추가 조건 종료
|
전체 주문 조회 검색 추가 조건 종료
|
||||||
|
|||||||
@@ -1569,6 +1569,7 @@ public class BOPayService{
|
|||||||
//요청코드
|
//요청코드
|
||||||
String authKey = resultMap.get("kcpSecretKey").toString();
|
String authKey = resultMap.get("kcpSecretKey").toString();
|
||||||
String cpId = resultMap.get("kcpMid").toString();
|
String cpId = resultMap.get("kcpMid").toString();
|
||||||
|
// 개발서버 네이버페이 CPID 관련 적용 취소
|
||||||
if ("naverpay".equals(payVO.getModGubun())) {
|
if ("naverpay".equals(payVO.getModGubun())) {
|
||||||
authKey = resultMap.get("bpaySecretKey").toString();
|
authKey = resultMap.get("bpaySecretKey").toString();
|
||||||
cpId = resultMap.get("bpayMid").toString();
|
cpId = resultMap.get("bpayMid").toString();
|
||||||
|
|||||||
@@ -1119,6 +1119,7 @@ public class BORtngudrefndService {
|
|||||||
payVO.setMemorSetleAt("Y");
|
payVO.setMemorSetleAt("Y");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 개발서버 네이버페이 CPID 구분 적용 취소
|
||||||
payVO.setModGubun(setle.getPgCmpnyNm()); //결제키 구분용
|
payVO.setModGubun(setle.getPgCmpnyNm()); //결제키 구분용
|
||||||
if ("kiwoom".equals(setle.getPgCmpnyNm())) {
|
if ("kiwoom".equals(setle.getPgCmpnyNm())) {
|
||||||
payVO.setPayMethod("CARD");
|
payVO.setPayMethod("CARD");
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package com.wb.domainserver.domain.gcone.setup.cost.mapper;
|
||||||
|
|
||||||
|
import com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO;
|
||||||
|
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
@Repository
|
||||||
|
public interface BOCostMapper {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 원가 설정 목록 조회
|
||||||
|
* @param vo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<DataMap> selectBOCostPriceList(BOCostVO vo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 원가 설정 삭제
|
||||||
|
* @param vo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public int deleteBOCostPrice(BOCostVO vo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 원가 설정 추가
|
||||||
|
* @param dm
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public int insertBOCostPrice(DataMap dm);
|
||||||
|
}
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
package com.wb.domainserver.domain.gcone.setup.cost.service;
|
||||||
|
|
||||||
|
import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService;
|
||||||
|
import com.wb.domainserver.domain.gcone.setup.cost.mapper.BOCostMapper;
|
||||||
|
import com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO;
|
||||||
|
import com.wb.domainserver.exception.WnbtRestException;
|
||||||
|
import com.wb.domainserver.exception.code.ErrorCode;
|
||||||
|
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||||
|
import com.wb.domainserver.util.string.StringUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.util.ObjectUtils;
|
||||||
|
|
||||||
|
import java.math.BigInteger;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 원가 설정 BO Serivce
|
||||||
|
*
|
||||||
|
* @author 이대환
|
||||||
|
* @version 1.0
|
||||||
|
* @see <pre>
|
||||||
|
* == (Modification Information) == 개정이력
|
||||||
|
*
|
||||||
|
* 수정일 수정자 수정내용
|
||||||
|
* ------- -------- ---------------------------
|
||||||
|
* 2026-05-29 이대환 최초 생성
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
* @since 2026-05-29
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class BOCostService {
|
||||||
|
@Autowired
|
||||||
|
private BOMaComncdService bOMaComncdService;
|
||||||
|
@Autowired
|
||||||
|
private BOCostMapper mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 원가 설정 목록 조회
|
||||||
|
* @param vo
|
||||||
|
* @return List<DataMap>
|
||||||
|
*/
|
||||||
|
public List<DataMap> selectBOCostPriceList(BOCostVO vo) {
|
||||||
|
List<DataMap> costList = new ArrayList<>();
|
||||||
|
costList = mapper.selectBOCostPriceList(vo);
|
||||||
|
|
||||||
|
return costList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 원가 설정 수정
|
||||||
|
* @param vo
|
||||||
|
*/
|
||||||
|
@Transactional
|
||||||
|
public DataMap updateBOCostPriceSetup(BOCostVO vo) {
|
||||||
|
DataMap message = new DataMap();
|
||||||
|
|
||||||
|
try {
|
||||||
|
mapper.deleteBOCostPrice(vo);
|
||||||
|
|
||||||
|
DataMap paramMap = new DataMap();
|
||||||
|
paramMap.put("regusr", vo.getRegusr());
|
||||||
|
|
||||||
|
int[] ctInnbArr = vo.getCtInnbArr();
|
||||||
|
if (!ObjectUtils.isEmpty(ctInnbArr)) {
|
||||||
|
for (int i = 0; i < ctInnbArr.length; i++) {
|
||||||
|
paramMap.put("stdrDe", vo.getStdrDeArr()[i]);
|
||||||
|
paramMap.put("usdRate", vo.getUsdRateArr()[i]);
|
||||||
|
paramMap.put("jpDlvyCt", vo.getJpDlvyCtArr()[i]);
|
||||||
|
paramMap.put("intlDlvyAmt", vo.getIntlDlvyAmtArr()[i]);
|
||||||
|
paramMap.put("pltfomFee", vo.getPltfomFeeArr()[i]);
|
||||||
|
paramMap.put("expctTax", vo.getExpctTaxArr()[i]);
|
||||||
|
paramMap.put("cstmsFee", vo.getCstmsFeeArr()[i]);
|
||||||
|
paramMap.put("krDlvyCt", vo.getKrDlvyCtArr()[i]);
|
||||||
|
|
||||||
|
mapper.insertBOCostPrice(paramMap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message.put("result", "success");
|
||||||
|
} catch (WnbtRestException wre) {
|
||||||
|
throw new WnbtRestException(wre.getMessage());
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
package com.wb.domainserver.domain.gcone.setup.cost.vo;
|
||||||
|
|
||||||
|
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper=false)
|
||||||
|
public class BOCostVO extends AbstractVO {
|
||||||
|
|
||||||
|
/** 원가 고유번호 */
|
||||||
|
private int[] ctInnbArr;
|
||||||
|
|
||||||
|
/** 기준일자 */
|
||||||
|
private String[] stdrDeArr;
|
||||||
|
|
||||||
|
/** USD 환율 (1,000 円) */
|
||||||
|
private BigDecimal[] usdRateArr;
|
||||||
|
|
||||||
|
/** 일본 내 물류비 */
|
||||||
|
private int[] jpDlvyCtArr;
|
||||||
|
|
||||||
|
/** 운임비용(JP) */
|
||||||
|
private int[] intlDlvyAmtArr;
|
||||||
|
|
||||||
|
/** 플랫폼 수수료율 */
|
||||||
|
private BigDecimal[] pltfomFeeArr;
|
||||||
|
|
||||||
|
/** 예상세율 */
|
||||||
|
private BigDecimal[] expctTaxArr;
|
||||||
|
|
||||||
|
/** 통관수수료 */
|
||||||
|
private int[] cstmsFeeArr;
|
||||||
|
|
||||||
|
/** 운임비용(KR) */
|
||||||
|
private int[] krDlvyCtArr;
|
||||||
|
}
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
package com.wb.domainserver.domain.mngr.goods.badge.controller;
|
||||||
|
|
||||||
|
import com.wb.domainserver.domain.gcone.goods.badge.service.BOGoodsBadgeService;
|
||||||
|
import com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO;
|
||||||
|
import com.wb.domainserver.response.WnbtResponse;
|
||||||
|
import com.wb.domainserver.response.WnbtResponseBody;
|
||||||
|
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||||
|
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||||
|
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||||
|
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||||
|
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.ui.ModelMap;
|
||||||
|
import org.springframework.web.bind.annotation.CookieValue;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
@RequestMapping("/mngr/goods/badge")
|
||||||
|
public class GoodsBadgeController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BOGoodsBadgeService service;
|
||||||
|
|
||||||
|
@Policy(AuthPolicy.RESTRICTED)
|
||||||
|
@RequestMapping("/selectGoodsBadgeSetup")
|
||||||
|
public String selectGoodsBadgeSetup(BOGoodsBadgeVO vo, ModelMap model,
|
||||||
|
@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||||
|
vo.setSopmalCd(authSopmalCd);
|
||||||
|
DataMap content = new DataMap();
|
||||||
|
content.put("badgeList", service.selectBOGoodsBadgeList(vo));
|
||||||
|
model.addAttribute("resultMap", content);
|
||||||
|
return "mngr/goods/badge/GoodsBadgeSetupU";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Policy(AuthPolicy.RESTRICTED)
|
||||||
|
@PostMapping(value = "/updateGoodsBadgeSetup", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
public ResponseEntity<WnbtResponse> updateGoodsBadgeSetup(BOGoodsBadgeVO vo,
|
||||||
|
@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||||
|
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||||
|
vo.setSopmalCd(authSopmalCd);
|
||||||
|
if ("01".equals(user.getSysDvCd())) {
|
||||||
|
vo.setSopmalCd(user.getSopmalCd());
|
||||||
|
}
|
||||||
|
vo.setRegusr(user.getUserInnb());
|
||||||
|
vo.setUpdusr(user.getUserInnb());
|
||||||
|
|
||||||
|
DataMap message = service.updateBOGoodsBadgeSetup(vo);
|
||||||
|
return ResponseEntity.ok(WnbtResponse.builder().resBody(new WnbtResponseBody(message)).build());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -479,10 +479,8 @@ public class GoodsmngrController {
|
|||||||
List<?> cgo134List = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
|
List<?> cgo134List = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
|
||||||
content.put("goodsDftinfoInvntryPolicyList", cgo134List);
|
content.put("goodsDftinfoInvntryPolicyList", cgo134List);
|
||||||
|
|
||||||
// 상품아이콘
|
// 상품 배지
|
||||||
maComncdVO = new BOMaComncdVO();
|
List<DataMap> iconList = service.selectBOGoodsBadgeList(vo);
|
||||||
maComncdVO.setGroupCd("GOODS_ICON");
|
|
||||||
List<?> iconList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
|
|
||||||
content.put("iconList", iconList);
|
content.put("iconList", iconList);
|
||||||
|
|
||||||
// 실시간수량배너구분코드
|
// 실시간수량배너구분코드
|
||||||
@@ -664,10 +662,7 @@ public class GoodsmngrController {
|
|||||||
|
|
||||||
content.put("goodsDftinfoInvntryPolicyList", cgo134List); // 재고에 따른 판매
|
content.put("goodsDftinfoInvntryPolicyList", cgo134List); // 재고에 따른 판매
|
||||||
|
|
||||||
maComncdVO = new BOMaComncdVO();
|
List<DataMap> iconList = service.selectBOGoodsBadgeList(vo);
|
||||||
maComncdVO.setGroupCd("GOODS_ICON");
|
|
||||||
|
|
||||||
List<?> iconList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
|
|
||||||
|
|
||||||
//브랜드 목록조회
|
//브랜드 목록조회
|
||||||
|
|
||||||
@@ -1466,10 +1461,7 @@ public class GoodsmngrController {
|
|||||||
|
|
||||||
content.put("goodsDftinfoInvntryPolicyList", cgo134List); // 재고에 따른 판매
|
content.put("goodsDftinfoInvntryPolicyList", cgo134List); // 재고에 따른 판매
|
||||||
|
|
||||||
maComncdVO = new BOMaComncdVO();
|
List<DataMap> iconList = service.selectBOGoodsBadgeList(vo);
|
||||||
maComncdVO.setGroupCd("GOODS_ICON");
|
|
||||||
|
|
||||||
List<?> iconList = bOMaComncdService.selectBOCommcdDetailList(maComncdVO);
|
|
||||||
|
|
||||||
//브랜드 목록조회
|
//브랜드 목록조회
|
||||||
|
|
||||||
|
|||||||
@@ -197,11 +197,12 @@ public class MngrLoginController {
|
|||||||
log.debug("리프레쉬 토큰이 없는 경우 realm :: {}", realm);
|
log.debug("리프레쉬 토큰이 없는 경우 realm :: {}", realm);
|
||||||
|
|
||||||
//엑세스토큰 삭제
|
//엑세스토큰 삭제
|
||||||
CookieUtils.deleteCookie("ACT","/"+realm, request, response);
|
CookieUtils.deleteCookie("ACT","/", request, response);
|
||||||
CookieUtils.deleteCookie("token_expire","/"+realm, request, response);
|
CookieUtils.deleteCookie("RFT","/" + realm + "/tokens/refresh", request, response);
|
||||||
|
CookieUtils.deleteCookie("token_expire","/", request, response);
|
||||||
|
|
||||||
response.sendRedirect("/"+realm);
|
response.sendRedirect("/"+realm);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//리프레쉬 토큰 있을 경우(존재한다는 자체가 refresh토큰이 만료된 상태가 아님)
|
//리프레쉬 토큰 있을 경우(존재한다는 자체가 refresh토큰이 만료된 상태가 아님)
|
||||||
|
|||||||
@@ -677,6 +677,8 @@ public class MngrMbrController {
|
|||||||
content.put("sex", sex);
|
content.put("sex", sex);
|
||||||
content.put("grad", grad);
|
content.put("grad", grad);
|
||||||
|
|
||||||
|
log.debug("BOMbrSrchVO : {}", vo);
|
||||||
|
|
||||||
model.addAttribute("resultMap", content);
|
model.addAttribute("resultMap", content);
|
||||||
// responseHandler.handleResponse(
|
// responseHandler.handleResponse(
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO,"/gcone/mbr/mbr/selectBOMarketingTrgetSrchPopupForm", vo),
|
// sendToResrc.ofPost(RESRC.GCONEBO,"/gcone/mbr/mbr/selectBOMarketingTrgetSrchPopupForm", vo),
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import org.springframework.ui.ModelMap;
|
|||||||
import org.springframework.validation.BindingResult;
|
import org.springframework.validation.BindingResult;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.CookieValue;
|
import org.springframework.web.bind.annotation.CookieValue;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
|
||||||
@@ -607,6 +608,24 @@ public class DlivyController {
|
|||||||
// );
|
// );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 배치 > 출고 상태 변경 ( 배송중, 배송완료 )
|
||||||
|
* @param boDlivyVO
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
@Policy(AuthPolicy.RESTRICTED)
|
||||||
|
@RequestMapping(value = "/updateDlivySttusGetbackBatchUpdt", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
public ResponseEntity<WnbtResponse> updateDlivySttusGetbackBatchUpdt(@RequestBody BODlivyVO boDlivyVO) {
|
||||||
|
Map<String, Object> message = new HashMap<>();
|
||||||
|
message = service.updateBODlivySttusGetbackUpdt(boDlivyVO);
|
||||||
|
|
||||||
|
return ResponseEntity.ok(
|
||||||
|
WnbtResponse.builder()
|
||||||
|
.resBody(new WnbtResponseBody(message))
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 다운로드 항목 조회
|
* 다운로드 항목 조회
|
||||||
|
|||||||
@@ -45,13 +45,12 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import org.springframework.web.bind.annotation.CookieValue;
|
import org.springframework.web.bind.annotation.CookieValue;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -626,135 +625,7 @@ public class OrdrmngrController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 발주서 엑셀다운로드
|
|
||||||
* @param response
|
|
||||||
* @param ordrSrchVO
|
|
||||||
* @return ResponseEntity<WnbtResponse>
|
|
||||||
*/
|
|
||||||
@Policy(AuthPolicy.PUBLIC)
|
|
||||||
@RequestMapping(value="/selectExcelPoDwldListInqire")
|
|
||||||
public void selectPurchOrderExcelList(HttpServletResponse response, BOOrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
|
||||||
ordrSrchVO.setSopmalCd(authSopmalCd);
|
|
||||||
|
|
||||||
//엑셀 항목별 제목에 출력될 내용 설정
|
|
||||||
LinkedHashMap<String, String> headerMap = new LinkedHashMap<String, String>();
|
|
||||||
List<String> headerValues = List.of(
|
|
||||||
"날짜",
|
|
||||||
"업체코드",
|
|
||||||
"업체명",
|
|
||||||
"업체TEL",
|
|
||||||
"업체주소",
|
|
||||||
"특별통관업체명",
|
|
||||||
"특별통관번호",
|
|
||||||
"주문번호",
|
|
||||||
"용도구분",
|
|
||||||
"수취인",
|
|
||||||
"수취인TEL",
|
|
||||||
"수취인HP",
|
|
||||||
"개인통관고유부호",
|
|
||||||
"우편번호",
|
|
||||||
"주소",
|
|
||||||
"나머지주소",
|
|
||||||
"메모",
|
|
||||||
"고객 구입사이트",
|
|
||||||
"무게",
|
|
||||||
"포장개수",
|
|
||||||
"HS CODE",
|
|
||||||
"상거래유형",
|
|
||||||
"내용물",
|
|
||||||
"Unit Value",
|
|
||||||
"상품개수",
|
|
||||||
"Value",
|
|
||||||
"Brand",
|
|
||||||
"사전식품신고 종류",
|
|
||||||
"제조국",
|
|
||||||
"제조회사명",
|
|
||||||
"중문상품명",
|
|
||||||
"Shipper 구입사이트",
|
|
||||||
"판매중개업체명",
|
|
||||||
"판매중개업체 등록부호",
|
|
||||||
"구매(배송)대행업체명",
|
|
||||||
"구매(배송)대행업체 등록부호",
|
|
||||||
"해외판매자명",
|
|
||||||
"해외판매자 등록부호",
|
|
||||||
"사이트 주문번호"
|
|
||||||
);
|
|
||||||
for (int i = 0; i < headerValues.size(); i++) {
|
|
||||||
headerMap.put(String.format("item%02d", i + 1), headerValues.get(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
//엑셀 항목에 출력될 내용 설정
|
|
||||||
List<DataMap> resultList = service.selectExcelListPurchOrder(ordrSrchVO);
|
|
||||||
List<Map<String, Object>> excelList = new ArrayList<>();
|
|
||||||
if (resultList != null) {
|
|
||||||
for (int i = 0; i < resultList.size(); i++) {
|
|
||||||
HashMap<String, Object> dataMap = new HashMap<>();
|
|
||||||
// int cellInt = 1; // 셀 타입 = 숫자
|
|
||||||
List<Object> dataValues = Arrays.asList(
|
|
||||||
resultList.get(i).get("ordrRceptDt"),
|
|
||||||
resultList.get(i).get("entrpsCd"),
|
|
||||||
resultList.get(i).get("entrpsNm"),
|
|
||||||
resultList.get(i).get("entrpsTel"),
|
|
||||||
resultList.get(i).get("entrpsAdres"),
|
|
||||||
resultList.get(i).get("spclCstmclerEntrps"),
|
|
||||||
resultList.get(i).get("spclCstmclerCd"),
|
|
||||||
resultList.get(i).get("ordrInnb"),
|
|
||||||
resultList.get(i).get("purpsDv"),
|
|
||||||
resultList.get(i).get("recpntNm"),
|
|
||||||
resultList.get(i).get("recpntMbtlnb"),
|
|
||||||
resultList.get(i).get("recpntHp"),
|
|
||||||
resultList.get(i).get("cstmclerCd"),
|
|
||||||
resultList.get(i).get("dlvylcZip"),
|
|
||||||
resultList.get(i).get("dlvylcRnmLnbAdres"),
|
|
||||||
resultList.get(i).get("dlvylcAdresDtl"),
|
|
||||||
resultList.get(i).get("dlvyMssageCn"),
|
|
||||||
resultList.get(i).get("cstmrPurchsSite"),
|
|
||||||
resultList.get(i).get("realWt"),
|
|
||||||
resultList.get(i).get("packageCnt"),
|
|
||||||
resultList.get(i).get("hscode"),
|
|
||||||
resultList.get(i).get("cmmrcTy"),
|
|
||||||
resultList.get(i).get("cn"),
|
|
||||||
resultList.get(i).get("unitValue"),
|
|
||||||
resultList.get(i).get("ordrQy"),
|
|
||||||
resultList.get(i).get("value"),
|
|
||||||
resultList.get(i).get("brand"),
|
|
||||||
resultList.get(i).get("preFoodDcl"),
|
|
||||||
resultList.get(i).get("provdNation"),
|
|
||||||
resultList.get(i).get("provdCmpnyNm"),
|
|
||||||
resultList.get(i).get("chnlngGoodsNm"),
|
|
||||||
resultList.get(i).get("shipperPurchsSite"),
|
|
||||||
resultList.get(i).get("sleAgntEntrpsNm"),
|
|
||||||
resultList.get(i).get("sleAgntEntrpsRegistCd"),
|
|
||||||
resultList.get(i).get("purchsDlvyAgencyNm"),
|
|
||||||
resultList.get(i).get("purchsDlvyAgencyRegistCd"),
|
|
||||||
resultList.get(i).get("ovseaSelerNm"),
|
|
||||||
resultList.get(i).get("ovseaSelerRegistCd"),
|
|
||||||
resultList.get(i).get("siteOrdrInnb")
|
|
||||||
);
|
|
||||||
|
|
||||||
for (int j = 0; j < dataValues.size(); j++) {
|
|
||||||
dataMap.put(String.format("item%02d", j + 1), dataValues.get(j));
|
|
||||||
}
|
|
||||||
excelList.add(dataMap);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************************/
|
|
||||||
try {
|
|
||||||
//엑셀생성 및 다운로드
|
|
||||||
LocalDateTime now = LocalDateTime.now();
|
|
||||||
String excelFileName = "발주서_";
|
|
||||||
|
|
||||||
excelFileName += String.format("%s~%s", ordrSrchVO.getSrchStartDate(), ordrSrchVO.getSrchEndDate()); // 엑셀 다운로드 파일명
|
|
||||||
|
|
||||||
String encodedFileName = URLEncoder.encode(excelFileName, StandardCharsets.UTF_8.toString()).replaceAll("\\+", "%20");
|
|
||||||
ExcelDownloadUtil.createExcel(encodedFileName, headerMap, excelList, response);
|
|
||||||
} catch (IOException ioe) {
|
|
||||||
log.error("엑셀다운로드 중 오류가 발생하였습니다.", ioe);
|
|
||||||
throw new WnbtRestException("엑셀다운로드 중 오류가 발생하였습니다.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 주문내역서 팝업 화면 이동
|
* 주문내역서 팝업 화면 이동
|
||||||
@@ -1190,6 +1061,14 @@ public class OrdrmngrController {
|
|||||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String cstmclerCd = ordrShippingVO.getCstmclerCd();
|
||||||
|
String cstmclerCdReg = "^P\\d{12}$";
|
||||||
|
if (cstmclerCd == null || cstmclerCd.trim().isEmpty()) {
|
||||||
|
throw new WnbtRestException("개인통관번호은(는) 필수 입력값입니다.");
|
||||||
|
}else if (!cstmclerCd.matches(cstmclerCdReg)) {
|
||||||
|
throw new WnbtRestException("개인통관번호는 P로 시작하는 13자리 부호만 입력할 수 있습니다.");
|
||||||
|
}
|
||||||
|
|
||||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||||
ordrShippingVO.setUpdusr(user.getUserInnb());
|
ordrShippingVO.setUpdusr(user.getUserInnb());
|
||||||
|
|
||||||
@@ -1816,6 +1695,239 @@ public class OrdrmngrController {
|
|||||||
다운로드항목설정 종료
|
다운로드항목설정 종료
|
||||||
#################################### */
|
#################################### */
|
||||||
|
|
||||||
|
/* ####################################
|
||||||
|
발주서 관리 시작
|
||||||
|
#################################### */
|
||||||
|
/**
|
||||||
|
* 발주서 관리 화면 이동
|
||||||
|
* @param ordrSrchVO
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
@Policy(AuthPolicy.RESTRICTED)
|
||||||
|
@RequestMapping(value="/selectExcelPoListInqireRForm")
|
||||||
|
public String selectExcelPoListInqireForm(ModelMap model, BOOrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||||
|
ordrSrchVO.setSopmalCd(authSopmalCd);
|
||||||
|
model.addAttribute("sopmalCd", ordrSrchVO.getSopmalCd());
|
||||||
|
model.addAttribute("ordrSrchVO", ordrSrchVO);
|
||||||
|
|
||||||
|
// 공통코드 호출
|
||||||
|
BOMaComncdVO bOMaComncdVO = new BOMaComncdVO();
|
||||||
|
bOMaComncdVO.setGroupCd("NATION_CD"); // 국가코드(NATION_CD)
|
||||||
|
model.addAttribute("nationCdList", bOMaComncdService.selectBOCommcdDetailList(bOMaComncdVO));
|
||||||
|
|
||||||
|
return "mngr/ordr/ordrmngr/PurchOrdrListInqireRForm";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 발주서 목록 조회
|
||||||
|
* @param ordrSrchVO
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
@Policy(AuthPolicy.PUBLIC)
|
||||||
|
@RequestMapping(value= "/selectExcelPoListInqire" , method = RequestMethod.POST)
|
||||||
|
public String selectExcelPoListInqire(ModelMap model, BOOrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd){
|
||||||
|
Map<String, Object> content = new HashMap<>();
|
||||||
|
String secretKey = commonService.selectSecretkey();
|
||||||
|
ordrSrchVO.setSecretKey(secretKey);
|
||||||
|
ordrSrchVO.setSopmalCd(authSopmalCd);
|
||||||
|
ordrSrchVO.setSrchOrdrSttusCd("35");
|
||||||
|
|
||||||
|
//페이징 처리를 위한 pagination 객체 생성
|
||||||
|
PaginationInfo paginationInfo = new PaginationInfo();
|
||||||
|
paginationInfo.setCurrentPageNo(ordrSrchVO.getPageIndex());
|
||||||
|
paginationInfo.setRecordCountPerPage(ordrSrchVO.getPageUnit());
|
||||||
|
paginationInfo.setPageSize(paginationProperties.getPageSize());
|
||||||
|
ordrSrchVO.setPaginationInfo(paginationInfo);
|
||||||
|
|
||||||
|
//페이징 처리를 위한 값 설정
|
||||||
|
ordrSrchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
||||||
|
ordrSrchVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||||
|
ordrSrchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||||
|
|
||||||
|
//회원 목록 조회 결과 및 페이징정보 넣기
|
||||||
|
content.put("paginationInfo", ordrSrchVO.getPaginationInfo());
|
||||||
|
content.put("resultList", service.selectExcelPoList(ordrSrchVO));
|
||||||
|
|
||||||
|
model.addAttribute("resultMap", content);
|
||||||
|
model.addAttribute("ordrSrchVO", ordrSrchVO);
|
||||||
|
|
||||||
|
return "mngr/ordr/ordrmngr/PurchOrdrListInqireR";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 주문내역서 팝업 화면 이동
|
||||||
|
* @param model
|
||||||
|
* @param ordrSrchVO
|
||||||
|
* @return OrdrDtstmnDwldPopupR.jsp
|
||||||
|
*/
|
||||||
|
@Policy(AuthPolicy.RESTRICTED)
|
||||||
|
@RequestMapping(value="/selectPurchOrdrDtstmnDwldPopupForm")
|
||||||
|
public String selectPurchOrdrDtstmnDwldPopupForm(ModelMap model, BOOrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) throws Exception {
|
||||||
|
Map<String, Object> content = new HashMap<>();
|
||||||
|
BOOrdrVO ordrVO = new BOOrdrVO();
|
||||||
|
ordrVO.setOrdrInnbs(ordrSrchVO.getSrchOrdrInnbs());
|
||||||
|
ordrVO.setSopmalCd(authSopmalCd);
|
||||||
|
|
||||||
|
content.put("ordrDtstmnDwldList", service.selectOrdrDtstmnDwld(ordrVO));
|
||||||
|
model.addAttribute("data", content);
|
||||||
|
model.addAttribute("ordrSrchVO", ordrSrchVO);
|
||||||
|
|
||||||
|
return "mngr/ordr/ordrmngr/PurchOrdrDtstmnDwldPopupR";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 발주서 엑셀다운로드
|
||||||
|
* @param response
|
||||||
|
* @param ordrSrchVO
|
||||||
|
* @return ResponseEntity<WnbtResponse>
|
||||||
|
*/
|
||||||
|
@Policy(AuthPolicy.PUBLIC)
|
||||||
|
@RequestMapping(value="/selectExcelPoDwldListInqire")
|
||||||
|
public void selectPurchOrderExcelList(HttpServletResponse response, BOOrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||||
|
String secretKey = commonService.selectSecretkey();
|
||||||
|
ordrSrchVO.setSecretKey(secretKey);
|
||||||
|
ordrSrchVO.setSopmalCd(authSopmalCd);
|
||||||
|
ordrSrchVO.setSrchOrdrSttusCd("35");
|
||||||
|
|
||||||
|
//엑셀 항목별 제목에 출력될 내용 설정
|
||||||
|
LinkedHashMap<String, String> headerMap = new LinkedHashMap<String, String>();
|
||||||
|
List<String> headerValues = List.of(
|
||||||
|
"날짜",
|
||||||
|
"업체코드",
|
||||||
|
"업체명",
|
||||||
|
"업체TEL",
|
||||||
|
"업체주소",
|
||||||
|
"특별통관업체명",
|
||||||
|
"특별통관번호",
|
||||||
|
"주문번호",
|
||||||
|
"용도구분",
|
||||||
|
"수취인",
|
||||||
|
"수취인TEL",
|
||||||
|
"수취인HP",
|
||||||
|
"개인통관고유부호",
|
||||||
|
"우편번호",
|
||||||
|
"주소",
|
||||||
|
"나머지주소",
|
||||||
|
"메모",
|
||||||
|
"고객 구입사이트",
|
||||||
|
"무게",
|
||||||
|
"포장개수",
|
||||||
|
"HS CODE",
|
||||||
|
"상거래유형",
|
||||||
|
"내용물",
|
||||||
|
"Unit Value",
|
||||||
|
"상품개수",
|
||||||
|
"Value",
|
||||||
|
"Brand",
|
||||||
|
"사전식품신고 종류",
|
||||||
|
"제조국",
|
||||||
|
"제조회사명",
|
||||||
|
"중문상품명",
|
||||||
|
"Shipper 구입사이트",
|
||||||
|
"판매중개업체명",
|
||||||
|
"판매중개업체 등록부호",
|
||||||
|
"구매(배송)대행업체명",
|
||||||
|
"구매(배송)대행업체 등록부호",
|
||||||
|
"해외판매자명",
|
||||||
|
"해외판매자 등록부호",
|
||||||
|
"사이트 주문번호"
|
||||||
|
);
|
||||||
|
for (int i = 0; i < headerValues.size(); i++) {
|
||||||
|
headerMap.put(String.format("item%02d", i + 1), headerValues.get(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] ordrInnbs = ordrSrchVO.getSrchOrdrInnbs();
|
||||||
|
String[] ordrDlvyInnbs = ordrSrchVO.getSrchOrdrDlvyInnbs();
|
||||||
|
List<Map<String, String>> srchInnbPairs = new ArrayList<>();
|
||||||
|
if (ordrInnbs != null && ordrDlvyInnbs != null) {
|
||||||
|
for (int i = 0; i < ordrInnbs.length; i++) {
|
||||||
|
Map<String, String> pair = new HashMap<>();
|
||||||
|
pair.put("srchOrdrInnb", ordrInnbs[i]);
|
||||||
|
pair.put("srchOrdrDlvyInnb", ordrDlvyInnbs[i]);
|
||||||
|
|
||||||
|
srchInnbPairs.add(pair);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ordrSrchVO.setSrchInnbPairs(srchInnbPairs);
|
||||||
|
|
||||||
|
//엑셀 항목에 출력될 내용 설정
|
||||||
|
List<DataMap> resultList = service.selectExcelPoListDwld(ordrSrchVO);
|
||||||
|
List<Map<String, Object>> excelList = new ArrayList<>();
|
||||||
|
if (resultList != null) {
|
||||||
|
for (int i = 0; i < resultList.size(); i++) {
|
||||||
|
HashMap<String, Object> dataMap = new HashMap<>();
|
||||||
|
// int cellInt = 1; // 셀 타입 = 숫자
|
||||||
|
List<Object> dataValues = Arrays.asList(
|
||||||
|
resultList.get(i).get("ordrRceptDt"),
|
||||||
|
resultList.get(i).get("entrpsCd"),
|
||||||
|
resultList.get(i).get("entrpsNm"),
|
||||||
|
resultList.get(i).get("entrpsTel"),
|
||||||
|
resultList.get(i).get("entrpsAdres"),
|
||||||
|
resultList.get(i).get("spclCstmclerEntrps"),
|
||||||
|
resultList.get(i).get("spclCstmclerCd"),
|
||||||
|
resultList.get(i).get("ordrInnb"),
|
||||||
|
resultList.get(i).get("purpsDv"),
|
||||||
|
resultList.get(i).get("recpntNm"),
|
||||||
|
resultList.get(i).get("recpntMbtlnb"),
|
||||||
|
resultList.get(i).get("recpntHp"),
|
||||||
|
resultList.get(i).get("cstmclerCd"),
|
||||||
|
resultList.get(i).get("dlvylcZip"),
|
||||||
|
resultList.get(i).get("dlvylcRnmLnbAdres"),
|
||||||
|
resultList.get(i).get("dlvylcAdresDtl"),
|
||||||
|
resultList.get(i).get("dlvyMssageCn"),
|
||||||
|
resultList.get(i).get("cstmrPurchsSite"),
|
||||||
|
resultList.get(i).get("realWt"),
|
||||||
|
resultList.get(i).get("packageCnt"),
|
||||||
|
resultList.get(i).get("hscode"),
|
||||||
|
resultList.get(i).get("cmmrcTy"),
|
||||||
|
resultList.get(i).get("cn"),
|
||||||
|
resultList.get(i).get("unitValue"),
|
||||||
|
resultList.get(i).get("ordrQy"),
|
||||||
|
resultList.get(i).get("value"),
|
||||||
|
resultList.get(i).get("brand"),
|
||||||
|
resultList.get(i).get("preFoodDcl"),
|
||||||
|
resultList.get(i).get("provdNation"),
|
||||||
|
resultList.get(i).get("provdCmpnyNm"),
|
||||||
|
resultList.get(i).get("chnlngGoodsNm"),
|
||||||
|
resultList.get(i).get("shipperPurchsSite"),
|
||||||
|
resultList.get(i).get("sleAgntEntrpsNm"),
|
||||||
|
resultList.get(i).get("sleAgntEntrpsRegistCd"),
|
||||||
|
resultList.get(i).get("purchsDlvyAgencyNm"),
|
||||||
|
resultList.get(i).get("purchsDlvyAgencyRegistCd"),
|
||||||
|
resultList.get(i).get("ovseaSelerNm"),
|
||||||
|
resultList.get(i).get("ovseaSelerRegistCd"),
|
||||||
|
resultList.get(i).get("siteOrdrInnb")
|
||||||
|
);
|
||||||
|
|
||||||
|
for (int j = 0; j < dataValues.size(); j++) {
|
||||||
|
dataMap.put(String.format("item%02d", j + 1), dataValues.get(j));
|
||||||
|
}
|
||||||
|
excelList.add(dataMap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/******************************************************************/
|
||||||
|
try {
|
||||||
|
//엑셀생성 및 다운로드
|
||||||
|
/*LocalDateTime now = LocalDateTime.now();
|
||||||
|
String excelFileName = "발주서_";
|
||||||
|
|
||||||
|
excelFileName += String.format("%s~%s", ordrSrchVO.getSrchStartDate(), ordrSrchVO.getSrchEndDate()); // 엑셀 다운로드 파일명*/
|
||||||
|
|
||||||
|
String excelFileName = "발주서";
|
||||||
|
String encodedFileName = URLEncoder.encode(excelFileName, StandardCharsets.UTF_8.toString()).replaceAll("\\+", "%20");
|
||||||
|
ExcelDownloadUtil.createExcel(encodedFileName, headerMap, excelList, response);
|
||||||
|
|
||||||
|
service.updateExcelDownDt(ordrSrchVO);
|
||||||
|
} catch (IOException ioe) {
|
||||||
|
log.error("엑셀다운로드 중 오류가 발생하였습니다.", ioe);
|
||||||
|
throw new WnbtRestException("엑셀다운로드 중 오류가 발생하였습니다.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* ####################################
|
||||||
|
발주서 관리 종료
|
||||||
|
#################################### */
|
||||||
|
|
||||||
/* ####################################
|
/* ####################################
|
||||||
주문조회 팝업 시작
|
주문조회 팝업 시작
|
||||||
#################################### */
|
#################################### */
|
||||||
|
|||||||
@@ -0,0 +1,103 @@
|
|||||||
|
package com.wb.domainserver.domain.mngr.setup.cost;
|
||||||
|
|
||||||
|
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||||
|
import com.wb.domainserver.domain.gcone.setup.cost.service.BOCostService;
|
||||||
|
import com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO;
|
||||||
|
import com.wb.domainserver.exception.WnbtRestException;
|
||||||
|
import com.wb.domainserver.response.WnbtResponse;
|
||||||
|
import com.wb.domainserver.response.WnbtResponseBody;
|
||||||
|
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||||
|
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||||
|
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||||
|
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||||
|
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||||
|
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||||
|
import com.wb.domainserver.util.communicate.ValidateResultConverter;
|
||||||
|
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.ui.ModelMap;
|
||||||
|
import org.springframework.validation.BindingResult;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.CookieValue;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 원가 설정 Controller
|
||||||
|
*
|
||||||
|
* @author 이대환
|
||||||
|
* @version 1.0
|
||||||
|
* @see <pre>
|
||||||
|
* == (Modification Information) == 개정이력
|
||||||
|
*
|
||||||
|
* 수정일 수정자 수정내용
|
||||||
|
* ------- -------- ---------------------------
|
||||||
|
* 2026-05-29 이대환 최초 생성
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
* @since 2026-05-29
|
||||||
|
*/
|
||||||
|
@Controller
|
||||||
|
@RequestMapping("/mngr/setup/cost")
|
||||||
|
@Slf4j
|
||||||
|
public class CostController {
|
||||||
|
|
||||||
|
/** WebClient 호출을 위한 wrapper */
|
||||||
|
@Autowired
|
||||||
|
WnbtWebClientResponseHandler responseHandler;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SendToResrc sendToResrc;
|
||||||
|
|
||||||
|
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||||
|
@Autowired
|
||||||
|
private GconeMessageSource gconeMessageSource;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BOCostService service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 원가 설정 페이지 이동
|
||||||
|
*
|
||||||
|
* @param vo
|
||||||
|
* @return CostPriceUpdtU.jsp
|
||||||
|
*/
|
||||||
|
@Policy(AuthPolicy.RESTRICTED)
|
||||||
|
@RequestMapping(value = "/selectCostPriceSetup")
|
||||||
|
public String selectCostPriceSetup(BOCostVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||||
|
DataMap content = new DataMap();
|
||||||
|
|
||||||
|
content.put("costList", service.selectBOCostPriceList(vo));
|
||||||
|
|
||||||
|
model.addAttribute("resultMap", content);
|
||||||
|
|
||||||
|
return "mngr/setup/cost/CostPriceUpdtU";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 원가 설정 수정
|
||||||
|
*
|
||||||
|
* @param vo
|
||||||
|
* @return ResponseEntity<WnbtResponse>
|
||||||
|
*/
|
||||||
|
@Policy(AuthPolicy.RESTRICTED)
|
||||||
|
@PostMapping(value = "/updateCostPriceSetup", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
public ResponseEntity<WnbtResponse> updateCostPriceSetup(@Validated BOCostVO vo, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||||
|
if (bindingResult.hasErrors()) {
|
||||||
|
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||||
|
}
|
||||||
|
|
||||||
|
DataMap message = service.updateBOCostPriceSetup(vo);
|
||||||
|
|
||||||
|
return ResponseEntity.ok(
|
||||||
|
WnbtResponse.builder()
|
||||||
|
.resBody(new WnbtResponseBody(message))
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1385,6 +1385,8 @@ public class CscController {
|
|||||||
url = this.selectSubPageListForm(request, model, bbsctt); //서브페이지
|
url = this.selectSubPageListForm(request, model, bbsctt); //서브페이지
|
||||||
} else if ("useGuidance".equals(bbsctt.getReqUrl())) {
|
} else if ("useGuidance".equals(bbsctt.getReqUrl())) {
|
||||||
url = this.selectUseGuidanceForm(request, model, bbsctt); //이용안내
|
url = this.selectUseGuidanceForm(request, model, bbsctt); //이용안내
|
||||||
|
} else if ("detail".equals(bbsctt.getReqUrl())) {
|
||||||
|
url = this.selectBbscttDtlInqire(request, model, bbsctt); //기타(상세보기)
|
||||||
}
|
}
|
||||||
} else if ("REGIST".equals(bbsctt.getAuthDv())) { //등록 이동
|
} else if ("REGIST".equals(bbsctt.getAuthDv())) { //등록 이동
|
||||||
if ("modal".equals(bbsctt.getReqUrl())) {
|
if ("modal".equals(bbsctt.getReqUrl())) {
|
||||||
@@ -1571,9 +1573,24 @@ public class CscController {
|
|||||||
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
||||||
DataMap bbsInfo = new DataMap();
|
DataMap bbsInfo = new DataMap();
|
||||||
bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO);
|
bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO);
|
||||||
|
|
||||||
|
// 등록 기능 사용 여부와 별개로 현재 사용자의 등록 권한을 확인한다.
|
||||||
|
BOGnrlbbscttVO registAuthBbsctt = new BOGnrlbbscttVO();
|
||||||
|
registAuthBbsctt.setSopmalCd(user.getSopmalCd());
|
||||||
|
registAuthBbsctt.setBbsId(bbsctt.getBbsId());
|
||||||
|
registAuthBbsctt.setServerDv("sopmal");
|
||||||
|
registAuthBbsctt.setAuthDv("REGIST");
|
||||||
|
if (user.getUserInnb() > 0) {
|
||||||
|
registAuthBbsctt.setRegusr(user.getUserInnb());
|
||||||
|
registAuthBbsctt.setMbrDvCd(user.getMbrDvCd());
|
||||||
|
} else {
|
||||||
|
registAuthBbsctt.setRegusr(0);
|
||||||
|
}
|
||||||
|
DataMap registAuth = service.selectBOBbscttAuth(registAuthBbsctt);
|
||||||
DataMap content = new DataMap();
|
DataMap content = new DataMap();
|
||||||
|
|
||||||
content.put("bbsInfo", bbsInfo);
|
content.put("bbsInfo", bbsInfo);
|
||||||
|
content.put("registAuthResult", registAuth.get("resultAuth"));
|
||||||
content.put("bbsctt", bbsctt);
|
content.put("bbsctt", bbsctt);
|
||||||
content.put("resultList", resultList);
|
content.put("resultList", resultList);
|
||||||
content.put("paginationInfo", bbsctt.getPaginationInfo());
|
content.put("paginationInfo", bbsctt.getPaginationInfo());
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import com.wb.domainserver.domain.gcone.setup.dlvygrp.service.BODlvygrpService;
|
|||||||
import com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO;
|
import com.wb.domainserver.domain.gcone.setup.dlvygrp.vo.BODlvygrpVO;
|
||||||
import com.wb.domainserver.domain.gcone.setup.ordrmngr.service.BOOrdrMngrService;
|
import com.wb.domainserver.domain.gcone.setup.ordrmngr.service.BOOrdrMngrService;
|
||||||
import com.wb.domainserver.domain.gcone.setup.ordrmngr.vo.BOSetupOrdrVO;
|
import com.wb.domainserver.domain.gcone.setup.ordrmngr.vo.BOSetupOrdrVO;
|
||||||
|
import com.wb.domainserver.realm.util.UrlExtractor;
|
||||||
import com.wb.domainserver.response.ApiResponse;
|
import com.wb.domainserver.response.ApiResponse;
|
||||||
import com.wb.domainserver.response.WnbtResponse;
|
import com.wb.domainserver.response.WnbtResponse;
|
||||||
import com.wb.domainserver.response.WnbtResponseBody;
|
import com.wb.domainserver.response.WnbtResponseBody;
|
||||||
@@ -189,6 +190,23 @@ public class GoodsController {
|
|||||||
return Util.getDeviceType(request)+"/goods/GoodsSrchRForm";
|
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
|
* @param vo
|
||||||
@@ -210,6 +228,42 @@ public class GoodsController {
|
|||||||
return Util.getDeviceType(request)+"/goods/GoodsSrchR";
|
return Util.getDeviceType(request)+"/goods/GoodsSrchR";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 검색어 로그 저장
|
||||||
|
* @param vo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Policy(AuthPolicy.PUBLIC)
|
||||||
|
@RequestMapping(value = "/insertSrchwrdLog", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
public ResponseEntity<WnbtResponse> insertSrchwrdLog(HttpServletRequest request, BOGoodsVO vo) {
|
||||||
|
//사용자 정보 추출 및 적용
|
||||||
|
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||||
|
if("01".equals(user.getSysDvCd())){
|
||||||
|
vo.setSopmalCd(user.getSopmalCd());
|
||||||
|
vo.setMbrInnb(String.valueOf(user.getUserInnb()));
|
||||||
|
}
|
||||||
|
|
||||||
|
//요청 URL
|
||||||
|
String url = request.getRequestURI();
|
||||||
|
vo.setConectUrl(url);
|
||||||
|
//host 정보
|
||||||
|
String host = request.getHeader("X-Original-Host") != null ? request.getHeader("X-Original-Host") : UrlExtractor.getOriginalHost(request);
|
||||||
|
vo.setConectDomn(host);
|
||||||
|
|
||||||
|
DataMap message = service.insertBOSrchwrdLog(vo);
|
||||||
|
|
||||||
|
return ResponseEntity.ok(
|
||||||
|
WnbtResponse.builder()
|
||||||
|
.resBody(new WnbtResponseBody(message))
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
// return responseHandler.handleResponse(
|
||||||
|
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOSrchGoodsNm", vo),
|
||||||
|
// ReplyFromResrc::getReply
|
||||||
|
// );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 상품명 검색어 조회
|
* 상품명 검색어 조회
|
||||||
* @param vo
|
* @param vo
|
||||||
@@ -251,6 +305,14 @@ public class GoodsController {
|
|||||||
public String selectGoodsListForm(HttpServletRequest request,
|
public String selectGoodsListForm(HttpServletRequest request,
|
||||||
BOGoodsVO vo,
|
BOGoodsVO vo,
|
||||||
ModelMap model) {
|
ModelMap model) {
|
||||||
|
String mobileParentCtgryId = request.getParameter("mobileParentCtgryId");
|
||||||
|
String mobileCurrentCtgryId = request.getParameter("mobileCurrentCtgryId");
|
||||||
|
boolean mobileSubCategorySelected = mobileParentCtgryId != null && !mobileParentCtgryId.isBlank()
|
||||||
|
&& mobileCurrentCtgryId != null && !mobileCurrentCtgryId.isBlank();
|
||||||
|
if (mobileSubCategorySelected) {
|
||||||
|
vo.setCtgryId(mobileParentCtgryId);
|
||||||
|
}
|
||||||
|
|
||||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||||
if("01".equals(user.getSysDvCd())){
|
if("01".equals(user.getSysDvCd())){
|
||||||
vo.setSopmalCd(user.getSopmalCd());
|
vo.setSopmalCd(user.getSopmalCd());
|
||||||
@@ -268,7 +330,7 @@ public class GoodsController {
|
|||||||
//검색한 카테고리 정보로 vo 세팅
|
//검색한 카테고리 정보로 vo 세팅
|
||||||
if(!CollectionUtils.isEmpty(goodsCategoryList)){
|
if(!CollectionUtils.isEmpty(goodsCategoryList)){
|
||||||
vo.setUpperCtgryId(goodsCategoryList.get(0).get("baseCtgryId").toString());
|
vo.setUpperCtgryId(goodsCategoryList.get(0).get("baseCtgryId").toString());
|
||||||
vo.setCtgryId(goodsCategoryList.get(0).get("baseCtgryId").toString());
|
vo.setCtgryId(mobileSubCategorySelected ? mobileCurrentCtgryId : goodsCategoryList.get(0).get("baseCtgryId").toString());
|
||||||
}else{
|
}else{
|
||||||
vo.setUpperCtgryId("0");
|
vo.setUpperCtgryId("0");
|
||||||
vo.setCtgryId("0");
|
vo.setCtgryId("0");
|
||||||
@@ -425,6 +487,7 @@ public class GoodsController {
|
|||||||
|
|
||||||
// 상세 조회
|
// 상세 조회
|
||||||
DataMap goodsDtl = service.selectBOGoodsDtlInfo(vo);
|
DataMap goodsDtl = service.selectBOGoodsDtlInfo(vo);
|
||||||
|
List<DataMap> goodsBadgeList = service.selectBOGoodsBadgeList(vo);
|
||||||
|
|
||||||
//상품 옵션 조회
|
//상품 옵션 조회
|
||||||
DataMap goodsOptList = service.selectBOGoodsOptionList(vo);
|
DataMap goodsOptList = service.selectBOGoodsOptionList(vo);
|
||||||
@@ -476,6 +539,7 @@ public class GoodsController {
|
|||||||
//담기
|
//담기
|
||||||
Map<String, Object> content = new HashMap<>();
|
Map<String, Object> content = new HashMap<>();
|
||||||
content.put("goodsDtl", goodsDtl);
|
content.put("goodsDtl", goodsDtl);
|
||||||
|
content.put("goodsBadgeList", goodsBadgeList);
|
||||||
content.put("evtBannerList", evtBannerList);
|
content.put("evtBannerList", evtBannerList);
|
||||||
content.put("goodsOptList", goodsOptList);
|
content.put("goodsOptList", goodsOptList);
|
||||||
content.put("GoodsRelateInfo", goodsReleateInfo);
|
content.put("GoodsRelateInfo", goodsReleateInfo);
|
||||||
|
|||||||
@@ -198,6 +198,20 @@ public class MainController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 사이트맵 XML
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Policy(AuthPolicy.PUBLIC)
|
||||||
|
@RequestMapping(value="/sitemap", produces = MediaType.APPLICATION_XML_VALUE)
|
||||||
|
public ResponseEntity<String> selectSitemapXml() {
|
||||||
|
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||||
|
String xml = boMaSopmalService.selectSitemapXml(user.getSopmalCd());
|
||||||
|
|
||||||
|
return ResponseEntity.ok().contentType(MediaType.APPLICATION_XML).body(xml);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 비회원 휴대폰번호 확인
|
* 비회원 휴대폰번호 확인
|
||||||
* @return OrdrDtlR.jsp
|
* @return OrdrDtlR.jsp
|
||||||
|
|||||||
@@ -48,22 +48,22 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MyActController Class (back)
|
* MyActController Class (back)
|
||||||
*
|
*
|
||||||
* @author 홍길동
|
* @author 홍길동
|
||||||
* @since 2024-02-05
|
* @since 2024-02-05
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
* @see
|
* @see
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* == (Modification Information) == 개정이력
|
* == (Modification Information) == 개정이력
|
||||||
*
|
*
|
||||||
* 수정일 수정자 수정내용
|
* 수정일 수정자 수정내용
|
||||||
* ------- -------- ---------------------------
|
* ------- -------- ---------------------------
|
||||||
* 2024-03-05 김혜인 최초 생성
|
* 2024-03-05 김혜인 최초 생성
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/sopmal/mpage/act")
|
@RequestMapping("/sopmal/mpage/act")
|
||||||
@@ -72,7 +72,7 @@ public class MyActController {
|
|||||||
/** WebClient 호출을 위한 wrapper */
|
/** WebClient 호출을 위한 wrapper */
|
||||||
@Autowired
|
@Autowired
|
||||||
private WnbtWebClientResponseHandler responseHandler;
|
private WnbtWebClientResponseHandler responseHandler;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SendToResrc sendToResrc;
|
private SendToResrc sendToResrc;
|
||||||
/** 공통 메시지 처리를 위한 메시지 객체 */
|
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||||
@@ -102,10 +102,10 @@ public class MyActController {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 상품 Q&A 조회
|
* 상품 Q&A 조회
|
||||||
* @param bbsctt
|
* @param bbsctt
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
@Policy(AuthPolicy.PUBLIC)
|
@Policy(AuthPolicy.PUBLIC)
|
||||||
@RequestMapping(value="/selectGoodsQnaInqire")
|
@RequestMapping(value="/selectGoodsQnaInqire")
|
||||||
public String selectGoodsQnaInqire(HttpServletRequest request, ModelMap model, BOGnrlbbscttVO bbsctt, BOMbrVO vo){
|
public String selectGoodsQnaInqire(HttpServletRequest request, ModelMap model, BOGnrlbbscttVO bbsctt, BOMbrVO vo){
|
||||||
@@ -115,151 +115,11 @@ public class MyActController {
|
|||||||
|
|
||||||
DataMap content = selectBOBbscttListInqire(bbsctt);
|
DataMap content = selectBOBbscttListInqire(bbsctt);
|
||||||
model.addAttribute("resultMap", content);
|
model.addAttribute("resultMap", content);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt),
|
|
||||||
// model,
|
|
||||||
// "resultMap"
|
|
||||||
// );
|
|
||||||
|
|
||||||
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
||||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
|
||||||
model.addAttribute("mpageResultMap", content2);
|
model.addAttribute("mpageResultMap", content2);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt),
|
|
||||||
// model,
|
|
||||||
// "mpageResultMap"
|
|
||||||
// );
|
|
||||||
|
|
||||||
return Util.getDeviceType(request)+"/mpage/act/MyGoodsQaR";
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 상품 Q&A ajax 조회
|
|
||||||
* @param bbsctt
|
|
||||||
* @return String
|
|
||||||
*/
|
|
||||||
@Policy(AuthPolicy.PUBLIC)
|
|
||||||
@RequestMapping(value="/selectGoodsQnaInqireAjax", produces = MediaType.APPLICATION_JSON_VALUE)
|
|
||||||
public ResponseEntity<?> selectGoodsQnaInqireAjax(BOGnrlbbscttVO bbsctt){
|
|
||||||
bbsctt.setBbsTyCd("05");
|
|
||||||
bbsctt.setServerDv("sopmal");
|
|
||||||
bbsctt.setReqUrl("mpage");
|
|
||||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
|
||||||
|
|
||||||
DataMap content = selectBOBbscttListInqire(bbsctt);
|
return Util.getDeviceType(request)+"/mpage/act/MyGoodsQaR";
|
||||||
return ResponseEntity.ok(
|
|
||||||
WnbtResponse.builder()
|
|
||||||
.resBody(new WnbtResponseBody(content))
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
// return responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt),
|
|
||||||
// ReplyFromResrc::getReply
|
|
||||||
// );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 상품 Q&A 파일정보 조회
|
|
||||||
* @param bbsctt
|
|
||||||
* @return String
|
|
||||||
*/
|
|
||||||
@Policy(AuthPolicy.PUBLIC)
|
|
||||||
@RequestMapping(value="/selectFileInfo", produces = MediaType.APPLICATION_JSON_VALUE)
|
|
||||||
public ResponseEntity<?> selectFileInfo(HttpServletRequest request, ModelMap model, BOGnrlbbscttVO bbsctt){
|
|
||||||
bbsctt.setServerDv("sopmal");
|
|
||||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
|
||||||
if ("01".equals(user.getSysDvCd())) {
|
|
||||||
bbsctt.setSopmalCd(user.getSopmalCd());
|
|
||||||
}
|
|
||||||
DataMap content = new DataMap();
|
|
||||||
content.put("fileInfo", service.selectFileInfo(bbsctt));
|
|
||||||
|
|
||||||
return ResponseEntity.ok(
|
|
||||||
WnbtResponse.builder()
|
|
||||||
.resBody(new WnbtResponseBody(content))
|
|
||||||
.build()
|
|
||||||
);
|
|
||||||
// return responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOFileInfo",bbsctt),
|
|
||||||
// ReplyFromResrc::getReply
|
|
||||||
// );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 상품 Q&A 수정 폼 이동
|
|
||||||
* @param bbsctt
|
|
||||||
* @return String
|
|
||||||
*/
|
|
||||||
@Policy(AuthPolicy.PUBLIC)
|
|
||||||
@RequestMapping(value="/selectGoodsQnaDtlUpdtForm")
|
|
||||||
public String selectGoodsQnaDtlUpdtForm(HttpServletRequest request, ModelMap model,BOGnrlbbscttVO bbsctt, BOMbrVO vo){
|
|
||||||
bbsctt.setServerDv("sopmal");
|
|
||||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
|
||||||
if ("01".equals(user.getSysDvCd())) {
|
|
||||||
bbsctt.setSopmalCd(user.getSopmalCd());
|
|
||||||
}
|
|
||||||
;
|
|
||||||
if (user.getUserInnb() > 0) {
|
|
||||||
if ("mngr".equals(bbsctt.getServerDv())) {
|
|
||||||
bbsctt.setRegusrDvCd("02"); //관리자
|
|
||||||
} else {
|
|
||||||
bbsctt.setRegusrDvCd("01"); //회원
|
|
||||||
bbsctt.setAnswMbtlnb(user.getMbtlnb());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bbsctt.setRegusrDvCd("99");//비회원
|
|
||||||
}
|
|
||||||
bbsctt.setSecretKey(boCommonService.selectSecretkey());
|
|
||||||
// 게시판 설정 정보
|
|
||||||
BOBbsVO bbsVO = new BOBbsVO();
|
|
||||||
// bbsVO에 쇼핑몰코드, 해당 게시판 set
|
|
||||||
bbsVO.setSopmalCd(bbsctt.getSopmalCd());
|
|
||||||
bbsVO.setBbsId(bbsctt.getBbsId());
|
|
||||||
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
|
||||||
DataMap bbsInfo = new DataMap();
|
|
||||||
bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO);
|
|
||||||
|
|
||||||
// 게시글 상세 조회
|
|
||||||
Map<String, Object> bbscttInfo = new HashMap<String, Object>();
|
|
||||||
bbscttInfo = service.selectBOBbscttUpdt(bbsctt);
|
|
||||||
|
|
||||||
// 분류 조회
|
|
||||||
List<DataMap> itmList = new ArrayList<>();
|
|
||||||
itmList = service.selectBOBbscttItmInqire(bbsctt);
|
|
||||||
|
|
||||||
//추가 항목 조회, 추가항목 항목 조회
|
|
||||||
Map<String, Object> qesitmList = new HashMap<String, Object>();
|
|
||||||
qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt);
|
|
||||||
|
|
||||||
//리뷰항목 리스트, 리뷰항목 항목 리스트
|
|
||||||
Map<String, Object> rvwQesitmList = new HashMap<String, Object>();
|
|
||||||
rvwQesitmList = service.selectBOStarItm(bbsctt);
|
|
||||||
|
|
||||||
Map<String, Object> content = new HashMap<String, Object>();
|
|
||||||
content.put("bbsInfo", bbsInfo);
|
|
||||||
content.put("bbscttVO", bbsctt);
|
|
||||||
content.put("bbscttInfo", bbscttInfo);
|
|
||||||
content.put("itmList", itmList);
|
|
||||||
content.put("qesitmList", qesitmList);
|
|
||||||
content.put("rvwQesitmList", rvwQesitmList);
|
|
||||||
|
|
||||||
model.addAttribute("resultMap", content);
|
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm",bbsctt),
|
|
||||||
// model,
|
|
||||||
// "resultMap"
|
|
||||||
// );
|
|
||||||
model.addAttribute("bbsctt", bbsctt);
|
|
||||||
|
|
||||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
|
||||||
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
|
||||||
model.addAttribute("mpageResultMap", content2);
|
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt),
|
|
||||||
// model,
|
|
||||||
// "mpageResultMap"
|
|
||||||
// );
|
|
||||||
|
|
||||||
return Util.getDeviceType(request)+"/mpage/act/MyGoodsQnaDtlUpdtU";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -276,20 +136,9 @@ public class MyActController {
|
|||||||
|
|
||||||
DataMap content = selectBOBbscttListInqire(bbsctt);
|
DataMap content = selectBOBbscttListInqire(bbsctt);
|
||||||
model.addAttribute("resultMap", content);
|
model.addAttribute("resultMap", content);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt),
|
|
||||||
// model,
|
|
||||||
// "resultMap"
|
|
||||||
// );
|
|
||||||
|
|
||||||
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
||||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
|
||||||
model.addAttribute("mpageResultMap", content2);
|
model.addAttribute("mpageResultMap", content2);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt),
|
|
||||||
// model,
|
|
||||||
// "mpageResultMap"
|
|
||||||
// );
|
|
||||||
|
|
||||||
return Util.getDeviceType(request)+"/mpage/act/MyNormalQaR";
|
return Util.getDeviceType(request)+"/mpage/act/MyNormalQaR";
|
||||||
}
|
}
|
||||||
@@ -320,28 +169,22 @@ public class MyActController {
|
|||||||
bbsctt.setRegusrDvCd("99");//비회원
|
bbsctt.setRegusrDvCd("99");//비회원
|
||||||
}
|
}
|
||||||
bbsctt.setSecretKey(boCommonService.selectSecretkey());
|
bbsctt.setSecretKey(boCommonService.selectSecretkey());
|
||||||
// 게시판 설정 정보
|
|
||||||
BOBbsVO bbsVO = new BOBbsVO();
|
BOBbsVO bbsVO = new BOBbsVO();
|
||||||
// bbsVO에 쇼핑몰코드, 해당 게시판 set
|
|
||||||
bbsVO.setSopmalCd(bbsctt.getSopmalCd());
|
bbsVO.setSopmalCd(bbsctt.getSopmalCd());
|
||||||
bbsVO.setBbsId(bbsctt.getBbsId());
|
bbsVO.setBbsId(bbsctt.getBbsId());
|
||||||
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
||||||
DataMap bbsInfo = new DataMap();
|
DataMap bbsInfo = new DataMap();
|
||||||
bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO);
|
bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO);
|
||||||
|
|
||||||
// 게시글 상세 조회
|
|
||||||
Map<String, Object> bbscttInfo = new HashMap<String, Object>();
|
Map<String, Object> bbscttInfo = new HashMap<String, Object>();
|
||||||
bbscttInfo = service.selectBOBbscttUpdt(bbsctt);
|
bbscttInfo = service.selectBOBbscttUpdt(bbsctt);
|
||||||
|
|
||||||
// 분류 조회
|
|
||||||
List<DataMap> itmList = new ArrayList<>();
|
List<DataMap> itmList = new ArrayList<>();
|
||||||
itmList = service.selectBOBbscttItmInqire(bbsctt);
|
itmList = service.selectBOBbscttItmInqire(bbsctt);
|
||||||
|
|
||||||
//추가 항목 조회, 추가항목 항목 조회
|
|
||||||
Map<String, Object> qesitmList = new HashMap<String, Object>();
|
Map<String, Object> qesitmList = new HashMap<String, Object>();
|
||||||
qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt);
|
qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt);
|
||||||
|
|
||||||
//리뷰항목 리스트, 리뷰항목 항목 리스트
|
|
||||||
Map<String, Object> rvwQesitmList = new HashMap<String, Object>();
|
Map<String, Object> rvwQesitmList = new HashMap<String, Object>();
|
||||||
rvwQesitmList = service.selectBOStarItm(bbsctt);
|
rvwQesitmList = service.selectBOStarItm(bbsctt);
|
||||||
|
|
||||||
@@ -354,21 +197,10 @@ public class MyActController {
|
|||||||
content.put("rvwQesitmList", rvwQesitmList);
|
content.put("rvwQesitmList", rvwQesitmList);
|
||||||
|
|
||||||
model.addAttribute("resultMap", content);
|
model.addAttribute("resultMap", content);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm",bbsctt),
|
|
||||||
// model,
|
|
||||||
// "resultMap"
|
|
||||||
// );
|
|
||||||
model.addAttribute("bbsctt", bbsctt);
|
model.addAttribute("bbsctt", bbsctt);
|
||||||
|
|
||||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
|
||||||
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
||||||
model.addAttribute("mpageResultMap", content2);
|
model.addAttribute("mpageResultMap", content2);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt),
|
|
||||||
// model,
|
|
||||||
// "mpageResultMap"
|
|
||||||
// );
|
|
||||||
|
|
||||||
return Util.getDeviceType(request)+"/mpage/act/MyNormalQnaDtlUpdtU";
|
return Util.getDeviceType(request)+"/mpage/act/MyNormalQnaDtlUpdtU";
|
||||||
}
|
}
|
||||||
@@ -384,7 +216,6 @@ public class MyActController {
|
|||||||
bbsctt.setBbsTyCd("01");
|
bbsctt.setBbsTyCd("01");
|
||||||
bbsctt.setServerDv("sopmal");
|
bbsctt.setServerDv("sopmal");
|
||||||
bbsctt.setReqUrl("mpage");
|
bbsctt.setReqUrl("mpage");
|
||||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
|
||||||
|
|
||||||
DataMap content = selectBOBbscttListInqire(bbsctt);
|
DataMap content = selectBOBbscttListInqire(bbsctt);
|
||||||
return ResponseEntity.ok(
|
return ResponseEntity.ok(
|
||||||
@@ -392,10 +223,110 @@ public class MyActController {
|
|||||||
.resBody(new WnbtResponseBody(content))
|
.resBody(new WnbtResponseBody(content))
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
// return responseHandler.handleResponse(
|
}
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt),
|
|
||||||
// ReplyFromResrc::getReply
|
/**
|
||||||
// );
|
* 상품 Q&A ajax 조회
|
||||||
|
* @param bbsctt
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
@Policy(AuthPolicy.PUBLIC)
|
||||||
|
@RequestMapping(value="/selectGoodsQnaInqireAjax", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
public ResponseEntity<?> selectGoodsQnaInqireAjax(BOGnrlbbscttVO bbsctt){
|
||||||
|
bbsctt.setBbsTyCd("05");
|
||||||
|
bbsctt.setServerDv("sopmal");
|
||||||
|
bbsctt.setReqUrl("mpage");
|
||||||
|
|
||||||
|
DataMap content = selectBOBbscttListInqire(bbsctt);
|
||||||
|
return ResponseEntity.ok(
|
||||||
|
WnbtResponse.builder()
|
||||||
|
.resBody(new WnbtResponseBody(content))
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 상품 Q&A 파일정보 조회
|
||||||
|
* @param bbsctt
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
@Policy(AuthPolicy.PUBLIC)
|
||||||
|
@RequestMapping(value="/selectFileInfo", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||||
|
public ResponseEntity<?> selectFileInfo(HttpServletRequest request, ModelMap model, BOGnrlbbscttVO bbsctt){
|
||||||
|
bbsctt.setServerDv("sopmal");
|
||||||
|
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||||
|
if ("01".equals(user.getSysDvCd())) {
|
||||||
|
bbsctt.setSopmalCd(user.getSopmalCd());
|
||||||
|
}
|
||||||
|
DataMap content = new DataMap();
|
||||||
|
content.put("fileInfo", service.selectFileInfo(bbsctt));
|
||||||
|
|
||||||
|
return ResponseEntity.ok(
|
||||||
|
WnbtResponse.builder()
|
||||||
|
.resBody(new WnbtResponseBody(content))
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 상품 Q&A 수정 폼 이동
|
||||||
|
* @param bbsctt
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
@Policy(AuthPolicy.PUBLIC)
|
||||||
|
@RequestMapping(value="/selectGoodsQnaDtlUpdtForm")
|
||||||
|
public String selectGoodsQnaDtlUpdtForm(HttpServletRequest request, ModelMap model,BOGnrlbbscttVO bbsctt, BOMbrVO vo){
|
||||||
|
bbsctt.setServerDv("sopmal");
|
||||||
|
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||||
|
if ("01".equals(user.getSysDvCd())) {
|
||||||
|
bbsctt.setSopmalCd(user.getSopmalCd());
|
||||||
|
}
|
||||||
|
;
|
||||||
|
if (user.getUserInnb() > 0) {
|
||||||
|
if ("mngr".equals(bbsctt.getServerDv())) {
|
||||||
|
bbsctt.setRegusrDvCd("02"); //관리자
|
||||||
|
} else {
|
||||||
|
bbsctt.setRegusrDvCd("01"); //회원
|
||||||
|
bbsctt.setAnswMbtlnb(user.getMbtlnb());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
bbsctt.setRegusrDvCd("99");//비회원
|
||||||
|
}
|
||||||
|
bbsctt.setSecretKey(boCommonService.selectSecretkey());
|
||||||
|
BOBbsVO bbsVO = new BOBbsVO();
|
||||||
|
bbsVO.setSopmalCd(bbsctt.getSopmalCd());
|
||||||
|
bbsVO.setBbsId(bbsctt.getBbsId());
|
||||||
|
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
||||||
|
DataMap bbsInfo = new DataMap();
|
||||||
|
bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO);
|
||||||
|
|
||||||
|
Map<String, Object> bbscttInfo = new HashMap<String, Object>();
|
||||||
|
bbscttInfo = service.selectBOBbscttUpdt(bbsctt);
|
||||||
|
|
||||||
|
List<DataMap> itmList = new ArrayList<>();
|
||||||
|
itmList = service.selectBOBbscttItmInqire(bbsctt);
|
||||||
|
|
||||||
|
Map<String, Object> qesitmList = new HashMap<String, Object>();
|
||||||
|
qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt);
|
||||||
|
|
||||||
|
Map<String, Object> rvwQesitmList = new HashMap<String, Object>();
|
||||||
|
rvwQesitmList = service.selectBOStarItm(bbsctt);
|
||||||
|
|
||||||
|
Map<String, Object> content = new HashMap<String, Object>();
|
||||||
|
content.put("bbsInfo", bbsInfo);
|
||||||
|
content.put("bbscttVO", bbsctt);
|
||||||
|
content.put("bbscttInfo", bbscttInfo);
|
||||||
|
content.put("itmList", itmList);
|
||||||
|
content.put("qesitmList", qesitmList);
|
||||||
|
content.put("rvwQesitmList", rvwQesitmList);
|
||||||
|
|
||||||
|
model.addAttribute("resultMap", content);
|
||||||
|
model.addAttribute("bbsctt", bbsctt);
|
||||||
|
|
||||||
|
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
||||||
|
model.addAttribute("mpageResultMap", content2);
|
||||||
|
|
||||||
|
return Util.getDeviceType(request)+"/mpage/act/MyGoodsQnaDtlUpdtU";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -412,23 +343,13 @@ public class MyActController {
|
|||||||
|
|
||||||
DataMap content = selectBOBbscttListInqire(bbsctt);
|
DataMap content = selectBOBbscttListInqire(bbsctt);
|
||||||
model.addAttribute("resultMap", content);
|
model.addAttribute("resultMap", content);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt),
|
|
||||||
// model,
|
|
||||||
// "resultMap"
|
|
||||||
// );
|
|
||||||
|
|
||||||
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
||||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
|
||||||
model.addAttribute("mpageResultMap", content2);
|
model.addAttribute("mpageResultMap", content2);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt),
|
|
||||||
// model,
|
|
||||||
// "mpageResultMap"
|
|
||||||
// );
|
|
||||||
|
|
||||||
return Util.getDeviceType(request)+"/mpage/act/MyM2mQaR";
|
return Util.getDeviceType(request)+"/mpage/act/MyM2mQaR";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 1:1 문의 ajax 조회
|
* 1:1 문의 ajax 조회
|
||||||
* @param bbsctt
|
* @param bbsctt
|
||||||
@@ -440,7 +361,6 @@ public class MyActController {
|
|||||||
bbsctt.setBbsTyCd("12");
|
bbsctt.setBbsTyCd("12");
|
||||||
bbsctt.setServerDv("sopmal");
|
bbsctt.setServerDv("sopmal");
|
||||||
bbsctt.setReqUrl("mpage");
|
bbsctt.setReqUrl("mpage");
|
||||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
|
||||||
|
|
||||||
DataMap content = selectBOBbscttListInqire(bbsctt);
|
DataMap content = selectBOBbscttListInqire(bbsctt);
|
||||||
return ResponseEntity.ok(
|
return ResponseEntity.ok(
|
||||||
@@ -448,10 +368,6 @@ public class MyActController {
|
|||||||
.resBody(new WnbtResponseBody(content))
|
.resBody(new WnbtResponseBody(content))
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
// return responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt),
|
|
||||||
// ReplyFromResrc::getReply
|
|
||||||
// );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -480,28 +396,22 @@ public class MyActController {
|
|||||||
bbsctt.setRegusrDvCd("99");//비회원
|
bbsctt.setRegusrDvCd("99");//비회원
|
||||||
}
|
}
|
||||||
bbsctt.setSecretKey(boCommonService.selectSecretkey());
|
bbsctt.setSecretKey(boCommonService.selectSecretkey());
|
||||||
// 게시판 설정 정보
|
|
||||||
BOBbsVO bbsVO = new BOBbsVO();
|
BOBbsVO bbsVO = new BOBbsVO();
|
||||||
// bbsVO에 쇼핑몰코드, 해당 게시판 set
|
|
||||||
bbsVO.setSopmalCd(bbsctt.getSopmalCd());
|
bbsVO.setSopmalCd(bbsctt.getSopmalCd());
|
||||||
bbsVO.setBbsId(bbsctt.getBbsId());
|
bbsVO.setBbsId(bbsctt.getBbsId());
|
||||||
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
||||||
DataMap bbsInfo = new DataMap();
|
DataMap bbsInfo = new DataMap();
|
||||||
bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO);
|
bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO);
|
||||||
|
|
||||||
// 게시글 상세 조회
|
|
||||||
Map<String, Object> bbscttInfo = new HashMap<String, Object>();
|
Map<String, Object> bbscttInfo = new HashMap<String, Object>();
|
||||||
bbscttInfo = service.selectBOBbscttUpdt(bbsctt);
|
bbscttInfo = service.selectBOBbscttUpdt(bbsctt);
|
||||||
|
|
||||||
// 분류 조회
|
|
||||||
List<DataMap> itmList = new ArrayList<>();
|
List<DataMap> itmList = new ArrayList<>();
|
||||||
itmList = service.selectBOBbscttItmInqire(bbsctt);
|
itmList = service.selectBOBbscttItmInqire(bbsctt);
|
||||||
|
|
||||||
//추가 항목 조회, 추가항목 항목 조회
|
|
||||||
Map<String, Object> qesitmList = new HashMap<String, Object>();
|
Map<String, Object> qesitmList = new HashMap<String, Object>();
|
||||||
qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt);
|
qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt);
|
||||||
|
|
||||||
//리뷰항목 리스트, 리뷰항목 항목 리스트
|
|
||||||
Map<String, Object> rvwQesitmList = new HashMap<String, Object>();
|
Map<String, Object> rvwQesitmList = new HashMap<String, Object>();
|
||||||
rvwQesitmList = service.selectBOStarItm(bbsctt);
|
rvwQesitmList = service.selectBOStarItm(bbsctt);
|
||||||
|
|
||||||
@@ -514,21 +424,10 @@ public class MyActController {
|
|||||||
content.put("rvwQesitmList", rvwQesitmList);
|
content.put("rvwQesitmList", rvwQesitmList);
|
||||||
|
|
||||||
model.addAttribute("resultMap", content);
|
model.addAttribute("resultMap", content);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm",bbsctt),
|
|
||||||
// model,
|
|
||||||
// "resultMap"
|
|
||||||
// );
|
|
||||||
model.addAttribute("bbsctt", bbsctt);
|
model.addAttribute("bbsctt", bbsctt);
|
||||||
|
|
||||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
|
||||||
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
||||||
model.addAttribute("mpageResultMap", content2);
|
model.addAttribute("mpageResultMap", content2);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt),
|
|
||||||
// model,
|
|
||||||
// "mpageResultMap"
|
|
||||||
// );
|
|
||||||
|
|
||||||
return Util.getDeviceType(request)+"/mpage/act/MyM2mQnaDtlUpdtU";
|
return Util.getDeviceType(request)+"/mpage/act/MyM2mQnaDtlUpdtU";
|
||||||
}
|
}
|
||||||
@@ -544,28 +443,17 @@ public class MyActController {
|
|||||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||||
bbsctt.setSopmalCd(user.getSopmalCd());
|
bbsctt.setSopmalCd(user.getSopmalCd());
|
||||||
|
|
||||||
/*리뷰 조회 폼*/
|
|
||||||
DataMap rvwBnefInfo = new DataMap();
|
DataMap rvwBnefInfo = new DataMap();
|
||||||
rvwBnefInfo = service.selectBORvwBnefInfo(bbsctt);
|
rvwBnefInfo = service.selectBORvwBnefInfo(bbsctt);
|
||||||
|
|
||||||
model.addAttribute("mlgAccmlNtc", rvwBnefInfo);
|
model.addAttribute("mlgAccmlNtc", rvwBnefInfo);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBORvwBnefInfo",bbsctt),
|
|
||||||
// model,
|
|
||||||
// "mlgAccmlNtc"
|
|
||||||
// );
|
|
||||||
|
|
||||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
|
||||||
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
Map<String, Object> content2 = selectBOMpageInfoInqire(vo);
|
||||||
model.addAttribute("mpageResultMap", content2);
|
model.addAttribute("mpageResultMap", content2);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt),
|
|
||||||
// model,
|
|
||||||
// "mpageResultMap"
|
|
||||||
// );
|
|
||||||
model.addAttribute("vo",bbsctt);
|
model.addAttribute("vo",bbsctt);
|
||||||
return Util.getDeviceType(request)+"/mpage/act/MyRvwRForm";
|
return Util.getDeviceType(request)+"/mpage/act/MyRvwRForm";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 나의 리뷰 조회 작성 가능한 리뷰
|
* 나의 리뷰 조회 작성 가능한 리뷰
|
||||||
* @param rvwVO
|
* @param rvwVO
|
||||||
@@ -579,13 +467,9 @@ public class MyActController {
|
|||||||
|
|
||||||
Map<String, Object> content = selectBOWritPosblRvw(rvwVO);
|
Map<String, Object> content = selectBOWritPosblRvw(rvwVO);
|
||||||
model.addAttribute("resultMap", content);
|
model.addAttribute("resultMap", content);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOWritPosblRvw",rvwVO),
|
|
||||||
// model,
|
|
||||||
// "resultMap"
|
|
||||||
// );
|
|
||||||
return Util.getDeviceType(request)+"/mpage/act/WritngPosblRvwR";
|
return Util.getDeviceType(request)+"/mpage/act/WritngPosblRvwR";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 나의 리뷰 조회 작성 가능한 리뷰 ajax(인피니트스크롤)
|
* 나의 리뷰 조회 작성 가능한 리뷰 ajax(인피니트스크롤)
|
||||||
* @param rvwVO
|
* @param rvwVO
|
||||||
@@ -603,10 +487,6 @@ public class MyActController {
|
|||||||
.resBody(new WnbtResponseBody(content))
|
.resBody(new WnbtResponseBody(content))
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
// return responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOWritPosblRvw",rvwVO),
|
|
||||||
// ReplyFromResrc::getReply
|
|
||||||
// );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -623,11 +503,6 @@ public class MyActController {
|
|||||||
|
|
||||||
DataMap content = selectBOMyRvwListInqire(rvwVO);
|
DataMap content = selectBOMyRvwListInqire(rvwVO);
|
||||||
model.addAttribute("resultMap", content);
|
model.addAttribute("resultMap", content);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire",rvwVO),
|
|
||||||
// model,
|
|
||||||
// "resultMap"
|
|
||||||
// );
|
|
||||||
return Util.getDeviceType(request)+"/mpage/act/MyRvwR";
|
return Util.getDeviceType(request)+"/mpage/act/MyRvwR";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -649,10 +524,6 @@ public class MyActController {
|
|||||||
.resBody(new WnbtResponseBody(content))
|
.resBody(new WnbtResponseBody(content))
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
// return responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire",rvwVO),
|
|
||||||
// ReplyFromResrc::getReply
|
|
||||||
// );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -665,15 +536,9 @@ public class MyActController {
|
|||||||
public String selectRvwWritngPopupForm(HttpServletRequest request, ModelMap model, BOGnrlbbscttVO rvwVO){
|
public String selectRvwWritngPopupForm(HttpServletRequest request, ModelMap model, BOGnrlbbscttVO rvwVO){
|
||||||
rvwVO.setRvwBbscttDv("rvw");
|
rvwVO.setRvwBbscttDv("rvw");
|
||||||
rvwVO.setServerDv("sopmal");
|
rvwVO.setServerDv("sopmal");
|
||||||
//리뷰 등록 가능 여부 true시 등록폼 호출
|
|
||||||
|
|
||||||
Map<String, Object> content = selectBOBbscttRegistPopupForm(rvwVO);
|
Map<String, Object> content = selectBOBbscttRegistPopupForm(rvwVO);
|
||||||
model.addAttribute("resultMap", content);
|
model.addAttribute("resultMap", content);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm",rvwVO),
|
|
||||||
// model,
|
|
||||||
// "resultMap"
|
|
||||||
// );
|
|
||||||
|
|
||||||
return Util.getDeviceType(request)+"/mpage/act/RvwWritngPopupC";
|
return Util.getDeviceType(request)+"/mpage/act/RvwWritngPopupC";
|
||||||
}
|
}
|
||||||
@@ -693,30 +558,24 @@ public class MyActController {
|
|||||||
bbsctt.setSopmalCd(user.getSopmalCd());
|
bbsctt.setSopmalCd(user.getSopmalCd());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 작성자 정보 추출
|
if (user.getUserInnb() > 0) {
|
||||||
if (user.getUserInnb() > 0) { //회원 , 관리자
|
|
||||||
bbsctt.setUpdusr(user.getUserInnb());
|
bbsctt.setUpdusr(user.getUserInnb());
|
||||||
} else { // 비회원
|
} else {
|
||||||
bbsctt.setUpdusr(0);
|
bbsctt.setUpdusr(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, Object> content = new HashMap<>();
|
Map<String, Object> content = new HashMap<>();
|
||||||
|
|
||||||
/*게시글 삭제*/
|
|
||||||
DataMap bbscttDelResult = service.updateBOBbscttDel(bbsctt);
|
DataMap bbscttDelResult = service.updateBOBbscttDel(bbsctt);
|
||||||
content.put("result", bbscttDelResult);
|
content.put("result", bbscttDelResult);
|
||||||
/*삭제 성공 시*/
|
|
||||||
if ("success".equals(bbscttDelResult.get("result"))) {
|
if ("success".equals(bbscttDelResult.get("result"))) {
|
||||||
//리뷰 관련 처리
|
|
||||||
if ("06".equals(bbsctt.getBbsTyCd()) || "07".equals(bbsctt.getBbsTyCd())) {
|
if ("06".equals(bbsctt.getBbsTyCd()) || "07".equals(bbsctt.getBbsTyCd())) {
|
||||||
if (!CollectionUtils.isEmpty(bbsctt.getDelInfoArr())) {
|
if (!CollectionUtils.isEmpty(bbsctt.getDelInfoArr())) {
|
||||||
/*해당 정보로 마일리지 금액 조회하기*/
|
|
||||||
List<Object> accmlmnyAmtInfoArr = new ArrayList<>();
|
List<Object> accmlmnyAmtInfoArr = new ArrayList<>();
|
||||||
BOMlgVO mlgVo = new BOMlgVO();
|
BOMlgVO mlgVo = new BOMlgVO();
|
||||||
for (BODelInfoVO delInfo : bbsctt.getDelInfoArr()) {
|
for (BODelInfoVO delInfo : bbsctt.getDelInfoArr()) {
|
||||||
if ("01".equals(delInfo.getRegusrDvCd())) {
|
if ("01".equals(delInfo.getRegusrDvCd())) {
|
||||||
if ("03".equals(user.getSysDvCd())) { //관리자 삭제시 마일리지 회수
|
if ("03".equals(user.getSysDvCd())) {
|
||||||
/*공통 파라미터*/
|
|
||||||
mlgVo.setMbrInnb(String.valueOf(delInfo.getRegusr()));
|
mlgVo.setMbrInnb(String.valueOf(delInfo.getRegusr()));
|
||||||
mlgVo.setMbrDvCd(delInfo.getMbrDvCd());
|
mlgVo.setMbrDvCd(delInfo.getMbrDvCd());
|
||||||
mlgVo.setSopmalCd(bbsctt.getSopmalCd());
|
mlgVo.setSopmalCd(bbsctt.getSopmalCd());
|
||||||
@@ -728,8 +587,7 @@ public class MyActController {
|
|||||||
mlgVo.setRegusr(user.getUserInnb());
|
mlgVo.setRegusr(user.getUserInnb());
|
||||||
mlgVo.setUpdusr(user.getUserInnb());
|
mlgVo.setUpdusr(user.getUserInnb());
|
||||||
|
|
||||||
/*마일리지 수동 회수 여부*/
|
if ("N".equals(bbsctt.getMlgPassivRtrvlAt())) {
|
||||||
if ("N".equals(bbsctt.getMlgPassivRtrvlAt())) { // 선택 삭제시
|
|
||||||
DataMap accmlmnyAmtInfo = new DataMap();
|
DataMap accmlmnyAmtInfo = new DataMap();
|
||||||
accmlmnyAmtInfo = mlgService.selectBOMlgByBbscttInnb(mlgVo);
|
accmlmnyAmtInfo = mlgService.selectBOMlgByBbscttInnb(mlgVo);
|
||||||
if (accmlmnyAmtInfo != null) {
|
if (accmlmnyAmtInfo != null) {
|
||||||
@@ -740,7 +598,7 @@ public class MyActController {
|
|||||||
mlgVo.setAccmlmnyAmt((BigDecimal) accmlmnyAmtInfo.get("accmlmnyAmt"));
|
mlgVo.setAccmlmnyAmt((BigDecimal) accmlmnyAmtInfo.get("accmlmnyAmt"));
|
||||||
mlgService.insertBOMngrMlgDn(mlgVo);
|
mlgService.insertBOMngrMlgDn(mlgVo);
|
||||||
}
|
}
|
||||||
} else { //단독 삭제시*/
|
} else {
|
||||||
if (delInfo.getRtrvlMlgAmt() != null) {
|
if (delInfo.getRtrvlMlgAmt() != null) {
|
||||||
if (delInfo.getRtrvlMlgAmt().compareTo(BigDecimal.valueOf(0)) > 0) {
|
if (delInfo.getRtrvlMlgAmt().compareTo(BigDecimal.valueOf(0)) > 0) {
|
||||||
mlgVo.setAccmlmnyAmt(delInfo.getRtrvlMlgAmt());
|
mlgVo.setAccmlmnyAmt(delInfo.getRtrvlMlgAmt());
|
||||||
@@ -749,7 +607,6 @@ public class MyActController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//회원 관련
|
|
||||||
if (delInfo.getRegusr() != null) {
|
if (delInfo.getRegusr() != null) {
|
||||||
BOGnrlbbscttVO mbrSite = new BOGnrlbbscttVO();
|
BOGnrlbbscttVO mbrSite = new BOGnrlbbscttVO();
|
||||||
mbrSite.setSopmalCd(bbsctt.getSopmalCd());
|
mbrSite.setSopmalCd(bbsctt.getSopmalCd());
|
||||||
@@ -764,26 +621,20 @@ public class MyActController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//상품관련 집계와 회원관련 집계는 관리자혹은 사용자가 모두 삭제 시 처리가 되어야해
|
|
||||||
//상품 관련
|
|
||||||
if (delInfo.getGoodsInnb() != null) {
|
if (delInfo.getGoodsInnb() != null) {
|
||||||
BOGoodsVO goodsVO = new BOGoodsVO();
|
BOGoodsVO goodsVO = new BOGoodsVO();
|
||||||
goodsVO.setGoodsInnb(String.valueOf(delInfo.getGoodsInnb()));
|
goodsVO.setGoodsInnb(String.valueOf(delInfo.getGoodsInnb()));
|
||||||
goodsVO.setSopmalCd(bbsctt.getSopmalCd());
|
goodsVO.setSopmalCd(bbsctt.getSopmalCd());
|
||||||
/*상품정보 > 상품후기건수 차감*/
|
|
||||||
goodsService.updateRvwRelateSm(goodsVO);
|
goodsService.updateRvwRelateSm(goodsVO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ("05".equals(bbsctt.getBbsTyCd())) {//상품qna는 상품문의 집계만
|
} else if ("05".equals(bbsctt.getBbsTyCd())) {
|
||||||
//상품 관련
|
|
||||||
if (!CollectionUtils.isEmpty(bbsctt.getGoodsInnbArr())) {
|
if (!CollectionUtils.isEmpty(bbsctt.getGoodsInnbArr())) {
|
||||||
for (String goodsInnb : bbsctt.getGoodsInnbArr()) {
|
for (String goodsInnb : bbsctt.getGoodsInnbArr()) {
|
||||||
BOGoodsVO goodsVO = new BOGoodsVO();
|
BOGoodsVO goodsVO = new BOGoodsVO();
|
||||||
goodsVO.setGoodsInnb(goodsInnb);
|
goodsVO.setGoodsInnb(goodsInnb);
|
||||||
goodsVO.setSopmalCd(bbsctt.getSopmalCd());
|
goodsVO.setSopmalCd(bbsctt.getSopmalCd());
|
||||||
|
|
||||||
/*상품정보 > 상품후기건수 차감*/
|
|
||||||
goodsService.updateGoodsInqryCnt(goodsVO);
|
goodsService.updateGoodsInqryCnt(goodsVO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -795,10 +646,6 @@ public class MyActController {
|
|||||||
.resBody(new WnbtResponseBody(content))
|
.resBody(new WnbtResponseBody(content))
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
// return responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttDel",bbsctt),
|
|
||||||
// ReplyFromResrc::getReply
|
|
||||||
// );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -814,11 +661,6 @@ public class MyActController {
|
|||||||
|
|
||||||
Map<String, Object> content = selectBOBbscttRegistPopupForm(vo);
|
Map<String, Object> content = selectBOBbscttRegistPopupForm(vo);
|
||||||
model.addAttribute("resultMap", content);
|
model.addAttribute("resultMap", content);
|
||||||
// responseHandler.handleResponse(
|
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm", vo),
|
|
||||||
// model,
|
|
||||||
// "resultMap"
|
|
||||||
// );
|
|
||||||
return Util.getDeviceType(request)+"/mpage/act/RvwEasyRegistC";
|
return Util.getDeviceType(request)+"/mpage/act/RvwEasyRegistC";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -830,7 +672,7 @@ public class MyActController {
|
|||||||
public DataMap selectBOBbscttListInqire(BOGnrlbbscttVO bbsctt) {
|
public DataMap selectBOBbscttListInqire(BOGnrlbbscttVO bbsctt) {
|
||||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||||
|
|
||||||
if ("01".equals(user.getSysDvCd())) {//사용자 조회 일 경우
|
if ("01".equals(user.getSysDvCd())) {
|
||||||
bbsctt.setSopmalCd(user.getSopmalCd());
|
bbsctt.setSopmalCd(user.getSopmalCd());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -847,7 +689,6 @@ public class MyActController {
|
|||||||
bbsctt.setRegusrDvCd("99");
|
bbsctt.setRegusrDvCd("99");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// pagination
|
|
||||||
PaginationInfo paginationInfo = new PaginationInfo();
|
PaginationInfo paginationInfo = new PaginationInfo();
|
||||||
paginationInfo.setCurrentPageNo(bbsctt.getPageIndex());
|
paginationInfo.setCurrentPageNo(bbsctt.getPageIndex());
|
||||||
paginationInfo.setRecordCountPerPage(bbsctt.getPageUnit());
|
paginationInfo.setRecordCountPerPage(bbsctt.getPageUnit());
|
||||||
@@ -858,13 +699,10 @@ public class MyActController {
|
|||||||
bbsctt.setLastIndex(paginationInfo.getLastRecordIndex());
|
bbsctt.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||||
bbsctt.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
bbsctt.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||||
|
|
||||||
// 게시글 목록조회
|
|
||||||
Map<String, Object> resultList = new HashMap<String, Object>();
|
Map<String, Object> resultList = new HashMap<String, Object>();
|
||||||
resultList = service.selectBOBbscttListInqire(bbsctt);
|
resultList = service.selectBOBbscttListInqire(bbsctt);
|
||||||
|
|
||||||
// 게시판 설정 정보 조회
|
|
||||||
BOBbsVO bbsVO = new BOBbsVO();
|
BOBbsVO bbsVO = new BOBbsVO();
|
||||||
// bbsVO에 쇼핑몰코드, 해당 게시판 set
|
|
||||||
bbsVO.setSopmalCd(bbsctt.getSopmalCd());
|
bbsVO.setSopmalCd(bbsctt.getSopmalCd());
|
||||||
bbsVO.setBbsId(bbsctt.getBbsId());
|
bbsVO.setBbsId(bbsctt.getBbsId());
|
||||||
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
||||||
@@ -884,13 +722,11 @@ public class MyActController {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public Map<String, Object> selectBOMpageInfoInqire(BOMbrVO vo) {
|
public Map<String, Object> selectBOMpageInfoInqire(BOMbrVO vo) {
|
||||||
// 사용자 정보 추출 및 적용
|
|
||||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||||
vo.setSopmalCd(user.getSopmalCd());
|
vo.setSopmalCd(user.getSopmalCd());
|
||||||
vo.setMbrInnb(String.valueOf(user.getUserInnb()));
|
vo.setMbrInnb(String.valueOf(user.getUserInnb()));
|
||||||
vo.setMbrDvCd(user.getMbrDvCd());
|
vo.setMbrDvCd(user.getMbrDvCd());
|
||||||
|
|
||||||
// 상품 옵션 조회
|
|
||||||
Map<String, Object> message = new HashMap<>();
|
Map<String, Object> message = new HashMap<>();
|
||||||
message = boMbrService.selectBOMpageInfoInqire(vo);
|
message = boMbrService.selectBOMpageInfoInqire(vo);
|
||||||
|
|
||||||
@@ -915,7 +751,6 @@ public class MyActController {
|
|||||||
bbsctt.setSopmalCd(user.getSopmalCd());
|
bbsctt.setSopmalCd(user.getSopmalCd());
|
||||||
bbsctt.setRegusr(user.getUserInnb());
|
bbsctt.setRegusr(user.getUserInnb());
|
||||||
bbsctt.setMbrDvCd(user.getMbrDvCd());
|
bbsctt.setMbrDvCd(user.getMbrDvCd());
|
||||||
// pagination
|
|
||||||
PaginationInfo paginationInfo = new PaginationInfo();
|
PaginationInfo paginationInfo = new PaginationInfo();
|
||||||
paginationInfo.setCurrentPageNo(bbsctt.getPageIndex());
|
paginationInfo.setCurrentPageNo(bbsctt.getPageIndex());
|
||||||
paginationInfo.setRecordCountPerPage(bbsctt.getPageUnit());
|
paginationInfo.setRecordCountPerPage(bbsctt.getPageUnit());
|
||||||
@@ -948,7 +783,6 @@ public class MyActController {
|
|||||||
if (!"crm".equals(bbsctt.getReqUrl())) {
|
if (!"crm".equals(bbsctt.getReqUrl())) {
|
||||||
bbsctt.setRegusr(user.getUserInnb());
|
bbsctt.setRegusr(user.getUserInnb());
|
||||||
}
|
}
|
||||||
// pagination
|
|
||||||
PaginationInfo paginationInfo = new PaginationInfo();
|
PaginationInfo paginationInfo = new PaginationInfo();
|
||||||
paginationInfo.setCurrentPageNo(bbsctt.getPageIndex());
|
paginationInfo.setCurrentPageNo(bbsctt.getPageIndex());
|
||||||
paginationInfo.setRecordCountPerPage(bbsctt.getPageUnit());
|
paginationInfo.setRecordCountPerPage(bbsctt.getPageUnit());
|
||||||
@@ -958,7 +792,7 @@ public class MyActController {
|
|||||||
bbsctt.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
bbsctt.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
||||||
bbsctt.setLastIndex(paginationInfo.getLastRecordIndex());
|
bbsctt.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||||
bbsctt.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
bbsctt.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||||
// 게시글 목록조회
|
|
||||||
Map<String, Object> resultList = new HashMap<String, Object>();
|
Map<String, Object> resultList = new HashMap<String, Object>();
|
||||||
resultList = service.selectBOMyRvwListInqire(bbsctt);
|
resultList = service.selectBOMyRvwListInqire(bbsctt);
|
||||||
|
|
||||||
@@ -974,7 +808,6 @@ public class MyActController {
|
|||||||
*/
|
*/
|
||||||
public Map<String, Object> selectBOBbscttRegistPopupForm(BOGnrlbbscttVO bbsctt) {
|
public Map<String, Object> selectBOBbscttRegistPopupForm(BOGnrlbbscttVO bbsctt) {
|
||||||
Map<String, Object> content = new HashMap<String, Object>();
|
Map<String, Object> content = new HashMap<String, Object>();
|
||||||
// 작성자 정보 추출
|
|
||||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||||
|
|
||||||
if ("01".equals(user.getSysDvCd())) {
|
if ("01".equals(user.getSysDvCd())) {
|
||||||
@@ -987,9 +820,9 @@ public class MyActController {
|
|||||||
if (user.getUserInnb() > 0) {
|
if (user.getUserInnb() > 0) {
|
||||||
bbsctt.setRegusr(user.getUserInnb());
|
bbsctt.setRegusr(user.getUserInnb());
|
||||||
if (!"01".equals(user.getSysDvCd())) {
|
if (!"01".equals(user.getSysDvCd())) {
|
||||||
bbsctt.setRegusrDvCd("02"); //관리자
|
bbsctt.setRegusrDvCd("02");
|
||||||
} else {
|
} else {
|
||||||
bbsctt.setRegusrDvCd("01"); //회원
|
bbsctt.setRegusrDvCd("01");
|
||||||
bbsctt.setMbrDvCd(user.getMbrDvCd());
|
bbsctt.setMbrDvCd(user.getMbrDvCd());
|
||||||
DataMap mbr = new DataMap();
|
DataMap mbr = new DataMap();
|
||||||
mbr.put("mbrInnb", String.valueOf(bbsctt.getRegusr()));
|
mbr.put("mbrInnb", String.valueOf(bbsctt.getRegusr()));
|
||||||
@@ -1005,31 +838,25 @@ public class MyActController {
|
|||||||
regusrInfo.setRegusrDvCd(bbsctt.getRegusrDvCd());
|
regusrInfo.setRegusrDvCd(bbsctt.getRegusrDvCd());
|
||||||
} else {
|
} else {
|
||||||
regusrInfo.setRegusr(0);
|
regusrInfo.setRegusr(0);
|
||||||
regusrInfo.setRegusrDvCd("99");//비회원
|
regusrInfo.setRegusrDvCd("99");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 게시판 설정 정보
|
|
||||||
BOBbsVO bbsVO = new BOBbsVO();
|
BOBbsVO bbsVO = new BOBbsVO();
|
||||||
// bbsVO에 쇼핑몰코드, 해당 게시판 set
|
|
||||||
bbsVO.setSopmalCd(bbsctt.getSopmalCd());
|
bbsVO.setSopmalCd(bbsctt.getSopmalCd());
|
||||||
bbsVO.setBbsId(bbsctt.getBbsId());
|
bbsVO.setBbsId(bbsctt.getBbsId());
|
||||||
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
bbsVO.setBbsTyCd(bbsctt.getBbsTyCd());
|
||||||
DataMap bbsInfo = new DataMap();
|
DataMap bbsInfo = new DataMap();
|
||||||
bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO);
|
bbsInfo = bbsService.selectBOBbsSetupInfo(bbsVO);
|
||||||
|
|
||||||
// 분류
|
|
||||||
List<DataMap> itmList = new ArrayList<>();
|
List<DataMap> itmList = new ArrayList<>();
|
||||||
itmList = service.selectBOBbscttItmInqire(bbsctt);
|
itmList = service.selectBOBbscttItmInqire(bbsctt);
|
||||||
|
|
||||||
//리뷰항목 리스트, 리뷰항목 항목 리스트
|
|
||||||
Map<String, Object> rvwQesitmList = new HashMap<String, Object>();
|
Map<String, Object> rvwQesitmList = new HashMap<String, Object>();
|
||||||
rvwQesitmList = service.selectBOStarItm(bbsctt);
|
rvwQesitmList = service.selectBOStarItm(bbsctt);
|
||||||
|
|
||||||
//추가항목 리스트, 추가항목 항목 리스트
|
|
||||||
Map<String, Object> qesitmList = new HashMap<String, Object>();
|
Map<String, Object> qesitmList = new HashMap<String, Object>();
|
||||||
qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt);
|
qesitmList = service.selectBOBbscttRegistPopupForm(bbsctt);
|
||||||
|
|
||||||
//사용자 > 리뷰 상품 조회
|
|
||||||
DataMap rvwGoodsInfo = new DataMap();
|
DataMap rvwGoodsInfo = new DataMap();
|
||||||
DataMap mlgInfo = new DataMap();
|
DataMap mlgInfo = new DataMap();
|
||||||
if ("sopmal".equals(bbsctt.getServerDv())) {
|
if ("sopmal".equals(bbsctt.getServerDv())) {
|
||||||
@@ -1041,7 +868,6 @@ public class MyActController {
|
|||||||
|
|
||||||
List<DataMap> rvwItmList = new ArrayList<>();
|
List<DataMap> rvwItmList = new ArrayList<>();
|
||||||
List<DataMap> starItmList = new ArrayList<>();
|
List<DataMap> starItmList = new ArrayList<>();
|
||||||
//사용자 별표 평점 역으로 리스트 set(퍼블리싱으로 인한 역처리)
|
|
||||||
if (rvwQesitmList.get("starItmCnList") != null) {
|
if (rvwQesitmList.get("starItmCnList") != null) {
|
||||||
rvwItmList = (List<DataMap>) rvwQesitmList.get("starItmCnList");
|
rvwItmList = (List<DataMap>) rvwQesitmList.get("starItmCnList");
|
||||||
for (int i = rvwItmList.size() - 1; i >= 0; i--) {
|
for (int i = rvwItmList.size() - 1; i >= 0; i--) {
|
||||||
@@ -1052,7 +878,6 @@ public class MyActController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//사용자 > 상품q&a 상품 조회
|
|
||||||
DataMap qnaGoodsInfo = new DataMap();
|
DataMap qnaGoodsInfo = new DataMap();
|
||||||
if ("sopmal".equals(bbsctt.getServerDv())) {
|
if ("sopmal".equals(bbsctt.getServerDv())) {
|
||||||
if ("modal".equals(bbsctt.getReqUrl())) {
|
if ("modal".equals(bbsctt.getReqUrl())) {
|
||||||
@@ -1068,4 +893,4 @@ public class MyActController {
|
|||||||
content.put("rvwQesitmList", rvwQesitmList);
|
content.put("rvwQesitmList", rvwQesitmList);
|
||||||
return content;
|
return content;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -36,6 +36,7 @@ import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyOrdrDlvyVO;
|
|||||||
import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyOrdrShippingVO;
|
import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyOrdrShippingVO;
|
||||||
import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyRefundVO;
|
import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyRefundVO;
|
||||||
import com.wb.domainserver.exception.WnbtRestException;
|
import com.wb.domainserver.exception.WnbtRestException;
|
||||||
|
import com.wb.domainserver.response.ApiResponse;
|
||||||
import com.wb.domainserver.response.WnbtResponse;
|
import com.wb.domainserver.response.WnbtResponse;
|
||||||
import com.wb.domainserver.response.WnbtResponseBody;
|
import com.wb.domainserver.response.WnbtResponseBody;
|
||||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||||
@@ -54,6 +55,7 @@ import jakarta.servlet.http.HttpServletRequest;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.logging.log4j.util.Base64Util;
|
import org.apache.logging.log4j.util.Base64Util;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
@@ -65,6 +67,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -733,17 +736,13 @@ public class MyOrdrController {
|
|||||||
boDlivyVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰 코드
|
boDlivyVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰 코드
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, Object> content = new HashMap<>();
|
BOOrdrDlvyVO ordrDlvyVO = new BOOrdrDlvyVO();
|
||||||
content = dlivyService.selectBOOrdrDlvyDtlsInqire(boDlivyVO);
|
ordrDlvyVO.setSopmalCd(boDlivyVO.getSopmalCd());
|
||||||
|
ordrDlvyVO.setOrdrInnb(boDlivyVO.getOrdrInnb());
|
||||||
|
|
||||||
model.addAttribute("resultMap", content);
|
model.addAttribute("ordrInfo", boOrdrService.selectMbrOrdrDtlInqire(ordrDlvyVO));
|
||||||
// responseHandler.handleResponse(
|
model.addAttribute("resultMap", dlivyService.updateBOAciDelivery(boDlivyVO));
|
||||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/dlivy/selectBOOrdrDlvyDtlsInqire", dlivyVO),
|
|
||||||
// model,
|
|
||||||
// "resultMap"
|
|
||||||
// );
|
|
||||||
|
|
||||||
// return "sopmal/mpage/ordr/DlvyInqireR";
|
|
||||||
return Util.getDeviceType(request) + "/mpage/ordr/DlvyInqireR";
|
return Util.getDeviceType(request) + "/mpage/ordr/DlvyInqireR";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -371,7 +371,9 @@ public class MngrLoggingInterceptor implements HandlerInterceptor {
|
|||||||
String cookieValue = agentId + ":" + md5(agentId + ":" + md5(System.currentTimeMillis() + ":" + random.nextInt())).substring(5, 10);
|
String cookieValue = agentId + ":" + md5(agentId + ":" + md5(System.currentTimeMillis() + ":" + random.nextInt())).substring(5, 10);
|
||||||
Cookie agentIdCookie = new Cookie("agent_id", cookieValue);
|
Cookie agentIdCookie = new Cookie("agent_id", cookieValue);
|
||||||
agentIdCookie.setMaxAge(86400 * 365 * 10); // 10년
|
agentIdCookie.setMaxAge(86400 * 365 * 10); // 10년
|
||||||
agentIdCookie.setDomain(domain);
|
if (!request.getServerName().startsWith("loc.")) {
|
||||||
|
agentIdCookie.setDomain(domain);
|
||||||
|
}
|
||||||
// agentIdCookie.setHttpOnly(true);
|
// agentIdCookie.setHttpOnly(true);
|
||||||
agentIdCookie.setPath("/mngr");
|
agentIdCookie.setPath("/mngr");
|
||||||
// agentIdCookie.setSecure(true);
|
// agentIdCookie.setSecure(true);
|
||||||
|
|||||||
@@ -51,14 +51,17 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
|
|||||||
String accessToken = extractToken(request);
|
String accessToken = extractToken(request);
|
||||||
|
|
||||||
|
|
||||||
String sysDvCd = RealmContextHolder.getSysDvCdRealm();
|
|
||||||
String expireChk = request.getParameter("expire");
|
String expireChk = request.getParameter("expire");
|
||||||
String tokenExpireCookie = CookieUtils.getCookieValue("token_expire", request);
|
String tokenExpireCookie = CookieUtils.getCookieValue("token_expire", request);
|
||||||
|
|
||||||
//사용자이면서 ACT가 없는데 tokenExpire는 있을 경우
|
//사용자이면서 ACT가 없는데 tokenExpire는 있을 경우
|
||||||
//로그인된 사용자지만 엑세스 토큰이 만료되어 다시 재발급 받아야 하는 대상
|
//로그인된 사용자지만 엑세스 토큰이 만료되어 다시 재발급 받아야 하는 대상
|
||||||
//expire값은 루프 요청 방지
|
//인증 진입점은 만료 쿠키가 남아 있어도 갱신 대상으로 보내지 않는다.
|
||||||
if("01".equals(sysDvCd) && !StringUtils.hasText(accessToken) && StringUtils.hasText(tokenExpireCookie) && !"p".equals(expireChk)){
|
//쿠키 삭제가 지연되거나 이전 경로의 쿠키가 남아도 로그인 화면까지는 항상 도달해야 한다.
|
||||||
|
if(!isAuthenticationEndpoint(requestUri, realm)
|
||||||
|
&& !StringUtils.hasText(accessToken)
|
||||||
|
&& StringUtils.hasText(tokenExpireCookie)
|
||||||
|
&& !"p".equals(expireChk)){
|
||||||
response.sendRedirect("/"+realm+"/tokens/refresh?redirect_uri=%s&expire=%s".formatted(URLEncoder.encode(UrlExtractor.getOriginalURL(request), StandardCharset.UTF_8), "p"));
|
response.sendRedirect("/"+realm+"/tokens/refresh?redirect_uri=%s&expire=%s".formatted(URLEncoder.encode(UrlExtractor.getOriginalURL(request), StandardCharset.UTF_8), "p"));
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -66,7 +69,7 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
|
|||||||
|
|
||||||
|
|
||||||
// accessToken이 있고 refresh Token 요청이 아닌경우
|
// accessToken이 있고 refresh Token 요청이 아닌경우
|
||||||
if (StringUtils.hasText(accessToken) && !requestUri.contains("/tokens/refresh")) {
|
if (StringUtils.hasText(accessToken) && !isAuthenticationEndpoint(requestUri, realm)) {
|
||||||
UserDetails userDetails = customUserDetailService.loadUserByUsername(accessToken);
|
UserDetails userDetails = customUserDetailService.loadUserByUsername(accessToken);
|
||||||
if (userDetails != null) {
|
if (userDetails != null) {
|
||||||
log.debug("user details: {}", userDetails);
|
log.debug("user details: {}", userDetails);
|
||||||
@@ -92,6 +95,15 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isAuthenticationEndpoint(String requestUri, String realm) {
|
||||||
|
String realmPath = "/" + realm;
|
||||||
|
|
||||||
|
return requestUri.equals(realmPath)
|
||||||
|
|| requestUri.startsWith(realmPath + "/login")
|
||||||
|
|| requestUri.equals(realmPath + "/logout")
|
||||||
|
|| requestUri.startsWith(realmPath + "/tokens/refresh");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private String extractToken(HttpServletRequest request) {
|
private String extractToken(HttpServletRequest request) {
|
||||||
|
|||||||
@@ -44,9 +44,12 @@ public abstract class CookieUtils {
|
|||||||
Cookie cookie = new Cookie(name, null);
|
Cookie cookie = new Cookie(name, null);
|
||||||
cookie.setMaxAge(0);
|
cookie.setMaxAge(0);
|
||||||
cookie.setPath(path);
|
cookie.setPath(path);
|
||||||
cookie.setDomain(originHost);
|
setCookieDomain(cookie, request, originHost);
|
||||||
cookie.setHttpOnly(true);
|
cookie.setHttpOnly(true);
|
||||||
response.addCookie(cookie);
|
response.addCookie(cookie);
|
||||||
|
|
||||||
|
// loc 환경에서는 이전에 상위 도메인으로 저장된 쿠키도 함께 삭제한다.
|
||||||
|
deleteLegacyDomainCookie(name, path, request, response, originHost);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void createCookie(String name, String value, String path, int maxAge, boolean httpOnly, HttpServletRequest request, HttpServletResponse response) {
|
public static void createCookie(String name, String value, String path, int maxAge, boolean httpOnly, HttpServletRequest request, HttpServletResponse response) {
|
||||||
@@ -58,10 +61,12 @@ public abstract class CookieUtils {
|
|||||||
|
|
||||||
String originHost = UrlExtractor.getOriginalHost(host);
|
String originHost = UrlExtractor.getOriginalHost(host);
|
||||||
|
|
||||||
|
deleteLegacyDomainCookie(name, path, request, response, originHost);
|
||||||
|
|
||||||
Cookie cookie = new Cookie(name, value);
|
Cookie cookie = new Cookie(name, value);
|
||||||
cookie.setMaxAge(maxAge);
|
cookie.setMaxAge(maxAge);
|
||||||
cookie.setPath(path);
|
cookie.setPath(path);
|
||||||
cookie.setDomain(originHost);
|
setCookieDomain(cookie, request, originHost);
|
||||||
cookie.setHttpOnly(httpOnly);
|
cookie.setHttpOnly(httpOnly);
|
||||||
response.addCookie(cookie);
|
response.addCookie(cookie);
|
||||||
}
|
}
|
||||||
@@ -77,7 +82,7 @@ public abstract class CookieUtils {
|
|||||||
|
|
||||||
Cookie cookie = new Cookie(name, value);
|
Cookie cookie = new Cookie(name, value);
|
||||||
cookie.setPath(path);
|
cookie.setPath(path);
|
||||||
cookie.setDomain(originHost);
|
setCookieDomain(cookie, request, originHost);
|
||||||
cookie.setHttpOnly(httpOnly);
|
cookie.setHttpOnly(httpOnly);
|
||||||
response.addCookie(cookie);
|
response.addCookie(cookie);
|
||||||
}
|
}
|
||||||
@@ -96,4 +101,30 @@ public abstract class CookieUtils {
|
|||||||
return Map.of("ACTPath", ACTPath, "RFTPath", RFTPath);
|
return Map.of("ACTPath", ACTPath, "RFTPath", RFTPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void setCookieDomain(Cookie cookie, HttpServletRequest request, String domain) {
|
||||||
|
if (!request.getServerName().startsWith("loc.")) {
|
||||||
|
cookie.setDomain(domain);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void deleteLegacyDomainCookie(String name, String path, HttpServletRequest request, HttpServletResponse response, String domain) {
|
||||||
|
if (request.getServerName().startsWith("loc.")) {
|
||||||
|
addDomainDeleteCookie(name, path, domain, response);
|
||||||
|
|
||||||
|
int firstDot = domain.indexOf('.');
|
||||||
|
if (firstDot > 0) {
|
||||||
|
addDomainDeleteCookie(name, path, domain.substring(firstDot + 1), response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void addDomainDeleteCookie(String name, String path, String domain, HttpServletResponse response) {
|
||||||
|
Cookie domainCookie = new Cookie(name, null);
|
||||||
|
domainCookie.setMaxAge(0);
|
||||||
|
domainCookie.setPath(path);
|
||||||
|
domainCookie.setDomain(domain);
|
||||||
|
domainCookie.setHttpOnly(true);
|
||||||
|
response.addCookie(domainCookie);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -310,8 +310,13 @@ public class FileStorageService {
|
|||||||
if(image != null) {
|
if(image != null) {
|
||||||
thumbnail = image.getScaledInstance(destWidth, destHeight, Image.SCALE_SMOOTH);
|
thumbnail = image.getScaledInstance(destWidth, destHeight, Image.SCALE_SMOOTH);
|
||||||
}
|
}
|
||||||
BufferedImage convertImage = new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);
|
BufferedImage convertImage = new BufferedImage(destWidth, destHeight, getImageType(image, file.getOriginalFilename()));
|
||||||
convertImage.getGraphics().drawImage(thumbnail, posX, posY, null);
|
Graphics graphics = convertImage.getGraphics();
|
||||||
|
try {
|
||||||
|
graphics.drawImage(thumbnail, posX, posY, null);
|
||||||
|
} finally {
|
||||||
|
graphics.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
String ext = FilenameUtils.getExtension(file.getOriginalFilename());
|
String ext = FilenameUtils.getExtension(file.getOriginalFilename());
|
||||||
ImageIO.write(convertImage, ext, os);
|
ImageIO.write(convertImage, ext, os);
|
||||||
@@ -376,8 +381,13 @@ public class FileStorageService {
|
|||||||
if(image != null) {
|
if(image != null) {
|
||||||
thumbnail = image.getScaledInstance(destWidth, destHeight, Image.SCALE_SMOOTH);
|
thumbnail = image.getScaledInstance(destWidth, destHeight, Image.SCALE_SMOOTH);
|
||||||
}
|
}
|
||||||
BufferedImage convertImage = new BufferedImage(thumbnailWidth, thumbnailHeight, BufferedImage.TYPE_INT_RGB);
|
BufferedImage convertImage = new BufferedImage(thumbnailWidth, thumbnailHeight, getImageType(image, file.getOriginalFilename()));
|
||||||
convertImage.getGraphics().drawImage(thumbnail, posX, posY, null);
|
Graphics graphics = convertImage.getGraphics();
|
||||||
|
try {
|
||||||
|
graphics.drawImage(thumbnail, posX, posY, null);
|
||||||
|
} finally {
|
||||||
|
graphics.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
ImageIO.write(convertImage, ext, os);
|
ImageIO.write(convertImage, ext, os);
|
||||||
}catch (WnbtRestException wre){
|
}catch (WnbtRestException wre){
|
||||||
@@ -407,6 +417,14 @@ public class FileStorageService {
|
|||||||
return thumbnail_file;
|
return thumbnail_file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int getImageType(BufferedImage image, String originalFileName) {
|
||||||
|
String ext = FilenameUtils.getExtension(originalFileName).toLowerCase(Locale.ROOT);
|
||||||
|
boolean supportsAlpha = "png".equals(ext) || "gif".equals(ext);
|
||||||
|
return image != null && image.getColorModel().hasAlpha() && supportsAlpha
|
||||||
|
? BufferedImage.TYPE_INT_ARGB
|
||||||
|
: BufferedImage.TYPE_INT_RGB;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* combineFilePath 에 지정된 경로에 저장이 됨
|
* combineFilePath 에 지정된 경로에 저장이 됨
|
||||||
@@ -715,4 +733,4 @@ public class FileStorageService {
|
|||||||
return rtnStr;
|
return rtnStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -365,6 +365,9 @@ mngrfo:
|
|||||||
secret:
|
secret:
|
||||||
key: 1df5be2f7e90ae36
|
key: 1df5be2f7e90ae36
|
||||||
|
|
||||||
|
aciexpress:
|
||||||
|
apikey: DC94F29AFD5399F54AAE7FAA46045B65
|
||||||
|
|
||||||
|
|
||||||
host:
|
host:
|
||||||
img: https://19d28cf7178139ad.kinxzone.com
|
img: https://19d28cf7178139ad.kinxzone.com
|
||||||
|
|||||||
@@ -365,6 +365,9 @@ mngrfo:
|
|||||||
secret:
|
secret:
|
||||||
key: 1df5be2f7e90ae36
|
key: 1df5be2f7e90ae36
|
||||||
|
|
||||||
|
aciexpress:
|
||||||
|
apikey: DC94F29AFD5399F54AAE7FAA46045B65
|
||||||
|
|
||||||
|
|
||||||
host:
|
host:
|
||||||
img: https://19d28cf7178139ad.kinxzone.com
|
img: https://19d28cf7178139ad.kinxzone.com
|
||||||
|
|||||||
@@ -365,6 +365,9 @@ mngrfo:
|
|||||||
secret:
|
secret:
|
||||||
key: 1df5be2f7e90ae36
|
key: 1df5be2f7e90ae36
|
||||||
|
|
||||||
|
aciexpress:
|
||||||
|
apikey: DC94F29AFD5399F54AAE7FAA46045B65
|
||||||
|
|
||||||
|
|
||||||
host:
|
host:
|
||||||
img: https://19b0bde6dcdc15ad.kinxzone.com/
|
img: https://19b0bde6dcdc15ad.kinxzone.com/
|
||||||
@@ -437,11 +440,11 @@ ordr:
|
|||||||
# 서치어드바이저 소유권 코드
|
# 서치어드바이저 소유권 코드
|
||||||
meta-content:
|
meta-content:
|
||||||
google:
|
google:
|
||||||
LR: ""
|
SK: "6RUF9UIWIu1nl1WlceNKH25YZG13jcEZHURfLrbSxQU"
|
||||||
naver:
|
naver:
|
||||||
LR: "5fcdb284f18ca08cf86af214a01998990c008e84"
|
SK: "213a2c785853cdd006af58d286ffec23342a0e8a"
|
||||||
facebook:
|
facebook:
|
||||||
LR: ""
|
SK: ""
|
||||||
|
|
||||||
# 결제 api 사용 암호 key
|
# 결제 api 사용 암호 key
|
||||||
api:
|
api:
|
||||||
|
|||||||
@@ -1569,5 +1569,124 @@
|
|||||||
AND GD.USE_AT = 'Y'
|
AND GD.USE_AT = 'Y'
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<!-- 사이트맵 XML -->
|
||||||
|
<select id="selectSitemapXml"
|
||||||
|
parameterType="String"
|
||||||
|
resultType="dataMap">
|
||||||
|
WITH RECURSIVE CATEGORY_TREE AS (
|
||||||
|
SELECT
|
||||||
|
GC.CTGRY_ID
|
||||||
|
, GC.UPPER_CTGRY_ID
|
||||||
|
, GC.SOPMAL_CD
|
||||||
|
, GC.CTGRY_NM
|
||||||
|
, GC.CTGRY_DEPTH
|
||||||
|
, GC.SORT_ORDR
|
||||||
|
, GC.CTGRY_DV_CD
|
||||||
|
, GC.EXPSR_CD
|
||||||
|
, GC.URL_DV_CD
|
||||||
|
, CASE
|
||||||
|
WHEN GC.URL_DV_CD = '01' THEN ''
|
||||||
|
WHEN GC.URL_DV_CD = '02' THEN GC.URL
|
||||||
|
ELSE NULL
|
||||||
|
END URL
|
||||||
|
, GC.USE_AT
|
||||||
|
, GC.EXPSR_BGN_DT
|
||||||
|
, GC.EXPSR_END_DT
|
||||||
|
FROM GC_CATEGORY GC
|
||||||
|
WHERE GC.SOPMAL_CD = #{sopmalCd}
|
||||||
|
AND GC.UPPER_CTGRY_ID IS NULL
|
||||||
|
AND GC.USE_AT = 'Y'
|
||||||
|
AND (
|
||||||
|
GC.EXPSR_CD = '01'
|
||||||
|
OR (
|
||||||
|
GC.EXPSR_CD = '03'
|
||||||
|
AND SYSDATE() BETWEEN GC.EXPSR_BGN_DT AND GC.EXPSR_END_DT
|
||||||
|
)
|
||||||
|
)
|
||||||
|
UNION ALL
|
||||||
|
SELECT
|
||||||
|
CHILD.CTGRY_ID
|
||||||
|
, CHILD.UPPER_CTGRY_ID
|
||||||
|
, CHILD.SOPMAL_CD
|
||||||
|
, CHILD.CTGRY_NM
|
||||||
|
, CHILD.CTGRY_DEPTH
|
||||||
|
, CHILD.SORT_ORDR
|
||||||
|
, CHILD.CTGRY_DV_CD
|
||||||
|
, CHILD.EXPSR_CD
|
||||||
|
, CHILD.URL_DV_CD
|
||||||
|
, CASE
|
||||||
|
WHEN CHILD.URL_DV_CD = '01' THEN
|
||||||
|
CASE
|
||||||
|
WHEN CHILD.CTGRY_DV_CD = '01' THEN CONCAT('/sopmal/goods/selectGoodsListForm?ctgryId=', CHILD.CTGRY_ID)
|
||||||
|
ELSE NULL
|
||||||
|
END
|
||||||
|
WHEN CHILD.URL_DV_CD = '02' THEN CHILD.URL
|
||||||
|
ELSE NULL
|
||||||
|
END URL
|
||||||
|
, CHILD.USE_AT
|
||||||
|
, CHILD.EXPSR_BGN_DT
|
||||||
|
, CHILD.EXPSR_END_DT
|
||||||
|
FROM GC_CATEGORY CHILD
|
||||||
|
INNER JOIN CATEGORY_TREE PARENT
|
||||||
|
ON CHILD.SOPMAL_CD = PARENT.SOPMAL_CD
|
||||||
|
AND CHILD.UPPER_CTGRY_ID = PARENT.CTGRY_ID
|
||||||
|
WHERE CHILD.USE_AT = 'Y'
|
||||||
|
AND (
|
||||||
|
CHILD.EXPSR_CD = '01'
|
||||||
|
OR (
|
||||||
|
CHILD.EXPSR_CD = '03'
|
||||||
|
AND SYSDATE() BETWEEN CHILD.EXPSR_BGN_DT AND CHILD.EXPSR_END_DT
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
SELECT CONCAT(GS.PC_DOMN_ADRES, GC.URL) AS TARGET_URL
|
||||||
|
, DATE_FORMAT(SYSDATE(), '%Y-%m-%dT%H:%i:%s+09:00') AS LAST_MODIFIED
|
||||||
|
, ROUND(POWER(0.8, GC.CTGRY_DEPTH - 1), 4) AS PRIORITY
|
||||||
|
FROM CATEGORY_TREE GC
|
||||||
|
INNER JOIN GC_SHOP GS
|
||||||
|
ON GC.SOPMAL_CD = GS.SOPMAL_CD
|
||||||
|
WHERE GC.CTGRY_DV_CD != '02'
|
||||||
|
AND GC.CTGRY_DEPTH != 2
|
||||||
|
UNION
|
||||||
|
SELECT CONCAT(GS.PC_DOMN_ADRES, '/sopmal/goods/selectGoodsDtl?goodsInnb=', GG.GOODS_INNB) AS TARGET_URL
|
||||||
|
, DATE_FORMAT(GG.UPDT_DT, '%Y-%m-%dT%H:%i:%s+09:00') AS LAST_MODIFIED
|
||||||
|
, ROUND(POWER(0.8, 1), 4) AS PRIORITY
|
||||||
|
FROM GC_GOODS GG
|
||||||
|
INNER JOIN GC_SHOP GS
|
||||||
|
ON GG.SOPMAL_CD = GS.SOPMAL_CD
|
||||||
|
WHERE GG.USE_AT = 'Y'
|
||||||
|
AND GG.SOPMAL_CD = #{sopmalCd}
|
||||||
|
AND GG.GOODS_KND_CD = '01'
|
||||||
|
AND GG.EXPSR_DV_CD = '01'
|
||||||
|
AND GG.GOODS_STTUS_CD IN ('01', '02')
|
||||||
|
UNION
|
||||||
|
SELECT CONCAT(GS.PC_DOMN_ADRES, '/sopmal/csc/selectBbscttAuth?authDv=CM&bbsTyCd=',
|
||||||
|
CASE
|
||||||
|
WHEN GB.BBS_ID = 'sake_column' THEN '01'
|
||||||
|
WHEN GB.BBS_ID = 'magazine' THEN '09'
|
||||||
|
ELSE NULL
|
||||||
|
END,
|
||||||
|
'&bbscttInnb=', GB.BBSCTT_INNB,
|
||||||
|
'&reqUrl=subPage&bbsId=', GB.BBS_ID,
|
||||||
|
'&cscAt='
|
||||||
|
) AS TARGET_URL
|
||||||
|
, DATE_FORMAT(GB.UPDT_DT, '%Y-%m-%dT%H:%i:%s+09:00') AS LAST_MODIFIED
|
||||||
|
, ROUND(POWER(0.8, 1), 4) AS PRIORITY
|
||||||
|
FROM GC_BOARDDATA GB
|
||||||
|
INNER JOIN GC_SHOP GS
|
||||||
|
ON GB.SOPMAL_CD = GS.SOPMAL_CD
|
||||||
|
WHERE GB.USE_AT = 'Y'
|
||||||
|
AND GB.EXPSR_AT = 'Y'
|
||||||
|
AND (
|
||||||
|
GB.NTCE_PD_SETUP_AT = 'N'
|
||||||
|
OR (
|
||||||
|
GB.NTCE_PD_SETUP_AT = 'Y'
|
||||||
|
AND DATE_FORMAT(SYSDATE(), '%Y-%m-%d') BETWEEN DATE_FORMAT(GB.NTCE_BGN_DE, '%Y-%m-%d') AND DATE_FORMAT(GB.NTCE_END_DE, '%Y-%m-%d')
|
||||||
|
)
|
||||||
|
)
|
||||||
|
AND GB.BBS_ID IN ('sake_column', 'magazine')
|
||||||
|
AND depth = 0
|
||||||
|
ORDER BY PRIORITY DESC
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
||||||
|
|||||||
@@ -1767,6 +1767,7 @@
|
|||||||
,CAST(AES_DECRYPT(UNHEX(FB.ANSW_MBTLNB) , #{secretKey}) AS CHAR(50)) AS ANSW_MBTLNB
|
,CAST(AES_DECRYPT(UNHEX(FB.ANSW_MBTLNB) , #{secretKey}) AS CHAR(50)) AS ANSW_MBTLNB
|
||||||
,FB.ANSW_SMS_RECPTN
|
,FB.ANSW_SMS_RECPTN
|
||||||
,FB.SJ
|
,FB.SJ
|
||||||
|
,FB.RELATE_GOODS_WORDS
|
||||||
,FB.SORT_ORDR
|
,FB.SORT_ORDR
|
||||||
,FB.USE_AT
|
,FB.USE_AT
|
||||||
,IFNULL(FBM.MNGR_NM, '관리자') AS MNGR_NM
|
,IFNULL(FBM.MNGR_NM, '관리자') AS MNGR_NM
|
||||||
@@ -1927,6 +1928,7 @@
|
|||||||
,CAST(AES_DECRYPT(UNHEX(FB.ANSW_MBTLNB) , #{secretKey}) AS CHAR(50)) AS ANSW_MBTLNB
|
,CAST(AES_DECRYPT(UNHEX(FB.ANSW_MBTLNB) , #{secretKey}) AS CHAR(50)) AS ANSW_MBTLNB
|
||||||
,FB.ANSW_SMS_RECPTN
|
,FB.ANSW_SMS_RECPTN
|
||||||
,FB.SJ
|
,FB.SJ
|
||||||
|
,FB.RELATE_GOODS_WORDS
|
||||||
,FB.SORT_ORDR
|
,FB.SORT_ORDR
|
||||||
,FB.USE_AT
|
,FB.USE_AT
|
||||||
,FB.CN_SCRIPT
|
,FB.CN_SCRIPT
|
||||||
@@ -2039,6 +2041,9 @@
|
|||||||
PASSWORD,
|
PASSWORD,
|
||||||
SJ,
|
SJ,
|
||||||
CN,
|
CN,
|
||||||
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(relateGoodsWords)">
|
||||||
|
RELATE_GOODS_WORDS,
|
||||||
|
</if>
|
||||||
INQIRE_CNT,
|
INQIRE_CNT,
|
||||||
CM_USE_AT,
|
CM_USE_AT,
|
||||||
RECOMEND_CNT,
|
RECOMEND_CNT,
|
||||||
@@ -2087,6 +2092,9 @@
|
|||||||
MD5(#{password}),
|
MD5(#{password}),
|
||||||
#{sj},
|
#{sj},
|
||||||
#{cn},
|
#{cn},
|
||||||
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(relateGoodsWords)">
|
||||||
|
#{relateGoodsWords},
|
||||||
|
</if>
|
||||||
0,
|
0,
|
||||||
IFNULL(#{cmUseAt},'N'),
|
IFNULL(#{cmUseAt},'N'),
|
||||||
0,
|
0,
|
||||||
@@ -2133,6 +2141,9 @@
|
|||||||
SET
|
SET
|
||||||
SJ = #{sj},
|
SJ = #{sj},
|
||||||
CN = #{cn},
|
CN = #{cn},
|
||||||
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(relateGoodsWords)">
|
||||||
|
RELATE_GOODS_WORDS = #{relateGoodsWords},
|
||||||
|
</if>
|
||||||
CM_USE_AT =IFNULL(#{cmUseAt},'N'),
|
CM_USE_AT =IFNULL(#{cmUseAt},'N'),
|
||||||
SORT_ORDR = #{sortOrdr},
|
SORT_ORDR = #{sortOrdr},
|
||||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(represntFileInfo)">
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(represntFileInfo)">
|
||||||
@@ -2656,19 +2667,43 @@
|
|||||||
WHERE 1=1
|
WHERE 1=1
|
||||||
AND FGI.GOODS_INNB = FBG.GOODS_INNB
|
AND FGI.GOODS_INNB = FBG.GOODS_INNB
|
||||||
AND FGI.SOPMAL_CD = FBG.SOPMAL_CD
|
AND FGI.SOPMAL_CD = FBG.SOPMAL_CD
|
||||||
AND FGI.IMG_KND = '03'
|
AND FGI.IMG_KND = '02'
|
||||||
AND FGI.CUT_NB = 1
|
AND FGI.CUT_NB = 1
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
)IMG
|
) AS IMG
|
||||||
,FG.GOODS_NM
|
,FG.GOODS_NM
|
||||||
,FGO.CNSMRPRIC
|
,FG.GOODS_ICON_CD AS ICON_CD_NM_LIST
|
||||||
,FGO.SLEPRIC
|
,FG.SRT_DC AS REPRSNT_DC
|
||||||
,FGO.STDR_DV_AT
|
,FG.GOODS_STTUS_CD
|
||||||
,FN_GET_COMMCODE_NAME('GOODS_STTUS', FG.GOODS_STTUS_CD) AS GOODS_STTUS_NM
|
,FEGI.GOODS_NM_EXPSR_AT
|
||||||
,FN_GET_COMMCODE_NAME('EXPSR', FG.EXPSR_DV_CD) AS EXPSR_NM
|
,FEGI.GOODS_NM_EXPSR_ORDR
|
||||||
,FBG.ORDR_GOODS_OPTN_INNB
|
,FEGI.REPRSNT_DC_EXPSR_AT
|
||||||
,FBG.SOPMAL_CD
|
,FEGI.REPRSNT_DC_EXPSR_ORDR
|
||||||
,FBG.RE_ORDER_AT
|
,FEGI.PRIC_EXPSR_AT
|
||||||
|
,FEGI.PRIC_EXPSR_ORDR
|
||||||
|
,FEGI.RVW_EVL_SCRE_EXPSR_AT
|
||||||
|
,FEGI.RVW_EVL_SCRE_EXPSR_ORDR
|
||||||
|
,FEGI.ICON_EXPSR_AT
|
||||||
|
,FEGI.ICON_EXPSR_ORDR
|
||||||
|
,IFNULL(ROUND(FGO.CNSMRPRIC, 0), 0) AS CNSMRPRIC
|
||||||
|
,IFNULL(ROUND(FGO.SLEPRIC, 0), 0) AS SLEPRIC
|
||||||
|
,IFNULL(ROUND(((FGO.CNSMRPRIC - FGO.SLEPRIC) / NULLIF(FGO.CNSMRPRIC, 0)) * 100, 0), 0) AS SLE_PERCENT
|
||||||
|
,IFNULL((SELECT ROUND(AVG(FBA.EVL_SCORE), 1)
|
||||||
|
FROM GC_BOARDDATA_GOODS RBG
|
||||||
|
INNER JOIN GC_BOARDDATA RB ON RB.BBSCTT_INNB = RBG.BBSCTT_INNB AND RB.SOPMAL_CD = RBG.SOPMAL_CD
|
||||||
|
INNER JOIN GC_BOARDMANAGER RBM ON RBM.BBS_ID = RB.BBS_ID AND RBM.SOPMAL_CD = RB.SOPMAL_CD
|
||||||
|
LEFT JOIN GC_BOARDFORM RBF ON RBF.BBS_ID = RBM.BBS_ID AND RBF.SOPMAL_CD = RBM.SOPMAL_CD AND RBF.USE_AT = 'Y' AND RBF.ADIT_ITM_DV_CD = '04'
|
||||||
|
LEFT JOIN GC_BOARD_ADDITM FBA ON FBA.BBSCTT_INNB = RB.BBSCTT_INNB AND FBA.SOPMAL_CD = RB.SOPMAL_CD AND FBA.QESITM_INNB = RBF.QESITM_INNB
|
||||||
|
WHERE RBG.SOPMAL_CD = FG.SOPMAL_CD
|
||||||
|
AND RBG.GOODS_INNB IN (SELECT CAST(RVW_GROUP_NB AS DECIMAL(10)) FROM GC_GOODS_RVW_V WHERE SOPMAL_CD = FG.SOPMAL_CD AND GOODS_INNB = FG.GOODS_INNB)
|
||||||
|
AND RB.USE_AT = 'Y' AND RB.DEPTH = 0 AND RBM.BBS_TY_CD IN ('06', '07')), 0) AS AVG_EVL_SCORE
|
||||||
|
,IFNULL((SELECT COUNT(RB.BBSCTT_INNB)
|
||||||
|
FROM GC_BOARDDATA_GOODS RBG
|
||||||
|
INNER JOIN GC_BOARDDATA RB ON RB.BBSCTT_INNB = RBG.BBSCTT_INNB AND RB.SOPMAL_CD = RBG.SOPMAL_CD
|
||||||
|
INNER JOIN GC_BOARDMANAGER RBM ON RBM.BBS_ID = RB.BBS_ID AND RBM.SOPMAL_CD = RB.SOPMAL_CD
|
||||||
|
WHERE RBG.SOPMAL_CD = FG.SOPMAL_CD
|
||||||
|
AND RBG.GOODS_INNB IN (SELECT CAST(RVW_GROUP_NB AS DECIMAL(10)) FROM GC_GOODS_RVW_V WHERE SOPMAL_CD = FG.SOPMAL_CD AND GOODS_INNB = FG.GOODS_INNB)
|
||||||
|
AND RB.USE_AT = 'Y' AND RB.DEPTH = 0 AND RBM.BBS_TY_CD IN ('06', '07')), 0) AS CNT_EVL_SCOR
|
||||||
FROM GC_BOARDDATA_GOODS FBG
|
FROM GC_BOARDDATA_GOODS FBG
|
||||||
INNER JOIN GC_GOODS FG ON
|
INNER JOIN GC_GOODS FG ON
|
||||||
FG.GOODS_INNB = FBG.GOODS_INNB
|
FG.GOODS_INNB = FBG.GOODS_INNB
|
||||||
@@ -2676,6 +2711,9 @@
|
|||||||
INNER JOIN GC_GOODS_OPTION FGO ON
|
INNER JOIN GC_GOODS_OPTION FGO ON
|
||||||
FG.GOODS_INNB = FGO.GOODS_INNB
|
FG.GOODS_INNB = FGO.GOODS_INNB
|
||||||
AND FG.SOPMAL_CD = FGO.SOPMAL_CD
|
AND FG.SOPMAL_CD = FGO.SOPMAL_CD
|
||||||
|
LEFT JOIN GC_GOODS_EXPSR_INFO FEGI ON
|
||||||
|
FG.SOPMAL_CD = FEGI.SOPMAL_CD
|
||||||
|
AND FEGI.USE_AT = 'Y'
|
||||||
WHERE 1 = 1
|
WHERE 1 = 1
|
||||||
AND FG.SOPMAL_CD =#{sopmalCd}
|
AND FG.SOPMAL_CD =#{sopmalCd}
|
||||||
AND FBG.BBSCTT_INNB =
|
AND FBG.BBSCTT_INNB =
|
||||||
@@ -2688,6 +2726,16 @@
|
|||||||
</otherwise>
|
</otherwise>
|
||||||
</choose>
|
</choose>
|
||||||
AND FGO.STDR_DV_AT = 'Y'
|
AND FGO.STDR_DV_AT = 'Y'
|
||||||
|
<if test="serverDv == 'sopmal'">
|
||||||
|
AND FGO.OPTN_EXPSR_AT = 'Y'
|
||||||
|
AND FGO.USE_AT = 'Y'
|
||||||
|
AND FG.USE_AT = 'Y'
|
||||||
|
AND FG.GOODS_KND_CD = '01'
|
||||||
|
AND FG.GOODS_STTUS_CD IN ('01', '02')
|
||||||
|
AND (FG.EXPSR_DV_CD = '01' OR (FG.EXPSR_DV_CD = '03' AND SYSDATE() BETWEEN FG.EXPSR_BGN_DT AND FG.EXPSR_END_DT))
|
||||||
|
ORDER BY CASE FG.GOODS_STTUS_CD WHEN '02' THEN 1 ELSE 0 END ASC, FBG.REGIST_DT ASC, FBG.GOODS_INNB ASC
|
||||||
|
LIMIT 12
|
||||||
|
</if>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 게시글 연관상품 삭제 (게시글 수정시)-->
|
<!-- 게시글 연관상품 삭제 (게시글 수정시)-->
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.wb.domainserver.domain.gcone.goods.badge.mapper.BOGoodsBadgeMapper">
|
||||||
|
<select id="selectBOGoodsBadgeList" parameterType="com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO" resultType="dataMap">
|
||||||
|
SELECT BADGE_CD, BADGE_NM, FONT_COLOR, BG_COLOR, BORDER_COLOR, SORT_ORDR, USE_AT
|
||||||
|
FROM GC_GOODS_BADGE
|
||||||
|
WHERE SOPMAL_CD = #{sopmalCd}
|
||||||
|
ORDER BY SORT_ORDR ASC, BADGE_CD ASC
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectBOGoodsBadgeCount" parameterType="com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO" resultType="int">
|
||||||
|
SELECT COUNT(1) FROM GC_GOODS_BADGE WHERE SOPMAL_CD = #{sopmalCd} AND BADGE_CD = #{badgeCd}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<insert id="insertBOGoodsBadge" parameterType="com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO">
|
||||||
|
INSERT INTO GC_GOODS_BADGE (
|
||||||
|
SOPMAL_CD, BADGE_CD, BADGE_NM, FONT_COLOR, BG_COLOR, BORDER_COLOR, SORT_ORDR, USE_AT, REGUSR, REGIST_DT, UPDUSR, UPDT_DT
|
||||||
|
) VALUES (
|
||||||
|
#{sopmalCd}, #{badgeCd}, #{badgeNm}, #{fontColor}, #{bgColor}, #{borderColor}, #{sortOrdr}, #{useAt}, #{regusr}, SYSDATE(), #{updusr}, SYSDATE()
|
||||||
|
)
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<update id="updateBOGoodsBadge" parameterType="com.wb.domainserver.domain.gcone.goods.badge.vo.BOGoodsBadgeVO">
|
||||||
|
UPDATE GC_GOODS_BADGE
|
||||||
|
SET BADGE_NM = #{badgeNm}, FONT_COLOR = #{fontColor}, BG_COLOR = #{bgColor}, BORDER_COLOR = #{borderColor},
|
||||||
|
SORT_ORDR = #{sortOrdr}, USE_AT = #{useAt}, UPDUSR = #{updusr}, UPDT_DT = SYSDATE()
|
||||||
|
WHERE SOPMAL_CD = #{sopmalCd} AND BADGE_CD = #{badgeCd}
|
||||||
|
</update>
|
||||||
|
</mapper>
|
||||||
@@ -5,6 +5,20 @@
|
|||||||
상품/사은품 START
|
상품/사은품 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">
|
<sql id="goodsWhere">
|
||||||
<!-- 검색조건 별 검색 -->
|
<!-- 검색조건 별 검색 -->
|
||||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStr)">
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchStr)">
|
||||||
@@ -223,72 +237,86 @@
|
|||||||
<choose>
|
<choose>
|
||||||
<when test="sortDv == 'goodsNmAsc'">
|
<when test="sortDv == 'goodsNmAsc'">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
ORDER BY FG.GOODS_NM ASC
|
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, FG.GOODS_NM ASC
|
||||||
]]>
|
]]>
|
||||||
</when>
|
</when>
|
||||||
<when test="sortDv == 'goodsNmDesc'">
|
<when test="sortDv == 'goodsNmDesc'">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
ORDER BY FG.GOODS_NM DESC
|
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, FG.GOODS_NM DESC
|
||||||
]]>
|
]]>
|
||||||
</when>
|
</when>
|
||||||
<when test="sortDv == 'slepricAsc'">
|
<when test="sortDv == 'slepricAsc'">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
ORDER BY SLEPRIC ASC
|
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, SLEPRIC ASC
|
||||||
]]>
|
]]>
|
||||||
</when>
|
</when>
|
||||||
<when test="sortDv == 'slepricDesc'">
|
<when test="sortDv == 'slepricDesc'">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
ORDER BY SLEPRIC DESC
|
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, SLEPRIC DESC
|
||||||
]]>
|
]]>
|
||||||
</when>
|
</when>
|
||||||
<when test="sortDv == 'cnsmrpricAsc'">
|
<when test="sortDv == 'cnsmrpricAsc'">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
ORDER BY CNSMRPRIC ASC
|
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, CNSMRPRIC ASC
|
||||||
]]>
|
]]>
|
||||||
</when>
|
</when>
|
||||||
<when test="sortDv == 'cnsmrpricDesc'">
|
<when test="sortDv == 'cnsmrpricDesc'">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
ORDER BY CNSMRPRIC DESC
|
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, CNSMRPRIC DESC
|
||||||
]]>
|
]]>
|
||||||
</when>
|
</when>
|
||||||
<when test="sortDv == 'invntryQyAsc'">
|
<when test="sortDv == 'invntryQyAsc'">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
ORDER BY INVNTRY_QY ASC
|
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, INVNTRY_QY ASC
|
||||||
]]>
|
]]>
|
||||||
</when>
|
</when>
|
||||||
<when test="sortDv == 'invntryQyDesc'">
|
<when test="sortDv == 'invntryQyDesc'">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
ORDER BY INVNTRY_QY DESC
|
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, INVNTRY_QY DESC
|
||||||
]]>
|
]]>
|
||||||
</when>
|
</when>
|
||||||
<when test="sortDv == 'registDtAsc'">
|
<when test="sortDv == 'registDtAsc'">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
ORDER BY REGIST_DT ASC
|
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, REGIST_DT ASC
|
||||||
]]>
|
]]>
|
||||||
</when>
|
</when>
|
||||||
<when test="sortDv == 'registDtDesc'">
|
<when test="sortDv == 'registDtDesc'">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
ORDER BY REGIST_DT DESC
|
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, REGIST_DT DESC
|
||||||
]]>
|
]]>
|
||||||
</when>
|
</when>
|
||||||
<when test="sortDv == 'avgEvlScore'">
|
<when test="sortDv == 'avgEvlScore'">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
ORDER BY GCL.GOODS_ORDR, AVG_EVL_SCORE DESC
|
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, GCL.GOODS_ORDR, AVG_EVL_SCORE DESC
|
||||||
]]>
|
]]>
|
||||||
</when>
|
</when>
|
||||||
<when test="sortDv == 'cntEvlScor'">
|
<when test="sortDv == 'cntEvlScor'">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
ORDER BY CNT_EVL_SCOR DESC
|
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, CNT_EVL_SCOR DESC
|
||||||
]]>
|
]]>
|
||||||
</when>
|
</when>
|
||||||
<when test="sortDv == 'goodsInnbDesc'">
|
<when test="sortDv == 'goodsInnbDesc'">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
ORDER BY GOODS.GOODS_INNB DESC
|
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, GOODS.GOODS_INNB DESC
|
||||||
]]>
|
]]>
|
||||||
</when>
|
</when>
|
||||||
<otherwise>
|
<otherwise>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
ORDER BY GCL.GOODS_ORDR, AVG_EVL_SCORE DESC
|
ORDER BY CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, GCL.GOODS_ORDR, AVG_EVL_SCORE DESC
|
||||||
]]>
|
]]>
|
||||||
</otherwise>
|
</otherwise>
|
||||||
</choose>
|
</choose>
|
||||||
@@ -3609,6 +3637,23 @@
|
|||||||
]]>
|
]]>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<!-- 검색어 로그 저장 -->
|
||||||
|
<insert id="insertBOSrchwrdLog" parameterType="com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO" >
|
||||||
|
INSERT INTO GC_SRCHWRD_LOG (
|
||||||
|
SRCHWRD,
|
||||||
|
MBR_INNB,
|
||||||
|
CONECT_DOMN,
|
||||||
|
CONECT_URL,
|
||||||
|
SRCH_DT
|
||||||
|
) VALUES (
|
||||||
|
#{srchStr},
|
||||||
|
#{mbrInnb},
|
||||||
|
#{conectDomn},
|
||||||
|
#{conectUrl},
|
||||||
|
SYSDATE()
|
||||||
|
)
|
||||||
|
</insert>
|
||||||
|
|
||||||
<!-- 사용자 - 검색 - 상품명 검색어 조회-->
|
<!-- 사용자 - 검색 - 상품명 검색어 조회-->
|
||||||
<select id="selectBOSrchGoodsNm" parameterType="com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO" resultType="dataMap">
|
<select id="selectBOSrchGoodsNm" parameterType="com.wb.domainserver.domain.gcone.goods.goods.vo.BOGoodsVO" resultType="dataMap">
|
||||||
SELECT
|
SELECT
|
||||||
|
|||||||
@@ -172,6 +172,7 @@
|
|||||||
<update id="deleteBOMngrSubsvc" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
|
<update id="deleteBOMngrSubsvc" parameterType="com.wb.domainserver.domain.gcone.goods.subsvc.vo.BOSubsvcVO">
|
||||||
UPDATE GC_SUBSVC
|
UPDATE GC_SUBSVC
|
||||||
SET USE_AT = 'N'
|
SET USE_AT = 'N'
|
||||||
|
,SUBSVC_NM = CONCAT('*', SUBSVC_NM)
|
||||||
,UPDUSR = #{updusr}
|
,UPDUSR = #{updusr}
|
||||||
,UPDT_DT = NOW()
|
,UPDT_DT = NOW()
|
||||||
WHERE SOPMAL_CD = #{sopmalCd}
|
WHERE SOPMAL_CD = #{sopmalCd}
|
||||||
|
|||||||
@@ -11,24 +11,44 @@
|
|||||||
AND FM.USE_AT = 'Y'
|
AND FM.USE_AT = 'Y'
|
||||||
]]>
|
]]>
|
||||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchMbrNm)">
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchMbrNm)">
|
||||||
<![CDATA[
|
<choose>
|
||||||
AND FM.MBR_NM = #{srchMbrNm}
|
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '0')">
|
||||||
]]>
|
AND FM.MBR_NM LIKE CONCAT('%', #{srchMbrNm}, '%')
|
||||||
|
</when>
|
||||||
|
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '1')">
|
||||||
|
AND FM.MBR_NM = #{srchMbrNm}
|
||||||
|
</when>
|
||||||
|
</choose>
|
||||||
</if>
|
</if>
|
||||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchKywordID)">
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchKywordID)">
|
||||||
<![CDATA[
|
<choose>
|
||||||
AND FM.MBR_ID = #{srchKywordID}
|
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '0')">
|
||||||
]]>
|
AND FM.MBR_ID LIKE CONCAT('%', #{srchKywordID}, '%')
|
||||||
|
</when>
|
||||||
|
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '1')">
|
||||||
|
AND FM.MBR_ID = #{srchKywordID}
|
||||||
|
</when>
|
||||||
|
</choose>
|
||||||
</if>
|
</if>
|
||||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchKywordEmail)">
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchKywordEmail)">
|
||||||
<![CDATA[
|
<choose>
|
||||||
AND FM.EMAIL = (select HEX(AES_ENCRYPT(#{srchKywordEmail} , #{secretKey})))
|
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '0')">
|
||||||
]]>
|
AND AES_DECRYPT(UNHEX(FM.EMAIL), #{secretKey}) LIKE CONCAT('%', #{srchKywordEmail}, '%')
|
||||||
|
</when>
|
||||||
|
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '1')">
|
||||||
|
AND FM.EMAIL = (select HEX(AES_ENCRYPT(#{srchKywordEmail} , #{secretKey})))
|
||||||
|
</when>
|
||||||
|
</choose>
|
||||||
</if>
|
</if>
|
||||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchKywordMb)">
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(srchKywordMb)">
|
||||||
<![CDATA[
|
<choose>
|
||||||
AND FM.MBTLNB = (select HEX(AES_ENCRYPT(REPLACE(#{srchKywordMb},'-',''), #{secretKey})))
|
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '0')">
|
||||||
]]>
|
AND AES_DECRYPT(UNHEX(FM.MBTLNB), #{secretKey}) LIKE CONCAT('%', #{srchKywordMb}, '%')
|
||||||
|
</when>
|
||||||
|
<when test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(srchDv, '1')">
|
||||||
|
AND FM.MBTLNB = (select HEX(AES_ENCRYPT(REPLACE(#{srchKywordMb},'-',''), #{secretKey})))
|
||||||
|
</when>
|
||||||
|
</choose>
|
||||||
</if>
|
</if>
|
||||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(actionDv)">
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(actionDv)">
|
||||||
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(eventYn)">
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEmpty(eventYn)">
|
||||||
|
|||||||
@@ -1332,6 +1332,20 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 주문 배송 추적 조회 : 송장번호 조회 -->
|
||||||
|
<select id = "selectBOOrdrInvcnb"
|
||||||
|
parameterType="com.wb.domainserver.domain.gcone.ordr.dlivy.vo.BODlivyVO"
|
||||||
|
resultType = "String">
|
||||||
|
<![CDATA[
|
||||||
|
SELECT
|
||||||
|
GGE.INVCNB
|
||||||
|
FROM GC_GOODS_EXPORT GGE
|
||||||
|
WHERE GGE.SOPMAL_CD = #{sopmalCd}
|
||||||
|
AND GGE.ORDR_DLVY_INNB = #{ordrDlvyInnb}
|
||||||
|
]]>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
<!-- 주문 배송 추적 받는사람, 보내는사람 조회 -->
|
<!-- 주문 배송 추적 받는사람, 보내는사람 조회 -->
|
||||||
<select id = "selectBOOrdrDlvyDtlInqire"
|
<select id = "selectBOOrdrDlvyDtlInqire"
|
||||||
parameterType="com.wb.domainserver.domain.gcone.ordr.dlivy.vo.BODlivyVO"
|
parameterType="com.wb.domainserver.domain.gcone.ordr.dlivy.vo.BODlivyVO"
|
||||||
|
|||||||
@@ -1076,6 +1076,10 @@
|
|||||||
WHEN FOI.OPTN_NM IS NOT NULL THEN CONCAT(FOI.GOODS_NM, ' ', FOI.OPTN_NM)
|
WHEN FOI.OPTN_NM IS NOT NULL THEN CONCAT(FOI.GOODS_NM, ' ', FOI.OPTN_NM)
|
||||||
ELSE FOI.GOODS_NM
|
ELSE FOI.GOODS_NM
|
||||||
END AS goods_nm
|
END AS goods_nm
|
||||||
|
, CASE
|
||||||
|
WHEN FOI.OPTN_NM IS NOT NULL THEN CONCAT(FOI.GOODS_NM_EN, ' ', FOI.OPTN_NM)
|
||||||
|
ELSE FOI.GOODS_NM_EN
|
||||||
|
END AS goods_nm_en
|
||||||
, FOI.INVNTRY_QY AS invntry_qy
|
, FOI.INVNTRY_QY AS invntry_qy
|
||||||
, 0 AS prchspric
|
, 0 AS prchspric
|
||||||
, FOI.SLEPRIC AS cnsmrpric
|
, FOI.SLEPRIC AS cnsmrpric
|
||||||
@@ -1106,6 +1110,10 @@
|
|||||||
, '선불' AS dlvy_amt_setle_mth_nm
|
, '선불' AS dlvy_amt_setle_mth_nm
|
||||||
, FN_GET_COMMCODE_NAME('ORDR_TY', FO.ORDR_TY_CD) AS ordr_ty_nm
|
, FN_GET_COMMCODE_NAME('ORDR_TY', FO.ORDR_TY_CD) AS ordr_ty_nm
|
||||||
, FOI.optn_cd_1
|
, FOI.optn_cd_1
|
||||||
|
, FOI.hscode
|
||||||
|
, FOI.real_wt
|
||||||
|
, FOI.VOL_TW
|
||||||
|
, FOI.package_cnt
|
||||||
, FOSH.dlvy_mssage_cn
|
, FOSH.dlvy_mssage_cn
|
||||||
, FN_GET_COMMCODE_NAME('ORDR_STTUS', FOSH.ORDR_STTUS_CD) AS shipping_sttus_nm
|
, FN_GET_COMMCODE_NAME('ORDR_STTUS', FOSH.ORDR_STTUS_CD) AS shipping_sttus_nm
|
||||||
, CASE WHEN FO.SUBSVC_AT = 'Y'
|
, CASE WHEN FO.SUBSVC_AT = 'Y'
|
||||||
@@ -1120,11 +1128,16 @@
|
|||||||
, GOI.ORDR_GOODS_INNB
|
, GOI.ORDR_GOODS_INNB
|
||||||
, GOI.ORDR_GOODS_OPTN_INNB
|
, GOI.ORDR_GOODS_OPTN_INNB
|
||||||
, GOI.OPTN_CD_1
|
, GOI.OPTN_CD_1
|
||||||
|
, GOI.HSCODE
|
||||||
|
, GOI.REAL_WT
|
||||||
|
, GOI.VOL_TW
|
||||||
|
, GOI.PACKAGE_CNT
|
||||||
, GOI.ORDR_STTUS_CD
|
, GOI.ORDR_STTUS_CD
|
||||||
, LAG(GOI.ORDR_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_INNB
|
, LAG(GOI.ORDR_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_INNB
|
||||||
, LAG(GOI.ORDR_DLVY_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_DLVY_INNB
|
, LAG(GOI.ORDR_DLVY_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_DLVY_INNB
|
||||||
, MAX(FN_GET_GOODS_IMAGE(GOI.SOPMAL_CD, GOI.GOODS_INNB, '03')) AS GOODS_IMG_COURS
|
, MAX(FN_GET_GOODS_IMAGE(GOI.SOPMAL_CD, GOI.GOODS_INNB, '03')) AS GOODS_IMG_COURS
|
||||||
, MAX(GOI.GOODS_NM) AS GOODS_NM
|
, MAX(GOI.GOODS_NM) AS GOODS_NM
|
||||||
|
, MAX(GOI.GOODS_NM_EN) AS GOODS_NM_EN
|
||||||
, MAX(FN_GET_ORDER_GOODS_OPTN_NAME(GOI.SOPMAL_CD, GOI.ORDR_INNB, GOI.ORDR_GOODS_OPTN_INNB)) AS OPTN_NM
|
, MAX(FN_GET_ORDER_GOODS_OPTN_NAME(GOI.SOPMAL_CD, GOI.ORDR_INNB, GOI.ORDR_GOODS_OPTN_INNB)) AS OPTN_NM
|
||||||
, SUM(GOI.ORDR_QY) AS ORDR_QY
|
, SUM(GOI.ORDR_QY) AS ORDR_QY
|
||||||
, SUM(GOI.SLEPRIC) AS SLEPRIC
|
, SUM(GOI.SLEPRIC) AS SLEPRIC
|
||||||
@@ -1154,6 +1167,10 @@
|
|||||||
, GOI.ORDR_GOODS_INNB
|
, GOI.ORDR_GOODS_INNB
|
||||||
, GOI.ORDR_GOODS_OPTN_INNB
|
, GOI.ORDR_GOODS_OPTN_INNB
|
||||||
, GOI.OPTN_CD_1
|
, GOI.OPTN_CD_1
|
||||||
|
, GOI.HSCODE
|
||||||
|
, GOI.REAL_WT
|
||||||
|
, GOI.VOL_TW
|
||||||
|
, GOI.PACKAGE_CNT
|
||||||
, GOI.ORDR_STTUS_CD
|
, GOI.ORDR_STTUS_CD
|
||||||
) FOI
|
) FOI
|
||||||
ON FOI.SOPMAL_CD = FO.SOPMAL_CD
|
ON FOI.SOPMAL_CD = FO.SOPMAL_CD
|
||||||
@@ -1220,6 +1237,7 @@
|
|||||||
, GROUP_CONCAT(A.ORDR_GOODS_INNB ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS ORDR_GOODS_INNB
|
, GROUP_CONCAT(A.ORDR_GOODS_INNB ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS ORDR_GOODS_INNB
|
||||||
, GROUP_CONCAT(A.NPAY_GOODS_ORDRNB ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS NPAY_GOODS_ORDRNB
|
, GROUP_CONCAT(A.NPAY_GOODS_ORDRNB ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS NPAY_GOODS_ORDRNB
|
||||||
, GROUP_CONCAT(A.GOODS_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS GOODS_NM
|
, GROUP_CONCAT(A.GOODS_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS GOODS_NM
|
||||||
|
, GROUP_CONCAT(A.GOODS_NM_EN ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS GOODS_NM_EN
|
||||||
, GROUP_CONCAT(A.INVNTRY_QY ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS INVNTRY_QY
|
, GROUP_CONCAT(A.INVNTRY_QY ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS INVNTRY_QY
|
||||||
, GROUP_CONCAT(A.PRCHSPRIC ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS PRCHSPRIC
|
, GROUP_CONCAT(A.PRCHSPRIC ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS PRCHSPRIC
|
||||||
, GROUP_CONCAT(A.CNSMRPRIC ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS CNSMRPRIC
|
, GROUP_CONCAT(A.CNSMRPRIC ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS CNSMRPRIC
|
||||||
@@ -1247,6 +1265,10 @@
|
|||||||
, GROUP_CONCAT(A.DLVY_AMT_SETLE_MTH_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS DLVY_AMT_SETLE_MTH_NM
|
, GROUP_CONCAT(A.DLVY_AMT_SETLE_MTH_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS DLVY_AMT_SETLE_MTH_NM
|
||||||
, GROUP_CONCAT(A.ORDR_TY_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS ORDR_TY_NM
|
, GROUP_CONCAT(A.ORDR_TY_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS ORDR_TY_NM
|
||||||
, GROUP_CONCAT(A.OPTN_CD_1 ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS OPTN_CD_1
|
, GROUP_CONCAT(A.OPTN_CD_1 ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS OPTN_CD_1
|
||||||
|
, GROUP_CONCAT(A.HSCODE ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS HSCODE
|
||||||
|
, GROUP_CONCAT(A.REAL_WT ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS REAL_WT
|
||||||
|
, GROUP_CONCAT(A.VOL_TW ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS VOL_TW
|
||||||
|
, GROUP_CONCAT(A.PACKAGE_CNT ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS PACKAGE_CNT
|
||||||
, GROUP_CONCAT(A.DLVY_MSSAGE_CN ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS DLVY_MSSAGE_CN
|
, GROUP_CONCAT(A.DLVY_MSSAGE_CN ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS DLVY_MSSAGE_CN
|
||||||
, GROUP_CONCAT(A.SHIPPING_STTUS_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS SHIPPING_STTUS_NM
|
, GROUP_CONCAT(A.SHIPPING_STTUS_NM ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS SHIPPING_STTUS_NM
|
||||||
, GROUP_CONCAT(A.SUBSVC_AT ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS SUBSVC_AT
|
, GROUP_CONCAT(A.SUBSVC_AT ORDER BY A.ORDR_GOODS_INNB ASC SEPARATOR '\n') AS SUBSVC_AT
|
||||||
@@ -1285,6 +1307,10 @@
|
|||||||
WHEN FOI.OPTN_NM IS NOT NULL THEN CONCAT(FOI.GOODS_NM, ' ', FOI.OPTN_NM)
|
WHEN FOI.OPTN_NM IS NOT NULL THEN CONCAT(FOI.GOODS_NM, ' ', FOI.OPTN_NM)
|
||||||
ELSE FOI.GOODS_NM
|
ELSE FOI.GOODS_NM
|
||||||
END AS GOODS_NM
|
END AS GOODS_NM
|
||||||
|
, CASE
|
||||||
|
WHEN FOI.OPTN_NM IS NOT NULL THEN CONCAT(FOI.GOODS_NM_EN, ' ', FOI.OPTN_NM)
|
||||||
|
ELSE FOI.GOODS_NM_EN
|
||||||
|
END AS GOODS_NM_EN
|
||||||
, FOI.INVNTRY_QY
|
, FOI.INVNTRY_QY
|
||||||
, 0 AS PRCHSPRIC
|
, 0 AS PRCHSPRIC
|
||||||
, FOI.SLEPRIC AS CNSMRPRIC
|
, FOI.SLEPRIC AS CNSMRPRIC
|
||||||
@@ -1315,6 +1341,10 @@
|
|||||||
, '선불' AS DLVY_AMT_SETLE_MTH_NM
|
, '선불' AS DLVY_AMT_SETLE_MTH_NM
|
||||||
, FN_GET_COMMCODE_NAME('ORDR_TY', FO.ORDR_TY_CD) AS ORDR_TY_NM
|
, FN_GET_COMMCODE_NAME('ORDR_TY', FO.ORDR_TY_CD) AS ORDR_TY_NM
|
||||||
, FOI.OPTN_CD_1
|
, FOI.OPTN_CD_1
|
||||||
|
, FOI.HSCODE
|
||||||
|
, FOI.REAL_WT
|
||||||
|
, FOI.VOL_TW
|
||||||
|
, FOI.PACKAGE_CNT
|
||||||
, FOSH.DLVY_MSSAGE_CN
|
, FOSH.DLVY_MSSAGE_CN
|
||||||
, FN_GET_COMMCODE_NAME('ORDR_STTUS', FOSH.ORDR_STTUS_CD) AS SHIPPING_STTUS_NM
|
, FN_GET_COMMCODE_NAME('ORDR_STTUS', FOSH.ORDR_STTUS_CD) AS SHIPPING_STTUS_NM
|
||||||
, CASE WHEN FO.SUBSVC_AT = 'Y'
|
, CASE WHEN FO.SUBSVC_AT = 'Y'
|
||||||
@@ -1329,11 +1359,16 @@
|
|||||||
, GOI.ORDR_GOODS_INNB
|
, GOI.ORDR_GOODS_INNB
|
||||||
, GOI.ORDR_GOODS_OPTN_INNB
|
, GOI.ORDR_GOODS_OPTN_INNB
|
||||||
, GOI.OPTN_CD_1
|
, GOI.OPTN_CD_1
|
||||||
|
, GOI.HSCODE
|
||||||
|
, GOI.REAL_WT
|
||||||
|
, GOI.VOL_TW
|
||||||
|
, GOI.PACKAGE_CNT
|
||||||
, GOI.ORDR_STTUS_CD
|
, GOI.ORDR_STTUS_CD
|
||||||
, LAG(GOI.ORDR_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_INNB
|
, LAG(GOI.ORDR_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_INNB
|
||||||
, LAG(GOI.ORDR_DLVY_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_DLVY_INNB
|
, LAG(GOI.ORDR_DLVY_INNB) OVER(ORDER BY GOI.ORDR_INNB) AS REV_ORDR_DLVY_INNB
|
||||||
, MAX(FN_GET_GOODS_IMAGE(GOI.SOPMAL_CD, GOI.GOODS_INNB, '03')) AS GOODS_IMG_COURS
|
, MAX(FN_GET_GOODS_IMAGE(GOI.SOPMAL_CD, GOI.GOODS_INNB, '03')) AS GOODS_IMG_COURS
|
||||||
, MAX(GOI.GOODS_NM) AS GOODS_NM
|
, MAX(GOI.GOODS_NM) AS GOODS_NM
|
||||||
|
, MAX(GOI.GOODS_NM_EN) AS GOODS_NM_EN
|
||||||
, MAX(FN_GET_ORDER_GOODS_OPTN_NAME(GOI.SOPMAL_CD, GOI.ORDR_INNB, GOI.ORDR_GOODS_OPTN_INNB)) AS OPTN_NM
|
, MAX(FN_GET_ORDER_GOODS_OPTN_NAME(GOI.SOPMAL_CD, GOI.ORDR_INNB, GOI.ORDR_GOODS_OPTN_INNB)) AS OPTN_NM
|
||||||
, SUM(GOI.ORDR_QY) AS ORDR_QY
|
, SUM(GOI.ORDR_QY) AS ORDR_QY
|
||||||
, SUM(GOI.SLEPRIC) AS SLEPRIC
|
, SUM(GOI.SLEPRIC) AS SLEPRIC
|
||||||
@@ -1363,6 +1398,10 @@
|
|||||||
, GOI.ORDR_GOODS_INNB
|
, GOI.ORDR_GOODS_INNB
|
||||||
, GOI.ORDR_GOODS_OPTN_INNB
|
, GOI.ORDR_GOODS_OPTN_INNB
|
||||||
, GOI.OPTN_CD_1
|
, GOI.OPTN_CD_1
|
||||||
|
, GOI.HSCODE
|
||||||
|
, GOI.REAL_WT
|
||||||
|
, GOI.VOL_TW
|
||||||
|
, GOI.PACKAGE_CNT
|
||||||
, GOI.ORDR_STTUS_CD
|
, GOI.ORDR_STTUS_CD
|
||||||
) FOI
|
) FOI
|
||||||
ON FOI.SOPMAL_CD = FO.SOPMAL_CD
|
ON FOI.SOPMAL_CD = FO.SOPMAL_CD
|
||||||
@@ -1401,125 +1440,6 @@
|
|||||||
GROUP BY A.ORDR_INNB
|
GROUP BY A.ORDR_INNB
|
||||||
) EXCEL
|
) EXCEL
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 전체 주문 조회 > 엑셀다운로드 발주서 -->
|
|
||||||
<select id="selectExcelListPurchOrder" parameterType="com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrSrchVO" resultType="dataMap">
|
|
||||||
SELECT
|
|
||||||
GO.ORDR_RCEPT_DT,
|
|
||||||
'UNIHAN' AS ENTRPS_CD,
|
|
||||||
'UNIHAN CO.,LTD.' AS ENTRPS_NM,
|
|
||||||
'03-5990-2880' AS ENTRPS_TEL,
|
|
||||||
'RM.302,YOTSUYA-AKEBONOBASHI BLDG.,2-14, SUMIYOSHI-CHO, SHINJUKU-KU, TOKYO, 162-0065, JAPAN' AS ENTRPS_ADRES,
|
|
||||||
NULL AS SPCL_CSTMCLER_ENTRPS,
|
|
||||||
NULL AS SPCL_CSTMCLER_CD,
|
|
||||||
GO.ORDR_INNB,
|
|
||||||
1 AS PURPS_DV,
|
|
||||||
GOS.RECPNT_NM,
|
|
||||||
GOS.RECPNT_MBTLNB,
|
|
||||||
NULL AS RECPNT_HP,
|
|
||||||
GOS.CSTMCLER_CD,
|
|
||||||
GOS.DLVYLC_ZIP,
|
|
||||||
CASE
|
|
||||||
WHEN GOS.DLVYLC_ADRES_DV_CD = '01'
|
|
||||||
THEN GOS.DLVYLC_RNM_ADRES
|
|
||||||
ELSE GOS.DLVYLC_LNB_ADRES
|
|
||||||
END DLVYLC_RNM_LNB_ADRES,
|
|
||||||
GOS.DLVYLC_ADRES_DTL,
|
|
||||||
GOS.DLVY_MSSAGE_CN,
|
|
||||||
'www.sake1jan.com' AS CSTMR_PURCHS_SITE,
|
|
||||||
GOIO.REAL_WT,
|
|
||||||
GOIO.PACKAGE_CNT,
|
|
||||||
GOIO.HSCODE,
|
|
||||||
'A' AS CMMRC_TY,
|
|
||||||
CONCAT(GOI.GOODS_NM_EN, ' ', GOIO.OPTN_NM_1, '-', GOIO.OPTN_VAL_1) AS CN,
|
|
||||||
/*원가 관리 시작*/
|
|
||||||
GOIO.SLEPRIC,
|
|
||||||
GOS.DFT_DLVY_AMT,
|
|
||||||
GGC.CSTMS_FEE,
|
|
||||||
(
|
|
||||||
(GOIO.SLEPRIC + GOS.DFT_DLVY_AMT)
|
|
||||||
* GGC.PLTFOM_FEE
|
|
||||||
* GGC.EXPCT_TAX
|
|
||||||
) AS EXPCT_TAX_AMT,
|
|
||||||
GGC.EXPCT_TAX,
|
|
||||||
GGC.KR_DLVY_CT,
|
|
||||||
GGC.PLTFOM_FEE,
|
|
||||||
GGC.USD_RATE,
|
|
||||||
TRUNCATE(
|
|
||||||
(
|
|
||||||
(
|
|
||||||
(GOIO.SLEPRIC + GOS.DFT_DLVY_AMT)
|
|
||||||
- (
|
|
||||||
GGC.CSTMS_FEE
|
|
||||||
+ (GOIO.SLEPRIC + GOS.DFT_DLVY_AMT)
|
|
||||||
* GGC.PLTFOM_FEE
|
|
||||||
* GGC.EXPCT_TAX
|
|
||||||
+ GGC.KR_DLVY_CT
|
|
||||||
)
|
|
||||||
) * GGC.USD_RATE / 1000
|
|
||||||
), 2
|
|
||||||
) AS UNIT_VALUE,
|
|
||||||
/*원가 관리 종료*/
|
|
||||||
GOIO.ORDR_QY,
|
|
||||||
(
|
|
||||||
TRUNCATE(
|
|
||||||
(
|
|
||||||
(
|
|
||||||
(GOIO.SLEPRIC + GOS.DFT_DLVY_AMT)
|
|
||||||
- (
|
|
||||||
GGC.CSTMS_FEE
|
|
||||||
+ (GOIO.SLEPRIC + GOS.DFT_DLVY_AMT)
|
|
||||||
* GGC.PLTFOM_FEE
|
|
||||||
* GGC.EXPCT_TAX
|
|
||||||
+ GGC.KR_DLVY_CT
|
|
||||||
)
|
|
||||||
) * GGC.USD_RATE / 1000
|
|
||||||
), 2
|
|
||||||
) * GOIO.ORDR_QY
|
|
||||||
) AS VALUE,
|
|
||||||
NULL AS BRAND,
|
|
||||||
NULL AS PRE_FOOD_DCL,
|
|
||||||
NULL AS PROVD_NATION,
|
|
||||||
NULL AS PROVD_CMPNY_NM,
|
|
||||||
NULL AS CHNLNG_GOODS_NM,
|
|
||||||
NULL AS SHIPPER_PURCHS_SITE,
|
|
||||||
NULL AS SLE_AGNT_ENTRPS_NM,
|
|
||||||
NULL AS SLE_AGNT_ENTRPS_REGIST_CD,
|
|
||||||
NULL AS PURCHS_DLVY_AGENCY_NM,
|
|
||||||
NULL AS PURCHS_DLVY_AGENCY_REGIST_CD,
|
|
||||||
NULL AS OVSEA_SELER_NM,
|
|
||||||
GOS.ORDR_DLVY_INNB AS OVSEA_SELER_REGIST_CD,
|
|
||||||
CONCAT(GO.SUBSVC_AT, GOS.DLVYLC_AREA_CD, GOS.ORDR_DLVY_INNB) AS SITE_ORDR_INNB,
|
|
||||||
/*아래부터는 발주서에 포함되지 않음*/
|
|
||||||
GO.ORDR_STTUS_CD,
|
|
||||||
GOI.ORDR_GOODS_INNB,
|
|
||||||
GOI.GOODS_INNB,
|
|
||||||
GOI.GOODS_NM,
|
|
||||||
GOIO.ORDR_GOODS_OPTN_INNB,
|
|
||||||
GOIO.GOODS_OPTN_INNB,
|
|
||||||
GOS.DLVYLC_AREA_CD,
|
|
||||||
GGC.STDR_DE
|
|
||||||
FROM GC_ORDER GO
|
|
||||||
INNER JOIN GC_ORDER_ITEM GOI
|
|
||||||
ON GOI.ORDR_INNB = GO.ORDR_INNB
|
|
||||||
AND GOI.SOPMAL_CD = GO.SOPMAL_CD
|
|
||||||
INNER JOIN GC_ORDER_ITEM_OPTION GOIO
|
|
||||||
ON GOIO.ORDR_GOODS_INNB = GOI.ORDR_GOODS_INNB
|
|
||||||
AND GOIO.SOPMAL_CD = GOI.SOPMAL_CD
|
|
||||||
INNER JOIN GC_ORDER_SHIPPING GOS
|
|
||||||
ON GOS.ORDR_DLVY_INNB = GOIO.ORDR_DLVY_INNB
|
|
||||||
AND GOS.SOPMAL_CD = GOIO.SOPMAL_CD
|
|
||||||
LEFT JOIN GC_GOODS_COST GGC
|
|
||||||
ON GGC.STDR_DE = (
|
|
||||||
SELECT MAX(GGC.STDR_DE)
|
|
||||||
FROM GC_GOODS_COST GGC
|
|
||||||
WHERE GGC.STDR_DE <![CDATA[<=]]> GO.ORDR_RCEPT_DT
|
|
||||||
)
|
|
||||||
WHERE 1 = 1
|
|
||||||
AND GO.ORDR_RCEPT_DT BETWEEN #{srchStartDate} AND #{srchEndDate} ' 23:59:59'
|
|
||||||
AND GOIO.ORDR_STTUS_CD = #{srchOrdrSttusCd}
|
|
||||||
AND GO.SOPMAL_CD = #{sopmalCd}
|
|
||||||
</select>
|
|
||||||
<!--
|
<!--
|
||||||
####################################
|
####################################
|
||||||
전체주문 조회 서비스 종료
|
전체주문 조회 서비스 종료
|
||||||
@@ -2092,6 +2012,7 @@
|
|||||||
SELECT FOS.SOPMAL_CD
|
SELECT FOS.SOPMAL_CD
|
||||||
, FOS.ORDR_INNB
|
, FOS.ORDR_INNB
|
||||||
, FOS.ORDR_DLVY_INNB
|
, FOS.ORDR_DLVY_INNB
|
||||||
|
, FOS.DLVYLC_AREA_CD
|
||||||
, FOS.RECPNT_NM
|
, FOS.RECPNT_NM
|
||||||
, CASE
|
, CASE
|
||||||
WHEN LENGTH(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50))) = 11 THEN
|
WHEN LENGTH(CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_TELNB), '1df5be2f7e90ae36') AS CHAR(50))) = 11 THEN
|
||||||
@@ -2121,6 +2042,7 @@
|
|||||||
ELSE
|
ELSE
|
||||||
CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50))
|
CAST(AES_DECRYPT(UNHEX(FOS.RECPNT_MBTLNB), '1df5be2f7e90ae36') AS CHAR(50))
|
||||||
END AS RECPNT_MBTLNB
|
END AS RECPNT_MBTLNB
|
||||||
|
, FOS.CSTMCLER_CD
|
||||||
, FOS.DLVYLC_ZIP
|
, FOS.DLVYLC_ZIP
|
||||||
, FOS.DLVYLC_ADRES_DV_CD
|
, FOS.DLVYLC_ADRES_DV_CD
|
||||||
, CASE WHEN FOS.DLVYLC_ADRES_DV_CD = '01'
|
, CASE WHEN FOS.DLVYLC_ADRES_DV_CD = '01'
|
||||||
@@ -2470,6 +2392,9 @@
|
|||||||
SET FOS.RECPNT_NM = #{recpntNm}
|
SET FOS.RECPNT_NM = #{recpntNm}
|
||||||
, FOS.RECPNT_TELNB = HEX(AES_ENCRYPT(REPLACE(#{recpntTelnb}, '-', ''), '1df5be2f7e90ae36'))
|
, FOS.RECPNT_TELNB = HEX(AES_ENCRYPT(REPLACE(#{recpntTelnb}, '-', ''), '1df5be2f7e90ae36'))
|
||||||
, FOS.RECPNT_MBTLNB = HEX(AES_ENCRYPT(REPLACE(#{recpntMbtlnb}, '-', ''), '1df5be2f7e90ae36'))
|
, FOS.RECPNT_MBTLNB = HEX(AES_ENCRYPT(REPLACE(#{recpntMbtlnb}, '-', ''), '1df5be2f7e90ae36'))
|
||||||
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(cstmclerCd)">
|
||||||
|
, FOS.CSTMCLER_CD = #{cstmclerCd}
|
||||||
|
</if>
|
||||||
, FOS.DLVYLC_ZIP = #{dlvylcZip}
|
, FOS.DLVYLC_ZIP = #{dlvylcZip}
|
||||||
, FOS.DLVYLC_ADRES_DV_CD = #{dlvylcAdresDvCd}
|
, FOS.DLVYLC_ADRES_DV_CD = #{dlvylcAdresDvCd}
|
||||||
, FOS.DLVYLC_LNB_ADRES = #{dlvylcLnbAdres}
|
, FOS.DLVYLC_LNB_ADRES = #{dlvylcLnbAdres}
|
||||||
@@ -3003,6 +2928,281 @@
|
|||||||
####################################
|
####################################
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
####################################
|
||||||
|
관리자 > 주문 > 주문관리 > 발주서 관리 시작
|
||||||
|
####################################
|
||||||
|
-->
|
||||||
|
<!-- 발주서 목록 건수 -->
|
||||||
|
<select id="selectExcelListPurchOrderTotCnt" parameterType="com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrSrchVO" resultType="Integer">
|
||||||
|
SELECT COUNT(1)
|
||||||
|
FROM GC_ORDER GO
|
||||||
|
INNER JOIN GC_ORDER_ITEM GOI
|
||||||
|
ON GOI.ORDR_INNB = GO.ORDR_INNB
|
||||||
|
AND GOI.SOPMAL_CD = GO.SOPMAL_CD
|
||||||
|
INNER JOIN GC_ORDER_ITEM_OPTION GOIO
|
||||||
|
ON GOIO.ORDR_GOODS_INNB = GOI.ORDR_GOODS_INNB
|
||||||
|
AND GOIO.SOPMAL_CD = GOI.SOPMAL_CD
|
||||||
|
INNER JOIN GC_ORDER_SHIPPING GOS
|
||||||
|
ON GOS.ORDR_DLVY_INNB = GOIO.ORDR_DLVY_INNB
|
||||||
|
AND GOS.SOPMAL_CD = GOIO.SOPMAL_CD
|
||||||
|
INNER JOIN GC_GOODS_OPTION GGO
|
||||||
|
ON GGO.GOODS_OPTN_INNB = GOIO.GOODS_OPTN_INNB
|
||||||
|
AND GGO.GOODS_INNB = GOI.GOODS_INNB
|
||||||
|
AND GGO.SOPMAL_CD = GO.SOPMAL_CD
|
||||||
|
LEFT JOIN GC_GOODS_COST GGC
|
||||||
|
ON GGC.STDR_DE = (
|
||||||
|
SELECT MAX(GGC.STDR_DE)
|
||||||
|
FROM GC_GOODS_COST GGC
|
||||||
|
WHERE GGC.STDR_DE <![CDATA[<=]]> GO.ORDR_RCEPT_DT
|
||||||
|
)
|
||||||
|
WHERE 1 = 1
|
||||||
|
AND GOIO.ORDR_STTUS_CD = #{srchOrdrSttusCd}
|
||||||
|
AND GO.SOPMAL_CD = #{sopmalCd}
|
||||||
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(dlvylcAreaCds)">
|
||||||
|
AND GOS.DLVYLC_AREA_CD IN
|
||||||
|
<foreach collection="dlvylcAreaCds" item="dlvylcAreaCd" open="(" separator="," close=")">
|
||||||
|
#{dlvylcAreaCd}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(excelInclude, 'N')">
|
||||||
|
AND GOS.EXCEL_DOWN_DT IS NULL
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 발주서 목록 조회 -->
|
||||||
|
<select id="selectExcelListPurchOrder" parameterType="com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrSrchVO" resultType="dataMap">
|
||||||
|
SELECT *
|
||||||
|
FROM (
|
||||||
|
SELECT CAST(@ROWNUM:=@ROWNUM+1 AS UNSIGNED) AS RNUM,
|
||||||
|
TB.*
|
||||||
|
FROM (
|
||||||
|
SELECT
|
||||||
|
GO.ORDR_RCEPT_DT,
|
||||||
|
'UNIHAN' AS ENTRPS_CD,
|
||||||
|
'UNIHAN CO.,LTD.' AS ENTRPS_NM,
|
||||||
|
'03-5990-2880' AS ENTRPS_TEL,
|
||||||
|
'RM.302,YOTSUYA-AKEBONOBASHI BLDG.,2-14, SUMIYOSHI-CHO, SHINJUKU-KU, TOKYO, 162-0065, JAPAN' AS ENTRPS_ADRES,
|
||||||
|
NULL AS SPCL_CSTMCLER_ENTRPS,
|
||||||
|
NULL AS SPCL_CSTMCLER_CD,
|
||||||
|
GO.ORDR_INNB,
|
||||||
|
1 AS PURPS_DV,
|
||||||
|
GOS.RECPNT_NM,
|
||||||
|
CAST(AES_DECRYPT(UNHEX(GOS.RECPNT_MBTLNB) , #{secretKey}) AS CHAR(50)) AS RECPNT_MBTLNB,
|
||||||
|
NULL AS RECPNT_HP,
|
||||||
|
GOS.CSTMCLER_CD,
|
||||||
|
GOS.DLVYLC_ZIP,
|
||||||
|
CASE
|
||||||
|
WHEN GOS.DLVYLC_ADRES_DV_CD = '01'
|
||||||
|
THEN GOS.DLVYLC_RNM_ADRES
|
||||||
|
ELSE GOS.DLVYLC_LNB_ADRES
|
||||||
|
END DLVYLC_RNM_LNB_ADRES,
|
||||||
|
GOS.DLVYLC_ADRES_DTL,
|
||||||
|
GOS.DLVY_MSSAGE_CN,
|
||||||
|
'www.sake1jan.com' AS CSTMR_PURCHS_SITE,
|
||||||
|
GOIO.REAL_WT,
|
||||||
|
GOIO.PACKAGE_CNT,
|
||||||
|
GOIO.HSCODE,
|
||||||
|
'A' AS CMMRC_TY,
|
||||||
|
CONCAT(GOI.GOODS_NM_EN, ' ', GOIO.OPTN_NM_1, '-', GOIO.OPTN_VAL_1) AS CN,
|
||||||
|
/*원가 관리 시작*/
|
||||||
|
GOIO.SLEPRIC,
|
||||||
|
GOS.DFT_DLVY_AMT,
|
||||||
|
GGC.CSTMS_FEE,
|
||||||
|
(
|
||||||
|
(GOIO.SLEPRIC + GOS.DFT_DLVY_AMT)
|
||||||
|
* GGC.PLTFOM_FEE
|
||||||
|
* GGC.EXPCT_TAX
|
||||||
|
) AS EXPCT_TAX_AMT,
|
||||||
|
GGC.EXPCT_TAX,
|
||||||
|
GGC.KR_DLVY_CT,
|
||||||
|
GGC.PLTFOM_FEE,
|
||||||
|
GGC.USD_RATE,
|
||||||
|
GGO.TAXABLE_USD AS UNIT_VALUE,
|
||||||
|
/*원가 관리 종료*/
|
||||||
|
GOIO.ORDR_QY,
|
||||||
|
GGO.TAXABLE_USD * GOIO.ORDR_QY AS VALUE,
|
||||||
|
NULL AS BRAND,
|
||||||
|
NULL AS PRE_FOOD_DCL,
|
||||||
|
NULL AS PROVD_NATION,
|
||||||
|
NULL AS PROVD_CMPNY_NM,
|
||||||
|
NULL AS CHNLNG_GOODS_NM,
|
||||||
|
NULL AS SHIPPER_PURCHS_SITE,
|
||||||
|
NULL AS SLE_AGNT_ENTRPS_NM,
|
||||||
|
NULL AS SLE_AGNT_ENTRPS_REGIST_CD,
|
||||||
|
NULL AS PURCHS_DLVY_AGENCY_NM,
|
||||||
|
NULL AS PURCHS_DLVY_AGENCY_REGIST_CD,
|
||||||
|
NULL AS OVSEA_SELER_NM,
|
||||||
|
GOS.ORDR_DLVY_INNB AS OVSEA_SELER_REGIST_CD,
|
||||||
|
CONCAT(GO.SUBSVC_AT, GOS.DLVYLC_AREA_CD, GOS.ORDR_DLVY_INNB) AS SITE_ORDR_INNB,
|
||||||
|
GOS.EXCEL_DOWN_DT,
|
||||||
|
/*아래부터는 발주서에 포함되지 않음*/
|
||||||
|
GO.ORDR_STTUS_CD,
|
||||||
|
GOI.ORDR_GOODS_INNB,
|
||||||
|
GOI.GOODS_INNB,
|
||||||
|
GOI.GOODS_NM,
|
||||||
|
GOIO.ORDR_GOODS_OPTN_INNB,
|
||||||
|
GOIO.GOODS_OPTN_INNB,
|
||||||
|
GOS.DLVYLC_AREA_CD,
|
||||||
|
GGC.STDR_DE
|
||||||
|
FROM GC_ORDER GO
|
||||||
|
INNER JOIN GC_ORDER_ITEM GOI
|
||||||
|
ON GOI.ORDR_INNB = GO.ORDR_INNB
|
||||||
|
AND GOI.SOPMAL_CD = GO.SOPMAL_CD
|
||||||
|
INNER JOIN GC_ORDER_ITEM_OPTION GOIO
|
||||||
|
ON GOIO.ORDR_GOODS_INNB = GOI.ORDR_GOODS_INNB
|
||||||
|
AND GOIO.SOPMAL_CD = GOI.SOPMAL_CD
|
||||||
|
INNER JOIN GC_ORDER_SHIPPING GOS
|
||||||
|
ON GOS.ORDR_DLVY_INNB = GOIO.ORDR_DLVY_INNB
|
||||||
|
AND GOS.SOPMAL_CD = GOIO.SOPMAL_CD
|
||||||
|
INNER JOIN GC_GOODS_OPTION GGO
|
||||||
|
ON GGO.GOODS_OPTN_INNB = GOIO.GOODS_OPTN_INNB
|
||||||
|
AND GGO.GOODS_INNB = GOI.GOODS_INNB
|
||||||
|
AND GGO.SOPMAL_CD = GO.SOPMAL_CD
|
||||||
|
LEFT JOIN GC_GOODS_COST GGC
|
||||||
|
ON GGC.STDR_DE = (
|
||||||
|
SELECT MAX(GGC.STDR_DE)
|
||||||
|
FROM GC_GOODS_COST GGC
|
||||||
|
WHERE GGC.STDR_DE <![CDATA[<=]]> GO.ORDR_RCEPT_DT
|
||||||
|
)
|
||||||
|
WHERE 1 = 1
|
||||||
|
AND GOIO.ORDR_STTUS_CD = #{srchOrdrSttusCd}
|
||||||
|
AND GO.SOPMAL_CD = #{sopmalCd}
|
||||||
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isNotEmpty(dlvylcAreaCds)">
|
||||||
|
AND GOS.DLVYLC_AREA_CD IN
|
||||||
|
<foreach collection="dlvylcAreaCds" item="dlvylcAreaCd" open="(" separator="," close=")">
|
||||||
|
#{dlvylcAreaCd}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
<if test="@com.wb.domainserver.util.dataaccess.MybaitsUtil@isEquals(excelInclude, 'N')">
|
||||||
|
AND GOS.EXCEL_DOWN_DT IS NULL
|
||||||
|
</if>
|
||||||
|
ORDER BY GOS.CSTMCLER_CD ASC
|
||||||
|
) TB
|
||||||
|
WHERE (@rownum:=0)=0
|
||||||
|
) PV
|
||||||
|
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 발주서 엑셀다운로드 -->
|
||||||
|
<select id="selectExcelPoListDwld" parameterType="com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrSrchVO" resultType="dataMap">
|
||||||
|
SELECT
|
||||||
|
SYSDATE() AS ORDR_RCEPT_DT,
|
||||||
|
'UNIHAN' AS ENTRPS_CD,
|
||||||
|
'UNIHAN CO.,LTD.' AS ENTRPS_NM,
|
||||||
|
'03-5990-2880' AS ENTRPS_TEL,
|
||||||
|
'RM.302,YOTSUYA-AKEBONOBASHI BLDG.,2-14, SUMIYOSHI-CHO, SHINJUKU-KU, TOKYO, 162-0065, JAPAN' AS ENTRPS_ADRES,
|
||||||
|
NULL AS SPCL_CSTMCLER_ENTRPS,
|
||||||
|
NULL AS SPCL_CSTMCLER_CD,
|
||||||
|
CONCAT(GO.ORDR_INNB, 'A', GOS.ORDR_DLVY_INNB) AS ORDR_INNB,
|
||||||
|
1 AS PURPS_DV,
|
||||||
|
GOS.RECPNT_NM,
|
||||||
|
CAST(AES_DECRYPT(UNHEX(GOS.RECPNT_MBTLNB) , #{secretKey}) AS CHAR(50)) AS RECPNT_MBTLNB,
|
||||||
|
NULL AS RECPNT_HP,
|
||||||
|
GOS.CSTMCLER_CD,
|
||||||
|
GOS.DLVYLC_ZIP,
|
||||||
|
CASE
|
||||||
|
WHEN GOS.DLVYLC_ADRES_DV_CD = '01'
|
||||||
|
THEN GOS.DLVYLC_RNM_ADRES
|
||||||
|
ELSE GOS.DLVYLC_LNB_ADRES
|
||||||
|
END DLVYLC_RNM_LNB_ADRES,
|
||||||
|
GOS.DLVYLC_ADRES_DTL,
|
||||||
|
GOS.DLVY_MSSAGE_CN,
|
||||||
|
'www.sake1jan.com' AS CSTMR_PURCHS_SITE,
|
||||||
|
GOIO.REAL_WT,
|
||||||
|
GOIO.PACKAGE_CNT,
|
||||||
|
GOIO.HSCODE,
|
||||||
|
'A' AS CMMRC_TY,
|
||||||
|
CONCAT(GOI.GOODS_NM_EN, ' ', GOIO.OPTN_NM_1, '-', GOIO.OPTN_VAL_1) AS CN,
|
||||||
|
/*원가 관리 시작*/
|
||||||
|
GOIO.SLEPRIC,
|
||||||
|
GOS.DFT_DLVY_AMT,
|
||||||
|
GGC.CSTMS_FEE,
|
||||||
|
(
|
||||||
|
(GOIO.SLEPRIC + GOS.DFT_DLVY_AMT)
|
||||||
|
* GGC.PLTFOM_FEE
|
||||||
|
* GGC.EXPCT_TAX
|
||||||
|
) AS EXPCT_TAX_AMT,
|
||||||
|
GGC.EXPCT_TAX,
|
||||||
|
GGC.KR_DLVY_CT,
|
||||||
|
GGC.PLTFOM_FEE,
|
||||||
|
GGC.USD_RATE,
|
||||||
|
GGO.TAXABLE_USD AS UNIT_VALUE,
|
||||||
|
/*원가 관리 종료*/
|
||||||
|
GOIO.ORDR_QY,
|
||||||
|
GGO.TAXABLE_USD * GOIO.ORDR_QY AS VALUE,
|
||||||
|
NULL AS BRAND,
|
||||||
|
NULL AS PRE_FOOD_DCL,
|
||||||
|
NULL AS PROVD_NATION,
|
||||||
|
NULL AS PROVD_CMPNY_NM,
|
||||||
|
NULL AS CHNLNG_GOODS_NM,
|
||||||
|
NULL AS SHIPPER_PURCHS_SITE,
|
||||||
|
NULL AS SLE_AGNT_ENTRPS_NM,
|
||||||
|
NULL AS SLE_AGNT_ENTRPS_REGIST_CD,
|
||||||
|
NULL AS PURCHS_DLVY_AGENCY_NM,
|
||||||
|
NULL AS PURCHS_DLVY_AGENCY_REGIST_CD,
|
||||||
|
NULL AS OVSEA_SELER_NM,
|
||||||
|
GOS.ORDR_DLVY_INNB AS OVSEA_SELER_REGIST_CD,
|
||||||
|
CONCAT(GO.SUBSVC_AT, GOS.DLVYLC_AREA_CD, GOS.ORDR_DLVY_INNB) AS SITE_ORDR_INNB,
|
||||||
|
GOS.EXCEL_DOWN_DT,
|
||||||
|
/*아래부터는 발주서에 포함되지 않음*/
|
||||||
|
GO.ORDR_STTUS_CD,
|
||||||
|
GOI.ORDR_GOODS_INNB,
|
||||||
|
GOI.GOODS_INNB,
|
||||||
|
GOI.GOODS_NM,
|
||||||
|
GOIO.ORDR_GOODS_OPTN_INNB,
|
||||||
|
GOIO.GOODS_OPTN_INNB,
|
||||||
|
GOS.DLVYLC_AREA_CD,
|
||||||
|
GGC.STDR_DE
|
||||||
|
FROM GC_ORDER GO
|
||||||
|
INNER JOIN GC_ORDER_ITEM GOI
|
||||||
|
ON GOI.ORDR_INNB = GO.ORDR_INNB
|
||||||
|
AND GOI.SOPMAL_CD = GO.SOPMAL_CD
|
||||||
|
INNER JOIN GC_ORDER_ITEM_OPTION GOIO
|
||||||
|
ON GOIO.ORDR_GOODS_INNB = GOI.ORDR_GOODS_INNB
|
||||||
|
AND GOIO.SOPMAL_CD = GOI.SOPMAL_CD
|
||||||
|
INNER JOIN GC_ORDER_SHIPPING GOS
|
||||||
|
ON GOS.ORDR_DLVY_INNB = GOIO.ORDR_DLVY_INNB
|
||||||
|
AND GOS.SOPMAL_CD = GOIO.SOPMAL_CD
|
||||||
|
INNER JOIN GC_GOODS_OPTION GGO
|
||||||
|
ON GGO.GOODS_OPTN_INNB = GOIO.GOODS_OPTN_INNB
|
||||||
|
AND GGO.GOODS_INNB = GOI.GOODS_INNB
|
||||||
|
AND GGO.SOPMAL_CD = GO.SOPMAL_CD
|
||||||
|
LEFT JOIN GC_GOODS_COST GGC
|
||||||
|
ON GGC.STDR_DE = (
|
||||||
|
SELECT MAX(GGC.STDR_DE)
|
||||||
|
FROM GC_GOODS_COST GGC
|
||||||
|
WHERE GGC.STDR_DE <![CDATA[<=]]> GO.ORDR_RCEPT_DT
|
||||||
|
)
|
||||||
|
WHERE 1 = 1
|
||||||
|
AND GOIO.ORDR_STTUS_CD = #{srchOrdrSttusCd}
|
||||||
|
AND GO.SOPMAL_CD = #{sopmalCd}
|
||||||
|
AND <foreach collection="srchInnbPairs" item="pair" index="index" open="(" separator=" OR " close=")">
|
||||||
|
(
|
||||||
|
GOS.ORDR_INNB = #{pair.srchOrdrInnb}
|
||||||
|
AND GOS.ORDR_DLVY_INNB = #{pair.srchOrdrDlvyInnb}
|
||||||
|
)
|
||||||
|
</foreach>
|
||||||
|
ORDER BY GOS.CSTMCLER_CD ASC
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 엑셀 다운로드 일시 업데이트 -->
|
||||||
|
<update id="updateExcelDownDt" parameterType="com.wb.domainserver.domain.gcone.ordr.ordr.vo.BOOrdrSrchVO">
|
||||||
|
UPDATE GC_ORDER_SHIPPING GOS
|
||||||
|
SET GOS.EXCEL_DOWN_DT = SYSDATE()
|
||||||
|
WHERE <foreach collection="srchInnbPairs" item="pair" index="index" open="(" separator=" OR " close=")">
|
||||||
|
(
|
||||||
|
GOS.ORDR_INNB = #{pair.srchOrdrInnb}
|
||||||
|
AND GOS.ORDR_DLVY_INNB = #{pair.srchOrdrDlvyInnb}
|
||||||
|
)
|
||||||
|
</foreach>
|
||||||
|
</update>
|
||||||
|
<!--
|
||||||
|
####################################
|
||||||
|
관리자 > 주문 > 주문관리 > 발주서 관리 종료
|
||||||
|
####################################
|
||||||
|
-->
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
####################################
|
####################################
|
||||||
관리자 > 주문 > 개인결제관리 시작
|
관리자 > 주문 > 개인결제관리 시작
|
||||||
|
|||||||
@@ -0,0 +1,57 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.wb.domainserver.domain.gcone.setup.cost.mapper.BOCostMapper">
|
||||||
|
|
||||||
|
<!--원가 설정 목록 조회-->
|
||||||
|
<select id="selectBOCostPriceList"
|
||||||
|
parameterType="com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO"
|
||||||
|
resultType="dataMap">
|
||||||
|
SELECT CT_INNB
|
||||||
|
, STDR_DE
|
||||||
|
, USD_RATE
|
||||||
|
, JP_DLVY_CT
|
||||||
|
, INTL_DLVY_AMT
|
||||||
|
, PLTFOM_FEE
|
||||||
|
, EXPCT_TAX
|
||||||
|
, CSTMS_FEE
|
||||||
|
, KR_DLVY_CT
|
||||||
|
FROM GC_GOODS_COST
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 원가 설정 삭제 -->
|
||||||
|
<delete id="deleteBOCostPrice"
|
||||||
|
parameterType="com.wb.domainserver.domain.gcone.setup.cost.vo.BOCostVO" >
|
||||||
|
DELETE FROM
|
||||||
|
GC_GOODS_COST
|
||||||
|
WHERE 1=1
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
<!-- 원가 설정 등록 -->
|
||||||
|
<insert id="insertBOCostPrice"
|
||||||
|
parameterType="DataMap" >
|
||||||
|
<selectKey order="BEFORE" keyProperty="ctInnb" resultType="integer">
|
||||||
|
SELECT IFNULL(MAX(CT_INNB), 0) + 1
|
||||||
|
FROM GC_GOODS_COST
|
||||||
|
</selectKey>
|
||||||
|
INSERT INTO GC_GOODS_COST (
|
||||||
|
CT_INNB,
|
||||||
|
STDR_DE,
|
||||||
|
USD_RATE,
|
||||||
|
JP_DLVY_CT,
|
||||||
|
INTL_DLVY_AMT,
|
||||||
|
PLTFOM_FEE,
|
||||||
|
EXPCT_TAX,
|
||||||
|
CSTMS_FEE,
|
||||||
|
KR_DLVY_CT
|
||||||
|
) VALUES (
|
||||||
|
#{ctInnb},
|
||||||
|
#{stdrDe},
|
||||||
|
#{usdRate},
|
||||||
|
#{jpDlvyCt},
|
||||||
|
#{intlDlvyAmt},
|
||||||
|
#{pltfomFee},
|
||||||
|
#{expctTax},
|
||||||
|
#{cstmsFee},
|
||||||
|
#{krDlvyCt}
|
||||||
|
)
|
||||||
|
</insert>
|
||||||
|
</mapper>
|
||||||
@@ -3003,7 +3003,11 @@ FROM (
|
|||||||
) CPN ON GOODS.SOPMAL_CD = CPN.SOPMAL_CD
|
) CPN ON GOODS.SOPMAL_CD = CPN.SOPMAL_CD
|
||||||
AND GOODS.GOODS_INNB = CPN.GOODS_INNB
|
AND GOODS.GOODS_INNB = CPN.GOODS_INNB
|
||||||
WHERE 1 = 1
|
WHERE 1 = 1
|
||||||
ORDER BY GOODS.RELM_DV_CD , GOODS.S_ORDR, GOODS.I_ORDR, GOODS.EXPSR_ORDR
|
ORDER BY GOODS.RELM_DV_CD
|
||||||
|
, GOODS.S_ORDR
|
||||||
|
, GOODS.I_ORDR
|
||||||
|
, CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, GOODS.EXPSR_ORDR
|
||||||
|
|
||||||
|
|
||||||
]]>
|
]]>
|
||||||
@@ -3905,7 +3909,11 @@ FROM (
|
|||||||
) CPN ON GOODS.SOPMAL_CD = CPN.SOPMAL_CD
|
) CPN ON GOODS.SOPMAL_CD = CPN.SOPMAL_CD
|
||||||
AND GOODS.GOODS_INNB = CPN.GOODS_INNB
|
AND GOODS.GOODS_INNB = CPN.GOODS_INNB
|
||||||
WHERE 1 = 1
|
WHERE 1 = 1
|
||||||
ORDER BY GOODS.RELM_DV_CD , GOODS.S_ORDR, GOODS.I_ORDR, GOODS.GOODS_ORDR
|
ORDER BY GOODS.RELM_DV_CD
|
||||||
|
, GOODS.S_ORDR
|
||||||
|
, GOODS.I_ORDR
|
||||||
|
, CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
, GOODS.GOODS_ORDR
|
||||||
|
|
||||||
|
|
||||||
]]>
|
]]>
|
||||||
@@ -4954,7 +4962,10 @@ FROM (
|
|||||||
) CPN ON GOODS.SOPMAL_CD = CPN.SOPMAL_CD
|
) CPN ON GOODS.SOPMAL_CD = CPN.SOPMAL_CD
|
||||||
AND GOODS.GOODS_INNB = CPN.GOODS_INNB
|
AND GOODS.GOODS_INNB = CPN.GOODS_INNB
|
||||||
WHERE 1 = 1
|
WHERE 1 = 1
|
||||||
ORDER BY GOODS.RELM_DV_CD , GOODS.S_ORDR, GOODS.I_ORDR
|
ORDER BY GOODS.RELM_DV_CD
|
||||||
|
, GOODS.S_ORDR
|
||||||
|
, GOODS.I_ORDR
|
||||||
|
, CASE GOODS.GOODS_STTUS_CD WHEN '01' THEN 0 WHEN '02' THEN 1 WHEN '03' THEN 2 ELSE 3 END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 4.4 KiB |
@@ -4269,6 +4269,9 @@ body {
|
|||||||
.header--sub:has(.headerTab) ~ .content-wrap {
|
.header--sub:has(.headerTab) ~ .content-wrap {
|
||||||
padding-top: 96px;
|
padding-top: 96px;
|
||||||
}
|
}
|
||||||
|
.header--sub:has(.mobile-about-menu) ~ .content-wrap {
|
||||||
|
padding-top: 96px;
|
||||||
|
}
|
||||||
.header--sub::before {
|
.header--sub::before {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -5706,6 +5709,17 @@ body {
|
|||||||
color: #16191d;
|
color: #16191d;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
}
|
}
|
||||||
|
.mainNotice__customerContact-alwaysonbottom {
|
||||||
|
position: fixed;
|
||||||
|
left: 10px;
|
||||||
|
bottom: 60px;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
.icon_kakao-customer-service {
|
||||||
|
width: 72px;
|
||||||
|
height: 72px;
|
||||||
|
background-image: url(../images/icon_kakao_customer.png);
|
||||||
|
}
|
||||||
|
|
||||||
.notice__title {
|
.notice__title {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@@ -14740,4 +14754,4 @@ body {
|
|||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
padding: 14px 28px;
|
padding: 14px 28px;
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
}/*# sourceMappingURL=default.css.map */
|
}/*# sourceMappingURL=default.css.map */
|
||||||
|
|||||||
BIN
src/main/resources/static/mobile/images/icon_kakao_customer.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
@@ -5560,20 +5560,36 @@ main {
|
|||||||
}
|
}
|
||||||
.quick-menu__customer-service {
|
.quick-menu__customer-service {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.quick-menu__customer-service__num {
|
.quick-menu__customer-service__num {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 24px;
|
top: 80%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
transform: translateX(-50%);
|
width: 100%;
|
||||||
font-size: 24px;
|
transform: translate(-50%, -50%);
|
||||||
|
font-size: 14px;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
color: #212529;
|
color: #212529;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.quick-menu__customer-service-alwaysonbottom {
|
||||||
|
position: fixed;
|
||||||
|
left: 20px;
|
||||||
|
bottom: 20px;
|
||||||
|
z-index: 10;
|
||||||
}
|
}
|
||||||
.quick-menu > * + * {
|
.quick-menu > * + * {
|
||||||
margin-top: 16px;
|
margin-top: 16px;
|
||||||
}
|
}
|
||||||
|
.icon_kakao-customer-service {
|
||||||
|
width: 108px;
|
||||||
|
height: 108px;
|
||||||
|
background-image: url(../images/icon_kakao_customer.png);
|
||||||
|
/* 이미지 그림자 */
|
||||||
|
filter: drop-shadow(0px 3px 4px rgba(0, 0, 0, 0.15));
|
||||||
|
}
|
||||||
|
|
||||||
.recentProductSlick {
|
.recentProductSlick {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
BIN
src/main/resources/static/pc/images/icon_kakao_customer.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
@@ -1286,6 +1286,13 @@
|
|||||||
searches.shift(); // 6개를 초과하면 가장 오래된 검색어를 제거
|
searches.shift(); // 6개를 초과하면 가장 오래된 검색어를 제거
|
||||||
}
|
}
|
||||||
localStorage.setItem('recentSearches', JSON.stringify(searches));
|
localStorage.setItem('recentSearches', JSON.stringify(searches));
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: 'post',
|
||||||
|
url: '<c:url value="/sopmal/goods/insertSrchwrdLog"/>',
|
||||||
|
data: { srchStr : param},
|
||||||
|
success: function () {}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,6 +53,42 @@
|
|||||||
<!-- 스크립트 -->
|
<!-- 스크립트 -->
|
||||||
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
|
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
|
||||||
<script src="<c:url value='/js/sopmal/common.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='/pc/js/script.js'/>" defer></script>
|
||||||
<script src="<c:url value='/js/sopmal/gcone.js'/>"></script>
|
<script src="<c:url value='/js/sopmal/gcone.js'/>"></script>
|
||||||
|
|
||||||
@@ -488,4 +524,11 @@
|
|||||||
<!--로딩영역-->
|
<!--로딩영역-->
|
||||||
<div class="loadingImg" style="display:none; position: relative; z-index: 1010;">
|
<div class="loadingImg" style="display:none; position: relative; z-index: 1010;">
|
||||||
<div class="loding_popup_wrap"><img src="/mobile/images/loading.svg" alt="loading"></div>
|
<div class="loding_popup_wrap"><img src="/mobile/images/loading.svg" alt="loading"></div>
|
||||||
|
</div>
|
||||||
|
<!--고객센터 아이콘-->
|
||||||
|
<div class="quick-menu__customer-service-alwaysonbottom"
|
||||||
|
onclick="window.open('http://pf.kakao.com/_xjxjHxnX', '_blank');">
|
||||||
|
<i class="icon icon_kakao-customer-service"></i>
|
||||||
|
<span class="visually-hidden">고객센터</span>
|
||||||
|
<%-- <span class="quick-menu__customer-service__num">문의는 카톡으로 </span>--%>
|
||||||
</div>
|
</div>
|
||||||
@@ -35,10 +35,32 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<c:if test="${param.mobileAboutMenuAt eq 'Y' && not empty param.mobileParentCtgryId}">
|
||||||
|
<c:set var="mobileAboutCurrentCtgryId" value="${param.mobileCurrentCtgryId}"/>
|
||||||
|
<nav class="home-category mobile-about-menu" aria-label="하위 메뉴">
|
||||||
|
<div class="home-category__content">
|
||||||
|
<ul class="home-category__list">
|
||||||
|
<c:forEach var="topMenuList" items="${sopmallInfo.menuList}">
|
||||||
|
<c:if test="${topMenuList.ctgryDvCd eq '01' && topMenuList.rnum eq '3' && topMenuList.upperCtgryId eq param.mobileParentCtgryId && topMenuList.menuExpsrAt eq 'Y'}">
|
||||||
|
<c:if test="${empty mobileAboutCurrentCtgryId}">
|
||||||
|
<c:set var="mobileAboutCurrentCtgryId" value="${topMenuList.ctgryId}"/>
|
||||||
|
</c:if>
|
||||||
|
<li class="home-category__item<c:if test="${topMenuList.ctgryId eq mobileAboutCurrentCtgryId}"> active</c:if>">
|
||||||
|
<a href="<c:out value="${topMenuList.url}"/><c:choose><c:when test="${fn:contains(topMenuList.url, '?')}">&</c:when><c:otherwise>?</c:otherwise></c:choose>mobileParentCtgryId=<c:out value="${param.mobileParentCtgryId}"/>&mobileAboutMenuAt=Y&mobileCurrentCtgryId=<c:out value="${topMenuList.ctgryId}"/>"
|
||||||
|
class="home-category__link">
|
||||||
|
<c:out value="${topMenuList.ctgryNm}"/>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</c:if>
|
||||||
|
</c:forEach>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</c:if>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
//뒤로가기 이벤트 부여, 각 페이지 마다 이벤트 삭제 후 다른 이벤트 사용 가능
|
//뒤로가기 이벤트 부여, 각 페이지 마다 이벤트 삭제 후 다른 이벤트 사용 가능
|
||||||
$(".header__toBack__btn").on("click",function (){
|
$(".header__toBack__btn").on("click",function (){
|
||||||
fn_go_back();
|
fn_go_back();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -32,6 +32,42 @@
|
|||||||
<!-- 스크립트 -->
|
<!-- 스크립트 -->
|
||||||
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
|
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
|
||||||
<script src="/mobile/js/script.js" defer=""></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="<c:url value='/js/gcone.js'/>"></script>
|
||||||
|
|
||||||
<script src="/mobile/js/bottom-sheet.js" defer=""></script>
|
<script src="/mobile/js/bottom-sheet.js" defer=""></script>
|
||||||
@@ -513,6 +549,13 @@
|
|||||||
searches.shift(); // 6개를 초과하면 가장 오래된 검색어를 제거
|
searches.shift(); // 6개를 초과하면 가장 오래된 검색어를 제거
|
||||||
}
|
}
|
||||||
localStorage.setItem('recentSearches', JSON.stringify(searches));
|
localStorage.setItem('recentSearches', JSON.stringify(searches));
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: 'post',
|
||||||
|
url: '<c:url value="/sopmal/goods/insertSrchwrdLog"/>',
|
||||||
|
data: { srchStr : param},
|
||||||
|
success: function () {}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1027,10 +1070,11 @@
|
|||||||
<c:if test="${topMenuList.gnbExpsrAt eq 'Y'}">
|
<c:if test="${topMenuList.gnbExpsrAt eq 'Y'}">
|
||||||
<c:if test="${topMenuList.rnum eq '2'}">
|
<c:if test="${topMenuList.rnum eq '2'}">
|
||||||
<c:set var="mDpth3Chk" value="N"/>
|
<c:set var="mDpth3Chk" value="N"/>
|
||||||
|
<c:set var="mobileAboutParentAt" value="${topMenuList.ctgryNm eq 'ABOUT'}"/>
|
||||||
<li class="isSub list">
|
<li class="isSub list">
|
||||||
<div class="isSubDv">
|
<div class="isSubDv">
|
||||||
<a href="<c:out value="${topMenuList.url}"/>" class="depth"><c:out value ="${topMenuList.ctgryNm}"/><em class="visually-hidden">상세내용닫기</em></a>
|
<a href="<c:out value="${topMenuList.url}"/><c:choose><c:when test="${fn:contains(topMenuList.url, '?')}">&</c:when><c:otherwise>?</c:otherwise></c:choose>mobileParentCtgryId=<c:out value="${topMenuList.ctgryId}"/><c:if test="${topMenuList.ctgryNm eq 'ABOUT'}">&mobileAboutMenuAt=Y</c:if>" class="depth"><c:out value ="${topMenuList.ctgryNm}"/><em class="visually-hidden">상세내용닫기</em></a>
|
||||||
<a href="<c:out value="${topMenuList.url}"/>" class="moer"></a>
|
<a href="<c:out value="${topMenuList.url}"/><c:choose><c:when test="${fn:contains(topMenuList.url, '?')}">&</c:when><c:otherwise>?</c:otherwise></c:choose>mobileParentCtgryId=<c:out value="${topMenuList.ctgryId}"/><c:if test="${topMenuList.ctgryNm eq 'ABOUT'}">&mobileAboutMenuAt=Y</c:if>" class="moer"></a>
|
||||||
</div>
|
</div>
|
||||||
</c:if>
|
</c:if>
|
||||||
<c:if test="${topMenuList.rnum eq '3'}">
|
<c:if test="${topMenuList.rnum eq '3'}">
|
||||||
@@ -1039,7 +1083,7 @@
|
|||||||
<c:set var="mDpth3Chk" value="Y"/>
|
<c:set var="mDpth3Chk" value="Y"/>
|
||||||
<ul class="view">
|
<ul class="view">
|
||||||
</c:if>
|
</c:if>
|
||||||
<li><a href='<c:out value="${topMenuList.url}"/>'><c:out value ="${topMenuList.ctgryNm}"/></a></li>
|
<li><a href="<c:out value="${topMenuList.url}"/><c:choose><c:when test="${fn:contains(topMenuList.url, '?')}">&</c:when><c:otherwise>?</c:otherwise></c:choose>mobileParentCtgryId=<c:out value="${topMenuList.upperCtgryId}"/>&mobileCurrentCtgryId=<c:out value="${topMenuList.ctgryId}"/><c:if test="${mobileAboutParentAt}">&mobileAboutMenuAt=Y</c:if>"><c:out value ="${topMenuList.ctgryNm}"/></a></li>
|
||||||
</c:if>
|
</c:if>
|
||||||
<c:if test="${topMenuList.rnum < 4}">
|
<c:if test="${topMenuList.rnum < 4}">
|
||||||
<c:set var="chkUpperMenuCd" value="${topMenuList.upperCtgryId}"/>
|
<c:set var="chkUpperMenuCd" value="${topMenuList.upperCtgryId}"/>
|
||||||
@@ -1190,6 +1234,12 @@
|
|||||||
|
|
||||||
<div id="mbrMarktClauseAgreeDiv"></div>
|
<div id="mbrMarktClauseAgreeDiv"></div>
|
||||||
|
|
||||||
|
<%--고객센터 아이콘--%>
|
||||||
|
<div class="mainNotice__customerContact-alwaysonbottom" style="display: none;"
|
||||||
|
onclick="window.open('http://pf.kakao.com/_xjxjHxnX', '_blank');">
|
||||||
|
<i class="icon icon_kakao-customer-service"></i>
|
||||||
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
/*최초 로그인시 마케팅 수신동의를 받지 않았을 경우 마케팅 수신동의 팝업 띄우기*/
|
/*최초 로그인시 마케팅 수신동의를 받지 않았을 경우 마케팅 수신동의 팝업 띄우기*/
|
||||||
@@ -1228,6 +1278,16 @@ $(document).ready(function() {
|
|||||||
if(locationUrl.includes("selectMbrPurchsForm")){
|
if(locationUrl.includes("selectMbrPurchsForm")){
|
||||||
document.cookie = 'marktAgreeAt=P; path=/'
|
document.cookie = 'marktAgreeAt=P; path=/'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
var $notice = $('.mainNotice__customerContact-alwaysonbottom');
|
||||||
|
|
||||||
|
if ($('.tab-bar').length) {
|
||||||
|
$notice.fadeIn(500);
|
||||||
|
} else if ($('.productDetail').length) {
|
||||||
|
$notice.css('bottom', '70px').fadeIn(500);
|
||||||
|
}
|
||||||
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
//광고 수신동의여부 수정
|
//광고 수신동의여부 수정
|
||||||
@@ -1265,4 +1325,4 @@ $(document).on('click', '[name^="globalMbrMarktAgreeAt"]',function() {
|
|||||||
|
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -66,7 +66,7 @@
|
|||||||
<c:if test="${topMenuList.ctgryDvCd eq '01' && topMenuList.menuExpsrAt eq 'Y'}">
|
<c:if test="${topMenuList.ctgryDvCd eq '01' && topMenuList.menuExpsrAt eq 'Y'}">
|
||||||
<c:if test="${topMenuList.rnum eq '2'}">
|
<c:if test="${topMenuList.rnum eq '2'}">
|
||||||
<li class="home-category__item">
|
<li class="home-category__item">
|
||||||
<a href="<c:out value="${topMenuList.url}"/>" onclick="setTopMenuCode()" <c:if test="${not empty topMenuList.menuChrColor}"> style="color:${topMenuList.menuChrColor};"</c:if>><c:out value ="${topMenuList.ctgryNm}"/></a>
|
<a href="<c:out value="${topMenuList.url}"/><c:choose><c:when test="${fn:contains(topMenuList.url, '?')}">&</c:when><c:otherwise>?</c:otherwise></c:choose>mobileParentCtgryId=<c:out value="${topMenuList.ctgryId}"/><c:if test="${topMenuList.ctgryNm eq 'ABOUT'}">&mobileAboutMenuAt=Y</c:if>" onclick="setTopMenuCode()" <c:if test="${not empty topMenuList.menuChrColor}"> style="color:${topMenuList.menuChrColor};"</c:if>><c:out value ="${topMenuList.ctgryNm}"/></a>
|
||||||
</li>
|
</li>
|
||||||
</c:if>
|
</c:if>
|
||||||
</c:if>
|
</c:if>
|
||||||
@@ -90,4 +90,4 @@
|
|||||||
$(".top-banner__close").click(function () {
|
$(".top-banner__close").click(function () {
|
||||||
$(".top-banner").remove();
|
$(".top-banner").remove();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
|
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
|
||||||
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
|
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
|
||||||
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||||
<spring:eval expression="@environment.getProperty('currency-unit.default')" var="curUnit"/>
|
<spring:eval expression="@environment.getProperty('currency-unit.default')" var="curUnit"/>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ko">
|
<html lang="ko">
|
||||||
<head>
|
<head>
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case02.goodsSttusCd eq '02'}">
|
<c:when test="${case02.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case02.goodsSttusCd eq '03'}">
|
<c:when test="${case02.goodsSttusCd eq '03'}">
|
||||||
@@ -104,10 +104,10 @@
|
|||||||
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -122,10 +122,10 @@
|
|||||||
<c:if test="${case02.pricExpsrAt eq 'Y'}">
|
<c:if test="${case02.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case02.pricExpsrOrdr-1}" style="order:${case02.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case02.pricExpsrOrdr-1}" style="order:${case02.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit} </span>
|
<span class="product-unit-price__original <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit} </span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case02.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case02.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent"><c:out value="${case02.slePercent}"/>%</span>
|
<span class="percent"><c:out value="${case02.slePercent}"/>%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -260,7 +260,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case04.goodsSttusCd eq '02'}">
|
<c:when test="${case04.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case04.goodsSttusCd eq '03'}">
|
<c:when test="${case04.goodsSttusCd eq '03'}">
|
||||||
@@ -282,10 +282,10 @@
|
|||||||
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -300,10 +300,10 @@
|
|||||||
<c:if test="${case04.pricExpsrAt eq 'Y'}">
|
<c:if test="${case04.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case04.pricExpsrOrdr-1}" style="order:${case04.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case04.pricExpsrOrdr-1}" style="order:${case04.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case04.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case04.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case04.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case04.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case04.slePercent }%</span>
|
<span class="percent">${ case04.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -391,7 +391,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case05.goodsSttusCd eq '02'}">
|
<c:when test="${case05.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case05.goodsSttusCd eq '03'}">
|
<c:when test="${case05.goodsSttusCd eq '03'}">
|
||||||
@@ -414,10 +414,10 @@
|
|||||||
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -432,10 +432,10 @@
|
|||||||
<c:if test="${case05.pricExpsrAt eq 'Y'}">
|
<c:if test="${case05.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case05.pricExpsrOrdr-1}" style="order:${case05.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case05.pricExpsrOrdr-1}" style="order:${case05.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case05.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case05.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case05.slePercent }%</span>
|
<span class="percent">${ case05.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -499,7 +499,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case06.goodsSttusCd eq '02'}">
|
<c:when test="${case06.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case06.goodsSttusCd eq '03'}">
|
<c:when test="${case06.goodsSttusCd eq '03'}">
|
||||||
@@ -521,10 +521,10 @@
|
|||||||
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -539,10 +539,10 @@
|
|||||||
<c:if test="${case06.pricExpsrAt eq 'Y'}">
|
<c:if test="${case06.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case06.pricExpsrOrdr-1}" style="order:${case06.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case06.pricExpsrOrdr-1}" style="order:${case06.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case06.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case06.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case06.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case06.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case06.slePercent }%</span>
|
<span class="percent">${ case06.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -614,10 +614,10 @@
|
|||||||
<c:forEach items="${fn:split(case06.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case06.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -632,10 +632,10 @@
|
|||||||
<c:if test="${case06.pricExpsrAt eq 'Y'}">
|
<c:if test="${case06.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case06.pricExpsrOrdr-1}" style="order:${case06.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case06.pricExpsrOrdr-1}" style="order:${case06.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case06.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case06.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case06.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case06.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case06.slePercent }%</span>
|
<span class="percent">${ case06.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -705,7 +705,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case07.goodsSttusCd eq '02'}">
|
<c:when test="${case07.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case07.goodsSttusCd eq '03'}">
|
<c:when test="${case07.goodsSttusCd eq '03'}">
|
||||||
@@ -727,10 +727,10 @@
|
|||||||
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -745,10 +745,10 @@
|
|||||||
<c:if test="${case07.pricExpsrAt eq 'Y'}">
|
<c:if test="${case07.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case07.pricExpsrOrdr-1}" style="order:${case07.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case07.pricExpsrOrdr-1}" style="order:${case07.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case07.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case07.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case07.slePercent }%</span>
|
<span class="percent">${ case07.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -829,7 +829,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case08.goodsSttusCd eq '02'}">
|
<c:when test="${case08.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case08.goodsSttusCd eq '03'}">
|
<c:when test="${case08.goodsSttusCd eq '03'}">
|
||||||
@@ -863,10 +863,10 @@
|
|||||||
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -881,10 +881,10 @@
|
|||||||
<c:if test="${case08.pricExpsrAt eq 'Y'}">
|
<c:if test="${case08.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case08.pricExpsrOrdr-1}" style="order:${case08.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case08.pricExpsrOrdr-1}" style="order:${case08.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case08.slepric }" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case08.slepric }" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case08.slePercent }%</span>
|
<span class="percent">${ case08.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -986,7 +986,7 @@
|
|||||||
<span class="product-unit-rating__score"><c:out value="${case09.avgEvlScore}" default="0.0"/></span>
|
<span class="product-unit-rating__score"><c:out value="${case09.avgEvlScore}" default="0.0"/></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price">
|
<div class="product-unit-price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case09.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case09.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case09.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case09.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case09.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1027,7 +1027,7 @@
|
|||||||
<c:forEach items="${ resultMap.case10 }" var="case10" varStatus="status">
|
<c:forEach items="${ resultMap.case10 }" var="case10" varStatus="status">
|
||||||
<c:if test="${ relmList.ordr eq case10.sOrdr }">
|
<c:if test="${ relmList.ordr eq case10.sOrdr }">
|
||||||
<div>
|
<div>
|
||||||
<a href="/sopmal/csc/selectBbscttAuth?bbsId=${ case10.bbsId }&bbscttInnb=${ case10.bbscttInnb }">
|
<a href="/sopmal/csc/selectBbscttAuth?authDv=REDNG&reqUrl=detail&bbsId=${ case10.bbsId }&bbscttInnb=${ case10.bbscttInnb }">
|
||||||
<img src="${cdnurl}${ case10.reprsntImgSysFilNm }" alt="해당 이미지에 대한 설명" onerror="this.src='/pc/images/image_placeholder.png'">
|
<img src="${cdnurl}${ case10.reprsntImgSysFilNm }" alt="해당 이미지에 대한 설명" onerror="this.src='/pc/images/image_placeholder.png'">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -1272,13 +1272,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</c:if>
|
</c:if>
|
||||||
</div>
|
</div>
|
||||||
<%-- <div class="quick-menu__customer-service">--%>
|
<%--<div class="quick-menu__customer-service"
|
||||||
<%-- <i class="icon icon_quick-customer-service"></i>--%>
|
onclick="window.open('http://pf.kakao.com/_xjxjHxnX', '_blank');">
|
||||||
<%-- <span class="visually-hidden">고객센터</span>--%>
|
<i class="icon icon_kakao-customer-service"></i>
|
||||||
<%-- <span class="quick-menu__customer-service__num">--%>
|
<span class="visually-hidden">고객센터</span>
|
||||||
<%-- ${ fn:replace(resultMap.operAt.cscTelnb, '-', '<br>') }--%>
|
<span class="quick-menu__customer-service__num">
|
||||||
<%-- </span>--%>
|
문의는 카톡으로
|
||||||
<%-- </div>--%>
|
</span>
|
||||||
|
</div>--%>
|
||||||
<div class="quick-menu__to-top">
|
<div class="quick-menu__to-top">
|
||||||
<button><i class="icon icon_quick-to-top"></i><span class="visually-hidden">위로
|
<button><i class="icon icon_quick-to-top"></i><span class="visually-hidden">위로
|
||||||
가기</span></button>
|
가기</span></button>
|
||||||
@@ -1509,7 +1510,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case02.goodsSttusCd eq '02'}">
|
<c:when test="${case02.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case02.goodsSttusCd eq '03'}">
|
<c:when test="${case02.goodsSttusCd eq '03'}">
|
||||||
@@ -1532,10 +1533,10 @@
|
|||||||
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -1550,10 +1551,10 @@
|
|||||||
<c:if test="${case02.pricExpsrAt eq 'Y'}">
|
<c:if test="${case02.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case02.pricExpsrOrdr-1}" style="order:${case02.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case02.pricExpsrOrdr-1}" style="order:${case02.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit} </span>
|
<span class="product-unit-price__original <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit} </span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case02.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case02.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent"><c:out value="${case02.slePercent}"/>%</span>
|
<span class="percent"><c:out value="${case02.slePercent}"/>%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1688,7 +1689,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case04.goodsSttusCd eq '02'}">
|
<c:when test="${case04.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case04.goodsSttusCd eq '03'}">
|
<c:when test="${case04.goodsSttusCd eq '03'}">
|
||||||
@@ -1710,10 +1711,10 @@
|
|||||||
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -1728,10 +1729,10 @@
|
|||||||
<c:if test="${case04.pricExpsrAt eq 'Y'}">
|
<c:if test="${case04.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case04.pricExpsrOrdr-1}" style="order:${case04.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case04.pricExpsrOrdr-1}" style="order:${case04.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case04.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case04.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case04.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case04.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case04.slePercent }%</span>
|
<span class="percent">${ case04.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1819,7 +1820,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case05.goodsSttusCd eq '02'}">
|
<c:when test="${case05.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case05.goodsSttusCd eq '03'}">
|
<c:when test="${case05.goodsSttusCd eq '03'}">
|
||||||
@@ -1842,10 +1843,10 @@
|
|||||||
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -1860,10 +1861,10 @@
|
|||||||
<c:if test="${case05.pricExpsrAt eq 'Y'}">
|
<c:if test="${case05.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case05.pricExpsrOrdr-1}" style="order:${case05.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case05.pricExpsrOrdr-1}" style="order:${case05.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case05.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case05.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case05.slePercent }%</span>
|
<span class="percent">${ case05.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1927,7 +1928,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case06.goodsSttusCd eq '02'}">
|
<c:when test="${case06.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case06.goodsSttusCd eq '03'}">
|
<c:when test="${case06.goodsSttusCd eq '03'}">
|
||||||
@@ -1949,10 +1950,10 @@
|
|||||||
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -1967,10 +1968,10 @@
|
|||||||
<c:if test="${case06.pricExpsrAt eq 'Y'}">
|
<c:if test="${case06.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case06.pricExpsrOrdr-1}" style="order:${case06.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case06.pricExpsrOrdr-1}" style="order:${case06.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case06.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case06.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case06.slePercent }%</span>
|
<span class="percent">${ case06.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -2042,10 +2043,10 @@
|
|||||||
<c:forEach items="${fn:split(case06.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case06.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -2060,10 +2061,10 @@
|
|||||||
<c:if test="${case06.pricExpsrAt eq 'Y'}">
|
<c:if test="${case06.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case06.pricExpsrOrdr-1}" style="order:${case06.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case06.pricExpsrOrdr-1}" style="order:${case06.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case06.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case06.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case06.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case06.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case06.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case06.slePercent }%</span>
|
<span class="percent">${ case06.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -2133,7 +2134,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case07.goodsSttusCd eq '02'}">
|
<c:when test="${case07.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case07.goodsSttusCd eq '03'}">
|
<c:when test="${case07.goodsSttusCd eq '03'}">
|
||||||
@@ -2155,10 +2156,10 @@
|
|||||||
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -2173,10 +2174,10 @@
|
|||||||
<c:if test="${case07.pricExpsrAt eq 'Y'}">
|
<c:if test="${case07.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case07.pricExpsrOrdr-1}" style="order:${case07.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case07.pricExpsrOrdr-1}" style="order:${case07.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case07.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case07.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case07.slePercent }%</span>
|
<span class="percent">${ case07.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -2257,7 +2258,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case08.goodsSttusCd eq '02'}">
|
<c:when test="${case08.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case08.goodsSttusCd eq '03'}">
|
<c:when test="${case08.goodsSttusCd eq '03'}">
|
||||||
@@ -2291,10 +2292,10 @@
|
|||||||
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -2309,10 +2310,10 @@
|
|||||||
<c:if test="${case08.pricExpsrAt eq 'Y'}">
|
<c:if test="${case08.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case08.pricExpsrOrdr-1}" style="order:${case08.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case08.pricExpsrOrdr-1}" style="order:${case08.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case08.slepric }" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case08.slepric }" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case08.slePercent }%</span>
|
<span class="percent">${ case08.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -2414,7 +2415,7 @@
|
|||||||
<span class="product-unit-rating__score"><c:out value="${case09.avgEvlScore}" default="0.0"/></span>
|
<span class="product-unit-rating__score"><c:out value="${case09.avgEvlScore}" default="0.0"/></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price">
|
<div class="product-unit-price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case09.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case09.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case09.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case09.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case09.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -2455,7 +2456,7 @@
|
|||||||
<c:forEach items="${ resultMap.case10 }" var="case10" varStatus="status">
|
<c:forEach items="${ resultMap.case10 }" var="case10" varStatus="status">
|
||||||
<c:if test="${ relmList.ordr eq case10.sOrdr }">
|
<c:if test="${ relmList.ordr eq case10.sOrdr }">
|
||||||
<div>
|
<div>
|
||||||
<a href="/sopmal/csc/selectBbscttAuth?bbsId=${ case10.bbsId }&bbscttInnb=${ case10.bbscttInnb }">
|
<a href="/sopmal/csc/selectBbscttAuth?authDv=REDNG&reqUrl=detail&bbsId=${ case10.bbsId }&bbscttInnb=${ case10.bbscttInnb }&mbrid=${ resultMap.loginFlag }">
|
||||||
<img src="${cdnurl}${ case10.reprsntImgSysFilNm }" alt="해당 이미지에 대한 설명" onerror="this.src='/pc/images/image_placeholder.png'">
|
<img src="${cdnurl}${ case10.reprsntImgSysFilNm }" alt="해당 이미지에 대한 설명" onerror="this.src='/pc/images/image_placeholder.png'">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -3029,7 +3030,7 @@
|
|||||||
str += ' <div class="product-unit-image">';
|
str += ' <div class="product-unit-image">';
|
||||||
if (result.goodsSttusCd === '02') {
|
if (result.goodsSttusCd === '02') {
|
||||||
str += '<div class="sold-out">';
|
str += '<div class="sold-out">';
|
||||||
str += ' <span>SOLD OUT</span>';
|
str += ' <span>입고 대기중</span>';
|
||||||
str += '</div>';
|
str += '</div>';
|
||||||
} else if (result.goodsSttusCd === '03') {
|
} else if (result.goodsSttusCd === '03') {
|
||||||
str += '<div class="sold-out">';
|
str += '<div class="sold-out">';
|
||||||
@@ -3055,9 +3056,9 @@
|
|||||||
|
|
||||||
if (iconCdNm.includes('-')) {
|
if (iconCdNm.includes('-')) {
|
||||||
let temp = upper.replace(/-/g, ' ');
|
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 {
|
} else {
|
||||||
str += '<span class="product-badge ' + lower + '">' + upper + '</span>';
|
str += '<span class="product-badge ' + lower + '" data-badge-cd="' + iconCdNm + '">' + upper + '</span>';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -3074,10 +3075,10 @@
|
|||||||
if (result.pricExpsrAt == 'Y') {
|
if (result.pricExpsrAt == 'Y') {
|
||||||
str += '<div class="product-unit-price col order-' + (result.pricExpsrOrdr - 1) + '" style="order:' + (result.pricExpsrOrdr - 1) + '">';
|
str += '<div class="product-unit-price col order-' + (result.pricExpsrOrdr - 1) + '" style="order:' + (result.pricExpsrOrdr - 1) + '">';
|
||||||
str += ' <div class="product-unit-price__price">';
|
str += ' <div class="product-unit-price__price">';
|
||||||
str += ' <span class="product-unit-price__original">' + new Intl.NumberFormat('ko-KR').format(result.cnsmrpric) + curUnit + '</span>';
|
str += ' <span class="product-unit-price__original' + (result.slePercent == 0 ? ' visually-hidden' : '') + new Intl.NumberFormat('ko-KR').format(result.cnsmrpric) + curUnit + '</span>';
|
||||||
str += ' <span class="product-unit-price__current">' + new Intl.NumberFormat('ko-KR').format(result.slepric) + curUnit + '</span>';
|
str += ' <span class="product-unit-price__current">' + new Intl.NumberFormat('ko-KR').format(result.slepric) + curUnit + '</span>';
|
||||||
str += ' </div>';
|
str += ' </div>';
|
||||||
str += ' <div class="product-unit-price__sale">';
|
str += ' <div class="product-unit-price__sale' + (result.slePercent == 0 ? ' visually-hidden' : '') + '">';
|
||||||
str += ' <span class="percent">' + result.slePercent + '%</span>';
|
str += ' <span class="percent">' + result.slePercent + '%</span>';
|
||||||
str += ' </div>';
|
str += ' </div>';
|
||||||
str += '</div>';
|
str += '</div>';
|
||||||
|
|||||||
@@ -1509,7 +1509,7 @@
|
|||||||
</td>
|
</td>
|
||||||
</c:if>
|
</c:if>
|
||||||
<%--게시판 타입 이벤트, 매거진 추천 상품 노출--%>
|
<%--게시판 타입 이벤트, 매거진 추천 상품 노출--%>
|
||||||
<c:if test="${resultMap.bbsVo.bbsTyCd eq '03' || resultMap.bbsVo.bbsTyCd eq '09'}">
|
<c:if test="${resultMap.bbsVo.bbsTyCd eq '03' || resultMap.bbsVo.bbsTyCd eq '09'}">
|
||||||
<th>추천 상품 노출</th>
|
<th>추천 상품 노출</th>
|
||||||
<td>
|
<td>
|
||||||
<div class="td-inner">
|
<div class="td-inner">
|
||||||
@@ -1553,6 +1553,29 @@
|
|||||||
</td>
|
</td>
|
||||||
</c:if>
|
</c:if>
|
||||||
</tr>
|
</tr>
|
||||||
|
<c:if test="${resultMap.bbsVo.bbsTyCd eq '01'}">
|
||||||
|
<tr>
|
||||||
|
<th>추천 상품 노출</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<div class="td-inner">
|
||||||
|
<div class="custom-radio-container">
|
||||||
|
<div class="custom-radio">
|
||||||
|
<input type="radio" id="recomendGoodsExpsrAt-y"
|
||||||
|
name="recomendGoodsExpsrAt"
|
||||||
|
value="Y" ${f:setChecked(resultMap.bbsVo.recomendGoodsExpsrAt, 'Y') } />
|
||||||
|
<label for="recomendGoodsExpsrAt-y">사용</label>
|
||||||
|
</div>
|
||||||
|
<div class="custom-radio">
|
||||||
|
<input type="radio" id="recomendGoodsExpsrAt-n"
|
||||||
|
name="recomendGoodsExpsrAt"
|
||||||
|
value="N" ${f:setChecked(resultMap.bbsVo.recomendGoodsExpsrAt, 'N') } />
|
||||||
|
<label for="recomendGoodsExpsrAt-n">미사용</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</c:if>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@@ -2843,4 +2866,4 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -948,7 +948,8 @@
|
|||||||
<input type="radio" id="write${cgn024.cd }"
|
<input type="radio" id="write${cgn024.cd }"
|
||||||
name="bbscttRegistAuthorDvCd"
|
name="bbscttRegistAuthorDvCd"
|
||||||
value="${cgn024.cd }" ${attrCheck }
|
value="${cgn024.cd }" ${attrCheck }
|
||||||
onclick="fn_click_check('bbscttRegistAuthorDvCd', 'all');">
|
onclick="fn_change_event('bbscttRegistAuthorDvCd');
|
||||||
|
fn_click_check('bbscttRegistAuthorDvCd', 'all');">
|
||||||
<label for="write${cgn024.cd }"><c:out
|
<label for="write${cgn024.cd }"><c:out
|
||||||
value="${cgn024.cdNm }"/></label>
|
value="${cgn024.cdNm }"/></label>
|
||||||
</div>
|
</div>
|
||||||
@@ -2042,13 +2043,25 @@
|
|||||||
url : url,
|
url : url,
|
||||||
data : paramsArray,
|
data : paramsArray,
|
||||||
success : function(data) {
|
success : function(data) {
|
||||||
|
const result = JSON.parse(data.resBody.result);
|
||||||
|
const bbsId = result.bbsid;
|
||||||
|
if (result.message !== 'success' || !bbsId) {
|
||||||
|
alert('게시판 등록에 실패했습니다. 다시 시도해 주세요.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
alert('<spring:message code="success.common.insert"/>');
|
alert('<spring:message code="success.common.insert"/>');
|
||||||
const bbsId = JSON.parse(data.resBody.result).bbsid;
|
|
||||||
<%-- fn_move_dtlupdt(bbsId); --%>
|
<%-- fn_move_dtlupdt(bbsId); --%>
|
||||||
$('#backUpData').find('[name=bbsId]').val(JSON.parse(data.resBody.result).bbsid);
|
$('#backUpData').find('[name=bbsId]').val(bbsId);
|
||||||
$('#backUpData').find('[name=pageDv]').val('I');
|
$('#backUpData').find('[name=pageDv]').val('I');
|
||||||
$('#backUpData').attr('action', '<c:url value="/mngr/bbs/bbsmngr/selectBbsDtlUpdtForm"/>');
|
$('#backUpData').attr('action', '<c:url value="/mngr/bbs/bbsmngr/selectBbsDtlUpdtForm"/>');
|
||||||
$('#backUpData').submit();
|
$('#backUpData').submit();
|
||||||
|
},
|
||||||
|
error : function(data) {
|
||||||
|
const message = data.responseJSON
|
||||||
|
&& data.responseJSON.resBody
|
||||||
|
&& data.responseJSON.resBody.result;
|
||||||
|
alert(message || '게시판 등록 중 오류가 발생했습니다.');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -2078,4 +2091,4 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||||
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||||
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
|
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld" %>
|
||||||
<%@ page import="java.util.Date" %>
|
<spring:eval expression="@environment.getProperty('currency-unit.default')" var="curUnit"/>
|
||||||
<%--
|
<%--
|
||||||
Class Name : GnrlBbscttDtlPopupR.jsp
|
Class Name : GnrlBbscttDtlPopupR.jsp
|
||||||
Description : 일반 게시글 상세 조회 화면
|
Description : 일반 게시글 상세 조회 화면
|
||||||
@@ -21,36 +21,36 @@
|
|||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
console.log('urlval 태그' + $('.urlVal').length);
|
console.log('urlval 태그' + $('.urlVal').length);
|
||||||
|
|
||||||
const pcDomnAdres = document.querySelector('.header__logo').getAttribute('data-pcurl');
|
const popup = document.getElementById('board-list-detail');
|
||||||
|
|
||||||
let urlVal = '';
|
let urlVal = '';
|
||||||
const bbscttInnb = document.getElementsByName("script_bbscttInnb")[0]?.value || "";
|
const bbscttInnb = popup.querySelector('[name="script_bbscttInnb"]')?.value || "";
|
||||||
const bbsId = document.getElementsByName("bbsId")[0]?.value || "";
|
const bbsId = popup.querySelector('[name="bbsId"]')?.value || "";
|
||||||
const bbsTyCd = document.getElementsByName("bbsTyCd")[0]?.value || "";
|
const bbsTyCd = popup.querySelector('[name="bbsTyCd"]')?.value || "";
|
||||||
const sopmalCd = document.getElementsByName("sopmalCd")[0]?.value || "";
|
const sopmalCd = popup.querySelector('[name="sopmalCd"]')?.value || "";
|
||||||
const bbsUseAt = document.getElementsByName("bbsUseAt")[0]?.value || "";
|
const bbsUseAt = popup.querySelector('[name="bbsUseAt"]')?.value || "";
|
||||||
const npayBbscttSnb = document.getElementsByName("npayBbscttSnb")[0]?.value || "";
|
const npayBbscttSnb = popup.querySelector('[name="npayBbscttSnb"]')?.value || "";
|
||||||
|
|
||||||
console.log("bbscttInnb:", bbscttInnb);
|
console.log("bbscttInnb:", bbscttInnb);
|
||||||
console.log("bbsId:", bbsId);
|
console.log("bbsId:", bbsId);
|
||||||
console.log("bbsTyCd:", bbsTyCd);
|
console.log("bbsTyCd:", bbsTyCd);
|
||||||
console.log("sopmalCd:", sopmalCd);
|
console.log("sopmalCd:", sopmalCd);
|
||||||
|
|
||||||
if(bbsUseAt == 'Y' && (npayBbscttSnb === null || npayBbscttSnb === undefined || npayBbscttSnb === '')) {
|
if (bbsUseAt === 'Y' && !npayBbscttSnb) {
|
||||||
if (bbsTyCd === '03' || bbsId == 'main_event' || bbsId == 'largeLMS_event') {
|
if (bbsId === 'largeLMS_event') {
|
||||||
if (bbsTyCd === '03' || bbsId == 'main_event') {
|
urlVal = '/' + sopmalCd + '/extra/bbs/selectSMSEventPage?bbscttInnb=' + bbscttInnb;
|
||||||
urlVal = pcDomnAdres + '/sopmal/csc/selectBbscttAuth?authDv=CM&bbsTyCd=03&reqUrl=subPage&bbsId=' + bbsId + '&bbscttInnb=' + bbscttInnb;
|
} else {
|
||||||
} else {
|
urlVal = '/sopmal/csc/selectBbscttAuth?authDv=CM&reqUrl=detail&bbsTyCd='
|
||||||
urlVal = '/'+sopmalCd+'/extra/bbs/selectSMSEventPage?bbscttInnb=' + bbscttInnb;
|
+ encodeURIComponent(bbsTyCd)
|
||||||
}
|
+ '&bbsId=' + encodeURIComponent(bbsId)
|
||||||
|
+ '&bbscttInnb=' + encodeURIComponent(bbscttInnb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
console.log(' urlVal 실행됨: ' + urlVal);
|
console.log(' urlVal 실행됨: ' + urlVal);
|
||||||
console.log(' pcDomnAdres 실행됨: ' + pcDomnAdres);
|
|
||||||
|
|
||||||
$('.urlVal').val(urlVal);
|
popup.querySelector('.urlVal').value = urlVal;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
@@ -88,15 +88,18 @@
|
|||||||
<input type="hidden" id="bbsId" name="bbsId" value="<c:out value='${bbsInfo.bbsId}' />" />
|
<input type="hidden" id="bbsId" name="bbsId" value="<c:out value='${bbsInfo.bbsId}' />" />
|
||||||
<div class="form-control-container mb-10">
|
<div class="form-control-container mb-10">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
|
<c:if test="${bbscttInfo.useAt eq 'Y' && empty bbscttInfo.npayBbscttSnb}">
|
||||||
|
<div class="input-container inline-block mr-5">
|
||||||
|
<label class="visually-hidden" for="url">사용자 페이지 URL</label>
|
||||||
|
<input type="text" id="url" class="input-text urlVal" readonly style="width: 500px;"/>
|
||||||
|
</div>
|
||||||
|
<button type="button" class="btn xsm primary" onclick="fn_copy_url();">URL 복사</button>
|
||||||
|
</c:if>
|
||||||
</div>
|
</div>
|
||||||
<div class="center">
|
<div class="center">
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<c:if test="${bbscttInfo.useAt eq 'Y' && empty bbscttInfo.npayBbscttSnb}">
|
<c:if test="${bbscttInfo.useAt eq 'Y' && empty bbscttInfo.npayBbscttSnb}">
|
||||||
<c:if test="${(bbsInfo.bbsTyCd eq '03') || (bbsInfo.bbsId eq 'main_event') || (bbsInfo.bbsId eq 'largeLMS_event')}">
|
|
||||||
<input type="text" id="url" class="urlVal" style="display: none;"/>
|
|
||||||
<button type="button" class="btn xsm primary" onclick="fn_copy_url();">url복사</button>
|
|
||||||
</c:if>
|
|
||||||
<button type="button" class="btn xsm primary outline" onclick="fn_select_bbsctt_update_pop('<c:out
|
<button type="button" class="btn xsm primary outline" onclick="fn_select_bbsctt_update_pop('<c:out
|
||||||
value="${ bbscttInfo.bbscttInnb }"/>','dtlPop');"><spring:message
|
value="${ bbscttInfo.bbscttInnb }"/>','dtlPop');"><spring:message
|
||||||
code="button.update"/></button>
|
code="button.update"/></button>
|
||||||
@@ -140,7 +143,7 @@
|
|||||||
<c:if test="${bbsInfo.goodsChoice eq 'Y' }">
|
<c:if test="${bbsInfo.goodsChoice eq 'Y' }">
|
||||||
<c:if test="${not empty goodsList}">
|
<c:if test="${not empty goodsList}">
|
||||||
<tr>
|
<tr>
|
||||||
<th>상품정보</th>
|
<th>상품 정보</th>
|
||||||
<td colspan="3">
|
<td colspan="3">
|
||||||
<div class="product-search-box__product parentGoodsContainer">
|
<div class="product-search-box__product parentGoodsContainer">
|
||||||
<c:forEach var="goods" items="${goodsList}">
|
<c:forEach var="goods" items="${goodsList}">
|
||||||
@@ -158,7 +161,7 @@
|
|||||||
<div class="product-group__description">
|
<div class="product-group__description">
|
||||||
<p><c:out value="${goods.goodsNm}"/></p>
|
<p><c:out value="${goods.goodsNm}"/></p>
|
||||||
<p class="product-group__description-price"><fmt:formatNumber
|
<p class="product-group__description-price"><fmt:formatNumber
|
||||||
value="${goods.slepric}" pattern="#,###"/>원</p>
|
value="${goods.slepric}" pattern="#,###"/>${curUnit}</p>
|
||||||
</div>
|
</div>
|
||||||
<c:if test="${bbsInfo.bbsTyCd eq '05'}">
|
<c:if test="${bbsInfo.bbsTyCd eq '05'}">
|
||||||
<input hidden id="goodsInnb" value="${goods.goodsInnb}"/>
|
<input hidden id="goodsInnb" value="${goods.goodsInnb}"/>
|
||||||
@@ -168,6 +171,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>상품 정보 문구</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<div class="td-inner" id="relateGoodsWords">
|
||||||
|
${bbscttInfo.relateGoodsWords}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</c:if>
|
</c:if>
|
||||||
</c:if>
|
</c:if>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -699,4 +710,4 @@
|
|||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<a id="btnCloseModal" rel="modal:close" class="btn primary" style="cursor:pointer">확인</a>
|
<a id="btnCloseModal" rel="modal:close" class="btn primary" style="cursor:pointer">확인</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
<%@include file ="/WEB-INF/views/comm/mngr/Include.jsp" %>
|
<%@include file ="/WEB-INF/views/comm/mngr/Include.jsp" %>
|
||||||
<script src="<c:url value='/js/fileupload_comm.js'/>"></script>
|
<script src="<c:url value='/js/fileupload_comm.js'/>"></script>
|
||||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||||
|
<spring:eval expression="@environment.getProperty('currency-unit.default')" var="curUnit"/>
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
/************************************************
|
/************************************************
|
||||||
@@ -1514,7 +1515,8 @@
|
|||||||
const cdnurl = '${cdnurl}';
|
const cdnurl = '${cdnurl}';
|
||||||
selected.forEach((good, index) => {
|
selected.forEach((good, index) => {
|
||||||
let goodsPrice = fn_format_comma(good.goodsPrice);
|
let goodsPrice = fn_format_comma(good.goodsPrice);
|
||||||
let slepric = fn_format_comma(good.goodsPrice);
|
let slepric = fn_format_comma(good.goodsPrice);
|
||||||
|
let curUnit = '${curUnit}';
|
||||||
var productHtml = `
|
var productHtml = `
|
||||||
<div class="product-group__item">
|
<div class="product-group__item">
|
||||||
<input type="hidden" id="relatedGoodsId" name="relatedGoodsId" value="\${good.goodsId}">
|
<input type="hidden" id="relatedGoodsId" name="relatedGoodsId" value="\${good.goodsId}">
|
||||||
@@ -1528,7 +1530,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<div class="product-group__description">
|
<div class="product-group__description">
|
||||||
<p>\${good.goodsNm}</p>
|
<p>\${good.goodsNm}</p>
|
||||||
<p class="product-group__description-price">\${goodsPrice}</p>
|
<p class="product-group__description-price">\${goodsPrice}\${curUnit}</p>
|
||||||
</div>
|
</div>
|
||||||
<%--게시글 연관 상품--%>
|
<%--게시글 연관 상품--%>
|
||||||
<input type="hidden" name="goodsInnbArr[]" value="\${good.goodsId}"/>
|
<input type="hidden" name="goodsInnbArr[]" value="\${good.goodsId}"/>
|
||||||
|
|||||||
@@ -280,26 +280,34 @@
|
|||||||
</td>
|
</td>
|
||||||
</c:if>
|
</c:if>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="visibleAt">
|
<c:if test="${bbsInfo.goodsChoice eq 'Y'}">
|
||||||
<c:if test="${bbsInfo.goodsChoice eq 'Y'}">
|
<tr class="visibleAt">
|
||||||
<th>상품 정보
|
<th>상품 정보
|
||||||
<button type="button" class="btn xsm primary ml-5"
|
<button type="button" class="btn xsm primary ml-5"
|
||||||
onclick="fn_open_modal('#modalDiv',
|
onclick="fn_open_modal('#modalDiv',
|
||||||
'#product-search',
|
'#product-search',
|
||||||
'/mngr/goods/goodsmngr/selectGoodsSrchPopupForm',
|
'/mngr/goods/goodsmngr/selectGoodsSrchPopupForm',
|
||||||
{'goodsKndCd':'01'}); return false;">
|
{'goodsKndCd':'01'}); return false;">
|
||||||
검색
|
검색
|
||||||
</button>
|
</button>
|
||||||
</th>
|
</th>
|
||||||
<td colspan="3">
|
<td colspan="3">
|
||||||
<div class="td-inner">
|
<div class="td-inner">
|
||||||
<div class="product-search-box__product parentGoodsContainer">
|
<div class="product-search-box__product parentGoodsContainer">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</c:if>
|
</tr>
|
||||||
</tr>
|
<tr class="visibleAt">
|
||||||
|
<th>상품 정보 문구</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<div class="td-inner">
|
||||||
|
<input class="input-text full" type="text" title="해당 인풋에 대한 설명" placeholder="관련 상품 문구를 입력해 주세요." name="relateGoodsWords" maxlength="50" value="이 글과 관련된 사케">
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</c:if>
|
||||||
<c:if test="${not empty qesitmList}">
|
<c:if test="${not empty qesitmList}">
|
||||||
<tr>
|
<tr>
|
||||||
<th>추가 입력 항목</th>
|
<th>추가 입력 항목</th>
|
||||||
|
|||||||
@@ -6,6 +6,8 @@
|
|||||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||||
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
|
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
|
||||||
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
|
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
|
||||||
|
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||||
|
<spring:eval expression="@environment.getProperty('currency-unit.default')" var="curUnit"/>
|
||||||
<%--
|
<%--
|
||||||
Class Name : GnrlBbscttUpdtPopupU.jsp
|
Class Name : GnrlBbscttUpdtPopupU.jsp
|
||||||
Description : 일반 게시글 등록 팝업
|
Description : 일반 게시글 등록 팝업
|
||||||
@@ -15,7 +17,6 @@
|
|||||||
------- -------- ---------------------------
|
------- -------- ---------------------------
|
||||||
2024-01-08 김혜지 최초 생성
|
2024-01-08 김혜지 최초 생성
|
||||||
--%>
|
--%>
|
||||||
<spring:eval expression="@environment.getProperty('mngrfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
|
||||||
<div id="board-list-update" class="modal" style="max-width: 1400px;">
|
<div id="board-list-update" class="modal" style="max-width: 1400px;">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h4>게시글 수정</h4>
|
<h4>게시글 수정</h4>
|
||||||
@@ -474,26 +475,26 @@
|
|||||||
</td>
|
</td>
|
||||||
</c:if>
|
</c:if>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class ="visibleAt">
|
<c:if test = "${bbsInfo.goodsChoice eq 'Y'}">
|
||||||
<c:if test = "${bbsInfo.goodsChoice eq 'Y'}">
|
<tr class ="visibleAt">
|
||||||
<th>상품 정보
|
<th>상품 정보
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test = "${not empty goods}">
|
<c:when test = "${not empty goods}">
|
||||||
<button type="button" class="btn xsm primary ml-5"
|
<button type="button" class="btn xsm primary ml-5"
|
||||||
onclick="fn_open_search_modal('#modalDiv','#product-search','/mngr/goods/goodsmngr/selectGoodsSrchPopupForm',{'goodsKndCd':'01'}); return false;">
|
onclick="fn_open_search_modal('#modalDiv','#product-search','/mngr/goods/goodsmngr/selectGoodsSrchPopupForm',{'goodsKndCd':'01'}); return false;">
|
||||||
검색
|
검색
|
||||||
</button>
|
</button>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:otherwise>
|
<c:otherwise>
|
||||||
<button type="button" class="btn xsm primary ml-5"
|
<button type="button" class="btn xsm primary ml-5"
|
||||||
onclick="fn_open_modal('#modalDiv','#product-search','/mngr/goods/goodsmngr/selectGoodsSrchPopupForm',{'goodsKndCd':'01'}); return false;">
|
onclick="selected = []; fn_open_modal('#modalDiv','#product-search','/mngr/goods/goodsmngr/selectGoodsSrchPopupForm',{'goodsKndCd':'01'}); return false;">
|
||||||
검색
|
검색
|
||||||
</button>
|
</button>
|
||||||
</c:otherwise>
|
</c:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</th>
|
</th>
|
||||||
<td colspan="3">
|
<td colspan="3">
|
||||||
<div class="td-inner">
|
<div class="td-inner">
|
||||||
<div class="product-search-box__product parentGoodsContainer">
|
<div class="product-search-box__product parentGoodsContainer">
|
||||||
<c:if test = "${not empty goods}">
|
<c:if test = "${not empty goods}">
|
||||||
<c:forEach var = "goods" items = "${goods}">
|
<c:forEach var = "goods" items = "${goods}">
|
||||||
@@ -510,7 +511,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<div class="product-group__description">
|
<div class="product-group__description">
|
||||||
<p><c:out value="${goods.goodsNm}"/></p>
|
<p><c:out value="${goods.goodsNm}"/></p>
|
||||||
<p class="product-group__description-price"><fmt:formatNumber value="${goods.slepric}" pattern="#,###"/>원</p>
|
<p class="product-group__description-price"><fmt:formatNumber value="${goods.slepric}" pattern="#,###"/>${curUnit}</p>
|
||||||
</div>
|
</div>
|
||||||
<%--게시글 연관 상품--%>
|
<%--게시글 연관 상품--%>
|
||||||
<input type="hidden" name="goodsInnbArr[]" value="${goods.goodsInnb}"/>
|
<input type="hidden" name="goodsInnbArr[]" value="${goods.goodsInnb}"/>
|
||||||
@@ -518,10 +519,18 @@
|
|||||||
</c:forEach>
|
</c:forEach>
|
||||||
</c:if>
|
</c:if>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</c:if>
|
</tr>
|
||||||
</tr>
|
<tr class="visibleAt">
|
||||||
|
<th>상품 정보 문구</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<div class="td-inner">
|
||||||
|
<input class="input-text full" type="text" title="해당 인풋에 대한 설명" placeholder="관련 상품 문구를 입력해 주세요." name="relateGoodsWords" maxlength="50" value = "${bbscttInfo.relateGoodsWords}">
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</c:if>
|
||||||
<c:if test="${not empty qesitmList}">
|
<c:if test="${not empty qesitmList}">
|
||||||
<tr>
|
<tr>
|
||||||
<th>추가 입력 항목</th>
|
<th>추가 입력 항목</th>
|
||||||
@@ -904,4 +913,4 @@
|
|||||||
var inputElement = $('input[type="file"].dz-hidden-input');
|
var inputElement = $('input[type="file"].dz-hidden-input');
|
||||||
inputElement.attr('name', 'files');
|
inputElement.attr('name', 'files');
|
||||||
inputElement.attr('id', 'fileUploadDrop');
|
inputElement.attr('id', 'fileUploadDrop');
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -0,0 +1,79 @@
|
|||||||
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<%@include file ="/WEB-INF/views/comm/mngr/Include.jsp" %>
|
||||||
|
<style>
|
||||||
|
.badge-preview { display: inline-block; min-width: 70px; padding: 4px 8px; border: 1px solid; border-radius: 3px; text-align: center; }
|
||||||
|
.color-field { display: flex; align-items: center; gap: 6px; position: relative; }
|
||||||
|
.color-palette-toggle { width: 32px; min-width: 32px; height: 32px; padding: 3px; border: 1px solid #bbb; background: #fff; cursor: pointer; }
|
||||||
|
.color-swatch { display: block; width: 100%; height: 100%; border: 1px solid rgba(0, 0, 0, .15); }
|
||||||
|
.color-palette { display: none; position: absolute; z-index: 10; top: 36px; left: 0; width: 260px; padding: 8px; background: #fff; border: 1px solid #aaa; box-shadow: 0 3px 10px rgba(0, 0, 0, .18); grid-template-columns: repeat(12, 1fr); gap: 4px; }
|
||||||
|
.color-palette.is-open { display: grid; }
|
||||||
|
.color-choice { width: 16px; height: 16px; padding: 0; border: 1px solid rgba(0, 0, 0, .18); cursor: pointer; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<%@include file ="/WEB-INF/views/comm/mngr/Header.jsp" %>
|
||||||
|
<main class="main">
|
||||||
|
<%@include file ="/WEB-INF/views/comm/mngr/Left.jsp" %>
|
||||||
|
<div class="content"><div class="content__inner">
|
||||||
|
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
|
||||||
|
<div class="page-title">
|
||||||
|
<h2 class="page-title__title">상품배지설정관리</h2>
|
||||||
|
<div class="page-title__btn-container"><button type="button" class="btn primary" onclick="fn_save_badges()">저장하기</button></div>
|
||||||
|
</div>
|
||||||
|
<form id="badgeForm">
|
||||||
|
<section class="content-section">
|
||||||
|
<div class="form-control-container mb-8"><div class="left"><h3 class="content-section__inner-title">상품 배지</h3></div><div class="center"></div><div class="right"><button type="button" class="btn primary outline xsm" onclick="fn_add_badge()">추가</button><button type="button" class="btn dark xsm" onclick="fn_remove_badge()">선택 행 제거</button></div></div>
|
||||||
|
<div class="table-wrapper"><table class="table vertical"><caption>상품 배지 설정</caption><thead><tr><th><label class="b-checkbox checkbox is-medium check-all"><input type="checkbox" id="badgeAll"><span class="check"></span></label></th><th>배지코드</th><th>배지명</th><th>글자색</th><th>배경색</th><th>테두리색</th><th>노출순서</th><th>사용여부</th><th>미리보기</th></tr></thead>
|
||||||
|
<tbody id="badgeBody">
|
||||||
|
<c:forEach var="badge" items="${resultMap.badgeList}">
|
||||||
|
<tr data-new-at="N"><td><label class="b-checkbox checkbox is-medium"><input type="checkbox" name="badgeChk"><span class="check"></span></label></td><td><input type="text" class="input-text xl badge-cd" name="badgeCdArr" value="<c:out value='${badge.badgeCd}'/>" readonly><input type="hidden" name="originalBadgeCdArr" value="<c:out value='${badge.badgeCd}'/>"></td><td><input type="text" class="input-text xl badge-nm" name="badgeNmArr" value="<c:out value='${badge.badgeNm}'/>"></td><td><div class="color-field"><button type="button" class="color-palette-toggle" aria-label="글자색 선택"><span class="color-swatch" style="background-color:<c:out value='${badge.fontColor}'/>"></span></button><div class="color-palette"></div><input type="text" class="input-text xl color-input" name="fontColorArr" maxlength="7" value="<c:out value='${badge.fontColor}'/>"></div></td><td><div class="color-field"><button type="button" class="color-palette-toggle" aria-label="배경색 선택"><span class="color-swatch" style="background-color:<c:out value='${badge.bgColor}'/>"></span></button><div class="color-palette"></div><input type="text" class="input-text xl color-input" name="bgColorArr" maxlength="7" value="<c:out value='${badge.bgColor}'/>"></div></td><td><div class="color-field"><button type="button" class="color-palette-toggle" aria-label="테두리색 선택"><span class="color-swatch" style="background-color:<c:out value='${badge.borderColor}'/>"></span></button><div class="color-palette"></div><input type="text" class="input-text xl color-input" name="borderColorArr" maxlength="7" value="<c:out value='${badge.borderColor}'/>"></div></td><td><input type="text" class="input-text xl sort-ordr" name="sortOrdrArr" value="<c:out value='${badge.sortOrdr}'/>"></td><td><select class="select" name="useAtArr"><option value="Y" ${badge.useAt eq 'Y' ? 'selected' : ''}>사용</option><option value="N" ${badge.useAt eq 'N' ? 'selected' : ''}>미사용</option></select><input type="hidden" name="newAtArr" value="N"></td><td><span class="badge-preview"></span></td></tr>
|
||||||
|
</c:forEach>
|
||||||
|
<tr id="noData" ${not empty resultMap.badgeList ? 'style="display:none"' : ''}><td class="row-no-data" colspan="9">등록된 배지가 없습니다.</td></tr>
|
||||||
|
</tbody></table></div>
|
||||||
|
</section>
|
||||||
|
</form>
|
||||||
|
</div></div>
|
||||||
|
</main>
|
||||||
|
<script>
|
||||||
|
function fn_add_badge() {
|
||||||
|
$('#noData').hide();
|
||||||
|
$('#badgeBody').append('<tr data-new-at="Y"><td><label class="b-checkbox checkbox is-medium"><input type="checkbox" name="badgeChk"><span class="check"></span></label></td><td><input type="text" class="input-text xl badge-cd" name="badgeCdArr" maxlength="30"><input type="hidden" name="originalBadgeCdArr" value=""></td><td><input type="text" class="input-text xl badge-nm" name="badgeNmArr" maxlength="100"></td><td><div class="color-field"><button type="button" class="color-palette-toggle" aria-label="글자색 선택"><span class="color-swatch" style="background-color:#000000"></span></button><div class="color-palette"></div><input type="text" class="input-text xl color-input" name="fontColorArr" maxlength="7" value="#000000"></div></td><td><div class="color-field"><button type="button" class="color-palette-toggle" aria-label="배경색 선택"><span class="color-swatch" style="background-color:#FFFFFF"></span></button><div class="color-palette"></div><input type="text" class="input-text xl color-input" name="bgColorArr" maxlength="7" value="#FFFFFF"></div></td><td><div class="color-field"><button type="button" class="color-palette-toggle" aria-label="테두리색 선택"><span class="color-swatch" style="background-color:#000000"></span></button><div class="color-palette"></div><input type="text" class="input-text xl color-input" name="borderColorArr" maxlength="7" value="#000000"></div></td><td><input type="text" class="input-text xl sort-ordr" name="sortOrdrArr" value="0" maxlength="5"></td><td><select class="select" name="useAtArr"><option value="Y">사용</option><option value="N">미사용</option></select><input type="hidden" name="newAtArr" value="Y"></td><td><span class="badge-preview"></span></td></tr>');
|
||||||
|
fn_init_color_palettes();
|
||||||
|
fn_render_preview();
|
||||||
|
}
|
||||||
|
function fn_remove_badge() {
|
||||||
|
const selected = $('[name=badgeChk]:checked');
|
||||||
|
if (!selected.length) { alert('항목을 선택해 주세요.'); return; }
|
||||||
|
selected.each(function () { const row = $(this).closest('tr'); if (row.data('new-at') === 'Y') { row.remove(); } else { alert('기존 배지는 삭제할 수 없습니다. 사용여부를 미사용으로 변경해 주세요.'); } });
|
||||||
|
$('#badgeAll').prop('checked', false);
|
||||||
|
if ($('#badgeBody tr:not(#noData)').length === 0) { $('#noData').show(); }
|
||||||
|
}
|
||||||
|
function fn_render_preview() {
|
||||||
|
$('#badgeBody tr:not(#noData)').each(function () { const row = $(this); row.find('.badge-preview').text(row.find('.badge-nm').val() || '배지명').css({color: row.find('[name=fontColorArr]').val(), backgroundColor: row.find('[name=bgColorArr]').val(), borderColor: row.find('[name=borderColorArr]').val()}); });
|
||||||
|
}
|
||||||
|
function fn_normalize_colors() {
|
||||||
|
$('#badgeBody tr:not(#noData)').each(function () { const row = $(this); row.find('.color-input').each(function () { const input = $(this); if (!/^#[0-9A-Fa-f]{6}$/.test(input.val().trim())) { input.val(input.attr('name') === 'borderColorArr' ? (row.find('[name=bgColorArr]').val() || '#000000') : '#000000'); } }); });
|
||||||
|
}
|
||||||
|
function fn_validate_badges() {
|
||||||
|
let valid = true; const colorPattern = /^#[0-9A-Fa-f]{6}$/; const codePattern = /^[A-Za-z0-9_-]+$/; const codes = {};
|
||||||
|
$('#badgeBody tr:not(#noData)').each(function () { const row = $(this); const code = row.find('.badge-cd').val().trim(); const isNew = row.data('new-at') === 'Y'; if ((!code || (isNew && !codePattern.test(code))) || !row.find('.badge-nm').val().trim() || !colorPattern.test(row.find('[name=fontColorArr]').val().trim()) || !colorPattern.test(row.find('[name=bgColorArr]').val().trim()) || !colorPattern.test(row.find('[name=borderColorArr]').val().trim()) || !/^\d+$/.test(row.find('.sort-ordr').val().trim())) { valid = false; return false; } if (isNew && codes[code]) { valid = false; return false; } if (isNew) { codes[code] = true; } });
|
||||||
|
if (!valid) { alert('배지코드, 배지명, 색상(#RRGGBB), 노출순서를 확인해 주세요.'); } return valid;
|
||||||
|
}
|
||||||
|
function fn_save_badges() { if (!fn_validate_badges() || !confirm('상품 배지 설정을 저장하시겠습니까?')) { return; } $.ajax({ type: 'post', url: '<c:url value="/mngr/goods/badge/updateGoodsBadgeSetup"/>', data: $('#badgeForm').serialize(), success: function () { alert('저장되었습니다.'); location.reload(); } }); }
|
||||||
|
function fn_hsl_to_hex(h, s, l) { s /= 100; l /= 100; const c = (1 - Math.abs(2 * l - 1)) * s; const x = c * (1 - Math.abs((h / 60) % 2 - 1)); const m = l - c / 2; let r = 0, g = 0, b = 0; if (h < 60) { r = c; g = x; } else if (h < 120) { r = x; g = c; } else if (h < 180) { g = c; b = x; } else if (h < 240) { g = x; b = c; } else if (h < 300) { r = x; b = c; } else { r = c; b = x; } return '#' + [r, g, b].map(function (v) { return Math.round((v + m) * 255).toString(16).padStart(2, '0'); }).join('').toUpperCase(); }
|
||||||
|
const paletteColors = (function () { const colors = ['#000000','#202020','#404040','#606060','#808080','#A0A0A0','#C0C0C0','#D9D9D9','#EFEFEF','#FFFFFF']; const lightnesses = [92, 82, 72, 62, 52, 42, 32, 22]; for (let lightnessIndex = 0; lightnessIndex < lightnesses.length; lightnessIndex++) { for (let hue = 0; hue < 360; hue += 30) { colors.push(fn_hsl_to_hex(hue, 78, lightnesses[lightnessIndex])); } } return colors; })();
|
||||||
|
function fn_init_color_palettes() { $('.color-palette').each(function () { const palette = $(this); if (palette.children().length) { return; } $.each(paletteColors, function (_, color) { palette.append('<button type="button" class="color-choice" data-color="' + color + '" title="' + color + '" style="background-color:' + color + '"></button>'); }); }); }
|
||||||
|
$(document).on('input change', '.badge-nm, .color-input', function () { const input = $(this); if (input.hasClass('color-input') && /^#[0-9A-Fa-f]{6}$/.test(input.val())) { input.siblings('.color-palette-toggle').find('.color-swatch').css('background-color', input.val()); } fn_render_preview(); });
|
||||||
|
$(document).on('click', '.color-palette-toggle', function (e) { e.stopPropagation(); $('.color-palette').not($(this).siblings('.color-palette')).removeClass('is-open'); $(this).siblings('.color-palette').toggleClass('is-open'); });
|
||||||
|
$(document).on('click', '.color-choice', function () { const field = $(this).closest('.color-field'); field.find('.color-input').val($(this).data('color')).trigger('change'); field.find('.color-palette').removeClass('is-open'); });
|
||||||
|
$(document).on('click', function () { $('.color-palette').removeClass('is-open'); });
|
||||||
|
$('#badgeAll').on('change', function () { $('[name=badgeChk]').prop('checked', this.checked); });
|
||||||
|
$(function () { fn_init_color_palettes(); fn_normalize_colors(); $('.color-input').trigger('change'); fn_render_preview(); });
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -907,6 +907,8 @@
|
|||||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].optnVal1", $('[name=optnVal1_normal]').eq(idx).val(), hiddenForm);
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].optnVal1", $('[name=optnVal1_normal]').eq(idx).val(), hiddenForm);
|
||||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].optnCd1", $('[name=optnCd1_normal]').eq(idx).val(), hiddenForm);
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].optnCd1", $('[name=optnCd1_normal]').eq(idx).val(), hiddenForm);
|
||||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].sopmalCd", sopmalCd, hiddenForm);
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].sopmalCd", sopmalCd, hiddenForm);
|
||||||
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].hscode", $('[name=hscode_normal]').eq(idx).val(), hiddenForm);
|
||||||
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].realWt", $('[name=realWt_normal]').eq(idx).val(), hiddenForm);
|
||||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].invntryQy", fn_comma_del_str_to_number($('[name=invntryQy_normal]').eq(idx).val()), hiddenForm);
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].invntryQy", fn_comma_del_str_to_number($('[name=invntryQy_normal]').eq(idx).val()), hiddenForm);
|
||||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].cnsmrpric", fn_comma_del_str_to_number($('[name=cnsmrpric_normal]').eq(idx).val()), hiddenForm);
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].cnsmrpric", fn_comma_del_str_to_number($('[name=cnsmrpric_normal]').eq(idx).val()), hiddenForm);
|
||||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].slepric", fn_comma_del_str_to_number($('[name=slepric_normal]').eq(idx).val()), hiddenForm);
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].slepric", fn_comma_del_str_to_number($('[name=slepric_normal]').eq(idx).val()), hiddenForm);
|
||||||
@@ -2659,7 +2661,7 @@
|
|||||||
<input type="checkbox" value="${ iconList.cd }" name="iconCd">
|
<input type="checkbox" value="${ iconList.cd }" name="iconCd">
|
||||||
<span class="check"></span>
|
<span class="check"></span>
|
||||||
<span class="control-label">
|
<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>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -4152,7 +4154,11 @@
|
|||||||
|
|
||||||
// 실무게 자릿수 제한
|
// 실무게 자릿수 제한
|
||||||
$(document).on('input', 'input[name="realWt_normal"]', function () {
|
$(document).on('input', 'input[name="realWt_normal"]', function () {
|
||||||
this.value = this.value.replace(/(\.\d).*/,'$1');
|
let value = this.value;
|
||||||
|
value = value.replace(/[^\d.]/g, ''); // 숫자와 .만 허용
|
||||||
|
value = value.replace(/(\..*)\./g, '$1'); // . 하나만 허용
|
||||||
|
value = value.replace(/(\.\d{1}).*/, '$1'); // 소수 1자리 제한
|
||||||
|
this.value = value;
|
||||||
});
|
});
|
||||||
|
|
||||||
// 하이픈 뒤에 숫자한자리만 남기기
|
// 하이픈 뒤에 숫자한자리만 남기기
|
||||||
@@ -4578,4 +4584,4 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -961,6 +961,8 @@
|
|||||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].optnVal1", $('[name=optnVal1_normal]').eq(idx).val(), hiddenForm);
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].optnVal1", $('[name=optnVal1_normal]').eq(idx).val(), hiddenForm);
|
||||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].optnCd1", $('[name=optnCd1_normal]').eq(idx).val(), hiddenForm);
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].optnCd1", $('[name=optnCd1_normal]').eq(idx).val(), hiddenForm);
|
||||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].sopmalCd", sopmalCd, hiddenForm);
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].sopmalCd", sopmalCd, hiddenForm);
|
||||||
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].hscode", $('[name=hscode_normal]').eq(idx).val(), hiddenForm);
|
||||||
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].realWt", $('[name=realWt_normal]').eq(idx).val(), hiddenForm);
|
||||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].invntryQy", fn_comma_del_str_to_number($('[name=invntryQy_normal]').eq(idx).val()), hiddenForm);
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].invntryQy", fn_comma_del_str_to_number($('[name=invntryQy_normal]').eq(idx).val()), hiddenForm);
|
||||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].cnsmrpric", fn_comma_del_str_to_number($('[name=cnsmrpric_normal]').eq(idx).val()), hiddenForm);
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].cnsmrpric", fn_comma_del_str_to_number($('[name=cnsmrpric_normal]').eq(idx).val()), hiddenForm);
|
||||||
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].slepric", fn_comma_del_str_to_number($('[name=slepric_normal]').eq(idx).val()), hiddenForm);
|
fn_create_input('hidden', "goodsNormalOptionVOList[" + idx + "].slepric", fn_comma_del_str_to_number($('[name=slepric_normal]').eq(idx).val()), hiddenForm);
|
||||||
@@ -2683,7 +2685,7 @@
|
|||||||
<th>상품명(영문)<span class="red-7">*</span></th>
|
<th>상품명(영문)<span class="red-7">*</span></th>
|
||||||
<td>
|
<td>
|
||||||
<div class="td-inner">
|
<div class="td-inner">
|
||||||
<input class="input-text full" type="text" title="상품명(영문)" id="goodsNmEn" name="goodsNm" maxlength="35" value="${resultMap.goodsDtl.goodsNmEn}">
|
<input class="input-text full" type="text" title="상품명(영문)" id="goodsNmEn" name="goodsNmEn" maxlength="35" value="${resultMap.goodsDtl.goodsNmEn}">
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -2830,7 +2832,7 @@
|
|||||||
<input type="checkbox" value="${iconList.cd}" name="iconCd" ${isChecked}/>
|
<input type="checkbox" value="${iconList.cd}" name="iconCd" ${isChecked}/>
|
||||||
<span class="check"></span>
|
<span class="check"></span>
|
||||||
<span class="control-label">
|
<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>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
@@ -5162,7 +5164,11 @@
|
|||||||
|
|
||||||
// 실무게 자릿수 제한
|
// 실무게 자릿수 제한
|
||||||
$(document).on('input', 'input[name="realWt_normal"]', function () {
|
$(document).on('input', 'input[name="realWt_normal"]', function () {
|
||||||
this.value = this.value.replace(/(\.\d).*/,'$1');
|
let value = this.value;
|
||||||
|
value = value.replace(/[^\d.]/g, ''); // 숫자와 .만 허용
|
||||||
|
value = value.replace(/(\..*)\./g, '$1'); // . 하나만 허용
|
||||||
|
value = value.replace(/(\.\d{1}).*/, '$1'); // 소수 1자리 제한
|
||||||
|
this.value = value;
|
||||||
});
|
});
|
||||||
|
|
||||||
// 하이픈 뒤에 숫자한자리만 남기기
|
// 하이픈 뒤에 숫자한자리만 남기기
|
||||||
@@ -5665,4 +5671,4 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -3283,7 +3283,7 @@
|
|||||||
<input type="checkbox" value="${iconList.cd}" name="iconCd" ${isChecked}/>
|
<input type="checkbox" value="${iconList.cd}" name="iconCd" ${isChecked}/>
|
||||||
<span class="check"></span>
|
<span class="check"></span>
|
||||||
<span class="control-label">
|
<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>
|
</span>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
@@ -5682,7 +5682,11 @@
|
|||||||
|
|
||||||
// 실무게 자릿수 제한
|
// 실무게 자릿수 제한
|
||||||
$(document).on('input', 'input[name="realWt_normal"]', function () {
|
$(document).on('input', 'input[name="realWt_normal"]', function () {
|
||||||
this.value = this.value.replace(/(\.\d).*/,'$1');
|
let value = this.value;
|
||||||
|
value = value.replace(/[^\d.]/g, ''); // 숫자와 .만 허용
|
||||||
|
value = value.replace(/(\..*)\./g, '$1'); // . 하나만 허용
|
||||||
|
value = value.replace(/(\.\d{1}).*/, '$1'); // 소수 1자리 제한
|
||||||
|
this.value = value;
|
||||||
});
|
});
|
||||||
|
|
||||||
// 하이픈 뒤에 숫자한자리만 남기기
|
// 하이픈 뒤에 숫자한자리만 남기기
|
||||||
@@ -6184,4 +6188,4 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -133,6 +133,17 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ********************************************************
|
||||||
|
* xml 임시
|
||||||
|
******************************************************** */
|
||||||
|
const fn_update_xml = function () {
|
||||||
|
const url = '<c:url value="/mngr/goods/goodsmngr/selectGoodsRegistForm"/>';
|
||||||
|
|
||||||
|
$('#listForm').attr('action', url);
|
||||||
|
$('#listForm').attr('method', 'post');
|
||||||
|
$('#listForm').submit();
|
||||||
|
};
|
||||||
|
|
||||||
/* ********************************************************
|
/* ********************************************************
|
||||||
* 등록폼 이동
|
* 등록폼 이동
|
||||||
******************************************************** */
|
******************************************************** */
|
||||||
@@ -441,6 +452,7 @@
|
|||||||
<div class="page-title">
|
<div class="page-title">
|
||||||
<h2 class="page-title__title">상품 목록</h2>
|
<h2 class="page-title__title">상품 목록</h2>
|
||||||
<div class="page-title__btn-container">
|
<div class="page-title__btn-container">
|
||||||
|
<button onclick="fn_update_xml()" class="btn primary">XML 업데이트(임시)</button>
|
||||||
<button onclick="fn_move_regpage()" class="btn primary">상품 <spring:message code="button.insert"/></button>
|
<button onclick="fn_move_regpage()" class="btn primary">상품 <spring:message code="button.insert"/></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -74,8 +74,8 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>
|
<th>
|
||||||
<label class="b-checkbox checkbox is-medium">
|
<label class="b-checkbox checkbox is-medium check-all">
|
||||||
<input type="checkbox" id="checkAll" value="">
|
<input type="checkbox" id="chkA" value="">
|
||||||
<span class="check"></span>
|
<span class="check"></span>
|
||||||
</label>
|
</label>
|
||||||
</th>
|
</th>
|
||||||
@@ -100,8 +100,8 @@
|
|||||||
<c:forEach items="${ resultMap.list }" var="subsvc" varStatus="status">
|
<c:forEach items="${ resultMap.list }" var="subsvc" varStatus="status">
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<label class="b-checkbox checkbox is-medium check-all">
|
<label class="b-checkbox checkbox is-medium">
|
||||||
<input type="checkbox" name="arrSubsvcInnb" class="subsvcInnb" value="${subsvc.subsvcInnb}">
|
<input type="checkbox" name="arrSubsvcInnb" class="subsvcInnb chk" value="${subsvc.subsvcInnb}">
|
||||||
<span class="check"></span>
|
<span class="check"></span>
|
||||||
</label>
|
</label>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -148,12 +148,24 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/* 목록 > 전체선택 체인지 이벤트 */
|
// 테이블 체크박스 전체 선택
|
||||||
$(document).on('change', '#checkAll', function () {
|
$(document).on("click", "#chkA", function () {
|
||||||
let checkbox = $(this).closest('table').find('input[name="arrSubsvcInnb"]');
|
if($(this).is(':checked')){
|
||||||
|
$(".chk").prop('checked', true);
|
||||||
|
}else{
|
||||||
|
$(".chk").prop('checked', false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$(checkbox).prop('checked', false);
|
// 목록에서 체크 해제시 전체 체크박스 해제 및 목록 항목 전체 체크 시 전체체크 버튼 true
|
||||||
$(checkbox).prop('checked', $(this).is(':checked'));
|
$(document).on("click", ".chk", function () {
|
||||||
|
let length = $(".chk").length;
|
||||||
|
let chcedLen = $(".chk:checked").length;
|
||||||
|
if (length == chcedLen) {
|
||||||
|
$("#chkA").prop('checked', true);
|
||||||
|
}else{
|
||||||
|
$("#chkA").prop('checked', false);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
fn_select_list(pageIndex, pageUnit);
|
fn_select_list(pageIndex, pageUnit);
|
||||||
//지정일
|
//지정일
|
||||||
fn_set_date('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDㄴt');
|
fn_set_date('srchStrtSndngDt','srchEndSndngDt','srchEndSndngDt');
|
||||||
|
|
||||||
//날짜 선택 버튼 선택 처리
|
//날짜 선택 버튼 선택 처리
|
||||||
$(".dateRange-btnContainer").on("click", ".dateRange-btn", function(){
|
$(".dateRange-btnContainer").on("click", ".dateRange-btn", function(){
|
||||||
|
|||||||
@@ -547,19 +547,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 출고내역 주문배송 정보 조회 */
|
/* 출고내역 주문배송 정보 조회 */
|
||||||
const fn_open_dlvy_sweettracker_modal = function(dlivyInnb) {
|
const fn_open_dlvy_popup = function(invcnb) {
|
||||||
$.ajax({
|
let url = 'https://www.acieshop.com/pod.php?OrderNo=' + invcnb;
|
||||||
type:'post',
|
window.open(url, 'acieView', 'width=605,height=700');
|
||||||
url:'<c:url value="/mngr/ordr/dlivy/selectOrdrDlvyDtlsInqire"/>',
|
|
||||||
data:{
|
|
||||||
'dlivyInnb':dlivyInnb
|
|
||||||
},
|
|
||||||
success:function (html) {
|
|
||||||
$('#modalDiv').html(html);
|
|
||||||
|
|
||||||
$('#delivery-history-pop').remove().modal();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 무효/취소/반품 내역 정보 조회 */
|
/* 무효/취소/반품 내역 정보 조회 */
|
||||||
@@ -758,11 +748,11 @@
|
|||||||
<button type = "button" class="btn xsm gray" onclick="fn_open_dlvy_modal('#modalDiv', '#purchase-confirmation-pop', '<c:url value="/mngr/ordr/dlivy/selectPurchsDcsnProcsLogDtlsPopupForm"/>', '<c:out value="${ resultMap.result.dlivyInnb }"/>', '<c:out value="${ resultMap.result.ordrInnb }"/>');" >로그</button>
|
<button type = "button" class="btn xsm gray" onclick="fn_open_dlvy_modal('#modalDiv', '#purchase-confirmation-pop', '<c:url value="/mngr/ordr/dlivy/selectPurchsDcsnProcsLogDtlsPopupForm"/>', '<c:out value="${ resultMap.result.dlivyInnb }"/>', '<c:out value="${ resultMap.result.ordrInnb }"/>');" >로그</button>
|
||||||
</h2>
|
</h2>
|
||||||
<div class="page-title__btn-container">
|
<div class="page-title__btn-container">
|
||||||
<c:choose>
|
<%--<c:choose>
|
||||||
<c:when test="${ resultMap.result.dlivySttusCd ge 55 }">
|
<c:when test="${ resultMap.result.dlivySttusCd ge 55 }">
|
||||||
<button type = "button" class="btn gray" onclick="fn_open_dlvy_modal('#modalDiv', '#delivery-history-pop', '<c:url value="/mngr/ordr/dlivy/selectOrdrDlvyDtlsInqire"/>', '<c:out value="${ resultMap.result.dlivyInnb }"/>')">배송추적</button>
|
<button type = "button" class="btn gray" onclick="fn_open_dlvy_popup('<c:out value="${ resultMap.result.invcnb }"/>')">배송추적</button>
|
||||||
</c:when>
|
</c:when>
|
||||||
</c:choose>
|
</c:choose>--%>
|
||||||
<button type = "button" class="btn outline" onclick="fn_select_dlvy_list();">출고리스트</button>
|
<button type = "button" class="btn outline" onclick="fn_select_dlvy_list();">출고리스트</button>
|
||||||
<%-- 되돌리기 기능 제거 ( 2024-07-02 상시 회의록 참고 )
|
<%-- 되돌리기 기능 제거 ( 2024-07-02 상시 회의록 참고 )
|
||||||
<c:choose>
|
<c:choose>
|
||||||
|
|||||||
@@ -894,7 +894,7 @@
|
|||||||
tr += ' </div> ';
|
tr += ' </div> ';
|
||||||
tr += ' <div class="input-container gap-3 mt-5"> ';
|
tr += ' <div class="input-container gap-3 mt-5"> ';
|
||||||
tr += ' <input class="input-text md" type="text" oninput="validateInputEngNumber(this)" name="invcnb" title="운송장번호" value= "' + data.invcnb + '"> ';
|
tr += ' <input class="input-text md" type="text" oninput="validateInputEngNumber(this)" name="invcnb" title="운송장번호" value= "' + data.invcnb + '"> ';
|
||||||
tr += ' <button type = "button" onclick = "fn_open_dlvy_sweettracker_modal(\'#modalDiv\', \'#delivery-history-pop\', \'<c:url value="/mngr/ordr/dlivy/selectOrdrDlvyDtlsInqire"/>\', \'' + data.dlivyInnb + '\')" ';
|
tr += ' <button type = "button" onclick = "fn_open_dlvy_popup(\'' + data.invcnb + '\')" ';
|
||||||
tr += ' class="btn xsm dark">조회</button > ';
|
tr += ' class="btn xsm dark">조회</button > ';
|
||||||
tr += ' </div> ';
|
tr += ' </div> ';
|
||||||
tr += ' </div> ';
|
tr += ' </div> ';
|
||||||
@@ -1474,24 +1474,10 @@
|
|||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* 배송그룹 / 방법변경 모달 , 배송 조회 모달
|
* 배송그룹 / 방법변경 모달 , 배송 조회 모달
|
||||||
* *******************************************************************/
|
* *******************************************************************/
|
||||||
const fn_open_dlvy_sweettracker_modal = function (modalDivSltr, modalSlrt, url, dlivyInnb) {
|
const fn_open_dlvy_popup = function (invcnb) {
|
||||||
|
let url = 'https://www.acieshop.com/pod.php?OrderNo=' + invcnb;
|
||||||
// const data = $(formId).serialize();
|
window.open(url, 'acieView', 'width=605,height=700');
|
||||||
|
}
|
||||||
$.ajax({
|
|
||||||
type: 'POST',
|
|
||||||
url: url,
|
|
||||||
data: {
|
|
||||||
dlivyInnb : dlivyInnb
|
|
||||||
},
|
|
||||||
success: function (data) {
|
|
||||||
$(modalSlrt).remove();
|
|
||||||
$(modalDivSltr).html(data);
|
|
||||||
$(modalSlrt).modal();
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************
|
/*****************************************************************
|
||||||
|
|||||||
@@ -242,7 +242,7 @@
|
|||||||
<div class="input-container gap-3 mt-5">
|
<div class="input-container gap-3 mt-5">
|
||||||
<%-- <input type="hidden" name="ordrDlvyInnb" value="<c:out value="${ exList.ordrDlvyInnb }"/>" /> --%>
|
<%-- <input type="hidden" name="ordrDlvyInnb" value="<c:out value="${ exList.ordrDlvyInnb }"/>" /> --%>
|
||||||
<input class="input-text md" type="text" oninput="validateInputEngNumber(this)" title="송장 번호" name="dlivyUpdtVOList[${ status.index }].invcnb" value="<c:out value="${ exList.invcnb }"/>" />
|
<input class="input-text md" type="text" oninput="validateInputEngNumber(this)" title="송장 번호" name="dlivyUpdtVOList[${ status.index }].invcnb" value="<c:out value="${ exList.invcnb }"/>" />
|
||||||
<button type="button" class="btn xsm dark" onclick="fn_open_dlvy_sweettracker_modal('#modalDiv', '#delivery-history-pop', '<c:url value="/mngr/ordr/dlivy/selectOrdrDlvyDtlsInqire"/>', '<c:out value="${ exList.dlivyInnb }"/>')" >조회</button>
|
<button type="button" class="btn xsm dark" onclick="fn_open_dlvy_popup('<c:out value="${ exList.invcnb }"/>')" >조회</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -557,7 +557,7 @@
|
|||||||
'</div>' +
|
'</div>' +
|
||||||
'<div class="input-container gap-3 mt-5">' +
|
'<div class="input-container gap-3 mt-5">' +
|
||||||
'<input class="input-text md" type="text" oninput="validateInputEngNumber(this)" title="송장번호" value="' + invcnb +'">' +
|
'<input class="input-text md" type="text" oninput="validateInputEngNumber(this)" title="송장번호" value="' + invcnb +'">' +
|
||||||
'<button type="button" class="btn xsm dark" onclick="fn_open_dlvy_sweettracker_modal(\'#modalDiv\', \'#delivery-history-pop\', \'<c:url value="/mngr/ordr/dlivy/selectOrdrDlvyDtlsInqire"/>\', ' + invcnb + ')">조회</button>' +
|
'<button type="button" class="btn xsm dark" onclick="fn_open_dlvy_popup(' + invcnb + ')">조회</button>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</td>' +
|
'</td>' +
|
||||||
@@ -731,7 +731,7 @@
|
|||||||
'</div>' +
|
'</div>' +
|
||||||
'<div class="input-container gap-3 mt-5">' +
|
'<div class="input-container gap-3 mt-5">' +
|
||||||
'<input class="input-text md" type="text" oninput="validateInputEngNumber(this)" title="송장번호" name="dlivyUpdtVOList[' + index + '].invcnb" value="' + invcnb +'">' +
|
'<input class="input-text md" type="text" oninput="validateInputEngNumber(this)" title="송장번호" name="dlivyUpdtVOList[' + index + '].invcnb" value="' + invcnb +'">' +
|
||||||
'<button type="button" class="btn xsm dark" onclick="fn_open_dlvy_sweettracker_modal(\'#modalDiv\', \'#delivery-history-pop\', \'<c:url value="/mngr/ordr/dlivy/selectOrdrDlvyDtlsInqire"/>\', ' + invcnb + ')">조회</button>' +
|
'<button type="button" class="btn xsm dark" onclick="fn_open_dlvy_popup(' + invcnb + ')">조회</button>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</td>' +
|
'</td>' +
|
||||||
@@ -844,21 +844,9 @@
|
|||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* 배송그룹 / 방법변경 모달 , 배송 조회 모달
|
* 배송그룹 / 방법변경 모달 , 배송 조회 모달
|
||||||
* *******************************************************************/
|
* *******************************************************************/
|
||||||
const fn_open_dlvy_sweettracker_modal = function (modalDivSltr, modalSlrt, url, dlivyInnb) {
|
const fn_open_dlvy_popup = function (invcnb) {
|
||||||
|
let url = 'https://www.acieshop.com/pod.php?OrderNo=' + invcnb;
|
||||||
$.ajax({
|
window.open(url, 'acieView', 'width=605,height=700');
|
||||||
type: 'POST',
|
|
||||||
url: url,
|
|
||||||
data: {
|
|
||||||
dlivyInnb : dlivyInnb
|
|
||||||
},
|
|
||||||
success: function (data) {
|
|
||||||
$(modalSlrt).remove();
|
|
||||||
$(modalDivSltr).html(data);
|
|
||||||
$(modalSlrt).modal();
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -391,6 +391,7 @@
|
|||||||
$(document).on('click', '[id*="ordrSttus"]', function() {
|
$(document).on('click', '[id*="ordrSttus"]', function() {
|
||||||
const tr = ($(this).attr('class').split(' ')[0]).replace('btn-', '');
|
const tr = ($(this).attr('class').split(' ')[0]).replace('btn-', '');
|
||||||
const rowCheckboxs = $('.' + tr).closest('#orderList').find('.' + tr + ' input[name="ordrInnb"]:checked');
|
const rowCheckboxs = $('.' + tr).closest('#orderList').find('.' + tr + ' input[name="ordrInnb"]:checked');
|
||||||
|
const smrtShopngOrdrnbs = rowCheckboxs.closest('td').find('input[name="smrtShopngOrdrnb"]');
|
||||||
|
|
||||||
if (rowCheckboxs.length === 0) {
|
if (rowCheckboxs.length === 0) {
|
||||||
alert('선택값이 없습니다.');
|
alert('선택값이 없습니다.');
|
||||||
@@ -404,6 +405,20 @@
|
|||||||
return $(this).closest('tr').find('input[name="subsvcAt"]').val() === 'Y';
|
return $(this).closest('tr').find('input[name="subsvcAt"]').val() === 'Y';
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 네이버페이 주문 제어 제한
|
||||||
|
let hasSmrt = false;
|
||||||
|
$(smrtShopngOrdrnbs).each(function() {
|
||||||
|
if($(this).val() != 'undefined' && $(this).val() != 'null' && $.trim($(this).val()) != '') {
|
||||||
|
hasSmrt = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if ('35' != chgOrdrSttusCd && hasSmrt) {
|
||||||
|
alert('네이버페이 주문건은 처리할 수 없습니다.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
let msg = '';
|
let msg = '';
|
||||||
|
|
||||||
if (chgOrdrSttusCd === '35' && hasSubsvc) {
|
if (chgOrdrSttusCd === '35' && hasSubsvc) {
|
||||||
@@ -431,42 +446,23 @@
|
|||||||
* 열 헤더, 푸터 > 프린트 버튼 클릭 이벤트
|
* 열 헤더, 푸터 > 프린트 버튼 클릭 이벤트
|
||||||
*/
|
*/
|
||||||
$(document).on('click', '[class*="btn-order-print"]', function() {
|
$(document).on('click', '[class*="btn-order-print"]', function() {
|
||||||
const tr = ($(this).attr('class').split(' ')[0]).replace('btn-order-print-', 'order-sttus-cd-');
|
fn_select_dwld_purch_ordr_list();
|
||||||
const rowCheckboxs = $('.' + tr).closest('#orderList').find('.' + tr + ' input[name="ordrInnb"]:checked');
|
/*const tr = ($(this).attr('class').split(' ')[0]).replace('btn-order-print-', 'order-sttus-cd-');
|
||||||
|
const rowCheckboxs = $('.' + tr).closest('#orderList').find('.' + tr + ' input[name="ordrInnb"]:checked');
|
||||||
|
|
||||||
if (rowCheckboxs.length === 0) {
|
if (rowCheckboxs.length === 0) {
|
||||||
alert('선택값이 없습니다.');
|
alert('선택값이 없습니다.');
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
let ordrInnbs = [];
|
let ordrInnbs = [];
|
||||||
|
|
||||||
$(rowCheckboxs).each(function(idx, item) {
|
$(rowCheckboxs).each(function(idx, item) {
|
||||||
ordrInnbs.push($(item).val());
|
ordrInnbs.push($(item).val());
|
||||||
});
|
});
|
||||||
|
|
||||||
fn_go_ordr_dtstmn_dwld_popup(ordrInnbs)
|
fn_go_ordr_dtstmn_dwld_popup(ordrInnbs)*/
|
||||||
});
|
|
||||||
|
|
||||||
/*
|
|
||||||
* 열 헤더 > 엑셀 발주서 다운로드 버튼 클릭 이벤트
|
|
||||||
*/
|
|
||||||
$(document).on('click', '.excel-dwld-purch-order', function() {
|
|
||||||
const srchStartDate = $('#srchStartDate').val();
|
|
||||||
const srchEndDate = $('#srchEndDate').val();
|
|
||||||
const srchOrdrSttusCd = '35';
|
|
||||||
|
|
||||||
var form = $('#condForm').clone().prop("id", "excelCondForm")
|
|
||||||
$(form).append($('<input/>', {type:'hidden', name:'srchOrdrSttusCd', value:srchOrdrSttusCd}));
|
|
||||||
|
|
||||||
$(form).attr('method', 'post');
|
|
||||||
$(form).attr('action', '<c:url value="/mngr/ordr/ordrmngr/selectExcelPoDwldListInqire"/>');
|
|
||||||
|
|
||||||
$(form).appendTo('body');
|
|
||||||
|
|
||||||
$(form).submit();
|
|
||||||
$(form).remove();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -791,7 +787,7 @@
|
|||||||
|
|
||||||
header += ' <button type="button" class="btn-order-print-' + data.ordrSttusCd + ' btn outline xsm fs-13"><i class="icon icon_print"></i>프린트</button>';
|
header += ' <button type="button" class="btn-order-print-' + data.ordrSttusCd + ' btn outline xsm fs-13"><i class="icon icon_print"></i>프린트</button>';
|
||||||
if ('35' === data.ordrSttusCd) {
|
if ('35' === data.ordrSttusCd) {
|
||||||
header += ' <button type="button" class="btn sm outline fs-13 excel-dwld-purch-order">';
|
header += ' <button type="button" onclick="fn_select_dwld_purch_ordr_list()" class="btn sm outline fs-13">';
|
||||||
header += ' <i class="icon icon_excel"></i>발주서 다운로드';
|
header += ' <i class="icon icon_excel"></i>발주서 다운로드';
|
||||||
header += ' </button>';
|
header += ' </button>';
|
||||||
}
|
}
|
||||||
@@ -870,6 +866,7 @@
|
|||||||
}
|
}
|
||||||
tr += '">';
|
tr += '">';
|
||||||
tr += ' <td>';
|
tr += ' <td>';
|
||||||
|
tr += ' <input type="hidden" name="smrtShopngOrdrnb" value="' + data.smrtShopngOrdrnb + '">';
|
||||||
tr += ' <label class="b-checkbox checkbox is-medium tr-color-check">';
|
tr += ' <label class="b-checkbox checkbox is-medium tr-color-check">';
|
||||||
tr += ' <input type="checkbox" name="ordrInnb" value="' + data.ordrInnb + '">';
|
tr += ' <input type="checkbox" name="ordrInnb" value="' + data.ordrInnb + '">';
|
||||||
tr += ' <span class="check"></span>';
|
tr += ' <span class="check"></span>';
|
||||||
@@ -1388,7 +1385,7 @@
|
|||||||
}
|
}
|
||||||
footer += ' <button type="button" class="btn-order-print-' + data.ordrSttusCd + ' btn outline xsm fs-13"><i class="icon icon_print"></i>프린트</button>';
|
footer += ' <button type="button" class="btn-order-print-' + data.ordrSttusCd + ' btn outline xsm fs-13"><i class="icon icon_print"></i>프린트</button>';
|
||||||
if ('35' === prevOrderSttusCd) {
|
if ('35' === prevOrderSttusCd) {
|
||||||
footer += ' <button type="button" class="btn sm outline fs-13 excel-dwld-purch-order">';
|
footer += ' <button type="button" onclick="fn_select_dwld_purch_ordr_list()" class="btn sm outline fs-13">';
|
||||||
footer += ' <i class="icon icon_excel"></i>발주서 다운로드';
|
footer += ' <i class="icon icon_excel"></i>발주서 다운로드';
|
||||||
footer += ' </button>';
|
footer += ' </button>';
|
||||||
}
|
}
|
||||||
@@ -1722,8 +1719,6 @@
|
|||||||
$(form).submit();
|
$(form).submit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* 다운로드 항목 목록 이동 */
|
/* 다운로드 항목 목록 이동 */
|
||||||
const fn_select_dwld_ordr_list = function() {
|
const fn_select_dwld_ordr_list = function() {
|
||||||
var form = $('#condForm')
|
var form = $('#condForm')
|
||||||
@@ -1737,9 +1732,17 @@
|
|||||||
$(form).submit();
|
$(form).submit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 발주서 다운로드 항목 목록 이동 */
|
||||||
|
const fn_select_dwld_purch_ordr_list = function() {
|
||||||
|
var form = $('#condForm')
|
||||||
|
|
||||||
|
$(form).find('input[name="ordrInnb"]').remove();
|
||||||
|
|
||||||
|
$(form).attr('method', 'post');
|
||||||
|
$(form).attr('action', '<c:url value="/mngr/ordr/ordrmngr/selectExcelPoListInqireRForm"/>');
|
||||||
|
|
||||||
|
$(form).submit();
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@@ -1769,6 +1772,7 @@
|
|||||||
<a type="button" onclick="fn_select_indvdl_setle_list();" class="btn outline">개인 결제 목록</a>
|
<a type="button" onclick="fn_select_indvdl_setle_list();" class="btn outline">개인 결제 목록</a>
|
||||||
<a href="<c:url value="/crm/ordr/selectMngrOrdrRegistForm"/>" class="btn outline" target='_blank'>관리자 주문 등록</a>
|
<a href="<c:url value="/crm/ordr/selectMngrOrdrRegistForm"/>" class="btn outline" target='_blank'>관리자 주문 등록</a>
|
||||||
<a type="button" onclick="fn_select_dwld_ordr_list();" class="btn outline">다운로드 항목설정 목록</a>
|
<a type="button" onclick="fn_select_dwld_ordr_list();" class="btn outline">다운로드 항목설정 목록</a>
|
||||||
|
<a type="button" onclick="fn_select_dwld_purch_ordr_list()" class="btn outline"><i class="icon icon_excel"></i>발주서 다운로드</a>
|
||||||
<button type="button" class="btn primary" onclick="fn_dlivy_procs_popup('/mngr/ordr/dlivy/selectOrdrDlivyPopupForm','팝업','1400','840', 'O');">출고처리</button>
|
<button type="button" class="btn primary" onclick="fn_dlivy_procs_popup('/mngr/ordr/dlivy/selectOrdrDlivyPopupForm','팝업','1400','840', 'O');">출고처리</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -123,7 +123,7 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<input type="text" name="invcnb" value="${goodsExport.invcnb}" oninput="validateInputEngNumber(this)" class="input-text md" title="송장번호">
|
<input type="text" name="invcnb" value="${goodsExport.invcnb}" oninput="validateInputEngNumber(this)" class="input-text md" title="송장번호">
|
||||||
<a href="javascript:void(0);" onclick="fn_open_dlvy_sweettracker_modal('${goodsExport.dlivyInnb}'); return false;" class="btn sm outline primary">조회</a>
|
<a href="javascript:void(0);" onclick="fn_open_dlvy_popup('${goodsExport.invcnb}'); return false;" class="btn sm outline primary">조회</a>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</c:when>
|
</c:when>
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<input type="text" name="invcnb" value="${goodsExport.invcnb}" oninput="validateInputEngNumber(this)" class="input-text md" title="송장번호" readonly>
|
<input type="text" name="invcnb" value="${goodsExport.invcnb}" oninput="validateInputEngNumber(this)" class="input-text md" title="송장번호" readonly>
|
||||||
<a href="javascript:void(0);" onclick="fn_open_dlvy_sweettracker_modal('${goodsExport.dlivyInnb}'); return false;" class="btn sm outline primary">조회</a>
|
<a href="javascript:void(0);" onclick="fn_open_dlvy_popup('${goodsExport.invcnb}'); return false;" class="btn sm outline primary">조회</a>
|
||||||
</div>
|
</div>
|
||||||
</c:otherwise>
|
</c:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
|
|||||||
@@ -104,6 +104,11 @@
|
|||||||
const currOrdrSttusCd = '${data.dtl.ordrSttusCd}';
|
const currOrdrSttusCd = '${data.dtl.ordrSttusCd}';
|
||||||
const subsvcAt = '${data.dtl.subsvcAt}';
|
const subsvcAt = '${data.dtl.subsvcAt}';
|
||||||
|
|
||||||
|
// 네이버페이 주문 제어 제한
|
||||||
|
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}', chgOrdrSttusCd)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (chgOrdrSttusCd === '35' && subsvcAt === 'Y') {
|
if (chgOrdrSttusCd === '35' && subsvcAt === 'Y') {
|
||||||
alert('구독서비스의 상품준비 처리는 "구독서비스 상품준비 관리" 화면에서 처리해주세요.');
|
alert('구독서비스의 상품준비 처리는 "구독서비스 상품준비 관리" 화면에서 처리해주세요.');
|
||||||
return;
|
return;
|
||||||
@@ -121,6 +126,10 @@
|
|||||||
$('#canclPayment').on('click', function() {
|
$('#canclPayment').on('click', function() {
|
||||||
const ordrInnb = '${data.dtl.ordrInnb}';
|
const ordrInnb = '${data.dtl.ordrInnb}';
|
||||||
|
|
||||||
|
// 네이버페이 주문 제어 제한
|
||||||
|
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}'))
|
||||||
|
return false;
|
||||||
|
|
||||||
fn_get_cancl_payment(ordrInnb);
|
fn_get_cancl_payment(ordrInnb);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -562,6 +571,10 @@
|
|||||||
const section = $(this).closest('section');
|
const section = $(this).closest('section');
|
||||||
const form = $(section).find('form')
|
const form = $(section).find('form')
|
||||||
|
|
||||||
|
// 네이버페이 주문 제어 제한
|
||||||
|
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}'))
|
||||||
|
return false;
|
||||||
|
|
||||||
// let recpntMbtlnb = '';
|
// let recpntMbtlnb = '';
|
||||||
|
|
||||||
// $(form).find('.recpnt-mbtlnb').each(function(index) {
|
// $(form).find('.recpnt-mbtlnb').each(function(index) {
|
||||||
@@ -716,6 +729,10 @@
|
|||||||
* 주문자 저장 버튼 클릭 이벤트
|
* 주문자 저장 버튼 클릭 이벤트
|
||||||
*/
|
*/
|
||||||
$('#saveOrdrr').on('click', function() {
|
$('#saveOrdrr').on('click', function() {
|
||||||
|
// 네이버페이 주문 제어 제한
|
||||||
|
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}'))
|
||||||
|
return false;
|
||||||
|
|
||||||
if (confirm('<spring:message code="confirm.common.update"/>')) {
|
if (confirm('<spring:message code="confirm.common.update"/>')) {
|
||||||
const table = $(this).closest('table');
|
const table = $(this).closest('table');
|
||||||
const ordrrNm = $(table).find('input[name="ordrrNm"]').val()
|
const ordrrNm = $(table).find('input[name="ordrrNm"]').val()
|
||||||
@@ -748,6 +765,10 @@
|
|||||||
* 결제정보 저장
|
* 결제정보 저장
|
||||||
*/
|
*/
|
||||||
$(document).on('click', '#saveSetle', function() {
|
$(document).on('click', '#saveSetle', function() {
|
||||||
|
// 네이버페이 주문 제어 제한
|
||||||
|
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}'))
|
||||||
|
return false;
|
||||||
|
|
||||||
if (confirm('<spring:message code="confirm.common.update"/>')) {
|
if (confirm('<spring:message code="confirm.common.update"/>')) {
|
||||||
const select = $('#setleDiv').find('#acntnb option:selected');
|
const select = $('#setleDiv').find('#acntnb option:selected');
|
||||||
|
|
||||||
@@ -942,19 +963,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 출고내역 주문배송 정보 조회 */
|
/* 출고내역 주문배송 정보 조회 */
|
||||||
const fn_open_dlvy_sweettracker_modal = function(dlivyInnb) {
|
const fn_open_dlvy_popup = function(invcnb) {
|
||||||
$.ajax({
|
let url = 'https://www.acieshop.com/pod.php?OrderNo=' + invcnb;
|
||||||
type:'post',
|
window.open(url, 'acieView', 'width=605,height=700');
|
||||||
url:'<c:url value="/mngr/ordr/dlivy/selectOrdrDlvyDtlsInqire"/>',
|
|
||||||
data:{
|
|
||||||
'dlivyInnb':dlivyInnb
|
|
||||||
},
|
|
||||||
success:function (html) {
|
|
||||||
$('#modalDiv').html(html);
|
|
||||||
|
|
||||||
$('#delivery-history-pop').remove().modal();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 배송그룹/방법 변경 정보 조회 */
|
/* 배송그룹/방법 변경 정보 조회 */
|
||||||
@@ -1026,11 +1037,30 @@
|
|||||||
url:'<c:url value="/mngr/ordr/ordrmngr/updateDlvylcInfoUpdt"/>',
|
url:'<c:url value="/mngr/ordr/ordrmngr/updateDlvylcInfoUpdt"/>',
|
||||||
data:$(obj).serialize(),
|
data:$(obj).serialize(),
|
||||||
success:function(data) {
|
success:function(data) {
|
||||||
if (data.resBody != null) {
|
let result = data.resBody ? data.resBody.result : null;
|
||||||
alert('<spring:message code="success.common.update"/>');
|
|
||||||
|
|
||||||
fn_get_dlvy('${data.dtl.ordrInnb}');
|
if (!result) {
|
||||||
|
alert('<spring:message code="error.internal-server"/>');
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (typeof result === 'string') {
|
||||||
|
if (!fn_check_json(result)) {
|
||||||
|
alert('<spring:message code="error.internal-server"/>');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = JSON.parse(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result.status !== '0') {
|
||||||
|
alert(result.message || '<spring:message code="error.internal-server"/>');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
alert('<spring:message code="success.common.update"/>');
|
||||||
|
|
||||||
|
fn_get_dlvy('${data.dtl.ordrInnb}');
|
||||||
},
|
},
|
||||||
error:function(data) {
|
error:function(data) {
|
||||||
fn_proc_error_message(data);
|
fn_proc_error_message(data);
|
||||||
@@ -1488,7 +1518,10 @@
|
|||||||
$("#overlay").fadeOut();
|
$("#overlay").fadeOut();
|
||||||
|
|
||||||
if (!data.responseJSON.resBody.message) {
|
if (!data.responseJSON.resBody.message) {
|
||||||
alert('<spring:message code="error.internal-server"/>');
|
if(!data.responseJSON.resBody.result)
|
||||||
|
alert('<spring:message code="error.internal-server"/>');
|
||||||
|
else
|
||||||
|
alert(data.responseJSON.resBody.result);
|
||||||
} else {
|
} else {
|
||||||
if (fn_check_json(data.responseJSON.resBody.message)) {
|
if (fn_check_json(data.responseJSON.resBody.message)) {
|
||||||
const errorObject = JSON.parse(data.responseJSON.resBody.message);
|
const errorObject = JSON.parse(data.responseJSON.resBody.message);
|
||||||
@@ -1580,6 +1613,9 @@
|
|||||||
* 반품/환불 신청 팝업
|
* 반품/환불 신청 팝업
|
||||||
* *******************************************************************/
|
* *******************************************************************/
|
||||||
const fn_refund_regist_popup = function (modalDivSltr, modalSlrt, url, ordrInnb, setleTy, ordrSttusCd) {
|
const fn_refund_regist_popup = function (modalDivSltr, modalSlrt, url, ordrInnb, setleTy, ordrSttusCd) {
|
||||||
|
// 네이버페이 주문 제어 제한
|
||||||
|
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}'))
|
||||||
|
return false;
|
||||||
|
|
||||||
if ((setleTy === '05' || setleTy === '06') && ordrSttusCd !== '75') { // 에스크로 결제건은 배송완료가 된 후 반품신청이 가능.
|
if ((setleTy === '05' || setleTy === '06') && ordrSttusCd !== '75') { // 에스크로 결제건은 배송완료가 된 후 반품신청이 가능.
|
||||||
alert("에스크로 결제건은 배송완료 후 반품신청이 가능합니다.");
|
alert("에스크로 결제건은 배송완료 후 반품신청이 가능합니다.");
|
||||||
@@ -1741,7 +1777,18 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 네이버페이 주문 제어 제한
|
||||||
|
*/
|
||||||
|
const fn_check_smrtShoping = function(smrtShopngOrdrnb, chgOrdrSttusCd) {
|
||||||
|
const hasSmrt = smrtShopngOrdrnb != 'undefined' && smrtShopngOrdrnb != 'null' && smrtShopngOrdrnb != '';
|
||||||
|
if ((chgOrdrSttusCd == undefined || chgOrdrSttusCd !== '35') && hasSmrt) {
|
||||||
|
alert('네이버페이 주문건은 처리할 수 없습니다.');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
<form id="adres${orderShipping.ordrDlvyInnb}">
|
<form id="adres${orderShipping.ordrDlvyInnb}">
|
||||||
<input type="hidden" name="sopmalCd" id="sopmalCd" value="${orderShipping.sopmalCd}"/>
|
<input type="hidden" name="sopmalCd" id="sopmalCd" value="${orderShipping.sopmalCd}"/>
|
||||||
<input type="hidden" name="ordrInnb" id="ordrInnb" value="${orderShipping.ordrInnb}">
|
<input type="hidden" name="ordrInnb" id="ordrInnb" value="${orderShipping.ordrInnb}">
|
||||||
|
<input type="hidden" name="dlvylcAreaCd" value="${orderShipping.dlvylcAreaCd}">
|
||||||
<h3 class="content-section__title">배송지 정보</h3>
|
<h3 class="content-section__title">배송지 정보</h3>
|
||||||
<div class="form-control-container mb-10">
|
<div class="form-control-container mb-10">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
@@ -62,7 +63,9 @@
|
|||||||
<col style="width: auto;">
|
<col style="width: auto;">
|
||||||
<col style="width: auto;">
|
<col style="width: auto;">
|
||||||
<col style="width: auto;">
|
<col style="width: auto;">
|
||||||
<col style="width: 40%;">
|
<col style="width: auto;">
|
||||||
|
<col style="width: auto;">
|
||||||
|
<col style="width: 20%;">
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -102,6 +105,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
<th class="text-right">개인통관부호</th>
|
||||||
|
<td>
|
||||||
|
<div class="td-inner">
|
||||||
|
<input type="text" class="input-text" name="cstmclerCd" id="cstmclerCd" value="${orderShipping.cstmclerCd}" maxlength="13" placeholder="P로 시작하는 13자리 부호를 입력하세요"/>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -4,7 +4,8 @@
|
|||||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||||
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
|
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
|
||||||
|
<spring:eval expression="@environment.getProperty('currency-unit.default')" var="curUnit"/>
|
||||||
|
<spring:eval expression="@environment.getProperty('currency-unit.KR')" var="krUnit"/>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ko">
|
<html lang="ko">
|
||||||
<head>
|
<head>
|
||||||
@@ -182,20 +183,23 @@
|
|||||||
<table class="order_print_info" style="width:100%;">
|
<table class="order_print_info" style="width:100%;">
|
||||||
<tr>
|
<tr>
|
||||||
<th>상품금액</th>
|
<th>상품금액</th>
|
||||||
<td><fmt:formatNumber value="${setle.slepric}" pattern="#,###"/>원</td>
|
<td><fmt:formatNumber value="${setle.slepric}" pattern="#,###"/>${curUnit}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>배송비</th>
|
<th>배송비</th>
|
||||||
<td><fmt:formatNumber value="${setle.dlvyAmt}" pattern="#,###"/>원</td>
|
<td><fmt:formatNumber value="${setle.dlvyAmt}" pattern="#,###"/>${curUnit}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>할인</th>
|
<th>할인</th>
|
||||||
<td><fmt:formatNumber value="${setle.dscntAmt}" pattern="#,###"/>원</td>
|
<td><fmt:formatNumber value="${setle.dscntAmt}" pattern="#,###"/>${curUnit}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>총 결제금액</th>
|
<th>총 결제금액</th>
|
||||||
<td>
|
<td>
|
||||||
<span style="font-size:12px;"><fmt:formatNumber value="${setle.setleAmt}" pattern="#,###"/>원</span>
|
<span style="font-size:12px;">
|
||||||
|
<fmt:formatNumber value="${setle.setleAmt}" pattern="#,###"/>${curUnit}
|
||||||
|
(<fmt:formatNumber value="${setle.wonRlSetleAmt}" pattern="#,###"/>${krUnit})
|
||||||
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -304,13 +308,13 @@
|
|||||||
</c:forEach>
|
</c:forEach>
|
||||||
</td>
|
</td>
|
||||||
<td class="right"><fmt:formatNumber value="${goods.ordrQy}" pattern="#,###"/></td>
|
<td class="right"><fmt:formatNumber value="${goods.ordrQy}" pattern="#,###"/></td>
|
||||||
<td class="right"><fmt:formatNumber value="${goods.slepric}" pattern="#,###"/>원</td>
|
<td class="right"><fmt:formatNumber value="${goods.slepric}" pattern="#,###"/>${curUnit}</td>
|
||||||
<td class="right"><fmt:formatNumber value="${goods.dscntAmt}" pattern="#,###"/>원</td>
|
<td class="right"><fmt:formatNumber value="${goods.dscntAmt}" pattern="#,###"/>${curUnit}</td>
|
||||||
<td class="right"><fmt:formatNumber value="${goods.applyDscntAmt}" pattern="#,###"/>원<br/>(<fmt:formatNumber value="${goods.slepric}" pattern="#,###"/>원)</td>
|
<td class="right"><fmt:formatNumber value="${goods.applyDscntAmt}" pattern="#,###"/>${curUnit}<br/>(<fmt:formatNumber value="${goods.slepric}" pattern="#,###"/>${curUnit})</td>
|
||||||
<td class="right"><fmt:formatNumber value="${goods.mlgAmt}" pattern="#,###"/></td>
|
<td class="right"><fmt:formatNumber value="${goods.mlgAmt}" pattern="#,###"/></td>
|
||||||
<td rowspan="4" class="right">
|
<td rowspan="4" class="right">
|
||||||
<div><span>${goods.dlvyMthNm}</span></div>
|
<div><span>${goods.dlvyMthNm}</span></div>
|
||||||
<div><span class="bold"><fmt:formatNumber value="${goods.dlvyAmt}" pattern="#,###"/></span></div>
|
<div><span class="bold"><fmt:formatNumber value="${goods.dlvyAmt}" pattern="#,###"/>${curUnit}</span></div>
|
||||||
</td>
|
</td>
|
||||||
<td class="right"><fmt:formatNumber value="${goods.setleCanclQy}" pattern="#,###"/></td>
|
<td class="right"><fmt:formatNumber value="${goods.setleCanclQy}" pattern="#,###"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -368,7 +372,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td style="text-align:center;font-size:12px;"><span>-</span></td>
|
<td style="text-align:center;font-size:12px;"><span>-</span></td>
|
||||||
<td style="text-align:right;font-size:12px;">
|
<td style="text-align:right;font-size:12px;">
|
||||||
<span>할인<span> <fmt:formatNumber value="${setle.dscntAmt}" pattern="#,###"/>원</span></span>
|
<span>할인<span> <fmt:formatNumber value="${setle.dscntAmt}" pattern="#,###"/>${curUnit}</span></span>
|
||||||
</td>
|
</td>
|
||||||
<td style="text-align:center;font-size:12px;"><span>=</span></td>
|
<td style="text-align:center;font-size:12px;"><span>=</span></td>
|
||||||
<td style="text-align:right;font-size:12px;">
|
<td style="text-align:right;font-size:12px;">
|
||||||
@@ -377,12 +381,12 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td style="text-align:right;font-size:11px;">
|
<td style="text-align:right;font-size:11px;">
|
||||||
<span><fmt:formatNumber value="${setle.slepric}" pattern="#,###"/>원</span>
|
<span><fmt:formatNumber value="${setle.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</td>
|
</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td style="text-align:right;font-size:11px;">
|
<td style="text-align:right;font-size:11px;">
|
||||||
<div>
|
<div>
|
||||||
<span><fmt:formatNumber value="${setle.dlvyAmt}" pattern="#,###"/>원</span>
|
<span><fmt:formatNumber value="${setle.dlvyAmt}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
@@ -390,16 +394,19 @@
|
|||||||
<c:set var="dscnts" value="${ordrDtstmnDwld.dscnt}"/>
|
<c:set var="dscnts" value="${ordrDtstmnDwld.dscnt}"/>
|
||||||
<c:if test="${not empty dscnts}">
|
<c:if test="${not empty dscnts}">
|
||||||
<c:forEach var="dscnt" items="${dscnts}" varStatus="status">
|
<c:forEach var="dscnt" items="${dscnts}" varStatus="status">
|
||||||
<div>${dscnt.dscntDvNm}:<span><fmt:formatNumber value="${dscnt.dscntAmt}" pattern="#,###"/>원</span></div>
|
<div>${dscnt.dscntDvNm}:<span><fmt:formatNumber value="${dscnt.dscntAmt}" pattern="#,###"/>${curUnit}</span></div>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
</c:if>
|
</c:if>
|
||||||
<c:if test="${empty dscnts}">
|
<c:if test="${empty dscnts}">
|
||||||
<div><span>0원</span></div>
|
<div><span>0${curUnit}</span></div>
|
||||||
</c:if>
|
</c:if>
|
||||||
</td>
|
</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td style="text-align:right;font-size:12px;">
|
<td style="text-align:right;font-size:12px;">
|
||||||
<span><fmt:formatNumber value="${setle.setleAmt}" pattern="#,###"/>원</span>
|
<span>
|
||||||
|
<fmt:formatNumber value="${setle.setleAmt}" pattern="#,###"/>${curUnit}
|
||||||
|
(<fmt:formatNumber value="${setle.wonRlSetleAmt}" pattern="#,###"/>${krUnit})
|
||||||
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -0,0 +1,533 @@
|
|||||||
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||||
|
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
||||||
|
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||||
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||||
|
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
|
||||||
|
<spring:eval expression="@environment.getProperty('currency-unit.default')" var="curUnit"/>
|
||||||
|
<spring:eval expression="@environment.getProperty('currency-unit.KR')" var="krUnit"/>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
|
||||||
|
<style>
|
||||||
|
@media print {
|
||||||
|
html, body {
|
||||||
|
height:auto;
|
||||||
|
width:auto;
|
||||||
|
margin: 0 !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.pbreak {
|
||||||
|
page-break-after: always;
|
||||||
|
}
|
||||||
|
.pbreak:last-child {
|
||||||
|
page-break-after: auto;
|
||||||
|
}
|
||||||
|
table.order_print_info tr th {
|
||||||
|
padding:3px 3px 3px 3px;
|
||||||
|
text-align:left;
|
||||||
|
font-size:11px;
|
||||||
|
color:#4d4d4d;
|
||||||
|
font-weight:normal;
|
||||||
|
}
|
||||||
|
table.order_print_info tr td {
|
||||||
|
padding:3px 3px 3px 3px;
|
||||||
|
text-align:right;
|
||||||
|
font-size:11px;
|
||||||
|
}
|
||||||
|
table.delivery_print_info {
|
||||||
|
border-collapse:collapse !important;
|
||||||
|
border:1px solid #bcbfc1;
|
||||||
|
table-layout: fixed;
|
||||||
|
}
|
||||||
|
table.delivery_print_info tr th {
|
||||||
|
padding:3px 3px 3px 3px;
|
||||||
|
font-size:11px;
|
||||||
|
color:#4d4d4d;
|
||||||
|
font-weight:normal;
|
||||||
|
}
|
||||||
|
table.delivery_print_info tr td {
|
||||||
|
padding:3px 3px 3px 3px;
|
||||||
|
font-size:11px;
|
||||||
|
}
|
||||||
|
table.delivery_goods_print_info {
|
||||||
|
border-collapse:collapse !important;
|
||||||
|
border:1px solid #bcbfc1;
|
||||||
|
table-layout: fixed
|
||||||
|
}
|
||||||
|
table.delivery_goods_print_info tr th {
|
||||||
|
padding:3px 3px 3px 3px;
|
||||||
|
font-size:11px;
|
||||||
|
color:#4d4d4d;
|
||||||
|
font-weight:normal;
|
||||||
|
border-left:1px solid #bcbfc1;
|
||||||
|
border-top:1px solid #bcbfc1;
|
||||||
|
}
|
||||||
|
table.delivery_goods_print_info tr td {
|
||||||
|
padding:3px 3px 3px 3px;
|
||||||
|
font-size:11px;
|
||||||
|
border-left:1px solid #bcbfc1;
|
||||||
|
border-top:1px solid #bcbfc1;
|
||||||
|
}
|
||||||
|
span.title_print_info {
|
||||||
|
font-size:12px;
|
||||||
|
color:#000000;
|
||||||
|
font-weight:normal;
|
||||||
|
letter-spacing:-1px;
|
||||||
|
}
|
||||||
|
table.order-sale-summary tr.total-sale-title td {
|
||||||
|
font-size:14px !important;
|
||||||
|
font-weight:normal !important;
|
||||||
|
color:#000000 !important;
|
||||||
|
}
|
||||||
|
tr.detail-sale-summary td div {
|
||||||
|
padding:0px !important;
|
||||||
|
color:#000000 !important;
|
||||||
|
}
|
||||||
|
tr.detail-sale-summary td {
|
||||||
|
color:#000000 !important;
|
||||||
|
}
|
||||||
|
tr.detail-sale-summary td span {
|
||||||
|
padding:0px !important;
|
||||||
|
color:#000000;
|
||||||
|
}
|
||||||
|
tr.total-sale-title td span {
|
||||||
|
padding:0px !important;
|
||||||
|
color:#000000;
|
||||||
|
}
|
||||||
|
tr.detail-sale-summary td:last-child {
|
||||||
|
padding:0px !important;
|
||||||
|
color:#000000 !important;
|
||||||
|
font-weight:normal !important;
|
||||||
|
}
|
||||||
|
tr.detail-sale-summary td:last-child span {
|
||||||
|
padding:0px !important;
|
||||||
|
color:#000000 !important;
|
||||||
|
font-size:14px !important;
|
||||||
|
font-weight:normal !important;
|
||||||
|
}
|
||||||
|
span.unit-money {
|
||||||
|
display:inline-block;width:10px;
|
||||||
|
}
|
||||||
|
tr {
|
||||||
|
page-break-inside:avoid;
|
||||||
|
page-break-after:auto;
|
||||||
|
}
|
||||||
|
td {
|
||||||
|
page-break-inside:avoid;
|
||||||
|
page-break-after:auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
loding(false);
|
||||||
|
window.print();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="wrap">
|
||||||
|
<c:set var="ordrDtstmnDwlds" value="${data.ordrDtstmnDwldList}"/>
|
||||||
|
<c:forEach var="ordrDtstmnDwld" items="${ordrDtstmnDwlds}" varStatus="status">
|
||||||
|
<c:set var="shipping" value="${ordrDtstmnDwld.shipping}"/>
|
||||||
|
<c:set var="srchOrdrDlvyInnb" value="${ordrSrchVO.srchOrdrDlvyInnbs[status.index]}"/>
|
||||||
|
<c:set var="isLast" value="${ordrDtstmnDwlds.size() ne status.count}"/>
|
||||||
|
<div class="pbreak">
|
||||||
|
<div align="center">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span style="text-align:center;font-size:20px;letter-spacing:-1px;font-weight:bold;padding-top:20px;">
|
||||||
|
주문내역서
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div style="height:5px;"></div>
|
||||||
|
<table style="width:100%;">
|
||||||
|
<col style="width:48%;">
|
||||||
|
<col style="width:4%;">
|
||||||
|
<col style="width:48%;">
|
||||||
|
<tr>
|
||||||
|
<td><span class="title_print_info">주문정보</span></td>
|
||||||
|
<td></td>
|
||||||
|
<td><span class="title_print_info">결제정보</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><div style="width:100%;border-top:1px solid #545454;height:1px;"></div></td>
|
||||||
|
<td></td>
|
||||||
|
<td><div style="width:100%;border-top:1px solid #545454;height:1px;"></div></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<c:set var="ordr" value="${ordrDtstmnDwld.ordr}"/>
|
||||||
|
<c:set var="setle" value="${ordrDtstmnDwld.setle}"/>
|
||||||
|
<table class="order_print_info" style="width:100%;">
|
||||||
|
<tr>
|
||||||
|
<th>주문번호</th>
|
||||||
|
<td>${ordr.ordrInnb}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>주문일자</th>
|
||||||
|
<td>${ordr.ordrRceptDt}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>주문고객</th>
|
||||||
|
<td>${ordr.mbrNm}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>전화</th>
|
||||||
|
<td>${ordr.ordrrTelnb}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>휴대전화</th>
|
||||||
|
<td>${ordr.ordrrMbtlnb}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>이메일</th>
|
||||||
|
<td>${ordr.ordrrEmailAdres}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
<td valign="top">
|
||||||
|
<table class="order_print_info" style="width:100%;">
|
||||||
|
<tr>
|
||||||
|
<th>상품금액</th>
|
||||||
|
<td><fmt:formatNumber value="${setle.slepric}" pattern="#,###"/>${curUnit}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>배송비</th>
|
||||||
|
<td><fmt:formatNumber value="${setle.dlvyAmt}" pattern="#,###"/>${curUnit}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>할인</th>
|
||||||
|
<td><fmt:formatNumber value="${setle.dscntAmt}" pattern="#,###"/>${curUnit}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>총 결제금액</th>
|
||||||
|
<td>
|
||||||
|
<span style="font-size:12px;">
|
||||||
|
<fmt:formatNumber value="${setle.setleAmt}" pattern="#,###"/>${curUnit}
|
||||||
|
(<fmt:formatNumber value="${setle.wonRlSetleAmt}" pattern="#,###"/>${krUnit})
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>결제수단</th>
|
||||||
|
<td>${ordr.setleTyNm}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div style="height:10px"></div>
|
||||||
|
<table align="center" style="width:100%;">
|
||||||
|
<tr>
|
||||||
|
<td class="left"><span class="title_print_info">주문상품 (${ordr.itemCnt}종 - 총 ${ordr.orderCnt}개)</span></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div style="height:3px"></div>
|
||||||
|
<c:set var="goodsList" value="${ordrDtstmnDwld.goods}"/>
|
||||||
|
<c:if test="${not empty goodsList}">
|
||||||
|
<table class="delivery_goods_print_info" align="center" style="width:100%; ${status.count > 1 ? 'margin-top:5px;' : '' }">
|
||||||
|
<colgroup>
|
||||||
|
<col style="width:auto;">
|
||||||
|
<col style="width:50px;">
|
||||||
|
<col style="width:35px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:35px;">
|
||||||
|
</colgroup>
|
||||||
|
<tr>
|
||||||
|
<th>상품명</th>
|
||||||
|
<th>순번</th>
|
||||||
|
<th>주문</th>
|
||||||
|
<th>판매가</th>
|
||||||
|
<th>할인</th>
|
||||||
|
<th>할인가(단가)</th>
|
||||||
|
<th>적립</th>
|
||||||
|
<th>배송</th>
|
||||||
|
<th>취소</th>
|
||||||
|
</tr>
|
||||||
|
<c:forEach var="goods" items="${goodsList}" varStatus="status">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table style="border:0px">
|
||||||
|
<tr>
|
||||||
|
<td style="font-size:11px;border:0px;">
|
||||||
|
${goods.goodsNm}
|
||||||
|
<c:if test="${not empty goods.optnNm}">
|
||||||
|
<div style="padding:2px 0px 0px 0px;">- ${goods.optnNm}</div>
|
||||||
|
</c:if>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<td class="right">
|
||||||
|
<c:forEach var="ship" items="${shipping}" varStatus="status">
|
||||||
|
<c:if test="${ship.ordrDlvyInnb == goods.ordrDlvyInnb}">
|
||||||
|
${status.count}번째
|
||||||
|
</c:if>
|
||||||
|
</c:forEach>
|
||||||
|
</td>
|
||||||
|
<td class="right"><fmt:formatNumber value="${goods.ordrQy}" pattern="#,###"/></td>
|
||||||
|
<td class="right"><fmt:formatNumber value="${goods.slepric}" pattern="#,###"/>${curUnit}</td>
|
||||||
|
<td class="right"><fmt:formatNumber value="${goods.dscntAmt}" pattern="#,###"/>${curUnit}</td>
|
||||||
|
<td class="right"><fmt:formatNumber value="${goods.applyDscntAmt}" pattern="#,###"/>${curUnit}<br/>(<fmt:formatNumber value="${goods.slepric}" pattern="#,###"/>${curUnit})</td>
|
||||||
|
<td class="right"><fmt:formatNumber value="${goods.mlgAmt}" pattern="#,###"/></td>
|
||||||
|
<td class="right">
|
||||||
|
<div><span>${goods.dlvyMthNm}</span></div>
|
||||||
|
<div><span class="bold"><fmt:formatNumber value="${goods.dlvyAmt}" pattern="#,###"/>${curUnit}</span></div>
|
||||||
|
</td>
|
||||||
|
<td class="right"><fmt:formatNumber value="${goods.setleCanclQy}" pattern="#,###"/></td>
|
||||||
|
</tr>
|
||||||
|
</c:forEach>
|
||||||
|
</table>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${empty goodsList}">
|
||||||
|
<table class="delivery_goods_print_info" align="center" style="width:100%;">
|
||||||
|
<colgroup>
|
||||||
|
<col style="width:auto;">
|
||||||
|
<col style="width:50px;">
|
||||||
|
<col style="width:35px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:35px;">
|
||||||
|
</colgroup>
|
||||||
|
<tr>
|
||||||
|
<th>상품명</th>
|
||||||
|
<th>순번</th>
|
||||||
|
<th>주문</th>
|
||||||
|
<th>판매가</th>
|
||||||
|
<th>할인</th>
|
||||||
|
<th>할인가(단가)</th>
|
||||||
|
<th>적립</th>
|
||||||
|
<th>배송</th>
|
||||||
|
<th>취소</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="9" style="text-align: center">조회된 데이터가 없습니다.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</c:if>
|
||||||
|
<div style="height:10px"></div>
|
||||||
|
<div>
|
||||||
|
<table style="width:100%;">
|
||||||
|
<tr>
|
||||||
|
<td><span class="title_print_info">배송정보</span></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<c:if test="${not empty shipping}">
|
||||||
|
<c:forEach var="ship" items="${shipping}" varStatus="status">
|
||||||
|
<c:if test="${srchOrdrDlvyInnb eq ship.ordrDlvyInnb}">
|
||||||
|
<table class="delivery_goods_print_info" style="width:100%; ${status.count > 1 ? 'margin-top:5px;' : '' }">
|
||||||
|
<col style="width:5%;">
|
||||||
|
<col style="width:20%;">
|
||||||
|
<col style="width:20%;">
|
||||||
|
<col style="width:20%;">
|
||||||
|
<tr align="left">
|
||||||
|
<td rowspan="3">${status.count}번째</td>
|
||||||
|
<td>${ship.recpntNm}</td>
|
||||||
|
<td>${ship.recpntMbtlnb}</td>
|
||||||
|
<td>${ship.recpntTelnb}</td>
|
||||||
|
</tr>
|
||||||
|
<tr align="left">
|
||||||
|
<td colspan="3">
|
||||||
|
${not empty ship.dlvylcZip ? '(' += ship.dlvylcZip += ')' : ''}
|
||||||
|
${ship.adres}
|
||||||
|
${ship.dlvylcAdresDtl}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr align="left">
|
||||||
|
<td colspan="3">
|
||||||
|
<c:if test="${empty ship.dlvyMssageCn}">
|
||||||
|
-
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${not empty ship.dlvyMssageCn}">
|
||||||
|
${ship.dlvyMssageCn}
|
||||||
|
</c:if>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</c:if>
|
||||||
|
</c:forEach>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${empty shipping}">
|
||||||
|
<table class="delivery_goods_print_info" style="width:100%; ${status.count > 1 ? 'margin-top:5px;' : '' }">
|
||||||
|
<col style="width:5%;">
|
||||||
|
<col style="width:20%;">
|
||||||
|
<col style="width:20%;">
|
||||||
|
<col style="width:20%;">
|
||||||
|
<tr><td colspan="9" style="text-align: center">조회된 데이터가 없습니다.</td></tr>
|
||||||
|
</table>
|
||||||
|
</c:if>
|
||||||
|
</div>
|
||||||
|
<div style="height:10px"></div>
|
||||||
|
<table align="center" style="width:100%;">
|
||||||
|
<tr>
|
||||||
|
<td class="left"><span class="title_print_info">발송상품</span></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div style="height:3px"></div>
|
||||||
|
<c:set var="goodsList" value="${ordrDtstmnDwld.goods}"/>
|
||||||
|
<c:if test="${not empty goodsList}">
|
||||||
|
<table class="delivery_goods_print_info" align="center" style="width:100%; ${status.count > 1 ? 'margin-top:5px;' : '' }">
|
||||||
|
<colgroup>
|
||||||
|
<col style="width:auto;">
|
||||||
|
<col style="width:35px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:35px;">
|
||||||
|
</colgroup>
|
||||||
|
<tr>
|
||||||
|
<th>상품명</th>
|
||||||
|
<th>주문</th>
|
||||||
|
<th>판매가</th>
|
||||||
|
<th>할인</th>
|
||||||
|
<th>할인가(단가)</th>
|
||||||
|
<th>적립</th>
|
||||||
|
<th>취소</th>
|
||||||
|
<th>발송</th>
|
||||||
|
</tr>
|
||||||
|
<c:forEach var="goods" items="${goodsList}" varStatus="status">
|
||||||
|
<c:if test="${srchOrdrDlvyInnb eq goods.ordrDlvyInnb}">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<table style="border:0px">
|
||||||
|
<tr>
|
||||||
|
<td style="font-size:11px;border:0px;">
|
||||||
|
${goods.goodsNm}
|
||||||
|
<div style="padding:2px 0px 0px 0px;">- ${goods.optnNm}</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
<td class="right"><fmt:formatNumber value="${goods.ordrQy}" pattern="#,###"/></td>
|
||||||
|
<td class="right"><fmt:formatNumber value="${goods.slepric}" pattern="#,###"/>${curUnit}</td>
|
||||||
|
<td class="right"><fmt:formatNumber value="${goods.dscntAmt}" pattern="#,###"/>${curUnit}</td>
|
||||||
|
<td class="right"><fmt:formatNumber value="${goods.applyDscntAmt}" pattern="#,###"/>${curUnit}<br/>(<fmt:formatNumber value="${goods.slepric}" pattern="#,###"/>${curUnit})</td>
|
||||||
|
<td class="right"><fmt:formatNumber value="${goods.mlgAmt}" pattern="#,###"/></td>
|
||||||
|
<td class="right"><fmt:formatNumber value="${goods.setleCanclQy}" pattern="#,###"/></td>
|
||||||
|
<td class="right"><fmt:formatNumber value="${goods.sndngQy}" pattern="#,###"/></td>
|
||||||
|
</tr>
|
||||||
|
</c:if>
|
||||||
|
</c:forEach>
|
||||||
|
</table>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${empty goodsList}">
|
||||||
|
<table class="delivery_goods_print_info" align="center" style="width:100%;">
|
||||||
|
<colgroup>
|
||||||
|
<col style="width:auto;">
|
||||||
|
<col style="width:50px;">
|
||||||
|
<col style="width:35px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:70px;">
|
||||||
|
<col style="width:35px;">
|
||||||
|
</colgroup>
|
||||||
|
<tr>
|
||||||
|
<th>상품명</th>
|
||||||
|
<th>배송지</th>
|
||||||
|
<th>주문</th>
|
||||||
|
<th>판매가</th>
|
||||||
|
<th>할인</th>
|
||||||
|
<th>할인가(단가)</th>
|
||||||
|
<th>적립</th>
|
||||||
|
<th>배송</th>
|
||||||
|
<th>취소</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="9" style="text-align: center">조회된 데이터가 없습니다.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</c:if>
|
||||||
|
<%--<div style="height:5px;"></div>
|
||||||
|
<table align="center" style="width:696px;">
|
||||||
|
<colgroup>
|
||||||
|
<col style="width:20%;">
|
||||||
|
<col>
|
||||||
|
<col style="width:20%;">
|
||||||
|
<col>
|
||||||
|
<col style="width:20%;">
|
||||||
|
<col>
|
||||||
|
<col style="width:20%;">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right;font-size:12px;">
|
||||||
|
<span>총 상품금액</span>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:center;font-size:12px;"><span>+</span></td>
|
||||||
|
<td style="text-align:right;font-size:12px;">
|
||||||
|
<span>배송비</span>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:center;font-size:12px;"><span>-</span></td>
|
||||||
|
<td style="text-align:right;font-size:12px;">
|
||||||
|
<span>할인<span> <fmt:formatNumber value="${setle.dscntAmt}" pattern="#,###"/>${curUnit}</span></span>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:center;font-size:12px;"><span>=</span></td>
|
||||||
|
<td style="text-align:right;font-size:12px;">
|
||||||
|
<span>총 결제금액</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right;font-size:11px;">
|
||||||
|
<span><fmt:formatNumber value="${setle.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
<td style="text-align:right;font-size:11px;">
|
||||||
|
<div>
|
||||||
|
<span><fmt:formatNumber value="${setle.dlvyAmt}" pattern="#,###"/>${curUnit}</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
<td style="text-align:right;font-size:11px;">
|
||||||
|
<c:set var="dscnts" value="${ordrDtstmnDwld.dscnt}"/>
|
||||||
|
<c:if test="${not empty dscnts}">
|
||||||
|
<c:forEach var="dscnt" items="${dscnts}" varStatus="status">
|
||||||
|
<div>${dscnt.dscntDvNm}:<span><fmt:formatNumber value="${dscnt.dscntAmt}" pattern="#,###"/>${curUnit}</span></div>
|
||||||
|
</c:forEach>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${empty dscnts}">
|
||||||
|
<div><span>0${curUnit}</span></div>
|
||||||
|
</c:if>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
<td style="text-align:right;font-size:12px;">
|
||||||
|
<span>
|
||||||
|
<fmt:formatNumber value="${setle.setleAmt}" pattern="#,###"/>${curUnit}
|
||||||
|
(<fmt:formatNumber value="${setle.wonRlSetleAmt}" pattern="#,###"/>${krUnit})
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>--%>
|
||||||
|
</div>
|
||||||
|
<c:if test="${isLast}">
|
||||||
|
<div style="height:50px"></div>
|
||||||
|
</c:if>
|
||||||
|
</c:forEach>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,126 @@
|
|||||||
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||||
|
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||||
|
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||||
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||||
|
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||||
|
<%@ page import="java.util.Date" %>
|
||||||
|
<%--
|
||||||
|
Class Name : PurchOrdrListInqireR.jsp
|
||||||
|
Description : 발주서 대상 목록 조회
|
||||||
|
Modification Information
|
||||||
|
|
||||||
|
수정일 수정자 수정내용
|
||||||
|
------- -------- ---------------------------
|
||||||
|
2026-07-15 이대환 최초 생성
|
||||||
|
--%>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko">
|
||||||
|
<section class="content-section">
|
||||||
|
<div class="form-control-container">
|
||||||
|
<div class="left">
|
||||||
|
<div class="search-number">
|
||||||
|
<span class="search-number__text">총<strong><c:out value="${ resultMap.paginationInfo.totalRecordCount }"/></strong>건</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="center">
|
||||||
|
</div>
|
||||||
|
<div class="right">
|
||||||
|
<!-- 코드 사용 -->
|
||||||
|
<div class="select-box">
|
||||||
|
<select title="페이지당 출력될 목록건수" name="pageUnit" id="pageUnit" onchange="fn_select_list(1);return false;">
|
||||||
|
<c:forEach items="${ resultMap.paginationInfo.pageUnitArr }" var="pageUnit" varStatus="pageUnitStatus">
|
||||||
|
<option value="<c:out value="${ pageUnit }"/>"<c:if test="${ resultMap.paginationInfo.recordCountPerPage eq pageUnit}">selected="selected"</c:if>><c:out value="${ pageUnit }"/>개씩</option>
|
||||||
|
</c:forEach>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr class="horizontal-line">
|
||||||
|
<div class="form-control-container">
|
||||||
|
<div class="left">
|
||||||
|
<button type="button" class="btn outline sm" onclick="fn_ordrdtstmn_print();">
|
||||||
|
<i class="icon icon_print"></i>프린트
|
||||||
|
</button>
|
||||||
|
<button type="button" class="btn outline sm" onclick="fn_excel_download();">
|
||||||
|
<i class="icon icon_excel"></i>발주서 다운로드
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="center"></div>
|
||||||
|
<div class="right"></div>
|
||||||
|
</div>
|
||||||
|
<hr class="spacing">
|
||||||
|
<div class="table-wrapper">
|
||||||
|
<table class="table vertical">
|
||||||
|
<caption>회원 목록</caption>
|
||||||
|
<!-- 각 열 width 설정 -->
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 4%;">
|
||||||
|
<col style="width: 10%;">
|
||||||
|
<col style="width: 12%;">
|
||||||
|
<col style="width: 6%;">
|
||||||
|
<col style="width: 8%;">
|
||||||
|
<col style="width: auto;">
|
||||||
|
<col style="width: auto;">
|
||||||
|
<col style="width: 6%;">
|
||||||
|
<col style="width: auto;">
|
||||||
|
<col style="width: 6%;">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
<label class="b-checkbox checkbox is-medium check-all" id="chkALabel">
|
||||||
|
<input type="checkbox" id="chkA">
|
||||||
|
<span class="check"></span>
|
||||||
|
</label>
|
||||||
|
</th>
|
||||||
|
<th>엑셀 다운일</th>
|
||||||
|
<th>주문번호</th>
|
||||||
|
<th>배송번호</th>
|
||||||
|
<th>수취인</th>
|
||||||
|
<th>수취인 TEL</th>
|
||||||
|
<th>개인통관부호</th>
|
||||||
|
<th>우편번호</th>
|
||||||
|
<th>내용물</th>
|
||||||
|
<th>Unit Value</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<c:choose>
|
||||||
|
<c:when test="${not empty resultMap.resultList}">
|
||||||
|
<c:forEach var="resultList" items="${resultMap.resultList}">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label class="b-checkbox checkbox is-medium">
|
||||||
|
<input type="checkbox" value="${resultList.ordrInnb}/${resultList.ovseaSelerRegistCd}" class="chk" name="purchOrdrPK">
|
||||||
|
<span class="check"></span>
|
||||||
|
</label>
|
||||||
|
<input type="hidden" class="cstmclerCd" value="${resultList.cstmclerCd}">
|
||||||
|
</td>
|
||||||
|
<td><c:out value="${resultList.excelDownDt}"/></td>
|
||||||
|
<td><c:out value="${resultList.ordrInnb}"/></td>
|
||||||
|
<td><c:out value="${resultList.ovseaSelerRegistCd}"/></td>
|
||||||
|
<td><c:out value="${resultList.recpntNm}"/></td>
|
||||||
|
<td><c:out value="${resultList.recpntMbtlnb}"/></td>
|
||||||
|
<td><c:out value="${resultList.cstmclerCd}"/></td>
|
||||||
|
<td><c:out value="${resultList.dlvylcZip}"/></td>
|
||||||
|
<td><c:out value="${resultList.cn}"/></td>
|
||||||
|
<td><c:out value="${resultList.unitValue}"/></td>
|
||||||
|
</tr>
|
||||||
|
</c:forEach>
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
<tr>
|
||||||
|
<td colspan="100%"><spring:message code="common.nodata"/></td>
|
||||||
|
</tr>
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<div class="pagination__container mt-30">
|
||||||
|
<input type="hidden" id="pageIndex" name="pageIndex" value="${ ordrSrchVO.pageIndex}"/>
|
||||||
|
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_list"/>
|
||||||
|
</div>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,320 @@
|
|||||||
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||||
|
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||||
|
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||||
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||||
|
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||||
|
<%@ page import="java.util.Date" %>
|
||||||
|
<%--
|
||||||
|
Class Name : PurchOrdrListInqireRForm.jsp
|
||||||
|
Description : 발주서 관리 폼
|
||||||
|
Modification Information
|
||||||
|
|
||||||
|
수정일 수정자 수정내용
|
||||||
|
------- -------- ---------------------------
|
||||||
|
2026-07-15 이대환 최초 생성
|
||||||
|
--%>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko">
|
||||||
|
<head>
|
||||||
|
<%-- 공통 include --%>
|
||||||
|
<%@include file ="/WEB-INF/views/comm/mngr/Include.jsp" %>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function(){
|
||||||
|
//form메소드에서 pageIndex, pageUnit 갖고옴
|
||||||
|
let pageIndex = '<c:out value="${ ordrSrchVO.pageIndex }"/>';
|
||||||
|
<%--let pageUnit = '<c:out value="${ ordrSrchVO.pageUnit }"/>';--%>
|
||||||
|
let pageUnit = 100;
|
||||||
|
|
||||||
|
fn_select_list(pageIndex, pageUnit);
|
||||||
|
|
||||||
|
//검색 버튼 클릭
|
||||||
|
$('#btnSearch').on('click', function(){
|
||||||
|
fn_select_list(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
/* ********************************************************
|
||||||
|
* 발주서 목록 조회
|
||||||
|
******************************************************** */
|
||||||
|
const fn_select_list = function(pageIndex, pageUnit) {
|
||||||
|
let dataStr;
|
||||||
|
if(!pageIndex) {
|
||||||
|
$('#pageIndex').val(1);
|
||||||
|
} else {
|
||||||
|
$('#pageIndex').val(pageIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!pageUnit) {
|
||||||
|
dataStr = $('#listForm').serialize();
|
||||||
|
} else {
|
||||||
|
if($('#pageUnit').length){
|
||||||
|
$('#pageUnit').val(pageUnit);
|
||||||
|
dataStr = $('#listForm').serialize();
|
||||||
|
} else {
|
||||||
|
dataStr = $('#listForm').serialize()+'&pageUnit='+pageUnit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: 'post',
|
||||||
|
url : '/mngr/ordr/ordrmngr/selectExcelPoListInqire',
|
||||||
|
data : dataStr,
|
||||||
|
success:function(resultHtml) {
|
||||||
|
$('#pageDiv').html(resultHtml);
|
||||||
|
$('#pageUnit').niceSelect();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ********************************************************
|
||||||
|
* 발주서 주문내역서 프린트
|
||||||
|
******************************************************** */
|
||||||
|
const fn_ordrdtstmn_print = function () {
|
||||||
|
const checkedBoxes = $('input[name="purchOrdrPK"]:checked');
|
||||||
|
|
||||||
|
if (checkedBoxes.length === 0) {
|
||||||
|
alert('선택값이 없습니다.');
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let srchOrdrInnbs = [];
|
||||||
|
let srchOrdrDlvyInnbs = [];
|
||||||
|
|
||||||
|
$(checkedBoxes).each(function(idx, item) {
|
||||||
|
const split = $(item).val().split('/');
|
||||||
|
srchOrdrInnbs.push(split[0]);
|
||||||
|
srchOrdrDlvyInnbs.push(split[1]);
|
||||||
|
});
|
||||||
|
|
||||||
|
const title = 'orderPrint';
|
||||||
|
fn_open_center_popup(title, '900', '700');
|
||||||
|
|
||||||
|
var tempForm = $('<form>', {
|
||||||
|
target: title,
|
||||||
|
method: 'post',
|
||||||
|
action: '/mngr/ordr/ordrmngr/selectPurchOrdrDtstmnDwldPopupForm'
|
||||||
|
});
|
||||||
|
|
||||||
|
$.each(srchOrdrInnbs, function(key, value) {
|
||||||
|
$('<input>', {
|
||||||
|
type: 'hidden',
|
||||||
|
name: 'srchOrdrInnbs',
|
||||||
|
value: value
|
||||||
|
}).appendTo(tempForm);
|
||||||
|
});
|
||||||
|
$.each(srchOrdrDlvyInnbs, function(key, value) {
|
||||||
|
$('<input>', {
|
||||||
|
type: 'hidden',
|
||||||
|
name: 'srchOrdrDlvyInnbs',
|
||||||
|
value: value
|
||||||
|
}).appendTo(tempForm);
|
||||||
|
});
|
||||||
|
tempForm.appendTo('body');
|
||||||
|
console.log(tempForm.prop('outerHTML'));
|
||||||
|
|
||||||
|
tempForm.submit();
|
||||||
|
tempForm.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 발주서 엑셀다운로드
|
||||||
|
* */
|
||||||
|
const fn_excel_download = function () {
|
||||||
|
const checkedBoxes = $('input[name="purchOrdrPK"]:checked');
|
||||||
|
|
||||||
|
if (checkedBoxes.length === 0) {
|
||||||
|
alert('선택값이 없습니다.');
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
let cstmclerCds = [];
|
||||||
|
let srchOrdrInnbs = [];
|
||||||
|
let srchOrdrDlvyInnbs = [];
|
||||||
|
|
||||||
|
$(checkedBoxes).each(function(idx, item) {
|
||||||
|
const cstmclerCd = $(this).closest('td').find('.cstmclerCd').val();
|
||||||
|
cstmclerCds.push(cstmclerCd);
|
||||||
|
|
||||||
|
const split = $(item).val().split('/');
|
||||||
|
srchOrdrInnbs.push(split[0]);
|
||||||
|
srchOrdrDlvyInnbs.push(split[1]);
|
||||||
|
});
|
||||||
|
|
||||||
|
const duplicate = new Set(cstmclerCds).size !== cstmclerCds.length;
|
||||||
|
if(duplicate) {
|
||||||
|
alert('개인통관부호가 중복되었습니다.')
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var tempForm = $('<form>', {
|
||||||
|
method: 'post',
|
||||||
|
action: '/mngr/ordr/ordrmngr/selectExcelPoDwldListInqire'
|
||||||
|
});
|
||||||
|
|
||||||
|
$.each(srchOrdrInnbs, function(key, value) {
|
||||||
|
$('<input>', {
|
||||||
|
type: 'hidden',
|
||||||
|
name: 'srchOrdrInnbs',
|
||||||
|
value: value
|
||||||
|
}).appendTo(tempForm);
|
||||||
|
});
|
||||||
|
$.each(srchOrdrDlvyInnbs, function(key, value) {
|
||||||
|
$('<input>', {
|
||||||
|
type: 'hidden',
|
||||||
|
name: 'srchOrdrDlvyInnbs',
|
||||||
|
value: value
|
||||||
|
}).appendTo(tempForm);
|
||||||
|
});
|
||||||
|
tempForm.appendTo('body');
|
||||||
|
|
||||||
|
tempForm.submit();
|
||||||
|
tempForm.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* open popup */
|
||||||
|
const fn_open_center_popup = function (title, w, h) {
|
||||||
|
const dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left;
|
||||||
|
const dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top;
|
||||||
|
|
||||||
|
const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
|
||||||
|
const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;
|
||||||
|
|
||||||
|
const left = ((width / 2) - (w / 2)) + dualScreenLeft;
|
||||||
|
const top = ((height / 2) - (h / 2)) + dualScreenTop;
|
||||||
|
|
||||||
|
window.open('', title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 체크박스 전체 처리
|
||||||
|
* */
|
||||||
|
const fn_change_event = function (_target, _arg) {
|
||||||
|
if (_arg === 'all') {
|
||||||
|
|
||||||
|
if ($('#' + _target + '-all').is(':checked')) {
|
||||||
|
$('[name=' + _target + ']').prop('checked', true);
|
||||||
|
} else {
|
||||||
|
$('[name=' + _target + ']').prop('checked', false);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
let chkCnt = $('[name=' + _target + ']:checked').length;
|
||||||
|
let allCnt = $('[name=' + _target + ']').length;
|
||||||
|
if (chkCnt !== allCnt && $('#' + _target + '-all').is(':checked')) {
|
||||||
|
$('#' + _target + '-all').prop('checked', false);
|
||||||
|
} else if (chkCnt === allCnt) {
|
||||||
|
$('#' + _target + '-all').prop('checked', true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 테이블 체크박스 전체 선택
|
||||||
|
$(document).on("click", "#chkA", function () {
|
||||||
|
if($(this).is(':checked')){
|
||||||
|
$(".chk").prop('checked', true);
|
||||||
|
}else{
|
||||||
|
$(".chk").prop('checked', false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 목록에서 체크 해제시 전체 체크박스 해제 및 목록 항목 전체 체크 시 전체체크 버튼 true
|
||||||
|
$(document).on("click", ".chk", function () {
|
||||||
|
let length = $(".chk").length;
|
||||||
|
let chcedLen = $(".chk:checked").length;
|
||||||
|
if (length == chcedLen) {
|
||||||
|
$("#chkA").prop('checked', true);
|
||||||
|
}else{
|
||||||
|
$("#chkA").prop('checked', false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<%-- 상단메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
|
||||||
|
<%@include file ="/WEB-INF/views/comm/mngr/Header.jsp" %>
|
||||||
|
<main class="main">
|
||||||
|
<%-- 좌측메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
|
||||||
|
<%@include file ="/WEB-INF/views/comm/mngr/Left.jsp" %>
|
||||||
|
<div class="content">
|
||||||
|
<div class="content__inner">
|
||||||
|
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
|
||||||
|
<div class="page-title">
|
||||||
|
<h2 class="page-title__title">발주서 대상 조회</h2>
|
||||||
|
</div>
|
||||||
|
<form id="listForm">
|
||||||
|
<section class="content-section">
|
||||||
|
<span class="red-7">*검색어는 정확히 입력해주세요</span>
|
||||||
|
<div class="table-wrapper">
|
||||||
|
<table class="table">
|
||||||
|
<caption>발주서 대상 검색</caption>
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 12%;">
|
||||||
|
<col>
|
||||||
|
</colgroup>
|
||||||
|
<tr>
|
||||||
|
<th>배송지</th>
|
||||||
|
<td>
|
||||||
|
<div class="td-inner">
|
||||||
|
<div class="b-checkbox-container">
|
||||||
|
<label class="b-checkbox checkbox check-all">
|
||||||
|
<input id="dlvylcAreaCds-all" type="checkbox" onclick="fn_change_event('dlvylcAreaCds', 'all');">
|
||||||
|
<span class="check"></span>
|
||||||
|
<span class="control-label">전체</span>
|
||||||
|
</label>
|
||||||
|
<c:forEach items="${nationCdList}" var="nationCd" varStatus="status">
|
||||||
|
<label class="b-checkbox checkbox">
|
||||||
|
<input type="checkbox" name="dlvylcAreaCds" value="${nationCd.cd}"onclick="fn_change_event('dlvylcAreaCds', 'other');" <c:if test="${nationCd.cd eq 'KR'}">checked</c:if>>
|
||||||
|
<span class="check"></span>
|
||||||
|
<span class="control-label">${nationCd.cdNm}</span>
|
||||||
|
</label>
|
||||||
|
</c:forEach>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>엑셀다운 포함 여부</th>
|
||||||
|
<td>
|
||||||
|
<div class="td-inner">
|
||||||
|
<div class="custom-radio-container">
|
||||||
|
<div class="custom-radio">
|
||||||
|
<input type="radio" id="excelIncY" name="excelInclude" value="Y" checked>
|
||||||
|
<label for="excelIncY">포함</label>
|
||||||
|
</div>
|
||||||
|
<div class="custom-radio">
|
||||||
|
<input type="radio" id="excelIncN" name="excelInclude" value="N">
|
||||||
|
<label for="excelIncN">미포함</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div class="form-control-container">
|
||||||
|
<div class="left"></div>
|
||||||
|
<div class="center">
|
||||||
|
<button type="button" class="btn outline" id="btnResetForm">
|
||||||
|
<spring:message code="button.init"/>
|
||||||
|
</button>
|
||||||
|
<button type="button" class="btn primary" id="btnSearch">
|
||||||
|
<spring:message code="button.search"/>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="right">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<div id="pageDiv"></div>
|
||||||
|
</form>
|
||||||
|
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<div id = "modalDiv"></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -1051,6 +1051,11 @@
|
|||||||
$('#hiddenForm').remove();
|
$('#hiddenForm').remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 네이버페이 주문 제어 제한
|
||||||
|
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
const hiddenForm = document.createElement('form');
|
const hiddenForm = document.createElement('form');
|
||||||
hiddenForm.name = 'hiddenForm';
|
hiddenForm.name = 'hiddenForm';
|
||||||
hiddenForm.id = 'hiddenForm';
|
hiddenForm.id = 'hiddenForm';
|
||||||
@@ -1203,7 +1208,10 @@
|
|||||||
* 환불 철회
|
* 환불 철회
|
||||||
******************************************************** */
|
******************************************************** */
|
||||||
const fn_retraction_refund = function() {
|
const fn_retraction_refund = function() {
|
||||||
|
// 네이버페이 주문 제어 제한
|
||||||
|
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
const data = $('#adminMemoForm').serialize();
|
const data = $('#adminMemoForm').serialize();
|
||||||
|
|
||||||
@@ -1229,7 +1237,10 @@
|
|||||||
* 반품/환불 철회
|
* 반품/환불 철회
|
||||||
******************************************************** */
|
******************************************************** */
|
||||||
const fn_retraction_return = function() {
|
const fn_retraction_return = function() {
|
||||||
|
// 네이버페이 주문 제어 제한
|
||||||
|
if (fn_check_smrtShoping('${data.dtl.smrtShopngOrdrnb}')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
const data = $('#adminMemoForm').serialize();
|
const data = $('#adminMemoForm').serialize();
|
||||||
|
|
||||||
@@ -1313,19 +1324,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 출고내역 주문배송 정보 조회 */
|
/* 출고내역 주문배송 정보 조회 */
|
||||||
const fn_open_dlvy_sweettracker_modal = function(dlivyInnb) {
|
const fn_open_dlvy_popup = function(invcnb) {
|
||||||
$.ajax({
|
let url = 'https://www.acieshop.com/pod.php?OrderNo=' + invcnb;
|
||||||
type:'post',
|
window.open(url, 'acieView', 'width=605,height=700');
|
||||||
url:'<c:url value="/mngr/ordr/dlivy/selectOrdrDlvyDtlsInqire"/>',
|
|
||||||
data:{
|
|
||||||
'dlivyInnb':dlivyInnb
|
|
||||||
},
|
|
||||||
success:function (html) {
|
|
||||||
$('#modalDiv').html(html);
|
|
||||||
|
|
||||||
$('#delivery-history-pop').remove().modal();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 무효/취소/반품 내역 정보 조회 */
|
/* 무효/취소/반품 내역 정보 조회 */
|
||||||
@@ -1444,7 +1445,18 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 네이버페이 주문 제어 제한
|
||||||
|
*/
|
||||||
|
const fn_check_smrtShoping = function(smrtShopngOrdrnb) {
|
||||||
|
const hasSmrt = smrtShopngOrdrnb != 'undefined' && smrtShopngOrdrnb != 'null' && smrtShopngOrdrnb != '';
|
||||||
|
if (hasSmrt) {
|
||||||
|
alert('네이버페이 주문건은 처리할 수 없습니다.');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
317
src/main/webapp/WEB-INF/views/mngr/setup/cost/CostPriceUpdtU.jsp
Normal file
@@ -0,0 +1,317 @@
|
|||||||
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||||
|
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||||
|
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||||
|
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
|
||||||
|
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||||
|
<%--
|
||||||
|
Class Name : CostPriceUpdtU.jsp
|
||||||
|
Description : 원가 설정 상세
|
||||||
|
Modification Information
|
||||||
|
|
||||||
|
수정일 수정자 수정내용
|
||||||
|
------- -------- ---------------------------
|
||||||
|
2026-05-29 이대환 최초 생성
|
||||||
|
--%>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ko">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<%-- 공통 include --%>
|
||||||
|
<%@include file ="/WEB-INF/views/comm/mngr/Include.jsp" %>
|
||||||
|
</head>
|
||||||
|
<style>
|
||||||
|
.datepicker {
|
||||||
|
text-align: left;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
$(document).ready(function () {
|
||||||
|
// 숫자 처리
|
||||||
|
$('.sep').each(function () {
|
||||||
|
fn_format_sep($(this));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
/* ********************************************************
|
||||||
|
* 입력창 추가
|
||||||
|
******************************************************** */
|
||||||
|
const fn_add_emptyBox = function() {
|
||||||
|
|
||||||
|
stplatChk = false;
|
||||||
|
let trClone = '';
|
||||||
|
|
||||||
|
trClone = '<tr>'
|
||||||
|
+ ' <td>'
|
||||||
|
+ ' <label class="b-checkbox checkbox is-medium">'
|
||||||
|
+ ' <input type="checkbox" name="costChk" value=""><span class="check"></span>'
|
||||||
|
+ ' <input type="hidden" class="input-text number xl" name="ctInnbArr" title="원가고유번호" value="0">'
|
||||||
|
+ ' </label>'
|
||||||
|
+ ' </td>'
|
||||||
|
+ ' <td>'
|
||||||
|
+ ' <div class="td-inner">'
|
||||||
|
+ ' <input type="text" class="datepicker" name="stdrDeArr" title="기준일자" autocomplete="off">'
|
||||||
|
+ ' </div>'
|
||||||
|
+ ' </td>'
|
||||||
|
+ ' <td>'
|
||||||
|
+ ' <div class="td-inner">'
|
||||||
|
+ ' <input type="text" class="input-text digit2 xl right" name="usdRateArr" title="USD 환율 (1,000 円)" maxlength="25">'
|
||||||
|
+ ' </div>'
|
||||||
|
+ ' </td>'
|
||||||
|
+ ' <td>'
|
||||||
|
+ ' <div class="td-inner">'
|
||||||
|
+ ' <input type="text" class="input-text sep xl right" name="jpDlvyCtArr" title="일본 내 물류비" maxlength="25">'
|
||||||
|
+ ' </div>'
|
||||||
|
+ ' </td>'
|
||||||
|
+ ' <td>'
|
||||||
|
+ ' <div class="td-inner">'
|
||||||
|
+ ' <input type="text" class="input-text sep xl right" name="intlDlvyAmtArr" title="운임비용(JP)" maxlength="25">'
|
||||||
|
+ ' </div>'
|
||||||
|
+ ' </td>'
|
||||||
|
+ ' <td>'
|
||||||
|
+ ' <div class="td-inner">'
|
||||||
|
+ ' <input type="text" class="input-text digit2 xl right" name="pltfomFeeArr" title="플랫폼 수수료율" maxlength="25">'
|
||||||
|
+ ' </div>'
|
||||||
|
+ ' </td>'
|
||||||
|
+ ' <td>'
|
||||||
|
+ ' <div class="td-inner">'
|
||||||
|
+ ' <input type="text" class="input-text digit3 xl right" name="expctTaxArr" title="예상세율" maxlength="25">'
|
||||||
|
+ ' </div>'
|
||||||
|
+ ' </td>'
|
||||||
|
+ ' <td>'
|
||||||
|
+ ' <div class="td-inner">'
|
||||||
|
+ ' <input type="text" class="input-text sep xl right" name="cstmsFeeArr" title="통관수수료" maxlength="25">'
|
||||||
|
+ ' </div>'
|
||||||
|
+ ' </td>'
|
||||||
|
+ ' <td>'
|
||||||
|
+ ' <div class="td-inner">'
|
||||||
|
+ ' <input type="text" class="input-text sep xl right" name="krDlvyCtArr" title="운임비용(KR)" maxlength="25">'
|
||||||
|
+ ' </div>'
|
||||||
|
+ ' </td>'
|
||||||
|
+ '</tr>';
|
||||||
|
|
||||||
|
$('#tableCostSorting').append(trClone);
|
||||||
|
$('#noData').hide();
|
||||||
|
fn_set_datepicker('.datepicker');
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ********************************************************
|
||||||
|
* 입력창 삭제
|
||||||
|
******************************************************** */
|
||||||
|
const fn_remove_box = function() {
|
||||||
|
|
||||||
|
const target = $('[name=costChk]:checked');
|
||||||
|
|
||||||
|
if (target.length === 0) {
|
||||||
|
alert('항목을 선택해 주세요.');
|
||||||
|
} else {
|
||||||
|
target.each(function() {
|
||||||
|
$(this).parents('tr').remove();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#costAll').prop('checked', false);
|
||||||
|
const total = $('#tableCostSorting').find('tr').length;
|
||||||
|
|
||||||
|
if (total === 1) {
|
||||||
|
|
||||||
|
$('#noData').show();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$('#noData').hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ********************************************************
|
||||||
|
* 원가 설정 저장
|
||||||
|
******************************************************** */
|
||||||
|
const fn_update_cost = function () {
|
||||||
|
if (confirm('원가 설정을 <spring:message code="confirm.common.save"/>')) {
|
||||||
|
// 콤마 제거
|
||||||
|
$('.sep').each(function () {
|
||||||
|
fn_format_sep($(this), false);
|
||||||
|
});
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: 'post',
|
||||||
|
url: '<c:url value="/mngr/setup/cost/updateCostPriceSetup"/>',
|
||||||
|
data: $('#updtForm').serialize(),
|
||||||
|
success: function () {
|
||||||
|
alert("<spring:message code="success.common.save"/>");
|
||||||
|
location.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
fn_format_sep($(this));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 숫자 처리
|
||||||
|
$(document).on('input', '.number', function () {
|
||||||
|
var input = $(this).val();
|
||||||
|
$(this).val(input.replace(/[^0-9]/g, ""));
|
||||||
|
});
|
||||||
|
$(document).on('input', '.sep', function () {
|
||||||
|
fn_format_sep($(this));
|
||||||
|
});
|
||||||
|
const fn_format_sep = function ($target, unformat) {
|
||||||
|
var value = $target.val();
|
||||||
|
|
||||||
|
if (unformat == undefined) {
|
||||||
|
value = value
|
||||||
|
.replace(/[^0-9]/g, "")
|
||||||
|
.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
|
||||||
|
} else {
|
||||||
|
value = value.replace(/,/g, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
$target.val(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 자릿수 제한
|
||||||
|
$(document).on('input', '.digit2', function () {
|
||||||
|
let value = this.value;
|
||||||
|
value = value.replace(/[^\d.]/g, ''); // 숫자와 .만 허용
|
||||||
|
value = value.replace(/(\..*)\./g, '$1'); // . 하나만 허용
|
||||||
|
value = value.replace(/(\.\d{2}).*/, '$1'); // 소수 2자리 제한
|
||||||
|
this.value = value;
|
||||||
|
});
|
||||||
|
$(document).on('input', '.digit3', function () {
|
||||||
|
let value = this.value;
|
||||||
|
value = value.replace(/[^\d.]/g, ''); // 숫자와 .만 허용
|
||||||
|
value = value.replace(/(\..*)\./g, '$1'); // . 하나만 허용
|
||||||
|
value = value.replace(/(\.\d{3}).*/, '$1'); // 소수 3자리 제한
|
||||||
|
this.value = value;
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<body>
|
||||||
|
<%-- 상단메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
|
||||||
|
<%@include file ="/WEB-INF/views/comm/mngr/Header.jsp" %>
|
||||||
|
<main class="main">
|
||||||
|
<%-- 좌측메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
|
||||||
|
<%@include file ="/WEB-INF/views/comm/mngr/Left.jsp" %>
|
||||||
|
<div class="content">
|
||||||
|
<div class="content__inner">
|
||||||
|
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
|
||||||
|
<div class="page-title">
|
||||||
|
<h2 class="page-title__title">원가 설정</h2>
|
||||||
|
<div class="page-title__btn-container">
|
||||||
|
<button class="btn primary" onclick="fn_update_cost()">저장하기
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<form id="updtForm">
|
||||||
|
<section class="content-section">
|
||||||
|
<div class="form-control-container mb-8">
|
||||||
|
<div class="left">
|
||||||
|
<h3 class="content-section__inner-title">원가 설정</h3>
|
||||||
|
</div>
|
||||||
|
<div class="center"></div>
|
||||||
|
<div class="right">
|
||||||
|
<button type="button" class="btn primary outline xsm" onclick="fn_add_emptyBox('costChk');"><spring:message code="button.add"/></button>
|
||||||
|
<button type="button" class="btn dark xsm" onclick="fn_remove_box();"><spring:message code="button.delete"/></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="table-wrapper">
|
||||||
|
<table class="table vertical">
|
||||||
|
<caption>원가 설정</caption>
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 4%;">
|
||||||
|
<col style="width: 12%;">
|
||||||
|
<col style="width: 12%;">
|
||||||
|
<col style="width: 12%;">
|
||||||
|
<col style="width: 12%;">
|
||||||
|
<col style="width: 12%;">
|
||||||
|
<col style="width: 12%;">
|
||||||
|
<col style="width: 12%;">
|
||||||
|
<col style="width: 12%;">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
<label class="b-checkbox checkbox is-medium check-all">
|
||||||
|
<input type="checkbox" value="" id="costAll"><span class="check"></span>
|
||||||
|
</label>
|
||||||
|
</th>
|
||||||
|
<th>기준일자</th>
|
||||||
|
<th>USD 환율 (1,000 円)</th>
|
||||||
|
<th>일본 내 물류비</th>
|
||||||
|
<th>운임비용(JP)</th>
|
||||||
|
<th>플랫폼 수수료율</th>
|
||||||
|
<th>예상세율</th>
|
||||||
|
<th>통관수수료</th>
|
||||||
|
<th>운임비용(KR)</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="tableCostSorting">
|
||||||
|
<c:if test="${not empty resultMap.costList}">
|
||||||
|
<c:forEach var="cost" items="${resultMap.costList}" varStatus="status">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label class="b-checkbox checkbox is-medium">
|
||||||
|
<input type="checkbox" name="costChk" value=""><span class="check"></span>
|
||||||
|
<input type="hidden" class="input-text number xl" name="ctInnbArr" title="원가고유번호" value="${cost.ctInnb}">
|
||||||
|
</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="td-inner">
|
||||||
|
<input type="text" class="datepicker" name="stdrDeArr" title="기준일자" value="${cost.stdrDe}" autocomplete="off">
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="td-inner">
|
||||||
|
<input type="text" class="input-text digit2 xl right" name="usdRateArr" title="USD 환율 (1,000 円)" maxlength="25" value="${cost.usdRate}">
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="td-inner">
|
||||||
|
<input type="text" class="input-text sep xl right" name="jpDlvyCtArr" title="일본 내 물류비" maxlength="25" value="${cost.jpDlvyCt}">
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="td-inner">
|
||||||
|
<input type="text" class="input-text sep xl right" name="intlDlvyAmtArr" title="운임비용(JP)" maxlength="25" value="${cost.intlDlvyAmt}">
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="td-inner">
|
||||||
|
<input type="text" class="input-text digit2 xl right" name="pltfomFeeArr" title="플랫폼 수수료율" maxlength="25" value="${cost.pltfomFee}">
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="td-inner">
|
||||||
|
<input type="text" class="input-text digit3 xl right" name="expctTaxArr" title="예상세율" maxlength="25" value="${cost.expctTax}">
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="td-inner">
|
||||||
|
<input type="text" class="input-text sep xl right" name="cstmsFeeArr" title="통관수수료" maxlength="25" value="${cost.cstmsFee}">
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="td-inner">
|
||||||
|
<input type="text" class="input-text sep xl right" name="krDlvyCtArr" title="운임비용(KR)" maxlength="25" value="${cost.krDlvyCt}">
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</c:forEach>
|
||||||
|
<tr id="noData" style="display: none;"><td class="row-no-data" colspan="9">원가를 설정해 주세요.</td></tr>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${empty resultMap.costList}">
|
||||||
|
<tr id="noData"><td class="row-no-data" colspan="9">원가를 설정해 주세요.</td></tr>
|
||||||
|
</c:if>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</form>
|
||||||
|
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -27,73 +27,31 @@
|
|||||||
/* ********************************************************
|
/* ********************************************************
|
||||||
* 입력창 추가
|
* 입력창 추가
|
||||||
******************************************************** */
|
******************************************************** */
|
||||||
const fn_add_emptyBox = function(_target) {
|
const fn_add_emptyBox = function() {
|
||||||
|
|
||||||
stplatChk = false;
|
stplatChk = false;
|
||||||
let count = 0;
|
|
||||||
let trClone = '';
|
let trClone = '';
|
||||||
|
|
||||||
if (_target === 'clauseChk') {
|
trClone = '<tr>'
|
||||||
|
+ ' <td>'
|
||||||
|
+ ' <label class="b-checkbox checkbox is-medium">'
|
||||||
|
+ ' <input type="checkbox" name="siteChk" value=""><span class="check"></span>'
|
||||||
|
+ ' </label>'
|
||||||
|
+ ' </td>'
|
||||||
|
+ ' <td>'
|
||||||
|
+ ' <div class="td-inner">'
|
||||||
|
+ ' <input type="text" class="input-text xl" name="familySiteNmArr" title="패밀리 사이트명" maxlength="20">'
|
||||||
|
+ ' </div>'
|
||||||
|
+ ' </td>'
|
||||||
|
+ ' <td>'
|
||||||
|
+ ' <div class="td-inner">'
|
||||||
|
+ ' <input type="text" class="input-text full" name="familySiteUrlArr" title="URL" maxlength="30">'
|
||||||
|
+ ' </div>'
|
||||||
|
+ ' </td>'
|
||||||
|
+ '</tr>';
|
||||||
|
|
||||||
count = $('#tableSorting').children('tr').length + 1;
|
$('#tableSiteSorting').append(trClone);
|
||||||
|
$('#noData').hide();
|
||||||
trClone = '<tr>'
|
|
||||||
+ ' <td>'
|
|
||||||
+ ' <label class="b-checkbox checkbox is-medium">'
|
|
||||||
+ ' <input type="checkbox" name="clauseChk" value=""><span class="check"></span>'
|
|
||||||
+ ' </label>'
|
|
||||||
+ ' </td>'
|
|
||||||
+ ' <td>'
|
|
||||||
+ ' <div class="select-box">'
|
|
||||||
+ ' <select class="full" name="clause" id="clause' + count + '" title="약관구분" onchange="fn_select_subClause(this);">'
|
|
||||||
+ ' <option value="" selected >선택하세요</option>'
|
|
||||||
+ ' <c:forEach var="cgn002" items="${resultMap.cgn002}" varStatus="status">'
|
|
||||||
+ ' <option value="${cgn002.cd}"><c:out value="${cgn002.cdNm}"/></option>'
|
|
||||||
+ ' </c:forEach>'
|
|
||||||
+ ' </select>'
|
|
||||||
+ ' </div>'
|
|
||||||
+ ' </td>'
|
|
||||||
+ ' <td>'
|
|
||||||
+ ' <div class="select-box privacyPolicy-select">'
|
|
||||||
+ ' <select class="full" name="stplatInnbArr" id="privacyPolicy' + count + '" title="약관 내용">'
|
|
||||||
+ ' <option value="" selected >약관 구분을 선택하세요</option>'
|
|
||||||
+ ' </select>'
|
|
||||||
+ ' </div>'
|
|
||||||
+ ' </td>'
|
|
||||||
+ ' <td>'
|
|
||||||
+ ' <div class="manage-btn-container">'
|
|
||||||
+ ' <a href="#clause-info-modal" rel="modal:open" class="btn xsm primary outline privacy" onclick="fn_select_clauseInformation(\'new\');"><spring:message code="button.view"/></a>'
|
|
||||||
+ ' </div>'
|
|
||||||
+ ' </td>'
|
|
||||||
+ '</tr>';
|
|
||||||
|
|
||||||
$('#tableSorting').append(trClone);
|
|
||||||
$('#clause' + count).niceSelect();
|
|
||||||
$('#privacyPolicy' + count).niceSelect();
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
trClone = '<tr>'
|
|
||||||
+ ' <td>'
|
|
||||||
+ ' <label class="b-checkbox checkbox is-medium">'
|
|
||||||
+ ' <input type="checkbox" name="siteChk" value=""><span class="check"></span>'
|
|
||||||
+ ' </label>'
|
|
||||||
+ ' </td>'
|
|
||||||
+ ' <td>'
|
|
||||||
+ ' <div class="td-inner">'
|
|
||||||
+ ' <input type="text" class="input-text xl" name="familySiteNmArr" title="패밀리 사이트명" maxlength="20">'
|
|
||||||
+ ' </div>'
|
|
||||||
+ ' </td>'
|
|
||||||
+ ' <td>'
|
|
||||||
+ ' <div class="td-inner">'
|
|
||||||
+ ' <input type="text" class="input-text full" name="familySiteUrlArr" title="URL" maxlength="30">'
|
|
||||||
+ ' </div>'
|
|
||||||
+ ' </td>'
|
|
||||||
+ '</tr>';
|
|
||||||
|
|
||||||
$('#tableSiteSorting').append(trClone);
|
|
||||||
$('#noData').hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -102,9 +60,9 @@
|
|||||||
/* ********************************************************
|
/* ********************************************************
|
||||||
* 입력창 삭제
|
* 입력창 삭제
|
||||||
******************************************************** */
|
******************************************************** */
|
||||||
const fn_remove_box = function(_target) {
|
const fn_remove_box = function() {
|
||||||
|
|
||||||
const target = $('[name=' + _target + ']:checked');
|
const target = $('[name=siteChk]:checked');
|
||||||
|
|
||||||
if (target.length === 0) {
|
if (target.length === 0) {
|
||||||
alert('항목을 선택해 주세요.');
|
alert('항목을 선택해 주세요.');
|
||||||
@@ -114,20 +72,16 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_target === 'clauseChk') {
|
$('#siteAll').prop('checked', false);
|
||||||
$('#clauseAll').prop('checked', false);
|
const total = $('#tableSiteSorting').find('tr').length;
|
||||||
|
|
||||||
|
if (total === 1) {
|
||||||
|
|
||||||
|
$('#noData').show();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$('#siteAll').prop('checked', false);
|
|
||||||
const total = $('#tableSiteSorting').find('tr').length;
|
|
||||||
|
|
||||||
if (total === 1) {
|
$('#noData').hide();
|
||||||
|
|
||||||
$('#noData').show();
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
$('#noData').hide();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -173,8 +127,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="center"></div>
|
<div class="center"></div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<button type="button" class="btn primary outline xsm" onclick="fn_add_emptyBox('siteChk');"><spring:message code="button.add"/></button>
|
<button type="button" class="btn primary outline xsm" onclick="fn_add_emptyBox();"><spring:message code="button.add"/></button>
|
||||||
<button type="button" class="btn dark xsm" onclick="fn_remove_box('siteChk');"><spring:message code="button.delete"/></button>
|
<button type="button" class="btn dark xsm" onclick="fn_remove_box();"><spring:message code="button.delete"/></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="table-wrapper">
|
<div class="table-wrapper">
|
||||||
|
|||||||
@@ -157,7 +157,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case02.goodsSttusCd eq '02'}">
|
<c:when test="${case02.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case02.goodsSttusCd eq '03'}">
|
<c:when test="${case02.goodsSttusCd eq '03'}">
|
||||||
@@ -180,10 +180,10 @@
|
|||||||
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -198,10 +198,10 @@
|
|||||||
<c:if test="${case02.pricExpsrAt eq 'Y'}">
|
<c:if test="${case02.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case02.pricExpsrOrdr-1}" style="order:${case02.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case02.pricExpsrOrdr-1}" style="order:${case02.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case02.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case02.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent"><c:out value="${case02.slePercent}"/>%</span>
|
<span class="percent"><c:out value="${case02.slePercent}"/>%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -332,7 +332,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case04.goodsSttusCd eq '02'}">
|
<c:when test="${case04.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case04.goodsSttusCd eq '03'}">
|
<c:when test="${case04.goodsSttusCd eq '03'}">
|
||||||
@@ -355,10 +355,10 @@
|
|||||||
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case04.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -373,10 +373,10 @@
|
|||||||
<c:if test="${case04.pricExpsrAt eq 'Y'}">
|
<c:if test="${case04.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case04.pricExpsrOrdr-1}" style="order:${case04.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case04.pricExpsrOrdr-1}" style="order:${case04.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case04.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case04.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case04.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case04.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case04.slePercent }%</span>
|
<span class="percent">${ case04.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -484,7 +484,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case05.goodsSttusCd eq '02'}">
|
<c:when test="${case05.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case05.goodsSttusCd eq '03'}">
|
<c:when test="${case05.goodsSttusCd eq '03'}">
|
||||||
@@ -507,10 +507,10 @@
|
|||||||
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -525,10 +525,10 @@
|
|||||||
<c:if test="${case05.pricExpsrAt eq 'Y'}">
|
<c:if test="${case05.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case05.pricExpsrOrdr-1}" style="order:${case05.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case05.pricExpsrOrdr-1}" style="order:${case05.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case05.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case05.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent"><c:out value="${case05.slePercent}"/>%</span>
|
<span class="percent"><c:out value="${case05.slePercent}"/>%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -601,7 +601,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case07.goodsSttusCd eq '02'}">
|
<c:when test="${case07.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case07.goodsSttusCd eq '03'}">
|
<c:when test="${case07.goodsSttusCd eq '03'}">
|
||||||
@@ -622,10 +622,10 @@
|
|||||||
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -640,10 +640,10 @@
|
|||||||
<c:if test="${case07.pricExpsrAt eq 'Y'}">
|
<c:if test="${case07.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case07.pricExpsrOrdr-1}" style="order:${case07.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case07.pricExpsrOrdr-1}" style="order:${case07.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case07.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case07.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case07.slePercent }%</span>
|
<span class="percent">${ case07.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -718,7 +718,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case08.goodsSttusCd eq '02'}">
|
<c:when test="${case08.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case08.goodsSttusCd eq '03'}">
|
<c:when test="${case08.goodsSttusCd eq '03'}">
|
||||||
@@ -754,10 +754,10 @@
|
|||||||
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -772,10 +772,10 @@
|
|||||||
<c:if test="${case08.pricExpsrAt eq 'Y'}">
|
<c:if test="${case08.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case08.pricExpsrOrdr-1}" style="order:${case08.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case08.pricExpsrOrdr-1}" style="order:${case08.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case08.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case08.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case08.slePercent }%</span>
|
<span class="percent">${ case08.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -880,7 +880,7 @@
|
|||||||
<span class="product-unit-rating__score"><c:out value="${case09.avgEvlScore}" default="0.0"/></span>
|
<span class="product-unit-rating__score"><c:out value="${case09.avgEvlScore}" default="0.0"/></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price">
|
<div class="product-unit-price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case09.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case09.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case09.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case09.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case09.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -921,7 +921,7 @@
|
|||||||
<c:forEach items="${ resultMap.case10 }" var="case10" varStatus="status">
|
<c:forEach items="${ resultMap.case10 }" var="case10" varStatus="status">
|
||||||
<c:if test="${ relmList.ordr eq case10.sOrdr }">
|
<c:if test="${ relmList.ordr eq case10.sOrdr }">
|
||||||
<div class="swiper-slide">
|
<div class="swiper-slide">
|
||||||
<a href="/sopmal/csc/selectBbscttAuth?bbsId=${ case10.bbsId }&bbscttInnb=${ case10.bbscttInnb }">
|
<a href="/sopmal/csc/selectBbscttAuth?authDv=REDNG&reqUrl=detail&bbsId=${ case10.bbsId }&bbscttInnb=${ case10.bbscttInnb }">
|
||||||
<img src="${cdnurl}${ case10.reprsntImgSysFilNm }" alt="해당 이미지에 대한 설명" onerror="this.src='/pc/images/image_placeholder.png'">
|
<img src="${cdnurl}${ case10.reprsntImgSysFilNm }" alt="해당 이미지에 대한 설명" onerror="this.src='/pc/images/image_placeholder.png'">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -1197,7 +1197,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case02.goodsSttusCd eq '02'}">
|
<c:when test="${case02.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case02.goodsSttusCd eq '03'}">
|
<c:when test="${case02.goodsSttusCd eq '03'}">
|
||||||
@@ -1220,10 +1220,10 @@
|
|||||||
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case02.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -1238,10 +1238,10 @@
|
|||||||
<c:if test="${case02.pricExpsrAt eq 'Y'}">
|
<c:if test="${case02.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case02.pricExpsrOrdr-1}" style="order:${case02.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case02.pricExpsrOrdr-1}" style="order:${case02.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case02.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case02.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case02.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case02.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent"><c:out value="${case02.slePercent}"/>%</span>
|
<span class="percent"><c:out value="${case02.slePercent}"/>%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1376,7 +1376,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case04.goodsSttusCd eq '02'}">
|
<c:when test="${case04.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case04.goodsSttusCd eq '03'}">
|
<c:when test="${case04.goodsSttusCd eq '03'}">
|
||||||
@@ -1403,10 +1403,10 @@
|
|||||||
var="iconCdNm" varStatus="iconStatus">
|
var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -1424,12 +1424,12 @@
|
|||||||
<div class="product-unit-price col order-${case04.pricExpsrOrdr-1}"
|
<div class="product-unit-price col order-${case04.pricExpsrOrdr-1}"
|
||||||
style="order:${case04.pricExpsrOrdr-1}">
|
style="order:${case04.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber
|
<span class="product-unit-price__original <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber
|
||||||
value="${case04.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
value="${case04.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber
|
<span class="product-unit-price__current"><fmt:formatNumber
|
||||||
value="${case04.slepric}" pattern="#,###"/>${curUnit}</span>
|
value="${case04.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case04.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case04.slePercent }%</span>
|
<span class="percent">${ case04.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1543,7 +1543,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case05.goodsSttusCd eq '02'}">
|
<c:when test="${case05.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case05.goodsSttusCd eq '03'}">
|
<c:when test="${case05.goodsSttusCd eq '03'}">
|
||||||
@@ -1566,10 +1566,10 @@
|
|||||||
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case05.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -1584,10 +1584,10 @@
|
|||||||
<c:if test="${case05.pricExpsrAt eq 'Y'}">
|
<c:if test="${case05.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case05.pricExpsrOrdr-1}" style="order:${case05.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case05.pricExpsrOrdr-1}" style="order:${case05.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case05.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case05.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case05.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case05.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent"><c:out value="${case05.slePercent}"/>%</span>
|
<span class="percent"><c:out value="${case05.slePercent}"/>%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1660,7 +1660,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case07.goodsSttusCd eq '02'}">
|
<c:when test="${case07.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case07.goodsSttusCd eq '03'}">
|
<c:when test="${case07.goodsSttusCd eq '03'}">
|
||||||
@@ -1681,10 +1681,10 @@
|
|||||||
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case07.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -1699,10 +1699,10 @@
|
|||||||
<c:if test="${case07.pricExpsrAt eq 'Y'}">
|
<c:if test="${case07.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case07.pricExpsrOrdr-1}" style="order:${case07.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case07.pricExpsrOrdr-1}" style="order:${case07.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case07.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case07.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case07.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case07.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case07.slePercent }%</span>
|
<span class="percent">${ case07.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1777,7 +1777,7 @@
|
|||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${case08.goodsSttusCd eq '02'}">
|
<c:when test="${case08.goodsSttusCd eq '02'}">
|
||||||
<div class="sold-out">
|
<div class="sold-out">
|
||||||
<span>SOLD OUT</span>
|
<span>입고 대기중</span>
|
||||||
</div>
|
</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:when test="${case08.goodsSttusCd eq '03'}">
|
<c:when test="${case08.goodsSttusCd eq '03'}">
|
||||||
@@ -1813,10 +1813,10 @@
|
|||||||
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
<c:forEach items="${fn:split(case08.goodsIconCd, ',')}" var="iconCdNm" varStatus="iconStatus">
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:contains(iconCdNm, '-')}">
|
<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:when>
|
||||||
<c:otherwise>
|
<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:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
@@ -1831,10 +1831,10 @@
|
|||||||
<c:if test="${case08.pricExpsrAt eq 'Y'}">
|
<c:if test="${case08.pricExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-price col order-${case08.pricExpsrOrdr-1}" style="order:${case08.pricExpsrOrdr-1}">
|
<div class="product-unit-price col order-${case08.pricExpsrOrdr-1}" style="order:${case08.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__original <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>"><fmt:formatNumber value="${case08.cnsmrpric}" pattern="#,###"/>${curUnit}</span>
|
||||||
<span class="product-unit-price__current"><fmt:formatNumber value="${case08.slepric}" pattern="#,###"/>${curUnit}</span>
|
<span class="product-unit-price__current"><fmt:formatNumber value="${case08.slepric}" pattern="#,###"/>${curUnit}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${case08.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent">${ case08.slePercent }%</span>
|
<span class="percent">${ case08.slePercent }%</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -2130,7 +2130,7 @@
|
|||||||
str += ' <div class="product-unit-image">';
|
str += ' <div class="product-unit-image">';
|
||||||
if (result.goodsSttusCd === '02') {
|
if (result.goodsSttusCd === '02') {
|
||||||
str += '<div class="sold-out">';
|
str += '<div class="sold-out">';
|
||||||
str += ' <span>SOLD OUT</span>';
|
str += ' <span>입고 대기중</span>';
|
||||||
str += '</div>';
|
str += '</div>';
|
||||||
} else if (result.goodsSttusCd === '03') {
|
} else if (result.goodsSttusCd === '03') {
|
||||||
str += '<div class="sold-out">';
|
str += '<div class="sold-out">';
|
||||||
@@ -2156,9 +2156,9 @@
|
|||||||
|
|
||||||
if (iconCdNm.includes('-')) {
|
if (iconCdNm.includes('-')) {
|
||||||
let temp = upper.replace(/-/g, ' ');
|
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 {
|
} else {
|
||||||
str += '<span class="product-badge ' + lower + '">' + upper + '</span>';
|
str += '<span class="product-badge ' + lower + '" data-badge-cd="' + iconCdNm + '">' + upper + '</span>';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -2173,10 +2173,10 @@
|
|||||||
if (result.pricExpsrAt == 'Y') {
|
if (result.pricExpsrAt == 'Y') {
|
||||||
str += '<div class="product-unit-price col order-' + (result.pricExpsrOrdr - 1) + '" style="order:' + (result.pricExpsrOrdr - 1) + '">';
|
str += '<div class="product-unit-price col order-' + (result.pricExpsrOrdr - 1) + '" style="order:' + (result.pricExpsrOrdr - 1) + '">';
|
||||||
str += ' <div class="product-unit-price__price">';
|
str += ' <div class="product-unit-price__price">';
|
||||||
str += ' <span class="product-unit-price__original">' + new Intl.NumberFormat('ko-KR').format(result.cnsmrpric) + curUnit + '</span>';
|
str += ' <span class="product-unit-price__original' + (result.slePercent == 0 ? ' visually-hidden' : '') + new Intl.NumberFormat('ko-KR').format(result.cnsmrpric) + curUnit + '</span>';
|
||||||
str += ' <span class="product-unit-price__current">' + new Intl.NumberFormat('ko-KR').format(result.slepric) + curUnit + '</span>';
|
str += ' <span class="product-unit-price__current">' + new Intl.NumberFormat('ko-KR').format(result.slepric) + curUnit + '</span>';
|
||||||
str += ' </div>';
|
str += ' </div>';
|
||||||
str += ' <div class="product-unit-price__sale">';
|
str += ' <div class="product-unit-price__sale' + (result.slePercent == 0 ? ' visually-hidden' : '') + '">';
|
||||||
str += ' <span class="percent">' + result.slePercent + '%</span>';
|
str += ' <span class="percent">' + result.slePercent + '%</span>';
|
||||||
str += ' </div>';
|
str += ' </div>';
|
||||||
str += '</div>';
|
str += '</div>';
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
--%>
|
--%>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ko">
|
<html lang="ko">
|
||||||
|
<spring:eval expression="@environment.getProperty('currency-unit.default')" var="curUnit"/>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@@ -132,13 +133,13 @@
|
|||||||
});
|
});
|
||||||
} else { //메인화면 호출 안할 시
|
} else { //메인화면 호출 안할 시
|
||||||
// 상품 - 4열 슬라이드 타입 (이벤트 추천 상품 슬릭 이벤트)
|
// 상품 - 4열 슬라이드 타입 (이벤트 추천 상품 슬릭 이벤트)
|
||||||
$('.four-row-slick').slick({
|
$('.relate-goods-slick').slick({
|
||||||
slidesToShow: 4,
|
slidesToShow: 4,
|
||||||
slidesToScroll: 4,
|
slidesToScroll: 4,
|
||||||
speed: 900,
|
speed: 900,
|
||||||
infinite: true,
|
infinite: true,
|
||||||
prevArrow: $('.four-row-slick__prev'),
|
prevArrow: $('.relate-goods-slick__prev'),
|
||||||
nextArrow: $('.four-row-slick__next'),
|
nextArrow: $('.relate-goods-slick__next'),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -266,7 +267,7 @@
|
|||||||
const reqUrl = $("#reqUrl").val();
|
const reqUrl = $("#reqUrl").val();
|
||||||
if (reqUrl === 'csc') {
|
if (reqUrl === 'csc') {
|
||||||
form.attr("action", "/sopmal/csc/selectCscListForm");
|
form.attr("action", "/sopmal/csc/selectCscListForm");
|
||||||
} else if (reqUrl === 'subPage') {
|
} else if (reqUrl === 'subPage' || reqUrl === 'detail') {
|
||||||
form.attr("action", "/sopmal/csc/selectSubPageListForm");
|
form.attr("action", "/sopmal/csc/selectSubPageListForm");
|
||||||
}
|
}
|
||||||
form.attr("method", "POST");
|
form.attr("method", "POST");
|
||||||
@@ -823,7 +824,9 @@
|
|||||||
<i class="icon icon_lock"></i>
|
<i class="icon icon_lock"></i>
|
||||||
</c:if>
|
</c:if>
|
||||||
</h4>
|
</h4>
|
||||||
<p class="eventDetail__date"><c:out value="${bbscttInfo.sumRegistDt}"/></p>
|
<c:if test="${bbsInfo.registDtYn eq 'Y'}">
|
||||||
|
<p class="eventDetail__date"><c:out value="${bbscttInfo.sumRegistDt}"/></p>
|
||||||
|
</c:if>
|
||||||
</div>
|
</div>
|
||||||
<%-------------------------------%>
|
<%-------------------------------%>
|
||||||
<%--첨부 파일 다운로드 영역--%>
|
<%--첨부 파일 다운로드 영역--%>
|
||||||
@@ -938,106 +941,96 @@
|
|||||||
</div>
|
</div>
|
||||||
</c:if>
|
</c:if>
|
||||||
<%-------------------------------%>
|
<%-------------------------------%>
|
||||||
<c:if test="${bbsInfo.recomendGoodsExpsrAt eq 'Y' && not empty goodsList.relateInfoList}">
|
<c:if test="${bbsInfo.recomendGoodsExpsrAt eq 'Y' && not empty goodsList}">
|
||||||
<div class="cartOrder">
|
<div class="cartOrder">
|
||||||
<div class="main-section__container">
|
<div class="main-section__container">
|
||||||
<section class="main-section main-section__four-row">
|
<section class="main-section main-section__four-row">
|
||||||
<div class="main-section-header">
|
<div class="main-section-header">
|
||||||
<div class="main-section-title">
|
<div class="main-section-title">
|
||||||
<h3 class="main-section-title__title">
|
<h3 class="main-section-title__title">
|
||||||
추천 상품
|
<c:choose>
|
||||||
|
<c:when test = "${not empty bbscttInfo.relateGoodsWords}">
|
||||||
|
<c:out value="${bbscttInfo.relateGoodsWords}" escapeXml="false"/>
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
이 글과 관련된 사케
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-list-type1">
|
<div class="product-list-type1">
|
||||||
<div class="four-row-slick evtSlick">
|
<div class="${fn:length(goodsList) gt 4 ? 'four-row-slick relate-goods-slick evtSlick' : 'product-list-type1__list'}">
|
||||||
<c:forEach var = "item" items="${goodsList.relateInfoList}">
|
<c:forEach var = "item" items="${goodsList}">
|
||||||
<c:if test = "${not empty item.goodsInnb}">
|
<c:if test = "${not empty item.goodsInnb}">
|
||||||
<div class="product-unit">
|
<div class="product-unit">
|
||||||
<div class="product-unit-image">
|
<div class="product-unit-image">
|
||||||
<c:forEach var = "img" items = "${goodsList.relateImgList}">
|
<c:if test="${item.goodsSttusCd eq '02'}">
|
||||||
<c:if test = "${item.goodsInnb eq img.goodsInnb}">
|
<div class="sold-out"><span>입고 대기중</span></div>
|
||||||
<button type="button" onclick = "fn_move_goods_dtl(<c:out value="${item.goodsInnb}"/>)" value="${item.goodsInnb}">
|
</c:if>
|
||||||
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
<a class="product-detail" href="javascript:void(0);" onclick="fn_move_goods_dtl('<c:out value="${item.goodsInnb}"/>');">
|
||||||
<img src="<c:out value = "${cdnurl}${img.img}"/>" style="width: 100%;
|
<spring:eval expression="@environment.getProperty('sopmalfo.common.fileupload.cdnurl')" var="cdnurl"/>
|
||||||
height: 304px; /* 원하는 고정 높이 설정 */
|
<img src="<c:out value = "${cdnurl}${item.img}"/>"
|
||||||
object-fit: cover; /* 이미지 비율을 유지하면서 영역에 맞게 자름 */"
|
onerror="this.src='/pc/images/image_placeholder.png'" alt="<c:out value="${item.goodsNm}"/>">
|
||||||
onerror="this.src='/pc/images/image_placeholder.png'" alt="해당 이미지에 대한 설명">
|
</a>
|
||||||
</button>
|
|
||||||
</c:if>
|
|
||||||
</c:forEach>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-info">
|
<div class="product-unit-info d-flex flex-column" style="flex-direction:column">
|
||||||
<div class="product-badge-container">
|
<c:if test="${not empty item.iconCdNmList && item.iconExpsrAt eq 'Y'}">
|
||||||
<c:if test = "${not empty item.goodsIconCd}">
|
<div class="product-badge-container col order-${item.iconExpsrOrdr-1}" style="order: ${item.iconExpsrOrdr-1}">
|
||||||
<c:forEach items="${fn:split(item.goodsIconCd, ',')}" var="icon">
|
<c:forEach items="${fn:split(item.iconCdNmList, ',')}" var="iconCdNm">
|
||||||
<c:if test="${icon eq 'new'}">
|
<span class="product-badge ${fn:toLowerCase(iconCdNm)}" data-badge-cd="${iconCdNm}">${fn:replace(fn:toUpperCase(iconCdNm), '-', ' ')}</span>
|
||||||
<span class="product-badge new">NEW</span>
|
|
||||||
</c:if>
|
|
||||||
<c:if test="${icon eq 'hot'}">
|
|
||||||
<span class="product-badge hot">HOT</span>
|
|
||||||
</c:if>
|
|
||||||
<c:if test="${icon eq 'best'}">
|
|
||||||
<span class="product-badge best">BEST</span>
|
|
||||||
</c:if>
|
|
||||||
<c:if test="${icon eq 'md-pick'}">
|
|
||||||
<span class="product-badge md-pick">MD PICK</span>
|
|
||||||
</c:if>
|
|
||||||
<c:if test="${icon eq 'hot-deal'}">
|
|
||||||
<span class="product-badge four-row">HOT DEAL</span>
|
|
||||||
</c:if>
|
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
</c:if>
|
|
||||||
</div>
|
|
||||||
<div class="product-unit-info__inner">
|
|
||||||
<div class="product-unit-title">
|
|
||||||
<button type="button" onclick = "fn_move_goods_dtl(<c:out value="${item.goodsInnb}"/>)">
|
|
||||||
<c:out value = "${item.goodsNm}"/>
|
|
||||||
</button>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price">
|
</c:if>
|
||||||
<c:forEach var="goodsOpt" items="${goodsList.relateGoodsOptList}">
|
<c:if test="${item.goodsNmExpsrAt eq 'Y'}">
|
||||||
<c:if test="${item.goodsInnb eq goodsOpt.goodsInnb && goodsOpt.stdrDvAt eq 'Y'}">
|
<div class="product-unit-title col order-${item.goodsNmExpsrOrdr-1}" style="order: ${item.goodsNmExpsrOrdr-1}">
|
||||||
|
<a href="javascript:void(0);" onclick="fn_move_goods_dtl('<c:out value="${item.goodsInnb}"/>');">
|
||||||
|
<c:out value = "${item.goodsNm}"/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${item.pricExpsrAt eq 'Y'}">
|
||||||
|
<div class="product-unit-price col order-${item.pricExpsrOrdr-1}" style="order: ${item.pricExpsrOrdr-1}">
|
||||||
<div class="product-unit-price__price">
|
<div class="product-unit-price__price">
|
||||||
<span class="product-unit-price__original">
|
<span class="product-unit-price__original <c:if test="${item.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<fmt:formatNumber value="${goodsOpt.cnsmrpric}" pattern="#,###"/>
|
<fmt:formatNumber value="${item.cnsmrpric}"/> ${curUnit}
|
||||||
</span>
|
</span>
|
||||||
<span class="product-unit-price__current">
|
<span class="product-unit-price__current">
|
||||||
<fmt:formatNumber value="${goodsOpt.slepric}" pattern="#,###"/>
|
<fmt:formatNumber value="${item.slepric}"/> ${curUnit}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-unit-price__sale">
|
<div class="product-unit-price__sale <c:if test="${item.slePercent eq 0}">visually-hidden</c:if>">
|
||||||
<span class="percent"><c:out value = "${goodsOpt.slePercent}"/>%</span>
|
<span class="percent"><c:out value = "${item.slePercent}"/> %</span>
|
||||||
</div>
|
</div>
|
||||||
</c:if>
|
|
||||||
</c:forEach>
|
|
||||||
</div>
|
</div>
|
||||||
<span class="product-unit-price__monthly-payment"><c:out value = "${item.srtDc}"/></span>
|
</c:if>
|
||||||
</div>
|
<c:if test="${item.reprsntDcExpsrAt eq 'Y'}">
|
||||||
<div class="product-unit-rating">
|
<div class="product-unit-price__monthly-payment col order-${item.reprsntDcExpsrOrdr-1}" style="order: ${item.reprsntDcExpsrOrdr-1}"><c:out value = "${item.reprsntDc}"/></div>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${item.rvwEvlScreExpsrAt eq 'Y'}">
|
||||||
|
<div class="product-unit-rating col order-${item.rvwEvlScreExpsrOrdr-1}" style="order: ${item.rvwEvlScreExpsrOrdr-1}">
|
||||||
<i class="icon icon_rating-star"></i>
|
<i class="icon icon_rating-star"></i>
|
||||||
<c:forEach var = "evlInfo" items="${goodsList.goodsRvwEvlList}">
|
<span class="product-unit-rating__score"><c:out value = "${item.avgEvlScore}"/></span>
|
||||||
<c:if test = "${evlInfo.goodsInnb eq item.goodsInnb}">
|
<span class="product-unit-rating__count">(<fmt:formatNumber value="${item.cntEvlScor}"/>)</span>
|
||||||
<span class="product-unit-rating__score"><c:out value = "${evlInfo.avgEvlScore}"/>${goodsOpt.goodInnb}</span>
|
|
||||||
<span class="product-unit-rating__count">(<fmt:formatNumber value="${evlInfo.cntBbsctt}" pattern="#,###"/>)</span>
|
|
||||||
</c:if>
|
|
||||||
</c:forEach>
|
|
||||||
</div>
|
</div>
|
||||||
|
</c:if>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</c:if>
|
</c:if>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
</div>
|
</div>
|
||||||
|
<c:if test="${fn:length(goodsList) gt 4}">
|
||||||
<div class="four-row-slick__btn-container">
|
<div class="four-row-slick__btn-container">
|
||||||
<button class="four-row-slick__prev">
|
<button class="relate-goods-slick__prev">
|
||||||
<i class="icon icon_prev02"></i>
|
<i class="icon icon_prev02"></i>
|
||||||
<span class="visually-hidden">이전</span>
|
<span class="visually-hidden">이전</span>
|
||||||
</button>
|
</button>
|
||||||
<button class="four-row-slick__next">
|
<button class="relate-goods-slick__next">
|
||||||
<i class="icon icon_next02"></i>
|
<i class="icon icon_next02"></i>
|
||||||
<span class="visually-hidden">다음</span>
|
<span class="visually-hidden">다음</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
</c:if>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
@@ -1297,4 +1290,4 @@
|
|||||||
|
|
||||||
</body>
|
</body>
|
||||||
<script src="<c:url value='/js/sopmal/lotteryScratch.js'/>"></script>
|
<script src="<c:url value='/js/sopmal/lotteryScratch.js'/>"></script>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -260,7 +260,7 @@
|
|||||||
</c:choose>
|
</c:choose>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<c:if test = "${bbsInfo.bbscttRegist eq 'Y'}">
|
<c:if test = "${bbsInfo.bbscttRegist eq 'Y' and resultMap.registAuthResult eq 'Y'}">
|
||||||
<div class="sub-board__top-btn-container">
|
<div class="sub-board__top-btn-container">
|
||||||
<button type = "button" class="btn outline theme" id = "regBtn"><spring:message code="button.insert"/></button>
|
<button type = "button" class="btn outline theme" id = "regBtn"><spring:message code="button.insert"/></button>
|
||||||
</div>
|
</div>
|
||||||
@@ -271,4 +271,4 @@
|
|||||||
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_List"/>
|
<ui:pagination paginationInfo="${resultMap.paginationInfo}" type="image" jsFunction="fn_select_List"/>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||