public UserManagerController(UserManagerRepository repo, ILoggerProvider loggerProvider, IBus reportServerBus, UserManager <ApplicationUser> userManager, UserBootstrapper userBootstrapper) { Repository = repo; Logger = loggerProvider.CreateLogger(nameof(UserManagerController)); ReportServerBus = reportServerBus; _userManager = userManager; bootstrapper = userBootstrapper; }
protected override void OnCreate(Bundle savedInstanceState) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; base.OnCreate(savedInstanceState); var dbPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments), "UserManager.db"); IDataStore userRepository = new UserManagerRepository(dbPath); global::Xamarin.Forms.Forms.Init(this, savedInstanceState); LoadApplication(new App(userRepository)); }
/// <summary> /// 获取本地 用户信息 /// </summary> /// <param name="uid"></param> /// <param name="userName"></param> /// <returns></returns> public async Task <ResponseMessage <UserInfoDTO> > GetLocalUserInfo(string uid, string userName) { var resMessage = new ResponseMessage <UserInfoDTO>(); try { var model = await UserManagerRepository.FindUserInfo(uid, userName); resMessage.Ok(model); } catch (Exception e) { resMessage.Error(e); } return(resMessage); }
/// <summary> /// 通过教务网 获取 用户信息 /// </summary> /// <param name="model"></param> /// <returns></returns> private async Task <UserInfoDTO> GetNatUserInfo(UserLoginRequest model) { var userInfo = new UserInfoDTO(); var postModel = new LoginPostModel() { __VIEWSTATE = System.Web.HttpUtility.UrlEncode(model.LoginViewState, HttpHelper.DefaultEncoding), txtUserName = model.UserId, TextBox2 = System.Web.HttpUtility.UrlEncode(model.Password, HttpHelper.DefaultEncoding), txtSecretCode = model.ValidateCode }; var dic = ModelHelper.ObjectToMap <LoginPostModel>(postModel); try { var response = await HttpHelper.CreatePostHttpResponse(model.LoginUrl, dic); if (!response.ResponseUri.ToString().Contains("xs_main")) { throw new ArgumentNullException("用户名或密码有误"); } var str = await response.GetResponseString(); var doc = new HtmlDocument(); doc.LoadHtml(str); string name = doc.GetElementbyId("xhxm").InnerText.Replace("同学", ""); if (string.IsNullOrEmpty(name)) { throw new ArgumentNullException("服务异常,稍后在尝试"); } UserName = name; // 课表url string kbUrl = $"{model.PreUrl}/xskbcx.aspx?xh={model.UserId}&xm={System.Web.HttpUtility.UrlEncode(UserName, HttpHelper.DefaultEncoding)}&gnmkdm=N121602"; var kbResponse = await HttpHelper.CreateHttpResponse(kbUrl, $"{model.PreUrl}/xs_main.aspx?xh={model.UserId}"); var kbStr = await kbResponse.GetResponseString(); doc.LoadHtml(kbStr); string college = doc.GetElementbyId("Label7").InnerText; string majorName = doc.GetElementbyId("Label8").InnerText; string className = doc.GetElementbyId("Label9").InnerText; userInfo.College = college.Substring(college.LastIndexOf(':') + 1); userInfo.MajorName = majorName.Substring(majorName.LastIndexOf(':') + 1); userInfo.ClassName = className.Substring(className.LastIndexOf(':') + 1); userInfo.RealUserName = UserName; userInfo.UserId = model.UserId; userInfo.LoginUserName = model.LoginUserName; try { // MQ 同步到志愿管理服务 中 SchoolUser.PushMessage("school", new { UserName = userInfo.LoginUserName, SchoolUserName = userInfo.RealUserName, UserId = userInfo.UserId }); userInfo.IsSynchronization = true; Logger.LogInformation("MQ发送消息成功"); } catch (Exception e) { userInfo.IsSynchronization = false; Logger.LogError(e, "MQ 发送消息失败"); } var addResult = await UserManagerRepository.AddUserInfo(userInfo); if (addResult == false) { throw new ArgumentNullException("同步本地数据失败"); } return(userInfo); } catch (Exception e) { if (e is NetworkInformationException) { throw new ArgumentNullException("服务器忙,稍后再试"); } else { throw e; } } }