Browse Source

1.引导页事件处理,适配
2.消息盒子未读数
3.音乐人认证
4,个人中心布局调整
5,首页统计数据
6,测试调用支付宝支付,微信支付(后台返回数据还差sign)

还差商品订单。不知道是不是h5

学生端 欢迎页,引导页

Ryan8057 2 years ago
parent
commit
57a4a62d38
100 changed files with 1014 additions and 312 deletions
  1. 5 0
      BaseLibrary/build.gradle
  2. 11 0
      BaseLibrary/src/main/java/com/cooleshow/base/common/ConstantKey.java
  3. 1 0
      BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt
  4. 1 1
      BaseLibrary/src/main/java/com/cooleshow/base/widgets/MyViewPage.java
  5. 0 1
      app/.gitignore
  6. 0 20
      app/src/main/java/com/example/cooleshow/common/MainApplication.kt
  7. 0 117
      app/src/main/java/com/example/cooleshow/ui/activity/MainActivity.kt
  8. 0 22
      app/src/main/java/com/example/cooleshow/ui/activity/splash/SplashActivity.kt
  9. 0 28
      app/src/main/java/com/example/cooleshow/ui/fragment/HomeFragment.kt
  10. 0 47
      app/src/main/java/com/example/cooleshow/ui/fragment/MeFragment.kt
  11. 0 18
      app/src/main/res/layout/activity_main.xml
  12. 0 11
      app/src/main/res/layout/fragment_home.xml
  13. 0 9
      app/src/main/res/layout/fragment_me.xml
  14. 0 3
      app/src/main/res/values/strings.xml
  15. 6 6
      gradle.properties
  16. 1 1
      settings.gradle
  17. 2 0
      student/.gitignore
  18. 42 18
      student/build.gradle
  19. 0 0
      student/gradle.properties
  20. 0 0
      student/proguard-rules.pro
  21. 0 0
      student/src/androidTest/java/com/example/cooleshow/ExampleInstrumentedTest.kt
  22. 9 9
      student/src/main/AndroidManifest.xml
  23. 112 0
      student/src/main/java/com/cooleshow/student/App.java
  24. 56 0
      student/src/main/java/com/cooleshow/student/adapter/ViewPagerAdapter.java
  25. 17 0
      student/src/main/java/com/cooleshow/student/contract/GuideContract.java
  26. 15 0
      student/src/main/java/com/cooleshow/student/presenter/splash/GuidePresenter.java
  27. 10 0
      student/src/main/java/com/cooleshow/student/ui/main/MainActivity.java
  28. 154 0
      student/src/main/java/com/cooleshow/student/ui/splash/GuideActivity.java
  29. 52 0
      student/src/main/java/com/cooleshow/student/ui/splash/SplashActivity.kt
  30. 7 0
      student/src/main/res/anim/slide_in_left.xml
  31. 8 0
      student/src/main/res/anim/slide_in_right.xml
  32. 0 0
      student/src/main/res/drawable-v24/ic_launcher_foreground.xml
  33. BIN
      student/src/main/res/drawable-xhdpi/ic_default_chat.png
  34. BIN
      student/src/main/res/drawable-xhdpi/ic_default_home.png
  35. BIN
      student/src/main/res/drawable-xhdpi/ic_default_mall.png
  36. BIN
      student/src/main/res/drawable-xhdpi/ic_default_mine.png
  37. BIN
      student/src/main/res/drawable-xhdpi/ic_default_timetable.png
  38. BIN
      student/src/main/res/drawable-xhdpi/ic_selector_chat.png
  39. BIN
      student/src/main/res/drawable-xhdpi/ic_selector_home.png
  40. BIN
      student/src/main/res/drawable-xhdpi/ic_selector_mall.png
  41. BIN
      student/src/main/res/drawable-xhdpi/ic_selector_mine.png
  42. BIN
      student/src/main/res/drawable-xhdpi/ic_selector_timetable.png
  43. BIN
      student/src/main/res/drawable-xhdpi/icon_guid_center_1.png
  44. BIN
      student/src/main/res/drawable-xhdpi/icon_guid_center_2.png
  45. BIN
      student/src/main/res/drawable-xhdpi/icon_guid_center_3.png
  46. BIN
      student/src/main/res/drawable-xxhdpi/ic_default_chat.png
  47. BIN
      student/src/main/res/drawable-xxhdpi/ic_default_home.png
  48. BIN
      student/src/main/res/drawable-xxhdpi/ic_default_mall.png
  49. BIN
      student/src/main/res/drawable-xxhdpi/ic_default_mine.png
  50. BIN
      student/src/main/res/drawable-xxhdpi/ic_default_timetable.png
  51. BIN
      student/src/main/res/drawable-xxhdpi/ic_selector_chat.png
  52. BIN
      student/src/main/res/drawable-xxhdpi/ic_selector_home.png
  53. BIN
      student/src/main/res/drawable-xxhdpi/ic_selector_mall.png
  54. BIN
      student/src/main/res/drawable-xxhdpi/ic_selector_mine.png
  55. BIN
      student/src/main/res/drawable-xxhdpi/ic_selector_timetable.png
  56. BIN
      student/src/main/res/drawable-xxhdpi/icon_guid_center_1.png
  57. BIN
      student/src/main/res/drawable-xxhdpi/icon_guid_center_2.png
  58. BIN
      student/src/main/res/drawable-xxhdpi/icon_guid_center_3.png
  59. 8 0
      student/src/main/res/drawable/bg_guide_top.xml
  60. 5 0
      student/src/main/res/drawable/bottom_navigation_chat_selector.xml
  61. 5 0
      student/src/main/res/drawable/bottom_navigation_home_selector.xml
  62. 5 0
      student/src/main/res/drawable/bottom_navigation_mall_selector.xml
  63. 5 0
      student/src/main/res/drawable/bottom_navigation_mine_selector.xml
  64. 5 0
      student/src/main/res/drawable/bottom_navigation_timetable_selector.xml
  65. 0 0
      student/src/main/res/drawable/ic_launcher_background.xml
  66. 5 0
      student/src/main/res/drawable/shape_course_status_ing.xml
  67. 6 0
      student/src/main/res/drawable/view_guide_point_normal.xml
  68. 7 0
      student/src/main/res/drawable/view_guide_point_select.xml
  69. 15 0
      student/src/main/res/layout/activity_guide.xml
  70. 0 0
      student/src/main/res/layout/activity_splash_layout.xml
  71. 72 0
      student/src/main/res/layout/guide_one.xml
  72. 87 0
      student/src/main/res/layout/guide_thre.xml
  73. 72 0
      student/src/main/res/layout/guide_two.xml
  74. 27 0
      student/src/main/res/menu/bottom_nav_item.xml
  75. 0 0
      student/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
  76. 0 0
      student/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
  77. 0 0
      student/src/main/res/mipmap-hdpi/ic_launcher.webp
  78. 0 0
      student/src/main/res/mipmap-hdpi/ic_launcher_round.webp
  79. 0 0
      student/src/main/res/mipmap-mdpi/ic_launcher.webp
  80. 0 0
      student/src/main/res/mipmap-mdpi/ic_launcher_round.webp
  81. 0 0
      student/src/main/res/mipmap-xhdpi/ic_launcher.webp
  82. 0 0
      student/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
  83. 0 0
      student/src/main/res/mipmap-xxhdpi/ic_launcher.webp
  84. 0 0
      student/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
  85. 0 0
      student/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
  86. 0 0
      student/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
  87. 0 0
      student/src/main/res/values-night/themes.xml
  88. 0 0
      student/src/main/res/values/colors.xml
  89. 8 0
      student/src/main/res/values/strings.xml
  90. 0 0
      student/src/main/res/values/themes.xml
  91. 0 0
      student/src/test/java/com/example/cooleshow/ExampleUnitTest.kt
  92. 5 0
      teacher/src/main/AndroidManifest.xml
  93. 29 1
      teacher/src/main/java/com/cooleshow/teacher/api/APIService.java
  94. 12 0
      teacher/src/main/java/com/cooleshow/teacher/bean/CountOfUnreadBean.java
  95. 35 0
      teacher/src/main/java/com/cooleshow/teacher/bean/HomeCountBean.java
  96. 15 0
      teacher/src/main/java/com/cooleshow/teacher/bean/PayTestBean.java
  97. 0 0
      teacher/src/main/java/com/cooleshow/teacher/bean/alipay/AuthResult.java
  98. 1 0
      teacher/src/main/java/com/cooleshow/teacher/bean/alipay/PayResult.java
  99. 74 0
      teacher/src/main/java/com/cooleshow/teacher/bean/weixinpay/WeixinPayInfo.java
  100. 2 0
      teacher/src/main/java/com/cooleshow/teacher/contract/HomeContract.java

