diff --git a/BO/Controllers/AccountController.cs b/BO/Controllers/AccountController.cs index 2bf4b43..0fe86c6 100644 --- a/BO/Controllers/AccountController.cs +++ b/BO/Controllers/AccountController.cs @@ -477,6 +477,140 @@ namespace NP.BO.Controllers } return null; } + + /// + /// 윈도우스케쥴러 매일 새벽 4 시 + /// 휴면, 탈퇴처리전 메시지 + /// + /// + /// + /// + /// + public ActionResult Dormant(String sss, String time, int test = 0) + { + if (test == 1) + { + SetError("encouragetest: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); + } + else { + if ("nptech1234".Equals(sss)) + { + // 조회시점 => (휴면테이블.cdt + 1년) 인 컬럼 + if (time == "0400") + { + Dao.Save("users.dormant.del", new Hashtable() { { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }); + } + // 조회시점 => (최근로그인일시 + 1년) 인 컬럼 (휴먼 테이블에 저장) + else if (time == "0430") + { + Dao.Save("users.dormant.insert", new Hashtable() { { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }); + } + + // 조회시점 = (휴면테이블.cdt + 335일)<년월일> 인 컬럼 + else if (time == "1000") + { + var m = new Memo() { Users = new List() { } }; + + var select_del = Dao.Get("users.dormants.del", new Hashtable() { { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }); + foreach (var u in select_del.Where(w => w.intval == 1)) + { + if (!string.IsNullOrEmpty(u.strval2)) + { + /* + * SaveSmsMulti 함수 사용 -> 메시지 정보 sms 테이블에 저장, 모니터링 테이블 mts_sms_msg 에 저장 + */ + m.Users.Add(new MemoUser() + { + userno = u.longval, + smstype = "S", + isok = string.IsNullOrEmpty(u.strval2) ? -1 : 1, + mcontents = string.Format("[영남건설기술교육원] 장기미접속 회원ID 삭제안내\n\n " + + "안녕하세요 회원님, 영남건설기술교육원은 소중한 회원님의 개인정보 보호를 위해 회원이 2년간 로그인하지 않는 경우," + + "회원탈퇴 처리 및 개인정보가 파기됨을 안내해드립니다.\n\n" + + "회원계정 : {0}\n" + + "적용일 : {1}\n\n" + + "서비스를 계속 이용하시려면, 위 적용일 이전에 로그인을 진행해주세요!", + u.strval, u.time.ToString("yyyy년 MM월 dd일")) + + }); + + if (m.Users.Where(w => w.isok == 1).Count() > 0) + { + SaveSmsMulti(m.Users.Where(w => w.isok == 1).ToList()); + m.Users.Clear(); + } + + /* + SendSms(u.strval2, null, null, string.Format("[영남건설기술교육원] 장기미접속 회원ID 삭제안내\n\n " + + "안녕하세요 회원님, 영남건설기술교육원은 소중한 회원님의 개인정보 보호를 위해 회원이 2년간 로그인하지 않는 경우," + + "회원탈퇴 처리 및 개인정보가 파기됨을 안내해드립니다.\n\n" + + "회원계정 : {0}\n" + + "적용일 : {1}\n\n" + + "서비스를 계속 이용하시려면, 위 적용일 이전에 로그인을 진행해주세요!", + u.strval, u.time.ToString("yyyy년 MM월 dd일")), null + ); + */ + } + } + } + // 조회시점 = (최근로그인일시 + 335일)<년월일> 인 컬럼 + else if (time == "1030") + { + var m = new Memo() { Users = new List() { } }; + + var select_save = Dao.Get("users.dormants.save", new Hashtable() { { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }); + + foreach (var u in select_save.Where(w => w.intval == 1)) + { + if (!string.IsNullOrEmpty(u.strval2)) + { + /* + * SaveSmsMulti 함수 사용 -> 메시지 정보 sms 테이블에 저장, 모니터링 테이블 mts_sms_msg 에 저장 + */ + m.Users.Add(new MemoUser() + { + userno = u.longval, + smstype = "S", + isok = string.IsNullOrEmpty(u.strval2) ? -1 : 1, + mcontents = string.Format("[영남건설기술교육원] 휴면계정 전환 예정 안내\n\n " + + "안녕하세요 회원님, 영남건설기술교육원은 소중한 회원님의 개인정보 보호를 위해 " + + "개인정보보호법 제 39조의6(개인정보의 파기에 대한 특례)에 의거하여 " + + "고객님의 계정을 휴면상태로 변경하고 소중한 개인정보를 안전한 공간에 분리하여 보관할 예정입니다.\n\n" + + "회원계정 : {0}\n" + + "휴면계정 전환예정일 : {1}\n\n" + + "서비스를 계속 이용하시려면, 위 전환예정일 이전에 로그인을 진행해주세요!", + u.strval, u.time.ToString("yyyy년 MM월 dd일")) + + }); + + if (m.Users.Where(w => w.isok == 1).Count() > 0) + { + SaveSmsMulti(m.Users.Where(w => w.isok == 1).ToList()); + m.Users.Clear(); + } + + /* + SendSms(u.strval2, null, null, string.Format("[영남건설기술교육원] 휴면계정 전환 예정 안내\n\n " + + "안녕하세요 회원님, 영남건설기술교육원은 소중한 회원님의 개인정보 보호를 위해 " + + "개인정보보호법 제 39조의6(개인정보의 파기에 대한 특례)에 의거하여 " + + "고객님의 계정을 휴면상태로 변경하고 소중한 개인정보를 안전한 공간에 분리하여 보관할 예정입니다.\n\n" + + "회원계정 : {0}\n" + + "휴면계정 전환예정일 : {1}\n\n" + + "서비스를 계속 이용하시려면, 위 전환예정일 이전에 로그인을 진행해주세요!", + u.strval, u.time.ToString("yyyy년 MM월 dd일")), null + ); + */ + } + } + } + + } + + } + + return null; + } + public String KFCFLOGINAUTH(String userid) { if (string.IsNullOrEmpty(userid)) diff --git a/Base/Controller/BasePartialController.cs b/Base/Controller/BasePartialController.cs index deb8894..f880716 100644 --- a/Base/Controller/BasePartialController.cs +++ b/Base/Controller/BasePartialController.cs @@ -13,6 +13,7 @@ using System.Web.Compilation; using NP.Model; using System.Net.Http; using OfficeOpenXml; +using System.Collections; namespace NP.Base { @@ -1138,8 +1139,35 @@ namespace NP.Base protected int SendSms(String SendNo, String RcvNo, String Subject, String Msg, String time, bool IsMMS = false, String mmstype = "0") { SendNo = string.IsNullOrEmpty(SendNo) ? "02-551-2097" : SendNo; + + /* SMS 메시지 작업1 */ + var mtype = (int?)null; + var CMID = ""; + + if (!string.IsNullOrEmpty(Msg)) + { + SendNo = SendNo.Replace("-", ""); + Msg = (Msg.Length > 1000 ? Msg.Substring(0, 1000) : Msg).Replace("\"", "'"); + mtype = System.Text.Encoding.Default.GetBytes(Msg).Length <= 90 ? 0 : System.Text.Encoding.Default.GetBytes(Msg).Length <= 2000 ? 5 : (int?)null; + } + try { + /* SMS 메시지 작업2 */ + if(!string.IsNullOrEmpty(Msg) && mtype != null) + { + var uno = SUserInfo.UserNo; + var uip = GetUserIP(); + + // sms 테이블에 저장 to-do !!!!!!!!!!!!!!!!! + //Dao.Insert("common.sms.in", new Hashtable() { { } }); + + var title = "[영남건설기술교육원 LMS]"; + CMID = DateTime.Now.ToString("yyMMddHHmmss0000"); + string strConn = GetConfig("smsserver"); + } + + //return Sms.Save(IsMMS?"mms":"sms", new System.Collections.Hashtable() { {"SendNo", SendNo}, { "RcvNo", RcvNo.Replace("-", "") }, { "Subject", Subject }, { "Msg", Msg }, { "SendTime", time }, {"MType", mmstype } }); return 1; } @@ -1288,6 +1316,11 @@ namespace NP.Base } } } + /// + /// 알림톡발송 + /// + /// + /// public void SaveTalk(IList Users, String tmplkey) { Memo m = new Memo() { Users = Users ,uno = SUserInfo.UserNo,uip = GetUserIP()}; @@ -1318,6 +1351,11 @@ namespace NP.Base Dao.Save("common.smsuser.in", m); } } + /// + /// sms,mms 발송 + /// + /// + /// [HttpPost] public JsonResult SaveSmsMulti(IList Users) { diff --git a/Dao/MyBatis/Maps/User.xml b/Dao/MyBatis/Maps/User.xml index 64cb95a..6575e56 100644 --- a/Dao/MyBatis/Maps/User.xml +++ b/Dao/MyBatis/Maps/User.xml @@ -408,6 +408,23 @@ + + insert into userdormant(userno,username,usernameeng,email,isacceptemail,mobile + ,telno,userpno,bankno,post,address1,address2,birthday,cdt) + select a.userno,a.username,a.usernameeng,a.email,a.isacceptemail,a.mobile + ,a.telno,a.userpno,a.bankno,a.post,a.address1,a.address2, a.birthday, cdt + from users a + left outer join userdormant b on b.userno = a.userno + where date_add(a.logintime,interval 1 year) < now(); + and a.status != 99 + + update users set + ,username='삭제됨',usernameeng=null,email=null,mobile=null,telno=null,userpno=null,bankno=null,post=null,address1=null,address2=null,birthday=null,status=8 + where date_add(a.logintime,interval 1 year) < now(); + and a.status != 99 + + + - select regexp_replace(b.userid , '(?<=.{3}).','*') strval + select a.userno longval, regexp_replace(b.userid , '(?<=.{3}).','*') strval ,CAST(AES_DECRYPT(UNHEX(a.mobile),) AS char) strval2 ,date_add(a.cdt, interval 335 day) time ,b.isacceptmobile intval @@ -873,9 +891,9 @@