Преглед на файлове

1.替换弹幕的切换图片
2.支付页面->获取商品接口
3.百度回调监听
4.百度获取用户手机号
5.用户中心->切换用户->注册登录流程

FailedToRead преди 3 години
родител
ревизия
fa56e62aef
променени са 39 файла, в които са добавени 494 реда и са изтрити 660 реда
  1. 2 2
      .idea/misc.xml
  2. 18 0
      app/src/fragmentRecommend/drawable/slidevideo_switch_track_selector.xml
  3. 2 1
      app/src/main/AndroidManifest.xml
  4. 0 29
      app/src/main/java/com/edufound/reader/activity/CommentActivity.java
  5. 0 29
      app/src/main/java/com/edufound/reader/activity/CrashDialogActivity.java
  6. 1 30
      app/src/main/java/com/edufound/reader/activity/CustomerServiceActivity.java
  7. 0 29
      app/src/main/java/com/edufound/reader/activity/LoginAlertActivity.java
  8. 26 19
      app/src/main/java/com/edufound/reader/activity/MainActivity.java
  9. 0 29
      app/src/main/java/com/edufound/reader/activity/MessageActivity.java
  10. 0 29
      app/src/main/java/com/edufound/reader/activity/MyCollectionActivity.java
  11. 0 29
      app/src/main/java/com/edufound/reader/activity/MyFollowActivity.java
  12. 0 29
      app/src/main/java/com/edufound/reader/activity/OthersRecordActivity.java
  13. 0 29
      app/src/main/java/com/edufound/reader/activity/PayActivity.java
  14. 7 33
      app/src/main/java/com/edufound/reader/activity/RecordActivity.java
  15. 0 29
      app/src/main/java/com/edufound/reader/activity/SafflowerActivity.java
  16. 0 30
      app/src/main/java/com/edufound/reader/activity/SmallFullVideoActivity.java
  17. 53 32
      app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java
  18. 0 29
      app/src/main/java/com/edufound/reader/activity/WebActivity.java
  19. 7 0
      app/src/main/java/com/edufound/reader/apiserver/OrderApiServerImpl.java
  20. 8 0
      app/src/main/java/com/edufound/reader/apiserver/UserApiServerImpl.java
  21. 20 12
      app/src/main/java/com/edufound/reader/base/BaseActivity.java
  22. 27 12
      app/src/main/java/com/edufound/reader/base/BaseFragment.java
  23. 1 4
      app/src/main/java/com/edufound/reader/botsdk/BotConstants.java
  24. 25 12
      app/src/main/java/com/edufound/reader/botsdk/BotMessageListener.java
  25. 39 0
      app/src/main/java/com/edufound/reader/botsdk/BotRegisterListener.java
  26. 4 0
      app/src/main/java/com/edufound/reader/contract/UserInfoSettingContract.java
  27. 4 31
      app/src/main/java/com/edufound/reader/fragment/CharacterFragment.java
  28. 0 29
      app/src/main/java/com/edufound/reader/fragment/MyTabFragment.java
  29. 24 16
      app/src/main/java/com/edufound/reader/fragment/RecommendFragment.java
  30. 2 1
      app/src/main/java/com/edufound/reader/presenter/MainPresenter.java
  31. 16 10
      app/src/main/java/com/edufound/reader/presenter/PayPresenter.java
  32. 5 2
      app/src/main/java/com/edufound/reader/presenter/RecommendFragmentPresenter.java
  33. 3 1
      app/src/main/java/com/edufound/reader/presenter/RecordPresenter.java
  34. 69 0
      app/src/main/java/com/edufound/reader/presenter/UserInfoSettingPresenter.java
  35. 24 0
      app/src/main/java/com/edufound/reader/util/EfunboxUtil.java
  36. 1 0
      app/src/main/java/com/edufound/reader/util/PermissionsUtil.java
  37. BIN
      app/src/main/res/drawable/seekbar_thumb.png
  38. 8 5
      app/src/main/res/layout/activity_pay.xml
  39. 98 88
      app/src/main/res/layout/activity_pay_item.xml

+ 2 - 2
.idea/misc.xml

@@ -63,8 +63,8 @@
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_main.xml" value="0.15" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_message.xml" value="0.14" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_otherrecord.xml" value="0.303125" />
-        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_pay.xml" value="0.5" />
-        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_pay_item.xml" value="0.5" />
+        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_pay.xml" value="0.22" />
+        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_pay_item.xml" value="0.25" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_record.xml" value="0.33" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_saffloer.xml" value="0.22" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_saffloer_sign_layout_item.xml" value="0.5" />

+ 18 - 0
app/src/fragmentRecommend/drawable/slidevideo_switch_track_selector.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_checked="true">
+        <shape>
+            <size android:width="40dp" android:height="30dp" />
+            <corners android:radius="20dp" />
+            <solid android:color="@color/yellow" />
+        </shape>
+    </item>
+
+    <item>
+        <shape>
+            <size android:width="40dp" android:height="30dp" />
+            <corners android:radius="20dp" />
+            <solid android:color="#a0a0a0" />
+        </shape>
+    </item>
+</selector>

+ 2 - 1
app/src/main/AndroidManifest.xml

@@ -2,6 +2,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.edufound.reader">
 
+    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
@@ -13,7 +14,7 @@
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.RECORD_AUDIO" />
     <uses-permission android:name="android.permission.WAKE_LOCK" />
-
+    <uses-permission android:name="com.baidu.baiduaccount.permission.READ_USERINFO" />
 
     <application
             android:name=".application.EApplication"

+ 0 - 29
app/src/main/java/com/edufound/reader/activity/CommentActivity.java

@@ -175,35 +175,6 @@ public class CommentActivity extends BaseMvpActivity<CommentPresenter> implement
         return findViewById(android.R.id.content);
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
-    }
 
     @Override
     public void getCommentAllSuccess() {

+ 0 - 29
app/src/main/java/com/edufound/reader/activity/CrashDialogActivity.java

@@ -89,33 +89,4 @@ public class CrashDialogActivity extends BaseMvpActivity<CrashDialogPresenter> i
         return findViewById(android.R.id.content);
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
-    }
 }

+ 1 - 30
app/src/main/java/com/edufound/reader/activity/CustomerServiceActivity.java

@@ -42,7 +42,7 @@ public class CustomerServiceActivity extends BaseMvpActivity<CustomerServicePres
 
     @Override
     public void onGetDisconnect() {
-        
+
     }
 
     @Override
@@ -81,33 +81,4 @@ public class CustomerServiceActivity extends BaseMvpActivity<CustomerServicePres
         return findViewById(android.R.id.content);
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
-    }
 }

+ 0 - 29
app/src/main/java/com/edufound/reader/activity/LoginAlertActivity.java

