소스 검색

Merge branch 'develop' of http://112.172.147.34:4936/style24/style24.admin.git into develop

jsh77b 5 년 전
부모
커밋
8213dab89f
27개의 변경된 파일815개의 추가작업 그리고 304개의 파일을 삭제
  1. 17 4
      src/main/java/com/style24/admin/biz/dao/TsaCouponDao.java
  2. 28 0
      src/main/java/com/style24/admin/biz/dao/TsaCustomerDao.java
  3. 3 4
      src/main/java/com/style24/admin/biz/dao/TsaMarketingDao.java
  4. 27 49
      src/main/java/com/style24/admin/biz/service/TsaCouponService.java
  5. 29 0
      src/main/java/com/style24/admin/biz/service/TsaCustomerService.java
  6. 9 5
      src/main/java/com/style24/admin/biz/service/TsaGoodsService.java
  7. 8 22
      src/main/java/com/style24/admin/biz/service/TsaMarketingService.java
  8. 57 43
      src/main/java/com/style24/admin/biz/service/TsaMorebetterService.java
  9. 1 1
      src/main/java/com/style24/admin/biz/web/TsaBusinessController.java
  10. 47 0
      src/main/java/com/style24/admin/biz/web/TsaCustomerController.java
  11. 116 131
      src/main/java/com/style24/admin/biz/web/TsaMarketingController.java
  12. 1 12
      src/main/java/com/style24/persistence/domain/Coupon.java
  13. 32 0
      src/main/java/com/style24/persistence/domain/CustomerSearch.java
  14. 5 2
      src/main/java/com/style24/persistence/domain/Goods.java
  15. 3 10
      src/main/java/com/style24/persistence/domain/MoreBetter.java
  16. 2 2
      src/main/java/com/style24/persistence/domain/MoreBetterBurden.java
  17. 4 4
      src/main/java/com/style24/persistence/domain/MoreBetterGoods.java
  18. 2 2
      src/main/java/com/style24/persistence/domain/MoreBetterSection.java
  19. 33 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaCoupon.xml
  20. 108 0
      src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml
  21. 3 3
      src/main/java/com/style24/persistence/mybatis/shop/TsaGoods.xml
  22. 1 1
      src/main/webapp/WEB-INF/views/business/BrandSearchPopupForm.html
  23. 265 0
      src/main/webapp/WEB-INF/views/customer/CustomerActiveListForm.html
  24. 1 1
      src/main/webapp/WEB-INF/views/goods/GoodsPriceReserveForm.html
  25. 9 5
      src/main/webapp/WEB-INF/views/marketing/CouponCreatePopupForm.html
  26. 3 2
      src/main/webapp/WEB-INF/views/marketing/MorebetterPopupForm.html
  27. 1 1
      src/main/webapp/ux/js/admin.popup.js

+ 17 - 4
src/main/java/com/style24/admin/biz/dao/TsaCouponDao.java

@@ -1,19 +1,22 @@
 package com.style24.admin.biz.dao;
 
-import com.style24.core.support.annotation.ShopDs;
-import com.style24.persistence.domain.*;
-import org.springframework.stereotype.Component;
-
 import java.util.ArrayList;
 import java.util.Collection;
 
+import org.springframework.stereotype.Component;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Coupon;
+
 /**
  * 쿠폰 DAO
  * @author xyzp1539
  * @since  2021-01-11
  */
 @ShopDs
+@Component
 public interface TsaCouponDao {
+
 	/**
 	 * 쿠폰 리스트 조회
 	 * @param  Coupon
@@ -39,4 +42,14 @@ public interface TsaCouponDao {
 	 * @since  2021-01-12
 	 */
 	void couponInsert(Coupon params);
+
+	/**
+	 * 쿠폰조회 목록
+	 * @param coupon - 쿠폰 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 8
+	 */
+	Collection<Coupon> getCouponRetrieveList(Coupon coupon);
+
 }

+ 28 - 0
src/main/java/com/style24/admin/biz/dao/TsaCustomerDao.java

@@ -0,0 +1,28 @@
+package com.style24.admin.biz.dao;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Customer;
+import com.style24.persistence.domain.CustomerSearch;
+import org.springframework.stereotype.Repository;
+
+import java.util.Collection;
+
+/**
+ * 회원 Dao
+ * 
+ * @author jsshin
+ * @since 2020. 11. 3
+ */
+@ShopDs
+@Repository
+public interface TsaCustomerDao {
+
+	/**
+	 * 활동회원 목록
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jsshin
+	 * @since 2020. 01. 12
+	 */
+	Collection<Customer> getCustomerActiveList(CustomerSearch customerSearch);
+}

+ 3 - 4
src/main/java/com/style24/admin/biz/dao/TsaMarketingDao.java

@@ -1,12 +1,11 @@
 package com.style24.admin.biz.dao;
 
+import java.util.Collection;
+
 import org.springframework.stereotype.Component;
 
 import com.style24.core.support.annotation.ShopDs;
-import com.style24.persistence.domain.*;
-
-import java.util.ArrayList;
-import java.util.Collection;
+import com.style24.persistence.domain.FreeGoodsPromotion;
 
 /**
  * 마케팅 Dao

+ 27 - 49
src/main/java/com/style24/admin/biz/service/TsaCouponService.java

@@ -6,6 +6,9 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
 
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -47,70 +50,34 @@ public class TsaCouponService {
 	public void couponSave(Coupon params) {
 		String cpnId = "";		// 쿠폰ID
 
-		params = applyTargetSetting(params);
-
 		params.setRegNo(TsaSession.getInfo().getUserNo());
 		params.setUpdNo(TsaSession.getInfo().getUserNo());
 
 		// 자동생성이면 시퀀스 가져오기
-		if(params.getCpnId() == null || params.getCpnId().equals("")) {
-			int sequence = commonService.getNextSequence("SEQ_COUPON");
+		/*if(StringUtils.isBlank(params.getCpnId())) {
+			Integer sequence = commonService.getNextSequence("SEQ_COUPON");
 			cpnId = "CPN"+sequence;
 		} else {
 			cpnId = params.getCpnId();
 		}
-
-		log.info(">>>> CPNID : {}" , cpnId );
 		params.setCpnId(cpnId);
 
 		couponDao.couponInsert(params);
+		*/
+		Gson gson = new Gson();
 