+ 5 - 0
BaseLibrary/build.gradle

@@ -145,4 +145,9 @@ dependencies {
     //金山云上传所需
     api 'joda-time:joda-time:2.9.9'
     api 'com.google.android:flexbox:2.0.1'
+    //阿里支付
+//    api(name: 'alipaySdk-15.6.4-20190611174359-noUtdid', ext: 'aar')
+    api 'com.alipay.sdk:alipaysdk-android:+@aar'
+    //微信
+    api 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
 }

+ 11 - 0
BaseLibrary/src/main/java/com/cooleshow/base/common/ConstantKey.java

@@ -0,0 +1,11 @@
+package com.cooleshow.base.common;
+
+/**
+ * 创建日期:2022/5/25 9:23
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class ConstantKey {
+    public static final String IS_FIRST_LAUNCH = "IS_FIRST_LAUNCH";
+}

+ 1 - 0
BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt

@@ -116,6 +116,7 @@ object RouterPath {
             const val MINE_INPUT_BANK_VCODE = "/teacher/ui/mine/InputBankVCodeActivity"
             const val MINE_BIND_CARD_SUCCESS = "/teacher/ui/mine/BindCardSuccessActivity"
             const val TEACHER_MINE_CREATE_COURSE = "/teacher/ui/mine/CreateLiveActivity"
+            const val MINE_PAY_TEST = "/teacher/ui/mine/PayTestActivity"
         }
     }
 }

+ 1 - 1
teacher/src/main/java/com/cooleshow/teacher/widgets/MyViewPage.java → BaseLibrary/src/main/java/com/cooleshow/base/widgets/MyViewPage.java

@@ -1,4 +1,4 @@
-package com.cooleshow.teacher.widgets;
+package com.cooleshow.base.widgets;
 
 import android.content.Context;
 import android.util.AttributeSet;

+ 0 - 1
app/.gitignore

@@ -1 +0,0 @@
-/build

+ 0 - 20
app/src/main/java/com/example/cooleshow/common/MainApplication.kt

@@ -1,20 +0,0 @@
-package com.example.cooleshow.common
-
-import com.alibaba.android.arouter.launcher.ARouter
-import com.cooleshow.base.common.BaseApplication
-import com.cooleshow.base.utils.Utils
-
-/*
-    主工程 Application
- */
-class MainApplication : BaseApplication() {
-    override fun onCreate() {
-        super.onCreate()
-
-        //极光推送初始化
-//        JPushInterface.setDebugMode(true)
-//        JPushInterface.init(this)
-        ARouter.init(this)
-        Utils.init(this);
-    }
-}

+ 0 - 117
app/src/main/java/com/example/cooleshow/ui/activity/MainActivity.kt

@@ -1,117 +0,0 @@
-package com.example.cooleshow.ui.activity
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import com.alibaba.android.arouter.facade.annotation.Route
-import com.ashokvarma.bottomnavigation.BottomNavigationBar
-import com.cooleshow.base.common.AppManager
-import com.cooleshow.base.router.RouterPath
-import com.example.cooleshow.R
-import com.example.cooleshow.databinding.ActivityMainBinding
-import com.example.cooleshow.ui.fragment.HomeFragment
-import com.example.cooleshow.ui.fragment.MeFragment
-import java.util.*
-
-import kotlinx.android.synthetic.main.activity_main.*
-
-@Route(path = RouterPath.APPCenter.PATH_HOME)
-class MainActivity : BaseActivity<ActivityMainBinding>() {
-
-
-    private var pressTime: Long = 0
-
-    //Fragment 栈管理
-    private val mStack = Stack<Fragment>()
-
-    //主界面Fragment
-    private val mHomeFragment by lazy { HomeFragment() }
-
-    //商品分类Fragment
-    private val mCategoryFragment by lazy { MeFragment() }
-
-    //购物车Fragment
-    private val mCartFragment by lazy { MeFragment() }
-
-    //消息Fragment
-    private val mMsgFragment by lazy { MeFragment() }
-
-    //"我的"Fragment
-    private val mMeFragment by lazy { MeFragment() }
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-    }
-
-    override fun getLayoutView(): ActivityMainBinding {
-        return ActivityMainBinding.inflate(layoutInflater)
-    }
-
-    override fun initView() {
-        initFragment()
-        initBottomNav()
-        changeFragment(0)
-    }
-
-    /*
-        初始化Fragment栈管理
-     */
-    private fun initFragment() {
-        val manager = supportFragmentManager.beginTransaction()
-        manager.add(R.id.mContaier, mHomeFragment)
-        manager.add(R.id.mContaier, mCategoryFragment)
-        manager.add(R.id.mContaier, mCartFragment)
-        manager.add(R.id.mContaier, mMsgFragment)
-        manager.add(R.id.mContaier, mMeFragment)
-        manager.commit()
-
-        mStack.add(mHomeFragment)
-        mStack.add(mCategoryFragment)
-        mStack.add(mCartFragment)
-        mStack.add(mMsgFragment)
-        mStack.add(mMeFragment)
-    }
-
-    /*
-        初始化底部导航切换事件
-     */
-    private fun initBottomNav() {
-        mBottomNavBar?.setTabSelectedListener(object : BottomNavigationBar.OnTabSelectedListener {
-            override fun onTabReselected(position: Int) {
-            }
-
-            override fun onTabUnselected(position: Int) {
-            }
-
-            override fun onTabSelected(position: Int) {
-                changeFragment(position)
-            }
-        })
-
-        mBottomNavBar?.checkMsgBadge(false)
-    }
-
-    /*
-        切换Tab,切换对应的Fragment
-     */
-    private fun changeFragment(position: Int) {
-        val manager = supportFragmentManager.beginTransaction()
-        for (fragment in mStack) {
-            manager.hide(fragment)
-        }
-        manager.show(mStack[position])
-        manager.commit()
-    }
-
-    /*
-        重写Back事件,双击退出
-     */
-    override fun onBackPressed() {
-        val time = System.currentTimeMillis()
-        if (time - pressTime > 2000) {
-            showToast("再按一次退出程序")
-            pressTime = time
-        } else {
-            AppManager.instance.exitApp(this)
-        }
-    }
-}

