You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

472 lines
20 KiB

using EasyBL.WebApi;
using EasyBL.WebApi.Common;
using EasyBL.WebApi.Message;
using EasyNet;
using Entity;
using Entity.ShowEasyDtos;
using Entity.Sugar;
using Entity.ViewModels;
using Newtonsoft.Json;
using SqlSugar;
using SqlSugar.Base;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Web;
namespace EasyBL.WEBAPP.SYS
{
public class TestService : ServiceBase
{
public HttpResponseMessage GetAllCity()
{
SuccessResponseMessage srm = null;
string sError = null;
var db = SugarBase.GetIntance();
try
{
do
{
var saCountry = db.Queryable<SETB_SYS_Country>()
//搜尋條件
.Where(x => x.Effective == "Y" && x.DelStatus == "N")
.ToList();
//返回token信息
srm = new SuccessResponseMessage(null, null);
srm.DATA.Add(BLWording.REL, saCountry);
//rm.DATA.Add(BLWording.REL, pml);
} while (false);
}
catch (Exception ex)
{
sError = Util.GetLastExceptionMsg(ex);
srm = new SuccessResponseMessage(null, null)
{
STATUSCODE = (int)StatusCodeEnum.Error,
MSG = StatusCodeEnum.Error.GetEnumText()
};
srm.DATA.Add(BLWording.REL, "");
}
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm));
}
public HttpResponseMessage GetAllCityByID(string ID, string Name)
{
SuccessResponseMessage srm = null;
string sError = null;
var db = SugarBase.GetIntance();
try
{
do
{
var saCountry = db.Queryable<SETB_SYS_Country>()
//搜尋條件
.Where(x => x.Effective == "Y" && x.DelStatus == "N")
.Where(x => x.CountryName == Name)
.ToList();
//返回token信息
srm = new SuccessResponseMessage(null, null);
srm.DATA.Add(BLWording.REL, saCountry);
//rm.DATA.Add(BLWording.REL, pml);
} while (false);
}
catch (Exception ex)
{
sError = Util.GetLastExceptionMsg(ex);
srm = new SuccessResponseMessage(null, null)
{
STATUSCODE = (int)StatusCodeEnum.Error,
MSG = StatusCodeEnum.Error.GetEnumText()
};
srm.DATA.Add("token", "");
//LogAndSendEmail(sError + " Param:" , "AuthorizeService", nameof(GetToken), "GetToken(获取token)", "", "", "");
}
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm));
}
public HttpResponseMessage DeleteCity(string ID)
{
SuccessResponseMessage rm = null;
string sMsg = null;
try
{
rm = SugarBase.ExecTran(db =>
{
do
{
var iRel = db.Deleteable<SETB_UTL_City>().Where(x => x.CityID == ID).ExecuteCommand();
rm = new SuccessResponseMessage(null, null);
rm.DATA.Add(BLWording.REL, iRel);
} while (false);
return rm;
});
}
catch (Exception ex)
{
sMsg = Util.GetLastExceptionMsg(ex);
rm = new SuccessResponseMessage(null, null)
{
STATUSCODE = (int)StatusCodeEnum.Error,
MSG = StatusCodeEnum.Error.GetEnumText()
};
}
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(rm));
}
public HttpResponseMessage InsertUser(TestUser i_crm)
{
string sMsg = null;
SuccessResponseMessage srm = SugarBase.ExecTran(db =>
{
do
{
var iRel = db.Insertable(i_crm).ExecuteCommand();
srm = new SuccessResponseMessage(null, null);
srm.DATA.Add(BLWording.REL, iRel);
} while (false);
return srm;
});
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm));
}
public HttpResponseMessage Insert(SETB_CMS_Member i_crm)
{
string sMsg = null;
SuccessResponseMessage srm = SugarBase.ExecTran(db =>
{
do
{
var iRel = db.Insertable(i_crm).ExecuteCommand();
srm = new SuccessResponseMessage(null, null);
srm.DATA.Add(BLWording.REL, iRel);
} while (false);
return srm;
});
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm));
}
public HttpResponseMessage UpdStatus( string OrgID, string MemberID)
{
string sMsg = null;
SuccessResponseMessage srm = SugarBase.ExecTran(db =>
{
do
{
var oUser = db.Queryable<SETB_CMS_Member>().Single(x => x.OrgID == OrgID && x.MemberID == MemberID);
oUser.Status = "1";//注冊成功
var iRel = db.Updateable(oUser).ExecuteCommand();
//注冊成功后默認登錄
var ticket = new OTB_SYS_TicketAuth
{
OrgID = oUser.OrgID,
UserID = oUser.Account,
UserName = oUser.FirstName,
Token = SignExtension.CreateToken(),
// LoginIp = i_crm.ClientIP,
LoginTime = DateTime.Now
};
var iExpireTime = 240;
var sExpireTime = Common.GetSystemSetting(db, oUser.OrgID, @"ExpireTime");
if (!string.IsNullOrEmpty(sExpireTime))
{
iExpireTime = int.Parse(sExpireTime);
}
else
{
iExpireTime = int.Parse(Common.GetAppSettings(@"ExpireTime"));
}
ticket.ExpireTime = DateTime.Now.AddMinutes(iExpireTime); //30分钟过期
ticket.IsVerify = @"Y";
var oTicket = db.Queryable<OTB_SYS_TicketAuth>().Single(x => x.OrgID == OrgID && x.UserID == oUser.Account);
if (oTicket != null)
{
db.Updateable(ticket).IgnoreColumns(x => x.OutlookId).Where(x => x.NO == oTicket.NO).ExecuteCommand();
}
else
{
ticket.CreateTime = DateTime.Now;
db.Insertable(ticket).ExecuteCommand();
}
//記錄log日誌
db.Insertable(new OTB_SYS_LoginLog
{
OrgId = ticket.OrgID,
UserId = ticket.UserID,
UserName = ticket.UserName,
LoginIp = ticket.LoginIp,
LoginTime = ticket.LoginTime
}).ExecuteCommand();
HttpRuntimeCache.Set(ticket.OrgID + ticket.UserID, ticket, iExpireTime * 60, true);
HttpContext.Current.Session.Add(@"orgid", ticket.OrgID);
HttpContext.Current.Session.Add(@"userid", ticket.UserID);
HttpCookie cookie = new HttpCookie("EURO_COOKIE");//初始化並設置Cookie的名稱
DateTime dt = DateTime.Now;
TimeSpan ts = new TimeSpan(0, 0, 1, 0, 0);//過期時間為1分鐘
cookie.Expires = dt.Add(ts);//設置過期時間
cookie.Values.Add("orgid", ticket.OrgID);
cookie.Values.Add("userid", ticket.UserID);
HttpContext.Current.Response.AppendCookie(cookie);
var strtoken = string.Format(@"orgid:{0},userid:{1},token:{2}", ticket.OrgID, ticket.UserID, ticket.Token);
srm = new SuccessResponseMessage(null, null);
srm.DATA.Add("authtoken", SecurityUtil.Encrypt(strtoken));
} while (false);
return srm;
});
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm));
}
public HttpResponseMessage GetMemberInfo(string OrgID, string Account)
{
SuccessResponseMessage srm = null;
string sError = null;
var db = SugarBase.GetIntance();
try
{
do
{
var saCountry = db.Queryable<SETB_CMS_Member>()
//搜尋條件
.Where(x => x.OrgID == OrgID && x.Account == Account)
.First();
//返回user信息
srm = new SuccessResponseMessage(null, null);
srm.DATA.Add(BLWording.REL, saCountry);
} while (false);
}
catch (Exception ex)
{
sError = Util.GetLastExceptionMsg(ex);
srm = new SuccessResponseMessage(null, null)
{
STATUSCODE = (int)StatusCodeEnum.Error,
MSG = StatusCodeEnum.Error.GetEnumText()
};
}
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm));
}
public HttpResponseMessage GetToken(string orgId, string userId, string pasWd)
{
SuccessResponseMessage srm = null;
string sError = null;
var db = SugarBase.GetIntance();
try
{
do
{
//判断参数是否合法
if (string.IsNullOrEmpty(orgId) || string.IsNullOrEmpty(userId) || string.IsNullOrEmpty(pasWd))
{
srm = new SuccessResponseMessage(null, null)
{
STATUSCODE = (int)StatusCodeEnum.ParameterError,
MSG = StatusCodeEnum.ParameterError.GetEnumText()
};
srm.DATA.Add("token", "");
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm));
}
var oTicket = (OTB_SYS_TicketAuth)HttpRuntimeCache.Get(orgId + userId);
if (oTicket == null || oTicket.ExpireTime < DateTime.Now)
{
var sEncryptPwd = SecurityUtil.Encrypt(pasWd);//將輸入之密碼轉換驗證格式
var oUser = db.Queryable<SETB_CMS_Member>().Single(it => it.OrgID == orgId && it.Account == userId && it.Password == sEncryptPwd);
if (oUser != null)
{
oTicket = db.Queryable<OTB_SYS_TicketAuth>().Single(it => it.OrgID == orgId && it.UserID == userId);
if (oTicket == null)
{
oTicket = new OTB_SYS_TicketAuth();
}
//oTicket.Token = SignExtension.CreateToken();
//var iExpireTime = 240;
//var sExpireTime = Common.GetSystemSetting(db, orgId, "ExpireTime");
//if (!string.IsNullOrEmpty(sExpireTime))
//{
// iExpireTime = int.Parse(sExpireTime);
//}
//else
//{
// iExpireTime = int.Parse(WebSettingsConfig.ExpireTime);
//}
//oTicket.ExpireTime = DateTime.Now.AddMinutes(iExpireTime); //30分钟过期
//if (oTicket.UserID != null && oTicket.OrgID != null)
//{
// var iRel = db.Updateable(oTicket).IgnoreColumns(it => new { it.NO })
// .Where(it => it.NO == oTicket.NO).ExecuteCommand();
//}
//else
//{
// oTicket.OrgID = orgId;
// oTicket.UserID = userId;
// oTicket.UserName = "";
// oTicket.LoginIp = "";
// oTicket.LoginTime = DateTime.Now;
// oTicket.CreateTime = DateTime.Now;
// db.Insertable(oTicket).ExecuteCommand();
//}
// HttpRuntimeCache.Set(oTicket.OrgID + oTicket.UserID, oTicket, iExpireTime * 60, true);
}
else
{
oTicket = new OTB_SYS_TicketAuth();
}
}
//返回token信息
srm = new SuccessResponseMessage(null, null);
srm.DATA.Add("token", oTicket.Token);
} while (false);
}
catch (Exception ex)
{
sError = Util.GetLastExceptionMsg(ex);
srm = new SuccessResponseMessage(null, null)
{
STATUSCODE = (int)StatusCodeEnum.Error,
MSG = StatusCodeEnum.Error.GetEnumText()
};
srm.DATA.Add("token", "");
LogAndSendEmail(sError + " Param:" + orgId + "|" + userId + "|" + pasWd, ex, orgId, userId, "TestService", nameof(GetToken), "GetToken(获取token)", "", "", "");
}
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm));
}
public HttpResponseMessage Login(TestUser dto)
{
SuccessResponseMessage srm = null;
string sError = null;
var db = SugarBase.GetIntance();
try
{
do
{
var sUserID = dto.Account;
var sPassword = dto.Password;
if (string.IsNullOrWhiteSpace(sUserID))
{
sError = @"帳號不能為空"; //帳號不能為空
break;
}
if (string.IsNullOrWhiteSpace(sPassword))
{
sError = @"密碼不能為空"; //密碼不能為空
break;
}
var sEncryptPwd = SecurityUtil.Encrypt(sPassword);//將輸入之密碼轉換驗證格式
//string sPwd1 = SecurityUtil.Decrypt("wTBo6uXVBlVH8Ms76xiE4w==");
//string sPwd1 = SecurityUtil.Decrypt("3EOyqH52VBUg3pj5Wy0rwQ==");
var oUser = db.Queryable<SETB_CMS_Member>().Single(x => x.Account == sUserID && x.Password == sEncryptPwd);
if (oUser == null)
{
sError = @"帳號或密碼不正確"; //帳號或密碼不正確
break;
}
if (oUser.Status != @"1")
{
sError = @"該帳號未啓用"; //該帳號無效
break;
}
var ticket = new OTB_SYS_TicketAuth
{
OrgID = oUser.OrgID,
UserID = oUser.Account,
UserName = oUser.FirstName,
Token = SignExtension.CreateToken(),
// LoginIp = i_crm.ClientIP,
LoginTime = DateTime.Now
};
var iExpireTime = 240;
var sExpireTime = Common.GetSystemSetting(db, oUser.OrgID, @"ExpireTime");
if (!string.IsNullOrEmpty(sExpireTime))
{
iExpireTime = int.Parse(sExpireTime);
}
else
{
iExpireTime = int.Parse(Common.GetAppSettings(@"ExpireTime"));
}
ticket.ExpireTime = DateTime.Now.AddMinutes(iExpireTime); //30分钟过期
ticket.IsVerify = @"Y";
var oTicket = db.Queryable<OTB_SYS_TicketAuth>().Single(x => x.OrgID == oUser.OrgID && x.UserID == oUser.Account);
if (oTicket != null)
{
db.Updateable(ticket).IgnoreColumns(x => x.OutlookId).Where(x => x.NO == oTicket.NO).ExecuteCommand();
}
else
{
ticket.CreateTime = DateTime.Now;
db.Insertable(ticket).ExecuteCommand();
}
//記錄log日誌
db.Insertable(new OTB_SYS_LoginLog
{
OrgId = ticket.OrgID,
UserId = ticket.UserID,
UserName = ticket.UserName,
LoginIp = ticket.LoginIp,
LoginTime = ticket.LoginTime
}).ExecuteCommand();
HttpRuntimeCache.Set(ticket.OrgID + ticket.UserID, ticket, iExpireTime * 60, true);
HttpContext.Current.Session.Add(@"orgid", ticket.OrgID);
HttpContext.Current.Session.Add(@"userid", ticket.UserID);
HttpCookie cookie = new HttpCookie("EURO_COOKIE");//初始化並設置Cookie的名稱
DateTime dt = DateTime.Now;
TimeSpan ts = new TimeSpan(0, 0, 1, 0, 0);//過期時間為1分鐘
cookie.Expires = dt.Add(ts);//設置過期時間
cookie.Values.Add("orgid", ticket.OrgID);
cookie.Values.Add("userid", ticket.UserID);
HttpContext.Current.Response.AppendCookie(cookie);
var strtoken = string.Format(@"orgid:{0},userid:{1},token:{2}", ticket.OrgID, ticket.UserID, ticket.Token);
srm = new SuccessResponseMessage(null, null);
srm.DATA.Add("authtoken", SecurityUtil.Encrypt(strtoken));
} while (false);
}
catch (Exception ex)
{
sError = Util.GetLastExceptionMsg(ex);
}
finally
{
if (null != sError)
{
srm = new SuccessResponseMessage(null, null)
{
STATUSCODE = (int)StatusCodeEnum.Error,
MSG = sError
};
}
}
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm));
}
}
}