Преглед изворни кода

完成第三方绑定界面

316044749 пре 7 година
родитељ
комит
342d69b30f

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

@@ -47,6 +47,7 @@
         <!--登陆-->
         <activity android:name=".activity.LoginActivity"
             android:screenOrientation="portrait"
+            android:windowSoftInputMode="stateHidden"
             android:launchMode="singleInstance"/>
 
         <!--注册-->

+ 279 - 1
app/src/main/java/com/ynstkz/shitu/android/activity/BindThreeAccountActivity.java

@@ -1,20 +1,76 @@
 package com.ynstkz.shitu.android.activity;
 
+import android.app.ProgressDialog;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
 
+import com.common.library.okhttp.callback.Callback;
+import com.google.gson.Gson;
 import com.ynstkz.shitu.android.R;
+import com.ynstkz.shitu.android.base.BaseBean;
 import com.ynstkz.shitu.android.base.TitleBarActivity;
+import com.ynstkz.shitu.android.bean.BindInfoBean;
+import com.ynstkz.shitu.android.data.RequestGroup;
+import com.ynstkz.shitu.android.helper.UmengLoginHelper;
+
+import java.util.List;
+import java.util.Map;
+
+import butterknife.Bind;
+import okhttp3.Call;
+import okhttp3.Response;
 
 /**
  * 作者:fuchangle on 2018/2/12 10:52
  */
 