+ 0 - 22
app/src/main/java/com/example/cooleshow/ui/activity/splash/SplashActivity.kt

@@ -1,22 +0,0 @@
-package com.example.cooleshow.ui.activity.splash
-
-import com.alibaba.android.arouter.launcher.ARouter
-import com.cooleshow.base.router.RouterPath
-import com.cooleshow.base.ui.activity.BaseActivity
-import com.example.cooleshow.databinding.ActivitySplashBinding
-
-
-/**
- * Author by pq, Date on 2022/4/19.
- */
-class SplashActivity : BaseActivity<ActivitySplashBinding>() {
-    override fun getLayoutView(): ActivitySplashBinding {
-        return ActivitySplashBinding.inflate(layoutInflater)
-    }
-
-    override fun initView() {
-        ARouter.getInstance().build(RouterPath.UserCenter.PATH_LOGIN).navigation()
-    }
-
-
-}

+ 0 - 28
app/src/main/java/com/example/cooleshow/ui/fragment/HomeFragment.kt

@@ -1,28 +0,0 @@
-package com.example.cooleshow.ui.fragment
-
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import com.cooleshow.base.ui.fragment.BaseFragment
-import com.example.cooleshow.R
-
-
-
-/*
-    主界面Fragment
- */
-class HomeFragment: BaseFragment() {
-
-    override fun getLayoutResId(): Int {
-        return R.layout.fragment_home;
-    }
-
-    override fun initView(rootView: View?) {
-    }
-
-    override fun initData() {
-    }
-
-}

+ 0 - 47
app/src/main/java/com/example/cooleshow/ui/fragment/MeFragment.kt

@@ -1,47 +0,0 @@
-package com.example.cooleshow.ui.fragment
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import com.cooleshow.base.ui.fragment.BaseFragment
-import com.example.cooleshow.R
-
-
-/*
-    "我的"界面
- */
-class MeFragment : BaseFragment(), View.OnClickListener {
-
-    override fun onStart() {
-        super.onStart()
-        loadData()
-    }
-
-    override fun getLayoutResId(): Int {
-        return R.layout.fragment_me;
-    }
-
-    override fun initView(rootView: View?) {
-    }
-
-    override fun initData() {
-    }
-
-    /*
-        加载初始数据
-     */
-    private fun loadData() {
-
-
-    }
-
-    /*
-        点击事件
-     */
-    override fun onClick(view: View) {
-
-
-    }
-
-}

+ 0 - 18
app/src/main/res/layout/activity_main.xml

@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    style="@style/MatchMatch.Vertical"
-    android:gravity="bottom">
-    <FrameLayout
-      android:id="@+id/mContaier"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_weight="1"/>
-
-
-    <com.cooleshow.base.widgets.BottomNavBar
-        android:id="@+id/mBottomNavBar"
-        style="@style/MatchWrap"
-        android:layout_gravity="bottom"
-        />
-</LinearLayout>

+ 0 - 11
app/src/main/res/layout/fragment_home.xml

@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <TextView
-        android:id="@+id/tv"
-        android:text="主页"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"></TextView>
-</androidx.constraintlayout.widget.ConstraintLayout>

+ 0 - 9
app/src/main/res/layout/fragment_me.xml

@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-    <TextView
-        android:text="我的"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"/>
-</androidx.constraintlayout.widget.ConstraintLayout>

+ 0 - 3
app/src/main/res/values/strings.xml

@@ -1,3 +0,0 @@
-<resources>
-    <string name="app_name">cooleShow</string>
-</resources>

+ 6 - 6
gradle.properties

@@ -27,12 +27,12 @@ kapt.incremental.apt=false
 
 isUserModule = true
 
-TEST_BASE_URL ="http://dev.colexiu.com/"
-RELEASE_BASE_URL =""
+TEST_BASE_URL ="https://dev.colexiu.com/"
+RELEASE_BASE_URL ="https://dev.colexiu.com/"
 
-TEST_BASE_URL_H5 ="http://dev.colexiu.com/teacher"
+TEST_BASE_URL_H5 ="https://dev.colexiu.com/teacher"
 #TEST_BASE_URL_H5 ="http://192.168.3.63:5000"
-RELEASE_BASE_URL_H5 =""
+RELEASE_BASE_URL_H5 ="https://dev.colexiu.com/teacher"
 
-TEST_BASE_URL_H5_STUDENT ="http://dev.colexiu.com/student"
-RELEASE_BASE_URL_H5_STUDENT =""
+TEST_BASE_URL_H5_STUDENT ="https://dev.colexiu.com/student"
+RELEASE_BASE_URL_H5_STUDENT ="https://dev.colexiu.com/student"

+ 1 - 1
settings.gradle

