|
|
using EasyBL.WebApi; using EasyBL.WebApi.Common; using EasyBL.WebApi.Message; using EasyNet; using Entity; using Entity.ShowEasyDtos; using Entity.Sugar; using Newtonsoft.Json; using SqlSugar; using SqlSugar.Base; using System; using System.Collections.Generic; using System.Net; using System.Net.Http; using System.Web; namespace EasyBL.WEBAPP.SYS { public class MembersService : ServiceBase {
#region 用戶登錄
public HttpResponseMessage Login(Login 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 jo = new SetMap { { @"orgid", ticket.OrgID }, { @"userid", ticket.UserID }, { @"loginname", ticket.UserName }, { @"token", ticket.Token }
}; srm = new SuccessResponseMessage(null, null); srm.DATA.Add(BLWording.REL, jo); } 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)); }
#endregion
//會員個人訊息查詢
public HttpResponseMessage GetMemberInfo(string OrgID, string Account) { SuccessResponseMessage srm = null; string sError = null; var db = SugarBase.GetIntance(); try { do {
MemberDTO member = new MemberDTO(); var sLang = WebAppGlobalConstWord.DEFAULT_LANGUAGE; string requestUrl = Common.ConfigGetValue("", "ida:RedirectUri");
var saUser = db.Queryable<SETB_CMS_Member>() //搜尋條件
.Where(x => x.OrgID == OrgID && x.Account == Account) .Single();
member.MemberID = saUser.MemberID; member.MemberPicture = saUser.MemberPicture; member.FirstName = saUser.FirstName; member.LastName = saUser.LastName; member.Title = saUser.Title; member.MemberType = saUser.MemberType; member.Account = Account; member.Password = saUser.Password; member.Email = saUser.Email; member.Phone = saUser.Phone; member.CountryID = saUser.CountryID; member.LanguageID = saUser.ArgumentID; member.BirthDate = saUser.BirthDate; member.Status = saUser.Status; member.Subscribe = saUser.Subscribe; member.OrgID = OrgID; member.PhoneCode = saUser.PhoneCode;
if (!string.IsNullOrEmpty(member.MemberPicture)) {
var sFilePath = db.Queryable<OTB_SYS_Files>() .Where(x => x.ParentID == member.MemberPicture) .Single();
member.MemberPicture = requestUrl + "/" + sFilePath.FilePath.Replace("\\", "/");
}
if (!string.IsNullOrEmpty(member.CountryID)) {
var sCountry = db.Queryable<SETB_SYS_Country>() .Where(x => x.CountryID == member.CountryID && x.LangType == sLang) .Single();
member.CountryName = sCountry.CountryName; member.Country_ENCode = sCountry.Country_ENCode;
}
//返回user信息
srm = new SuccessResponseMessage(null, null); srm.DATA.Add(BLWording.REL, member);
} 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)); }
#region 修改會員個人信息
/// <summary>
/// 修改會員個人信息
/// </summary>
/// <param name="i_crm"></param>
/// <returns></returns>
public HttpResponseMessage Update(MemberDTO Member) { SuccessResponseMessage srm = null; string sError = null; var db = SugarBase.GetIntance(); try { do { var iRel = db.Updateable(MemberDTOtoEntity(Member)) .Where(t1 => t1.Account == Member.Account) .IgnoreColumns(t1 => t1.MemberPicture) .ExecuteCommand(); srm = new SuccessResponseMessage(null, null); srm.DATA.Add(BLWording.REL, iRel); } 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)); } #endregion
#region Upload 上傳文件
public HttpResponseMessage UploadAvatar(string OrgID, string Account) { SuccessResponseMessage srm = null; string sError = null; try { var c = HttpContext.Current;
var sGUID = Guid.NewGuid().ToString();
SECommonService commonService = new SECommonService(); // 文件上傳
HttpResponseMessage ret = commonService.Upload(c, OrgID, Account); if (ret.StatusCode == HttpStatusCode.OK) {
var db = SugarBase.DB; SETB_CMS_Member i_crm = new SETB_CMS_Member();
string requestUrl = Common.ConfigGetValue("", "ida:RedirectUri");
var sUser = db.Queryable<SETB_CMS_Member>() .Where(x => x.OrgID == OrgID && x.Account == Account) .Single();
var sFilePath = db.Queryable<OTB_SYS_Files>() .Where(x => x.ParentID == sUser.MemberPicture) .Single();
sUser.MemberPicture = requestUrl + "/" + sFilePath.FilePath.Replace("\\", "/");
srm = new SuccessResponseMessage(null, null); srm.DATA.Add(BLWording.REL, sUser.MemberPicture); } } 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)); }
#endregion Upload 上傳文件
//註銷帳號
public HttpResponseMessage DeactivateAccount(string OrgID, string Account) { //string sMsg = null;
SuccessResponseMessage srm = SugarBase.ExecTran(db => { do {
var sUser = db.Queryable<SETB_CMS_Member>().Single(x => x.OrgID == OrgID && x.Account == Account);
sUser.Status = "2"; //會員狀態為刪除
var iRel = db.Updateable(sUser).ExecuteCommand();
srm = new SuccessResponseMessage(null, null); srm.DATA.Add(BLWording.REL, sUser.Status); } while (false);
return srm;
});
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm)); }
//重設密碼
public HttpResponseMessage ResetNewPassword(string OrgID, string Account, string Password) { //string sMsg = null;
SuccessResponseMessage srm = SugarBase.ExecTran(db => { do { var sUser = db.Queryable<SETB_CMS_Member>().Single(x => x.OrgID == OrgID && x.Account == Account); sUser.Password = SecurityUtil.Encrypt(Password); //新密碼加密
var iRel = db.Updateable(sUser).ExecuteCommand(); //將新密碼更新至資料庫
srm = new SuccessResponseMessage(null, null); srm.DATA.Add(BLWording.REL, sUser.MemberID); } while (false);
return srm;
});
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm)); }
private SETB_CMS_Member MemberDTOtoEntity(MemberDTO Member) {
SETB_CMS_Member rsMember = new SETB_CMS_Member();
rsMember.MemberID = Member.MemberID; rsMember.MemberPicture = Member.MemberPicture; rsMember.FirstName = Member.FirstName; rsMember.LastName = Member.LastName; rsMember.Title = Member.Title; rsMember.MemberType = Member.MemberType; rsMember.Account = Member.Account; rsMember.Password = Member.Password; rsMember.Email = Member.Email; rsMember.Phone = Member.Phone; rsMember.CountryID = Member.CountryID; rsMember.ArgumentID = Member.LanguageID; rsMember.BirthDate = Member.BirthDate; rsMember.Status = Member.Status; rsMember.OrgID = Member.OrgID; rsMember.PhoneCode = Member.PhoneCode;
return rsMember;
}
//利用信箱重啟已註銷帳號
public HttpResponseMessage ReactivateAccount(string Email) { //string sMsg = null;
SuccessResponseMessage srm = SugarBase.ExecTran(db => { do { var sUser = db.Queryable<SETB_CMS_Member>().Single(x => x.Email == Email);
sUser.Status = "0"; //會員狀態重啟後為未認證狀態
var iRel = db.Updateable(sUser).ExecuteCommand();
srm = new SuccessResponseMessage(null, null); srm.DATA.Add(BLWording.REL, sUser); } while (false);
return srm;
});
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm)); }
//利用信箱重啟已註銷帳號
public HttpResponseMessage ReactivateAccountByAcc(string Account) { //string sMsg = null;
SuccessResponseMessage srm = SugarBase.ExecTran(db => { do { var sUser = db.Queryable<SETB_CMS_Member>().Single(x => x.Account == Account);
sUser.Status = "0"; //會員狀態重啟後為未認證狀態
var iRel = db.Updateable(sUser).ExecuteCommand();
srm = new SuccessResponseMessage(null, null); srm.DATA.Add(BLWording.REL, sUser); } while (false);
return srm;
});
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm)); }
} }
|