Explorar el Código

재입고 알림 처리

eskim hace 5 años
padre
commit
9fd73a32a8

+ 30 - 0
src/main/java/com/style24/front/biz/service/TsfGoodsService.java

@@ -467,4 +467,34 @@ public class TsfGoodsService {
 		goodsDao.updateReinboundInform(reinboundInform);
 	}
 	
+	/**
+	 * 재입고 알림 신청 저장
+	 *
+	 * @param reinboundInform
+	 * @return void
+	 * @author eskim
+	 * @since 2021. 03. 17
+	 */
+	@Transactional("shopTxnManager")
+	public void saveGoodsInstockAlarmForm(ReinboundInform reinboundInform) {
+
+		if (!TsfSession.isLogin()) {
+			throw new IllegalStateException("로그인을 해야합니다.");
+		}
+
+		reinboundInform.setCustNo(TsfSession.getInfo().getCustNo());
+		reinboundInform.setRegNo(TsfSession.getInfo().getCustNo());
+		reinboundInform.setUpdNo(TsfSession.getInfo().getCustNo());
+		
+		// 미알림 조회
+		ReinboundInform tmpReinboundInform = goodsDao.getNotReinboundInform(reinboundInform);
+		
+		if (tmpReinboundInform == null || tmpReinboundInform.getRinbdInfoSq() <= 0) {
+			goodsDao.createReinboundInform(reinboundInform);
+		}else {
+			reinboundInform.setRinbdInfoSq(tmpReinboundInform.getRinbdInfoSq());
+			goodsDao.updateReinboundInform(reinboundInform);
+		}
+
+	}
 }

+ 16 - 0
src/main/java/com/style24/front/biz/web/TsfGoodsController.java

@@ -27,10 +27,12 @@ import com.style24.persistence.domain.Counsel;
 import com.style24.persistence.domain.Goods;
 import com.style24.persistence.domain.GoodsStock;
 import com.style24.persistence.domain.Lookbook;
