From b13afc751dbbce24753d008f1f87d2c5e133a4ad Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期二, 09 七月 2024 15:19:26 +0800
Subject: [PATCH] fix bug

---
 app/src/main/java/com/dollearn/student/ui/course/MyCourseDetailActivity.kt      |   13 
 app/src/main/java/com/dollearn/student/MainActivity.kt                          |   57 +
 app/src/main/res/mipmap-xxhdpi/share_wx.png                                     |    0 
 xldutils-kotlin/src/main/AndroidManifest.xml                                    |    2 
 app/src/main/java/com/dollearn/student/utils/Const.kt                           |   30 
 app/src/main/java/com/dollearn/student/network/entity/Goods.kt                  |    2 
 app/src/main/res/xml/scene_fragment_look.xml                                    |    2 
 app/src/main/java/com/dollearn/student/ui/course/CourseActivity.kt              |   11 
 app/src/main/java/com/dollearn/student/ui/TransparentStatusBarActivity.kt       |    4 
 .idea/gradle.xml                                                                |    3 
 app/src/main/java/com/dollearn/student/network/entity/ReqSaveProgress.kt        |    3 
 app/src/main/java/com/dollearn/student/ui/course/CourseDetailActivity.kt        |   10 
 app/src/main/java/com/dollearn/student/ui/shop/ShopFragment.kt                  |    7 
 app/src/main/java/com/dollearn/student/ui/welfare/ExchangeRecordActivity.kt     |   31 
 app/src/main/java/com/dollearn/student/ui/home/IncludeActivity.kt               |   17 
 app/src/main/res/xml/fragment_listen_scene_result_2.xml                         |    2 
 app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceActivity.kt           |    9 
 app/src/main/java/com/dollearn/student/ui/home/LookImgFragment.kt               |  145 +
 app/src/main/java/com/dollearn/student/ui/home/adapter/WeekAdapter.kt           |    3 
 app/src/main/java/com/dollearn/student/utils/glide/GlideUtil.java               |    6 
 app/src/main/res/xml/scene_fragment_match.xml                                   |    2 
 app/src/main/java/com/dollearn/student/ui/mine/LearnRecordActivity.kt           |    5 
 app/src/main/java/com/dollearn/student/network/entity/Banner.kt                 |    8 
 app/src/main/java/com/dollearn/student/dialog/ShareDialog.kt                    |   28 
 app/src/main/java/com/dollearn/student/ui/home/ResultActivity.kt                |   33 
 app/src/main/res/layout/activity_login.xml                                      |    1 
 app/src/main/res/drawable/selector_enable_choose.xml                            |    5 
 app/src/main/java/com/dollearn/student/ui/home/FieldActivity.kt                 |   26 
 app/src/main/res/values/colors.xml                                              |    1 
 app/src/main/res/xml/fragment_listen_scene_result_4.xml                         |    2 
 app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt                  |   45 
 app/src/main/res/xml/item_game_1_scene.xml                                      |    2 
 app/src/main/java/com/dollearn/student/ui/home/ScheduleActivity.kt              |    1 
 app/src/main/java/com/dollearn/student/ui/SplashActivity.kt                     |    6 
 app/src/main/res/layout/dialog_rule.xml                                         |    2 
 app/src/main/res/xml/scene_fragment_listen_voice.xml                            |    2 
 app/src/main/java/com/dollearn/student/network/HttpManager.kt                   |  351 +-----
 app/src/main/java/com/dollearn/student/network/Functions.kt                     |    6 
 app/src/main/res/mipmap-xxhdpi/share_moment.png                                 |    0 
 app/src/main/res/xml/fragment_listen_scene_result_6.xml                         |   65 +
 app/src/main/java/com/dollearn/student/network/ApiService.kt                    |  351 ------
 app/src/main/java/com/dollearn/student/network/entity/ExchangeRecord.kt         |   14 
 app/src/main/java/com/dollearn/student/ui/home/PlaceDetailActivity.kt           |   39 
 app/src/main/res/layout/fragment_include.xml                                    |   54 +
 app/src/main/res/mipmap-xxhdpi/ic_launcher.png                                  |    0 
 app/src/main/java/com/dollearn/student/ui/course/MyCourseActivity.kt            |    7 
 xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/TitleActivity.kt      |    5 
 app/src/main/java/com/dollearn/student/network/entity/ProgressBean.kt           |    3 
 app/src/main/res/layout/item_week.xml                                           |    2 
 app/src/main/res/layout/activity_exchange_record.xml                            |   18 
 app/src/main/java/com/dollearn/student/network/Apis.kt                          |   68 -
 app/src/main/java/com/dollearn/student/ui/home/IncludeFragment.kt               |  115 ++
 app/src/main/java/com/dollearn/student/ui/worldcup/WorldCupListActivity.kt      |    4 
 app/src/main/res/xml/scene_fragment_choose_voice.xml                            |    2 
 app/build.gradle                                                                |    6 
 app/src/main/java/com/dollearn/student/network/entity/ConfigBean.kt             |    8 
 app/src/main/java/com/dollearn/student/ui/home/WeekSelectActivity.kt            |    1 
 app/src/main/java/com/dollearn/student/ui/home/JoinVipActivity.kt               |    4 
 app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt                    |    6 
 app/src/main/java/com/dollearn/student/ui/home/ScannerActivity.kt               |    6 
 app/src/main/java/com/dollearn/student/ui/home/ListenStoryActivity.kt           |   30 
 app/src/main/java/com/dollearn/student/ui/welfare/GoodsDetailActivity.kt        |    8 
 app/src/main/res/xml/fragment_listen_scene_result_1.xml                         |    2 
 app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt                |  102 +
 app/src/main/java/com/dollearn/student/network/entity/GoodsType.kt              |    6 
 app/src/main/res/drawable/bg_blue_line_grey_8dp.xml                             |    6 
 app/src/main/java/com/dollearn/student/utils/extention/WeparkEx.kt              |   48 
 app/src/main/java/com/dollearn/student/ui/home/RememberFinishActivity.kt        |    9 
 app/src/main/java/com/dollearn/student/ui/home/MatchDetailActivity.kt           |   13 
 app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt                 |  122 ++
 app/src/main/java/com/dollearn/student/DollearnApplication.kt                   |    9 
 xldutils-kotlin/src/main/java/cn/sinata/xldutils/fragment/ImageFragment.kt      |    2 
 app/src/main/java/com/dollearn/student/ui/home/ListenFragment.kt                |   67 +
 app/src/main/java/com/dollearn/student/ui/H5Activity.kt                         |    5 
 app/src/main/java/com/dollearn/student/dialog/TipDialog.kt                      |    1 
 xldutils-kotlin/src/main/res/layout/activity_base_title.xml                     |    3 
 app/src/main/java/com/dollearn/student/ui/course/WelfareDetailActivity.kt       |    9 
 app/src/main/java/com/dollearn/student/ui/home/MatchActivity.kt                 |   10 
 app/src/main/java/com/dollearn/student/ui/login/LoginActivity.kt                |    2 
 app/src/main/res/layout/dialog_share.xml                                        |   65 +
 app/src/main/java/com/dollearn/student/ui/course/adapter/MedalAdapter.kt        |    3 
 app/src/main/java/com/dollearn/student/ui/home/DailyFragment.kt                 |   52 
 app/src/main/res/xml/fragment_listen_scene_result_3.xml                         |    2 
 app/src/main/res/layout/fragment_q_a.xml                                        |   59 
 app/src/main/java/com/dollearn/student/ui/shop/ExchangeActivity.kt              |    7 
 xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/ImagePagerActivity.kt |    4 
 app/src/main/java/com/dollearn/student/network/entity/GoodsDetail.kt            |    7 
 app/src/main/java/com/dollearn/student/ui/course/JoinedCourseDetailActivity.kt  |    7 
 app/src/main/AndroidManifest.xml                                                |  112 +-
 app/src/main/java/com/dollearn/student/ui/home/LookImgActivity.kt               |   12 
 app/src/main/java/com/dollearn/student/ui/login/RegisterActivity.kt             |   24 
 app/src/main/java/com/dollearn/student/ui/home/PayResultActivity.kt             |    3 
 app/src/main/java/com/dollearn/student/ui/home/adapter/GameAdapter.kt           |   57 +
 app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt           |  213 ++-
 /dev/null                                                                       |   32 
 app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt                    |  132 ++
 app/src/main/java/com/dollearn/student/ui/home/RememberFragment.kt              |    6 
 app/src/main/java/com/dollearn/student/ui/home/SuperListenActivity.kt           |  111 +
 app/src/main/java/com/dollearn/student/ui/mine/AddressManageActivity.kt         |   10 
 app/src/main/java/com/dollearn/student/ui/home/ListenActivity.kt                |    7 
 app/src/main/res/xml/fragment_listen_scene_result_5.xml                         |   65 +
 xldutils-kotlin/src/main/res/layout/activity_image_pager.xml                    |    4 
 102 files changed, 1,797 insertions(+), 1,312 deletions(-)

diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index ccfa5ee..b14f736 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -5,9 +5,7 @@
     <option name="linkedExternalProjectsSettings">
       <GradleProjectSettings>
         <option name="testRunner" value="PLATFORM" />
-        <option name="distributionType" value="DEFAULT_WRAPPED" />
         <option name="externalProjectPath" value="$PROJECT_DIR$" />
-        <option name="gradleJvm" value="Embedded JDK" />
         <option name="modules">
           <set>
             <option value="$PROJECT_DIR$" />
@@ -18,6 +16,7 @@
             <option value="$PROJECT_DIR$/zxinglibrary" />
           </set>
         </option>
+        <option name="resolveExternalAnnotations" value="false" />
         <option name="resolveModulePerSourceSet" value="false" />
         <option name="useQualifiedModuleNames" value="true" />
       </GradleProjectSettings>
diff --git a/app/build.gradle b/app/build.gradle
index 91e3030..da03d56 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,8 +10,8 @@
         applicationId "com.dollearn.student"
         minSdkVersion 21
         targetSdkVersion 30
-        versionCode 8
-        versionName "1.18"
+        versionCode 1
+        versionName "1.0"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
     }
 
@@ -47,7 +47,7 @@
             applicationVariants.all { variant ->
                 // 更新至Android Studio 3.3 gradle 4.10.1
                 variant.outputs.all {
-                    outputFileName = "wepark-${defaultConfig.versionName}-${new Date().format("yyyy-MM-dd" , TimeZone.getTimeZone("GMT+08")) }.apk"
+                    outputFileName = "dollearn-${defaultConfig.versionName}-${new Date().format("yyyy-MM-dd" , TimeZone.getTimeZone("GMT+08")) }.apk"
                 }
             }
 //            ndk {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 563c930..7adcfcb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -33,7 +33,7 @@
     </queries>
 
     <application
-        android:name=".WeparkApplication"
+        android:name=".DollearnApplication"
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
@@ -44,7 +44,8 @@
         android:theme="@style/AppTheme">
         <activity
             android:name=".MainActivity"
-            android:launchMode="singleTask" />
+            android:launchMode="singleTask"
+            android:screenOrientation="landscape" />
         <activity android:name=".ui.SplashActivity"
             android:screenOrientation="landscape">
             <intent-filter>
@@ -63,7 +64,8 @@
             android:exported="true" />
         <activity
             android:name=".ui.H5Activity"
-            android:launchMode="singleTask" />
+            android:launchMode="singleTask"
+            android:screenOrientation="landscape" />
         <activity
             android:name=".ui.login.LoginActivity"
             android:label="登录"
@@ -85,16 +87,15 @@
         <activity
             android:name=".ui.home.JoinVipActivity"
             android:label="成为会员" />
-        <activity android:name=".ui.home.PayResultActivity" />
-        <activity
-            android:name=".ui.course.JoinCourseActivity"
-            android:label="运动营详情" />
+        <activity android:name=".ui.home.PayResultActivity"
+            android:screenOrientation="landscape" />
         <activity
             android:name=".ui.home.AddStudentActivity"
             android:label="添加运动营成员" android:windowSoftInputMode="adjustPan" />
         <activity
             android:name=".ui.home.MatchActivity"
-            android:label="自主学习5-音图相配" />
+            android:label="自主学习5-音图相配"
+            android:screenOrientation="landscape" />
         <activity
             android:name=".ui.home.MatchDetailActivity"
             android:label="活动详情" />
@@ -140,9 +141,6 @@
             android:label="课时详情"
             android:launchMode="singleTask" />
         <activity
-            android:name=".ui.discovery.ShopListActivity"
-            android:label="门店列表" />
-        <activity
             android:name=".ui.discovery.ShopDetailActivity"
             android:label="门店详情" />
         <activity
@@ -173,9 +171,6 @@
             android:name=".ui.course.ReportActivity"
             android:label="测试报告" />
         <activity
-            android:name=".ui.course.ReserveRecordActivity"
-            android:label="预约运动营" />
-        <activity
             android:name=".ui.welfare.UserInfoActivity"
             android:label="个人信息" />
         <activity
@@ -185,12 +180,6 @@
         <activity
             android:name=".ui.welfare.CoinRecordActivity"
             android:label="账单" />
-        <activity
-            android:name=".ui.welfare.CouponActivity"
-            android:label="我的券包" />
-        <activity
-            android:name=".ui.welfare.ScoreShopActivity"
-            android:label="积分商城" />
         <activity
             android:name=".ui.welfare.GoodsDetailActivity"
             android:label="商品详情" />
@@ -213,49 +202,68 @@
         <activity
             android:name=".ui.course.ExperienceCourseActivity"
             android:label="体验购课" />
-        <activity android:name=".ui.course.SmartStadiumActivity" android:label="扫码启动智慧足球墙"/>
         <activity
             android:name=".ui.game.GameActivity"
             android:label="智慧球场"
             android:configChanges="orientation|screenSize|keyboardHidden"
             android:screenOrientation="portrait" />
-        <activity android:name=".ui.welfare.OnlineShopActivity" />
-        <activity android:name=".ui.game.MyDataActivity" android:label="我的数据"/>
-        <activity android:name=".ui.course.UnPayCourseDetailActivity" android:label="运动营详情"/>
-        <activity android:name=".ui.home.PlatformActivity" />
-        <activity android:name=".ui.worldcup.WorldCupListActivity" android:label="社区世界杯"/>
-        <activity android:name=".ui.worldcup.WorldCupDetailActivity" android:label="社区世界杯"/>
-        <activity android:name=".ui.worldcup.JoinWCActivity" android:label="社区世界杯"/>
-        <activity android:name=".ui.worldcup.MyWorldActivity" android:label="我的报名"/>
-        <activity android:name=".ui.discovery.MyQrCodeActivity" android:label="我的二维码"/>
-        <activity android:name=".ui.worldcup.MyWorldInfoActivity" android:label="社区世界杯"/>
-        <activity android:name=".ui.discovery.StudentManageActivity" android:label="人员管理"/>
-        <activity android:name=".ui.worldcup.RefereeWorldListActivity" android:label="社区世界杯"/>
-        <activity android:name=".ui.worldcup.StartWorldActivity" />
-        <activity android:name=".ui.home.WeekSelectActivity" android:label="第一年学习周目选择">
+        <activity android:name=".ui.welfare.OnlineShopActivity"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.game.MyDataActivity" android:label="我的数据"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.home.PlatformActivity"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.worldcup.WorldCupListActivity" android:label="社区世界杯"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.worldcup.WorldCupDetailActivity" android:label="社区世界杯"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.worldcup.JoinWCActivity" android:label="社区世界杯"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.worldcup.RefereeWorldListActivity" android:label="社区世界杯"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.worldcup.StartWorldActivity"
+            android:screenOrientation="landscape" />
+        <activity android:name=".ui.home.WeekSelectActivity" android:label="第一年学习周目选择"
+            android:screenOrientation="landscape">
 <!--            <intent-filter>-->
 <!--                <action android:name="android.intent.action.MAIN" />-->
 
 <!--                <category android:name="android.intent.category.LAUNCHER" />-->
 <!--            </intent-filter>-->
         </activity>
-        <activity android:name=".ui.home.ScheduleActivity" />
-        <activity android:name=".ui.shop.ExchangeActivity" android:label="立即兑换"/>
-        <activity android:name=".ui.mine.LearnRecordActivity" android:label="学习记录"/>
-        <activity android:name=".ui.mine.ChangeAddressActivity" android:label="修改地址"/>
-        <activity android:name=".ui.shop.AddAddressActivity" android:label="添加地址"/>
-        <activity android:name=".ui.mine.AddressManageActivity" android:label="地址管理"/>
-        <activity android:name=".ui.mine.ScoreRecordActivity" android:label="积分明细"/>
-        <activity android:name=".ui.home.ListenActivity" android:label="自主学习1-听音选图" android:launchMode="singleTask"/>
-        <activity android:name=".ui.home.ChooseVoiceActivity" android:label="自主学习2-看图选音" android:launchMode="singleTask"/>
-        <activity android:name=".ui.home.IncludeActivity" android:label="自主学习3-归纳排除" android:launchMode="singleTask"/>
-        <activity android:name=".ui.home.QAActivity" android:label="自主学习4-有问有答" android:launchMode="singleTask"/>
-        <activity android:name=".ui.home.ResultActivity" />
-        <activity android:name=".ui.home.LookImgActivity" android:label="自主学故事1-看图配音" android:launchMode="singleTask"/>
-        <activity android:name=".ui.home.RememberFinishActivity" android:label="自主故事2—框架记忆"/>
-        <activity android:name=".ui.home.ListenStoryActivity" android:label="自主故事2—框架记忆" />
-        <activity android:name=".ui.home.MemoryActivity"  android:label="自主游戏1—超级记忆" />
-        <activity android:name=".ui.home.SuperListenActivity"  android:label="自主游戏1—超级听力" />
+        <activity android:name=".ui.home.ScheduleActivity"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.shop.ExchangeActivity" android:label="立即兑换"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.mine.LearnRecordActivity" android:label="学习记录"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.mine.ChangeAddressActivity" android:label="修改地址"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.shop.AddAddressActivity" android:label="添加地址"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.mine.AddressManageActivity" android:label="地址管理"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.mine.ScoreRecordActivity" android:label="积分明细"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.home.ListenActivity" android:label="自主学习1-听音选图" android:launchMode="singleTask" android:screenOrientation="landscape"/>
+        <activity android:name=".ui.home.ChooseVoiceActivity" android:label="自主学习2-看图选音" android:launchMode="singleTask"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.home.IncludeActivity" android:label="自主学习3-归纳排除" android:launchMode="singleTask"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.home.QAActivity" android:label="自主学习4-有问有答" android:launchMode="singleTask"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.home.ResultActivity"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.home.LookImgActivity" android:label="自主学故事1-看图配音" android:launchMode="singleTask"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.home.RememberFinishActivity" android:label="自主故事2—框架记忆"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.home.ListenStoryActivity" android:label="自主故事2—框架记忆"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.home.MemoryActivity"  android:label="自主游戏1—超级记忆"
+            android:screenOrientation="landscape"/>
+        <activity android:name=".ui.home.SuperListenActivity"  android:label="自主游戏1—超级听力"
+            android:screenOrientation="landscape"/>
 
         <meta-data
             android:name="com.amap.api.v2.apikey"
diff --git a/app/src/main/java/com/dollearn/student/WeparkApplication.kt b/app/src/main/java/com/dollearn/student/DollearnApplication.kt
similarity index 94%
rename from app/src/main/java/com/dollearn/student/WeparkApplication.kt
rename to app/src/main/java/com/dollearn/student/DollearnApplication.kt
index b2ab797..f5203fd 100644
--- a/app/src/main/java/com/dollearn/student/WeparkApplication.kt
+++ b/app/src/main/java/com/dollearn/student/DollearnApplication.kt
@@ -16,7 +16,7 @@
 import java.util.concurrent.TimeUnit
 
 
-class WeparkApplication :BaseApplication(), Application.ActivityLifecycleCallbacks {
+class DollearnApplication :BaseApplication(), Application.ActivityLifecycleCallbacks {
     override fun getSPName() = "GWXSp"
     private var heartSubscribe: Disposable? = null
 
@@ -113,14 +113,13 @@
         var provinceCode = "" //当前省
         var cityName = "" //当前市
         var cityCode = "" //当前市
-        var store = "" //门店名称
         var storeId = "" //门店id
         var avatar = "" //本人头像
 
-        var appContext: WeparkApplication? = null
-        fun getInstance(): WeparkApplication? {
+        var appContext: DollearnApplication? = null
+        fun getInstance(): DollearnApplication? {
             if (appContext == null) {
-                appContext = WeparkApplication()
+                appContext = DollearnApplication()
             }
             return appContext
         }
diff --git a/app/src/main/java/com/dollearn/student/MainActivity.kt b/app/src/main/java/com/dollearn/student/MainActivity.kt
index 2f671f4..df759cc 100644
--- a/app/src/main/java/com/dollearn/student/MainActivity.kt
+++ b/app/src/main/java/com/dollearn/student/MainActivity.kt
@@ -1,14 +1,17 @@
 package com.dollearn.student
 
 import android.annotation.SuppressLint
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import android.util.Log
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentPagerAdapter
 import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.showAllowingStateLoss
+import cn.sinata.xldutils.utils.SPUtils
 import com.flyco.tablayout.listener.CustomTabEntity
 import com.flyco.tablayout.listener.OnTabSelectListener
 import com.github.zackratos.ultimatebar.UltimateBar
-import com.dollearn.student.dialog.CompetitionTipDialog
 import com.dollearn.student.network.HttpManager
 import com.dollearn.student.network.entity.UserBean
 import com.dollearn.student.network.request
@@ -29,6 +32,7 @@
     private val fragments    = arrayListOf<Fragment>()
     var homeData: UserBean? = null //个人信息
     var score = 0
+    private var handler: Handler? = null
 
     override fun initClick() {
     }
@@ -42,6 +46,50 @@
         initTab()
         EventBus.getDefault().register(this)
         getData()
+        getVoiceUrl()
+        getScoreConfig()
+    }
+
+    private fun getScoreConfig() {
+        HttpManager.onlineDuration().request(this,false,{_,data->
+            SPUtils.instance().put(Const.SCORE_DURATION,(data?:"0").toInt()).apply()
+            startTimer()
+        }){_,_->
+            startTimer()
+        }
+    }
+
+    private fun startTimer() {
+        val duration = SPUtils.instance().getInt(Const.SCORE_DURATION,30)//单位分钟
+        var mins = 0
+        handler = object :Handler(Looper.myLooper()!!){
+            override fun handleMessage(msg: Message) {
+                super.handleMessage(msg)
+                if (msg.what == 0){
+                    mins++
+                    Log.e("mmp","当前已在线${mins}分钟")
+                    if (mins > duration){
+                        HttpManager.giveIntegral().request(this@MainActivity,false,{_,_->
+                            mins = 0
+                            handler?.sendEmptyMessageDelayed(0,1000*60)
+                        }){_,_->
+                            handler?.sendEmptyMessageDelayed(0,1000*60)
+                        }
+                    }else
+                        handler?.sendEmptyMessageDelayed(0,1000*60)
+                }
+            }
+        }
+        handler?.sendEmptyMessageDelayed(0,1000*60)
+    }
+
+    private fun getVoiceUrl() {
+        HttpManager.promptVoice().request(this,false){_,data->
+            if (!data?.correct.isNullOrEmpty())
+                SPUtils.instance().put(Const.RV,data?.correct?:"").apply()
+            if (!data?.error.isNullOrEmpty())
+                SPUtils.instance().put(Const.EV,data?.error?:"").apply()
+        }
     }
 
     private fun initTab() {
@@ -97,7 +145,7 @@
 
     @Subscribe
     fun onSwitch(e:EmptyEvent){
-        if (e.code == Const.EventCode.SWITCH_HOME){
+        if (e.code == Const.EventCode.CLICK_GAME_ITEM){
             switchHome()
         }else if(e.code == Const.EventCode.CHANGE_WELFARE){
             tab_bar.currentTab = 2
@@ -145,6 +193,7 @@
     override fun onDestroy() {
         super.onDestroy()
         EventBus.getDefault().unregister(this)
-        WeparkApplication.storeId = ""
+        handler?.removeCallbacksAndMessages(null)
+        handler = null
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/dialog/CheckQrCodeDialog.kt b/app/src/main/java/com/dollearn/student/dialog/CheckQrCodeDialog.kt
deleted file mode 100644
index 470f386..0000000
--- a/app/src/main/java/com/dollearn/student/dialog/CheckQrCodeDialog.kt
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.dollearn.student.dialog
-
-import android.view.Gravity
-import cn.sinata.xldutils.visible
-import com.dollearn.student.R
-import com.dollearn.student.utils.getQRcodeImg
-import kotlinx.android.synthetic.main.dialog_check_qrcode.*
-import kotlinx.android.synthetic.main.dialog_check_shops.*
-import kotlinx.android.synthetic.main.dialog_check_shops.iv_close
-import kotlinx.android.synthetic.main.dialog_choose_coupon.*
-import kotlinx.android.synthetic.main.my_reservatiion_layout.*
-
-class CheckQrCodeDialog:BaseDialogFragment() {
-    override fun setContentView() = R.layout.dialog_check_qrcode
-
-    override fun setGravity() = Gravity.CENTER
-
-
-    private val qrinfo by lazy { arguments?.getString("qrinfo") }
-    private val title by lazy { arguments?.getString("title") }
-
-    override fun initView() {
-        if (!title.isNullOrEmpty()){
-            tv_title.visible()
-            tv_title.text = title
-        }
-        ivqr.setImageBitmap(getQRcodeImg(context, qrinfo))
-        iv_close.setOnClickListener { dismissAllowingStateLoss() }
-    }
-
-    override fun onStart() {
-        super.onStart()
-        val window = dialog?.window
-        val attributes = window?.attributes
-        attributes?.dimAmount = 0.9f
-        window?.attributes = attributes
-    }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/dialog/ChooseCouponDialog.kt b/app/src/main/java/com/dollearn/student/dialog/ChooseCouponDialog.kt
deleted file mode 100644
index f46f837..0000000
--- a/app/src/main/java/com/dollearn/student/dialog/ChooseCouponDialog.kt
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.dollearn.student.dialog
-
-import android.view.Gravity
-import androidx.recyclerview.widget.LinearLayoutManager
-import cn.sinata.xldutils.utils.myToast
-import com.dollearn.student.R
-import com.dollearn.student.network.entity.Coupon
-import com.dollearn.student.ui.home.adapter.CouponAdapter
-import com.dollearn.student.utils.interfaces.StringCallback
-import kotlinx.android.synthetic.main.dialog_choose_coupon.*
-
-class ChooseCouponDialog:BaseDialogFragment() {
-    override fun setContentView() = R.layout.dialog_choose_coupon
-
-    override fun setGravity() = Gravity.BOTTOM
-
-    private val list = arrayListOf<Coupon>()
-    private val adapter = CouponAdapter(list)
-
-    private val checked by lazy { arguments?.getLong("checked") }
-    var callback:StringCallback? = null
-
-    override fun initView() {
-        list.addAll(arguments?.getParcelableArrayList("list")?: arrayListOf())
-        adapter.checked = checked?: 0L
-        rv_coupon.layoutManager = LinearLayoutManager(requireContext())
-        rv_coupon.adapter = adapter
-        adapter.setOnItemClickListener { view, position ->
-            adapter.checked = list[position].id
-            adapter.notifyDataSetChanged()
-        }
-        tv_action.setOnClickListener {
-            if (adapter.checked==0L)
-                myToast("请选择优惠券")
-            else{
-                callback?.onResult(adapter.checked.toString())
-                dismissAllowingStateLoss()
-            }
-        }
-        tv_cancel.setOnClickListener { dismissAllowingStateLoss() }
-    }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/dialog/ChooseShopDialog.kt b/app/src/main/java/com/dollearn/student/dialog/ChooseShopDialog.kt
deleted file mode 100644
index c64a987..0000000
--- a/app/src/main/java/com/dollearn/student/dialog/ChooseShopDialog.kt
+++ /dev/null
@@ -1,184 +0,0 @@
-package com.dollearn.student.dialog
-
-import android.view.Gravity
-import androidx.recyclerview.widget.LinearLayoutManager
-import cn.sinata.xldutils.activity.BaseActivity
-import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.myToast
-import cn.sinata.xldutils.visible
-import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.CommonData
-import com.dollearn.student.network.request
-import com.dollearn.student.ui.home.adapter.StringAdapter
-import com.dollearn.student.utils.Const
-import com.dollearn.student.utils.event.EmptyEvent
-import com.dollearn.student.utils.extention.clickDelay
-import com.dollearn.student.utils.interfaces.StringCallback
-import kotlinx.android.synthetic.main.dialog_shop_choose.*
-import org.greenrobot.eventbus.EventBus
-
-class ChooseShopDialog : BaseDialogFragment() {
-    var stringCallback: StringCallback? = null
-    override fun setContentView() = R.layout.dialog_shop_choose
-
-    private var provinceCode = ""
-    private var cityCode = ""
-    private var shopId = ""
-    private var shopName = ""
-    private val cities = arrayListOf<CommonData>()
-    private val cityStrings = arrayListOf<String>()
-    private val cityAdapter = StringAdapter(cityStrings)
-
-    private val shops = arrayListOf<CommonData>()
-    private val shopStrings = arrayListOf<String>()
-    private val shopAdapter = StringAdapter(shopStrings)
-
-    private fun getscoreshopUse(): Boolean {
-        if (arguments == null) return false
-        else
-            return arguments?.getBoolean("scoreshopUse", false) as Boolean
-
-
-    }
-
-
-    override fun setGravity() = Gravity.CENTER
-
-    override fun initView() {
-        tv_province.text = WeparkApplication.province
-        provinceCode = WeparkApplication.provinceCode
-        tv_city.text = WeparkApplication.cityName
-        cityCode = WeparkApplication.cityCode
-
-        if (!getscoreshopUse()) {
-            shopId = WeparkApplication.storeId
-            tv_shop.text = WeparkApplication.store
-        }
-        tv_cancel.setOnClickListener { dismissAllowingStateLoss() }
-        tv_action.clickDelay {
-            if (shopId.isEmpty() && !getscoreshopUse())
-                myToast("请选择门店")
-            else {
-                if (getscoreshopUse()) {
-
-                    stringCallback?.onResult(
-                        if (shopId.isEmpty() && shopName.isEmpty())
-                            "" else "$shopId-*-*$shopName"
-                    )
-                } else {
-                    WeparkApplication.province = tv_province.text.toString()
-                    WeparkApplication.provinceCode = provinceCode
-                    WeparkApplication.cityName = tv_city.text.toString()
-                    WeparkApplication.cityCode = cityCode
-                    WeparkApplication.store = tv_shop.text.toString()
-                    WeparkApplication.storeId = shopId
-                    EventBus.getDefault().post(EmptyEvent(Const.EventCode.CHANGE_SHOP))
-                }
-
-                dismissAllowingStateLoss()
-            }
-        }
-        getProvince()
-        tv_province.clickDelay {
-            bg.callOnClick()
-            rv_province.visible()
-        }
-        tv_city.clickDelay {
-            bg.callOnClick()
-            getCity()
-        }
-        tv_shop.clickDelay {
-            bg.callOnClick()
-            getShop()
-        }
-        bg.clickDelay {
-            rv_province.gone()
-            rv_city.gone()
-            rv_shop.gone()
-        }
-        rv_city.layoutManager = LinearLayoutManager(requireContext())
-        rv_city.adapter = cityAdapter
-        cityAdapter.setOnItemClickListener { view, position ->
-            cityCode = cities[position].code
-            tv_city.text = cities[position].name
-            tv_shop.text = ""
-            shopId = ""
-            rv_city.gone()
-        }
-        rv_shop.layoutManager = LinearLayoutManager(requireContext())
-        rv_shop.adapter = shopAdapter
-        shopAdapter.setOnItemClickListener { view, position ->
-            if (getscoreshopUse() && position == 0) {
-                shopId = ""
-                tv_shop.text = "全部门店"
-                shopName = ""
-            } else {
-                shopId = shops[position].id.toString()
-                tv_shop.text = shops[position].name
-                shopName = shops[position].name
-            }
-
-            rv_shop.gone()
-        }
-    }
-
-    private fun getProvince() {
-        HttpManager.queryProvinceAndCity(null)
-            .request(requireActivity() as BaseActivity) { _, data ->
-                if (!isAdded)
-                    return@request
-                rv_province.layoutManager = LinearLayoutManager(requireContext())
-                val list = arrayListOf<String>()
-                list.addAll((data ?: arrayListOf()).map { it.name })
-                val stringAdapter = StringAdapter(list)
-                rv_province.adapter = stringAdapter
-                stringAdapter.setOnItemClickListener { view, position ->
-                    provinceCode = data!![position].code
-                    tv_province.text = data[position].name
-                    tv_city.text = ""
-                    cityCode = ""
-                    tv_shop.text = ""
-                    shopId = ""
-                    rv_province.gone()
-                }
-            }
-    }
-
-    private fun getCity() {
-        if (provinceCode.isEmpty()) {
-            myToast("请选择省")
-            return
-        }
-        HttpManager.queryProvinceAndCity(provinceCode)
-            .request(requireActivity() as BaseActivity) { _, data ->
-                cities.clear()
-                cityStrings.clear()
-                cities.addAll(data ?: arrayListOf())
-                cityStrings.addAll((cities.map { it.name }))
-                cityAdapter.notifyDataSetChanged()
-                rv_city.visible()
-            }
-    }
-
-    private fun getShop() {
-        if (cityCode.isEmpty()&&provinceCode.isEmpty()) {
-            myToast("请选择所在城市")
-            return
-        }
-        HttpManager.queryStoreByCityCode(cityCode,provinceCode)
-            .request(requireActivity() as BaseActivity) { _, data ->
-                shops.clear()
-                shopStrings.clear()
-                shops.addAll(data ?: arrayListOf())
-                shopStrings.addAll((shops.map { it.name }))
-                if (getscoreshopUse()) {
-                    shops.add(0, CommonData())
-                    shopStrings.add(0, "全部门店")
-                }
-                shopAdapter.notifyDataSetChanged()
-                rv_shop.visible()
-            }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/dialog/CompetitionTipDialog.kt b/app/src/main/java/com/dollearn/student/dialog/CompetitionTipDialog.kt
deleted file mode 100644
index 7237147..0000000
--- a/app/src/main/java/com/dollearn/student/dialog/CompetitionTipDialog.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.dollearn.student.dialog
-
-import android.view.Gravity
-import com.dollearn.student.R
-import com.dollearn.student.ui.worldcup.MyWorldActivity
-import kotlinx.android.synthetic.main.dialog_competition_tip.*
-import org.jetbrains.anko.support.v4.startActivity
-import org.jetbrains.anko.support.v4.toast
-
-class CompetitionTipDialog: BaseDialogFragment() {
-    override fun setContentView() = R.layout.dialog_competition_tip
-
-    override fun setGravity() = Gravity.CENTER
-
-    override fun initView() {
-        tv_close.setOnClickListener { dismissAllowingStateLoss() }
-        tv_see.setOnClickListener {
-            startActivity<MyWorldActivity>("index" to 2)
-            dismissAllowingStateLoss()
-        }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/dialog/ShareDialog.kt b/app/src/main/java/com/dollearn/student/dialog/ShareDialog.kt
new file mode 100644
index 0000000..3c89557
--- /dev/null
+++ b/app/src/main/java/com/dollearn/student/dialog/ShareDialog.kt
@@ -0,0 +1,28 @@
+package com.dollearn.student.dialog
+
+import android.view.Gravity
+import com.dollearn.student.R
+import com.dollearn.student.utils.interfaces.StringCallback
+import kotlinx.android.synthetic.main.dialog_share.*
+class ShareDialog:BaseDialogFragment() {
+    override fun setContentView() = R.layout.dialog_share
+
+    override fun setGravity() = Gravity.BOTTOM
+
+    var callback:StringCallback? = null
+
+    override fun initView() {
+        iv_close.setOnClickListener { dismissAllowingStateLoss() }
+
+        wv_1.setOnClickListener {
+            callback?.onResult("wx")
+            dismissAllowingStateLoss()
+        }
+
+        wv_2.setOnClickListener {
+            callback?.onResult("circle")
+            dismissAllowingStateLoss()
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/dialog/TipDialog.kt b/app/src/main/java/com/dollearn/student/dialog/TipDialog.kt
index c6d25f6..c313ed2 100644
--- a/app/src/main/java/com/dollearn/student/dialog/TipDialog.kt
+++ b/app/src/main/java/com/dollearn/student/dialog/TipDialog.kt
@@ -53,7 +53,6 @@
             tv_ok.gone()
             tv_alert.visible()
             tv_alert.text = ok
-            alert_line.visible()
         }
 
         tv_msg.text = msg
diff --git a/app/src/main/java/com/dollearn/student/network/ApiService.kt b/app/src/main/java/com/dollearn/student/network/ApiService.kt
index 1c688ac..a120182 100644
--- a/app/src/main/java/com/dollearn/student/network/ApiService.kt
+++ b/app/src/main/java/com/dollearn/student/network/ApiService.kt
@@ -2,22 +2,17 @@
 
 import cn.sinata.xldutils.data.ResultData
 import com.google.gson.JsonObject
-import com.dollearn.student.WeparkApplication
-import com.dollearn.student.WeparkApplication.Companion.storeId
+import com.dollearn.student.DollearnApplication.Companion.storeId
 import com.dollearn.student.network.entity.*
 import com.dollearn.student.utils.Const
 import com.dollearn.student.utils.pay.PayInfo
 import io.reactivex.Flowable
-import okhttp3.ResponseBody
 import retrofit2.http.*
 
 interface ApiService {
     @FormUrlEncoded
     @POST(Apis.H5_URL)
     fun getH5(@Field("type") type: Int): Flowable<ResultData<String>>
-
-    @POST(Apis.queryBasisSet)
-    fun queryBasisSet(): Flowable<ResultData<ArrayList<CommonData>>>
 
     @FormUrlEncoded
     @POST(Apis.queryProvinceAndCity)
@@ -26,25 +21,6 @@
     @FormUrlEncoded
     @POST(Apis.queryStoreByCityCode)
     fun queryStoreByCityCode(@Field("cityCode") code: String,@Field("provinceCode") provinceCode: String): Flowable<ResultData<ArrayList<CommonData>>>
-
-    @FormUrlEncoded
-    @POST(Apis.queryVersionByType)
-    fun queryVersionByType(
-        @Field("type") type: Int = 1
-    ): Flowable<ResultData<JsonObject>>
-
-    @FormUrlEncoded
-    @POST(Apis.querySystemSetByType)
-    fun querySystemSetByType(
-        @Field("type") type: Int
-    ): Flowable<ResultData<JsonObject>>
-
-    @FormUrlEncoded
-    @POST(Apis.queryJoinPlayPai)
-    fun queryJoinPlayPai(
-        @Field("lat") lat: Double?,
-        @Field("lon") lon: Double?
-    ): Flowable<ResultData<HomeData>>
 
     @FormUrlEncoded
     @POST(Apis.addVipPayment)
@@ -61,10 +37,6 @@
         @Field("couponId") couponId: Long,
         @Field("orderId") orderId: String?
     ): Flowable<ResultData<PayInfo>>
-
-    @FormUrlEncoded
-    @POST(Apis.payment)
-    fun paymentCourse2(@FieldMap map: HashMap<String, Any?>): Flowable<ResultData<PayInfo>>
 
     @FormUrlEncoded
     @POST(Apis.payment)
@@ -88,28 +60,8 @@
     ): Flowable<ResultData<PayInfo>>
 
     @FormUrlEncoded
-    @POST(Apis.queryStoreConfig)
-    fun queryStoreConfig(@Field("storeId") storeId: String): Flowable<ResultData<List<Banner>>>
-
-    @FormUrlEncoded
-    @POST(Apis.queryIndexSet)
-    fun queryIndexSet(@Field("id") storeId: String): Flowable<ResultData<List<Banner>>>
-
-    @FormUrlEncoded
     @POST(Apis.queryPhysical)
     fun queryPhysical(@Field("stuID") id: String): Flowable<ResultData<Report>>
-
-    @FormUrlEncoded
-    @POST(Apis.cancelCourse)
-    fun cancelCourse(@Field("courseStuRecordId") courseStuRecordId: String): Flowable<ResultData<Any>>
-
-    @FormUrlEncoded
-    @POST(Apis.reverse)
-    fun reverse(
-        @Field("time") time: String,
-        @Field("stuId") stuId: String,
-        @Field("courseID") courseID: String
-    ): Flowable<ResultData<Any>>
 
     @FormUrlEncoded
     @POST(Apis.stuAppointList)
@@ -122,18 +74,11 @@
         @Field("size") size: Int = Const.PAGE_SIZE
     ): Flowable<ResultData<List<ReserveRecord>>>
 
-    @FormUrlEncoded
-    @POST(Apis.goodsOfCourseStore)
-    fun goodsOfCourseStore(
-        @Field("isCourse") isCourse: Int,
-        @Field("pointsMerId") pointsMerId: String,
-        @Field("lat") lat: Double?,
-        @Field("lon") lon: Double?
-    ): Flowable<ResultData<DefaultData>>
-
-
     @GET(Apis.userDetails)
     fun userDetails(): Flowable<ResultData<UserBean>>
+
+    @GET(Apis.shareInfo)
+    fun shareInfo(): Flowable<ResultData<ConfigBean>>
 
     @GET(Apis.studyRecord)
     fun studyRecord(): Flowable<ResultData<StudyRecord>>
@@ -141,13 +86,6 @@
     @FormUrlEncoded
     @POST(Apis.uploadImage)
     fun uploadImage(@Field("userImage") userImage: String): Flowable<ResultData<Any>>
-
-    @FormUrlEncoded
-    @POST(Apis.queryCompetitionList)
-    fun queryCompetitionList(
-        @Field("cityCode") cityCode: String?, @Field("registerCondition") registerCondition: Int?,
-        @Field("heat") heat: String?, @Field("content") search: String?
-    ): Flowable<ResultData<List<Match>>>
 
     @FormUrlEncoded
     @POST(Apis.queryClassificationBenefitsVideosList)
@@ -233,14 +171,6 @@
     fun weeksOfAddHours(@Field("packetId") id: Long): Flowable<ResultData<Any>>
 
     @FormUrlEncoded
-    @POST(Apis.paymentCourseCouponList)
-    fun paymentCourseCouponList(@Field("coursePackagePaymentConfigId") id: Int?): Flowable<ResultData<List<Coupon>>>
-
-    @FormUrlEncoded
-    @POST(Apis.queryCouponList)
-    fun queryCouponList(@Field("distributionMethod") id: Int = 2): Flowable<ResultData<List<Coupon>>>
-
-    @FormUrlEncoded
     @POST(Apis.queryMySiteById)
     fun queryMySiteById(@Field("id") id: String): Flowable<ResultData<MySite>>
 
@@ -265,46 +195,6 @@
         @Field("courseTypeId") courseTypeId: Int?,
         @Field("search") search: String?
     ): Flowable<ResultData<List<JoinedCourse>>>
-
-    @FormUrlEncoded
-    @POST(Apis.querySiteTimes)
-    fun querySiteTimes(
-        @Field("id") id: String,
-        @Field("day") day: String,
-        @Field("halfName") halfName: String?,
-        @Field("siteName") siteName: String?
-    ): Flowable<ResultData<List<PlaceTime>>>
-
-    @FormUrlEncoded
-    @POST(Apis.querySiteCouponList)
-    fun querySiteCouponList(
-        @Field("siteId") id: String,
-        @Field("lat") lat: Double?,
-        @Field("lon") lon: Double?,
-        @Field("price") price: Double
-    ): Flowable<ResultData<List<Coupon>>>
-
-    @FormUrlEncoded
-    @POST(Apis.querySiteInfo)
-    fun querySiteInfo(
-        @Field("id") id: String,
-        @Field("lat") lat: Double?,
-        @Field("lon") lon: Double?
-    ): Flowable<ResultData<Place>>
-
-    @FormUrlEncoded
-    @POST(Apis.reservationSite)
-    fun reservationSite(
-        @Field("id") id: String,
-        @Field("booker") booker: String,
-        @Field("phone") phone: String,
-        @Field("times") times: String,
-        @Field("payType") payType: Int,
-        @Field("couponId") couponId: Long?,
-        @Field("isHalf") isHalf: Int,
-        @Field("halfName") halfName: String?,
-        @Field("nextName") nextName: String
-    ): Flowable<ResultData<PayInfo>>
 
     @FormUrlEncoded
     @POST(Apis.continuePaymentMySite)
@@ -415,10 +305,6 @@
     ): Flowable<ResultData<WeeksOfCourseDetails>>
 
     @FormUrlEncoded
-    @POST(Apis.switchStu)
-    fun switchStu(@Field("stuId") stuId: String): Flowable<ResultData<Any>>
-
-    @FormUrlEncoded
     @POST(Apis.lessonDetails)
     fun lessonDetails(
         @Field("stuId") stuId: String,
@@ -450,6 +336,9 @@
         @Query("phone") phone: String
     ): Flowable<ResultData<Any>>
 
+    @GET(Apis.promptVoice)
+    fun promptVoice(): Flowable<ResultData<ConfigBean>>
+
     @FormUrlEncoded
     @POST
     fun register(
@@ -466,13 +355,6 @@
         @Field("openId") openId: String?, @Field("lat") lat: Double?, @Field("lon") lon: Double?
     ): Flowable<ResultData<JsonObject>>
 
-    @FormUrlEncoded
-    @POST(Apis.userLogin)
-    fun userLogin(
-        @Field("password") password: String,
-        @Field("phone") phone: String
-    ): Flowable<ResultData<String>>
-
     @POST(Apis.captchaLogin)
     fun captchaLogin(
         @Body phoneRequest : String
@@ -486,6 +368,12 @@
 
     @GET(Apis.studySchedule)
     fun studySchedule(@Query("week")week:Int,@Query("day")day:Int): Flowable<ResultData<Schedule>>
+
+    @GET(Apis.onlineDuration)
+    fun onlineDuration(): Flowable<ResultData<String>>
+
+    @GET(Apis.giveIntegral)
+    fun giveIntegral(): Flowable<ResultData<Boolean>>
 
     @FormUrlEncoded
     @POST(Apis.queryBanner)
@@ -546,21 +434,6 @@
         @Field("shopId") shopId: String?
 
     ): Flowable<ResultData<List<Goods>>>
-
-    @FormUrlEncoded
-    @POST(Apis.exchangeStoreIds)
-    fun exchangeStoreIds(
-        @Field("goodsType") goodsType: Int,
-        @Field("pointsMerId") id: String
-    ): Flowable<ResultData<List<Shop>>>
-
-    @FormUrlEncoded
-    @POST(Apis.exchangeRecords)
-    fun exchangeRecords(
-        @Field("goodsType") goodsType: Int?,
-        @Field("useType") useType: Int?
-    ): Flowable<ResultData<List<ExchangeRecord>>>
-
     @FormUrlEncoded
     @POST(Apis.redemptionDetails)
     fun redemptionDetails(
@@ -569,18 +442,6 @@
 
     @POST(Apis.cancellation)
     fun cancellation(): Flowable<ResultData<Any>>
-
-    @FormUrlEncoded
-    @POST(Apis.productRedemptionOperation)
-    fun productRedemptionOperation(
-        @Field("goodsType") goodsType: Int,
-        @Field("exchangeType") exchangeType: Int,
-        @Field("goodId") goodId: String,
-        @Field("nums") nums: Int,
-        @Field("payType") payType: Int?,
-        @Field("stuIds") stuIds: String?,
-        @Field("storeId") storeId: String?
-    ): Flowable<ResultData<PayInfo>>
 
     @FormUrlEncoded
     @POST(Apis.queryStoreFreeBenefit)
@@ -651,14 +512,20 @@
     @POST(Apis.exitLearning)
     fun exitLearning(@Body body: String): Flowable<ResultData<Any>>
 
-    @POST(Apis.completeLearning)
-    fun completeLearning(@Body body: String): Flowable<ResultData<Any>>
+    @GET(Apis.exitGameOrStory)
+    fun exitGameOrStory(@Query("studyTime") studyTime: Int): Flowable<ResultData<Any>>
 
-    @POST(Apis.completeStory)
-    fun completeStory(@Body body: String): Flowable<ResultData<Any>>
+    @POST(Apis.completeLearning)
+    fun completeLearning(@Body body: String): Flowable<ResultData<Int?>>
+
+    @GET(Apis.completeStory)
+    fun completeStory(@Query("accuracy") accuracy: Int,
+                      @Query("storyId") storyId: String,
+                      @Query("type") type: Int,
+                      @Query("studyTime") studyTime: Int): Flowable<ResultData<Int?>>
 
     @POST(Apis.gameAchievement)
-    fun gameAchievement(@Body body: String): Flowable<ResultData<Any>>
+    fun gameAchievement(@Body body: String): Flowable<ResultData<Int?>>
 
     @GET(Apis.teamSchedule)
     fun teamSchedule(@Query("day") day:Int,@Query("type") type:Int,@Query("week") week:Int): Flowable<ResultData<ProgressBean>>
@@ -772,154 +639,10 @@
     ): Flowable<ResultData<GoodsList>>
 
     @GET(Apis.goodDetail)
-    fun goodDetail(
-        @Query("goodId") goodId: String): Flowable<ResultData<GoodsDetail>>
-
-    @FormUrlEncoded
-    @POST(Apis.queryIsTest)
-    fun queryIsTest(
-        @Field("gradeId") gradeId: Int,
-        @Field("subjectsId") subjectsId: Int
-    ): Flowable<ResultData<TestingResult>>
-
-    @FormUrlEncoded
-    @POST(Apis.queryTestQuestion)
-    fun queryTestQuestion(
-        @Field("gradeId") gradeId: Int,
-        @Field("subjectsId") subjectsId: Int
-    ): Flowable<ResultData<ArrayList<TestingQuestion>>>
-
-    @FormUrlEncoded
-    @POST(Apis.optSubmitTestPaper)
-    fun optSubmitTestPaper(
-        @Field("paperId") paperId: Int,
-        @Field("time") time: Int,
-        @Field("data") data: String
-    ): Flowable<ResultData<JsonObject>>
-
-    @FormUrlEncoded
-    @POST(Apis.queryMeAppraisal)
-    fun queryMeAppraisal(
-        @Field("current") current: Int,
-        @Field("size") size: Int = Const.PAGE_SIZE
-    ): Flowable<ResultData<ArrayList<TestingRecord>>>
-
-    @FormUrlEncoded
-    @POST(Apis.queryOrderList)
-    fun queryOrderList(
-        @Field("current") current: Int,
-        @Field("type") type: Int,
-        @Field("size") size: Int = Const.PAGE_SIZE
-    ): Flowable<ResultData<ArrayList<Order>>>
-
-    @FormUrlEncoded
-    @POST(Apis.queryApplyDetail)
-    fun queryApplyDetail(
-        @Field("courseStudentId") courseStudentId: Int
-    ): Flowable<ResultData<Order>>
-
-    @POST(Apis.queryIsBindAlipay)
-    fun queryIsBindAlipay(): Flowable<ResultData<Boolean>>
+    fun goodDetail(@Query("goodId") goodId: String): Flowable<ResultData<GoodsDetail>>
 
     @GET(Apis.exchangeRecord)
-    fun exchangeRecord(): Flowable<ResultData<List<ExchangeRecord>>>
-
-    @FormUrlEncoded
-    @POST(Apis.queryCanRefund)
-    fun queryCanRefund(
-        @Field("courseStudentId") courseStudentId: Int
-    ): Flowable<ResultData<JsonObject>>
-
-    @FormUrlEncoded
-    @POST(Apis.optApplyRefund)
-    fun optApplyRefund(
-        @Field("courseStudentId") courseStudentId: Int,
-        @Field("refundClassHours") refundClassHours: Int,
-        @Field("refundMark") refundMark: String,
-        @Field("refundMoney") refundMoney: Double
-    ): Flowable<ResultData<JsonObject>>
-
-    @FormUrlEncoded
-    @POST(Apis.optCancelApply)
-    fun optCancelApply(
-        @Field("applyId") applyId: Int
-    ): Flowable<ResultData<JsonObject>>
-
-    @FormUrlEncoded
-    @POST(Apis.optAddBind)
-    fun optAddBind(
-        @Field("openId") openId: String,
-        @Field("unionid") unionid: String,
-        @Field("otherName") otherName: String,
-        @Field("type") type: Int
-    ): Flowable<ResultData<JsonObject>>
-
-    @FormUrlEncoded
-    @POST(Apis.optAddQuestion)
-    fun optAddQuestion(
-        @Field("question") question: String,
-        @Field("describe") describe: String,
-        @Field("imgUrl") imgUrl: String,
-        @Field("golds") golds: Int
-    ): Flowable<ResultData<RewardQuestion>>
-
-    @FormUrlEncoded
-    @POST(Apis.queryQuestionSquareList)
-    fun queryQuestionSquareList(
-        @Field("current") current: Int,
-        @Field("conditions") conditions: String?,
-        @Field("size") size: Int = Const.PAGE_SIZE
-    ): Flowable<ResultData<ArrayList<RewardQuestion>>>
-
-    @FormUrlEncoded
-    @POST(Apis.queryQuestionAnswerList)
-    fun queryQuestionAnswerList(
-        @Field("current") current: Int,
-        @Field("questionId") questionId: Int,
-        @Field("size") size: Int = Const.PAGE_SIZE
-    ): Flowable<ResultData<ArrayList<RewardAnswer>>>
-
-    @FormUrlEncoded
-    @POST
-    fun queryMeQuestionList(
-        @Field("current") current: Int,
-        @Url url: String,
-        @Field("size") size: Int = Const.PAGE_SIZE
-    ): Flowable<ResultData<ArrayList<RewardQuestion>>>
-
-    @FormUrlEncoded
-    @POST(Apis.optDeleteQuestion)
-    fun optDeleteQuestion(
-        @Field("questionId") questionId: Int
-    ): Flowable<ResultData<JsonObject>>
-
-    @FormUrlEncoded
-    @POST(Apis.optDeleteAnswer)
-    fun optDeleteAnswer(
-        @Field("answerId") answerId: Int,
-        @Field("questionId") questionId: Int
-    ): Flowable<ResultData<JsonObject>>
-
-    @FormUrlEncoded
-    @POST(Apis.optAdoptAnswer)
-    fun optAdoptAnswer(
-        @Field("answerId") answerId: Int,
-        @Field("questionId") questionId: Int
-    ): Flowable<ResultData<JsonObject>>
-
-    @FormUrlEncoded
-    @POST(Apis.optAddAnswer)
-    fun optAddAnswer(
-        @Field("answer") answer: String,
-        @Field("questionId") questionId: Int
-    ): Flowable<ResultData<JsonObject>>
-
-    @FormUrlEncoded
-    @POST(Apis.queryGameList)
-    fun queryGameList(
-        @Field("siteId") siteId: Int,
-        @Field("storeId") storeId: String
-    ): Flowable<ResultData<List<GameBean>>>
+    fun exchangeRecord(@Query("pageNumber") page:Int,@Query("pageSize") pageSize: Int = 30): Flowable<ResultData<ExchangeRecordBean>>
 
     @Headers("notapp:true")
     @FormUrlEncoded
@@ -932,17 +655,6 @@
     ): Flowable<ResultData<List<GameRecordBean>>>
 
     @FormUrlEncoded
-    @POST(Apis.payGame)
-    fun payGame(
-        @Field("configId") configId: Int,
-        @Field("gameId") gameId: Int,
-        @Field("spaceId") spaceId: Int,
-        @Field("sutuId") sutuId: Int,
-        @Field("type") type: Int,
-        @Field("gameType") gameType: Int
-    ): Flowable<ResultData<PayInfo>>
-
-    @FormUrlEncoded
     @POST(Apis.registeredData)
     fun registeredData(
         @Field("lat") lat: Double?,
@@ -950,13 +662,6 @@
         @Field("coursePayId") coursePayId: String,
         @Field("orderId") orderId: String
     ): Flowable<ResultData<JoinedCourse>>
-
-    @FormUrlEncoded
-    @POST(Apis.indexOfEx)
-    fun indexOfEx(
-        @Field("latitude") lat: Double?,
-        @Field("longitude") lon: Double?
-    ): Flowable<ResultData<List<Shop>>>
 
     @FormUrlEncoded
     @POST(Apis.storeList)
@@ -997,10 +702,6 @@
         @Field("imgs") imgs: String?,
         @Field("score") score: Double
     ): Flowable<ResultData<Any>>
-
-    @Headers("notapp:true")
-    @GET
-    fun getGameList(@Url url: String): Flowable<ResponseBody>
 
     @POST(Apis.getHomeModule)
     fun getHomeModule(): Flowable<ResultData<Banner>>
diff --git a/app/src/main/java/com/dollearn/student/network/Apis.kt b/app/src/main/java/com/dollearn/student/network/Apis.kt
index 57f9b32..84b8d9b 100644
--- a/app/src/main/java/com/dollearn/student/network/Apis.kt
+++ b/app/src/main/java/com/dollearn/student/network/Apis.kt
@@ -20,13 +20,11 @@
 //    const val gameRecord ="https://try.daowepark.com/v7/user_api/general/gameRecord" //测试
 
     /**公共接口*/
-    val SHARE_URL = "https://gengwoxue.com:8443/share/index.html?type=1&invitation=%d" //普通分享
+    val SHARE_URL = "https://dollearn.com/" //分享链接 官网
     const val H5_URL = "study/base/user/getProtocol" //获取协议
     const val getCode = "study/base/user/sendPhoneCode"
-    const val queryBasisSet = "base/app/agreement/queryBasisSet"
-    const val queryVersionByType = "base/app/agreement/queryVersionByType"
-    const val querySystemSetByType = "base/app/agreement/querySystemSetByType"
-    const val querySystemImg = "base/user/parentPage"
+    const val promptVoice = "study/base/study/promptVoice"
+    const val querySystemImg = "study/base/user/studyPage"
     const val queryProvinceAndCity = "other/base/store/queryProvinceAndCity"
     const val queryStoreByCityCode = "other/base/store/queryStoreByCityCode"
 
@@ -35,7 +33,6 @@
      */
     const val register = "account/base/appUser/addAppUser"
     const val updatePassword = "account/base/appUser/updatePassword"
-    const val userLogin = "account/base/appUser/loginPassword"
     const val captchaLogin = "study/base/user/studyLogin"
     const val forgetPassword = "account/base/appUser/forgetPassword"
     const val bindWx = "account/base/appUser/bind"
@@ -46,6 +43,8 @@
     const val goodRecommend = "study/base/study/goodRecommend"
     const val weekList = "study/base/study/weekList"
     const val studySchedule = "study/base/study/studySchedule"
+    const val onlineDuration = "study/base/study/onlineDuration"
+    const val giveIntegral = "study/base/study/giveIntegral"
 
     const val queryBanner = "other/base/banner/queryBannerList"
     const val querySearchCourseList = "api/app/course/querySearchCourseList"
@@ -63,6 +62,7 @@
     const val questionsAndAnswers = "study/base/study/questionsAndAnswers"
     const val pictureMateVoice = "study/base/study/pictureMateVoice"
     const val exitLearning = "study/base/study/exitLearning"
+    const val exitGameOrStory = "study/base/study/exitGameOrStory"
     const val teamSchedule = "study/base/study/teamSchedule"
     const val completeLearning = "study/base/study/completeLearning"
 
@@ -91,9 +91,9 @@
     /**
      * 我的
      */
+    const val shareInfo = "study/base/user/shareInfo"
     const val userDetails = "study/base/user/userInfo"
     const val studyRecord = "study/base/study/studyRecord"
-    const val optAddBind = "api/app/student/optAddBind"
     const val exchangeRecord = "goods/base/goods/exchangeRecord"
     const val shopAddress = "goods/base/goods/shopAddress"
     const val setDefaultStudy = "goods/base/goods/setDefaultStudy"
@@ -105,32 +105,10 @@
     const val updateInfo = "account/api/appUser/updateInfo"
 
     /**
-     * 测评
-     */
-    const val queryIsTest = "api/app/test/queryIsTest"
-    const val queryTestQuestion = "api/app/test/queryTestQuestion"
-    const val optSubmitTestPaper = "api/app/test/optSubmitTestPaper"
-    const val queryMeAppraisal = "api/app/test/queryMeAppraisal"
-
-    /**
-     * 订单
-     */
-    const val queryOrderList = "api/app/order/queryOrderList"
-    const val queryApplyDetail = "api/app/student/queryApplyDetail"
-    const val queryIsBindAlipay = "api/app/student/queryIsBindAlipay"
-    const val queryCanRefund = "api/app/student/queryCanRefund"
-    const val optApplyRefund = "api/app/student/optApplyRefund"
-    const val optCancelApply = "api/app/student/optCancelApply"
-
-    /**
      * 加入玩派
      */
-    const val queryCouponList = "activity/api/coupon/queryCouponList"
-    const val queryJoinPlayPai = "account/api/appUser/queryJoinPlayPai"
     const val addVipPayment = "account/api/appUser/addVipPayment"
     const val paymentCourse = "course/api/course/paymentCourse"
-    const val queryStoreConfig = "other/base/store/queryStoreConfig"
-    const val queryIndexSet = "other/base/store/queryIndexSet"
     const val queryStoreLists = "other/base/store/queryStoreLists"
     const val voucherCenter = "account/api/useBenefit/voucherCenter"
     const val rechargeDescription = "other/base/stored/rechargeDescription"
@@ -148,7 +126,6 @@
     const val queryStudentData = "account/api/startCource/queryStudentData"
     const val stuGoog = "account/api/startCource/stuGoog"
     const val weeksOfCourseDetails = "account/api/startCource/weeksOfCourseDetailsList"
-    const val switchStu = "account/api/startCource/switchStu"
     const val lessonDetails = "account/api/startCource/lessonDetails"
     const val editDefault = "account/api/startCource/editDefault"
     const val recordDetails = "account/api/startCource/recordDetails"
@@ -161,13 +138,9 @@
     const val registeredData = "course/api/startCource/RegisteredData"
     const val payment = "course/api/startCource/payment"
     const val queryPhysical = "account/api/startCource/queryPhysical"
-    const val reverse = "course/api/startCource/reverse"
-    const val cancelCourse = "account/api/startCource/cancelCourse"
     const val stuAppointList = "account/api/startCource/stuAppointList"
-    const val goodsOfCourseStore = "account/api/useBenefit/goodsOfCourseStore"
     const val weeksOfGetHours = "account/api/startCource/weeksOfGetHours"
     const val weeksOfAddHours = "account/api/startCource/weeksOfAddHours"
-    const val paymentCourseCouponList = "course/api/course/paymentCourseCouponList"
 
     const val queryMySiteById = "other/api/site/queryMySiteById"
     const val payCourseInfo = "course/api/startCource/payCourseInfo"
@@ -185,13 +158,8 @@
     const val userBilling = "account/api/useBenefit/userBilling"
     const val queryCouponPackage = "activity/api/coupon/queryCouponPackage"
     const val integralMallList = "account/api/useBenefit/integralMallList"
-    const val goodsDetails = "account/api/useBenefit/goodsDetails"
-    const val goodsDetailsOne = "account/api/useBenefit/goodsDetailsOne"
     const val cancellation = "account/api/useBenefit/cancellation"
-    const val productRedemptionOperation = "account/api/useBenefit/productRedemptionOperation"
-    const val exchangeRecords = "account/api/useBenefit/exchangeRecords"
     const val redemptionDetails = "account/api/useBenefit/redemptionDetails"
-    const val exchangeStoreIds = "account/api/useBenefit/exchangeStoreIds"
 
     /**
      * 视频
@@ -207,20 +175,13 @@
      */
     const val querySiteList = "other/base/site/querySiteList"
     const val querySiteType = "other/base/site/querySiteType"
-    const val querySiteInfo = "other/base/site/querySiteInfo"
-    const val querySiteTimes = "other/base/site/querySiteTimes"
-    const val querySiteCouponList = "activity/api/coupon/querySiteCouponList"
-    const val reservationSite = "other/api/site/reservationSite"
     const val queryMySite = "other/api/site/queryMySite"
     const val cancelMySite = "other/api/site/cancelMySite"
     const val continuePaymentMySite = "other/api/site/continuePaymentMySite"
 
-
-
     /**
      * 赛事
      */
-    const val queryCompetitionList = "competition/base/competition/queryCompetitionList"
     const val queryAllCity = "other/base/store/queryAllCity"
     const val queryCompetitionInfo = "competition/base/competition/queryCompetitionInfo"
     const val queryParticipantList = "competition/api/participant/queryParticipantList"
@@ -236,7 +197,6 @@
     /**
      * 探索玩湃
      */
-    const val indexOfEx = "account/api/exploreWP/indexOfEx"
     const val storeList = "account/base/exploreWP/storeList"
     const val storeDetail = "account/base/exploreWP/storeDetail"
     const val saveEvaluation = "other/base/storeEvaluation/saveEvaluation"
@@ -245,20 +205,6 @@
     const val noticeDetail = "account/base/exploreWP/noticeDetail"
     const val exceptionDetail = "account/base/exploreWP/exceptionDetail"
     const val exceptionList = "account/base/exploreWP/exceptionList"
-
-    const val optAddQuestion = "api/app/answer/optAddQuestion"
-    const val queryQuestionSquareList = "api/app/answer/queryQuestionSquareList"
-    const val queryQuestionAnswerList = "api/app/answer/queryQuestionAnswerList"
-    const val optDeleteQuestion = "api/app/answer/optDeleteQuestion"
-    const val optDeleteAnswer = "api/app/answer/optDeleteAnswer"
-    const val optAdoptAnswer = "api/app/answer/optAdoptAnswer"
-    const val optAddAnswer = "api/app/answer/optAddAnswer"
-
-    /**
-     * 游戏
-     */
-    const val queryGameList ="other/api/game/queryGameList"
-    const val payGame ="other/api/game/payGame"
 
     /**
      * 世界杯
diff --git a/app/src/main/java/com/dollearn/student/network/Functions.kt b/app/src/main/java/com/dollearn/student/network/Functions.kt
index 2b0699c..993eb2f 100644
--- a/app/src/main/java/com/dollearn/student/network/Functions.kt
+++ b/app/src/main/java/com/dollearn/student/network/Functions.kt
@@ -6,7 +6,7 @@
 import cn.sinata.xldutils.fragment.BaseFragment
 import cn.sinata.xldutils.rxutils.ResultDataSubscriber
 import cn.sinata.xldutils.utils.SPUtils
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.DollearnApplication
 import com.dollearn.student.ui.login.LoginActivity
 import com.dollearn.student.utils.Const
 import io.reactivex.Flowable
@@ -29,7 +29,7 @@
             if (code == 700||code == 600){//token无效
                 error(code,"登录已失效")
                 SPUtils.instance().remove(Const.User.TOKEN).remove(Const.User.USER_ID).apply()
-                (activity.application as WeparkApplication).exit()
+                (activity.application as DollearnApplication).exit()
                 activity.startActivity<LoginActivity>()
             }else{
                 super.onError(code, msg)
@@ -55,7 +55,7 @@
             if (code == 700||code == 600){//token无效
                 error(code,"登录已失效")
                 SPUtils.instance().remove(Const.User.TOKEN).remove(Const.User.USER_ID).apply()
-                (fragment.activity!!.application as WeparkApplication).exit()
+                (fragment.activity!!.application as DollearnApplication).exit()
                 fragment.startActivity<LoginActivity>()
             }else{
                 super.onError(code, msg)
diff --git a/app/src/main/java/com/dollearn/student/network/HttpManager.kt b/app/src/main/java/com/dollearn/student/network/HttpManager.kt
index eb8af44..4c6caf6 100644
--- a/app/src/main/java/com/dollearn/student/network/HttpManager.kt
+++ b/app/src/main/java/com/dollearn/student/network/HttpManager.kt
@@ -2,14 +2,12 @@
 
 import cn.sinata.xldutils.data.ResultData
 import com.google.gson.JsonObject
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.DollearnApplication
 import com.dollearn.student.dialog.ChooseStudentDialog
 import com.dollearn.student.network.entity.*
 import com.dollearn.student.utils.pay.PayInfo
 import com.google.gson.Gson
 import io.reactivex.Flowable
-import okhttp3.ResponseBody
-import retrofit2.http.Field
 
 object HttpManager {
     private const val PAGE_SIZE = 20
@@ -41,28 +39,6 @@
      */
     fun queryStoreByCityCode(code: String,provinceCode:String): Flowable<ResultData<ArrayList<CommonData>>> {
         return request().queryStoreByCityCode(code,provinceCode)
-    }
-
-    /**
-     * 获取最新版本
-     */
-    fun queryVersionByType(): Flowable<ResultData<JsonObject>> {
-        return request().queryVersionByType()
-    }
-
-    /**
-     * 获取客服电话/推广中心图片/引导页等
-     * @param type 1=客服电话,2=推广中心图片,3=引导页
-     */
-    fun querySystemSetByType(type: Int): Flowable<ResultData<JsonObject>> {
-        return request().querySystemSetByType(type)
-    }
-
-    /**
-     * 获取加入玩湃首页数据
-     */
-    fun queryJoinPlayPai(lat: Double?, lon: Double?): Flowable<ResultData<HomeData>> {
-        return request().queryJoinPlayPai(lat, lon)
     }
 
     /**
@@ -102,10 +78,6 @@
         return request().payment(payType, id, courseId, courseCount, students, useCoupon, coupon)
     }
 
-    fun paymentCourse2(map: HashMap<String, Any?>): Flowable<ResultData<PayInfo>> {
-        return request().paymentCourse2(map)
-    }
-
     /**
      * 赛事报名
      */
@@ -114,38 +86,10 @@
     }
 
     /**
-     * 门店配置
-     */
-    fun queryStoreConfig(shopId: String): Flowable<ResultData<List<Banner>>> {
-        return request().queryStoreConfig(shopId)
-    }
-
-    /**
-     * 门店更多配置
-     */
-    fun queryIndexSet(shopId: String): Flowable<ResultData<List<Banner>>> {
-        return request().queryIndexSet(shopId)
-    }
-
-    /**
      * 体检报告
      */
     fun queryPhysical(id: String): Flowable<ResultData<Report>> {
         return request().queryPhysical(id)
-    }
-
-    /**
-     * 预约
-     */
-    fun reverse(time: String, stuId: String, courseId: String): Flowable<ResultData<Any>> {
-        return request().reverse(time, stuId, courseId)
-    }
-
-    /**
-     * 取消预约
-     */
-    fun cancelCourse(id: String): Flowable<ResultData<Any>> {
-        return request().cancelCourse(id)
     }
 
     /**
@@ -161,23 +105,20 @@
         return request().stuAppointList(id, type, timeType, search,page)
     }
 
-    /**
-     * 兑换默认运动营成员或门店
-     */
-    fun goodsOfCourseStore(isCourse: Int, id: String): Flowable<ResultData<DefaultData>> {
-        return request().goodsOfCourseStore(
-            isCourse,
-            id,
-            WeparkApplication.lat,
-            WeparkApplication.lon
-        )
-    }
 
     /**
      * 用户信息
      */
     fun userDetails(): Flowable<ResultData<UserBean>> {
         return request().userDetails()
+    }
+
+
+    /**
+     * 分享信息
+     */
+    fun shareInfo(): Flowable<ResultData<ConfigBean>> {
+        return request().shareInfo()
     }
 
     /**
@@ -260,8 +201,8 @@
         return request().querySiteList(
             page,
             PAGE_SIZE,
-            WeparkApplication.lat,
-            WeparkApplication.lon,
+            DollearnApplication.lat,
+            DollearnApplication.lon,
             cityCode,
             startTime,
             endTime,
@@ -285,17 +226,6 @@
         return request().cancelMySite(id)
     }
 
-    /**
-     * 赛事列表
-     */
-    fun queryCompetitionList(
-        cityCode: String?,
-        registerCondition: Int?,
-        heat: String?,
-        search: String?
-    ): Flowable<ResultData<List<Match>>> {
-        return request().queryCompetitionList(cityCode, registerCondition, heat, search)
-    }
 
     /**
      * 我的赛事列表
@@ -311,19 +241,6 @@
         return request().querySiteType()
     }
 
-    /**
-     * 支付运动营--完成后优惠券列表
-     */
-    fun paymentCourseCouponList(id: Int? = null): Flowable<ResultData<List<Coupon>>> {
-        return request().paymentCourseCouponList(id)
-    }
-
-    /**
-     * 支付会员--完成后优惠券列表
-     */
-    fun queryCouponList(): Flowable<ResultData<List<Coupon>>> {
-        return request().queryCouponList()
-    }
 
     /**
      * 查询预约详情
@@ -365,59 +282,6 @@
      */
     fun registeredCourses(type: Int?, search: String?): Flowable<ResultData<List<JoinedCourse>>> {
         return request().registeredCourses(type, search)
-    }
-
-    /**
-     * 场地时间段
-     */
-    fun querySiteTimes(id: String, date: String,siteName:String?,halfName:String?): Flowable<ResultData<List<PlaceTime>>> {
-        return request().querySiteTimes(id, date,halfName,siteName)
-    }
-
-    /**
-     * 场地优惠券
-     */
-    fun querySiteCouponList(id: String, price: Double): Flowable<ResultData<List<Coupon>>> {
-        return request().querySiteCouponList(
-            id,
-            WeparkApplication.lat,
-            WeparkApplication.lon,
-            price
-        )
-    }
-
-    /**
-     * 场地详情
-     */
-    fun querySiteInfo(id: String): Flowable<ResultData<Place>> {
-        return request().querySiteInfo(id, WeparkApplication.lat, WeparkApplication.lon)
-    }
-
-    /**
-     * 场地下单
-     */
-    fun reservationSite(
-        id: String,
-        name: String,
-        phone: String,
-        time: String,
-        payType: Int,
-        coupon: Long?,
-        isHalf: Int,
-        halfName: String?,
-        nextName: String
-    ): Flowable<ResultData<PayInfo>> {
-        return request().reservationSite(
-            id,
-            name,
-            phone,
-            time,
-            payType,
-            coupon,
-            isHalf,
-            halfName,
-            nextName
-        )
     }
 
     /**
@@ -575,16 +439,9 @@
             id,
             storeID,
             time,
-            WeparkApplication.lat,
-            WeparkApplication.lon
+            DollearnApplication.lat,
+            DollearnApplication.lon
         )
-    }
-
-    /**
-     * 切换运动营成员
-     */
-    fun switchStu(id: String): Flowable<ResultData<Any>> {
-        return request().switchStu(id)
     }
 
     /**
@@ -606,6 +463,13 @@
      */
     fun getCode(phone: String): Flowable<ResultData<Any>> {
         return request().getCode(phone)
+    }
+
+    /**
+     * 获取正确和错误语音
+     */
+    fun promptVoice(): Flowable<ResultData<ConfigBean>> {
+        return request().promptVoice()
     }
 
     /**
@@ -650,6 +514,20 @@
      */
     fun studySchedule(week:Int,day:Int): Flowable<ResultData<Schedule>> {
         return request().studySchedule(week,day)
+    }
+
+    /**
+     * 获取在线时间赠送积分信息(单位分钟)
+     */
+    fun onlineDuration(): Flowable<ResultData<String>> {
+        return request().onlineDuration()
+    }
+
+    /**
+     * 获取在线时间赠送积分信
+     */
+    fun giveIntegral(): Flowable<ResultData<Boolean>> {
+        return request().giveIntegral()
     }
 
     /**
@@ -781,28 +659,35 @@
     /**
      * 保存进度
      */
-    fun exitLearning(answerNumber: Int,correctNumber: Int,day: Int,week: Int,type: Int,teamIds:String,topicIds:String): Flowable<ResultData<Any>> {
-        return request().exitLearning(Gson().toJson(ReqSaveProgress(answerNumber,correctNumber,day, week, type, teamIds, topicIds)))
+    fun exitLearning(schedule: Int,season: Int,studyTime: Int,answerNumber: Int,correctNumber: Int,day: Int,week: Int,type: Int,teamIds:String,topicIds:String): Flowable<ResultData<Any>> {
+        return request().exitLearning(Gson().toJson(ReqSaveProgress(schedule+1,season,answerNumber,correctNumber,day, week, studyTime,type, teamIds, topicIds)))
+    }
+
+    /**
+     * 保存游戏和故事时间
+     */
+    fun exitGameOrStory(studyTime: Int): Flowable<ResultData<Any>> {
+        return request().exitGameOrStory(studyTime)
     }
 
     /**
      * 完成学习
      */
-    fun completeLearning(rate: Int,time: Int,day: Int,week: Int,season: Int,type: Int,teamIds:String): Flowable<ResultData<Any>> {
+    fun completeLearning(rate: Int,time: Int,day: Int,week: Int,season: Int,type: Int,teamIds:String): Flowable<ResultData<Int?>> {
         return request().completeLearning(Gson().toJson(ReqFinishStudy(rate,day,season,teamIds,time,type,week)))
     }
 
     /**
-     * 完成学习
+     * 完成故事
      */
-    fun completeStory(rate: Int,type: Int,storyId:String): Flowable<ResultData<Any>> {
-        return request().completeStory(Gson().toJson(ReqFinishStory(rate,storyId, type)))
+    fun completeStory(rate: Int,type: Int,storyId:String,time: Int): Flowable<ResultData<Int?>> {
+        return request().completeStory(rate,storyId, type,time)
     }
 
     /**
      * 完成游戏
      */
-    fun gameAchievement(rate: Int,difficulty: Int,gameId:String,gameName:String,useTime:Int): Flowable<ResultData<Any>> {
+    fun gameAchievement(rate: Int,difficulty: Int,gameId:String,gameName:String,useTime:Int): Flowable<ResultData<Int?>> {
         return request().gameAchievement(Gson().toJson(ReqFinishGame(rate,difficulty,gameId,gameName, useTime)))
     }
 
@@ -872,26 +757,13 @@
             sort,
             page,
             PAGE_SIZE,
-            WeparkApplication.lat,
-            WeparkApplication.lon,
+            DollearnApplication.lat,
+            DollearnApplication.lon,
             search,
             shopId
         )
     }
 
-    /**
-     * 商品可用门店列表
-     */
-    fun exchangeStoreIds(type: Int, id: String): Flowable<ResultData<List<Shop>>> {
-        return request().exchangeStoreIds(type, id)
-    }
-
-    /**
-     * 兑换记录
-     */
-    fun exchangeRecords(type: Int?, state: Int?): Flowable<ResultData<List<ExchangeRecord>>> {
-        return request().exchangeRecords(type, state)
-    }
 
     /**
      * 兑换详情
@@ -908,29 +780,6 @@
     }
 
     /**
-     * 兑换商品
-     */
-    fun productRedemptionOperation(
-        goodsId: String,
-        goodsType: Int,
-        exchangeType: Int,
-        num: Int,
-        payType: Int?,
-        students: String?,
-        storeId: String?
-    ): Flowable<ResultData<PayInfo>> {
-        return request().productRedemptionOperation(
-            goodsType,
-            exchangeType,
-            goodsId,
-            num,
-            payType,
-            students,
-            storeId
-        )
-    }
-
-    /**
      * 查询免费福利
      */
     fun queryStoreFreeBenefit(id: String): Flowable<ResultData<JsonObject>> {
@@ -941,7 +790,7 @@
      * 福利
      */
     fun weekLimitedBenefit(type: Int): Flowable<ResultData<ArrayList<Welfare>>> {
-        return request().weekLimitedBenefit(type, WeparkApplication.lat, WeparkApplication.lon)
+        return request().weekLimitedBenefit(type, DollearnApplication.lat, DollearnApplication.lon)
     }
 
     /**
@@ -1131,88 +980,19 @@
         return request().goodDetail(id)
     }
 
-    /**
-     * 订单详情
-     */
-    fun queryIsBindAlipay(): Flowable<ResultData<Boolean>> {
-        return request().queryIsBindAlipay()
-    }
 
     /**
      * 兑换记录
      */
-    fun exchangeRecord(): Flowable<ResultData<List<ExchangeRecord>>> {
-        return request().exchangeRecord()
+    fun exchangeRecord(page: Int): Flowable<ResultData<ExchangeRecordBean>> {
+        return request().exchangeRecord(page)
     }
-
-    /**
-     * 运动营退款
-     */
-    fun optApplyRefund(
-        id: Int,
-        refundClassHours: Int,
-        refundMark: String,
-        refundMoney: Double
-    ): Flowable<ResultData<JsonObject>> {
-        return request().optApplyRefund(id, refundClassHours, refundMark, refundMoney)
-    }
-
-    /**
-     * 撤销运动营退款
-     */
-    fun optCancelApply(id: Int): Flowable<ResultData<JsonObject>> {
-        return request().optCancelApply(id)
-    }
-
-    /**
-     * 添加悬赏问题
-     */
-    fun optAddQuestion(
-        question: String,
-        describe: String,
-        img: String,
-        gold: Int
-    ): Flowable<ResultData<RewardQuestion>> {
-        return request().optAddQuestion(question, describe, img, gold)
-    }
-
-    /**
-     * 悬赏问题列表
-     */
-    fun queryQuestionSquareList(
-        page: Int,
-        key: String? = null
-    ): Flowable<ResultData<ArrayList<RewardQuestion>>> {
-        return request().queryQuestionSquareList(page, key)
-    }
-
-    /**
-     * 悬赏答案列表
-     */
-    fun queryQuestionAnswerList(page: Int, id: Int): Flowable<ResultData<ArrayList<RewardAnswer>>> {
-        return request().queryQuestionAnswerList(page, id)
-    }
-
-
 
     /**
      * 已报运动营详情
      */
     fun registeredData(id: String,orderId: String): Flowable<ResultData<JoinedCourse>> {
-        return request().registeredData(WeparkApplication.lat,WeparkApplication.lon,id,orderId)
-    }
-    /**
-     * 探索首页
-     */
-    fun indexOfEx(): Flowable<ResultData<List<Shop>>> {
-        return request().indexOfEx(WeparkApplication.lat, WeparkApplication.lon)
-    }
-
-    /**
-     * 游戏列表
-     */
-    fun queryGameList(storeID: String,siteId:Int): Flowable<ResultData<List<GameBean>>> {
-        return request().queryGameList(siteId,storeID)
+        return request().registeredData(DollearnApplication.lat,DollearnApplication.lon,id,orderId)
     }
 
     /**
@@ -1222,20 +1002,14 @@
         return request().gameRecord(userId,page)
     }
 
-    /**
-     * 游戏支付
-     */
-    fun payGame(configId:Int,gameId:Int,spaceId:Int,sutuId:Int,type: Int,gameType: Int): Flowable<ResultData<PayInfo>> {
-        return request().payGame(configId,gameId,spaceId,sutuId, type,gameType)
-    }
 
     /**
      * 门店列表
      */
     fun storeList(cityCode: String?, distanceSort: Int?,search: String?): Flowable<ResultData<List<ShopListBean>>> {
         return request().storeList(
-            WeparkApplication.lat,
-            WeparkApplication.lon,
+            DollearnApplication.lat,
+            DollearnApplication.lon,
             cityCode,
             distanceSort,
             search)
@@ -1315,13 +1089,6 @@
     }
 
     /**
-     * 获取游戏列表
-     */
-    fun getGameList(url: String): Flowable<ResponseBody> {
-        return request().getGameList(url)
-    }
-
-    /**
      *获取平台配置模块详情【2.0】
      */
     fun getHomeModule(): Flowable<ResultData<Banner>> {
@@ -1346,7 +1113,7 @@
      * 裁判世界杯列表
      */
     fun getWorldCupListCoach(storeId: Int?,search: String?): Flowable<ResultData<List<WorldCupBean>>> {
-        return request().getWorldCupListCoach(WeparkApplication.lat,WeparkApplication.lon,storeId,search)
+        return request().getWorldCupListCoach(DollearnApplication.lat,DollearnApplication.lon,storeId,search)
     }
 
     /**
@@ -1360,7 +1127,7 @@
      * 世界杯详情
      */
     fun getWorldCupInfo(id: String): Flowable<ResultData<WorldCupBean>> {
-        return request().getWorldCupInfo(id,WeparkApplication.lat, WeparkApplication.lon)
+        return request().getWorldCupInfo(id,DollearnApplication.lat, DollearnApplication.lon)
     }
 
     /**
@@ -1409,7 +1176,7 @@
      * 世界杯报名详情
      */
     fun getMyWorldCupInfo(id: String): Flowable<ResultData<WorldCupBean>> {
-        return request().getMyWorldCupInfo(id,WeparkApplication.lat, WeparkApplication.lon)
+        return request().getMyWorldCupInfo(id,DollearnApplication.lat, DollearnApplication.lon)
     }
 
     /**
diff --git a/app/src/main/java/com/dollearn/student/network/entity/Banner.kt b/app/src/main/java/com/dollearn/student/network/entity/Banner.kt
index 9feef0e..098db52 100644
--- a/app/src/main/java/com/dollearn/student/network/entity/Banner.kt
+++ b/app/src/main/java/com/dollearn/student/network/entity/Banner.kt
@@ -6,11 +6,9 @@
 import com.dollearn.student.ui.course.*
 import com.dollearn.student.ui.discovery.NoticeDetailActivity
 import com.dollearn.student.ui.discovery.ServiceActivity
-import com.dollearn.student.ui.discovery.ShopListActivity
 import com.dollearn.student.ui.home.*
 import com.dollearn.student.ui.mine.RechargeActivity
 import com.dollearn.student.ui.welfare.GoodsDetailActivity
-import com.dollearn.student.ui.welfare.ScoreShopActivity
 import com.dollearn.student.ui.worldcup.WorldCupDetailActivity
 import com.dollearn.student.ui.worldcup.WorldCupListActivity
 import com.dollearn.student.utils.Const
@@ -49,7 +47,7 @@
             "加入玩湃"->{
                 when(page){
                     "主页"->{
-                        EventBus.getDefault().post(EmptyEvent(Const.EventCode.SWITCH_HOME))
+                        EventBus.getDefault().post(EmptyEvent(Const.EventCode.CLICK_GAME_ITEM))
                         context.startActivity<MainActivity>()
                     }
                     "课程列表"->{
@@ -104,7 +102,6 @@
                     "充值中心"-> context.startActivity<RechargeActivity>()
                     "积分商城"-> {
                         when(type){
-                            "主页"-> context.startActivity<ScoreShopActivity>()
                             "指定商品"-> context.startActivity<GoodsDetailActivity>("id" to turnId)
                         }
                     }
@@ -119,9 +116,6 @@
             }
             "探索玩湃"-> {
                 when(page) {
-                    "门店列表"-> {
-                        context.startActivity<ShopListActivity>()
-                    }
                     "常见问题"-> {
                         when(type){
                             "列表"-> context.startActivity<ServiceActivity>("index" to 1)
diff --git a/app/src/main/java/com/dollearn/student/network/entity/ConfigBean.kt b/app/src/main/java/com/dollearn/student/network/entity/ConfigBean.kt
new file mode 100644
index 0000000..eea2336
--- /dev/null
+++ b/app/src/main/java/com/dollearn/student/network/entity/ConfigBean.kt
@@ -0,0 +1,8 @@
+package com.dollearn.student.network.entity
+
+data class ConfigBean(
+    val error:String,
+    val correct:String,
+    val img:String,
+    val title:String
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/network/entity/ExchangeRecord.kt b/app/src/main/java/com/dollearn/student/network/entity/ExchangeRecord.kt
index 2f41b56..d4d2f11 100644
--- a/app/src/main/java/com/dollearn/student/network/entity/ExchangeRecord.kt
+++ b/app/src/main/java/com/dollearn/student/network/entity/ExchangeRecord.kt
@@ -19,4 +19,16 @@
     val orderNumber: String,
     var state: Int,
     val userId: Int
-)
\ No newline at end of file
+)
+
+data class ExchangeRecordBean(
+    val current: Int,
+    val hasNextPage: Boolean,
+    val hasPrevPage: Boolean,
+    val pages: Int,
+    val records: List<ExchangeRecord>,
+    val size: Int,
+    val startIndex: Int,
+    val total: Int
+)
+
diff --git a/app/src/main/java/com/dollearn/student/network/entity/Goods.kt b/app/src/main/java/com/dollearn/student/network/entity/Goods.kt
index 3f54220..4699645 100644
--- a/app/src/main/java/com/dollearn/student/network/entity/Goods.kt
+++ b/app/src/main/java/com/dollearn/student/network/entity/Goods.kt
@@ -24,5 +24,5 @@
     val typeIds: String,
     val updateBy: String,
     val updateTime: String,
-    val userCount: Int
+    val userCount: Int?
 ):Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/network/entity/GoodsDetail.kt b/app/src/main/java/com/dollearn/student/network/entity/GoodsDetail.kt
index 57fb57f..b9097f1 100644
--- a/app/src/main/java/com/dollearn/student/network/entity/GoodsDetail.kt
+++ b/app/src/main/java/com/dollearn/student/network/entity/GoodsDetail.kt
@@ -6,6 +6,7 @@
 @Parcelize
 data class GoodsDetail(
     val exchangeNumber: Int,
+    val residueNumber: Int?,
     val good: Goods,
     val goodTypes: List<GoodsType>?,
     val orderNumber: String,
@@ -17,14 +18,10 @@
     val address: String,
     val city: String,
     val cityCode: String,
-    val createBy: String?,
-    val createTime: String,
-    val disabled: Boolean,
     val id: String,
     val isDefault: Int,
     val province: String,
     val provinceCode: String,
     val recipient: String,
-    val recipientPhone: String,
-    val updateTime: String
+    val recipientPhone: String
 ):Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/network/entity/GoodsType.kt b/app/src/main/java/com/dollearn/student/network/entity/GoodsType.kt
index d48c752..75a536c 100644
--- a/app/src/main/java/com/dollearn/student/network/entity/GoodsType.kt
+++ b/app/src/main/java/com/dollearn/student/network/entity/GoodsType.kt
@@ -5,13 +5,7 @@
 
 @Parcelize
 data class GoodsType(
-    val createBy: String,
-    val createTime: String,
-    val disabled: Boolean,
     val id: Int,
-    val isDelete: Int,
     val name: String,
-    val updateBy: String,
-    val updateTime: String,
     var checked:Boolean = false
 ): Parcelable
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/network/entity/ProgressBean.kt b/app/src/main/java/com/dollearn/student/network/entity/ProgressBean.kt
index 641410e..734136a 100644
--- a/app/src/main/java/com/dollearn/student/network/entity/ProgressBean.kt
+++ b/app/src/main/java/com/dollearn/student/network/entity/ProgressBean.kt
@@ -3,5 +3,6 @@
 data class ProgressBean(
     val topicIds: List<String>,
     val answerNumber: Int,
-    val correctNumber: Int
+    val correctNumber: Int,
+    val schedule: Int
 )
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/network/entity/ReqFinishStory.kt b/app/src/main/java/com/dollearn/student/network/entity/ReqFinishStory.kt
deleted file mode 100644
index 0715b41..0000000
--- a/app/src/main/java/com/dollearn/student/network/entity/ReqFinishStory.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.dollearn.student.network.entity
-
-data class ReqFinishStory(
-    val accuracy: Int,
-    val storyId: String,
-    val type: Int
-)
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/network/entity/ReqSaveProgress.kt b/app/src/main/java/com/dollearn/student/network/entity/ReqSaveProgress.kt
index 06a10d2..1361cea 100644
--- a/app/src/main/java/com/dollearn/student/network/entity/ReqSaveProgress.kt
+++ b/app/src/main/java/com/dollearn/student/network/entity/ReqSaveProgress.kt
@@ -1,10 +1,13 @@
 package com.dollearn.student.network.entity
 
 data class ReqSaveProgress(
+    val schedule:Int,
+    val quarter:Int,
     val answerNumber:Int,
     val correctNumber:Int,
     val day:Int,
     val week:Int,
+    val studyTime:Int,
     val type:Int,
     val teamIds:String,
     val topicIds:String
diff --git a/app/src/main/java/com/dollearn/student/ui/H5Activity.kt b/app/src/main/java/com/dollearn/student/ui/H5Activity.kt
index 71db1db..250b206 100644
--- a/app/src/main/java/com/dollearn/student/ui/H5Activity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/H5Activity.kt
@@ -14,13 +14,12 @@
 import cn.sinata.xldutils.visible
 import com.github.zackratos.ultimatebar.UltimateBar
 import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.DollearnApplication
 import com.dollearn.student.dialog.TipDialog
 import com.dollearn.student.network.HttpManager
 import com.dollearn.student.network.request
 import com.dollearn.student.ui.login.LoginActivity
 import com.dollearn.student.utils.Const
-import org.jetbrains.anko.backgroundColorResource
 import org.jetbrains.anko.backgroundResource
 import org.jetbrains.anko.find
 import org.jetbrains.anko.startActivity
@@ -81,7 +80,7 @@
                         HttpManager.cancellation().request(this@H5Activity){ _, _->
                             myToast("注销成功")
                             SPUtils.instance().remove(Const.User.TOKEN).apply()
-                            (application as WeparkApplication).exit()
+                            (application as DollearnApplication).exit()
                             startActivity<LoginActivity>()
                         }
                     }
diff --git a/app/src/main/java/com/dollearn/student/ui/SplashActivity.kt b/app/src/main/java/com/dollearn/student/ui/SplashActivity.kt
index b03cd92..2f9ab9b 100644
--- a/app/src/main/java/com/dollearn/student/ui/SplashActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/SplashActivity.kt
@@ -14,7 +14,7 @@
 import com.amap.api.maps.MapsInitializer
 import com.dollearn.student.MainActivity
 import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.DollearnApplication
 import com.dollearn.student.dialog.RuleDialog
 import com.dollearn.student.network.Apis
 import com.dollearn.student.network.HttpManager
@@ -58,7 +58,7 @@
                 ruleDialog.show(supportFragmentManager,"rule")
             },500)
         }
-//        getSignInfo(this)
+        getSignInfo(this)
     }
 
     private fun getImg() {
@@ -114,7 +114,7 @@
      * 判断是否第一次启动
      */
     private fun startNext(){
-        (application as WeparkApplication).initSdk()
+        (application as DollearnApplication).initSdk()
 //        if (SPUtils.instance().getBoolean(Const.FIRST_LAUNCH,true)){ //第一次启动显示引导页
 //            HttpManager.querySystemSetByType(3).request(this,false,{_,data->
 //                val s = data?.optString("content")
diff --git a/app/src/main/java/com/dollearn/student/ui/TransparentStatusBarActivity.kt b/app/src/main/java/com/dollearn/student/ui/TransparentStatusBarActivity.kt
index ccb4329..188bd56 100644
--- a/app/src/main/java/com/dollearn/student/ui/TransparentStatusBarActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/TransparentStatusBarActivity.kt
@@ -4,12 +4,12 @@
 import cn.sinata.xldutils.R
 import cn.sinata.xldutils.activity.TitleActivity
 import com.github.zackratos.ultimatebar.UltimateBar
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.DollearnApplication
 import org.jetbrains.anko.backgroundColorResource
 
 abstract class TransparentStatusBarActivity : TitleActivity() {
     protected val app by lazy {
-        application as WeparkApplication
+        application as DollearnApplication
     }
 
     override fun onCreate(savedInstanceState: Bundle?) {
diff --git a/app/src/main/java/com/dollearn/student/ui/course/CourseActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/CourseActivity.kt
index 52a9f48..e3e594a 100644
--- a/app/src/main/java/com/dollearn/student/ui/course/CourseActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/course/CourseActivity.kt
@@ -5,7 +5,7 @@
 import cn.sinata.xldutils.gone
 import cn.sinata.xldutils.visible
 import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.DollearnApplication
 import com.dollearn.student.network.HttpManager
 import com.dollearn.student.network.entity.CommonData
 import com.dollearn.student.network.entity.Course
@@ -13,7 +13,6 @@
 import com.dollearn.student.ui.TransparentStatusBarActivity
 import com.dollearn.student.ui.home.adapter.CourseAdapter
 import com.dollearn.student.ui.home.adapter.FilterAdapter
-import com.dollearn.student.utils.Const
 import com.dollearn.student.utils.event.EmptyEvent
 import com.dollearn.student.utils.extention.clickDelay
 import kotlinx.android.synthetic.main.activity_course.*
@@ -29,7 +28,7 @@
     private val adapter = CourseAdapter(datas)
 
     //筛选条件
-    var shop = WeparkApplication.storeId //店铺id
+    var shop = DollearnApplication.storeId //店铺id
     var type: Int? = null //运动营类型id
     var distanceSort: String? = null //距离排序(asc=正序,desc=降序)
     var salesSort: String? = null //销量排序(asc=正序,desc=降序)
@@ -177,8 +176,8 @@
     private fun getData() {
         HttpManager.queryCourseList(
             shop,
-            WeparkApplication.lat,
-            WeparkApplication.lon,
+            DollearnApplication.lat,
+            DollearnApplication.lon,
             type,
             distanceSort,
             salesSort,
@@ -200,7 +199,7 @@
     }
 
     private fun getShop() {
-        HttpManager.queryStoreLists(WeparkApplication.lat, WeparkApplication.lon)
+        HttpManager.queryStoreLists(DollearnApplication.lat, DollearnApplication.lon)
             .request(this) { _, data ->
                 storeList.addAll(data ?: arrayListOf())
             }
diff --git a/app/src/main/java/com/dollearn/student/ui/course/CourseDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/CourseDetailActivity.kt
index 95a26db..e6de77f 100644
--- a/app/src/main/java/com/dollearn/student/ui/course/CourseDetailActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/course/CourseDetailActivity.kt
@@ -7,7 +7,7 @@
 import cn.sinata.xldutils.utils.*
 import cn.sinata.xldutils.visible
 import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.DollearnApplication
 import com.dollearn.student.dialog.MapTypeDialog
 import com.dollearn.student.network.HttpManager
 import com.dollearn.student.network.entity.Banner
@@ -15,7 +15,6 @@
 import com.dollearn.student.network.request
 import com.dollearn.student.ui.TransparentStatusBarActivity
 import com.dollearn.student.ui.home.adapter.HomeBannerAdapter
-import com.dollearn.student.utils.Const
 import com.dollearn.student.utils.ThirdPartyMapsGuide
 import com.dollearn.student.utils.event.EmptyEvent
 import com.dollearn.student.utils.extention.clickDelay
@@ -61,10 +60,7 @@
 
             }
         }
-        tv_action.clickDelay {
-            if (course != null)
-                startActivity<JoinCourseActivity>("course" to course)
-        }
+
     }
 
     override fun initView() {
@@ -85,7 +81,7 @@
 
     @SuppressLint("SetTextI18n")
     private fun getDetail() {
-        HttpManager.queryCourseInfo(id, WeparkApplication.lat, WeparkApplication.lon)
+        HttpManager.queryCourseInfo(id, DollearnApplication.lat, DollearnApplication.lon)
             .request(this) { _, data ->
                 course = data
                 data?.apply {
diff --git a/app/src/main/java/com/dollearn/student/ui/course/CourseFragment.kt b/app/src/main/java/com/dollearn/student/ui/course/CourseFragment.kt
deleted file mode 100644
index 728ba33..0000000
--- a/app/src/main/java/com/dollearn/student/ui/course/CourseFragment.kt
+++ /dev/null
@@ -1,393 +0,0 @@
-package com.dollearn.student.ui.course
-
-import android.annotation.SuppressLint
-import android.app.Activity
-import android.content.Intent
-import android.util.Log
-import android.view.View
-import androidx.core.os.bundleOf
-import androidx.recyclerview.widget.GridLayoutManager
-import androidx.recyclerview.widget.LinearLayoutManager
-import androidx.viewpager.widget.ViewPager
-import cn.sinata.xldutils.fragment.BaseFragment
-import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.SpanBuilder
-import cn.sinata.xldutils.utils.myToast
-import cn.sinata.xldutils.utils.showAllowingStateLoss
-import cn.sinata.xldutils.utils.toTime
-import cn.sinata.xldutils.visible
-import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
-import com.dollearn.student.WeparkApplication.Companion.storeId
-import com.dollearn.student.dialog.MapTypeDialog
-import com.dollearn.student.dialog.TipDialog
-import com.dollearn.student.dialog.UndistributedClassHourialog
-import com.dollearn.student.network.Apis
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.*
-import com.dollearn.student.network.requestByF
-import com.dollearn.student.ui.course.adapter.*
-import com.dollearn.student.ui.home.AddStudentActivity
-import com.dollearn.student.ui.home.VideoDetailActivity
-import com.dollearn.student.utils.Const
-import com.dollearn.student.utils.Const.EventCode.CHANGE_COURSDATA
-import com.dollearn.student.utils.ThirdPartyMapsGuide
-import com.dollearn.student.utils.event.EmptyEvent
-import com.dollearn.student.utils.extention.clickDelay
-import com.dollearn.student.utils.extention.loadLongImage
-import com.dollearn.student.utils.formatDistance
-import com.dollearn.student.utils.interfaces.StringCallback
-import com.dollearn.student.utils.interfaces.StringCallback2
-import kotlinx.android.synthetic.main.fragment_course.*
-import org.greenrobot.eventbus.EventBus
-import org.greenrobot.eventbus.Subscribe
-import org.jetbrains.anko.support.v4.startActivity
-import org.jetbrains.anko.support.v4.startActivityForResult
-import org.jetbrains.anko.support.v4.toast
-import java.lang.Exception
-import java.util.*
-
-class CourseFragment : BaseFragment() {
-    override fun contentViewId() = R.layout.fragment_course
-
-    private var currentStudent: String? = null //当前运动营成员
-    private val course = arrayListOf<MyCourse>()
-    private val myCourseAdapter = MyCourseAdapter(course)
-    private val medalList = arrayListOf<Medal>()
-    private val medalAdapter = MedalGridAdapter(medalList)
-    private val exerciseList = arrayListOf<Exercise>()
-    private val exerciseAdapter = ExerciseGridAdapter(exerciseList)
-    private val frags = arrayListOf<WeekFragment>()
-    private val scheduleList = arrayListOf<Data>()
-    lateinit var dialogc: UndistributedClassHourialog
-    override fun onFirstVisibleToUser() {
-        rv_course.layoutManager =
-            LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false)
-        rv_course.adapter = myCourseAdapter
-        rv_badge.layoutManager = GridLayoutManager(requireContext(), 3)
-        rv_badge.adapter = medalAdapter
-        rv_practice.layoutManager = GridLayoutManager(requireContext(), 2)
-        rv_practice.adapter = exerciseAdapter
-        rv_course_schedule.layoutManager = LinearLayoutManager(requireContext())
-
-        initWeeks()
-
-        tv_switch.setOnClickListener {
-            startActivityForResult<SwitchStudentActivity>(2, "currentStu" to currentStudent)
-        }
-        tv_record.setOnClickListener {
-            startActivity<ReserveRecordActivity>(
-                "id" to currentStudent,
-                "name" to tv_name.text.toString()
-            )
-        }
-        tv_more_report.setOnClickListener {
-            startActivity<ReportActivity>("id" to currentStudent)
-        }
-
-        //详情
-        tv_detail.setOnClickListener {
-            startActivity<MyCourseDetailActivity>(
-                "courseId" to course[myCourseAdapter.checked].courseId,
-                "stuId" to currentStudent
-            )
-        }
-
-        //续课
-        tv_continue.setOnClickListener {
-            showDialog()
-            HttpManager.queryCourseInfo(course[myCourseAdapter.checked].courseId, WeparkApplication.lat, WeparkApplication.lon)
-                .requestByF(this) { _, data ->
-                    startActivityForResult<JoinCourseActivity>(
-                        1,
-                        "course" to data,
-                        "isContinue" to true
-                    )
-                }
-        }
-        tv_continue_1.setOnClickListener {
-            tv_continue.callOnClick()
-        }
-
-
-        tv_evaluation.setOnClickListener {
-            startActivity<EvaluationActivity>("stuId" to currentStudent)
-        }
-
-        myCourseAdapter.setOnItemClickListener { view, position ->
-            myCourseAdapter.checked = position
-            cl_course_info.visibility = if (course[position].courseType != 1) View.GONE else View.VISIBLE
-            myCourseAdapter.notifyDataSetChanged()
-            refreshCourseInfo()
-        }
-        medalAdapter.setOnItemClickListener { view, position ->
-            startActivity<MedalActivity>("stuId" to currentStudent)
-        }
-        exerciseAdapter.setOnItemClickListener { view, position ->
-            startActivity<VideoDetailActivity>(
-                "id" to exerciseList[position].videoId,
-                "scId" to exerciseList[position].scId,
-                "courseId" to exerciseList[position].coursePackageId,
-                "type" to 3
-            )
-        }
-
-        tv_reward.setOnClickListener {
-            startActivity<PracticeListActivity>("stuId" to currentStudent)
-        }
-        ll_add.setOnClickListener {
-            startActivityForResult<AddStudentActivity>(1)
-        }
-        ll_add_stu.setOnClickListener {
-            startActivity<AddStudentActivity>()
-        }
-        refreshLayout.setOnRefreshListener {
-            getData()
-        }
-
-        tv_class_hour.clickDelay {
-            HttpManager.weeksOfGetHours().requestByF(this@CourseFragment,
-                success = { _, data ->
-
-                    data?.let {
-                        if (it == 0) {
-                            toast("没有可分配的课时")
-                            return@let
-                        }
-                        val arrayListOf = arrayListOf<MyCourse>()
-                        arrayListOf.addAll(course.filter { it.isAble == 1 })
-                        dialogc = UndistributedClassHourialog.show(
-                            childFragmentManager,
-                            it,
-                            arrayListOf,
-                            object : StringCallback {
-                                override fun onResult(rst: String) {
-                                    HttpManager.weeksOfAddHours(rst.toLong())
-                                        .requestByF(this@CourseFragment,
-                                            success = { _, data ->
-                                                getData()
-                                            })
-                                    dialogc.dismiss()
-                                }
-                            })
-                    }
-
-                })
-        }
-        EventBus.getDefault().register(this)
-    }
-
-    override fun onDestroy() {
-        super.onDestroy()
-        EventBus.getDefault().unregister(this)
-    }
-
-    @Subscribe
-    fun onEvent(e: EmptyEvent) {
-        if (e.code == Const.EventCode.CHANGE_SHOP || e.code == CHANGE_COURSDATA) {
-            getData()
-        }
-    }
-
-    private fun getData() {
-        HttpManager.queryStudentData(currentStudent).requestByF(this, success = { _, data ->
-            refreshLayout.finishRefresh()
-            data?.apply {
-                gp_none.visibility = if (isThere == 1) { //展示运动营成员信息
-                    currentStudent = stuId
-                    getSchedule()
-                    gp_user.visible()
-                    tv_name.text = stuName
-                    tv_sex.setCompoundDrawablesRelativeWithIntrinsicBounds(
-                        0,
-                        0,
-                        if (stuSex == 1) R.mipmap.nan else R.mipmap.nv,
-                        0
-                    )
-                    tv_age.text = "/${stuAge}岁"
-                    iv_avatar.setImageURI(stuImg)
-                    try {
-                        val heightS = "${height}cm"
-                        tv_height.text =
-                            SpanBuilder(heightS).size(heightS.length - 2, heightS.length, 14)
-                                .build()
-                        val weightS = "${weight}kg"
-                        tv_wight.text =
-                            SpanBuilder(weightS).size(weightS.length - 2, weightS.length, 14)
-                                .build()
-                        val bmiS = "${bmi}${bodyStatus}"
-                        tv_bmi.text =
-                            SpanBuilder(bmiS).size(bmiS.indexOf(bodyStatus), bmiS.length, 14)
-                                .build()
-                    } catch (e: Exception) {
-
-                    }
-
-                    if (courseList.isNullOrEmpty()) {
-                        ll_course.gone()
-                        cl_course_info.gone()
-                    } else {
-                        ll_course.visible()
-                        course.clear()
-                        course.addAll(courseList)
-                        myCourseAdapter.notifyDataSetChanged()
-                        cl_course_info.visibility = if (course[0].courseType != 1) View.GONE else View.VISIBLE
-                        refreshCourseInfo()
-                    }
-                    getMedal(stuId)
-                    exerciseList.clear()
-                    exerciseList.addAll(exerciseVideoList)
-                    exerciseAdapter.notifyDataSetChanged()
-                    View.GONE
-                } else {
-                    gp_user.gone()
-                    getImg()
-                    View.VISIBLE
-                }
-            }
-        }) { _, _ ->
-            refreshLayout.finishRefresh(false)
-        }
-    }
-
-    private fun getImg(){
-        val map = hashMapOf<String, Any>()
-        map["position"] = 1
-        HttpManager.queryString(Apis.querySystemImg,map).requestByF(this){ _, data->
-            data?.loadLongImage(requireContext(),iv_none)
-        }
-    }
-
-    private fun initWeeks() {
-        val calendar = Calendar.getInstance()
-        currentDate = System.currentTimeMillis()
-        calendar.set(Calendar.DAY_OF_WEEK, 1)
-        val firstOfWeek = calendar.timeInMillis
-        Log.e(Const.Tag, "英文本周的第一天(星期天)是${firstOfWeek.toTime()}")
-        val startTimes = arrayListOf<Long>()
-        startTimes.addAll((0..9).map { firstOfWeek + (1000L * 24 * 60 * 60 * 7 * it) })
-        frags.clear()
-        frags.addAll(startTimes.map { WeekFragment.newInstance(it) })
-        vp_week.adapter = WeekViewPagerAdapter(childFragmentManager, frags)
-        vp_week.offscreenPageLimit = 10
-        tv_duration.text =
-            "${firstOfWeek.toTime("yyyy.MM.dd")}-${(firstOfWeek + 1000L * 60 * 60 * 24 * 6).toTime("yyyy.MM.dd")}"
-        vp_week.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
-            override fun onPageScrolled(
-                position: Int,
-                positionOffset: Float,
-                positionOffsetPixels: Int
-            ) {
-
-            }
-
-            override fun onPageSelected(position: Int) {
-                tv_duration.text = "${startTimes[vp_week.currentItem].toTime("yyyy.MM.dd")} - ${
-                    (startTimes[vp_week.currentItem] + 1000L * 24 * 60 * 60 * 6).toTime("yyyy.MM.dd")
-                }"
-            }
-
-            override fun onPageScrollStateChanged(state: Int) {
-            }
-        })
-        tv_last_week.setOnClickListener {
-            vp_week.setCurrentItem(
-                Math.max(
-                    vp_week.currentItem - 1,
-                    0
-                ), true
-            )
-        }
-        tv_next_week.setOnClickListener {
-            vp_week.setCurrentItem(
-                Math.min(
-                    vp_week.currentItem + 1,
-                    9
-                ), true
-            )
-        }
-        iv_last.setOnClickListener { tv_last_week.callOnClick() }
-        iv_next.setOnClickListener { tv_next_week.callOnClick() }
-    }
-
-    private fun getMedal(stuId: String) {
-        HttpManager.stuGoog(stuId).requestByF(this) { _, data ->
-            medalList.clear()
-            medalList.addAll(data ?: arrayListOf())
-            tv_1.visibility = if (medalList.isEmpty()) View.GONE else{
-                medalList.add(Medal("更多","",0,0,"",1))
-                View.VISIBLE
-            }
-            medalAdapter.notifyDataSetChanged()
-        }
-    }
-
-    /**
-     * 显示课时信息
-     */
-    private fun refreshCourseInfo() {
-        val current = course[myCourseAdapter.checked]
-        val total = "总课时数 ${current.totalNums}"
-        tv_total.text = SpanBuilder(total).size(0, 4, 12).build()
-        val used = "已扣课时数  ${current.deductedNums}"
-        tv_used.text = SpanBuilder(used).size(0, 5, 12).build()
-        val last = "剩余课时数  ${current.remainingNums}"
-        tv_last.text = SpanBuilder(last).size(0, 5, 12).build()
-    }
-
-    fun notifyWeekCheckChanged(time: Long) {
-        currentDate = time
-        frags.forEach {
-            if (it.isAdded)
-                it.refreshAdapter()
-        }
-        getSchedule()
-    }
-
-    @SuppressLint("SetTextI18n")
-    private fun getSchedule() {
-        if (storeId.isEmpty())
-            myToast("请先选择门店")
-        else
-            HttpManager.weeksOfCourseDetails(currentStudent ?: "", storeId, currentDate.toTime("yyyy-MM-dd"))
-                .requestByF(this) { _, data ->
-                    data?.let {
-                        tv_address.text = it.name + "  " + formatDistance(it.distance.toString()) + "km"
-                        scheduleList.clear()
-                        scheduleList.addAll(it.data?: arrayListOf())
-                        tv_address.setOnClickListener {_->
-                            if (it.lat.isNotEmpty()){
-                                val mapTypeDialog = MapTypeDialog()
-                                mapTypeDialog.callback = object :StringCallback{
-                                    override fun onResult(rst: String) {
-                                        if(rst == "b"){
-                                            ThirdPartyMapsGuide.goToBaiduActivity(requireContext(),it.name,it.lon.toDouble(),it.lat.toDouble())
-                                        }else if (rst == "a"){
-                                            ThirdPartyMapsGuide.goToGaoDeMap(requireContext(),it.name,it.lon,it.lat)
-                                        }else{
-                                            ThirdPartyMapsGuide.goToTencentMap(requireContext(),it.name,it.lon.toDouble(),it.lat.toDouble())
-                                        }
-                                    }
-                                }
-                                mapTypeDialog.showAllowingStateLoss(childFragmentManager,"map")
-                            }
-                        }
-                    }
-
-                }
-    }
-
-    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
-        super.onActivityResult(requestCode, resultCode, data)
-        if (resultCode == Activity.RESULT_OK) {
-            if (requestCode == 2&&data!=null){
-                currentStudent = data.getStringExtra("stuId")
-            }
-            getData()
-        }
-    }
-
-    companion object {
-        var currentDate = 0L //当前选择日期
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/ui/course/JoinCourseActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/JoinCourseActivity.kt
deleted file mode 100644
index 3b4b049..0000000
--- a/app/src/main/java/com/dollearn/student/ui/course/JoinCourseActivity.kt
+++ /dev/null
@@ -1,380 +0,0 @@
-package com.dollearn.student.ui.course
-
-import android.annotation.SuppressLint
-import android.content.Intent
-import android.graphics.Paint
-import android.view.View
-import androidx.core.os.bundleOf
-import androidx.recyclerview.widget.GridLayoutManager
-import androidx.recyclerview.widget.LinearLayoutManager
-import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.invisible
-import cn.sinata.xldutils.utils.SpanBuilder
-import cn.sinata.xldutils.utils.myToast
-import cn.sinata.xldutils.utils.showAllowingStateLoss
-import cn.sinata.xldutils.visible
-import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
-import com.dollearn.student.dialog.ChooseCouponDialog
-import com.dollearn.student.dialog.ChooseStudentDialog
-import com.dollearn.student.dialog.ConfirmShopDialog
-import com.dollearn.student.dialog.PayDialog
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.*
-import com.dollearn.student.network.request
-import com.dollearn.student.ui.TransparentStatusBarActivity
-import com.dollearn.student.ui.home.PayResultActivity
-import com.dollearn.student.ui.home.adapter.HomeBannerAdapter
-import com.dollearn.student.ui.home.adapter.LessonCountAdapter
-import com.dollearn.student.ui.home.adapter.StudentAdapter
-import com.dollearn.student.utils.Const
-import com.dollearn.student.utils.event.EmptyEvent
-import com.dollearn.student.utils.extention.clickDelay
-import com.dollearn.student.utils.interfaces.StringCallback
-import com.dollearn.student.utils.pay.PayListener
-import com.dollearn.student.utils.pay.PayUtil
-import kotlinx.android.synthetic.main.activity_join_course.*
-import org.greenrobot.eventbus.EventBus
-import org.greenrobot.eventbus.Subscribe
-import org.jetbrains.anko.startActivityForResult
-import org.jetbrains.anko.textColorResource
-import java.math.BigDecimal
-
-class JoinCourseActivity : TransparentStatusBarActivity(), PayListener {
-    override fun setContentView() = R.layout.activity_join_course
-    private val isContinue by lazy {
-        try {
-            intent.getBooleanExtra("isContinue", false)
-        } catch (_: Exception) {
-            false
-        }
-    }
-
-    private val orderId by lazy { intent.getStringExtra("orderId") } //续课有此字段
-
-    private val bannerImg = arrayListOf<Banner>()
-    private val bannerAdapter by lazy {
-        HomeBannerAdapter(bannerImg, this)
-    }
-
-    private val paymentId by lazy { intent.getStringExtra("paymentId") } //如果不是空 表示来支付的
-
-    private val course by lazy { intent.getParcelableExtra<Course>("course")!! }
-    private val courseCount by lazy { intent.getIntExtra("courseCount",0) } //从福利折扣进来的时候有此字段,需要默认选择此课时
-
-    private val arrayListOf = arrayListOf<String>()
-    private val lessonCountAdapter = LessonCountAdapter(arrayListOf)
-
-    private val students = arrayListOf<Student>()
-    private val studentAdapter = StudentAdapter(students, StudentAdapter.TYPE_COURSE_DETAIL)
-
-    private val couponList = arrayListOf<Coupon>()
-    private var chooseCouponId = 0L//已选优惠券id
-    private var chooseCouponMoney = 0.0//已选优惠券价格
-
-    private var payPrice = 0.0
-    private var payCoin = 0
-
-
-    override fun initClick() {
-        tv_add_student.clickDelay {
-            ChooseStudentDialog.show(
-                supportFragmentManager,
-                ChooseStudentDialog.TYPE_COURSE,
-                students,
-                object : ChooseStudentDialog.ResultCallback {
-                    override fun checked(list: List<Student>) {
-                        students.clear()
-                        students.addAll(list)
-                        studentAdapter.notifyDataSetChanged()
-                        refreshPrice(course!!.list[lessonCountAdapter.checked])
-                    }
-                })
-        }
-        tv_coupon.clickDelay {
-            val chooseCouponDialog = ChooseCouponDialog()
-            chooseCouponDialog.arguments =
-                bundleOf("list" to couponList, "checked" to chooseCouponId)
-            chooseCouponDialog.callback = object : StringCallback {
-                override fun onResult(rst: String) {
-                    chooseCouponId = rst.toLong()
-                    val coupon = couponList.filter { it.id == chooseCouponId }.firstOrNull()
-                    chooseCouponMoney = (coupon?.favorable?:"0.0").toDouble()
-                    tv_coupon.text = "-${coupon?.favorable}元"
-                    refreshPrice(course!!.list[lessonCountAdapter.checked],true)
-                }
-            }
-            chooseCouponDialog.showAllowingStateLoss(supportFragmentManager, "coupon")
-        }
-        tv_action.clickDelay {
-            if (students.isNullOrEmpty())
-                myToast("请选择运动营成员")
-            else
-                ConfirmShopDialog.show(supportFragmentManager,
-                    course.storeCoverDrawing ?: "",
-                    course.storeName,
-                    course.storeAddress,
-                    if (course.distance == null) "" else "${course.distance}km",
-                    object : StringCallback {
-                        override fun onResult(rst: String) {
-                            PayDialog.show(supportFragmentManager, false, object : StringCallback {
-                                override fun onResult(rst: String) {
-                                    pay(rst.toInt())
-                                }
-
-                            }, payPrice, payCoin)
-                        }
-                    })
-        }
-    }
-
-    @SuppressLint("SetTextI18n")
-    override fun initView() {
-        banner.adapter = bannerAdapter
-        if (isContinue){
-            tv_action.text = "续课"
-            tv_add_student.invisible() //安雪晖:续课不能修改成员
-            studentAdapter.delable = false
-        }
-        if (!paymentId.isNullOrEmpty())
-            tv_action.text = "立即支付"
-
-        rv_lesson_count.layoutManager = GridLayoutManager(this, 3)
-        rv_student.layoutManager = LinearLayoutManager(this)
-        rv_student.adapter = studentAdapter
-        studentAdapter.delCallback = object : StringCallback {
-            override fun onResult(rst: String) {
-                students.removeAt(rst.toInt())
-                studentAdapter.notifyDataSetChanged()
-                refreshPrice(course!!.list[lessonCountAdapter.checked])
-            }
-        }
-        course?.apply {
-            bannerImg.addAll(detailDrawing.split(",").map { Banner(url = it) })
-            bannerAdapter.notifyDataSetChanged()
-            banner.currentItem = 1
-            tv_name.text = name
-            tv_week.text = "毎${weeks.joinToString("、") { it }}"
-            tv_time.text = times?.joinToString(" | ")
-            tv_shop.text = storeName
-            tv_address.text = storeAddress
-            arrayListOf.addAll(list.map { "${it.classHours}课时" })
-            if (courseCount!=0) //有默认选中的课时
-                lessonCountAdapter.checked = list.map { it.classHours }.indexOf(courseCount)
-            rv_lesson_count.adapter = lessonCountAdapter
-            lessonCountAdapter.setOnItemClickListener { view, position ->
-                lessonCountAdapter.checked = position
-                refreshPrice(list[position])
-                lessonCountAdapter.notifyDataSetChanged()
-            }
-            if (!student.id.isNullOrEmpty()) {
-                student.stuId = student.id
-                students.add(student)
-                studentAdapter.notifyDataSetChanged()
-            }
-            refreshPrice(list[lessonCountAdapter.checked])
-            when(type){
-                2->{ //假期班
-                    gp_count.gone()
-                    mll_class_yxq.visible()
-                    mtv_class_yxq.text = time
-                    mtvtag.text = "假期班"
-                }
-                3->{ //体验课
-                    gp_count.gone()
-                    mll_class_yxq.visible()
-                    mtvtag.text = "体验课"
-                    cl_time.gone()
-                }
-                else->{
-                    mtvtag.text = "常规班"
-                }
-            }
-        }
-        PayUtil.addPayListener(this)
-        EventBus.getDefault().register(this)
-    }
-
-    @Subscribe
-    fun onSwitch(e: EmptyEvent) {
-
-    }
-
-    private fun refreshPrice(data: Lesson?,changeByCoupon:Boolean = false) {
-        val size = if (students.size == 0) 1 else students.size
-        data?.apply {
-            //1.是否有玩湃币价格 —— 独立判断
-            payCoin = playPaiCoin * size
-            if (payCoin == 0)
-                tv_coin_price.gone()
-            else {
-                tv_coin_price.visible()
-                tv_coin_price.text = SpanBuilder("玩湃币:%d币".format(payCoin)).color(
-                    this@JoinCourseActivity,
-                    0,
-                    4,
-                    R.color.textColor
-                ).build()
-            }
-
-            //2.支付价 —— 独立判断
-            if (paymentPrice == 0.0 || paymentPrice == null) { //没有支付价tv_price.gone()
-                tv_vip_price.gone()
-            } else { //有支付价,显示支付价,并判断是否有会员价或划线价
-                payPrice = paymentPrice * size
-                if (!changeByCoupon){ //如果是选择优惠券后导致的价格变化 不用重新获取可用优惠券
-                    chooseCouponMoney = 0.0
-                    chooseCouponId = 0L
-                    getCoupon(payPrice)
-                }
-                payPrice = sub(payPrice ,chooseCouponMoney)
-                tv_price.text = "¥%s".format(payPrice.toString())
-
-                //3.会员价或划线价
-                if (paymentPrice <= vipPrice ?: 0.0) { //a.支付价==会员价,说明我是会员,展示划线价; b.支付价小于会员价,说明是折扣价,展示划线价
-                    if (originalPrice ?: 0.0 != 0.0 && originalPrice != paymentPrice) { //有划线价且划线价不等于支付价,才显示划线价
-                        tv_vip_price.text = "¥%.2f".format((originalPrice?:0.0)*size)
-                        tv_vip_price.textColorResource = R.color.textColor66
-                        tv_vip_price.paintFlags =
-                            tv_vip_price.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG
-                    } else //否则啥也不展示
-                        tv_vip_price.gone()
-                } else if (vipPrice ?: 0.0 != 0.0) {
-                    tv_vip_price.text =
-                        SpanBuilder("会员价:¥%s".format(((vipPrice?:0.0)*size).toString())).color(
-                            this@JoinCourseActivity,
-                            0,
-                            4,
-                            R.color.textColor
-                        ).build()
-                } else
-                    tv_vip_price.gone()
-            }
-        }
-    }
-
-    private fun sub(d1:Double,d2:Double):Double{
-        val b1 = BigDecimal(d1.toString())
-        val b2 = BigDecimal(d2.toString())
-        return b1.subtract(b2).toDouble()
-    }
-
-    private fun getCoupon(price: Double) {
-        HttpManager.queryAvailableCouponList(
-            course!!.id,
-            price,
-            WeparkApplication.lat,
-            WeparkApplication.lon
-        ).request(this) { _, data ->
-            couponList.clear()
-            couponList.addAll(data ?: arrayListOf())
-            if (chooseCouponId !in couponList.map { it.id }) { //之前选中的优惠券不在可用列表
-                chooseCouponId = 0
-                chooseCouponMoney = 0.0
-                tv_coupon.text = "去选择"
-            }
-            cl_coupon.visibility = if (data.isNullOrEmpty()) View.GONE else{
-                tv_coupon_count.text = "(${data.size}张可用)"
-                View.VISIBLE
-            }
-        }
-    }
-
-    private fun pay(payType: Int) {
-        if (!paymentId.isNullOrEmpty())
-            HttpManager.payment(
-                payType,
-                course.id,
-                paymentId!!,
-                course.list[lessonCountAdapter.checked].classHours,
-                students.joinToString(";") { it.id ?: "" },
-                if (chooseCouponId == 0L) 2 else 1,
-                chooseCouponId
-            ).request(this, false, success = { _, data ->
-//                if (chooseCouponId!=0L){
-//                    getCoupon(payPrice)
-//                }
-                if (payType == 2) {
-                    PayUtil.aliPay(this, data?.orderInfo ?: "")
-                } else if (payType == 3) {
-                    EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_USER)) //玩湃币支付后刷新首页
-                    onPaySuccess()
-                } else {
-                    PayUtil.initWeChatPay(this, Const.WX_APP_ID)
-                    PayUtil.weChatPay(data!!)
-                }
-            }) { _, msg ->
-                startActivityForResult<PayResultActivity>(1, "type" to if (isContinue) PayResultActivity.TYPE_COURSE_CONTINUE_FAILED else PayResultActivity.TYPE_COURSE_FAILED, "msg" to msg)
-            }
-        else {
-            HttpManager.paymentCourse(
-                payType,
-                course.id,
-                course.list[lessonCountAdapter.checked].id,
-                if (payType == 3) payCoin.toDouble() else payPrice+chooseCouponMoney,
-                students.joinToString(";") { it.id ?: "" },
-                chooseCouponId,orderId
-            ).request(this, false, success = { _, data ->
-                if (chooseCouponId!=0L){
-                    getCoupon(payPrice)
-                }
-                if (payType == 2) {
-                    PayUtil.aliPay(this, data?.orderInfo ?: "")
-                } else if (payType == 3) {
-                    EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_USER)) //玩湃币支付后刷新首页
-                    onPaySuccess()
-                } else {
-                    PayUtil.initWeChatPay(this, Const.WX_APP_ID)
-                    PayUtil.weChatPay(data!!)
-                }
-            }) { _, msg ->
-                startActivityForResult<PayResultActivity>(
-                    1,
-                    "type" to if (isContinue) PayResultActivity.TYPE_COURSE_CONTINUE_FAILED else PayResultActivity.TYPE_COURSE_FAILED,
-                    "msg" to msg
-                )
-            }
-        }
-
-    }
-
-    override fun onPaySuccess() {
-        startActivityForResult<PayResultActivity>(
-            1,
-            "type" to if (isContinue) PayResultActivity.TYPE_COURSE_CONTINUE_SUC else PayResultActivity.TYPE_COURSE_SUC,
-            "lessonId" to course.list[lessonCountAdapter.checked].id
-        )
-        finish()
-    }
-
-    override fun onPayCancel() {
-    }
-
-    override fun onPayError(msg: String) {
-        startActivityForResult<PayResultActivity>(
-            1,
-            "type" to if (isContinue) PayResultActivity.TYPE_COURSE_CONTINUE_FAILED else PayResultActivity.TYPE_COURSE_FAILED
-        )
-    }
-
-    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
-        super.onActivityResult(requestCode, resultCode, data)
-        if (resultCode == RESULT_OK&&requestCode == 1) {
-            tv_action.postDelayed({
-                PayDialog.show(supportFragmentManager, false, object : StringCallback {
-                    override fun onResult(rst: String) {
-                        pay(rst.toInt())
-                    }
-
-                }, payPrice, payCoin)
-            }, 500)
-        }
-    }
-
-    override fun onDestroy() {
-        super.onDestroy()
-        PayUtil.removePayListener(this)
-        PayUtil.unregisterApp()
-        EventBus.getDefault().unregister(this)
-    }
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/course/JoinedCourseDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/JoinedCourseDetailActivity.kt
index a44aa48..3adcfa6 100644
--- a/app/src/main/java/com/dollearn/student/ui/course/JoinedCourseDetailActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/course/JoinedCourseDetailActivity.kt
@@ -5,7 +5,7 @@
 import cn.sinata.xldutils.utils.*
 import cn.sinata.xldutils.visible
 import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.DollearnApplication
 import com.dollearn.student.network.HttpManager
 import com.dollearn.student.network.entity.Banner
 import com.dollearn.student.network.entity.JoinedCourse
@@ -33,10 +33,7 @@
 
     override fun initClick() {
         tv_action.clickDelay {
-            showDialog()
-            HttpManager.queryCourseInfo(course?.coursePackageId?:"", WeparkApplication.lat, WeparkApplication.lon).request(this){ _, data->
-                startActivity<JoinCourseActivity>("paymentId" to id,"course" to data,"isContinue" to (tv_action.text == "续课"))
-            }
+
         }
     }
 
diff --git a/app/src/main/java/com/dollearn/student/ui/course/MyCourseActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/MyCourseActivity.kt
index f2241a9..08504fd 100644
--- a/app/src/main/java/com/dollearn/student/ui/course/MyCourseActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/course/MyCourseActivity.kt
@@ -56,12 +56,7 @@
         bg_filter.setOnClickListener {
             cb_type.isChecked = false
         }
-        adapter.setOnItemClickListener { view, position ->
-            if (datas[position].payStatus == 1) //待支付,跳转支付详情页
-                startActivityForResult<UnPayCourseDetailActivity>(1,"orderId" to datas[position].orderId,"id" to datas[position].coursePayId)
-            else
-                startActivityForResult<JoinedCourseDetailActivity>(1,"orderId" to datas[position].orderId,"id" to datas[position].coursePayId)
-        }
+
     }
 
     override fun initView() {
diff --git a/app/src/main/java/com/dollearn/student/ui/course/MyCourseDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/MyCourseDetailActivity.kt
index 0028892..746c361 100644
--- a/app/src/main/java/com/dollearn/student/ui/course/MyCourseDetailActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/course/MyCourseDetailActivity.kt
@@ -3,11 +3,10 @@
 import android.content.Intent
 import android.view.View
 import androidx.recyclerview.widget.LinearLayoutManager
-import cn.sinata.xldutils.utils.SpanBuilder
 import cn.sinata.xldutils.utils.showAllowingStateLoss
 import cn.sinata.xldutils.utils.toTime
 import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.DollearnApplication
 import com.dollearn.student.dialog.ChooseMonthDialog
 import com.dollearn.student.dialog.FilterPop
 import com.dollearn.student.network.HttpManager
@@ -73,15 +72,7 @@
         }
 
         tv_buy.setOnClickListener {
-            showDialog()
-            HttpManager.queryCourseInfo(courseId!!, WeparkApplication.lat, WeparkApplication.lon,stuId)
-                .request(this) { _, data ->
-                    startActivityForResult<JoinCourseActivity>(
-                        1,
-                        "course" to data,
-                        "isContinue" to true
-                    )
-                }
+
         }
     }
 
diff --git a/app/src/main/java/com/dollearn/student/ui/course/ReserveRecordActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/ReserveRecordActivity.kt
deleted file mode 100644
index f516e46..0000000
--- a/app/src/main/java/com/dollearn/student/ui/course/ReserveRecordActivity.kt
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.dollearn.student.ui.course
-
-import androidx.fragment.app.Fragment
-import com.dollearn.student.R
-import com.dollearn.student.dialog.TimeFilterPop
-import com.dollearn.student.ui.TransparentStatusBarActivity
-import com.dollearn.student.utils.extention.clickDelay
-import com.dollearn.student.utils.interfaces.StringCallback
-import kotlinx.android.synthetic.main.activity_reserve_record.*
-
-class ReserveRecordActivity : TransparentStatusBarActivity() {
-    override fun setContentView() = R.layout.activity_reserve_record
-
-    val id by lazy { intent.getStringExtra("id")} //运动营成员id
-    var search:String? = null
-    var time:Int? = null
-    private val frags = arrayListOf<Fragment>()
-
-    override fun initClick() {
-        tv_search.clickDelay {
-            val s = et_search.text.toString()
-            search = if (s.isNullOrEmpty()) null else s
-            (frags[view_pager.currentItem] as ReserveRecordFragment).refresh()
-        }
-
-        cb_type.setOnCheckedChangeListener { buttonView, isChecked ->
-            if (isChecked){
-                val timeFilterPop = TimeFilterPop(this)
-                timeFilterPop.setCallback(object :StringCallback{
-                    override fun onResult(rst: String) {
-                        cb_type.text = rst
-                        time = when(rst){
-                            "最近一周"->1
-                            "最近一月"->2
-                            "最近一年"->3
-                            else->0
-                        }
-                        (frags[view_pager.currentItem] as ReserveRecordFragment).refresh()
-                    }
-                })
-                timeFilterPop.showAsDropDown(cb_type)
-                timeFilterPop.setOnDismissListener {
-                    cb_type.isChecked = false
-                }
-            }
-        }
-    }
-
-    override fun initView() {
-        frags.add(ReserveRecordFragment.newInstance(ReserveRecordFragment.TYPE_ALL))
-        frags.add(ReserveRecordFragment.newInstance(ReserveRecordFragment.TYPE_UN_STUDY))
-        frags.add(ReserveRecordFragment.newInstance(ReserveRecordFragment.TYPE_FINISH))
-        frags.add(ReserveRecordFragment.newInstance(ReserveRecordFragment.TYPE_CANCELED))
-        tab_top.setViewPager(view_pager, arrayOf("全部","待上课","已完成","已取消"),this,frags)
-        tv_1.text = "当前运动营成员:"+intent.getStringExtra("name")
-    }
-
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/course/ReserveRecordFragment.kt b/app/src/main/java/com/dollearn/student/ui/course/ReserveRecordFragment.kt
deleted file mode 100644
index e2eb08d..0000000
--- a/app/src/main/java/com/dollearn/student/ui/course/ReserveRecordFragment.kt
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.dollearn.student.ui.course
-
-import androidx.core.os.bundleOf
-import androidx.recyclerview.widget.LinearLayoutManager
-import cn.sinata.xldutils.fragment.BaseFragment
-import com.dollearn.student.R
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.ReserveRecord
-import com.dollearn.student.network.requestByF
-import com.dollearn.student.ui.course.adapter.ReserveRecordAdapter
-import kotlinx.android.synthetic.main.layout_common_list.*
-
-class ReserveRecordFragment : BaseFragment() {
-    override fun contentViewId() = R.layout.layout_common_list
-
-    private val type by lazy { arguments?.getInt("type", TYPE_ALL)?: TYPE_ALL }
-    private var page = 1
-    private val list = arrayListOf<ReserveRecord>()
-    private val adapter = ReserveRecordAdapter(list)
-    private val stuId by lazy { (requireActivity() as ReserveRecordActivity).id?:"" }
-
-    override fun onFirstVisibleToUser() {
-        rv_list.layoutManager = LinearLayoutManager(requireContext())
-        rv_list.adapter = adapter
-        adapter.stuId = stuId
-        refreshLayout.setOnRefreshListener {
-            page = 1
-            getData()
-        }
-        refreshLayout.setOnLoadMoreListener {
-            page++
-            getData()
-        }
-        getData()
-    }
-
-    fun refresh(){
-        refreshLayout.autoRefresh()
-    }
-
-    private fun getData(){
-        val act = requireActivity() as ReserveRecordActivity
-        HttpManager.stuAppointList(page,stuId,type,act.time,act.search).requestByF(this,success = { _, data->
-            if (page == 1)
-                list.clear()
-            list.addAll(data?: arrayListOf())
-            adapter.notifyDataSetChanged()
-            if (list.isEmpty())
-                refreshLayout.finishRefreshWithNoMoreData()
-            else if (data.isNullOrEmpty())
-                refreshLayout.finishLoadMoreWithNoMoreData()
-            else if (page == 1)
-                refreshLayout.finishRefresh()
-            else
-                refreshLayout.finishLoadMore()
-        }){_,_->
-            if (page == 1)
-                refreshLayout.finishRefresh(false)
-            else
-                refreshLayout.finishLoadMore(false)
-            page--
-        }
-    }
-
-    companion object{//0=全部 1=待上课 2=已完成 3=已取消
-        const val TYPE_ALL = 0
-        const val TYPE_UN_STUDY = 1
-        const val TYPE_FINISH = 2
-        const val TYPE_CANCELED = 3
-        fun newInstance(type:Int):ReserveRecordFragment{
-            val reserveRecordFragment = ReserveRecordFragment()
-            reserveRecordFragment.arguments = bundleOf("type" to type)
-            return reserveRecordFragment
-        }
-    }
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/course/UnPayCourseDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/UnPayCourseDetailActivity.kt
deleted file mode 100644
index ef02a49..0000000
--- a/app/src/main/java/com/dollearn/student/ui/course/UnPayCourseDetailActivity.kt
+++ /dev/null
@@ -1,206 +0,0 @@
-package com.dollearn.student.ui.course
-
-import android.content.Intent
-import android.graphics.Paint
-import androidx.recyclerview.widget.GridLayoutManager
-import androidx.recyclerview.widget.LinearLayoutManager
-import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.invisible
-import cn.sinata.xldutils.utils.SpanBuilder
-import cn.sinata.xldutils.visible
-import com.dollearn.student.R
-import com.dollearn.student.dialog.PayDialog
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.Banner
-import com.dollearn.student.network.entity.JoinedCourse
-import com.dollearn.student.network.entity.Student
-import com.dollearn.student.network.request
-import com.dollearn.student.ui.TransparentStatusBarActivity
-import com.dollearn.student.ui.home.PayResultActivity
-import com.dollearn.student.ui.home.adapter.HomeBannerAdapter
-import com.dollearn.student.ui.home.adapter.LessonCountAdapter
-import com.dollearn.student.ui.home.adapter.StudentAdapter
-import com.dollearn.student.utils.Const
-import com.dollearn.student.utils.event.EmptyEvent
-import com.dollearn.student.utils.extention.clickDelay
-import com.dollearn.student.utils.interfaces.StringCallback
-import com.dollearn.student.utils.pay.PayListener
-import com.dollearn.student.utils.pay.PayUtil
-import kotlinx.android.synthetic.main.activity_join_course.*
-import org.greenrobot.eventbus.EventBus
-import org.greenrobot.eventbus.Subscribe
-import org.jetbrains.anko.startActivityForResult
-import org.jetbrains.anko.textColorResource
-
-class UnPayCourseDetailActivity : TransparentStatusBarActivity(), PayListener {
-    override fun setContentView() = R.layout.activity_join_course
-
-    private val id by lazy { intent.getStringExtra("id")?:"" }
-    private val orderId by lazy { intent.getStringExtra("orderId")?:"" }
-
-    private val bannerImg = arrayListOf<Banner>()
-    private val bannerAdapter by lazy {
-        HomeBannerAdapter(bannerImg, this)
-    }
-    private val arrayListOf = arrayListOf<String>()
-    private val lessonCountAdapter = LessonCountAdapter(arrayListOf)
-
-    private val students = arrayListOf<Student>()
-    private val studentAdapter = StudentAdapter(students, StudentAdapter.TYPE_COURSE_CHOOSE)
-
-    private var course:JoinedCourse? = null
-
-    override fun initClick() {
-    }
-
-    override fun initView() {
-        banner.adapter = bannerAdapter
-        tv_action.text = "立即支付"
-        tv_add_student.invisible() //安雪晖:待支付不能修改成员
-        studentAdapter.delable = false
-        rv_lesson_count.layoutManager = GridLayoutManager(this, 3)
-        rv_student.layoutManager = LinearLayoutManager(this)
-        rv_student.adapter = studentAdapter
-        PayUtil.addPayListener(this)
-        EventBus.getDefault().register(this)
-        getDetail()
-    }
-
-    private fun getDetail(){
-        HttpManager.registeredData(id,orderId).request(this){ _, data->
-            course = data
-            data?.apply {
-                bannerImg.addAll((detailDrawing?:"").split(",").map { Banner(url = it) })
-                bannerAdapter.notifyDataSetChanged()
-                banner.currentItem = 1
-                tv_name.text = coursePackageName
-                tv_week.text = weeks?.replace(";","、")
-                tv_time.text = courseTimeFrame
-                tv_shop.text = storeName
-                tv_address.text = storeAddress
-
-                arrayListOf.addAll(list.filter { it.classHours == chooseHours }.map { "${it.classHours}课时" })
-                lessonCountAdapter.checked = 0
-                rv_lesson_count.adapter = lessonCountAdapter
-
-                when(type){
-                    2->{ //假期班
-                        gp_count.gone()
-                        mll_class_yxq.visible()
-                        mtv_class_yxq.text = time
-                        mtvtag.text = "假期班"
-                    }
-                    3->{ //体验课
-                        gp_count.gone()
-                        mll_class_yxq.visible()
-                        mtvtag.text = "体验课"
-                        cl_time.gone()
-                    }
-                    else->{
-                        mtvtag.text = "常规班"
-                    }
-                }
-
-                HttpManager.listOfStu().request(this@UnPayCourseDetailActivity){ _, data->
-                    students.addAll((data?: arrayListOf()).filter { it.stuId in stuIds })
-                    studentAdapter.checked.addAll(stuIds)
-                    studentAdapter.notifyDataSetChanged()
-                }
-
-                if (payPrice?:0.0 == 0.0)
-                    tv_price.gone()
-                else{
-                    tv_price.text = "¥%s".format(payPrice.toString())
-                    if (orinPrice?:0.0!=0.0&&orinPrice!=payPrice){//享受了优惠,展示原价
-                        tv_vip_price.text = "¥%s".format(orinPrice.toString())
-                        tv_vip_price.textColorResource = R.color.textColor66
-                        tv_vip_price.paintFlags =
-                            tv_vip_price.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG
-                    }
-                }
-
-                if (coinPrice?:0 == 0)
-                    tv_coin_price.gone()
-                else
-                    tv_coin_price.text = SpanBuilder("玩湃币:%d币".format(coinPrice)).color(this@UnPayCourseDetailActivity,0,4,R.color.textColor).build()
-
-                tv_action.clickDelay {
-                    PayDialog.show(supportFragmentManager, false, object : StringCallback {
-                        override fun onResult(rst: String) {
-                            pay(rst.toInt())
-                        }
-
-                    }, payPrice, coinPrice)
-                }
-            }
-        }
-    }
-
-
-    private fun pay(payType: Int) {
-        HttpManager.paymentCourse(
-            payType,
-            course?.coursePackageId?:"",
-            course!!.list[lessonCountAdapter.checked].id,
-            if (payType == 3) course!!.coinPrice!!.toDouble() else course!!.payPrice!!,
-            students.joinToString(";") { it.id ?: "" },
-            0,orderId
-        ).request(this, false, success = { _, data ->
-            if (payType == 2) {
-                PayUtil.aliPay(this, data?.orderInfo ?: "")
-            } else if (payType == 3) {
-                EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_USER)) //玩湃币支付后刷新首页
-                onPaySuccess()
-            } else {
-                PayUtil.initWeChatPay(this, Const.WX_APP_ID)
-                PayUtil.weChatPay(data!!)
-            }
-        }) { _, msg ->
-            startActivityForResult<PayResultActivity>(
-                1,
-                "type" to PayResultActivity.TYPE_COURSE_FAILED,
-                "msg" to msg
-            )
-        }
-    }
-
-    @Subscribe
-    fun onSwitch(e: EmptyEvent) {
-
-    }
-
-    override fun onPaySuccess() {
-        startActivityForResult<PayResultActivity>(
-            1,
-            "type" to PayResultActivity.TYPE_COURSE_SUC,
-            "lessonId" to course!!.list[lessonCountAdapter.checked].id
-        )
-        finish()
-    }
-
-    override fun onPayCancel() {
-    }
-
-    override fun onPayError(msg: String) {
-        startActivityForResult<PayResultActivity>(
-            1,
-            "type" to PayResultActivity.TYPE_COURSE_FAILED
-        )
-    }
-
-    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
-        super.onActivityResult(requestCode, resultCode, data)
-        if (resultCode == RESULT_OK&&requestCode == 1) {
-            tv_action.postDelayed({
-                tv_action.callOnClick()
-            }, 500)
-        }
-    }
-
-    override fun onDestroy() {
-        super.onDestroy()
-        PayUtil.removePayListener(this)
-        PayUtil.unregisterApp()
-        EventBus.getDefault().unregister(this)
-    }
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/course/WeekFragment.kt b/app/src/main/java/com/dollearn/student/ui/course/WeekFragment.kt
deleted file mode 100644
index 219cf9a..0000000
--- a/app/src/main/java/com/dollearn/student/ui/course/WeekFragment.kt
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.dollearn.student.ui.course
-
-import android.util.Log
-import androidx.core.os.bundleOf
-import androidx.recyclerview.widget.GridLayoutManager
-import cn.sinata.xldutils.fragment.BaseFragment
-import cn.sinata.xldutils.utils.parserTime
-import cn.sinata.xldutils.utils.toTime
-import com.dollearn.student.R
-import com.dollearn.student.ui.course.adapter.WeekAdapter
-import com.dollearn.student.utils.Const
-import kotlinx.android.synthetic.main.fragment_week.*
-
-class WeekFragment:BaseFragment() {
-    override fun contentViewId() = R.layout.fragment_week
-
-    val startTime by lazy { arguments?.getLong("startTime",0L)?:0L } //第一天的时间戳
-    val list = arrayListOf<Long>()
-    private val adapter = WeekAdapter(list)
-
-    override fun onFirstVisibleToUser() {
-        Log.e(Const.Tag,"本周第一天${startTime.toTime("yyyy-MM-dd")}")
-        rv_week.layoutManager = GridLayoutManager(requireContext(),7)
-        rv_week.adapter = adapter
-        list.addAll((0 until 7).map {
-            startTime+(1000L*it*24*60*60)
-        })
-        adapter.notifyDataSetChanged()
-        adapter.setOnItemClickListener { view, position ->
-            if (list[position].toTime("yyyy-MM-dd 00:00:00").parserTime() >= System.currentTimeMillis().toTime("yyyy-MM-dd 00:00:00").parserTime())
-                (parentFragment as CourseFragment).notifyWeekCheckChanged(list[position])
-        }
-    }
-
-    fun refreshAdapter(){
-        adapter.notifyDataSetChanged()
-    }
-
-    companion object{
-        fun newInstance(startTime:Long):WeekFragment{
-            val weekFragment = WeekFragment()
-            weekFragment.arguments = bundleOf("startTime" to startTime)
-            return weekFragment
-        }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/ui/course/WelfareDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/WelfareDetailActivity.kt
index b2c1730..02565b5 100644
--- a/app/src/main/java/com/dollearn/student/ui/course/WelfareDetailActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/course/WelfareDetailActivity.kt
@@ -5,7 +5,7 @@
 import cn.sinata.xldutils.utils.SpanBuilder
 import cn.sinata.xldutils.visible
 import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.DollearnApplication
 import com.dollearn.student.network.HttpManager
 import com.dollearn.student.network.entity.Banner
 import com.dollearn.student.network.request
@@ -31,10 +31,7 @@
     override fun initClick() {
         tv_action.clickDelay {
             if (courseId!=null){
-                showDialog()
-                HttpManager.queryCourseInfo(courseId!!,WeparkApplication.lat,WeparkApplication.lon).request(this){_,data->
-                    startActivity<JoinCourseActivity>("course" to data,"courseCount" to courseCount)
-                }
+
             }
         }
     }
@@ -46,7 +43,7 @@
     }
 
     private fun getDetail(){
-        HttpManager.discountCourseDatas(id, WeparkApplication.lat, WeparkApplication.lon).request(this){ _, data->
+        HttpManager.discountCourseDatas(id, DollearnApplication.lat, DollearnApplication.lon).request(this){ _, data->
             data?.apply {
                 courseId = coursePackageDiscountId
                 bannerImg.addAll((detailDrawing?:"").split(",").map { Banner(url = it) })
diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/CourseScheduleAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/CourseScheduleAdapter.kt
deleted file mode 100644
index 746bb91..0000000
--- a/app/src/main/java/com/dollearn/student/ui/course/adapter/CourseScheduleAdapter.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.dollearn.student.ui.course.adapter
-
-import androidx.recyclerview.widget.LinearLayoutManager
-import androidx.recyclerview.widget.RecyclerView
-import cn.sinata.xldutils.adapter.HFRecyclerAdapter
-import cn.sinata.xldutils.adapter.util.ViewHolder
-import com.dollearn.student.R
-import com.dollearn.student.network.entity.Data
-import com.dollearn.student.utils.interfaces.StringCallback
-import java.util.ArrayList
-
-class CourseScheduleAdapter(scheduleList: ArrayList<Data>):HFRecyclerAdapter<Data>(scheduleList, R.layout.item_course_schedule) {
-    var callback:StringCallback? = null
-    override fun onBind(holder: ViewHolder, position: Int, data: Data) {
-       // holder.setText(R.id.tv_address,"${data.areaName} ${data.siteDistance}km")
-        val rvSchedule = holder.bind<RecyclerView>(R.id.rv_schedule)
-        rvSchedule.layoutManager = LinearLayoutManager(context)
-       // rvSchedule.adapter = ScheduleAdapter(data.courses,callback)
-    }
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/MedalAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/MedalAdapter.kt
index 45f6170..3009656 100644
--- a/app/src/main/java/com/dollearn/student/ui/course/adapter/MedalAdapter.kt
+++ b/app/src/main/java/com/dollearn/student/ui/course/adapter/MedalAdapter.kt
@@ -9,7 +9,6 @@
 import com.dollearn.student.network.entity.Medal
 import com.dollearn.student.ui.course.PracticeListActivity
 import com.dollearn.student.ui.home.FieldActivity
-import com.dollearn.student.ui.worldcup.MyWorldActivity
 import org.jetbrains.anko.imageResource
 import org.jetbrains.anko.startActivity
 import java.util.ArrayList
@@ -29,8 +28,6 @@
                     1->(context as BaseActivity).finish()
                     3->context.startActivity<FieldActivity>()
                     4->context.startActivity<PracticeListActivity>("stuId" to stuId)
-                    5->context.startActivity<MyWorldActivity>()
-                    6->context.startActivity<MyWorldActivity>()
                 }
             }
         }
diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/PaySuccessCouponAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/PaySuccessCouponAdapter.kt
deleted file mode 100644
index d662fc3..0000000
--- a/app/src/main/java/com/dollearn/student/ui/course/adapter/PaySuccessCouponAdapter.kt
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.dollearn.student.ui.course.adapter
-
-import android.util.TypedValue
-import android.widget.TextView
-import androidx.core.content.ContextCompat.startActivity
-import cn.sinata.xldutils.adapter.HFRecyclerAdapter
-import cn.sinata.xldutils.adapter.util.ViewHolder
-import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.SpanBuilder
-import cn.sinata.xldutils.visible
-import com.google.gson.Gson
-import com.dollearn.student.R
-import com.dollearn.student.network.entity.*
-import com.dollearn.student.ui.welfare.CouponActivity
-import com.dollearn.student.utils.extention.clickDelay
-import org.jetbrains.anko.backgroundResource
-import org.jetbrains.anko.startActivity
-import org.jetbrains.anko.support.v4.startActivity
-import org.jetbrains.anko.textColorResource
-import java.util.ArrayList
-
-class PaySuccessCouponAdapter(names: ArrayList<Coupon>) :
-    HFRecyclerAdapter<Coupon>(names, R.layout.item_coupon) {
-    var isVip = false
-    override fun onBind(holder: ViewHolder, position: Int, data: Coupon) {
-        val tvPrice = holder.bind<TextView>(R.id.tv_price)
-        holder.bind<TextView>(R.id.iv_check).gone()
-        holder.bind<TextView>(R.id.mtcCheck).apply {
-            clickDelay {
-                context.startActivity<CouponActivity>()
-            }
-        }.visible()
-        if (!isVip){
-            val rule = Gson().fromJson<RuleModel>(data.content, RuleModel::class.java)
-            if (data.type == 3){
-                tvPrice.setTextSize(TypedValue.COMPLEX_UNIT_SP,15f)
-                tvPrice.text = rule.experienceName
-            }else{
-                tvPrice.setTextSize(TypedValue.COMPLEX_UNIT_SP,20f)
-                tvPrice.text = SpanBuilder("¥${if (data.type == 2) rule.conditionalAmount else rule.deductionAmount}").size(0, 1, 17).build()
-            }
-            holder.setText(R.id.tv_condition, if (data.type == 1) "满${rule.conditionalAmount}元可用" else "")
-            holder.setText(R.id.tv_deadline, "有效期:${data.timePeriod}")
-        }else{
-            tvPrice.setTextSize(TypedValue.COMPLEX_UNIT_SP,20f)
-            tvPrice.text = "${data.favorable}元"
-            holder.setText(R.id.tv_condition, data.useCondition)
-            holder.setText(R.id.tv_deadline, "有效期:${data.effectiveTime}")
-        }
-        holder.setText(R.id.tv_name, data.name)
-
-    }
-
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/ReserveRecordAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/ReserveRecordAdapter.kt
deleted file mode 100644
index 7eb75da..0000000
--- a/app/src/main/java/com/dollearn/student/ui/course/adapter/ReserveRecordAdapter.kt
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.dollearn.student.ui.course.adapter
-
-import android.widget.TextView
-import androidx.core.os.bundleOf
-import cn.sinata.xldutils.activity.BaseActivity
-import cn.sinata.xldutils.adapter.HFRecyclerAdapter
-import cn.sinata.xldutils.adapter.util.ViewHolder
-import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.myToast
-import cn.sinata.xldutils.utils.parserTime
-import cn.sinata.xldutils.utils.showAllowingStateLoss
-import cn.sinata.xldutils.visible
-import com.google.gson.Gson
-import com.dollearn.student.R
-import com.dollearn.student.dialog.CheckQrCodeDialog
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.Duration
-import com.dollearn.student.network.entity.QrBean
-import com.dollearn.student.network.entity.ReserveRecord
-import com.dollearn.student.network.request
-import com.dollearn.student.ui.course.PracticeListActivity
-import org.jetbrains.anko.backgroundResource
-import org.jetbrains.anko.startActivity
-import org.jetbrains.anko.textColorResource
-import java.util.ArrayList
-
-class ReserveRecordAdapter(list: ArrayList<ReserveRecord>) :
-    HFRecyclerAdapter<ReserveRecord>(list, R.layout.item_reserve_record) {
-    var stuId = ""
-    override fun onBind(holder: ViewHolder, position: Int, data: ReserveRecord) {
-        val state = holder.bind<TextView>(R.id.tv_state)
-        val action = holder.bind<TextView>(R.id.tv_action)
-        holder.setText(R.id.tv_name, data.coursePackageName)
-        holder.setText(R.id.tv_course, "${data.courseHours}课时")
-        holder.setText(R.id.tv_address, data.storeNameAddr)
-        holder.setText(R.id.tv_time, data.timeFrame)
-        when (data.status) {//1待上课 2已开始 3已完成 4已取消,5已请假
-            1 -> {
-                action.visible()
-                action.text = "二维码"
-                action.backgroundResource = R.drawable.bg_orange_2dp
-                state.text = "待上课"
-                state.textColorResource = R.color.colorPrimary
-            }
-            2 -> {
-                action.gone()
-                state.text = "已开始"
-                state.textColorResource = R.color.textColor99
-            }
-            3 -> {
-                action.text = "课后练习"
-                action.visible()
-                action.backgroundResource = R.drawable.bg_blue_4dp
-                state.text = "已完成"
-                state.textColorResource = R.color.textColor99
-            }
-            4 -> {
-                action.gone()
-                state.text = "已取消"
-                state.textColorResource = R.color.textColor99
-            }
-            5 -> {
-                action.gone()
-                state.text = "已请假"
-                state.textColorResource = R.color.textColor99
-            }
-        }
-        action.setOnClickListener {
-            if (data.status == 1) {
-//                HttpManager.cancelCourse(data.courseStuRecordId).request(context as BaseActivity){_,_->
-//                    context.myToast("取消成功")
-//                    data.status = 4
-//                    notifyItemChanged(position)
-//                }
-                val duration = listOf(
-                    Duration(
-                        data.timeFrame.substring(0, 19).parserTime()/1000,
-                        "${data.timeFrame.substring(0, 11)}${data.timeFrame.substring(20, 28)}".parserTime()/1000
-                    )
-                )
-                val qrBean = QrBean(data.sid, data.rid, data.userId, duration)
-                val dialog = CheckQrCodeDialog()
-                dialog.arguments = bundleOf("qrinfo" to Gson().toJson(qrBean))
-                dialog.showAllowingStateLoss((action.context as BaseActivity).supportFragmentManager, "checkqr")
-            } else if (data.status == 3) {
-                context.startActivity<PracticeListActivity>("stuId" to stuId)
-            }
-        }
-    }
-
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/WeekAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/WeekAdapter.kt
deleted file mode 100644
index f2dd755..0000000
--- a/app/src/main/java/com/dollearn/student/ui/course/adapter/WeekAdapter.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.dollearn.student.ui.course.adapter
-
-import android.widget.TextView
-import cn.sinata.xldutils.adapter.HFRecyclerAdapter
-import cn.sinata.xldutils.adapter.util.ViewHolder
-import cn.sinata.xldutils.utils.toTime
-import com.dollearn.student.R
-import com.dollearn.student.ui.course.CourseFragment
-import java.util.ArrayList
-
-class WeekAdapter(list: ArrayList<Long>):HFRecyclerAdapter<Long>(list, R.layout.item_week_course) {
-    override fun onBind(holder: ViewHolder, position: Int, data: Long) {
-        val date = data.toTime("MM.dd")
-        holder.bind<TextView>(R.id.tv_english).apply {
-            text = when(position){
-                0->"S"
-                1->"M"
-                2->"T"
-                3->"W"
-                4->"T"
-                5->"F"
-                6->"S"
-                else->""
-            }
-            isSelected = date == CourseFragment.currentDate.toTime("MM.dd")
-        }
-        holder.setText(R.id.tv_date,date)
-    }
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/WeekViewPagerAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/WeekViewPagerAdapter.kt
deleted file mode 100644
index c845851..0000000
--- a/app/src/main/java/com/dollearn/student/ui/course/adapter/WeekViewPagerAdapter.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.dollearn.student.ui.course.adapter
-
-import androidx.fragment.app.FragmentManager
-import androidx.fragment.app.FragmentPagerAdapter
-import com.dollearn.student.ui.course.WeekFragment
-
-class WeekViewPagerAdapter(fragmentManager: FragmentManager,val frags:ArrayList<WeekFragment>):FragmentPagerAdapter(fragmentManager, BEHAVIOR_SET_USER_VISIBLE_HINT) {
-    override fun getCount() = frags.size
-
-    override fun getItem(position: Int) = frags[position]
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/MyQrCodeActivity.kt b/app/src/main/java/com/dollearn/student/ui/discovery/MyQrCodeActivity.kt
deleted file mode 100644
index 9a72fb8..0000000
--- a/app/src/main/java/com/dollearn/student/ui/discovery/MyQrCodeActivity.kt
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.dollearn.student.ui.discovery
-
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.dollearn.student.R
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.Student
-import com.dollearn.student.network.request
-import com.dollearn.student.ui.TransparentStatusBarActivity
-import com.dollearn.student.ui.discovery.adapter.QrAdapter
-import kotlinx.android.synthetic.main.activity_my_qr.*
-
-class MyQrCodeActivity : TransparentStatusBarActivity() {
-    override fun setContentView() = R.layout.activity_my_qr
-
-    private val list = arrayListOf<Student>()
-    private val adapter = QrAdapter(list)
-
-    override fun initClick() {
-    }
-
-    override fun initView() {
-        rv_student.layoutManager = LinearLayoutManager(this)
-        rv_student.adapter = adapter
-        getTip()
-        getData()
-    }
-
-    private fun getData() {
-        HttpManager.listOfStu(3,1).request(this){ _, data->
-            list.clear()
-            list.addAll(data?: arrayListOf())
-            adapter.notifyDataSetChanged()
-        }
-    }
-
-    private fun getTip(){
-        HttpManager.getH5(6).request(this){_,data->
-            tv_tip.text = data
-        }
-    }
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/ShopListActivity.kt b/app/src/main/java/com/dollearn/student/ui/discovery/ShopListActivity.kt
deleted file mode 100644
index e1531b4..0000000
--- a/app/src/main/java/com/dollearn/student/ui/discovery/ShopListActivity.kt
+++ /dev/null
@@ -1,206 +0,0 @@
-package com.dollearn.student.ui.discovery
-
-import android.Manifest
-import android.view.animation.AnimationUtils
-import androidx.recyclerview.widget.LinearLayoutManager
-import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.myToast
-import cn.sinata.xldutils.visible
-import com.amap.api.location.AMapLocationListener
-import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.CommonData
-import com.dollearn.student.network.entity.ShopListBean
-import com.dollearn.student.network.request
-import com.dollearn.student.ui.TransparentStatusBarActivity
-import com.dollearn.student.ui.discovery.adapter.ShopAdapter
-import com.dollearn.student.ui.home.adapter.OpenCityAdapter
-import com.dollearn.student.utils.AMapKit
-import com.dollearn.student.utils.Const
-import com.dollearn.student.utils.event.EmptyEvent
-import com.dollearn.student.utils.extention.clickDelay
-import com.dollearn.student.utils.extention.getInitial
-import com.tbruyelle.rxpermissions2.RxPermissions
-import kotlinx.android.synthetic.main.activity_shop_list.*
-import org.greenrobot.eventbus.EventBus
-import org.jetbrains.anko.startActivity
-import org.jetbrains.anko.textColorResource
-
-/**
- * 万俊杰:现在直接从首页banner进门店详情,门店列表暂时可以先不做,没得入口了
- */
-class ShopListActivity : TransparentStatusBarActivity() {
-    override fun setContentView() = R.layout.activity_shop_list
-
-    private val list = arrayListOf<ShopListBean>()
-    private val adapter = ShopAdapter(list)
-    private var cityCode:String? = null
-    private var distanceSort: Int? = null //1=升序/2=降序
-    private var search:String? = null
-
-    private val index = arrayListOf(
-        "A", "B", "C", "D", "E", "F", "G", "H", "I",
-        "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
-    )
-    //筛选条件
-    private val cityList = arrayListOf<CommonData>() //展示数据源(搜索后过滤)
-    private val cityAdapter = OpenCityAdapter(cityList)
-
-    override fun initClick() {
-        tv_search.clickDelay {
-            val s = et_search.text.toString()
-            search = if (s.isNullOrEmpty()) null else s
-            refreshLayout.autoRefresh()
-        }
-        cityAdapter.setOnItemClickListener { view, position ->
-            cb_city.isChecked = false
-            cityCode = cityList[position].code
-            cb_city.text = cityList[position].name
-            refreshLayout.autoRefresh()
-        }
-        tv_current.setOnClickListener {
-            if (WeparkApplication.cityCode.isNotEmpty()){
-                cb_city.isChecked = false
-                cityCode = WeparkApplication.cityCode
-                cb_city.text = WeparkApplication.cityName
-                refreshLayout.autoRefresh()
-            }
-        }
-        tv_refresh.setOnClickListener {
-            val subscribe =
-                RxPermissions(this).request(Manifest.permission.ACCESS_FINE_LOCATION)
-                    .subscribe {
-                        if (it){
-                            AMapKit.initLocation(this, AMapLocationListener {
-                                WeparkApplication.lat = it.latitude
-                                WeparkApplication.lon = it.longitude
-                                WeparkApplication.province = it.province
-                                WeparkApplication.provinceCode = "${it.adCode.substring(0,3)}000"
-                                WeparkApplication.cityName = it.city
-                                WeparkApplication.cityCode = "${it.adCode.substring(0,4)}00"
-                                tv_current.text = it.city
-                            })
-                        }else
-                            myToast("没有定位权限")
-                    }
-        }
-        adapter.setOnItemClickListener { _, position ->
-            startActivity<ShopDetailActivity>("id" to list[position].storeId)
-        }
-        cb_city.setOnCheckedChangeListener { _, isChecked ->
-            if (!isChecked)
-                closeFilter()
-            else{
-                bg_filter.visible()
-                cl_city.visible()
-                val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.popup_in_from_top)
-                cl_city.startAnimation(loadAnimation)
-            }
-        }
-
-        tv_distance.clickDelay {
-            tv_distance.textColorResource = R.color.colorPrimary
-            if (distanceSort == null || distanceSort == 2)
-                distanceSort = 1
-            else
-                distanceSort = 2
-            tv_distance.setCompoundDrawablesRelativeWithIntrinsicBounds(
-                0,
-                0,
-                if (distanceSort ==1) R.mipmap.sort_asc else R.mipmap.sort_desc,
-                0
-            )
-            refreshLayout.autoRefresh()
-        }
-
-        bg_filter.setOnClickListener {
-            if (cb_city.isChecked)
-                cb_city.isChecked = false
-        }
-
-        tv_location.setOnClickListener {
-            RxPermissions(this).request(Manifest.permission.ACCESS_FINE_LOCATION).subscribe {
-                if (it){
-                    AMapKit.initLocation(this, AMapLocationListener {
-                        WeparkApplication.lat = it.latitude
-                        WeparkApplication.lon = it.longitude
-                        EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_USER)) //定位更新后 刷新福利页数据 因为商品推荐是根据经纬度来的
-                        WeparkApplication.province = it.province
-                        WeparkApplication.provinceCode = "${it.adCode.substring(0, 3)}000"
-                        WeparkApplication.cityName = it.city
-                        WeparkApplication.cityCode = "${it.adCode.substring(0, 4)}00"
-                        tv_distance.visible()
-                        cb_city.visible()
-                        ll_location.gone()
-                    })
-                }
-            }
-        }
-    }
-
-    override fun initView() {
-        if (RxPermissions(this).isGranted(Manifest.permission.ACCESS_FINE_LOCATION)){
-            tv_distance.visible()
-            cb_city.visible()
-            ll_location.gone()
-        }else{
-            tv_distance.gone()
-            cb_city.gone()
-            ll_location.visible()
-        }
-        rv_shop.layoutManager = LinearLayoutManager(this)
-        rv_shop.adapter = adapter
-        refreshLayout.setOnRefreshListener {
-            getData()
-        }
-        getData()
-        //筛选
-        rv_city.layoutManager = LinearLayoutManager(this)
-        rv_city.adapter = cityAdapter
-        side_bar.setOnSelectIndexItemListener { index ->
-            (0 until cityList.size).forEach {
-                if (index == cityList[it].name?.getInitial()) {
-                    val manager = rv_city.layoutManager as LinearLayoutManager
-                    manager.scrollToPositionWithOffset(it, 0)
-                    return@setOnSelectIndexItemListener
-                }
-            }
-        }
-        //获取城市筛选项数据
-        getCity()
-    }
-
-    private fun getData(){
-        HttpManager.storeList(cityCode,distanceSort,search).request(this,success = {_,data->
-            refreshLayout.finishRefresh()
-            list.clear()
-            list.addAll(data?: arrayListOf())
-            adapter.notifyDataSetChanged()
-        }){_,_->
-            refreshLayout.finishRefresh(false)
-        }
-    }
-
-    private fun getCity(){
-        HttpManager.queryAllCity().request(this){_,data->
-            data?.let {
-                cityList.clear()
-                index.forEach { index->
-                    it.filter { it.name.isNotEmpty() }.forEach {
-                        if (index == it.name.getInitial()){
-                            cityList.add(it)
-                        }
-                    }
-                }
-                adapter.notifyDataSetChanged()
-            }
-        }
-    }
-
-    private fun closeFilter(){
-        bg_filter.gone()
-        cl_city.gone()
-    }
-
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/StudentManageActivity.kt b/app/src/main/java/com/dollearn/student/ui/discovery/StudentManageActivity.kt
deleted file mode 100644
index 4218fe8..0000000
--- a/app/src/main/java/com/dollearn/student/ui/discovery/StudentManageActivity.kt
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.dollearn.student.ui.discovery
-
-import android.app.Activity
-import android.content.Intent
-import androidx.core.os.bundleOf
-import androidx.recyclerview.widget.LinearLayoutManager
-import cn.sinata.xldutils.activity.BaseActivity
-import cn.sinata.xldutils.utils.showAllowingStateLoss
-import com.dollearn.student.R
-import com.dollearn.student.dialog.ChooseStudentDialog
-import com.dollearn.student.dialog.TipDialog
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.Student
-import com.dollearn.student.network.request
-import com.dollearn.student.ui.TransparentStatusBarActivity
-import com.dollearn.student.ui.discovery.adapter.StuManageAdapter
-import com.dollearn.student.ui.home.AddStudentActivity
-import com.dollearn.student.utils.interfaces.StringCallback
-import kotlinx.android.synthetic.main.dialog_choose_student.*
-import org.jetbrains.anko.startActivityForResult
-import org.jetbrains.anko.support.v4.startActivityForResult
-
-class StudentManageActivity : TransparentStatusBarActivity() {
-    override fun setContentView() = R.layout.activity_stu_manage
-
-    private val list = arrayListOf<Student>()
-    private val adapter = StuManageAdapter(list)
-    override fun initClick() {
-        tv_add_student.setOnClickListener {
-            startActivityForResult<AddStudentActivity>(2,"type" to AddStudentActivity.TYPE_ADD_MATCH)
-        }
-        adapter.delCallback = object :StringCallback{
-            override fun onResult(rst: String) {
-                val tipDialog = TipDialog()
-                tipDialog.arguments = bundleOf("msg" to "是否确认删除该人员?")
-                tipDialog.setCallback(object : TipDialog.OnClickCallback{
-                    override fun onOk() {
-                        HttpManager.delParticipant(list[rst.toInt()].id?:"",list[rst.toInt()].isStudent).request(this@StudentManageActivity){_,_->
-                            setResult(Activity.RESULT_OK)
-                            list.removeAt(rst.toInt())
-                            adapter.notifyDataSetChanged()
-                        }
-                    }
-
-                    override fun onCancel() {
-                    }
-                })
-                tipDialog.showAllowingStateLoss(supportFragmentManager,"del")
-            }
-        }
-    }
-
-    override fun initView() {
-        rv_student.layoutManager = LinearLayoutManager(this)
-        rv_student.adapter = adapter
-        getStudent()
-
-    }
-
-    fun getStudent(){
-        HttpManager.listOfStu(3,null).request(this){ _, data->
-            list.clear()
-            list.addAll(data?: arrayListOf())
-            adapter.notifyDataSetChanged()
-        }
-    }
-
-    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
-        super.onActivityResult(requestCode, resultCode, data)
-        if (resultCode == RESULT_OK){
-            getStudent()
-        }
-    }
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/QrAdapter.kt b/app/src/main/java/com/dollearn/student/ui/discovery/adapter/QrAdapter.kt
deleted file mode 100644
index ebe0196..0000000
--- a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/QrAdapter.kt
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.dollearn.student.ui.discovery.adapter
-
-import android.view.View
-import android.widget.ImageView
-import androidx.core.os.bundleOf
-import cn.sinata.xldutils.activity.BaseActivity
-import cn.sinata.xldutils.adapter.HFRecyclerAdapter
-import cn.sinata.xldutils.adapter.util.ViewHolder
-import cn.sinata.xldutils.utils.SpanBuilder
-import cn.sinata.xldutils.utils.showAllowingStateLoss
-import com.dollearn.student.R
-import com.dollearn.student.dialog.CheckQrCodeDialog
-import com.dollearn.student.network.entity.Student
-import com.dollearn.student.utils.extention.clickDelay
-import com.dollearn.student.utils.getQRcodeImg
-import java.util.ArrayList
-
-class QrAdapter(list: ArrayList<Student>):HFRecyclerAdapter<Student>(list, R.layout.item_stu_qr) {
-    override fun onBind(holder: ViewHolder, position: Int, data: Student) {
-        val name = "姓名:${data.name}"
-        holder.setText(R.id.tv_name,SpanBuilder(name).color(context,3,name.length,R.color.textColor).bold(3,name.length).build())
-        val age = "年龄:${data.age}岁"
-        holder.setText(R.id.tv_age,SpanBuilder(age).color(context,3,age.length,R.color.textColor).bold(3,age.length).build())
-        val content = "{\"id\":${data.id},\"isStudent\":${data.isStudent}}"
-        holder.bind<ImageView>(R.id.iv_qr).setImageBitmap(getQRcodeImg(context, content))
-        holder.bind<View>(R.id.clicker_code).clickDelay {
-            val dialog = CheckQrCodeDialog()
-            dialog.arguments = bundleOf("qrinfo" to content,"title" to data.name)
-            dialog.showAllowingStateLoss((context as BaseActivity).supportFragmentManager, "checkqr")
-        }
-    }
-
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/StuManageAdapter.kt b/app/src/main/java/com/dollearn/student/ui/discovery/adapter/StuManageAdapter.kt
deleted file mode 100644
index a6f17dc..0000000
--- a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/StuManageAdapter.kt
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.dollearn.student.ui.discovery.adapter
-
-import android.view.View
-import android.widget.ImageView
-import androidx.core.os.bundleOf
-import cn.sinata.xldutils.activity.BaseActivity
-import cn.sinata.xldutils.adapter.HFRecyclerAdapter
-import cn.sinata.xldutils.adapter.util.ViewHolder
-import cn.sinata.xldutils.utils.SpanBuilder
-import cn.sinata.xldutils.utils.showAllowingStateLoss
-import com.dollearn.student.R
-import com.dollearn.student.dialog.CheckQrCodeDialog
-import com.dollearn.student.dialog.EditUserDialog
-import com.dollearn.student.network.entity.Student
-import com.dollearn.student.ui.discovery.StudentManageActivity
-import com.dollearn.student.ui.home.AddStudentActivity
-import com.dollearn.student.utils.extention.clickDelay
-import com.dollearn.student.utils.getQRcodeImg
-import com.dollearn.student.utils.interfaces.StringCallback
-import org.jetbrains.anko.startActivityForResult
-import java.util.ArrayList
-
-class StuManageAdapter(list: ArrayList<Student>) :HFRecyclerAdapter<Student>(list, R.layout.item_stu_manage){
-    var delCallback:StringCallback? = null
-
-    override fun onBind(holder: ViewHolder, position: Int, data: Student) {
-        val name = "姓名:${data.name}"
-        val age = "年龄:${data.age}岁"
-        val phone = "联系电话:${if (data.phone.isNullOrEmpty()) "" else data.phone}"
-        val idcard = "身份证号:${if (data.idcard.isNullOrEmpty()) "" else data.idcard}"
-        holder.setText(R.id.tv_name,SpanBuilder(name).color(context,0,3,R.color.textColor66).bold(3,name.length).build())
-        holder.setText(R.id.tv_age,SpanBuilder(age).color(context,0,3,R.color.textColor66).bold(3,age.length).build())
-        holder.setText(R.id.tv_phone,SpanBuilder(phone).color(context,0,5,R.color.textColor66).bold(5,phone.length).build())
-        holder.setText(R.id.tv_idCard,SpanBuilder(idcard).color(context,0,5,R.color.textColor66).bold(5,idcard.length).build())
-        val content = "{\"id\":${data.id},\"isStudent\":${data.isStudent}}"
-        holder.bind<ImageView>(R.id.iv_code).apply {
-            setImageBitmap(getQRcodeImg(context, content))
-            clickDelay {
-                val dialog = CheckQrCodeDialog()
-                dialog.arguments = bundleOf("qrinfo" to content,"title" to data.name)
-                dialog.showAllowingStateLoss((context as BaseActivity).supportFragmentManager, "checkqr")
-            }
-        }
-        holder.bind<View>(R.id.tv_real_name).apply {
-            visibility = if (data.idcard.isNullOrEmpty()) View.VISIBLE else View.GONE
-            setOnClickListener {
-                //去实名
-                (context as StudentManageActivity).startActivityForResult<AddStudentActivity>(1,"type" to AddStudentActivity.TYPE_EDIT_WORLD, "user" to data)
-            }
-        }
-        holder.bind<View>(R.id.iv_del).setOnClickListener {
-            delCallback?.onResult(position.toString())
-        }
-
-        holder.bind<View>(R.id.iv_edit).setOnClickListener {
-            EditUserDialog.show((context as BaseActivity).supportFragmentManager,data.id?:"",data.headImg?:"",data.height?:"",data.weight?:"",data.phone?:"",object :
-                StringCallback {
-                override fun onResult(rst: String) {
-                    (context as StudentManageActivity).apply {
-                        getStudent()
-                    }
-                }
-            },true)
-        }
-    }
-
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceActivity.kt
index 4faa023..81d464e 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceActivity.kt
@@ -18,7 +18,6 @@
 import com.dollearn.student.network.request
 import com.dollearn.student.ui.TransparentStatusBarActivity
 import kotlinx.android.synthetic.main.activity_listen.*
-import org.jetbrains.anko.startActivity
 
 class ChooseVoiceActivity:TransparentStatusBarActivity() {
     override fun setContentView() = R.layout.activity_listen
@@ -56,7 +55,7 @@
     fun next(){
         if (view_pager.currentItem == fragments.lastIndex){
             handler?.removeMessages(0)
-            ResultActivity.startResult(this,day,week,season,1,totalCount,rightCount,data!!.data.integral,time,data!!.data.id)
+            ResultActivity.startResult(this,day,week,season,2,totalCount,rightCount,data!!.data.integral,time,data!!.data.id)
             finish()
         }else{
             (fragments[view_pager.currentItem+1] as ChooseVoiceFragment).recover()
@@ -117,7 +116,9 @@
 
     private fun recover(){
         HttpManager.teamSchedule(day,week,2).request(this){_,data->
-//            view_pager.setCurrentItem(data?.topicIds?.size?:1,false)
+            view_pager.setCurrentItem((data?.schedule?:1)-1,false)
+            if (view_pager.currentItem != 0)
+                tv_last.visible()
             totalCount = data?.answerNumber?:0
             rightCount = data?.correctNumber?:0
         }
@@ -132,7 +133,7 @@
                     finish()
                 else{
                     val list = (data?.subjectList?: arrayListOf()).subList(0,view_pager.currentItem).flatMap { it }
-                    HttpManager.exitLearning(totalCount,rightCount,day,week,2,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@ChooseVoiceActivity){ _, _->
+                    HttpManager.exitLearning(view_pager.currentItem,season,time,totalCount,rightCount,day,week,2,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@ChooseVoiceActivity){ _, _->
                         finish()
                     }
                 }
diff --git a/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt
index 7c1086e..d72618f 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/ChooseVoiceFragment.kt
@@ -9,10 +9,12 @@
 import androidx.core.os.bundleOf
 import cn.sinata.xldutils.fragment.BaseFragment
 import cn.sinata.xldutils.gone
+import cn.sinata.xldutils.utils.SPUtils
 import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.visible
 import com.dollearn.student.R
 import com.dollearn.student.utils.AudioUtils
+import com.dollearn.student.utils.Const
 import com.dollearn.student.utils.extention.clickDelay
 import kotlinx.android.synthetic.main.fragment_choose_voice.*
 import org.jetbrains.anko.backgroundResource
@@ -27,6 +29,15 @@
 
     private val PLAY_VOICE = 1
     private val TO_NEXT = 10
+
+    private val PLAY_ERROR = 3
+    private val PLAY_RIGHT = 4
+
+    private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) }
+    private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) }
+
+    private var rightPlaying = false
+    private var errorPlaying = false
 
     private var voiceList = arrayListOf<String>() //本题音频,每题有3个音频
     private val player by lazy { AudioUtils() }
@@ -45,6 +56,8 @@
 
     private val act by lazy { (requireActivity() as ChooseVoiceActivity) }
 
+    private var nowVoiceView:View? = null
+
     override fun onFirstVisibleToUser() {
         player.setOnAudioStatusUpdateListener(this)
         player.stopPlayMusic()
@@ -58,6 +71,14 @@
                     TO_NEXT->{
                         if (isAdded&&!playing)
                             (requireActivity() as ChooseVoiceActivity).next()
+                    }
+                    PLAY_RIGHT->{
+                        rightPlaying = true
+                        player.startPlayMusic(requireContext(),rightVoice)
+                    }
+                    PLAY_ERROR->{
+                        errorPlaying = true
+                        player.startPlayMusic(requireContext(),errorVoice)
                     }
                 }
             }
@@ -98,57 +119,81 @@
         rl_check_1.clickDelay {
             if (playing)
                 return@clickDelay
-            dot_1.visible()
-            act.totalCount++
-            if (voiceList[0] == data!!.subjectList[group][currentIndex].correct){
-                act.rightCount++
-                data!!.subjectList[group][currentIndex].completed = true
-                motion.transitionToEnd()
-                cl_voice1.callOnClick()
-            }else{
-                iv_error_1.visible()
-                dot_1.postDelayed({
-                    iv_error_1.gone()
-                    dot_1.gone()
-                },2000)
-            }
+            if (rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE){
+                dot_1.visible()
+                act.totalCount++
+                if (voiceList[0] == data!!.subjectList[group][currentIndex].correct){
+                    act.rightCount++
+                    motion.transitionToEnd()
+                    nowVoiceView = cl_voice1
+                    handler?.sendEmptyMessage(PLAY_RIGHT)
+                }else{
+                    handler?.sendEmptyMessage(PLAY_ERROR)
+                    iv_error_1.visible()
+                    dot_1.postDelayed({
+                        iv_error_1.gone()
+                        dot_1.gone()
+                        rl_check_1.gone()
+                        rl_check_2.gone()
+                        rl_check_3.gone()
+                    },2000)
+                }
+            }else
+                myToast("请听完题")
         }
 
         rl_check_2.clickDelay {
             if (playing)
                 return@clickDelay
-            dot_2.visible()
-            act.totalCount++
-            if (voiceList[1] == data!!.subjectList[group][currentIndex].correct){
-                act.rightCount++
-                data!!.subjectList[group][currentIndex].completed = true
-                motion.transitionToEnd()
-                cl_voice2.callOnClick()
-            }else{
-                iv_error_2.visible()
-                dot_1.postDelayed({
-                    dot_2.gone()
-                    iv_error_2.gone()
-                },2000)
-            }
+            if (rl_check_1.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE) {
+                dot_2.visible()
+                act.totalCount++
+                if (voiceList[1] == data!!.subjectList[group][currentIndex].correct){
+                    act.rightCount++
+                    motion.transitionToEnd()
+                    nowVoiceView = cl_voice2
+                    handler?.sendEmptyMessage(PLAY_RIGHT)
+                }else{
+
+                    handler?.sendEmptyMessage(PLAY_ERROR)
+                    iv_error_2.visible()
+                    dot_1.postDelayed({
+                        dot_2.gone()
+                        iv_error_2.gone()
+                        rl_check_1.gone()
+                        rl_check_2.gone()
+                        rl_check_3.gone()
+                    },2000)
+                }
+            }else
+                myToast("请听完题")
+
         }
         rl_check_3.clickDelay {
             if (playing)
                 return@clickDelay
-            dot_3.visible()
-            act.totalCount++
-            if (voiceList[2] == data!!.subjectList[group][currentIndex].correct){
-                data!!.subjectList[group][currentIndex].completed = true
-                act.rightCount++
-                motion.transitionToEnd()
-                cl_voice3.callOnClick()
-            }else{
-                iv_error_3.visible()
-                dot_1.postDelayed({
-                    iv_error_3.gone()
-                    dot_3.gone()
-                },2000)
-            }
+            if (rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE) {
+                dot_3.visible()
+                act.totalCount++
+                if (voiceList[2] == data!!.subjectList[group][currentIndex].correct){
+                    act.rightCount++
+                    nowVoiceView = cl_voice3
+                    handler?.sendEmptyMessage(PLAY_RIGHT)
+                    motion.transitionToEnd()
+                }else{
+                    handler?.sendEmptyMessage(PLAY_ERROR)
+                    iv_error_3.visible()
+                    dot_1.postDelayed({
+                        iv_error_3.gone()
+                        dot_3.gone()
+                        rl_check_1.gone()
+                        rl_check_2.gone()
+                        rl_check_3.gone()
+                    },2000)
+                }
+            }else
+                myToast("请听完题")
+
         }
 
         cl_voice_end_1.clickDelay {
@@ -292,40 +337,42 @@
 
     override fun onStartPlay() {
         playing = true
-        if (voiceIndex == 0){
-            iv1_1.gone()
-            iv2_1.gone()
-            iv_playing_1.visible()
-        }
-        if (voiceIndex == 1){
-            iv1_2.gone()
-            iv2_2.gone()
-            iv_playing_2.visible()
-        }
-        if (voiceIndex == 2){
-            iv1_3.gone()
-            iv2_3.gone()
-            iv_playing_3.visible()
-        }
-        if (voiceIndex == 3){
-            iv1_1_end.gone()
-            iv2_1_end.gone()
-            iv_playing_1_end.visible()
-        }
-        if (voiceIndex == 4){
-            iv1_2_end.gone()
-            iv2_2_end.gone()
-            iv_playing_2_end.visible()
-        }
-        if (voiceIndex == 5){
-            iv1_3_end.gone()
-            iv2_3_end.gone()
-            iv_playing_3_end.visible()
-        }
-        if (voiceIndex == 6){
-            iv1_4_end.gone()
-            iv2_4_end.gone()
-            iv_playing_4_end.visible()
+        if (!errorPlaying&&!rightPlaying){
+            if (voiceIndex == 0){
+                iv1_1.gone()
+                iv2_1.gone()
+                iv_playing_1.visible()
+            }
+            if (voiceIndex == 1){
+                iv1_2.gone()
+                iv2_2.gone()
+                iv_playing_2.visible()
+            }
+            if (voiceIndex == 2){
+                iv1_3.gone()
+                iv2_3.gone()
+                iv_playing_3.visible()
+            }
+            if (voiceIndex == 3){
+                iv1_1_end.gone()
+                iv2_1_end.gone()
+                iv_playing_1_end.visible()
+            }
+            if (voiceIndex == 4){
+                iv1_2_end.gone()
+                iv2_2_end.gone()
+                iv_playing_2_end.visible()
+            }
+            if (voiceIndex == 5){
+                iv1_3_end.gone()
+                iv2_3_end.gone()
+                iv_playing_3_end.visible()
+            }
+            if (voiceIndex == 6){
+                iv1_4_end.gone()
+                iv2_4_end.gone()
+                iv_playing_4_end.visible()
+            }
         }
     }
 
@@ -379,5 +426,19 @@
                 showSubImage()
             }
         }
+
+        if (rightPlaying){
+            rightPlaying = false
+            data!!.subjectList[group][currentIndex].completed = true
+            nowVoiceView?.callOnClick()
+        }
+        if (errorPlaying)
+            errorPlaying = false
     }
+
+    override fun onPause() {
+        super.onPause()
+        player.stopPlayMusic()
+    }
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/ui/home/DailyFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/DailyFragment.kt
index 2a47c06..b305906 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/DailyFragment.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/DailyFragment.kt
@@ -5,12 +5,17 @@
 import android.widget.TextView
 import androidx.core.os.bundleOf
 import cn.sinata.xldutils.fragment.BaseFragment
+import cn.sinata.xldutils.utils.myToast
+import cn.sinata.xldutils.utils.showAllowingStateLoss
 import com.dollearn.student.R
+import com.dollearn.student.dialog.TipDialog
+import com.dollearn.student.network.Apis
 import com.dollearn.student.network.HttpManager
 import com.dollearn.student.network.requestByF
 import com.dollearn.student.utils.extention.clickDelay
 import kotlinx.android.synthetic.main.fragment_daily.*
 import org.jetbrains.anko.backgroundResource
+import org.jetbrains.anko.support.v4.browse
 import org.jetbrains.anko.support.v4.startActivityForResult
 import org.jetbrains.anko.support.v4.toast
 
@@ -34,33 +39,61 @@
         getProgress()
         cl_1.clickDelay {
             showDialog("加载题目...")
-            HttpManager.listenSelectPicture(season, week, day).requestByF(this){_,data->
+            HttpManager.listenSelectPicture(season, week, day).requestByF(this,false, {_,data->
                 startActivityForResult<ListenActivity>(1,"data" to data,"day" to day,"week" to week,"season" to season)
+            }){_,msg->
+                handleError(msg)
             }
         }
         cl_2.clickDelay {
             showDialog("加载题目...")
-            HttpManager.pictureSelectVoice(season, week, day).requestByF(this){_,data->
+            HttpManager.pictureSelectVoice(season, week, day).requestByF(this,false, {_,data->
                 startActivityForResult<ChooseVoiceActivity>(1,"data" to data,"day" to day,"week" to week,"season" to season)
+            }){_,msg->
+                handleError(msg)
             }
         }
         cl_3.clickDelay {
             showDialog("加载题目...")
-            HttpManager.induceExclude(season, week, day).requestByF(this){_,data->
+            HttpManager.induceExclude(season, week, day).requestByF(this,false, {_,data->
                 startActivityForResult<IncludeActivity>(1,"data" to data,"day" to day,"week" to week,"season" to season)
+            }){_,msg->
+                handleError(msg)
             }
         }
         cl_4.clickDelay {
             showDialog("加载题目...")
-            HttpManager.questionsAndAnswers(season, week, day).requestByF(this){_,data->
+            HttpManager.questionsAndAnswers(season, week, day).requestByF(this,false, {_,data->
                 startActivityForResult<QAActivity>(1,"data" to data,"day" to day,"week" to week,"season" to season)
+            }){_,msg->
+                handleError(msg)
             }
         }
         cl_5.clickDelay {
             showDialog("加载题目...")
-            HttpManager.pictureMateVoice(season, week, day).requestByF(this){_,data->
+            HttpManager.pictureMateVoice(season, week, day).requestByF(this,false,{_,data->
                 startActivityForResult<MatchActivity>(1,"data" to data,"day" to day,"week" to week,"season" to season)
+            }){_,msg->
+                handleError(msg)
             }
+        }
+    }
+
+    private fun handleError(msg:String){
+        if (msg.contains("会员")){
+            val tipDialog = TipDialog()
+            tipDialog.arguments = bundleOf("msg" to msg,"ok" to "成为会员")
+            tipDialog.setCallback(object :TipDialog.OnClickCallback{
+                override fun onOk() {
+                    browse(Apis.SHARE_URL,true)
+                }
+
+                override fun onCancel() {
+                }
+            })
+            tipDialog.showAllowingStateLoss(childFragmentManager,"vip")
+        }else{
+            myToast(msg)
         }
     }
 
@@ -92,11 +125,7 @@
 
     private fun formatProgress(progress:Int,tv:TextView){
         tv.text =  when(progress){
-            -1->{
-                tv.backgroundResource = R.drawable.bg_grey_9dp
-               "未开始"
-            }
-            0->{
+            -1, 0->{
                 tv.backgroundResource = R.drawable.bg_red_9dp
                 "未完成"
             }
@@ -105,7 +134,8 @@
                 "已完成"
             }
             else->{
-                "剩余:${100-progress}%"
+                tv.backgroundResource = R.drawable.bg_pink_9dp
+                "剩余:${progress}%"
             }
         }
     }
diff --git a/app/src/main/java/com/dollearn/student/ui/home/FieldActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/FieldActivity.kt
index 436be11..9eab576 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/FieldActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/FieldActivity.kt
@@ -11,7 +11,7 @@
 import cn.sinata.xldutils.visible
 import com.amap.api.location.AMapLocationListener
 import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.DollearnApplication
 import com.dollearn.student.dialog.ChooseTimeDialog
 import com.dollearn.student.network.HttpManager
 import com.dollearn.student.network.entity.CommonData
@@ -85,10 +85,10 @@
             getShop()
         }
         tv_current.setOnClickListener {
-            if (WeparkApplication.cityCode.isNotEmpty()){
+            if (DollearnApplication.cityCode.isNotEmpty()){
                 cb_city.isChecked = false
-                cityCode = WeparkApplication.cityCode
-                cb_city.text = WeparkApplication.cityName
+                cityCode = DollearnApplication.cityCode
+                cb_city.text = DollearnApplication.cityName
                 shop = null
                 refreshLayout.autoRefresh()
                 getShop()
@@ -100,12 +100,12 @@
                     .subscribe {
                         if (it){
                             AMapKit.initLocation(this, AMapLocationListener {
-                                WeparkApplication.lat = it.latitude
-                                WeparkApplication.lon = it.longitude
-                                WeparkApplication.province = it.province
-                                WeparkApplication.provinceCode = "${it.adCode.substring(0,3)}000"
-                                WeparkApplication.cityName = it.city
-                                WeparkApplication.cityCode = "${it.adCode.substring(0,4)}00"
+                                DollearnApplication.lat = it.latitude
+                                DollearnApplication.lon = it.longitude
+                                DollearnApplication.province = it.province
+                                DollearnApplication.provinceCode = "${it.adCode.substring(0,3)}000"
+                                DollearnApplication.cityName = it.city
+                                DollearnApplication.cityCode = "${it.adCode.substring(0,4)}00"
                                 tv_current.text = it.city
                             })
                         }else
@@ -236,7 +236,7 @@
     }
 
     override fun initView() {
-        shop = WeparkApplication.storeId
+        shop = DollearnApplication.storeId
         rv_course.layoutManager = LinearLayoutManager(this)
         rv_course.adapter = adapter
         refreshLayout.setOnRefreshListener {
@@ -262,7 +262,7 @@
         }
         rv_filter.layoutManager = LinearLayoutManager(this)
         rv_filter.adapter = filterAdapter
-        tv_current.text = SpanBuilder("当前城市:${WeparkApplication.cityName}").color(this,0,5,R.color.textColor).build()
+        tv_current.text = SpanBuilder("当前城市:${DollearnApplication.cityName}").color(this,0,5,R.color.textColor).build()
         //筛选项数据
         getCity()
         getTypes()
@@ -316,7 +316,7 @@
     }
 
     private fun getShop(){
-        HttpManager.queryStoreLists(WeparkApplication.lat,WeparkApplication.lon,cityCode).request(this){_,data->
+        HttpManager.queryStoreLists(DollearnApplication.lat,DollearnApplication.lon,cityCode).request(this){ _, data->
             storeList.clear()
             storeList.add(CommonData(name = "全部"))
             storeList.addAll(data?: arrayListOf())
diff --git a/app/src/main/java/com/dollearn/student/ui/home/IncludeActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/IncludeActivity.kt
index 48e1bef..63c7a13 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/IncludeActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/IncludeActivity.kt
@@ -14,6 +14,7 @@
 import com.dollearn.student.R
 import com.dollearn.student.dialog.TipDialog
 import com.dollearn.student.network.HttpManager
+import com.dollearn.student.network.entity.Subject
 import com.dollearn.student.network.entity.SubjectBean
 import com.dollearn.student.network.request
 import com.dollearn.student.ui.TransparentStatusBarActivity
@@ -116,7 +117,9 @@
 
     private fun recover(){
         HttpManager.teamSchedule(day,week,3).request(this){_,data->
-            view_pager.setCurrentItem(data?.topicIds?.size?:0,false)
+            view_pager.setCurrentItem((data?.schedule?:1)-1,false)
+            if (view_pager.currentItem != 0)
+                tv_last.visible()
             totalCount = data?.answerNumber?:0
             rightCount = data?.correctNumber?:0
         }
@@ -130,8 +133,16 @@
                 if (view_pager.currentItem == 0)
                     finish()
                 else{
-                    val list = (data?.subjectList?: arrayListOf()).flatMap { it }.subList(0,view_pager.currentItem)
-                    HttpManager.exitLearning(totalCount,rightCount,day,week,3,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@IncludeActivity){ _, _->
+                    val list = (data?.subjectList?.subList(0,view_pager.currentItem))
+                    val arrayListOf = arrayListOf<Subject>()
+                    list?.forEach { it ->
+                        it.forEachIndexed { index, subject ->
+                            if (index == 2||index == 4||index == 5){
+                                arrayListOf.add(subject)
+                            }
+                        }
+                    }
+                    HttpManager.exitLearning(view_pager.currentItem,season,time,totalCount,rightCount,day,week,3,data?.data?.id?:"", arrayListOf.joinToString(",") { it.id }).request(this@IncludeActivity){ _, _->
                         finish()
                     }
                 }
diff --git a/app/src/main/java/com/dollearn/student/ui/home/IncludeFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/IncludeFragment.kt
index 8d5fb25..54cee71 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/IncludeFragment.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/IncludeFragment.kt
@@ -4,16 +4,21 @@
 import android.os.Looper
 import android.os.Message
 import android.util.Log
+import android.view.View
 import androidx.constraintlayout.motion.widget.MotionLayout
 import androidx.core.os.bundleOf
+import cn.sinata.xldutils.activity.ImagePagerActivity
 import cn.sinata.xldutils.fragment.BaseFragment
 import cn.sinata.xldutils.gone
+import cn.sinata.xldutils.utils.SPUtils
 import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.visible
 import com.dollearn.student.R
 import com.dollearn.student.utils.AudioUtils
+import com.dollearn.student.utils.Const
 import com.dollearn.student.utils.extention.clickDelay
 import kotlinx.android.synthetic.main.fragment_include.*
+import org.jetbrains.anko.support.v4.startActivity
 
 class IncludeFragment : BaseFragment(), AudioUtils.OnAudioStatusUpdateListener {
     override fun contentViewId() = R.layout.fragment_include
@@ -23,6 +28,15 @@
     private var handler:Handler? = null
     private val PLAY_VOICE = 1
     private val TO_NEXT = 2
+
+    private val PLAY_ERROR = 3
+    private val PLAY_RIGHT = 4
+
+    private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) }
+    private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) }
+
+    private var rightPlaying = false
+    private var errorPlaying = false
 
     private val player by lazy { AudioUtils() }
     private val group by lazy { arguments?.getInt("group")?:0 }
@@ -39,6 +53,8 @@
     private val answerImg = arrayListOf<String>() //随机答案图片
     private var currentImage = 0 //当前作答的题号:2,4,5
 
+    private var nowVoiceView: View? = null
+
     override fun onFirstVisibleToUser() {
         player.setOnAudioStatusUpdateListener(this)
         player.stopPlayMusic()
@@ -53,6 +69,14 @@
                         if (isAdded&&!playing){
                             (requireActivity() as IncludeActivity).next()
                         }
+                    }
+                    PLAY_RIGHT->{
+                        rightPlaying = true
+                        player.startPlayMusic(requireContext(),rightVoice)
+                    }
+                    PLAY_ERROR->{
+                        errorPlaying = true
+                        player.startPlayMusic(requireContext(),errorVoice)
                     }
                 }
             }
@@ -104,11 +128,13 @@
             }
             act.totalCount++
             if (answerImg[0] == subject.img){
+                nowVoiceView = voiceViews[currentImage]
                 act.rightCount++
-                data!!.subjectList[group][currentImage].completed = true
-                voiceViews[currentImage].callOnClick()
+                handler?.sendEmptyMessage(PLAY_RIGHT)
                 motion.transitionToEnd()
+                showResultAnim()
             }else{
+                handler?.sendEmptyMessage(PLAY_ERROR)
                 iv_error_1.visible()
                 iv_error_1.postDelayed({
                     clearAnswerImg()
@@ -123,11 +149,16 @@
             if (!subject.listend||subject.completed){
                 return@clickDelay
             }
+            act.totalCount++
+
             if (answerImg[1] == subject.img){
-                data!!.subjectList[group][currentImage].completed = true
-                voiceViews[currentImage].callOnClick()
+                nowVoiceView = voiceViews[currentImage]
+                act.rightCount++
+                handler?.sendEmptyMessage(PLAY_RIGHT)
                 motion.transitionToEnd()
+                showResultAnim()
             }else{
+                handler?.sendEmptyMessage(PLAY_ERROR)
                 iv_error_2.visible()
                 iv_error_2.postDelayed({
                     clearAnswerImg()
@@ -142,17 +173,40 @@
             if (!subject.listend||subject.completed){
                 return@clickDelay
             }
+            act.totalCount++
+
             if (answerImg[2] == subject.img){
-                data!!.subjectList[group][currentImage].completed = true
-                voiceViews[currentImage].callOnClick()
+                nowVoiceView = voiceViews[currentImage]
+                act.rightCount++
+                handler?.sendEmptyMessage(PLAY_RIGHT)
                 motion.transitionToEnd()
+                showResultAnim()
             }else{
+                handler?.sendEmptyMessage(PLAY_ERROR)
                 iv_error_3.visible()
                 iv_error_3.postDelayed({
                     clearAnswerImg()
                 },3000)
             }
         }
+
+        iv_full_1.clickDelay {
+            startActivity<ImagePagerActivity>("url" to arrayListOf(answerImg[0]))
+        }
+        iv_full_2.clickDelay {
+            startActivity<ImagePagerActivity>("url" to arrayListOf(answerImg[1]))
+
+        }
+        iv_full_3.clickDelay {
+            startActivity<ImagePagerActivity>("url" to arrayListOf(answerImg[2]))
+
+        }
+    }
+
+    private fun showResultAnim(){
+        val v = if (currentImage == 2) result_3 else if (currentImage == 4) result_5 else result_6
+        v.visible()
+        v.postDelayed({v.gone()},3000)
     }
 
     private fun showVoiceEnable(){
@@ -168,13 +222,19 @@
         }
     }
 
+    /**
+     * 答错后重置
+     */
     private fun clearAnswerImg(){
         iv_answer_1.setImageURI("")
         iv_answer_2.setImageURI("")
         iv_answer_3.setImageURI("")
-        iv_3.setImageURI("")
-        iv_5.setImageURI("")
-        iv_6.setImageURI("")
+        if (currentImage == 2)
+            iv_3.setImageURI("")
+        if (currentImage == 4)
+            iv_5.setImageURI("")
+        if (currentImage == 5)
+            iv_6.setImageURI("")
         iv_full_1.gone()
         iv_full_2.gone()
         iv_full_3.gone()
@@ -184,7 +244,24 @@
         data!!.subjectList[group][currentImage].listend = false
     }
 
+    /**
+     * 答对后的重置
+     */
+    private fun hideAnswerImg(){
+        iv_answer_1.setImageURI("")
+        iv_answer_2.setImageURI("")
+        iv_answer_3.setImageURI("")
+        iv_full_1.gone()
+        iv_full_2.gone()
+        iv_full_3.gone()
+        iv_error_1.gone()
+        iv_error_2.gone()
+        iv_error_3.gone()
+    }
+
     private fun showAnswerImg(){
+        if (errorPlaying||rightPlaying)
+            return
         answerImg.shuffle()
         iv_answer_1.setImageURI(answerImg[0])
         iv_answer_2.setImageURI(answerImg[1])
@@ -299,6 +376,8 @@
 
     override fun onStartPlay() {
         playing = true
+        if (errorPlaying||rightPlaying)
+            return
         when(voiceIndex){
             0->{
                 iv1_1.gone()
@@ -357,6 +436,8 @@
                 if (!subject.completed){
                     currentImage = 2
                     showAnswerImg()
+                }else{
+                    hideAnswerImg()
                 }
             }
             3->{
@@ -371,6 +452,8 @@
                 if (!subject.completed){
                     currentImage = 4
                     showAnswerImg()
+                }else{
+                    hideAnswerImg()
                 }
             }
             5->{
@@ -381,11 +464,25 @@
                     currentImage = 5
                     showAnswerImg()
                 }else{
+                    hideAnswerImg()
                     Log.e(TAG,"本题全部答对,3秒后进入下一图")
                     handler?.sendEmptyMessageDelayed(TO_NEXT,3000)
                 }
             }
         }
         showVoiceEnable()
+
+        if (errorPlaying)
+            errorPlaying = false
+        if (rightPlaying) {
+            rightPlaying = false
+            data!!.subjectList[group][currentImage].completed = true
+            nowVoiceView?.callOnClick()
+        }
+    }
+
+    override fun onPause() {
+        super.onPause()
+        player.stopPlayMusic()
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/ui/home/JoinVipActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/JoinVipActivity.kt
index 76470e9..c1e04a3 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/JoinVipActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/JoinVipActivity.kt
@@ -4,7 +4,7 @@
 import cn.sinata.xldutils.callPhone
 import cn.sinata.xldutils.utils.optString
 import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.DollearnApplication
 import com.dollearn.student.dialog.PayDialog
 import com.dollearn.student.network.Apis
 import com.dollearn.student.network.HttpManager
@@ -53,7 +53,7 @@
     }
 
     private fun getFree(){
-        HttpManager.queryStoreFreeBenefit(WeparkApplication.storeId).request(this){_,data->
+        HttpManager.queryStoreFreeBenefit(DollearnApplication.storeId).request(this){ _, data->
             phone = data?.optString("phone")
             data?.optString("img")?.loadLongImage(this,iv_img)
         }
diff --git a/app/src/main/java/com/dollearn/student/ui/home/ListenActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/ListenActivity.kt
index 4535479..479bfd2 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/ListenActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/ListenActivity.kt
@@ -18,7 +18,6 @@
 import com.dollearn.student.network.request
 import com.dollearn.student.ui.TransparentStatusBarActivity
 import kotlinx.android.synthetic.main.activity_listen.*
-import org.jetbrains.anko.startActivity
 
 class ListenActivity:TransparentStatusBarActivity() {
     override fun setContentView() = R.layout.activity_listen
@@ -119,7 +118,9 @@
 
     private fun recover(){
         HttpManager.teamSchedule(day,week,1).request(this){_,data->
-            view_pager.setCurrentItem(data?.topicIds?.size?:0,false)
+            view_pager.setCurrentItem((data?.schedule?:1)-1,false)
+            if (view_pager.currentItem != 0)
+                tv_last.visible()
             totalCount = data?.answerNumber?:0
             rightCount = data?.correctNumber?:0
         }
@@ -134,7 +135,7 @@
                     finish()
                 else{
                     val list = (data?.subjectList?: arrayListOf()).flatMap { it }.subList(0,view_pager.currentItem)
-                    HttpManager.exitLearning(totalCount,rightCount,day,week,1,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@ListenActivity){_,_->
+                    HttpManager.exitLearning(view_pager.currentItem,season,time,totalCount,rightCount,day,week,1,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@ListenActivity){_,_->
                         finish()
                     }
                 }
diff --git a/app/src/main/java/com/dollearn/student/ui/home/ListenFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/ListenFragment.kt
index 0ae0268..9662ece 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/ListenFragment.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/ListenFragment.kt
@@ -10,10 +10,12 @@
 import androidx.core.os.bundleOf
 import cn.sinata.xldutils.fragment.BaseFragment
 import cn.sinata.xldutils.gone
+import cn.sinata.xldutils.utils.SPUtils
 import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.visible
 import com.dollearn.student.R
 import com.dollearn.student.utils.AudioUtils
+import com.dollearn.student.utils.Const
 import com.dollearn.student.utils.extention.clickDelay
 import kotlinx.android.synthetic.main.fragment_listen.*
 import org.jetbrains.anko.imageResource
@@ -26,6 +28,16 @@
     private var handler:Handler? = null
     private val PLAY_VOICE = 1
     private val TO_NEXT = 2
+    private val PLAY_ERROR = 3
+    private val PLAY_RIGHT = 4
+
+    private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) }
+    private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) }
+
+    private var rightPlaying = false
+    private var errorPlaying = false
+    private var playing = false //播放中,不能有任何操作
+
 
     private var correctVoice = "" //本题音频
     private val player by lazy { AudioUtils() }
@@ -34,7 +46,7 @@
     private val data by lazy {
         (requireActivity() as ListenActivity).data
     }
-    private var hasListen = true //要听一次才能作答 true:已经听完题目
+    private var hasListen = false //要听一次才能作答 true:已经听完题目
     private var hasRight = false //正确以后不再做出选择 true:已经选出正确答案
 
     private val randomList by lazy { data?.subjectList!![group].shuffled() }//随机排序后的题目
@@ -49,6 +61,10 @@
                 super.handleMessage(msg)
                 when(msg.what){
                     PLAY_VOICE->{
+                        playing = true
+                        if (activity == null){
+                            return
+                        }
                         val listenActivity = activity as ListenActivity
                         val indexOf = listenActivity.fragments.indexOf(this@ListenFragment) //当前题目序号
                         if (iv_playing.visibility != View.VISIBLE&&indexOf == listenActivity.viewPager.currentItem){ //没有播放并且是当前题号
@@ -57,8 +73,20 @@
                         }
                     }
                     TO_NEXT->{
-                        if (isAdded)
+                        if (isAdded&&!playing){
                             (requireActivity() as ListenActivity).next()
+                            removeMessages(TO_NEXT)
+                        }
+                    }
+                    PLAY_RIGHT->{
+                        playing = true
+                        rightPlaying = true
+                        player.startPlayMusic(requireContext(),rightVoice)
+                    }
+                    PLAY_ERROR->{
+                        playing = true
+                        errorPlaying = true
+                        player.startPlayMusic(requireContext(),errorVoice)
                     }
                 }
             }
@@ -85,7 +113,8 @@
 
     private fun initClick() {
         cl_voice.clickDelay {
-            handler?.sendEmptyMessage(PLAY_VOICE)
+            if (!playing)
+                handler?.sendEmptyMessage(PLAY_VOICE)
         }
         setResultAnimation(cl_1,0)
         setResultAnimation(cl_2,1)
@@ -132,11 +161,15 @@
                 myToast("请先听题")
                 return@clickDelay
             }
+            if (playing)
+                    return@clickDelay
             (activity as ListenActivity).totalCount ++
             if (!hasRight){
                 v.progress = 0f
                 v.transitionToEnd()
                 if (randomList[index].correct != correctVoice){ //答案不对,结束后消失
+                    hasListen = false
+                    handler?.sendEmptyMessage(PLAY_ERROR)
                     v.setTransitionListener(object :MotionLayout.TransitionListener{
                         override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) {
                         }
@@ -152,10 +185,9 @@
                         }
                     })
                 }else{
-                    hasRight = true
                     (activity as ListenActivity).rightCount ++
                     motion.transitionToEnd()
-                    handler?.sendEmptyMessage(PLAY_VOICE)
+                    handler?.sendEmptyMessage(PLAY_RIGHT)
                 }
             }
         }
@@ -163,19 +195,34 @@
     }
 
     override fun onStartPlay() {
-        iv1.gone()
-        iv2.gone()
-        iv_playing.visible()
+        if (!errorPlaying&&!rightPlaying){
+            iv1.gone()
+            iv2.gone()
+            iv_playing.visible()
+        }
     }
 
     override fun onFinishPlay() {
+        playing = false
         iv1.visible()
         iv2.visible()
         iv_playing.gone()
-        hasListen = true
-        if (hasRight){ //选对答案后的播放结束3秒后进入下一图
+        if (hasRight&&!playing){ //选对答案后的播放结束3秒后进入下一图
             Log.e(TAG,"选对答案后的播放结束3秒后进入下一图")
             handler?.sendEmptyMessageDelayed(TO_NEXT,3000)
         }
+        if (rightPlaying){
+            rightPlaying = false
+            hasRight = true
+            handler?.sendEmptyMessage(PLAY_VOICE)
+        }else if (errorPlaying)
+            errorPlaying = false
+        else if (!hasRight)
+            hasListen = true
+    }
+
+    override fun onPause() {
+        super.onPause()
+        player.stopPlayMusic()
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/ui/home/ListenStoryActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/ListenStoryActivity.kt
index 7c09c84..1d1f328 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/ListenStoryActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/ListenStoryActivity.kt
@@ -10,6 +10,7 @@
 import androidx.fragment.app.FragmentPagerAdapter
 import androidx.viewpager.widget.ViewPager
 import cn.sinata.xldutils.gone
+import cn.sinata.xldutils.visible
 import com.dollearn.student.R
 import com.dollearn.student.dialog.TipDialog
 import com.dollearn.student.network.HttpManager
@@ -41,30 +42,35 @@
 
     override fun initClick() {
         tv_last.setOnClickListener {
-            (fragments[view_pager.currentItem] as RememberFragment).stopVoice()
+            if ((fragments[view_pager.currentItem] as RememberFragment).playing||!(fragments[view_pager.currentItem] as RememberFragment).listened)
+                return@setOnClickListener
             (fragments[view_pager.currentItem-1] as RememberFragment).recover()
             view_pager.setCurrentItem(view_pager.currentItem-1,true)
             if (view_pager.currentItem == 0)
                 tv_last.gone()
             tv_exit.text = "退出"
+            tv_next.visible()
         }
         tv_next.setOnClickListener {
-            (fragments[view_pager.currentItem] as RememberFragment).stopVoice()
+            if ((fragments[view_pager.currentItem] as RememberFragment).playing||!(fragments[view_pager.currentItem] as RememberFragment).listened)
+                return@setOnClickListener
             (fragments[view_pager.currentItem+1] as RememberFragment).recover()
             view_pager.setCurrentItem(view_pager.currentItem+1,true)
             if (view_pager.currentItem == fragments.lastIndex){
                 tv_next.gone()
                 tv_exit.text = "完成"
             }
+            tv_last.visible()
         }
 
         tv_exit.setOnClickListener {
             if (tv_exit.text == "退出")
                 onBackPressed()
             else{
-                (fragments[view_pager.currentItem] as RememberFragment).stopVoice()
+                if ((fragments[view_pager.currentItem] as RememberFragment).playing||!(fragments[view_pager.currentItem] as RememberFragment).listened)
+                   return@setOnClickListener
                 handler?.removeMessages(0)
-                startActivity<RememberFinishActivity>("score" to data!!.data.integral)
+                startActivity<RememberFinishActivity>("score" to data!!.data.integral,"time" to time,"id" to data!!.data.id)
                 finish()
             }
         }
@@ -73,6 +79,10 @@
     override fun initView() {
         data?.apply {
             tv_progress.text = "已完成:1/${storyList.size}"
+            if (storyList.size == 1){
+                tv_next.gone()
+                tv_exit.text = "完成"
+            }
             storyList.forEachIndexed { index, subject ->
                 fragments.add(RememberFragment.getInstance(index))
             }
@@ -120,20 +130,14 @@
         handler?.sendEmptyMessageDelayed(0,1000L)
     }
 
-    private fun recover(){
-        HttpManager.teamSchedule(day,week,3).request(this){_,data->
-            view_pager.setCurrentItem(data?.topicIds?.size?:0,false)
-            totalCount = data?.answerNumber?:0
-            rightCount = data?.correctNumber?:0
-        }
-    }
-
     override fun onBackPressed() {
         val tipDialog = TipDialog()
         tipDialog.arguments = bundleOf("msg" to "未完成全部答题,确认退出吗?")
         tipDialog.setCallback(object :TipDialog.OnClickCallback{
             override fun onOk() {
-                finish()
+                HttpManager.exitGameOrStory(time).request(this@ListenStoryActivity){_,_->
+                    finish()
+                }
             }
 
             override fun onCancel() {
diff --git a/app/src/main/java/com/dollearn/student/ui/home/LookImgActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/LookImgActivity.kt
index 4ee91a9..33aa546 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/LookImgActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/LookImgActivity.kt
@@ -115,20 +115,14 @@
         handler?.sendEmptyMessageDelayed(0,1000L)
     }
 
-    private fun recover(){
-        HttpManager.teamSchedule(day,week,3).request(this){_,data->
-            view_pager.setCurrentItem(data?.topicIds?.size?:0,false)
-            totalCount = data?.answerNumber?:0
-            rightCount = data?.correctNumber?:0
-        }
-    }
-
     override fun onBackPressed() {
         val tipDialog = TipDialog()
         tipDialog.arguments = bundleOf("msg" to "未完成全部答题,确认退出吗?")
         tipDialog.setCallback(object :TipDialog.OnClickCallback{
             override fun onOk() {
-                finish()
+                HttpManager.exitGameOrStory(time).request(this@LookImgActivity){_,_->
+                    finish()
+                }
             }
 
             override fun onCancel() {
diff --git a/app/src/main/java/com/dollearn/student/ui/home/LookImgFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/LookImgFragment.kt
index 465177f..c90489b 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/LookImgFragment.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/LookImgFragment.kt
@@ -4,12 +4,16 @@
 import android.os.Looper
 import android.os.Message
 import android.util.Log
+import android.view.View
 import androidx.core.os.bundleOf
 import cn.sinata.xldutils.fragment.BaseFragment
 import cn.sinata.xldutils.gone
+import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.visible
 import com.dollearn.student.R
 import com.dollearn.student.utils.AudioUtils
+import com.dollearn.student.utils.Const
 import com.dollearn.student.utils.extention.clickDelay
 import kotlinx.android.synthetic.main.fragmetn_look_img.*
 
@@ -29,10 +33,22 @@
 
     private val PLAY_VOICE = 1
     private val TO_NEXT = 10
+
+    private val PLAY_ERROR = 3
+    private val PLAY_RIGHT = 4
+
+    private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) }
+    private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) }
+
+    private var rightPlaying = false
+    private var errorPlaying = false
+
     private val player by lazy { AudioUtils() }
 
     private var voiceIndex = -1 //点击播放的声音序号 0-2取值
     private var playing = false //播放中,不能有任何操作
+
+    private var nowVoiceView: View? = null
 
     override fun onFirstVisibleToUser() {
         player.setOnAudioStatusUpdateListener(this)
@@ -42,12 +58,24 @@
                 super.handleMessage(msg)
                 when(msg.what){
                     PLAY_VOICE->{
+                        playing = true
                         if (voiceIndex<voiceList.size)
                             player.startPlayMusic(requireContext(),voiceList[voiceIndex])
                     }
                     TO_NEXT->{
                         if (isAdded&&!playing)
                             (requireActivity() as LookImgActivity).next()
+                    }
+                    PLAY_RIGHT->{
+                        rightPlaying = true
+                        player.startPlayMusic(requireContext(),rightVoice)
+                    }
+                    PLAY_ERROR->{
+                        rl_check_1.gone()
+                        rl_check_2.gone()
+                        rl_check_3.gone()
+                        errorPlaying = true
+                        player.startPlayMusic(requireContext(),errorVoice)
                     }
                 }
             }
@@ -87,57 +115,74 @@
         rl_check_1.clickDelay {
             if (playing)
                 return@clickDelay
-            dot_1.visible()
-            act.totalCount++
-            if (voiceList[0] == data!!.storyList[index].correct){
-                act.rightCount++
-                data!!.storyList[index].completed = true
-                motion.transitionToEnd()
-                cl_voice1.callOnClick()
+            if (rl_check_1.visibility == View.VISIBLE&&rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE){
+                dot_1.visible()
+                act.totalCount++
+                if (voiceList[0] == data!!.storyList[index].correct){
+                    act.rightCount++
+                    motion.transitionToEnd()
+                    nowVoiceView = cl_voice1
+                    handler?.sendEmptyMessage(PLAY_RIGHT)
+
+                }else{
+                    handler?.sendEmptyMessage(PLAY_ERROR)
+                    iv_error_1.visible()
+                    dot_1.postDelayed({
+                        iv_error_1.gone()
+                        dot_1.gone()
+                    },2000)
+                }
             }else{
-                iv_error_1.visible()
-                dot_1.postDelayed({
-                    iv_error_1.gone()
-                    dot_1.gone()
-                },2000)
+                myToast("请听完")
             }
+
         }
 
         rl_check_2.clickDelay {
             if (playing)
                 return@clickDelay
-            dot_2.visible()
-            act.totalCount++
-            if (voiceList[1] == data!!.storyList[index].correct){
-                act.rightCount++
-                data!!.storyList[index].completed = true
-                motion.transitionToEnd()
-                cl_voice2.callOnClick()
-            }else{
-                iv_error_2.visible()
-                dot_1.postDelayed({
-                    dot_2.gone()
-                    iv_error_2.gone()
-                },2000)
-            }
+            if (rl_check_1.visibility == View.VISIBLE&&rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE) {
+                dot_2.visible()
+                act.totalCount++
+                if (voiceList[1] == data!!.storyList[index].correct){
+                    act.rightCount++
+                    motion.transitionToEnd()
+                    nowVoiceView = cl_voice2
+                    handler?.sendEmptyMessage(PLAY_RIGHT)
+
+                }else{
+                    handler?.sendEmptyMessage(PLAY_ERROR)
+                    iv_error_2.visible()
+                    dot_1.postDelayed({
+                        dot_2.gone()
+                        iv_error_2.gone()
+                    },2000)
+                }
+            }else
+                myToast("请听完")
         }
         rl_check_3.clickDelay {
             if (playing)
                 return@clickDelay
-            dot_3.visible()
-            act.totalCount++
-            if (voiceList[2] == data!!.storyList[index].correct){
-                data!!.storyList[index].completed = true
-                act.rightCount++
-                motion.transitionToEnd()
-                cl_voice3.callOnClick()
-            }else{
-                iv_error_3.visible()
-                dot_1.postDelayed({
-                    iv_error_3.gone()
-                    dot_3.gone()
-                },2000)
-            }
+            if (rl_check_1.visibility == View.VISIBLE&&rl_check_2.visibility == View.VISIBLE&&rl_check_3.visibility == View.VISIBLE) {
+                dot_3.visible()
+                act.totalCount++
+                if (voiceList[2] == data!!.storyList[index].correct){
+                    act.rightCount++
+                    motion.transitionToEnd()
+                    nowVoiceView = cl_voice3
+                    handler?.sendEmptyMessage(PLAY_RIGHT)
+
+                }else{
+                    handler?.sendEmptyMessage(PLAY_ERROR)
+                    iv_error_3.visible()
+                    dot_1.postDelayed({
+                        iv_error_3.gone()
+                        dot_3.gone()
+                    },2000)
+                }
+            }else
+                myToast("请听完")
         }
     }
 
@@ -194,6 +239,8 @@
 
     override fun onStartPlay() {
         playing = true
+        if (rightPlaying||errorPlaying)
+            return
         if (voiceIndex == 0){
             iv1_1.gone()
             iv2_1.gone()
@@ -213,23 +260,31 @@
 
     override fun onFinishPlay() {
         playing = false
-        if (voiceIndex == 0){
+        if (voiceIndex == 0&&!errorPlaying){
             rl_check_1.visible()
             iv1_1.visible()
             iv2_1.visible()
             iv_playing_1.gone()
         }
-        if (voiceIndex == 1){
+        if (voiceIndex == 1&&!errorPlaying){
             rl_check_2.visible()
             iv1_2.visible()
             iv2_2.visible()
             iv_playing_2.gone()
         }
-        if (voiceIndex == 2){
+        if (voiceIndex == 2&&!errorPlaying){
             rl_check_3.visible()
             iv1_3.visible()
             iv2_3.visible()
             iv_playing_3.gone()
+        }
+        if (errorPlaying){
+            errorPlaying = false
+        }
+        if (rightPlaying){
+            rightPlaying = false
+            nowVoiceView?.callOnClick()
+            data!!.storyList[index].completed = true
         }
         if (data!!.storyList[index].completed){ //本题已答对
             Log.e(TAG,"选对答案后的播放结束3秒后进入下一图")
@@ -237,4 +292,8 @@
         }
     }
 
+    override fun onPause() {
+        super.onPause()
+        player.stopPlayMusic()
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/ui/home/MatchActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/MatchActivity.kt
index 001f1c8..cb85d61 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/MatchActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/MatchActivity.kt
@@ -55,7 +55,7 @@
     fun next(){
         if (view_pager.currentItem == fragments.lastIndex){
             handler?.removeMessages(0)
-            ResultActivity.startResult(this,day,week,season,3,totalCount,rightCount,data!!.data.integral,time,data!!.data.id)
+            ResultActivity.startResult(this,day,week,season,5,totalCount,rightCount,data!!.data.integral,time,data!!.data.id)
             finish()
         }else{
             (fragments[view_pager.currentItem+1] as MatchFragment).recover()
@@ -115,8 +115,10 @@
     }
 
     private fun recover(){
-        HttpManager.teamSchedule(day,week,3).request(this){_,data->
-            view_pager.setCurrentItem(data?.topicIds?.size?:0,false)
+        HttpManager.teamSchedule(day,week,5).request(this){_,data->
+            view_pager.setCurrentItem((data?.schedule?:1)-1,false)
+            if (view_pager.currentItem != 0)
+                tv_last.visible()
             totalCount = data?.answerNumber?:0
             rightCount = data?.correctNumber?:0
         }
@@ -131,7 +133,7 @@
                     finish()
                 else{
                     val list = (data?.subjectList?: arrayListOf()).flatMap { it }.subList(0,view_pager.currentItem)
-                    HttpManager.exitLearning(totalCount,rightCount,day,week,3,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@MatchActivity){ _, _->
+                    HttpManager.exitLearning(view_pager.currentItem,season,time,totalCount,rightCount,day,week,5,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@MatchActivity){ _, _->
                         finish()
                     }
                 }
diff --git a/app/src/main/java/com/dollearn/student/ui/home/MatchDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/MatchDetailActivity.kt
index 41ab03b..d7a4718 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/MatchDetailActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/MatchDetailActivity.kt
@@ -1,20 +1,13 @@
 package com.dollearn.student.ui.home
 
 import android.content.Intent
-import android.graphics.Bitmap
-import android.graphics.Paint
-import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.core.os.bundleOf
 import cn.sinata.xldutils.gone
 import cn.sinata.xldutils.utils.*
 import cn.sinata.xldutils.visible
-import com.bumptech.glide.Glide
-import com.bumptech.glide.request.target.SimpleTarget
-import com.bumptech.glide.request.transition.Transition
 import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.DollearnApplication
 import com.dollearn.student.dialog.CheckShopsDialog
-import com.dollearn.student.dialog.ChooseCouponDialog
 import com.dollearn.student.network.HttpManager
 import com.dollearn.student.network.entity.Banner
 import com.dollearn.student.network.entity.Match
@@ -25,8 +18,6 @@
 import com.dollearn.student.utils.extention.loadLongImage
 import kotlinx.android.synthetic.main.activity_match_deatil.*
 import org.jetbrains.anko.backgroundColorResource
-import org.jetbrains.anko.startActivity
-import org.jetbrains.anko.toast
 
 class MatchDetailActivity : TransparentStatusBarActivity() {
     override fun setContentView() = R.layout.activity_match_deatil
@@ -62,7 +53,7 @@
      * 获取运动营详情,暂时列表数据够用,不需实现
      */
     private fun getDetail() {
-        HttpManager.queryCompetitionInfo(id, WeparkApplication.lat, WeparkApplication.lon)
+        HttpManager.queryCompetitionInfo(id, DollearnApplication.lat, DollearnApplication.lon)
             .request(this) { _, data ->
                 match = data
                 data?.apply {
diff --git a/app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt
index d33c5e6..b670568 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/MatchFragment.kt
@@ -4,19 +4,22 @@
 import android.os.Looper
 import android.os.Message
 import android.util.Log
+import android.view.View
 import androidx.constraintlayout.motion.widget.MotionLayout
 import androidx.core.os.bundleOf
 import cn.sinata.xldutils.fragment.BaseFragment
 import cn.sinata.xldutils.gone
+import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.visible
 import com.dollearn.student.R
 import com.dollearn.student.utils.AudioUtils
+import com.dollearn.student.utils.Const
 import com.dollearn.student.utils.extention.clickDelay
 import kotlinx.android.synthetic.main.fragment_match.*
 import org.jetbrains.anko.imageResource
 
 
-//todo 2.选择正确后不能再选择 3.选择正确后处理语音条位置
 class MatchFragment : BaseFragment(), AudioUtils.OnAudioStatusUpdateListener {
     override fun contentViewId() = R.layout.fragment_match
 
@@ -25,6 +28,15 @@
     private var handler:Handler? = null
     private val PLAY_VOICE = 1
     private val TO_NEXT = 2
+
+    private val PLAY_ERROR = 3
+    private val PLAY_RIGHT = 4
+
+    private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) }
+    private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) }
+
+    private var rightPlaying = false
+    private var errorPlaying = false
 
     private val player by lazy { AudioUtils() }
     private val group by lazy { arguments?.getInt("group")?:0 }
@@ -38,6 +50,11 @@
     private var playing = false
     private val voiceList = arrayListOf<String>() //语音列表,随机排序
     private var voiceIndex = -1 //点击播放的声音序号 0-3取值
+
+    private var nowVoiceView: View? = null
+    private var imgPosition = -1
+
+    private val completedVoice = arrayListOf<String>() //已经选了的音频 飞到图片上了
 
     override fun onFirstVisibleToUser() {
         player.setOnAudioStatusUpdateListener(this)
@@ -53,6 +70,15 @@
                         if (isAdded&&!playing){
                             (requireActivity() as MatchActivity).next()
                         }
+                    }
+                    PLAY_RIGHT->{
+                        rightPlaying = true
+                        player.startPlayMusic(requireContext(),rightVoice)
+                    }
+                    PLAY_ERROR->{
+                        voiceIndex = -1
+                        errorPlaying = true
+                        player.startPlayMusic(requireContext(),errorVoice)
                     }
                 }
             }
@@ -86,14 +112,17 @@
 
         cl_1.clickDelay {
             val voiceIndex = voiceIndex
-            if (playing||voiceIndex == -1) //未播放或者正在播放,不可点击
+            if (playing) //未播放或者正在播放,不可点击
                 return@clickDelay
-            if (data!!.subjectList[group][0].completed) //已作答不可点击
+            if (voiceIndex == -1){//未播放不可点击
+                myToast("请先听题")
                 return@clickDelay
+            }
+//            if (data!!.subjectList[group][0].completed) //已作答不可点击
+//                return@clickDelay
             act.totalCount ++
             if (data!!.subjectList[group][0].correct == voiceList[voiceIndex]){
                 result_1.imageResource = R.mipmap.successs
-                data!!.subjectList[group][0].completed = true
                 act.rightCount ++
                 //执行飞行动画
                 var start = 0
@@ -116,7 +145,8 @@
                         end = R.id.end_4_1
                     }
                 }
-                voiceViews[voiceIndex].callOnClick()
+                nowVoiceView =  voiceViews[voiceIndex]
+                imgPosition = 0
                 motion.setTransitionListener(object :MotionLayout.TransitionListener{
                     override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) {
 
@@ -150,8 +180,10 @@
                 })
                 motion.setTransition(start,end)
                 motion.transitionToEnd()
+                handler?.sendEmptyMessage(PLAY_RIGHT)
             }else{
                 result_1.imageResource = R.mipmap.zhifushibai
+                handler?.sendEmptyMessage(PLAY_ERROR)
             }
             showResultAnim(cl_1)
         }
@@ -159,15 +191,19 @@
         cl_2.clickDelay {
             val voiceIndex = voiceIndex
 
-            if (playing||voiceIndex == -1) //未播放或者正在播放,不可点击
+            if (playing) //未播放或者正在播放,不可点击
                 return@clickDelay
-            if (data!!.subjectList[group][1].completed) //已作答不可点击
+            if (voiceIndex == -1){//未播放不可点击
+                myToast("请先听题")
                 return@clickDelay
+            }
+//            if (data!!.subjectList[group][1].completed) //已作答不可点击
+//                return@clickDelay
             act.totalCount ++
             if (data!!.subjectList[group][1].correct == voiceList[voiceIndex]){
                 result_2.imageResource = R.mipmap.successs
-                data!!.subjectList[group][1].completed = true
                 act.rightCount ++
+                imgPosition = 1
                 //执行飞行动画
                 var start = 0
                 var end = 0
@@ -189,7 +225,7 @@
                         end = R.id.end_4_2
                     }
                 }
-                voiceViews[voiceIndex].callOnClick()
+                nowVoiceView =  voiceViews[voiceIndex]
 
                 motion.setTransitionListener(object :MotionLayout.TransitionListener{
                     override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) {
@@ -224,8 +260,10 @@
                 })
                 motion.setTransition(start,end)
                 motion.transitionToEnd()
+                handler?.sendEmptyMessage(PLAY_RIGHT)
             }else{
                 result_2.imageResource = R.mipmap.zhifushibai
+                handler?.sendEmptyMessage(PLAY_ERROR)
             }
             showResultAnim(cl_2)
         }
@@ -233,14 +271,18 @@
         cl_3.clickDelay {
             val voiceIndex = voiceIndex
 
-            if (playing||voiceIndex == -1) //未播放或者正在播放,不可点击
+            if (playing) //未播放或者正在播放,不可点击
                 return@clickDelay
-            if (data!!.subjectList[group][2].completed) //已作答不可点击
+            if (voiceIndex == -1){//未播放不可点击
+                myToast("请先听题")
                 return@clickDelay
+            }
+//            if (data!!.subjectList[group][2].completed) //已作答不可点击
+//                return@clickDelay
             act.totalCount ++
             if (data!!.subjectList[group][2].correct == voiceList[voiceIndex]){
                 result_3.imageResource = R.mipmap.successs
-                data!!.subjectList[group][2].completed = true
+                imgPosition = 2
                 act.rightCount ++
                 //执行飞行动画
                 var start = 0
@@ -263,7 +305,7 @@
                         end = R.id.end_4_3
                     }
                 }
-                voiceViews[voiceIndex].callOnClick()
+                nowVoiceView =  voiceViews[voiceIndex]
 
                 motion.setTransitionListener(object :MotionLayout.TransitionListener{
                     override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) {
@@ -298,22 +340,28 @@
                 })
                 motion.setTransition(start,end)
                 motion.transitionToEnd()
+                handler?.sendEmptyMessage(PLAY_RIGHT)
             }else{
                 result_3.imageResource = R.mipmap.zhifushibai
+                handler?.sendEmptyMessage(PLAY_ERROR)
             }
             showResultAnim(cl_3)
         }
 
         cl_4.clickDelay {
             val voiceIndex = voiceIndex
-            if (playing||voiceIndex == -1) //未播放或者正在播放,不可点击
+            if (playing) //未播放或者正在播放,不可点击
                 return@clickDelay
-            if (data!!.subjectList[group][3].completed) //已作答不可点击
+            if (voiceIndex == -1){//未播放不可点击
+                myToast("请先听题")
                 return@clickDelay
+            }
+//            if (data!!.subjectList[group][3].completed) //已作答不可点击
+//                return@clickDelay
             act.totalCount ++
             if (data!!.subjectList[group][3].correct == voiceList[voiceIndex]){
                 result_4.imageResource = R.mipmap.successs
-                data!!.subjectList[group][3].completed = true
+                imgPosition = 3
                 act.rightCount ++
                 //执行飞行动画
                 var start = 0
@@ -336,7 +384,7 @@
                         end = R.id.end_4_4
                     }
                 }
-                voiceViews[voiceIndex].callOnClick()
+                nowVoiceView =  voiceViews[voiceIndex]
 
                 motion.setTransitionListener(object :MotionLayout.TransitionListener{
                     override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) {
@@ -371,8 +419,10 @@
                 })
                 motion.setTransition(start,end)
                 motion.transitionToEnd()
+                handler?.sendEmptyMessage(PLAY_RIGHT)
             }else{
                 result_4.imageResource = R.mipmap.zhifushibai
+                handler?.sendEmptyMessage(PLAY_ERROR)
             }
             showResultAnim(cl_4)
         }
@@ -409,6 +459,7 @@
 
             override fun onTransitionCompleted(p0: MotionLayout?, p1: Int) {
                 m.progress = 0f
+                tv_name.text =""
             }
 
             override fun onTransitionTrigger(p0: MotionLayout?, p1: Int, p2: Boolean, p3: Float) {
@@ -457,6 +508,8 @@
 
     override fun onStartPlay() {
         playing = true
+        if (errorPlaying||rightPlaying)
+            return
         val list = data!!.subjectList[group]
         if (voiceIndex in 0..3)
             tv_name.text = list[list.map { it.correct }.indexOf(voiceList[voiceIndex])].name
@@ -515,45 +568,80 @@
                 iv1_1.visible()
                 iv2_1.visible()
                 iv_playing_1.gone()
+                if (nowVoiceView!=null && data!!.subjectList[group][imgPosition].completed){
+                    voiceIndex = -1
+                    nowVoiceView = null
+                }
             }
             1->{
                 iv1_2.visible()
                 iv2_2.visible()
                 iv_playing_2.gone()
+                if (nowVoiceView!=null && data!!.subjectList[group][imgPosition].completed){
+                    voiceIndex = -1
+                    nowVoiceView = null
+                }
             }
             2->{
                 iv1_3.visible()
                 iv2_3.visible()
                 iv_playing_3.gone()
+                if (nowVoiceView!=null && data!!.subjectList[group][imgPosition].completed){
+                    voiceIndex = -1
+                    nowVoiceView = null
+                }
             }
             3->{
                 iv1_4.visible()
                 iv2_4.visible()
                 iv_playing_4.gone()
+                if (nowVoiceView!=null && data!!.subjectList[group][imgPosition].completed){
+                    voiceIndex = -1
+                    nowVoiceView = null
+                }
             }
+
             4->{
                 iv1_1_end.visible()
                 iv2_1_end.visible()
                 iv_playing_1_end.gone()
+                voiceIndex = -1
             }
             5->{
                 iv1_2_end.visible()
                 iv2_2_end.visible()
                 iv_playing_2_end.gone()
+                voiceIndex = -1
             }
             6->{
                 iv1_3_end.visible()
                 iv2_3_end.visible()
                 iv_playing_3_end.gone()
+                voiceIndex = -1
             }
             7->{
                 iv1_4_end.visible()
                 iv2_4_end.visible()
                 iv_playing_4_end.gone()
+                voiceIndex = -1
             }
         }
         if (data!!.subjectList[group].filter { it.completed }.size == 4){ //全部答对
             handler?.sendEmptyMessage(TO_NEXT)
         }
+
+        if (errorPlaying)
+            errorPlaying = false
+        if (rightPlaying){
+            rightPlaying = false
+            nowVoiceView?.callOnClick()
+            data!!.subjectList[group][imgPosition].completed = true
+        }
+    }
+
+
+    override fun onPause() {
+        super.onPause()
+        player.stopPlayMusic()
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt
index 7fd64c2..525f175 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/MemoryActivity.kt
@@ -3,16 +3,21 @@
 import android.os.Handler
 import androidx.core.os.bundleOf
 import androidx.recyclerview.widget.GridLayoutManager
+import cn.sinata.xldutils.utils.SPUtils
 import cn.sinata.xldutils.utils.showAllowingStateLoss
 import com.dollearn.student.R
 import com.dollearn.student.dialog.TipDialog
+import com.dollearn.student.network.HttpManager
 import com.dollearn.student.network.entity.Card
 import com.dollearn.student.network.entity.MemoryBean
+import com.dollearn.student.network.request
 import com.dollearn.student.ui.TransparentStatusBarActivity
 import com.dollearn.student.ui.home.adapter.CardAdapter
+import com.dollearn.student.utils.AudioUtils
+import com.dollearn.student.utils.Const
 import kotlinx.android.synthetic.main.activity_memory.*
 
-class MemoryActivity : TransparentStatusBarActivity() {
+class MemoryActivity : TransparentStatusBarActivity(), AudioUtils.OnAudioStatusUpdateListener {
     override fun setContentView() = R.layout.activity_memory
 
     private val data by lazy {
@@ -33,23 +38,37 @@
     private val PLAY_VOICE = 1
     private val STUDY_TIME = 2
 
-    private val player by lazy { com.dollearn.student.utils.AudioUtils() }
+    val PLAY_RIGHT = 4
+    val PLAY_ERROR = 5
+
+    private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) }
+    private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) }
+
+    private var rightPlaying = false
+    private var errorPlaying = false
+
+    private val player by lazy { AudioUtils() }
 
     private var index = 0
 
+    var playing = false
 
     override fun initClick() {
         tv_exit.setOnClickListener {
             if (tv_exit.text == "提交"){
-                //todo 分数问题
-                ResultActivity.startResult(this,0,0,0,7,totalCount,rightCount,100,time,data!!.data.id)
+                val right = list.filter { !it.isBack }.size / 2
+                val total = data.photoList.size
+                val score = right*data.data.answerIntegral/total
+                ResultActivity.startResult(this,0,0,0,7, total, right,score,time,data!!.data.id)
                 finish()
             }else
-                finish()
+                onBackPressed()
         }
     }
 
     override fun initView() {
+        player.setOnAudioStatusUpdateListener(this)
+        player.stopPlayMusic()
         handler = object : Handler(android.os.Looper.getMainLooper()){
             override fun handleMessage(msg: android.os.Message) {
                 super.handleMessage(msg)
@@ -63,8 +82,12 @@
                             tipDialog.arguments = bundleOf("msg" to "答题时间已结束,停止作答!","isAlert" to true,"ok" to "查看成绩")
                             tipDialog.setDismissCallback(object :TipDialog.OnDismiss{
                                 override fun onDismiss() {
-                                    ResultActivity.startResult(this@MemoryActivity,0,0,0,7,totalCount,rightCount
-                                        ,100,time,data!!.data.id)
+                                    val right = list.filter { !it.isBack }.size / 2
+                                    val total = data.photoList.size
+                                    val score = right*data.data.answerIntegral/total
+                                    ResultActivity.startResult(this@MemoryActivity,0,0,0,7,total,right
+                                        ,score,time,data.data.id)
+                                    finish()
                                 }
                             })
                             tipDialog.showAllowingStateLoss(supportFragmentManager,"finish")
@@ -74,12 +97,21 @@
                     PLAY_VOICE->{
                         player.startPlayMusic(this@MemoryActivity,list[index].url)
                     }
+                    PLAY_RIGHT->{
+                        rightPlaying = true
+                        player.startPlayMusic(this@MemoryActivity,rightVoice)
+                    }
+                    PLAY_ERROR->{
+                        errorPlaying = true
+                        player.startPlayMusic(this@MemoryActivity,errorVoice)
+                    }
                 }
             }
         }
 
+        lastTime = data.data.answerTime //倒计时时间
+        tv_timer.text = "${lastTime}S"
         handler?.sendEmptyMessageDelayed(STUDY_TIME,1000)
-
         rv_list.layoutManager = GridLayoutManager(this,5)
         rv_list.adapter = adapter
         list.addAll(data.photoList.map { Card(it.id,1,it.photo) })
@@ -93,17 +125,21 @@
      */
     fun flyover(position:Int){
         val card = list[position]
-        if (card.type == 2){
+        if (card.type == 2){ //如果是语音 先播放语音
             index = position
             handler?.sendEmptyMessage(PLAY_VOICE)
+        }else{ //不是语音直接比较结果
+            checkResult()
         }
+    }
 
+    private fun checkResult(){
         if (adapter.position1!=-1&&adapter.position2!=-1){ //已经翻开2张卡片,比较结果是否匹配
             totalCount++
             val card1 = list[adapter.position1]
             val card2 = list[adapter.position2]
             if (card1.type!=card2.type&&card1.id == card2.id){//匹配成功
-                adapter.releaseHolder()
+                handler?.sendEmptyMessage(PLAY_RIGHT)
                 rightCount++
                 tv_timer.postDelayed({
                     if (list.filter { !it.isBack }.size == list.size){ //全部答对
@@ -112,13 +148,16 @@
                     }
                 },500)
             }else{
-                tv_timer.postDelayed({
-                    adapter.bothToBack()
-                },500)
+                handler?.sendEmptyMessage(PLAY_ERROR)
             }
         }
     }
 
+    override fun onBackPressed() {
+        HttpManager.exitGameOrStory(time).request(this){ _, _->
+            super.onBackPressed()
+        }
+    }
 
     override fun onDestroy() {
         super.onDestroy()
@@ -126,4 +165,41 @@
         handler?.removeMessages(STUDY_TIME)
         handler = null
     }
+
+    override fun onPause() {
+        super.onPause()
+        player.stopPlayMusic()
+    }
+
+    override fun onUpdate(db: Double, time: Long) {
+
+    }
+
+    override fun onStop(filePath: String?) {
+    }
+
+    override fun onStartPlay() {
+        playing = true
+    }
+
+    override fun onFinishPlay() {
+        playing = false
+        if (errorPlaying){
+            errorPlaying = false
+            tv_timer.postDelayed({
+                adapter.bothToBack()
+            },500)
+        }else if (rightPlaying){
+            rightPlaying = false
+            val card1 = list[adapter.position1]
+            if (card1.type == 2)
+                index = adapter.position1
+            else
+                index = adapter.position2
+            adapter.releaseHolder()
+            handler?.sendEmptyMessage(PLAY_VOICE)
+        }else{
+            checkResult()
+        }
+    }
 }
diff --git a/app/src/main/java/com/dollearn/student/ui/home/PayResultActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/PayResultActivity.kt
index 2d63ada..5d94a16 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/PayResultActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/PayResultActivity.kt
@@ -4,6 +4,7 @@
 import com.dollearn.student.MainActivity
 import com.dollearn.student.R
 import com.dollearn.student.ui.TransparentStatusBarActivity
+import com.dollearn.student.ui.welfare.ExchangeRecordActivity
 import kotlinx.android.synthetic.main.activity_pay_rlt.*
 import org.jetbrains.anko.startActivity
 
@@ -21,7 +22,7 @@
             startActivity<MainActivity>()
         }
         tv_action.setOnClickListener {
-
+            startActivity<ExchangeRecordActivity>()
         }
     }
 
diff --git a/app/src/main/java/com/dollearn/student/ui/home/PlaceDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/PlaceDetailActivity.kt
index 5603765..49b641d 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/PlaceDetailActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/PlaceDetailActivity.kt
@@ -1,47 +1,8 @@
 package com.dollearn.student.ui.home
 
 import android.annotation.SuppressLint
-import android.content.Intent
-import android.util.Log
-import android.view.View
-import android.webkit.WebChromeClient
-import android.webkit.WebSettings
-import android.webkit.WebViewClient
-import androidx.core.os.bundleOf
-import androidx.recyclerview.widget.GridLayoutManager
-import cn.sinata.xldutils.callPhone
-import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.*
-import cn.sinata.xldutils.visible
-import com.dollearn.student.R
-import com.dollearn.student.dialog.CalendarDialog
-import com.dollearn.student.dialog.ChooseCouponDialog
-import com.dollearn.student.dialog.ConfirmShopDialog
-import com.dollearn.student.dialog.PayDialog
-import com.dollearn.student.network.HttpManager
 import com.dollearn.student.network.entity.Banner
-import com.dollearn.student.network.entity.Coupon
-import com.dollearn.student.network.entity.Place
-import com.dollearn.student.network.entity.PlaceTime
-import com.dollearn.student.network.request
 import com.dollearn.student.ui.TransparentStatusBarActivity
-import com.dollearn.student.ui.course.MyReservationActivity
-import com.dollearn.student.ui.home.adapter.HomeBannerAdapter
-import com.dollearn.student.ui.home.adapter.LessonCountAdapter
-import com.dollearn.student.ui.home.adapter.TimeAdapter
-import com.dollearn.student.ui.home.adapter.WeekAdapter
-import com.dollearn.student.utils.Const
-import com.dollearn.student.utils.event.EmptyEvent
-import com.dollearn.student.utils.extention.clickDelay
-import com.dollearn.student.utils.interfaces.StringCallback
-import com.dollearn.student.utils.pay.PayListener
-import com.dollearn.student.utils.pay.PayUtil
-import com.youth.banner.indicator.CircleIndicator
-import org.greenrobot.eventbus.EventBus
-import org.jetbrains.anko.startActivity
-import org.jetbrains.anko.startActivityForResult
-import org.jetbrains.anko.toast
-import java.util.*
 
 @SuppressLint("SetTextI18n")
 class PlaceDetailActivity : TransparentStatusBarActivity() {
diff --git a/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt
index e3ae842..fbce931 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/QAActivity.kt
@@ -116,7 +116,9 @@
 
     private fun recover(){
         HttpManager.teamSchedule(day,week,4).request(this,false){_,data->
-            view_pager.setCurrentItem(data?.topicIds?.size?:0,false)
+            view_pager.setCurrentItem((data?.schedule?:1)-1,false)
+            if (view_pager.currentItem != 0)
+                tv_last.visible()
             totalCount = data?.answerNumber?:0
             rightCount = data?.correctNumber?:0
         }
@@ -131,7 +133,7 @@
                     finish()
                 else{
                     val list = (data?.subjectList?: arrayListOf()).flatMap { it }.subList(0,view_pager.currentItem)
-                    HttpManager.exitLearning(totalCount,rightCount,day,week,4,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@QAActivity){ _, _->
+                    HttpManager.exitLearning(view_pager.currentItem,season,time,totalCount,rightCount,day,week,4,data?.data?.id?:"", list.joinToString(",") { it.id }).request(this@QAActivity){ _, _->
                         finish()
                     }
                 }
diff --git a/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt
index 187f0a4..7035674 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/QAFragment.kt
@@ -15,9 +15,12 @@
 import cn.sinata.xldutils.fragment.BaseFragment
 import cn.sinata.xldutils.gone
 import cn.sinata.xldutils.invisible
+import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.visible
 import com.dollearn.student.R
 import com.dollearn.student.utils.AudioUtils
+import com.dollearn.student.utils.Const
 import com.dollearn.student.utils.extention.clickDelay
 import kotlinx.android.synthetic.main.fragment_q_a.*
 import org.jetbrains.anko.support.v4.dip
@@ -30,6 +33,15 @@
     private var handler: Handler? = null
     private val PLAY_VOICE = 1
     private val TO_NEXT = 2
+
+    private val PLAY_ERROR = 3
+    private val PLAY_RIGHT = 4
+
+    private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) }
+    private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) }
+
+    private var rightPlaying = false
+    private var errorPlaying = false
 
     private val player by lazy { AudioUtils() }
     private val group by lazy { arguments?.getInt("group")?:0 }
@@ -46,6 +58,7 @@
     private val v1Views by lazy { arrayListOf(iv1_1,iv1_2,iv1_3,iv1_4,iv1_answer_1,iv1_answer_2,iv1_answer_3) }
     private val v2Views by lazy { arrayListOf(iv2_1,iv2_2,iv2_3,iv2_4,iv2_answer_1,iv2_answer_2,iv2_answer_3) }
     private val v3Views by lazy { arrayListOf(iv3_1,iv3_2,iv3_3,iv3_4) }
+    private val resultViews by lazy { arrayListOf(iv_right_1,iv_right_2,iv_right_3,iv_right_4) }
     private val playingViews by lazy { arrayListOf(iv_playing_1,iv_playing_2,iv_playing_3,iv_playing_4,iv_playing_answer_1,iv_playing_answer_2,iv_playing_answer_3) }
 
     private var voiceIndex = -1 //点击播放的声音序号 0-3取值
@@ -57,6 +70,7 @@
 
     private var answerList = arrayListOf<String>() //右侧答案语音
 
+    private var nowVoiceView: View? = null
 
     override fun onFirstVisibleToUser() {
         player.setOnAudioStatusUpdateListener(this)
@@ -66,6 +80,7 @@
                 super.handleMessage(msg)
                 when(msg.what){
                     PLAY_VOICE->{
+                        playing = true
                         if (voiceIndex in 0..3)
                             player.startPlayMusic(requireContext(),list[voiceIndex].correct)
                         else
@@ -76,6 +91,14 @@
                             (requireActivity() as QAActivity).next()
                         }
                     }
+                    PLAY_RIGHT->{
+                        rightPlaying = true
+                        player.startPlayMusic(requireContext(),rightVoice)
+                    }
+                    PLAY_ERROR->{
+                        errorPlaying = true
+                        player.startPlayMusic(requireContext(),errorVoice)
+                    }
                 }
             }
         }
@@ -83,27 +106,36 @@
         iv_2.setImageURI(list[1].img)
         iv_3.setImageURI(list[2].img)
         iv_4.setImageURI(list[3].img)
-        showVoiceUi()
-
+        recover()
         rl_check_1.clickDelay {
             if (playing)
                 return@clickDelay
             if (list[questionIndex].completed) //已作答
                 return@clickDelay
+            if (!rl_check_1.isSelected||!rl_check_2.isSelected||!rl_check_3.isSelected){
+                myToast("请先听完")
+                return@clickDelay
+            }
             act.totalCount++
             if (list[questionIndex].correct == answerList[0]){
                 act.rightCount++
                 Log.e(TAG,"选择正确")
                 transAnimation(cl_answer_1,voiceViews[questionIndex])
-                list[questionIndex].completed = true
-                cl_answer_1.callOnClick()
+                resultViews[questionIndex].visible()
+                resultViews[questionIndex].postDelayed({
+                    resultViews[questionIndex].gone()
+                },3000)
+                nowVoiceView = voiceViews[questionIndex]
+                handler?.sendEmptyMessage(PLAY_RIGHT)
             }else{
+                recoverAnswer()
+                handler?.sendEmptyMessage(PLAY_ERROR)
                 dot_1.visible()
                 iv_error_1.visible()
                 dot_1.postDelayed({
                     dot_1.gone()
                     iv_error_1.gone()
-                },500)
+                },3000)
             }
         }
         rl_check_2.clickDelay {
@@ -111,20 +143,26 @@
                 return@clickDelay
             if (list[questionIndex].completed) //已作答
                 return@clickDelay
+            if (!rl_check_1.isSelected||!rl_check_2.isSelected||!rl_check_3.isSelected){
+                myToast("请先听完")
+                return@clickDelay
+            }
             act.totalCount++
             if (list[questionIndex].correct == answerList[1]){
                 act.rightCount++
                 Log.e(TAG,"选择正确")
                 transAnimation(cl_answer_2,voiceViews[questionIndex])
-                list[questionIndex].completed = true
-                cl_answer_2.callOnClick()
+                nowVoiceView = voiceViews[questionIndex]
+                handler?.sendEmptyMessage(PLAY_RIGHT)
             }else{
+                recoverAnswer()
+                handler?.sendEmptyMessage(PLAY_ERROR)
                 dot_2.visible()
                 iv_error_2.visible()
                 dot_2.postDelayed({
                     dot_2.gone()
                     iv_error_2.gone()
-                },500)
+                },3000)
             }
         }
         rl_check_3.clickDelay {
@@ -132,42 +170,68 @@
                 return@clickDelay
             if (list[questionIndex].completed) //已作答
                 return@clickDelay
+            if (!rl_check_1.isSelected||!rl_check_2.isSelected||!rl_check_3.isSelected){
+                myToast("请先听完")
+                return@clickDelay
+            }
             act.totalCount++
             if (list[questionIndex].correct == answerList[2]){
                 act.rightCount++
                 Log.e(TAG,"选择正确")
                 transAnimation(cl_answer_3,voiceViews[questionIndex])
-                list[questionIndex].completed = true
-                cl_answer_3.callOnClick()
+                nowVoiceView = voiceViews[questionIndex]
+                handler?.sendEmptyMessage(PLAY_RIGHT)
             }else{
+                recoverAnswer()
+                handler?.sendEmptyMessage(PLAY_ERROR)
                 dot_3.visible()
                 iv_error_3.visible()
                 dot_3.postDelayed({
                     dot_3.gone()
                     iv_error_3.gone()
-                },500)
+                },3000)
             }
         }
     }
 
 
-
+    /**
+     * 恢复答案和题目ui
+     */
     fun recover(){
+        showVoiceUi()
+        list.forEach { it.completed = false }
+        recoverAnswer()
+    }
 
+    /**
+     * 只恢复答案ui
+     */
+    private fun recoverAnswer(){
+        rl_check_1.isSelected = false
+        rl_check_2.isSelected = false
+        rl_check_3.isSelected = false
+        if (list.filter { it.completed }.isEmpty()){
+            voiceViews[2].isEnabled = false
+            voiceViews[3].isEnabled = false
+        }else{
+            voiceViews[2].isEnabled = true
+            voiceViews[3].isEnabled = true
+        }
     }
 
     private fun showVoiceUi(){
         list.forEachIndexed { index, subject ->
             if (subject.isQuestion == 1){
-                v3Views[index].setImageResource(R.mipmap.voice_question)
                 voiceViews[index].visible()
             }else{
-                v3Views[index].setImageResource(R.mipmap.voice_answer)
                 voiceViews[index].invisible()
             }
             voiceViews[index].clickDelay {
-                voiceIndex = index
-                handler?.sendEmptyMessage(PLAY_VOICE)
+                if (!playing){
+                    voiceIndex = index
+                    handler?.sendEmptyMessage(PLAY_VOICE)
+                }
             }
         }
     }
@@ -186,6 +250,15 @@
             layoutChanged = true
         }
         questionIndex = position
+        if (questionIndex == 0||questionIndex == 2){
+            iv2_answer_1.setImageResource(R.mipmap.voice_question)
+            iv2_answer_2.setImageResource(R.mipmap.voice_question)
+            iv2_answer_3.setImageResource(R.mipmap.voice_question)
+        }else{
+            iv2_answer_1.setImageResource(R.mipmap.voice_answer)
+            iv2_answer_2.setImageResource(R.mipmap.voice_answer)
+            iv2_answer_3.setImageResource(R.mipmap.voice_answer)
+        }
         rl_check_1.visible()
         rl_check_2.visible()
         rl_check_3.visible()
@@ -273,6 +346,8 @@
 
     override fun onStartPlay() {
         playing = true
+        if (rightPlaying||errorPlaying)
+            return
         v1Views[voiceIndex].gone()
         v2Views[voiceIndex].gone()
         playingViews[voiceIndex].visible()
@@ -296,8 +371,33 @@
         v1Views[voiceIndex].visible()
         v2Views[voiceIndex].visible()
         playingViews[voiceIndex].gone()
+        if (!errorPlaying&&!rightPlaying&&!list[questionIndex].completed){
+            if (voiceIndex == 4){
+                rl_check_1.isSelected = true
+            }
+            if (voiceIndex == 5){
+                rl_check_2.isSelected = true
+            }
+            if (voiceIndex == 6){
+                rl_check_3.isSelected = true
+            }
+        }
+
         if (list.filter { it.completed }.size == 2){ //全部作答,3秒后下一题
             handler?.sendEmptyMessageDelayed(TO_NEXT,3000)
         }
+        if (errorPlaying)
+            errorPlaying = false
+        if (rightPlaying){
+            rightPlaying = false
+            nowVoiceView?.callOnClick()
+            list[questionIndex].completed = true
+            recoverAnswer()
+        }
+    }
+
+    override fun onPause() {
+        super.onPause()
+        player.stopPlayMusic()
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/ui/home/RememberFinishActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/RememberFinishActivity.kt
index 2746115..360d582 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/RememberFinishActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/RememberFinishActivity.kt
@@ -2,14 +2,20 @@
 
 import com.dollearn.student.MainActivity
 import com.dollearn.student.R
+import com.dollearn.student.network.HttpManager
+import com.dollearn.student.network.request
 import com.dollearn.student.ui.TransparentStatusBarActivity
 import kotlinx.android.synthetic.main.activity_finish_remember.*
+import kotlinx.android.synthetic.main.activity_finish_remember.tv_back
+import kotlinx.android.synthetic.main.activity_result.*
 import org.jetbrains.anko.startActivity
 
 class RememberFinishActivity:TransparentStatusBarActivity() {
     override fun setContentView() = R.layout.activity_finish_remember
 
     private val score by lazy { intent.getIntExtra("score",0) }
+    private val id by lazy { intent.getStringExtra("id") }
+    private val time by lazy { intent.getIntExtra("time",0) }
 
     override fun initClick() {
         tv_back.setOnClickListener {
@@ -19,5 +25,8 @@
 
     override fun initView() {
         tv_tip.text = "恭喜你,已听完全部故事!获得${score}积分!"
+        HttpManager.completeStory(0,2,id?:"",time).request(this){ _, data->
+            tv_tip.text = "恭喜你,已听完全部故事!获得${data?:0}积分!"
+        }
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/ui/home/RememberFragment.kt b/app/src/main/java/com/dollearn/student/ui/home/RememberFragment.kt
index 5c0f930..b604ec4 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/RememberFragment.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/RememberFragment.kt
@@ -27,6 +27,7 @@
     val player by lazy { AudioUtils() }
 
     var playing = false //播放中,不能有任何操作
+    var listened = false //是否已播放
 
     override fun onFirstVisibleToUser() {
         player.setOnAudioStatusUpdateListener(this)
@@ -101,6 +102,11 @@
         iv1.visible()
         iv2.visible()
         iv_playing.gone()
+        listened = true
     }
 
+    override fun onPause() {
+        super.onPause()
+        player.stopPlayMusic()
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/ui/home/ResultActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/ResultActivity.kt
index 283da05..02ea593 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/ResultActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/ResultActivity.kt
@@ -2,6 +2,7 @@
 
 import android.content.Context
 import cn.sinata.xldutils.gone
+import cn.sinata.xldutils.invisible
 import cn.sinata.xldutils.visible
 import com.dollearn.student.MainActivity
 import com.dollearn.student.R
@@ -19,6 +20,7 @@
     override fun setContentView() = R.layout.activity_result
 
     private val id by lazy { intent.getStringExtra("id") }
+    private val time by lazy { intent.getIntExtra("time",0) }
     private val type by lazy { intent.getIntExtra("type",0) }
     private val day by lazy { intent.getIntExtra("day",0) }
     private val week by lazy { intent.getIntExtra("week",0) }
@@ -27,7 +29,6 @@
     private val total by lazy { intent.getIntExtra("total",0) }
     private val right by lazy { intent.getIntExtra("right",0) }
     private val score by lazy { intent.getIntExtra("score",0) }
-    private val time by lazy { intent.getIntExtra("time",0) }
 
     private val difficulty by lazy { intent.getIntExtra("difficulty",0) } //游戏难度
 
@@ -47,38 +48,50 @@
     }
 
     override fun initView() {
-        tv_score.text = "恭喜你,已完成全部答题!获得${score}积分!"
         tv_count.text = "${total}次"
         tv_right.text = "${right}次"
         tv_fault.text = "${total-right}次"
-        val rate = (right * 100) / total
+        val rate = if(total == 0) 0 else (right * 100) / total
         tv_rate.text = "正确率:$rate%"
         when(type){
             6->{
                 title = "超级听力"
                 tv_back.visible()
-                tv_last.gone()
-                tv_exit.gone()
+                tv_last.invisible()
+                tv_exit.invisible()
                 HttpManager.gameAchievement(rate,difficulty,id?:"","超级听力",time).request(this){_,data->
+                    tv_score.text = "恭喜你,已完成全部答题!获得${data?:0}积分!"
+
                 }
             }
             7->{
                 title = "超级记忆"
+                tv_score.text = "恭喜你,已完成游戏!获得${score}积分!"
                 tv_back.visible()
-                tv_last.gone()
-                tv_exit.gone()
+                tv_last.invisible()
+                tv_exit.invisible()
                 HttpManager.gameAchievement(rate,difficulty,id?:"","超级记忆",time).request(this){_,data->
+                    tv_score.text = "恭喜你,已完成全部答题!获得${data?:0}积分!"
                 }
             }
             8->{
                 tv_back.visible()
-                tv_last.gone()
-                tv_exit.gone()
-                HttpManager.completeStory(rate,type,id?:"").request(this){_,data->
+                tv_last.invisible()
+                tv_exit.invisible()
+                HttpManager.completeStory(rate,1,id?:"",time).request(this){_,data->
+                    tv_score.text = "恭喜你,已完成全部答题!获得${data?:0}积分!"
+
                 }
             }
             else->{
+                if (type == 5){
+                    title = "音图相配"
+                    tv_back.visible()
+                    tv_last.invisible()
+                    tv_exit.invisible()
+                }
                 HttpManager.completeLearning(rate,time,day,week,season,type,id?:"").request(this){_,data->
+                    tv_score.text = "恭喜你,已完成全部答题!获得${data?:0}积分!"
                 }
             }
         }
diff --git a/app/src/main/java/com/dollearn/student/ui/home/ScannerActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/ScannerActivity.kt
index 9959e0c..ad1b986 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/ScannerActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/ScannerActivity.kt
@@ -3,12 +3,10 @@
 import android.Manifest
 import android.annotation.SuppressLint
 import android.app.Activity
-import android.content.Context
 import android.content.Intent
 import android.graphics.Bitmap
 import android.util.Log
 import androidx.core.content.ContextCompat
-import androidx.core.content.ContextCompat.startActivity
 import androidx.core.os.bundleOf
 import cn.sinata.xldutils.activity.BaseActivity
 import cn.sinata.xldutils.utils.SPUtils
@@ -16,11 +14,8 @@
 import com.google.gson.Gson
 import com.google.zxing.Result
 import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
 import com.dollearn.student.dialog.TipDialog
-import com.dollearn.student.network.HttpManager
 import com.dollearn.student.network.entity.ScanResultBean
-import com.dollearn.student.network.request
 import com.dollearn.student.ui.TransparentStatusBarActivity
 import com.dollearn.student.ui.course.CourseDetailActivity
 import com.dollearn.student.ui.game.GameActivity
@@ -30,7 +25,6 @@
 import com.zxing.scanner.common.Scanner
 import kotlinx.android.synthetic.main.scanner_activity.*
 import org.jetbrains.anko.startActivity
-import org.jetbrains.anko.toast
 
 class ScannerActivity : TransparentStatusBarActivity(), OnScannerCompletionListener {
     companion object {
diff --git a/app/src/main/java/com/dollearn/student/ui/home/ScheduleActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/ScheduleActivity.kt
index 5bb5a4b..512e2ea 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/ScheduleActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/ScheduleActivity.kt
@@ -12,6 +12,7 @@
 import kotlinx.android.synthetic.main.activity_schedul.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
+import org.jetbrains.anko.browse
 
 class ScheduleActivity :TransparentStatusBarActivity(){
     override fun setContentView() = R.layout.activity_schedul
diff --git a/app/src/main/java/com/dollearn/student/ui/home/SuperListenActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/SuperListenActivity.kt
index e3332e5..474d680 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/SuperListenActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/SuperListenActivity.kt
@@ -7,6 +7,7 @@
 import android.view.View
 import androidx.recyclerview.widget.GridLayoutManager
 import cn.sinata.xldutils.gone
+import cn.sinata.xldutils.utils.SPUtils
 import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.visible
 import com.dollearn.student.R
@@ -19,6 +20,7 @@
 import com.dollearn.student.ui.TransparentStatusBarActivity
 import com.dollearn.student.ui.home.adapter.GameAdapter
 import com.dollearn.student.utils.AudioUtils
+import com.dollearn.student.utils.Const
 import com.dollearn.student.utils.interfaces.StringCallback
 import kotlinx.android.synthetic.main.activity_super_listen.*
 import kotlinx.android.synthetic.main.fragmetn_look_img.*
@@ -26,71 +28,58 @@
 class SuperListenActivity : TransparentStatusBarActivity(), AudioUtils.OnAudioStatusUpdateListener {
     override fun setContentView() = R.layout.activity_super_listen
 
-
     private val week by lazy {
         intent.getIntExtra("week",0)
     }
     private val season by lazy {
         intent.getIntExtra("season",0)
     }
-    private var data:GameBean? = null
-    private var index = 0
-    private var handler:Handler? = null
+    var data:GameBean? = null
+    var index = 0
+    var handler:Handler? = null
 
     private var difficulty = 0 //难度
 
-    private val TAG = "Listen====>"
+    val TAG = "Listen====>"
 
-    private val list = arrayListOf<Subject>()
+    val list = arrayListOf<Subject>()
     private val adapter = GameAdapter(list)
 
-    private val PLAY_VOICE = 1
-    private val COUNT_DOWN = 2
+    val PLAY_VOICE = 1
+    val COUNT_DOWN = 2
     private val STUDY_TIME = 3
+
+    val PLAY_RIGHT = 4
+    val PLAY_ERROR = 5
+
+    private val errorVoice by lazy { SPUtils.instance().getString(Const.EV) }
+    private val rightVoice by lazy { SPUtils.instance().getString(Const.RV) }
+
+    private var rightPlaying = false
+    private var errorPlaying = false
 
     private val player by lazy { AudioUtils() }
 
-    private val voiceList = arrayListOf<String>() //声音按顺序播放
+    val voiceList = arrayListOf<String>() //声音按顺序播放
 
     private var TIME = 10 //每题答题时间
-    private var countTime = 10 //倒计时计数
+    private var countTime = 0 //倒计时计数
 
     var totalCount = 0 //总答题次数
     var rightCount = 0 //正确答题次数
     var time = 0 //学习秒数
 
+    var playing = false
+
+    var state = 0 //0:准备听题 1:听题中 2:请作答 3:结束答题
+
     override fun initClick() {
-        adapter.setOnItemClickListener { view, position ->
-            Log.e(TAG,"点击图片:${list[position].name}")
-            Log.e(TAG,"音频position:${index}")
-            Log.e(TAG,"音频路径:${voiceList[index]}")
-
-            val subject = data!!.subjectList[data!!.subjectList.map { it.correct }.indexOf(voiceList[index])] //当前音频对应题目
-            Log.e(TAG,"正确答案:${subject.name}")
-
-            totalCount++
-
-            handler?.removeMessages(COUNT_DOWN) //选择答案后,停止倒计时
-            if (list[position].id == subject.id){
-                rightCount++
-                subject.completed = true
-                subject.right = true
-                handler?.sendEmptyMessage(PLAY_VOICE)
-                adapter.notifyItemChanged(position)
-            }else{
-                subject.completed = true
-                subject.right = false
-                index++
-                startGame()
-            }
-        }
-
         tv_exit.setOnClickListener {
             if (tv_exit.text == "提交"){
-                ResultActivity.startResult(this,0,0,0,6,totalCount,rightCount,list.filter { it.right }.sumBy { 1 },time,data!!.data.id)
+                ResultActivity.startResult(this,0,0,0,6,totalCount,rightCount,list.filter { it.right }.sumBy { 1 },time,data!!.data.id,difficulty)
                 finish()
             }else
-                finish()
+                onBackPressed()
         }
     }
 
@@ -129,7 +118,10 @@
                             player.startPlayMusic(this@SuperListenActivity,voiceList[index])
                     }
                     COUNT_DOWN->{
-                        countTime --
+                        if (!playing){
+                            countTime --
+                            state = 2
+                        }
                         tv_tip.text = "请在${countTime}s内选择答案!"
                         if ( countTime == 0){
                             index++
@@ -138,9 +130,18 @@
                             sendEmptyMessageDelayed(COUNT_DOWN,1000)
                         }
                     }
+                    PLAY_RIGHT->{
+                        rightPlaying = true
+                        player.startPlayMusic(this@SuperListenActivity,rightVoice)
+                    }
+                    PLAY_ERROR->{
+                        errorPlaying = true
+                        player.startPlayMusic(this@SuperListenActivity,errorVoice)
+                    }
                 }
             }
         }
+        handler?.sendEmptyMessageDelayed(STUDY_TIME,1000)
     }
 
     private fun refreshUi() {
@@ -153,7 +154,7 @@
         list.shuffle() //图片随机顺序
         rv_list.adapter = adapter
         Log.e(TAG,"图片打乱后顺序:${list.joinToString(",,,") { it.name }}")
-
+        TIME = data!!.data.time.toInt()
         val countdownDialog = CountdownDialog()
         countdownDialog.callback = object :StringCallback{
             override fun onResult(rst: String) {
@@ -164,17 +165,19 @@
         countdownDialog.show(supportFragmentManager,"timer")
     }
 
-    private fun startGame() {
+    fun startGame() {
         if (index < voiceList.size){
             Log.e(TAG,"开始答题:index=${index}")
             tv_sort.text = (index+1).toString()
             handler?.removeMessages(COUNT_DOWN)
             countTime = TIME //重置答题时间
             tv_tip.text = "准备听题"
+            state = 0
             handler?.sendEmptyMessageDelayed(PLAY_VOICE,3000)
         }else{
             tv_sort.visibility = View.INVISIBLE
             tv_tip.text = ""
+            state = 3
             tv_end.text = "已完成全部问题"
             tv_exit.text = "提交"
             handler?.removeMessages(STUDY_TIME)
@@ -188,7 +191,11 @@
     }
 
     override fun onStartPlay() {
+        playing = true
+        if (errorPlaying||rightPlaying)
+            return
         if (!data!!.subjectList[data!!.subjectList.map { it.correct }.indexOf(voiceList[index])].completed){//首次播放
+            state = 1
             tv_tip.text = "请在${countTime}s内选择答案!"
             handler?.sendEmptyMessageDelayed(COUNT_DOWN,1000)
         }
@@ -198,6 +205,7 @@
     }
 
     override fun onFinishPlay() {
+        playing = false
         iv1.visible()
         iv2.visible()
         iv_playing.gone()
@@ -205,6 +213,29 @@
             index++
             startGame()
         }
+        if (errorPlaying)
+            errorPlaying = false
+        if (rightPlaying){
+            rightPlaying = false
+            val subject = data!!.subjectList[data!!.subjectList.map { it.correct }.indexOf(voiceList[index])] //当前音频对应题目
+            subject.completed = true
+            handler?.sendEmptyMessage(PLAY_VOICE)
+        }
     }
 
+    override fun onBackPressed() {
+        HttpManager.exitGameOrStory(time).request(this){_,_->
+            super.onBackPressed()
+        }
+    }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        handler?.removeCallbacksAndMessages(null)
+    }
+
+    override fun onPause() {
+        super.onPause()
+        player.stopPlayMusic()
+    }
 }
diff --git a/app/src/main/java/com/dollearn/student/ui/home/WeekSelectActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/WeekSelectActivity.kt
index 29d38bd..f2ac65e 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/WeekSelectActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/WeekSelectActivity.kt
@@ -29,7 +29,6 @@
 
         weekAdapter.setOnItemClickListener { view, position ->
             startActivity<ScheduleActivity>("week" to weeks[position].week,"season" to seasonAdapter.checked+1)
-            finish()
         }
     }
 
diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/CouponAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/CouponAdapter.kt
deleted file mode 100644
index f03811f..0000000
--- a/app/src/main/java/com/dollearn/student/ui/home/adapter/CouponAdapter.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.dollearn.student.ui.home.adapter
-
-import android.widget.ImageView
-import cn.sinata.xldutils.adapter.HFRecyclerAdapter
-import cn.sinata.xldutils.adapter.util.ViewHolder
-import cn.sinata.xldutils.utils.SpanBuilder
-import com.dollearn.student.R
-import com.dollearn.student.network.entity.Coupon
-import org.jetbrains.anko.imageResource
-import java.util.ArrayList
-
-class CouponAdapter(list: ArrayList<Coupon>):HFRecyclerAdapter<Coupon>(list, R.layout.item_coupon) {
-    var checked = 0L
-    override fun onBind(holder: ViewHolder, position: Int, data: Coupon) {
-        holder.setText(R.id.tv_price,SpanBuilder("¥${data.favorable}").size(0,1,17).build())
-        holder.setText(R.id.tv_name,data.name)
-        holder.setText(R.id.tv_condition,data.useCondition)
-        holder.setText(R.id.tv_deadline,"有效期至${data.effectiveTime}")
-        holder.bind<ImageView>(R.id.iv_check).imageResource = if (data.id == checked) R.mipmap.coupon_checked else R.mipmap.coupon_uncheck
-    }
-
-    companion object{
-        const val TYPE_CHOOSE = 1
-        const val TYPE_COURSE_DETAIL = 2
-    }
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/GameAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/GameAdapter.kt
index 21a4003..28c77fe 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/adapter/GameAdapter.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/adapter/GameAdapter.kt
@@ -1,22 +1,79 @@
 package com.dollearn.student.ui.home.adapter
 
+import android.util.Log
 import android.view.View
+import android.widget.ImageView
+import androidx.constraintlayout.motion.widget.MotionLayout
 import cn.sinata.xldutils.adapter.HFRecyclerAdapter
 import cn.sinata.xldutils.adapter.util.ViewHolder
 import com.dollearn.student.R
 import com.dollearn.student.network.entity.Subject
 import com.dollearn.student.ui.home.SuperListenActivity
+import com.dollearn.student.utils.Const
+import com.dollearn.student.utils.event.EmptyEvent
+import com.dollearn.student.utils.event.IntEvent
 import com.dollearn.student.utils.extention.clickDelay
 import com.facebook.drawee.view.SimpleDraweeView
+import kotlinx.android.synthetic.main.fragment_listen.*
+import org.greenrobot.eventbus.EventBus
 import java.util.ArrayList
 
 class GameAdapter(list: ArrayList<Subject>):HFRecyclerAdapter<Subject>(list, R.layout.item_game_1) {
     override fun onBind(holder: ViewHolder, position: Int, data: Subject) {
         holder.bind<SimpleDraweeView>(R.id.iv_img).setImageURI(data.img)
         val view = holder.bind<View>(R.id.cl_voice_end_1)
+        val motion = holder.bind<MotionLayout>(R.id.motion)
+        motion.progress = 0f
+        val ivResult = holder.bind<ImageView>(R.id.result_1)
         view.visibility = if (data.right) View.VISIBLE else View.GONE
         view.clickDelay {
 //            (context as SuperListenActivity)
         }
+        val act = context as SuperListenActivity
+        holder.itemView.setOnClickListener {
+            if (act.playing||act.index>act.voiceList.size-1)
+                return@setOnClickListener
+            if (act.state!=2)
+                return@setOnClickListener
+            Log.e(act.TAG,"点击图片:${act.list[position].name}")
+            Log.e(act.TAG,"音频position:${act.index}")
+            Log.e(act.TAG,"音频路径:${act.voiceList[act.index]}")
+
+            val subject = act.data!!.subjectList[act.data!!.subjectList.map { it.correct }.indexOf(act.voiceList[act.index])] //当前音频对应题目
+            Log.e(act.TAG,"正确答案:${subject.name}")
+
+            act.totalCount++
+
+            act.handler?.removeMessages(act.COUNT_DOWN) //选择答案后,停止倒计时
+            if (data.id == subject.id){
+                ivResult.setImageResource(R.mipmap.successs)
+                act.handler?.sendEmptyMessage(act.PLAY_RIGHT)
+                act.rightCount++
+                subject.right = true
+                notifyItemChanged(position)
+            }else{
+                act.handler?.sendEmptyMessage(act.PLAY_ERROR) //选择答案后,停止倒计时
+                ivResult.setImageResource(R.mipmap.zhifushibai)
+                subject.completed = true
+                subject.right = false
+                act.index++
+                act.startGame()
+            }
+            motion.transitionToEnd()
+            motion.setTransitionListener(object :MotionLayout.TransitionListener{
+                override fun onTransitionStarted(p0: MotionLayout?, p1: Int, p2: Int) {
+                }
+
+                override fun onTransitionChange(p0: MotionLayout?, p1: Int, p2: Int, p3: Float) {
+                }
+
+                override fun onTransitionCompleted(p0: MotionLayout?, p1: Int) {
+                    motion.progress = 0f
+                }
+
+                override fun onTransitionTrigger(p0: MotionLayout?, p1: Int, p2: Boolean, p3: Float) {
+                }
+            })
+        }
     }
 }
diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/WeekAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/WeekAdapter.kt
index acc1765..759d838 100644
--- a/app/src/main/java/com/dollearn/student/ui/home/adapter/WeekAdapter.kt
+++ b/app/src/main/java/com/dollearn/student/ui/home/adapter/WeekAdapter.kt
@@ -5,13 +5,14 @@
 import cn.sinata.xldutils.adapter.util.ViewHolder
 import com.dollearn.student.R
 import com.dollearn.student.network.entity.Week
+import com.dollearn.student.utils.extention.formatToChinese
 import org.jetbrains.anko.backgroundResource
 import java.util.ArrayList
 
 class WeekAdapter(weekList: ArrayList<Week>) :HFRecyclerAdapter<Week>(weekList, R.layout.item_week){
     var checked = -1
     override fun onBind(holder: ViewHolder, position: Int, data: Week) {
-        holder.setText(R.id.tv_week,"第${data.week}周")
+        holder.setText(R.id.tv_week,"第${data.week.formatToChinese()}周")
         holder.setText(R.id.tv_name,data.title)
         holder.setText(R.id.tv_score,"完成后可获积分数:${data.totalIntegral}")
         holder.bind<View>(R.id.ll_week).backgroundResource = getWeekBg(position)
diff --git a/app/src/main/java/com/dollearn/student/ui/login/LoginActivity.kt b/app/src/main/java/com/dollearn/student/ui/login/LoginActivity.kt
index efd98e6..3de1e3d 100644
--- a/app/src/main/java/com/dollearn/student/ui/login/LoginActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/login/LoginActivity.kt
@@ -54,6 +54,7 @@
         }
 
         tv_privacy_rule.clickDelay {
+            showDialog()
             HttpManager.getH5(LoginRuleDialog.TYPE_PRIVACY).request(this@LoginActivity){ _, data->
                 data?.let {
                     startActivityForResult<H5Activity>(1,"title" to "隐私协议","url" to it)
@@ -61,6 +62,7 @@
             }
         }
         tv_user_rule.clickDelay {
+            showDialog()
             HttpManager.getH5(LoginRuleDialog.TYPE_USER).request(this@LoginActivity){ _, data->
                 data?.let {
                     startActivityForResult<H5Activity>(2,"title" to "用户协议","url" to it)
diff --git a/app/src/main/java/com/dollearn/student/ui/login/RegisterActivity.kt b/app/src/main/java/com/dollearn/student/ui/login/RegisterActivity.kt
index 1d381f0..47cda36 100644
--- a/app/src/main/java/com/dollearn/student/ui/login/RegisterActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/login/RegisterActivity.kt
@@ -4,7 +4,6 @@
 import android.app.Activity
 import android.content.Intent
 import android.os.CountDownTimer
-import android.text.Editable
 import android.text.method.HideReturnsTransformationMethod
 import android.text.method.PasswordTransformationMethod
 import androidx.core.os.bundleOf
@@ -13,18 +12,15 @@
 import cn.sinata.xldutils.visible
 import com.amap.api.location.AMapLocationListener
 import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.DollearnApplication
 import com.dollearn.student.dialog.TipDialog
 import com.dollearn.student.network.HttpManager
 import com.dollearn.student.network.request
-import com.dollearn.student.ui.H5Activity
 import com.dollearn.student.ui.TransparentStatusBarActivity
 import com.dollearn.student.utils.AMapKit
-import com.dollearn.student.utils.SimpleTextWatcher
 import com.tbruyelle.rxpermissions2.RxPermissions
 import kotlinx.android.synthetic.main.activity_register.*
 import org.jetbrains.anko.sdk27.coroutines.onClick
-import org.jetbrains.anko.startActivity
 
 class RegisterActivity : TransparentStatusBarActivity() {
     override fun setContentView() = R.layout.activity_register
@@ -116,17 +112,17 @@
      * 有权限的情况获取定位
      */
     private fun getLocation(phone:String,pwd:String,code:String,invitePhone:String){
-        if (WeparkApplication.lat!=null)
+        if (DollearnApplication.lat!=null)
             next(phone, pwd, code, invitePhone)
         else{
             showDialog("正在获取定位...")
             AMapKit.initLocation(this, AMapLocationListener {
-                WeparkApplication.lat = it.latitude
-                WeparkApplication.lon = it.longitude
-                WeparkApplication.province = it.province
-                WeparkApplication.provinceCode = "${it.adCode.substring(0, 3)}000"
-                WeparkApplication.cityName = it.city
-                WeparkApplication.cityCode = "${it.adCode.substring(0, 4)}00"
+                DollearnApplication.lat = it.latitude
+                DollearnApplication.lon = it.longitude
+                DollearnApplication.province = it.province
+                DollearnApplication.provinceCode = "${it.adCode.substring(0, 3)}000"
+                DollearnApplication.cityName = it.city
+                DollearnApplication.cityCode = "${it.adCode.substring(0, 4)}00"
                 dismissDialog()
                 next(phone, pwd, code, invitePhone)
             })
@@ -136,7 +132,7 @@
     private fun next(phone:String,pwd:String,code:String,invitePhone:String){
         tv_action.isEnabled = false
         if (type == TYPE_BIND){
-            HttpManager.bindPhone(phone, code,if (invitePhone.isNullOrEmpty()) null else invitePhone,openid , WeparkApplication.lat,WeparkApplication.lon)
+            HttpManager.bindPhone(phone, code,if (invitePhone.isNullOrEmpty()) null else invitePhone,openid , DollearnApplication.lat,DollearnApplication.lon)
                 .request(this@RegisterActivity,success = {_,data->
                     val intent = Intent()
                     intent.putExtra("token",data?.optString("token"))
@@ -148,7 +144,7 @@
                 }
         }else{
             HttpManager.register(type,phone, pwd.md5(), code,if (invitePhone.isNullOrEmpty()) null else invitePhone,if (type == TYPE_BIND) openid else null,
-                WeparkApplication.lat,WeparkApplication.lon)
+                DollearnApplication.lat,DollearnApplication.lon)
                 .request(this@RegisterActivity,success = {_,_->
                     myToast(if (type == TYPE_REGISTER)"注册成功" else "密码修改成功")
                     finish()
diff --git a/app/src/main/java/com/dollearn/student/ui/mine/AddressManageActivity.kt b/app/src/main/java/com/dollearn/student/ui/mine/AddressManageActivity.kt
index 7260b10..3172c7a 100644
--- a/app/src/main/java/com/dollearn/student/ui/mine/AddressManageActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/mine/AddressManageActivity.kt
@@ -18,11 +18,21 @@
 
     private val list = arrayListOf<Recipient>()
     private val adapter = AddressManageAdapter(list)
+    private val canChoose by lazy { intent.getBooleanExtra("canChoose",false) }
 
     override fun initClick() {
         tv_add.setOnClickListener {
             startActivityForResult<AddAddressActivity>(1)
         }
+        adapter.setOnItemClickListener { view, position ->
+            if (canChoose){
+                val intent = Intent()
+                intent.putExtra("address",list[position])
+                setResult(RESULT_OK,intent)
+                finish()
+            }
+        }
+
     }
 
     override fun initView() {
diff --git a/app/src/main/java/com/dollearn/student/ui/mine/LearnRecordActivity.kt b/app/src/main/java/com/dollearn/student/ui/mine/LearnRecordActivity.kt
index bade8d6..ae17e30 100644
--- a/app/src/main/java/com/dollearn/student/ui/mine/LearnRecordActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/mine/LearnRecordActivity.kt
@@ -7,6 +7,7 @@
 import com.dollearn.student.network.request
 import com.dollearn.student.ui.TransparentStatusBarActivity
 import com.dollearn.student.ui.mine.adapter.GameRecordAdapter
+import com.dollearn.student.utils.extention.formatToChinese
 import kotlinx.android.synthetic.main.activity_learn_record.*
 
 class LearnRecordActivity : TransparentStatusBarActivity() {
@@ -31,8 +32,8 @@
             list.clear()
             list.addAll(data?.gameRecordList?: arrayListOf())
             adapter.notifyDataSetChanged()
-            tv_current.text = "当前进度:周目${data?.record?.week}"
-            tv_last.text = "剩余进度:${data?.record?.week}周目"
+            tv_current.text = "当前进度:周目${(data?.record?.week?:0).formatToChinese()}"
+            tv_last.text = "剩余进度:${(data?.record?.surplus?:0).formatToChinese()}周目"
             tv_total.text = "${data?.record?.totalStudy}小时"
             tv_today.text = "${data?.record?.todayStudy}小时"
             tv_week.text = "${data?.record?.weekStudy}小时"
diff --git a/app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt b/app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt
index 2d55c28..5e23325 100644
--- a/app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt
+++ b/app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt
@@ -1,28 +1,33 @@
 package com.dollearn.student.ui.mine
 
 import androidx.core.os.bundleOf
-import androidx.recyclerview.widget.LinearLayoutManager
 import cn.sinata.xldutils.fragment.BaseFragment
 import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.showAllowingStateLoss
 import com.dollearn.student.MainActivity
 import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.dialog.ShareDialog
 import com.dollearn.student.dialog.TipDialog
-import com.dollearn.student.network.entity.Commodity
+import com.dollearn.student.network.Apis
+import com.dollearn.student.network.HttpManager
 import com.dollearn.student.network.entity.UserBean
-import com.dollearn.student.network.entity.WelfareHomeData
-import com.dollearn.student.ui.course.WelfareActivity
-import com.dollearn.student.ui.home.JoinVipActivity
+import com.dollearn.student.network.requestByF
 import com.dollearn.student.ui.login.LoginActivity
 import com.dollearn.student.ui.welfare.*
-import com.dollearn.student.ui.welfare.adapter.WelfareGoodsAdapter
 import com.dollearn.student.utils.Const
 import com.dollearn.student.utils.event.EmptyEvent
 import com.dollearn.student.utils.extention.clickDelay
+import com.dollearn.student.utils.interfaces.StringCallback
+import com.share.utils.ShareUtils
+import com.umeng.socialize.UMShareListener
+import com.umeng.socialize.bean.SHARE_MEDIA
+import com.umeng.socialize.media.UMImage
+import kotlinx.android.synthetic.main.form_view_layout.*
 import kotlinx.android.synthetic.main.fragment_mine.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.jetbrains.anko.support.v4.startActivity
+import org.jetbrains.anko.support.v4.toast
 
 class MineFragment : BaseFragment() {
     override fun contentViewId() = R.layout.fragment_mine
@@ -67,6 +72,32 @@
         tv_address.setOnClickListener {
             startActivity<AddressManageActivity>()
         }
+        tv_share.setOnClickListener {
+            val shareDialog = ShareDialog()
+            shareDialog.callback = object :StringCallback{
+                override fun onResult(rst: String) {
+                    HttpManager.shareInfo().requestByF(this@MineFragment){_,data->
+                        ShareUtils.share(requireActivity(),if (rst == "wx") SHARE_MEDIA.WEIXIN else SHARE_MEDIA.WEIXIN_CIRCLE,data?.title?:"孩子自己就学会的英语",if (rst == "wx") "海豚英语智能教育平台" else data?.title?:"孩子自己就学会的英语", Apis.SHARE_URL,
+                            UMImage(requireContext(),data?.img?:""),object :UMShareListener{
+                                override fun onStart(p0: SHARE_MEDIA?) {
+                                }
+
+                                override fun onResult(p0: SHARE_MEDIA?) {
+                                    toast("已分享")
+                                }
+
+                                override fun onError(p0: SHARE_MEDIA?, p1: Throwable?) {
+                                }
+
+                                override fun onCancel(p0: SHARE_MEDIA?) {
+                                }
+                            },""
+                        )
+                    }
+                }
+            }
+            shareDialog.showAllowingStateLoss(childFragmentManager,"share")
+        }
     }
 
     @Subscribe
diff --git a/app/src/main/java/com/dollearn/student/ui/shop/ExchangeActivity.kt b/app/src/main/java/com/dollearn/student/ui/shop/ExchangeActivity.kt
index b533963..99c69e1 100644
--- a/app/src/main/java/com/dollearn/student/ui/shop/ExchangeActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/shop/ExchangeActivity.kt
@@ -12,6 +12,7 @@
 import com.dollearn.student.network.request
 import com.dollearn.student.ui.TransparentStatusBarActivity
 import com.dollearn.student.ui.home.PayResultActivity
+import com.dollearn.student.ui.mine.AddressManageActivity
 import com.dollearn.student.ui.mine.ChangeAddressActivity
 import com.dollearn.student.utils.Const
 import com.dollearn.student.utils.event.EmptyEvent
@@ -48,11 +49,7 @@
         }
 
         cl_address.setOnClickListener {
-            if (recipient?.id.isNullOrEmpty()){
-                startActivityForResult<AddAddressActivity>(1)
-            }else{
-                startActivityForResult<ChangeAddressActivity>(2)
-            }
+            startActivityForResult<AddressManageActivity>(2,"canChoose" to true)
         }
 
         tv_action.setOnClickListener {
diff --git a/app/src/main/java/com/dollearn/student/ui/shop/ShopFragment.kt b/app/src/main/java/com/dollearn/student/ui/shop/ShopFragment.kt
index 8572fda..be18eb6 100644
--- a/app/src/main/java/com/dollearn/student/ui/shop/ShopFragment.kt
+++ b/app/src/main/java/com/dollearn/student/ui/shop/ShopFragment.kt
@@ -1,5 +1,8 @@
 package com.dollearn.student.ui.shop
 
+import android.content.Context
+import android.view.inputmethod.InputMethodManager
+import androidx.core.content.ContextCompat.getSystemService
 import androidx.recyclerview.widget.GridLayoutManager
 import androidx.recyclerview.widget.LinearLayoutManager
 import cn.sinata.xldutils.fragment.BaseFragment
@@ -56,6 +59,8 @@
         }
 
         tv_search.setOnClickListener {
+            (requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager)
+                .hideSoftInputFromWindow(requireActivity().currentFocus!!.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
             if (refreshLayout.isRefreshing)
                 return@setOnClickListener
             search = et_search.text.toString()
@@ -78,7 +83,7 @@
     }
 
     private fun getGoods(){
-        HttpManager.goodListStudy(page,search,goodsTypes.filter { it.checked }.map { it.name }).requestByF(this,success = {_,data->
+        HttpManager.goodListStudy(page,search,goodsTypes.filter { it.checked }.map { it.id.toString() }).requestByF(this,success = {_,data->
             if (page == 1)
                 goods.clear()
             goods.addAll(data ?.records?: arrayListOf())
diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/CouponActivity.kt b/app/src/main/java/com/dollearn/student/ui/welfare/CouponActivity.kt
deleted file mode 100644
index 0c15948..0000000
--- a/app/src/main/java/com/dollearn/student/ui/welfare/CouponActivity.kt
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.dollearn.student.ui.welfare
-
-import android.view.View
-import androidx.fragment.app.Fragment
-import androidx.viewpager.widget.ViewPager
-import com.dollearn.student.R
-import com.dollearn.student.dialog.CouponFilterPop
-import com.dollearn.student.ui.TransparentStatusBarActivity
-import com.dollearn.student.utils.interfaces.StringCallback
-import kotlinx.android.synthetic.main.activity_coupon.*
-
-class CouponActivity : TransparentStatusBarActivity() {
-    override fun setContentView() = R.layout.activity_coupon
-
-    private val frags = arrayListOf<Fragment>()
-    var state:Int? = null
-
-    override fun initClick() {
-        tv_filter.setOnClickListener {
-            val menuPop = CouponFilterPop(this)
-            menuPop.setCallback(object : StringCallback {
-                override fun onResult(rst: String) {
-                    tv_filter.text = rst
-                    state = when(rst){
-                        "未使用"-> 1
-                        "已使用"-> 2
-                        "已过期"-> 3
-                        else -> null
-                    }
-                    (frags[view_pager.currentItem] as CouponFragment).refresh()
-                }
-            })
-            menuPop.contentView
-                .measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED)
-            menuPop.showAsDropDown(tv_filter,0,0,0)
-        }
-    }
-
-    override fun initView() {
-        frags.add(CouponFragment.newInstance(CouponFragment.TYPE_ALL))
-        frags.add(CouponFragment.newInstance(CouponFragment.TYPE_FULL))
-        frags.add(CouponFragment.newInstance(CouponFragment.TYPE_MONEY))
-        frags.add(CouponFragment.newInstance(CouponFragment.TYPE_FREE))
-        tab_top.setViewPager(view_pager, arrayOf("全部","满减券","代金券","体验券"),this,frags)
-        view_pager.addOnPageChangeListener(object :ViewPager.SimpleOnPageChangeListener(){
-            override fun onPageSelected(position: Int) {
-                super.onPageSelected(position)
-                (frags[position] as CouponFragment).refresh()
-            }
-        })
-        view_pager.offscreenPageLimit = 4
-    }
-
-
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/CouponFragment.kt b/app/src/main/java/com/dollearn/student/ui/welfare/CouponFragment.kt
deleted file mode 100644
index 95b4cc5..0000000
--- a/app/src/main/java/com/dollearn/student/ui/welfare/CouponFragment.kt
+++ /dev/null
@@ -1,69 +0,0 @@
-package com.dollearn.student.ui.welfare
-
-import androidx.core.os.bundleOf
-import androidx.recyclerview.widget.LinearLayoutManager
-import cn.sinata.xldutils.fragment.BaseFragment
-import com.dollearn.student.R
-import com.dollearn.student.dialog.CheckShopsDialog
-import com.dollearn.student.dialog.LoginRuleDialog
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.Coupon
-import com.dollearn.student.network.requestByF
-import com.dollearn.student.ui.welfare.adapter.CouponDetailAdapter
-import com.dollearn.student.utils.interfaces.StringCallback
-import kotlinx.android.synthetic.main.layout_common_list.*
-
-class CouponFragment:BaseFragment() {
-    override fun contentViewId() = R.layout.layout_common_list
-
-    private val type by lazy { arguments?.getInt("type", TYPE_ALL)?: TYPE_ALL }
-    private val list = arrayListOf<Coupon>()
-    private val adapter = CouponDetailAdapter(list)
-
-    override fun onFirstVisibleToUser() {
-        refreshLayout.setEnableLoadMore(false)
-        refreshLayout.setOnRefreshListener {
-            getData()
-        }
-        rv_list.layoutManager = LinearLayoutManager(requireContext())
-        rv_list.adapter = adapter
-        adapter.callback = object :StringCallback{
-            override fun onResult(rst: String) {
-                val coupon = list[rst.toInt()]
-                if (coupon.useCondition == "3")
-                    CheckShopsDialog.show(childFragmentManager, coupon.cityOrStore?:"",CheckShopsDialog.TYPE_COUPON_USAGE)
-                else if (coupon.useCondition == "2")
-                    CheckShopsDialog.show(childFragmentManager, coupon.cityOrStore?:"",CheckShopsDialog.TYPE_COUPON_CITY)
-            }
-        }
-        getData()
-    }
-
-    fun refresh(){
-        refreshLayout.autoRefresh()
-    }
-
-    private fun getData(){
-        HttpManager.queryCouponPackage((requireActivity() as CouponActivity).state,if (type == TYPE_ALL) null else type).requestByF(this,success = {_,data->
-            refreshLayout.finishRefresh()
-            list.clear()
-            list.addAll(data?: arrayListOf())
-            adapter.notifyDataSetChanged()
-        }){_,_->
-            refreshLayout.finishRefresh(false)
-        }
-    }
-
-    companion object{
-        const val TYPE_ALL = 0 //全部
-        const val TYPE_FULL = 1 //满减
-        const val TYPE_MONEY = 2  //代金券
-        const val TYPE_FREE = 3 //体验
-
-        fun newInstance(type:Int):CouponFragment{
-            val couponFragment = CouponFragment()
-            couponFragment.arguments = bundleOf("type" to type)
-            return couponFragment
-        }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/ExchangeRecordActivity.kt b/app/src/main/java/com/dollearn/student/ui/welfare/ExchangeRecordActivity.kt
index 9b87869..07212db 100644
--- a/app/src/main/java/com/dollearn/student/ui/welfare/ExchangeRecordActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/welfare/ExchangeRecordActivity.kt
@@ -15,7 +15,7 @@
 
     private val list = arrayListOf<ExchangeRecord>()
     private val adapter = ExchangeRecordAdapter(list)
-
+    private var page = 1
 
     override fun initClick() {
 
@@ -24,14 +24,37 @@
     override fun initView() {
         rv_record.layoutManager = LinearLayoutManager(this)
         rv_record.adapter = adapter
+        refreshLayout.setOnRefreshListener {
+            page = 1
+            getData()
+        }
+        refreshLayout.setOnLoadMoreListener {
+            page++
+            getData()
+        }
         getData()
     }
 
     private fun getData() {
-        HttpManager.exchangeRecord().request(this){_,data->
-            list.clear()
-            list.addAll(data?: arrayListOf())
+        HttpManager.exchangeRecord(page).request(this,success = {_,data->
+            if (page == 1)
+                list.clear()
+            list.addAll(data?.records?: arrayListOf())
             adapter.notifyDataSetChanged()
+            if (list.isEmpty())
+                refreshLayout.finishRefreshWithNoMoreData()
+            else if (data?.records.isNullOrEmpty())
+                refreshLayout.finishLoadMoreWithNoMoreData()
+            else if (page == 1)
+                refreshLayout.finishRefresh()
+            else
+                refreshLayout.finishLoadMore()
+        }){_,_->
+            if (page == 1)
+                refreshLayout.finishRefresh(false)
+            else
+                refreshLayout.finishLoadMore(false)
+            page--
         }
     }
 
diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/GoodsDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/welfare/GoodsDetailActivity.kt
index 6164ef5..77a5825 100644
--- a/app/src/main/java/com/dollearn/student/ui/welfare/GoodsDetailActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/welfare/GoodsDetailActivity.kt
@@ -39,6 +39,12 @@
 
     override fun initClick() {
         tv_action.setOnClickListener {
+            if (score<goods?.good?.integral?:0){
+                val tipDialog = TipDialog()
+                tipDialog.arguments = bundleOf("isAlert" to true,"msg" to "兑换失败,当前剩余积分不足!","ok" to "关闭")
+                tipDialog.show(supportFragmentManager,"tip")
+                return@setOnClickListener
+            }
             tv_action.isEnabled = false
             showDialog()
             HttpManager.redeemNow(id).request(this,false, {_,data->
@@ -88,7 +94,7 @@
                 tv_value.paintFlags = tv_value.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG
                 tv_name.text = good.name
                 tv_category.text = goodTypes?.joinToString ("|"){ it.name }
-                tv_sold.text = "剩余数量:%d|可换数量:%d|%d人已换".format(good.surplus,good.userCount,good.inventory?:0)
+                tv_sold.text = "%s%s%d人已换".format(if (residueNumber == null) "" else "剩余数量:${residueNumber}|",if (good.userCount == null) "" else "可换数量:${good.userCount}|", exchangeNumber)
                 val sHead =
                     "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>"
                 webView!!.loadDataWithBaseURL(null, sHead + good.detail, "text/html", "utf-8", null)
diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/ScoreShopActivity.kt b/app/src/main/java/com/dollearn/student/ui/welfare/ScoreShopActivity.kt
deleted file mode 100644
index 3050143..0000000
--- a/app/src/main/java/com/dollearn/student/ui/welfare/ScoreShopActivity.kt
+++ /dev/null
@@ -1,226 +0,0 @@
-package com.dollearn.student.ui.welfare
-
-import android.app.Activity
-import android.content.Intent
-import android.view.animation.AnimationUtils
-import androidx.core.os.bundleOf
-import androidx.recyclerview.widget.GridLayoutManager
-import androidx.recyclerview.widget.LinearLayoutManager
-import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.showAllowingStateLoss
-import cn.sinata.xldutils.visible
-import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
-import com.dollearn.student.dialog.ChooseShopDialog
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.Goods
-import com.dollearn.student.network.request
-import com.dollearn.student.ui.TransparentStatusBarActivity
-import com.dollearn.student.ui.home.adapter.FilterAdapter
-import com.dollearn.student.ui.welfare.adapter.GoodsGridAdapter
-import com.dollearn.student.utils.event.EmptyEvent
-import com.dollearn.student.utils.extention.clickDelay
-import com.dollearn.student.utils.interfaces.StringCallback
-import kotlinx.android.synthetic.main.activity_score_shop.*
-import org.greenrobot.eventbus.EventBus
-import org.greenrobot.eventbus.Subscribe
-import org.jetbrains.anko.startActivity
-import org.jetbrains.anko.startActivityForResult
-
-class ScoreShopActivity : TransparentStatusBarActivity() {
-    override fun setContentView() = R.layout.activity_score_shop
-
-    private val isTicket by lazy { intent.getBooleanExtra("isTicket",false) } //true:直接展示门票商品
-
-    private var page = 1
-    private var score = 0 //当前积分
-
-    //筛选条件
-    var typeId: Int? = null //商品类型: 1实物 2运动营 3门票 4优惠券
-    var sort: Int? = null //排序规则 1积分高到低 2积分从低到高 3兑换从高到低
-    var search: String? = null //搜索
-    var shopId: String? = null
-
-    private val typeList = arrayListOf("全部", "实体商品", "运动营商品", "门票商品", "优惠券")
-    private val sortList = arrayListOf("默认排序", "积分从高到低", "积分从低到高", "兑换从高到低")
-    private val filters = arrayListOf<String>() //筛选选项
-    private val filterAdapter = FilterAdapter(filters)
-
-    private val list = arrayListOf<Goods>()
-    private val adapter = GoodsGridAdapter(list)
-
-    override fun initClick() {
-        tv_search.clickDelay {
-            val s = et_search.text.toString()
-            search = if (s.isNullOrEmpty()) null else s
-            refreshLayout.autoRefresh()
-        }
-        cb_sort.setOnCheckedChangeListener { buttonView, isChecked ->
-            if (!isChecked)
-                closeFilter()
-            else {
-                if (cb_type.isChecked)
-                    cb_type.isChecked = false
-                bg_filter.visible()
-                rv_filter.visible()
-                val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.popup_in_from_top)
-                rv_filter.startAnimation(loadAnimation)
-                filters.clear()
-                filters.addAll(sortList)
-                filterAdapter.checkedIndex = sort ?: 0
-                filterAdapter.notifyDataSetChanged()
-            }
-        }
-        cb_type.setOnCheckedChangeListener { buttonView, isChecked ->
-            if (!isChecked)
-                closeFilter()
-            else {
-                if (cb_sort.isChecked)
-                    cb_sort.isChecked = false
-                bg_filter.visible()
-                rv_filter.visible()
-                val loadAnimation = AnimationUtils.loadAnimation(this, R.anim.popup_in_from_top)
-                rv_filter.startAnimation(loadAnimation)
-                filters.clear()
-                filters.addAll(typeList)
-                filterAdapter.checkedIndex = typeId ?: 0
-                filterAdapter.notifyDataSetChanged()
-            }
-        }
-        cb_syshop.setOnCheckedChangeListener { buttonView, isChecked ->
-            if (!isChecked)
-                closeFilter()
-            else {
-                if (cb_syshop.isChecked)
-                    cb_syshop.isChecked = false
-                if (cb_sort.isChecked)
-                    cb_sort.isChecked = false
-                if (cb_type.isChecked)
-                    cb_type.isChecked = false
-                val chooseShopDialog = ChooseShopDialog()
-                chooseShopDialog.arguments =
-                    bundleOf("scoreshopUse" to true)
-                chooseShopDialog.showAllowingStateLoss(supportFragmentManager, "shop")
-                chooseShopDialog.stringCallback = object : StringCallback {
-                    override fun onResult(rst: String) {
-                        if (rst.isNotEmpty()) {
-                            rst.split("-*-*").apply {
-                                shopId = this[0]
-                                cb_syshop.text = this[1]
-                            }
-
-
-                        } else {
-                            shopId = null
-                            cb_syshop.text = "适用门店"
-                        }
-
-
-                        refreshLayout.autoRefresh()
-
-                    }
-                }
-
-            }
-        }
-        filterAdapter.setOnItemClickListener { view, position ->
-            if (cb_type.isChecked) {
-                cb_type.isChecked = false
-                typeId = if (position == 0) null else position
-                cb_type.text = if (position == 0) "商品类型" else typeList[position]
-            } else {
-                cb_sort.isChecked = false
-                sort = if (position == 0) null else position
-                cb_sort.text = if (position == 0) "默认排序" else sortList[position]
-            }
-            refreshLayout.autoRefresh()
-        }
-        adapter.setOnItemClickListener { view, position ->
-
-        }
-        tv_score_record.setOnClickListener {
-            startActivity<RechargeRecordActivity>("type" to RechargeRecordActivity.TYPE_SCORE)
-        }
-        tv_exchange_record.setOnClickListener {
-            startActivity<ExchangeRecordActivity>()
-        }
-        bg_filter.setOnClickListener {
-            if (cb_sort.isChecked)
-                cb_sort.isChecked = false
-            if (cb_type.isChecked)
-                cb_type.isChecked = false
-        }
-
-
-    }
-
-    override fun initView() {
-        if (isTicket){
-            getUserInfo()
-            typeId = 3
-            cb_type.text = "门票商品"
-            shopId = WeparkApplication.storeId
-            cb_syshop.text = WeparkApplication.store
-        }else{
-            iv_avatar.setImageURI(intent.getStringExtra("avatar"))
-            tv_name.text = intent.getStringExtra("name")
-            score = intent.getIntExtra("score", 0)
-            tv_score.text = "${score}积分"
-        }
-        rv_list.layoutManager = GridLayoutManager(this, 2)
-        rv_list.adapter = adapter
-        refreshLayout.setOnRefreshListener {
-            page = 1
-            getData()
-        }
-        refreshLayout.setOnLoadMoreListener {
-            page++
-            getData()
-        }
-        getData()
-        rv_filter.layoutManager = LinearLayoutManager(this)
-        rv_filter.adapter = filterAdapter
-    }
-
-    private fun getUserInfo() {
-
-    }
-
-    private fun getData() {
-        HttpManager.integralMallList(typeId, page, sort, search, shopId)
-            .request(this, success = { _, data ->
-                if (page == 1)
-                    list.clear()
-                list.addAll(data ?: arrayListOf())
-                adapter.notifyDataSetChanged()
-                if (list.isEmpty())
-                    refreshLayout.finishRefreshWithNoMoreData()
-                else if (data.isNullOrEmpty())
-                    refreshLayout.finishLoadMoreWithNoMoreData()
-                else if (page == 1)
-                    refreshLayout.finishRefresh()
-                else
-                    refreshLayout.finishLoadMore()
-
-            }) { _, _ ->
-                if (page == 1)
-                    refreshLayout.finishRefresh(false)
-                else
-                    refreshLayout.finishLoadMore(false)
-                page--
-            }
-    }
-
-    private fun closeFilter() {
-        bg_filter.gone()
-        rv_filter.gone()
-    }
-
-    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
-        super.onActivityResult(requestCode, resultCode, data)
-        if (resultCode == Activity.RESULT_OK){
-            getUserInfo()
-        }
-    }
-
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/adapter/CouponDetailAdapter.kt b/app/src/main/java/com/dollearn/student/ui/welfare/adapter/CouponDetailAdapter.kt
deleted file mode 100644
index d5bd39b..0000000
--- a/app/src/main/java/com/dollearn/student/ui/welfare/adapter/CouponDetailAdapter.kt
+++ /dev/null
@@ -1,90 +0,0 @@
-package com.dollearn.student.ui.welfare.adapter
-
-import android.util.TypedValue
-import android.view.View
-import android.widget.ImageView
-import android.widget.TextView
-import cn.sinata.xldutils.activity.BaseActivity
-import cn.sinata.xldutils.adapter.HFRecyclerAdapter
-import cn.sinata.xldutils.adapter.util.ViewHolder
-import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.SpanBuilder
-import cn.sinata.xldutils.visible
-import com.dollearn.student.R
-import com.dollearn.student.dialog.LoginRuleDialog
-import com.dollearn.student.network.entity.Coupon
-import com.dollearn.student.utils.Const
-import com.dollearn.student.utils.event.EmptyEvent
-import com.dollearn.student.utils.extention.clickDelay
-import com.dollearn.student.utils.interfaces.StringCallback
-import org.greenrobot.eventbus.EventBus
-import org.jetbrains.anko.backgroundResource
-import java.util.ArrayList
-
-class CouponDetailAdapter(list: ArrayList<Coupon>) :HFRecyclerAdapter<Coupon>(list, R.layout.item_coupon_detail){
-    var callback:StringCallback? = null
-    override fun onBind(holder: ViewHolder, position: Int, data: Coupon) {
-        val clLeft = holder.bind<View>(R.id.tv_price)
-        val clRight = holder.bind<View>(R.id.cl_right)
-        val tvUse = holder.bind<View>(R.id.tv_use)
-        val ivTag = holder.bind<ImageView>(R.id.iv_tag)
-        val tvPrice = holder.bind<TextView>(R.id.tv_price)
-
-        if (data.type == 3){ //体验券显示名字
-            tvPrice.setTextSize(TypedValue.COMPLEX_UNIT_SP,12f)
-            tvPrice.text = data.ruleModel?.experienceName
-        }else{
-            tvPrice.setTextSize(TypedValue.COMPLEX_UNIT_SP,20f)
-            val money = "%s%s".format(data.ruleModel?.deductionAmount,if (data.ruleModel?.conditionalAmount.isNullOrEmpty()) "" else "\n${data.ruleModel?.conditionalAmount}")
-            tvPrice.text = SpanBuilder(money).bold(0,data.ruleModel?.deductionAmount?.length?:0).size(data.ruleModel?.deductionAmount?.length?:0,money.length,12).build()
-        }
-
-        holder.setText(R.id.tv_name,data.name)
-        holder.setText(R.id.tv_deadline,"有效期至${data.effectiveTime}")
-        holder.bind<TextView>(R.id.tv_range).apply {
-            text = if (data.useCondition == "3"||data.useCondition == "2") {
-                val usage = "${data.available} 查看详情"
-                SpanBuilder(usage).color(context,usage.length-4,usage.length,R.color.blue).build()
-            } else data.available
-            clickDelay {
-                callback?.onResult(position.toString())
-            }
-        }
-        holder.bind<View>(R.id.tv_describe).apply {
-            isSelected = data.isOpenDescription
-            setOnClickListener {
-                data.isOpenDescription = !data.isOpenDescription
-                notifyItemChanged(position)
-            }
-        }
-        holder.setText(R.id.tv_detail,data.instructionsForUse)
-        holder.bind<View>(R.id.ll_detail).visibility = if (data.isOpenDescription) View.VISIBLE else View.GONE
-        when(data.useStatus){ //1未使用 2已使用 3已过期
-            1->{
-                clLeft.backgroundResource = R.mipmap.coupon_left
-                clRight.backgroundResource = R.mipmap.coupon_right
-                ivTag.gone()
-                tvUse.visible()
-                tvUse.clickDelay {
-                    EventBus.getDefault().post(EmptyEvent(Const.EventCode.SWITCH_HOME))
-                    (context as BaseActivity).finish()
-                }
-            }
-            2->{
-                clLeft.backgroundResource = R.mipmap.cl_left_disable
-                clRight.backgroundResource = R.mipmap.cl_right_disable
-                ivTag.visible()
-                tvUse.gone()
-                ivTag.setImageResource(R.mipmap.iv_used)
-            }
-            3->{
-                clLeft.backgroundResource = R.mipmap.cl_left_disable
-                clRight.backgroundResource = R.mipmap.cl_right_disable
-                ivTag.visible()
-                tvUse.gone()
-                ivTag.setImageResource(R.mipmap.iv_disable)
-            }
-        }
-    }
-
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldActivity.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldActivity.kt
deleted file mode 100644
index e9d52da..0000000
--- a/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldActivity.kt
+++ /dev/null
@@ -1,185 +0,0 @@
-package com.dollearn.student.ui.worldcup
-
-import android.os.Bundle
-import android.view.View
-import android.widget.TextView
-import androidx.core.os.bundleOf
-import androidx.fragment.app.Fragment
-import androidx.viewpager.widget.ViewPager
-import cn.sinata.xldutils.activity.BaseActivity
-import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.SpanBuilder
-import cn.sinata.xldutils.utils.showAllowingStateLoss
-import cn.sinata.xldutils.utils.toTime
-import cn.sinata.xldutils.visible
-import com.github.zackratos.ultimatebar.UltimateBar
-import com.dollearn.student.R
-import com.dollearn.student.dialog.CheckQrCodeDialog
-import com.dollearn.student.dialog.SwitchStudentDialog
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.Student
-import com.dollearn.student.network.entity.WorldRank
-import com.dollearn.student.network.request
-import com.dollearn.student.utils.Const
-import com.dollearn.student.utils.event.EmptyEvent
-import com.dollearn.student.utils.extention.clickDelay
-import com.dollearn.student.utils.getQRcodeImg
-import kotlinx.android.synthetic.main.activity_my_world_cup.*
-import org.greenrobot.eventbus.EventBus
-import org.jetbrains.anko.find
-import org.jetbrains.anko.textColorResource
-
-class MyWorldActivity : BaseActivity() {
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        setContentView(R.layout.activity_my_world_cup)
-        initView()
-        initClick()
-    }
-
-    val rbCity by lazy {
-        find<TextView>(R.id.rb_city)
-    }
-    val rbCountry by lazy {
-        find<TextView>(R.id.rb_country)
-    }
-
-    private val index by lazy { intent.getIntExtra("index",0) }
-    var stu:Student? = null
-    var cityName = ""
-
-    var mineRank: WorldRank? = null //我的排名
-
-
-    fun initClick() {
-        iv_code.clickDelay {
-            if (stu == null)
-                return@clickDelay
-            val dialog = CheckQrCodeDialog()
-            val content = "{\"id\":${stu?.id},\"isStudent\":${stu?.isStudent}}"
-            dialog.arguments = bundleOf("qrinfo" to content,"title" to stu?.name)
-            dialog.showAllowingStateLoss(supportFragmentManager, "checkqr")
-        }
-        tv_change.clickDelay {
-            SwitchStudentDialog.show(supportFragmentManager,stu,object :SwitchStudentDialog.ResultCallback{
-                override fun checked(list: List<Student>) {
-                    if (!list.isNullOrEmpty()){
-                        stu = list.firstOrNull()
-                        stu?.apply {
-                            iv_avatar.setImageURI(avatar)
-                            tv_name.text = name
-                            val content = "{\"id\":${id},\"isStudent\":${isStudent}}"
-                            iv_code.setImageBitmap(getQRcodeImg(this@MyWorldActivity, content))
-                            getRank()
-                        }
-                    }
-                }
-            })
-        }
-    }
-
-    fun initView() {
-        titleBar.titleView.text = title
-        titleBar.titleView.textColorResource = R.color.white
-        titleBar.leftView.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.back_white,0,0,0)
-        UltimateBar.with(this)
-            .statusDark(false)
-            .create().transparentBar() //沉浸状态栏
-        tv_year.text = "您的${System.currentTimeMillis().toTime("yyyy")}年场次排名"
-        rb_city.isSelected = true
-        getUser()
-    }
-
-    private fun initTab(){
-        val frags = arrayListOf<Fragment>()
-        frags.add(MyWorldFragment.newInstance(MyWorldFragment.TYPE_DOING))
-        frags.add(MyWorldFragment.newInstance(MyWorldFragment.TYPE_UN_START))
-        frags.add(WorldRecordFragment())
-        frags.add(WorldRankFragment())
-        tab_bar.setViewPager(view_pager, arrayOf("进行中","未开始","比赛记录","排名"),this,frags)
-        view_pager.currentItem = index
-        view_pager.addOnPageChangeListener(object :ViewPager.OnPageChangeListener{
-            override fun onPageScrolled(
-                position: Int,
-                positionOffset: Float,
-                positionOffsetPixels: Int
-            ) {
-
-            }
-
-            override fun onPageSelected(position: Int) {
-                rg_region.visibility = if (position == 3) View.VISIBLE else View.GONE
-                if (position == 3) showMineRank() else bg.gone()
-            }
-
-            override fun onPageScrollStateChanged(state: Int) {
-
-            }
-        })
-    }
-
-    fun showMineRank(){
-        bg.visibility = if (mineRank!=null){
-            when(mineRank!!.rank){
-                1->{
-                    tv_rank.gone()
-                    iv_rank.visible()
-                    iv_rank.setImageResource(R.mipmap.goldmedal)
-                }
-                2->{
-                    tv_rank.gone()
-                    iv_rank.visible()
-                    iv_rank.setImageResource(R.mipmap.silvermedal)
-                }
-                3->{
-                    tv_rank.gone()
-                    iv_rank.visible()
-                    iv_rank.setImageResource(R.mipmap.bronzemedal)
-                }
-                else->{
-                    tv_rank.visible()
-                    iv_rank.gone()
-                    tv_rank.text = mineRank!!.rank.toString()
-                }
-            }
-            iv_mine_avatar.setImageURI(mineRank!!.avatar)
-            tv_mine_name.text = mineRank!!.name
-            tv_count.text = mineRank!!.totalSession.toString()
-            tv_rate.text = "%.2f".format(mineRank!!.winRate)+"%"
-            View.VISIBLE
-        }else View.GONE
-
-    }
-
-    private fun getUser() {
-        HttpManager.getParticipant().request(this){ _, data->
-            data?.firstOrNull()?.apply {
-                stu = this
-                initTab()
-                iv_avatar.setImageURI(avatar)
-                tv_name.text = name
-                val content = "{\"id\":${id},\"isStudent\":${isStudent}}"
-                iv_code.setImageBitmap(getQRcodeImg(this@MyWorldActivity, content))
-                getRank()
-            }
-        }
-    }
-
-    private fun getRank(){
-        HttpManager.getEntrantRank(stu?.id?:"",stu?.isStudent?:0).request(this){_,data->
-            data?.apply {
-                this@MyWorldActivity.cityName = cityName
-                rb_city.text = cityName
-                tv_rank_country.text = nationalRank.toString()
-                tv_rank_city.text = cityRank.toString()
-                tv_city.text = cityName+"排名"
-                tv_win.text = win
-                tv_lose.text = lose
-                val s = "%.2f".format(winRate)+"%"
-                tv_win_rate.text = SpanBuilder(s).size(s.length-1,s.length,15).build()
-            }
-        }
-    }
-
-}
-
diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldFragment.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldFragment.kt
deleted file mode 100644
index 0278419..0000000
--- a/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldFragment.kt
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.dollearn.student.ui.worldcup
-
-import androidx.core.os.bundleOf
-import androidx.recyclerview.widget.LinearLayoutManager
-import cn.sinata.xldutils.fragment.BaseFragment
-import com.dollearn.student.R
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.WorldCupBean
-import com.dollearn.student.network.requestByF
-import com.dollearn.student.ui.worldcup.adapter.WorldCupAdapter
-import com.dollearn.student.utils.Const
-import com.dollearn.student.utils.event.EmptyEvent
-import kotlinx.android.synthetic.main.layout_common_list.*
-import org.greenrobot.eventbus.EventBus
-import org.greenrobot.eventbus.Subscribe
-import org.jetbrains.anko.support.v4.startActivity
-
-class MyWorldFragment : BaseFragment() {
-    override fun contentViewId() = R.layout.layout_common_list
-    private val type by lazy {
-        arguments?.getInt("type", TYPE_UN_START) ?: TYPE_UN_START
-    }
-    private var page = 1
-    private val list = arrayListOf<WorldCupBean>()
-    private val adapter = WorldCupAdapter(list,true)
-
-    override fun onFirstVisibleToUser() {
-        EventBus.getDefault().register(this)
-        rv_list.layoutManager = LinearLayoutManager(requireContext())
-        rv_list.adapter = adapter
-        adapter.setOnItemClickListener { view, position ->
-            startActivity<MyWorldInfoActivity>("id" to list[position].id)
-        }
-        refreshLayout.setOnRefreshListener {
-            page = 1
-            getData()
-        }
-        refreshLayout.setOnLoadMoreListener {
-            page++
-            getData()
-        }
-        getData()
-    }
-
-    fun refresh() {
-        refreshLayout.autoRefresh()
-    }
-
-    private fun getData() {
-        val myWorldActivity = requireActivity() as MyWorldActivity
-        HttpManager.getMyWorldCupList(myWorldActivity.stu?.id?:"",myWorldActivity.stu?.isStudent?:0,type,page)
-            .requestByF(this, success = { _, data ->
-                if (page == 1)
-                    list.clear()
-                list.addAll(data ?: arrayListOf())
-                adapter.notifyDataSetChanged()
-                if (list.isEmpty())
-                    refreshLayout.finishRefreshWithNoMoreData()
-                else if (data.isNullOrEmpty())
-                    refreshLayout.finishLoadMoreWithNoMoreData()
-                else if (page == 1)
-                    refreshLayout.finishRefresh()
-                else
-                    refreshLayout.finishLoadMore()
-            }) { _, _ ->
-                if (page == 1)
-                    refreshLayout.finishRefresh(false)
-                else
-                    refreshLayout.finishLoadMore(false)
-                page--
-            }
-    }
-
-    @Subscribe
-    fun refreshList(e:EmptyEvent){
-    }
-
-    override fun onDestroy() {
-        super.onDestroy()
-        EventBus.getDefault().unregister(this)
-    }
-
-    companion object {
-        //1=未开始 2=进行中
-        const val TYPE_UN_START = 1
-        const val TYPE_DOING = 2
-        fun newInstance(type: Int): MyWorldFragment {
-            val reserveRecordFragment = MyWorldFragment()
-            reserveRecordFragment.arguments = bundleOf("type" to type)
-            return reserveRecordFragment
-        }
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldInfoActivity.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldInfoActivity.kt
deleted file mode 100644
index 7ea2e96..0000000
--- a/app/src/main/java/com/dollearn/student/ui/worldcup/MyWorldInfoActivity.kt
+++ /dev/null
@@ -1,161 +0,0 @@
-package com.dollearn.student.ui.worldcup
-
-import android.webkit.WebChromeClient
-import android.webkit.WebViewClient
-import androidx.core.os.bundleOf
-import androidx.recyclerview.widget.LinearLayoutManager
-import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.parserTime
-import cn.sinata.xldutils.utils.showAllowingStateLoss
-import cn.sinata.xldutils.visible
-import com.dollearn.student.R
-import com.dollearn.student.dialog.CheckShopsDialog
-import com.dollearn.student.dialog.TipDialog
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.Banner
-import com.dollearn.student.network.entity.Student
-import com.dollearn.student.network.request
-import com.dollearn.student.ui.TransparentStatusBarActivity
-import com.dollearn.student.ui.home.adapter.HomeBannerAdapter
-import com.dollearn.student.ui.worldcup.adapter.StudentQrAdapter
-import com.dollearn.student.utils.Const
-import com.dollearn.student.utils.event.EmptyEvent
-import com.dollearn.student.utils.extention.clickDelay
-import kotlinx.android.synthetic.main.activity_my_world_detail.*
-import org.greenrobot.eventbus.EventBus
-import org.jetbrains.anko.backgroundColorResource
-
-class MyWorldInfoActivity:TransparentStatusBarActivity() {
-    override fun setContentView() = R.layout.activity_my_world_detail
-
-    private val id by lazy { intent.getStringExtra("id")?:"" }
-
-    private val bannerImg = arrayListOf<Banner>()
-    private val bannerAdapter by lazy {
-        HomeBannerAdapter(bannerImg, this)
-    }
-
-    private val students = arrayListOf<Student>()
-    private val studentAdapter = StudentQrAdapter(students)
-
-    override fun initClick() {
-        tv_action.clickDelay {
-            val tipDialog = TipDialog()
-            tipDialog.arguments = bundleOf("msg" to "是否确认取消?")
-            tipDialog.setCallback(object :TipDialog.OnClickCallback{
-                override fun onOk() {
-                    HttpManager.cancelMyWorldCup(id).request(this@MyWorldInfoActivity){_,data->
-                        tv_action.isEnabled = false
-                        tv_action.backgroundColorResource = R.color.disableColor
-                        tv_action.text = "已取消"
-                    }
-                }
-
-                override fun onCancel() {
-                }
-
-            })
-            tipDialog.show(supportFragmentManager,"cancel")
-        }
-    }
-
-    override fun initView() {
-        banner.adapter = bannerAdapter
-        rv_student.layoutManager = LinearLayoutManager(this)
-        rv_student.adapter = studentAdapter
-        getData()
-    }
-
-    private fun getData() {
-        HttpManager.getMyWorldCupInfo(id).request(this){_,data->
-            data?.apply {
-                if (status in 2..4){
-                    tv_action.isEnabled = false
-                    tv_action.backgroundColorResource = R.color.disableColor
-                    tv_action.text = getStateStr()
-                }else if (startTime.parserTime("yyyy-MM-dd HH:mm") - System.currentTimeMillis() < 1000L*24*60*60){//开始前一天不能取消
-                    tv_action.text = "取消"
-                    tv_action.isEnabled = false
-                    tv_action.backgroundColorResource = R.color.disableColor
-                }
-                tv_action.visible()
-                storeInfos?.let {
-                    val stores = StringBuffer()
-                    for (s in it.indices) {
-                        if (s == it.size - 1) stores.append(it[s].name)
-                        else stores.append(it[s].name + ",")
-                    }
-                    tv_shops.text = stores
-                    if (stores.length > 20) {
-                        mtvcheckmore.visible()
-                        mtvcheckmore.clickDelay {
-                            val checkShopsDialog = CheckShopsDialog()
-                            checkShopsDialog.arguments =
-                                bundleOf("shopinfo" to stores.toString(),"type" to CheckShopsDialog.TYPE_WORLD_SITE)
-                            checkShopsDialog.showAllowingStateLoss(
-                                supportFragmentManager,
-                                "checkshops"
-                            )
-                        }
-                    } else {
-                        mtvcheckmore.gone()
-                    }
-                }
-
-                val list = infoImg.split(",").map {
-                    Banner(url = it)
-                }
-                bannerImg.addAll(list)
-                bannerAdapter.notifyDataSetChanged()
-                banner.currentItem = 1
-                tv_name.text = name
-                tv_hot.text = heat.toString()
-//                    tv_address.text = "${storeName}(${storeAddress})"
-                tv_deadline.text = if (registrationClosingTime.isNullOrEmpty()) endTime else registrationClosingTime
-                tv_start_time.text = startTime
-                tv_end_time.text = endTime
-                tv_age.text = "${age}岁"
-                tv_sex.text = getJoinSex()
-                tv_city.text = "${province}|${city}"
-                tv_play_address.text = address
-
-                students.addAll(participants?: arrayListOf())
-                studentAdapter.notifyDataSetChanged()
-
-                when(payType){//支付方式(0=免费,1=微信,2=支付宝,3=玩湃币,4=课时)
-                    0->{
-                        tv_price.text = "免费"
-                        tv_total.text = "免费"
-                    }
-                    1,2->{
-                        tv_price.text = "¥%.2f/人".format(unitPrice?:0.0)
-                        tv_total.text = "合计:¥%.2f".format((unitPrice?:0.0)*(participants?.size?:0))
-                    }
-                    3->{
-                        tv_price.text = "%d玩湃币/人".format((unitPrice?:0.0).toInt())
-                        tv_total.text = "合计:%d玩湃币".format(((unitPrice?:0.0)*(participants?.size?:0)).toInt())
-                    }
-                    4->{
-                        tv_price.text = "%d课时/人".format((unitPrice?:0.0).toInt())
-                        tv_total.text = "合计:%d课时".format(((unitPrice?:0.0)*(participants?.size?:0)).toInt())
-                    }
-                }
-
-                tv_introduce.text = intro
-                if (!content.isNullOrEmpty()) {
-                    val settings = webView.settings
-                    settings.javaScriptEnabled = true
-                    settings.javaScriptCanOpenWindowsAutomatically = true
-                    settings.defaultTextEncodingName = "utf-8"
-                    settings.domStorageEnabled = true
-                    webView.webChromeClient = object : WebChromeClient() {}
-                    webView.webViewClient = object : WebViewClient() {}
-                    val sHead =
-                        "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>"
-                    webView!!.loadDataWithBaseURL(null, sHead + content, "text/html", "utf-8", null)
-                }
-            }
-        }
-    }
-
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/WorldCupListActivity.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/WorldCupListActivity.kt
index e8874ed..e65bf9a 100644
--- a/app/src/main/java/com/dollearn/student/ui/worldcup/WorldCupListActivity.kt
+++ b/app/src/main/java/com/dollearn/student/ui/worldcup/WorldCupListActivity.kt
@@ -14,7 +14,7 @@
 import com.bumptech.glide.request.transition.Transition
 import com.github.zackratos.ultimatebar.UltimateBar
 import com.dollearn.student.R
-import com.dollearn.student.WeparkApplication
+import com.dollearn.student.DollearnApplication
 import com.dollearn.student.network.HttpManager
 import com.dollearn.student.network.entity.Banner
 import com.dollearn.student.network.entity.CommonData
@@ -178,7 +178,7 @@
     }
 
     private fun getData(){
-        HttpManager.getWorldCupList(WeparkApplication.storeId,WeparkApplication.lat,WeparkApplication.lon,heatSort,condition,siteId,search).request(this,success = {_,data->
+        HttpManager.getWorldCupList(DollearnApplication.storeId,DollearnApplication.lat,DollearnApplication.lon,heatSort,condition,siteId,search).request(this,success = { _, data->
             refreshLayout.finishRefresh()
             list.clear()
             list.addAll(data?: arrayListOf())
diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/WorldRankFragment.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/WorldRankFragment.kt
deleted file mode 100644
index 247efe2..0000000
--- a/app/src/main/java/com/dollearn/student/ui/worldcup/WorldRankFragment.kt
+++ /dev/null
@@ -1,119 +0,0 @@
-package com.dollearn.student.ui.worldcup
-
-import androidx.recyclerview.widget.LinearLayoutManager
-import cn.sinata.xldutils.fragment.BaseFragment
-import cn.sinata.xldutils.utils.myToast
-import cn.sinata.xldutils.utils.showAllowingStateLoss
-import com.dollearn.student.R
-import com.dollearn.student.dialog.ChooseYearDialog
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.WorldRank
-import com.dollearn.student.network.requestByF
-import com.dollearn.student.ui.worldcup.adapter.WorldRankAdapter
-import com.dollearn.student.utils.Const
-import com.dollearn.student.utils.event.EmptyEvent
-import com.dollearn.student.utils.extention.clickDelay
-import com.dollearn.student.utils.interfaces.StringCallback
-import kotlinx.android.synthetic.main.fragment_world_rank.*
-import org.greenrobot.eventbus.EventBus
-import org.greenrobot.eventbus.Subscribe
-
-class WorldRankFragment:BaseFragment() {
-    override fun contentViewId() = R.layout.fragment_world_rank
-
-    private val list = arrayListOf<WorldRank>()
-    private val adapter = WorldRankAdapter(list)
-
-    private var sort = 2 //排序,1=场次,2=胜率
-    private var year:Int? = null
-
-    private val rb_city by lazy {
-        (requireActivity() as MyWorldActivity).rbCity
-    }
-    private val rb_country by lazy {
-        (requireActivity() as MyWorldActivity).rbCountry
-    }
-
-    override fun onFirstVisibleToUser() {
-        EventBus.getDefault().register(this)
-//        rb_city.text = (requireActivity() as MyWorldActivity).cityName
-//        rb_city.isSelected = true
-        rv_list.layoutManager = LinearLayoutManager(requireContext())
-        rv_list.adapter = adapter
-        refreshLayout.setOnRefreshListener {
-            getData()
-        }
-        getData()
-
-        tv_filter.setOnClickListener {
-            if (refreshLayout.isRefreshing)
-                myToast("等待刷新")
-            else{
-                sort = if (sort == 1) 2 else 1
-                tv_filter.text = if (sort == 1) "按场次排名" else "按胜率排名"
-                refreshLayout.autoRefresh()
-            }
-        }
-
-        tv_year.clickDelay {
-            val chooseYearDialog = ChooseYearDialog()
-            chooseYearDialog.callback = object :StringCallback{
-                override fun onResult(rst: String) {
-                    tv_year.text = rst
-                    if (rst == "全部")
-                        year = null
-                    else{
-                        year = rst.substring(0,4).toInt()
-                    }
-                    refreshLayout.autoRefresh()
-                }
-            }
-            chooseYearDialog.showAllowingStateLoss(childFragmentManager,"rankYear")
-        }
-
-        rb_city.setOnClickListener {
-            if (refreshLayout.isRefreshing)
-                myToast("等待刷新")
-            else{
-                rb_city.isSelected = true
-                rb_country.isSelected = false
-                refreshLayout.autoRefresh()
-            }
-        }
-
-        rb_country.setOnClickListener {
-            if (refreshLayout.isRefreshing)
-                myToast("等待刷新")
-            else{
-                rb_city.isSelected = false
-                rb_country.isSelected = true
-                refreshLayout.autoRefresh()
-            }
-        }
-    }
-
-    private fun getData() {
-        val myWorldActivity = requireActivity() as MyWorldActivity
-        val radius = if (rb_city.isSelected) 2 else 1
-        HttpManager.getWorldCupRank(myWorldActivity.stu?.id?:"",myWorldActivity.stu?.isStudent?:0,radius,sort,year)
-            .requestByF(this, success = { _, data ->
-                list.clear()
-                list.addAll(data?: arrayListOf())
-                adapter.notifyDataSetChanged()
-                refreshLayout.finishRefresh()
-                myWorldActivity.mineRank = data?.filter { it.oneself == 1 }?.firstOrNull()
-                myWorldActivity.showMineRank()
-            }) { _, _ ->
-                refreshLayout.finishRefresh(false)
-            }
-    }
-
-    @Subscribe
-    fun refreshList(e: EmptyEvent){
-    }
-
-    override fun onDestroy() {
-        super.onDestroy()
-        EventBus.getDefault().unregister(this)
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/WorldRecordFragment.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/WorldRecordFragment.kt
deleted file mode 100644
index 13f3709..0000000
--- a/app/src/main/java/com/dollearn/student/ui/worldcup/WorldRecordFragment.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.dollearn.student.ui.worldcup
-
-import androidx.recyclerview.widget.LinearLayoutManager
-import cn.sinata.xldutils.fragment.BaseFragment
-import com.dollearn.student.R
-import com.dollearn.student.network.HttpManager
-import com.dollearn.student.network.entity.WorldCupRecordItem
-import com.dollearn.student.network.requestByF
-import com.dollearn.student.ui.worldcup.adapter.WorldCupRecordAdapter
-import com.dollearn.student.utils.Const
-import com.dollearn.student.utils.event.EmptyEvent
-import kotlinx.android.synthetic.main.fragment_wc_record.*
-import org.greenrobot.eventbus.EventBus
-import org.greenrobot.eventbus.Subscribe
-
-class WorldRecordFragment:BaseFragment(){
-    override fun contentViewId() = R.layout.fragment_wc_record
-
-    private var page = 1
-    private val list = arrayListOf<WorldCupRecordItem>()
-    private val adapter = WorldCupRecordAdapter(list)
-
-    override fun onFirstVisibleToUser() {
-        EventBus.getDefault().register(this)
-        rv_list.layoutManager = LinearLayoutManager(requireContext())
-        rv_list.adapter = adapter
-        refreshLayout.setOnRefreshListener {
-            page = 1
-            getData()
-        }
-        refreshLayout.setOnLoadMoreListener {
-            page++
-            getData()
-        }
-        getData()
-    }
-
-    private fun getData() {
-        val myWorldActivity = requireActivity() as MyWorldActivity
-        HttpManager.getWorldCupMatchRecord(myWorldActivity.stu?.id?:"",myWorldActivity.stu?.isStudent?:0,page)
-            .requestByF(this, success = { _, data ->
-                tv_total.text = "总场次:${data?.totalSession?:0}场"
-                if (page == 1)
-                    list.clear()
-                list.addAll(data?.list?: arrayListOf())
-                adapter.notifyDataSetChanged()
-                if (list.isEmpty())
-                    refreshLayout.finishRefreshWithNoMoreData()
-                else if (data?.list?.isNullOrEmpty() == true)
-                    refreshLayout.finishLoadMoreWithNoMoreData()
-                else if (page == 1)
-                    refreshLayout.finishRefresh()
-                else
-                    refreshLayout.finishLoadMore()
-            }) { _, _ ->
-                if (page == 1)
-                    refreshLayout.finishRefresh(false)
-                else
-                    refreshLayout.finishLoadMore(false)
-                page--
-            }
-    }
-
-    @Subscribe
-    fun refreshList(e: EmptyEvent){
-    }
-
-    override fun onDestroy() {
-        super.onDestroy()
-        EventBus.getDefault().unregister(this)
-    }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/adapter/StudentQrAdapter.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/adapter/StudentQrAdapter.kt
deleted file mode 100644
index 8b8f58f..0000000
--- a/app/src/main/java/com/dollearn/student/ui/worldcup/adapter/StudentQrAdapter.kt
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.dollearn.student.ui.worldcup.adapter
-
-import android.view.View
-import android.widget.ImageView
-import android.widget.TextView
-import androidx.core.os.bundleOf
-import cn.sinata.xldutils.activity.BaseActivity
-import cn.sinata.xldutils.adapter.HFRecyclerAdapter
-import cn.sinata.xldutils.adapter.util.ViewHolder
-import cn.sinata.xldutils.utils.SpanBuilder
-import cn.sinata.xldutils.utils.showAllowingStateLoss
-import com.dollearn.student.R
-import com.dollearn.student.dialog.CheckQrCodeDialog
-import com.dollearn.student.network.entity.Student
-import com.dollearn.student.utils.extention.clickDelay
-import com.dollearn.student.utils.getQRcodeImg
-import java.util.ArrayList
-
-class StudentQrAdapter(students: ArrayList<Student>):HFRecyclerAdapter<Student>(students, R.layout.item_stu_wc_detail) {
-
-    override fun onBind(holder: ViewHolder, position: Int, data: Student) {
-        val tvIdCard = holder.bind<TextView>(R.id.tv_idCard)
-        val name = "姓名:${data.name}"
-        val age = "年龄:${data.age}岁"
-        val phone = "联系电话:${if (data.phone.isNullOrEmpty()) "" else data.phone}"
-        val idCard = "身份证号:${data.idcard}"
-        tvIdCard.text = SpanBuilder(idCard).color(context,0,5,R.color.textColor66).bold(5,idCard.length).build()
-        holder.setText(R.id.tv_name,SpanBuilder(name).color(context,0,3,R.color.textColor66).bold(3,name.length).build())
-        holder.setText(R.id.tv_age,SpanBuilder(age).color(context,0,3,R.color.textColor66).bold(3,age.length).build())
-        holder.setText(R.id.tv_phone,SpanBuilder(phone).color(context,0,5,R.color.textColor66).bold(5,phone.length).build())
-        val content = "{\"id\":${data.id},\"isStudent\":${data.isStudent}}"
-        holder.bind<ImageView>(R.id.iv_code).apply {
-            setImageBitmap(getQRcodeImg(context, content))
-            clickDelay {
-                val dialog = CheckQrCodeDialog()
-                dialog.arguments = bundleOf("qrinfo" to content,"title" to data.name)
-                dialog.showAllowingStateLoss((context as BaseActivity).supportFragmentManager, "checkqr")
-            }
-        }
-    }
-
-}
diff --git a/app/src/main/java/com/dollearn/student/ui/worldcup/adapter/WorldCupRecordAdapter.kt b/app/src/main/java/com/dollearn/student/ui/worldcup/adapter/WorldCupRecordAdapter.kt
deleted file mode 100644
index fb9cc2d..0000000
--- a/app/src/main/java/com/dollearn/student/ui/worldcup/adapter/WorldCupRecordAdapter.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.dollearn.student.ui.worldcup.adapter
-
-import android.widget.ImageView
-import cn.sinata.xldutils.adapter.HFRecyclerAdapter
-import cn.sinata.xldutils.adapter.util.ViewHolder
-import com.dollearn.student.R
-import com.dollearn.student.network.entity.WorldCupRecordItem
-import java.util.ArrayList
-
-class WorldCupRecordAdapter(list: ArrayList<WorldCupRecordItem>) :HFRecyclerAdapter<WorldCupRecordItem>(list, R.layout.item_wc_record){
-    override fun onBind(holder: ViewHolder, position: Int, data: WorldCupRecordItem) {
-        holder.setText(R.id.tv_name,data.name)
-        holder.setText(R.id.tv_score,"${data.ourScore}:${data.opponentScore}")
-        holder.setText(R.id.tv_integral,"获得积分:${data.award}")
-        holder.setText(R.id.tv_time,data.startTime)
-        holder.bind<ImageView>(R.id.iv_result).setImageResource(if (data.matchResult == 1) R.mipmap.shengli else R.mipmap.shibai)
-    }
-
-}
diff --git a/app/src/main/java/com/dollearn/student/utils/Const.kt b/app/src/main/java/com/dollearn/student/utils/Const.kt
index f3df552..6c102bc 100644
--- a/app/src/main/java/com/dollearn/student/utils/Const.kt
+++ b/app/src/main/java/com/dollearn/student/utils/Const.kt
@@ -6,30 +6,22 @@
  */
 object Const {
     const val Tag = "GWXLog"
-    const val TICTag = "TICLog"
     const val PAGE_SIZE = 20 //列表页大小
     //各类第三方key
     const val UMENG_KEY = "5face26b45b2b751a92a70b8"
-    const val WX_APP_ID = "wx41d32f362ba0f911"
-    const val WX_SECRET = "cf0ebf950f5926a69041a0e2bbe20f3e"
+    const val WX_APP_ID = "wx723c6b080f204773"
+    const val WX_SECRET = "b7904c5721aeccc20fd11fe9afc23f4d"
     const val QQ_APP_ID = "101912859"
     const val QQ_SECRET = "692a092b65a6ec830fb62d1dc2270813"
-    const val JX_APP_KEY = "cw52ddjimxhzzw#gwx597#10001"
 
     const val APP_KEY = "BT7NPhA0f775uzcUuftWjCE1TYZlWmHZ" //接口秘钥
 
-    /**
-     * 实时音视频sdkAppid
-     */
-    const val TIC_APP_ID = 1400455000 //release
-//    const val TIC_APP_ID = 1400127140 //demo
-
-    const val FIRST_LAUNCH = "isFirst"
+    const val RV = "rightVoice"
+    const val EV = "errorVoice"
+    const val SCORE_DURATION = "score_duration"
 
     object Permission{
-        const val LOCATION_REFUSE = "LOCATION_REFUSE"
         const val CAMERA_REFUSE = "CAMERA_REFUSE"
-        const val FILE_REFUSE = "FILE_REFUSE"
     }
 
     object User {
@@ -37,19 +29,9 @@
         const val USER_ID = "userId"
         const val APP_ID = "appid"
         const val IS_AGREE = "isAgree" //是否同意用户协议和隐私协议
-        const val IS_READ = "isRead" //是否阅读并同意过登录协议
         const val GRADE = "grade" //年级
-        const val USER_HEAD = "userHead"
-        const val USER_NAME = "userName"
-        const val USER_PWD = "pwd"
-        const val USER_PHONE = "userPhone"
     }
 
-    object Share{
-        const val TITLE = "海豚英语"
-        const val NORMAL_CONTENT = "快来使用海豚英语吧" //推广中心分享
-        const val COURSE_CONTENT = "这个课很不错哦" //运动营分享
-    }
 
     object Method{
         const val PING_RECEIVE = "OK"
@@ -65,7 +47,7 @@
         const val CHANGE_SHOP = 0x01 //更换门店
         const val SCORE_CHANGED = 0x02 //积分改变
         const val REFRESH_USER = 0x03 //刷新福利首页信息
-        const val SWITCH_HOME = 0x04 //切换到首页
+        const val CLICK_GAME_ITEM = 0x04 //超级听力点击item
 
 
         const val NEXT_SUBJECT = 0x05 //下一大题
diff --git a/app/src/main/java/com/dollearn/student/utils/extention/WeparkEx.kt b/app/src/main/java/com/dollearn/student/utils/extention/WeparkEx.kt
index 256cba1..46f6669 100644
--- a/app/src/main/java/com/dollearn/student/utils/extention/WeparkEx.kt
+++ b/app/src/main/java/com/dollearn/student/utils/extention/WeparkEx.kt
@@ -5,20 +5,18 @@
 import android.util.Log
 import android.view.View
 import android.widget.ImageView
-import android.widget.TextView
 import androidx.constraintlayout.widget.ConstraintLayout
 import cn.sinata.xldutils.activity.BaseActivity
 import com.bumptech.glide.Glide
 import com.bumptech.glide.request.target.SimpleTarget
 import com.bumptech.glide.request.transition.Transition
-import com.github.promeg.pinyinhelper.Pinyin
-import com.dollearn.student.utils.interfaces.StringCallback
-import com.dollearn.student.network.entity.Grade
 import com.dollearn.student.utils.OSSUtil
 import com.dollearn.student.utils.extention.ViewClickDelay.SPACE_TIME
 import com.dollearn.student.utils.extention.ViewClickDelay.hash
 import com.dollearn.student.utils.extention.ViewClickDelay.lastClickTime
 import com.dollearn.student.utils.glide.GlideUtil
+import com.dollearn.student.utils.interfaces.StringCallback
+import com.github.promeg.pinyinhelper.Pinyin
 import kotlinx.android.synthetic.main.activity_course_deatil.*
 import org.jetbrains.anko.toast
 import top.zibin.luban.Luban
@@ -27,15 +25,15 @@
 
 fun String.getInitial():String = if (startsWith("重庆")) "C" else Pinyin.toPinyin(this[0])[0].toString()
 
-fun String.uploadWithCompress(act:BaseActivity,callback: StringCallback){
+fun String.uploadWithCompress(act: BaseActivity, callback: StringCallback){
     Luban.with(act).load(File(this))
         .ignoreBy(100).setTargetDir(act.getPath())
         .filter { path -> path.isNotEmpty() || path.toLowerCase().endsWith(".gif") }
-        .setCompressListener(object :OnCompressListener{
+        .setCompressListener(object : OnCompressListener {
             override fun onSuccess(file: File) {
-                Log.e("gwx","压缩完成")
+                Log.e("gwx", "压缩完成")
                 Thread(Runnable {
-                    OSSUtil(act).uploadSingle(file.path,object :OSSUtil.OSSUploadCallBack(){
+                    OSSUtil(act).uploadSingle(file.path, object : OSSUtil.OSSUploadCallBack() {
                         override fun onFial(message: String?) {
                             super.onFial(message)
                             act.runOnUiThread {
@@ -62,7 +60,7 @@
             }
 
             override fun onStart() {
-                Log.e("gwx","压缩开始")
+                Log.e("gwx", "压缩开始")
                 act.showDialog(canCancel = false)
             }
         }).launch()
@@ -94,7 +92,7 @@
  * 使用Glide计算网络图片的宽高比加载长图
  * 父布局必须是ConstraintLayout:使用 dimensionRatio 属性
  */
-fun String.loadLongImage(context:Context,imageView: ImageView){
+fun String.loadLongImage(context: Context, imageView: ImageView){
     Glide.with(context).asBitmap().load(this)
         .into(object : SimpleTarget<Bitmap?>() {
             override fun onResourceReady(
@@ -105,7 +103,35 @@
                 layoutParams.dimensionRatio =
                     "${resource.width}:${resource.height}"
                 imageView.layoutParams = layoutParams
-                GlideUtil.load(context,this@loadLongImage,imageView,0)
+                GlideUtil.load(context, this@loadLongImage, imageView, 0)
             }
         })
+}
+
+fun Int.formatToChinese():String{
+    var number = this
+    val DIGITS = arrayListOf('零', '一', '二', '三', '四', '五', '六', '七', '八', '九')
+    val UNITS = arrayListOf('0', '十', '百', '千', '万')
+    if (number == 0) {
+        return DIGITS[0].toString()
+    }
+    val chineseNumber = StringBuilder()
+    var unitPlace = 0 // 位数,从百位开始
+    var lastWasZero = false // 前一个数字是否为零
+    while (number > 0) {
+        val digit: Int = number % 10
+        lastWasZero = if (digit == 0) {
+            if (!lastWasZero) {
+                chineseNumber.insert(0, DIGITS[0])
+            }
+            true
+        } else {
+            chineseNumber.insert(0, DIGITS[digit])
+            chineseNumber.insert(0, UNITS[unitPlace])
+            false
+        }
+        number /= 10
+        unitPlace++
+    }
+    return chineseNumber.toString().replace("0","")
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/dollearn/student/utils/glide/GlideUtil.java b/app/src/main/java/com/dollearn/student/utils/glide/GlideUtil.java
index e483548..3355fa3 100644
--- a/app/src/main/java/com/dollearn/student/utils/glide/GlideUtil.java
+++ b/app/src/main/java/com/dollearn/student/utils/glide/GlideUtil.java
@@ -22,7 +22,7 @@
 import com.bumptech.glide.request.RequestOptions;
 import com.bumptech.glide.request.target.Target;
 import com.dollearn.student.R;
-import com.dollearn.student.WeparkApplication;
+import com.dollearn.student.DollearnApplication;
 
 import java.util.concurrent.ExecutionException;
 
@@ -261,7 +261,7 @@
                     .error(R.color.page_bg)
                     .placeholder(R.color.page_bg)
                     .diskCacheStrategy(diskCacheStrategy)
-                    .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(DensityUtil.dip2px(WeparkApplication.Companion.getInstance(), num))));
+                    .apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(DensityUtil.dip2px(DollearnApplication.Companion.getInstance(), num))));
         }
         return chatcricleFoursUserHead;
     }
@@ -280,7 +280,7 @@
                     .error(R.color.black)
                     .placeholder(R.color.black)
                     .diskCacheStrategy(diskCacheStrategy)
-                    .apply(new RequestOptions().transform(new FitCenter(), new RoundedCorners(DensityUtil.dip2px(WeparkApplication.Companion.getInstance(), num))));
+                    .apply(new RequestOptions().transform(new FitCenter(), new RoundedCorners(DensityUtil.dip2px(DollearnApplication.Companion.getInstance(), num))));
         }
         return chatcricleFoursUserHead;
     }
diff --git a/app/src/main/res/drawable/bg_blue_line_grey_8dp.xml b/app/src/main/res/drawable/bg_blue_line_grey_8dp.xml
new file mode 100644
index 0000000..e1245fd
--- /dev/null
+++ b/app/src/main/res/drawable/bg_blue_line_grey_8dp.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="8dp"/>
+    <solid android:color="@color/page_bg"/>
+    <stroke android:color="@color/colorPrimary" android:width="1dp"/>
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/selector_enable_choose.xml b/app/src/main/res/drawable/selector_enable_choose.xml
new file mode 100644
index 0000000..9566e78
--- /dev/null
+++ b/app/src/main/res/drawable/selector_enable_choose.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_selected="true" android:drawable="@drawable/bg_blue_line_8dp"/>
+    <item android:state_selected="false" android:drawable="@drawable/bg_blue_line_grey_8dp"/>
+</selector>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_coupon.xml b/app/src/main/res/layout/activity_coupon.xml
deleted file mode 100644
index dce1f27..0000000
--- a/app/src/main/res/layout/activity_coupon.xml
+++ /dev/null
@@ -1,56 +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"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-    <com.flyco.tablayout.SlidingTabLayout
-        android:layout_width="match_parent"
-        android:layout_height="45dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:tl_textBold="BOTH"
-        app:tl_textSelectColor="@color/black"
-        app:tl_textUnselectColor="@color/textColor66"
-        app:tl_indicator_color="@color/colorPrimary"
-        app:tl_indicator_corner_radius="2dp"
-        app:tl_indicator_height="3dp"
-        app:tl_indicator_width="56dp"
-        app:tl_textsize="16sp"
-        app:tl_tab_space_equal="true"
-        android:id="@+id/tab_top"/>
-    <TextView
-        android:layout_width="100dp"
-        android:layout_height="wrap_content"
-        android:id="@+id/tv_filter"
-        app:layout_constraintTop_toBottomOf="@id/tab_top"
-        app:layout_constraintEnd_toEndOf="parent"
-        android:layout_marginTop="15dp"
-        android:layout_marginEnd="11dp"
-        android:text="全部"
-        android:textSize="16sp"
-        android:padding="8dp"
-        android:background="@drawable/bg_grey_line_4dp"
-        android:textColor="@color/textColor"
-        android:drawableEnd="@mipmap/icon_nav_open"/>
-    <androidx.viewpager.widget.ViewPager
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:id="@+id/view_pager"
-        android:layout_marginTop="1dp"
-        app:layout_constraintTop_toBottomOf="@id/tv_filter"
-        app:layout_constraintBottom_toBottomOf="parent" />
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="4dp"
-        android:background="@drawable/bg_shadow_top"
-        app:layout_constraintTop_toBottomOf="@id/tab_top"/>
-    <ImageView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:id="@+id/iv_button"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintBottom_toBottomOf="parent"
-        android:src="@mipmap/kefu"
-        android:visibility="gone"
-        android:layout_marginBottom="150dp"
-        android:layout_marginEnd="10dp"/>
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_exchange_record.xml b/app/src/main/res/layout/activity_exchange_record.xml
index d726b10..63405ee 100644
--- a/app/src/main/res/layout/activity_exchange_record.xml
+++ b/app/src/main/res/layout/activity_exchange_record.xml
@@ -2,9 +2,21 @@
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/rv_record"
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:id="@+id/refreshLayout"
         android:layout_width="match_parent"
         android:layout_marginHorizontal="230dp"
-        android:layout_height="match_parent"/>
+        android:layout_height="match_parent">
+        <com.scwang.smart.refresh.header.ClassicsHeader
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"/>
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/rv_record"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"/>
+        <com.scwang.smart.refresh.footer.ClassicsFooter
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"/>
+    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_join_course.xml b/app/src/main/res/layout/activity_join_course.xml
deleted file mode 100644
index 388d6d8..0000000
--- a/app/src/main/res/layout/activity_join_course.xml
+++ /dev/null
@@ -1,394 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <com.dollearn.student.views.ScrollInterceptScrollView
-        android:id="@+id/scrollView"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:scrollbars="none"
-        app:layout_constraintBottom_toTopOf="@id/ll_bottom"
-        app:layout_constraintTop_toTopOf="parent">
-
-        <androidx.constraintlayout.widget.ConstraintLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content">
-
-            <com.youth.banner.Banner
-                android:id="@+id/banner"
-                android:layout_width="match_parent"
-                android:layout_height="220dp"
-                app:is_auto_loop="true"
-                app:layout_constraintTop_toTopOf="parent" />
-
-            <TextView
-                android:id="@+id/tv_name"
-                android:layout_width="0dp"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintEnd_toStartOf="@id/mtvtag"
-                android:layout_height="wrap_content"
-                android:layout_margin="14dp"
-                android:textColor="@color/textColor"
-                android:textSize="18sp"
-                android:textStyle="bold"
-                app:layout_constraintTop_toBottomOf="@id/banner" />
-
-            <TextView
-                android:id="@+id/mtvtag"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:background="@drawable/shap_tag"
-                android:paddingStart="5dp"
-                android:paddingTop="3dp"
-                android:paddingEnd="5dp"
-                android:paddingBottom="3dp"
-                android:textColor="@color/white"
-                app:layout_constraintRight_toRightOf="parent"
-                app:layout_constraintTop_toTopOf="@+id/tv_name"
-                tools:text="常规班" />
-
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="1px"
-                android:layout_marginStart="14dp"
-                android:layout_marginTop="14dp"
-                android:background="@color/dividing_line_color"
-                app:layout_constraintTop_toBottomOf="@id/tv_name" />
-            <androidx.constraintlayout.widget.ConstraintLayout
-                android:id="@+id/cl_time"
-                android:layout_width="match_parent"
-                app:layout_constraintTop_toBottomOf="@id/tv_name"
-                android:layout_height="wrap_content">
-                <TextView
-                    android:id="@+id/tv1"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="28dp"
-                    android:text="上课时间:"
-                    android:textColor="@color/textColor"
-                    android:textSize="14sp"
-                    android:layout_marginStart="14dp"
-                    android:textStyle="bold"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent"/>
-
-                <TextView
-                    android:id="@+id/tv_week"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:textColor="@color/textColor"
-                    android:textSize="14sp"
-                    app:layout_constraintBaseline_toBaselineOf="@id/tv1"
-                    app:layout_constraintStart_toEndOf="@id/tv1" />
-
-                <TextView
-                    android:id="@+id/tv_time"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="8dp"
-                    android:textColor="@color/colorPrimary"
-                    android:textSize="14sp"
-                    android:textStyle="bold"
-                    app:layout_constraintStart_toStartOf="@id/tv_week"
-                    app:layout_constraintTop_toBottomOf="@id/tv_week" />
-
-                <View
-                    android:id="@+id/line1"
-                    android:layout_width="match_parent"
-                    android:layout_height="1px"
-                    android:layout_marginStart="14dp"
-                    android:layout_marginTop="14dp"
-                    android:background="@color/dividing_line_color"
-                    app:layout_constraintTop_toBottomOf="@id/tv_time" />
-            </androidx.constraintlayout.widget.ConstraintLayout>
-
-
-
-            <RelativeLayout
-                android:id="@+id/mll_class_yxq"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:orientation="horizontal"
-                android:visibility="gone"
-                android:layout_marginTop="14dp"
-                app:layout_constraintTop_toBottomOf="@+id/cl_time"
-                tools:visibility="visible">
-
-                <TextView
-                    android:id="@+id/mtvyxq"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="14dp"
-                    android:layout_marginTop="14dp"
-                    android:text="运动营有效期:"
-                    android:textColor="@color/textColor"
-                    android:textSize="14sp"
-                    android:textStyle="bold" />
-
-                <TextView
-                    android:id="@+id/mtv_class_yxq"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="14dp"
-                    android:layout_toRightOf="@+id/mtvyxq"
-                    android:textColor="@color/textColor"
-                    android:textSize="14sp"
-                    android:text="购买当天有效" />
-
-                <View
-                    android:id="@+id/line2"
-                    android:layout_width="match_parent"
-                    android:layout_height="1px"
-                    android:layout_marginStart="14dp"
-                    android:layout_marginTop="14dp"
-                    android:layout_below="@id/mtv_class_yxq"
-                    android:background="@color/dividing_line_color"
-                    android:layout_alignParentBottom="true"/>
-            </RelativeLayout>
-
-            <TextView
-                android:id="@+id/tv_shop"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="14dp"
-                android:textColor="@color/textColor"
-                android:textSize="14sp"
-                app:layout_constraintEnd_toEndOf="parent"
-                android:layout_marginEnd="10dp"
-                app:layout_constraintStart_toEndOf="@id/tv_1"
-                app:layout_constraintTop_toBottomOf="@id/mll_class_yxq" />
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="上课门店:"
-                android:textColor="@color/textColor"
-                android:textSize="14sp"
-                android:textStyle="bold"
-                android:id="@+id/tv_1"
-                app:layout_constraintBaseline_toBaselineOf="@id/tv_shop"
-                app:layout_constraintStart_toStartOf="parent"
-                android:layout_marginStart="14dp"/>
-
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="1px"
-                android:layout_marginStart="14dp"
-                android:layout_marginTop="14dp"
-                android:background="@color/dividing_line_color"
-                app:layout_constraintTop_toBottomOf="@id/tv_shop" />
-
-            <TextView
-                android:id="@+id/tv_address"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="28dp"
-                android:textColor="@color/textColor"
-                android:textSize="14sp"
-                app:layout_constraintStart_toStartOf="@id/tv_shop"
-                app:layout_constraintEnd_toEndOf="@id/tv_shop"
-                app:layout_constraintTop_toBottomOf="@id/tv_shop" />
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="上课地址:"
-                android:textColor="@color/textColor"
-                android:textSize="14sp"
-                android:textStyle="bold"
-                app:layout_constraintBaseline_toBaselineOf="@id/tv_address"
-                app:layout_constraintStart_toStartOf="@id/tv_1" />
-
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="1px"
-                android:layout_marginStart="14dp"
-                android:layout_marginTop="14dp"
-                android:background="@color/dividing_line_color"
-                app:layout_constraintTop_toBottomOf="@id/tv_address" />
-
-            <TextView
-                android:id="@+id/tv_2"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="28dp"
-                android:text="选择运动营套餐:"
-                android:textColor="@color/textColor"
-                android:textSize="14sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="@id/tv_1"
-                app:layout_constraintTop_toBottomOf="@id/tv_address" />
-
-            <androidx.recyclerview.widget.RecyclerView
-                android:id="@+id/rv_lesson_count"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginHorizontal="40dp"
-                app:layout_constraintTop_toBottomOf="@id/tv_2" />
-
-            <View
-                android:id="@+id/line"
-                android:layout_width="match_parent"
-                android:layout_height="1px"
-                android:layout_margin="14dp"
-                android:background="@color/dividing_line_color"
-                app:layout_constraintTop_toBottomOf="@id/rv_lesson_count" />
-
-            <androidx.constraintlayout.widget.Group
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:id="@+id/gp_count"
-                app:constraint_referenced_ids="tv_2,rv_lesson_count,line"/>
-
-            <TextView
-                android:id="@+id/tv_add_student"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="18dp"
-                android:drawableEnd="@mipmap/ic_add"
-                android:drawablePadding="6dp"
-                android:paddingVertical="10dp"
-                android:text="选择运动营成员"
-                android:textSize="14sp"
-                app:layout_constraintEnd_toEndOf="@id/tv_name"
-                app:layout_constraintTop_toBottomOf="@id/rv_lesson_count" />
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="运动营成员"
-                android:textColor="@color/textColor"
-                android:textSize="14sp"
-                android:textStyle="bold"
-                app:layout_constraintBaseline_toBaselineOf="@id/tv_add_student"
-                app:layout_constraintStart_toStartOf="@id/tv_1" />
-
-            <androidx.recyclerview.widget.RecyclerView
-                android:id="@+id/rv_student"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                app:layout_constraintTop_toBottomOf="@id/tv_add_student" />
-
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="1px"
-                android:layout_marginHorizontal="14dp"
-                android:layout_marginTop="8dp"
-                android:background="@color/dividing_line_color"
-                app:layout_constraintTop_toBottomOf="@id/rv_student" />
-
-            <androidx.constraintlayout.widget.ConstraintLayout
-                android:id="@+id/cl_coupon"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="8dp"
-                android:visibility="gone"
-                app:layout_constraintTop_toBottomOf="@id/rv_student">
-
-                <TextView
-                    android:id="@+id/tv_coupon"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:padding="14dp"
-                    android:text="去选择"
-                    android:textColor="@color/colorPrimary"
-                    android:textSize="14sp"
-                    android:textStyle="bold"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintTop_toTopOf="parent" />
-
-                <TextView
-                    android:id="@+id/tv_3"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="14dp"
-                    android:text="可用优惠券"
-                    android:textColor="@color/textColor"
-                    android:textSize="14sp"
-                    android:textStyle="bold"
-                    app:layout_constraintBaseline_toBaselineOf="@id/tv_coupon"
-                    app:layout_constraintStart_toStartOf="parent" />
-
-                <TextView
-                    android:id="@+id/tv_coupon_count"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="(0张可用)"
-                    android:textColor="@color/textColor"
-                    android:textSize="12sp"
-                    app:layout_constraintBaseline_toBaselineOf="@id/tv_3"
-                    app:layout_constraintStart_toEndOf="@id/tv_3" />
-
-                <View
-                    android:layout_width="match_parent"
-                    android:layout_height="1px"
-                    android:layout_marginHorizontal="14dp"
-                    android:background="@color/dividing_line_color"
-                    app:layout_constraintTop_toBottomOf="@id/tv_coupon" />
-            </androidx.constraintlayout.widget.ConstraintLayout>
-        </androidx.constraintlayout.widget.ConstraintLayout>
-    </com.dollearn.student.views.ScrollInterceptScrollView>
-
-    <LinearLayout
-        android:id="@+id/ll_bottom"
-        android:layout_width="match_parent"
-        android:layout_height="75dp"
-        android:gravity="center_vertical"
-        app:layout_constraintBottom_toBottomOf="parent">
-
-        <TextView
-            android:id="@+id/tv_price"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:layout_marginStart="8dp"
-            android:gravity="center"
-            android:text="¥0"
-            android:textColor="@color/colorYellow"
-            android:textSize="21sp"
-            android:textStyle="bold" />
-
-        <LinearLayout
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="9dp"
-            android:layout_weight="1"
-            android:orientation="vertical">
-
-            <TextView
-                android:id="@+id/tv_vip_price"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:textColor="@color/color_text_price"
-                android:textSize="13sp"
-                android:textStyle="bold"
-                tools:text="会员价:¥80" />
-
-            <TextView
-                android:id="@+id/tv_coin_price"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="2dp"
-                android:textColor="@color/color_text_price"
-                android:textSize="13sp"
-                android:textStyle="bold"
-                tools:text="会员价:¥80" />
-        </LinearLayout>
-
-        <TextView
-            android:id="@+id/tv_action"
-            style="@style/style_btn_action"
-            android:layout_width="160dp"
-            android:layout_height="wrap_content"
-            android:layout_marginEnd="10dp"
-            android:text="立即报名" />
-    </LinearLayout>
-
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="1px"
-        android:background="@color/dividing_line_color"
-        app:layout_constraintTop_toTopOf="@id/ll_bottom" />
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 695d9c5..3a46fea 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -2,6 +2,7 @@
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
+    android:background="@color/page_bg"
     android:layout_height="match_parent">
 
     <ImageView
diff --git a/app/src/main/res/layout/activity_my_qr.xml b/app/src/main/res/layout/activity_my_qr.xml
deleted file mode 100644
index d3a4c52..0000000
--- a/app/src/main/res/layout/activity_my_qr.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.core.widget.NestedScrollView
-    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
-    android:layout_height="match_parent">
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="vertical">
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="二维码注意事项"
-            android:textStyle="bold"
-            android:textSize="16sp"
-            android:layout_marginTop="15dp"
-            android:layout_marginStart="15dp"
-            android:textColor="@color/textColor"/>
-        <TextView
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="8dp"
-            android:layout_marginHorizontal="15dp"
-            android:textSize="14sp"
-            android:id="@+id/tv_tip"/>
-        <androidx.recyclerview.widget.RecyclerView
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:id="@+id/rv_student"
-            android:layout_marginTop="10dp"/>
-    </LinearLayout>
-</androidx.core.widget.NestedScrollView>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_my_world_detail.xml b/app/src/main/res/layout/activity_my_world_detail.xml
deleted file mode 100644
index ef5225e..0000000
--- a/app/src/main/res/layout/activity_my_world_detail.xml
+++ /dev/null
@@ -1,439 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <com.dollearn.student.views.ScrollInterceptScrollView
-        android:id="@+id/scrollView"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:scrollbars="none"
-        app:layout_constraintBottom_toTopOf="@id/tv_action"
-        app:layout_constraintTop_toTopOf="parent">
-
-        <androidx.constraintlayout.widget.ConstraintLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content">
-
-            <com.youth.banner.Banner
-                android:id="@+id/banner"
-                android:layout_width="match_parent"
-                android:layout_height="220dp"
-                app:indicator_height="0dp"
-                app:is_auto_loop="true"
-                app:is_infinite_loop="true"
-                app:layout_constraintTop_toTopOf="parent" />
-
-            <TextView
-                android:id="@+id/tv_name"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_margin="14dp"
-                android:textColor="@color/textColor"
-                android:textSize="18sp"
-                android:textStyle="bold"
-                app:layout_constraintEnd_toStartOf="@id/tv_hot"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@id/banner" />
-
-            <TextView
-                android:id="@+id/tv_hot"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginEnd="14dp"
-                android:textColor="@color/colorPrimary"
-                android:textSize="18sp"
-                android:textStyle="bold"
-                android:drawableStart="@mipmap/ic_heat"
-                android:drawablePadding="4dp"
-                android:gravity="center"
-                android:text="0"
-                app:layout_constraintBaseline_toBaselineOf="@id/tv_name"
-                app:layout_constraintEnd_toEndOf="parent" />
-
-
-            <TextView
-                android:id="@+id/tv_address"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="7dp"
-                android:layout_marginEnd="14dp"
-                android:visibility="gone"
-                android:drawableStart="@mipmap/ic_address"
-                android:drawablePadding="5dp"
-                android:textColor="@color/textColor66"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintStart_toStartOf="@id/tv_name"
-                app:layout_constraintTop_toBottomOf="@id/tv_name" />
-
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="1px"
-                android:layout_marginStart="14dp"
-                android:layout_marginTop="14dp"
-                android:background="@color/dividing_line_color"
-                app:layout_constraintTop_toBottomOf="@id/tv_address" />
-
-            <TextView
-                android:id="@+id/tv_1"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="28dp"
-                android:drawableStart="@drawable/orange_dot"
-                android:drawablePadding="6dp"
-                android:text="截止报名时间"
-                android:textColor="@color/textColor66"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="@id/tv_name"
-                app:layout_constraintTop_toBottomOf="@id/tv_address" />
-
-            <TextView
-                android:id="@+id/tv_deadline"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginStart="24dp"
-                android:layout_marginTop="8dp"
-                android:textColor="@color/textColor"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@id/tv_1"
-                tools:text="2023-03-15 09:00" />
-
-            <TextView
-                android:id="@+id/tv_2"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="14dp"
-                android:drawableStart="@drawable/orange_dot"
-                android:drawablePadding="6dp"
-                android:text="开始时间"
-                android:textColor="@color/textColor66"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="@id/tv_name"
-                app:layout_constraintTop_toBottomOf="@id/tv_deadline" />
-
-            <TextView
-                android:id="@+id/tv_start_time"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginStart="24dp"
-                android:layout_marginTop="8dp"
-                android:textColor="@color/textColor"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@id/tv_2"
-                tools:text="2023-03-15 09:00" />
-
-            <TextView
-                android:id="@+id/tv_3"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="14dp"
-                android:drawableStart="@drawable/orange_dot"
-                android:drawablePadding="6dp"
-                android:text="结束时间"
-                android:textColor="@color/textColor66"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="@id/tv_name"
-                app:layout_constraintTop_toBottomOf="@id/tv_start_time" />
-
-            <TextView
-                android:id="@+id/tv_end_time"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginStart="24dp"
-                android:layout_marginTop="8dp"
-                android:textColor="@color/textColor"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@id/tv_3"
-                tools:text="2023-03-15 09:00" />
-
-            <TextView
-                android:id="@+id/tv_4"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="14dp"
-                android:drawableStart="@drawable/orange_dot"
-                android:drawablePadding="6dp"
-                android:text="报名年龄"
-                android:textColor="@color/textColor66"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="@id/tv_name"
-                app:layout_constraintTop_toBottomOf="@id/tv_end_time" />
-
-            <TextView
-                android:id="@+id/tv_age"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginStart="24dp"
-                android:layout_marginTop="8dp"
-                android:textColor="@color/textColor"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@id/tv_4"
-                tools:text="7-12岁" />
-
-            <TextView
-                android:id="@+id/tv_44"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="14dp"
-                android:drawableStart="@drawable/orange_dot"
-                android:drawablePadding="6dp"
-                android:text="参赛者性别"
-                android:textColor="@color/textColor66"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="@id/tv_name"
-                app:layout_constraintTop_toBottomOf="@id/tv_age" />
-
-            <TextView
-                android:id="@+id/tv_sex"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginStart="24dp"
-                android:layout_marginTop="8dp"
-                android:textColor="@color/textColor"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@id/tv_44"
-                tools:text="男" />
-
-            <TextView
-                android:id="@+id/tv_5"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="14dp"
-                android:drawableStart="@drawable/orange_dot"
-                android:drawablePadding="6dp"
-                android:text="参赛地址"
-                android:textColor="@color/textColor66"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="@id/tv_name"
-                app:layout_constraintTop_toBottomOf="@id/tv_sex" />
-
-            <TextView
-                android:id="@+id/tv_city"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginEnd="14dp"
-                android:textColor="@color/textColor"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                app:layout_constraintBaseline_toBaselineOf="@id/tv_play_address"
-                app:layout_constraintEnd_toEndOf="parent"
-                tools:text="四川|成都" />
-
-            <TextView
-                android:id="@+id/tv_play_address"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_marginStart="24dp"
-                android:layout_marginTop="8dp"
-                android:layout_marginEnd="10dp"
-                android:textColor="@color/textColor"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                app:layout_constraintEnd_toStartOf="@id/tv_city"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@id/tv_5"
-                tools:text="天府新谷9号楼1005A" />
-
-            <TextView
-                android:id="@+id/tv_66"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="14dp"
-                android:drawableStart="@drawable/orange_dot"
-                android:drawablePadding="6dp"
-                android:text="参与赛点"
-                android:textColor="@color/textColor66"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="@id/tv_name"
-                app:layout_constraintTop_toBottomOf="@id/tv_play_address" />
-
-            <LinearLayout
-                android:id="@+id/mllshops"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="10dp"
-                android:orientation="horizontal"
-                app:layout_constraintTop_toBottomOf="@+id/tv_66">
-
-                <TextView
-                    android:id="@+id/tv_shops"
-                    android:layout_width="0dp"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="24dp"
-                    android:layout_marginEnd="10dp"
-                    android:layout_weight="1"
-                    android:ellipsize="end"
-                    android:maxLines="1"
-                    android:textColor="@color/textColor"
-                    android:textSize="12sp"
-                    android:textStyle="bold"
-                    app:layout_constraintEnd_toStartOf="@id/tv_city"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toBottomOf="@id/tv_5"
-                    tools:text="玩湃-喜望店,门店1,门店2喜望店,门店1,门店2喜望店,门店1,门店2喜望店,门店1,门店2喜望店,门店1,门店2喜望店,门店1,门店2" />
-
-                <TextView
-                    android:id="@+id/mtvcheckmore"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginEnd="14dp"
-                    android:text="@string/chekmmore"
-                    android:textColor="@color/colorPrimary" />
-            </LinearLayout>
-
-
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="1px"
-                android:layout_marginStart="14dp"
-                android:layout_marginTop="14dp"
-                android:background="@color/dividing_line_color"
-                app:layout_constraintTop_toBottomOf="@id/mllshops" />
-
-            <TextView
-                android:id="@+id/tv_61"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="28dp"
-                android:text="赛事人员"
-                android:textColor="@color/textColor"
-                android:textSize="16sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="@id/tv_name"
-                app:layout_constraintTop_toBottomOf="@id/mllshops" />
-            <androidx.recyclerview.widget.RecyclerView
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:id="@+id/rv_student"
-                android:layout_marginTop="10dp"
-                app:layout_constraintTop_toBottomOf="@id/tv_61"/>
-
-            <TextView
-                android:id="@+id/tv_6"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="14dp"
-                android:text="比赛费用"
-                android:textColor="@color/textColor"
-                android:textSize="16sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="@id/tv_name"
-                app:layout_constraintTop_toBottomOf="@id/rv_student" />
-
-            <TextView
-                android:id="@+id/tv_price"
-                style="@style/style_common_text"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="12dp"
-                android:text="¥"
-                app:layout_constraintStart_toStartOf="@id/tv_6"
-                app:layout_constraintTop_toBottomOf="@id/tv_6" />
-
-            <TextView
-                android:id="@+id/tv_total"
-                style="@style/style_common_text"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="12dp"
-                android:text="合计:"
-                app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintTop_toBottomOf="@id/tv_6"
-                android:layout_marginEnd="14dp"/>
-
-
-
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="1px"
-                android:layout_marginStart="14dp"
-                android:layout_marginTop="14dp"
-                android:background="@color/dividing_line_color"
-                app:layout_constraintTop_toBottomOf="@id/tv_price" />
-
-            <TextView
-                android:id="@+id/tv_7"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="28dp"
-                android:text="比赛简介"
-                android:textColor="@color/textColor"
-                android:textSize="16sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="@id/tv_name"
-                app:layout_constraintTop_toBottomOf="@id/tv_price" />
-
-            <TextView
-                android:id="@+id/tv_introduce"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginHorizontal="14dp"
-                android:layout_marginTop="7dp"
-                android:textColor="@color/textColor99"
-                android:textSize="14sp"
-                app:layout_constraintTop_toBottomOf="@id/tv_7"
-                tools:text="这是欢乐跑活动赛事简介,本次活动由海豚英语组织,提高全民素质…" />
-
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="1px"
-                android:layout_marginStart="14dp"
-                android:layout_marginTop="14dp"
-                android:background="@color/dividing_line_color"
-                app:layout_constraintTop_toBottomOf="@id/tv_introduce" />
-
-            <TextView
-                android:id="@+id/tv_8"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="28dp"
-                android:text="比赛详情"
-                android:textColor="@color/textColor"
-                android:textSize="16sp"
-                android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="@id/tv_name"
-                app:layout_constraintTop_toBottomOf="@id/tv_introduce" />
-
-            <WebView
-                android:id="@+id/webView"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="14dp"
-                app:layout_constraintTop_toBottomOf="@id/tv_8" />
-        </androidx.constraintlayout.widget.ConstraintLayout>
-    </com.dollearn.student.views.ScrollInterceptScrollView>
-
-    <TextView
-        android:id="@+id/tv_action"
-        android:layout_width="match_parent"
-        android:layout_height="48dp"
-        android:background="@color/colorPrimary"
-        android:gravity="center"
-        android:text="取消"
-        android:visibility="gone"
-        android:textColor="@color/white"
-        android:textSize="18sp"
-        android:textStyle="bold"
-        app:layout_constraintBottom_toBottomOf="parent" />
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_reserve_record.xml b/app/src/main/res/layout/activity_reserve_record.xml
deleted file mode 100644
index 1c2a442..0000000
--- a/app/src/main/res/layout/activity_reserve_record.xml
+++ /dev/null
@@ -1,89 +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"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:id="@+id/tv_1"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        android:text="当前运动营成员:"
-        android:textColor="@color/colorTextDark"
-        android:textSize="18sp"
-        android:textStyle="bold"
-        android:layout_marginStart="14dp"
-        android:layout_marginTop="18dp"/>
-    <com.flyco.tablayout.SlidingTabLayout
-        android:layout_width="match_parent"
-        android:layout_height="45dp"
-        app:layout_constraintTop_toBottomOf="@id/tv_1"
-        app:tl_textBold="BOTH"
-        app:tl_textSelectColor="@color/black"
-        app:tl_textUnselectColor="@color/textColor66"
-        app:tl_indicator_color="@color/colorPrimary"
-        app:tl_indicator_corner_radius="2dp"
-        app:tl_indicator_height="3dp"
-        android:layout_marginTop="12dp"
-        app:tl_indicator_width="56dp"
-        app:tl_textsize="16sp"
-        app:tl_tab_space_equal="true"
-        android:id="@+id/tab_top"/>
-    <TextView
-        android:id="@+id/tv_search"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="搜索"
-        android:textColor="@color/colorPrimary"
-        android:padding="10dp"
-        app:layout_constraintBaseline_toBaselineOf="@id/et_search"
-        app:layout_constraintEnd_toEndOf="parent"
-        android:layout_marginEnd="4dp"
-        android:textSize="14sp"
-        android:textStyle="bold"/>
-    <EditText
-        android:id="@+id/et_search"
-        android:layout_width="0dp"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintEnd_toStartOf="@id/tv_search"
-        android:layout_height="wrap_content"
-        app:layout_constraintTop_toBottomOf="@id/tab_top"
-        android:layout_marginTop="12dp"
-        android:textSize="14sp"
-        android:hint="输入门店名称"
-        android:paddingVertical="10dp"
-        android:drawablePadding="6dp"
-        android:paddingHorizontal="4dp"
-        android:drawableStart="@mipmap/icon_search_gray"
-        android:background="@drawable/bg_grey_4dp"
-        android:layout_marginStart="14dp"/>
-    <CheckBox
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:id="@+id/cb_type"
-        android:button="@null"
-        android:background="@null"
-        app:layout_constraintTop_toBottomOf="@id/et_search"
-        android:text="上课时间"
-        android:layout_marginTop="4dp"
-        android:paddingVertical="13dp"
-        android:textSize="16sp"
-        android:drawablePadding="1dp"
-        android:textColor="@color/selector_black_red"
-        app:layout_constraintStart_toStartOf="parent"
-        android:layout_marginStart="14dp"
-        android:drawableEnd="@drawable/selector_filter_check"/>
-
-    <androidx.viewpager.widget.ViewPager
-        android:id="@+id/view_pager"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        app:layout_constraintTop_toBottomOf="@id/cb_type"
-        app:layout_constraintBottom_toBottomOf="parent"/>
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="6dp"
-        app:layout_constraintTop_toTopOf="@id/view_pager"
-        android:background="@drawable/bg_shadow_top"/>
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_score_shop.xml b/app/src/main/res/layout/activity_score_shop.xml
deleted file mode 100644
index 0267f54..0000000
--- a/app/src/main/res/layout/activity_score_shop.xml
+++ /dev/null
@@ -1,244 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/cl_user"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginHorizontal="14dp"
-        android:layout_marginTop="10dp"
-        android:background="@drawable/bg_white_4dp"
-        android:elevation="4dp"
-        app:layout_constraintTop_toTopOf="parent">
-
-        <com.facebook.drawee.view.SimpleDraweeView
-            android:id="@+id/iv_avatar"
-            style="@style/DefaultHeadStyle"
-            android:layout_width="62dp"
-            android:layout_height="62dp"
-            android:layout_marginStart="8dp"
-            android:layout_marginTop="15dp"
-            android:layout_marginBottom="16dp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-
-        <TextView
-            android:id="@+id/tv_name"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="15dp"
-            android:layout_marginTop="9dp"
-            android:textColor="@color/textColor"
-            android:textSize="14sp"
-            android:textStyle="bold"
-            app:layout_constraintStart_toEndOf="@id/iv_avatar"
-            app:layout_constraintTop_toTopOf="@id/iv_avatar" />
-
-        <TextView
-            android:id="@+id/tv_1"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="6dp"
-            android:text="可用积分:"
-            android:textColor="@color/textColor"
-            android:textSize="12sp"
-            app:layout_constraintStart_toStartOf="@id/tv_name"
-            app:layout_constraintTop_toBottomOf="@id/tv_name" />
-
-        <TextView
-            android:id="@+id/tv_score"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:alpha="0.8"
-            android:text="0积分"
-            android:textColor="@color/color_text_price"
-            android:textSize="12sp"
-            app:layout_constraintBaseline_toBaselineOf="@id/tv_1"
-            app:layout_constraintStart_toEndOf="@id/tv_1" />
-
-        <TextView
-            android:id="@+id/tv_exchange_record"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="5dp"
-            android:padding="10dp"
-            android:text="兑换记录>>"
-            android:textColor="@color/blue"
-            android:textSize="14sp"
-            android:textStyle="bold"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-
-        <TextView
-            android:id="@+id/tv_score_record"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginEnd="10dp"
-            android:background="@drawable/bg_gradient_2dp"
-            android:paddingHorizontal="15dp"
-            android:paddingVertical="5dp"
-            android:text="积分明细"
-            android:textColor="@color/white"
-            android:textSize="12sp"
-            android:textStyle="bold"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintTop_toBottomOf="@id/tv_exchange_record" />
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-    <TextView
-        android:id="@+id/tv_search"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="4dp"
-        android:padding="10dp"
-        android:text="搜索"
-        android:textColor="@color/colorPrimary"
-        android:textSize="14sp"
-        android:textStyle="bold"
-        app:layout_constraintBaseline_toBaselineOf="@id/et_search"
-        app:layout_constraintEnd_toEndOf="parent" />
-
-    <EditText
-        android:id="@+id/et_search"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="14dp"
-        android:layout_marginTop="15dp"
-        android:background="@drawable/bg_grey_4dp"
-        android:drawableStart="@mipmap/icon_search_gray"
-        android:drawablePadding="6dp"
-        android:hint="输入商品名称"
-        android:paddingHorizontal="4dp"
-        android:paddingVertical="10dp"
-        android:textSize="14sp"
-        app:layout_constraintEnd_toStartOf="@id/tv_search"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/cl_user" />
-
-    <CheckBox
-        android:id="@+id/cb_sort"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="4dp"
-        android:layout_weight="1"
-        android:background="@null"
-        android:button="@null"
-        android:drawableEnd="@drawable/selector_filter_check"
-        android:drawablePadding="1dp"
-        android:gravity="center"
-        android:maxWidth="114dp"
-        android:paddingHorizontal="13dp"
-        android:paddingVertical="13dp"
-        android:singleLine="true"
-        android:text="默认排序"
-        android:textColor="@color/selector_black_red"
-        android:textSize="16sp"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/et_search" />
-
-    <CheckBox
-        android:id="@+id/cb_type"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="120dp"
-        android:layout_weight="1"
-        android:background="@null"
-        android:button="@null"
-        android:drawableEnd="@drawable/selector_filter_check"
-        android:drawablePadding="1dp"
-        android:gravity="center"
-        android:paddingHorizontal="14dp"
-        android:paddingVertical="13dp"
-        android:text="商品类型"
-        android:textColor="@color/selector_black_red"
-        android:textSize="16sp"
-        app:layout_constraintBaseline_toBaselineOf="@id/cb_sort"
-        app:layout_constraintStart_toStartOf="parent" />
-
-    <CheckBox
-        android:id="@+id/cb_syshop"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:background="@null"
-        android:button="@null"
-        android:drawableEnd="@drawable/selector_filter_check"
-        android:gravity="center"
-        android:paddingHorizontal="10dp"
-        android:paddingVertical="13dp"
-        android:maxWidth="140dp"
-        android:singleLine="true"
-        android:ellipsize="end"
-        android:text="适用门店"
-        android:textColor="@color/selector_black_red"
-        android:textSize="16sp"
-        app:layout_constraintLeft_toRightOf="@id/cb_type"
-        app:layout_constraintTop_toTopOf="@+id/cb_type" />
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/cb_sort">
-
-        <com.scwang.smart.refresh.layout.SmartRefreshLayout
-            android:id="@+id/refreshLayout"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent">
-
-            <com.scwang.smart.refresh.header.ClassicsHeader
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content" />
-
-            <androidx.recyclerview.widget.RecyclerView
-                android:id="@+id/rv_list"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:layout_marginHorizontal="8dp" />
-
-            <com.scwang.smart.refresh.footer.ClassicsFooter
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content" />
-        </com.scwang.smart.refresh.layout.SmartRefreshLayout>
-
-        <TextView
-            android:id="@+id/tv_empty"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="100dp"
-            android:text="暂无数据"
-            android:textColor="@color/textColor99"
-            android:textSize="14sp"
-            android:visibility="gone"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-
-        <View
-            android:layout_width="match_parent"
-            android:layout_height="6dp"
-            android:background="@drawable/bg_shadow_top"
-            app:layout_constraintTop_toTopOf="@id/refreshLayout" />
-
-        <View
-            android:id="@+id/bg_filter"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:background="@color/halfTrans"
-            android:visibility="gone"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintTop_toTopOf="@id/refreshLayout" />
-
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/rv_filter"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:background="@color/white"
-            android:visibility="gone"
-            app:layout_constraintTop_toTopOf="@id/refreshLayout" />
-    </androidx.constraintlayout.widget.ConstraintLayout>
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_shop_list.xml b/app/src/main/res/layout/activity_shop_list.xml
deleted file mode 100644
index 012e62f..0000000
--- a/app/src/main/res/layout/activity_shop_list.xml
+++ /dev/null
@@ -1,175 +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"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-    <TextView
-        android:id="@+id/tv_search"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="搜索"
-        android:textColor="@color/colorPrimary"
-        android:padding="10dp"
-        app:layout_constraintBaseline_toBaselineOf="@id/et_search"
-        app:layout_constraintEnd_toEndOf="parent"
-        android:layout_marginEnd="4dp"
-        android:textSize="14sp"
-        android:textStyle="bold"/>
-    <EditText
-        android:id="@+id/et_search"
-        android:layout_width="0dp"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintEnd_toStartOf="@id/tv_search"
-        android:layout_height="wrap_content"
-        app:layout_constraintTop_toTopOf="parent"
-        android:layout_marginTop="15dp"
-        android:textSize="14sp"
-        android:hint="输入门店名称"
-        android:paddingVertical="10dp"
-        android:drawablePadding="6dp"
-        android:paddingHorizontal="4dp"
-        android:drawableStart="@mipmap/icon_search_gray"
-        android:background="@drawable/bg_grey_4dp"
-        android:layout_marginStart="14dp"/>
-    <CheckBox
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:id="@+id/cb_city"
-        android:button="@null"
-        android:background="@null"
-        app:layout_constraintTop_toBottomOf="@id/et_search"
-        android:text="城市"
-        android:layout_marginTop="4dp"
-        android:paddingVertical="13dp"
-        android:textSize="16sp"
-        android:drawablePadding="1dp"
-        android:textColor="@color/selector_black_red"
-        app:layout_constraintStart_toStartOf="parent"
-        android:layout_marginStart="14dp"
-        android:drawableEnd="@drawable/selector_filter_check"/>
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:id="@+id/tv_distance"
-        android:text="距离"
-        app:layout_constraintBaseline_toBaselineOf="@id/cb_city"
-        android:paddingVertical="13dp"
-        android:textSize="16sp"
-        android:layout_marginEnd="80dp"
-        android:drawablePadding="1dp"
-        android:textColor="@color/textColor"
-        app:layout_constraintStart_toStartOf="parent"
-        android:layout_marginStart="150dp"
-        android:drawableEnd="@mipmap/sort_none"/>
-    <LinearLayout
-        app:layout_constraintTop_toBottomOf="@id/et_search"
-        android:id="@+id/ll_location"
-        android:layout_width="match_parent"
-        android:paddingVertical="9dp"
-        android:gravity="center_vertical"
-        android:layout_height="wrap_content">
-        <TextView
-            android:layout_width="0dp"
-            android:layout_weight="1"
-            android:layout_height="wrap_content"
-            android:text="开启定位查看最近门店"
-            android:textSize="13sp"
-            android:layout_marginStart="14dp"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_location"
-            android:drawableStart="@mipmap/loc"
-            android:background="@drawable/bg_orange_4dp"
-            android:paddingHorizontal="8dp"
-            android:paddingVertical="5dp"
-            android:text="去开启"
-            android:textColor="@color/white"
-            android:textSize="14sp"
-            android:textStyle="bold"
-            android:drawablePadding="4dp"
-            android:layout_marginEnd="14dp"/>
-    </LinearLayout>
-    <androidx.constraintlayout.widget.Barrier
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:id="@+id/barrier"
-        app:barrierDirection="bottom"
-        app:constraint_referenced_ids="ll_location,tv_distance"/>
-
-    <com.scwang.smart.refresh.layout.SmartRefreshLayout
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:id="@+id/refreshLayout"
-        app:layout_constraintTop_toBottomOf="@id/barrier"
-        app:layout_constraintBottom_toBottomOf="parent">
-        <com.scwang.smart.refresh.header.ClassicsHeader
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"/>
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/rv_shop"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"/>
-    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="6dp"
-        app:layout_constraintTop_toTopOf="@id/refreshLayout"
-        android:background="@drawable/bg_shadow_top"/>
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        app:layout_constraintTop_toTopOf="@id/refreshLayout"
-        app:layout_constraintBottom_toBottomOf="parent"
-        android:background="@color/halfTrans"
-        android:visibility="gone"
-        android:id="@+id/bg_filter"/>
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/cl_city"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:visibility="gone"
-        android:layout_marginBottom="70dp"
-        app:layout_constraintTop_toTopOf="@id/refreshLayout"
-        app:layout_constraintBottom_toBottomOf="parent"
-        android:background="@color/white">
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_refresh"
-            android:text="重新定位"
-            android:drawablePadding="6dp"
-            android:textStyle="bold"
-            android:textColor="@color/textColor"
-            android:textSize="14sp"
-            android:padding="14dp"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:drawableStart="@mipmap/reset"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_current"
-            app:layout_constraintBaseline_toBaselineOf="@id/tv_refresh"
-            app:layout_constraintStart_toStartOf="parent"
-            android:layout_marginStart="14dp"
-            android:textSize="14sp"
-            android:textColor="@color/colorYellow"
-            android:text="当前城市:成都"/>
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/rv_city"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            app:layout_constraintTop_toBottomOf="@id/tv_refresh"
-            app:layout_constraintBottom_toBottomOf="parent"/>
-        <com.dollearn.student.views.WaveSideBar
-            android:id="@+id/side_bar"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            app:layout_constraintTop_toTopOf="@id/rv_city"
-            app:layout_constraintBottom_toBottomOf="@id/rv_city"
-            android:paddingLeft="8dp"
-            android:paddingRight="8dp"
-            app:sidebar_text_color="@color/colorPrimary"/>
-    </androidx.constraintlayout.widget.ConstraintLayout>
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_stu_manage.xml b/app/src/main/res/layout/activity_stu_manage.xml
deleted file mode 100644
index 6aaae75..0000000
--- a/app/src/main/res/layout/activity_stu_manage.xml
+++ /dev/null
@@ -1,27 +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"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_add_student"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:text="添加人员"
-            android:textSize="14sp"
-            android:layout_marginTop="15dp"
-            android:layout_marginEnd="14dp"
-            android:drawablePadding="6dp"
-            android:paddingVertical="10dp"
-            android:drawableEnd="@mipmap/ic_add"/>
-
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/rv_student"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            app:layout_constraintTop_toBottomOf="@id/tv_add_student"
-            app:layout_constraintBottom_toBottomOf="parent"/>
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_check_qrcode.xml b/app/src/main/res/layout/dialog_check_qrcode.xml
deleted file mode 100644
index 24f2913..0000000
--- a/app/src/main/res/layout/dialog_check_qrcode.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?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">
-
-    <LinearLayout
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_centerInParent="true"
-        android:gravity="center_horizontal"
-        android:orientation="vertical">
-        <LinearLayout
-            android:layout_width="wrap_content"
-            android:background="@color/white"
-            android:orientation="vertical"
-            android:layout_height="wrap_content">
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="可乐"
-                android:textStyle="bold"
-                android:id="@+id/tv_title"
-                android:visibility="gone"
-                android:textColor="@color/textColor"
-                android:textSize="20sp"
-                android:layout_gravity="center"
-                android:layout_marginTop="17dp"/>
-            <ImageView
-                android:id="@+id/ivqr"
-                android:layout_marginVertical="30dp"
-                android:layout_marginHorizontal="40dp"
-                android:layout_width="230dp"
-                android:layout_height="230dp"
-                android:scaleType="fitXY" />
-        </LinearLayout>
-
-
-        <ImageView
-            android:id="@+id/iv_close"
-            android:layout_width="60dp"
-            android:layout_height="60dp"
-            android:layout_marginTop="40dp"
-            android:padding="10dp"
-            android:src="@mipmap/icon_close" />
-
-    </LinearLayout>
-
-</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_choose_coupon.xml b/app/src/main/res/layout/dialog_choose_coupon.xml
deleted file mode 100644
index 46369eb..0000000
--- a/app/src/main/res/layout/dialog_choose_coupon.xml
+++ /dev/null
@@ -1,53 +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="wrap_content"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:layout_width="match_parent"
-        app:layout_constraintBottom_toBottomOf="parent"
-        android:background="@drawable/bg_white_top_20dp"
-        android:layout_height="420dp">
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_action"
-            app:layout_constraintBottom_toBottomOf="parent"
-            android:layout_marginBottom="18dp"
-            app:layout_constraintStart_toEndOf="@id/tv_cancel"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:textColor="@color/white"
-            android:textSize="14sp"
-            android:text="确认"
-            android:paddingVertical="10dp"
-            android:paddingHorizontal="57dp"
-            android:textStyle="bold"
-            android:background="@drawable/bg_orange_20dp"/>
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_cancel"
-            app:layout_constraintBottom_toBottomOf="parent"
-            android:layout_marginBottom="18dp"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintEnd_toStartOf="@id/tv_action"
-            android:textColor="@color/colorPrimary"
-            android:textSize="14sp"
-            android:text="取消"
-            android:paddingVertical="10dp"
-            android:paddingHorizontal="57dp"
-            android:textStyle="bold"
-            android:background="@drawable/bg_orange_line_20dp"/>
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/rv_coupon"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_marginBottom="10dp"
-            android:layout_marginTop="18dp"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintBottom_toTopOf="@id/tv_action"/>
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_competition_tip.xml b/app/src/main/res/layout/dialog_competition_tip.xml
deleted file mode 100644
index baa1245..0000000
--- a/app/src/main/res/layout/dialog_competition_tip.xml
+++ /dev/null
@@ -1,50 +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="wrap_content"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        app:layout_constraintTop_toTopOf="parent"
-        android:layout_marginHorizontal="40dp"
-        app:layout_constraintDimensionRatio="307:257"
-        android:background="@mipmap/bg_competition_tip">
-        <TextView
-            android:id="@+id/tv_close"
-            android:layout_height="35dp"
-            android:layout_width="100dp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            android:layout_marginStart="34dp"
-            android:layout_marginBottom="18dp"
-            android:text="关闭"
-            android:textSize="20sp"
-            android:textStyle="bold"
-            android:background="@drawable/bg_grey_line_15dp"
-            android:gravity="center"/>
-        <TextView
-            android:id="@+id/tv_see"
-            android:layout_height="35dp"
-            android:layout_width="100dp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:layout_marginEnd="34dp"
-            android:layout_marginBottom="18dp"
-            android:text="查看"
-            android:textSize="20sp"
-            android:textColor="@color/white"
-            android:textStyle="bold"
-            android:background="@drawable/bg_orange_20dp"
-            android:gravity="center"/>
-        <TextView
-            android:layout_width="match_parent"
-            android:layout_marginHorizontal="42dp"
-            android:layout_height="wrap_content"
-            android:gravity="center"
-            android:layout_marginBottom="14dp"
-            android:textStyle="bold"
-            app:layout_constraintBottom_toTopOf="@id/tv_close"
-            android:text="您完成了一场社区世界杯正式比赛,快去查看吧!"/>
-    </androidx.constraintlayout.widget.ConstraintLayout>
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_rule.xml b/app/src/main/res/layout/dialog_rule.xml
index 19f9d33..399f8b0 100644
--- a/app/src/main/res/layout/dialog_rule.xml
+++ b/app/src/main/res/layout/dialog_rule.xml
@@ -26,7 +26,7 @@
         android:layout_marginStart="26dp"
         android:layout_marginTop="20dp"
         android:layout_marginEnd="26dp"
-        android:text="尊敬的用户,为了向您提供更优质的服务,在您使用海豚英语App前,需要通过点击“同意”表示您已阅读并同意相关协议的各项规则,包括:我们会在您开启位置权限后访问、获取您的位置信息。"
+        android:text="尊敬的用户,为了向您提供更优质的服务,在您使用海豚英语App前,需要通过点击“同意”表示您已阅读并同意相关协议的各项规则。"
         android:textColor="@color/textColor"
         android:textSize="14sp"
         app:layout_constraintTop_toBottomOf="@id/tv_title" />
diff --git a/app/src/main/res/layout/dialog_share.xml b/app/src/main/res/layout/dialog_share.xml
new file mode 100644
index 0000000..85354cb
--- /dev/null
+++ b/app/src/main/res/layout/dialog_share.xml
@@ -0,0 +1,65 @@
+<?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="wrap_content"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:background="@color/white"
+        android:layout_height="213dp">
+        <TextView
+            android:id="@+id/tv_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="分享方式"
+            android:textColor="@color/textColor"
+            android:textStyle="bold"
+            android:textSize="16sp"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:layout_marginTop="18dp"/>
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/iv_close"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:padding="10dp"
+            android:layout_marginTop="3dp"
+            android:layout_marginEnd="55dp"
+            android:src="@mipmap/icon_close"/>
+
+        <TextView
+            android:id="@+id/wv_1"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="40dp"
+            android:layout_marginStart="280dp"
+            android:text="微信好友"
+            android:gravity="center"
+            android:drawableTop="@mipmap/share_wx"
+            android:textSize="12sp"
+            android:drawablePadding="8dp"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintEnd_toStartOf="@id/wv_2"
+            app:layout_constraintBottom_toBottomOf="parent" />
+
+        <TextView
+            android:id="@+id/wv_2"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="10dp"
+            app:layout_constraintStart_toEndOf="@id/wv_1"
+            app:layout_constraintEnd_toEndOf="parent"
+            android:layout_marginEnd="280dp"
+            android:textSize="12sp"
+            android:drawablePadding="8dp"
+            android:gravity="center"
+            android:text="朋友圈"
+            android:drawableTop="@mipmap/share_moment"
+            app:layout_constraintTop_toTopOf="@id/wv_1" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_shop_choose.xml b/app/src/main/res/layout/dialog_shop_choose.xml
deleted file mode 100644
index 192a2a1..0000000
--- a/app/src/main/res/layout/dialog_shop_choose.xml
+++ /dev/null
@@ -1,199 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-
-    <View
-        android:id="@+id/bg"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_marginHorizontal="14dp"
-        android:layout_marginTop="80dp"
-        android:background="@drawable/bg_white_10dp"
-        app:layout_constraintBottom_toBottomOf="@id/spacer"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <TextView
-        android:id="@+id/tv_title"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="104dp"
-        android:text="选择门店"
-        android:textColor="@color/textColor"
-        android:textSize="18sp"
-        android:textStyle="bold"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <TextView
-        android:id="@+id/tv_1"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="28dp"
-        android:text="所在城市:"
-        android:textColor="@color/textColor"
-        android:textSize="15sp"
-        android:textStyle="bold"
-        app:layout_constraintBaseline_toBaselineOf="@id/tv_province"
-        app:layout_constraintStart_toStartOf="parent" />
-
-    <TextView
-        android:id="@+id/tv_2"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="24dp"
-        android:text="省"
-        android:textColor="@color/textColor"
-        android:textSize="15sp"
-        android:textStyle="bold"
-        app:layout_constraintBaseline_toBaselineOf="@id/tv_province"
-        app:layout_constraintEnd_toEndOf="parent" />
-
-    <TextView
-        android:id="@+id/tv_province"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="31dp"
-        android:layout_marginEnd="10dp"
-        android:background="@drawable/bg_grey_line_6dp"
-        android:drawableEnd="@mipmap/icon_nav_open"
-        android:hint="请选择"
-        android:paddingHorizontal="7dp"
-        android:paddingVertical="14dp"
-        android:singleLine="true"
-        android:text="四川"
-        android:textColor="@color/textColor66"
-        android:textSize="15sp"
-        app:layout_constraintEnd_toStartOf="@id/tv_2"
-        app:layout_constraintStart_toEndOf="@id/tv_1"
-        app:layout_constraintTop_toBottomOf="@id/tv_title" />
-
-    <TextView
-        android:id="@+id/tv_city"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="18dp"
-        android:background="@drawable/bg_grey_line_6dp"
-        android:drawableEnd="@mipmap/icon_nav_open"
-        android:hint="请选择"
-        android:paddingHorizontal="7dp"
-        android:paddingVertical="14dp"
-        android:singleLine="true"
-        android:text="成都"
-        android:textColor="@color/textColor66"
-        android:textSize="15sp"
-        app:layout_constraintEnd_toEndOf="@id/tv_province"
-        app:layout_constraintStart_toStartOf="@id/tv_province"
-        app:layout_constraintTop_toBottomOf="@id/tv_province" />
-
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="24dp"
-        android:text="市"
-        android:textColor="@color/textColor"
-        android:textSize="15sp"
-        android:textStyle="bold"
-        app:layout_constraintBaseline_toBaselineOf="@id/tv_city"
-        app:layout_constraintEnd_toEndOf="parent" />
-
-    <TextView
-        android:id="@+id/tv_shop"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="18dp"
-        android:background="@drawable/bg_grey_line_6dp"
-        android:drawableEnd="@mipmap/icon_nav_open"
-        android:hint="请选择"
-        android:paddingHorizontal="7dp"
-        android:paddingVertical="14dp"
-        android:singleLine="true"
-        android:textColor="@color/textColor66"
-        android:textSize="15sp"
-        app:layout_constraintEnd_toEndOf="@id/tv_2"
-        app:layout_constraintStart_toStartOf="@id/tv_province"
-        app:layout_constraintTop_toBottomOf="@id/tv_city" />
-
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="28dp"
-        android:text="门店名称:"
-        android:textColor="@color/textColor"
-        android:textSize="15sp"
-        android:textStyle="bold"
-        app:layout_constraintBaseline_toBaselineOf="@id/tv_shop"
-        app:layout_constraintStart_toStartOf="parent" />
-
-    <TextView
-        android:id="@+id/tv_cancel"
-        style="@style/style_btn_action"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="64dp"
-        android:layout_marginEnd="10dp"
-        android:background="@drawable/bg_btn_disable"
-        android:paddingVertical="10dp"
-        android:text="取消"
-        app:layout_constraintBaseline_toBaselineOf="@id/tv_action"
-        app:layout_constraintEnd_toStartOf="@id/tv_action"
-        app:layout_constraintStart_toStartOf="parent" />
-
-    <TextView
-        android:id="@+id/tv_action"
-        style="@style/style_btn_action"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="10dp"
-        android:layout_marginTop="33dp"
-        android:layout_marginEnd="64dp"
-        android:paddingVertical="10dp"
-        android:text="确认"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toEndOf="@id/tv_cancel"
-        app:layout_constraintTop_toBottomOf="@id/tv_shop" />
-
-    <Space
-        android:id="@+id/spacer"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="24dp"
-        android:layout_marginBottom="100dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/tv_action" />
-
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/rv_province"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:background="@drawable/bg_white_grey_line_6dp"
-        android:maxHeight="100dp"
-        android:visibility="gone"
-        app:layout_constraintEnd_toEndOf="@id/tv_province"
-        app:layout_constraintStart_toStartOf="@id/tv_province"
-        app:layout_constraintTop_toBottomOf="@id/tv_province" />
-
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/rv_city"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:background="@drawable/bg_white_grey_line_6dp"
-        android:maxHeight="100dp"
-        android:visibility="gone"
-        app:layout_constraintEnd_toEndOf="@id/tv_province"
-        app:layout_constraintStart_toStartOf="@id/tv_province"
-        app:layout_constraintTop_toBottomOf="@id/tv_city" />
-
-    <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/rv_shop"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:background="@drawable/bg_white_grey_line_6dp"
-        android:maxHeight="100dp"
-        android:visibility="gone"
-        app:layout_constraintEnd_toEndOf="@id/tv_shop"
-        app:layout_constraintStart_toStartOf="@id/tv_shop"
-        app:layout_constraintTop_toBottomOf="@id/tv_shop" />
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_course.xml b/app/src/main/res/layout/fragment_course.xml
deleted file mode 100644
index a306022..0000000
--- a/app/src/main/res/layout/fragment_course.xml
+++ /dev/null
@@ -1,622 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<com.scwang.smart.refresh.layout.SmartRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/refreshLayout"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <com.scwang.smart.refresh.header.MaterialHeader
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content" />
-
-    <androidx.core.widget.NestedScrollView
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:scrollbars="none"
-        tools:layout_height="match_parent">
-
-        <androidx.constraintlayout.widget.ConstraintLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content">
-            <!--            无运动营成员布局-->
-            <LinearLayout
-                android:id="@+id/ll_add"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:background="@mipmap/dingbu"
-                app:layout_constraintTop_toTopOf="parent">
-
-                <ImageView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center"
-                    android:layout_marginStart="59dp"
-                    android:src="@mipmap/ren" />
-
-                <ImageView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center"
-                    android:layout_marginStart="13dp"
-                    android:layout_marginTop="5dp"
-                    android:src="@mipmap/add_stu" />
-
-                <TextView
-                    android:id="@+id/tv_add_stu"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center"
-                    android:paddingVertical="10dp"
-                    android:text="立即创建运动营成员"
-                    android:textColor="@color/white"
-                    android:textSize="18sp"
-                    android:textStyle="bold" />
-            </LinearLayout>
-
-            <Space
-                android:id="@+id/spacer"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginBottom="12dp"
-                app:layout_constraintBottom_toBottomOf="@id/ll_add"
-                app:layout_constraintStart_toStartOf="parent" />
-
-            <ImageView
-                android:id="@+id/iv_none"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                app:layout_constraintTop_toBottomOf="@id/spacer" />
-
-            <androidx.constraintlayout.widget.Group
-                android:id="@+id/gp_none"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:visibility="gone"
-                app:constraint_referenced_ids="ll_add,iv_none" />
-            <!--            有运动营成员布局-->
-            <ImageView
-                android:id="@+id/iv_top"
-                android:layout_width="match_parent"
-                android:layout_height="206dp"
-                android:scaleType="centerCrop"
-                android:src="@mipmap/bg_top"
-                app:layout_constraintTop_toTopOf="parent" />
-
-            <androidx.constraintlayout.widget.ConstraintLayout
-                android:id="@+id/cl_content"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="159dp"
-                android:background="@drawable/bg_white_top_40dp"
-                app:layout_constraintTop_toTopOf="parent">
-
-                <TextView
-                    android:id="@+id/tv_name"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="27dp"
-                    android:layout_marginTop="37dp"
-                    android:textColor="@color/textColor66"
-                    android:textSize="21sp"
-                    android:textStyle="bold"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent"
-                    tools:text="运动营成员名" />
-
-                <TextView
-                    android:id="@+id/tv_sex"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="9dp"
-                    android:drawablePadding="8dp"
-                    android:text="性别"
-                    android:textColor="@color/textColor66"
-                    android:textSize="14sp"
-                    app:layout_constraintStart_toStartOf="@id/tv_name"
-                    app:layout_constraintTop_toBottomOf="@id/tv_name" />
-
-                <TextView
-                    android:id="@+id/tv_age"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="8dp"
-                    android:textColor="@color/textColor66"
-                    android:textSize="14sp"
-                    app:layout_constraintBaseline_toBaselineOf="@id/tv_sex"
-                    app:layout_constraintStart_toEndOf="@id/tv_sex" />
-
-                <TextView
-                    android:id="@+id/tv_switch"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="13dp"
-                    android:layout_marginEnd="22dp"
-                    android:background="@drawable/bg_blue_14dp"
-                    android:paddingHorizontal="18dp"
-                    android:paddingVertical="4dp"
-                    android:text="切换"
-                    android:textColor="@color/white"
-                    android:textSize="14sp"
-                    android:textStyle="bold"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintTop_toTopOf="@id/tv_name" />
-
-                <TextView
-                    android:id="@+id/tv_height"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="61dp"
-                    android:drawableStart="@mipmap/shengao"
-                    android:drawablePadding="8dp"
-                    android:text="0cm"
-                    android:textColor="@color/colorTextDark"
-                    android:textSize="23sp"
-                    app:layout_constraintStart_toStartOf="@id/tv_name"
-                    app:layout_constraintTop_toBottomOf="@id/tv_sex" />
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginBottom="11dp"
-                    android:text="身高"
-                    android:textColor="@color/colorTextDark"
-                    android:textSize="14sp"
-                    android:textStyle="bold"
-                    app:layout_constraintBottom_toTopOf="@id/tv_height"
-                    app:layout_constraintStart_toStartOf="@id/tv_height" />
-
-                <TextView
-                    android:id="@+id/tv_bmi"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginEnd="13dp"
-                    android:drawableStart="@mipmap/bmi"
-                    android:drawablePadding="8dp"
-                    android:text="0.0"
-                    android:textColor="@color/colorTextDark"
-                    android:textSize="23sp"
-                    app:layout_constraintBaseline_toBaselineOf="@id/tv_height"
-                    app:layout_constraintEnd_toEndOf="parent" />
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginBottom="11dp"
-                    android:text="BMI"
-                    android:textColor="@color/colorTextDark"
-                    android:textSize="14sp"
-                    android:textStyle="bold"
-                    app:layout_constraintBottom_toTopOf="@id/tv_height"
-                    app:layout_constraintStart_toStartOf="@id/tv_bmi" />
-
-                <TextView
-                    android:id="@+id/tv_wight"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginEnd="13dp"
-                    android:drawableStart="@mipmap/tizhong"
-                    android:drawablePadding="8dp"
-                    android:text="0.0"
-                    android:textColor="@color/colorTextDark"
-                    android:textSize="23sp"
-                    app:layout_constraintBaseline_toBaselineOf="@id/tv_height"
-                    app:layout_constraintEnd_toStartOf="@id/tv_bmi"
-                    app:layout_constraintStart_toEndOf="@id/tv_height" />
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginBottom="11dp"
-                    android:text="体重"
-                    android:textColor="@color/colorTextDark"
-                    android:textSize="14sp"
-                    android:textStyle="bold"
-                    app:layout_constraintBottom_toTopOf="@id/tv_height"
-                    app:layout_constraintStart_toStartOf="@id/tv_wight" />
-
-                <View
-                    android:layout_width="match_parent"
-                    android:layout_height="1dp"
-                    android:layout_marginHorizontal="19dp"
-                    android:layout_marginTop="30dp"
-                    android:background="@color/dividing_line_color"
-                    app:layout_constraintTop_toBottomOf="@id/tv_wight" />
-
-                <TextView
-                    android:id="@+id/tv_more_report"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="30dp"
-                    android:gravity="center"
-                    android:paddingVertical="8dp"
-                    android:text="查看运动营成员更多测试报告"
-                    android:textColor="@color/textColor66"
-                    android:textSize="12sp"
-                    app:layout_constraintTop_toBottomOf="@id/tv_wight" />
-
-                <LinearLayout
-                    android:id="@+id/ll_course"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:gravity="center_vertical"
-                    android:orientation="horizontal"
-                    app:layout_constraintTop_toBottomOf="@id/tv_more_report">
-
-                    <androidx.recyclerview.widget.RecyclerView
-                        android:id="@+id/rv_course"
-                        android:layout_width="0dp"
-                        android:layout_height="wrap_content"
-                        android:layout_weight="1" />
-
-                    <TextView
-                        android:id="@+id/tv_class_hour"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginStart="10dp"
-                        android:layout_marginEnd="19dp"
-                        android:paddingVertical="10dp"
-                        android:text="@string/class_hour"
-                        android:textColor="@color/colorPrimary"
-                        android:textSize="14sp" />
-                </LinearLayout>
-
-
-                <androidx.constraintlayout.widget.ConstraintLayout
-                    android:id="@+id/cl_course_info"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:background="@drawable/bg_gradient"
-                    android:visibility="gone"
-                    app:layout_constraintTop_toBottomOf="@id/ll_course"
-                    tools:visibility="visible">
-
-                    <TextView
-                        android:id="@+id/tv_total"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginStart="24dp"
-                        android:layout_marginTop="10dp"
-                        android:text="0"
-                        android:textColor="@color/white"
-                        android:textSize="15sp"
-                        app:layout_constraintStart_toStartOf="parent"
-                        app:layout_constraintTop_toTopOf="parent" />
-
-                    <TextView
-                        android:id="@+id/tv_continue"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginBottom="6dp"
-                        android:padding="3dp"
-                        android:text="续费"
-                        android:textColor="#FCF200"
-                        android:textSize="12sp"
-                        android:textStyle="bold"
-                        app:layout_constraintBottom_toBottomOf="parent"
-                        app:layout_constraintEnd_toEndOf="@id/tv_total"
-                        app:layout_constraintStart_toStartOf="@id/tv_total"
-                        app:layout_constraintTop_toBottomOf="@id/tv_total" />
-
-                    <TextView
-                        android:id="@+id/tv_last"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginEnd="24dp"
-                        android:text="0"
-                        android:textColor="@color/white"
-                        android:textSize="15sp"
-                        app:layout_constraintBaseline_toBaselineOf="@id/tv_total"
-                        app:layout_constraintEnd_toEndOf="parent" />
-
-                    <TextView
-                        android:id="@+id/tv_continue_1"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:padding="3dp"
-                        android:text="续费"
-                        android:textColor="#FCF200"
-                        android:textSize="12sp"
-                        android:textStyle="bold"
-                        app:layout_constraintBaseline_toBaselineOf="@id/tv_continue"
-                        app:layout_constraintEnd_toEndOf="@id/tv_last"
-                        app:layout_constraintStart_toStartOf="@id/tv_last" />
-
-                    <TextView
-                        android:id="@+id/tv_used"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="0"
-                        android:textColor="@color/white"
-                        android:textSize="15sp"
-                        app:layout_constraintBaseline_toBaselineOf="@id/tv_total"
-                        app:layout_constraintEnd_toStartOf="@id/tv_last"
-                        app:layout_constraintStart_toEndOf="@id/tv_total" />
-
-                    <TextView
-                        android:id="@+id/tv_detail"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:padding="3dp"
-                        android:text="详情"
-                        android:textColor="#FCF200"
-                        android:textSize="12sp"
-                        android:textStyle="bold"
-                        app:layout_constraintBaseline_toBaselineOf="@id/tv_continue"
-                        app:layout_constraintEnd_toEndOf="@id/tv_used"
-                        app:layout_constraintStart_toStartOf="@id/tv_used" />
-                </androidx.constraintlayout.widget.ConstraintLayout>
-
-                <TextView
-                    android:id="@+id/tv_record"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="20dp"
-                    android:layout_marginEnd="19dp"
-                    android:paddingVertical="10dp"
-                    android:text="@string/reserve_record"
-                    android:textColor="@color/colorPrimary"
-                    android:textSize="14sp"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintTop_toBottomOf="@id/cl_course_info" />
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="45sp"
-                    android:text="我的日程"
-                    android:textColor="@color/colorTextDark"
-                    android:textSize="19sp"
-                    app:layout_constraintBaseline_toBaselineOf="@id/tv_record"
-                    app:layout_constraintStart_toStartOf="parent" />
-
-                <TextView
-                    android:id="@+id/tv_last_week"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="19dp"
-                    android:drawableStart="@drawable/dark_dot"
-                    android:drawablePadding="7dp"
-                    android:paddingVertical="5dp"
-                    android:text="前一周"
-                    android:textColor="@color/colorTextDark"
-                    android:textSize="14sp"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toBottomOf="@id/tv_record" />
-
-                <TextView
-                    android:id="@+id/tv_next_week"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginEnd="19dp"
-                    android:drawableStart="@drawable/dark_dot"
-                    android:drawablePadding="7dp"
-                    android:paddingVertical="5dp"
-                    android:text="后一周"
-                    android:textColor="@color/colorTextDark"
-                    android:textSize="14sp"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintTop_toBottomOf="@id/tv_record" />
-
-                <TextView
-                    android:id="@+id/tv_duration"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:textColor="@color/textColor99"
-                    android:textSize="12sp"
-                    app:layout_constraintBaseline_toBaselineOf="@id/tv_last_week"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintStart_toStartOf="parent"
-                    tools:text="2022.10.10-2022-10.1" />
-
-                <androidx.viewpager.widget.ViewPager
-                    android:id="@+id/vp_week"
-                    android:layout_width="match_parent"
-                    android:layout_height="100dp"
-                    android:layout_marginHorizontal="36dp"
-                    app:layout_constraintTop_toBottomOf="@id/tv_last_week" />
-
-                <ImageView
-                    android:id="@+id/iv_last"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:padding="10dp"
-                    android:src="@mipmap/ic_last"
-                    app:layout_constraintBottom_toBottomOf="@id/vp_week"
-                    app:layout_constraintEnd_toStartOf="@id/vp_week"
-                    app:layout_constraintTop_toTopOf="@id/vp_week" />
-
-                <ImageView
-                    android:id="@+id/iv_next"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:padding="10dp"
-                    android:src="@mipmap/ic_next"
-                    app:layout_constraintBottom_toBottomOf="@id/vp_week"
-                    app:layout_constraintStart_toEndOf="@id/vp_week"
-                    app:layout_constraintTop_toTopOf="@id/vp_week" />
-
-                <LinearLayout
-                    android:id="@+id/mllrv_course_schedule"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="vertical"
-                    app:layout_constraintTop_toBottomOf="@id/vp_week"
-                    tools:visibility="visible">
-
-                    <androidx.constraintlayout.widget.ConstraintLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content">
-
-                        <TextView
-                            android:id="@+id/tv_address"
-                            android:layout_width="match_parent"
-                            android:layout_height="wrap_content"
-                            android:layout_marginHorizontal="24dp"
-                            android:layout_marginTop="20dp"
-                            android:background="@drawable/bg_grey_line_11dp"
-                            android:paddingVertical="4dp"
-                            android:paddingStart="12dp"
-                            android:paddingEnd="80dp"
-                            tools:text="成都非遗玩湃全科体育公园"
-                            android:textColor="@color/disableColor"
-                            android:textSize="10sp"
-                            android:textStyle="bold"
-                            app:layout_constraintTop_toTopOf="parent" />
-
-                        <TextView
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:layout_marginEnd="10dp"
-                            android:drawableStart="@mipmap/pop_blue"
-                            android:drawablePadding="3dp"
-                            android:paddingVertical="4dp"
-                            android:text="位置详情"
-                            android:textColor="@color/disableColor"
-                            android:textSize="10sp"
-                            android:textStyle="bold"
-                            app:layout_constraintBaseline_toBaselineOf="@id/tv_address"
-                            app:layout_constraintEnd_toEndOf="@id/tv_address" />
-                    </androidx.constraintlayout.widget.ConstraintLayout>
-
-                    <androidx.recyclerview.widget.RecyclerView
-                        android:id="@+id/rv_course_schedule"
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content" />
-                </LinearLayout>
-
-
-                <TextView
-                    android:id="@+id/tv_1"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="24dp"
-                    android:layout_marginTop="16dp"
-                    android:drawableStart="@mipmap/star"
-                    android:drawablePadding="7dp"
-                    android:text="运动营成员徽章"
-                    android:textColor="@color/colorTextDark"
-                    android:textSize="16sp"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toBottomOf="@id/mllrv_course_schedule" />
-
-                <androidx.recyclerview.widget.RecyclerView
-                    android:id="@+id/rv_badge"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    app:layout_constraintTop_toBottomOf="@id/tv_1" />
-
-                <TextView
-                    android:id="@+id/tv_evaluation"
-                    style="@style/style_btn_action"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="35dp"
-                    android:paddingHorizontal="66dp"
-                    android:text="运动营成员评语"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toBottomOf="@id/rv_badge" />
-
-                <View
-                    android:layout_width="match_parent"
-                    android:layout_height="1dp"
-                    android:layout_marginHorizontal="19dp"
-                    android:layout_marginTop="37dp"
-                    app:layout_constraintTop_toBottomOf="@id/tv_evaluation" />
-
-                <TextView
-                    android:id="@+id/tv_2"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="29sp"
-                    android:layout_marginTop="54dp"
-                    android:text="课后练习"
-                    android:textColor="@color/colorTextDark"
-                    android:textSize="19sp"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toBottomOf="@id/tv_evaluation" />
-
-                <androidx.recyclerview.widget.RecyclerView
-                    android:id="@+id/rv_practice"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginHorizontal="16dp"
-                    app:layout_constraintTop_toBottomOf="@id/tv_2" />
-
-                <View
-                    android:layout_width="match_parent"
-                    android:layout_height="1dp"
-                    android:layout_marginHorizontal="22dp"
-                    android:layout_marginTop="20dp"
-                    android:background="@color/dividing_line_color"
-                    app:layout_constraintTop_toBottomOf="@id/rv_practice" />
-
-                <TextView
-                    android:id="@+id/tv_reward"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="24dp"
-                    android:layout_marginTop="21dp"
-                    android:layout_marginEnd="18dp"
-                    android:drawableStart="@mipmap/circle_orange"
-                    android:drawableEnd="@mipmap/more_black"
-                    android:drawablePadding="10dp"
-                    android:paddingVertical="16dp"
-                    android:text="观看当期课后练习视频可获得会员积分"
-                    android:textSize="11sp"
-                    app:layout_constraintTop_toBottomOf="@id/rv_practice" />
-            </androidx.constraintlayout.widget.ConstraintLayout>
-
-            <com.facebook.drawee.view.SimpleDraweeView
-                android:id="@+id/iv_avatar"
-                style="@style/DefaultHeadStyle"
-                android:layout_width="105dp"
-                android:layout_height="105dp"
-                android:layout_marginTop="112dp"
-                app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toTopOf="parent"
-                app:roundingBorderColor="@color/white"
-                app:roundingBorderWidth="2dp" />
-
-            <LinearLayout
-                android:id="@+id/ll_add_stu"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="50dp"
-                android:gravity="top"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toTopOf="parent">
-
-                <ImageView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center"
-                    android:layout_marginStart="17dp"
-                    android:layout_marginTop="3dp"
-                    android:src="@mipmap/add_stu"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent" />
-
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center"
-                    android:paddingVertical="10dp"
-                    android:text="添加运动营成员"
-                    android:textColor="@color/white"
-                    android:textSize="16sp" />
-            </LinearLayout>
-
-
-            <androidx.constraintlayout.widget.Group
-                android:id="@+id/gp_user"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:visibility="gone"
-                app:constraint_referenced_ids="cl_content,iv_avatar,iv_top,ll_add_stu"
-                tools:visibility="visible" />
-        </androidx.constraintlayout.widget.ConstraintLayout>
-    </androidx.core.widget.NestedScrollView>
-</com.scwang.smart.refresh.layout.SmartRefreshLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_include.xml b/app/src/main/res/layout/fragment_include.xml
index 1ee9638..b0eaf13 100644
--- a/app/src/main/res/layout/fragment_include.xml
+++ b/app/src/main/res/layout/fragment_include.xml
@@ -118,7 +118,6 @@
             app:actualImageScaleType="centerCrop"
             app:failureImage="@color/grey_f1"
             android:layout_height="match_parent"/>
-
     </androidx.constraintlayout.widget.ConstraintLayout>
 
 
@@ -495,4 +494,57 @@
             app:layout_constraintEnd_toEndOf="parent"
             android:src="@mipmap/quanping"/>
     </androidx.constraintlayout.widget.ConstraintLayout>
+    <RelativeLayout
+        android:id="@+id/rv_3"
+        android:layout_width="0dp"
+        app:layout_constraintStart_toStartOf="@id/cl_3"
+        app:layout_constraintEnd_toEndOf="@id/cl_3"
+        app:layout_constraintTop_toTopOf="@id/cl_3"
+        android:elevation="2dp"
+        app:layout_constraintBottom_toBottomOf="@id/cl_3"
+        android:layout_height="0dp">
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/result_3"
+            android:layout_centerInParent="true"
+            android:visibility="gone"
+            android:src="@mipmap/successs"/>
+    </RelativeLayout>
+    <RelativeLayout
+        android:id="@+id/rv_5"
+        android:layout_width="0dp"
+        app:layout_constraintStart_toStartOf="@id/cl_5"
+        app:layout_constraintEnd_toEndOf="@id/cl_5"
+        app:layout_constraintTop_toTopOf="@id/cl_5"
+        android:elevation="2dp"
+        app:layout_constraintBottom_toBottomOf="@id/cl_5"
+        android:layout_height="0dp">
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/result_5"
+            android:layout_centerInParent="true"
+            android:visibility="gone"
+            android:src="@mipmap/successs"/>
+    </RelativeLayout>
+    <RelativeLayout
+        android:id="@+id/rv_6"
+        android:layout_width="0dp"
+        app:layout_constraintStart_toStartOf="@id/cl_6"
+        app:layout_constraintEnd_toEndOf="@id/cl_6"
+        app:layout_constraintTop_toTopOf="@id/cl_6"
+        android:elevation="2dp"
+        app:layout_constraintBottom_toBottomOf="@id/cl_6"
+        android:layout_height="0dp">
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/result_6"
+            android:layout_centerInParent="true"
+            android:visibility="gone"
+            android:src="@mipmap/successs"/>
+    </RelativeLayout>
+
+
 </androidx.constraintlayout.motion.widget.MotionLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_q_a.xml b/app/src/main/res/layout/fragment_q_a.xml
index 9a7f31f..8baaa2e 100644
--- a/app/src/main/res/layout/fragment_q_a.xml
+++ b/app/src/main/res/layout/fragment_q_a.xml
@@ -47,7 +47,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginStart="20dp"
-            android:src="@mipmap/voice_answer"
+            android:src="@mipmap/voice_question"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
@@ -81,13 +81,23 @@
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintVertical_chainStyle="packed">
 
-
         <com.facebook.drawee.view.SimpleDraweeView
             android:id="@+id/iv_1"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/iv_right_1"
+            android:src="@mipmap/successs"
+            android:visibility="gone"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
 
     </androidx.constraintlayout.widget.ConstraintLayout>
 
@@ -96,7 +106,7 @@
         android:layout_width="159dp"
         android:layout_height="52dp"
         android:layout_marginTop="8dp"
-        android:background="@drawable/bg_blue_8dp"
+        android:background="@drawable/selector_bg_voice"
         app:layout_constraintBottom_toTopOf="@id/cl_3"
         app:layout_constraintStart_toStartOf="@id/cl_3"
         app:layout_constraintTop_toBottomOf="@id/cl_1">
@@ -126,7 +136,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginStart="20dp"
-            android:src="@mipmap/voice_answer"
+            android:src="@mipmap/voice_question"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
@@ -164,6 +174,17 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             app:actualImageScaleType="centerCrop" />
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/iv_right_3"
+            android:src="@mipmap/successs"
+            android:visibility="gone"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
     </androidx.constraintlayout.widget.ConstraintLayout>
 
     <androidx.constraintlayout.widget.ConstraintLayout
@@ -236,6 +257,17 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             app:actualImageScaleType="centerCrop" />
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/iv_right_2"
+            android:src="@mipmap/successs"
+            android:visibility="gone"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
     </androidx.constraintlayout.widget.ConstraintLayout>
 
     <androidx.constraintlayout.widget.ConstraintLayout
@@ -256,6 +288,17 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             app:actualImageScaleType="centerCrop" />
+
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/iv_right_4"
+            android:src="@mipmap/successs"
+            android:visibility="gone"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"/>
     </androidx.constraintlayout.widget.ConstraintLayout>
 
 
@@ -263,7 +306,7 @@
         android:id="@+id/cl_voice_4"
         android:layout_width="159dp"
         android:layout_height="52dp"
-        android:background="@drawable/bg_blue_8dp"
+        android:background="@drawable/selector_bg_voice"
         app:layout_constraintStart_toStartOf="@id/cl_4"
         app:layout_constraintTop_toTopOf="@id/cl_voice_3">
 
@@ -508,7 +551,7 @@
             android:id="@+id/rl_check_1"
             android:layout_width="52dp"
             android:layout_height="52dp"
-            android:background="@drawable/bg_blue_line_8dp"
+            android:background="@drawable/selector_enable_choose"
             android:visibility="gone">
 
             <View
@@ -533,7 +576,7 @@
             android:id="@+id/rl_check_2"
             android:layout_width="52dp"
             android:layout_height="52dp"
-            android:background="@drawable/bg_blue_line_8dp"
+            android:background="@drawable/selector_enable_choose"
             android:visibility="gone">
 
             <View
@@ -558,7 +601,7 @@
             android:id="@+id/rl_check_3"
             android:layout_width="52dp"
             android:layout_height="52dp"
-            android:background="@drawable/bg_blue_line_8dp"
+            android:background="@drawable/selector_enable_choose"
             android:visibility="gone">
 
             <View
diff --git a/app/src/main/res/layout/fragment_wc_record.xml b/app/src/main/res/layout/fragment_wc_record.xml
deleted file mode 100644
index e7e4aaf..0000000
--- a/app/src/main/res/layout/fragment_wc_record.xml
+++ /dev/null
@@ -1,50 +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"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-    <com.scwang.smart.refresh.layout.SmartRefreshLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:id="@+id/refreshLayout">
-        <com.scwang.smart.refresh.header.ClassicsHeader
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"/>
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:orientation="vertical">
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:id="@+id/tv_total"
-                android:textSize="16sp"
-                android:textStyle="bold"
-                android:textColor="@color/textColor"
-                android:layout_marginTop="20dp"
-                android:layout_marginStart="14dp"
-                android:text="总场次:0场"/>
-            <androidx.recyclerview.widget.RecyclerView
-                android:id="@+id/rv_list"
-                android:layout_width="match_parent"
-                android:layout_marginTop="12dp"
-                android:layout_height="match_parent"/>
-        </LinearLayout>
-
-        <com.scwang.smart.refresh.footer.ClassicsFooter
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"/>
-    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        android:layout_marginTop="100dp"
-        android:text="暂无数据"
-        android:id="@+id/tv_empty"
-        android:visibility="gone"
-        android:textSize="14sp"
-        android:textColor="@color/textColor99"/>
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_world_rank.xml b/app/src/main/res/layout/fragment_world_rank.xml
deleted file mode 100644
index 9a369f3..0000000
--- a/app/src/main/res/layout/fragment_world_rank.xml
+++ /dev/null
@@ -1,198 +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"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-    <com.scwang.smart.refresh.layout.SmartRefreshLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        app:layout_constraintTop_toTopOf="parent"
-        android:layout_marginBottom="12dp"
-        android:id="@+id/refreshLayout">
-        <com.scwang.smart.refresh.header.ClassicsHeader
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"/>
-        <androidx.core.widget.NestedScrollView
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:scrollbars="none">
-            <androidx.constraintlayout.widget.ConstraintLayout
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:paddingBottom="90dp"
-                android:orientation="vertical">
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:id="@+id/tv_1"
-                    android:textSize="16sp"
-                    app:layout_constraintStart_toStartOf="parent"
-                    android:textStyle="bold"
-                    app:layout_constraintBaseline_toBaselineOf="@id/tv_year"
-                    android:textColor="@color/textColor"
-                    android:layout_marginStart="14dp"
-                    android:text="参与年份:"/>
-                <TextView
-                    android:layout_width="88dp"
-                    android:layout_height="35dp"
-                    android:id="@+id/tv_year"
-                    android:text="全部"
-                    android:layout_marginTop="12dp"
-                    android:background="@drawable/bg_grey_line_5dp"
-                    app:layout_constraintTop_toTopOf="parent"
-                    android:gravity="center_vertical"
-                    android:paddingHorizontal="8dp"
-                    android:textSize="16sp"
-                    android:textColor="@color/textColor"
-                    android:drawableEnd="@mipmap/icon_nav_open"
-                    app:layout_constraintStart_toEndOf="@id/tv_1"/>
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:id="@+id/tv_filter"
-                    android:text="按胜率排名"
-                    android:drawableEnd="@mipmap/update"
-                    android:drawablePadding="5dp"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    android:layout_marginEnd="14dp"
-                    android:textColor="@color/colorDeepBlue"
-                    android:textSize="16sp"
-                    android:textStyle="bold"
-                    app:layout_constraintBaseline_toBaselineOf="@id/tv_1"/>
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="32dp"
-                    android:orientation="horizontal"
-                    android:id="@+id/ll_title"
-                    app:layout_constraintTop_toBottomOf="@id/tv_year"
-                    android:layout_marginTop="16dp"
-                    android:layout_marginHorizontal="14dp"
-                    android:background="@drawable/bg_grey_line">
-                    <TextView
-                        android:layout_width="0dp"
-                        android:layout_weight="50"
-                        android:text="排名"
-                        android:textColor="@color/textColor"
-                        android:textStyle="bold"
-                        android:textSize="12sp"
-                        android:gravity="center"
-                        android:layout_height="match_parent"/>
-                    <View
-                        android:layout_width="1px"
-                        android:layout_height="match_parent"
-                        android:background="@color/dividing_line_color"/>
-                    <TextView
-                        android:layout_width="0dp"
-                        android:layout_weight="122"
-                        android:text="用户"
-                        android:textColor="@color/textColor"
-                        android:textStyle="bold"
-                        android:textSize="12sp"
-                        android:gravity="center"
-                        android:layout_height="match_parent"/>
-                    <View
-                        android:layout_width="1px"
-                        android:layout_height="match_parent"
-                        android:background="@color/dividing_line_color"/>
-                    <TextView
-                        android:layout_width="0dp"
-                        android:layout_weight="120"
-                        android:text="总场次"
-                        android:textColor="@color/textColor"
-                        android:textStyle="bold"
-                        android:textSize="12sp"
-                        android:gravity="center"
-                        android:layout_height="match_parent"/>
-                    <View
-                        android:layout_width="1px"
-                        android:layout_height="match_parent"
-                        android:background="@color/dividing_line_color"/>
-                    <TextView
-                        android:layout_width="0dp"
-                        android:layout_weight="73"
-                        android:text="胜率"
-                        android:textColor="@color/textColor"
-                        android:textStyle="bold"
-                        android:textSize="12sp"
-                        android:gravity="center"
-                        android:layout_height="match_parent"/>
-
-                </LinearLayout>
-                <androidx.recyclerview.widget.RecyclerView
-                    android:id="@+id/rv_list"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:minHeight="300dp"
-                    android:layout_marginHorizontal="14dp"
-                    android:background="@color/white"
-                    app:layout_constraintTop_toBottomOf="@id/ll_title" />
-                <View
-                    android:layout_width="match_parent"
-                    android:layout_height="1px"
-                    android:layout_marginHorizontal="14dp"
-                    app:layout_constraintBottom_toBottomOf="@id/rv_list"
-                    android:background="@color/dividing_line_color"/>
-                <View
-                    android:layout_width="1px"
-                    android:layout_height="0dp"
-                    app:layout_constraintTop_toTopOf="@id/rv_list"
-                    app:layout_constraintStart_toStartOf="@id/rv_list"
-                    app:layout_constraintBottom_toBottomOf="@id/rv_list"
-                    android:background="@color/dividing_line_color"/>
-                <View
-                    android:layout_width="1px"
-                    android:layout_height="0dp"
-                    app:layout_constraintTop_toTopOf="@id/rv_list"
-                    app:layout_constraintEnd_toEndOf="@id/rv_list"
-                    app:layout_constraintBottom_toBottomOf="@id/rv_list"
-                    android:background="@color/dividing_line_color"/>
-<!--                <LinearLayout-->
-<!--                    android:layout_width="match_parent"-->
-<!--                    android:layout_height="wrap_content"-->
-<!--                    android:orientation="horizontal"-->
-<!--                    android:id="@+id/rg_region"-->
-<!--                    android:layout_marginTop="13dp"-->
-<!--                    app:layout_constraintTop_toBottomOf="@id/rv_list">-->
-<!--                    <TextView-->
-<!--                        android:id="@+id/rb_country"-->
-<!--                        android:layout_width="0dp"-->
-<!--                        android:layout_height="wrap_content"-->
-<!--                        android:layout_weight="1"-->
-<!--                        android:layout_marginStart="40dp"-->
-<!--                        android:text="全国"-->
-<!--                        android:paddingVertical="10dp"-->
-<!--                        android:gravity="center"-->
-<!--                        android:textColor="@color/selector_white_orange"-->
-<!--                        android:background="@drawable/selector_rank_region"/>-->
-<!--                    <TextView-->
-<!--                        android:id="@+id/rb_city"-->
-<!--                        android:layout_width="0dp"-->
-<!--                        android:layout_height="wrap_content"-->
-<!--                        android:layout_weight="1"-->
-<!--                        android:layout_marginStart="20dp"-->
-<!--                        android:layout_marginEnd="40dp"-->
-<!--                        android:paddingVertical="10dp"-->
-<!--                        android:gravity="center"-->
-<!--                        android:checked="true"-->
-<!--                        android:textColor="@color/selector_white_orange"-->
-<!--                        android:background="@drawable/selector_rank_region"/>-->
-<!--                </LinearLayout>-->
-
-            </androidx.constraintlayout.widget.ConstraintLayout>
-
-        </androidx.core.widget.NestedScrollView>
-
-    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        android:layout_marginTop="100dp"
-        android:text="暂无数据"
-        android:id="@+id/tv_empty"
-        android:visibility="gone"
-        android:textSize="14sp"
-        android:textColor="@color/textColor99"/>
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_coupon.xml b/app/src/main/res/layout/item_coupon.xml
deleted file mode 100644
index 6b79cbd..0000000
--- a/app/src/main/res/layout/item_coupon.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-
-    <TextView
-        android:id="@+id/tv_price"
-        android:layout_width="100dp"
-        android:layout_height="0dp"
-        android:layout_marginStart="14dp"
-        android:background="@mipmap/coupon_left"
-        android:gravity="center"
-        android:text="100"
-        android:textColor="@color/white"
-        android:textSize="20sp"
-        android:textStyle="bold"
-        app:layout_constraintBottom_toBottomOf="@id/cl_right"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="@id/cl_right" />
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/cl_right"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="15dp"
-        android:layout_marginEnd="14dp"
-        android:background="@mipmap/coupon_right"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toEndOf="@id/tv_price"
-        app:layout_constraintTop_toTopOf="parent">
-
-        <TextView
-            android:id="@+id/tv_name"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="14dp"
-            android:layout_marginTop="16dp"
-            android:singleLine="true"
-            android:text="优惠券名称"
-            android:textColor="@color/textColor"
-            android:textSize="17sp"
-            android:textStyle="bold"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-
-        <TextView
-            android:id="@+id/tv_condition"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="3dp"
-            android:text="满¥50元可用"
-            android:textColor="@color/textColor66"
-            android:textSize="12sp"
-            android:textStyle="bold"
-            app:layout_constraintStart_toStartOf="@id/tv_name"
-            app:layout_constraintTop_toBottomOf="@id/tv_name" />
-
-        <TextView
-            android:id="@+id/tv_deadline"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="3dp"
-            android:layout_marginBottom="14dp"
-            android:text="有效期至2023-09-12"
-            android:textColor="@color/textColor66"
-            android:textSize="12sp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="@id/tv_name"
-            app:layout_constraintTop_toBottomOf="@id/tv_condition" />
-
-        <ImageView
-            android:id="@+id/iv_check"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_margin="10dp"
-            android:src="@mipmap/coupon_uncheck"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-
-        <TextView
-            android:id="@+id/mtcCheck"
-            android:visibility="gone"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginEnd="10dp"
-            android:background="@drawable/shape_com"
-            android:paddingStart="5dp"
-            android:paddingTop="3dp"
-            android:paddingEnd="5dp"
-            android:paddingBottom="3dp"
-            android:text="查看详情"
-            android:textColor="@color/colorPrimary"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintRight_toRightOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
-    </androidx.constraintlayout.widget.ConstraintLayout>
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_coupon_detail.xml b/app/src/main/res/layout/item_coupon_detail.xml
deleted file mode 100644
index 7e3ba6c..0000000
--- a/app/src/main/res/layout/item_coupon_detail.xml
+++ /dev/null
@@ -1,131 +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="wrap_content"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-    <TextView
-        android:layout_width="100dp"
-        android:layout_height="0dp"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="@id/cl_right"
-        app:layout_constraintBottom_toBottomOf="@id/cl_right"
-        android:id="@+id/tv_price"
-        android:textColor="@color/white"
-        android:gravity="center"
-        android:lineSpacingExtra="16dp"
-        android:textSize="20sp"
-        android:text="100"
-        android:background="@mipmap/coupon_left"
-        android:layout_marginStart="14dp"/>
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/cl_right"
-        android:layout_width="0dp"
-        android:paddingBottom="7dp"
-        android:layout_height="wrap_content"
-        app:layout_constraintStart_toEndOf="@id/tv_price"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        android:background="@mipmap/coupon_right"
-        android:layout_marginTop="8dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        android:layout_marginBottom="8dp"
-        android:layout_marginEnd="14dp">
-        <TextView
-            android:id="@+id/tv_name"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:textSize="17sp"
-            android:layout_marginTop="8dp"
-            android:text="优惠券名称"
-            android:textColor="@color/textColor"
-            android:textStyle="bold"
-            android:singleLine="true"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            android:layout_marginStart="14dp"/>
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_deadline"
-            app:layout_constraintTop_toBottomOf="@id/tv_name"
-            app:layout_constraintStart_toStartOf="@id/tv_name"
-            android:text="有效期至2023-09-12"
-            android:layout_marginTop="3dp"
-            android:textSize="12sp"
-            android:textStyle="bold"
-            android:textColor="@color/textColor66"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_range"
-            app:layout_constraintTop_toBottomOf="@id/tv_deadline"
-            app:layout_constraintStart_toStartOf="@id/tv_name"
-            android:text="指定门店可用 查看详情"
-            android:paddingVertical="3dp"
-            android:textSize="12sp"
-            android:textStyle="bold"
-            android:textColor="@color/textColor66"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_describe"
-            app:layout_constraintTop_toBottomOf="@id/tv_range"
-            app:layout_constraintStart_toStartOf="@id/tv_name"
-            android:text="优惠券说明"
-            android:paddingBottom="11dp"
-            android:drawableEnd="@drawable/selector_open"
-            android:textSize="12sp"
-            android:drawablePadding="3dp"
-            android:textStyle="bold"
-            android:textColor="@color/textColor66"/>
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:id="@+id/ll_detail"
-            app:layout_constraintTop_toBottomOf="@id/tv_describe">
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="1px"
-                android:background="@color/dividing_line_color"
-                android:layout_marginStart="15dp"/>
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:id="@+id/tv_detail"
-                app:layout_constraintTop_toBottomOf="@id/tv_name"
-                app:layout_constraintStart_toStartOf="@id/tv_name"
-                android:text="这里是优惠券使用说明…"
-                android:layout_marginStart="15dp"
-                android:layout_marginEnd="10dp"
-                android:layout_marginTop="9dp"
-                android:textSize="12sp"
-                android:textStyle="bold"
-                android:layout_marginBottom="20dp"
-                android:textColor="@color/textColor66"/>
-        </LinearLayout>
-        <ImageView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/iv_tag"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:layout_margin="7dp"
-            android:src="@mipmap/iv_used"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_use"
-            android:textColor="@color/colorPrimary"
-            android:text="去使用"
-            android:textSize="12sp"
-            android:paddingVertical="3dp"
-            app:layout_constraintTop_toTopOf="@id/tv_name"
-            app:layout_constraintBottom_toBottomOf="@id/tv_describe"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:layout_marginEnd="7dp"
-            android:paddingHorizontal="12dp"
-            android:background="@drawable/bg_orange_line_2dp"/>
-    </androidx.constraintlayout.widget.ConstraintLayout>
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_reserve_record.xml b/app/src/main/res/layout/item_reserve_record.xml
deleted file mode 100644
index 392872f..0000000
--- a/app/src/main/res/layout/item_reserve_record.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-
-    <TextView
-        android:id="@+id/tv_name"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="14dp"
-        android:layout_marginTop="17dp"
-        android:singleLine="true"
-        android:text="足球基础教学(玩湃-喜望店)"
-        android:textColor="@color/textColor"
-        android:textSize="16sp"
-        android:textStyle="bold"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <TextView
-        android:id="@+id/tv_state"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginEnd="14dp"
-        android:text="待核销"
-        android:textColor="@color/textColor66"
-        android:textSize="12sp"
-        android:textStyle="bold"
-        app:layout_constraintBaseline_toBaselineOf="@id/tv_name"
-        app:layout_constraintEnd_toEndOf="parent" />
-
-    <TextView
-        android:id="@+id/tv_course"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginStart="7dp"
-        android:background="@drawable/bg_tag_10dp"
-        android:paddingHorizontal="5dp"
-        android:paddingVertical="3dp"
-        android:text="1课时"
-        android:textColor="@color/colorPrimary"
-        android:textSize="10sp"
-        android:textStyle="bold"
-        app:layout_constraintBaseline_toBaselineOf="@id/tv_name"
-        app:layout_constraintStart_toEndOf="@id/tv_name" />
-
-    <TextView
-        android:id="@+id/tv_address"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="13dp"
-        android:drawableStart="@mipmap/location_grey"
-        android:drawablePadding="7dp"
-        android:text="玩湃-喜望店(天府新谷9号楼1005A)"
-        android:textColor="@color/textColor66"
-        android:textSize="12sp"
-        android:textStyle="bold"
-        app:layout_constraintEnd_toEndOf="@id/tv_state"
-        app:layout_constraintStart_toStartOf="@id/tv_name"
-        app:layout_constraintTop_toBottomOf="@id/tv_name" />
-
-    <TextView
-        android:id="@+id/tv_time"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="13dp"
-        android:drawableStart="@mipmap/time_grey"
-        android:drawablePadding="4dp"
-        android:text="可预约时间段:10:00-21:00"
-        android:textColor="@color/textColor66"
-        android:textSize="12sp"
-        android:textStyle="bold"
-        app:layout_constraintEnd_toEndOf="@id/tv_state"
-        app:layout_constraintStart_toStartOf="@id/tv_name"
-        app:layout_constraintTop_toBottomOf="@id/tv_address" />
-
-
-    <TextView
-        android:id="@+id/tv_action"
-        android:layout_width="65dp"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="10dp"
-        android:background="@drawable/bg_green_3dp"
-        android:gravity="center"
-        android:paddingVertical="5dp"
-        android:text="支付"
-        android:textColor="@color/white"
-        android:textSize="14sp"
-        android:textStyle="bold"
-        app:layout_constraintEnd_toEndOf="@id/tv_state"
-        app:layout_constraintTop_toBottomOf="@id/tv_time" />
-
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="1px"
-        android:layout_marginHorizontal="14dp"
-        android:layout_marginTop="12dp"
-        android:background="@color/dividing_line_color"
-        app:layout_constraintTop_toBottomOf="@id/tv_action" />
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_stu_manage.xml b/app/src/main/res/layout/item_stu_manage.xml
deleted file mode 100644
index 252b484..0000000
--- a/app/src/main/res/layout/item_stu_manage.xml
+++ /dev/null
@@ -1,95 +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="wrap_content"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/bg"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginHorizontal="14dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintBottom_toBottomOf="parent"
-        android:layout_marginBottom="12dp"
-        android:background="@drawable/bg_orange_line_4dp_manage">
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_name"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            android:layout_marginStart="10dp"
-            android:layout_marginTop="13dp"
-            android:textSize="14sp"
-            android:text="姓名:"
-            android:textColor="@color/textColor"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_idCard"
-            app:layout_constraintStart_toStartOf="parent"
-            android:layout_marginStart="100dp"
-            app:layout_constraintBaseline_toBaselineOf="@id/tv_name"
-            android:textSize="14sp"
-            android:text="身份证号:"
-            android:textColor="@color/textColor"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_real_name"
-            android:textColor="@color/colorYellow"
-            android:textStyle="bold"
-            app:layout_constraintBaseline_toBaselineOf="@id/tv_idCard"
-            app:layout_constraintStart_toEndOf="@id/tv_idCard"
-            android:text="@string/to_real"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_age"
-            app:layout_constraintStart_toStartOf="@id/tv_name"
-            app:layout_constraintTop_toBottomOf="@id/tv_name"
-            android:layout_marginTop="11dp"
-            android:textSize="14sp"
-            android:text="年龄:"
-            android:textColor="@color/textColor"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_phone"
-            app:layout_constraintStart_toStartOf="parent"
-            android:layout_marginStart="100dp"
-            app:layout_constraintBaseline_toBaselineOf="@id/tv_age"
-            android:textSize="14sp"
-            android:text="电话:"
-            android:textColor="@color/textColor"/>
-
-
-        <ImageView
-            android:layout_width="42dp"
-            android:layout_height="42dp"
-            android:id="@+id/iv_code"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintTop_toBottomOf="@id/tv_phone"
-            android:layout_marginEnd="6dp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            android:layout_marginBottom="14dp"/>
-        <ImageView
-            android:id="@+id/iv_del"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:src="@mipmap/del_2"
-            app:layout_constraintEnd_toStartOf="@id/iv_code"
-            app:layout_constraintBottom_toBottomOf="@id/iv_code"
-            android:layout_marginEnd="16dp"
-            android:padding="3dp"/>
-        <ImageView
-            android:id="@+id/iv_edit"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:src="@mipmap/diet_2"
-            app:layout_constraintBottom_toBottomOf="@id/iv_del"
-            app:layout_constraintEnd_toStartOf="@id/iv_del"
-            android:layout_marginEnd="10dp"
-            android:padding="3dp"/>
-    </androidx.constraintlayout.widget.ConstraintLayout>
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_stu_qr.xml b/app/src/main/res/layout/item_stu_qr.xml
deleted file mode 100644
index 7a36df0..0000000
--- a/app/src/main/res/layout/item_stu_qr.xml
+++ /dev/null
@@ -1,62 +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="wrap_content"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        app:layout_constraintTop_toTopOf="parent"
-        android:layout_marginHorizontal="14dp"
-        android:layout_marginTop="20dp"
-        android:background="@drawable/bg_orange_line_4">
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_name"
-            android:textSize="14sp"
-            android:text="姓名:"
-            app:layout_constraintTop_toTopOf="parent"
-            android:layout_marginTop="15dp"
-            app:layout_constraintStart_toStartOf="parent"
-            android:layout_marginStart="8dp"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_age"
-            android:textSize="14sp"
-            android:layout_marginTop="6dp"
-            android:text="年龄:"
-            app:layout_constraintBottom_toBottomOf="parent"
-            android:layout_marginBottom="15dp"
-            app:layout_constraintStart_toStartOf="@id/tv_name"
-            app:layout_constraintTop_toBottomOf="@id/tv_name"/>
-        <ImageView
-            android:layout_width="60dp"
-            android:layout_height="60dp"
-            android:id="@+id/iv_qr"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:layout_marginEnd="17dp"
-            android:layout_marginVertical="8dp"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintEnd_toStartOf="@id/iv_qr"
-            android:text="点击查看二维码"
-            android:id="@+id/tv_1"
-            android:textStyle="bold"
-            android:layout_marginEnd="6dp"
-            app:layout_constraintBottom_toBottomOf="parent"/>
-        <View
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:id="@+id/clicker_code"
-            app:layout_constraintTop_toTopOf="@id/iv_qr"
-            app:layout_constraintBottom_toBottomOf="@id/iv_qr"
-            app:layout_constraintStart_toStartOf="@id/tv_1"
-            app:layout_constraintEnd_toEndOf="@id/iv_qr"/>
-    </androidx.constraintlayout.widget.ConstraintLayout>
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_stu_wc_detail.xml b/app/src/main/res/layout/item_stu_wc_detail.xml
deleted file mode 100644
index 42c0ca9..0000000
--- a/app/src/main/res/layout/item_stu_wc_detail.xml
+++ /dev/null
@@ -1,70 +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="wrap_content"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/bg"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginHorizontal="14dp"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintBottom_toBottomOf="parent"
-        android:layout_marginBottom="12dp"
-        android:background="@drawable/bg_orange_line_4dp_manage">
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_name"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            android:layout_marginStart="10dp"
-            android:layout_marginTop="13dp"
-            android:textSize="14sp"
-            android:text="姓名:"
-            android:textColor="@color/textColor"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_idCard"
-            app:layout_constraintStart_toStartOf="parent"
-            android:layout_marginStart="120dp"
-            app:layout_constraintBaseline_toBaselineOf="@id/tv_name"
-            android:textSize="14sp"
-            android:text="身份证号:"
-            android:textColor="@color/textColor"/>
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_age"
-            app:layout_constraintStart_toStartOf="@id/tv_name"
-            app:layout_constraintTop_toBottomOf="@id/tv_name"
-            android:layout_marginTop="11dp"
-            android:textSize="14sp"
-            android:text="年龄:"
-            android:textColor="@color/textColor"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_phone"
-            app:layout_constraintStart_toStartOf="parent"
-            android:layout_marginStart="120dp"
-            app:layout_constraintBaseline_toBaselineOf="@id/tv_age"
-            android:textSize="14sp"
-            android:text="电话:"
-            android:textColor="@color/textColor"/>
-
-
-        <ImageView
-            android:layout_width="30dp"
-            android:layout_height="30dp"
-            android:id="@+id/iv_code"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintTop_toBottomOf="@id/tv_idCard"
-            android:layout_marginEnd="6dp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            android:layout_marginBottom="13dp"/>
-
-    </androidx.constraintlayout.widget.ConstraintLayout>
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_wc_record.xml b/app/src/main/res/layout/item_wc_record.xml
deleted file mode 100644
index e63e73f..0000000
--- a/app/src/main/res/layout/item_wc_record.xml
+++ /dev/null
@@ -1,77 +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="wrap_content"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintBottom_toBottomOf="parent"
-        android:layout_marginHorizontal="14dp"
-        android:layout_marginBottom="13dp"
-        android:background="@drawable/bg_orange_line_4dp">
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_name"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            android:layout_marginStart="10dp"
-            android:layout_marginTop="12dp"
-            android:textStyle="bold"
-            android:textSize="14sp"
-            android:textColor="@color/textColor"
-            android:text="社区世界杯活动"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_1"
-            app:layout_constraintStart_toStartOf="@id/tv_name"
-            android:text="比分:"
-            android:textSize="14sp"
-            android:textColor="@color/textColor66"
-            app:layout_constraintTop_toTopOf="@id/tv_score"
-            app:layout_constraintBottom_toBottomOf="@id/tv_score"/>
-        <TextView
-            android:id="@+id/tv_score"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            app:layout_constraintStart_toEndOf="@id/tv_1"
-            app:layout_constraintTop_toBottomOf="@id/tv_name"
-            android:textSize="24sp"
-            android:layout_marginTop="3dp"
-            android:textStyle="bold"
-            android:textColor="@color/colorYellow"
-            android:text="5:1"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_time"
-            app:layout_constraintStart_toStartOf="@id/tv_name"
-            android:text="2023.11.11 12:00"
-            android:textSize="12sp"
-            android:textColor="@color/textColor66"
-            app:layout_constraintTop_toBottomOf="@id/tv_score"
-            android:layout_marginTop="3dp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            android:layout_marginBottom="6dp"/>
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:id="@+id/tv_integral"
-            app:layout_constraintBaseline_toBaselineOf="@id/tv_1"
-            android:textStyle="bold"
-            android:textSize="12sp"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:layout_marginEnd="7dp"
-            android:textColor="@color/colorYellow"
-            android:text="获得积分:200"/>
-        <ImageView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            android:id="@+id/iv_result"/>
-    </androidx.constraintlayout.widget.ConstraintLayout>
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_week.xml b/app/src/main/res/layout/item_week.xml
index dcb161d..929e434 100644
--- a/app/src/main/res/layout/item_week.xml
+++ b/app/src/main/res/layout/item_week.xml
@@ -1,7 +1,7 @@
 <?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"
+    android:layout_height="wrap_content"
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <LinearLayout
diff --git a/app/src/main/res/layout/item_week_course.xml b/app/src/main/res/layout/item_week_course.xml
deleted file mode 100644
index 5f88fde..0000000
--- a/app/src/main/res/layout/item_week_course.xml
+++ /dev/null
@@ -1,32 +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="wrap_content"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-    <TextView
-        android:layout_width="28dp"
-        android:layout_height="28dp"
-        android:id="@+id/tv_english"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        android:gravity="center"
-        android:textSize="12sp"
-        android:layout_marginTop="20dp"
-        android:textStyle="bold"
-        android:textColor="@color/selector_white_dark"
-        android:text="S"
-        android:background="@drawable/selector_bg_week"/>
-    <TextView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:id="@+id/tv_date"
-        app:layout_constraintTop_toBottomOf="@id/tv_english"
-        app:layout_constraintStart_toStartOf="@id/tv_english"
-        app:layout_constraintEnd_toEndOf="@id/tv_english"
-        android:layout_marginTop="8dp"
-        android:textStyle="bold"
-        android:textColor="@color/textColorHint"
-        android:textSize="10sp"
-        android:text="10.10"/>
-</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index 86a1813..7107b9c 100644
--- a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
+++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/share_moment.png b/app/src/main/res/mipmap-xxhdpi/share_moment.png
new file mode 100644
index 0000000..01dafba
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/share_moment.png
Binary files differ
diff --git a/app/src/main/res/mipmap-xxhdpi/share_wx.png b/app/src/main/res/mipmap-xxhdpi/share_wx.png
new file mode 100644
index 0000000..b676179
--- /dev/null
+++ b/app/src/main/res/mipmap-xxhdpi/share_wx.png
Binary files differ
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 838632d..bfd1865 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -21,4 +21,5 @@
     <color name="colorTextDark">#2F5264</color>
     <color name="colorLittleBlue">#F4FAFE</color>
     <color name="dkplayer_theme_color">@color/colorAccent</color>
+    <color name="page_bg">#C3BFB3</color>
 </resources>
diff --git a/app/src/main/res/xml/fragment_listen_scene_result_1.xml b/app/src/main/res/xml/fragment_listen_scene_result_1.xml
index 1517b37..a204a19 100644
--- a/app/src/main/res/xml/fragment_listen_scene_result_1.xml
+++ b/app/src/main/res/xml/fragment_listen_scene_result_1.xml
@@ -6,7 +6,7 @@
     <Transition
         motion:constraintSetEnd="@+id/end"
         motion:constraintSetStart="@id/start"
-        motion:duration="2000">
+        motion:duration="3000">
        <KeyFrameSet>
            <KeyAttribute motion:framePosition="10"
                android:alpha="1"
diff --git a/app/src/main/res/xml/fragment_listen_scene_result_2.xml b/app/src/main/res/xml/fragment_listen_scene_result_2.xml
index 4fe14d1..a15eecc 100644
--- a/app/src/main/res/xml/fragment_listen_scene_result_2.xml
+++ b/app/src/main/res/xml/fragment_listen_scene_result_2.xml
@@ -6,7 +6,7 @@
     <Transition
         motion:constraintSetEnd="@+id/end"
         motion:constraintSetStart="@id/start"
-        motion:duration="2000">
+        motion:duration="3000">
        <KeyFrameSet>
            <KeyAttribute motion:framePosition="10"
                android:alpha="1"
diff --git a/app/src/main/res/xml/fragment_listen_scene_result_3.xml b/app/src/main/res/xml/fragment_listen_scene_result_3.xml
index baed0a9..51b6860 100644
--- a/app/src/main/res/xml/fragment_listen_scene_result_3.xml
+++ b/app/src/main/res/xml/fragment_listen_scene_result_3.xml
@@ -6,7 +6,7 @@
     <Transition
         motion:constraintSetEnd="@+id/end"
         motion:constraintSetStart="@id/start"
-        motion:duration="2000">
+        motion:duration="3000">
        <KeyFrameSet>
            <KeyAttribute motion:framePosition="10"
                android:alpha="1"
diff --git a/app/src/main/res/xml/fragment_listen_scene_result_4.xml b/app/src/main/res/xml/fragment_listen_scene_result_4.xml
index b3483ef..a6b4ee2 100644
--- a/app/src/main/res/xml/fragment_listen_scene_result_4.xml
+++ b/app/src/main/res/xml/fragment_listen_scene_result_4.xml
@@ -6,7 +6,7 @@
     <Transition
         motion:constraintSetEnd="@+id/end"
         motion:constraintSetStart="@id/start"
-        motion:duration="2000">
+        motion:duration="3000">
        <KeyFrameSet>
            <KeyAttribute motion:framePosition="10"
                android:alpha="1"
diff --git a/app/src/main/res/xml/fragment_listen_scene_result_5.xml b/app/src/main/res/xml/fragment_listen_scene_result_5.xml
new file mode 100644
index 0000000..fb0d24e
--- /dev/null
+++ b/app/src/main/res/xml/fragment_listen_scene_result_5.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<MotionScene 
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:motion="http://schemas.android.com/apk/res-auto">
+
+    <Transition
+        motion:constraintSetEnd="@+id/end"
+        motion:constraintSetStart="@id/start"
+        motion:duration="3000">
+       <KeyFrameSet>
+           <KeyAttribute motion:framePosition="10"
+               android:alpha="1"
+               motion:motionTarget="@id/result_5"/>
+           <KeyAttribute motion:framePosition="98"
+               android:alpha="1"
+               motion:motionTarget="@id/result_5"/>
+
+           <KeyAttribute motion:framePosition="20"
+               android:scaleX="0.9"
+               android:scaleY="0.9"
+               motion:motionTarget="@id/result_5"/>
+           <KeyAttribute motion:framePosition="25"
+               android:scaleX="1.1"
+               android:scaleY="1.1"
+               motion:motionTarget="@id/result_5"/>
+           <KeyAttribute motion:framePosition="30"
+               android:scaleX="0.9"
+               android:scaleY="0.9"
+               motion:motionTarget="@id/result_5"/>
+           <KeyAttribute motion:framePosition="35"
+               android:scaleX="1.1"
+               android:scaleY="1.1"
+               motion:motionTarget="@id/result_5"/>
+           <KeyAttribute motion:framePosition="40"
+               android:scaleX="1.0"
+               android:scaleY="1.0"
+               motion:motionTarget="@id/result_5"/>
+       </KeyFrameSet>
+
+    </Transition>
+
+    <ConstraintSet android:id="@+id/start">
+        <Constraint android:id="@+id/result_5"
+            android:alpha="0"
+            motion:layout_constraintStart_toStartOf="@+id/iv_5"
+            motion:layout_constraintEnd_toEndOf="@+id/iv_5"
+            motion:layout_constraintTop_toTopOf="@+id/iv_5"
+            motion:layout_constraintBottom_toBottomOf="@+id/iv_5"
+            android:layout_width="100dp"
+            android:layout_height="100dp"
+            android:visibility="visible"/>
+    </ConstraintSet>
+
+    <ConstraintSet android:id="@+id/end">
+        <Constraint android:id="@+id/result_5"
+            android:alpha="1"
+            motion:layout_constraintStart_toStartOf="@+id/iv_5"
+            motion:layout_constraintEnd_toEndOf="@+id/iv_5"
+            motion:layout_constraintTop_toTopOf="@+id/iv_5"
+            motion:layout_constraintBottom_toBottomOf="@+id/iv_5"
+            android:layout_width="100dp"
+            android:layout_height="100dp"
+            android:visibility="visible"/>
+    </ConstraintSet>
+</MotionScene>
\ No newline at end of file
diff --git a/app/src/main/res/xml/fragment_listen_scene_result_6.xml b/app/src/main/res/xml/fragment_listen_scene_result_6.xml
new file mode 100644
index 0000000..7f14d70
--- /dev/null
+++ b/app/src/main/res/xml/fragment_listen_scene_result_6.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<MotionScene 
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:motion="http://schemas.android.com/apk/res-auto">
+
+    <Transition
+        motion:constraintSetEnd="@+id/end"
+        motion:constraintSetStart="@id/start"
+        motion:duration="3000">
+       <KeyFrameSet>
+           <KeyAttribute motion:framePosition="10"
+               android:alpha="1"
+               motion:motionTarget="@id/result_6"/>
+           <KeyAttribute motion:framePosition="98"
+               android:alpha="1"
+               motion:motionTarget="@id/result_6"/>
+
+           <KeyAttribute motion:framePosition="20"
+               android:scaleX="0.9"
+               android:scaleY="0.9"
+               motion:motionTarget="@id/result_6"/>
+           <KeyAttribute motion:framePosition="25"
+               android:scaleX="1.1"
+               android:scaleY="1.1"
+               motion:motionTarget="@id/result_6"/>
+           <KeyAttribute motion:framePosition="30"
+               android:scaleX="0.9"
+               android:scaleY="0.9"
+               motion:motionTarget="@id/result_6"/>
+           <KeyAttribute motion:framePosition="35"
+               android:scaleX="1.1"
+               android:scaleY="1.1"
+               motion:motionTarget="@id/result_6"/>
+           <KeyAttribute motion:framePosition="40"
+               android:scaleX="1.0"
+               android:scaleY="1.0"
+               motion:motionTarget="@id/result_6"/>
+       </KeyFrameSet>
+
+    </Transition>
+
+    <ConstraintSet android:id="@+id/start">
+        <Constraint android:id="@+id/result_6"
+            android:alpha="0"
+            motion:layout_constraintStart_toStartOf="@+id/iv_6"
+            motion:layout_constraintEnd_toEndOf="@+id/iv_6"
+            motion:layout_constraintTop_toTopOf="@+id/iv_6"
+            motion:layout_constraintBottom_toBottomOf="@+id/iv_6"
+            android:layout_width="100dp"
+            android:layout_height="100dp"
+            android:visibility="visible"/>
+    </ConstraintSet>
+
+    <ConstraintSet android:id="@+id/end">
+        <Constraint android:id="@+id/result_6"
+            android:alpha="1"
+            motion:layout_constraintStart_toStartOf="@+id/iv_6"
+            motion:layout_constraintEnd_toEndOf="@+id/iv_6"
+            motion:layout_constraintTop_toTopOf="@+id/iv_6"
+            motion:layout_constraintBottom_toBottomOf="@+id/iv_6"
+            android:layout_width="100dp"
+            android:layout_height="100dp"
+            android:visibility="visible"/>
+    </ConstraintSet>
+</MotionScene>
\ No newline at end of file
diff --git a/app/src/main/res/xml/item_game_1_scene.xml b/app/src/main/res/xml/item_game_1_scene.xml
index 876b2e5..5f528c7 100644
--- a/app/src/main/res/xml/item_game_1_scene.xml
+++ b/app/src/main/res/xml/item_game_1_scene.xml
@@ -6,7 +6,7 @@
     <Transition
         motion:constraintSetEnd="@+id/end"
         motion:constraintSetStart="@id/start"
-        motion:duration="2000">
+        motion:duration="3000">
         <KeyFrameSet>
             <KeyAttribute motion:framePosition="10"
                 android:alpha="1"
diff --git a/app/src/main/res/xml/scene_fragment_choose_voice.xml b/app/src/main/res/xml/scene_fragment_choose_voice.xml
index 298fbf4..c9115e0 100644
--- a/app/src/main/res/xml/scene_fragment_choose_voice.xml
+++ b/app/src/main/res/xml/scene_fragment_choose_voice.xml
@@ -6,7 +6,7 @@
     <Transition
         motion:constraintSetEnd="@+id/end"
         motion:constraintSetStart="@id/start"
-        motion:duration="2000">
+        motion:duration="3000">
         <KeyFrameSet>
 
         </KeyFrameSet>
diff --git a/app/src/main/res/xml/scene_fragment_listen_voice.xml b/app/src/main/res/xml/scene_fragment_listen_voice.xml
index 800962d..324c1b0 100644
--- a/app/src/main/res/xml/scene_fragment_listen_voice.xml
+++ b/app/src/main/res/xml/scene_fragment_listen_voice.xml
@@ -6,7 +6,7 @@
     <Transition
         motion:constraintSetEnd="@+id/end"
         motion:constraintSetStart="@id/start"
-        motion:duration="2000">
+        motion:duration="3000">
        <KeyFrameSet>
 
        </KeyFrameSet>
diff --git a/app/src/main/res/xml/scene_fragment_look.xml b/app/src/main/res/xml/scene_fragment_look.xml
index 9439eab..8f93cb2 100644
--- a/app/src/main/res/xml/scene_fragment_look.xml
+++ b/app/src/main/res/xml/scene_fragment_look.xml
@@ -6,7 +6,7 @@
     <Transition
         motion:constraintSetEnd="@+id/end"
         motion:constraintSetStart="@id/start"
-        motion:duration="2000">
+        motion:duration="3000">
         <KeyFrameSet>
 
         </KeyFrameSet>
diff --git a/app/src/main/res/xml/scene_fragment_match.xml b/app/src/main/res/xml/scene_fragment_match.xml
index b57c014..b7de0be 100644
--- a/app/src/main/res/xml/scene_fragment_match.xml
+++ b/app/src/main/res/xml/scene_fragment_match.xml
@@ -6,7 +6,7 @@
     <Transition
         motion:constraintSetEnd="@+id/end"
         motion:constraintSetStart="@id/start"
-        motion:duration="2000">
+        motion:duration="3000">
        <KeyFrameSet>
 
        </KeyFrameSet>
diff --git a/xldutils-kotlin/src/main/AndroidManifest.xml b/xldutils-kotlin/src/main/AndroidManifest.xml
index 1c3c4d7..cad77ec 100644
--- a/xldutils-kotlin/src/main/AndroidManifest.xml
+++ b/xldutils-kotlin/src/main/AndroidManifest.xml
@@ -17,7 +17,7 @@
             android:theme="@style/Dialog" />
         <activity
             android:name="cn.sinata.xldutils.activity.ImagePagerActivity"
-            android:screenOrientation="portrait" />
+            android:screenOrientation="landscape" />
         <activity android:name=".activity.WebViewActivity" />
         <activity
             android:name=".activity.SelectPhotoActivity"
diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/ImagePagerActivity.kt b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/ImagePagerActivity.kt
index 67be698..2321b1e 100644
--- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/ImagePagerActivity.kt
+++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/ImagePagerActivity.kt
@@ -9,6 +9,7 @@
 import androidx.viewpager.widget.ViewPager
 import cn.sinata.xldutils.R
 import cn.sinata.xldutils.adapter.ImagePagerAdapter
+import cn.sinata.xldutils.gone
 import cn.sinata.xldutils.visible
 import org.jetbrains.anko.find
 
@@ -44,6 +45,9 @@
             this.urls.addAll(urls)
         }
         find<TextView>(R.id.tv_pages).text = getString(R.string.pageAndSizes,position+1,urls!!.size)
+        find<View>(R.id.cl_back).setOnClickListener {
+            finish()
+        }
 
         imagePager.adapter = ImagePagerAdapter(supportFragmentManager,urls)
         imagePager.currentItem = position
diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/TitleActivity.kt b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/TitleActivity.kt
index 029e9cd..b83cae8 100644
--- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/TitleActivity.kt
+++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/TitleActivity.kt
@@ -1,5 +1,6 @@
 package cn.sinata.xldutils.activity
 
+import android.graphics.Color
 import android.view.View
 import android.view.ViewGroup
 import android.widget.LinearLayout
@@ -21,6 +22,9 @@
     val bg_title by lazy {
         find<View>(R.id.bg_title)
     }
+    val base_root by lazy {
+        find<View>(R.id.base_root)
+    }
 
     val titleBar by lazy {
         val titleBar = find<TitleBar>(R.id.titleBar)
@@ -34,6 +38,7 @@
         if (layoutResID > 0) {
             layoutInflater.inflate(layoutResID, llContainer, true)
         }
+        base_root.setBackgroundColor(Color.parseColor("#C3BFB3"))
     }
 
     override fun setContentView(view: View?) {
diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/fragment/ImageFragment.kt b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/fragment/ImageFragment.kt
index f7f6ea2..bfe601c 100644
--- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/fragment/ImageFragment.kt
+++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/fragment/ImageFragment.kt
@@ -57,7 +57,7 @@
 
         zoomDraweeView.setOnClickListener{
             if (activity != null) {
-//                activity?.onBackPressed()
+                activity?.onBackPressed()
             }
         }
     }
diff --git a/xldutils-kotlin/src/main/res/layout/activity_base_title.xml b/xldutils-kotlin/src/main/res/layout/activity_base_title.xml
index 35a7e1c..661ce3e 100644
--- a/xldutils-kotlin/src/main/res/layout/activity_base_title.xml
+++ b/xldutils-kotlin/src/main/res/layout/activity_base_title.xml
@@ -2,7 +2,8 @@
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@color/page_bg"
+    android:id="@+id/base_root"
+    android:background="#C3BFB3"
     xmlns:app="http://schemas.android.com/apk/res-auto">
     <View
         android:id="@+id/bg_title"
diff --git a/xldutils-kotlin/src/main/res/layout/activity_image_pager.xml b/xldutils-kotlin/src/main/res/layout/activity_image_pager.xml
index fbe9bf4..0ae84d5 100644
--- a/xldutils-kotlin/src/main/res/layout/activity_image_pager.xml
+++ b/xldutils-kotlin/src/main/res/layout/activity_image_pager.xml
@@ -2,14 +2,14 @@
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:id="@+id/cl_back"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:background="@android:color/black">
 
     <androidx.viewpager.widget.ViewPager
         android:id="@+id/mViewPager"
         android:layout_width="match_parent"
-        android:layout_height="0dp"
-        app:layout_constraintTop_toBottomOf="@id/tv_back"
+        android:layout_height="match_parent"
         app:layout_constraintBottom_toBottomOf="parent"/>
     <TextView
         android:id="@+id/tv_pages"

--
Gitblit v1.7.1