From 758b87e426dd1f09d2f79236b7a661cd589544cc Mon Sep 17 00:00:00 2001 From: hch <16607480311@163.com> Date: Mon, 23 Oct 2023 15:08:13 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E7=BD=AE-=E4=BF=AE=E6=94=B9=E5=AF=86?= =?UTF-8?q?=E7=A0=81,=E9=BB=91=E5=90=8D=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OneToOne/src/main/AndroidManifest.xml | 5 + .../activity/fragments/MyFragment.java | 2 +- .../activity/login/ChooseLabelActivity.java | 14 +- .../activity/login/CompleteActivity.java | 5 +- .../activity/setting/FollowActivity.java | 151 ++++++++++++ .../activity/setting/ModifyPwdActivity.java | 91 ++++++++ .../activity/setting/SettingActivity.java | 15 +- .../activity/user/EditProfileActivity.java | 43 +++- .../shayu/onetoone/adapter/SearchAdapter.java | 218 ++++++++++++++++++ .../shayu/onetoone/bean/SearchUserBean.java | 62 +++++ .../shayu/onetoone/manager/OTONetManager.java | 27 +++ .../shayu/onetoone/manager/RouteManager.java | 5 +- .../shayu/onetoone/network/OneToOneApi.java | 17 +- .../shayu/onetoone/utils/MainHttpUtil.java | 1 + .../main/res/layout/activity_edit_profile.xml | 31 ++- .../src/main/res/layout/activity_follow.xml | 20 ++ .../main/res/layout/activity_modify_pwd.xml | 136 +++++++++++ .../src/main/res/layout/activity_setting.xml | 1 + OneToOne/src/main/res/layout/item_search.xml | 108 +++++++++ .../main/res/layout/view_no_data_follow.xml | 28 +++ .../main/res/layout/view_no_data_follow_2.xml | 11 + .../main/res/mipmap-xxhdpi/auth_status.png | Bin 0 -> 8124 bytes 22 files changed, 969 insertions(+), 22 deletions(-) create mode 100644 OneToOne/src/main/java/com/shayu/onetoone/activity/setting/FollowActivity.java create mode 100644 OneToOne/src/main/java/com/shayu/onetoone/activity/setting/ModifyPwdActivity.java create mode 100644 OneToOne/src/main/java/com/shayu/onetoone/adapter/SearchAdapter.java create mode 100644 OneToOne/src/main/java/com/shayu/onetoone/bean/SearchUserBean.java create mode 100644 OneToOne/src/main/res/layout/activity_follow.xml create mode 100644 OneToOne/src/main/res/layout/activity_modify_pwd.xml create mode 100644 OneToOne/src/main/res/layout/item_search.xml create mode 100644 OneToOne/src/main/res/layout/view_no_data_follow.xml create mode 100644 OneToOne/src/main/res/layout/view_no_data_follow_2.xml create mode 100644 OneToOne/src/main/res/mipmap-xxhdpi/auth_status.png diff --git a/OneToOne/src/main/AndroidManifest.xml b/OneToOne/src/main/AndroidManifest.xml index 7a3c4cdb9..a7bca8ef3 100644 --- a/OneToOne/src/main/AndroidManifest.xml +++ b/OneToOne/src/main/AndroidManifest.xml @@ -211,6 +211,11 @@ android:label="达人认证入口" android:windowSoftInputMode="stateHidden|adjustResize" /> + + >() { @Override public void onSuccess(List data) { @@ -134,8 +140,12 @@ public class ChooseLabelActivity extends AbsOTOActivity { public void onSuccess(HttpCallbackModel data) { Toast.makeText(mContext, data.getMsg(), Toast.LENGTH_SHORT).show(); if (data.getCode() == 0) { - RouteManager.forwardMainActivity(); - finish(); + if (isUserHome) { + finish(); + } else { + RouteManager.forwardMainActivity(); + finish(); + } } } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/login/CompleteActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/login/CompleteActivity.java index 3ad8fe451..ea01f7485 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/login/CompleteActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/login/CompleteActivity.java @@ -3,7 +3,6 @@ package com.shayu.onetoone.activity.login; import android.annotation.SuppressLint; import android.app.Dialog; -import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; @@ -21,13 +20,11 @@ import com.blankj.utilcode.util.StringUtils; import com.lxj.xpopup.XPopup; import com.shayu.onetoone.R; import com.shayu.onetoone.activity.AbsOTOActivity; -import com.shayu.onetoone.activity.MainActivity; import com.shayu.onetoone.bean.AvatarBean; import com.shayu.onetoone.manager.OTONetManager; import com.shayu.onetoone.manager.RouteManager; import com.shayu.onetoone.view.UserAvatarPopup; import com.yunbao.common.CommonAppConfig; -import com.yunbao.common.Constants; import com.yunbao.common.bean.HttpCallbackModel; import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.http.base.HttpCallback; @@ -204,7 +201,7 @@ public class CompleteActivity extends AbsOTOActivity { public void onSuccess(HttpCallbackModel data) { Toast.makeText(mContext, data.getMsg(), Toast.LENGTH_SHORT).show(); if (data.getCode() == 0) { - RouteManager.forwardChooseActivity(); + RouteManager.forwardChooseLabelActivity(false); finish(); } } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/setting/FollowActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/setting/FollowActivity.java new file mode 100644 index 000000000..144b73ea3 --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/setting/FollowActivity.java @@ -0,0 +1,151 @@ +package com.shayu.onetoone.activity.setting; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; + +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.alibaba.fastjson.JSON; +import com.shayu.onetoone.R; +import com.shayu.onetoone.adapter.SearchAdapter; +import com.shayu.onetoone.bean.SearchUserBean; +import com.shayu.onetoone.utils.MainHttpConsts; +import com.shayu.onetoone.utils.MainHttpUtil; +import com.yunbao.common.CommonAppConfig; +import com.yunbao.common.Constants; +import com.yunbao.common.activity.AbsActivity; +import com.yunbao.common.adapter.RefreshAdapter; +import com.yunbao.common.interfaces.OnItemClickListener; +import com.yunbao.common.custom.CommonRefreshView; +import com.yunbao.common.event.FollowEvent; +import com.yunbao.common.http.HttpCallback; +import com.yunbao.common.utils.RouteUtil; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import java.util.Arrays; +import java.util.List; + +/** + * 我的关注 TA的关注 + */ + +public class FollowActivity extends AbsActivity implements OnItemClickListener { + + public static void forward(Context context, String toUid, int isBlack) { + Intent intent = new Intent(context, FollowActivity.class); + intent.putExtra(Constants.TO_UID, toUid); + intent.putExtra(Constants.isBlack, isBlack); + context.startActivity(intent); + } + + private CommonRefreshView mRefreshView; + private SearchAdapter mAdapter; + private String mToUid; + private int isBlack; + private int intoIndex = 0; + + @Override + protected int getLayoutId() { + return R.layout.activity_follow; + } + + @Override + protected void main() { + mToUid = getIntent().getStringExtra(Constants.TO_UID); + isBlack = getIntent().getIntExtra(Constants.isBlack, 0); + if (TextUtils.isEmpty(mToUid)) { + return; + } + mRefreshView = findViewById(R.id.refreshView); + if (isBlack == 1) { + setTitle(mContext.getString(R.string.my_black)); + } else if (mToUid.equals(CommonAppConfig.getInstance().getUid())) { + setTitle(mContext.getString(R.string.follow_my_follow)); + mRefreshView.setEmptyLayoutId(R.layout.view_no_data_follow); + } else { + setTitle(mContext.getString(R.string.follow_ta_follow)); + mRefreshView.setEmptyLayoutId(R.layout.view_no_data_follow_2); + } + mRefreshView.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false)); + mRefreshView.setDataHelper(new CommonRefreshView.DataHelper() { + @Override + public RefreshAdapter getAdapter() { + if (mAdapter == null) { + mAdapter = new SearchAdapter(mContext, Constants.FOLLOW_FROM_FOLLOW); + mAdapter.setOnItemClickListener(FollowActivity.this); + } + return mAdapter; + } + + @Override + public void loadData(int p, HttpCallback callback) { + if (isBlack == 1) { + MainHttpUtil.getBlackList(p, callback); + } else { + MainHttpUtil.getFollowList(mToUid, p, callback); + } + } + + @Override + public List processData(String[] info) { + return JSON.parseArray(Arrays.toString(info), SearchUserBean.class); + } + + @Override + public void onRefreshSuccess(List list, int listCount) { + + } + + @Override + public void onRefreshFailure() { + + } + + @Override + public void onLoadMoreSuccess(List loadItemList, int loadItemCount) { + + } + + @Override + public void onLoadMoreFailure() { + + } + }); + EventBus.getDefault().register(this); + mRefreshView.initData(); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onFollowEvent(FollowEvent e) { + if (mAdapter != null) { + mAdapter.updateItem(e.getToUid(), e.getIsAttention()); + } + } + + @Override + protected void onDestroy() { + EventBus.getDefault().unregister(this); + MainHttpUtil.cancel(MainHttpConsts.GET_FOLLOW_LIST); + super.onDestroy(); + } + + @Override + public void onItemClick(SearchUserBean bean, int position) { + RouteUtil.forwardUserHome(mContext, bean.getId(), 0); + intoIndex = 1; + } + + + @Override + protected void onResume() { + super.onResume(); + if (intoIndex == 1) { + intoIndex = 0; + mRefreshView.initData(); + } + } +} diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/setting/ModifyPwdActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/setting/ModifyPwdActivity.java new file mode 100644 index 000000000..bacfc3b2e --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/setting/ModifyPwdActivity.java @@ -0,0 +1,91 @@ +package com.shayu.onetoone.activity.setting; + +import android.text.TextUtils; +import android.view.View; +import android.widget.EditText; + +import com.alibaba.fastjson.JSON; +import com.shayu.onetoone.R; +import com.shayu.onetoone.activity.user.AuthActivity; +import com.shayu.onetoone.manager.OTONetManager; +import com.yunbao.common.activity.AbsActivity; +import com.yunbao.common.bean.BaseModel; +import com.yunbao.common.bean.HttpCallbackModel; +import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.utils.ToastUtil; + +import java.util.List; + +/** + * 重置密码 + */ + +public class ModifyPwdActivity extends AbsActivity implements View.OnClickListener { + + private EditText mEditOld; + private EditText mEditNew; + private EditText mEditConfirm; + + @Override + protected int getLayoutId() { + return R.layout.activity_modify_pwd; + } + + @Override + protected void main() { + setTitle(mContext.getString(R.string.modify_pwd)); + mEditOld = (EditText) findViewById(R.id.edit_old); + mEditNew = (EditText) findViewById(R.id.edit_new); + mEditConfirm = (EditText) findViewById(R.id.edit_confirm); + findViewById(R.id.btn_confirm).setOnClickListener(this); + } + + @Override + public void onClick(View v) { + modify(); + } + + private void modify() { + String pwdOld = mEditOld.getText().toString().trim(); + if (TextUtils.isEmpty(pwdOld)) { + mEditOld.setError(mContext.getString(R.string.modify_pwd_old_1)); + return; + } + String pwdNew = mEditNew.getText().toString().trim(); + if (TextUtils.isEmpty(pwdNew)) { + mEditNew.setError(mContext.getString(R.string.modify_pwd_new_1)); + return; + } + String pwdConfirm = mEditConfirm.getText().toString().trim(); + if (TextUtils.isEmpty(pwdConfirm)) { + mEditConfirm.setError(mContext.getString(R.string.modify_pwd_confirm_1)); + return; + } + if (!pwdNew.equals(pwdConfirm)) { + mEditConfirm.setError(mContext.getString(R.string.reg_pwd_error)); + return; + } + + OTONetManager.getInstance(ModifyPwdActivity.this).updatePass(pwdOld, pwdNew, pwdConfirm, new HttpCallback() { + @Override + public void onSuccess(HttpCallbackModel data) { + if (data.getCode() == 0) { + ToastUtil.show(data.getMsg()); + finish(); + } else { + ToastUtil.show(data.getMsg()); + } + } + + @Override + public void onError(String error) { + + } + }); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + } +} diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/setting/SettingActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/setting/SettingActivity.java index 3133109a2..4907df181 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/setting/SettingActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/setting/SettingActivity.java @@ -51,7 +51,18 @@ public class SettingActivity extends AbsActivity { RouteUtil.forwardEditProfileActivity(); } }); - + ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.change_the_password), new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + forwardModifyPwd(); + } + }); + ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.blacklist), new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + FollowActivity.forward(mContext,CommonAppConfig.getInstance().getUserBean().getId(),1); + } + }); // 达人认证 ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.toBlogger), new ViewClicksAntiShake.ViewClicksCallBack() { @Override @@ -103,7 +114,7 @@ public class SettingActivity extends AbsActivity { * 修改密码 */ private void forwardModifyPwd() { - //startActivity(new Intent(mContext, ModifyPwdActivity.class)); + startActivity(new Intent(mContext, ModifyPwdActivity.class)); } /** diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/user/EditProfileActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/user/EditProfileActivity.java index d5181c2b0..36c3cf8d6 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/user/EditProfileActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/user/EditProfileActivity.java @@ -6,6 +6,7 @@ import android.content.Intent; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; @@ -18,6 +19,7 @@ import com.sahooz.library.Country; import com.sahooz.library.CountryPicker; import com.sahooz.library.OnPick; import com.shayu.onetoone.R; +import com.shayu.onetoone.bean.AuthBean; import com.shayu.onetoone.bean.AvatarBean; import com.shayu.onetoone.manager.OTONetManager; import com.shayu.onetoone.manager.RouteManager; @@ -75,6 +77,7 @@ public class EditProfileActivity extends AbsActivity { private TextView mSex; private TextView mCity; private TextView tv_bind_phone; + private TextView auth_status; private ProcessImageUtil cameraUtil; private UserBean mUserBean; private String mProvinceVal; @@ -88,6 +91,8 @@ public class EditProfileActivity extends AbsActivity { int userSex; + AuthBean authBean; + @Override protected int getLayoutId() { return R.layout.activity_edit_profile; @@ -96,6 +101,7 @@ public class EditProfileActivity extends AbsActivity { @Override protected void main() { setTitle(mContext.getString(R.string.edit_profile)); + auth_status = findViewById(R.id.auth_status); mAvatar = (ImageView) findViewById(R.id.avatar); mName = (TextView) findViewById(R.id.name); mSign = (TextView) findViewById(R.id.sign); @@ -247,6 +253,12 @@ public class EditProfileActivity extends AbsActivity { } else { showTaskDialog(); } + } else if (i == R.id.btn_like) { + if (isInto) { + editLabel(); + } else { + showTaskDialog(); + } } else if (i == R.id.btn_sign) { if (isInto) { forwardSign(); @@ -263,7 +275,6 @@ public class EditProfileActivity extends AbsActivity { public void onSex(int sex) { userSex = sex; - OTONetManager.getInstance(EditProfileActivity.this).setFiled("sex", String.valueOf(sex), new com.yunbao.common.http.base.HttpCallback() { @Override public void onSuccess(HttpCallbackModel data) { @@ -323,6 +334,10 @@ public class EditProfileActivity extends AbsActivity { } } + private void editLabel() { + RouteManager.forwardChooseLabelActivity(true); + } + private void editName() { Intent intent = new Intent(mContext, EditNameActivity.class); intent.putExtra(Constants.NICK_NAME, mUserBean.getUserNiceName()); @@ -665,6 +680,32 @@ public class EditProfileActivity extends AbsActivity { } }*/ + OTONetManager.getInstance(EditProfileActivity.this).getAuthInfo(new com.yunbao.common.http.base.HttpCallback() { + @Override + public void onSuccess(AuthBean data) { + authBean = data; + if (data.getName_auth() == 2) {//已通过 + auth_status.setText("認證通過"); + auth_status.setTextColor(getResources().getColor(R.color.green_81c160)); + auth_status.setVisibility(View.GONE); + findViewById(R.id.img_auth_status).setVisibility(View.VISIBLE); + } else if (data.getName_auth() == 3) {//已提交 + auth_status.setText("審核中"); + auth_status.setTextColor(getResources().getColor(R.color.gray1)); + } else if (data.getName_auth() == 4) { + auth_status.setText("審核失敗重新提交"); + auth_status.setTextColor(getResources().getColor(R.color.red)); + } else { + auth_status.setText("去認證"); + auth_status.setTextColor(getResources().getColor(R.color.black2)); + } + } + + @Override + public void onError(String error) { + + } + }); } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/adapter/SearchAdapter.java b/OneToOne/src/main/java/com/shayu/onetoone/adapter/SearchAdapter.java new file mode 100644 index 000000000..b420d9af5 --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/adapter/SearchAdapter.java @@ -0,0 +1,218 @@ +package com.shayu.onetoone.adapter; + +import android.content.Context; +import android.text.TextUtils; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.alibaba.fastjson.JSON; +import com.shayu.onetoone.R; +import com.shayu.onetoone.bean.SearchUserBean; +import com.yunbao.common.CommonAppConfig; +import com.yunbao.common.Constants; +import com.yunbao.common.adapter.RefreshAdapter; +import com.yunbao.common.bean.LevelBean; +import com.yunbao.common.bean.LiveBean; +import com.yunbao.common.custom.MyRadioButton; +import com.yunbao.common.glide.ImgLoader; +import com.yunbao.common.http.CommonHttpUtil; +import com.yunbao.common.http.HttpCallback; +import com.yunbao.common.http.LiveHttpUtil; +import com.yunbao.common.utils.CommonIconUtil; +import com.yunbao.common.utils.LiveRoomCheckLivePresenter; +import com.yunbao.common.utils.RouteUtil; + +import java.util.List; + +import pl.droidsonroids.gif.GifImageView; + +/** + * Created by cxf on 2018/9/29. + */ + +public class SearchAdapter extends RefreshAdapter { + + private View.OnClickListener mFollowClickListener; + private View.OnClickListener mClickListener; + private String mFollow; + private String mFollowing; + private int mFrom; + private String mUid; + + public SearchAdapter(Context context, int from) { + super(context); + mFrom = from; + mFollow =mContext.getString(R.string.follow); + mFollowing =mContext.getString(R.string.following); + mFollowClickListener = new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!canClick()) { + return; + } + Object tag = v.getTag(); + if (tag == null) { + return; + } + SearchUserBean bean = (SearchUserBean) tag; + CommonHttpUtil.setAttention(bean.getId(), null); + } + }; + mClickListener = new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!canClick()) { + return; + } + Object tag = v.getTag(); + if (tag == null) { + return; + } + SearchUserBean bean = (SearchUserBean) tag; + if (mOnItemClickListener != null) { + mOnItemClickListener.onItemClick(bean, 0); + } + } + }; + mUid = CommonAppConfig.getInstance().getUid(); + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + return new Vh(mInflater.inflate(R.layout.item_search, parent, false)); + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder vh, int position, @NonNull List payloads) { + Object payload = payloads.size() > 0 ? payloads.get(0) : null; + ((Vh) vh).setData(mList.get(position), position, payload); + } + + public void updateItem(String id, int attention) { + if (TextUtils.isEmpty(id)) { + return; + } + for (int i = 0, size = mList.size(); i < size; i++) { + SearchUserBean bean = mList.get(i); + if (bean != null && id.equals(bean.getId())) { + bean.setAttention(attention); + notifyItemChanged(i, Constants.PAYLOAD); + break; + } + } + } + + + class Vh extends RecyclerView.ViewHolder { + + ImageView mAvatar; + TextView mName; + TextView mSign; + ImageView mSex; + ImageView mLevelAnchor; + ImageView mLevel; + MyRadioButton mBtnFollow; + GifImageView btn_live; + + public Vh(View itemView) { + super(itemView); + mAvatar = (ImageView) itemView.findViewById(R.id.avatar); + mName = (TextView) itemView.findViewById(R.id.name); + mSign = (TextView) itemView.findViewById(R.id.sign); + mSex = (ImageView) itemView.findViewById(R.id.sex); + mLevelAnchor = (ImageView) itemView.findViewById(R.id.level_anchor); + mLevel = (ImageView) itemView.findViewById(R.id.level); + mBtnFollow = (MyRadioButton) itemView.findViewById(R.id.btn_follow); + btn_live = (GifImageView) itemView.findViewById(R.id.btn_live); + itemView.setOnClickListener(mClickListener); + mBtnFollow.setOnClickListener(mFollowClickListener); + } + + void setData(final SearchUserBean bean, int position, Object payload) { + itemView.setTag(bean); + mBtnFollow.setTag(bean); + if (payload == null) { + ImgLoader.displayAvatar(mContext, bean.getAvatar(), mAvatar); + mName.setText(bean.getUserNiceName()); + mSign.setText(bean.getSignature()); + mSex.setImageResource(CommonIconUtil.getSexIcon(bean.getSex())); + btn_live.setVisibility(View.GONE); + if (bean.getIslive() != null && bean.getIslive().equals("1")) { + btn_live.setVisibility(View.VISIBLE); + + } + btn_live.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + gotoLive(bean.getId()); + } + }); + LevelBean anchorLevelBean = CommonAppConfig.getInstance().getAnchorLevel(bean.getLevelAnchor()); + if (anchorLevelBean != null) { + ImgLoader.display(mContext, CommonAppConfig.getInstance().HOST + anchorLevelBean.getThumb(), mLevelAnchor); + } + LevelBean levelBean = CommonAppConfig.getInstance().getLevel(bean.getLevel()); + if (levelBean != null) { + ImgLoader.display(mContext, levelBean.getThumb(), mLevel); + } + } +// if (mUid.equals(bean.getId())) { +// if (mBtnFollow.getVisibility() == View.VISIBLE) { +// mBtnFollow.setVisibility(View.INVISIBLE); +// } +// } else { +// if (mBtnFollow.getVisibility() != View.VISIBLE) { +// mBtnFollow.setVisibility(View.VISIBLE); +// } +// if (bean.getAttention() == 1) { +// mBtnFollow.doChecked(true); +// mBtnFollow.setText(mFollowing); +// } else { +// mBtnFollow.doChecked(false); +// mBtnFollow.setText(mFollow); +// } +// } + } + + } + + + private void gotoLive(final String live_id) { + LiveHttpUtil.getLiveInfo(live_id, new HttpCallback() { + @Override + public void onSuccess(int code, String msg, String[] info) { + if (code == 0 && info.length > 0) { + LiveBean liveBean = JSON.parseObject(info[0], LiveBean.class); + if (liveBean == null) { + return; + } + new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() { + @Override + public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk) { + RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal)); + } + + @Override + public void onCheckError(String contextError) { + + } + }); + } else { + RouteUtil.forwardUserHome(mContext, live_id, 0); + } + } + }); + } + +} diff --git a/OneToOne/src/main/java/com/shayu/onetoone/bean/SearchUserBean.java b/OneToOne/src/main/java/com/shayu/onetoone/bean/SearchUserBean.java new file mode 100644 index 000000000..87d85bcd7 --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/bean/SearchUserBean.java @@ -0,0 +1,62 @@ +package com.shayu.onetoone.bean; + +import android.os.Parcel; + +import com.alibaba.fastjson.annotation.JSONField; +import com.yunbao.common.bean.UserBean; + +/** + * Created by cxf on 2018/9/29. + */ + +public class SearchUserBean extends UserBean { + + private int attention; + private String isblack; + @JSONField(name = "isattention") + public int getAttention() { + return attention; + } + + @JSONField(name = "isblack") + public String getBlack() { + return isblack; + } + + @JSONField(name = "isblack") + public void setBlack(String black) { + this.isblack = black; + } + + @JSONField(name = "isattention") + public void setAttention(int attention) { + this.attention = attention; + } + + public SearchUserBean() { + + } + +// @Override +// public void writeToParcel(Parcel dest, int flags) { +// super.writeToParcel(dest, flags); +// dest.writeInt(this.attention); +// } + + public SearchUserBean(Parcel in) { + super(in); + this.attention = in.readInt(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public SearchUserBean[] newArray(int size) { + return new SearchUserBean[size]; + } + + @Override + public SearchUserBean createFromParcel(Parcel in) { + return new SearchUserBean(in); + } + }; +} diff --git a/OneToOne/src/main/java/com/shayu/onetoone/manager/OTONetManager.java b/OneToOne/src/main/java/com/shayu/onetoone/manager/OTONetManager.java index 49d61ebf1..e516472ad 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/manager/OTONetManager.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/manager/OTONetManager.java @@ -1259,4 +1259,31 @@ public class OTONetManager { } }).isDisposed(); } + + + public void updatePass( + String name, String mobile, String card_no, + HttpCallback callback) { + + API.get().otoApi(mContext) + .updaePass(name, mobile, card_no) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer>>() { + @Override + public void accept(ResponseModel> listResponseModel) throws Exception { + if (listResponseModel.getData().getCode() == 0) { + callback.onSuccess(new HttpCallbackModel(listResponseModel.getData().getCode(), listResponseModel.getData().getMsg())); + } else { + callback.onError(listResponseModel.getData().getMsg()); + } + } + }, new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + + } + }).isDisposed(); + } + } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java b/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java index a178d75cd..ecfd4a37f 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java @@ -41,6 +41,7 @@ public class RouteManager { public static final String ACTIVITY_AUTH_BLOGGER_INLET = "/activity/AuthBloggerInletActivity"; public static final String ACTIVITY_END_CALL="/activity/EndCallActivity"; + public static final String ACTIVITY_BLACK_LIST = "/activity/AuthBloggerInletActivity"; /** * 达人认证入口 @@ -67,8 +68,8 @@ public class RouteManager { /** * 选择标签 */ - public static void forwardChooseActivity() { - ARouter.getInstance().build(ACTIVITY_CHOOSE_LABEL).navigation(); + public static void forwardChooseLabelActivity(boolean isUserHome) { + ARouter.getInstance().build(ACTIVITY_CHOOSE_LABEL).withBoolean("isUserHome",isUserHome).navigation(); } /** diff --git a/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java b/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java index add5c2553..1ecb055c2 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/network/OneToOneApi.java @@ -4,7 +4,6 @@ import com.shayu.onetoone.bean.AuthBean; import com.shayu.onetoone.bean.AuthBloggerBean; import com.shayu.onetoone.bean.AvatarBean; import com.shayu.onetoone.bean.ExchangeModel; -import com.shayu.onetoone.bean.ExchangeRecordModel; import com.shayu.onetoone.bean.FollowBean; import com.shayu.onetoone.bean.FriendAppMoneyLogModel; import com.shayu.onetoone.bean.FriendAppMoneySumModel; @@ -245,7 +244,6 @@ public interface OneToOneApi { Observable>> getExchangeList( @Query("type") String type ); - /** * 设置基本信息 */ @@ -326,6 +324,21 @@ public interface OneToOneApi { @Query("income") String income, @Query("p") int page ); + + /** + * 修改密码 + * @param oldpass + * @param pass + * @param pass2 + * @return + */ + @GET("/api/public/?service=User.updatePass") + Observable>> updaePass( + @Query("oldpass") String oldpass, + @Query("pass") String pass, + @Query("pass2") String pass2); + + } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/utils/MainHttpUtil.java b/OneToOne/src/main/java/com/shayu/onetoone/utils/MainHttpUtil.java index 35c1b01e1..9413e6ff0 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/utils/MainHttpUtil.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/utils/MainHttpUtil.java @@ -360,6 +360,7 @@ public class MainHttpUtil { public static void getBlackList(int p, HttpCallback callback) { HttpClient.getInstance().get("User.getBlackList", "User.getBlackList") .params("p", p) + .params("touid", "1") .execute(callback); } diff --git a/OneToOne/src/main/res/layout/activity_edit_profile.xml b/OneToOne/src/main/res/layout/activity_edit_profile.xml index ad6db5e99..6a3d2044d 100644 --- a/OneToOne/src/main/res/layout/activity_edit_profile.xml +++ b/OneToOne/src/main/res/layout/activity_edit_profile.xml @@ -348,18 +348,33 @@ android:textColor="#FF5730" android:textSize="9sp" /> - + android:layout_height="wrap_content"> + + + + + + + + + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/layout/activity_modify_pwd.xml b/OneToOne/src/main/res/layout/activity_modify_pwd.xml new file mode 100644 index 000000000..3066e340a --- /dev/null +++ b/OneToOne/src/main/res/layout/activity_modify_pwd.xml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/layout/activity_setting.xml b/OneToOne/src/main/res/layout/activity_setting.xml index 12714d866..c55b6af52 100644 --- a/OneToOne/src/main/res/layout/activity_setting.xml +++ b/OneToOne/src/main/res/layout/activity_setting.xml @@ -98,6 +98,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/layout/view_no_data_follow.xml b/OneToOne/src/main/res/layout/view_no_data_follow.xml new file mode 100644 index 000000000..2bf282343 --- /dev/null +++ b/OneToOne/src/main/res/layout/view_no_data_follow.xml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/layout/view_no_data_follow_2.xml b/OneToOne/src/main/res/layout/view_no_data_follow_2.xml new file mode 100644 index 000000000..0f80ffcde --- /dev/null +++ b/OneToOne/src/main/res/layout/view_no_data_follow_2.xml @@ -0,0 +1,11 @@ + + \ No newline at end of file diff --git a/OneToOne/src/main/res/mipmap-xxhdpi/auth_status.png b/OneToOne/src/main/res/mipmap-xxhdpi/auth_status.png new file mode 100644 index 0000000000000000000000000000000000000000..4b21b8a385a065ed4204e2d79405389fa8ba3000 GIT binary patch literal 8124 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