Esempio n. 1
0
        /// <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;
            }
        }
Esempio n. 3
0
        /// <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();
                    }
                }
            }
        }
Esempio n. 4
0
        /// <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}");
                }
            }
        }
Esempio n. 5
0
        /// <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);
            });
        }
Esempio n. 6
0
        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("没有更多记录可以加载");
            }
        }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
        /// <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();
                });
            }
        }
Esempio n. 9
0
        protected override async Task InitializationAsync()
        {
            var walletResult = await OfoApi.GetWalletInfoAsync();

            if (await CheckOfoApiResult(walletResult))
            {
                WalletInfo = walletResult.Data;
            }
        }
Esempio n. 10
0
        protected override async Task InitializationAsync()
        {
            var repairReasonListResult = await OfoApi.GetRepairReasonListAsync(OrderNum);

            if (await CheckOfoApiResult(repairReasonListResult))
            {
                foreach (var item in repairReasonListResult.Data)
                {
                    RepairReasonList.Add(item);
                }
            }
        }
Esempio n. 11
0
        /// <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();
        }
Esempio n. 13
0
        /// <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);
            }
        }
Esempio n. 15
0
        /// <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;
                    }
                }
            }
        }
Esempio n. 16
0
        /// <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();
                });
            }
        }
Esempio n. 17
0
        /// <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;
                    });
                }
            });
        }
Esempio n. 18
0
        /// <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;
                }
            });
        }
Esempio n. 19
0
        /// <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);
                    });
                }
            }
        }
Esempio n. 20
0
        /// <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;
                        }
                    }
                }
            }
        }
Esempio n. 21
0
        /// <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();
                    }
                }
            });
        }
Esempio n. 22
0
        /// <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();
                    });
                }
            }
        }
Esempio n. 23
0
        /// <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);
            }
        }
Esempio n. 24
0
        /// <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);
        }
Esempio n. 25
0
        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);
                    });
                }
            }
        }
Esempio n. 26
0
        /// <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;
                    }
                }
            }
        }
Esempio n. 27
0
        /// <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);
                }
            }
        }
Esempio n. 28
0
        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;
                }
            }
        }