Commit a9549fa8 by 刘鹏

Merge branch 'fix/lp_4.3.92' into 'release'

Fix/lp 4.3.92

See merge request app_android_lib/YDL-Component!28
parents 4040f11d f527082a
......@@ -8,7 +8,7 @@ ext {
"m-confide" : "0.0.49.74",
"m-consultant" : "0.0.60.25",
"m-fm" : "0.0.30.08",
"m-user" : "0.0.62.09",
"m-user" : "0.0.62.10",
"m-home" : "0.0.23.48",
"m-im" : "0.0.21.44",
"m-dynamic" : "0.0.7.73",
......@@ -93,7 +93,7 @@ ext {
"m-confide" : "0.0.49.74",
"m-consultant" : "0.0.60.25",
"m-fm" : "0.0.30.08",
"m-user" : "0.0.62.09",
"m-user" : "0.0.62.10",
"m-home" : "0.0.23.48",
"m-im" : "0.0.21.44",
"m-dynamic" : "0.0.7.73",
......
package com.yidianling.user.mine;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import androidx.core.content.ContextCompat;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.cardview.widget.CardView;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.ydl.course.api.ICourseService;
import com.ydl.webview.H5Params;
import com.ydl.webview.NewH5Activity;
import com.ydl.ydl_image.module.GlideApp;
import com.ydl.ydlcommon.base.BaseFragment;
import com.ydl.ydlcommon.base.config.HttpConfig;
import com.ydl.ydlcommon.data.PlatformRamImpl;
import com.ydl.ydlcommon.data.http.BaseCommand;
import com.ydl.ydlcommon.data.http.RxUtils;
import com.ydl.ydlcommon.data.http.ThrowableConsumer;
import com.ydl.ydlcommon.modular.ModularServiceManager;
import com.ydl.ydlcommon.utils.BuryPointUtils;
import com.ydl.ydlcommon.utils.Utils;
import com.ydl.ydlcommon.utils.YdlBuryPointUtil;
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils;
import com.ydl.ydlcommon.view.JumpTextView;
import com.ydl.ydlcommon.view.dialog.YDLShareDialog;
import com.ydl.ydlcommon.view.widgets.BorderCircleImageView;
import com.yidianling.consultant.api.IConsultantService;
import com.yidianling.dynamic.api.IDynamicService;
import com.yidianling.im.api.service.IImService;
import com.yidianling.im.message.param.MsgListParam;
import com.yidianling.user.BuildConfig;
import com.yidianling.user.R;
import com.yidianling.user.UserHelper;
import com.yidianling.user.api.bean.UserResponseBean;
import com.yidianling.user.api.event.RefreshRecentContactListEvent;
import com.yidianling.user.api.service.IAppService;
import com.yidianling.user.mine.data.AppDataManager;
import com.yidianling.user.mine.http.MineHttpImpl;
import com.yidianling.user.route.UserIn;
import com.yidianling.user.safePrivate.PrivacyActivity;
import com.yidianling.user.ui.login.OneKeyLoginHelp;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.text.SimpleDateFormat;
import java.util.Date;
import de.greenrobot.event.EventBus;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import static com.yidianling.user.constants.UserBIConstants.UserMyPageEvent.YDL_USER_MY_BOTTOM_TYPE_CLICK;
import static com.yidianling.user.constants.UserBIConstants.UserMyPageEvent.YDL_USER_MY_MIDDLE_TYPE_CLICK;
import static com.yidianling.user.constants.UserBIConstants.UserMyPageEvent.YDL_USER_MY_PAGE_STAY_VISIT;
import static com.yidianling.user.constants.UserBIConstants.UserMyPageEvent.YDL_USER_MY_PAGE_VISIT;
import static com.yidianling.user.constants.UserBIConstants.UserMyPageEvent.YDL_USER_MY_TOP_TYPE_CLICK;
/**
* 我的Tab
* Created by softrice on 15/11/23.
*/
public class MineFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener, View.OnClickListener {
private Activity mActivity;
String share_title = "壹点灵-专业心理咨询平台";
String share_context = "帮您解决各种恋爱情感、婚姻、生活烦恼";
String share_head = "http://static.ydlcdn.com/v1/images/logo320.png";
String share_url = "http://m.yidianling.com/app";
UserResponseBean.UserInfo userInfoData;
ImageView img_bg;
BorderCircleImageView img_head;
TextView text_userName;
JumpTextView jtv_account_privacy;
JumpTextView jtv_account_help;
JumpTextView jtv_about_us;
JumpTextView jtv_account_enter;
TextView tishi;
private TextView mAttentionTv;
private CardView mDurationCardView;
private TextView mTendNumTv;
private TextView mDurationTv;
private TextView mFansNumTv;
private View mNewCoupon;
private ImageView mLogoView;
private TextView mTestRecordNumTv;
//debug包下切换环境的按钮
private Button mChangeBtn;
/**
* debug包下任意门入口
* 可在这个按钮点击事件中去到任何你想去的地方
*/
private JumpTextView jtv_test;
private SwipeRefreshLayout swipeRefreshLayout;
private long startTime=0 ;
private long endTime=0;
@Override
public int layoutResId() {
return R.layout.user_mine_fragment_mine;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivity = requireActivity();
}
@Override
public void initDataAndEvent() {
if (!EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().register(this);
}
swipeRefreshLayout = getRootView().findViewById(R.id.swipe_refresh_layout);
swipeRefreshLayout.setColorSchemeColors(ContextCompat.getColor(requireContext(), R.color.platform_main_theme));
swipeRefreshLayout.setProgressViewOffset(false, 0, 200);
img_bg = getRootView().findViewById(R.id.img_bg);
img_head = getRootView().findViewById(R.id.img_head);
text_userName = getRootView().findViewById(R.id.text_userName);
mDurationTv = getRootView().findViewById(R.id.tv_duration);
mDurationCardView = getRootView().findViewById(R.id.cv_duration);
mAttentionTv = getRootView().findViewById(R.id.tv_attention_num);
mChangeBtn = getRootView().findViewById(R.id.btn_change);
mTendNumTv = getRootView().findViewById(R.id.tv_trend_num);
mFansNumTv = getRootView().findViewById(R.id.tv_fans_tv);
mTestRecordNumTv = getRootView().findViewById(R.id.tv_test_record_num);
jtv_account_privacy = getRootView().findViewById(R.id.jtv_account_privacy);
jtv_account_help = getRootView().findViewById(R.id.jtv_account_help);
jtv_about_us = getRootView().findViewById(R.id.jtv_about_us);
jtv_account_enter = getRootView().findViewById(R.id.jtv_account_enter);
jtv_test = getRootView().findViewById(R.id.jtv_test);
tishi = getRootView().findViewById(R.id.tishi);
mNewCoupon = getRootView().findViewById(R.id.view_new_coupon);
mLogoView = getRootView().findViewById(R.id.iv_mine_logo);
img_head.setOnClickListener(this);
mChangeBtn.setOnClickListener(this);
jtv_account_privacy.setOnClickListener(this);
jtv_account_help.setOnClickListener(this);
jtv_about_us.setOnClickListener(this);
jtv_account_enter.setOnClickListener(this);
mDurationCardView.setOnClickListener(this);
text_userName.setOnClickListener(this);
jtv_test.setOnClickListener(this);
swipeRefreshLayout.setOnRefreshListener(this);
getRootView().findViewById(R.id.ll_trade_order).setOnClickListener(this);
getRootView().findViewById(R.id.jtv_introduce).setOnClickListener(this);
getRootView().findViewById(R.id.iv_edit_info).setOnClickListener(this);
//分享
getRootView().findViewById(R.id.iv_share).setOnClickListener(this);
getRootView().findViewById(R.id.ll_my_courses).setOnClickListener(this);
getRootView().findViewById(R.id.ll_red_packet).setOnClickListener(this);
getRootView().findViewById(R.id.ll_call_order).setOnClickListener(this);
getRootView().findViewById(R.id.ll_account).setOnClickListener(this);
getRootView().findViewById(R.id.ll_guanzhu).setOnClickListener(this);
getRootView().findViewById(R.id.ll_my_trends).setOnClickListener(this);
getRootView().findViewById(R.id.ll_fans).setOnClickListener(this);
getRootView().findViewById(R.id.ll_my_test_log).setOnClickListener(this);
//客服
getRootView().findViewById(R.id.ll_service).setOnClickListener(this);
init();
GlideApp.with(this).load("https://static.yidianling.com/banner/bottombanner@2x.png").into(mLogoView);
// jtv_test.setVisibility(BuildConfig.DEBUG ? View.VISIBLE : View.GONE);
refreshCouponData();
}
@Override
public void initDataAndEventLazy() {
}
void init() {
if (null != PlatformRamImpl.Companion.getInstance().getGlobalInfo() && null != PlatformRamImpl.Companion.getInstance().getGlobalInfo().info && null != PlatformRamImpl.Companion.getInstance().getGlobalInfo().info.app_share) {
share_title = PlatformRamImpl.Companion.getInstance().getGlobalInfo().info.app_share.title;
share_context = PlatformRamImpl.Companion.getInstance().getGlobalInfo().info.app_share.descrip;
share_head = PlatformRamImpl.Companion.getInstance().getGlobalInfo().info.app_share.cover_url;
share_url = PlatformRamImpl.Companion.getInstance().getGlobalInfo().info.app_share.dl_url;
}
}
@Override
public void onResume() {
super.onResume();
updateUI();
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && isResumed()) {
startTime=System.currentTimeMillis();
ActionCountUtils.Companion.count(YDL_USER_MY_PAGE_VISIT);
showConsultAssistantDialog();
} else {
if (startTime!=0L){
endTime=System.currentTimeMillis();
ActionCountUtils.Companion.count(YDL_USER_MY_PAGE_STAY_VISIT,String.valueOf(endTime-startTime));
}
hideConsultAssistantDialog();
}
if (isVisibleToUser && isResumed()) {
onResume();
}
}
@Override
public void onPause() {
super.onPause();
if (startTime!=0L){
endTime=System.currentTimeMillis();
ActionCountUtils.Companion.count(YDL_USER_MY_PAGE_STAY_VISIT,String.valueOf(endTime-startTime));
}
}
private void showConsultAssistantDialog() {
ActionCountUtils.Companion.count("daoyi_advertisement_page|daoyi_advertisement_visit","4");
ModularServiceManager.INSTANCE.provide(IConsultantService.class).showConsultAssistantMineDialog(getActivity());
}
private void hideConsultAssistantDialog() {
ModularServiceManager.INSTANCE.provide(IConsultantService.class).hideConsultAssistantMineDialog();
}
/**
* DEBUG包中:增加切换环境功能,线上包会自动隐藏此按钮
*/
private void debugChangeEnvironment() {
//debug包、未登录前提下才能切换环境
if (BuildConfig.DEBUG && !UserHelper.INSTANCE.isLogin()) {
mChangeBtn.setVisibility(View.VISIBLE);
} else {
mChangeBtn.setVisibility(View.GONE);
}
}
@Override
public void onRefresh() {
updateUserInfo();
refreshCouponData();
}
/**
* 更新优惠券信息
*/
@SuppressLint("CheckResult")
private void refreshCouponData() {
UserResponseBean userInfo = UserHelper.INSTANCE.getUserInfo();
//获取用户信息
if (userInfo == null) {
return;
}
MineHttpImpl.Companion.getInstance().getNewCoupon(new BaseCommand())
.compose(RxUtils.netCheck())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(response -> {
if (response.data != null) {
if (response.data.count > 0) {
mNewCoupon.setVisibility(View.VISIBLE);
} else {
mNewCoupon.setVisibility(View.INVISIBLE);
}
}
}, throwable -> {
});
}
/**
* 更新用户信息
*/
@SuppressLint("CheckResult")
private void updateUserInfo() {
UserResponseBean userInfo = UserHelper.INSTANCE.getUserInfo();
//获取用户信息
if (userInfo == null) {
swipeRefreshLayout.setRefreshing(false);
return;
}
if (userInfo.getUid() == null || userInfo.getAccessToken() == null) {
swipeRefreshLayout.setRefreshing(false);
return;
}
AppDataManager.INSTANCE.getHttp().getUserInfo()
.compose(RxUtils.resultJavaData())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(response -> {
swipeRefreshLayout.setRefreshing(false);
try {
//此处后端返回信息,只有userinfo,其它数据为空,切勿整体赋值
UserHelper.INSTANCE.getUserInfo().setUserInfo(response.getUserInfo());
updateUI();
} catch (Exception e) {
}
}, new ThrowableConsumer() {
@Override
public void accept(@NotNull String msg) {
swipeRefreshLayout.setRefreshing(false);
}
});
}
/**
* 获取用户信息成功后调用此方法更新 ui
*/
public void updateUI() {
initdata();
if (AppDataManager.INSTANCE.getLocal().hasUpdate()) {
jtv_about_us.setLeftRedDotVisibility(View.VISIBLE);
} else {
jtv_about_us.setLeftRedDotVisibility(View.GONE);
}
//切换环境按钮逻辑
debugChangeEnvironment();
}
private void initdata() {
if (UserHelper.INSTANCE.isLogin()) {
setUserInfo(UserHelper.INSTANCE.getUserInfo().getUserInfo());
} else {
text_userName.setText("未登录");
mDurationTv.setText("点击登录/注册");
img_head.setImageResource(R.drawable.platform_head_place_hold_pic);
mAttentionTv.setText("0");
mTendNumTv.setText("0");
mFansNumTv.setText("0");
mTestRecordNumTv.setText("0");
mNewCoupon.setVisibility(View.INVISIBLE);
}
}
private void setUserInfo(UserResponseBean.UserInfo userInfo) {
this.userInfoData = userInfo;
if (userInfo == null) {
return;
}
String nick_name = userInfo.getNick_name();
if (!TextUtils.isEmpty(nick_name)) {
text_userName.setText(nick_name);
} else {
text_userName.setText("昵称未设置");
}
mAttentionTv.setText(String.valueOf(userInfo.getAttentionNum()));
mTendNumTv.setText(String.valueOf(userInfo.getTrendNum()));
mFansNumTv.setText(String.valueOf(userInfo.getFansNum()));
mTestRecordNumTv.setText(String.valueOf(userInfo.getTestRecordNum()));
mDurationTv.setText(userInfo.getRegistTime());
mDurationCardView.setVisibility(View.VISIBLE);
if (userInfo.getHead() != null) {
GlideApp.with(this)
.load(userInfo.getHead())
.dontAnimate()
.placeholder(R.drawable.platform_head_place_hold_pic)
.error(R.drawable.platform_head_place_hold_pic)
.into(img_head);
}
}
@Override
public void onClick(View v) {
int id = v.getId();//切换环境逻辑按钮
if (id == R.id.text_userName || id == R.id.cv_duration) {
OneKeyLoginHelp.INSTANCE.startLoginByStatus(mActivity,true);
} else if (id == R.id.iv_edit_info) {
//账号设置
ActionCountUtils.Companion.count(YDL_USER_MY_BOTTOM_TYPE_CLICK,"设置");
//点击消息 未登录请先登录
if (!OneKeyLoginHelp.INSTANCE.startLoginByStatus(mActivity,true)) {
return;
}
startActivity(new Intent(getActivity(), AccountSettingActivity.class));
} else if (id == R.id.img_head) {//头像
if (Utils.isFastClick()) {
return;
}
if (!OneKeyLoginHelp.INSTANCE.startLoginByStatus(mActivity,true)) {
return;
}
ActionCountUtils.Companion.count(YDL_USER_MY_TOP_TYPE_CLICK,"头像");
if (userInfoData != null) {
Intent intentuser = new Intent(getActivity(), PersonalInfoActivity.class);
startActivity(intentuser);
}
} else if (id == R.id.ll_account) {//账户余额
ActionCountUtils.Companion.count(YDL_USER_MY_MIDDLE_TYPE_CLICK,"账号余额");
if (!OneKeyLoginHelp.INSTANCE.startLoginByStatus(mActivity,true)) {
return;
}
startActivity(new Intent(getActivity(), AccountHistoryActivity.class));
} else if (id == R.id.ll_red_packet) {//我的红包
ActionCountUtils.Companion.count(YDL_USER_MY_MIDDLE_TYPE_CLICK,"红包卡券");
if (!OneKeyLoginHelp.INSTANCE.startLoginByStatus(mActivity,true)) {
return;
}
clearCouponStatus();
ModularServiceManager.INSTANCE.provide(IAppService.class).myRedPockIntent(mActivity);
} else if (id == R.id.ll_fans) {//粉丝
ActionCountUtils.Companion.count(YDL_USER_MY_TOP_TYPE_CLICK,"我的粉丝");
if (!OneKeyLoginHelp.INSTANCE.startLoginByStatus(mActivity,true)) {
return;
}
H5Params h5Params = new H5Params(HttpConfig.Companion.getH5_URL() + "mine/fans-list", null);
NewH5Activity.start(getActivity(), h5Params);
} else if (id == R.id.ll_guanzhu) {//我关注的
ActionCountUtils.Companion.count(YDL_USER_MY_TOP_TYPE_CLICK,"我的关注");
if (!OneKeyLoginHelp.INSTANCE.startLoginByStatus(mActivity,true)) {
return;
}
H5Params h5Params1 = new H5Params(HttpConfig.Companion.getH5_URL() + "mine/follow-per", null);
NewH5Activity.start(getActivity(), h5Params1);
} else if (id == R.id.ll_my_trends) {
ActionCountUtils.Companion.count(YDL_USER_MY_TOP_TYPE_CLICK,"我的动态");
if (!OneKeyLoginHelp.INSTANCE.startLoginByStatus(mActivity,true)) {
return;
}
BuryPointUtils.getInstance().createMap()
.put("mine_name", "我的动态")
.burryPoint("mine");
try {
Intent intentm = ModularServiceManager.INSTANCE.provide(IDynamicService.class).getMyTrendsActivityIntent(mActivity);
startActivity(intentm);
} catch (Exception e) {
}
} else if (id == R.id.jtv_account_privacy) {// 未登录请先登录
ActionCountUtils.Companion.count(YDL_USER_MY_BOTTOM_TYPE_CLICK,"帮助中心");
if (!OneKeyLoginHelp.INSTANCE.startLoginByStatus(mActivity,true)) {
return;
}
UserHelper.INSTANCE.getUsetSetting().setMeSafePrivateIsClick(true);
jtv_account_privacy.setLeftRedDotVisibility(View.GONE);
startActivity(new Intent(getActivity(), PrivacyActivity.class));
} else if (id == R.id.ll_trade_order) {//预约
ActionCountUtils.Companion.count(YDL_USER_MY_MIDDLE_TYPE_CLICK,"预约订单");
if (!OneKeyLoginHelp.INSTANCE.startLoginByStatus(mActivity,true)) {
return;
}
BuryPointUtils.getInstance().createMap()
.put("mine_name", "预约订单")
.burryPoint("mine");
H5Params h5Params3 = new H5Params(HttpConfig.Companion.getMH5_URL() + "wb/user/order/list?needOrderHelperAlert=1", null);
NewH5Activity.start(getActivity(), h5Params3);
} else if (id == R.id.ll_my_courses) {//我的课程
ActionCountUtils.Companion.count(YDL_USER_MY_MIDDLE_TYPE_CLICK,"我的课程");
if (!OneKeyLoginHelp.INSTANCE.startLoginByStatus(mActivity,true)) {
return;
}
ModularServiceManager.INSTANCE.provide(ICourseService.class).startMyCourseActivity(mActivity);
} else if (id == R.id.ll_call_order) {//倾诉
ActionCountUtils.Companion.count(YDL_USER_MY_MIDDLE_TYPE_CLICK,"倾诉记录");
if (!OneKeyLoginHelp.INSTANCE.startLoginByStatus(mActivity,true)) {
return;
}
BuryPointUtils.getInstance().createMap()
.put("mine_name", "倾诉记录")
.burryPoint("mine");
H5Params h5Paramsqing = new H5Params(HttpConfig.Companion.getYDL_H5() + "confideOrderList", null);
NewH5Activity.start(getActivity(), h5Paramsqing);
} else if (id == R.id.jtv_account_help) {//帮助
ActionCountUtils.Companion.count(YDL_USER_MY_BOTTOM_TYPE_CLICK,"帮助中心");
H5Params params = new H5Params(HttpConfig.Companion.getH5_URL() + "help/", "");
params.setShowMenu(true);
NewH5Activity.start(getActivity(), params);
} else if (id == R.id.jtv_account_enter) {//专家入驻
ActionCountUtils.Companion.count(YDL_USER_MY_BOTTOM_TYPE_CLICK,"专家入驻");
if (PlatformRamImpl.Companion.getInstance().getGlobalInfo() != null &&
PlatformRamImpl.Companion.getInstance().getGlobalInfo().info != null &&
!TextUtils.isEmpty(PlatformRamImpl.Companion.getInstance().getGlobalInfo().info.join_doctor_url)) {
H5Params h5Paramzhuan = new H5Params(PlatformRamImpl.Companion.getInstance().getGlobalInfo().info.join_doctor_url, null);
NewH5Activity.start(getActivity(), h5Paramzhuan);
} else {
H5Params h5Paramzhuan = new H5Params("http://m.yidianling.com/enter?", null);
NewH5Activity.start(getActivity(), h5Paramzhuan);
}
} else if (id == R.id.ll_my_test_log) {//测试记录
ActionCountUtils.Companion.count(YDL_USER_MY_TOP_TYPE_CLICK,"测试记录");
if (!OneKeyLoginHelp.INSTANCE.startLoginByStatus(mActivity,true)) {
return;
}
BuryPointUtils.getInstance().createMap()
.put("mine_name", "测试记录")
.burryPoint("mine");
H5Params testParam = new H5Params(HttpConfig.Companion.getMH5_URL() + "ceshi/my-test", "测试记录");
NewH5Activity.start(getActivity(), testParam);
} else if (id == R.id.iv_share) {//分享
ActionCountUtils.Companion.count(YDL_USER_MY_BOTTOM_TYPE_CLICK,"分享");
share();
} else if (id == R.id.jtv_about_us) {
startActivity(new Intent(getActivity(), AboutUsActivity.class));
} else if (id == R.id.ll_service) {
if (!OneKeyLoginHelp.INSTANCE.startLoginByStatus(mActivity,true)) {
return;
}
UserIn.INSTANCE.getImService().startP2PXiaoYi(mActivity);
} else if (id == R.id.jtv_introduce) {
ActionCountUtils.Companion.count(YDL_USER_MY_BOTTOM_TYPE_CLICK,"壹点灵介绍");
H5Params params1 = new H5Params("https://m.yidianling.com/about", "网站介绍");
NewH5Activity.start(getActivity(), params1);
}else if (id == R.id.btn_change) {
} else if (id == R.id.jtv_test) {//debug下任意门入口
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.applyPattern("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
jtv_test.postDelayed(new Runnable() {
@Override
public void run() {
YdlBuryPointUtil.sendPv("PvEvent");
}
}, 300);
jtv_test.postDelayed(new Runnable() {
@Override
public void run() {
YdlBuryPointUtil.sendClick("ClickEvent");
}
}, 500);
}
}
@SuppressLint("CheckResult")
private void clearCouponStatus() {
MineHttpImpl.Companion.getInstance().getSysMsgList(new MsgListParam(1 + "", 1))
.compose(RxUtils.netCheck())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(response -> {
if (response != null && response.code == 0) {
mNewCoupon.setVisibility(View.INVISIBLE);
}
}, throwable -> {
});
}
private void share() {
YDLShareDialog dialog = YDLShareDialog.Companion.style4(mActivity, share_title, share_url, share_context, share_head);
dialog.show(getActivity().getFragmentManager(), "lose");
}
/**
* 收到照片选取事件
*/
public void onEventBackgroundThread(UserResponseBean event) {
if (event != null && event.getUserInfo() != null) {
userInfoData = event.getUserInfo();
}
}
public void onEvent(RefreshRecentContactListEvent event) {
refreshCouponData();
}
public void onEvent(UserChangeEvent event) {
boolean change_flag = event.isChange_flag();
if (change_flag) {
initdata();
try {
ModularServiceManager.INSTANCE.provide(IImService.class).updateUserHead(UserHelper.INSTANCE.getUserInfo().getUserInfo().getHead());
} catch (Exception e) {
}
}
}
}
\ No newline at end of file
package com.yidianling.user.mine
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.text.TextUtils
import android.view.View
import androidx.core.content.ContextCompat
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.ydl.course.api.ICourseService
import com.ydl.webview.H5Params
import com.ydl.webview.NewH5Activity
import com.ydl.ydl_image.module.GlideApp
import com.ydl.ydlcommon.base.BaseFragment
import com.ydl.ydlcommon.base.config.HttpConfig.Companion.H5_URL
import com.ydl.ydlcommon.base.config.HttpConfig.Companion.MH5_URL
import com.ydl.ydlcommon.base.config.HttpConfig.Companion.YDL_H5
import com.ydl.ydlcommon.data.PlatformRamImpl
import com.ydl.ydlcommon.data.http.BaseCommand
import com.ydl.ydlcommon.data.http.BaseResponse
import com.ydl.ydlcommon.data.http.RxUtils.netCheck
import com.ydl.ydlcommon.data.http.RxUtils.resultJavaData
import com.ydl.ydlcommon.data.http.ThrowableConsumer
import com.ydl.ydlcommon.modular.ModularServiceManager.provide
import com.ydl.ydlcommon.utils.BuryPointUtils
import com.ydl.ydlcommon.utils.Utils
import com.ydl.ydlcommon.utils.YdlBuryPointUtil
import com.ydl.ydlcommon.utils.actionutil.ActionCountUtils.Companion.count
import com.ydl.ydlcommon.view.dialog.YDLShareDialog.Companion.style4
import com.yidianling.consultant.api.IConsultantService
import com.yidianling.dynamic.api.IDynamicService
import com.yidianling.im.api.service.IImService
import com.yidianling.im.message.param.MsgListParam
import com.yidianling.user.BuildConfig
import com.yidianling.user.R
import com.yidianling.user.UserHelper.getUserInfo
import com.yidianling.user.UserHelper.getUsetSetting
import com.yidianling.user.UserHelper.isLogin
import com.yidianling.user.api.bean.UserResponseBean
import com.yidianling.user.api.event.RefreshRecentContactListEvent
import com.yidianling.user.api.service.IAppService
import com.yidianling.user.constants.UserBIConstants.UserMyPageEvent
import com.yidianling.user.mine.bean.CouponNumBean
import com.yidianling.user.mine.data.AppDataManager.getHttp
import com.yidianling.user.mine.data.AppDataManager.getLocal
import com.yidianling.user.mine.http.MineHttpImpl
import com.yidianling.user.route.UserIn.getImService
import com.yidianling.user.safePrivate.PrivacyActivity
import com.yidianling.user.ui.login.OneKeyLoginHelp.startLoginByStatus
import de.greenrobot.event.EventBus
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.functions.Consumer
import io.reactivex.schedulers.Schedulers
import kotlinx.android.synthetic.main.user_mine_fragment_mine.*
import java.text.SimpleDateFormat
import java.util.*
/**
* 我的Tab
* Created by softrice on 15/11/23.
*/
class MineFragment : BaseFragment(), SwipeRefreshLayout.OnRefreshListener, View.OnClickListener {
private var mActivity: Activity? = null
var share_title = "壹点灵-专业心理咨询平台"
var share_context = "帮您解决各种恋爱情感、婚姻、生活烦恼"
var share_head = "http://static.ydlcdn.com/v1/images/logo320.png"
var share_url = "http://m.yidianling.com/app"
var userInfoData: UserResponseBean.UserInfo? = null
private var startTime: Long = 0
private var endTime: Long = 0
override fun layoutResId(): Int {
return R.layout.user_mine_fragment_mine
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mActivity = requireActivity()
}
override fun initDataAndEvent() {
if (!EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().register(this)
}
swipe_refresh_layout?.setColorSchemeColors(
ContextCompat.getColor(
requireContext(),
R.color.platform_main_theme
)
)
swipe_refresh_layout.setProgressViewOffset(false, 0, 200)
img_head.setOnClickListener(this)
//debug包下切换环境的按钮
btn_change.setOnClickListener(this)
jtv_account_privacy.setOnClickListener(this)
jtv_account_help.setOnClickListener(this)
jtv_about_us.setOnClickListener(this)
jtv_account_enter.setOnClickListener(this)
cv_duration.setOnClickListener(this)
text_userName.setOnClickListener(this)
jtv_test.setOnClickListener(this)
swipe_refresh_layout.setOnRefreshListener(this)
rootView.findViewById<View>(R.id.ll_trade_order).setOnClickListener(this)
rootView.findViewById<View>(R.id.jtv_introduce).setOnClickListener(this)
rootView.findViewById<View>(R.id.iv_edit_info).setOnClickListener(this)
//分享
rootView.findViewById<View>(R.id.iv_share).setOnClickListener(this)
rootView.findViewById<View>(R.id.ll_my_courses).setOnClickListener(this)
rootView.findViewById<View>(R.id.ll_red_packet).setOnClickListener(this)
rootView.findViewById<View>(R.id.ll_call_order).setOnClickListener(this)
rootView.findViewById<View>(R.id.ll_account).setOnClickListener(this)
rootView.findViewById<View>(R.id.ll_guanzhu).setOnClickListener(this)
rootView.findViewById<View>(R.id.ll_my_trends).setOnClickListener(this)
rootView.findViewById<View>(R.id.ll_fans).setOnClickListener(this)
rootView.findViewById<View>(R.id.ll_my_test_log).setOnClickListener(this)
//客服
rootView.findViewById<View>(R.id.ll_service).setOnClickListener(this)
init()
GlideApp.with(this).load("https://static.yidianling.com/banner/bottombanner@2x.png")
.into(iv_mine_logo)
refreshCouponData()
}
override fun initDataAndEventLazy() {}
fun init() {
if (null != PlatformRamImpl.getInstance()
.getGlobalInfo() && null != PlatformRamImpl.getInstance()
.getGlobalInfo()?.info && null != PlatformRamImpl.getInstance()
.getGlobalInfo()?.info?.app_share
) {
share_title = PlatformRamImpl.getInstance().getGlobalInfo()?.info?.app_share?.title.toString()
share_context = PlatformRamImpl.getInstance().getGlobalInfo()?.info?.app_share?.descrip.toString()
share_head = PlatformRamImpl.getInstance().getGlobalInfo()?.info?.app_share?.cover_url.toString()
share_url = PlatformRamImpl.getInstance().getGlobalInfo()?.info?.app_share?.dl_url.toString()
}
}
override fun onResume() {
super.onResume()
updateUI()
}
override fun setUserVisibleHint(isVisibleToUser: Boolean) {
super.setUserVisibleHint(isVisibleToUser)
if (isVisibleToUser && isResumed) {
startTime = System.currentTimeMillis()
count(UserMyPageEvent.YDL_USER_MY_PAGE_VISIT)
showConsultAssistantDialog()
} else {
if (startTime != 0L) {
endTime = System.currentTimeMillis()
count(UserMyPageEvent.YDL_USER_MY_PAGE_STAY_VISIT, (endTime - startTime).toString())
}
hideConsultAssistantDialog()
}
if (isVisibleToUser && isResumed) {
onResume()
}
}
override fun onPause() {
super.onPause()
if (startTime != 0L) {
endTime = System.currentTimeMillis()
count(UserMyPageEvent.YDL_USER_MY_PAGE_STAY_VISIT, (endTime - startTime).toString())
}
}
private fun showConsultAssistantDialog() {
count("daoyi_advertisement_page|daoyi_advertisement_visit", "4")
mActivity?.let { provide(IConsultantService::class.java).showConsultAssistantMineDialog(it) }
}
private fun hideConsultAssistantDialog() {
provide(
IConsultantService::class.java
).hideConsultAssistantMineDialog()
}
/**
* DEBUG包中:增加切换环境功能,线上包会自动隐藏此按钮
*/
private fun debugChangeEnvironment() {
//debug包、未登录前提下才能切换环境
if (BuildConfig.DEBUG && !isLogin()) {
btn_change?.visibility = View.VISIBLE
} else {
btn_change?.visibility = View.GONE
}
}
override fun onRefresh() {
updateUserInfo()
refreshCouponData()
}
/**
* 更新优惠券信息
*/
@SuppressLint("CheckResult")
private fun refreshCouponData() {
val userInfo = getUserInfo() ?: return
//获取用户信息
MineHttpImpl.getInstance().getNewCoupon(BaseCommand())
.compose(netCheck())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ response: BaseResponse<CouponNumBean> ->
if (response.data != null) {
if (response.data?.count ?: 0 > 0) {
view_new_coupon.visibility = View.VISIBLE
} else {
view_new_coupon.visibility = View.INVISIBLE
}
}
}) { throwable: Throwable? -> }
}
/**
* 更新用户信息
*/
@SuppressLint("CheckResult")
private fun updateUserInfo() {
val userInfo = getUserInfo()
//获取用户信息
if (userInfo == null) {
swipe_refresh_layout.isRefreshing = false
return
}
if (userInfo.uid == null || userInfo.accessToken == null) {
swipe_refresh_layout.isRefreshing = false
return
}
getHttp().getUserInfo()
.compose(resultJavaData())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(Consumer { response: UserResponseBean ->
swipe_refresh_layout.isRefreshing = false
try {
//此处后端返回信息,只有userinfo,其它数据为空,切勿整体赋值
getUserInfo()?.userInfo = response.userInfo
updateUI()
} catch (e: Exception) {
}
}, object : ThrowableConsumer() {
override fun accept(msg: String) {
swipe_refresh_layout.isRefreshing = false
}
})
}
/**
* 获取用户信息成功后调用此方法更新 ui
*/
fun updateUI() {
initdata()
if (getLocal().hasUpdate()) {
jtv_about_us?.setLeftRedDotVisibility(View.VISIBLE)
} else {
jtv_about_us?.setLeftRedDotVisibility(View.GONE)
}
//切换环境按钮逻辑
debugChangeEnvironment()
}
private fun initdata() {
if (isLogin()) {
setUserInfo(getUserInfo()?.userInfo)
} else {
text_userName?.text = "未登录"
tv_duration?.text = "点击登录/注册"
img_head?.setImageResource(R.drawable.platform_head_place_hold_pic)
tv_attention_num?.text = "0"
tv_trend_num?.text = "0"
tv_fans_tv?.text = "0"
tv_test_record_num?.text = "0"
view_new_coupon?.visibility = View.INVISIBLE
}
}
private fun setUserInfo(userInfo: UserResponseBean.UserInfo?) {
userInfoData = userInfo
if (userInfo == null) {
return
}
val nick_name = userInfo.nick_name
if (!TextUtils.isEmpty(nick_name)) {
text_userName?.text = nick_name
} else {
text_userName?.text = "昵称未设置"
}
tv_attention_num?.text = userInfo.attentionNum.toString()
tv_trend_num?.text = userInfo.trendNum.toString()
tv_fans_tv?.text = userInfo.fansNum.toString()
tv_test_record_num?.text = userInfo.testRecordNum.toString()
tv_duration?.text = userInfo.registTime
cv_duration?.visibility = View.VISIBLE
if (userInfo.head != null) {
GlideApp.with(this)
.load(userInfo.head)
.dontAnimate()
.placeholder(R.drawable.platform_head_place_hold_pic)
.error(R.drawable.platform_head_place_hold_pic)
.into(img_head)
}
}
override fun onClick(v: View) {
val id = v.id //切换环境逻辑按钮
if (Utils.isFastClick()) {
//防止连击
return
}
if (id == R.id.text_userName || id == R.id.cv_duration) {
mActivity?.let { startLoginByStatus(it, true) }
} else if (id == R.id.iv_edit_info) {
//账号设置
count(UserMyPageEvent.YDL_USER_MY_BOTTOM_TYPE_CLICK, "设置")
//点击消息 未登录请先登录
mActivity?.let { activity ->
if (!startLoginByStatus(activity, true)) {
return
}
startActivity(Intent(activity, AccountSettingActivity::class.java))
}
} else if (id == R.id.img_head) { //头像
mActivity?.let { activity ->
if (!startLoginByStatus(activity, true)) {
return
}
count(UserMyPageEvent.YDL_USER_MY_TOP_TYPE_CLICK, "头像")
if (userInfoData != null) {
val intentuser = Intent(activity, PersonalInfoActivity::class.java)
startActivity(intentuser)
}
}
} else if (id == R.id.ll_account) { //账户余额
count(UserMyPageEvent.YDL_USER_MY_MIDDLE_TYPE_CLICK, "账号余额")
mActivity?.let { activity ->
if (!startLoginByStatus(activity, true)) {
return
}
startActivity(Intent(activity, AccountHistoryActivity::class.java))
}
} else if (id == R.id.ll_red_packet) { //我的红包
count(UserMyPageEvent.YDL_USER_MY_MIDDLE_TYPE_CLICK, "红包卡券")
mActivity?.let { activity ->
if (!startLoginByStatus(activity, true)) {
return
}
clearCouponStatus()
provide(IAppService::class.java).myRedPockIntent(activity)
}
} else if (id == R.id.ll_fans) { //粉丝
count(UserMyPageEvent.YDL_USER_MY_TOP_TYPE_CLICK, "我的粉丝")
mActivity?.let { activity ->
if (!startLoginByStatus(activity, true)) {
return
}
val h5Params = H5Params(H5_URL + "mine/fans-list", null)
NewH5Activity.start(activity, h5Params)
}
} else if (id == R.id.ll_guanzhu) { //我关注的
count(UserMyPageEvent.YDL_USER_MY_TOP_TYPE_CLICK, "我的关注")
mActivity?.let { activity ->
if (!startLoginByStatus(activity, true)) {
return
}
val h5Params1 = H5Params(H5_URL + "mine/follow-per", null)
NewH5Activity.start(activity, h5Params1)
}
} else if (id == R.id.ll_my_trends) {
count(UserMyPageEvent.YDL_USER_MY_TOP_TYPE_CLICK, "我的动态")
mActivity?.let { activity ->
if (!startLoginByStatus(activity, true)) {
return
}
BuryPointUtils.getInstance().createMap()
.put("mine_name", "我的动态")
.burryPoint("mine")
try {
val intentm = provide(IDynamicService::class.java).getMyTrendsActivityIntent(activity)
startActivity(intentm)
} catch (e: Exception) {
e.printStackTrace()
}
}
} else if (id == R.id.jtv_account_privacy) { // 未登录请先登录
count(UserMyPageEvent.YDL_USER_MY_BOTTOM_TYPE_CLICK, "帮助中心")
mActivity?.let { activity ->
if (!startLoginByStatus(activity, true)) {
return
}
getUsetSetting()?.meSafePrivateIsClick = true
jtv_account_privacy?.setLeftRedDotVisibility(View.GONE)
startActivity(Intent(activity, PrivacyActivity::class.java))
}
} else if (id == R.id.ll_trade_order) { //预约
count(UserMyPageEvent.YDL_USER_MY_MIDDLE_TYPE_CLICK, "预约订单")
mActivity?.let { activity ->
if (!startLoginByStatus(activity, true)) {
return
}
BuryPointUtils.getInstance().createMap()
.put("mine_name", "预约订单")
.burryPoint("mine")
val h5Params3 = H5Params(MH5_URL + "wb/user/order/list?needOrderHelperAlert=1", null)
NewH5Activity.start(activity, h5Params3)
}
} else if (id == R.id.ll_my_courses) { //我的课程
count(UserMyPageEvent.YDL_USER_MY_MIDDLE_TYPE_CLICK, "我的课程")
mActivity?.let { activity ->
if (!startLoginByStatus(activity, true)) {
return
}
provide(ICourseService::class.java).startMyCourseActivity(activity)
}
} else if (id == R.id.ll_call_order) { //倾诉
count(UserMyPageEvent.YDL_USER_MY_MIDDLE_TYPE_CLICK, "倾诉记录")
mActivity?.let { activity ->
if (!startLoginByStatus(activity, true)) {
return
}
BuryPointUtils.getInstance().createMap()
.put("mine_name", "倾诉记录")
.burryPoint("mine")
val h5Paramsqing = H5Params(YDL_H5 + "confideOrderList", null)
NewH5Activity.start(activity, h5Paramsqing)
}
} else if (id == R.id.jtv_account_help) { //帮助
count(UserMyPageEvent.YDL_USER_MY_BOTTOM_TYPE_CLICK, "帮助中心")
val params = H5Params(H5_URL + "help/", "")
params.isShowMenu = true
NewH5Activity.start(activity, params)
} else if (id == R.id.jtv_account_enter) { //专家入驻
count(UserMyPageEvent.YDL_USER_MY_BOTTOM_TYPE_CLICK, "专家入驻")
var joinDoctorUrl = PlatformRamImpl.getInstance().getGlobalInfo()?.info?.join_doctor_url
if (joinDoctorUrl.isNullOrEmpty()) {
joinDoctorUrl= "http://m.yidianling.com/enter?"
}
val h5Paramzhuan = H5Params(joinDoctorUrl, null)
NewH5Activity.start(activity, h5Paramzhuan)
} else if (id == R.id.ll_my_test_log) { //测试记录
count(UserMyPageEvent.YDL_USER_MY_TOP_TYPE_CLICK, "测试记录")
mActivity?.let { activity ->
if (!startLoginByStatus(activity, true)) {
return
}
BuryPointUtils.getInstance().createMap()
.put("mine_name", "测试记录")
.burryPoint("mine")
val testParam = H5Params(MH5_URL + "ceshi/my-test", "测试记录")
NewH5Activity.start(activity, testParam)
}
} else if (id == R.id.iv_share) { //分享
count(UserMyPageEvent.YDL_USER_MY_BOTTOM_TYPE_CLICK, "分享")
share()
} else if (id == R.id.jtv_about_us) {
startActivity(Intent(activity, AboutUsActivity::class.java))
} else if (id == R.id.ll_service) {
mActivity?.let { activity ->
if (!startLoginByStatus(activity, true)) {
return
}
getImService().startP2PXiaoYi(activity)
}
} else if (id == R.id.jtv_introduce) {
count(UserMyPageEvent.YDL_USER_MY_BOTTOM_TYPE_CLICK, "壹点灵介绍")
val params1 = H5Params("https://m.yidianling.com/about", "网站介绍")
NewH5Activity.start(activity, params1)
} else if (id == R.id.btn_change) {
} else if (id == R.id.jtv_test) { //debug下任意门入口
jtv_test?.postDelayed({ YdlBuryPointUtil.sendPv("PvEvent") }, 300)
jtv_test?.postDelayed({ YdlBuryPointUtil.sendClick("ClickEvent") }, 500)
}
}
@SuppressLint("CheckResult")
private fun clearCouponStatus() {
MineHttpImpl.getInstance().getSysMsgList(MsgListParam(1.toString() + "", 1))
.compose(netCheck())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ response: BaseResponse<String>? ->
if (response != null && response.code == 0) {
view_new_coupon.visibility = View.INVISIBLE
}
}) { throwable: Throwable? -> }
}
private fun share() {
val dialog = mActivity?.let {activity ->
style4(activity, share_title, share_url, share_context, share_head)
}
dialog?.show(activity?.fragmentManager, "lose")
}
/**
* 收到照片选取事件
*/
fun onEventBackgroundThread(event: UserResponseBean?) {
if (event?.userInfo != null) {
userInfoData = event.userInfo
}
}
fun onEvent(event: RefreshRecentContactListEvent?) {
refreshCouponData()
}
fun onEvent(event: UserChangeEvent) {
val changeFlag = event.isChange_flag
if (changeFlag) {
initdata()
try {
provide(
IImService::class.java
).updateUserHead(getUserInfo()?.userInfo?.head)
} catch (e: Exception) {
}
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment