/// <summary> /// 确认支付页面VM /// </summary> public ConfirmPaymentViewModel() { PayCommand = new RelayCommand(async state => { await Payment(); }); ChoseDiscountTypeCommand = new RelayCommand(async state => { if (!string.IsNullOrEmpty(UnLockCarInfo.Card?.CardId)) //CardId不为空则为月卡,直接返回 { return; } //获取红包列表 var redPacketList = await OfoApi.GetRedPacketListAsync(); if (await CheckOfoApiResult(redPacketList)) { var list = redPacketList.Data; if (list?.Length > 0) { await ShowContentNotifyAsync(new PacketChosePupopContentView(), new PacketChosePupopContentViewModel(args => { UsePacket(args as RedPacketInfo); }, list)); } else { await ShowNotifyAsync("没有找到可用的优惠券"); } } }); }
protected override async Task InitializationAsync() { Nick = UserInfo.Name; TelPhone = OfoUtility.GetMaskTelPhoneNum(UserInfo.TelPhone); if (string.IsNullOrEmpty(Nick)) { Nick = TelPhone; } InfoButtons[0].ContentText = Nick; CreditScoreInfo = $"信用分: {UserInfo.CreditTotal} >"; //获取头像图片 OfoUtility.GetAvatarImageByUrlAsync(UserInfo.AvatarUrl, avatar => Avatar = avatar).NoWarning(); InfoButtons[3].ContentText = UserInfo?.IsBond == 1 ? "认证用户" : "未认证用户"; var userProfileResult = await OfoApi.GetUserProfileAsync(); if (await CheckOfoApiResult(userProfileResult)) { UserProfile = userProfileResult.Data; InfoButtons[1].ContentText = UserProfile.SexType == 1 ? "男" : UserProfile.SexType == 2 ? "女" : "-"; if (UserProfile.BirthYear > 0) { InfoButtons[2].ContentText = $"{UserProfile.BirthYear} 年 {UserProfile.BirthMonth} 月 {UserProfile.BirthDay} 日"; } else { InfoButtons[2].ContentText = "-"; } SchoolInfo = string.IsNullOrEmpty(UserProfile.School) ? "非校园用户" : UserProfile.School; } }
/// <summary> /// 定位以及 刷新Bluebar /// </summary> /// <returns></returns> private async Task FreshBlueBar() { //先定位以便获取位置信息 //await LocationNowAsync(); GeoPosition = await PositionUtility.GetFixedGeopointAsync(); Map.Center = GeoPosition; var blueBarResult = await OfoApi.GetBlueBarAsync(GeoPosition.Position); if (await CheckOfoApiResult(blueBarResult)) { BlueBarInfo = blueBarResult.Data; if (!string.IsNullOrEmpty(blueBarResult.Data.Text)) { BlueBarButtonVisibility = Visibility.Visible; if (BlueBarInfo.Id?.Equals(Global.AppConfig.LastBlueBarID) == false) { Global.AppConfig.LastBlueBarID = BlueBarInfo.Id; BlueBarButtonVisibility = Visibility.Collapsed; BlueBarVisibility = Visibility.Visible; Global.SaveAppConfig(); } } } }
/// <summary> /// 登陆 /// </summary> /// <param name="state"></param> private async void LoginAsync(object state) { if (string.IsNullOrWhiteSpace(PhoneVerifyCode)) { await ShowNotifyAsync("请输入正确的验证码"); } else { try { var loginResult = await OfoApi.LoginAsync(PhoneVerifyCode.Trim()); if (await CheckOfoApiResultHttpStatus(loginResult)) { if (loginResult.IsSuccess) { Global.AppConfig.Token = loginResult.Data.Token; Global.SaveAppConfig(); ClientCookieManager.AddCookies(Global.COOKIE_DOMAIN, $"ofo-tokened={loginResult.Data.Token}"); Global.OfoApi.CurUser.Token = loginResult.Data.Token; await TryNavigateAsync(typeof(MainPage)); } else { await ShowNotifyAsync(loginResult.Message); } } } catch (Exception ex) { Debug.WriteLine(ex); await ShowNotifyAsync($"登陆出现异常:{ex}"); } } }
/// <summary> /// 登录第二步VM /// </summary> public LoginSecondStepContentViewModel() { TelPhone = OfoApi.CurUser.TelPhone; ReGetVerifyCodeCommand = new RelayCommand(async(state) => { var getVerifyCodeResult = await OfoApi.ReGetVerifyCodeAsync(); if (await CheckOfoApiResult(getVerifyCodeResult)) { await ShowNotifyAsync(getVerifyCodeResult.Message); } }); LoginCommand = new RelayCommand(LoginAsync); RegistrationProtocolCommand = new RelayCommand(async(state) => { WebPagePopupContentView webPagePopupContentView = new WebPagePopupContentView(); WebPagePopupContentViewModel webPagePopupContentViewModel = new WebPagePopupContentViewModel(null) { TargetUrl = "https://common.ofo.so/about/legal.html?11", }; await ShowContentNotifyAsync(webPagePopupContentView, webPagePopupContentViewModel); }); }
private async Task LoadHistoriesAsync() { if (_isLoading) { return; } else if (_canLoadMore) { _isLoading = true; var getCreditHistoriesResult = await OfoApi.GetCreditHistoriesAsync(Page); if (await CheckOfoApiResult(getCreditHistoriesResult)) { if (getCreditHistoriesResult.Data.CurPage > getCreditHistoriesResult.Data.TotalPage) { _canLoadMore = false; await ShowNotifyAsync("没有更多记录可以加载"); } if (getCreditHistoriesResult.Data.CreditItemList.Count > 0) { foreach (var item in getCreditHistoriesResult.Data.CreditItemList) { CreditHistories.Add(item); } } } _isLoading = false; } else { await ShowNotifyAsync("没有更多记录可以加载"); } }
protected override async Task InitializationAsync() { UserCenterButtons.Add(new ButtonViewModel() { ContentText = "我的行程", IconUri = "ms-appx:///Assets/icons/journey_img.png" }); UserCenterButtons.Add(new ButtonViewModel() { ContentText = "我的钱包", IconUri = "ms-appx:///Assets/icons/wallet_img.png" }); UserCenterButtons.Add(new ButtonViewModel() { ContentText = "邀请好友", IconUri = "ms-appx:///Assets/icons/invite_img.png" }); UserCenterButtons.Add(new ButtonViewModel() { ContentText = "我的客服", IconUri = "ms-appx:///Assets/icons/icon_my_service.png" }); var userInfoResult = await OfoApi.GetUserInfoAsync(); if (await CheckOfoApiResult(userInfoResult)) { UserInfo = userInfoResult.Data; //获取头像图片 await OfoUtility.GetAvatarImageByUrlAsync(UserInfo.AvatarUrl, avatar => Avatar = avatar); } }
/// <summary> /// 进行支付 /// </summary> /// <returns></returns> private async Task Payment() { var payResult = await OfoApi.ConfirmToPayAsync(UnLockCarInfo.OrderNumber, _usePacketId, UnLockCarInfo.Card?.CardId); if (await CheckOfoApiResult(payResult)) { await ShowNotifyAsync(payResult?.Message); await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { base.TryGoBack(); }); if (!string.IsNullOrWhiteSpace(payResult?.Data?.url)) //检查是否有红包并弹出 { RedPacketPupopContentView redPacketPupopContentView = new RedPacketPupopContentView(); var redPacketPupopContentViewModel = new RedPacketPupopContentViewModel() { PaymentInfo = payResult.Data, }; await ShowContentNotifyAsync(redPacketPupopContentView, redPacketPupopContentViewModel); } } else if (!string.IsNullOrEmpty(payResult.Message) && (payResult.Message.Contains("已支付") || payResult.ErrorCode == 40006)) //已支付,返回 { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { base.TryGoBack(); }); } }
protected override async Task InitializationAsync() { var walletResult = await OfoApi.GetWalletInfoAsync(); if (await CheckOfoApiResult(walletResult)) { WalletInfo = walletResult.Data; } }
protected override async Task InitializationAsync() { var repairReasonListResult = await OfoApi.GetRepairReasonListAsync(OrderNum); if (await CheckOfoApiResult(repairReasonListResult)) { foreach (var item in repairReasonListResult.Data) { RepairReasonList.Add(item); } } }
/// <summary> /// 检查订单状态 /// </summary> /// <returns></returns> private async Task CheckOrderStatusAsync() { if (UnLockCarInfo == null) { var unLockCarInfoResult = await OfoApi.GetUnfinishedOrderAsync(); if (await CheckOfoApiResult(unLockCarInfoResult)) { UnLockCarInfo = unLockCarInfoResult.Data; } } }
/// <summary> /// 个人信息内容页VM /// </summary> /// <param name="userInfo"></param> public UserProfileContentViewModel(UserInfo userInfo) : base(false) { UserInfo = userInfo; ChangeAvatarCommand = new RelayCommand(async(state) => { try { FileOpenPicker fileOpenPicker = new FileOpenPicker { ViewMode = PickerViewMode.Thumbnail, }; fileOpenPicker.FileTypeFilter.Add(".png"); fileOpenPicker.FileTypeFilter.Add(".jpg"); fileOpenPicker.FileTypeFilter.Add(".bmp"); StorageFile file = await fileOpenPicker.PickSingleFileAsync(); if (file != null) { byte[] avatarData = null; using (var orgStream = await file.OpenReadAsync()) { IRandomAccessStream stream = orgStream; using (var compressStream = await ImageUtility.ImageCompressAsync(orgStream, file.FileType, 1024, 1024)) { if (compressStream != null) { stream = compressStream; } avatarData = await AccessStreamUtility.AccessStreamToBytesAsync(stream); } } var modifyUserAvatarResult = await OfoApi.ModifyUserAvatarAsync(avatarData); if (await CheckOfoApiResult(modifyUserAvatarResult)) { await ShowNotifyAsync(modifyUserAvatarResult.Message); } } } catch (Exception ex) { Debug.WriteLine(ex); } }); var initTask = InitializationAsync(); }
/// <summary> /// 检查未完成订单 /// </summary> /// <returns></returns> private async Task CheckUnfinishedOrder(int tryTimes = 2) { var unfinishedOrder = await OfoApi.GetUnfinishedOrderAsync(); if (await CheckOfoApiResultHttpStatus(unfinishedOrder)) { if (unfinishedOrder.ErrorCode == 30005) { if (unfinishedOrder.Data.egt == 0) //还在骑行,获取信息 { //有未完成订单 var isSavedLastOrder = unfinishedOrder.Data.OrderNumber.Equals(Global.AppConfig.LastOrderNum); if (isSavedLastOrder)//储存了最后一次的订单信息 { if (!string.IsNullOrWhiteSpace(Global.AppConfig.LastOrderPwd)) { unfinishedOrder.Data.Password = Global.AppConfig.LastOrderPwd; } } if (isSavedLastOrder || unfinishedOrder.Data.Second >= 120) //保存了订单信息或者现在已经不需要密码 { unfinishedOrder.Data.Second += 1; //+1S await TryNavigateAsync(typeof(UnlockedView), unfinishedOrder.Data); } else { //TODO 没有存储,这个要怎么取才好 await TryNavigateAsync(typeof(WebPageView), Global.MAIN_WEBPAGE_URL); } } else if (unfinishedOrder.Data.egt == 1) //等待确认付款 { await TryNavigateAsync(typeof(ConfirmPaymentView), unfinishedOrder.Data); } } else //没有未完成的订单,获取活动 { await GetCurrentActivities(); } } else { if (tryTimes > 0) { await CheckUnfinishedOrder(tryTimes --); } } }
/// <summary> /// xbind的listview点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void ButtonListItemClick(object sender, ItemClickEventArgs e) { try { if (e.ClickedItem is ButtonViewModel bvm) { if (bvm?.Name == "我的昵称") { var userNickModifyControl = new UserNickModifyControl(); Flyout flyout = new Flyout { Content = userNickModifyControl }; userNickModifyControl.ModifyUserNick = async usernick => { if (usernick.Length < 4) { await ShowNotifyAsync("昵称过短"); } else if (usernick.Length > 16) { await ShowNotifyAsync("昵称过长"); } else { var modifyUserNickResult = await OfoApi.ModifyUserNickAsync(usernick); if (await CheckOfoApiResult(modifyUserNickResult)) { await ShowNotifyAsync(modifyUserNickResult.Message); UserInfo.Name = usernick; Nick = usernick; InfoButtons[0].ContentText = usernick; } } flyout.Hide(); }; flyout.ShowAt(sender as FrameworkElement); } } } catch (Exception ex) { Debug.WriteLine(ex); } }
/// <summary> /// 结束用车 /// </summary> /// <param name="state"></param> private async void FinishUsingCarAsync(object state) { for (int i = 0; i < 2; i++) { var endRideResult = await OfoApi.EndRideAsync(UnLockCarInfo.OrderNumber.ToString()); if (await CheckOfoApiResultHttpStatus(endRideResult)) { if (endRideResult.IsSuccess || endRideResult.ErrorCode == 40002) //40002订单已结束 { await TryReplaceNavigateAsync(typeof(ConfirmPaymentView), endRideResult.Data); return; } } } }
/// <summary> /// 检查订单状态 /// </summary> /// <returns></returns> private async Task CheckOrderStatusAsync() { if (UnLockCarInfo == null) { var unLockCarInfoResult = await OfoApi.GetUnfinishedOrderAsync(); if (await CheckOfoApiResult(unLockCarInfoResult)) { UnLockCarInfo = unLockCarInfoResult.Data; } if (UnLockCarInfo == null) { return; } } var payResult = await OfoApi.ConfirmToPayAsync(UnLockCarInfo.OrderNumber, 0); if (await CheckOfoApiResult(payResult)) { await ShowNotifyAsync(payResult?.Message); await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { base.TryGoBack(); }); if (!string.IsNullOrWhiteSpace(payResult?.Data?.url)) { RedPacketPupopContentView redPacketPupopContentView = new RedPacketPupopContentView(); var redPacketPupopContentViewModel = new RedPacketPupopContentViewModel() { PaymentInfo = payResult.Data, }; await ShowContentNotifyAsync(redPacketPupopContentView, redPacketPupopContentViewModel); } } else if (!string.IsNullOrEmpty(payResult.Message) && (payResult.Message.Contains("已支付") || payResult.ErrorCode == 40006)) { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { base.TryGoBack(); }); } }
/// <summary> /// 解锁车辆 /// </summary> /// <param name="state"></param> private void UnlockCar(object state) { IsEnableUnlock = false; Task.Run(async() => { try { var unlockCarResult = await OfoApi.UnlockCarAsync(CarNumber); if (await CheckOfoApiResult(unlockCarResult)) { if (unlockCarResult.Data.Password.Length > 8) //此处为加密的密码? { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () => { ContentPageArgs args = new ContentPageArgs() { Name = "ofo共享单车", ContentElement = new WebPageContentView(Global.MAIN_WEBPAGE_URL) }; TryReplaceNavigate(typeof(ContentPageView), args); }); } else { Global.AppConfig.LastOrderNum = unlockCarResult.Data.OrderNumber; Global.AppConfig.LastOrderPwd = unlockCarResult.Data.Password; Global.SaveAppConfig(); await TryReplaceNavigateAsync(typeof(UnlockedView), unlockCarResult.Data); } } } catch (Exception ex) { Debug.WriteLine(ex); } finally { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { IsEnableUnlock = true; }); } }); }
/// <summary> /// 获取目标地点附近的自行车 /// </summary> /// <param name="geoposition">目标地点</param> /// <returns></returns> private async Task GetPositionBicycles(BasicGeoposition geoposition) { _lastRefreshGeoposition = geoposition; await Dispatcher.RunAsync(CoreDispatcherPriority.High, async() => { IsPositioning = true; try { //清除显示 ClearMapAddOnInfo(); var nearByOfoCarsResult = await OfoApi.GetNearByOfoCarAsync(geoposition); if (await CheckOfoApiResult(nearByOfoCarsResult)) { Point normalizedAnchorPoint = new Point(0.5, 0.8); for (int i = 0; i < nearByOfoCarsResult.Data?.cars?.Count; i++) { var bicycle = nearByOfoCarsResult.Data.cars[i]; MapIcon bicycleIcon = new MapIcon { Image = _carImageStreamReference, Location = new Geopoint(new BasicGeoposition() { Latitude = bicycle.lat, Longitude = bicycle.lng }), NormalizedAnchorPoint = normalizedAnchorPoint, ZIndex = 50, }; Map.MapElements.Add(bicycleIcon); } } } catch (Exception ex) { Debug.WriteLine(ex); await ShowNotifyAsync($"刷新车辆信息失败:{ex}"); } finally { IsPositioning = false; } }); }
/// <summary> /// 获取验证码 /// </summary> private async Task GetCaptchaCodeAsync() { //VerifyCodeImage = VerifyCodeImage ?? new BitmapImage(); //OfoApi.CurUser.TelPhone = TelPhone; var captchaCodeResult = await OfoApi.GetCaptchaCodeAsync(); if (await CheckOfoApiResultHttpStatus(captchaCodeResult)) { VerifyId = captchaCodeResult.Data.VerifyId; using (var imgStream = await AccessStreamUtility.GetRandomAccessStreamFormBase64String(captchaCodeResult.Data.CaptchaStr)) { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () => { VerifyCodeImage.SetSource(imgStream); }); } } }
/// <summary> /// Timer回调函数 /// </summary> /// <param name="state"></param> private async void RidingTimerCallBackAsync(object state) { bool isRepairTimeOut = false; await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { if (RepairTimeOut > 0) { if (--RepairTimeOut == 0) //报修计时结束 { isRepairTimeOut = true; StopTimer(); } } else { RidingTime = RidingTime.Add(_addTimeSpan); } }); if (isRepairTimeOut) { UnfinishedOrderResult unfinishedOrderResult = null; for (int i = 0; i < 2; i++) { unfinishedOrderResult = await OfoApi.GetUnfinishedOrderAsync(); if (await CheckOfoApiResultHttpStatus(unfinishedOrderResult)) { if (unfinishedOrderResult.ErrorCode == 30005) { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () => { UnLockCarInfo = unfinishedOrderResult.Data; }); return; } } } } }
/// <summary> /// 报修弹出内容框VM /// </summary> /// <param name="completeCallBack">关闭时的回调</param> /// <param name="orderNum"></param> /// <param name="isGsm"></param> public ReportRepairPopupContentViewModel(Action <object> completeCallBack, string orderNum, bool isGsm) : base(completeCallBack) { OrderNum = orderNum; IsGsm = isGsm ? 1 : 0; RepairCommand = new RelayCommand(async(state) => { if (state is ListView listView) //检查是否正确传递参数 { if (listView.SelectedItems.Count > 0) //如果有选择项则报修 { StringBuilder sb = new StringBuilder(); foreach (RepairReasonInfo item in listView.SelectedItems) { sb.Append(item.Code); sb.Append(","); } sb.Remove(sb.Length - 1, 1); var geopoint = await PositionUtility.GetUnFixGeopointAsync(); var locationInfos = await MapLocationFinder.FindLocationsAtAsync(geopoint); string address = "位置获取失败"; if (locationInfos.Status == MapLocationFinderStatus.Success) { var locationInfo = locationInfos.Locations.FirstOrDefault(); address = locationInfo?.Address?.FormattedAddress?.Replace(" ", string.Empty) ?? "位置获取失败"; } var reportResult = await OfoApi.ReportRepairCarAsync(geopoint.Position, OrderNum, IsGsm, address, sb.ToString()); if (await CheckOfoApiResult(reportResult)) { await ShowNotifyAsync(reportResult.Message); CloseAction(); } } else //没有选择项,关闭 { CloseAction(); } } }); }
/// <summary> /// 页面从挂起恢复 /// </summary> public override async Task OnResumingAsync() { var unfinishedOrder = await OfoApi.GetUnfinishedOrderAsync(); if (await CheckOfoApiResultHttpStatus(unfinishedOrder)) { if (unfinishedOrder.ErrorCode == 30005) { if (unfinishedOrder.Data.Egt == 0) //还在骑行,获取信息 { //有未完成订单 var isSavedLastOrder = unfinishedOrder.Data.OrderNumber.Equals(Global.AppConfig.LastOrderNum); if (isSavedLastOrder)//储存了最后一次的订单信息 { if (!string.IsNullOrWhiteSpace(Global.AppConfig.LastOrderPwd)) { unfinishedOrder.Data.Password = Global.AppConfig.LastOrderPwd; } } if (isSavedLastOrder && unfinishedOrder.Data.Second >= 120) //或者现在已经不需要密码 { unfinishedOrder.Data.Second += 1; //+1S } UnLockCarInfo = unfinishedOrder.Data; } else if (unfinishedOrder.Data.Egt == 1) //等待确认付款 { await TryReplaceNavigateAsync(typeof(ConfirmPaymentView), unfinishedOrder.Data); } } else //没有未完成订单 { await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, () => { //返回主页 base.TryGoBack(); }); } } }
/// <summary> /// 提交验证码 /// </summary> /// <param name="state"></param> private async Task SubmitCaptchaCodeAsync() { if (string.IsNullOrWhiteSpace(CaptchaCode)) { return; } OfoApi.CurUser.TelPhone = TelPhone; var verifyCode = await OfoApi.GetVerifyCodeAsync(CaptchaCode.Trim(), VerifyId); if (await CheckOfoApiResult(verifyCode)) { ContentPageArgs args = new ContentPageArgs() { Name = "登录第二步", HeaderVisibility = Visibility.Collapsed, ContentElement = new LoginSecondStepContentView(), }; ContentNavigation(args); } }
/// <summary> /// 检查已保存的用户Token /// </summary> /// <returns></returns> private async Task <LoginStatus> CheckSavedUserTokenAsync() { LoginStatus result = LoginStatus.Default; if (!NetworkStatusUtility.IsNetworkAvailable) { await ShowNotifyAsync("无法正常访问网络,请检查网络状态", new TimeSpan(0, 0, 5)); result = LoginStatus.NetWorkFailed; } else { var token = Global.AppConfig.Token; OfoApi.CurUser.Token = token; ClientCookieManager.AddCookies(Global.COOKIE_DOMAIN, $"ofo-tokened={token}"); //验证登录状态 result = await OfoApi.CheckLoginStatus(); } return(result); }
protected override async Task InitializationAsync() { var activityHomePageDetailResult = await OfoApi.GetActivityHomePageDetailAsync(); if (await CheckOfoApiResult(activityHomePageDetailResult)) { var activityHomePageDetail = activityHomePageDetailResult.Data; if (activityHomePageDetail?.AdList?.Count > 0) { activityHomePageDetail.AdList.ForEach(item => { ActivityList.Add(new ActivityCenterActivityItemViewModel() { ActivityId = item.activityId, ClickCommand = ActivityClickCommand, ImgName = item.ImgName, ImgUrl = item.ImgUrl, JumpUrl = item.JumpUrl, }); }); } if (activityHomePageDetail?.OperationList?.Count > 0) { activityHomePageDetail.OperationList.ForEach(item => { OperationList.Add(item); }); } if (activityHomePageDetail?.FocusList?.Count > 0) { activityHomePageDetail.FocusList.ForEach(item => { FocusList.Add(item); }); } } }
/// <summary> /// 定位以及 刷新Bluebar /// </summary> /// <returns></returns> private async Task FreshBlueBar() { //先定位以便获取位置信息 //await LocationNowAsync(); GeoPosition = await PositionUtility.GetFixedGeopointAsync(); Map.Center = GeoPosition; var blueBarResult = await OfoApi.GetBlueBarAsync(GeoPosition.Position); if (await CheckOfoApiResult(blueBarResult)) { BlueBarInfo = blueBarResult.Data; if (!string.IsNullOrEmpty(blueBarResult.Data.Text)) { BlueBarButtonVisibility = Visibility.Visible; if (BlueBarInfo.MainType == 1) { BlueBarButtonVisibility = Visibility.Collapsed; BlueBarVisibility = Visibility.Visible; } } } }
/// <summary> /// 获取当前活动 /// </summary> /// <param name="tryTimes"></param> /// <returns></returns> private async Task GetCurrentActivities(int tryTimes = 2) { if (LastGetActivityTime > DateTime.Now.AddMinutes(-5)) //三分钟以内不重复获取 { return; } var advertisementResult = await OfoApi.GetAdvertisementsAsync(await PositionUtility.GetUnFixBasicPositionAsync()); if (await CheckOfoApiResult(advertisementResult)) { LastGetActivityTime = DateTime.Now; //缓存起始屏幕splash var cacheSplashTask = Task.Run(async() => { try { if (advertisementResult?.Data?.splash?.Count > 0) { var splashInfo = advertisementResult.Data.splash[0]; if (!splashInfo.ImgName.Equals(Global.AppConfig.LastCacheSplashFileName)) //缓存的不是当前Splash { if (await LocalCacheUtility.CacheHttpFileAsync(splashInfo.ImgName, splashInfo.ImgUrl)) { Global.AppConfig.LastCacheSplashFileName = splashInfo.ImgName; Global.AppConfig.CacheSplashExpire = VariousUtility.TimeStampToDateTime(splashInfo.expire * 10000L); Global.SaveAppConfig(); } } } } catch (Exception ex) { Debug.WriteLine(ex); } }); var activity = advertisementResult.Data.activity?.Count > 0 ? advertisementResult.Data.activity[0] : null; if (activity != null) { if (Global.AppConfig.LastShowActivityId == activity.id && Global.AppConfig.LastShowActivityTime > DateTime.Now.AddHours(-3)) //今天已经显示过当前活动,则不再显示 { return; } else //显示活动 { ActivityPopupContentView activityPopupContentView = new ActivityPopupContentView(); ActivityPopupContentViewModel popupContentViewModel = new ActivityPopupContentViewModel() { Activity = activity, }; await ShowContentNotifyAsync(activityPopupContentView, popupContentViewModel); } } } else { if (tryTimes-- > 0) { await GetCurrentActivities(tryTimes); } } }
protected override async void NavigationActionAsync(object state) { if (state is string param) { switch (param) { case "UsingCar": TryNavigate(typeof(ScanQrcodeView)); break; case "UserCenter": TryNavigate(typeof(UserCenterView)); break; case "ActivityCenter": ContentPageArgs args = new ContentPageArgs() { Name = "我的消息", ContentElement = new WebPageContentView("https://common.ofo.so/newdist/?DiscoverPage") }; TryNavigate(typeof(ContentPageView), args); //TryNavigate(typeof(ActivityCenterView)); break; case "BlueBar": if (BlueBarInfo.MainType == 1 && BlueBarInfo.Text.Contains("认证")) { var identificationResult = await OfoApi.GetIdentificationInfoAsync(GeoPosition.Position); if (await CheckOfoApiResult(identificationResult)) { ContentPageArgs blueBarArgs = new ContentPageArgs() { Name = "ofo小黄车", ContentElement = new WebPageContentView($"https://common.ofo.so/newdist/?Identification&~result={identificationResult.SourceHtml}&~lat={GeoPosition.Position.Latitude}&~lng={GeoPosition.Position.Longitude}"), }; TryNavigate(typeof(ContentPageView), blueBarArgs); } } else { ContentPageArgs blueBarArgs = new ContentPageArgs() { Name = "ofo小黄车", ContentElement = new WebPageContentView(BlueBarInfo.Action), }; TryNavigate(typeof(ContentPageView), blueBarArgs); } break; case "MainPageReport": ContentPageArgs args1 = new ContentPageArgs() { Name = "我的客服", ContentElement = new WebPageContentView("https://common.ofo.so/about/customer/") }; TryNavigate(typeof(ContentPageView), args1); break; } } }