保利威文档中心

幫助中心

6_2-互动学堂场景-登录

更新時間:2023-04-17 15:27:57

1 功能概述

互動學堂場景登入功能的介面實作為 PLVLoginHiClassActivity

互動學堂場景下定義的 講師登入、學生登入 的 共用介面。

講師登入流程:

選擇老師角色->輸入帳號、密碼,登入驗證->選擇公司,登入驗證->驗證成功,取得課節列表頁面->選擇其中一個課節,進入上課頁。

當講師重複出現在多個公司時,則講師需要選擇公司,否則不需要。

學生使用課節號登入流程:

選擇學生角色->輸入課節號,課節驗證->輸入名稱+/驗證/學生碼,登入驗證->驗證成功,進入上課頁。

學生使用課程號登入流程:

選擇學生角色->輸入課程號,課程驗證->輸入名稱+/驗證/學生碼,登入驗證->驗證成功,取得課節列表頁面->選擇其中一個課節,進入上課頁。

2 使用演示

因為整個登入系統有多個流程,每個流程的UI互動都不一樣,因此在demo中使用一個Activity+ViewPager+多個Fragment實作。以下範例講師登入驗證的方式,程式碼如下:

//讲师登录验证示例
loginManager.loginHiClassTeacher(
    areaCode,
    account,
    password,
    null,
    null,
    new IPLVSceneLoginManager.OnLoginListener<PLVHCTeacherLoginVO>() {
        @Override
        public void onLoginSuccess(PLVHCTeacherLoginVO result) {
        if (result == null
            || result.getStatus() == null
            || loginViewModel == null
            || getContext() == null) {
            return;
        }

        PLVHCTeacherLoginAccountVO accountVO = new PLVHCTeacherLoginAccountVO();
        accountVO.setAreaCode(areaCode);
        accountVO.setAccount(account);
        accountVO.setPassword(password);
        loginViewModel.getTeacherLoginAccountLiveData().setValue(accountVO);

        saveLastLoginAccount(areaCode, account);
        saveLastLoginPassword(plvhcLoginTeacherRememberPasswordCb.isChecked(), password);
        saveAgreeContract(true);

        if (result.getStatus() == PLVHCTeacherLoginVO.STATUS_LOGIN_SELECT_COMPANY) {
            List<PLVHCLoginCompanyVO> loginCompanyVOList = new ArrayList<>();
            for (PLVHCTeacherLoginResultVO.CompanyVO companyVO : result.getCompanyList()) {
                loginCompanyVOList.add(PLVHCLoginCompanyVO.fromLoginResult(companyVO));
            }
            loginViewModel.getCompanyListLiveData().setValue(loginCompanyVOList);
            KeyboardUtils.hideSoftInput(plvhcLoginTeacherPasswordEt);
            //进入选择公司页
            PLVHCLoginFragmentManager.getInstance().addLast(PLVHCLoginFragmentManager.FRAG_TEACHER_COMPANY);
        } else if (result.getStatus() == PLVHCTeacherLoginVO.STATUS_LOGIN_SUCCESS) {
            if (result.getSuccessData() != null) {
            PLVHCLoginDataVO loginTokenVO = new PLVHCLoginDataVO();
            loginTokenVO.setRole(PLVSocketUserConstant.USERTYPE_TEACHER);
            loginTokenVO.setToken(result.getSuccessData().getToken());
            loginTokenVO.setNickname(result.getSuccessData().getNickname());
            loginTokenVO.setViewerId(result.getSuccessData().getViewerId());
            loginViewModel.setLoginDataVOWithSave(loginTokenVO, timestamp);

            List<PLVHCLoginLessonVO> loginLessonVOList = listMap(result.getSuccessData().getLessonList(),
                new PLVSugarUtil.Function<PLVHCTeacherLoginResultVO.DataVO.LessonVO, PLVHCLoginLessonVO>() {
                    @Override
                    public PLVHCLoginLessonVO apply(PLVHCTeacherLoginResultVO.DataVO.LessonVO lessonVO) {
                        return PLVHCLoginLessonVO.fromTeacherLoginResultLessonVO(lessonVO);
                    }
                });
            loginViewModel.getLoginLessonListLiveData().setValue(loginLessonVOList);
            }
            KeyboardUtils.hideSoftInput(plvhcLoginTeacherPasswordEt);
            // 进入选择课节页
            PLVHCLoginFragmentManager.getInstance().addLast(PLVHCLoginFragmentManager.FRAG_LESSON_SELECT);
            } else {
                PLVHCToast.Builder.context(getContext())
                    .setText("登录状态错误:" + result.getStatus())
                    .build().show();
            }
        }

        @Override
        public void onLoginFailed(String msg, Throwable throwable) {
        if (getContext() == null) {
            return;
        }
        PLVHCToast.Builder.context(getContext())
            .setText(msg)
            .build().show();
        }
    }
);

上述方法的具體用例可以在PLVHCTeacherLoginFragment類別中找到。

3 實作介紹

登入的整個流程,其實就是確認和取得使用者類型、使用者Id、使用者暱稱、登入token、課程號、課節Id的過程。

3.1 PLVLoginHiClassActivity

互動學堂登入頁面Activity,佈局中定義了一個ViewPager,用於新增登入流程中所出現的Fragment。

3.2 PLVHCRoleSelectFragment

互動學堂登入 - 角色選擇Fragment,用於選擇講師/學生角色。

3.3 PLVHCTeacherLoginFragment

互動學堂登入 - 講師登入Fragment,提供輸入講師的帳號、密碼和登入驗證的UI互動。

3.4 PLVHCTeacherCompanyFragment

互動學堂登入 - 講師公司選擇Fragment,提供選擇講師所在公司的UI互動。當一個講師綁定了多個公司時,登入驗證成功後就會先出現這個Fragment。

3.5 PLVHCLessonSelectFragment

互動學堂登入 - 課節選擇Fragment,該頁面會展示一個可以上課的課節列表,可以從該列表中選擇一個課節進行上課。

3.6 PLVHCStudentLoginFragment

互動學堂登入 - 學生登入Fragment,提供輸入課程號/課節號和資訊驗證的UI互動。

3.7 PLVHCStudentVerifyFragment

互動學堂登入 - 學生驗證Fragment,提供輸入學生名稱+/驗證/學生碼和觀看條件驗證的UI互動。

联系客服,在线咨询