@@ -170,35 +170,6 @@ public class LoginAlertActivity extends BaseMvpActivity<LoginAlertPresenter> imp
         return findViewById(android.R.id.content);
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
-    }
 
     private void hideSoftInput(View view) {
         InputMethodManager manager = ((InputMethodManager) Consts.getmApplicAtion().getSystemService(Context.INPUT_METHOD_SERVICE));

+ 26 - 19
app/src/main/java/com/edufound/reader/activity/MainActivity.java

@@ -8,10 +8,13 @@ import android.widget.RadioButton;
 import android.widget.RadioGroup;
 
 import com.baidu.duer.bot.directive.payload.AmountInfo;
+import com.baidu.duer.bot.event.payload.LinkClickedEventPayload;
 import com.baidu.duer.botsdk.BotIntent;
+import com.baidu.duer.botsdk.BotSdk;
 import com.edufound.reader.R;
 import com.edufound.reader.annotation.BindView;
 import com.edufound.reader.base.BaseMvpActivity;
+import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.contract.MainContract;
 import com.edufound.reader.popwindow.PopWindowUtil;
 import com.edufound.reader.presenter.MainPresenter;
@@ -76,7 +79,6 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
         mPresenter.checkModelIsDebug();
         setTheme(R.style.Theme_AppCompat_Light_NoActionBar_FullScreen);
 
-
     }
 
     @Override
@@ -130,15 +132,17 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
 
     @Override
     protected void onPause() {
-        super.onPause();
+        Logger.e("mainactivity_onPause");
         Jzvd.releaseAllVideos();
         JzvdStd.goOnPlayOnPause();
+        super.onPause();
     }
 
     @Override
     protected void onResume() {
-        super.onResume();
+        Logger.e("mainactivity_onresumt");
         JzvdStd.goOnPlayOnResume();
+        super.onResume();
     }
 
     @Override
@@ -157,40 +161,43 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
         return findViewById(android.R.id.content);
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
 
+    @Override
+    public void setCheckIndex() {
+        int defaultIndex = getIntent().getIntExtra("defaultIndex", 1);
+        ((RadioButton) mRadioGroupTab.getChildAt(defaultIndex)).setChecked(true);
     }
 
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
 
+    @Override
+    protected void botHandleIntent(BotIntent intent, String customData) {
+        super.botHandleIntent(intent, customData);
+        Logger.e("botHandleIntent:" + customData);
     }
 
     @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
+    protected void botOnClickLink(String url, HashMap<String, String> paramMap) {
+        super.botOnClickLink(url, paramMap);
+        Logger.e("botOnClickLink:" + url);
     }
 
     @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
+    protected void botOnHandleScreenNavigatorEvent(int event) {
+        super.botOnHandleScreenNavigatorEvent(event);
     }
 
     @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
+    protected void botOnLinkAccountSucceed(String s, String s1) {
+        super.botOnLinkAccountSucceed(s, s1);
     }
 
     @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
+    protected void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
+        super.botOnChargeStatusUpdated(purchaseResult, authorizationAmount, capturedAmount, creationTimestamp, baiduOrderReferenceId, sellerOrderId, msg);
     }
 
-
     @Override
-    public void setCheckIndex() {
-        int defaultIndex = getIntent().getIntExtra("defaultIndex", 1);
-        ((RadioButton) mRadioGroupTab.getChildAt(defaultIndex)).setChecked(true);
+    protected void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
+        super.botOnBuyStatusUpdated(purchaseResult, productId, baiduOrderId, sellerOrderId, msg, token);
     }
 }

+ 0 - 29
app/src/main/java/com/edufound/reader/activity/MessageActivity.java

@@ -98,35 +98,6 @@ public class MessageActivity extends BaseMvpActivity<MessagePresenter> implement
         return findViewById(android.R.id.content);
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
-    }
 
     @Override
     public ImageView getNoMessage() {

+ 0 - 29
app/src/main/java/com/edufound/reader/activity/MyCollectionActivity.java

@@ -96,35 +96,6 @@ public class MyCollectionActivity extends BaseMvpActivity<MyCollectionPresenter>
         return findViewById(android.R.id.content);
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
-    }
 
     @Override
     public ImageView getNoCollectionImg() {

+ 0 - 29
app/src/main/java/com/edufound/reader/activity/MyFollowActivity.java

@@ -94,35 +94,6 @@ public class MyFollowActivity extends BaseMvpActivity<MyFollowPresenter> impleme
         return findViewById(android.R.id.content);
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @io.reactivex.rxjava3.annotations.Nullable String msg, String token) {
-
-    }
 
     @Override
     public ImageView getNoFollow() {

+ 0 - 29
app/src/main/java/com/edufound/reader/activity/OthersRecordActivity.java

@@ -139,35 +139,6 @@ public class OthersRecordActivity extends BaseMvpActivity<OthersRecordPresenter>
 
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
-    }
 
 
     @Override

+ 0 - 29
app/src/main/java/com/edufound/reader/activity/PayActivity.java

@@ -96,35 +96,6 @@ public class PayActivity extends BaseMvpActivity<PayPresenter> implements PayCon
         return findViewById(android.R.id.content);
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
-    }
 
     @Override
     public void getProductSuccess() {

+ 7 - 33
app/src/main/java/com/edufound/reader/activity/RecordActivity.java

@@ -18,6 +18,7 @@ import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.contract.RecordContract;
 import com.edufound.reader.cusview.RvListJzvdStd;
 import com.edufound.reader.presenter.RecordPresenter;
+import com.edufound.reader.util.EfunboxUtil;
 
 import java.util.HashMap;
 
@@ -68,10 +69,12 @@ public class RecordActivity extends BaseMvpActivity<RecordPresenter> implements
             mActivity.finish();
         });
         addUiClickListener(mMikeIcon, o -> {
-            if (isRecordNow) {
-                refRecordStatus();
-            } else {
-                startRecordStatus();
+            if (EfunboxUtil.checkLogin(mActivity)) {
+                if (isRecordNow) {
+                    refRecordStatus();
+                } else {
+                    startRecordStatus();
+                }
             }
         });
         addUiClickListener(mDemonsFrame, o -> {
@@ -146,35 +149,6 @@ public class RecordActivity extends BaseMvpActivity<RecordPresenter> implements
         return findViewById(android.R.id.content);
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
-    }
 
     @Override
     public void refRecordStatus() {

+ 0 - 29
app/src/main/java/com/edufound/reader/activity/SafflowerActivity.java

@@ -72,35 +72,6 @@ public class SafflowerActivity extends BaseMvpActivity<SafflowerPresenter> imple
 
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
-    }
 
     @Override
     public void showLoading() {

+ 0 - 30
app/src/main/java/com/edufound/reader/activity/SmallFullVideoActivity.java

@@ -70,36 +70,6 @@ public class SmallFullVideoActivity extends BaseMvpActivity<SmallFullVideoPresen
 
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
-    }
-
 
     @Override
     public void showLoading() {

+ 53 - 32
app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java

@@ -24,6 +24,7 @@ import com.edufound.reader.application.EApplication;
 import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.bean.ChannelCode;
 import com.edufound.reader.bean.UserBean;
+import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.contract.UserInfoSettingContract;
 import com.edufound.reader.listener.PopUtilClickListener;
 import com.edufound.reader.popwindow.PopWindowUtil;
@@ -33,6 +34,7 @@ import com.edufound.reader.util.EfunboxUtil;
 import com.edufound.reader.util.GlideUtils;
 import com.edufound.reader.util.SizeUtils;
 import com.jakewharton.rxbinding4.view.RxView;
+import com.orhanobut.logger.Logger;
 
 import java.util.HashMap;
 
@@ -149,8 +151,9 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
             });
         });
         addUiClickListener(mSwitchLayout, o -> {
-            Intent tologin = new Intent(getActivity(), LoginAlertActivity.class);
-            getActivity().startActivity(tologin);
+            BotRegisterListener.BaiDuLogin();
+//            Intent tologin = new Intent(getActivity(), LoginAlertActivity.class);
+//            getActivity().startActivity(tologin);
         });
 
         addUiClickListener(mGenderMale, o -> {
@@ -237,36 +240,6 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
 
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
-    }
-
 
     @Override
     public void showLoading() {
@@ -325,4 +298,52 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
         mPresenter.activityDestory();
         super.onDestroy();
     }
+
+    @Override
+    protected void botHandleIntent(BotIntent intent, String customData) {
+        super.botHandleIntent(intent, customData);
+        Logger.e(getLocalClassName() + "botHandleIntent");
+        if (BotRegisterListener.isNoLoginIntent(intent)) {
+            //不是获取手机号
+        } else {
+            //是获取手机号
+            if (intent.slots.get(0).value.equals("SUCCESS")) {
+                //获取手机号Token成功
+                String token = intent.slots.get(1).value;
+                mPresenter.getBaiDuPhone(token);
+            } else if (intent.slots.get(0).value.equals("FAIL")) {
+                //获取手机号Token失败
+            }
+        }
+    }
+
+    @Override
+    protected void botOnClickLink(String url, HashMap<String, String> paramMap) {
+        super.botOnClickLink(url, paramMap);
+        Logger.e(getLocalClassName() + "botOnClickLink");
+    }
+
+    @Override
+    protected void botOnHandleScreenNavigatorEvent(int event) {
+        super.botOnHandleScreenNavigatorEvent(event);
+        Logger.e(getLocalClassName() + "botOnHandleScreenNavigatorEvent");
+    }
+
+    @Override
+    protected void botOnLinkAccountSucceed(String s, String s1) {
+        super.botOnLinkAccountSucceed(s, s1);
+        Logger.e(getLocalClassName() + "botOnLinkAccountSucceed");
+    }
+
+    @Override
+    protected void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
+        super.botOnChargeStatusUpdated(purchaseResult, authorizationAmount, capturedAmount, creationTimestamp, baiduOrderReferenceId, sellerOrderId, msg);
+        Logger.e(getLocalClassName() + "botOnChargeStatusUpdated");
+    }
+
+    @Override
+    protected void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
+        super.botOnBuyStatusUpdated(purchaseResult, productId, baiduOrderId, sellerOrderId, msg, token);
+        Logger.e(getLocalClassName() + "botOnBuyStatusUpdated");
+    }
 }

