Merge branch 'master' into 5102_친구톡_발송속도_개선
@7967c5cd6a7901c5674eb070509beb5ce20d5dd8
--- src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java
+++ src/main/java/itn/let/kakao/kakaoComm/KakaoSendUtil.java
... | ... | @@ -80,9 +80,6 @@ |
| 80 | 80 |
|
| 81 | 81 |
|
| 82 | 82 |
|
| 83 |
- |
|
| 84 |
- log.info(" +kakaoVO.getVarListMap().size() :: [{}]", kakaoVO.getVarListMap().size());
|
|
| 85 |
- |
|
| 86 | 83 |
List<KakaoSendAdvcVO> kakaoSendAdvcListVO = new ArrayList<>(); |
| 87 | 84 |
Calendar calendar = setupBaseDate(kakaoVO, isNotified); |
| 88 | 85 |
|
... | ... | @@ -133,9 +130,10 @@ |
| 133 | 130 |
/** @Map에 총 갯수가 수신자 갯수와 동일함 */ |
| 134 | 131 |
List<Map<String, String>> varList = kakaoVO.getVarListMap(); |
| 135 | 132 |
for (int i = 0; i < varList.size(); i++) {
|
| 136 |
-// for(Map<String, String> variables : kakaoVO.getVarListMap()) {
|
|
| 133 |
+ // for(Map<String, String> variables : kakaoVO.getVarListMap()) {
|
|
| 137 | 134 |
// 치환 데이터 |
| 138 | 135 |
Map<String, String> variables = varList.get(i); |
| 136 |
+ log.info("");
|
|
| 139 | 137 |
|
| 140 | 138 |
/** @공통 기본값 */ |
| 141 | 139 |
KakaoSendAdvcVO sendVO = createSendVO(kakaoVO); |
... | ... | @@ -151,10 +149,12 @@ |
| 151 | 149 |
} |
| 152 | 150 |
|
| 153 | 151 |
/** @Step1-3: 템플릿 치환데이터 설정 */ |
| 152 |
+ String templateContentTemp = templateContent; |
|
| 153 |
+ String templateTitleTemp = templateTitle; |
|
| 154 | 154 |
if (hasContentReplacement) {
|
| 155 |
- templateContent = mjonCommon.ATReplaceTemplateVariables(templateContent, variables); |
|
| 155 |
+ templateContentTemp = mjonCommon.ATReplaceTemplateVariables(templateContent, variables); |
|
| 156 | 156 |
if(hasTitleReplacement) {
|
| 157 |
- templateTitle = mjonCommon.ATReplaceTemplateVariables(templateTitle, variables); |
|
| 157 |
+ templateTitleTemp = mjonCommon.ATReplaceTemplateVariables(templateTitle, variables); |
|
| 158 | 158 |
} |
| 159 | 159 |
} |
| 160 | 160 |
/** @버튼 치환 */ // 버튼 리스트가 있으면 치환 수행, 항상 sendVO에 설정 |
... | ... | @@ -164,8 +164,8 @@ |
| 164 | 164 |
} |
| 165 | 165 |
sendVO.setButtonList(buttonList); |
| 166 | 166 |
|
| 167 |
- sendVO.setTemplateTitle(templateTitle); |
|
| 168 |
- sendVO.setTemplateContent(templateContent); |
|
| 167 |
+ sendVO.setTemplateTitle(templateTitleTemp); |
|
| 168 |
+ sendVO.setTemplateContent(templateContentTemp); |
|
| 169 | 169 |
|
| 170 | 170 |
|
| 171 | 171 |
// Step 1-4: 실패 대체 문자 치환데이터 설정 |
... | ... | @@ -261,6 +261,7 @@ |
| 261 | 261 |
} |
| 262 | 262 |
|
| 263 | 263 |
} |
| 264 |
+ log.info(" sendVO :: [{}]", sendVO);
|
|
| 264 | 265 |
kakaoSendAdvcListVO.add(sendVO); |
| 265 | 266 |
} |
| 266 | 267 |
|
--- src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
... | ... | @@ -550,8 +550,8 @@ |
| 550 | 550 |
HSSFWorkbook workbook = new HSSFWorkbook(files.get(0).getInputStream()); |
| 551 | 551 |
HSSFSheet sheet = workbook.getSheetAt(0); |
| 552 | 552 |
|
| 553 |
- if(sheet.getLastRowNum() > 501) {
|
|
| 554 |
- errMessage = "한번에 전송 가능한 최대 발송건은 500건 입니다."; |
|
| 553 |
+ if(sheet.getLastRowNum() > 300000) {
|
|
| 554 |
+ errMessage = "한번에 전송 가능한 최대 발송건은 300,000건 입니다."; |
|
| 555 | 555 |
jr.setSuccess(false); |
| 556 | 556 |
jr.setMessage(errMessage); |
| 557 | 557 |
return jr; |
... | ... | @@ -683,12 +683,20 @@ |
| 683 | 683 |
|
| 684 | 684 |
} |
| 685 | 685 |
|
| 686 |
- if(totRowDataCnt > 501) { //
|
|
| 687 |
- errMessage = "한번에 전송 가능한 최대 발송건은 500건 입니다."; |
|
| 686 |
+// if(totRowDataCnt > 501) { //
|
|
| 687 |
+// errMessage = "한번에 전송 가능한 최대 발송건은 500건 입니다."; |
|
| 688 |
+// jr.setSuccess(false); |
|
| 689 |
+// jr.setMessage(errMessage); |
|
| 690 |
+// return jr; |
|
| 691 |
+// } |
|
| 692 |
+ |
|
| 693 |
+ if(sheet.getLastRowNum() > 300000) {
|
|
| 694 |
+ errMessage = "한번에 전송 가능한 최대 발송건은 300,000건 입니다."; |
|
| 688 | 695 |
jr.setSuccess(false); |
| 689 | 696 |
jr.setMessage(errMessage); |
| 690 | 697 |
return jr; |
| 691 | 698 |
} |
| 699 |
+ |
|
| 692 | 700 |
|
| 693 | 701 |
List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>(); |
| 694 | 702 |
|
--- src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java
+++ src/main/java/itn/let/kakao/user/kakaoFt/web/KakaoFriendsTalkSendController.java
... | ... | @@ -321,26 +321,25 @@ |
| 321 | 321 |
} |
| 322 | 322 |
|
| 323 | 323 |
|
| 324 |
- /** |
|
| 325 |
- * 문자 발송 기능 |
|
| 326 |
- * @param searchVO |
|
| 327 |
- * @param model |
|
| 328 |
- * @return "/web/mjon/msgdata/sendMsgDataAjax.do" |
|
| 329 |
- * @throws Exception |
|
| 330 |
- */ |
|
| 331 |
- |
|
| 324 |
+ /** |
|
| 325 |
+ * @methodName : sendMsgData_ft_advc |
|
| 326 |
+ * @author : 이호영 |
|
| 327 |
+ * @date : 2025. 4. 17. |
|
| 328 |
+ * @description : 친구톡 발송기능 |
|
| 329 |
+ * @return : ResponseEntity<StatusResponse> |
|
| 330 |
+ * @param kakaoVO |
|
| 331 |
+ * @param request |
|
| 332 |
+ * @param model |
|
| 333 |
+ * @return |
|
| 334 |
+ * @throws Exception |
|
| 335 |
+ * |
|
| 336 |
+ */ |
|
| 332 | 337 |
@RequestMapping(value = "/web/mjon/kakao/friendstalk/kakaoFriendsTalkMsgSendAjax_advc.do") |
| 333 |
- public ResponseEntity<StatusResponse> sendMsgData_ft_advc( |
|
| 334 |
- @RequestBody KakaoVO kakaoVO, |
|
| 335 |
- HttpServletRequest request, |
|
| 336 |
- ModelMap model) throws Exception {
|
|
| 338 |
+ public ResponseEntity<StatusResponse> kakaoFriendsTalkMsgSendAjax_advc( |
|
| 339 |
+ @RequestBody KakaoVO kakaoVO, |
|
| 340 |
+ HttpServletRequest request |
|
| 341 |
+ ) throws Exception {
|
|
| 337 | 342 |
System.out.println(" :: sendMsgData_ft_advc :: ");
|
| 338 |
- |
|
| 339 |
- |
|
| 340 |
- // 디버깅 출력 |
|
| 341 |
-// System.out.println("mjonMsgVO : " + mjonMsgVO.getMjonMsgSendVOList().toString());
|
|
| 342 |
-// System.out.println("mjonMsgVO : " + mjonMsgVO.getMjonMsgSendVOList().size());
|
|
| 343 |
- |
|
| 344 | 343 |
return ResponseEntity.ok().body(kakaoFriendsTalkService.insertKakaoFtSandAjax_advc(kakaoVO, request)) ; |
| 345 | 344 |
|
| 346 | 345 |
} |
--- src/main/java/itn/let/kakao/user/sent/web/KakaoSentController.java
+++ src/main/java/itn/let/kakao/user/sent/web/KakaoSentController.java
... | ... | @@ -1,26 +1,23 @@ |
| 1 | 1 |
package itn.let.kakao.user.sent.web; |
| 2 | 2 |
|
| 3 | 3 |
import java.io.FileReader; |
| 4 |
-import java.io.OutputStream; |
|
| 4 |
+ |
|
| 5 |
+import org.apache.commons.lang3.StringUtils; |
|
| 6 |
+import itn.com.cmm.util.DateUtils; |
|
| 5 | 7 |
import java.text.SimpleDateFormat; |
| 6 | 8 |
import java.util.ArrayList; |
| 7 | 9 |
import java.util.Calendar; |
| 8 |
-import java.util.Date; |
|
| 9 | 10 |
import java.util.List; |
| 10 |
-import java.util.Locale; |
|
| 11 | 11 |
import java.util.Map; |
| 12 | 12 |
|
| 13 | 13 |
import javax.annotation.Resource; |
| 14 |
-import javax.servlet.http.HttpServletRequest; |
|
| 15 | 14 |
import javax.servlet.http.HttpServletResponse; |
| 16 | 15 |
|
| 17 | 16 |
import org.apache.poi.ss.usermodel.Cell; |
| 18 | 17 |
import org.apache.poi.ss.usermodel.CellStyle; |
| 19 |
-import org.apache.poi.ss.usermodel.Font; |
|
| 20 | 18 |
import org.apache.poi.ss.usermodel.Row; |
| 21 | 19 |
import org.apache.poi.ss.usermodel.Sheet; |
| 22 | 20 |
import org.apache.poi.ss.util.CellRangeAddress; |
| 23 |
-import org.apache.poi.xssf.streaming.SXSSFWorkbook; |
|
| 24 | 21 |
import org.json.simple.JSONArray; |
| 25 | 22 |
import org.json.simple.JSONObject; |
| 26 | 23 |
import org.json.simple.parser.JSONParser; |
... | ... | @@ -117,26 +114,16 @@ |
| 117 | 114 |
if(kakaoSentVO.getSearchSortCnd().equals("")) kakaoSentVO.setSearchSortCnd("regdate");
|
| 118 | 115 |
|
| 119 | 116 |
|
| 120 |
- String startDate = kakaoSentVO.getStartDate(); |
|
| 117 |
+ |
|
| 118 |
+ String startDate = kakaoSentVO.getStartDate(); |
|
| 121 | 119 |
String endDate = kakaoSentVO.getEndDate(); |
| 122 | 120 |
|
| 123 |
- if(startDate == null && endDate == null ) {
|
|
| 121 |
+ if(StringUtils.isEmpty(startDate) |
|
| 122 |
+ && StringUtils.isEmpty(endDate)) |
|
| 123 |
+ {
|
|
| 124 | 124 |
|
| 125 |
- Calendar cal = Calendar.getInstance(); |
|
| 126 |
- Date now = new Date(); |
|
| 127 |
- |
|
| 128 |
- SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
|
|
| 129 |
- |
|
| 130 |
- //종료일은 오늘날짜 |
|
| 131 |
- cal.setTime(now); |
|
| 132 |
- endDate = format.format(cal.getTime()); |
|
| 133 |
- |
|
| 134 |
- //시작일은 전날로 셋팅 |
|
| 135 |
- cal.add(Calendar.DATE, -89); |
|
| 136 |
- startDate = format.format(cal.getTime()); |
|
| 137 |
- |
|
| 138 |
- kakaoSentVO.setStartDate(startDate); |
|
| 139 |
- kakaoSentVO.setEndDate(endDate); |
|
| 125 |
+ kakaoSentVO.setStartDate(DateUtils.getDateMonthsAgo(3)); |
|
| 126 |
+ kakaoSentVO.setEndDate(DateUtils.getCurrentDate()); |
|
| 140 | 127 |
|
| 141 | 128 |
} |
| 142 | 129 |
|
--- src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java
+++ src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java
... | ... | @@ -3980,6 +3980,7 @@ |
| 3980 | 3980 |
} |
| 3981 | 3981 |
|
| 3982 | 3982 |
String smsTxt = mjonMsgVO.getSmsTxtArea(); |
| 3983 |
+ smsTxt = StringUtils.isEmpty(smsTxt) ? "" : smsTxt; |
|
| 3983 | 3984 |
// 광고문자면 처리 - 광고 A |
| 3984 | 3985 |
if ("A".equals(mjonMsgVO.getMsgKind())) {
|
| 3985 | 3986 |
smsTxt = "(광고)" + smsTxt + "\n" + "무료거부 0808800858"; |
... | ... | @@ -3987,7 +3988,7 @@ |
| 3987 | 3988 |
mjonMsgVO.setSmsTxt(smsTxt); |
| 3988 | 3989 |
|
| 3989 | 3990 |
|
| 3990 |
-// log.debug(" :: smsTxt :: [{}]", smsTxt);
|
|
| 3991 |
+ log.debug(" :: smsTxt :: [{}]", smsTxt);
|
|
| 3991 | 3992 |
|
| 3992 | 3993 |
StatusResponse statusResponse = new StatusResponse(); |
| 3993 | 3994 |
|
--- src/main/resources/egovframework/egovProps/globals_local.properties
+++ src/main/resources/egovframework/egovProps/globals_local.properties
... | ... | @@ -29,6 +29,7 @@ |
| 29 | 29 |
# mysql |
| 30 | 30 |
Globals.DriverClassName=com.mysql.jdbc.Driver |
| 31 | 31 |
Globals.Url=jdbc:mysql://119.193.215.98:3306/mjon |
| 32 |
+#Globals.Url=jdbc:mysql://192.168.0.60:3308/mjon |
|
| 32 | 33 |
Globals.UserName= mjonUr |
| 33 | 34 |
Globals.Password= mjon!@#$ |
| 34 | 35 |
#Globals.Url=jdbc:mysql://192.168.0.125:3306/mjon |
--- src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml
... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 |
========= ======= ================================================= |
| 4 | 4 |
2021.03.01 신명섭 |
| 5 | 5 |
--> |
| 6 |
-<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> |
|
| 6 |
+<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> |
|
| 7 | 7 |
<sqlMap namespace="KakaoAT"> |
| 8 | 8 |
<typeAlias alias="mjonKakaoATVO" type="itn.let.kakao.admin.kakaoAt.service.MjonKakaoATVO"/> |
| 9 | 9 |
<typeAlias alias="ChannelIDVO" type="itn.let.kakao.admin.kakaoAt.service.ChannelIDVO"/> |
... | ... | @@ -2787,7 +2787,7 @@ |
| 2787 | 2787 |
, B.MSG_GROUP_CNT |
| 2788 | 2788 |
, A.MSG_ID |
| 2789 | 2789 |
, A.USERDATA |
| 2790 |
- , B.SMS_TXT |
|
| 2790 |
+ , A.SMS_TXT |
|
| 2791 | 2791 |
, B.SUBJECT |
| 2792 | 2792 |
, B.REGDATE |
| 2793 | 2793 |
, A.REQ_DATE |
--- src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
+++ src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
... | ... | @@ -40,11 +40,6 @@ |
| 40 | 40 |
|
| 41 | 41 |
<script> |
| 42 | 42 |
$(document).ready(function (){
|
| 43 |
- |
|
| 44 |
- |
|
| 45 |
- $(document).on('click', '#id_text', function () {
|
|
| 46 |
- actionLogin_temp(); |
|
| 47 |
- }); |
|
| 48 | 43 |
|
| 49 | 44 |
$(document).on('click', '#secuLoginFlag', function () {
|
| 50 | 45 |
|
... | ... | @@ -344,11 +339,6 @@ |
| 344 | 339 |
}); |
| 345 | 340 |
} |
| 346 | 341 |
|
| 347 |
- |
|
| 348 |
-function actionLogin_temp(){
|
|
| 349 |
- location.href='/web/user/login/login.do' |
|
| 350 |
- |
|
| 351 |
-} |
|
| 352 | 342 |
|
| 353 | 343 |
function actionLogin() {
|
| 354 | 344 |
// location.href="<c:url value='/web/user/login/login.do'/>"; |
... | ... | @@ -1709,6 +1699,8 @@ |
| 1709 | 1699 |
<input type="hidden" id="ip" name="ip" value="${userIp}">
|
| 1710 | 1700 |
<input type="hidden" id="passFlag" name="passFlag"> |
| 1711 | 1701 |
<input type="hidden" id="headerLoginResult" name="headerLoginResult"> |
| 1702 |
+ <input type="hidden" id="hp" name="hp" value=""> |
|
| 1703 |
+ <input type="hidden" id="num" name="num" value=""> |
|
| 1712 | 1704 |
|
| 1713 | 1705 |
<div id="login" class="login"> |
| 1714 | 1706 |
<div class="inner"> |
... | ... | @@ -1719,9 +1711,9 @@ |
| 1719 | 1711 |
<input type="text" placeholder="아이디를 입력해주세요"id="id_text" name="id_text" class="id_text" maxlength="20" size="18"> |
| 1720 | 1712 |
<label for="password_text" class="label"></label> |
| 1721 | 1713 |
<!-- <input type="password" placeholder="비밀번호를 입력해주세요" id="password_text" class="password_text" maxlength="30"size="18" onkeypress="if(event.keyCode==13) {actionLogin(); return false;}" onclick="actionLogin();"> -->
|
| 1722 |
- <input type="password" placeholder="비밀번호를 입력해주세요" id="password_text" class="password_text" maxlength="30"size="18" onkeypress="if(event.keyCode==13) {actionLogin_temp(); return false;}">
|
|
| 1714 |
+ <input type="password" placeholder="비밀번호를 입력해주세요" id="password_text" class="password_text" maxlength="30"size="18" onkeypress="if(event.keyCode==13) {actionLogin(); return false;}">
|
|
| 1723 | 1715 |
<label for="login_button" class="label"></label> |
| 1724 |
- <button type="button" id="login_button" class="btnType btnType1" class="login_button" onclick="actionLogin_temp();">로그인</button> |
|
| 1716 |
+ <button type="button" id="login_button" class="btnType btnType1" class="login_button" onclick="actionLogin();">로그인</button> |
|
| 1725 | 1717 |
</div> |
| 1726 | 1718 |
<div class="login_save"> |
| 1727 | 1719 |
<input type="checkbox" id="save_id" name="checkId"> |
--- src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/ft/KakaoFriendsTalkMsgDataView.jsp
... | ... | @@ -1070,11 +1070,8 @@ |
| 1070 | 1070 |
phoneNum[i] = phone; |
| 1071 | 1071 |
|
| 1072 | 1072 |
} |
| 1073 |
- |
|
| 1074 | 1073 |
} |
| 1075 |
- |
|
| 1076 | 1074 |
} |
| 1077 |
- |
|
| 1078 | 1075 |
} |
| 1079 | 1076 |
|
| 1080 | 1077 |
//예약문자 시간 체크 |
... | ... | @@ -1225,6 +1222,32 @@ |
| 1225 | 1222 |
formData[field.name] = field.value; |
| 1226 | 1223 |
}); |
| 1227 | 1224 |
|
| 1225 |
+ // 2. buttonVOList 수동으로 수집 |
|
| 1226 |
+ var buttonList = []; |
|
| 1227 |
+ $('input[name^="buttonVOList"]').each(function() {
|
|
| 1228 |
+ let nameAttr = $(this).attr('name');
|
|
| 1229 |
+ let match = nameAttr.match(/buttonVOList\[(\d+)\]\.(\w+)/); |
|
| 1230 |
+ |
|
| 1231 |
+ if (match) {
|
|
| 1232 |
+ let index = parseInt(match[1]); |
|
| 1233 |
+ let key = match[2]; |
|
| 1234 |
+ let value = $(this).val(); |
|
| 1235 |
+ |
|
| 1236 |
+ if (!buttonList[index]) buttonList[index] = {};
|
|
| 1237 |
+ buttonList[index][key] = value; |
|
| 1238 |
+ } |
|
| 1239 |
+ }); |
|
| 1240 |
+ |
|
| 1241 |
+ // 3. formData에 배열로 추가 |
|
| 1242 |
+ formData["buttonVOList"] = buttonList; |
|
| 1243 |
+ |
|
| 1244 |
+ // ✅ 4. 기존의 buttonVOList[0].xxx 형태 제거 |
|
| 1245 |
+ Object.keys(formData).forEach(function(key) {
|
|
| 1246 |
+ if (/^buttonVOList\[\d+\]\./.test(key)) {
|
|
| 1247 |
+ delete formData[key]; |
|
| 1248 |
+ } |
|
| 1249 |
+ }); |
|
| 1250 |
+ |
|
| 1228 | 1251 |
// 빈 값 제거 |
| 1229 | 1252 |
removeEmptyValues(formData); |
| 1230 | 1253 |
// 선택된 데이터 추가 |
... | ... | @@ -1238,12 +1261,9 @@ |
| 1238 | 1261 |
$.ajax({
|
| 1239 | 1262 |
type: "POST" |
| 1240 | 1263 |
, url: "/web/mjon/kakao/friendstalk/kakaoFriendsTalkMsgSendAjax_advc.do" |
| 1241 |
- , data: data |
|
| 1264 |
+ , data: JSON.stringify(formData) |
|
| 1265 |
+ , contentType: 'application/json' |
|
| 1242 | 1266 |
, dataType: 'json' |
| 1243 |
- , async: true |
|
| 1244 |
- , processData: false |
|
| 1245 |
- , contentType: false |
|
| 1246 |
- , cache: false |
|
| 1247 | 1267 |
, success: function (returnData) {
|
| 1248 | 1268 |
|
| 1249 | 1269 |
console.log('returnData : ', returnData);
|
... | ... | @@ -1817,8 +1837,8 @@ |
| 1817 | 1837 |
|
| 1818 | 1838 |
<!-- 친구톡 발송 단가 정보 --> |
| 1819 | 1839 |
<input type="hidden" id="kakaoFtPrice" name="kakaoFtPrice" value="<c:out value='${sendPrice.kakaoFtPrice}' />"/>
|
| 1820 |
- <input type="hidden" id="eachPrice" name="eachPrice" value="0"/> |
|
| 1821 |
- <input type="hidden" id="totPrice" name="totalPrice" value="0"/> |
|
| 1840 |
+<!-- <input type="hidden" id="eachPrice" name="eachPrice" value="0"/> --> |
|
| 1841 |
+<!-- <input type="hidden" id="totPrice" name="totalPrice" value="0"/> --> |
|
| 1822 | 1842 |
|
| 1823 | 1843 |
<!-- 친구톡 발송 json 파일 필요 유무 --> |
| 1824 | 1844 |
<input type="hidden" id="bizJsonYn" name="bizJsonYn" value="N"/> |
... | ... | @@ -1904,8 +1924,8 @@ |
| 1904 | 1924 |
<tr> |
| 1905 | 1925 |
<th>광고포함 여부</th> |
| 1906 | 1926 |
<td> |
| 1907 |
- <input type="radio" class="inputAdFlag" name="ad_flag" id="ad_Y" value="Y" <c:if test="${resultTemplateVO.adFlag eq 'Y'}">checked</c:if> ><label for="ad_Y">광고성 정보 포함</label>
|
|
| 1908 |
- <%-- <input type="radio" class="inputAdFlag" name="ad_flag" id="ad_N" value="N" <c:if test="${resultTemplateVO.adFlag eq 'N'}">checked</c:if> ><label for="ad_N">포함 안함</label> --%>
|
|
| 1927 |
+<%-- <input type="radio" class="inputAdFlag" name="ad_flag" id="ad_Y" value="Y" <c:if test="${resultTemplateVO.adFlag eq 'Y'}">checked</c:if> ><label for="ad_Y">광고성 정보 포함</label> --%>
|
|
| 1928 |
+ <input type="radio" class="inputAdFlag" id="ad_Y" value="Y" <c:if test="${resultTemplateVO.adFlag eq 'Y'}">checked</c:if> ><label for="ad_Y">광고성 정보 포함</label>
|
|
| 1909 | 1929 |
</td> |
| 1910 | 1930 |
</tr> |
| 1911 | 1931 |
<tr> |
--- src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentAllListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentAllListAjax.jsp
... | ... | @@ -104,15 +104,6 @@ |
| 104 | 104 |
|
| 105 | 105 |
} |
| 106 | 106 |
|
| 107 |
-function fn_sentDetailView(msgGroupId) {
|
|
| 108 |
- // msgGroupId 값을 form에 설정 |
|
| 109 |
- $("#searchForm #msgGroupId").val(msgGroupId);
|
|
| 110 |
- |
|
| 111 |
- // form을 해당 URL로 제출 |
|
| 112 |
- $("#searchForm").attr("action", "/web/kakao/sent/selectKakaoSentDetailView.do");
|
|
| 113 |
- $("#searchForm").submit();
|
|
| 114 |
-} |
|
| 115 |
- |
|
| 116 | 107 |
</script> |
| 117 | 108 |
<div class="list_info"> |
| 118 | 109 |
<p>총 발송건수 <span class="c_e40000"><c:out value="${totalRecordCount}"/></span>건</p>
|
--- src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentDetailView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentDetailView.jsp
... | ... | @@ -796,7 +796,7 @@ |
| 796 | 796 |
|
| 797 | 797 |
<!-- 목록--> |
| 798 | 798 |
<div class="btn_list_type1"> |
| 799 |
- <button class="btnType btnType17">목록</button> |
|
| 799 |
+ <button class="btnType btnType17" id="goPageBtn">목록</button> |
|
| 800 | 800 |
</div> |
| 801 | 801 |
<!--// 목록--> |
| 802 | 802 |
|
... | ... | @@ -889,14 +889,14 @@ |
| 889 | 889 |
<!--// 주소록에 등록 팝업 --> |
| 890 | 890 |
|
| 891 | 891 |
<!-- 이전 리스트 상태(검색조건, 페이징) 그대로 가기 위한 form --> |
| 892 |
- <form id="goList" name="goList" method="post" action="/web/mjon/msgsent/selectMsgSentView.do"> |
|
| 892 |
+ <form id="goList" name="goList" method="post" action="/web/kakao/sent/selectKakaoSentView.do"> |
|
| 893 | 893 |
<input type="hidden" name="pageIndex" value="<c:out value="${searchVO.pageIndex}" />" />
|
| 894 | 894 |
<input type="hidden" name="searchSortCnd" value="<c:out value='${searchVO.searchSortCnd }' />" />
|
| 895 | 895 |
<input type="hidden" name="searchSortOrd" value="<c:out value='${searchVO.searchSortOrd }' />" />
|
| 896 | 896 |
<input type="hidden" name="searchCondition01" value="<c:out value='${searchVO.searchCondition01 }' />" />
|
| 897 | 897 |
<input type="hidden" name="searchCondition02" value="<c:out value='${searchVO.searchCondition02 }' />" />
|
| 898 |
- <input type="hidden" name="searchStartDate" value="<c:out value='${searchVO.searchStartDate }' />" />
|
|
| 899 |
- <input type="hidden" name="searchEndDate" value="<c:out value='${searchVO.searchEndDate }' />" />
|
|
| 898 |
+ <input type="hidden" name="startDate" value="<c:out value='${searchVO.startDate }' />" />
|
|
| 899 |
+ <input type="hidden" name="endDate" value="<c:out value='${searchVO.endDate }' />" />
|
|
| 900 | 900 |
<input type="hidden" name="searchCondition" value="<c:out value='${searchVO.searchCondition }' />" />
|
| 901 | 901 |
<input type="hidden" name="searchKeyword" value="<c:out value='${searchVO.searchKeyword }' />" />
|
| 902 | 902 |
<input type="hidden" name="pageUnit" value="<c:out value='${searchVO.pageUnit }' />" />
|
--- src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentView.jsp
... | ... | @@ -21,7 +21,7 @@ |
| 21 | 21 |
//초기 전체 리스트 페이지 보여주기 |
| 22 | 22 |
var form = document.searchForm; |
| 23 | 23 |
form.listType.value = "groupList"; |
| 24 |
- linkPage(1); |
|
| 24 |
+ linkPage(<c:out value="${searchVO.pageIndex}"/>);
|
|
| 25 | 25 |
|
| 26 | 26 |
var date = new Date() ; |
| 27 | 27 |
//이전달 첫날/마지막날 조회 |
... | ... | @@ -246,33 +246,6 @@ |
| 246 | 246 |
|
| 247 | 247 |
}); |
| 248 | 248 |
|
| 249 |
-function fnReSendMsg(){
|
|
| 250 |
- |
|
| 251 |
- var msgSeq = []; |
|
| 252 |
- if($("input:checkbox[name='msgSentDel']").is(":checked")==false){
|
|
| 253 |
- alert("선택된 항목이 없습니다.");
|
|
| 254 |
- return; |
|
| 255 |
- } |
|
| 256 |
- |
|
| 257 |
- $("input:checkbox[name='msgSentDel']:checked").each(function(index){
|
|
| 258 |
- |
|
| 259 |
- var disabledChk = $(this).prop('disabled');
|
|
| 260 |
- if(!disabledChk){ //checkbox disabled 인 것은 제외하고 아이디 저장
|
|
| 261 |
- |
|
| 262 |
- msgSeq[index] = $(this).val(); |
|
| 263 |
- } |
|
| 264 |
- |
|
| 265 |
- }); |
|
| 266 |
- |
|
| 267 |
- var form = document.reSendForm; |
|
| 268 |
- form.msgSeqList.value = msgSeq; |
|
| 269 |
- form.msgResendFlag.value = "Y"; |
|
| 270 |
- |
|
| 271 |
- form.action="/web/mjon/msgdata/selectMsgDataView.do"; |
|
| 272 |
- form.submit(); |
|
| 273 |
- |
|
| 274 |
-} |
|
| 275 |
- |
|
| 276 | 249 |
/* 사용내역서 클릭 시 내역서 새창 팝업 오픈 */ |
| 277 | 250 |
function fnShowPrintPopup(tabType, type) {
|
| 278 | 251 |
//만들려는 팝업의 크기 |
... | ... | @@ -382,6 +355,18 @@ |
| 382 | 355 |
|
| 383 | 356 |
} |
| 384 | 357 |
|
| 358 |
+function fn_sentDetailView(msgGroupId) {
|
|
| 359 |
+ // msgGroupId 값을 form에 설정 |
|
| 360 |
+ $("#searchForm #msgGroupId").val(msgGroupId);
|
|
| 361 |
+ |
|
| 362 |
+ $('#ntceBgnde').val($('#startDate').val());
|
|
| 363 |
+ $('#ntceEndde').val($('#endDate').val());
|
|
| 364 |
+ |
|
| 365 |
+ // form을 해당 URL로 제출 |
|
| 366 |
+ $("#searchForm").attr("action", "/web/kakao/sent/selectKakaoSentDetailView.do");
|
|
| 367 |
+ $("#searchForm").submit();
|
|
| 368 |
+} |
|
| 369 |
+ |
|
| 385 | 370 |
</script> |
| 386 | 371 |
|
| 387 | 372 |
|
... | ... | @@ -426,7 +411,9 @@ |
| 426 | 411 |
<!--// tab button --> |
| 427 | 412 |
</div> |
| 428 | 413 |
<form id="searchForm" name="searchForm" method="post"> |
| 429 |
- <input type="hidden" id="pageIndex" name="pageIndex" value="1"/> |
|
| 414 |
+ <input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${searchVO.pageIndex}" />"/>
|
|
| 415 |
+<%-- <input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value="${searchVO.pageIndex}" />" /> --%>
|
|
| 416 |
+ <input type="hidden" id="pageUnit" name="pageUnit" value="<c:out value="${searchVO.pageUnit}" />" />
|
|
| 430 | 417 |
<input type="hidden" id="msgGroupIdList" name="msgGroupIdList" value=""/> |
| 431 | 418 |
<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
|
| 432 | 419 |
<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
|
... | ... | @@ -648,10 +635,6 @@ |
| 648 | 635 |
<input type="hidden" id="msgId" name="msgId" value=""/> |
| 649 | 636 |
<input type="hidden" id="fileCnt" name="fileCnt" value=""/> |
| 650 | 637 |
<input type="hidden" id="resultType" name="resultType" value="S"/> |
| 651 |
- </form> |
|
| 652 |
- <form id="reSendForm" name="reSendForm" method="post"> |
|
| 653 |
- <input type="hidden" id="msgSeqList" name="msgSeqList" value=""/> |
|
| 654 |
- <input type="hidden" id="msgResendFlag" name="msgResendFlag" value="N"/> |
|
| 655 | 638 |
</form> |
| 656 | 639 |
<form name="popForm" id="popForm" method="post"> |
| 657 | 640 |
<input type="hidden" name="pageType" id="pageType" value=""/> |
--- src/main/webapp/js/kakao/at/alimtalkExcel.js
+++ src/main/webapp/js/kakao/at/alimtalkExcel.js
... | ... | @@ -295,7 +295,8 @@ |
| 295 | 295 |
//변수명 추출해주기 |
| 296 | 296 |
var varListArr = []; |
| 297 | 297 |
varListArr = form.excelVarList.value.split(",");
|
| 298 |
- |
|
| 298 |
+ |
|
| 299 |
+ var forBreakB = true |
|
| 299 | 300 |
$.each(data, function(i, item){
|
| 300 | 301 |
|
| 301 | 302 |
if(checkHpNum(item.phone)){
|
... | ... | @@ -319,8 +320,11 @@ |
| 319 | 320 |
var bodyData = varValArr[i]; |
| 320 | 321 |
|
| 321 | 322 |
// 기타변수는 50자리 까지 입력 |
| 322 |
- if(bodyData.length > 100 || bodyData.length == 0){
|
|
| 323 |
- alert("등록 변수[ "+varListArr[i]+" ] \n기타변수의 입력 값이 없거나 100자리를 초과하는 내용이 포함되어 해당 내용 제외되었습니다.");
|
|
| 323 |
+ if(bodyData.length > 100 || bodyData.length == 0 ){
|
|
| 324 |
+ if(forBreakB){
|
|
| 325 |
+ alert("등록 변수[ "+varListArr[i]+" ] \n기타변수의 입력 값이 없거나 100자리를 초과하는 내용이 포함되어 해당 내용 제외되었습니다.");
|
|
| 326 |
+ forBreakB = false; |
|
| 327 |
+ } |
|
| 324 | 328 |
lengthCheck = false; |
| 325 | 329 |
break; |
| 326 | 330 |
} |
--- src/main/webapp/js/kakao/at/tabulator.js
+++ src/main/webapp/js/kakao/at/tabulator.js
... | ... | @@ -132,6 +132,17 @@ |
| 132 | 132 |
|
| 133 | 133 |
|
| 134 | 134 |
|
| 135 |
+ // ⬇️ 기존 tableL 데이터 개수 확인 |
|
| 136 |
+ var existingData = tableL.getData(); |
|
| 137 |
+ var totalCount = existingData.length + numbers.length; |
|
| 138 |
+ |
|
| 139 |
+ // ⬇️ 30만건 초과 시 경고 및 중단 |
|
| 140 |
+ if (totalCount > 300000) {
|
|
| 141 |
+ alert("안정적인 서비스 운영을 위해서 최대 300000건 이내로 분할 발송해 주시기 바랍니다.");
|
|
| 142 |
+ return; |
|
| 143 |
+ } |
|
| 144 |
+ |
|
| 145 |
+ |
|
| 135 | 146 |
const formattedData = numbers.map(num => ({phone: num}));
|
| 136 | 147 |
|
| 137 | 148 |
// 기존 tableL의 데이터를 가져옵니다. |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?