@@ -18,7 +18,7 @@ pluginManagement {
 
 
 rootProject.name = "cooleShow"
-include ':app', ':BaseLibrary'
+include ':student', ':BaseLibrary'
 
 include ':teacher'
 

+ 2 - 0
student/.gitignore

@@ -0,0 +1,2 @@
+/build
+/release/

+ 42 - 18
app/build.gradle → student/build.gradle

@@ -1,7 +1,6 @@
 plugins {
     id 'com.android.application'
     id 'org.jetbrains.kotlin.android'
-
 }
 apply plugin: 'kotlin-android-extensions'
 apply plugin: 'kotlin-kapt'
@@ -13,58 +12,83 @@ kapt {
     }
 }
 android {
-    compileSdk 31
+    compileSdkVersion 31
 
     defaultConfig {
-        applicationId "com.daya.cooleshow"
-        minSdk 21
-        targetSdk 31
+        applicationId "com.cooleshow.student"
+        minSdkVersion 21
+        targetSdkVersion 31
         versionCode 1
         versionName "1.0"
-        flavorDimensions "app"//多渠道打包维度不同问题
+
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
     }
 
+    signingConfigs {
+        release {
+            v1SigningEnabled true
+            v2SigningEnabled true
+            storeFile file("../cooleshow.jks")
+            //签名文件
+            storePassword "cooleshow"
+            keyAlias "cooleshow"
+            keyPassword "cooleshow"  //签名密码
+        }
+    }
+
     buildTypes {
         release {
             minifyEnabled false
+            signingConfig signingConfigs.release
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+            buildConfigField "String", "BASE_H5_URL", RELEASE_BASE_URL_H5
         }
-        debug{
+
+        debug {
             minifyEnabled false
+            signingConfig signingConfigs.release
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+            buildConfigField "String", "BASE_H5_URL", TEST_BASE_URL_H5
         }
     }
 
-
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_8
         targetCompatibility JavaVersion.VERSION_1_8
     }
-
-    packagingOptions {
-        resources.excludes.add("META-INF/*")
-    }
     kotlinOptions {
         jvmTarget = '1.8'
     }
-
-    buildFeatures{
+    buildFeatures {
         viewBinding = true
     }
+
+
+    repositories {
+        flatDir {
+            dirs 'libs'
+        }
+
+    }
 }
 
 dependencies {
+    api fileTree(dir: 'libs', include: ['*.jar'])
+    implementation 'androidx.core:core-ktx:1.7.0'
+    implementation 'androidx.appcompat:appcompat:1.3.0'
+    implementation 'com.google.android.material:material:1.4.0'
+    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
     testImplementation 'junit:junit:4.13.2'
     androidTestImplementation 'androidx.test.ext:junit:1.1.3'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
-    implementation 'androidx.core:core-ktx:1.7.0'
-    implementation 'androidx.appcompat:appcompat:1.3.0'
-    implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
+
 
     implementation project(path: ':BaseLibrary')
     api project(path: ':usercenter')
-
+    implementation project(path: ':rong_im:kit')
+    implementation project(path: ':rong_im:common_im_ui')
+    implementation project(path: ':live_teaching')
     implementation "com.alibaba:arouter-api:$rootProject.ext.android.arouter_api_version"
     kapt "com.alibaba:arouter-compiler:$rootProject.ext.android.arouter_api_version"
+
 }

+ 0 - 0
app/gradle.properties → student/gradle.properties


+ 0 - 0
app/proguard-rules.pro → student/proguard-rules.pro


+ 0 - 0
app/src/androidTest/java/com/example/cooleshow/ExampleInstrumentedTest.kt → student/src/androidTest/java/com/example/cooleshow/ExampleInstrumentedTest.kt


+ 9 - 9
app/src/main/AndroidManifest.xml → student/src/main/AndroidManifest.xml

@@ -1,18 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    package="com.example.cooleshow">
+    package="com.cooleshow.student">
 
     <application
-        android:name=".common.MainApplication"
+        android:name=".App"
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
+        android:networkSecurityConfig="@xml/network_security_config"
+        android:requestLegacyExternalStorage="true"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/Theme.CooleShow">
+
         <activity
-            android:name=".ui.activity.splash.SplashActivity"
+            android:name=".ui.splash.SplashActivity"
             android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -20,12 +22,10 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-
         <activity
-            android:name="com.example.cooleshow.ui.activity.MainActivity"
-            android:exported="true">
-
-        </activity>
+            android:name=".ui.splash.GuideActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
     </application>
 
 </manifest>

+ 112 - 0
student/src/main/java/com/cooleshow/student/App.java

@@ -0,0 +1,112 @@
+package com.cooleshow.student;
+
+import android.app.ActivityManager;
+import android.content.Context;
+import android.os.Build;
+import android.text.TextUtils;
+import android.webkit.WebView;
+
+import androidx.annotation.RequiresApi;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.common.BaseApplication;
+import com.cooleshow.base.data.net.CommonParamsHelper;
+import com.cooleshow.base.utils.ProcessUtils;
+import com.cooleshow.base.utils.Utils;
+import com.cooleshow.usercenter.helper.UserHelper;
+import com.daya.live_teaching.im.IMManager;
+
+import io.rong.push.RongPushClient;
+import io.rong.push.pushconfig.PushConfig;
+
+/**
+ * 创建日期:2022/5/25 17:16
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class App extends BaseApplication {
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        ARouter.init(this);
+        Utils.init(this);
+        initCommonParams();
+        initSDK();
+    }
+
+    private void initSDK() {
+        //设置webview配置
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+            webviewSetPath(this);
+        }
+        initRong();
+    }
+
+
+    private void initRong() {
+        PushConfig config = new PushConfig.Builder()
+//                .enableMiPush("2882303761518199184", "5831819935184")
+//                .enableOppoPush("2ccd04764bae48a3aedccd2b42fc1ef5", "64dc657d073746e4911f62d0c040d976")
+//                .enableHWPush(true)
+//                .enableVivoPush(true)
+                .build();
+        RongPushClient.setPushConfig(config);
+
+        if (BuildConfig.DEBUG) {
+            IMManager.init(this, "0vnjpoad0jbdz");////TODO 设置小班课appkey  uwd1c0sxuqp91   c9kqb3rdc451j 6tnym1br6pv07
+        } else {
+            IMManager.init(this, "6tnym1br6pv07");////TODO 设置小班课appkey  uwd1c0sxuqp91   c9kqb3rdc451j 6tnym1br6pv07
+        }
+
+//        RouteUtils.registerActivity(RouteUtils.RongActivityType.ConversationActivity, ConversationActivity.class);
+        /**
+         * liveClass 相关开始
+         */
+        /*
+         * 以上部分在所有进程中会执行
+         */
+        if (!getApplicationInfo().packageName.equals(ProcessUtils.getCurrentProcessName())) {
+            return;
+        }
+    }
+
+
+    private void initCommonParams() {
+        String userToken = UserHelper.getUserToken();
+        if (!TextUtils.isEmpty(userToken)) {
+            //添加公共参数
+            CommonParamsHelper.getInstance()
+                    .addCommonHeaderParams(CommonParamsHelper.USER_TOKEN, userToken);
+        }
+    }
+
+
+    @RequiresApi(api = 28)
+    public void webviewSetPath(Context context) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+            String processName = getProcessName(context);
+            if (processName != null && !getApplicationContext().getPackageName().equals(processName)) {//判断不等于默认进程名称
+                WebView.setDataDirectorySuffix(processName);
+            }
+        }
+    }
+
+    public String getProcessName(Context context) {
+        if (context == null)
+            return null;
+        ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
+        for (ActivityManager.RunningAppProcessInfo processInfo : manager.getRunningAppProcesses()) {
+            if (processInfo.pid == android.os.Process.myPid()) {
+                return processInfo.processName;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public boolean isTeacherClient() {
+        return true;
+    }
+}
+

+ 56 - 0
student/src/main/java/com/cooleshow/student/adapter/ViewPagerAdapter.java

@@ -0,0 +1,56 @@
+package com.cooleshow.student.adapter;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.viewpager.widget.PagerAdapter;
+
+import java.util.List;
+
+/**
+ * 创建日期:2022/5/24 18:01
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class ViewPagerAdapter extends PagerAdapter {
+    private List<View> views;
+    private Context context;
+
+    public ViewPagerAdapter(List<View> views, Context context) {
+        super();
+        this.views = views;
+        this.context = context;
+    }
+
+    @Override
+    public int getItemPosition(Object object) {
+        return super.getItemPosition(object);
+    }
+
+    @Override
+    public void destroyItem(ViewGroup container, int position, Object object) {
+        container.removeView(views.get(position));
+    }
+
+    @Override
+    public Object instantiateItem(ViewGroup container, int position) {
+        container.addView(views.get(position));
+        return views.get(position);
+    }
+
+    @Override
+    public int getCount() {
+        // TODO Auto-generated method stub
+        return views.size();
+    }
+
+
+    @Override
+    public boolean isViewFromObject(View view, Object arg1) {
+        // TODO Auto-generated method stub
+        return (view == arg1);
+    }
+
+}

+ 17 - 0
student/src/main/java/com/cooleshow/student/contract/GuideContract.java

@@ -0,0 +1,17 @@
+package com.cooleshow.student.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+
+/**
+ * 创建日期:2022/5/24 17:57
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface GuideContract {
+    interface GuideView extends BaseView {
+    }
+
+    interface Presenter {
+    }
+}

+ 15 - 0
student/src/main/java/com/cooleshow/student/presenter/splash/GuidePresenter.java

@@ -0,0 +1,15 @@
+package com.cooleshow.student.presenter.splash;
+
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.student.contract.GuideContract;
+
+
+/**
+ * 创建日期:2022/5/24 17:57
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class GuidePresenter extends BasePresenter<GuideContract.GuideView> implements GuideContract.Presenter{
+
+}

+ 10 - 0
student/src/main/java/com/cooleshow/student/ui/main/MainActivity.java

@@ -0,0 +1,10 @@
+package com.cooleshow.student.ui.main;
+
+/**
+ * 创建日期:2022/5/25 18:02
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MainActivity {
+}

+ 154 - 0
student/src/main/java/com/cooleshow/student/ui/splash/GuideActivity.java

@@ -0,0 +1,154 @@
+package com.cooleshow.student.ui.splash;
+
+import android.content.Context;
+import android.graphics.Point;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+import androidx.viewpager.widget.ViewPager;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.common.ConstantKey;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.SPUtils;
+import com.cooleshow.base.widgets.MyViewPage;
+import com.cooleshow.student.R;
+import com.cooleshow.student.adapter.ViewPagerAdapter;
+import com.cooleshow.student.databinding.ActivityGuideBinding;
+import com.cooleshow.student.presenter.splash.GuidePresenter;
+import com.cooleshow.usercenter.helper.UserHelper;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import io.rong.imkit.utils.StatusBarUtil;
+
+/**
+ * 创建日期:2022/5/24 17:53
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.SplashCenter.SPLASH_GUIDE)
+public class GuideActivity extends BaseMVPActivity<ActivityGuideBinding, GuidePresenter> {
+    private List<View> views;
+    private MyViewPage vp;
+    private ViewPagerAdapter vpAdapter;
+    private TextView tv_go;
+
+    @Override
+    protected void initView() {
+        LayoutInflater inflater = LayoutInflater.from(this);
+        views = new ArrayList<View>();
+        views.add(inflater.inflate(R.layout.guide_one, null));
+        views.add(inflater.inflate(R.layout.guide_two, null));
+        views.add(inflater.inflate(R.layout.guide_thre, null));
+        vpAdapter = new ViewPagerAdapter(views, this);
+        vp = findViewById(R.id.viewPager);
+        vp.setAdapter(vpAdapter);
+        tv_go = views.get(2).findViewById(R.id.tv_go);
+        tv_go.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                goAction();
+                finish();
+            }
+        });
+    }
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        StatusBarUtil.setStatusBarDarkTheme(this, true);
+    }
+
+    private void goAction(){
+        SPUtils.getInstance().put(ConstantKey.IS_FIRST_LAUNCH, true);
+        if (UserHelper.isLogin()) {
+            jumpMain();
+        } else {
+            jumpLogin();
+        }
+    }
+    private void jumpLogin() {
+        ARouter.getInstance().build(RouterPath.UserCenter.PATH_VERIFY_LOGIN).navigation();
+    }
+    private void jumpMain() {
+        ARouter.getInstance().build(RouterPath.APPCenter.PATH_HOME).navigation();
+    }
+
+    @Override
+    protected ActivityGuideBinding getLayoutView() {
+        return ActivityGuideBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected GuidePresenter createPresenter() {
+        return new GuidePresenter();
+    }
+
+
+    private int currentItem = 0;
+
+    /**
+     * 滑动进入主界面
+     */
+    private void addListener() {
+        vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+            @Override
+            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+
+            }
+
+            @Override
+            public void onPageSelected(int position) {
+                currentItem = position;
+                Log.i("Guide", "监听改变" + position);
+            }
+
+            @Override
+            public void onPageScrollStateChanged(int state) {
+
+            }
+        });
+        vp.setOnTouchListener(new View.OnTouchListener() {
+            float startX;
+            float startY;
+            float endX;
+            float endY;
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (event.getAction()) {
+                    case MotionEvent.ACTION_DOWN:
+                        startX = event.getX();
+                        startY = event.getY();
+                        break;
+                    case MotionEvent.ACTION_UP:
+                        endX = event.getX();
+                        endY = event.getY();
+                        WindowManager windowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
+                        //获取屏幕的宽度
+                        Point size = new Point();
+                        windowManager.getDefaultDisplay().getSize(size);
+                        int width = size.x;
+                        //首先要确定的是,是否到了最后一页,然后判断是否向左滑动,并且滑动距离是否符合,我这里的判断距离是屏幕宽度的4分之一(这里可以适当控制)
+                        if (currentItem == (views.size() - 1) && startX - endX > 0 && startX - endX >= (width / 4)) {
+                            Log.e("kasdkfhsjss", "=======页面跳转=====");
+                            jumpMain();
+                            overridePendingTransition(R.anim.slide_in_right, R.anim.slide_in_left);
+                        }
+                        break;
+                }
+                return false;
+            }
+        });
+    }
+}

