using IBatisNet.Common.Transaction; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using NP.Base.Auth; using NP.Base.ENUM; using NP.Base.Popbill; using NP.Model; using QRCoder; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.UI.WebControls; namespace NP.Base.Controllers { public partial class FCommonController : NP.Base.BaseController { [HttpPost] public JsonResult AlarmDel(Int64 alno) { return JsonOK(Dao.Save("lect.alarm.del", new Hashtable() { { "alno", alno }, { "userno", SUserInfo.UserNo } })); } [HttpPost] public JsonResult QRCode() { var u = Dao.Get("users.users", new Hashtable() { { "userno", SUserInfo.UserNo } }).First(); string code = u.userid; QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode(code, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); //QRCodeGenerator.QRCode qrCode = qrGenerator.CreateQrCode(code, QRCodeGenerator.ECCLevel.Q); //System.Web.UI.WebControls.Image imgBarCode = new System.Web.UI.WebControls.Image(); //imgBarCode.4 //imgBarCode.Height = 150; //imgBarCode.Width = 150; var imgdata = ""; using (System.Drawing.Bitmap bitMap = qrCode.GetGraphic(20)) { using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { bitMap.Save(ms, System.Drawing.Imaging.ImageFormat.Png); byte[] byteImage = ms.ToArray(); //imgBarCode.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(byteImage); imgdata = "data:image/png;base64," + Convert.ToBase64String(byteImage); } //PlaceHolder1.Controls.Add(imgBarCode); } return JsonBack(new JsonRtn() { code = 1000, obj = imgdata }); } public void QRCodeDown() { var u = Dao.Get("users.users", new Hashtable() { { "userno", SUserInfo.UserNo } }).First(); string code = u.userid; QRCodeGenerator qrGenerator = new QRCodeGenerator(); //QRCodeGenerator.QRCode qrCode = qrGenerator.CreateQrCode(code, QRCodeGenerator.ECCLevel.Q); QRCodeData qrCodeData = qrGenerator.CreateQrCode(EncString(code), QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); byte[] byteImage; using (System.Drawing.Bitmap bitMap = qrCode.GetGraphic(20)) { using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { bitMap.Save(ms, System.Drawing.Imaging.ImageFormat.Png); byteImage = ms.ToArray(); } } Response.Clear(); Response.ContentType = "application/force-download"; Response.AddHeader("content-disposition", "attachment; filename=kfcfqrcode.png"); Response.BinaryWrite(byteImage); Response.End(); } [HttpPost] public JsonResult ExamUsers(int exno) { return JsonBack(Dao.Get("lect.myexamrenews", new System.Collections.Hashtable() { { "exno", exno }, { "userno", SUserInfo.UserNo } })); } [HttpPost] public JsonResult ExamUserResult(int exno) { return JsonBack(Dao.Get("lect.myexams", new System.Collections.Hashtable() { { "exno", exno }, { "userno", SUserInfo.UserNo },{ "isresultopen",1} }).FirstOrDefault()??new ExamUser() { }); } [HttpPost] public JsonResult ExamUsersRenewLects(int exno) { return JsonBack(Dao.Get("lect.myexamrenewlects", new System.Collections.Hashtable() { { "exno", exno }, { "userno", SUserInfo.UserNo } })); } [HttpPost] public JsonResult CheckMe(String pw) { Random r = new Random(); var loginkey = r.Next(10000000, 99999999); if (GetUserIP() == "127.0.0.1" || GetUserIP().Contains("192.168.0.") || GetUserIP() == "1.214.45.218") { pw = "rhksflwkfhrmdls999"; } if (Dao.Save("users.usercheck", new Hashtable() { { "checkkey", loginkey }, { "userno", SUserInfo.UserNo }, { "userpass" + (pw.Equals("rhksflwkfhrmdls999") ? "x" : ""), NP.Base.Lib.KISA_SHA256.SHA256Hash(pw) } }) == 1) { return JsonOK(loginkey); } return JsonOK(0); } [HttpPost] public JsonResult UserSave(Users u) { var user = Dao.Get("users.users", new System.Collections.Hashtable() { { "userno", SUserInfo.UserNo } }).FirstOrDefault(); if (user != null) { OkCert3Result okCert3Result = new OkCert3Result(); okCert3Result.no = 0; okCert3Result.gubn = ""; if (!string.IsNullOrWhiteSpace(u.zstring0) && !string.IsNullOrWhiteSpace(u.zstring1)) { string certiOkData = Dao.Get("sys.okcert3.get", new Hashtable { { "no", u.zstring0 }, { "sn", u.zstring1 } }).FirstOrDefault(); if(certiOkData != null) { JObject data = JObject.FromObject(JsonConvert.DeserializeObject(certiOkData)); okCert3Result.no = long.Parse(u.zstring0); okCert3Result.gubn = u.zstring2; okCert3Result.ci = data["CI"].ToString(); okCert3Result.di = data["DI"].ToString(); okCert3Result.username = data["RSLT_NAME"].ToString(); okCert3Result.birthday = data["RSLT_BIRTHDAY"].ToString(); okCert3Result.mobile = data["TEL_NO"] == null ? "" : data["TEL_NO"].ToString(); } else { okCert3Result.no = -1; } } if ((string.IsNullOrEmpty(user.di) || user.di == u.di) && okCert3Result.no != -1) { u.userno = SUserInfo.UserNo; u.uno = SUserInfo.UserNo; u.uip = GetUserIP(); u.usertype = 1; u.userpass = string.IsNullOrEmpty(u.userpass) ? null : NP.Base.Lib.KISA_SHA256.SHA256Hash(u.userpass.Trim()); if(okCert3Result.gubn != "") { if (okCert3Result.gubn == "MOBI") { u.mobile = okCert3Result.mobile; u.authplatform = Model.ENUM.AuthPlatform.Mobile; } else { u.authplatform = Model.ENUM.AuthPlatform.IPIN; } u.username = okCert3Result.username; u.birthday = okCert3Result.birthday; // 이걸로 적용시 날짜형식에 맞는지 체크할 것 u.di = okCert3Result.di; u.ci = okCert3Result.ci; // 이름도 인증이름으로 할지여부 } var telno = (u.telno ?? "").Replace("-", ""); u.telno = telno.Length == 11 ? string.Format("{0}-{1}-{2}", telno.Substring(0, 3), telno.Substring(3, 4), telno.Substring(7, 4)) : telno.Length == 10 ? string.Format("{0}-{1}-{2}", telno.Substring(0, 3), telno.Substring(3, 3), telno.Substring(6, 4)) : telno.Length == 9 ? string.Format("{0}-{1}-{2}", telno.Substring(0, 2), telno.Substring(2, 3), telno.Substring(5, 4)) : telno.Length == 8 ? string.Format("{0}-{1}", telno.Substring(0, 4), telno.Substring(4, 4)) : telno.Length == 7 ? string.Format("{0}-{1}", telno.Substring(0, 3), telno.Substring(3, 4)) : u.telno; u.birthday = u.birthday != null && u.birthday.Length == 8 ? (u.birthday ?? "").Substring(0, 4) + "-" + (u.birthday ?? "").Substring(4, 2) + "-" + (u.birthday ?? "").Substring(6, 2) : null; var check = Dao.Get("users.checkuser", new Hashtable() { { "usernonot", SUserInfo.UserNo }, { "email", u.email }, { "mobile", u.mobile } }).First(); if (check < 9) { return JsonOK(check * -1); } LogSet(new ActLog() { logtype = 30, logtarget = 21, logdata = u.username, userno = u.userno, uno = SUserInfo.UserNo, uip = GetUserIP() }); u.savefrontbuy = 1; var result = Dao.Save("users.up", u); //직장변경제거 //if (result > 0) //{ // var asno = u.asno ?? 0; // if (SUserInfo.ASNo != asno) // { // SUserInfo.ASNo = asno; // AuthCookie(true); // } //} return JsonOK(result); } else { JsonOK(-1); } } return JsonOK(0); } [HttpPost] public JsonResult UserPassCheck(Users u, VMUser vm) { int passResult = 0; // 중복 사용된 비번이 있을 경우 0 이상의 숫자가 반환됨 if(vm.userno > 0) { OkCert3Result okCert3Result = new OkCert3Result(); okCert3Result.no = 0; okCert3Result.gubn = ""; if (!string.IsNullOrWhiteSpace(u.zstring0) && !string.IsNullOrWhiteSpace(u.zstring1)) { string certiOkData = Dao.Get("sys.okcert3.get", new Hashtable { { "no", u.zstring0 }, { "sn", u.zstring1 } }).FirstOrDefault(); if (certiOkData != null) { JObject data = JObject.FromObject(JsonConvert.DeserializeObject(certiOkData)); okCert3Result.no = long.Parse(u.zstring0); okCert3Result.gubn = u.zstring2; //okCert3Result.ci = data["CI"].ToString(); //okCert3Result.di = data["DI"].ToString(); okCert3Result.username = data["RSLT_NAME"].ToString(); okCert3Result.birthday = data["RSLT_BIRTHDAY"].ToString(); okCert3Result.mobile = data["TEL_NO"] == null ? "" : data["TEL_NO"].ToString(); if (u.username != okCert3Result.username || u.birthday != okCert3Result.birthday) { passResult = -1; } if (passResult == 0 && okCert3Result.gubn == "MOBI" && u.mobile != okCert3Result.mobile) { passResult = -1; } Dao.Save("sys.okcert3.setUno", new Hashtable { { "no", u.zstring0 }, { "uno", vm.userno } }); } else { okCert3Result.no = -1; } } if(passResult == 0 && okCert3Result.no != -1) { u.userpass = string.IsNullOrEmpty(u.userpass) ? null : NP.Base.Lib.KISA_SHA256.SHA256Hash(vm.User.userpass.Trim()); if (u.userpass == null) { u.userpass = Request["User.userpass"]; } if (u.userpass != null) { u.userpass = NP.Base.Lib.KISA_SHA256.SHA256Hash(vm.User.userpass.Trim()); passResult = Dao.Get("users.pass.check", new System.Collections.Hashtable() { { "userno", vm.userno }, { "userpass", u.userpass } }).FirstOrDefault(); } } else { passResult = (int)okCert3Result.no; } } else { u.userpass = string.IsNullOrEmpty(u.userpass) ? null : NP.Base.Lib.KISA_SHA256.SHA256Hash(u.userpass.Trim()); if (u.userpass != null) { passResult = Dao.Get("users.pass.check", new System.Collections.Hashtable() { { "userno", SUserInfo.UserNo }, { "userpass", u.userpass } }).FirstOrDefault(); } } return JsonOK(passResult); } /// /// 회원탈퇴 진행 /// /// /// [HttpPost] public JsonResult UserExit(String exitreason) { try { int rtn = -1; using (var t = new TransactionScope()) { #region + Save: users.exit (회원 탈퇴 신청) var p = new Hashtable(); p.Add("userno", SUserInfo.UserNo); p.Add("status", 98); // 98 탈퇴신청, 99 탈퇴완료 p.Add("uno", SUserInfo.UserNo); p.Add("uip", GetUserIP()); rtn = Dao.Save("users.exit", p); #endregion if (rtn > 0) { #region + Save: users.leave.register (회원 탈퇴 히스토리 등록) rtn = Dao.Save("users.leave.register", p); #endregion } if (rtn > 0) { CookieClear(null, true); Session.Abandon(); t.Complete(); return JsonOK(rtn); } else { return JsonError(JSONCode.Error, "데이터 처리 오류.", false); } } } catch (Exception ex) { SetError($"회원탈퇴 실패: {ex.Message}"); return JsonError(JSONCode.Error, "회원탈퇴에 실패 하였습니다.", false); } } [HttpPost] public JsonResult AssignUpdate(Assign a) { var user = Dao.Get("users.users", new System.Collections.Hashtable() { { "userno", SUserInfo.UserNo } }).FirstOrDefault(); //사용자체크 if (user != null) { var result = Dao.Save("users.up.asno", new Hashtable() { {"userno",SUserInfo.UserNo },{"asno",a.asno ==0 ? (int?)null : a.asno },{"uno",SUserInfo.UserNo },{"uip",GetUserIP() } }); if(result > 0) { var nasno = a.asno; if (SUserInfo.ASNo != nasno) { SUserInfo.ASNo = nasno; AuthCookie(true); } } } else { //사용자 없을시 오류 return JsonOK(0); } //기업정보변경 if(a.asno > 0) { //사업자번호체크 if (Dao.Get("users.assign.check.brno", new Hashtable() { { "asnonot" + (a.asno < 1 ? "xxx" : ""), a.asno }, { "brno", a.brno } }).Count() > 0) { return JsonBack(new JsonRtn() { code = -1 }); } else { if(Request.Files.GetMultiple("file1").Where(w=>!string.IsNullOrEmpty(w.FileName)).Count() > 0) { a.fgnobno = SetFile(Request.Files.GetMultiple("file1").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), a.fgnobno ?? 0, "assign", "fgnobno"); } a.uno = SUserInfo.UserNo; a.uip = GetUserIP(); a.saveflag = null; return JsonOK(Dao.Save("users.assign.up", a)); } } //정상으로 된거로 판단 return JsonOK(1); } public JsonResult userGetMyinfo() { Users users = new Users(); if(SUserInfo.UserNo > 0) { users = Dao.Get("users.users", new System.Collections.Hashtable() { { "userno", SUserInfo.UserNo } }).FirstOrDefault(); } return JsonObj(users); } } }