MeFragment.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393
  1. package com.liaobo.im.fragment;
  2. import android.app.Activity;
  3. import android.content.BroadcastReceiver;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.content.IntentFilter;
  7. import android.os.Bundle;
  8. import android.text.TextUtils;
  9. import android.view.View;
  10. import android.widget.ImageView;
  11. import android.widget.TextView;
  12. import com.liaobo.im.AppConstant;
  13. import com.liaobo.im.R;
  14. import com.liaobo.im.Reporter;
  15. import com.liaobo.im.bean.CertificationBean;
  16. import com.liaobo.im.bean.User;
  17. import com.liaobo.im.broadcast.OtherBroadcast;
  18. import com.liaobo.im.course.LocalCourseActivity;
  19. import com.liaobo.im.db.InternationalizationHelper;
  20. import com.liaobo.im.db.SQLiteHelper;
  21. import com.liaobo.im.db.dao.FriendDao;
  22. import com.liaobo.im.db.dao.UserDao;
  23. import com.liaobo.im.helper.AvatarHelper;
  24. import com.liaobo.im.pay.PaymentActivity;
  25. import com.liaobo.im.ui.MainActivity;
  26. import com.liaobo.im.ui.account.SignInActivity;
  27. import com.liaobo.im.ui.base.BaseChatActivity;
  28. import com.liaobo.im.ui.base.EasyFragment;
  29. import com.liaobo.im.ui.circle.BusinessCircleActivity;
  30. import com.liaobo.im.ui.contacts.RoomActivity;
  31. import com.liaobo.im.ui.dialog.VerifiedDialogView;
  32. import com.liaobo.im.ui.me.AccessibilityActivity;
  33. import com.liaobo.im.ui.me.BasicInfoEditActivity;
  34. import com.liaobo.im.ui.me.MyCollection;
  35. import com.liaobo.im.ui.me.MyInfoActivity;
  36. import com.liaobo.im.ui.me.SelectFriendsActivity;
  37. import com.liaobo.im.ui.me.SettingActivity;
  38. import com.liaobo.im.ui.me.redpacket.MyRedPacketActivity;
  39. import com.liaobo.im.ui.me.redpacket.WxPayBlance;
  40. import com.liaobo.im.ui.tool.SingleImagePreviewActivity;
  41. import com.liaobo.im.ui.tool.WebViewActivity;
  42. import com.liaobo.im.util.AsyncUtils;
  43. import com.liaobo.im.util.Constants;
  44. import com.liaobo.im.util.PreferenceUtils;
  45. import com.liaobo.im.util.SkinUtils;
  46. import com.liaobo.im.util.ToastUtil;
  47. import com.liaobo.im.util.UiUtils;
  48. import com.liaobo.im.xuan.xuanhttplibrary.okhttp.HttpUtils;
  49. import com.liaobo.im.xuan.xuanhttplibrary.okhttp.callback.BaseCallback;
  50. import com.liaobo.im.xuan.xuanhttplibrary.okhttp.result.ObjectResult;
  51. import org.jetbrains.anko.ToastsKt;
  52. import java.util.HashMap;
  53. import java.util.Map;
  54. import okhttp3.Call;
  55. public class MeFragment extends EasyFragment implements View.OnClickListener {
  56. private TextView mTvTitle;
  57. private ImageView mAvatarImg;
  58. private TextView mNickNameTv;
  59. private TextView mPhoneNumTv;
  60. private TextView skyTv, setTv;
  61. private boolean isVerified = false;
  62. private BroadcastReceiver mUpdateReceiver = new BroadcastReceiver() {
  63. @Override
  64. public void onReceive(Context context, Intent intent) {
  65. String action = intent.getAction();
  66. if (TextUtils.equals(action, OtherBroadcast.SYNC_SELF_DATE_NOTIFY)) {
  67. updateUI();
  68. }
  69. }
  70. };
  71. public MeFragment() {
  72. }
  73. @Override
  74. protected int inflateLayoutId() {
  75. return R.layout.fragment_me;
  76. }
  77. @Override
  78. protected void onActivityCreated(Bundle savedInstanceState, boolean createView) {
  79. if (createView) {
  80. initView();
  81. }
  82. }
  83. @Override
  84. public void onResume() {
  85. super.onResume();
  86. updateUI();
  87. updateSelfData();
  88. }
  89. @Override
  90. public void onDestroy() {
  91. super.onDestroy();
  92. getActivity().unregisterReceiver(mUpdateReceiver);
  93. }
  94. private void initView() {
  95. findViewById(R.id.iv_title_left).setVisibility(View.GONE);
  96. mTvTitle = (TextView) findViewById(R.id.tv_title_center);
  97. mTvTitle.setText(R.string.me_title);
  98. skyTv = (TextView) findViewById(R.id.MySky);
  99. setTv = (TextView) findViewById(R.id.SettingTv);
  100. skyTv.setText(getString(R.string.my_moments));
  101. setTv.setText(InternationalizationHelper.getString("JXSettingVC_Set"));
  102. findViewById(R.id.info_rl).setOnClickListener(this);
  103. findViewById(R.id.live_rl).setOnClickListener(this);
  104. findViewById(R.id.douyin_rl).setOnClickListener(this);
  105. findViewById(R.id.ll_more).setVisibility(View.GONE);
  106. findViewById(R.id.my_monry).setOnClickListener(this);
  107. findViewById(R.id.my_mall_rl).setOnClickListener(this);
  108. // 关闭红包功能,隐藏我的钱包
  109. if (coreManager.getConfig().displayRedPacket) { // 切换新旧两种ui对应我的页面是否显示视频会议、直播、短视频,
  110. findViewById(R.id.my_monry).setVisibility(View.GONE);
  111. }
  112. findViewById(R.id.my_space_rl).setOnClickListener(this);
  113. findViewById(R.id.my_collection_rl).setOnClickListener(this);
  114. findViewById(R.id.local_course_rl).setOnClickListener(this);
  115. findViewById(R.id.setting_rl).setOnClickListener(this);
  116. findViewById(R.id.send_gMessage_rl).setOnClickListener(this);
  117. findViewById(R.id.my_sign_rl).setOnClickListener(this);
  118. findViewById(R.id.receipt_payment).setOnClickListener(this);
  119. mAvatarImg = (ImageView) findViewById(R.id.avatar_img);
  120. mNickNameTv = (TextView) findViewById(R.id.nick_name_tv);
  121. mPhoneNumTv = (TextView) findViewById(R.id.phone_number_tv);
  122. String loginUserId = coreManager.getSelf().getUserId();
  123. AvatarHelper.getInstance().displayAvatar(coreManager.getSelf().getNickName(), loginUserId, mAvatarImg, false);
  124. mNickNameTv.setText(coreManager.getSelf().getNickName());
  125. mAvatarImg.setOnClickListener(new View.OnClickListener() {
  126. @Override
  127. public void onClick(View v) {
  128. Intent intent = new Intent(getActivity(), SingleImagePreviewActivity.class);
  129. intent.putExtra(AppConstant.EXTRA_IMAGE_URI, coreManager.getSelf().getUserId());
  130. startActivity(intent);
  131. }
  132. });
  133. findViewById(R.id.llFriend).setOnClickListener(v -> {
  134. MainActivity activity = (MainActivity) requireActivity();
  135. activity.changeTab(R.id.rb_tab_2);
  136. });
  137. findViewById(R.id.rlt_red_packet_record).setOnClickListener(this);
  138. findViewById(R.id.rlt_real_name_auth).setOnClickListener(this);
  139. findViewById(R.id.llGroup).setOnClickListener(v -> RoomActivity.start(requireContext()));
  140. findViewById(R.id.rlt_accessibility).setOnClickListener(this);
  141. initTitleBackground();
  142. IntentFilter intentFilter = new IntentFilter();
  143. intentFilter.addAction(OtherBroadcast.SYNC_SELF_DATE_NOTIFY);
  144. getActivity().registerReceiver(mUpdateReceiver, intentFilter);
  145. }
  146. private void initTitleBackground() {
  147. SkinUtils.Skin skin = SkinUtils.getSkin(requireContext());
  148. int primaryColor = skin.getPrimaryColor();
  149. findViewById(R.id.tool_bar).setBackground(getActivity().getResources().getDrawable(R.drawable.shape_main_bg));
  150. }
  151. @Override
  152. public void onClick(View v) {
  153. if (!UiUtils.isNormalClick(v)) {
  154. return;
  155. }
  156. int id = v.getId();
  157. switch (id) {
  158. case R.id.info_rl:
  159. // 我的资料
  160. // startActivityForResult(new Intent(getActivity(), BasicInfoEditActivity.class), 1);
  161. startActivityForResult(new Intent(getActivity(), MyInfoActivity.class), 1);
  162. break;
  163. case R.id.my_monry:
  164. // 我的钱包
  165. // if (!isVerified) {
  166. // checkVerified();
  167. // return;
  168. // }
  169. startActivity(new Intent(getActivity(), WxPayBlance.class));
  170. break;
  171. case R.id.my_space_rl:
  172. // 我的动态
  173. Intent intent = new Intent(getActivity(), BusinessCircleActivity.class);
  174. intent.putExtra(AppConstant.EXTRA_CIRCLE_TYPE, AppConstant.CIRCLE_TYPE_PERSONAL_SPACE);
  175. startActivity(intent);
  176. break;
  177. case R.id.my_collection_rl:
  178. // 我的收藏
  179. startActivity(new Intent(getActivity(), MyCollection.class));
  180. break;
  181. case R.id.local_course_rl:
  182. // 我的课件
  183. startActivity(new Intent(getActivity(), LocalCourseActivity.class));
  184. break;
  185. case R.id.setting_rl:
  186. // 设置
  187. startActivity(new Intent(getActivity(), SettingActivity.class));
  188. break;
  189. case R.id.send_gMessage_rl:
  190. // 群发消息
  191. startActivity(new Intent(getActivity(), SelectFriendsActivity.class));
  192. break;
  193. case R.id.my_mall_rl:
  194. Intent intentWeb = new Intent(getActivity(), WebViewActivity.class);
  195. intentWeb.putExtra(WebViewActivity.EXTRA_URL, "http://www.vly166.com/index.php");
  196. getActivity().startActivity(intentWeb);
  197. break;
  198. case R.id.my_sign_rl:
  199. if (!isVerified) {
  200. checkVerified();
  201. return;
  202. }
  203. startActivity(new Intent(getActivity(), SignInActivity.class));
  204. break;
  205. case R.id.receipt_payment:
  206. // 收付款
  207. startActivity(new Intent(getActivity(), PaymentActivity.class));
  208. break;
  209. case R.id.rlt_red_packet_record:
  210. //红包记录
  211. startActivity(new Intent(getContext(), MyRedPacketActivity.class));
  212. break;
  213. case R.id.rlt_real_name_auth:
  214. //实名认证
  215. if (isVerified){
  216. ToastsKt.toast(getActivity(),"已完成实名认证");
  217. }else {
  218. checkVerified();
  219. }
  220. break;
  221. case R.id.rlt_accessibility:
  222. startActivity(new Intent(getContext(), AccessibilityActivity.class));
  223. break;
  224. }
  225. }
  226. private void checkVerified(){
  227. new VerifiedDialogView(getActivity(), new VerifiedDialogView.OnVerifiedListener() {
  228. @Override
  229. public void click(String name, String id) {
  230. makeVerified(name, id);
  231. }
  232. }).show();
  233. }
  234. @Override
  235. public void onActivityResult(int requestCode, int resultCode, Intent data) {
  236. super.onActivityResult(requestCode, resultCode, data);
  237. if (requestCode == 1 || resultCode == Activity.RESULT_OK) {// 个人资料更新了
  238. updateUI();
  239. }
  240. }
  241. /**
  242. * 用户的信息更改的时候,ui更新
  243. */
  244. private void updateUI() {
  245. if (mAvatarImg != null) {
  246. AvatarHelper.getInstance().displayAvatar(coreManager.getSelf().getUserId(), mAvatarImg, true);
  247. }
  248. isVerified = TextUtils.equals(PreferenceUtils.getString(getContext(), "isVerified"), "true");
  249. if (mNickNameTv != null) {
  250. mNickNameTv.setText(coreManager.getSelf().getNickName());
  251. }
  252. if (mPhoneNumTv != null) {
  253. String phoneNumber = coreManager.getSelf().getTelephone();
  254. int mobilePrefix = PreferenceUtils.getInt(getContext(), Constants.AREA_CODE_KEY, -1);
  255. String sPrefix = String.valueOf(mobilePrefix);
  256. // 删除开头的区号,
  257. if (phoneNumber.startsWith(sPrefix)) {
  258. phoneNumber = phoneNumber.substring(sPrefix.length());
  259. }
  260. mPhoneNumTv.setText(phoneNumber);
  261. }
  262. AsyncUtils.doAsync(this, t -> {
  263. Reporter.post("获取好友数量失败,", t);
  264. if (getActivity() != null) {
  265. getActivity().runOnUiThread(() -> {
  266. ToastUtil.showToast(requireContext(), R.string.tip_me_query_friend_failed);
  267. });
  268. }
  269. }, ctx -> {
  270. long count = FriendDao.getInstance().getFriendsCount(coreManager.getSelf().getUserId());
  271. ctx.uiThread(ref -> {
  272. TextView tvColleague = findViewById(R.id.tvFriend);
  273. tvColleague.setText(String.valueOf(count));
  274. });
  275. });
  276. AsyncUtils.doAsync(this, t -> {
  277. Reporter.post("获取群组数量失败,", t);
  278. if (getActivity() != null) {
  279. getActivity().runOnUiThread(() -> {
  280. ToastUtil.showToast(requireContext(), R.string.tip_me_query_friend_failed);
  281. });
  282. }
  283. }, ctx -> {
  284. long count = FriendDao.getInstance().getGroupsCount(coreManager.getSelf().getUserId());
  285. ctx.uiThread(ref -> {
  286. TextView tvGroup = findViewById(R.id.tvGroup);
  287. tvGroup.setText(String.valueOf(count));
  288. });
  289. });
  290. }
  291. private void makeVerified(String name, String id) {
  292. HashMap<String, String> params = new HashMap<String, String>();
  293. params.put("access_token", coreManager.getSelfStatus().accessToken);
  294. params.put("realName", name);
  295. params.put("idcard", id);
  296. HttpUtils.get().url(coreManager.getConfig().MAKE_VERIFIED)
  297. // 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")
  298. .params(params)
  299. .build()
  300. .execute(new BaseCallback<CertificationBean>(CertificationBean.class) {
  301. @Override
  302. public void onResponse(ObjectResult<CertificationBean> result) {
  303. if (result.getResultCode() == 1 && result.getData()!=null) {
  304. CertificationBean bean = result.getData();
  305. if (bean.isCertification()){
  306. isVerified = true;
  307. ToastUtil.showToast(getContext(), "实名认证已通过");
  308. PreferenceUtils.putString(getContext(), "isVerified", "true");
  309. }else {
  310. if ( TextUtils.isEmpty(result.getResultMsg())){
  311. ToastUtil.showToast(getActivity(),"实名认证失败" );
  312. }else {
  313. ToastUtil.showToast(getActivity(),result.getResultMsg() );
  314. }
  315. }
  316. }
  317. }
  318. @Override
  319. public void onError(Call call, Exception e) {
  320. ToastUtil.showNetError(getActivity());
  321. }
  322. });
  323. }
  324. private void updateSelfData() {
  325. Map<String, String> params = new HashMap<>();
  326. params.put("access_token", coreManager.getSelfStatus().accessToken);
  327. HttpUtils.get().url(coreManager.getConfig().USER_GET_URL)
  328. .params(params)
  329. .build()
  330. .execute(new BaseCallback<User>(User.class) {
  331. @Override
  332. public void onResponse(ObjectResult<User> result) {
  333. if (result.getResultCode() == 1 && result.getData() != null) {
  334. User user = result.getData();
  335. boolean updateSuccess = UserDao.getInstance().updateByUser(user);
  336. // 设置登陆用户信息
  337. if (updateSuccess) {
  338. PreferenceUtils.putString(getContext(), "isVerified", String.valueOf(user.isCertification()));
  339. // 如果成功,保存User变量,
  340. coreManager.setSelf(user);
  341. // 通知MeFragment更新
  342. updateUI();
  343. // sendBroadcast(new Intent(OtherBroadcast.SYNC_SELF_DATE_NOTIFY));
  344. }
  345. }
  346. }
  347. @Override
  348. public void onError(Call call, Exception e) {
  349. }
  350. });
  351. }
  352. }