Jelajahi Sumber

1.获取是否是小度白金会员
2.整体登录逻辑和方法修改
3.调用小度白金会员支付页面
4.测试支付(已付款2次(50元)未收到百度回调)

FailedToRead 3 tahun lalu
induk
melakukan
032e7edc82

+ 15 - 0
app/src/main/AndroidManifest.xml

@@ -45,8 +45,23 @@
                 android:windowSoftInputMode="adjustNothing|stateHidden">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
+                <action android:name="com.edufound.reader.MAIN"></action>
 
                 <category android:name="android.intent.category.LAUNCHER" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+                <action android:name="com.edufound.reader.MAIN"></action>
+
+                <!--                            <category android:name="android.intent.category.DEFAULT" />-->
+                <category android:name="android.intent.category.BROWSABLE" />
+
+                <data
+                        android:host="com.edufound.reader"
+                        android:path="/main"
+                        android:scheme="efunbox" />
             </intent-filter>
         </activity>
         <!-- 录音界面 -->

+ 13 - 29
app/src/main/java/com/edufound/reader/activity/MainActivity.java

@@ -2,50 +2,26 @@ package com.edufound.reader.activity;
 
 import android.annotation.SuppressLint;
 import android.app.Activity;
+import android.net.Uri;
 import android.view.KeyEvent;
 import android.view.ViewGroup;
 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;
-import com.edufound.reader.util.Consts;
-import com.edufound.reader.util.DeviceUuidFactory;
-import com.edufound.reader.util.MMKVEncodeKey;
-import com.edufound.reader.util.MMKVUtil;
-import com.google.gson.Gson;
 import com.orhanobut.logger.Logger;
 
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URL;
 import java.util.HashMap;
-import java.util.Map;
 
 import androidx.annotation.NonNull;
 import cn.jzvd.Jzvd;
-import cn.jzvd.JzvdStd;
 import io.reactivex.rxjava3.annotations.Nullable;
-import okhttp3.MediaType;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.RequestBody;
-import okhttp3.Response;
-import tv.danmaku.ijk.media.player.IjkMediaPlayer;
 
 public class MainActivity extends BaseMvpActivity<MainPresenter> implements MainContract.View {
 
@@ -77,8 +53,15 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
         });
         mPresenter.userIsLogin();
         mPresenter.checkModelIsDebug();
-        setTheme(R.style.Theme_AppCompat_Light_NoActionBar_FullScreen);
+//        setTheme(R.style.Theme_AppCompat_Light_NoActionBar_FullScreen);
+
+        if (getIntent() != null && getIntent().getStringExtra("url") != null && !getIntent().getStringExtra("url").equals("")) {
+            Uri baiduurl = Uri.parse(getIntent().getStringExtra("url"));
+            String resid = baiduurl.getQueryParameter("resid");
+            Logger.e("从百度获取的url:" + resid);
+        }
 
+        //efunbox://com.edufound.reader/main?
     }
 
     @Override
@@ -133,15 +116,15 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
     @Override
     protected void onPause() {
         Logger.e("mainactivity_onPause");
-        Jzvd.releaseAllVideos();
-        JzvdStd.goOnPlayOnPause();
+//        Jzvd.releaseAllVideos();
+//        JzvdStd.goOnPlayOnPause();
         super.onPause();
     }
 
     @Override
     protected void onResume() {
         Logger.e("mainactivity_onresumt");
-        JzvdStd.goOnPlayOnResume();
+//        JzvdStd.goOnPlayOnResume();
         super.onResume();
     }
 
@@ -173,6 +156,7 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
     protected void botHandleIntent(BotIntent intent, String customData) {
         super.botHandleIntent(intent, customData);
         Logger.e("botHandleIntent:" + customData);
+        Logger.e("customData:" + customData);
     }
 
     @Override

+ 13 - 19
app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java

