package com.liaobo.im.fragment; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.liaobo.im.AppConstant; import com.liaobo.im.R; import com.liaobo.im.Reporter; import com.liaobo.im.bean.CertificationBean; import com.liaobo.im.bean.User; import com.liaobo.im.broadcast.OtherBroadcast; import com.liaobo.im.course.LocalCourseActivity; import com.liaobo.im.db.InternationalizationHelper; import com.liaobo.im.db.SQLiteHelper; import com.liaobo.im.db.dao.FriendDao; import com.liaobo.im.db.dao.UserDao; import com.liaobo.im.helper.AvatarHelper; import com.liaobo.im.pay.PaymentActivity; import com.liaobo.im.ui.MainActivity; import com.liaobo.im.ui.account.SignInActivity; import com.liaobo.im.ui.base.BaseChatActivity; import com.liaobo.im.ui.base.EasyFragment; import com.liaobo.im.ui.circle.BusinessCircleActivity; import com.liaobo.im.ui.contacts.RoomActivity; import com.liaobo.im.ui.dialog.VerifiedDialogView; import com.liaobo.im.ui.me.AccessibilityActivity; import com.liaobo.im.ui.me.BasicInfoEditActivity; import com.liaobo.im.ui.me.MyCollection; import com.liaobo.im.ui.me.MyInfoActivity; import com.liaobo.im.ui.me.SelectFriendsActivity; import com.liaobo.im.ui.me.SettingActivity; import com.liaobo.im.ui.me.redpacket.MyRedPacketActivity; import com.liaobo.im.ui.me.redpacket.WxPayBlance; import com.liaobo.im.ui.tool.SingleImagePreviewActivity; import com.liaobo.im.ui.tool.WebViewActivity; import com.liaobo.im.util.AsyncUtils; import com.liaobo.im.util.Constants; import com.liaobo.im.util.PreferenceUtils; import com.liaobo.im.util.SkinUtils; import com.liaobo.im.util.ToastUtil; import com.liaobo.im.util.UiUtils; import com.liaobo.im.xuan.xuanhttplibrary.okhttp.HttpUtils; import com.liaobo.im.xuan.xuanhttplibrary.okhttp.callback.BaseCallback; import com.liaobo.im.xuan.xuanhttplibrary.okhttp.result.ObjectResult; import org.jetbrains.anko.ToastsKt; import java.util.HashMap; import java.util.Map; import okhttp3.Call; public class MeFragment extends EasyFragment implements View.OnClickListener { private TextView mTvTitle; private ImageView mAvatarImg; private TextView mNickNameTv; private TextView mPhoneNumTv; private TextView skyTv, setTv; private boolean isVerified = false; private BroadcastReceiver mUpdateReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (TextUtils.equals(action, OtherBroadcast.SYNC_SELF_DATE_NOTIFY)) { updateUI(); } } }; public MeFragment() { } @Override protected int inflateLayoutId() { return R.layout.fragment_me; } @Override protected void onActivityCreated(Bundle savedInstanceState, boolean createView) { if (createView) { initView(); } } @Override public void onResume() { super.onResume(); updateUI(); updateSelfData(); } @Override public void onDestroy() { super.onDestroy(); getActivity().unregisterReceiver(mUpdateReceiver); } private void initView() { findViewById(R.id.iv_title_left).setVisibility(View.GONE); mTvTitle = (TextView) findViewById(R.id.tv_title_center); mTvTitle.setText(R.string.me_title); skyTv = (TextView) findViewById(R.id.MySky); setTv = (TextView) findViewById(R.id.SettingTv); skyTv.setText(getString(R.string.my_moments)); setTv.setText(InternationalizationHelper.getString("JXSettingVC_Set")); findViewById(R.id.info_rl).setOnClickListener(this); findViewById(R.id.live_rl).setOnClickListener(this); findViewById(R.id.douyin_rl).setOnClickListener(this); findViewById(R.id.ll_more).setVisibility(View.GONE); findViewById(R.id.my_monry).setOnClickListener(this); findViewById(R.id.my_mall_rl).setOnClickListener(this); // 关闭红包功能,隐藏我的钱包 if (coreManager.getConfig().displayRedPacket) { // 切换新旧两种ui对应我的页面是否显示视频会议、直播、短视频, findViewById(R.id.my_monry).setVisibility(View.GONE); } findViewById(R.id.my_space_rl).setOnClickListener(this); findViewById(R.id.my_collection_rl).setOnClickListener(this); findViewById(R.id.local_course_rl).setOnClickListener(this); findViewById(R.id.setting_rl).setOnClickListener(this); findViewById(R.id.send_gMessage_rl).setOnClickListener(this); findViewById(R.id.my_sign_rl).setOnClickListener(this); findViewById(R.id.receipt_payment).setOnClickListener(this); mAvatarImg = (ImageView) findViewById(R.id.avatar_img); mNickNameTv = (TextView) findViewById(R.id.nick_name_tv); mPhoneNumTv = (TextView) findViewById(R.id.phone_number_tv); String loginUserId = coreManager.getSelf().getUserId(); AvatarHelper.getInstance().displayAvatar(coreManager.getSelf().getNickName(), loginUserId, mAvatarImg, false); mNickNameTv.setText(coreManager.getSelf().getNickName()); mAvatarImg.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), SingleImagePreviewActivity.class); intent.putExtra(AppConstant.EXTRA_IMAGE_URI, coreManager.getSelf().getUserId()); startActivity(intent); } }); findViewById(R.id.llFriend).setOnClickListener(v -> { MainActivity activity = (MainActivity) requireActivity(); activity.changeTab(R.id.rb_tab_2); }); findViewById(R.id.rlt_red_packet_record).setOnClickListener(this); findViewById(R.id.rlt_real_name_auth).setOnClickListener(this); findViewById(R.id.llGroup).setOnClickListener(v -> RoomActivity.start(requireContext())); findViewById(R.id.rlt_accessibility).setOnClickListener(this); initTitleBackground(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(OtherBroadcast.SYNC_SELF_DATE_NOTIFY); getActivity().registerReceiver(mUpdateReceiver, intentFilter); } private void initTitleBackground() { SkinUtils.Skin skin = SkinUtils.getSkin(requireContext()); int primaryColor = skin.getPrimaryColor(); findViewById(R.id.tool_bar).setBackground(getActivity().getResources().getDrawable(R.drawable.shape_main_bg)); } @Override public void onClick(View v) { if (!UiUtils.isNormalClick(v)) { return; } int id = v.getId(); switch (id) { case R.id.info_rl: // 我的资料 // startActivityForResult(new Intent(getActivity(), BasicInfoEditActivity.class), 1); startActivityForResult(new Intent(getActivity(), MyInfoActivity.class), 1); break; case R.id.my_monry: // 我的钱包 // if (!isVerified) { // checkVerified(); // return; // } startActivity(new Intent(getActivity(), WxPayBlance.class)); break; case R.id.my_space_rl: // 我的动态 Intent intent = new Intent(getActivity(), BusinessCircleActivity.class); intent.putExtra(AppConstant.EXTRA_CIRCLE_TYPE, AppConstant.CIRCLE_TYPE_PERSONAL_SPACE); startActivity(intent); break; case R.id.my_collection_rl: // 我的收藏 startActivity(new Intent(getActivity(), MyCollection.class)); break; case R.id.local_course_rl: // 我的课件 startActivity(new Intent(getActivity(), LocalCourseActivity.class)); break; case R.id.setting_rl: // 设置 startActivity(new Intent(getActivity(), SettingActivity.class)); break; case R.id.send_gMessage_rl: // 群发消息 startActivity(new Intent(getActivity(), SelectFriendsActivity.class)); break; case R.id.my_mall_rl: Intent intentWeb = new Intent(getActivity(), WebViewActivity.class); intentWeb.putExtra(WebViewActivity.EXTRA_URL, "http://www.vly166.com/index.php"); getActivity().startActivity(intentWeb); break; case R.id.my_sign_rl: if (!isVerified) { checkVerified(); return; } startActivity(new Intent(getActivity(), SignInActivity.class)); break; case R.id.receipt_payment: // 收付款 startActivity(new Intent(getActivity(), PaymentActivity.class)); break; case R.id.rlt_red_packet_record: //红包记录 startActivity(new Intent(getContext(), MyRedPacketActivity.class)); break; case R.id.rlt_real_name_auth: //实名认证 if (isVerified){ ToastsKt.toast(getActivity(),"已完成实名认证"); }else { checkVerified(); } break; case R.id.rlt_accessibility: startActivity(new Intent(getContext(), AccessibilityActivity.class)); break; } } private void checkVerified(){ new VerifiedDialogView(getActivity(), new VerifiedDialogView.OnVerifiedListener() { @Override public void click(String name, String id) { makeVerified(name, id); } }).show(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1 || resultCode == Activity.RESULT_OK) {// 个人资料更新了 updateUI(); } } /** * 用户的信息更改的时候,ui更新 */ private void updateUI() { if (mAvatarImg != null) { AvatarHelper.getInstance().displayAvatar(coreManager.getSelf().getUserId(), mAvatarImg, true); } isVerified = TextUtils.equals(PreferenceUtils.getString(getContext(), "isVerified"), "true"); if (mNickNameTv != null) { mNickNameTv.setText(coreManager.getSelf().getNickName()); } if (mPhoneNumTv != null) { String phoneNumber = coreManager.getSelf().getTelephone(); int mobilePrefix = PreferenceUtils.getInt(getContext(), Constants.AREA_CODE_KEY, -1); String sPrefix = String.valueOf(mobilePrefix); // 删除开头的区号, if (phoneNumber.startsWith(sPrefix)) { phoneNumber = phoneNumber.substring(sPrefix.length()); } mPhoneNumTv.setText(phoneNumber); } AsyncUtils.doAsync(this, t -> { Reporter.post("获取好友数量失败,", t); if (getActivity() != null) { getActivity().runOnUiThread(() -> { ToastUtil.showToast(requireContext(), R.string.tip_me_query_friend_failed); }); } }, ctx -> { long count = FriendDao.getInstance().getFriendsCount(coreManager.getSelf().getUserId()); ctx.uiThread(ref -> { TextView tvColleague = findViewById(R.id.tvFriend); tvColleague.setText(String.valueOf(count)); }); }); AsyncUtils.doAsync(this, t -> { Reporter.post("获取群组数量失败,", t); if (getActivity() != null) { getActivity().runOnUiThread(() -> { ToastUtil.showToast(requireContext(), R.string.tip_me_query_friend_failed); }); } }, ctx -> { long count = FriendDao.getInstance().getGroupsCount(coreManager.getSelf().getUserId()); ctx.uiThread(ref -> { TextView tvGroup = findViewById(R.id.tvGroup); tvGroup.setText(String.valueOf(count)); }); }); } private void makeVerified(String name, String id) { HashMap params = new HashMap(); params.put("access_token", coreManager.getSelfStatus().accessToken); params.put("realName", name); params.put("idcard", id); HttpUtils.get().url(coreManager.getConfig().MAKE_VERIFIED) // HttpUtils.get().url("http://eolinker.autu.live/server/index.php?g=Web&c=Mock&o=simple&projectID=3&uri=/user/signin/pack/info&time=1576392852&secret=44daefaa0c6c7b6f59976798f5996e7e&access_token=caaed74185504f6b835b7d90573c2aef") .params(params) .build() .execute(new BaseCallback(CertificationBean.class) { @Override public void onResponse(ObjectResult result) { if (result.getResultCode() == 1 && result.getData()!=null) { CertificationBean bean = result.getData(); if (bean.isCertification()){ isVerified = true; ToastUtil.showToast(getContext(), "实名认证已通过"); PreferenceUtils.putString(getContext(), "isVerified", "true"); }else { if ( TextUtils.isEmpty(result.getResultMsg())){ ToastUtil.showToast(getActivity(),"实名认证失败" ); }else { ToastUtil.showToast(getActivity(),result.getResultMsg() ); } } } } @Override public void onError(Call call, Exception e) { ToastUtil.showNetError(getActivity()); } }); } private void updateSelfData() { Map params = new HashMap<>(); params.put("access_token", coreManager.getSelfStatus().accessToken); HttpUtils.get().url(coreManager.getConfig().USER_GET_URL) .params(params) .build() .execute(new BaseCallback(User.class) { @Override public void onResponse(ObjectResult result) { if (result.getResultCode() == 1 && result.getData() != null) { User user = result.getData(); boolean updateSuccess = UserDao.getInstance().updateByUser(user); // 设置登陆用户信息 if (updateSuccess) { PreferenceUtils.putString(getContext(), "isVerified", String.valueOf(user.isCertification())); // 如果成功,保存User变量, coreManager.setSelf(user); // 通知MeFragment更新 updateUI(); // sendBroadcast(new Intent(OtherBroadcast.SYNC_SELF_DATE_NOTIFY)); } } } @Override public void onError(Call call, Exception e) { } }); } }