Преглед изворни кода

이태영 - 20210119 사은품 프로모션 수정 처리 완료

xodud1202 пре 5 година
родитељ
комит
acd7ffc655

+ 87 - 10
src/main/java/com/style24/admin/biz/dao/TsaMarketingDao.java

@@ -1,11 +1,12 @@
 package com.style24.admin.biz.dao;
 
 import java.util.Collection;
+import java.util.List;
 
+import com.style24.persistence.domain.*;
 import org.springframework.stereotype.Component;
 
 import com.style24.core.support.annotation.ShopDs;
-import com.style24.persistence.domain.FreeGoodsPromotion;
 
 /**
  * 마케팅 Dao
@@ -28,22 +29,58 @@ public interface TsaMarketingDao {
 	Collection<FreeGoodsPromotion> getFreeGoodsPromotionList(FreeGoodsPromotion param);
 
 	/**
-	 * 사은품 프로모션 제휴몰 리스트 조회
+	 * 사은품 프로모션 등록 제휴몰 리스트 조회
 	 * @param param
 	 * @return
 	 * @author xodud1202
 	 * @since 2021. 01. 18
 	 */
-	Collection<FreeGoodsPromotion> getFreegiftExtmallList(FreeGoodsPromotion param);
+	List<Extmall> getFreegiftExtmallList(FreeGoodsPromotion param);
 
 	/**
-	 * 사은품 프로모션 제휴몰 리스트 조회
+	 * 사은품 프로모션 등록 공급업체 리스트 조회
 	 * @param param
 	 * @return
 	 * @author xodud1202
 	 * @since 2021. 01. 18
 	 */
-	Collection<FreeGoodsPromotion> getFreegiftSupplyCompList(FreeGoodsPromotion param);
+	List<SupplyCompany> getFreegiftSupplyCompList(FreeGoodsPromotion param);
+
+	/**
+	 * 사은품 프로모션 등록 브랜드 리스트 조회
+	 * @param param
+	 * @return
+	 * @author xodud1202
+	 * @since 2021. 01. 18
+	 */
+	List<Brand> getFreegiftBrandList(FreeGoodsPromotion param);
+
+	/**
+	 * 사은품 프로모션 등록 적용상품 리스트 조회
+	 * @param param
+	 * @return
+	 * @author xodud1202
+	 * @since 2021. 01. 18
+	 */
+	List<Goods> getFreegiftGoodsList(FreeGoodsPromotion param);
+
+	/**
+	 * 사은품 프로모션 등록 적용상품 리스트 조회
+	 * @param param
+	 * @return
+	 * @author xodud1202
+	 * @since 2021. 01. 18
+	 */
+	List<FreeGoodsPromotion> getFreegiftSectionList(FreeGoodsPromotion param);
+
+	/**
+	 * 사은품 프로모션 등록 적용상품 리스트 조회
+	 * @param param
+	 * @return
+	 * @author xodud1202
+	 * @since 2021. 01. 18
+	 */
+	List<FreeGoodsSectionVal> getFreegiftFreegoodsList(FreeGoodsPromotion param);
 
 	/**
 	 * 사은품 프로모션 마스터 정보 저장
@@ -51,7 +88,7 @@ public interface TsaMarketingDao {
 	 * @author xodud1202
 	 * @since 2021. 01. 15
 	 */
-	void saveFreegoodsPromotionInfo(FreeGoodsPromotion param);
+	void createFreegoodsPromotionInfo(FreeGoodsPromotion param);
 
 	/**
 	 * 사은품 프로모션 제휴몰 정보 저장
@@ -59,7 +96,7 @@ public interface TsaMarketingDao {
 	 * @author xodud1202
 	 * @since 2021. 01. 15
 	 */
-	void saveFreegiftExtmallInfo(FreeGoodsPromotion param);
+	void createFreegiftExtmallInfo(FreeGoodsPromotion param);
 
 	/**
 	 * 사은품 프로모션 대상 정보 저장
@@ -67,7 +104,7 @@ public interface TsaMarketingDao {
 	 * @author xodud1202
 	 * @since 2021. 01. 15
 	 */
-	void saveFreegiftGoodsInfo(FreeGoodsPromotion param);
+	void createFreegiftGoodsInfo(FreeGoodsPromotion param);
 
 	/**
 	 * 사은품 프로모션 사은품 지급 조건 저장
@@ -75,7 +112,7 @@ public interface TsaMarketingDao {
 	 * @author xodud1202
 	 * @since 2021. 01. 15
 	 */
-	void saveFreegiftSectionInfo(FreeGoodsPromotion param);
+	void createFreegiftSectionInfo(FreeGoodsPromotion param);
 
 	/**
 	 * 사은품 프로모션 사은품 저장
@@ -83,7 +120,47 @@ public interface TsaMarketingDao {
 	 * @author xodud1202
 	 * @since 2021. 01. 15
 	 */
-	void savePromotionFreeGoodsInfo(FreeGoodsPromotion param);
+	void createPromotionFreeGoodsInfo(FreeGoodsPromotion param);
+
+	/**
+	 * 사은품 프로모션 마스터 정보 저장
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021. 01. 19
+	 */
+	void updateFreegoodsPromotionInfo(FreeGoodsPromotion param);
+
+	/**
+	 * 사은품 외부몰 정보 삭제
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021. 01. 19
+	 */
+	void deleteFreegiftExtmallInfo(FreeGoodsPromotion param);
+
+	/**
+	 * 사은품 적용 업체/브랜드/상품 제외상품 정보 삭제
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021. 01. 19
+	 */
+	void deleteFreegiftGoodsInfo(FreeGoodsPromotion param);
+
+	/**
+	 * 사은품 적용 조건 정보 삭제
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021. 01. 19
+	 */
+	void deleteFreegiftSectionInfo(FreeGoodsPromotion param);
+
+	/**
+	 * 사은품 프로모션 지급 사은품 정보 삭제
+	 * @param param
+	 * @author xodud1202
+	 * @since 2021. 01. 19
+	 */
+	void deleteFreegiftValInfo(FreeGoodsPromotion param);
 
 	/* // xodud1202 진행 */
 

+ 160 - 125
src/main/java/com/style24/admin/biz/service/TsaMarketingService.java

@@ -4,6 +4,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
+import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.util.GagaStringUtil;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.persistence.domain.Extmall;
@@ -83,164 +84,198 @@ public class TsaMarketingService {
 	}
 
 	/**
-	 * 사은품 프로모션 제휴몰 리스트
+	 * 사은품 프로모션 디테일 조회
 	 * @param param
 	 * @return
 	 * @author xodud1202
 	 * @since 2020. 12. 17
 	 */