@@ -18,12 +18,11 @@ import android.widget.Toast;
 
 import com.baidu.duer.bot.directive.payload.AmountInfo;
 import com.baidu.duer.botsdk.BotIntent;
-import com.baidu.duer.botsdk.util.RequestBotSdkUtil;
 import com.edufound.reader.R;
 import com.edufound.reader.annotation.BindView;
 import com.edufound.reader.application.EApplication;
 import com.edufound.reader.base.BaseMvpActivity;
-import com.edufound.reader.bean.ChannelCode;
+import com.edufound.reader.bean.ChannelCodeEnum;
 import com.edufound.reader.bean.UserBean;
 import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.contract.UserInfoSettingContract;
@@ -115,11 +114,11 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
             getActivity().startActivity(intent);
         });
 
-        if (Consts.getUmengChannel().equals(ChannelCode.BAIDU.getChannelCode())) {
+        if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
             //百度渠道,隐藏注销和退出登录按钮
             mCancellationLayout.setVisibility(View.GONE);
             mLoginOut.setVisibility(View.GONE);
-        } else if (Consts.getUmengChannel().equals(ChannelCode.YIFANG.getChannelCode())) {
+        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())) {
             //义方渠道
             mCancellationLayout.setVisibility(View.VISIBLE);
             mLoginOut.setVisibility(View.VISIBLE);
@@ -152,9 +151,16 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
             });
         });
         addUiClickListener(mSwitchLayout, o -> {
-            BotRegisterListener.BaiDuLogin();
-//            Intent tologin = new Intent(getActivity(), LoginAlertActivity.class);
-//            getActivity().startActivity(tologin);
+
+//            BotRegisterListener.BaiDuLogin();
+            if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
+                //百度渠道调用百度的授权
+                BotRegisterListener.getBaiDuVipInfo();
+            } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())) {
+                //义方调用普通版登录
+                Intent tologin = new Intent(getActivity(), LoginAlertActivity.class);
+                getActivity().startActivity(tologin);
+            }
         });
 
         addUiClickListener(mGenderMale, o -> {
@@ -304,18 +310,6 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
     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

+ 14 - 1
app/src/main/java/com/edufound/reader/adapter/CommentItemAdapter.java

@@ -8,6 +8,7 @@ import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import com.bumptech.glide.Glide;
 import com.edufound.reader.R;
 import com.edufound.reader.bean.CommentListReplyBean;
 import com.edufound.reader.util.GlideUtils;
@@ -55,7 +56,19 @@ public class CommentItemAdapter extends RecyclerView.Adapter<CommentItemHolder>
 
     @Override
     public void onBindViewHolder(@NonNull CommentItemHolder holder, int position) {
-        GlideUtils.loadCircleImage(mContext, mListData.get(position).getUser().getAvatar(), holder.mUserHead);
+        if (mListData.get(position).getUser() == null) {
+            return;
+        }
+        if (mListData.get(position).getUser().getAvatar() == null || mListData.get(position).getUser().getAvatar().equals("")) {
+            if (mListData.get(position).getUser().getGender().equals("1")) {
+                Glide.with(mContext).load(R.drawable.activity_userinfo_setting_boy).into(holder.mUserHead);
+            } else {
+                Glide.with(mContext).load(R.drawable.activity_userinfo_setting_girl).into(holder.mUserHead);
+            }
+
+        } else {
+            GlideUtils.loadCircleImage(mContext, mListData.get(position).getUser().getAvatar(), holder.mUserHead);
+        }
         holder.mNickName.setText("昵称:" + mListData.get(position).getUser().getNickName());
         holder.mCommentText.setText(mListData.get(position).getDetailDesc());
         if (mListData.get(position).getGmtCreated() != null) {

+ 2 - 2
app/src/main/java/com/edufound/reader/application/EApplication.java

@@ -16,7 +16,7 @@ import com.baidu.duer.botsdk.BotSdk;
 import com.baidu.duer.botsdk.util.HeartBeatReporter;
 import com.edufound.reader.BuildConfig;
 import com.edufound.reader.R;
-import com.edufound.reader.bean.ChannelCode;
+import com.edufound.reader.bean.ChannelCodeEnum;
 import com.edufound.reader.botsdk.BotConstants;
 import com.edufound.reader.botsdk.BotMessageListener;
 import com.edufound.reader.botsdk.BotSDKUtils;
@@ -90,7 +90,7 @@ public class EApplication extends Application {
             Logger.e("Consts.uid:" + Consts.getUID());
             //初始化activity监听
 //            registerActivityLifecycleCallbacks(activityLifecycleCallbacks);
-            if (Consts.getUmengChannel().equals(ChannelCode.BAIDU.getChannelCode())) {
+            if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
                 /** 接入益智乐园的App,需要删掉下面这一行。保证益智乐园的付费等逻辑正常执行,不知道益智乐园是啥的,不要删掉这一行 */
                 HeartBeatReporter.getInstance().setShouldUploadHeartBeatByApp(false);
                 // 初始化BotSDK

+ 18 - 6
app/src/main/java/com/edufound/reader/base/BaseActivity.java

@@ -25,16 +25,14 @@ import android.widget.Toast;
 import com.alibaba.fastjson.JSONObject;
 import com.baidu.duer.bot.directive.payload.AmountInfo;
 import com.baidu.duer.botsdk.BotIntent;
-import com.baidu.duer.botsdk.BotSdk;
 import com.baidu.duer.botsdk.IAccountChargeMsgListener;
 import com.edufound.reader.R;
 import com.edufound.reader.annotation.BindView;
 import com.edufound.reader.apiserver.UserApiServerImpl;
 import com.edufound.reader.application.EApplication;
-import com.edufound.reader.bean.ChannelCode;
+import com.edufound.reader.bean.BaiDuUserInfo;
 import com.edufound.reader.bean.HttpResultBean;
 import com.edufound.reader.bean.UserBean;
-import com.edufound.reader.botsdk.BotMessageListener;
 import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.botsdk.IBotIntentCallback;
 import com.edufound.reader.receiver.HomeKeyEventReceiver;
@@ -344,16 +342,25 @@ public abstract class BaseActivity extends AppCompatActivity {
     IBotIntentCallback mBotIntentCallBack = new IBotIntentCallback() {
         @Override
         public void handleIntent(BotIntent intent, String customData) {
+            Logger.e("activity---intent.name:" + intent.name);
             if (intent.name.equals("all_login")) {
                 //用户主动要求登录
-                EfunboxUtil.checkLogin(EApplication.mActivityList.get(EApplication.mActivityList.size() - 1));
+                EfunboxUtil.userLogin(EApplication.mActivityList.get(EApplication.mActivityList.size() - 1));
+                return;
+            } else if (intent.name.equals("user_info")) {
+                //获取是不是百度VIP
+                Consts.setmConstsBaiDuUserBean(mGson.fromJson(customData, BaiDuUserInfo.class));
+                Logger.e("json----" + mGson.toJson(Consts.getmConstsBaiDuUserBean()));
+                BotRegisterListener.BaiDuLogin();
                 return;
             }
             if (BotRegisterListener.isNoLoginIntent(intent)) {
                 //不是获取手机号
+                Logger.e("不是获取手机号--不是获取手机号");
                 botHandleIntent(intent, customData);
             } else {
                 //是获取手机号
+                Logger.e("是获取手机号--是获取手机号");
                 if (intent.slots.get(0).value.equals("SUCCESS")) {
                     //获取手机号Token成功
                     String token = intent.slots.get(1).value;
@@ -370,6 +377,7 @@ public abstract class BaseActivity extends AppCompatActivity {
                                 map.put("deviceCode", DeviceUuidFactory.getUuid());
                                 map.put("channel", Consts.getUmengChannel());
                                 map.put("mobileNo", phone);
+                                map.put("nickName", EfunboxUtil.setPhoneMiddle(phone));
                                 if (MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE).equals("") || MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE) == null) {
                                     //如果没有,默认给一年级
                                     map.put("grade", "PRIMARY_FIRST_GRADE");
@@ -386,8 +394,8 @@ public abstract class BaseActivity extends AppCompatActivity {
                                         }.getType());
                                         Consts.setUID(bean.getData().getUid());
                                         //用户是否登录,登录了,创建Consts的userbean
-                                        String nickName = EfunboxUtil.setPhoneMiddle(bean.getData().getMobile());
-                                        bean.getData().setNickName(nickName);
+//                                        String nickName = EfunboxUtil.setPhoneMiddle(bean.getData().getMobile());
+//                                        bean.getData().setNickName(nickName);
                                         Consts.setmConstsUserBean(bean.getData());
                                         Logger.e("看看到底对没有:" + getGson().toJson(Consts.getmConstsUserBean()));
                                     }
@@ -410,6 +418,7 @@ public abstract class BaseActivity extends AppCompatActivity {
                     });
                 } else if (intent.slots.get(0).value.equals("FAIL")) {
                     //获取手机号Token失败
+                    Logger.e("获取手机号失败");
                 }
             }
 
@@ -417,11 +426,13 @@ public abstract class BaseActivity extends AppCompatActivity {
 
         @Override
         public void onClickLink(String url, HashMap<String, String> paramMap) {
+            Logger.e("onClickLink");
             botOnClickLink(url, paramMap);
         }
 
         @Override
         public void onHandleScreenNavigatorEvent(int event) {
+            Logger.e("onHandleScreenNavigatorEvent");
             botOnHandleScreenNavigatorEvent(event);
         }
     };
@@ -430,6 +441,7 @@ public abstract class BaseActivity extends AppCompatActivity {
     IAccountChargeMsgListener mIAccountChargeMsgListener = new IAccountChargeMsgListener() {
         @Override
         public void onLinkAccountSucceed(String s, String s1) {
+            Logger.e("onLinkAccountSucceed:s--" + s + "---s1:" + s1);
             botOnLinkAccountSucceed(s, s1);
         }
 

+ 36 - 5
app/src/main/java/com/edufound/reader/base/BaseFragment.java

@@ -15,6 +15,7 @@ import com.baidu.duer.botsdk.BotIntent;
 import com.baidu.duer.botsdk.IAccountChargeMsgListener;
 import com.edufound.reader.apiserver.UserApiServerImpl;
 import com.edufound.reader.application.EApplication;
+import com.edufound.reader.bean.BaiDuUserInfo;
 import com.edufound.reader.bean.HttpResultBean;
 import com.edufound.reader.bean.UserBean;
 import com.edufound.reader.botsdk.BotRegisterListener;
@@ -47,10 +48,13 @@ import io.reactivex.rxjava3.functions.Consumer;
 public abstract class BaseFragment extends Fragment {
 
     public CompositeDisposable mCompositeDisposable;
+    Gson mGson;
+    private boolean isNeedLogin = true;
 
     @Override
     public void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        mGson = new Gson();
         // 注册网络广播
         NetworkChangeReceiver.registerReceiver(getContext());
         NetworkChangeReceiver.registerObserver(NetStateChangeObserver);
@@ -182,16 +186,28 @@ public abstract class BaseFragment extends Fragment {
     IBotIntentCallback mBotIntentCallBack = new IBotIntentCallback() {
         @Override
         public void handleIntent(BotIntent intent, String customData) {
-            Logger.e("intent:" + intent.name);
+            Logger.e("fragment---intent.name:" + intent.name);
             if (intent.name.equals("all_login")) {
                 //用户主动要求登录
-                EfunboxUtil.checkLogin(getActivity());
+                EfunboxUtil.userLogin(EApplication.mActivityList.get(EApplication.mActivityList.size() - 1));
+                return;
+            } else if (intent.name.equals("user_info")) {
+                //获取是不是百度VIP
+                Consts.setmConstsBaiDuUserBean(mGson.fromJson(customData, BaiDuUserInfo.class));
+                Logger.e("json----" + mGson.toJson(Consts.getmConstsBaiDuUserBean()));
+                if (isNeedLogin) {
+                    BotRegisterListener.BaiDuLogin();
+                } else {
+                    isNeedLogin = true;
+                }
                 return;
             }
             if (BotRegisterListener.isNoLoginIntent(intent)) {
                 //不是获取手机号
+                Logger.e("不是获取手机号--不是获取手机号:" + intent.name + "---" + intent.slots.toString());
                 botHandleIntent(intent, customData);
             } else {
+                Logger.e("是获取手机号--是获取手机号");
                 //是获取手机号
                 if (intent.slots.get(0).value.equals("SUCCESS")) {
                     //获取手机号Token成功
@@ -209,14 +225,15 @@ public abstract class BaseFragment extends Fragment {
                                 map.put("deviceCode", DeviceUuidFactory.getUuid());
                                 map.put("channel", Consts.getUmengChannel());
                                 map.put("mobileNo", phone);
+                                map.put("nickName", EfunboxUtil.setPhoneMiddle(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));
                                 }
-                                Gson gson = new Gson();
-                                String json = gson.toJson(map);
+
+                                String json = mGson.toJson(map);
                                 Logger.e("json:" + json);
                                 userApiServer.registerMobile(topActivity, json, new Callback() {
                                     @Override
@@ -231,7 +248,7 @@ public abstract class BaseFragment extends Fragment {
                                         String nickName = EfunboxUtil.setPhoneMiddle(bean.getData().getMobile());
                                         bean.getData().setNickName(nickName);
                                         Consts.setmConstsUserBean(bean.getData());
-                                        Logger.e("看看到底对没有:" + gson.toJson(Consts.getmConstsUserBean()));
+                                        Logger.e("看看到底对没有:" + mGson.toJson(Consts.getmConstsUserBean()));
                                     }
 
                                     @Override
@@ -288,6 +305,20 @@ public abstract class BaseFragment extends Fragment {
                                        @NonNull final String baiduOrderId,
                                        @NonNull final String sellerOrderId, @Nullable final String msg, String token) {
 
+            isNeedLogin = false;
+            //处理支付回调
+            Logger.e("purchaseResult:" + purchaseResult);
+            Logger.e("productId:" + productId);
+            Logger.e("baiduOrderId:" + baiduOrderId);
+            Logger.e("sellerOrderId:" + sellerOrderId);
+            Logger.e("msg:" + msg);
+            Logger.e("token:" + token);
+            if (purchaseResult.equals("SUCCESS")) {
+                //成功
+                BotRegisterListener.getBaiDuVipInfo();
+            } else if (purchaseResult.equals("ERROR")) {
+                //支付失败
+            }
             botOnBuyStatusUpdated(purchaseResult, productId, baiduOrderId, sellerOrderId, msg, token);
 
         }

+ 57 - 0
app/src/main/java/com/edufound/reader/bean/BaiDuUserInfo.java

@@ -0,0 +1,57 @@
+package com.edufound.reader.bean;
+
+public class BaiDuUserInfo {
+    
+    private UserInfo userInfo;
+
+    private int xiaoduVipOpen;
+
+    public void setUserInfo(UserInfo userInfo) {
+        this.userInfo = userInfo;
+    }
+
+    public UserInfo getUserInfo() {
+        return this.userInfo;
+    }
+
+    public void setXiaoduVipOpen(int xiaoduVipOpen) {
+        this.xiaoduVipOpen = xiaoduVipOpen;
+    }
+
+    public int getXiaoduVipOpen() {
+        return this.xiaoduVipOpen;
+    }
+
+    public class UserInfo {
+        private int endTimestamp;
+
+        private int isVip;
+
+        private String userId;
+
+        public void setEndTimestamp(int endTimestamp) {
+            this.endTimestamp = endTimestamp;
+        }
+
+        public int getEndTimestamp() {
+            return this.endTimestamp;
+        }
+
+        public void setIsVip(int isVip) {
+            this.isVip = isVip;
+        }
+
+        public int getIsVip() {
+            return this.isVip;
+        }
+
+        public void setUserId(String userId) {
+            this.userId = userId;
+        }
+
+        public String getUserId() {
+            return this.userId;
+        }
+
+    }
+}

+ 36 - 0
app/src/main/java/com/edufound/reader/bean/BaiDuVipEnum.java

@@ -0,0 +1,36 @@
+package com.edufound.reader.bean;
+
+public enum BaiDuVipEnum {
+    vip {
+        //vip
+        public String getBaiDuUserType() {//枚举对象实现抽象方法
+            return "vip";
+        }
+    },
+    buy {
+        //单独购买
+        public String getBaiDuUserType() {//枚举对象实现抽象方法
+            return "buy";
+        }
+    },
+    unpurchased {
+        //未购买
+        public String getBaiDuUserType() {//枚举对象实现抽象方法
+            return "unpurchased";
+        }
+    },
+    thirdparty {
+        //资源方会员
+        public String getBaiDuUserType() {
+            return "thirdparty";
+        }
+    },
+    unionvip {
+        //小度和资源方双层会员
+        public String getBaiDuUserType() {
+            return "unionvip";
+        }
+    };
+
+    public abstract String getBaiDuUserType();//定义抽象方法
+}

+ 1 - 1
app/src/main/java/com/edufound/reader/bean/ChannelCode.java

@@ -1,6 +1,6 @@
 package com.edufound.reader.bean;
 
-public enum ChannelCode {
+public enum ChannelCodeEnum {
     YIFANG {
         public String getChannelCode() {//枚举对象实现抽象方法
             return "2006";

+ 42 - 3
app/src/main/java/com/edufound/reader/botsdk/BotRegisterListener.java

@@ -7,13 +7,13 @@ import com.baidu.duer.botsdk.BotIntent;
 import com.baidu.duer.botsdk.BotSdk;
 import com.baidu.duer.botsdk.IAccountChargeMsgListener;
 import com.baidu.duer.botsdk.util.RequestBotSdkUtil;
-import com.edufound.reader.bean.ChannelCode;
+import com.edufound.reader.bean.ChannelCodeEnum;
 import com.edufound.reader.util.Consts;
 import com.orhanobut.logger.Logger;
 
 public class BotRegisterListener {
     public static void registerListener(IBotIntentCallback iBotIntentCallback, IAccountChargeMsgListener iAccountChargeMsgListener) {
-        if (Consts.getUmengChannel().equals(ChannelCode.BAIDU.getChannelCode())) {
+        if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
             //如果是百度。就注册百度的接口
             BotMessageListener.getInstance().addCallback(iBotIntentCallback);
             BotSdk.getInstance().setAccountAndChargeListener(iAccountChargeMsgListener);
@@ -21,7 +21,7 @@ public class BotRegisterListener {
     }
 
     public static void removeListener(IBotIntentCallback iBotIntentCallback) {
-        if (Consts.getUmengChannel().equals(ChannelCode.BAIDU.getChannelCode())) {
+        if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
             //如果是百度。就删除百度
             Logger.e("移除百度监听接口");
             BotMessageListener.getInstance().removeCallback(iBotIntentCallback);
@@ -30,9 +30,48 @@ public class BotRegisterListener {
     }
 
     public static void BaiDuLogin() {
+        Logger.e("申请百度账号");
         LinkClickedEventPayload linkClickedEventPayload = new LinkClickedEventPayload();
         linkClickedEventPayload.url = mockGrantPhoneNumberUrl();
         BotSdk.getInstance().uploadLinkClickedEvent(linkClickedEventPayload);
+
+    }
+
+    public static void getBaiDuVipInfo() {
+        Logger.e("获取是否是百度VIP权限");
+        LinkClickedEventPayload linkClickedEventPayload = new LinkClickedEventPayload();
+        linkClickedEventPayload.url = String.format("dueros://%s/getVipInfo", BotConstants.BOTID);
+        BotSdk.getInstance().uploadLinkClickedEvent(linkClickedEventPayload);
+    }
+
+
+    /**
+     * 调用百度VIP收银台
+     */
+    public static void payBaiDuVip() {
+        //dueros://{bot_id}/buyXiaoduVIP?channel_type={channel_type}&from={from},
+        LinkClickedEventPayload linkClickedEventPayload = new LinkClickedEventPayload();
+        linkClickedEventPayload.url = "dueros://" + BotConstants.BOTID + "/buyXiaoduVIP";
+        BotSdk.getInstance().uploadLinkClickedEvent(linkClickedEventPayload);
+    }
+
+    /**
+     * 上报使用了资源
+     */
+    public static void uploadUsage(String resId, String resType, String usertype) {
+        LinkClickedEventPayload linkClickedEventPayload = new LinkClickedEventPayload();
+        linkClickedEventPayload.url = ("dueros://" + BotConstants.BOTID + "/upload?type=usage&isPrivilege=1&resourceId=" + resId + "&resourceType=" + resType + "&userType=" + usertype + "");
+        BotSdk.getInstance().uploadLinkClickedEvent(linkClickedEventPayload);
+    }
+
+
+    /**
+     * 解锁资源
+     */
+    public static void uploadUnlock(String resId, String resType, String usertype) {
+        LinkClickedEventPayload linkClickedEventPayload = new LinkClickedEventPayload();
+        linkClickedEventPayload.url = ("dueros://" + BotConstants.BOTID + "/upload?type=unlock&isPrivilege=1&resourceId=" + resId + "&resourceType=" + resType + "&userType=" + usertype + "");
+        BotSdk.getInstance().uploadLinkClickedEvent(linkClickedEventPayload);
     }
 
 

+ 3 - 1
app/src/main/java/com/edufound/reader/fragment/MyTabFragment.java

@@ -27,6 +27,7 @@ import com.edufound.reader.activity.UserInfoSettingActivity;
 import com.edufound.reader.base.BaseMvpFragment;
 import com.edufound.reader.bean.MyInfoBean;
 import com.edufound.reader.bean.UserRecordBean;
+import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.contract.MyTabFragmentContract;
 import com.edufound.reader.presenter.MyTabFragmentPresenter;
 import com.edufound.reader.util.Consts;
@@ -143,7 +144,8 @@ public class MyTabFragment extends BaseMvpFragment<MyTabFragmentPresenter> imple
 //        });
         addUiClick(mHeadUserVip, o -> {
             Toast.makeText(getActivity(), "click vip", Toast.LENGTH_SHORT).show();
-            toNextActivity(PayActivity.class);
+//            toNextActivity(PayActivity.class);
+            BotRegisterListener.payBaiDuVip();
         });
         addUiClick(mHeadUserRedFlower, o -> {
             Toast.makeText(getActivity(), "click 小红花", Toast.LENGTH_SHORT).show();

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

@@ -115,10 +115,10 @@ public class PayPresenter extends BasePresenter<PayContract.View> implements Pay
                     HttpResultBean<PayResultBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<PayResultBean>>() {
                     }.getType());
 
-                    BotSdk.getInstance().requireCharge(BotRegisterListener.mockAmountInfo(String.valueOf(Double.parseDouble(bean.getData().getPrice()) / 100)),
-                            BotRegisterListener.mockSellerOlrderStructure(bean.getData().getProductId(), "", bean.getData().getOrderId(), bean.getData().getTitle()),
-                            bean.getData().getTitle());
-//                    BotRegisterListener.requestBuyProduct();
+//                    BotSdk.getInstance().requireCharge(BotRegisterListener.mockAmountInfo(String.valueOf(Double.parseDouble(bean.getData().getPrice()) / 100)),
+//                            BotRegisterListener.mockSellerOlrderStructure(bean.getData().getProductId(), "123123123", bean.getData().getOrderId(), bean.getData().getTitle()),
+//                            bean.getData().getTitle());
+                    BotRegisterListener.requestBuyProduct();
                 }
 
                 @Override

+ 13 - 0
app/src/main/java/com/edufound/reader/util/Consts.java

@@ -2,6 +2,7 @@ package com.edufound.reader.util;
 
 import android.app.Application;
 
+import com.edufound.reader.bean.BaiDuUserInfo;
 import com.edufound.reader.bean.UserBean;
 
 import java.io.File;
@@ -14,6 +15,9 @@ public class Consts {
 
     private static UserBean mConstsUserBean;
 
+    private static BaiDuUserInfo mConstsBaiDuUserBean;
+
+
     private static boolean isDebug = false;
 
     private static String privService = "http://m-xyyf-web.ai160.com/res/protocol/private.htm";
@@ -117,4 +121,13 @@ public class Consts {
     public static void setUmengChannel(String umengChannel) {
         UMENG_CHANNEL = umengChannel;
     }
+
+    public static BaiDuUserInfo getmConstsBaiDuUserBean() {
+        return mConstsBaiDuUserBean;
+    }
+
+    public static void setmConstsBaiDuUserBean(BaiDuUserInfo mConstsBaiDuUserBean) {
+        Consts.mConstsBaiDuUserBean = mConstsBaiDuUserBean;
+    }
+
 }

+ 19 - 15
app/src/main/java/com/edufound/reader/util/EfunboxUtil.java

@@ -1,23 +1,16 @@
 package com.edufound.reader.util;
 
-import android.app.Activity;
-import android.app.Application;
 import android.content.Context;
 import android.content.Intent;
 import android.text.TextUtils;
 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.bean.ChannelCodeEnum;
 import com.edufound.reader.botsdk.BotRegisterListener;
-import com.orhanobut.logger.Logger;
 
-import java.math.BigDecimal;
 import java.text.DecimalFormat;
 
-import io.reactivex.rxjava3.annotations.NonNull;
-
 public class EfunboxUtil {
 
     /**
@@ -130,15 +123,15 @@ public class EfunboxUtil {
 
 
     public static boolean checkLogin(Context context) {
-//        if (!Consts.getUID().equals("test")) {
-//            //已登录,无论登不登录都调用登录...
-//            return true;
-//        }
+        if (!Consts.getUID().equals("test")) {
+            //已登录,无论登不登录都调用登录...
+            return true;
+        }
         //未登录,去登录
-        if (Consts.getUmengChannel().equals(ChannelCode.BAIDU.getChannelCode())) {
+        if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
             //百度渠道调用百度的授权
-            BotRegisterListener.BaiDuLogin();
-        } else if (Consts.getUmengChannel().equals(ChannelCode.YIFANG.getChannelCode())) {
+            BotRegisterListener.getBaiDuVipInfo();
+        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())) {
             //义方调用普通版登录
             Intent tologin = new Intent(context, LoginAlertActivity.class);
             context.startActivity(tologin);
@@ -146,6 +139,17 @@ public class EfunboxUtil {
         return false;
     }
 
+    public static void userLogin(Context context) {
+        if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
+            //百度渠道调用百度的授权
+            BotRegisterListener.getBaiDuVipInfo();
+        } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())) {
+            //义方调用普通版登录
+            Intent tologin = new Intent(context, LoginAlertActivity.class);
+            context.startActivity(tologin);
+        }
+    }
+
 
     public static String checkNum10000(String num) {
         if (Float.valueOf(num) > 10000f) {