-
-		//checkCpnValidation(params);
-
-	}
-
-	// 쿠폰 적용대상 세팅
-	public Coupon applyTargetSetting(Coupon params) {
-		Collection<Coupon> cpnSupplyCompList = null;
-		Collection<Coupon> cpnBrandList = null;
-		Collection<Coupon> cpnApplyGoodsList = null;
-		Collection<Coupon> cpnCateList = null;
-		Collection<Coupon> cpnBurdenList = null;
-		Collection<Coupon> cpnExcepGoodsList = null;
-		ObjectMapper mapper = new ObjectMapper();
-
-		try {
-			if(params.getSupplyCompList() != null) {
-				cpnSupplyCompList = mapper.readValue(params.getSupplyCompList(), new TypeReference<Collection<Coupon>>() {
-				});
-			}
-			if(params.getBrandList() != null) {
-				cpnBrandList = mapper.readValue(params.getBrandList(), new TypeReference<Collection<Coupon>>() {
-				});
-			}
-			if(params.getApplyGoodsList() != null) {
-				cpnApplyGoodsList = mapper.readValue(params.getApplyGoodsList(), new TypeReference<Collection<Coupon>>() {
-				});
-			}
-			if(params.getCateList() != null) {
-				cpnCateList = mapper.readValue(params.getCateList(), new TypeReference<Collection<Coupon>>() {
-				});
-			}
-			if(params.getBurdenList() != null) {
-				cpnBurdenList = mapper.readValue(params.getBurdenList(), new TypeReference<Collection<Coupon>>() {
-				});
-			}
-			if(params.getCateList() != null) {
-				cpnExcepGoodsList = mapper.readValue(params.getExceptGoodsList(), new TypeReference<Collection<Coupon>>() {
-				});
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
+		Collection<Coupon>	supplyCompList = gson.fromJson(params.getSupplyCompList() , new TypeToken<Collection<Coupon>>(){}.getType());
+		for(Coupon supplyComp : supplyCompList) {
+		//	couponDao.couponRefValInsert(supplyComp);
 		}
+		Collection<Coupon> brandList = gson.fromJson(params.getBrandList() , new TypeToken<Collection<Coupon>>(){}.getType());
+		Collection<Coupon> applyGoodsList = gson.fromJson(params.getApplyGoodsList() , new TypeToken<Collection<Coupon>>(){}.getType());
+		Collection<Coupon> cateList = gson.fromJson(params.getCateList() , new TypeToken<Collection<Coupon>>(){}.getType());
+		Collection<Coupon> exceptGoodsList = gson.fromJson(params.getExceptGoodsList() , new TypeToken<Collection<Coupon>>(){}.getType());
+		Collection<Coupon> burdenList = gson.fromJson(params.getBurdenList() , new TypeToken<Collection<Coupon>>(){}.getType());
 
+		//checkCpnValidation(params);
 
-		return params;
 	}
 
 	/**
@@ -206,4 +173,15 @@ public class TsaCouponService {
 
 	}
 
+	/**
+	 * 쿠폰조회 목록
+	 * @param coupon - 쿠폰 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 8
+	 */
+	public Collection<Coupon> getCouponRetrieveList(Coupon coupon) {
+		return couponDao.getCouponRetrieveList(coupon);
+	}
+
 }

+ 29 - 0
src/main/java/com/style24/admin/biz/service/TsaCustomerService.java

@@ -0,0 +1,29 @@
+package com.style24.admin.biz.service;
+
+import com.style24.admin.biz.dao.TsaCustomerDao;
+import com.style24.persistence.domain.Customer;
+import com.style24.persistence.domain.CustomerSearch;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Collection;
+
+/**
+ * 회원 Service
+ *
+ * @author jsshin
+ * @since 2020. 01. 12
+ */
+@Service
+@Slf4j
+public class TsaCustomerService {
+
+	@Autowired
+	private TsaCustomerDao customerDao;
+
+
+	public Collection<Customer> getCustomerActiveList(CustomerSearch customerSearch) {
+		return customerDao.getCustomerActiveList(customerSearch);
+	}
+}

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

@@ -2047,6 +2047,10 @@ public class TsaGoodsService {
 			goodsPriceRes.setUpdNo(TsaSession.getInfo().getUserNo());
 			goodsPriceRes.setRegNo(TsaSession.getInfo().getUserNo());
 
+			//예약일시 시분 설정
+			goodsPriceRes.setApplyStdt(goodsPriceRes.getApplyStdt() + "0000");
+			goodsPriceRes.setApplyEddt(goodsPriceRes.getApplyEddt() + "5959");
+
 			// 엑셀조회를 위한 SEARCH 테이블 생성
 			SearchData searchData = new SearchData();
 			searchData.setRegNo(goodsPriceRes.getRegNo());
@@ -2082,22 +2086,22 @@ public class TsaGoodsService {
 				return (cnt + 2) + "행의 예약가격을 확인해주세요.";
 			}
 
-			String nowDate = GagaDateUtil.getToday();	//yyyyMMdd
-			SimpleDateFormat dateFormatParser = new SimpleDateFormat("yyyyMMdd");
+			String nowDate = GagaDateUtil.getToday();	//yyyyMMddHH
+			SimpleDateFormat dateFormatParser = new SimpleDateFormat("yyyyMMddHH");
 			dateFormatParser.setLenient(false);
 			try {
 				dateFormatParser.parse(goodsPriceRes.getApplyStdt() );
 			} catch (Exception e) {
-				return (cnt + 2) + "행의 예약시작일을 확인해주세요.";
+				return (cnt + 2) + "행의 예약시작일을 확인해주세요.";
 			}
 			try {
 				dateFormatParser.parse(goodsPriceRes.getApplyEddt() );
 			} catch (Exception e) {
-				return (cnt + 2) + "행의 예약종료일을 확인해주세요.";
+				return (cnt + 2) + "행의 예약종료일을 확인해주세요.";
 			}
 
 			if (Integer.parseInt(goodsPriceRes.getApplyStdt()) > Integer.parseInt(goodsPriceRes.getApplyEddt())) {
-				return (cnt + 2) + "행의 예약 시작일은 종료일보다 보다 클 수 없습니다.";
+				return (cnt + 2) + "행의 예약 시작일은 종료일보다 보다 클 수 없습니다.";
 			}
 
 			if (Integer.parseInt(goodsPriceRes.getApplyStdt()) <= Integer.parseInt(nowDate)) {

+ 8 - 22
src/main/java/com/style24/admin/biz/service/TsaMarketingService.java

@@ -1,33 +1,19 @@
 package com.style24.admin.biz.service;
 
-import com.fasterxml.jackson.core.type.TypeReference;
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Service;
+
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.gagaframework.excel.GagaExcelUtil;
-import com.gagaframework.excel.env.GagaExcelConstants;
-import com.gagaframework.web.parameter.GagaMap;
-import com.gagaframework.web.util.GagaDateUtil;
-import com.gagaframework.web.util.GagaFileUtil;
-import com.gagaframework.web.util.GagaStringUtil;
-import com.style24.admin.biz.dao.TsaGoodsDao;
 import com.style24.admin.biz.dao.TsaMarketingDao;
-import com.style24.admin.support.env.TsaConstants;
-import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.biz.thirdparty.NaverLowestPriceApi;
 import com.style24.core.biz.thirdparty.SafetyKoreaApi;
 import com.style24.core.support.message.TscMessageByLocale;
-import com.style24.persistence.domain.*;
-import io.netty.util.internal.StringUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StringUtils;
+import com.style24.persistence.domain.FreeGoodsPromotion;
 
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collection;
+import lombok.extern.slf4j.Slf4j;
 
 /**
  *상품관리 Service

+ 57 - 43
src/main/java/com/style24/admin/biz/service/TsaMorebetterService.java

@@ -1,5 +1,7 @@
 package com.style24.admin.biz.service;
 
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.domain.MoreBetter;
@@ -7,6 +9,7 @@ import com.style24.persistence.domain.MoreBetterBurden;
 import com.style24.persistence.domain.MoreBetterGoods;
 import com.style24.persistence.domain.MoreBetterSection;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
@@ -118,132 +121,143 @@ public class TsaMorebetterService {
 
     /**
      * 다다익선 저장
-     * @param tmtb
+     * @param moreBetter
      * @return
      * @author bin2107
      * @since 2021. 1. 5
      */
     @Transactional("shopTxnManager")
-    public void saveMoreBetterDetail(MoreBetter tmtb) {
+    public void saveMoreBetterDetail(MoreBetter moreBetter) {
+        Gson gson = new Gson();
+        String jsonData = gson.toJson(moreBetter);
+
         // <,> replace 처리
-        tmtb.setRegNo(TsaSession.getInfo().getUserNo());
-        tmtb.setUdpNo(TsaSession.getInfo().getUserNo());
+        moreBetter.setRegNo(TsaSession.getInfo().getUserNo());
+        moreBetter.setUdpNo(TsaSession.getInfo().getUserNo());
 
         // TMTB 마스터(TB_TMTB) 저장
-        morebetterDao.saveMorebetterMst(tmtb);
+        morebetterDao.saveMorebetterMst(moreBetter);
 
         // 다다익선 적용대상 설정
         // 공급업체
-        Collection<MoreBetterGoods> supplyCompList = tmtb.getSupplyCompListNew();
+        Collection<MoreBetterGoods> supplyCompList = gson.fromJson(moreBetter.getSupplyCompList() , new TypeToken<Collection<MoreBetterGoods>>(){}.getType());
         for(MoreBetterGoods regSupplyComp : supplyCompList){
             // 다다익선 적용대상 설정(TB_TMTB_GOODS) 저장
             // tmtbGoodsSq 생성
             log.info("regSupplyComp.getTmtbGoodsSq = {}",regSupplyComp.getTmtbGoodsSq());
-            if("".equals(regSupplyComp.getTmtbGoodsSq())){
-                Integer tmtbGoodsSq =  commonService.getNextSequence("SEQ_TMTB_GOODS");
+            Integer tmtbGoodsSq = regSupplyComp.getTmtbGoodsSq();
+            if(tmtbGoodsSq == null){
+                tmtbGoodsSq =  commonService.getNextSequence("SEQ_TMTB_GOODS");
                 regSupplyComp.setTmtbGoodsSq(tmtbGoodsSq);
             }
-            regSupplyComp.setTmtbSq(tmtb.getTmtbSq());
+            regSupplyComp.setTmtbSq(moreBetter.getTmtbSq());
             regSupplyComp.setGoodsGb("G800_20");
             regSupplyComp.setTargetVal(regSupplyComp.getSupplyCompCd());
-            regSupplyComp.setRegNo(tmtb.getRegNo());
-            regSupplyComp.setUdpNo(tmtb.getUdpNo());
+            regSupplyComp.setRegNo(moreBetter.getRegNo());
+            regSupplyComp.setUdpNo(moreBetter.getUdpNo());
 
             morebetterDao.saveMorebetterGoods(regSupplyComp);
         }
 
         // 브랜드
-        Collection<MoreBetterGoods> brandList = tmtb.getBrandListNew();
+        Collection<MoreBetterGoods> brandList = gson.fromJson(moreBetter.getBrandList() , new TypeToken<Collection<MoreBetterGoods>>(){}.getType());
         for(MoreBetterGoods regBrand : brandList){
             // 다다익선 적용대상 설정(TB_TMTB_GOODS) 저장
             // tmtbGoodsSq 생성
             log.info("regBrand.getTmtbGoodsSq = {}",regBrand.getTmtbGoodsSq());
-            if("".equals(regBrand.getTmtbGoodsSq())){
-                Integer tmtbGoodsSq =  commonService.getNextSequence("SEQ_TMTB_GOODS");
+            Integer tmtbGoodsSq = regBrand.getTmtbGoodsSq();
+            if(tmtbGoodsSq == null){
+                tmtbGoodsSq =  commonService.getNextSequence("SEQ_TMTB_GOODS");
                 regBrand.setTmtbGoodsSq(tmtbGoodsSq);
             }
-            regBrand.setTmtbSq(tmtb.getTmtbSq());
+            regBrand.setTmtbSq(moreBetter.getTmtbSq());
             regBrand.setGoodsGb("G800_20");
             regBrand.setTargetVal(regBrand.getBrandCd());
-            regBrand.setRegNo(tmtb.getRegNo());
-            regBrand.setUdpNo(tmtb.getUdpNo());
+            regBrand.setRegNo(moreBetter.getRegNo());
+            regBrand.setUdpNo(moreBetter.getUdpNo());
 
             morebetterDao.saveMorebetterGoods(regBrand);
         }
 
         // 적용상품
-        Collection<MoreBetterGoods> applyGoodsList = tmtb.getApplyGoodsListNew();
+        Collection<MoreBetterGoods> applyGoodsList = gson.fromJson(moreBetter.getApplyGoodsList() , new TypeToken<Collection<MoreBetterGoods>>(){}.getType());
         for(MoreBetterGoods regApplyGoods : applyGoodsList){
             // 다다익선 적용대상 설정(TB_TMTB_GOODS) 저장
             // tmtbGoodsSq 생성
             log.info("regApplyGoods.getTmtbGoodsSq = {}",regApplyGoods.getTmtbGoodsSq());
-            if("".equals(regApplyGoods.getTmtbGoodsSq())){
-                Integer tmtbGoodsSq =  commonService.getNextSequence("SEQ_TMTB_GOODS");
+            Integer tmtbGoodsSq = regApplyGoods.getTmtbGoodsSq();
+            if(tmtbGoodsSq == null){
+                tmtbGoodsSq =  commonService.getNextSequence("SEQ_TMTB_GOODS");
                 regApplyGoods.setTmtbGoodsSq(tmtbGoodsSq);
             }
-            regApplyGoods.setTmtbSq(tmtb.getTmtbSq());
+            regApplyGoods.setTmtbSq(moreBetter.getTmtbSq());
             regApplyGoods.setTargetVal(regApplyGoods.getGoodsCd());
-            regApplyGoods.setRegNo(tmtb.getRegNo());
-            regApplyGoods.setUdpNo(tmtb.getUdpNo());
+            regApplyGoods.setRegNo(moreBetter.getRegNo());
+            regApplyGoods.setUdpNo(moreBetter.getUdpNo());
 
             morebetterDao.saveMorebetterGoods(regApplyGoods);
         }
 
         // 제외상품
-        Collection<MoreBetterGoods> exceptGoodsList = tmtb.getExceptGoodsListNew();
+        Collection<MoreBetterGoods> exceptGoodsList = gson.fromJson(moreBetter.getExceptGoodsList() , new TypeToken<Collection<MoreBetterGoods>>(){}.getType());
         for(MoreBetterGoods regExceptGoods : exceptGoodsList){
             // 다다익선 적용대상 설정(TB_TMTB_GOODS) 저장
             // tmtbGoodsSq 생성
             log.info("regExceptGoods.getTmtbGoodsSq = {}",regExceptGoods.getTmtbGoodsSq());
-            if("".equals(regExceptGoods.getTmtbGoodsSq())){
-                Integer tmtbGoodsSq =  commonService.getNextSequence("SEQ_TMTB_GOODS");
+            Integer tmtbGoodsSq = regExceptGoods.getTmtbGoodsSq();
+            if(tmtbGoodsSq == null){
+                tmtbGoodsSq =  commonService.getNextSequence("SEQ_TMTB_GOODS");
                 regExceptGoods.setTmtbGoodsSq(tmtbGoodsSq);
             }
-            regExceptGoods.setTmtbSq(tmtb.getTmtbSq());
+            regExceptGoods.setTmtbSq(moreBetter.getTmtbSq());
             regExceptGoods.setTargetVal(regExceptGoods.getGoodsCd());
-            regExceptGoods.setRegNo(tmtb.getRegNo());
-            regExceptGoods.setUdpNo(tmtb.getUdpNo());
+            regExceptGoods.setRegNo(moreBetter.getRegNo());
+            regExceptGoods.setUdpNo(moreBetter.getUdpNo());
 
             morebetterDao.saveMorebetterGoods(regExceptGoods);
         }
 
         // 다다익선 할인구간 저장
-        Collection<MoreBetterSection> sectionGbList = tmtb.getSectionGbListNew();
+        Collection<MoreBetterSection> sectionGbList = gson.fromJson(moreBetter.getSectionGbList() , new TypeToken<Collection<MoreBetterSection>>(){}.getType());
         for(MoreBetterSection regSection : sectionGbList){
             log.info("regSection.getTmtbSectionSq = {}",regSection.getTmtbSectionSq());
             log.info("regSection.getTmtbValSq = {}",regSection.getTmtbValSq());
             // 다다익선 할인구간설정 2차조건(TB_TMTB_SECTION) 저장
             // tmtbSectionSq 생성
-            if("".equals(regSection.getTmtbSectionSq()) || regSection.getTmtbSectionSq() == null){
-                Integer tmtbSectionSq =  commonService.getNextSequence("SEQ_TMTB_SECTION");
+            Integer tmtbSectionSq = regSection.getTmtbSectionSq();
+            //if("".equals(regSection.getTmtbSectionSq()) || regSection.getTmtbSectionSq() == null){
+            if(tmtbSectionSq == null){
+                tmtbSectionSq =  commonService.getNextSequence("SEQ_TMTB_SECTION");
                 regSection.setTmtbSectionSq(tmtbSectionSq);
             }
             // 다다익선 조건에 따른 할인혜택(금액할인) 설정(TB_TMTB_VAL) 저장
             // tmtbValSq 생성
-            if("".equals(regSection.getTmtbValSq()) || regSection.getTmtbValSq() == null){
-                Integer tmtbValSq =  commonService.getNextSequence("SEQ_TMTB_VAL");
+            Integer tmtbValSq = regSection.getTmtbValSq();
+            if(tmtbValSq == null){
+                tmtbValSq =  commonService.getNextSequence("SEQ_TMTB_VAL");
                 regSection.setTmtbValSq(tmtbValSq);
             }
-            regSection.setTmtbSq(tmtb.getTmtbSq());
-            regSection.setRegNo(tmtb.getRegNo());
-            regSection.setUdpNo(tmtb.getUdpNo());
+            regSection.setTmtbSq(moreBetter.getTmtbSq());
+            regSection.setRegNo(moreBetter.getRegNo());
+            regSection.setUdpNo(moreBetter.getUdpNo());
 
             morebetterDao.saveMorebetterSection(regSection);
             morebetterDao.saveMorebetterVal(regSection);
         }
 
         // 다다익선 업체분담율(TB_TMTB_BURDEN) 저장
-        Collection<MoreBetterBurden> burdenList = tmtb.getBurdenListNew();
+        Collection<MoreBetterBurden> burdenList = gson.fromJson(moreBetter.getBurdenList() , new TypeToken<Collection<MoreBetterBurden>>(){}.getType());
         for (MoreBetterBurden regBurden : burdenList) {
             // tmtbBurdenSq 생성
             log.info("regBurden.getTmtbBurdenSq = {}",regBurden.getTmtbBurdenSq());
-            if("".equals(regBurden.getTmtbBurdenSq())){
-                Integer tmtbBurdenSq =  commonService.getNextSequence("SEQ_TMTB_BURDEN");
+            Integer tmtbBurdenSq = regBurden.getTmtbBurdenSq();
+            if(tmtbBurdenSq == null){
+                tmtbBurdenSq =  commonService.getNextSequence("SEQ_TMTB_BURDEN");
                 regBurden.setTmtbBurdenSq(tmtbBurdenSq);
             }
-            regBurden.setTmtbSq(tmtb.getTmtbSq());
-            regBurden.setRegNo(tmtb.getRegNo());
-            regBurden.setUdpNo(tmtb.getUdpNo());
+            regBurden.setTmtbSq(moreBetter.getTmtbSq());
+            regBurden.setRegNo(moreBetter.getRegNo());
+            regBurden.setUdpNo(moreBetter.getUdpNo());
 
             morebetterDao.saveMorebetterBurden(regBurden);
         }

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

@@ -612,7 +612,7 @@ public class TsaBusinessController extends TsaBaseController {
 		ModelAndView mav = new ModelAndView();
 
 		mav.addObject("params", brand);
-		mav.setViewName("business/BrandSearchForm");
+		mav.setViewName("business/BrandSearchPopupForm");
 		return mav;
 	}
 

+ 47 - 0
src/main/java/com/style24/admin/biz/web/TsaCustomerController.java

@@ -2,6 +2,9 @@ package com.style24.admin.biz.web;
 
 import java.util.Collection;
 
+import com.style24.admin.biz.service.TsaCustomerService;
+import com.style24.persistence.domain.Customer;
+import com.style24.persistence.domain.CustomerSearch;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -48,6 +51,9 @@ public class TsaCustomerController extends TsaBaseController {
 	@Autowired
 	private TscAnswerPhaseService ansPhaseService;
 
+	@Autowired
+	private TsaCustomerService customerService;
+
 	/**
 	 * 1:1문의관리 화면
 	 * @return
@@ -235,4 +241,45 @@ public class TsaCustomerController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0004"));
 	}
 
+	/**
+	 * 활동회원
+	 * @return ModelAndView
+	 * @author jsshin
+	 * @since 2020. 01. 12
+	 */
+	@GetMapping("/active/list/form")
+	public ModelAndView customerActiveListForm() {
+		ModelAndView mav = new ModelAndView();
+
+		// 사이트 목록
+		mav.addObject("siteList", rendererService.getCommonCodeList("G000", "Y"));
+
+		// 회원 구분
+		mav.addObject("custGbList", rendererService.getCommonCodeList("G100", "Y"));
+
+		// 회원 등급
+		mav.addObject("custGradeList", rendererService.getCommonCodeList("G110", "Y"));
+
+		// 관리대상
+		mav.addObject("managedRsnList", rendererService.getCommonCodeList("G103", "Y"));
+
+		mav.setViewName("customer/CustomerActiveListForm");
+
+		return mav;
+	}
+
+	/**
+	 * 활동회원 목록
+	 * @param customerSearch - 검색조건
+	 * @return Collection<Customer>
+	 * @author jsshin
+	 * @since 2020. 12. 24
+	 */
+	@PostMapping("/active/list")
+	@ResponseBody
+	public Collection<Customer> getCustomerActiveList(@RequestBody CustomerSearch customerSearch) {
+		return customerService.getCustomerActiveList(customerSearch);
+	}
+
+
 }

+ 116 - 131
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -1,26 +1,40 @@
 package com.style24.admin.biz.web;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.io.InputStream;
+import java.lang.reflect.Array;
+import java.lang.reflect.Type;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.gagaframework.web.parameter.GagaMap;
-import com.gagaframework.web.rest.server.GagaResponse;
 import com.style24.admin.biz.service.*;
 import com.style24.admin.support.controller.TsaBaseController;
 import com.style24.admin.support.security.session.TsaSession;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.domain.*;
+
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.ModelAndView;
 
-import java.lang.reflect.Array;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
+import com.gagaframework.web.parameter.GagaMap;
+import com.gagaframework.web.rest.server.GagaResponse;
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.reflect.TypeToken;
 /**
  * 마케팅 Controller
  * @author xodud1202
@@ -81,7 +95,7 @@ public class TsaMarketingController extends TsaBaseController {
 	public GagaMap getFreeGoodsPromotionList(@RequestBody FreeGoodsPromotion param) {
 		GagaMap result = new GagaMap();
 
-		List<FreeGoodsPromotion> marketingList = (ArrayList<FreeGoodsPromotion>) marketingService.getFreeGoodsPromotionList(param);
+		List<FreeGoodsPromotion> marketingList = (ArrayList<FreeGoodsPromotion>)marketingService.getFreeGoodsPromotionList(param);
 
 		param.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		param.setPageable(new TsaPageRequest(param.getPageNo() - 1, param.getPageSize()));
@@ -124,15 +138,15 @@ public class TsaMarketingController extends TsaBaseController {
 	 * @since 2020-12-21
 	 */
 	@GetMapping("/coupon/form")
-	public ModelAndView couponListForm(){
+	public ModelAndView couponListForm() {
 		ModelAndView mav = new ModelAndView();
 
 		// 쿠폰 유형 조회
-		mav.addObject("cpnTypeList" ,  rendererService.getCommonCodeList("G230"));
+		mav.addObject("cpnTypeList", rendererService.getCommonCodeList("G230"));
 		// 할인 유형 조회
-		mav.addObject("dcWayList" , rendererService.getCommonCodeList("G240"));
+		mav.addObject("dcWayList", rendererService.getCommonCodeList("G240"));
 		// 사이트 조회
-		mav.addObject("siteCdList" , rendererService.getCommonCodeList("G000"));
+		mav.addObject("siteCdList", rendererService.getCommonCodeList("G000"));
 		// 사용가능 고객구분 조회
 		mav.addObject("usableCustGbList", rendererService.getCommonCodeList("G100"));
 
@@ -150,8 +164,8 @@ public class TsaMarketingController extends TsaBaseController {
 	 */
 	@PostMapping("/coupon/list")
 	@ResponseBody
-	public GagaMap getCouponList(@RequestBody Coupon param){
-		GagaMap result =  new GagaMap();
+	public GagaMap getCouponList(@RequestBody Coupon param) {
+		GagaMap result = new GagaMap();
 
 		ArrayList<Coupon> cpnList = couponService.getCouponList(param);
 		int cpnTotCnt = couponService.getCouponListCnt(param);
@@ -160,9 +174,9 @@ public class TsaMarketingController extends TsaBaseController {
 		param.setPageable(new TsaPageRequest(param.getPageNo() - 1, param.getPageSize()));
 		param.getPageable().setTotalCount(cpnTotCnt);
 
-		result.set("pageing" , param);
-		result.set("cpnTotCnt" , cpnTotCnt);
-		result.set("cpnList" , cpnList);
+		result.set("pageing", param);
+		result.set("cpnTotCnt", cpnTotCnt);
+		result.set("cpnList", cpnList);
 
 		return result;
 	}
@@ -181,10 +195,10 @@ public class TsaMarketingController extends TsaBaseController {
 
 		// 일시 시 리스트 세팅
 		Collection<CommonCode> hhList = new ArrayList<CommonCode>();
-		for(int i = 0; i < 24; i++) {
+		for (int i = 0; i < 24; i++) {
 			num = "";
 			CommonCode temp = new CommonCode();
-			if(i < 10) {
+			if (i < 10) {
 				num = "0" + i;
 			} else {
 				num = String.valueOf(i);
@@ -195,50 +209,50 @@ public class TsaMarketingController extends TsaBaseController {
 			mav.addObject("goodsStatList", rendererService.getCommonCodeList("G008", "Y", exceptCds));
 
 			temp.setCd(num);
-			temp.setCdNm(num+"시");
+			temp.setCdNm(num + "시");
 
 			hhList.add(temp);
 		}
 		// 일시 분 리스트 세팅
 		Collection<CommonCode> mmList = new ArrayList<CommonCode>();
-		for(int i = 0 ; i < 60; i++) {
+		for (int i = 0; i < 60; i++) {
 			num = "";
 			CommonCode temp = new CommonCode();
-			if(i < 10) {
+			if (i < 10) {
 				num = "0" + i;
 			} else {
 				num = String.valueOf(i);
 			}
 			temp.setCd(num);
-			temp.setCdNm(num+"분");
+			temp.setCdNm(num + "분");
 
 			mmList.add(temp);
 		}
 
 		// 쿠폰 유형 조회
-		mav.addObject("cpnTypeList" ,  rendererService.getCommonCodeList("G230"));
+		mav.addObject("cpnTypeList", rendererService.getCommonCodeList("G230"));
 		// 사용가능 고객구분 조회
 		mav.addObject("usableCustGbList", rendererService.getCommonCodeList("G100"));
 		// 사용가능 고객등급 조회
 		mav.addObject("usableCustGradeList", rendererService.getCommonCodeList("G101"));
 		// 사이트코드 조회
-		mav.addObject("siteCdList" , rendererService.getCommonCodeList("G000"));
+		mav.addObject("siteCdList", rendererService.getCommonCodeList("G000"));
 		// 재발급 여부 조회
-		mav.addObject("reissuanceList" , rendererService.getCommonCodeList("G231"));
+		mav.addObject("reissuanceList", rendererService.getCommonCodeList("G231"));
 		// 할인방식 조회
-		mav.addObject("dcWayList" , rendererService.getCommonCodeList("G240"));
+		mav.addObject("dcWayList", rendererService.getCommonCodeList("G240"));
 		// 쿠폰다운로드 방식 조회
-		mav.addObject("dnGbList" , rendererService.getCommonCodeList("G058"));
+		mav.addObject("dnGbList", rendererService.getCommonCodeList("G058"));
 		// 결제수단 조회
-		mav.addObject("payTypeList" , rendererService.getCommonCodeList("G015"));
+		mav.addObject("payTypeList", rendererService.getCommonCodeList("G015"));
 		// 쿠폰상태 조회
-		mav.addObject("cpnStatList" , rendererService.getCommonCodeList("G232"));
+		mav.addObject("cpnStatList", rendererService.getCommonCodeList("G232"));
 		// 시간 분 리스트 세팅
-		mav.addObject("mmList" , mmList);
+		mav.addObject("mmList", mmList);
 		// 시간 시 리스트 세팅
-		mav.addObject("hhList" , hhList);
+		mav.addObject("hhList", hhList);
 		// 입점업체 조회
-		mav.addObject("ibSupplyCompList" , rendererService.getSupplyCompanyList("","N"));
+		mav.addObject("ibSupplyCompList", rendererService.getSupplyCompanyList("", "N"));
 
 		mav.setViewName("marketing/CouponCreatePopupForm");
 		return mav;
@@ -254,7 +268,7 @@ public class TsaMarketingController extends TsaBaseController {
 	@PostMapping("/coupon/save")
 	@ResponseBody
 	public GagaResponse couponSave(@RequestBody Coupon coupon) {
-		log.info("couponSave : {}" , coupon);
+		log.info("couponSave : {}", coupon);
 
 		couponService.couponSave(coupon);
 
@@ -286,7 +300,7 @@ public class TsaMarketingController extends TsaBaseController {
 	public GagaMap getMorebetterList(@RequestBody MoreBetter param) {
 		GagaMap result = new GagaMap();
 
-		List<MoreBetter> tmtbList = (ArrayList<MoreBetter>) morebetterService.getMorebetterList(param);
+		List<MoreBetter> tmtbList = (ArrayList<MoreBetter>)morebetterService.getMorebetterList(param);
 
 		param.setRegNo(TsaSession.getInfo().getUserNo()); // 엑셀조회시 로그인 사용자의 엑셀 상품조회시 사용
 		param.setPageable(new TsaPageRequest(param.getPageNo() - 1, param.getPageSize()));
@@ -307,8 +321,8 @@ public class TsaMarketingController extends TsaBaseController {
 	 * @since 2020. 12. 29
 	 */
 	@ResponseBody
-	@GetMapping("/morebetterRegPopup/form")
-	public ModelAndView morebetterRegForm(@RequestParam(value = "mode") String mode, @RequestParam(value = "tmtbSeq", required = false) Integer tmtbSeq,MoreBetter tmtb) {
+	@GetMapping("/morebetterPopup/form")
+	public ModelAndView morebetterRegForm(@RequestParam(value = "mode") String mode, @RequestParam(value = "tmtbSeq", required = false) Integer tmtbSeq,MoreBetter moreBetter) {
 		ModelAndView mav = new ModelAndView();
 
 		// 상품상태 : 등록일때는 '대기'
@@ -322,7 +336,7 @@ public class TsaMarketingController extends TsaBaseController {
 		mav.addObject("dcWayList", rendererService.getAvailCommonCodeList("G240"));
 
 		// 적용 상품구분 목록
-		String[] exceptGoodsCds = {"G800_30","G800_40"};
+		String[] exceptGoodsCds = {"G800_30", "G800_40"};
 		mav.addObject("applyGoodsGbList", rendererService.getCommonCodeList("G800", "Y", exceptGoodsCds));
 
 		// 제외 상품구분 목록
@@ -335,19 +349,19 @@ public class TsaMarketingController extends TsaBaseController {
 		Integer tmtbSq;
 		if("N".equals(mode)){
 			tmtbSq =  commonService.getNextSequence("SEQ_TMTB");
-			tmtb.setTmtbSq(tmtbSq);
+			moreBetter.setTmtbSq(tmtbSq);
 		}
 
-		if("U".equals(mode)){
+		if ("U".equals(mode)) {
 			// 다다익선 정보
 			mav.addObject("tmtbMstInfo", morebetterService.getMorebetterMstInfo(tmtbSeq));
-			mav.addObject("tmtbSupplyCompList", morebetterService.getMorebetterSupplyCompList(tmtbSeq,"G260_13"));
-			mav.addObject("tmtbBrandList", morebetterService.getMorebetterBrandList(tmtbSeq,"G260_12"));
-			mav.addObject("tmtbApplyGoodsList", morebetterService.getMorebetterApplyGoodsList(tmtbSeq,"G260_10"));
-			mav.addObject("tmtbExceptGoodsList", morebetterService.getMorebetterExceptGoodsList(tmtbSeq,"G260_10"));
+			mav.addObject("tmtbSupplyCompList", morebetterService.getMorebetterSupplyCompList(tmtbSeq, "G260_13"));
+			mav.addObject("tmtbBrandList", morebetterService.getMorebetterBrandList(tmtbSeq, "G260_12"));
+			mav.addObject("tmtbApplyGoodsList", morebetterService.getMorebetterApplyGoodsList(tmtbSeq, "G260_10"));
+			mav.addObject("tmtbExceptGoodsList", morebetterService.getMorebetterExceptGoodsList(tmtbSeq, "G260_10"));
 			mav.addObject("tmtbSectionValList", morebetterService.getMorebetterSectionValList(tmtbSeq));
 			mav.addObject("tmtbBurdenList", morebetterService.getMorebetterBurdenList(tmtbSeq));
-		}else{
+		} else {
 			mav.addObject("tmtbMstInfo", new MoreBetter());
 			mav.addObject("tmtbSupplyCompList", new MoreBetterGoods());
 			mav.addObject("tmtbBrandList", new MoreBetterGoods());
@@ -359,9 +373,9 @@ public class TsaMarketingController extends TsaBaseController {
 
 		mav.addObject("mode", mode);
 		mav.addObject("tmtbSeq", tmtbSeq);
-		mav.addObject("params", tmtb);
-		log.info("CHECK param tmtbSq::{}", tmtb.getTmtbSq());
-		mav.setViewName("marketing/MorebetterRegForm");
+		mav.addObject("params", moreBetter);
+		log.info("CHECK param tmtbSq::{}", moreBetter.getTmtbSq());
+		mav.setViewName("marketing/MorebetterPopupForm");
 		return mav;
 	}
 
@@ -375,85 +389,8 @@ public class TsaMarketingController extends TsaBaseController {
 	 */
 	@PostMapping("/morebetter/save")
 	@ResponseBody
-	public GagaResponse saveMorebetterDetail(@RequestBody MoreBetter tmtb) {
-		Collection<MoreBetterGoods> tmtbSupplyCompList = null;
-		Collection<MoreBetterGoods> tmtbBrandList = null;
-		Collection<MoreBetterGoods> tmtbApplyGoodsList = null;
-		Collection<MoreBetterGoods> tmtbExceptGoodsList = null;
-		Collection<MoreBetterBurden> tmtbBurdenList = null;
-		Collection<MoreBetterSection> tmtbSectionGbList = null;
-		ObjectMapper mapper = new ObjectMapper();
-
-		// 공급업체
-		try {
-			if (tmtb.getSupplyCompList() != null) {
-				tmtbSupplyCompList = mapper.readValue(tmtb.getSupplyCompList(), new TypeReference<Collection<MoreBetterGoods>>() {
-				});
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		// 브랜드
-		try {
-			if (tmtb.getBrandList() != null) {
-				tmtbBrandList = mapper.readValue(tmtb.getBrandList(), new TypeReference<Collection<MoreBetterGoods>>() {
-				});
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		// 적용상품
-		try {
-			if (tmtb.getApplyGoodsList() != null) {
-				tmtbApplyGoodsList = mapper.readValue(tmtb.getApplyGoodsList(), new TypeReference<Collection<MoreBetterGoods>>() {
-				});
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		// 적용상품
-		try {
-			if (tmtb.getExceptGoodsList() != null) {
-				tmtbExceptGoodsList = mapper.readValue(tmtb.getExceptGoodsList(), new TypeReference<Collection<MoreBetterGoods>>() {
-				});
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		// 할인구간
-		try {
-			if (tmtb.getSectionGbList() != null) {
-				tmtbSectionGbList = mapper.readValue(tmtb.getSectionGbList(), new TypeReference<Collection<MoreBetterSection>>() {
-				});
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		// 업체분담율
-		try {
-			if (tmtb.getBurdenList() != null) {
-				tmtbBurdenList = mapper.readValue(tmtb.getBurdenList(), new TypeReference<Collection<MoreBetterBurden>>() {
-				});
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-
-		log.info("tmtb::{}", tmtb);
-
-		tmtb.setSupplyCompListNew(tmtbSupplyCompList);
-		tmtb.setBrandListNew(tmtbBrandList);
-		tmtb.setApplyGoodsListNew(tmtbApplyGoodsList);
-		tmtb.setExceptGoodsListNew(tmtbExceptGoodsList);
-		tmtb.setSectionGbListNew(tmtbSectionGbList);
-		tmtb.setBurdenListNew(tmtbBurdenList);
-
-		morebetterService.saveMoreBetterDetail(tmtb);
-
+	public GagaResponse saveMorebetterDetail(@RequestBody MoreBetter moreBetter) {
+		morebetterService.saveMoreBetterDetail(moreBetter);
 		return super.ok(message.getMessage("SUCC_0001"));
 	}
 	/**
@@ -546,4 +483,52 @@ public class TsaMarketingController extends TsaBaseController {
 		return super.ok(message.getMessage("SUCC_0003"));
 	}
 	/* // CSB 진행 */
+
+	/**
+	 * 쿠폰조회 팝업
+	 * @param returnCode - 반환할코드. 필수
+	 * @param returnName - 반환할명칭. 필수
+	 * @param cpnNm - 쿠폰명. 옵션
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 8
+	 */
+	@GetMapping("/coupon/retrieve/form")
+	@ResponseBody
+	public ModelAndView couponRetrieveForm(@RequestParam(value = "returnCode") String returnCode, @RequestParam(value = "returnName") String returnName, @RequestParam(value = "cpnNm", required = false) String cpnNm) {
+		ModelAndView mav = new ModelAndView();
+
+		mav.addObject("returnCode", returnCode);
+		mav.addObject("returnName", returnName);
+		mav.addObject("cpnNm", StringUtils.defaultString(cpnNm, ""));
+
+		// 사이트 목록
+		mav.addObject("siteList", rendererService.getAvailCommonCodeList("G000"));
+
+		// 사용가능고객구분 목록
+		mav.addObject("usableCustGbList", rendererService.getAvailCommonCodeList("G100"));
+
+		// 쿠폰유형 목록
+		mav.addObject("cpnTypeList", rendererService.getAvailCommonCodeList("G230"));
+
+		// 할인방식 목록
+		mav.addObject("dcWayList", rendererService.getAvailCommonCodeList("G240"));
+
+		mav.setViewName("marketing/CouponRetrieveForm");
+
+		return mav;
+	}
+
+	/**
+	 * 쿠폰조회 목록
+	 * @param coupon - 쿠폰 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2021. 1. 8
+	 */
+	@PostMapping("/coupon/retrieve/list")
+	@ResponseBody
+	public Collection<Coupon> getCouponRetrieveList(@RequestBody Coupon coupon) {
+		return couponService.getCouponRetrieveList(coupon);
+	}
 }

+ 1 - 12
src/main/java/com/style24/persistence/domain/Coupon.java

@@ -4,6 +4,7 @@ import com.style24.persistence.TsaPageRequest;
 import com.style24.persistence.TscBaseDomain;
 import lombok.Data;
 
+import java.util.ArrayList;
 import java.util.Collection;
 
 /**
@@ -43,10 +44,6 @@ public class Coupon extends TscBaseDomain {
     private String  reissuance;				// 쿠폰재발급여부(공통코드G231)
     private String  cpnStat;				// 쿠폰상태(공통코드G232)
     private String  endAlimYn;				// 만료알림여부
-    private Integer regNo;					// 등록자번호
-    private String  regDt;					// 등록일시
-    private Integer updNo;					// 수정자번호
-    private String  updDt;					// 수정일시
     private String  firstYn;				// 첫구매여부 (Y:구매이력이없음 | N:구매이력있음)
     private String  downYn;					// 다운로드가능여부(마이페이지, 상품상세) --> EP쿠폰, 난수쿠폰
     private String  custJoinStdt;			// 회원가입일자(FROM) 20200101 (신규회원여부의 판단을 가입일자로 설정함)
@@ -57,7 +54,6 @@ public class Coupon extends TscBaseDomain {
     private Integer useCnt;					// 쿠폰사용개수
     private String  payType;                 // 결제수단
     private String  custJoinYn;             // 신규회원여부
-    private String  regNm;                  // 사용자명
 
     private String  supplyCompCd;            // 공급업체코드
     private int     burdenRate;                 // 업체분담율
@@ -81,13 +77,6 @@ public class Coupon extends TscBaseDomain {
     private String  burdenList;              // 업체 분담율 리스트
     private String  cateList;                // 카테고리 리스트
 
-    private Collection<Coupon> supplyCompListNew;          // 공급업체 리스트
-    private Collection<Coupon>  brandListNew;               // 브랜드 리스트
-    private Collection<Coupon>  applyGoodsListNew;          // 적용상품 리스트
-    private Collection<Coupon>  exceptGoodsListNew;         // 제외상품 리스트
-    private Collection<Coupon>  burdenListNew;              // 업체 분담율 리스트
-    private Collection<Coupon>  cateListNew;                // 카테고리 리스트
-
     // Pagination
     private TsaPageRequest pageable;
     private int pageNo = 1;

+ 32 - 0
src/main/java/com/style24/persistence/domain/CustomerSearch.java

@@ -0,0 +1,32 @@
+package com.style24.persistence.domain;
+
+import com.style24.persistence.TscBaseDomain;
+import lombok.Data;
+
+/**
+ * 회원 검색조건 Admin - Domain
+ *
+ * @author jsshin
+ * @since 2020. 01. 12
+ */
+@SuppressWarnings("serial")
+@Data
+public class CustomerSearch extends TscBaseDomain {
+
+	// 검색조건
+	private String searchDateGb;
+	private String searchGb;
+	private String searchTxt;
+	private String stDate;
+	private String edDate;
+
+	private String siteCd;
+	private String cellPhnno;
+	private String custGb;
+	private String custGrade;
+	private String managedRsn;
+	private String smsAgreeYn;
+	private String emailAgreeYn;
+	private String appAgreeYn;
+
+}

+ 5 - 2
src/main/java/com/style24/persistence/domain/Goods.java

@@ -92,16 +92,18 @@ public class Goods extends TscBaseDomain {
 	private String chNotiYn = "N";
 	private String chStockDataYn = "N";
 	private String chGoodsStatYn = "N";
+	private String chCfrmYn = "N";		//입점용추가
 	private int stockQtySum;
 	private String goodsImageYn;
 	private String itemkindNm;
 	private String niClsfCd;
-	private String makeNm;
+	private String originNm;
 	private String repGoodsCd;
 
 	private int currPriceOrg;
 	private String goodsStatOrg;
 	private String formalGbOrg;
+	private float sellFeeRateOrg;
 
 	private String sysImgNm;
 	private String niClsfNm;
@@ -112,7 +114,7 @@ public class Goods extends TscBaseDomain {
 	private String custGrade;
 	private String custGradeName;
 
-//	private String goodsRegMsg;
+	private String goodsRegMsg;
 	private String procJob;
 	private String excelFileNm;
 //	private String searchGb;
@@ -180,4 +182,5 @@ public class Goods extends TscBaseDomain {
 	private int pageNo = 1;
 	private int pageSize = 50;
 	private int pageUnit = 10;
+
 }

+ 3 - 10
src/main/java/com/style24/persistence/domain/MoreBetter.java

@@ -16,15 +16,15 @@ import java.util.Collection;
 @Data
 public class MoreBetter extends TscBaseDomain {
 	// 다다익선 마스터
-	private int tmtbSq;				// 프로모션ID
+	private Integer tmtbSq;				// 프로모션ID
 	private String tmtbNm;			// 프로모션명
 	private String tmtbStat;		// 프로모션 상태
 	private String tmtbStdt;		// 프로모션 시작일
 	private String tmtbEddt;		// 프로모션 종료일
 	private String multiYn;			// 복수,단수설정
 	private String delYn;			// 삭제여부
-	private Integer regNo;			// 등록자
-	private String  regDt;			// 등록일시
+	//private Integer regNo;			// 등록자
+	//private String  regDt;			// 등록일시
 	private Integer udpNo;			// 수정자
 	private String  udtDt;			// 수정일시
 	private String searchGubun;		// 프로모션 조회 검색 구분
@@ -59,13 +59,6 @@ public class MoreBetter extends TscBaseDomain {
 	//private String burdenRate;	// 업체분담율
 	private String useYn;			// 사용여부
 
-	private Collection<MoreBetterGoods> supplyCompListNew;
-	private Collection<MoreBetterGoods> brandListNew;
-	private Collection<MoreBetterGoods> applyGoodsListNew;
-	private Collection<MoreBetterGoods> exceptGoodsListNew;
-	private Collection<MoreBetterBurden> burdenListNew;
-	private Collection<MoreBetterSection> sectionGbListNew;
-
 	private String supplyCompList;
 	private String brandList;
 	private String applyGoodsList;

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

@@ -19,8 +19,8 @@ public class MoreBetterBurden extends TscBaseDomain {
 	private String tmtbSupplyCd;	// 업체코드
 	private String tmtbBurdenRate;	// 업체분담율
 	private String useYn;			// 사용여부
-	private Integer regNo;			// 등록자
-	private String  regDt;			// 등록일시
+	//private Integer regNo;			// 등록자
+	//private String  regDt;			// 등록일시
 	private Integer udpNo;			// 수정자
 	private String  udtDt;			// 수정일시
 

+ 4 - 4
src/main/java/com/style24/persistence/domain/MoreBetterGoods.java

@@ -17,14 +17,14 @@ import java.util.Collection;
 @Data
 public class MoreBetterGoods extends TscBaseDomain {
 	// 다다익선 적용대상
-	private int tmtbGoodsSq;		// 업체분담율Sq
-	private int tmtbSq;				// 프로모션Sq
+	private Integer tmtbGoodsSq;		// 업체분담율Sq
+	private Integer tmtbSq;				// 프로모션Sq
 	private String goodsGb;			// 공통코드 (G800_10|기본상품, G800_20|적용상품, G800_30|제외상품, G800_40|ALL)
 	private String targetGb;		// 적용대상 (G260_10|상품, G260_12|브랜드, G260_13|공급처)
 	private String targetVal;		// 브랜드코드, 상품코드, 공급처코드
 	private String delYn;			// 삭제여부
-	private Integer regNo;			// 등록자
-	private String  regDt;			// 등록일시
+	//private Integer regNo;			// 등록자
+	//private String  regDt;			// 등록일시
 	private Integer udpNo;			// 수정자
 	private String  udtDt;			// 수정일시
 

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

@@ -25,8 +25,8 @@ public class MoreBetterSection extends TscBaseDomain {
 	private Integer dcVal;			// 할인값
 
 	private String  delYn;			// 삭제여부
-	private Integer regNo;			// 등록자
-	private String  regDt;			// 등록일시
+	//private Integer regNo;			// 등록자
+	//private String  regDt;			// 등록일시
 	private Integer udpNo;			// 수정자
 	private String  udtDt;			// 수정일시
 

+ 33 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaCoupon.xml

@@ -220,5 +220,38 @@
 		)
 	</insert>
 
+	<!-- 쿠폰조회 목록 -->
+	<select id="getCouponRetrieveList" parameterType="Coupon" resultType="Coupon">
+		/* TsaCoupon.getCouponRetrieveList */
+		SELECT A.CPN_ID                                               /*쿠폰ID*/
+		     , A.CPN_NM                                               /*쿠폰명*/
+		     , A.SITE_CD                                              /*사이트코드(공통코드G000)*/
+		     , A.USABLE_CUST_GB                                       /*사용가능고객구분(공통코드G100)*/
+		     , A.CPN_TYPE                                             /*쿠폰유형(공통코드G230)*/
+		     , A.DC_WAY                                               /*할인방식(공통코드G240)*/
+		     , A.DC_PVAL                                              /*할인값(PC). 할인방식이 금액이면 할인금액, 율이면 할인율*/
+		     , A.DC_MVAL                                              /*할인값(모바일). 할인방식이 금액이면 할인금액, 율이면 할인율*/
+		     , A.MAX_DC_AMT                                           /*최고할인값. 할인방식이 금액이면 최고할인금액, 율이면 최고할인율*/
+		     , A.PD_GB                                                /*기간/일수구분(P 기간, D 일수)*/
+		     , DATE_FORMAT(A.AVAIL_STDT,'%Y%m%d%H%i%S') AS AVAIL_STDT /*유효시작일시(기간/일수구분 "P 기간"일 때 사용됨)*/
+		     , DATE_FORMAT(A.AVAIL_EDDT,'%Y%m%d%H%i%S') AS AVAIL_EDDT /*유효종료일시(기간/일수구분 "P 기간"일 때 사용됨)*/
+		     , A.AVAIL_DAYS                                           /*유효일수(기간/일수구분 "D 일수"일 때 사용됨)*/
+		     , A.CUST_PUB_LIMIT_QTY                                   /*고객당발행제한수량(0은 무제한)*/
+		     , A.TOT_PUB_LIMIT_QTY                                    /*총발행제한수량(0은 무제한)*/
+		     , A.ONE_PUB_QTY                                          /*1회발행수량*/
+		     , A.DN_GB                                                /*다운로드구분(A:자동다운로드, D:직접다운로드). 다운로드가능여부가 "Y 다운로드가능"일 때만 사용됨*/
+		     , A.BUY_LIMIT_AMT                                        /*구매제한금액(0은 제한없음)*/
+		FROM   TB_COUPON A
+		WHERE  A.SITE_CD = #{siteCd}
+		<if test="cpnId !=null and cpnId !=''">
+			AND	   A.CPN_ID = #{cpnId}
+		</if>
+		<if test="cpnNm !=null and cpnNm !=''">
+			AND	   A.CPN_NM LIKE '%'||#{cpnNm}||'%'
+		</if>
+		<if test="cpnType !=null and cpnType !=''">
+			AND	   A.CPN_TYPE = #{cpnType}
+		</if>
+	</select>
 
 </mapper>

+ 108 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml

@@ -0,0 +1,108 @@
+<?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.style24.admin.biz.dao.TsaCustomerDao">
+
+	<!-- 활동회원목록 -->
+	<select id="getCustomerActiveList" parameterType="CustomerSearch" resultType="Customer">
+		/* TsaCustomer.getCustomerActiveList */
+		SELECT CUST_NO
+		     , CUST_ID
+		     , CUST_NM
+		     , PASSWD
+		     , BIRTH_YMD
+		     , BIRTH_SM
+		     , SEX_GB
+		     , CELL_PHNNO
+		     , APP_AGREE_YN
+		     , DATE_FORMAT(APP_AGREE_DT, '%Y%m%d%H%i%S') AS APP_AGREE_DT
+		     , SMS_AGREE_YN
+		     , DATE_FORMAT(SMS_AGREE_DT, '%Y%m%d%H%i%S') AS SMS_AGREE_DT
+		     , EMAIL
+		     , EMAIL_AGREE_YN
+		     , DATE_FORMAT(EMAIL_AGREE_DT, '%Y%m%d%H%i%S') AS EMAIL_AGREE_DT
+		     , HOME_POST_NO
+		     , HOME_BASE_ADDR
+		     , HOME_DTL_ADDR
+		     , SITE_CD
+		     , FRONT_GB
+		     , AF_LINK_CD
+		     , CUST_GB
+		     , CUST_GRADE
+		     , DATE_FORMAT(JOIN_DT, '%Y%m%d%H%i%S') AS JOIN_DT
+		     , FOREIGNER_YN
+		     , CUST_STAT
+		     , DATE_FORMAT(PASSWD_CHG_DT, '%Y%m%d%H%i%S') AS PASSWD_CHG_DT
+		     , TEMP_PASSWD_YN
+		     , DATE_FORMAT(LOGIN_LDT, '%Y%m%d%H%i%S') AS LOGIN_LDT
+		     , NV_JOIN_ID
+		     , NV_ACCESS_TOKEN
+		     , DATE_FORMAT(NV_JOIN_DT, '%Y%m%d%H%i%S') AS NV_JOIN_DT
+		     , KK_JOIN_ID
+		     , KK_ACCESS_TOKEN
+		     , DATE_FORMAT(KK_JOIN_DT, '%Y%m%d%H%i%S') AS KK_JOIN_DT
+		     , YS_JOIN_ID
+		     , YS_ACCESS_TOKEN
+		     , DATE_FORMAT(YS_JOIN_DT, '%Y%m%d%H%i%S') AS YS_JOIN_DT
+		     , CI
+		     , DATE_FORMAT(AUTH_DT, '%Y%m%d%H%i%S') AS AUTH_DT
+		     , MANAGED_RSN
+		     , MANAGED_DTL_RSN
+		     , MANAGED_DT
+		     , SECEDE_RSN
+		     , SECEDE_DTL_RSN
+		     , SECEDE_DT
+		     , FN_GET_USER_NM(REG_NO)              AS REG_NM
+		     , DATE_FORMAT(REG_DT, '%Y%m%d%H%i%S') AS REG_DT
+		     , FN_GET_USER_NM(UPD_NO)              AS UPD_NM
+		     , DATE_FORMAT(UPD_DT, '%Y%m%d%H%i%S') AS UPD_DT
+		FROM   TB_CUSTOMER
+		WHERE  CUST_STAT = 'G104_10'
+		<if test="searchGb == 'custNo'">
+		AND    CUST_NO = #{searchTxt}
+		</if>
+		<if test="searchGb == 'custNm'">
+		AND    LOWER(CUST_NM) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		</if>
+		<if test="searchGb == 'email'">
+		AND    LOWER(EMAIL) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		</if>
+		<if test="searchGb == 'custId'">
+		AND    LOWER(CUST_ID) LIKE CONCAT('%',LOWER(#{searchTxt}),'%')
+		</if>
+		<if test="siteCd != null and siteCd != ''">
+		AND    SITE_CD = #{siteCd}
+		</if>
+		<if test="cellPhnno != null and cellPhnno != ''">
+		AND    CELL_PHNNO = #{cellPhnno}
+		</if>
+		<if test="custGb != null and custGb != ''">
+		AND    CUST_GB = #{custGb}
+		</if>
+		<if test="custGrade != null and custGrade != ''">
+		AND    CUST_GRADE = #{custGrade}
+		</if>
+		<if test="managedRsn != null and managedRsn != ''">
+		AND    MANAGED_RSN = #{managedRsn}
+		</if>
+		<if test="smsAgreeYn != null and smsAgreeYn != ''">
+		AND   SMS_AGREE_YN = #{smsAgreeYn}
+		</if>
+		<if test="emailAgreeYn != null and emailAgreeYn != ''">
+		AND   EMAIL_AGREE_YN = #{emailAgreeYn}
+		</if>
+		<if test="appAgreeYn != null and appAgreeYn != ''">
+		AND   APP_AGREE_YN = #{appAgreeYn}
+		</if>
+		<if test="stDate != null and edDate != '' and stDate != null and edDate != ''">
+		     <if test="searchDateGb == 'joinDt'">
+		AND   JOIN_DT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		AND   JOIN_DT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		     </if>
+		     <if test="searchDateGb == 'loginLdt'">
+		AND   LOGIN_LDT >= DATE_FORMAT(#{stDate}, '%Y-%m-%d %H:%i:%S')
+		AND   LOGIN_LDT <![CDATA[<]]> DATE_FORMAT(DATE_ADD(#{edDate}, INTERVAL 1 DAY), '%Y-%m-%d %H:%i:%S')
+		     </if>
+		</if>
+	</select>
+
+</mapper>

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

@@ -6,7 +6,7 @@
 	<select id="getItemkindList" parameterType="Itemkind" resultType="Itemkind">
 		/* TsaGoods.getItemkindList */
 		SELECT ITEMKIND_CD
-		     , ITEMKIND_NMgetFreeGoodsList
+		     , ITEMKIND_NM
 		     /* , ITEMKIND_ENM*/
 		     , NI_CLSF_CD
 		     , USE_YN
@@ -2689,8 +2689,8 @@
 		        <include refid="getGoodsListCondition_sql"/>
 		        ORDER BY  GR.APPLY_STDT DESC, GR.APPLY_EDDT DESC, G.GOODS_CD, GR.GOODS_PRICE_RES_SQ
 		        </if>
-		        <if test="searchGb != null and searchGb =='EXCEL'">
-		        ORDER BY SD.TMP_DISP_ORD
+		        <if test="searchGb != null and (searchGb =='EXCEL' or searchGb =='EXCELRESULT')">
+		        ORDER BY SD.TMP_DISP_ORD, GR.APPLY_STDT DESC, GR.APPLY_EDDT DESC, G.GOODS_CD, GR.GOODS_PRICE_RES_SQ
 		        </if>
 		<include refid="getListPagingCondition_sql"/>
 	</select>

+ 1 - 1
src/main/webapp/WEB-INF/views/business/BrandSearchForm.html → src/main/webapp/WEB-INF/views/business/BrandSearchPopupForm.html

@@ -3,7 +3,7 @@
 	xmlns:th="http://www.thymeleaf.org">
 <!--
  *******************************************************************************
- * @source  : BrandSearchForm.html
+ * @source  : BrandSearchPopupForm.html
  * @desc    : 브랜드 팝업 Page
  *============================================================================
  * STYLE24

+ 265 - 0
src/main/webapp/WEB-INF/views/customer/CustomerActiveListForm.html

@@ -0,0 +1,265 @@
+<!DOCTYPE html>
+<html lang="ko"
+	  xmlns:th="http://www.thymeleaf.org">
+<!--
+ *******************************************************************************
+ * @source  : CustomerActiveListForm.html
+ * @desc    : 활동회원목록 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.01.12   jsshin     최초 작성
+ *******************************************************************************
+ -->
+<div id="main">
+	<!-- 메인타이틀 영역 -->
+	<div class="main-title">
+	</div>
+	<!-- //메인타이틀 영역 -->
+
+	<!-- 메뉴 설명 -->
+	<div class="infoBox menu-desc">
+	</div>
+	<!-- //메뉴 설명 -->
+
+	<!-- 검색조건 영역 -->
+	<div class="panelStyle">
+		<form id="searchForm" name="searchForm" action="#" th:action="@{'/customer/active/list'}" onsubmit="$('#btnSearch').trigger('click'); return false;">
+			<table class="frmStyle" aria-describedby="검색조건">
+				<colgroup>
+					<col style="width:10%;"/>
+					<col style="width:20%;"/>
+					<col style="width:10%;"/>
+					<col style="width:15%;"/>
+					<col style="width:10%;"/>
+					<col style="width:20%;"/>
+					<col/>
+				</colgroup>
+				<tbody>
+				<tr>
+					<th class="dashR">검색구분</th>
+					<td class="dashR">
+						<select name="searchGb">
+							<option value="">선택</option>
+							<option value="custNo">회원번호 </option>
+							<option value="custNm">회원명 </option>
+							<option value="email">이메일</option>
+							<option value="custId">아이디</option>
+						</select>
+						<input type="text" class="w200" name="searchTxt" id="searchTxt"/>
+					</td>
+
+					<th class="dashR">사이트</th>
+					<td class="dashR">
+						<select name="siteCd"> <!-- 회원구분(공통코드G100) -->
+							<option value="">전체</option>
+							<option th:if="${siteList}" th:each="oneData, status : ${siteList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+						</select>
+					</td>
+					<th class="dashR">수신여부</th>
+					<td class="dashR">
+						<label class="chkBox">
+							<input type="checkbox" name='emailAgreeYn' value='Y'/> 메일 수신여부
+						</label>
+						<label class="chkBox">
+							<input type="checkbox" name='smsAgreeYn' value='Y'/> SMS 수신여부
+						</label>
+					</td>
+				</tr>
+				<tr>
+					<th class="dashR">회원구분</th>
+					<td class="dashR">
+						<select name="custGb"> <!-- 회원구분(공통코드G100) -->
+							<option value="">전체</option>
+							<option th:if="${custGbList}" th:each="oneData, status : ${custGbList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+						</select>
+					</td>
+
+					<th class="dashR">회원등급</th>
+					<td class="dashR">
+						<select name="custGrade"> <!-- 회원등급(공통코드G110) -->
+							<option value="">전체</option>
+							<option th:if="${custGradeList}" th:each="oneData, status : ${custGradeList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+						</select>
+					</td>
+
+					<th class="dashR">관리대상</th>
+					<td class="dashR">
+						<select name="managedRsn"> <!-- 관리대상지정사유(공통코드G120) -->
+							<option value="">전체</option>
+							<option th:if="${managedRsnList}" th:each="oneData, status : ${managedRsnList}" th:value="${oneData.cd}" th:text="|[${oneData.cd}] ${oneData.cdNm}|"></option>
+						</select>
+					</td>
+				</tr>
+				<tr>
+					<th class="dashR">휴대폰번호</th>
+					<td class="dashR" colspan="5">
+						<input type="text" class="w200" name="cellPhnno" id="cellPhnno"/>
+					</td>
+				</tr>
+				<tr>
+					<th class="dashR">조회일자</th>
+					<td class="dashR" colspan="5" >
+						<select name="searchDateGb">
+							<option value="joinDt">가입일자</option>
+							<option value="loginLdt">로그인일자</option>
+						</select>
+						<span id="terms"></span>
+					</td>
+				</tr>
+				</tbody>
+			</table>
+
+			<ul class="panelBar">
+				<li class="center">
+					<button type="button" class="btn btn-base btn-lg" id="btnSearch">조회</button>
+					<button type="button" class="btn btn-gray btn-lg" onclick="$('#searchForm')[0].reset();">초기화</button>
+				</li>
+			</ul>
+		</form>
+	</div>
+	<!-- //검색조건 영역 -->
+
+	<!-- 리스트 영역 -->
+	<div class="panelStyle">
+		<div id="gridList" style="width: 100%; height: 570px" class="ag-theme-balham lh60"></div>
+	</div>
+	<!-- //리스트 영역 -->
+</div>
+
+<script th:inline="javascript">
+	/*<![CDATA[*/
+	// 사이트목록
+	const siteList = gagajf.convertToArray([[${siteList}]]);
+	// 회원구분
+	const custGbList = gagajf.convertToArray([[${custGbList}]]);
+	// 회원등급
+	const custGradeList = gagajf.convertToArray([[${custGradeList}]]);
+	// 관리대상
+	const managedRsnList = gagajf.convertToArray([[${managedRsnList}]]);
+	// 성별
+	const genderGb = {"F":"여성", "M":"남성"};
+
+	// specify the columns
+	const columnDefs = [
+		{
+			headerName: "사이트", field:'siteCd', width:100, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.lookupValue(siteList, params.data.siteCd); }
+		},
+		{headerName: "회원ID", field:'custId', width:120, cellClass: 'text-center'},
+		{headerName: "회원NO", field:'custNo', width:100, cellClass: 'text-center'},
+		{
+			headerName: "회원명", field:'custNm', width:100, cellClass: 'text-center',
+			cellRenderer: function(params) { return '<a href="javascript:void(0);">' + params.value + '</a>'; }
+		},
+		{
+			headerName: "회원구분", field:'custGb', width:100, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.lookupValue(custGbList, params.data.custGb); }
+		},
+		{
+			headerName: "등급", field:'custGrade', width:100, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.lookupValue(custGradeList, params.data.custGrade); }
+		},
+		{
+			headerName: "관리대상", field:'managedRsn', width:230, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.lookupValue(managedRsnList, params.data.managedRsn); }
+		},
+		{
+			headerName: "가입일자", field:'joinDt', width:120, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.toDateFormat(params.data.joinDt); }
+		},
+		{
+			headerName: "로그인일자", field:'loginLdt', width:120, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.toDateFormat(params.data.loginLdt); }
+		},
+		{headerName: "핸드폰", field:'cellPhnno', width:140, cellClass: 'text-center'},
+		{headerName: "이메일", field:'email', width:220, cellClass: 'text-center'},
+		{
+			headerName: "성별", field:'sexGb', width:50, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.lookupValue(genderGb, params.data.sexGb); }
+		},
+		{
+			headerName: "생년월일", field:'birthYmd', width:90, cellClass: 'text-center', hide:true,
+			valueGetter: function (params) { return gagaAgGrid.toDateFormat(params.data.birthYmd); }
+		},
+		{headerName: "기본주소", field:'homeBaseAddr', width:350, cellClass: 'text-center'},
+		{headerName: "상세주소", field:'homeDtlAddr', width:250, cellClass: 'text-center'},
+		{headerName: "수신동의(SMS)", field:'smsAgreeYn', width:110, cellClass: 'text-center'},
+		{headerName: "수신동의(메일)", field:'emailAgreeYn', width:110, cellClass: 'text-center'}
+	];
+
+	// Get GridOptions
+	let gridOptions = gagaAgGrid.getGridOptions(columnDefs);
+
+	// 이미지가 있을 경우 높이 지정
+	gridOptions.rowHeight = 60;
+
+	// 셀 클릭 이벤트
+	gridOptions.onCellClicked = function(event) {
+		 if (event.colDef.field == 'custNm') {
+			// 고객 상세
+			cfnOpenCustDetailPopup(event.data.custNo);
+		}
+	}
+
+	// 조회
+	$('#btnSearch').on('click', function() {
+		// 유효성 체크
+		let validation = fnValidationCheck();
+		if (!validation) {
+			return;
+		}
+		// Fetch data
+		gagaAgGrid.fetch($('#searchForm').prop('action'), gridOptions, '#searchForm');
+	});
+	
+	var fnValidationCheck = function () {
+		// 입력 값 체크
+		const $searchGb = $('#searchForm select[name=searchGb]');	// 검색구분
+		const $searchNm = $('#searchForm input[name=searchNm]');	// 검색내용
+		let isSearchVaild = true;
+		let validationMessage;
+
+		// 검색구분: O / 검색내용: X
+		if (!gagajf.isNull($searchGb.val())) {
+			if (gagajf.isNull($searchNm.val())) {
+				validationMessage = '내용을 입력해주세요';
+				isSearchVaild = false;
+			}
+		}
+
+		// 검색구분: X / 검색내용: O
+		if (!gagajf.isNull($searchNm.val())) {
+			if (gagajf.isNull($searchGb.val())) {
+				validationMessage = '검색구분을 선택해주세요';
+				isSearchVaild = false;
+			}
+		}
+		if (!isSearchVaild) {
+			mcxDialog.alertC(validationMessage, {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					$searchNm.focus();
+				}
+			});
+		}
+
+		return isSearchVaild;
+
+	}
+
+	$(document).ready(function() {
+		// 공통 달력 생성
+		cfnCreateCalendar('#terms', 'stDate', 'edDate', true);
+		$('.btnToday').trigger('click');
+
+		// Create a agGrid
+		gagaAgGrid.createGrid('gridList', gridOptions);
+	});
+	/*]]>*/
+</script>
+
+</html>

+ 1 - 1
src/main/webapp/WEB-INF/views/goods/GoodsPriceReserveForm.html

@@ -453,7 +453,7 @@
 	});
 	
 	var fnGoodsPriceResDeleteCollBack = function(){
-		//fnGoodsRsvtTnmListSearch($("#goodsPriceResForm input[name=searchGb]").val());
+		fnGoodsPriceSearch($("#goodsPriceResForm input[name=searchGb]").val());
 	}
 	
 	//엑셀양식 다운로드

+ 9 - 5
src/main/webapp/WEB-INF/views/marketing/CouponCreatePopupForm.html

@@ -662,7 +662,7 @@
 
 			// 중복되지 않은 데이터 리스트에 추가
 			if(addChk) {
-				gagaAgGrid.addRowData(brandGridOptions, {"brandCd" : result[i].brandCd, "brandEnm" : result[i].brandEnm, "supplyCompNm" : result[i].supplyCompNm, "targetGb" : "G260_12"});
+				gagaAgGrid.addRowData(brandGridOptions, {"brandCd" : result[i].brandCd, "brandEnm" : result[i].brandEnm, "supplyCompNm" : result[i].supplyCompNm});
 			}
 		}
 	};
@@ -691,7 +691,7 @@
 
 			// 중복되지 않은 데이터 리스트에 추가
 			if(addChk) {
-				gagaAgGrid.addRowData(supplyGridOptions, {"supplyCompCd" : result[i].supplyCompCd, "supplyCompNm" : result[i].supplyCompNm, "targetGb" : "G260_13"});
+				gagaAgGrid.addRowData(supplyGridOptions, {"supplyCompCd" : result[i].supplyCompCd, "supplyCompNm" : result[i].supplyCompNm});
 			}
 		}
 	};
@@ -720,7 +720,7 @@
 
 			// 중복되지 않은 데이터 리스트에 추가
 			if(addChk) {
-				gagaAgGrid.addRowData(cateGridOptions, {"supplyCompCd" : result[i].supplyCompCd, "supplyCompNm" : result[i].supplyCompNm, "targetGb" : "G260_13"});
+				gagaAgGrid.addRowData(cateGridOptions, {"supplyCompCd" : result[i].supplyCompCd, "supplyCompNm" : result[i].supplyCompNm});
 			}
 		}
 	}
@@ -772,7 +772,7 @@
 			// 중복되지 않은 데이터 리스트에 추가
 			if(addChk) {
 				//gagaAgGrid.addRowData(OriginGridListOption, result[i], "goodsCd");
-				gagaAgGrid.addRowData(OriginGridListOption, {"goodsGb": goodsGbVal, "goodsCd" : result[i].goodsCd, "goodsNm" : result[i].goodsNm, "targetGb" : "G260_10"});
+				gagaAgGrid.addRowData(OriginGridListOption, {"goodsGb": goodsGbVal, "goodsCd" : result[i].goodsCd, "goodsNm" : result[i].goodsNm});
 			}
 		}
 	}
@@ -892,7 +892,7 @@
 		// 적용대상 - 브랜드 그리드 전체값 세팅
 		var brandAllData = gagaAgGrid.getAllRowData(brandGridOptions);
 		var jsonBrandData = JSON.stringify(brandAllData);
-		$('#couponCreateForm #brandlist').val(jsonBrandData);
+		$('#couponCreateForm #brandList').val(jsonBrandData);
 		// // 적용대상 - 카테고리 그리드 전체값 세팅
 		var cateAllData = gagaAgGrid.getAllRowData(cateGridOptions);
 		var jsonCateData = JSON.stringify(cateAllData);
@@ -905,6 +905,10 @@
 		var exceptGoodsAllData = gagaAgGrid.getAllRowData(excepGoodsGridOptions);
 		var jsonExceptGoodsData = JSON.stringify(exceptGoodsAllData);
 		$('#couponCreateForm #excepGoodsList').val(jsonExceptGoodsData);
+		// 입점업체분담율 그리드 전체값 세팅
+		var inCompBurdenAllData = gagaAgGrid.getAllRowData(inComGridOptions);
+		var jsonInCompBurdenData = JSON.stringify(inCompBurdenAllData);
+		$('#couponCreateForm #burdenList').val(jsonInCompBurdenData);
 
 	}
 

+ 3 - 2
src/main/webapp/WEB-INF/views/marketing/MorebetterRegForm.html → src/main/webapp/WEB-INF/views/marketing/MorebetterPopupForm.html

@@ -3,7 +3,7 @@
 	  xmlns:th="http://www.thymeleaf.org">
 <!--
  *******************************************************************************
- * @source  : MorebetterRegForm.html
+ * @source  : MorebetterPopupForm.html
  * @desc    : 다다익선 등록 화면
  *============================================================================
  * STYLE24
@@ -67,7 +67,7 @@
 						<td>
 							<!-- 상태 입력 : before
                             <input class="w50p" type="text" id="disTmtbStat" name="disTmtbStat" maxlength="30" th:value="${params.tmtbStat}" disabled=""/>-->
-							<label class="rdoBtn" th:if="${tmtbStatList}" th:each="oneData, status : ${tmtbStatList}" ><input type="radio" id="disTmtbStat" name="disTmtbStat" th:value="${oneData.cd}" th:text="${oneData.cdNm}" required="required" data-valid-name="상태"/></label>
+							<label class="rdoBtn" th:if="${tmtbStatList}" th:each="oneData, status : ${tmtbStatList}" ><input type="radio" id="disTmtbStat" name="disTmtbStat" th:value="${oneData.cd}" th:text="${oneData.cdNm}" data-valid-name="상태"/></label>
 							<input type="hidden" id="tmtbStat" name="tmtbStat"/>
 						</td>
 					</tr>
@@ -410,6 +410,7 @@
 	gridOptionsFGExceptGoodsList.rowSelection = "multiple";
 	// 업체분담율 리스트 설정
 	var gridOptionsApplyBurdenList = gagaAgGrid.getGridOptions(columnApplyBurdenList);
+	gridOptionsApplyBurdenList.defaultColDef.editable = true;
 	gridOptionsApplyBurdenList.rowSelection = "multiple";
 	// 구간 할인/혜택 설정
 	var gridOptionsSectionGbList = gagaAgGrid.getGridOptions(columnSectionGbList);

+ 1 - 1
src/main/webapp/ux/js/admin.popup.js

@@ -752,7 +752,7 @@ var cfnOpenCompanyListPopup = function(callbackfn) {
  * @author : bin2107
  */
 var cfnOpenMorebetterSetPopup = function(mode ,tmtbSeq) {
-	var actionUrl = "/marketing/morebetterRegPopup/form?mode="+mode;
+	var actionUrl = "/marketing/morebetterPopup/form?mode="+mode;
 	if (typeof(tmtbSeq) != 'undefined') actionUrl += "&tmtbSeq=" + tmtbSeq;
 	uifnPopupClose('popupMorebetterReg');
 	cfnOpenModalPopup(actionUrl, 'popupMorebetterReg');