+ 0 - 29
app/src/main/java/com/edufound/reader/activity/WebActivity.java

@@ -86,33 +86,4 @@ public class WebActivity extends BaseMvpActivity<WebPresenter> implements WebCon
         return findViewById(android.R.id.content);
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
-    }
 }

+ 7 - 0
app/src/main/java/com/edufound/reader/apiserver/OrderApiServerImpl.java

@@ -23,6 +23,11 @@ public class OrderApiServerImpl implements OrderApiServer {
     }
 
     @Override
+    public void getProductListInfo(Activity activity, String channel, Callback callback) {
+        OkHttpClient.doGetAsync(activity, new HttpInfo.Builder().setUrl(API + "/order/newProduct").addParam("channel", channel), callback);
+    }
+
+    @Override
     public void getAuth(Activity activity, Callback callback) {
         OkHttpClient.doGetAsync(activity, new HttpInfo.Builder().setUrl(API + "/auth"), callback);
     }
@@ -34,4 +39,6 @@ interface OrderApiServer {
     void getAuth(Activity activity, Callback callback);
 
     void getProductInfo(Activity activity, String channel, Callback callback);
+
+    void getProductListInfo(Activity activity, String channel, Callback callback);
 }

+ 8 - 0
app/src/main/java/com/edufound/reader/apiserver/UserApiServerImpl.java

@@ -2,6 +2,7 @@ package com.edufound.reader.apiserver;
 
 import android.app.Activity;
 
+import com.edufound.reader.botsdk.BotConstants;
 import com.edufound.reader.util.Consts;
 import com.edufound.reader.util.OkHttpClient;
 import com.google.gson.Gson;
@@ -71,6 +72,11 @@ public class UserApiServerImpl implements userApiServer {
     public void loginSign(Activity activity, Callback callback) {
         OkHttpClient.doPostAsync(activity, new HttpInfo.Builder().setUrl(API + "/loginLog"), callback);
     }
+
+    @Override
+    public void getBaiDuUserPhone(Activity activity, String token, Callback callback) {
+        OkHttpClient.doPostAsync(activity, new HttpInfo.Builder().setUrl(BotConstants.GET_USER_PHONE).addHead("Authorization", "Bearer " + token), callback);
+    }
 }
 
 
@@ -112,4 +118,6 @@ interface userApiServer {
 
     void loginSign(Activity activity, Callback callback);
 
+    void getBaiDuUserPhone(Activity activity, String token, Callback callback);
+
 }

+ 20 - 12
app/src/main/java/com/edufound/reader/base/BaseActivity.java

@@ -41,6 +41,7 @@ import com.edufound.reader.util.LiuHaiScreenUtil;
 import com.edufound.reader.util.PermissionsUtil;
 import com.google.gson.Gson;
 import com.jakewharton.rxbinding4.view.RxView;