+ 52 - 0
student/src/main/java/com/cooleshow/student/ui/splash/SplashActivity.kt

@@ -0,0 +1,52 @@
+package com.cooleshow.student.ui.splash
+
+import com.alibaba.android.arouter.launcher.ARouter
+import com.cooleshow.base.common.ConstantKey
+import com.cooleshow.base.router.RouterPath
+import com.cooleshow.base.ui.activity.BaseActivity
+import com.cooleshow.base.utils.SPUtils
+import com.cooleshow.student.databinding.ActivitySplashLayoutBinding
+import com.cooleshow.usercenter.helper.UserHelper
+
+
+/**
+ * Author by pq, Date on 2022/4/19.
+ */
+class SplashActivity : BaseActivity<ActivitySplashLayoutBinding>() {
+    override fun getLayoutView(): ActivitySplashLayoutBinding {
+        return ActivitySplashLayoutBinding.inflate(layoutInflater)
+    }
+
+    override fun initView() {
+
+    }
+
+    override fun initData() {
+        super.initData()
+        val isFirstLaunch = SPUtils.getInstance().getBoolean(ConstantKey.IS_FIRST_LAUNCH, false)
+        if (isFirstLaunch){
+            if (UserHelper.isLogin()) {
+                jumpMain()
+            } else {
+                jumpLogin()
+            }
+        }else{
+            goGuide();
+        }
+
+        finish()
+    }
+
+    private fun goGuide() {
+        ARouter.getInstance().build(RouterPath.SplashCenter.SPLASH_GUIDE).navigation()
+    }
+
+    private fun jumpMain() {
+        ARouter.getInstance().build(RouterPath.APPCenter.PATH_HOME).navigation()
+    }
+
+    private fun jumpLogin() {
+        ARouter.getInstance().build(RouterPath.UserCenter.PATH_VERIFY_LOGIN).navigation()
+    }
+
+}

+ 7 - 0
student/src/main/res/anim/slide_in_left.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:duration="1000"
+        android:fromXDelta="0%p"
+        android:toXDelta="-100%" />
+</set>

+ 8 - 0
student/src/main/res/anim/slide_in_right.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+    <translate
+        android:duration="1000"
+        android:fromXDelta="100%p"
+        android:toXDelta="0"
+        />
+</set>

+ 0 - 0
app/src/main/res/drawable-v24/ic_launcher_foreground.xml → student/src/main/res/drawable-v24/ic_launcher_foreground.xml