+import com.style24.persistence.domain.ReinboundInform;
 
 import lombok.extern.slf4j.Slf4j;
 
 import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.rest.server.GagaResponse;
 import com.gagaframework.web.util.GagaCookieUtil;
 
 /**
@@ -505,6 +507,20 @@ public class TsfGoodsController extends TsfBaseController {
 		return mav;
 	}
 	
+	/**
+	 * 상품상세 -  재입고 등록
+	 * @return
+	 * @author eskim
+	 * @since 2021. 3. 10
+	 */
+	@PostMapping("/instock/alarm/save")
+	@ResponseBody
+	public GagaResponse saveGoodsInstockAlarmForm(@RequestBody ReinboundInform reinboundInform) {
+		log.info("reinboundInform {}", reinboundInform);
+		goodsService.saveGoodsInstockAlarmForm(reinboundInform);
+		return super.ok("재입고 알림 신청이 완료되었습니다. 재입고 시 알림톡이 발송됩니다.");
+	}
+	
 	/**
 	 * 상품상세 -  상품평 레이어
 	 * @return

+ 6 - 4
src/main/java/com/style24/persistence/mybatis/shop/TsfGoods.xml

@@ -735,10 +735,12 @@
 		    , INFORM_DT
 		FROM TB_REINBOUND_INFORM
 		WHERE CUST_NO = #{custNo}
-		AND GOODS_CD = #{GOODS_CD}
+		AND GOODS_CD = #{goodsCd}
 		AND OPT_CD = #{optCd}
-		AND INFORM_DT IS NOT NULL  -- 미알림
-		AND DATE_FORMAT(NOW(), '%Y%m%d' ) > DATE_FORMAT(DATE_ADD(A.REQ_DT, INTERVAL 15 DAY),'%Y%m%d')   -- 요청일기준15일경과
+		AND INFORM_DT IS NULL  -- 미알림
+		<![CDATA[
+		AND DATE_FORMAT(NOW(), '%Y%m%d' ) < DATE_FORMAT(DATE_ADD(REQ_DT, INTERVAL 15 DAY),'%Y%m%d')   -- 요청일기준15일경과
+		]]>
 		ORDER BY  RINBD_INFO_SQ DESC 
 		LIMIT 1
 	</select>
@@ -760,7 +762,7 @@
 		  , UPD_NO
 		  , UPD_DT
 		    )
-		VALUS(
+		VALUES(
 		    NULL
 		  , #{custNo}
 		  , #{goodsCd}

+ 2 - 4
src/main/webapp/WEB-INF/views/web/goods/GoodsDetailFormWeb.html

@@ -180,9 +180,9 @@
 									</div>
 									<div class="form_field">
 										<div  th:each="goodsOption2, status : ${goodsOption2List}">
-											<input type="radio" name="opt"  th:id="${'size'+goodsOption2.optCd}" th:disabled="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}" 
+											<input type="radio" name="opt"  th:id="${goodsOption2.optCd}" th:disabled="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}" 
 													th:attr="addPrice=${goodsOption2.addPrice}, optCd1=${goodsOption2.optCd1}, optCd=${goodsOption2.optCd}">
-											<label th:for="${goodsInfo.goodsCd + '-'+ goodsInfo.colorCd + '-' +goodsOption2.optCd2}"><span th:text="${goodsOption2.optCd2}" th:onclick="jfViewStock(this, [[${goodsInfo.goodsCd}]],[[${goodsOption2.optCd1}]],[[${goodsOption2.optCd2}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]] )">100</span></label>
+											<label th:for="${goodsOption2.optCd}"><span th:text="${goodsOption2.optCd2}" th:onclick="jfViewStock(this, [[${goodsInfo.goodsCd}]],[[${goodsOption2.optCd1}]],[[${goodsOption2.optCd2}]],[[${goodsInfo.minOrdQty}]], [[${goodsInfo.maxOrdQty}]] )">100</span></label>
 										</div>
 									</div>
 								</div>
@@ -718,8 +718,6 @@
 	
 	//사이즈 클릭시
 	var jfViewStock = function(obj, goodsCd, optCd1, optCd2,  minOrdQty, maxOrdQty) {
-		debugger;
-		alert(optCd);
 		var $obj = $(obj);
 
 		var $target = $obj.parent().parent().children('input[name="opt"]');

+ 40 - 3
src/main/webapp/WEB-INF/views/web/goods/GoodsInstockAlarmFormWeb.html

@@ -21,6 +21,10 @@
 		</div>
 		<div class="modal-body">
 			<form name="goodsInstockAlarmForm" id="goodsInstockAlarmForm" method="post">
+			<input type="hidden" name="goodsCd" th:value="${goodsInfo.goodsCd}"/>
+			<input type="hidden" name="optCd1" th:value="${goodsInfo.colorCd}"/>
+			<input type="hidden" name="optCd" />
+			<input type="hidden" name="optCd2" />
 			<div class="pop_cont">
 				<div class="item_blk">
 					<div class="item_prod" th:with="imgGoodsUrl=${@environment.getProperty('upload.goods.view')}, uxImgUrl=${@environment.getProperty('domain.uximage')}">
@@ -46,8 +50,8 @@
 						<div class="form_field">
 							<div th:each="goodsOption2, status : ${goodsOption2List}">
 								<th:block th:if="${goodsOption2.soldoutYn == 'Y' or goodsOption2.stockQty <= 0}" >
-								<input type="radio" name="opt" th:id="${'size'+goodsOption2.optCd}" th:value="${goodsOption2.optCd}">
-								<label th:for="${'size'+goodsOption2.optCd}"><span th:text="${goodsOption2.optCd2}" >90</span></label>
+								<input type="radio" name="opt" th:id="${'alarmSize'+goodsOption2.optCd}" th:value="${goodsOption2.optCd2}" th:attr="optCd=${goodsOption2.optCd}" >
+								<label th:for="${'alarmSize'+goodsOption2.optCd}"><span th:text="${goodsOption2.optCd2}" >90</span></label>
 								</th:block>
 							</div>
 						</div>
@@ -115,9 +119,42 @@
 			</form>
 		</div>
 		<div class="modal-footer">
-			<button type="button"  class="btn btn_dark" onclick=""><span>신청</span></button>
+			<button type="button"  class="btn btn_dark" onclick="jfInstockAlarm();"><span>신청</span></button>
 		</div>
 	</div>
 </div>
 <a href="javascript:void(0);" rel="modal:close" onclick="cfCloseLayer('layer_instock_alarm')" class="close-modal">Close</a>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	
+	
+	var jfInstockAlarm = function(){
+	
+		var optCd2 = "";
+		var optCd = "";
+		$("#goodsInstockAlarmForm input:radio[name=opt]").each(function(){
+			if ($(this).is(':checked')){
+				optCd2 = $(this).val();
+				optCd = $(this).attr('optCd');
+			}
+		});
+
+		if (gagajf.isNull(optCd2)){
+			mcxDialog.alert("사이즈를 선택해주세요.");
+			return false;
+		}
+		$("#goodsInstockAlarmForm input[name=optCd]").val(optCd);
+		$("#goodsInstockAlarmForm input[name=optCd2]").val(optCd2);
+		
+		
+		gagajf.ajaxFormSubmit('/goods/instock/alarm/save'
+				, $('#goodsInstockAlarmForm')
+				, function() {
+					cfCloseLayer('layer_instock_alarm');
+				}
+		);
+	}
+/*]]>*/
+</script>
+
 </html>

+ 6 - 0
src/main/webapp/ux/style24_link.js

@@ -462,6 +462,12 @@ function cfGoodsSizeInfo(goodsCd) {
 * </pre>
 */
 function cfGoodsInstockAlarmInfo(goodsCd, colorCd) {
+
+	if (!cfCheckLogin()) {
+		cfnGoToPage(_PAGE_LOGIN);
+		return false;
+	}
+	
 	var str = '<div class="modal fade pd_pop push_restock_pop" id="layer_instock_alarm" tabindex="-1" role="dialog" aria-labelledby="pushRestockLabel" aria-hidden="true">';
 
 	if ($('#layer_instock_alarm').length == 0) {