-public class BindThreeAccountActivity extends TitleBarActivity{
+public class BindThreeAccountActivity extends TitleBarActivity {
+
+    @Bind(R.id.tv_title)
+    TextView tvTitle;
+    @Bind(R.id.view_title)
+    RelativeLayout viewTitle;
+    @Bind(R.id.iv_weixin_icon)
+    ImageView ivWeixinIcon;
+    @Bind(R.id.tv_weixin_state)
+    TextView tvWeixinState;
+    @Bind(R.id.iv_weixin_go)
+    ImageView ivWeixinGo;
+    @Bind(R.id.rl_weixin)
+    RelativeLayout rlWeixin;
+    @Bind(R.id.iv_qq_icon)
+    ImageView ivQqIcon;
+    @Bind(R.id.tv_qq_state)
+    TextView tvQqState;
+    @Bind(R.id.iv_qq_go)
+    ImageView ivQqGo;
+    @Bind(R.id.rl_qq)
+    RelativeLayout rlQq;
+    @Bind(R.id.iv_sina_icon)
+    ImageView ivSinaIcon;
+    @Bind(R.id.tv_sina_state)
+    TextView tvSinaState;
+    @Bind(R.id.iv_sina_go)
+    ImageView ivSinaGo;
+    @Bind(R.id.rl_sina)
+    RelativeLayout rlSina;
+
+    private boolean isBindQQ;
+    private boolean isBindWx;
+    private boolean isBindWb;
+
+    private ProgressDialog progressDialog;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        initView();
+        initData();
+        setListener();
     }
 
     @Override
@@ -22,5 +78,227 @@ public class BindThreeAccountActivity extends TitleBarActivity{
         return R.layout.activity_bindthreeaccount;
     }
 
+    private void initView(){
+        tvTitle.setText("绑定账号");
+    }
+
+    private void initData(){
+
+        getThirdInfo();
+    }
+
+    private void setListener(){
+        //qq
+        rlQq.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                if(isBindQQ){
+                    thirdUnBind(LoginActivity.KEY_QQ);
+                } else {
+                    threeAuthorization(UmengLoginHelper.QQ);
+                }
+            }
+        });
+
+        //wx
+        rlWeixin.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                if(isBindWx){
+                    thirdUnBind(LoginActivity.KEY_WEIXIN);
+                } else {
+                    threeAuthorization(UmengLoginHelper.WX);
+                }
+            }
+        });
+
+        //sina
+        rlSina.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                if(isBindWb){
+                    thirdUnBind(LoginActivity.KEY_SINA);
+                } else {
+                    threeAuthorization(UmengLoginHelper.SINA);
+                }
+            }
+        });
+    }
+
+    /**
+     * 获取用户绑定信息
+     */
+    private void getThirdInfo(){
+
+        RequestGroup.getThirdInfo(new Callback() {
+            @Override
+            public Object parseNetworkResponse(Response response, int id) throws Exception {
+                return new Gson().fromJson(response.body().string(), BindInfoBean.class);
+            }
+
+            @Override
+            public void onError(Call call, Exception e, int id) {
+                showToast(getString(R.string.error_msg));
+            }
+
+            @Override
+            public void onResponse(Object response, int id) {
+                BindInfoBean bindInfoBean = (BindInfoBean)response;
+                if(bindInfoBean != null){
+                    if("200".equals(bindInfoBean.getCode())){
+                        if(bindInfoBean.getData() != null){
+                            initBindInfo(bindInfoBean.getData());
+                        }
+                    } else {
+                        showToast(bindInfoBean.getMsg());
+                    }
+                }
+            }
+        });
+    }
+
+    /**
+     * 初始化绑定信息
+     * @param listDatas
+     */
+    private void initBindInfo(List<BindInfoBean.DataBean> listDatas){
+
+        isBindQQ = false;
+        isBindWx = false;
+        isBindWb = false;
+
+        tvQqState.setText("未绑定");
+        tvWeixinState.setText("未绑定");
+        tvSinaState.setText("未绑定");
+
+        if(listDatas == null || listDatas.size() == 0){
+            return;
+        }
+
+        for(BindInfoBean.DataBean dataBean :listDatas){
+            switch (dataBean.getThirdType()) {
+                case LoginActivity.KEY_QQ :
+                    isBindQQ = true;
+                    tvQqState.setText("已绑定");
+                    break;
+                case LoginActivity.KEY_WEIXIN :
+                    isBindWx = true;
+                    tvWeixinState.setText("已绑定");
+                    break;
+                case LoginActivity.KEY_SINA :
+                    isBindWb = true;
+                    tvSinaState.setText("已绑定");
+                    break;
+            }
+        }
+    }
+
+    /**
+     *第三方授权
+     */
+    private void threeAuthorization(final String type){
+
+        progressDialog = new ProgressDialog(this);
+        progressDialog.setMessage("正在请求授权...");
+        progressDialog.show();
+
+        UmengLoginHelper mLogin = new UmengLoginHelper(BindThreeAccountActivity.this, new UmengLoginHelper.Callback() {
+            @Override
+            public void onComplete(Map<String, String> data) {
+                if(type.equals(UmengLoginHelper.QQ)){
+                    thirdBind(data.get("uid"), LoginActivity.KEY_QQ);
+                } else if (type.equals(UmengLoginHelper.WX)){
+                    thirdBind(data.get("uid"), LoginActivity.KEY_WEIXIN);
+                } else if (type.equals(UmengLoginHelper.SINA)) {
+                    thirdBind(data.get("uid"), LoginActivity.KEY_SINA);
+                }
+            }
+
+            @Override
+            public void onError() {
+                if(progressDialog != null){
+                    progressDialog.dismiss();
+                }
+            }
+
+            @Override
+            public void onCancel() {
+                if(progressDialog != null){
+                    progressDialog.dismiss();
+                }
+            }
+        });
+        mLogin.oAuth(type);
+    }
+
+    /**
+     * 三方账号绑定
+     * @param thirdId
+     * @param thirdType
+     */
+    private void thirdBind(String thirdId, String thirdType) {
+
+        if(progressDialog != null){
+            progressDialog.setMessage("正在绑定...");
+        }
+
+        RequestGroup.thirdBind(thirdId, thirdType, new Callback() {
+            @Override
+            public Object parseNetworkResponse(Response response, int id) throws Exception {
+                return new Gson().fromJson(response.body().string(), BaseBean.class);
+            }
+
+            @Override
+            public void onError(Call call, Exception e, int id) {
+                showToast(e.getMessage());
+                if(progressDialog != null){
+                    progressDialog.dismiss();
+                }
+            }
+
+            @Override
+            public void onResponse(Object response, int id) {
+                if(progressDialog != null){
+                    progressDialog.dismiss();
+                }
+                BaseBean baseBean = (BaseBean) response;
+                if (baseBean != null) {
+                    if ("200".equals(baseBean.getCode())) {
+                        getThirdInfo();
+                    }
+                    showToast(baseBean.getMsg());
+                }
+            }
+        });
+    }
+
+    /**
+     * 解绑
+     * @param thirdType
+     */
+    private void thirdUnBind(String thirdType){
+
+        RequestGroup.thirdUnBind(thirdType, new Callback() {
+            @Override
+            public Object parseNetworkResponse(Response response, int id) throws Exception {
+                return new Gson().fromJson(response.body().string(), BaseBean.class);
+            }
 
+            @Override
+            public void onError(Call call, Exception e, int id) {
+                showToast(e.getMessage());
+            }
+
+            @Override
+            public void onResponse(Object response, int id) {
+                BaseBean baseBean = (BaseBean) response;
+                if (baseBean != null) {
+                    if ("200".equals(baseBean.getCode())) {
+                        getThirdInfo();
+                    }
+                    showToast(baseBean.getMsg());
+                }
+            }
+        });
+    }
 }