BIN
student/src/main/res/drawable-xhdpi/ic_default_chat.png


BIN
student/src/main/res/drawable-xhdpi/ic_default_home.png


BIN
student/src/main/res/drawable-xhdpi/ic_default_mall.png


BIN
student/src/main/res/drawable-xhdpi/ic_default_mine.png


BIN
student/src/main/res/drawable-xhdpi/ic_default_timetable.png


BIN
student/src/main/res/drawable-xhdpi/ic_selector_chat.png


BIN
student/src/main/res/drawable-xhdpi/ic_selector_home.png


BIN
student/src/main/res/drawable-xhdpi/ic_selector_mall.png


BIN
student/src/main/res/drawable-xhdpi/ic_selector_mine.png


BIN
student/src/main/res/drawable-xhdpi/ic_selector_timetable.png


BIN
student/src/main/res/drawable-xhdpi/icon_guid_center_1.png


BIN
student/src/main/res/drawable-xhdpi/icon_guid_center_2.png


BIN
student/src/main/res/drawable-xhdpi/icon_guid_center_3.png


BIN
student/src/main/res/drawable-xxhdpi/ic_default_chat.png


BIN
student/src/main/res/drawable-xxhdpi/ic_default_home.png


BIN
student/src/main/res/drawable-xxhdpi/ic_default_mall.png


BIN
student/src/main/res/drawable-xxhdpi/ic_default_mine.png


BIN
student/src/main/res/drawable-xxhdpi/ic_default_timetable.png


BIN
student/src/main/res/drawable-xxhdpi/ic_selector_chat.png


BIN
student/src/main/res/drawable-xxhdpi/ic_selector_home.png


BIN
student/src/main/res/drawable-xxhdpi/ic_selector_mall.png


BIN
student/src/main/res/drawable-xxhdpi/ic_selector_mine.png


BIN
student/src/main/res/drawable-xxhdpi/ic_selector_timetable.png


BIN
student/src/main/res/drawable-xxhdpi/icon_guid_center_1.png


BIN
student/src/main/res/drawable-xxhdpi/icon_guid_center_2.png


BIN
student/src/main/res/drawable-xxhdpi/icon_guid_center_3.png


+ 8 - 0
student/src/main/res/drawable/bg_guide_top.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <gradient android:type="linear" android:useLevel="true"
+        android:startColor="@color/white"
+        android:endColor="@color/color_cefbe3"
+        android:angle="90" />
+    <corners android:radius="3dp" />
+</shape>

+ 5 - 0
student/src/main/res/drawable/bottom_navigation_chat_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/ic_selector_chat" android:state_checked="true"/>
+    <item android:drawable="@drawable/ic_default_chat" android:state_checked="false"/>
+</selector>

+ 5 - 0
student/src/main/res/drawable/bottom_navigation_home_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/ic_selector_home" android:state_checked="true"/>
+    <item android:drawable="@drawable/ic_default_home" android:state_checked="false"/>
+</selector>

+ 5 - 0
student/src/main/res/drawable/bottom_navigation_mall_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/ic_selector_mall" android:state_checked="true"/>
+    <item android:drawable="@drawable/ic_default_mall" android:state_checked="false"/>
+</selector>

+ 5 - 0
student/src/main/res/drawable/bottom_navigation_mine_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/ic_selector_mine" android:state_checked="true"/>
+    <item android:drawable="@drawable/ic_default_mine" android:state_checked="false"/>
+</selector>

+ 5 - 0
student/src/main/res/drawable/bottom_navigation_timetable_selector.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/ic_selector_timetable" android:state_checked="true"/>
+    <item android:drawable="@drawable/ic_default_timetable" android:state_checked="false"/>
+</selector>

+ 0 - 0
app/src/main/res/drawable/ic_launcher_background.xml → student/src/main/res/drawable/ic_launcher_background.xml


+ 5 - 0
student/src/main/res/drawable/shape_course_status_ing.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/color_2dc7aa" />
+    <corners android:radius="22dp"/>
+</shape>

+ 6 - 0
student/src/main/res/drawable/view_guide_point_normal.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+    <solid android:color="@color/color_dcebe4" />
+
+</shape>

+ 7 - 0
student/src/main/res/drawable/view_guide_point_select.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/color_2dc7aa" />
+    <corners android:radius="4dp"/>
+
+</shape>

+ 15 - 0
student/src/main/res/layout/activity_guide.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:ignore="MissingDefaultResource">
+
+    <com.cooleshow.base.widgets.MyViewPage
+        android:id="@+id/viewPager"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@color/transparent" />
+
+
+</RelativeLayout>

+ 0 - 0
app/src/main/res/layout/activity_splash.xml → student/src/main/res/layout/activity_splash_layout.xml


+ 72 - 0
student/src/main/res/layout/guide_one.xml

@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white">
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_304"
+        android:background="@drawable/bg_guide_top" />
+
+    <LinearLayout
+        android:id="@+id/ll_points"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="@dimen/dp_97"
+        android:orientation="horizontal">
+
+        <View
+            android:layout_width="@dimen/dp_14"
+            android:layout_height="@dimen/dp_7"
+            android:background="@drawable/view_guide_point_select" />
+
+        <View
+            android:layout_width="@dimen/dp_7"
+            android:layout_height="@dimen/dp_7"
+            android:layout_marginLeft="11dp"
+            android:background="@drawable/view_guide_point_normal" />
+
+        <View
+            android:layout_width="@dimen/dp_7"
+            android:layout_height="@dimen/dp_7"
+            android:layout_marginLeft="11dp"
+            android:background="@drawable/view_guide_point_normal" />
+
+    </LinearLayout>
+
+    <TextView
+        android:id="@+id/tv_content"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_above="@+id/ll_points"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="@dimen/dp_112"
+        android:text="海量优质课程,名师讲解精学"
+        android:textColor="@color/color_9e9e9e" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_above="@+id/tv_content"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="10dp"
+        android:text="在家轻松学音乐"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_24"
+        android:textStyle="bold" />
+
+    <ImageView
+        android:id="@+id/im_center"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_330"
+        android:layout_above="@+id/tv_title"
+        android:layout_marginLeft="14dp"
+        android:layout_marginTop="174dp"
+        android:layout_marginRight="14dp"
+        android:layout_marginBottom="24dp"
+        android:src="@drawable/icon_guid_center_1" />
+</RelativeLayout>

+ 87 - 0
student/src/main/res/layout/guide_thre.xml

