Procházet zdrojové kódy

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

eskim před 5 roky
rodič
revize
b2ff2f97ca

+ 11 - 1
src/main/java/com/style24/front/biz/dao/TsfPlanningDao.java

@@ -259,6 +259,16 @@ public interface TsfPlanningDao {
 	 * @author sowon
 	 * @date 2021. 4. 3
 	 */
-	void savePollCustAnswer(Map<Object,Object> param);
+	void savePollCustAnswer(Poll poll);
+	
+	/**
+	 * 설문조사 중복카운트
+	 *
+	 * @param plan
+	 * @return int
+	 * @author sowon
+	 * @date 2021. 4. 4
+	 */
+	int getCustAnswerCount(Plan plan);
 	
 }

+ 77 - 12
src/main/java/com/style24/front/biz/service/TsfPlanningService.java

@@ -339,20 +339,85 @@ public class TsfPlanningService {
 	 * @author sowon
 	 * @date 2021. 4. 3
 	 */
-	public void savePollCustAnswer(Map<Object, Object> param) {
-		Poll poll = new Poll();
+	public void savePollCustAnswer(Poll poll) {
 		poll.setCustNo(TsfSession.getInfo().getCustNo());
-		 Iterator<Object> mapIter = param.keySet().iterator();
-		 
-	        while(mapIter.hasNext()){
-	 
-	            Object key = mapIter.next();
-	            String value = (String) param.get(key);
-	 
-	            System.out.println(key+" : "+value);
-	 
-	        }
+		// 단수형
+		if(poll.getPollQsq_10()!=null && poll.getPollQsq_10()!="") {
+			String[] pollQsq_10 =poll.getPollQsq_10().split("/");
+			for (int i = 0; i < pollQsq_10.length; i++) {
+				String[] temp = pollQsq_10[i].split("-");
+				for (int j = 0; j < temp.length; j++) {
+					String pollQsq=temp[j].toString();
+					poll.setPollQsq(Integer.parseInt(pollQsq)); 
+					String dummy = temp[j+1].toString();        
+					poll.setDummy(dummy);                       
+					planningDao.savePollCustAnswer(poll);
+					j++;
+				}
+			}
+		}
+		
+		//복수형
+		if(poll.getPollQsq_20()!=null && poll.getPollQsq_20()!="") {
+			String[] pollQsq_20 =poll.getPollQsq_20().split("/");
+			for (int i = 0; i < pollQsq_20.length; i++) {
+				String[] temp = pollQsq_20[i].split("-");
+				for (int j = 0; j < temp.length; j++) {
+					String pollQsq=temp[j].toString();
+					poll.setPollQsq(Integer.parseInt(pollQsq));
+					String dummy = temp[j+1].toString().replaceAll("[,]", "|");        
+					poll.setDummy(dummy);                       
+					planningDao.savePollCustAnswer(poll);
+					
+					j++;
+				}
+			}
+		}
 		
+		//단답형
+		if(poll.getPollQsq_30()!=null && poll.getPollQsq_30()!="") {
+			String[] pollQsq_30 =poll.getPollQsq_30().split("/");
+			for (int i = 0; i < pollQsq_30.length; i++) {
+				String[] temp = pollQsq_30[i].split("-");
+				for (int j = 0; j < temp.length; j++) {
+					String pollQsq=temp[j].toString();
+					poll.setPollQsq(Integer.parseInt(pollQsq)); 
+					String dummy = temp[j+1].toString();        
+					poll.setDummy(dummy);                       
+					planningDao.savePollCustAnswer(poll);
+					j++;
+				}
+			}
+		}
+		
+		//서룰형
+		if(poll.getPollQsq_40()!=null && poll.getPollQsq_40()!="") {
+			String[] pollQsq_40 =poll.getPollQsq_40().split("/");
+			for (int i = 0; i < pollQsq_40.length; i++) {
+				String[] temp = pollQsq_40[i].split("-");
+				for (int j = 0; j < temp.length; j++) {
+					String pollQsq=temp[j].toString();
+					poll.setPollQsq(Integer.parseInt(pollQsq)); 
+					String dummy = temp[j+1].toString();        
+					poll.setDummy(dummy);                       
+					planningDao.savePollCustAnswer(poll);
+					j++;
+				}
+			}
+		}
 	}
+	
+	/**
+	 * 설문조사 중복카운트
+	 *
+	 * @param plan
+	 * @return int
+	 * @author sowon
+	 * @date 2021. 4. 4
+	 */
+	public int getCustAnswerCount(Plan plan) {
+		return planningDao.getCustAnswerCount(plan);
+	}
+
 
 }

+ 33 - 3
src/main/java/com/style24/front/biz/web/TsfPlanningController.java

@@ -329,14 +329,46 @@ public class TsfPlanningController extends TsfBaseController {
 	@PostMapping("/event/poll/form")
 	public ModelAndView planningEventPollSave(Plan plan) {
 		ModelAndView mav = new ModelAndView();
+		Poll poll = new Poll();
 		plan.setSiteCd(TscConstants.Site.STYLE24.value());
 		plan.setFrontGb(TsfSession.getFrontGb());
+		poll.setCustNo(TsfSession.getInfo().getCustNo());
 		mav.addObject("pollInfo", planningService.getPollQuestionInfo(plan));
 		mav.addObject("pollList", planningService.getPollQuestionList(plan));
 		mav.setViewName(super.getDeviceViewName("planning/PlanningEventPollForm"));
 		return mav;
 	}
 	
+	/**
+	 * 이벤트 설문조사 접근확인
+	 * @param 
+	 * @return
+	 * @author sowon
+	 * @since 2021. 4. 3
+	 */
+	@PostMapping("/event/poll/access")
+	@ResponseBody
+	public GagaMap planningEventPollAccess(@RequestBody Plan plan) {
+		
+		GagaMap result = new GagaMap();
+		Poll poll = new Poll();
+		plan.setSiteCd(TscConstants.Site.STYLE24.value());
+		plan.setFrontGb(TsfSession.getFrontGb());
+		plan.setCustNo(TsfSession.getInfo().getCustNo());
+		
+		poll = planningService.getPollQuestionInfo(plan);
+		String partYn = poll.getDupPartiYn(); 
+		// 중복참여가 아닌경우
+		if(partYn.equals("N")) {
+			int count = planningService.getCustAnswerCount(plan);
+			if (count>0) {
+				result.set("msg","이미 응모하셨습니다.");
+				result.set("status","1");
+			}
+		}
+		return result;
+	}
+	
 	/**
 	 * 이벤트 설문조사 저장
 	 * @param 
@@ -348,9 +380,7 @@ public class TsfPlanningController extends TsfBaseController {
 	@ResponseBody
 	public GagaMap planningEventPollForm(@RequestBody Poll poll) {
 		GagaMap result = new GagaMap();
-		System.out.println("==============" + poll);
-		//planningService.savePollCustAnswer(map);
-		//result.set("giftcardOwnList", giftcardService.getGiftcardOwnList(giftcard));
+		planningService.savePollCustAnswer(poll);
 		return result;
 	}
 	

+ 5 - 11
src/main/java/com/style24/persistence/domain/Poll.java

@@ -51,7 +51,7 @@ public class Poll extends TscBaseDomain{
 	private String pollQtypeNm;	// 문제유형 이름
 	private String planNm;			// 이벤트명
 	//poll_answer
-	private String ansCustNo;		// 투표회원번호
+	private Integer ansCustNo;		// 투표회원번호
 	private String dummy;			// 임시 (고객 답변)
 
 	// 검색
@@ -70,16 +70,10 @@ public class Poll extends TscBaseDomain{
 	
 	
 	
-	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-	private String[] pollQsq_10;
-    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-    private String[] pollQsq_20; 
-    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-    private String[] pollQsq_30; 
-    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-    private String[] pollQsq_40;
-    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
-    private String[] pollQsqList;
+	private String pollQsq_10;
+    private String pollQsq_20; 
+    private String pollQsq_30; 
+    private String pollQsq_40;
 	
 
 }

+ 20 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsfPlanning.xml

@@ -934,7 +934,7 @@
 	
 	<!-- 설문조사 정보 -->
 	<select id="getPollQuestionInfo" parameterType="Plan" resultType="Poll">
-		/* TsfPlanning.getPollQuestionList */
+		/* TsfPlanning.getPollQuestionInfo */
 		 SELECT P.PLAN_SQ 
 		      ,P.PLAN_NM 
 		      ,P.PLAN_GB 
@@ -1017,10 +1017,28 @@
 		VALUES
 		       (#{pollQsq}
 		       , #{custNo}
-		       , #{pollQtype}
+		       , (SELECT POLL_QTYPE FROM TB_POLL_QUESTION WHERE POLL_QSQ = #{pollQsq})
 		       , #{dummy}
 		       , #{custNo}
 		       , CURRENT_TIMESTAMP
 		       )	
 	</insert>
+	
+	<!-- 설문자 중복 카운트 -->
+	<select id="getCustAnswerCount" parameterType="Plan" resultType="int">
+		/* TsfPlanning.getCustAnswerCount */
+		SELECT COUNT(PA.ANS_CUST_NO) AS COUNT
+		FROM TB_PLAN P INNER JOIN TB_POLL TP ON P.POLL_SQ = TP.POLL_SQ 
+		               INNER JOIN TB_POLL_QUESTION PQ ON TP.POLL_SQ = PQ.POLL_SQ
+                	   INNER JOIN TB_POLL_ANSWER PA ON PQ.POLL_QSQ = PA.POLL_QSQ 
+		WHERE 1=1
+		 AND P.PLAN_SQ = #{planSq}
+		 AND P.SITE_CD =  #{siteCd} /**P*/
+		 AND P.OPEN_YN ='Y'
+		 AND P.DEL_YN ='N'
+		 AND TP.DEL_YN = 'N'
+		 AND PA.ANS_CUST_NO = #{custNo}
+		 AND NOW() BETWEEN P.DISP_STDT AND P.DISP_EDDT 
+		 AND NOW() BETWEEN TP.POLL_STDT AND TP.POLL_EDDT	
+	</select>
 </mapper>

+ 25 - 1
src/main/webapp/WEB-INF/views/web/planning/PlanningDetailFormWeb.html

@@ -625,8 +625,32 @@ var fnJoinConfirm = function () {
 		return false;
 	}
 	
+	var data = {planSq : planSq};
+
+
+	var jsonData = JSON.stringify(data);
+
+	/* gagajf.ajaxJsonSubmit('/planning/event/poll/access', jsonData , function () {
+		document.pollListForm.submit();
+	});
+	 */
+	$.ajax({
+		type : "POST",
+		data : jsonData,
+		url : '/planning/event/poll/access',
+		contentType : 'application/json',
+		dataType : 'json',
+		success : function(result) {
+			if (result.status == "1") {
+				mcxDialog.alert(result.msg);
+				return;
+			}
+			document.pollListForm.submit();
+		}
+	})
+		
 	
-	document.pollListForm.submit();
+
 }
 
 

+ 29 - 43
src/main/webapp/WEB-INF/views/web/planning/PlanningEventPollFormWeb.html

@@ -221,12 +221,11 @@
 let pollList = [[${pollList}]];
 
 var fnSubmitPoll = function () {
-	var max1 = new Map();
-	//let max2 = new Map();
-	//let max3 = new Map();
-	//let max4 = new Map();
-	let pollQsq_10 = new Array();
-	let pollQsq_20 = new Array();
+	//let pollQsq_20 = new Array();
+	let pollQsq_10 = '';
+	let pollQsq_20 = '';
+	let pollQsq_30 = '';
+	let pollQsq_40 = '';
 	
 	
 	// 유효성검사
@@ -241,19 +240,9 @@ var fnSubmitPoll = function () {
 				return;
 			}
 			if ($('input:radio[name='+pollQsq+'_'+(i+1)+']:checked').val() == '기타') {
-				pollQsq_10.push("("+pollQsq);
-				pollQsq_10.push($('input:text[name=etc_input_'+pollQsq+']').val()+")");
-				//max1.set(pollQsq,$('input:text[name=etc_input_'+pollQsq+']').val());
-				//max1.set("pollQsq",pollQsq);
-				//max1.set("dummy",$('input:text[name=etc_input_'+pollQsq+']').val());
-				//max1.set("pollQtype",type);
+				pollQsq_10 += pollQsq +'-'+$('input:text[name=etc_input_'+pollQsq+']').val() + '/';
 			}else{
-				pollQsq_10.push(pollQsq+"/"+$('input:radio[name='+pollQsq+'_'+(i+1)+']:checked').val());
-				//pollQsq_10.push($('input:radio[name='+pollQsq+'_'+(i+1)+']:checked').val()+")");
-				//max1.set(pollQsq,$('input:radio[name='+pollQsq+'_'+(i+1)+']:checked').val());
-				//max1.set("pollQsq",pollQsq);
-				//max1.set("pollQtype",type);
-				//max1.set("dummy",$('input:radio[name='+pollQsq+'_'+(i+1)+']:checked').val());
+				pollQsq_10 += pollQsq +'-'+$('input:radio[name='+pollQsq+'_'+(i+1)+']:checked').val() + '/';
 			}
 		}
 		if(type == "20"){
@@ -262,15 +251,16 @@ var fnSubmitPoll = function () {
 				return;
 			}else{
 				let chk = $('input:checkbox[name='+pollQsq+'_'+(i+1)+']:checked');
-				pollQsq_20.push(pollQsq);
+				//pollQsq_20.push(pollQsq+ '-');
+				pollQsq_20 += pollQsq + '-' ;
 				for(let i=0; i< chk.length; i++){
-					pollQsq_20.push(chk.eq(i).val());
-					//max1.set(pollQsq,pollQsq_20);
-					//max2.set("pollQsq",pollQsq);
-					//max2.set("pollQtype",type);
-					//max2.set("dummy",pollQsq_20);
-
+					//pollQsq_20.push(chk.eq(i).val());
+					pollQsq_20 += chk.eq(i).val();
+					if (i != chk.length-1) {
+						pollQsq_20 += ',';
+					}
 				}
+				pollQsq_20 += '/' ;
 			}
 		}
 		if(type == "30"){
@@ -278,10 +268,7 @@ var fnSubmitPoll = function () {
 				mcxDialog.alert("Q"+(i+1)+"항목은 필수항목입니다.");
 				return;
 			}else{
-				//max3.set("pollQsq",pollQsq);
-				//max3.set("pollQtype",type);
-				//max3.set("dummy",$('input:text[name='+pollQsq+'_'+(i+1)+']').val());
-				max1.set(pollQsq,$('input:text[name='+pollQsq+'_'+(i+1)+']').val());
+				pollQsq_30 += pollQsq +'-'+$('input:text[name='+pollQsq+'_'+(i+1)+']').val() + '/';
 			}
 		}
 		if(type == "40"){
@@ -289,26 +276,19 @@ var fnSubmitPoll = function () {
 				mcxDialog.alert("Q"+(i+1)+"항목은 필수항목입니다.");
 				return;
 			}else{
-				//max4.set("pollQsq",pollQsq);
-				//max4.set("pollQtype",type);
-				//max4.set("dummy",$('textarea[name='+pollQsq+'_'+(i+1)+']').val());
-				max1.set(pollQsq,$('textarea[name='+pollQsq+'_'+(i+1)+']').val());
+				//max1.set(pollQsq,$('textarea[name='+pollQsq+'_'+(i+1)+']').val());
+				pollQsq_40 += pollQsq +'-'+$('textarea[name='+pollQsq+'_'+(i+1)+']').val() + '/';
 			}
 		}
 	}
-	
-	console.log(pollQsq_10);
 	console.log(pollQsq_20);
-	//console.log(max2);
-	//console.log(max3);
-	//console.log(max4);
-	
-	//var data = {max : max1};
+	var data = {pollQsq_10 : pollQsq_10,
+				pollQsq_20 : pollQsq_20,
+			    pollQsq_30 : pollQsq_30,
+			    pollQsq_40 : pollQsq_40};
 	
 
-	var jsonData = JSON.stringify(max1);
-	//jQuery.ajaxSettings.traditional = true;
-
+	var jsonData = JSON.stringify(data);
 
 	$.ajax({
 		type : "POST",
@@ -317,6 +297,12 @@ var fnSubmitPoll = function () {
 		contentType : 'application/json',
 		dataType : 'json',
 		success : function(result) {
+			mcxDialog.alertC('설문조사 이벤트 참여가 완료되었습니다.', {
+				sureBtnText: "확인",
+				sureBtnClick: function() {
+					cfnGoToPage(_PAGE_EVENT_MAIN);
+				}
+			});
 		}
 	})