+import com.orhanobut.logger.Logger;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
@@ -283,22 +284,30 @@ public abstract class BaseActivity extends AppCompatActivity {
 
 
     //百度的回调逻辑代码块
-    public abstract void botHandleIntent(BotIntent intent, String customData);
+    protected void botHandleIntent(BotIntent intent, String customData) {
+    }
 
-    public abstract void botOnClickLink(String url, HashMap<String, String> paramMap);
 
-    public abstract void botOnHandleScreenNavigatorEvent(int event);
+    protected void botOnClickLink(String url, HashMap<String, String> paramMap) {
+    }
 
-    public abstract void botOnLinkAccountSucceed(String s, String s1);
+    protected void botOnHandleScreenNavigatorEvent(int event) {
+    }
 
-    public abstract void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount,
-                                                  AmountInfo capturedAmount, long creationTimestamp,
-                                                  String baiduOrderReferenceId, String sellerOrderId, String msg);
+    protected void botOnLinkAccountSucceed(String s, String s1) {
 
-    public abstract void botOnBuyStatusUpdated(@NonNull final String purchaseResult,
-                                               @NonNull final String productId,
-                                               @NonNull final String baiduOrderId,
-                                               @NonNull final String sellerOrderId, @Nullable final String msg, String token);
+    }
+
+    protected void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount,
+                                            AmountInfo capturedAmount, long creationTimestamp,
+                                            String baiduOrderReferenceId, String sellerOrderId, String msg) {
+    }
+
+    protected void botOnBuyStatusUpdated(@NonNull final String purchaseResult,
+                                         @NonNull final String productId,
+                                         @NonNull final String baiduOrderId,
+                                         @NonNull final String sellerOrderId, @Nullable final String msg, String token) {
+    }
 
     IBotIntentCallback mBotIntentCallBack = new IBotIntentCallback() {
         @Override
@@ -329,7 +338,6 @@ public abstract class BaseActivity extends AppCompatActivity {
                                           AmountInfo capturedAmount, long creationTimestamp,
                                           String baiduOrderReferenceId, String sellerOrderId, String msg) {
             botOnChargeStatusUpdated(purchaseResult, authorizationAmount, capturedAmount, creationTimestamp, baiduOrderReferenceId, sellerOrderId, msg);
-
         }
 
         @Override

+ 27 - 12
app/src/main/java/com/edufound/reader/base/BaseFragment.java

@@ -14,6 +14,7 @@ import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.botsdk.IBotIntentCallback;
 import com.edufound.reader.receiver.NetworkChangeReceiver;
 import com.jakewharton.rxbinding4.view.RxView;
+import com.orhanobut.logger.Logger;
 
 import java.util.HashMap;
 import java.util.concurrent.TimeUnit;
@@ -56,7 +57,13 @@ public abstract class BaseFragment extends Fragment {
     @Override
     public void onDetach() {
         super.onDetach();
+
+    }
+
+    @Override
+    public void onDestroyView() {
         BotRegisterListener.removeListener(mBotIntentCallBack);
+        super.onDestroyView();
     }
 
     /**
@@ -126,23 +133,32 @@ public abstract class BaseFragment extends Fragment {
         }
     };
 
+
     //百度的回调逻辑代码块
-    public abstract void botHandleIntent(BotIntent intent, String customData);
+    protected void botHandleIntent(BotIntent intent, String customData) {
+    }
+
 
-    public abstract void botOnClickLink(String url, HashMap<String, String> paramMap);
+    protected void botOnClickLink(String url, HashMap<String, String> paramMap) {
+    }
 
-    public abstract void botOnHandleScreenNavigatorEvent(int event);
+    protected void botOnHandleScreenNavigatorEvent(int event) {
+    }
 
-    public abstract void botOnLinkAccountSucceed(String s, String s1);
+    protected void botOnLinkAccountSucceed(String s, String s1) {
 
-    public abstract void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount,
-                                                  AmountInfo capturedAmount, long creationTimestamp,
-                                                  String baiduOrderReferenceId, String sellerOrderId, String msg);
+    }
 
-    public abstract void botOnBuyStatusUpdated(@NonNull final String purchaseResult,
-                                               @NonNull final String productId,
-                                               @NonNull final String baiduOrderId,
-                                               @NonNull final String sellerOrderId, @Nullable final String msg, String token);
+    protected void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount,
+                                            AmountInfo capturedAmount, long creationTimestamp,
+                                            String baiduOrderReferenceId, String sellerOrderId, String msg) {
+    }
+
+    protected void botOnBuyStatusUpdated(@NonNull final String purchaseResult,
+                                         @NonNull final String productId,
+                                         @NonNull final String baiduOrderId,
+                                         @NonNull final String sellerOrderId, @Nullable final String msg, String token) {
+    }
 
     IBotIntentCallback mBotIntentCallBack = new IBotIntentCallback() {
         @Override
@@ -173,7 +189,6 @@ public abstract class BaseFragment extends Fragment {
                                           AmountInfo capturedAmount, long creationTimestamp,
                                           String baiduOrderReferenceId, String sellerOrderId, String msg) {
             botOnChargeStatusUpdated(purchaseResult, authorizationAmount, capturedAmount, creationTimestamp, baiduOrderReferenceId, sellerOrderId, msg);
-
         }
 
         @Override

+ 1 - 4
app/src/main/java/com/edufound/reader/botsdk/BotConstants.java

@@ -2,10 +2,6 @@ package com.edufound.reader.botsdk;
 
 public class BotConstants {
 
-    public static final String LOG_TAG_AUDIO = "AudioRecorder";
-    public static final String LOG_TAG_CAMERA = "CameraDemo";
-    public static final String LOG_TAG_BOTSDK = "BotSDKDemo";
-
     /**
      * BotID和签名key ,可以在自己的技能控制台看到相关信息:https://dueros.baidu.com/dbp/main/console
      */
@@ -16,5 +12,6 @@ public class BotConstants {
     public static final String RANDOM1_PREFIX = "efunboxreader1";
     public static final String RANDOM2_PREFIX = "efunboxreader2";
 
+    public static final String GET_USER_PHONE = "https://xiaodu.baidu.com/saiya/v1/user/phone";
 
 }

+ 25 - 12
app/src/main/java/com/edufound/reader/botsdk/BotMessageListener.java

@@ -7,6 +7,7 @@ import com.baidu.duer.botsdk.BotIntent;
 import com.baidu.duer.botsdk.IBotMessageListener;
 import com.edufound.reader.application.EApplication;
 import com.edufound.reader.util.Consts;
+import com.orhanobut.logger.Logger;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -29,6 +30,7 @@ public class BotMessageListener implements IBotMessageListener {
      */
     public void addCallback(@NonNull final IBotIntentCallback botIntentCallback) {
         callbacks.add(botIntentCallback);
+        Logger.e("添加callbacks--callbacks:" + callbacks.size());
     }
 
     /**
@@ -37,13 +39,16 @@ public class BotMessageListener implements IBotMessageListener {
      * @param botIntentCallback 被移除的意图监听
      */
     public void removeCallback(@NonNull final IBotIntentCallback botIntentCallback) {
+        Logger.e("移除callback");
         callbacks.remove(botIntentCallback);
+        Logger.e("移除callback--callbacks:" + callbacks.size());
     }
 
     /**
      * 移除所有监听意图
      */
     public void clearCallback() {
+        Logger.e("clearCallback--clearCallback:" + callbacks.size());
         callbacks.clear();
     }
 
@@ -67,9 +72,14 @@ public class BotMessageListener implements IBotMessageListener {
      */
     @Override
     public void onHandleIntent(String token, BotIdentity identity, BotIntent intent, String customData) {
-        for (IBotIntentCallback callback : callbacks) {
-            callback.handleIntent(intent, customData);
-        }
+
+        //所有的都通知了
+//        for (IBotIntentCallback callback : callbacks) {
+//            callback.handleIntent(intent, customData);
+//        }
+
+        //只通知最上层的callback
+        callbacks.get(callbacks.size() - 1).handleIntent(intent, customData);
     }
 
     /**
@@ -85,9 +95,11 @@ public class BotMessageListener implements IBotMessageListener {
 
     @Override
     public void onClickLink(String url, HashMap<String, String> paramMap) {
-        for (IBotIntentCallback callback : callbacks) {
-            callback.onClickLink(url, paramMap);
-        }
+        Logger.e("onClickLink:" + callbacks.size());
+//        for (IBotIntentCallback callback : callbacks) {
+//            callback.onClickLink(url, paramMap);
+//        }
+        callbacks.get(callbacks.size() - 1).onClickLink(url, paramMap);
 
     }
 
@@ -99,10 +111,11 @@ public class BotMessageListener implements IBotMessageListener {
 
     @Override
     public void onHandleScreenNavigatorEvent(int event) {
-        for (IBotIntentCallback callback : callbacks) {
-            callback.onHandleScreenNavigatorEvent(event);
-        }
-
+        Logger.e("onHandleScreenNavigatorEvent:" + callbacks.size());
+//        for (IBotIntentCallback callback : callbacks) {
+//            callback.onHandleScreenNavigatorEvent(event);
+//        }
+        callbacks.get(callbacks.size() - 1).onHandleScreenNavigatorEvent(event);
     }
 
     @Override
@@ -112,12 +125,12 @@ public class BotMessageListener implements IBotMessageListener {
 
     @Override
     public void onConnect() {
-
+        Logger.e("onConnect:" + callbacks.size());
     }
 
     @Override
     public void onDisconnect() {
-
+        Logger.e("onDisconnect:" + callbacks.size());
     }
 
     @Override

+ 39 - 0
app/src/main/java/com/edufound/reader/botsdk/BotRegisterListener.java

@@ -1,9 +1,12 @@
 package com.edufound.reader.botsdk;
 
+import com.baidu.duer.bot.event.payload.LinkClickedEventPayload;
+import com.baidu.duer.botsdk.BotIntent;
 import com.baidu.duer.botsdk.BotSdk;
 import com.baidu.duer.botsdk.IAccountChargeMsgListener;
 import com.edufound.reader.bean.ChannelCode;
 import com.edufound.reader.util.Consts;
+import com.orhanobut.logger.Logger;
 
 public class BotRegisterListener {
     public static void registerListener(IBotIntentCallback iBotIntentCallback, IAccountChargeMsgListener iAccountChargeMsgListener) {
@@ -17,8 +20,44 @@ public class BotRegisterListener {
     public static void removeListener(IBotIntentCallback iBotIntentCallback) {
         if (Consts.getUmengChannel().equals(ChannelCode.BAIDU.getChannelCode())) {
             //如果是百度。就删除百度
+            Logger.e("移除百度监听接口");
             BotMessageListener.getInstance().removeCallback(iBotIntentCallback);
             BotSdk.getInstance().setAccountAndChargeListener(null);
         }
     }
+
+    public static void BaiDuLogin() {
+        LinkClickedEventPayload linkClickedEventPayload = new LinkClickedEventPayload();
+        linkClickedEventPayload.url = mockGrantPhoneNumberUrl();
+        BotSdk.getInstance().uploadLinkClickedEvent(linkClickedEventPayload);
+    }
+
+
+    /**
+     * 构造手机号一键授权的url
+     *
+     * @return
+     */
+    public static String mockGrantPhoneNumberUrl() {
+        String url = "http://%s/path?openbot=true&request={\\\"query\\\":{\\\"type\\\":\\\"TEXT\\\","
+                + "\\\"original\\\":\\\"手机号授权\\\",\\\"rewritten\\\":\\\"手机号授权\\\"},"
+                + "\\\"dialogState\\\":\\\"COMPLETED\\\","
+                + "\\\"intents\\\":[{\\\"name\\\":\\\"AskForPermissionsConsentRequired\\\",\\\"score\\\":100,"
+                + "\\\"confirmationStatus\\\":\\\"NONE\\\","
+                + "\\\"slots\\\":{\\\"permission\\\":{\\\"name\\\":\\\"permission\\\","
+                + "\\\"value\\\":\\\"READ::USER:PHONE\\\",\\\"values\\\":[\\\"READ::USER:PHONE\\\"],"
+                + "\\\"score\\\":0,\\\"confirmationStatus\\\":\\\"NONE\\\"}}}]}";
+        return String.format(url, BotConstants.BOTID);
+    }
+
+
+    public static boolean isNoLoginIntent(BotIntent intent) {
+        if (!intent.name.equals("NotifyGrantStatus")) {
+            return true;
+        }
+        return false;
+
+    }
+
+
 }

+ 4 - 0
app/src/main/java/com/edufound/reader/contract/UserInfoSettingContract.java

@@ -39,5 +39,9 @@ public interface UserInfoSettingContract {
         void activityDestory();
 
         void loginOut();
+
+        void getBaiDuPhone(String token);
+
+        void registerMobile(String phone);
     }
 }

+ 4 - 31
app/src/main/java/com/edufound/reader/fragment/CharacterFragment.java

@@ -18,6 +18,7 @@ import com.edufound.reader.base.BaseMvpFragment;
 import com.edufound.reader.contract.CharacterFragmentContract;
 import com.edufound.reader.presenter.CharacterFragmentPresenter;
 import com.edufound.reader.util.Consts;
+import com.edufound.reader.util.EfunboxUtil;
 import com.edufound.reader.util.GlideUtils;
 import com.jakewharton.rxbinding4.view.RxView;
 import com.jakewharton.rxbinding4.view.RxViewGroup;
@@ -55,9 +56,10 @@ public class CharacterFragment extends BaseMvpFragment<CharacterFragmentPresente
         mGridLayout = view.findViewById(R.id.fragment_my_recyclerview);
         mBottomView = view.findViewById(R.id.fragment_main_character_bottomview);
         addUiClick(mCharacterImage, o -> {
-            toNextActivity(SafflowerActivity.class);
+            if (EfunboxUtil.checkLogin(getActivity())) {
+                toNextActivity(SafflowerActivity.class);
+            }
         });
-//        mPresenter.initRecyclerView(mRecyclerView);
 
         mPresenter.getExampleAll();
 
@@ -145,35 +147,6 @@ public class CharacterFragment extends BaseMvpFragment<CharacterFragmentPresente
 
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
-    }
 
     @Override
     public void onDestroyView() {

+ 0 - 29
app/src/main/java/com/edufound/reader/fragment/MyTabFragment.java

@@ -249,35 +249,6 @@ public class MyTabFragment extends BaseMvpFragment<MyTabFragmentPresenter> imple
 
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
-
-    }
-
-    @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
-    }
-
-    @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
-    }
-
-    @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
-    }
-
-    @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
-    }
-
-    @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
-    }
 
     @Override
     public void onDestroyView() {

+ 24 - 16
app/src/main/java/com/edufound/reader/fragment/RecommendFragment.java

@@ -30,6 +30,7 @@ import java.util.HashMap;
 
 import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.RecyclerView;
+import cn.jzvd.Jzvd;
 import cn.jzvd.JzvdStd;
 import io.reactivex.rxjava3.annotations.Nullable;
 
@@ -172,12 +173,12 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
 
     @Override
     public void onPause() {
+        Jzvd.releaseAllVideos();
         JzvdStd.goOnPlayOnPause();
         mPresenter.fragmentPause(mRecyclerView);
         super.onPause();
     }
 
-
     @Override
     public void onResume() {
         JzvdStd.goOnPlayOnResume();
@@ -312,39 +313,46 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
 
     }
 
-    @Override
-    public void botHandleIntent(BotIntent intent, String customData) {
 
+    @Override
+    public void onDestroyView() {
+        mPresenter.activityDestory();
+        super.onDestroyView();
     }
 
     @Override
-    public void botOnClickLink(String url, HashMap<String, String> paramMap) {
-
+    protected void botHandleIntent(BotIntent intent, String customData) {
+        super.botHandleIntent(intent, customData);
+        Logger.e("botHandleIntent:" + customData);
     }
 
     @Override
-    public void botOnHandleScreenNavigatorEvent(int event) {
-
+    protected void botOnClickLink(String url, HashMap<String, String> paramMap) {
+        super.botOnClickLink(url, paramMap);
+        Logger.e("botOnClickLink:" + url);
     }
 
     @Override
-    public void botOnLinkAccountSucceed(String s, String s1) {
-
+    protected void botOnHandleScreenNavigatorEvent(int event) {
+        super.botOnHandleScreenNavigatorEvent(event);
+        Logger.e("botOnHandleScreenNavigatorEvent:");
     }
 
     @Override
-    public void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
-
+    protected void botOnLinkAccountSucceed(String s, String s1) {
+        super.botOnLinkAccountSucceed(s, s1);
+        Logger.e("botOnHandleScreenNavigatorEvent:");
     }
 
     @Override
-    public void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
-
+    protected void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
+        super.botOnChargeStatusUpdated(purchaseResult, authorizationAmount, capturedAmount, creationTimestamp, baiduOrderReferenceId, sellerOrderId, msg);
+        Logger.e("botOnHandleScreenNavigatorEvent:");
     }
 
     @Override
-    public void onDestroyView() {
-        mPresenter.activityDestory();
-        super.onDestroyView();
+    protected void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
+        super.botOnBuyStatusUpdated(purchaseResult, productId, baiduOrderId, sellerOrderId, msg, token);
+        Logger.e("botOnBuyStatusUpdated:");
     }
 }

+ 2 - 1
app/src/main/java/com/edufound/reader/presenter/MainPresenter.java

@@ -14,6 +14,7 @@ import android.widget.Toast;
 
 import com.edufound.reader.R;
 import com.edufound.reader.activity.LoginAlertActivity;
+import com.edufound.reader.activity.PayActivity;
 import com.edufound.reader.apiserver.UserApiServerImpl;
 import com.edufound.reader.base.BaseActivity;
 import com.edufound.reader.base.BasePresenter;
@@ -180,7 +181,7 @@ public class MainPresenter extends BasePresenter<MainContract.View> implements M
                     } else {
                         //选择过年纪。无处理
                     }
-                    registerMobile("18655365222");
+//                    registerMobile("18655365222");
                     mView.setCheckIndex();
                 } else {
                     Consts.setUID(bean.getData().getUid());

+ 16 - 10
app/src/main/java/com/edufound/reader/presenter/PayPresenter.java

@@ -44,7 +44,7 @@ public class PayPresenter extends BasePresenter<PayContract.View> implements Pay
 
     @Override
     public void getProductInfo() {
-        mOrderApi.getProductInfo(mView.getActivity(), Consts.getUmengChannel(), new Callback() {
+        mOrderApi.getProductListInfo(mView.getActivity(), Consts.getUmengChannel(), new Callback() {
             @Override
             public void onSuccess(HttpInfo info) throws IOException {
                 HttpResultBean<List<PayResultBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<List<PayResultBean>>>() {
@@ -64,15 +64,7 @@ public class PayPresenter extends BasePresenter<PayContract.View> implements Pay
     public void initPayItem(LinearLayout itemFrame) {
         Logger.e("initPayItem");
         for (int i = 0; i < mPayResult.size(); i++) {
-            View view = LayoutInflater.from(mView.getActivity()).inflate(R.layout.activity_pay_item, null);
-            view.setLayoutParams(new LinearLayout.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, 0, 1));
-            view.setTag(new PayItemHolder(view));
-            mView.addUiClick(view, o -> {
-                for (int j = 0; j < itemFrame.getChildCount(); j++) {
-                    ((PayItemHolder) itemFrame.getChildAt(j).getTag()).mIsCheck.setVisibility(View.INVISIBLE);
-                }
-                ((PayItemHolder) view.getTag()).mIsCheck.setVisibility(View.VISIBLE);
-            });
+
             Message message = new Message();
             message.obj = itemFrame;
             message.what = 1;
@@ -83,11 +75,25 @@ public class PayPresenter extends BasePresenter<PayContract.View> implements Pay
 
     }
 
+    void initItem(LinearLayout itemFrame, int position) {
+        View view = LayoutInflater.from(mView.getActivity()).inflate(R.layout.activity_pay_item, null);
+        view.setLayoutParams(new LinearLayout.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, 0, 1));
+        view.setTag(new PayItemHolder(view));
+        mView.addUiClick(view, o -> {
+            for (int j = 0; j < itemFrame.getChildCount(); j++) {
+                ((PayItemHolder) itemFrame.getChildAt(j).getTag()).mIsCheck.setVisibility(View.INVISIBLE);
+            }
+            ((PayItemHolder) view.getTag()).mIsCheck.setVisibility(View.VISIBLE);
+        });
+        itemFrame.addView(view);
+    }
+
     Handler handler = new Handler(new Handler.Callback() {
         @Override
         public boolean handleMessage(@NonNull Message message) {
             switch (message.what) {
                 case 1:
+                    initItem(((LinearLayout) message.obj), message.arg1);
                     break;
             }
             return false;

+ 5 - 2
app/src/main/java/com/edufound/reader/presenter/RecommendFragmentPresenter.java

@@ -195,7 +195,7 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
     public void fragmentResume(RecyclerView rv) {
         if (rv.getChildCount() > 0) {
             RvListJzvdStd player = rv.getChildAt(0).findViewById(R.id.slidevideo_video);
-            player.startVideoPauseEnd();
+            player.startVideoAfterPreloading();
         }
     }
 
@@ -245,6 +245,7 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
             @Override
             public void onFailure(HttpInfo info) throws IOException {
                 Logger.e("获取推荐列表失败:" + info.getRetDetail());
+                Logger.e("info.getUrl():" + info.getUrl());
             }
         });
     }
@@ -303,9 +304,11 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
 
     @Override
     public void activityDestory() {
+        if (mView != null && mView.getActivity() != null && (loadType == 0 || loadType == 1)) {
+            BackPageReceiver.unRegisterReceiver(mView.getActivity());
+        }
         mDataList = null;
         mAdapter = null;
-        BackPageReceiver.unRegisterReceiver(mView.getActivity());
         Jzvd.releaseAllVideos();
         Jzvd.backPress();
     }

+ 3 - 1
app/src/main/java/com/edufound/reader/presenter/RecordPresenter.java

@@ -212,7 +212,9 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
         mRecordServices.stopRecord();
         mRecordServices.desrotyRecord();
 //        Consts.getmRecordSaveFile()
-        DataCleanManager.delFileBeforeTime(Consts.getmRecordSaveFile().getAbsolutePath().substring(0, Consts.getmRecordSaveFile().getAbsolutePath().lastIndexOf("/")), 0);
+        if (Consts.getmRecordSaveFile() != null && (!Consts.getmRecordSaveFile().equals(""))) {
+            DataCleanManager.delFileBeforeTime(Consts.getmRecordSaveFile().getAbsolutePath().substring(0, Consts.getmRecordSaveFile().getAbsolutePath().lastIndexOf("/")), 0);
+        }
         Jzvd.releaseAllVideos();
 //        Intent intent = new Intent(BackPageReceiver.BACK_HOME_REF_VIDEO_ITEM);
 ////        intent.putExtra("recordId", );

+ 69 - 0
app/src/main/java/com/edufound/reader/presenter/UserInfoSettingPresenter.java

@@ -1,7 +1,9 @@
 package com.edufound.reader.presenter;
 
 import android.content.Intent;
+import android.widget.Toast;
 
+import com.alibaba.fastjson.JSONObject;
 import com.edufound.reader.apiserver.UserApiServerImpl;
 import com.edufound.reader.base.BaseActivity;
 import com.edufound.reader.base.BasePresenter;
@@ -12,21 +14,29 @@ import com.edufound.reader.contract.UserInfoSettingContract;
 import com.edufound.reader.model.UserInfoSettingModel;
 import com.edufound.reader.receiver.BackPageReceiver;
 import com.edufound.reader.util.Consts;
+import com.edufound.reader.util.DeviceUuidFactory;
+import com.edufound.reader.util.EfunboxUtil;
+import com.edufound.reader.util.MMKVEncodeKey;
+import com.edufound.reader.util.MMKVUtil;
 import com.google.gson.reflect.TypeToken;
 import com.okhttplib.HttpInfo;
 import com.okhttplib.callback.Callback;
 import com.orhanobut.logger.Logger;
 
 import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
 
 public class UserInfoSettingPresenter extends BasePresenter<UserInfoSettingContract.View> implements UserInfoSettingContract.Presenter {
 
     UserInfoSettingModel mModel;
+    UserApiServerImpl mUserApi;
     String mGradeEnum;
 
 
     public UserInfoSettingPresenter() {
         mModel = new UserInfoSettingModel();
+        mUserApi = new UserApiServerImpl();
     }
 
     @Override
@@ -94,4 +104,63 @@ public class UserInfoSettingPresenter extends BasePresenter<UserInfoSettingContr
             }
         });
     }
+
+    @Override
+    public void getBaiDuPhone(String token) {
+        mUserApi.getBaiDuUserPhone(mView.getActivity(), token, new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                Logger.e("获取百度手机号成功:" + info.getRetDetail());
+                JSONObject object = JSONObject.parseObject(info.getRetDetail().toString());
+                String phone = JSONObject.parseObject(object.getString("data")).getString("phone");
+                Logger.e("获取的手机号:" + phone);
+                registerMobile(phone);
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+                Logger.e("获取百度手机号失败:" + info.getRetDetail());
+            }
+        });
+    }
+
+    @Override
+    public void registerMobile(String phone) {
+        if (EfunboxUtil.isMobileNO(phone)) {
+            Map<String, String> map = new HashMap<>();
+            map.put("deviceCode", DeviceUuidFactory.getUuid());
+            map.put("channel", Consts.getUmengChannel());
+            map.put("mobileNo", phone);
+            if (MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE).equals("") || MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE) == null) {
+                //如果没有,默认给一年级
+                map.put("grade", "PRIMARY_FIRST_GRADE");
+            } else {
+                map.put("grade", MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE));
+            }
+            String json = ((BaseActivity) mView.getActivity()).getGson().toJson(map);
+            Logger.e("json:" + json);
+            mUserApi.registerMobile(mView.getActivity(), json, new Callback() {
+                @Override
+                public void onSuccess(HttpInfo info) throws IOException {
+                    Logger.e("手机号注册成功:" + info.getRetDetail());
+                    HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
+                    }.getType());
+                    Consts.setUID(bean.getData().getUid());
+                    //用户是否登录,登录了,创建Consts的userbean
+                    String nickName = EfunboxUtil.setPhoneMiddle(bean.getData().getMobile());
+                    bean.getData().setNickName(nickName);
+                    Consts.setmConstsUserBean(bean.getData());
+                    Logger.e("看看到底对没有:" + ((BaseActivity) mView.getActivity()).getGson().toJson(Consts.getmConstsUserBean()));
+                }
+
+                @Override
+                public void onFailure(HttpInfo info) throws IOException {
+                    Logger.e("手机号注册失败:" + info.getRetDetail());
+                    Toast.makeText(mView.getActivity(), "注册失败", Toast.LENGTH_SHORT).show();
+                }
+            });
+        } else {
+            Toast.makeText(mView.getActivity(), "手机号不正确", Toast.LENGTH_SHORT).show();
+        }
+    }
 }