+ 17 - 7
app/src/main/java/com/ynstkz/shitu/android/activity/LoginActivity.java

@@ -14,6 +14,7 @@ import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import com.common.library.okhttp.callback.Callback;
+import com.common.library.utils.PixelUtil;
 import com.google.gson.Gson;
 import com.umeng.socialize.UMShareAPI;
 import com.ynstkz.shitu.android.R;
@@ -42,6 +43,10 @@ import okhttp3.Response;
 
 public class LoginActivity extends TitleBarActivity {
 
+    public static final String KEY_QQ = "qq";
+    public static final String KEY_SINA = "weibo";
+    public static final String KEY_WEIXIN = "weixin";
+
     @Bind(R.id.iv_cancel)
     ImageView ivCancel;
     @Bind(R.id.tv_register)
@@ -198,7 +203,7 @@ public class LoginActivity extends TitleBarActivity {
     }
 
     /**
-     *第三方登陆
+     *第三方授权
      */
     private void threeAuthorization(final String type){
 
@@ -210,22 +215,26 @@ public class LoginActivity extends TitleBarActivity {
             @Override
             public void onComplete(Map<String, String> data) {
                 if(type.equals(UmengLoginHelper.QQ)){
-                    thirdLogin(data.get("uid"), "qq");
+                    thirdLogin(data.get("uid"), KEY_QQ);
                 } else if (type.equals(UmengLoginHelper.WX)){
-                    thirdLogin(data.get("uid"), "weixin");
-                } else if (type.equals(UmengLoginHelper.QQ)) {
-                    thirdLogin(data.get("uid"), "weibo");
+                    thirdLogin(data.get("uid"), KEY_WEIXIN);
+                } else if (type.equals(UmengLoginHelper.SINA)) {
+                    thirdLogin(data.get("uid"), KEY_SINA);
                 }
             }
 
             @Override
             public void onError() {
-
+                if(progressDialog != null){
+                    progressDialog.dismiss();
+                }
             }
 
             @Override
             public void onCancel() {
-
+                if(progressDialog != null){
+                    progressDialog.dismiss();
+                }
             }
         });
         mLogin.oAuth(type);
@@ -288,6 +297,7 @@ public class LoginActivity extends TitleBarActivity {
      * @param loginBean
      */
     private void loginSuccess(LoginBean loginBean){
+
         SharedPreferencesUtils.setLogin(true);
         SharedPreferencesUtils.saveToken(loginBean.getData().getToken());
         SharedPreferencesUtils.saveUserId(loginBean.getData().getUserId());

+ 69 - 0
app/src/main/java/com/ynstkz/shitu/android/bean/BindInfoBean.java

@@ -0,0 +1,69 @@
+package com.ynstkz.shitu.android.bean;
+
+import com.ynstkz.shitu.android.base.BaseBean;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 作者:fuchangle on 2018/3/21 11:34
+ */
+
+public class BindInfoBean extends BaseBean{
+
+    private List<DataBean> data;
+
+    public List<DataBean> getData() {
+        return data;
+    }
+
+    public void setData(List<DataBean> data) {
+        this.data = data;
+    }
+
+    public static class DataBean implements Serializable{
+        /**
+         * bindTime : 1521535009000
+         * userId : 21
+         * thirdType : qq
+         * bindId : 1
+         */
+
+        private long bindTime;
+        private int userId;
+        private String thirdType;
+        private int bindId;
+
+        public long getBindTime() {
+            return bindTime;
+        }
+
+        public void setBindTime(long bindTime) {
+            this.bindTime = bindTime;
+        }
+
+        public int getUserId() {
+            return userId;
+        }
+
+        public void setUserId(int userId) {
+            this.userId = userId;
+        }
+
+        public String getThirdType() {
+            return thirdType;
+        }
+
+        public void setThirdType(String thirdType) {
+            this.thirdType = thirdType;
+        }
+
+        public int getBindId() {
+            return bindId;
+        }
+
+        public void setBindId(int bindId) {
+            this.bindId = bindId;
+        }
+    }
+}

+ 22 - 0
app/src/main/java/com/ynstkz/shitu/android/data/RequestGroup.java

@@ -426,4 +426,26 @@ public class RequestGroup {
         OkHttpUtils.postString().url(UrlCat.URL_THIRD_BIND).addHeader(KEY_TOKEN,
                 SharedPreferencesUtils.getToken()).content(new Gson().toJson(params)).build().execute(callback);
     }
+
+    /**
+     * 第三方账号绑定信息获取
+     * @param callback
+     */
+    public static void getThirdInfo(Callback callback){
+        Map<String, String> params = getSystemParams();
+        OkHttpUtils.get().url(UrlCat.URL_THIRD_INFO).addHeader(KEY_TOKEN,
+                SharedPreferencesUtils.getToken()).params(params).build().execute(callback);
+    }
+
+    /**
+     * 解绑
+     * @param thirdType
+     * @param callback
+     */
+    public static void thirdUnBind(String thirdType, Callback callback){
+        Map<String, String> params = getSystemParams();
+        params.put("thirdType", thirdType);
+        OkHttpUtils.postString().url(UrlCat.URL_THIRD_UNBIND).addHeader(KEY_TOKEN,
+                SharedPreferencesUtils.getToken()).content(new Gson().toJson(params)).build().execute(callback);
+    }
 }

+ 10 - 0
app/src/main/java/com/ynstkz/shitu/android/data/UrlCat.java

@@ -167,6 +167,16 @@ public class UrlCat {
      * 第三方账号绑定
      */
     public static final String URL_THIRD_BIND = HOST + "api/third/bind";
+
+    /**
+     * 第三方账号绑定信息获取
+     */
+    public static final String URL_THIRD_INFO = HOST + "api/third/info";
+
+    /**
+     * 取消绑定
+     */
+    public static final String URL_THIRD_UNBIND = HOST + "api/third/unbind";
 }
 
 

+ 3 - 3
app/src/main/java/com/ynstkz/shitu/android/helper/UmengLoginHelper.java

@@ -25,11 +25,11 @@ public class UmengLoginHelper {
     private Callback mCallback;
 
     public interface Callback {
-        public void onComplete(Map<String, String> data);
+        void onComplete(Map<String, String> data);
 
-        public void onError();
+        void onError();
 
-        public void onCancel();
+        void onCancel();
     }
 
     private UMShareAPI mShareAPI;