@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white">
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_304"
+        android:background="@drawable/bg_guide_top" />
+
+
+    <LinearLayout
+        android:id="@+id/ll_points"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="@dimen/dp_97"
+        android:orientation="horizontal">
+
+        <View
+            android:layout_width="@dimen/dp_7"
+            android:layout_height="@dimen/dp_7"
+            android:background="@drawable/view_guide_point_normal" />
+
+        <View
+            android:layout_width="@dimen/dp_7"
+            android:layout_height="@dimen/dp_7"
+            android:layout_marginLeft="11dp"
+            android:background="@drawable/view_guide_point_normal" />
+
+        <View
+            android:layout_width="@dimen/dp_14"
+            android:layout_height="@dimen/dp_7"
+            android:layout_marginLeft="11dp"
+            android:background="@drawable/view_guide_point_select" />
+    </LinearLayout>
+
+    <TextView
+        android:id="@+id/tv_go"
+        android:layout_width="@dimen/dp_180"
+        android:layout_height="@dimen/dp_40"
+        android:layout_above="@+id/ll_points"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="46dp"
+        android:background="@drawable/shape_course_status_ing"
+        android:gravity="center"
+        android:text="立即体验"
+        android:textColor="@color/white"
+        android:textSize="@dimen/sp_18" />
+
+    <TextView
+        android:id="@+id/tv_content"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_above="@+id/ll_points"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="@dimen/dp_112"
+        android:text="师生即时互动,经验交流分享"
+        android:textColor="@color/color_9e9e9e" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_above="@+id/tv_content"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="10dp"
+        android:text="多维沟通"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_24"
+        android:textStyle="bold" />
+
+    <ImageView
+        android:id="@+id/im_center"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_330"
+        android:layout_above="@+id/tv_title"
+        android:layout_marginLeft="14dp"
+        android:layout_marginTop="174dp"
+        android:layout_marginRight="14dp"
+        android:layout_marginBottom="24dp"
+        android:src="@drawable/icon_guid_center_3" />
+
+
+</RelativeLayout>

+ 72 - 0
student/src/main/res/layout/guide_two.xml

@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white">
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_304"
+        android:background="@drawable/bg_guide_top" />
+
+    <LinearLayout
+        android:id="@+id/ll_points"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="@dimen/dp_97"
+        android:orientation="horizontal">
+
+        <View
+            android:layout_width="@dimen/dp_7"
+            android:layout_height="@dimen/dp_7"
+            android:background="@drawable/view_guide_point_normal" />
+
+        <View
+            android:layout_width="@dimen/dp_14"
+            android:layout_height="@dimen/dp_7"
+            android:layout_marginLeft="11dp"
+            android:background="@drawable/view_guide_point_select" />
+
+        <View
+            android:layout_width="@dimen/dp_7"
+            android:layout_height="@dimen/dp_7"
+            android:layout_marginLeft="11dp"
+            android:background="@drawable/view_guide_point_normal" />
+
+    </LinearLayout>
+
+    <TextView
+        android:id="@+id/tv_content"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_above="@+id/ll_points"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="@dimen/dp_112"
+        android:text="24小时随时练,海量曲谱任您挑选"
+        android:textColor="@color/color_9e9e9e" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_above="@+id/tv_content"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="10dp"
+        android:text="云教练实时反馈"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_24"
+        android:textStyle="bold" />
+
+    <ImageView
+        android:id="@+id/im_center"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_330"
+        android:layout_above="@+id/tv_title"
+        android:layout_marginLeft="14dp"
+        android:layout_marginTop="174dp"
+        android:layout_marginRight="14dp"
+        android:layout_marginBottom="24dp"
+        android:src="@drawable/icon_guid_center_2" />
+</RelativeLayout>

+ 27 - 0
student/src/main/res/menu/bottom_nav_item.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:id="@+id/menu_home"
+        android:icon="@drawable/bottom_navigation_home_selector"
+        android:title="@string/menu_home"
+        />
+    <item
+        android:id="@+id/menu_coursetable"
+        android:icon="@drawable/bottom_navigation_timetable_selector"
+        android:title="@string/menu_course_table"/>
+
+    <item
+        android:id="@+id/menu_chat"
+        android:icon="@drawable/bottom_navigation_chat_selector"
+        android:title="@string/menu_chat"/>
+
+    <item
+        android:id="@+id/menu_mall"
+        android:icon="@drawable/bottom_navigation_mall_selector"
+        android:title="@string/menu_mall"/>
+
+    <item
+        android:id="@+id/menu_mine"
+        android:icon="@drawable/bottom_navigation_mine_selector"
+        android:title="@string/menu_mine"/>
+</menu>

+ 0 - 0
app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml → student/src/main/res/mipmap-anydpi-v26/ic_launcher.xml


+ 0 - 0
app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml → student/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml


+ 0 - 0
app/src/main/res/mipmap-hdpi/ic_launcher.webp → student/src/main/res/mipmap-hdpi/ic_launcher.webp


+ 0 - 0
app/src/main/res/mipmap-hdpi/ic_launcher_round.webp → student/src/main/res/mipmap-hdpi/ic_launcher_round.webp


+ 0 - 0
app/src/main/res/mipmap-mdpi/ic_launcher.webp → student/src/main/res/mipmap-mdpi/ic_launcher.webp


+ 0 - 0
app/src/main/res/mipmap-mdpi/ic_launcher_round.webp → student/src/main/res/mipmap-mdpi/ic_launcher_round.webp


+ 0 - 0
app/src/main/res/mipmap-xhdpi/ic_launcher.webp → student/src/main/res/mipmap-xhdpi/ic_launcher.webp


+ 0 - 0
app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp → student/src/main/res/mipmap-xhdpi/ic_launcher_round.webp


+ 0 - 0
app/src/main/res/mipmap-xxhdpi/ic_launcher.webp → student/src/main/res/mipmap-xxhdpi/ic_launcher.webp


+ 0 - 0
app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp → student/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp


+ 0 - 0
app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp → student/src/main/res/mipmap-xxxhdpi/ic_launcher.webp


+ 0 - 0
app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp → student/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp


+ 0 - 0
app/src/main/res/values-night/themes.xml → student/src/main/res/values-night/themes.xml


+ 0 - 0
app/src/main/res/values/colors.xml → student/src/main/res/values/colors.xml


+ 8 - 0
student/src/main/res/values/strings.xml

@@ -0,0 +1,8 @@
+<resources>
+    <string name="app_name">student</string>
+    <string name="menu_home">首页</string>
+    <string name="menu_course_table">课表</string>
+    <string name="menu_chat">聊天</string>
+    <string name="menu_mall">商城</string>
+    <string name="menu_mine">我的</string>
+</resources>

+ 0 - 0
app/src/main/res/values/themes.xml → student/src/main/res/values/themes.xml


+ 0 - 0
app/src/test/java/com/example/cooleshow/ExampleUnitTest.kt → student/src/test/java/com/example/cooleshow/ExampleUnitTest.kt


+ 5 - 0
teacher/src/main/AndroidManifest.xml

@@ -187,6 +187,11 @@
             android:name=".ui.message.MessageBoxActivity"
             android:configChanges="orientation|screenSize|keyboardHidden"
             android:screenOrientation="portrait" />
+        <activity
+            android:name=".ui.mine.PayTestActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+
     </application>
 
 </manifest>

+ 29 - 1
teacher/src/main/java/com/cooleshow/teacher/api/APIService.java

@@ -3,8 +3,10 @@ package com.cooleshow.teacher.api;
 import com.cooleshow.base.data.net.BaseResponse;
 import com.cooleshow.teacher.bean.AccountDetailBean;
 import com.cooleshow.teacher.bean.AddressBean;
+import com.cooleshow.teacher.bean.CountOfUnreadBean;
 import com.cooleshow.teacher.bean.CourseCommentListBean;
 import com.cooleshow.teacher.bean.CourseTableDataBean;
+import com.cooleshow.teacher.bean.HomeCountBean;
 import com.cooleshow.teacher.bean.HomePageSheetMusicListBean;
 import com.cooleshow.teacher.bean.HomeworkListBean;
 import com.cooleshow.teacher.bean.LiveCourseListBean;