+ 24 - 0
app/src/main/java/com/edufound/reader/util/EfunboxUtil.java

@@ -10,6 +10,7 @@ import android.util.DisplayMetrics;
 import com.edufound.reader.activity.LoginAlertActivity;
 import com.edufound.reader.application.EApplication;
 import com.edufound.reader.bean.ChannelCode;
+import com.edufound.reader.botsdk.BotRegisterListener;
 import com.orhanobut.logger.Logger;
 
 import java.math.BigDecimal;
@@ -133,9 +134,11 @@ public class EfunboxUtil {
             //已登录
             return true;
         }
+        Logger.e("Consts.getUmengChannel():" + Consts.getUmengChannel());
         //未登录,去登录
         if (Consts.getUmengChannel().equals(ChannelCode.BAIDU.getChannelCode())) {
             //百度渠道调用百度的授权
+            BotRegisterListener.BaiDuLogin();
         } else if (Consts.getUmengChannel().equals(ChannelCode.YIFANG.getChannelCode())) {
             //义方调用普通版登录
             Intent tologin = new Intent(context, LoginAlertActivity.class);
@@ -154,4 +157,25 @@ public class EfunboxUtil {
         return num;
     }
 
+    /**
+     * 手机号用****号隐藏中间数字
+     *
+     * @param phone
+     * @return
+     */
+    public static String setPhoneMiddle(String phone) {
+        String phone_s = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
+        return phone_s;
+    }
+
+
+    /**
+     * 邮箱用****号隐藏前面的字母
+     *
+     * @return
+     */
+    public static String setEmailMiddle(String email) {
+        String emails = email.replaceAll("(\\w?)(\\w+)(\\w)(@\\w+\\.[a-z]+(\\.[a-z]+)?)", "$1****$3$4");
+        return emails;
+    }
 }