-	public Collection<FreeGoodsPromotion> getFreegiftExtmallList(FreeGoodsPromotion param) {
-		return marketingDao.getFreegiftExtmallList(param);
+	public GagaMap getFreegiftDetailInfo(FreeGoodsPromotion param) {
+		GagaMap result = new GagaMap();
+
+		// 사은품 프로모션 마스터 정보 조회
+		List<FreeGoodsPromotion> freeGoodsList = (ArrayList<FreeGoodsPromotion>) getFreeGoodsPromotionList(param);
+		// 상세 조회 내역이 없거나, 1개가 아닐 경우
+		if(freeGoodsList == null || freeGoodsList.size() != 1 ) {
+			return null;
+		}
+		FreeGoodsPromotion freegift = freeGoodsList.get(0);							// 사은품 프로모션 마스터 정보
+		freegift.setExtmallList(getFreegiftExtmallList(param));						// 사은품 프로모션 제휴몰 정보
+		freegift.setBrandList(marketingDao.getFreegiftBrandList(param));			// 사은품 프로모션 브랜드 정보
+		freegift.setSupplyCompList(marketingDao.getFreegiftSupplyCompList(param));	// 사은품 프로모션 공급업체 정보
+		param.setGoodsGb("G800_20");
+		freegift.setApplyGoodsList(marketingDao.getFreegiftGoodsList(param));			// 사은품 프로모션 적용상품 정보
+		param.setGoodsGb("G800_30");
+		freegift.setExceptGoodsList(marketingDao.getFreegiftGoodsList(param));			// 사은품 프로모션 제외상품 정보
+
+		List<FreeGoodsPromotion> freegoodsSectionList = marketingDao.getFreegiftSectionList(param);
+		for(int i = 0 ; i < freegoodsSectionList.size() ; i++) {
+			param.setFreegiftSectionSq(freegoodsSectionList.get(i).getFreegiftSectionSq());
+			if(i == 0) {		// 첫번째 조건
+				freegift.setSectionVal(freegoodsSectionList.get(i).getSectionVal());
+				freegift.setFreeGoods1(marketingDao.getFreegiftFreegoodsList(param));
+			} else {			// 두번째 사은품 조건
+				freegift.setSectionVal2(freegoodsSectionList.get(i).getSectionVal());
+				freegift.setFreeGoods2(marketingDao.getFreegiftFreegoodsList(param));
+			}
+		}
+
+		result.put("freegift", freegift);
+		result.put("param", param);
+		return result;
 	}
 
 	/**
-	 * 사은품 프로모션 리스트
+	 * 사은품 프로모션 제휴몰 리스트
 	 * @param param
 	 * @return
 	 * @author xodud1202
 	 * @since 2020. 12. 17
 	 */
-	public Collection<FreeGoodsPromotion> getFreegiftSupplyCompList(FreeGoodsPromotion param) {
-		// 공급업체 조건 세팅 및 조회
-		param.setGoodsGb("G800_20");		// 적용 상품
-		param.setTargetGb("G260_13");		// 공급처
-		return marketingDao.getFreegiftSupplyCompList(param);
+	public List<Extmall> getFreegiftExtmallList(FreeGoodsPromotion param) {
+		return marketingDao.getFreegiftExtmallList(param);
 	}
 
 	@Transactional("shopTxnManager")
 	public void saveFreegoodsPromotionInfo(FreeGoodsPromotion param) {
 		param.setRegNo(TsaSession.getInfo().getUserNo());
 		param.setUpdNo(TsaSession.getInfo().getUserNo());
+		log.info("CHECK FREEGIFT_SQ >> " + param.getFreegiftSq() + " / " + param.getGbn());
+		if("U".equals(param.getGbn()) && param.getFreegiftSq() != 0) {
+			marketingDao.updateFreegoodsPromotionInfo(param);	// 사은품 프로모션 정보 수정
+			marketingDao.deleteFreegiftExtmallInfo(param);		// 사은품 프로모션 제휴몰 데이터 삭제
+			marketingDao.deleteFreegiftGoodsInfo(param);		// 사은품 프로모션 적용 업체/브랜드/상품 제외상품 정보 삭제
+			marketingDao.deleteFreegiftSectionInfo(param);		// 사은품 프로모션 적용 업체/브랜드/상품 제외상품 정보 삭제
+			marketingDao.deleteFreegiftValInfo(param);			// 사은품 프로모션 적용 업체/브랜드/상품 제외상품 정보 삭제
+		} else {
+			param.setFreegiftStat("G232_10");					// 프로모션 등록이면 대기 상태로 저장
+			marketingDao.createFreegoodsPromotionInfo(param);   // 사은품 프로모션 마스터 정보 저장
+		}
 
-		// 등록 화면이면
-		if("C".equals(param.getGbn())) {
-			param.setFreegiftStat("G232_10");		// 프로모션 등록이면 대기 상태로 저장
-
-			marketingDao.saveFreegoodsPromotionInfo(param);		// 사은품 프로모션 마스터 정보 저장
-
-			// 제휴몰 등록 체크 여부 확인
-			if(param.getExtmallYn() != null && "Y".equals(param.getExtmallYn()) ) {
-				if(param.getExtmallList() != null && param.getExtmallList().length > 0) {
-					FreeGoodsPromotion extmallInfo = new FreeGoodsPromotion();
-					extmallInfo.setFreegiftSq(param.getFreegiftSq());
-					extmallInfo.setRegNo(TsaSession.getInfo().getUserNo());
-					extmallInfo.setUpdNo(TsaSession.getInfo().getUserNo());
-
-					// 제휴몰 리스트만큼 반복
-					for(int i = 0 ; i < param.getExtmallList().length ; i++) {
-						extmallInfo.setExtmallId(param.getExtmallList()[i].getExtmallId());
-						extmallInfo.setVendorId(param.getExtmallList()[i].getVendorId());
-						marketingDao.saveFreegiftExtmallInfo(extmallInfo);		// 제휴몰 리스트 정보 저장
-					}
+		// 제휴몰 등록
+		if(param.getExtmallYn() != null && "Y".equals(param.getExtmallYn()) ) {
+			if(param.getExtmallList() != null && param.getExtmallList().size() > 0) {
+				FreeGoodsPromotion extmallInfo = new FreeGoodsPromotion();
+				extmallInfo.setFreegiftSq(param.getFreegiftSq());
+				extmallInfo.setRegNo(param.getRegNo());
+				extmallInfo.setUpdNo(param.getUpdNo());
+
+				// 제휴몰 리스트만큼 반복
+				for(int i = 0 ; i < param.getExtmallList().size() ; i++) {
+					extmallInfo.setExtmallId(param.getExtmallList().get(i).getExtmallId());
+					extmallInfo.setVendorId(param.getExtmallList().get(i).getVendorId());
+					marketingDao.createFreegiftExtmallInfo(extmallInfo);		// 제휴몰 리스트 정보 저장
 				}
 			}
+		}
 
-			// 공급업체 설정 데이터 저장
-			if(param.getSupplyCompCds() != null && param.getSupplyCompCds().length > 0) {
-				FreeGoodsPromotion supplyComp = new FreeGoodsPromotion();
-				supplyComp.setFreegiftSq(param.getFreegiftSq());
-				supplyComp.setGoodsGb("G800_20");			// 적용 상품 (공급업체, 브랜드, 적용 상품 3가지는 적용 상품 코드로 등록함 G800_20|적용상품, G800_30|제외상품)
-				supplyComp.setTargetGb("G260_13");			// 적용 대상 (G260_10|상품, G260_12|브랜드, G260_13|공급처)
-				supplyComp.setRegNo(TsaSession.getInfo().getUserNo());
-				supplyComp.setUpdNo(TsaSession.getInfo().getUserNo());
-
-				// 공급업체 리스트만큼 반복
-				for(int i = 0 ; i < param.getSupplyCompCds().length ; i++) {
-					supplyComp.setTargetVal(param.getSupplyCompCds()[i]);
-					marketingDao.saveFreegiftGoodsInfo(supplyComp);				// 적용 공급업체 리스트 저장
-				}
+		// 공급업체 등록
+		if(param.getSupplyCompList() != null && param.getSupplyCompList().size() > 0) {
+			FreeGoodsPromotion supplyComp = new FreeGoodsPromotion();
+			supplyComp.setFreegiftSq(param.getFreegiftSq());
+			supplyComp.setGoodsGb("G800_20");			// 적용 상품 (공급업체, 브랜드, 적용 상품 3가지는 적용 상품 코드로 등록함 G800_20|적용상품, G800_30|제외상품)
+			supplyComp.setTargetGb("G260_13");			// 적용 대상 (G260_10|상품, G260_12|브랜드, G260_13|공급처)
+			supplyComp.setRegNo(param.getRegNo());
+			supplyComp.setUpdNo(param.getUpdNo());
+
+			// 공급업체 리스트만큼 반복
+			for(int i = 0 ; i < param.getSupplyCompList().size() ; i++) {
+				supplyComp.setTargetVal(param.getSupplyCompList().get(i).getSupplyCompCd());
+				marketingDao.createFreegiftGoodsInfo(supplyComp);				// 적용 공급업체 리스트 저장
 			}
+		}
 
-			// 브랜드 설정 데이터 저장
-			if(param.getBrandCds() != null && param.getBrandCds().length > 0) {
-				FreeGoodsPromotion brand = new FreeGoodsPromotion();
-				brand.setFreegiftSq(param.getFreegiftSq());
-				brand.setGoodsGb("G800_20");			// 적용 상품 (공급업체, 브랜드, 적용 상품 3가지는 적용 상품 코드로 등록함 G800_20|적용상품, G800_30|제외상품)
-				brand.setTargetGb("G260_12");			// 적용 대상 (G260_10|상품, G260_12|브랜드, G260_13|공급처)
-				brand.setRegNo(TsaSession.getInfo().getUserNo());
-				brand.setUpdNo(TsaSession.getInfo().getUserNo());
-
-				// 브랜드 리스트만큼 반복
-				for(int i = 0 ; i < param.getBrandCds().length ; i++) {
-					brand.setTargetVal(param.getBrandCds()[i]);
-					marketingDao.saveFreegiftGoodsInfo(brand);				// 적용 브랜드 리스트 저장
-				}
+		// 브랜드 설정 데이터 저장
+		if(param.getBrandList() != null && param.getBrandList().size() > 0) {
+			FreeGoodsPromotion brand = new FreeGoodsPromotion();
+			brand.setFreegiftSq(param.getFreegiftSq());
+			brand.setGoodsGb("G800_20");			// 적용 상품 (공급업체, 브랜드, 적용 상품 3가지는 적용 상품 코드로 등록함 G800_20|적용상품, G800_30|제외상품)
+			brand.setTargetGb("G260_12");			// 적용 대상 (G260_10|상품, G260_12|브랜드, G260_13|공급처)
+			brand.setRegNo(param.getRegNo());
+			brand.setUpdNo(param.getUpdNo());
+
+			// 브랜드 리스트만큼 반복
+			for(int i = 0 ; i < param.getBrandList().size() ; i++) {
+				brand.setTargetVal(param.getBrandList().get(i).getBrandCd());
+				marketingDao.createFreegiftGoodsInfo(brand);				// 적용 브랜드 리스트 저장
 			}
+		}
 
-			// 적용 상품 데이터 저장
-			if(param.getApplyGoodsList() != null && param.getApplyGoodsList().length > 0) {
-				FreeGoodsPromotion applyGoods = new FreeGoodsPromotion();
-				applyGoods.setFreegiftSq(param.getFreegiftSq());
-				applyGoods.setGoodsGb("G800_20");			// 적용 상품 (공급업체, 브랜드, 적용 상품 3가지는 적용 상품 코드로 등록함 G800_20|적용상품, G800_30|제외상품)
-				applyGoods.setTargetGb("G260_10");			// 적용 대상 (G260_10|상품, G260_12|브랜드, G260_13|공급처)
-				applyGoods.setRegNo(TsaSession.getInfo().getUserNo());
-				applyGoods.setUpdNo(TsaSession.getInfo().getUserNo());
-
-				// 브랜드 리스트만큼 반복
-				for(int i = 0 ; i < param.getApplyGoodsList().length ; i++) {
-					applyGoods.setTargetVal(param.getApplyGoodsList()[i].getGoodsCd());
-					marketingDao.saveFreegiftGoodsInfo(applyGoods);			// 적용 상품 리스트 저장
-				}
+		// 적용 상품 데이터 저장
+		if(param.getApplyGoodsList() != null && param.getApplyGoodsList().size() > 0) {
+			FreeGoodsPromotion applyGoods = new FreeGoodsPromotion();
+			applyGoods.setFreegiftSq(param.getFreegiftSq());
+			applyGoods.setGoodsGb("G800_20");			// 적용 상품 (공급업체, 브랜드, 적용 상품 3가지는 적용 상품 코드로 등록함 G800_20|적용상품, G800_30|제외상품)
+			applyGoods.setTargetGb("G260_10");			// 적용 대상 (G260_10|상품, G260_12|브랜드, G260_13|공급처)
+			applyGoods.setRegNo(param.getRegNo());
+			applyGoods.setUpdNo(param.getUpdNo());
+
+			// 브랜드 리스트만큼 반복
+			for(int i = 0 ; i < param.getApplyGoodsList().size() ; i++) {
+				applyGoods.setTargetVal(param.getApplyGoodsList().get(i).getGoodsCd());
+				marketingDao.createFreegiftGoodsInfo(applyGoods);			// 적용 상품 리스트 저장
 			}
+		}
 
-			// 제외 상품 데이터 저장
-			if(param.getExceptGoodsList() != null && param.getExceptGoodsList().length > 0) {
-				FreeGoodsPromotion exceptGoods = new FreeGoodsPromotion();
-				exceptGoods.setFreegiftSq(param.getFreegiftSq());
-				exceptGoods.setGoodsGb("G800_30");			// 적용 상품 (공급업체, 브랜드, 적용 상품 3가지는 적용 상품 코드로 등록함 G800_20|적용상품, G800_30|제외상품)
-				exceptGoods.setTargetGb("G260_10");			// 적용 대상 (G260_10|상품, G260_12|브랜드, G260_13|공급처)
-				exceptGoods.setRegNo(TsaSession.getInfo().getUserNo());
-				exceptGoods.setUpdNo(TsaSession.getInfo().getUserNo());
-
-				// 적용 상품 리스트만큼 반복
-				for(int i = 0 ; i < param.getExceptGoodsList().length ; i++) {
-					exceptGoods.setTargetVal(param.getExceptGoodsList()[i].getGoodsCd());
-					marketingDao.saveFreegiftGoodsInfo(exceptGoods);			// 적용 상품 리스트 저장
-				}
+		// 제외 상품 데이터 저장
+		if(param.getExceptGoodsList() != null && param.getExceptGoodsList().size() > 0) {
+			FreeGoodsPromotion exceptGoods = new FreeGoodsPromotion();
+			exceptGoods.setFreegiftSq(param.getFreegiftSq());
+			exceptGoods.setGoodsGb("G800_30");			// 적용 상품 (공급업체, 브랜드, 적용 상품 3가지는 적용 상품 코드로 등록함 G800_20|적용상품, G800_30|제외상품)
+			exceptGoods.setTargetGb("G260_10");			// 적용 대상 (G260_10|상품, G260_12|브랜드, G260_13|공급처)
+			exceptGoods.setRegNo(param.getRegNo());
+			exceptGoods.setUpdNo(param.getUpdNo());
+
+			// 적용 상품 리스트만큼 반복
+			for(int i = 0 ; i < param.getExceptGoodsList().size() ; i++) {
+				exceptGoods.setTargetVal(param.getExceptGoodsList().get(i).getGoodsCd());
+				marketingDao.createFreegiftGoodsInfo(exceptGoods);			// 적용 상품 리스트 저장
 			}
+		}
 
-			// 사은품 조건1 사은품 존재 여부 및 구매금액 제한 조건 체크
-			if(param.getFreeGoods1() != null && param.getFreeGoods1().length > 0 && param.getSectionVal() > 0) {
-				// 사은품 지급조건 Section 저장
-				FreeGoodsPromotion freegoodsGiveInfo = new FreeGoodsPromotion();
-				freegoodsGiveInfo.setFreegiftSq(param.getFreegiftSq());
-				freegoodsGiveInfo.setSectionGb("G810_11");				// 사은품 프로모션 구간 설정 구분값 (G810_10|수량, G810_11|금액)  >>  사은품 프로모션 기획서상 금액 구분만 존재함.
-				freegoodsGiveInfo.setSectionVal(param.getSectionVal());	// 사은품조건 section1 구매금액 조건
-				freegoodsGiveInfo.setRegNo(TsaSession.getInfo().getUserNo());
-				freegoodsGiveInfo.setUpdNo(TsaSession.getInfo().getUserNo());
-				marketingDao.saveFreegiftSectionInfo(freegoodsGiveInfo);	// 사은품 지급 조건 영역 저장
-
-				// 지급 사은품 리스트1 반복
-				for (int i = 0 ; i < param.getFreeGoods1().length ; i++) {
-					freegoodsGiveInfo.setItemCd(param.getFreeGoods1()[i].getProductNo() + "");		// 사은품 번호
-					freegoodsGiveInfo.setUsePoint(param.getFreeGoods1()[i].getUsePoint());			// 사은품 포인트액
-					freegoodsGiveInfo.setItemQty(param.getFreeGoods1()[i].getItemQty());			// 주문시 지급 수량
-					freegoodsGiveInfo.setLimitQty(param.getFreeGoods1()[i].getLimitQty());			// 한정 수량
-
-					marketingDao.savePromotionFreeGoodsInfo(freegoodsGiveInfo);	// 사은품 지급 상품 영역 저장
-				}
+		// 사은품 조건1 사은품 존재 여부 및 구매금액 제한 조건 체크
+		if(param.getFreeGoods1() != null && param.getFreeGoods1().size() > 0 && param.getSectionVal() > 0) {
+			// 사은품 지급조건 Section 저장
+			FreeGoodsPromotion freegoodsGiveInfo = new FreeGoodsPromotion();
+			freegoodsGiveInfo.setFreegiftSq(param.getFreegiftSq());
+			freegoodsGiveInfo.setSectionGb("G810_11");				// 사은품 프로모션 구간 설정 구분값 (G810_10|수량, G810_11|금액)  >>  사은품 프로모션 기획서상 금액 구분만 존재함.
+			freegoodsGiveInfo.setSectionVal(param.getSectionVal());	// 사은품조건 section1 구매금액 조건
+			freegoodsGiveInfo.setRegNo(param.getRegNo());
+			freegoodsGiveInfo.setUpdNo(param.getUpdNo());
+			marketingDao.createFreegiftSectionInfo(freegoodsGiveInfo);	// 사은품 지급 조건 영역 저장
+
+			// 지급 사은품 리스트1 반복
+			for (int i = 0 ; i < param.getFreeGoods1().size() ; i++) {
+				freegoodsGiveInfo.setItemCd(param.getFreeGoods1().get(i).getProductNo() + "");		// 사은품 번호
+				freegoodsGiveInfo.setUsePoint(param.getFreeGoods1().get(i).getUsePoint());			// 사은품 포인트액
+				freegoodsGiveInfo.setItemQty(param.getFreeGoods1().get(i).getItemQty());			// 주문시 지급 수량
+				freegoodsGiveInfo.setLimitQty(param.getFreeGoods1().get(i).getLimitQty());			// 한정 수량
+				freegoodsGiveInfo.setLeftQty(param.getFreeGoods1().get(i).getLimitQty());			// 잔여 수량
+
+				marketingDao.createPromotionFreeGoodsInfo(freegoodsGiveInfo);	// 사은품 지급 상품 영역 저장
 			}
+		}
 
-			// 사은품 조건2 사은품 존재 여부 및 구매금액 제한 조건 체크
-			if(param.getFreeGoods2() != null && param.getFreeGoods2().length > 0 && param.getSectionVal2() > 0) {
-				// 사은품 지급조건 Section 저장
-				FreeGoodsPromotion freegoodsGiveInfo = new FreeGoodsPromotion();
-				freegoodsGiveInfo.setFreegiftSq(param.getFreegiftSq());
-				freegoodsGiveInfo.setSectionGb("G810_11");					// 사은품 프로모션 구간 설정 구분값 (G810_10|수량, G810_11|금액)  >>  사은품 프로모션 기획서상 금액 구분만 존재함.
-				freegoodsGiveInfo.setSectionVal(param.getSectionVal2());	// 사은품조건 section2 구매금액 조건
-				freegoodsGiveInfo.setRegNo(TsaSession.getInfo().getUserNo());
-				freegoodsGiveInfo.setUpdNo(TsaSession.getInfo().getUserNo());
-				marketingDao.saveFreegiftSectionInfo(freegoodsGiveInfo);	// 사은품 지급 조건 영역 저장
-
-				// 지급 사은품 리스트2 반복
-				for (int i = 0 ; i < param.getFreeGoods2().length ; i++) {
-					freegoodsGiveInfo.setItemCd(param.getFreeGoods2()[i].getProductNo() + "");		// 사은품 번호
-					freegoodsGiveInfo.setUsePoint(param.getFreeGoods2()[i].getUsePoint());			// 사은품 포인트액
-					freegoodsGiveInfo.setItemQty(param.getFreeGoods2()[i].getItemQty());			// 주문시 지급 수량
-					freegoodsGiveInfo.setLimitQty(param.getFreeGoods2()[i].getLimitQty());			// 한정 수량
-
-					marketingDao.savePromotionFreeGoodsInfo(freegoodsGiveInfo);	// 사은품 지급 상품 영역 저장
-				}
+		// 사은품 조건2 사은품 존재 여부 및 구매금액 제한 조건 체크
+		if(param.getFreeGoods2() != null && param.getFreeGoods2().size() > 0 && param.getSectionVal2() > 0) {
+			// 사은품 지급조건 Section 저장
+			FreeGoodsPromotion freegoodsGiveInfo = new FreeGoodsPromotion();
+			freegoodsGiveInfo.setFreegiftSq(param.getFreegiftSq());
+			freegoodsGiveInfo.setSectionGb("G810_11");					// 사은품 프로모션 구간 설정 구분값 (G810_10|수량, G810_11|금액)  >>  사은품 프로모션 기획서상 금액 구분만 존재함.
+			freegoodsGiveInfo.setSectionVal(param.getSectionVal2());	// 사은품조건 section2 구매금액 조건
+			freegoodsGiveInfo.setRegNo(param.getRegNo());
+			freegoodsGiveInfo.setUpdNo(param.getUpdNo());
+			marketingDao.createFreegiftSectionInfo(freegoodsGiveInfo);	// 사은품 지급 조건 영역 저장
+
+			// 지급 사은품 리스트2 반복
+			for (int i = 0 ; i < param.getFreeGoods2().size() ; i++) {
+				freegoodsGiveInfo.setItemCd(param.getFreeGoods2().get(i).getProductNo() + "");		// 사은품 번호
+				freegoodsGiveInfo.setUsePoint(param.getFreeGoods2().get(i).getUsePoint());			// 사은품 포인트액
+				freegoodsGiveInfo.setItemQty(param.getFreeGoods2().get(i).getItemQty());			// 주문시 지급 수량
+				freegoodsGiveInfo.setLimitQty(param.getFreeGoods2().get(i).getLimitQty());			// 한정 수량
+				freegoodsGiveInfo.setLeftQty(param.getFreeGoods2().get(i).getLimitQty());			// 잔여 수량
+
+				marketingDao.createPromotionFreeGoodsInfo(freegoodsGiveInfo);	// 사은품 지급 상품 영역 저장
 			}
 		}
 	}

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

@@ -86,10 +86,6 @@ public class TsaMarketingController extends TsaBaseController {
 	@GetMapping("/freeGoods/promotion/form")
 	public ModelAndView freeGoodsPromotionForm() {
 		ModelAndView mav = new ModelAndView();
-
-		// 프로모션 상태
-		mav.addObject("freegiftStatList", rendererService.getCommonCodeList("G232", "Y"));
-
 		mav.setViewName("marketing/FreeGoodsPromotionForm");
 		return mav;
 	}
@@ -146,20 +142,7 @@ public class TsaMarketingController extends TsaBaseController {
 	@PostMapping("/freeGoodsPromotion/detail")
 	@ResponseBody
 	public GagaMap getFreeGoodsPromotionDetail(FreeGoodsPromotion param) {
-		GagaMap result = new GagaMap();
-
-		// 사은품 프로모션 마스터 정보 조회
-		List<FreeGoodsPromotion> freeGoodsList = (ArrayList<FreeGoodsPromotion>)marketingService.getFreeGoodsPromotionList(param);
-		// 상세 조회 내역이 없거나, 1개가 아닐 경우
-		if(freeGoodsList == null || freeGoodsList.size() != 1 ) {
-			return null;
-		}
-
-		result.set("freegift", freeGoodsList.get(0));												// 사은품 프로모션 마스터 정보
-		result.set("freegiftExtmallList", marketingService.getFreegiftExtmallList(param));			// 사은품 프로모션 제휴몰 목록 조회
-		result.set("freegiftSupplyCompList", marketingService.getFreegiftSupplyCompList(param));	// 사은품 프로모션 공급업체 목록 조회
-
-		return result;
+		return marketingService.getFreegiftDetailInfo(param);
 	}
 
 	/**

+ 26 - 5
src/main/java/com/style24/persistence/domain/FreeGoodsPromotion.java

@@ -6,6 +6,7 @@ import com.style24.persistence.TscPageRequest;
 import lombok.Data;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -25,6 +26,7 @@ public class FreeGoodsPromotion extends TscBaseDomain {
 	private String freegiftEddt;		// 프로모션 종료일
 	private String selfYn;				// 자사몰 적용 여부
 	private String allYn;				// 모두 지급 구분 (모두지급 일때는 포인트 금액을 설정 할 수 없음 Y(모두지급), N(선택사은품))
+	private String freegiftStatNm;		// 프로모션 상태명
 
 	// 사은품 프로모션 섹션정보
 	private int freegiftSectionSq;		// 사은품 지급 조건 section 번호
@@ -39,10 +41,26 @@ public class FreeGoodsPromotion extends TscBaseDomain {
 	private String vendorId;			// 벤더ID
 	private String extmallNm;			// 외부몰명
 
+	// 사은품 프로모션 공급업체
+	private String supplyCompCd;		// 업체코드
+	private String supplyCompNm;		// 업체명
+
+	// 사은품 프로모션 브랜드
+	private String brandCd;				// 브랜드코드
+	private String brandKnm;			// 브랜드국문명
+
 	// 사은품 프로모션 적용 및 제외 상품
 	private String goodsGb;				// 상품 구분 (G800_10|기본상품, G800_20|적용상품, G800_30|제외상품, G800_40|ALL)
+	private String goodsCd;				// 상품 코드
+	private String goodsNm;				// 상품명
+	private String goodsStat;			// 상품상태
 	private String targetGb;			// 적용 구분 (G260_10|상품, G260_12|브랜드, G260_13|공급처)
 	private String targetVal;			// 적용 값 (브랜드코드, 상품코드, 공급처코드)
+	private int listPrice;
+	private int currPrice;
+
+
+	// 사은품 프로모션 사은품 조건
 	private String itemCd;				// 사은품 번호
 	private int usePoint;				// 포인트액
 	private int limitQty;				// 한정수량
@@ -51,11 +69,14 @@ public class FreeGoodsPromotion extends TscBaseDomain {
 
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)	private String[] supplyCompCds;				// 제휴몰 번호 리스트
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)	private String[] brandCds;					// 제휴몰 번호 리스트
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) private Extmall[] extmallList;				// 제휴몰 리스트
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) private Goods[] applyGoodsList;				// 적용 상품 리스트
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) private Goods[] exceptGoodsList;			// 제외 상품 리스트
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) private FreeGoodsSectionVal[] freeGoods1;	// 사은품 조건1 리스트
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) private FreeGoodsSectionVal[] freeGoods2;	// 사은품 조건2 리스트
+
+	List<SupplyCompany> supplyCompList;
+	List<Brand> brandList;
+	List<Extmall> extmallList;
+	List<Goods> applyGoodsList;
+	List<Goods> exceptGoodsList;
+	List<FreeGoodsSectionVal> freeGoods1;
+	List<FreeGoodsSectionVal> freeGoods2;
 
 	// 기타 조건
 	private String promotionGubun;		// 프로모션 조회 검색 구분

+ 2 - 1
src/main/java/com/style24/persistence/domain/FreeGoodsSectionVal.java

@@ -19,11 +19,12 @@ public class FreeGoodsSectionVal {
 	private int itemQty;				// 지급 수량
 	private int limitQty;				// 한정 수량
 	private int leftQty;				// 잔여 수량
-	private int productNo;			// 사은품 코드
+	private int productNo;				// 사은품 코드
 	private String sectionGb;			// 사은품 조건 구분(G810_10|수량, G810_11|금액) > 수량은 기획서 상 조건 없음.
 	private String sectionVal;			// 구간 설정 값 | 구간 할인 시작 (수량이상, 금액이상)
 	private String productCd;			// 사은품 코드
 	private String itemCd;				// 사은품ID
 	private String itemOptCd1;			// ??
 	private String itemOptCd2;			// ??
+	private String goodsNm;				// 사은품명
 }

+ 179 - 27
src/main/java/com/style24/persistence/mybatis/shop/TsaMarketing.xml

@@ -9,6 +9,7 @@
 		SELECT FG.FREEGIFT_SQ
 			 , FG.FREEGIFT_NM
 			 , FG.FREEGIFT_STAT
+		     , (SELECT CD_NM FROM TB_COMMON_CODE WHERE CD = FG.FREEGIFT_STAT) AS FREEGIFT_STAT_NM
 		     , FG.SELF_YN
 			 , DATE_FORMAT(FG.FREEGIFT_STDT, '%Y.%m.%d') AS FREEGIFT_STDT
 			 , DATE_FORMAT(FG.FREEGIFT_EDDT, '%Y.%m.%d') AS FREEGIFT_EDDT
@@ -33,7 +34,7 @@
 	</select>
 
 	<!-- 사은품 프로모션 제휴몰 리스트 조회 -->
-	<select id="getFreegiftExtmallList" parameterType="FreeGoodsPromotion" resultType="FreeGoodsPromotion">
+	<select id="getFreegiftExtmallList" parameterType="FreeGoodsPromotion" resultType="Extmall">
 		/* TsaMarketing.getFreegiftExtmallList : 사은품 프로모션 제휴몰 리스트 조회 */
 		SELECT FE.FREEGIFT_EXTMALL_SQ
 		     , FE.FREEGIFT_SQ
@@ -56,27 +57,118 @@
 
 	<!-- 사은품 프로모션 공급업체 리스트 조회 -->
 	<select id="getFreegiftSupplyCompList" parameterType="FreeGoodsPromotion" resultType="FreeGoodsPromotion">
-		/* TsaMarketing.getFreegiftExtmallList : 사은품 프로모션 공급업체 리스트 조회 */
-		SELECT FE.FREEGIFT_EXTMALL_SQ
-		, FE.FREEGIFT_SQ
-		, FE.EXTMALL_ID
-		, FE.VENDOR_ID
-		, FE.DEL_YN
-		, (SELECT USER_NM FROM TB_USER WHERE USER_NO = FE.REG_NO) AS REG_NM
-		, DATE_FORMAT(FE.REG_DT, '%Y.%m.%d %H:%i:%S') AS REG_DT
-		, (SELECT USER_NM FROM TB_USER WHERE USER_NO = FE.UPD_NO) AS UPD_NM
-		, DATE_FORMAT(FE.UPD_DT, '%Y.%m.%d %H:%i:%S') AS UPD_DT
-		FROM TB_FREEGIFT_GOODS FE
-		WHERE 1=1
-		<if test="freegiftSq != null and freegiftSq != ''">
-			AND FE.FREEGIFT_SQ = #{freegiftSq}
-		</if>
-		ORDER BY EXTMALL_ID ASC
+		/* TsaMarketing.getFreegiftSupplyCompList : 사은품 프로모션 공급업체 리스트 조회 */
+		SELECT FG.FREEGIFT_GOODS_SQ
+		     , FG.FREEGIFT_SQ
+		     , FG.GOODS_GB
+		     , FG.TARGET_GB
+		     , FG.TARGET_VAL
+		     , SC.SUPPLY_COMP_CD
+		     , SC.SUPPLY_COMP_NM
+			 , (SELECT USER_NM FROM TB_USER WHERE USER_NO = FG.REG_NO) AS REG_NM
+			 , DATE_FORMAT(FG.REG_DT, '%Y.%m.%d %H:%i:%S') AS REG_DT
+			 , (SELECT USER_NM FROM TB_USER WHERE USER_NO = FG.UPD_NO) AS UPD_NM
+			 , DATE_FORMAT(FG.UPD_DT, '%Y.%m.%d %H:%i:%S') AS UPD_DT
+		  FROM TB_FREEGIFT_GOODS FG
+		 INNER JOIN TB_SUPPLY_COMPANY SC
+		    ON SC.SUPPLY_COMP_CD = FG.TARGET_VAL
+		 WHERE 1=1
+		   AND DEL_YN = 'N'
+		   AND FG.GOODS_GB = 'G800_20'			/* G800_10|기본상품, G800_20|적용상품, G800_30|제외상품, G800_40|ALL */
+		   AND FG.TARGET_GB = 'G260_13'			/* G260_10|상품, G260_12|브랜드, G260_13|공급처 */
+		   AND FG.FREEGIFT_SQ =	#{freegiftSq}		/* 사은품 프로모션 번호 */
+		ORDER BY TARGET_VAL ASC
+	</select>
+
+	<!-- 사은품 프로모션 브랜드 리스트 조회 -->
+	<select id="getFreegiftBrandList" parameterType="FreeGoodsPromotion" resultType="FreeGoodsPromotion">
+		/* TsaMarketing.getFreegiftBrandList : 사은품 프로모션 브랜드 리스트 조회 */
+		SELECT FG.FREEGIFT_GOODS_SQ
+			 , FG.FREEGIFT_SQ
+			 , FG.GOODS_GB
+			 , FG.TARGET_GB
+			 , FG.TARGET_VAL
+		     , B.BRAND_CD
+		     , B.BRAND_KNM
+		     , B.BRAND_ENM
+			 , (SELECT USER_NM FROM TB_USER WHERE USER_NO = FG.REG_NO) AS REG_NM
+			 , DATE_FORMAT(FG.REG_DT, '%Y.%m.%d %H:%i:%S') AS REG_DT
+			 , (SELECT USER_NM FROM TB_USER WHERE USER_NO = FG.UPD_NO) AS UPD_NM
+			 , DATE_FORMAT(FG.UPD_DT, '%Y.%m.%d %H:%i:%S') AS UPD_DT
+		 FROM TB_FREEGIFT_GOODS FG
+	    INNER JOIN TB_BRAND B
+		   ON B.BRAND_CD = FG.TARGET_VAL
+	    WHERE 1=1
+		  AND DEL_YN = 'N'
+		  AND FG.GOODS_GB =	'G800_20'			/* G800_10|기본상품, G800_20|적용상품, G800_30|제외상품, G800_40|ALL */
+		  AND FG.TARGET_GB = 'G260_12'			/* G260_10|상품, G260_12|브랜드, G260_13|공급처 */
+		  AND FG.FREEGIFT_SQ =	#{freegiftSq}	/* 사은품 프로모션 번호 */
+	    ORDER BY TARGET_VAL ASC
+	</select>
+
+	<!-- 사은품 프로모션 상품 리스트 조회 -->
+	<select id="getFreegiftGoodsList" parameterType="FreeGoodsPromotion" resultType="FreeGoodsPromotion">
+		/* TsaMarketing.getFreegiftApplyGoodsList : 사은품 프로모션 적용 상품 리스트 조회 */
+		SELECT FG.FREEGIFT_GOODS_SQ
+			 , FG.FREEGIFT_SQ
+			 , FG.GOODS_GB
+			 , FG.TARGET_GB
+			 , FG.TARGET_VAL
+			 , G.GOODS_CD
+		     , (SELECT BRAND_ENM FROM TB_BRAND WHERE BRAND_CD = G.BRAND_CD) AS BRAND_ENM
+		     , G.BRAND_CD
+		     , G.GOODS_NM
+		     , G.GOODS_STAT
+		     , G.LIST_PRICE
+		     , G.CURR_PRICE
+			 , (SELECT USER_NM FROM TB_USER WHERE USER_NO = FG.REG_NO) AS REG_NM
+			 , DATE_FORMAT(FG.REG_DT, '%Y.%m.%d %H:%i:%S') AS REG_DT
+			 , (SELECT USER_NM FROM TB_USER WHERE USER_NO = FG.UPD_NO) AS UPD_NM
+			 , DATE_FORMAT(FG.UPD_DT, '%Y.%m.%d %H:%i:%S') AS UPD_DT
+		FROM TB_FREEGIFT_GOODS FG
+		INNER JOIN TB_GOODS G
+		ON G.GOODS_CD = FG.TARGET_VAL
+		WHERE DEL_YN = 'N'
+		AND FG.TARGET_GB = 'G260_10'		/* G260_10|상품, G260_12|브랜드, G260_13|공급처 */
+		AND FG.GOODS_GB = #{goodsGb}		/* G800_10|기본상품, G800_20|적용상품, G800_30|제외상품, G800_40|ALL */
+		AND FG.FREEGIFT_SQ = #{freegiftSq}	/* 사은품 프로모션 번호 */
+		ORDER BY TARGET_VAL ASC
+	</select>
+
+	<!-- 사은품 프로모션 섹션정보 리스트 조회 -->
+	<select id="getFreegiftSectionList" parameterType="FreeGoodsPromotion" resultType="FreeGoodsPromotion">
+		/* TsaMarketing.getFreegiftSectionList : 사은품 프로모션 섹션정보 리스트 조회 */
+		SELECT FC.FREEGIFT_SECTION_SQ
+		     , FC.SECTION_GB
+		     , FC.SECTION_VAL
+		FROM   TB_FREEGIFT_SECTION FC
+		WHERE  FC.DEL_YN = 'N'
+		AND    FC.FREEGIFT_SQ = #{freegiftSq}	/* 사은품 프로모션 번호 */
+		ORDER BY FC.FREEGIFT_SECTION_SQ ASC
+	</select>
+
+	<!-- 사은품 프로모션 섹션정보 리스트 조회 -->
+	<select id="getFreegiftFreegoodsList" parameterType="FreeGoodsPromotion" resultType="FreeGoodsSectionVal">
+		/* TsaMarketing.getFreegiftFreegoodsList : 사은품 프로모션 등록 사은품 리스트 조회 */
+		SELECT FV.FREEGIFT_SECTION_SQ
+		     , FV.USE_POINT
+		     , FV.ITEM_QTY
+		     , FV.LIMIT_QTY
+		     , FV.ITEM_CD
+			 , FG.PRODUCT_NO
+			 , FG.GOODS_NM
+		FROM TB_FREEGIFT_VAL FV
+		INNER JOIN TB_FREE_GOODS FG
+		ON FV.ITEM_CD = FG.PRODUCT_NO
+		WHERE FV.DEL_YN = 'N'
+		AND FV.FREEGIFT_SQ = #{freegiftSq}					/* 사은품 프로모션 번호 */
+		AND FV.FREEGIFT_SECTION_SQ = #{freegiftSectionSq}	/* 사은품 프로모션 섹션 번호 */
+		ORDER BY FV.FREEGIFT_SECTION_SQ, FV.ITEM_CD
 	</select>
 
 	<!-- 사은품 프로모션 마스터 정보 저장 -->
-	<insert id="saveFreegoodsPromotionInfo" parameterType="FreeGoodsPromotion">
-		/* TsaMarketing.saveFreegoodsPromotionInfo : 사은품 프로모션 마스터 정보 저장 */
+	<insert id="createFreegoodsPromotionInfo" parameterType="FreeGoodsPromotion">
+		/* TsaMarketing.createFreegoodsPromotionInfo : 사은품 프로모션 마스터 정보 저장 */
 		<selectKey keyProperty="freegiftSq" resultType="int" order="AFTER">
 			SELECT LAST_INSERT_ID()
 		</selectKey>
@@ -106,8 +198,8 @@
 	</insert>
 
 	<!-- 사은품 프로모션 제휴몰 정보 저장 -->
-	<insert id="saveFreegiftExtmallInfo" parameterType="FreeGoodsPromotion">
-		/* TsaMarketing.saveFreegiftExtmallInfo : 사은품 프로모션 마스터 정보 저장 */
+	<insert id="createFreegiftExtmallInfo" parameterType="FreeGoodsPromotion">
+		/* TsaMarketing.createFreegiftExtmallInfo : 사은품 프로모션 제휴몰 정보 저장 */
 		INSERT INTO TB_FREEGIFT_EXTMALL (
 			  FREEGIFT_SQ
 			, EXTMALL_ID
@@ -128,8 +220,8 @@
 	</insert>
 
 	<!-- 사은품 프로모션 대상 정보 저장 -->
-	<insert id="saveFreegiftGoodsInfo" parameterType="FreeGoodsPromotion">
-		/* TsaMarketing.saveFreegiftGoodsInfo : 사은품 프로모션 대상 정보 저장 */
+	<insert id="createFreegiftGoodsInfo" parameterType="FreeGoodsPromotion">
+		/* TsaMarketing.createFreegiftGoodsInfo : 사은품 프로모션 대상 정보 저장 */
 		INSERT INTO TB_FREEGIFT_GOODS (
 			  FREEGIFT_SQ
 			, GOODS_GB
@@ -152,8 +244,8 @@
 	</insert>
 
 	<!-- 사은품 지급 조건 -->
-	<insert id="saveFreegiftSectionInfo" parameterType="FreeGoodsPromotion">
-		/* TsaMarketing.saveFreegiftSectionInfo : 사은품 지급 조건 저장 */
+	<insert id="createFreegiftSectionInfo" parameterType="FreeGoodsPromotion">
+		/* TsaMarketing.createFreegiftSectionInfo : 사은품 지급 조건 저장 */
 		<selectKey keyProperty="freegiftSectionSq" resultType="int" order="AFTER">
 			SELECT LAST_INSERT_ID()
 		</selectKey>
@@ -177,8 +269,8 @@
 	</insert>
 
 	<!-- 사은품 프로모션 지급 사은품 저장 -->
-	<insert id="savePromotionFreeGoodsInfo" parameterType="FreeGoodsPromotion">
-		/* TsaMarketing.savePromotionFreeGoodsInfo : 사은품 프로모션 지급 사은품 저장 */
+	<insert id="createPromotionFreeGoodsInfo" parameterType="FreeGoodsPromotion">
+		/* TsaMarketing.createPromotionFreeGoodsInfo : 사은품 프로모션 지급 사은품 저장 */
 		INSERT INTO TB_FREEGIFT_VAL (
 			  FREEGIFT_SQ
 			, FREEGIFT_SECTION_SQ
@@ -186,6 +278,7 @@
 			, ITEM_QTY
 			, ITEM_CD
 			, LIMIT_QTY
+			, LEFT_QTY
 			, REG_NO
 			, REG_DT
 			, UPD_NO
@@ -197,6 +290,7 @@
 			, #{itemQty}
 			, #{itemCd}
 			, #{limitQty}
+			, #{leftQty}
 			, #{regNo}
 			, CURRENT_TIMESTAMP
 			, #{updNo}
@@ -204,6 +298,64 @@
 		)
 	</insert>
 
+	<!-- 사은품 프로모션 마스터 정보 수정 -->
+	<update id="updateFreegoodsPromotionInfo" parameterType="FreeGoodsPromotion">
+		/* TsaMarketing.updateFreegoodsPromotionInfo : 사은품 프로모션 마스터 정보 수정 */
+		UPDATE TB_FREEGIFT
+        SET FREEGIFT_STDT = STR_TO_DATE(#{freegiftStdt},'%Y%m%d%H%i%S')
+          , FREEGIFT_EDDT = STR_TO_DATE(CONCAT(#{freegiftEddt}, '235959'),'%Y%m%d%H%i%S')
+          , FREEGIFT_NM = #{freegiftNm}
+		  , SELF_YN = #{selfYn}
+		  , ALL_YN = #{allYn}
+		  , UPD_NO = #{updNo}
+		  , UPD_DT = CURRENT_TIMESTAMP
+		WHERE FREEGIFT_SQ = #{freegiftSq}
+	</update>
+
+	<!-- 사은품 프로모션 제휴몰 정보 삭제  -->
+	<update id="deleteFreegiftExtmallInfo" parameterType="FreeGoodsPromotion">
+		/* TsaMarketing.deleteFreegiftExtmallInfo : 사은품 프로모션 제휴몰 정보 삭제 */
+		UPDATE TB_FREEGIFT_EXTMALL SET
+			  DEL_YN = 'Y'
+			, UPD_NO = #{updNo}
+			, UPD_DT = CURRENT_TIMESTAMP
+		WHERE FREEGIFT_SQ = #{freegiftSq}
+		  AND DEL_YN = 'N'
+	</update>
+
+	<!-- 사은품 적용 업체/브랜드/상품 제외상품 정보 삭제  -->
+	<delete id="deleteFreegiftGoodsInfo" parameterType="FreeGoodsPromotion">
+		/* TsaMarketing.deleteFreegiftSupplyCompInfo : 사은품 적용 업체/브랜드/상품 제외상품 정보 삭제 */
+		UPDATE TB_FREEGIFT_GOODS SET
+			 DEL_YN = 'Y'
+		   , UPD_NO = #{updNo}
+		   , UPD_DT = CURRENT_TIMESTAMP
+		WHERE FREEGIFT_SQ = #{freegiftSq}
+		  AND DEL_YN = 'N'
+	</delete>
+
+	<!-- 사은품 적용 조건 정보 삭제  -->
+	<delete id="deleteFreegiftSectionInfo" parameterType="FreeGoodsPromotion">
+		/* TsaMarketing.deleteFreegiftSectionInfo : 사은품 적용 조건 정보 삭제 */
+		UPDATE TB_FREEGIFT_SECTION SET
+			DEL_YN = 'Y'
+		  , UPD_NO = #{updNo}
+		  , UPD_DT = CURRENT_TIMESTAMP
+		WHERE FREEGIFT_SQ = #{freegiftSq}
+		  AND DEL_YN = 'N'
+	</delete>
+
+	<!-- 사은품 프로모션 지급 사은품 정보 삭제 -->
+	<delete id="deleteFreegiftValInfo" parameterType="FreeGoodsPromotion">
+		/* TsaMarketing.deleteFreegiftValInfo : 사은품 프로모션 지급 사은품 정보 삭제 */
+		UPDATE TB_FREEGIFT_VAL SET
+			DEL_YN = 'Y'
+		  , UPD_NO = #{updNo}
+		  , UPD_DT = CURRENT_TIMESTAMP
+		WHERE FREEGIFT_SQ = #{freegiftSq}
+		  AND DEL_YN = 'N'
+	</delete>
+	
 	<!-- // xodud1202 진행 -->
 
 </mapper>

+ 3 - 6
src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionForm.html

@@ -97,7 +97,7 @@
 <script type="text/javascript" src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 /*<![CDATA[*/
-	let freegiftStatList = gagajf.convertToArray([[${freegiftStatList}]]);		// 프로모션 상태 리스트
+	//let freegiftStatList = gagajf.convertToArray([[${freegiftStatList}]]);		// 프로모션 상태 리스트
 	let columnDefs = [
 		{headerName: "프로모션ID", field: "freegiftSq", width: 80, cellClass: 'text-center'},
 		{headerName: "프로모션명", field: "freegiftNm", width: 350, cellClass: 'text-center'
@@ -105,11 +105,7 @@
 				return '<a href="javascript:void(0);">' + params.value + '</a>';
 			}
 		},
-		{headerName: "상태", field: "freegiftStat", width: 140, cellClass: 'text-center',
-			cellEditorParams: { values: gagaAgGrid.extractValues(freegiftStatList) },
-			valueFormatter: function (params) { return gagaAgGrid.lookupValue(freegiftStatList, params.value); },
-			valueParser: function (params) { return gagaAgGrid.lookupKey(freegiftStatList, params.newValue); }
-		},
+		{headerName: "상태", field: "freegiftStatNm", width: 140, cellClass: 'text-center'},
 		{headerName: "시작일", field: "freegiftStdt", width: 140, cellClass: 'text-center'},
 		{headerName: "종료일", field: "freegiftEddt", width: 140, cellClass: 'text-center'},
 		{headerName: "등록자", field: "regNm", width: 200, cellClass: 'text-left'
@@ -130,6 +126,7 @@
 	// Row Click
 	gridOptions.onCellClicked = function(event) {
 		var freegiftSq = event.data.freegiftSq;
+		alert(freegiftSq);
 		if (event.colDef.field == "freegiftNm"){
 			cfnOpenFreeGoodsPromotionSetPopup('U', freegiftSq);
 		}

+ 107 - 44
src/main/webapp/WEB-INF/views/marketing/FreeGoodsPromotionRegiForm.html

@@ -38,13 +38,11 @@
 					<tr>
 						<th>프로모션명<em class="required" title="필수"></em></th>
 						<td>
-							<!-- 수정시 프로모션명 입력 : before -->
 							<input class="w50p" type="text" id="freegiftNm" name="freegiftNm" minlength="2" maxlength="30" required="required" data-valid-name="프로모션명"/>
 						</td>
 						<th>프로모션ID</th>
 						<td>
-							<!-- 프로모션 ID 입력 : before -->
-							<span />
+							<span name="freegiftSqText"></span>
 						</td>
 					</tr>
 					<tr>
@@ -58,7 +56,7 @@
 						<th>상태</th>
 						<td>
 							<!-- 상태 입력 : before -->
-							<span />
+							<span name="freegiftStatText"></span>
 						</td>
 					</tr>
 					<tr>
@@ -139,8 +137,8 @@
 				<div class="panelTitle">
 					<h2>제외 대상 상품</h2>
 					<span class="panelControl">
-							<i class="fa inner-fa-chevron-up"></i>    <!-- 열림/닫힘 화살표 -->
-						</span>
+						<i class="fa inner-fa-chevron-up"></i>    <!-- 열림/닫힘 화살표 -->
+					</span>
 				</div>
 				<!-- //TITLE -->
 				<div class="inner-panelContent">
@@ -238,11 +236,11 @@
 							<tr>
 								<th>등록자</th>
 								<td>
-									<span>등록자이름(연.월.일 시간:분:초)</span>
+									<span id="regInfo">등록자이름(연.월.일 시간:분:초)</span>
 								</td>
 								<th>최종수정자</th>
 								<td>
-									<span>수정자이름(연.월.일 시간:분:초)</span>
+									<span id="updInfo">수정자이름(연.월.일 시간:분:초)</span>
 								</td>
 							</tr>
 						</table>
@@ -284,7 +282,7 @@
 	let columnBrandList = [
 		{width: 40, minWidth: 40, cellClass: 'text-center', headerCheckboxSelection: true, checkboxSelection: true, filter: false},
 		{headerName: "브랜드ID", field: "brandCd", width: 120, cellClass: 'text-center'},
-		{headerName: "공급업체명", field: "brandEnm", width: 150, cellClass: 'text-center'}
+		{headerName: "브랜드명", field: "brandEnm", width: 150, cellClass: 'text-center'}
 	];
 	// 적용상품 리스트 설정
 	let columnApplyGoodsList = [
@@ -368,13 +366,20 @@
 				if(params.value && params.value > 0) {
 					return params.value.addComma();
 				} else {
-					return 1;
+					return 0;
 				}
-			},
-			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+			}
+			,cellEditorParams: { maxlength: 14, validType: 'numeric'}
 		},
 		{headerName: "한정수량", field: "limitQty" , width: 100, cellClass: 'text-center'
 			,editable: true
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return 0;
+				}
+			}
 			,cellEditorParams: { maxlength: 14, validType: 'numeric'}
 		},
 		{headerName: "잔여수량", field: "leftQty", width: 120, cellClass: 'text-center'
@@ -409,13 +414,20 @@
 				if(params.value && params.value > 0) {
 					return params.value.addComma();
 				} else {
-					return 1;
+					return 0;
 				}
-			},
-			cellEditorParams: { maxlength: 14, validType: 'numeric'}
+			}
+			,cellEditorParams: { maxlength: 14, validType: 'numeric'}
 		},
 		{headerName: "한정수량", field: "limitQty" , width: 100, cellClass: 'text-center'
 			,editable: true
+			,valueFormatter: function(params) {
+				if(params.value && params.value > 0) {
+					return params.value.addComma();
+				} else {
+					return 0;
+				}
+			}
 			,cellEditorParams: { maxlength: 14, validType: 'numeric'}
 		},
 		{headerName: "잔여수량", field: "leftQty", width: 120, cellClass: 'text-center'
@@ -451,8 +463,50 @@
 
 	var fnFreeGoodsPromotionSearchCallback = function(result) {
 		if (result != null) {
-			gridOptionsFGExtmallList.api.setRowData(result.freegiftExtmallList);
+			let freegift = result.freegift;
+			let freegiftStatNm = freegift.freegiftStatNm;
+			let today = new Date();
+			let yyyy = today.getFullYear(), dd = today.getDate(), mm = today.getMonth()+1, stopDt; //January is 0!
+			if(dd<10) {	dd= '0' + dd	}
+			if(mm<10) {	mm= '0' + mm	}
+
+			// 상태명 상태에 따라 변경
+			if(freegift.freegiftStat == "G232_12") {					// 중지상태일 경우 중지 일시 노출
+				freegiftStatNm = freegiftStatNm + " (" + freegift.updDt + ")";
+			} else if (freegift.freegiftEddt > yyyy+"."+mm+"."+dd) {	// 종료된 프로모션일 경우 종료일 노출
+				freegiftStatNm = "종료 (" + freegift.freegiftEddt + ")";
+			}
+
+			// 저장된 값 입력
+			$('#freeGoodsPromotionForm input[name=freegiftNm]').val(freegift.freegiftNm);
+			$('#freeGoodsPromotionForm span[name=freegiftSqText]').text(freegift.freegiftSq);
+			$('#freeGoodsPromotionForm input[name=freegiftStdt]').val(freegift.freegiftStdt.split(".").join("-"));
+			$('#freeGoodsPromotionForm input[name=freegiftEddt]').val(freegift.freegiftEddt.split(".").join("-"));
+			$('#freeGoodsPromotionForm span[name=freegiftStatText]').text(freegiftStatNm);
+			$('#freeGoodsPromotionForm input[name=sectionVal]').val(freegift.sectionVal);
+			$('#freeGoodsPromotionForm input[name=sectionVal2]').val(freegift.sectionVal2);
+			$("#freeGoodsPromotionForm #regInfo").text(freegift.regNm + "(" + freegift.regDt + ")");
+			$("#freeGoodsPromotionForm #updInfo").text(freegift.updNm + "(" + freegift.updDt + ")");
+			if(freegift.selfYn == "Y") {
+				$("#freeGoodsPromotionForm input[name=selfYn]").parent("label").addClass("checked");
+			}
+			if(freegift.extmallList != null && freegift.extmallList.length > 0) {
+				$("#freeGoodsPromotionForm input[name=extmallYn]").parent("label").addClass("checked");
+				$("#freeGoodsPromotionForm #extmallCnt").text(freegift.extmallList.length);
+			} else {
+				$("#freeGoodsPromotionForm #btnExtmallPopup").hide();
+				$("#freeGoodsPromotionForm #extmallCntArea").hide();
+				$("#freeGoodsPromotionForm #extmallCnt").text(0);
+				$("#freeGoodsPromotionForm #extmallIds").val("");
+			}
 
+			gridOptionsFGExtmallList.api.setRowData(freegift.extmallList);
+			gridOptionsFGCompanyList.api.setRowData(freegift.supplyCompList);
+			gridOptionsFGBrandList.api.setRowData(freegift.brandList);
+			gridOptionsFGApplyGoodsList.api.setRowData(freegift.applyGoodsList);
+			gridOptionsFGExceptGoodsList.api.setRowData(freegift.exceptGoodsList);
+			gridOptionsFreeGoods1List.api.setRowData(freegift.freeGoods1);
+			gridOptionsFreeGoods2List.api.setRowData(freegift.freeGoods2);
 		}
 	}
 
@@ -479,8 +533,6 @@
 		if("C" == [[${param.gbn}]]) {
 			$("#freeGoodsPromotionForm #btnExtmallPopup").hide();
 			$("#freeGoodsPromotionForm #extmallCntArea").hide();
-			$("#freeGoodsPromotionForm #extmallCnt").text(0);
-			$("#freeGoodsPromotionForm #extmallIds").val("");
 		} else {
 			fnFreegiftSearch();
 		}
@@ -492,8 +544,8 @@
 		if($("#freeGoodsPromotionForm #G011_20").hasClass("checked")) {
 			$("#freeGoodsPromotionForm #btnExtmallPopup").hide();
 			$("#freeGoodsPromotionForm #extmallCntArea").hide();
-			$("#freeGoodsPromotionForm #extmallCnt").text(0);
-			$("#freeGoodsPromotionForm #extmallIds").val("");
+			gridOptionsFGExtmallList.api.setRowData(null);
+			$("#extmallCnt").text(gagaAgGrid.getAllRowData(gridOptionsFGExtmallList).length);
 		} else {
 			$("#freeGoodsPromotionForm #btnExtmallPopup").show();
 			$("#freeGoodsPromotionForm #extmallCntArea").show();
@@ -507,19 +559,6 @@
 		}
 	});
 
-	// list 데이터 setting
-	function fnSetSendGridListVal(gridListOption, key, inputId) {
-		let list = gagaAgGrid.getAllRowData(gridListOption);
-		let cds = [];
-
-		for(let k = 0 ; k < list.length ; k++) {
-			cds.push(eval("list[k]." + key));
-		}
-
-		let jsonData = JSON.stringify(cds);
-		$("#" + inputId).val(jsonData);
-	}
-
 	// 리스트 정보 수정
 	function fnSetListInfo(result, gridListOption, key) {
 		let resultList = [];											// 최종 상품 리스트
@@ -606,6 +645,32 @@
 			return false;
 		}
 
+		let freeGoods1 = gagaAgGrid.getAllRowData(gridOptionsFreeGoods1List);
+		let freeGoods2 = gagaAgGrid.getAllRowData(gridOptionsFreeGoods2List);
+
+		// 지급수량, 한정수량 체크
+		for(let i = 0 ; i < freeGoods1.length ; i++) {
+			if(freeGoods1[i].itemQty < 1) {
+				mcxDialog.alert("사은품조건1의 지급 수량을 0개 이상 입력해주세요.");
+				return false;
+			}
+			if(!freeGoods1[i].limitQty || freeGoods1[i].limitQty < 1) {
+				mcxDialog.alert("사은품조건1의 한정 수량을 0개 이상 입력해주세요.");
+				return false;
+			}
+		}
+
+		for(let i = 0 ; i < freeGoods2.length ; i++) {
+			if(freeGoods2[i].itemQty < 1) {
+				mcxDialog.alert("사은품조건2의 지급 수량을 0개 이상 입력해주세요.");
+				return false;
+			}
+			if(!freeGoods2[i].limitQty || freeGoods2[i].limitQty < 1) {
+				mcxDialog.alert("사은품조건2의 한정 수량을 0개 이상 입력해주세요.");
+				return false;
+			}
+		}
+
 		// 사은품조건1 의 수량 체크
 		if(freeGoods1Cnt > 5) {
 			mcxDialog.alert("사은품 조건1의 사은품은 최대 5개까지 등록가능합니다.");
@@ -621,32 +686,30 @@
 			return false;
 		}*/
 
-		// 각 리스트 데이터 세팅
-		if(supplyCompCnt > 0) { fnSetSendGridListVal(gridOptionsFGCompanyList, "supplyCompCd", "supplyCompCds"); }		// 공급업체 설정 데이터
-		if(brandCnt > 0) { fnSetSendGridListVal(gridOptionsFGBrandList, "brandCd", "brandCds"); }						// 브랜드 설정 데이터
+		let selfYn = $("#freeGoodsPromotionForm input[name=selfYn]:checked").val();
+		if(!selfYn || selfYn == "") { selfYn = "N"; }
 
 		// var params =  $(formId).serialize();
-		var data = {  gbn : [[${#strings.toString(param.gbn)}]]
+		var data = {  gbn : $("#freeGoodsPromotionForm input[name=gbn]").val()
+			        , freegiftSq : $("#freeGoodsPromotionForm input[name=freegiftSq]").val()
 			        , freegiftNm : $("#freeGoodsPromotionForm input[name=freegiftNm]").val()
 					, freegiftStdt : $("#freeGoodsPromotionForm input[name=freegiftStdt]").val().replace(/-/gi, "")
 					, freegiftEddt : $("#freeGoodsPromotionForm input[name=freegiftEddt]").val().replace(/-/gi, "")
-					, selfYn : $("#freeGoodsPromotionForm input[name=selfYn]:checked").val()
+					, selfYn : selfYn
 					, extmallYn : $("#freeGoodsPromotionForm input[name=extmallYn]:checked").val()
 					, allYn : $("#freeGoodsPromotionForm input[name=allYn]:checked").val()
 					, sectionVal : $("#freeGoodsPromotionForm input[name=sectionVal]").val()
 					, sectionVal2 : $("#freeGoodsPromotionForm input[name=sectionVal2]").val()
-					, supplyCompCds : JSON.parse($("#freeGoodsPromotionForm input[name=supplyCompCds]").val())
-					, brandCds : JSON.parse($("#freeGoodsPromotionForm input[name=brandCds]").val())
+					, supplyCompList : gagaAgGrid.getAllRowData(gridOptionsFGCompanyList)
+					, brandList : gagaAgGrid.getAllRowData(gridOptionsFGBrandList)
 					, extmallList : gagaAgGrid.getAllRowData(gridOptionsFGExtmallList)
 					, applyGoodsList : gagaAgGrid.getAllRowData(gridOptionsFGApplyGoodsList)
 					, exceptGoodsList : gagaAgGrid.getAllRowData(gridOptionsFGExceptGoodsList)
-					, freeGoods1 : gagaAgGrid.getAllRowData(gridOptionsFreeGoods1List)
-					, freeGoods2 : gagaAgGrid.getAllRowData(gridOptionsFreeGoods2List)
+					, freeGoods1 : freeGoods1
+					, freeGoods2 : freeGoods2
 		};
 
 		var jsonData = JSON.stringify(data);
-		//gagajf.ajaxJsonSubmit('/display/category/refresh', null);
-		//gagajf.ajaxJsonSubmit('/marketing/freeGoodsPromotion/save', null);
 		gagajf.ajaxJsonSubmit('/marketing/freeGoodsPromotion/save', jsonData, fnFreeGoodsPromotionSaveFin);
 	});