@@ -12,6 +14,7 @@ import com.cooleshow.teacher.bean.MineLiveCourseListBean;
 import com.cooleshow.teacher.bean.MineVideoCourseListBean;
 import com.cooleshow.teacher.bean.MusicSheetListBean;
 import com.cooleshow.teacher.bean.MusicSheetShareBean;
+import com.cooleshow.teacher.bean.PayTestBean;
 import com.cooleshow.teacher.bean.ReceivedCommentListBean;
 import com.cooleshow.teacher.bean.ResponseBankCardBean;
 import com.cooleshow.teacher.bean.ResponseBindCardBean;
@@ -44,6 +47,7 @@ import retrofit2.http.Query;
 import static com.cooleshow.base.common.BaseConstant.AUTH_GROUP;
 import static com.cooleshow.base.common.BaseConstant.MALL_ADMIN_SERVER;
 import static com.cooleshow.base.common.BaseConstant.MALL_PORTAL_SERVER;
+import static com.cooleshow.base.common.BaseConstant.STUDENT_GROUP;
 import static com.cooleshow.base.common.BaseConstant.TEACHER_GROUP;
 
 /**
@@ -328,6 +332,7 @@ public interface APIService {
 
     /**
      * 用户绑卡
+     *
      * @param body
      * @return
      */
@@ -336,6 +341,7 @@ public interface APIService {
 
     /**
      * 用户解绑银行卡
+     *
      * @param body
      * @return
      */
@@ -343,7 +349,6 @@ public interface APIService {
     Observable<BaseResponse<ResponseBindCardBean>> unbindBankCard(@Body RequestBody body);
 
 
-
     /**
      * 查询银行
      *
@@ -463,4 +468,27 @@ public interface APIService {
      */
     @POST(TEACHER_GROUP + "sysMessage/setRead/{id}")
     Observable<BaseResponse<Object>> setCurrentRead(@Path("id") long id);
+
+    /**
+     * 查询用户未读消息条数
+     *
+     * @return
+     */
+    @GET(TEACHER_GROUP + "sysMessage/queryCountOfUnread")
+    Observable<BaseResponse<List<CountOfUnreadBean>>> queryCountOfUnread();
+
+    /**
+     * 首页统计数据
+     * @return
+     */
+    @GET(TEACHER_GROUP + "home/count")
+    Observable<BaseResponse<HomeCountBean>> getHomeCount();
+
+    /**
+     * 测试订单支付
+     * @return
+     */
+    @POST(STUDENT_GROUP + "userOrder/orderPay")
+    Observable<BaseResponse<PayTestBean>> orderPay(@Body RequestBody body);
+
 }

+ 12 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/CountOfUnreadBean.java

@@ -0,0 +1,12 @@
+package com.cooleshow.teacher.bean;
+
+/**
+ * 创建日期:2022/5/25 10:15
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class CountOfUnreadBean {
+    public Object key;
+    public Object value;
+}

+ 35 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/HomeCountBean.java

@@ -0,0 +1,35 @@
+package com.cooleshow.teacher.bean;
+
+/**
+ * 创建日期:2022/5/25 11:41
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class HomeCountBean {
+    /**
+     * 课后作业
+     */
+    public int courseHomework;
+    /**
+     * 我的课程
+     */
+    public int courseSchedule;
+    /**
+     * 课后评价
+     */
+    public int courseScheduleReplied;
+    /**
+     * 我的收入
+     */
+    public double decimal;
+    /**
+     * 我的乐谱
+     */
+    public int musicSheet;
+    /**
+     * 我收到的评价
+     */
+    public int studentReplied;
+
+}

+ 15 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/PayTestBean.java

@@ -0,0 +1,15 @@
+package com.cooleshow.teacher.bean;
+
+/**
+ * 创建日期:2022/5/25 14:37
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class PayTestBean {
+    public String paymentNo;
+    public String payChannel;
+    public String pay_amt;
+    public String pay_info;
+
+}

File diff suppressed because it is too large
+ 0 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/alipay/AuthResult.java


+ 1 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/alipay/PayResult.java

@@ -0,0 +1 @@
+package com.cooleshow.teacher.bean.alipay;

import android.text.TextUtils;

import java.util.Map;

public class PayResult {
	private String resultStatus;
	private String result;
	private String memo;

	public PayResult(Map<String, String> rawResult) {
		if (rawResult == null) {
			return;
		}

		for (String key : rawResult.keySet()) {
			if (TextUtils.equals(key, "resultStatus")) {
				resultStatus = rawResult.get(key);
			} else if (TextUtils.equals(key, "result")) {
				result = rawResult.get(key);
			} else if (TextUtils.equals(key, "memo")) {
				memo = rawResult.get(key);
			}
		}
	}

	@Override
	public String toString() {
		return "resultStatus={" + resultStatus + "};memo={" + memo
				+ "};result={" + result + "}";
	}

	/**
	 * @return the resultStatus
	 */
	public String getResultStatus() {
		return resultStatus;
	}

	/**
	 * @return the memo
	 */
	public String getMemo() {
		return memo;
	}

	/**
	 * @return the result
	 */
	public String getResult() {
		return result;
	}
}

+ 74 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/weixinpay/WeixinPayInfo.java

@@ -0,0 +1,74 @@
+package com.cooleshow.teacher.bean.weixinpay;
+
+/**
+ * 创建日期:2022/5/25 14:47
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class WeixinPayInfo {
+
+    private String appid;
+    private String noncestr;
+    private String packageValue;
+    private String partnerid;
+    private String prepayid;
+    private String Sign;
+    private String timestamp;
+
+    public String getAppid() {
+        return appid;
+    }
+
+    public void setAppid(String appid) {
+        this.appid = appid;
+    }
+
+    public String getNoncestr() {
+        return noncestr;
+    }
+
+    public void setNoncestr(String noncestr) {
+        this.noncestr = noncestr;
+    }
+
+    public String getPackageValue() {
+        return packageValue;
+    }
+
+    public void setPackageValue(String packageValue) {
+        this.packageValue = packageValue;
+    }
+
+    public String getPartnerid() {
+        return partnerid;
+    }
+
+    public void setPartnerid(String partnerid) {
+        this.partnerid = partnerid;
+    }
+
+    public String getPrepayid() {
+        return prepayid;
+    }
+
+    public void setPrepayid(String prepayid) {
+        this.prepayid = prepayid;
+    }
+
+    public String getSign() {
+        return Sign;
+    }
+
+    public void setSign(String sign) {
+        Sign = sign;
+    }
+
+    public String getTimestamp() {
+        return timestamp;
+    }
+
+    public void setTimestamp(String timestamp) {
+        this.timestamp = timestamp;
+    }
+}

+ 2 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/HomeContract.java

@@ -1,6 +1,7 @@
 package com.cooleshow.teacher.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.HomeCountBean;
 import com.cooleshow.teacher.bean.TeacherUserInfo;
 import com.cooleshow.usercenter.bean.UserInfo;
 
@@ -10,6 +11,7 @@ import com.cooleshow.usercenter.bean.UserInfo;
 public interface HomeContract {
 
     interface HomeView extends BaseView {
+        void getHomeCountSuccess(HomeCountBean data);
     }
 
     interface Presenter {

Some files were not shown because too many files changed in this diff