+ 1 - 0
app/src/main/java/com/edufound/reader/util/PermissionsUtil.java

@@ -13,6 +13,7 @@ public class PermissionsUtil {
     private static String[] PERMISSION_AUDIO = new String[]{Manifest.permission.RECORD_AUDIO};
 
     public static void verifyAudioPermissions(Activity activity) {
+        Logger.e("获取录音权限");
         int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.RECORD_AUDIO);
         if (permission != PackageManager.PERMISSION_GRANTED) {
             Logger.e("获取录音权限:permission != PackageManager.PERMISSION_GRANTED");

BIN
app/src/main/res/drawable/seekbar_thumb.png


+ 8 - 5
app/src/main/res/layout/activity_pay.xml

@@ -58,7 +58,6 @@
                     android:layout_height="474dp"
                     android:layout_gravity="center"
                     android:layout_marginTop="10dp"
-
                     android:orientation="horizontal">
 
                 <LinearLayout
@@ -66,11 +65,13 @@
                         android:layout_width="0dp"
                         android:layout_height="match_parent"
                         android:layout_gravity="center"
-                        android:layout_marginTop="15dp"
-                        android:layout_marginBottom="10dp"
-                        android:layout_weight="1"
+                        android:layout_marginLeft="45dp"
+                        android:layout_marginTop="30dp"
+                        android:layout_marginBottom="30dp"
+                        android:layout_weight="1.3"
                         android:gravity="center"
-                        android:orientation="vertical">
+                        android:orientation="vertical"
+                        android:paddingLeft="20dp">
 
 
                 </LinearLayout>
@@ -78,6 +79,8 @@
                 <FrameLayout
                         android:layout_width="0dp"
                         android:layout_height="match_parent"
+                        android:layout_marginLeft="20dp"
+                        android:layout_marginRight="50dp"
                         android:layout_weight="1">
 
                     <FrameLayout

+ 98 - 88
app/src/main/res/layout/activity_pay_item.xml

@@ -7,109 +7,119 @@
 
 
     <com.edufound.reader.cusview.RoundFrameLayout
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center"
-            android:elevation="15dp">
+            android:layout_width="530dp"
+            android:layout_height="167dp"
+            android:layout_gravity="center">
 
-        <androidx.constraintlayout.widget.ConstraintLayout
-                android:id="@+id/activity_pay_year_item"
-                android:layout_width="522dp"
-                android:layout_height="190dp"
+        <com.edufound.reader.cusview.RoundFrameLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
                 android:layout_gravity="center"
-                android:background="@color/red">
+                android:elevation="5dp">
 
-            <TextView
-                    android:id="@+id/activity_pay_item_title"
-                    android:layout_width="wrap_content"
-                    android:layout_height="50dp"
-                    android:layout_marginLeft="25dp"
-                    android:layout_marginTop="32dp"
-                    android:text="12个月"
-                    android:textColor="@color/white"
-                    android:textSize="36dp"
-                    android:textStyle="bold"
-                    app:layout_constraintBottom_toBottomOf="parent"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintHorizontal_bias="0.0"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent"
-                    app:layout_constraintVertical_bias="0.0"></TextView>
-
-
-            <LinearLayout
-                    android:id="@+id/linearLayout"
-                    android:layout_width="wrap_content"
-                    android:layout_height="50dp"
-                    android:layout_marginEnd="20dp"
-                    app:layout_constraintBottom_toBottomOf="parent"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintHorizontal_bias="1.0"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent"
-                    app:layout_constraintVertical_bias="0.23000002">
+            <androidx.constraintlayout.widget.ConstraintLayout
+                    android:id="@+id/activity_pay_item"
+                    android:layout_width="522dp"
+                    android:layout_height="162dp"
+                    android:layout_gravity="center"
+                    android:background="@color/red">
 
                 <TextView
+                        android:id="@+id/activity_pay_item_title"
                         android:layout_width="wrap_content"
-                        android:layout_height="30dp"
-                        android:layout_gravity="bottom"
-                        android:gravity="bottom"
-                        android:text="实际支付¥"
+                        android:layout_height="50dp"
+                        android:layout_marginLeft="25dp"
+                        android:layout_marginTop="32dp"
+                        android:text="12个月"
                         android:textColor="@color/white"
-                        android:textSize="24dp"
-                        android:textStyle="bold"></TextView>
+                        android:textSize="36dp"
+                        android:textStyle="bold"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintHorizontal_bias="0.0"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent"
+                        app:layout_constraintVertical_bias="0.0"></TextView>
 
-                <TextView
-                        android:id="@+id/activity_pay_item_money"
+
+                <LinearLayout
+                        android:id="@+id/linearLayout"
                         android:layout_width="wrap_content"
                         android:layout_height="50dp"
-                        android:layout_gravity="bottom"
-                        android:gravity="bottom"
-                        android:text="60"
-                        android:textColor="@color/white"
-                        android:textSize="36dp"
-                        android:textStyle="bold"></TextView>
+                        android:layout_marginEnd="20dp"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintHorizontal_bias="1.0"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent"
+                        app:layout_constraintVertical_bias="0.23000002">
+
+                    <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="30dp"
+                            android:layout_gravity="bottom"
+                            android:gravity="bottom"
+                            android:text="实际支付¥"
+                            android:textColor="@color/white"
+                            android:textSize="24dp"
+                            android:textStyle="bold"></TextView>
+
+                    <TextView
+                            android:id="@+id/activity_pay_item_money"
+                            android:layout_width="wrap_content"
+                            android:layout_height="50dp"
+                            android:layout_gravity="bottom"
+                            android:gravity="bottom"
+                            android:text="60"
+                            android:textColor="@color/white"
+                            android:textSize="36dp"
+                            android:textStyle="bold"></TextView>
+
+                    <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="30dp"
+                            android:layout_gravity="bottom"
+                            android:gravity="bottom"
+                            android:text="元"
+                            android:textColor="@color/white"
+                            android:textSize="24dp"
+                            android:textStyle="bold"></TextView>
+                </LinearLayout>
 
                 <TextView
+                        android:id="@+id/activity_pay_item_content"
                         android:layout_width="wrap_content"
-                        android:layout_height="30dp"
-                        android:layout_gravity="bottom"
-                        android:gravity="bottom"
-                        android:text="元"
+                        android:layout_height="25dp"
+                        android:layout_marginStart="25dp"
+                        android:layout_marginBottom="15dp"
+                        android:text="1222222222月"
                         android:textColor="@color/white"
-                        android:textSize="24dp"
-                        android:textStyle="bold"></TextView>
-            </LinearLayout>
+                        android:textSize="18dp"
+                        android:textStyle="bold"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintHorizontal_bias="0.0"
+                        app:layout_constraintStart_toStartOf="parent"
+                        app:layout_constraintTop_toTopOf="parent"
+                        app:layout_constraintVertical_bias="1.0"></TextView>
 
-            <TextView
-                    android:id="@+id/activity_pay_item_content"
-                    android:layout_width="wrap_content"
-                    android:layout_height="25dp"
-                    android:layout_marginStart="25dp"
-                    android:layout_marginBottom="15dp"
-                    android:text="1222222222月"
-                    android:textColor="@color/white"
-                    android:textSize="18dp"
-                    android:textStyle="bold"
-                    app:layout_constraintBottom_toBottomOf="parent"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintHorizontal_bias="0.0"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent"
-                    app:layout_constraintVertical_bias="1.0"></TextView>
 
-
-            <ImageView
-                    android:id="@+id/activity_pay_item_check"
-                    android:layout_width="73dp"
-                    android:layout_height="58dp"
-                    android:src="@drawable/activity_pay_itemcheck"
-                    app:layout_constraintBottom_toBottomOf="parent"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintHorizontal_bias="1.0"
-                    app:layout_constraintStart_toEndOf="@+id/activity_pay_item_content"
-                    app:layout_constraintTop_toBottomOf="@+id/linearLayout"
-                    app:layout_constraintVertical_bias="1.0"></ImageView>
-        </androidx.constraintlayout.widget.ConstraintLayout>
+                <ImageView
+                        android:id="@+id/activity_pay_item_check"
+                        android:layout_width="73dp"
+                        android:layout_height="58dp"
+                        android:layout_marginEnd="-3dp"
+                        android:layout_marginBottom="-3dp"
+                        android:src="@drawable/activity_pay_itemcheck"
+                        app:layout_constraintBottom_toBottomOf="parent"
+                        app:layout_constraintEnd_toEndOf="parent"
+                        app:layout_constraintHorizontal_bias="1.0"
+                        app:layout_constraintStart_toEndOf="@+id/activity_pay_item_content"
+                        app:layout_constraintTop_toBottomOf="@+id/linearLayout"
+                        app:layout_constraintVertical_bias="1.0"></ImageView>
+            </androidx.constraintlayout.widget.ConstraintLayout>
+        </com.edufound.reader.cusview.RoundFrameLayout>
     </com.edufound.reader.cusview.RoundFrameLayout>
+
+
 </FrameLayout>