Explorar el Código

안전인증 수정중

eskim hace 5 años
padre
commit
3e09d35c07

+ 10 - 0
src/main/java/com/style24/admin/biz/dao/TsaGoodsDao.java

@@ -886,6 +886,16 @@ public interface TsaGoodsDao {
 	 */
 	Collection<Goods> getGoodsDetailOrderGradeList(Goods goods);
 
+	/**
+	 * 상품 안전인증 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2021. 05. 10
+	 */
+	GoodsSafeNo getGoodsDetailSafe(Goods goods);
+	
 	/**
 	 * 상품 구매등급 삭제
 	 *

+ 26 - 9
src/main/java/com/style24/admin/biz/service/TsaGoodsService.java

@@ -630,6 +630,20 @@ public class TsaGoodsService {
 	public Collection<Goods> getGoodsDetailOrderGradeList(Goods goods) {
 		return goodsDao.getGoodsDetailOrderGradeList(goods);
 	}
+	
+	/**
+	 * 상품 안전인증 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2021. 05. 10
+	 */
+	public GoodsSafeNo getGoodsDetailSafe(Goods goods) {
+		return goodsDao.getGoodsDetailSafe(goods);
+	}
+	
+	
 
 	/**
 	 * 구성상품 목록
@@ -665,21 +679,24 @@ public class TsaGoodsService {
 	 * @since 2020. 12. 07
 	 */
 	@Transactional("shopTxnManager")
-	public void saveGoodsDetailCertNum(Goods goods) {
+	public void saveGoodsDetailCertNum(GoodsSafeNo goodsSafeNo) {
 		try {
-			if (StringUtils.isNotBlank(goods.getCertNum())) {
-				if ("해당없음".equals(goods.getCertNum())) {
-					GoodsSafeNo goodsSafeNo = new GoodsSafeNo();
-					goodsSafeNo.setGoodsCd(goods.getGoodsCd());
-					goodsSafeNo.setCertNum(goods.getCertNum());
+//			if ("" .goodsSafeNo.getCertTargetGb()) {
+//				
+//			}
+			if (StringUtils.isNotBlank(goodsSafeNo.getCertNum())) {
+				if ("해당없음".equals(goodsSafeNo.getCertNum())) {
+//					GoodsSafeNo goodsSafeNo = new GoodsSafeNo();
+//					goodsSafeNo.setGoodsCd(goodsSafeNo.getGoodsCd());
+//					goodsSafeNo.setCertNum(goodsSafeNo.getCertNum());
 					goodsSafeNo.setRegNo(TsaSession.getInfo().getUserNo());
 					goodsSafeNo.setUpdNo(TsaSession.getInfo().getUserNo());
 					goodsDao.saveGoodsSafeNo(goodsSafeNo);
 				}else {
-					GagaMap result = safetyKoreaApi.getKoreaCertifyDetail(goods.getCertNum());
+					GagaMap result = safetyKoreaApi.getKoreaCertifyDetail(goodsSafeNo.getCertNum());
 					if (result != null || !StringUtil.isNullOrEmpty(result.get("certNum").toString())) {
-						GoodsSafeNo goodsSafeNo = new GoodsSafeNo();
-						goodsSafeNo.setGoodsCd(goods.getGoodsCd());
+//						GoodsSafeNo goodsSafeNo = new GoodsSafeNo();
+						goodsSafeNo.setGoodsCd(goodsSafeNo.getGoodsCd());
 						goodsSafeNo.setCertDt(result.get("certDt").toString());
 						goodsSafeNo.setCertNum(result.get("certNum").toString());
 						goodsSafeNo.setCertState(result.get("certState").toString());

+ 1 - 1
src/main/java/com/style24/admin/biz/web/TsaBusinessController.java

@@ -301,7 +301,7 @@ public class TsaBusinessController extends TsaBaseController {
 		mav.addObject("siteList", rendererService.getAvailCommonCodeList("G000"));
 
 		// 구매적립포인트율
-		mav.addObject("pntInfo", cenvsetService.getEnvset(TscConstants.Site.STYLE24.value(), "C15"));
+		mav.addObject("pntInfo", cenvsetService.getEnvset(TscConstants.Site.STYLE24.value(), "C14"));
 
 		mav.setViewName("business/BrandForm");
 

+ 23 - 2
src/main/java/com/style24/admin/biz/web/TsaGoodsController.java

@@ -47,6 +47,7 @@ import com.style24.persistence.domain.GoodsNaverLowestPrice;
 import com.style24.persistence.domain.GoodsNotiInfo;
 import com.style24.persistence.domain.GoodsPriceRes;
 import com.style24.persistence.domain.GoodsResSell;
+import com.style24.persistence.domain.GoodsSafeNo;
 import com.style24.persistence.domain.GoodsSearch;
 import com.style24.persistence.domain.GoodsTnmRes;
 import com.style24.persistence.domain.GoodsVideo;
@@ -798,6 +799,12 @@ public class TsaGoodsController extends TsaBaseController {
 		mav.addObject("distributionGbList", rendererService.getCommonCodeList("G065", "Y"));
 		// 상품연령대
 		mav.addObject("ageGrpCdList", rendererService.getAvailCommonCodeList("G023"));
+		// kc인증타입
+		mav.addObject("certTypeList", rendererService.getAvailCommonCodeList("G081"));
+		// kc인증대상구분
+		mav.addObject("certTargetGbList", rendererService.getAvailCommonCodeList("G083"));
+		// kc인증형태구분
+		mav.addObject("certFormGbList", rendererService.getAvailCommonCodeList("G084"));
 		// 년도
 		int toYear = Integer.parseInt(GagaDateUtil.getToday("yyyy")) - 4;
 		mav.addObject("styleYearList", rendererService.getYearList(toYear, 0, 5));
@@ -908,6 +915,20 @@ public class TsaGoodsController extends TsaBaseController {
 	public Collection<Goods> getGoodsDetailOrderGradeList(Goods goods) {
 		return goodsService.getGoodsDetailOrderGradeList(goods);
 	}
+	
+	/**
+	 * 상품 안전인증 조회
+	 *
+	 * @param goods
+	 * @return
+	 * @author eskim
+	 * @since 2021. 05. 10
+	 */
+	@PostMapping("/detail/safe")
+	@ResponseBody
+	public GoodsSafeNo getGoodsDetailSafe(Goods goods) {
+		return goodsService.getGoodsDetailSafe(goods);
+	}
 
 	/**
 	 * 구성상품 목록
@@ -933,8 +954,8 @@ public class TsaGoodsController extends TsaBaseController {
 	 */
 	@PostMapping("/detail/certNum/save")
 	@ResponseBody
-	public GagaResponse saveGoodsDetailCertNum(@RequestBody Goods goods) {
-		goodsService.saveGoodsDetailCertNum(goods);
+	public GagaResponse saveGoodsDetailCertNum(@RequestBody GoodsSafeNo goodsSafeNo) {
+		goodsService.saveGoodsDetailCertNum(goodsSafeNo);
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
 

+ 17 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml

@@ -3292,6 +3292,23 @@
 		)
 	</insert>
 	
+	<!-- 상품 안전인증 목록 -->
+	<select id="getGoodsDetailSafe" parameterType="Goods" resultType="GoodsSafeNo">
+		/* TsaGoods.getGoodsDetailSafe */
+		SELECT  GOODS_CD
+		      , CERT_TARGET_GB
+		      , CERT_FORM_GB
+		      , CERT_TYPE
+		      , CERT_NUM
+		      , CERT_STATE
+		      , CERT_DIV
+		      , CERT_ORGAN_NAME
+		      , CERT_DT
+		FROM TB_GOODS_SAFE_NO 
+		WHERE GOODS_CD = #{goodsCd}
+		ORDER BY GOODS_CD
+	</select>
+	
 	<!-- 광고 키워드 목록 -->
 	<select id="getAdKeywordList" parameterType="AdKeyword" resultType="AdKeyword">
 		/* TsaGoods.getAdKeywordList */

+ 136 - 33
src/main/webapp/WEB-INF/views/goods/GoodsDetailForm.html

@@ -78,7 +78,7 @@
 							<li><a href="#goodstab3">상품상세정보</a></li>
 							<li id="goodsNotiTab"><a href="#goodstab4">고시정보</a></li>
 							<li id="goodsComposeTab" style="display:none;"><a href="#goodstab5">구성상품</a></li>
-							<!-- <li><a href="#goodstab6">안전인증</a></li> -->
+							<li><a href="#goodstab6">안전인증</a></li>
 							<li><a href="#goodstab7">변경이력</a></li>
 						</ul>
 					</div>
@@ -571,48 +571,70 @@
 							<!-- //TAB6 CONTENTS AREA -->
 						</li>
 						<!-- TAB6 : 이력정보 -->
-						<!-- <li class="tab" id="goodstab6">
-							TAB8 CONTENTS AREA
+						<li class="tab" id="goodstab6">
 							<div class="panelStyle">
-								<table class="frmStyle" th:with="uploadGoodsUrl=${@environment.getProperty('upload.goods.view')},uxImgUrl=${@environment.getProperty('domain.uximage')}">
+								<table class="frmStyle">
 									<colgroup>
-										<col width="10%"/>
-										<col width="40%"/>
-										<col width="10%"/>
+										<col width="11%"/>
+										<col width="22%"/>
+										<col width="11%"/>
+										<col width="22%"/>
+										<col width="11%"/>
 										<col/>
 									</colgroup>
 									<tr>
 										<th>인증대상</th>
-										<td colspan="3"></td>
+										<td colspan="5">
+											<label class="rdoBtn" th:if="${certTargetGbList}" th:each="oneData, status : ${certTargetGbList}">
+												<input type="radio" name="certTargetGb" th:value="${oneData.cd}" th:text="${oneData.cdNm}"/>
+											</label>
+											<input type="hidden" id="orgCertTargetGb" name="orgCertTargetGb"/>
+										</td>
 									</tr>
 									<tr>	
 										<th>인증형태</th>
-										<td colspan="3"></td>
-									</tr>
-									<tr>	
+										<td>
+											<select  name="certFormGb" id="certFormGb" >
+												<option value="">[선택]</option>
+												<option th:if="${certFormGbList}" th:each="oneData, status : ${certFormGbList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+											</select>
+											<input type="hidden" id="orgCertformGb" name="orgCertformGb"/>
+										</td>
 										<th>인증타입</th>
-										<td colspan="3"></td>
-									</tr>
-									<tr>	
+										<td>
+											<select  name="certType" id="certType" >
+												<option value="">[선택]</option>
+												<option th:if="${certTypeList}" th:each="oneData, status : ${certTypeList}" th:value="${oneData.cd}" th:text="${'[' + oneData.cd + '] ' + oneData.cdNm}"></option>
+											</select>
+											<input type="hidden" id="orgCertType" name="orgCertType"/>
+										</td>
 										<th>인증번호</th>
-										<td  colspan="3"></td>
+										<td>
+											<input type="text" class="w200" id="certNum" name="certNum"  maxlength="20"/>
+											<input type="hidden" id="certNumOrg" name="certNumOrg"/>
+											
+										</td>
 									</tr>
 									<tr>	
 										<th>인증상태</th>
-										<td></td>
-										<th>인증구분</th>
-										<td></td>
-									</tr>
-									<tr>	
+										<td><span id="certStateTxt"></span></td>
 										<th>인증기관</th>
-										<td></td>
+										<td><span id="certOrganNameTxt"></span></td>
 										<th>인증일</th>
-										<td></td>
+										<td><span id="certDtTxt"></span></td>
+									</tr>
+									<tr>
+										<th>인증구분</th>
+										<td colspan="5"><span id="certDivTxt"></span></td>
 									</tr>
 								</table>
+								<ul class="panelBar marT10">
+								<li class="right">
+								<button type="button" class="btn  btn-success btn-lg" id="btnGoodsSafetyCertNum">안전인증</button>
+								</li>
+								</ul>
 							</div>
-							//TAB5 CONTENTS AREA
-						</li> -->
+						</li>
 						<!-- //TAB7 : 이력정보 -->
 						<li class="tab" id="goodstab7">
 							<!-- TAB8 CONTENTS AREA -->
@@ -1136,7 +1158,8 @@
 			fnGoodsDetailNotiInfoSearch(params);
 			//구매등급
 			fnGoodsDetailOrderGradeSearch(params);
-			
+			//안전인증
+			fnGoodsDetailSafeNoSearch(params);
 			//구성상품
 			if ("G056_S" == result.goodsType || "G056_D" == result.goodsType){
 				fnGoodsComposeListSearch(params);
@@ -1167,6 +1190,11 @@
 		cfnAjaxSubmit("/goods/detail/order/grade/list", "json", fnGoodsDetailOrderGradeSearchCallback, params);
 	}
 	
+	//안전인증
+	var fnGoodsDetailSafeNoSearch = function(params) {
+		cfnAjaxSubmit("/goods/detail/safe", "json", fnGoodsDetailSafeNoSearchCallback, params);
+	}
+	
 	//구성상품
 	var fnGoodsComposeListSearch = function(params) {
 		if ("G056_S" == params.goodsType){	//세트
@@ -1229,6 +1257,33 @@
 		});
 	}
 
+	//안전인증 콜백
+	var fnGoodsDetailSafeNoSearchCallback = function(result){
+		if (result == null) return;
+			
+		if (result.certTargetGb == "G083_1"){
+			$("#goodsDetailForm input:radio[name=certTargetGb]:input[value='G083_1']").trigger('click');
+		}else if (result.certTargetGb == "G083_2"){
+			$("#goodsDetailForm input:radio[name=certTargetGb]:input[value='G083_2']").trigger('click');
+		}else if (result.certTargetGb == "G083_3"){
+			$("#goodsDetailForm input:radio[name=certTargetGb]:input[value='G083_3']").trigger('click');
+		}
+		$("#goodsDetailForm input[name=orgCertTargetGb]").val(result.certTargetGb);
+		$("#goodsDetailForm select[name=certFormGb]").val(result.certFormGb);
+		$("#goodsDetailForm input[name=orgCertFormGb]").val(result.certFormGb);
+		$("#goodsDetailForm select[name=certType]").val(result.certType);
+		$("#goodsDetailForm input[name=orgCertType]").val(result.certType);
+		$("#goodsDetailForm input[name=certNum]").val(result.certNum);
+		$("#goodsDetailForm input[name=orgCertNum]").val(result.certNum);
+		$('#goodsDetailForm').find('#certStateTxt').html(result.certState);
+		$('#goodsDetailForm').find('#certTargetGbTxt').html(result.certTargetGb);
+		
+		$('#goodsDetailForm').find('#certOrganNameTxt').html(result.certOrganName);
+		$('#goodsDetailForm').find('#certDivTxt').html(result.certDiv);
+		$('#goodsDetailForm').find('#certDtTxt').html(!gagajf.isNull(result.certDt) ? result.certDt.toDate("YYYYMMDD").format("YYYY-MM-DD") : '');
+
+	}
+	
 	//상품명 길이표시
 	$("#goodsDetailForm input[name=goodsNm]").bind('focus focusout input keyup keydown paste change', function () {
 		fnDataLengthCheck('goodsNm',200);
@@ -2302,25 +2357,73 @@
 	
 	// 안전인증
 	$("#btnGoodsSafetyCertNum").on("click", function(){
-/*
-		if($("#goodsDetailForm  input[name=certNum]").val() == $("#goodsDetailForm  input[name=certNumOrg]").val()){
-			mcxDialog.alert("안전인증번호가 변경되지 않았습니다.");
-			return false;
-		}
-*/
-		mcxDialog.confirm('안전인증번호를 변경 하시겠습니까?', {
+		
+		if (!fnGoodsSafetyCertNumCheck()) return false;
+
+		mcxDialog.confirm('안전인증정보(API)를 변경 하시겠습니까?', {
 			cancelBtnText: "취소",
 			sureBtnText: "확인",
 			sureBtnClick: function(){
 				var data = {  goodsCd : $('#goodsDetailForm input[name=goodsCd]').val()
+							, certTargetGb : $("#goodsDetailForm input[name=certTargetGb]:checked").val()
+							, certFormGb : $("#goodsDetailForm select[name=certFormGb]").val()
+							, certType : $("#goodsDetailForm select[name=certType]").val()
 							, certNum : $("#goodsDetailForm input[name=certNum]").val()
 							};
 				var jsonData = JSON.stringify(data);
-				gagajf.ajaxJsonSubmit('/goods/detail/certNum/save', jsonData );  //, fnGoodsDeailSearch
+				// gagajf.ajaxJsonSubmit('/goods/detail/certNum/save', jsonData );  //, fnGoodsDeailSearch
 			}
 		});
 	});
 	
+	var fnGoodsSafetyCertNumCheck = function(){
+		
+		if(gagajf.isNull($("#goodsDetailForm  input[name=certTargetGb]").val())){
+			mcxDialog.alert("인증대상을 선택해 주세요.");
+			return false;
+		}
+		
+		// 인증대상이 아니면 스킵
+		if ("G083_1" != $("#goodsDetailForm  input[name=certTargetGb]").val()){
+			return true;
+		}
+		
+		if(gagajf.isNull($("#goodsDetailForm select[name=certFormGb]").val())){
+			mcxDialog.alertC("인증형태를 선택해 주세요.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$("#goodsDetailForm select[name=certFormGb]").focus();
+				}
+			});
+			return false;
+		}
+		
+		if(gagajf.isNull($("#goodsDetailForm select[name=certType]").val())){
+			mcxDialog.alertC("인증타입를 선택해 주세요.", {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$("#goodsDetailForm select[name=certType]").focus();
+				}
+			});
+			return false;
+		}
+		
+		//인증타입이 공급자적합성일 경우 인증번호 미입력
+		if( "G081_3" != $("#goodsDetailForm select[name=certType]").val()){
+			if(gagajf.isNull($("#goodsDetailForm input[name=certNum]").val())){
+				mcxDialog.alertC("인증번호를 선택해 주세요.", {
+					sureBtnText: "확인",
+					sureBtnClick: function() {
+						$("#goodsDetailForm input[name=certNum]").focus();
+					}
+				});
+				return false;
+			}
+		}
+		
+		return true;
+	}
+	
 	// 상품구매등급 
 	var fnGoodsOrderGrade = function(){