YNICTE/Base/Controller/ACommonUser.cs

457 lines
21 KiB
C#
Raw Normal View History

2020-10-12 14:39:23 +09:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using NP.Model;
using System.Collections;
using NP.Base.Auth;
using NP.Base.ENUM;
2025-07-23 13:21:57 +09:00
using IBatisNet.Common.Transaction;
2020-10-12 14:39:23 +09:00
namespace NP.Base.Controllers
{
public partial class ACommonController : NP.Base.BaseController
{
[HttpPost]
public JsonResult UserFind(int ftype, int? asno, String username, String usertypes, String usernameid, int? usertype, String profandmainadmin)
{
if (ftype == 1)
{
return JsonBackList(Dao.Get<Users>("users.users", new Hashtable() { { "usertypes", usertypes }, { "username", username }, { "profandmainadmin", 1 }, { "status", 1 }, { "usernameid", usernameid }, { "usertype", usertype }, { "asno", asno } }));
}
else if (ftype == 2)
{
return JsonBackList(Dao.Get<Users>("users.users", new Hashtable() { { "status", 1 }, { "usernameid", usernameid }, { "usertype", usertype }, { "asno", asno } }));
}
return JsonBackList(Dao.Get<Users>("users.users", new Hashtable() { { "includesysadmin", 1 }/*, { "usertypes", "11,81" }*/,{ "username", username }, { "status", 1 }, { "usernameid", usernameid }, { "usertype", usertype }, { "asno", asno } }));
}
[HttpPost]
public JsonResult AssignFind(String asname, int pno)
{
return JsonBackList(Dao.Get<Assign>("users.assigns", new Hashtable() { { "asname", asname }, { "status", 1 }, { "pagenum", pno }, { "pagerowsize", 10 } }));
}
[HttpPost]
2021-06-25 13:40:31 +09:00
public JsonResult AssignFind2(String asname, int pno)
{
return JsonBackList(Dao.Get<Assign>("users.assigns2", new Hashtable() { { "asname", asname }, { "status", 1 }, { "excel1", ",a.post" }, { "orderby", "a.asname" }, { "pagenum", pno }, { "pagerowsize", 10 } }));
}
[HttpPost]
2020-10-12 14:39:23 +09:00
[ValidateInput(false)]
public JsonResult UserSave(VMUser vm)
{
vm.User.uno = SUserInfo.UserNo; vm.User.uip = GetUserIP();
2020-10-12 14:39:23 +09:00
if (!string.IsNullOrEmpty(vm.User.userpass)) { vm.User.userpass = NP.Base.Lib.KISA_SHA256.SHA256Hash(vm.User.userpass.Trim()); }
vm.User.userid = vm.User.userid.Replace(" ","");
if (!string.IsNullOrEmpty(vm.User.email)) { vm.User.email = vm.User.email.Trim(); }
var check = Dao.Get<int>("users.checkuser", new Hashtable() { { "usernonot", vm.User.userno > 0 ? vm.User.userno : (int?)null }, { "userid", vm.User.userno > 0 ? null : vm.User.userid }, { "email", vm.User.email },{"mobile",vm.User.mobile } }).First();
2020-10-12 14:39:23 +09:00
if (check < 9)
{
return JsonOK(check * -1);
}
if (Request.Files.GetMultiple("file").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
vm.User.fgnoprofile = SetFile(Request.Files.GetMultiple("file").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), vm.User.fgnoprofile ?? 0, "users", "fgnoprofile");
}
if (vm.User.usertype > 91)
{
2020-11-30 14:13:00 +09:00
vm.User.asno = 1;
2020-10-12 14:39:23 +09:00
}
vm.User.mobile = vm.User.MobileFormat;
if (vm.User.userno < 1)
{
Dao.Insert("users.in", vm.User);
// 상태값 휴면 선택시
if (vm.User.usertype == 1 && vm.User.status == 8)
{
Dao.Save("users.dormant", new Hashtable() { { "usernos", vm.User.userno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } });
}
2020-10-12 14:39:23 +09:00
if (vm.User.usertype > 1)
{
AuthSet(new AuthLog() { uno = SUserInfo.UserNo, uip = GetUserIP(),userno = vm.User.userno, logtype = 2, usertypeorg = vm.User.usertype, usertypenew = vm.User.usertype });
}
return JsonOK(vm.User.userno);
}
else
{
LogSet(new ActLog() { logtype = 30, logtarget = 21, logdata = vm.User.username + "(" + vm.User.userid + ")", userno = vm.User.userno, uno = SUserInfo.UserNo, uip = GetUserIP() });
if (vm.User.usertype > 1)
{
AuthSet(new AuthLog() { uno = SUserInfo.UserNo, uip = GetUserIP(), logtype = 1, usertypenew = vm.User.usertype, userno = vm.User.userno });
}
var result = Dao.Save("users.up", vm.User);
// 상태값 휴면 선택시
if (vm.User.usertype == 1 && vm.User.status == 8)
{
Dao.Save("users.dormant", new Hashtable() { { "usernos", vm.User.userno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } });
}
return JsonOK(result);
2020-10-12 14:39:23 +09:00
}
2020-10-12 14:39:23 +09:00
}
[HttpPost]
public JsonResult UserExitJoin(int userno)
{
return JsonOK(Dao.Save("users.exitjoin", new Hashtable() { { "userno", userno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
2025-07-23 13:21:57 +09:00
/// <summary>
/// 탈퇴
/// </summary>
/// <param name="usernos">회원번호들 ("1,2,3,4...")</param>
/// <returns></returns>
public JsonResult UsersDel(string usernos)
2020-10-12 14:39:23 +09:00
{
2025-07-23 13:21:57 +09:00
int resultCode = 0;
var p = new Hashtable();
2025-07-23 13:21:57 +09:00
#region + Save: users.dormant.delete ( )
p.Clear();
p.Add("usernos", usernos);
Dao.Save("users.dormant.delete", p);
#endregion
#region + Save: users.leave ( )
p.Clear();
p.Add("usernos", usernos);
p.Add("uno", SUserInfo.UserNo);
p.Add("uip", GetUserIP());
resultCode = Dao.Save("users.leave", p);
#endregion
return JsonOK(resultCode);
2020-10-12 14:39:23 +09:00
}
2025-07-23 13:21:57 +09:00
2020-10-12 14:39:23 +09:00
public JsonResult UsersDormant(String usernos)
{
return JsonOK(Dao.Save("users.dormant", new Hashtable() { { "usernos", usernos }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
[HttpPost]
public JsonResult DormantCancel(int userno)
{
if (Dao.Get<Users>("users.dormants", new Hashtable() { { "userno", userno } }).Count() < 1)
{
return JsonBack(new JsonRtn() { code = 1 });
}
return JsonOK(Dao.Save("users.dormant.cancel", new Hashtable() { { "usernos", userno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
[HttpPost]
2020-10-12 14:39:23 +09:00
public JsonResult UserEE(int userno)
{
var user = Dao.Get<Users>("users.ee", userno).FirstOrDefault();
if (user != null && user.eastereggkey != null)
{
if (user.usertype == 1)
{
LogSet(new ActLog() { logtype = 40, logtarget = 51, logdata = "[사용자]" + user.username + " 권한입장", uno = SUserInfo.UserNo, uip = GetUserIP() });
2020-12-28 15:18:03 +09:00
return JsonOKObj((string.IsNullOrEmpty(user.subdomain) ? GetConfig("fronturl") : GetConfig("isstaging") == "1"? string.Format("https://{0}.nptc.kr",user.subdomain) : string.Format("https://{0}.cte.or.kr", user.subdomain)) + "/Account/AdminEE?un=" + userno + "&eek=" + user.eastereggkey + "&at=" + SUserInfo.UserType + "&an=" + SUserInfo.UserNo);
2020-10-12 14:39:23 +09:00
}
else if (user.usertype == 11)
{
LogSet(new ActLog() { logtype = 41, logtarget = 51, logdata = "[교강사]" + user.username + " 권한입장", uno = SUserInfo.UserNo, uip = GetUserIP() });
return JsonOKObj("/Account/AdminEE?un=" + userno + "&eek=" + user.eastereggkey + "&at=" + SUserInfo.UserType + "&an=" + SUserInfo.UserNo);
}
}
return JsonOK(0);
}
[HttpPost]
public JsonResult AssignSave(VMUser vm)
{
vm.Assign.brno = vm.Assign.brno == null ? null : vm.Assign.brno.Replace("-", "");
vm.Assign.grno = vm.Assign.grno == null ? null : vm.Assign.grno.Replace("-", "");
if (!SUserInfo.IsAdmin && vm.Assign.asno < 1)
{
return JsonOK(0);
}
else if (Dao.Get<Assign>("users.assign.check.ascode", new Hashtable() { { "asnonot" + (vm.Assign.asno < 1 ? "xxx" : ""), vm.Assign.asno }, { "ascode", vm.Assign.ascode } }).Count() > 0)
{
return JsonBack(new JsonRtn() { code = 1 });
}
2020-10-16 17:53:04 +09:00
else if (!string.IsNullOrEmpty(vm.Assign.brno) && Dao.Get<Assign>("users.assign.check.brno", new Hashtable() { { "asnonot" + (vm.Assign.asno < 1 ? "xxx" : ""), vm.Assign.asno }, { "brno", vm.Assign.brno } }).Count() > 0)
{
return JsonBack(new JsonRtn() { code = 2 });
}
2020-10-12 14:39:23 +09:00
vm.Assign.uno = SUserInfo.UserNo; vm.Assign.uip = GetUserIP();
if (Request.Files.GetMultiple("fgnobno").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
vm.Assign.fgnobno = SetFile(Request.Files.GetMultiple("fgnobno").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), vm.Assign.fgnobno ?? 0, "assign", "fgnobno");
}
if (Request.Files.GetMultiple("fgnobank").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
vm.Assign.fgnobank = SetFile(Request.Files.GetMultiple("fgnobank").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), vm.Assign.fgnobank ?? 0, "assign", "fgnobank");
}
if (vm.Assign.asno < 1)
{
Dao.Insert<Assign>("users.assign.in", vm.Assign);
return JsonOK(vm.Assign.asno);
}
else
{
//고객사관리자는 회원번호,회원여부,회원사구분,계열,키워드,가입일,탈퇴일,상태 변경 없음
vm.Assign.saveflag = SUserInfo.IsAdmin ? "1" : null;
return JsonOK(Dao.Save("users.assign.up", vm.Assign));
}
}
[HttpPost]
public JsonResult AssignDel(int asno)
{
if (!SUserInfo.IsAdmin)
{
return JsonOK(0);
}
return JsonOK(Dao.Save("users.assign.del", new Hashtable() { { "asno", asno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
[HttpPost]
public JsonResult AssignManSave(AssignMan d)
{
d.uno = SUserInfo.UserNo; d.uip = GetUserIP();
//정일때 해당하는 정보가 있는지 체크
if (d.jtype == 0)
{
if (Dao.Get<AssignMan>("users.assignmans", new Hashtable() { { "asno", d.asno }, { "mtype", d.mtype }, { "jtype", d.jtype } }).Where(w => w.asmno != d.asmno).Count() > 0)
{
return JsonOK(-1);
}
}
if (d.asmno > 0)
{
LogSet(new ActLog() { logtype = 51, logtarget = 32, logdata = d.mname, userno = d.asmno, uno = SUserInfo.UserNo, uip = GetUserIP() });
}
return JsonOK(Dao.Save("users.assignman." + (d.asmno < 1 ? "in" : "up"), d));
}
[HttpPost]
public JsonResult AssignManDel(Int32 asmno, String mname)
{
LogSet(new ActLog() { logtype = 51, logtarget = 32, logdata = mname, userno = asmno, uno = SUserInfo.UserNo, uip = GetUserIP() });
return JsonOK(Dao.Save("users.assignman.del", new Hashtable() { { "asmno", asmno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
[HttpPost]
public JsonResult AssignFeeSave(AssignFee d, bool isin, bool isdel = false)
{
d.uno = SUserInfo.UserNo; d.uip = GetUserIP();
if (isdel)
{
return JsonOK(Dao.Save("users.assignfee.del", d));
}
return JsonOK(Dao.Save("users.assignfee." + (isin ? "in" : "up"), d));
}
[HttpPost]
[ValidateInput(false)]
public JsonResult AssignSiteSave(Assign d)
{
d.uno = SUserInfo.UserNo; d.uip = GetUserIP();
if (d.issite == 1)
{
if (Dao.Get<Assign>("users.assignsite", new Hashtable() { { "asnonot", d.asno > 0 ? d.asno : (int?)null }, { "subdomain", d.subdomain } }).Count() > 0)
{
return JsonOK(-1);
}
}
if (Request.Files.GetMultiple("sitelogofile").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
d.sitelogo = SetFile(Request.Files.GetMultiple("sitelogofile").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), d.sitelogo ?? 0, "assign", "sitelogo");
}
if (d.issite == 1)
{
//고객사마이페이지 공지사항 추가
Dao.Save("board.bmassign.save", d);
}
else
{
Dao.Save("board.bmassign.save2", d);
}
return JsonOK(Dao.Save("users.assignsite.save", d));
}
[HttpPost]
public JsonResult UserLeave(String usernos)
{
return JsonOK(Dao.Save("users.exitjoin", new Hashtable() { { "usernos", usernos }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
2021-01-06 13:01:08 +09:00
[HttpPost]
public JsonResult CouncelSave(VMUser vm)
{
vm.Councel.uno = SUserInfo.UserNo; vm.Councel.uip = GetUserIP();
vm.Councel.userno = vm.intval2;
//수정
if(vm.Councel.bno < 1)
{
Dao.Insert("councel.in", vm.Councel);
return JsonOK(vm.Councel.bno);
}
else
{
return JsonOK(Dao.Save("councel.up", vm.Councel));
}
}
[HttpPost]
public JsonResult CouncelDel(int bno)
{
return JsonOK(Dao.Save("councel.del",new Hashtable(){ {"bno",bno },{"uno",SUserInfo.UserNo },{"uip",GetUserIP() } }));
}
/// <summary>
/// pwchange partial 팝업 내 비밀번로 변경
/// </summary>
/// <param name="vm"></param>
/// <returns></returns>
[HttpPost]
public JsonResult PwChange(VMUser vm)
{
if (string.IsNullOrEmpty(vm.User.userpass) || vm.User.userpass.Trim() == "")
{
if (Dao.Save("users.resetuserpass", new Hashtable() { { "userno", vm.User.userno } }) > 0)
{
return JsonOK(1);
}
}
if (vm.User.userno > 0 && !string.IsNullOrEmpty(vm.User.userpass) && vm.User.userpass.Trim() != "")
{
if (Dao.Save("users.resetuserpass", new Hashtable() { { "userpass", NP.Base.Lib.KISA_SHA256.SHA256Hash(vm.User.userpass) }, { "userno", vm.User.userno } }) > 0)
{
return JsonOK(1);
}
}
return JsonOK(0);
}
/// <summary>
/// 개인정보수정
/// </summary>
/// <param name="vm"></param>
/// <returns></returns>
[HttpPost]
[ValidateInput(false)]
public JsonResult UserEdit(VMUser vm)
{
vm.User.uno = SUserInfo.UserNo; vm.User.uip = GetUserIP();
if (!string.IsNullOrEmpty(vm.User.userpass)) { vm.User.userpass = NP.Base.Lib.KISA_SHA256.SHA256Hash(vm.User.userpass); }
vm.User.userid = vm.User.userid.Trim();
if (!string.IsNullOrEmpty(vm.User.email)) { vm.User.email = vm.User.email.Trim(); }
vm.User.mobile = vm.User.MobileFormat;
var check = Dao.Get<int>("users.checkuser", new Hashtable() { { "usernonot", vm.User.userno > 0 ? vm.User.userno : (int?)null }, { "userid", vm.User.userno > 0 ? null : vm.User.userid }, { "email", vm.User.email }, { "mobile", string.IsNullOrEmpty(vm.User.mobile) ? null : vm.User.mobile } }).First();
if (check < 9)
{
if (vm.User.usertype == 1 || check != 3)
{
return JsonOK(check * -1);
}
}
if (Request.Files.GetMultiple("file").Where(w => !string.IsNullOrEmpty(w.FileName)).Count() > 0)
{
vm.User.fgnoprofile = SetFile(Request.Files.GetMultiple("file").Where(w => !string.IsNullOrEmpty(w.FileName)).ToList(), vm.User.fgnoprofile ?? 0, "users", "fgnoprofile");
}
if (vm.User.usertype > 90)
{
vm.User.asno = 1;
}
LogSet(new ActLog() { logtype = 30, logtarget = 21, logdata = vm.User.username + "(" + vm.User.userid + ")", userno = vm.User.userno, uno = SUserInfo.UserNo, uip = GetUserIP() });
if (vm.User.usertype > 1)
{
AuthSet(new AuthLog() { uno = SUserInfo.UserNo, uip = GetUserIP(), logtype = 1, usertypenew = vm.User.usertype, userno = vm.User.userno });
}
return JsonOK(Dao.Save("users.edit", vm.User));
}
2025-07-23 13:21:57 +09:00
/// <summary>
/// 회원 탈퇴
/// </summary>
/// <param name="usernos">, 로 구분자 생성된 회원번호들</param>
/// <param name="leaveStatus">탈퇴신청상태 (1:완료, 2:취소)</param>
/// <returns></returns>
[HttpPost]
public JsonResult UserLeaves(string usernos, int leaveStatus)
{
var p = new Hashtable();
try
{
int resultCode = 0;
using (var t = new TransactionScope())
{
if (leaveStatus == 1)
{
#region + Save: users.dormant.delete ( , .)
p.Clear();
p.Add("usernos", usernos);
resultCode = Dao.Save("users.dormant.delete", p);
#endregion
#region + Save: users.leave ( ( ))
p.Clear();
p.Add("usernos", usernos);
p.Add("uno", SUserInfo.UserNo);
p.Add("uip", GetUserIP());
resultCode = Dao.Save("users.leave", p);
#endregion
#region + Save: users.leave.update ( (1))
if (resultCode > 0)
{
p.Clear();
p.Add("status", leaveStatus);
p.Add("usernos", usernos);
p.Add("uno", SUserInfo.UserNo);
p.Add("uip", GetUserIP());
resultCode = Dao.Save("users.leave.update", p);
}
#endregion
}
else if (leaveStatus == 2)
{
#region + Save: users.status.update (: users테이블 status )
p.Clear();
p.Add("usernos", usernos);
p.Add("status", 1); // 탈퇴취소로 정상으로 되돌림
p.Add("uno", SUserInfo.UserNo);
p.Add("uip", GetUserIP());
resultCode = Dao.Save("users.status.update", p);
#endregion
#region + Save: users.leave.update ( (2))
if (resultCode > 0)
{
p.Clear();
p.Add("status", leaveStatus);
p.Add("usernos", usernos);
p.Add("uno", SUserInfo.UserNo);
p.Add("uip", GetUserIP());
resultCode = Dao.Save("users.leave.update", p);
}
#endregion
}
// 쿼리 2건 실행에 대한 최종 커밋
if (resultCode > 0)
{
t.Complete();
}
}
return JsonOK(resultCode);
}
catch (Exception ex)
{
SetError($"회원 탈퇴처리 실패: {ex.Message}");
return JsonBack(new JsonRtn() { code = 1 });
}
}
2020-10-12 14:39:23 +09:00
}
}