diff --git a/app/build.gradle b/app/build.gradle index c1e0b30..f6b695e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,5 +105,7 @@ dependencies { //融云IM 5.2.1.55 api project(path: ':imlib') api project(path: ':calllib') + //https://github.com/yipianfengye/android-zxingLibrary + compile 'cn.yipianfengye.android:zxing-library:2.2' compile 'com.github.lmiot:LoadDialog:V2.1' } diff --git a/app/src/main/java/com/unionmed/unionmedtv/activity/MsgActivity.java b/app/src/main/java/com/unionmed/unionmedtv/activity/MsgActivity.java index a421ca6..b884ed3 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/activity/MsgActivity.java +++ b/app/src/main/java/com/unionmed/unionmedtv/activity/MsgActivity.java @@ -20,12 +20,22 @@ import androidx.viewpager.widget.ViewPager; import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.widget.ViewPager2; +import com.blankj.utilcode.util.LogUtils; +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestOptions; +import com.hjq.http.EasyHttp; +import com.hjq.http.listener.OnHttpListener; import com.unionmed.unionmedtv.R; import com.unionmed.unionmedtv.adapter.MsgListAdapter; import com.unionmed.unionmedtv.adapter.SmartFragmentStatePagerAdapter; +import com.unionmed.unionmedtv.api.GetImUserInfoApi; import com.unionmed.unionmedtv.base.BaseActivity; +import com.unionmed.unionmedtv.bean.ImUserInfoBean; +import com.unionmed.unionmedtv.bean.MyConversation; import com.unionmed.unionmedtv.fragment.MsgFragment; import com.unionmed.unionmedtv.livedatas.LiveDataBus; +import com.unionmed.unionmedtv.network.ApiResponse; +import com.unionmed.unionmedtv.utils.CacheUtil; import com.unionmed.unionmedtv.utils.Constants; import com.unionmed.unionmedtv.utils.MsgItemLinearLayoutManager; import com.unionmed.unionmedtv.utils.MyLinearLayoutManager; @@ -35,6 +45,7 @@ import com.unionmed.unionmedtv.widgets.TabViewPager; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import io.rong.imlib.RongIMClient; @@ -43,7 +54,7 @@ import io.rong.imlib.model.Conversation; public class MsgActivity extends BaseActivity { private RecyclerView recyclerView; private MsgListAdapter msgListAdapter; - private List list = new ArrayList<>(); + private List list = new ArrayList<>(); private FrameLayout frameLayout; private TextView tv_title; private int lastSelectedPosition = 0; @@ -65,28 +76,26 @@ public class MsgActivity extends BaseActivity { tv_title = findViewById(R.id.tv_title); MyLinearLayoutManager myLinearLayoutManager = new MyLinearLayoutManager(MsgActivity.this); recyclerView.setLayoutManager(myLinearLayoutManager); -// Conversation.ConversationType[] conversationTypes = {Conversation.ConversationType.PRIVATE, Conversation.ConversationType.GROUP}; -// RongIMClient.getInstance().getConversationListByPage(new RongIMClient. -// ResultCallback>() { -// -// @Override -// public void onSuccess(List conversations) { -// for (int i=0;i>() { + + @Override + public void onSuccess(List conversations) { + for (int i=0;i void onChildClick(View view, int position, T data) { @@ -104,7 +113,6 @@ public class MsgActivity extends BaseActivity { lastSelectedPosition = integer; msgListAdapter.setPostion(lastSelectedPosition); msgListAdapter.notifyDataSetChanged(); - tv_title.setText(list.get(integer)); LiveDataBus.get().with(Constants.MSG_REFRESH_ITEM).postValue(""); } }); diff --git a/app/src/main/java/com/unionmed/unionmedtv/adapter/MsgListAdapter.java b/app/src/main/java/com/unionmed/unionmedtv/adapter/MsgListAdapter.java index 6fb3c42..db27aea 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/adapter/MsgListAdapter.java +++ b/app/src/main/java/com/unionmed/unionmedtv/adapter/MsgListAdapter.java @@ -8,16 +8,27 @@ import android.widget.TextView; import androidx.annotation.Nullable; import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.lifecycle.LifecycleOwner; +import com.blankj.utilcode.util.LogUtils; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.chad.library.adapter.base.BaseDelegateMultiAdapter; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.delegate.BaseMultiTypeDelegate; import com.chad.library.adapter.base.viewholder.BaseViewHolder; +import com.hjq.http.EasyHttp; +import com.hjq.http.listener.OnHttpListener; import com.unionmed.unionmedtv.R; +import com.unionmed.unionmedtv.activity.MsgActivity; +import com.unionmed.unionmedtv.activity.VideoCallActivity; +import com.unionmed.unionmedtv.api.GetImUserInfoApi; import com.unionmed.unionmedtv.api.GetNearDoctorApi; +import com.unionmed.unionmedtv.bean.ImUserInfoBean; +import com.unionmed.unionmedtv.bean.MyConversation; import com.unionmed.unionmedtv.livedatas.LiveDataBus; +import com.unionmed.unionmedtv.network.ApiResponse; +import com.unionmed.unionmedtv.utils.CacheUtil; import com.unionmed.unionmedtv.utils.Constants; import com.unionmed.unionmedtv.utils.OnChildClickListener; @@ -25,9 +36,11 @@ import org.jetbrains.annotations.NotNull; import java.util.List; -public class MsgListAdapter extends BaseQuickAdapter { +import io.rong.imlib.model.Conversation; + +public class MsgListAdapter extends BaseQuickAdapter { private OnChildClickListener onChildClickListener; - private int postion=0; + private int postion = 0; public int getPostion() { return postion; @@ -37,29 +50,62 @@ public class MsgListAdapter extends BaseQuickAdapter { this.postion = postion; } - public MsgListAdapter(int layoutResId, @Nullable List data, OnChildClickListener onChildClickListener) { + public MsgListAdapter(int layoutResId, @Nullable List data, OnChildClickListener onChildClickListener) { super(layoutResId, data); this.onChildClickListener = onChildClickListener; } + //获取用户信息 + private void getUserInfoByServer(MyConversation conversation, TextView tv_title,ImageView iv_avatar) { + EasyHttp.post((LifecycleOwner) getContext()) + .api(new GetImUserInfoApi(CacheUtil.getToken().getToken(), conversation.getConversation().getTargetId())) + .request(new OnHttpListener>>() { + @Override + public void onSucceed(ApiResponse> result) { + conversation.setFirstLoad(false); + if (null != result.getData() && result.getData().isInnerRequestSucceed() + && null != result.getData().getData()) { + conversation.setName(result.getData().getData().getName()); + conversation.setImgPath(result.getData().getData().getHeadImg()); + tv_title.setText(conversation.getName()); + Glide.with(getContext()) + .load(conversation.getImgPath()) + .apply(new RequestOptions() + .placeholder(R.mipmap.rc_default_portrait) + .circleCrop() + ) + .into(iv_avatar); + } + } + @Override + public void onFail(Exception e) { + LogUtils.e("用户信息失败", "失败:" + e); + } + }); + } @Override - protected void convert(@NotNull BaseViewHolder vh, String s) { + protected void convert(@NotNull BaseViewHolder vh, MyConversation conversation) { TextView tv_title = vh.findView(R.id.tv_title); - tv_title.setText(s); - ConstraintLayout constraintlayout=vh.findView(R.id.constraintlayout); - if(vh.getLayoutPosition()==postion){ + ImageView iv_avatar = vh.findView(R.id.iv_avatar); + ConstraintLayout constraintlayout = vh.findView(R.id.constraintlayout); + if (vh.getLayoutPosition() == postion) { constraintlayout.setSelected(true); constraintlayout.requestFocus(); - }else { + } else { constraintlayout.setSelected(false); constraintlayout.clearFocus(); } + Log.i("TAG", "convert: ==================="+conversation.getConversation().getTargetId()); + if(conversation.isFirstLoad()){ + getUserInfoByServer(conversation, tv_title,iv_avatar); + } + vh.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - onChildClickListener.onChildClick(view, vh.getLayoutPosition(), s); + onChildClickListener.onChildClick(view, vh.getLayoutPosition(), conversation); } }); diff --git a/app/src/main/java/com/unionmed/unionmedtv/api/GetCodeCallBackLsn.java b/app/src/main/java/com/unionmed/unionmedtv/api/GetCodeCallBackLsn.java new file mode 100644 index 0000000..50c13b2 --- /dev/null +++ b/app/src/main/java/com/unionmed/unionmedtv/api/GetCodeCallBackLsn.java @@ -0,0 +1,32 @@ +package com.unionmed.unionmedtv.api; + + +import androidx.annotation.NonNull; + +import com.hjq.http.config.IRequestApi; +import com.hjq.http.config.IRequestType; +import com.hjq.http.model.BodyType; + +/** + * desc : 监听二维码(生成方调用) + */ +public final class GetCodeCallBackLsn implements IRequestApi, IRequestType { + + @NonNull + @Override + public BodyType getBodyType() { + return BodyType.JSON; + } + + @NonNull + @Override + public String getApi() { + return "/qrcode/callbackLsn"; + } + + private String code; + + public GetCodeCallBackLsn(String code) { + this.code = code; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/unionmed/unionmedtv/api/QRCodeApi.java b/app/src/main/java/com/unionmed/unionmedtv/api/QRCodeApi.java new file mode 100644 index 0000000..5cd41a6 --- /dev/null +++ b/app/src/main/java/com/unionmed/unionmedtv/api/QRCodeApi.java @@ -0,0 +1,34 @@ +package com.unionmed.unionmedtv.api; + + +import androidx.annotation.NonNull; + +import com.google.gson.annotations.SerializedName; +import com.hjq.http.config.IRequestApi; +import com.hjq.http.config.IRequestType; +import com.hjq.http.model.BodyType; + +/** + * 生成二维码 + */ +public final class QRCodeApi implements IRequestApi, IRequestType { + @NonNull + @Override + public BodyType getBodyType() { + return BodyType.JSON; + } + + @NonNull + @Override + public String getApi() { + return "/qrcode/gen"; + } + + private String businessType; + private String content; + + public QRCodeApi(String businessType, String content) { + this.businessType = businessType; + this.content = content; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/unionmed/unionmedtv/application/MyApplication.java b/app/src/main/java/com/unionmed/unionmedtv/application/MyApplication.java index 8d65561..7d6fdbc 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/application/MyApplication.java +++ b/app/src/main/java/com/unionmed/unionmedtv/application/MyApplication.java @@ -24,6 +24,7 @@ import com.unionmed.unionmedtv.network.RequestServer; import com.hjq.http.EasyConfig; import com.tencent.bugly.crashreport.CrashReport; import com.unionmed.unionmedtv.utils.Constants; +import com.uuzuche.lib_zxing.activity.ZXingLibrary; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; @@ -66,6 +67,8 @@ public class MyApplication extends Application { // 添加全局请求头 .addHeader("Content-Type", "application/json;charset=UTF-8") .into(); + //zxing初始化 + ZXingLibrary.initDisplayOpinion(this); setSSL_Rong(); //初始化im initRong(); diff --git a/app/src/main/java/com/unionmed/unionmedtv/bean/MyConversation.java b/app/src/main/java/com/unionmed/unionmedtv/bean/MyConversation.java new file mode 100644 index 0000000..4310717 --- /dev/null +++ b/app/src/main/java/com/unionmed/unionmedtv/bean/MyConversation.java @@ -0,0 +1,48 @@ +package com.unionmed.unionmedtv.bean; + +import android.graphics.drawable.Drawable; + +import com.unionmed.unionmedtv.utils.Constants; + +import io.rong.imlib.NativeObject; +import io.rong.imlib.model.Conversation; + +public class MyConversation { + + private boolean isFirstLoad = true; + private Conversation conversation; + private String name; + private String imgPath; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getImgPath() { + return imgPath; + } + + public void setImgPath(String imgPath) { + this.imgPath = imgPath; + } + + public Conversation getConversation() { + return conversation; + } + + public void setConversation(Conversation conversation) { + this.conversation = conversation; + } + + public boolean isFirstLoad() { + return isFirstLoad; + } + + public void setFirstLoad(boolean firstLoad) { + isFirstLoad = firstLoad; + } +} diff --git a/app/src/main/java/com/unionmed/unionmedtv/bean/QRCodeBean.java b/app/src/main/java/com/unionmed/unionmedtv/bean/QRCodeBean.java new file mode 100644 index 0000000..fe8c8eb --- /dev/null +++ b/app/src/main/java/com/unionmed/unionmedtv/bean/QRCodeBean.java @@ -0,0 +1,95 @@ +package com.unionmed.unionmedtv.bean; + +import android.os.Parcel; +import android.os.Parcelable; + + +public class QRCodeBean implements Parcelable { + + + /** + * code : umdqr://74d730a1a15a46dd986b2c6cf5a00ba6 + * businessType : Login + * content : null + * client : null + * expireTime : 1688722719700 + */ + + private String code; + private String businessType; + private String content; + private String client; + private long expireTime; + + protected QRCodeBean(Parcel in) { + code = in.readString(); + businessType = in.readString(); + expireTime = in.readLong(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public QRCodeBean createFromParcel(Parcel in) { + return new QRCodeBean(in); + } + + @Override + public QRCodeBean[] newArray(int size) { + return new QRCodeBean[size]; + } + }; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getBusinessType() { + return businessType; + } + + public void setBusinessType(String businessType) { + this.businessType = businessType; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getClient() { + return client; + } + + public void setClient(String client) { + this.client = client; + } + + public long getExpireTime() { + return expireTime; + } + + public void setExpireTime(long expireTime) { + this.expireTime = expireTime; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel parcel, int i) { + parcel.writeString(code); + parcel.writeString(client); + parcel.writeString(content); + parcel.writeString(businessType); + parcel.writeLong(expireTime); + } +} diff --git a/app/src/main/java/com/unionmed/unionmedtv/bean/ScanBean.java b/app/src/main/java/com/unionmed/unionmedtv/bean/ScanBean.java new file mode 100644 index 0000000..a721013 --- /dev/null +++ b/app/src/main/java/com/unionmed/unionmedtv/bean/ScanBean.java @@ -0,0 +1,138 @@ +package com.unionmed.unionmedtv.bean; + +public class ScanBean { + + /** + * id : 799099be2c674e1488f91c27f487910f + * code : 48a07e6e5cd94185979c2642a5bfcbad + * client : IPTV + * businessType : Login + * content : null + * expireTime : 1688975695454 + * callbackStatus : 1 + * callbackData : {"code":200,"data":{"code":200,"data":{"currentAddress":{"address":"福州市鼓楼区通湖路224号","addressKey":"53","createTime":"1665557084","detailAddress":"22","isCurrent":"1","isDefault":"0","isDelete":"0","mobile":"15905996666","name":"家里","pkey":"11","xzqh":"3501"},"faceAuthFlag":1,"headImg":"https://mobile.union-med.net/filesvr/appheadimg/appheadimg_1661845333829.jpg","identity_id":"360403199607140012","im_password":"123456","im_token":"aMoc5KmhZ1+8S3VyiUqBLhBwnob+UTom+DOpxf1Sa1fSlEGJBo5MrcAsY8U=","im_useraccount":"11","isAtuh":"1","isSetPsw":"0","mobile":"18860054210","name":"唐家钦","preRegion":{"filesvr":"http://47.118.51.167:8999/eleand/","fmsvr":"rtmp://10.120.224.5/livepkgr/","ip":"47.118.51.167","ipsvr":"https://mobile.union-med.net/app/appintegrate/v1.8","memo":"福州","msgip":"120.195.56.245","msgsvr":"http://120.195.56.245:3190/msg_server","oder_num":4,"pkey":"15","port":"8065","svalue":"rtmp://10.120.224.5/livepkgr/","type":"01"},"upkey":"11"},"errCode":200,"message":"成功"},"errCode":200,"message":"成功"} + * valid : 0 + * createTime : null + * createBy : null + * updateTime : null + * updateBy : null + */ + + private String id; + private String code; + private String client; + private String businessType; + private Object content; + private long expireTime; + private int callbackStatus; + private String callbackData; + private int valid; + private Object createTime; + private Object createBy; + private Object updateTime; + private Object updateBy; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getClient() { + return client; + } + + public void setClient(String client) { + this.client = client; + } + + public String getBusinessType() { + return businessType; + } + + public void setBusinessType(String businessType) { + this.businessType = businessType; + } + + public Object getContent() { + return content; + } + + public void setContent(Object content) { + this.content = content; + } + + public long getExpireTime() { + return expireTime; + } + + public void setExpireTime(long expireTime) { + this.expireTime = expireTime; + } + + public int getCallbackStatus() { + return callbackStatus; + } + + public void setCallbackStatus(int callbackStatus) { + this.callbackStatus = callbackStatus; + } + + public String getCallbackData() { + return callbackData; + } + + public void setCallbackData(String callbackData) { + this.callbackData = callbackData; + } + + public int getValid() { + return valid; + } + + public void setValid(int valid) { + this.valid = valid; + } + + public Object getCreateTime() { + return createTime; + } + + public void setCreateTime(Object createTime) { + this.createTime = createTime; + } + + public Object getCreateBy() { + return createBy; + } + + public void setCreateBy(Object createBy) { + this.createBy = createBy; + } + + public Object getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Object updateTime) { + this.updateTime = updateTime; + } + + public Object getUpdateBy() { + return updateBy; + } + + public void setUpdateBy(Object updateBy) { + this.updateBy = updateBy; + } +} diff --git a/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginAccountFragment.java b/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginAccountFragment.java index fcfe337..af360da 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginAccountFragment.java +++ b/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginAccountFragment.java @@ -190,6 +190,7 @@ public class LoginAccountFragment extends Fragment implements View.OnClickListen } public void getAreaLogn(String identity_id, String mobile, String name, String pkey) { + EasyConfig.getInstance().addHeader("token",CacheUtil.getToken().getToken()); EasyHttp.post(this) .api(new AreaLoginApi(identity_id, mobile, name, pkey)) .request(new OnHttpListener>>() { diff --git a/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginPhoneFragment.java b/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginPhoneFragment.java index 9fa2ed9..da8174d 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginPhoneFragment.java +++ b/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginPhoneFragment.java @@ -1,38 +1,47 @@ package com.unionmed.unionmedtv.login.activity.fragment; -import android.content.Intent; +import android.graphics.Bitmap; import android.os.Bundle; import android.os.CountDownTimer; import android.text.TextUtils; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ProgressBar; import android.widget.TextView; -import android.widget.Toast; import androidx.fragment.app.Fragment; import com.blankj.utilcode.util.ToastUtils; import com.example.yideng.loaddialoglibrary.LmiotDialog; +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import com.hjq.http.EasyConfig; import com.hjq.http.EasyHttp; import com.hjq.http.listener.OnHttpListener; import com.lxj.xpopup.XPopup; import com.unionmed.unionmedtv.R; import com.unionmed.unionmedtv.activity.HomeActivity; -import com.unionmed.unionmedtv.activity.MainActivity; import com.unionmed.unionmedtv.api.AreaLoginApi; import com.unionmed.unionmedtv.api.GetCodeApi; -import com.unionmed.unionmedtv.api.GetNearDoctorApi; +import com.unionmed.unionmedtv.api.GetCodeCallBackLsn; import com.unionmed.unionmedtv.api.MobileLoginApi; +import com.unionmed.unionmedtv.api.QRCodeApi; +import com.unionmed.unionmedtv.bean.QRCodeBean; +import com.unionmed.unionmedtv.bean.ScanBean; import com.unionmed.unionmedtv.bean.TokenBean; import com.unionmed.unionmedtv.dialog.TipDialog; -import com.unionmed.unionmedtv.login.activity.LoginActivity; import com.unionmed.unionmedtv.network.ApiResponse; import com.unionmed.unionmedtv.network.HttpData; import com.unionmed.unionmedtv.utils.CacheUtil; +import com.uuzuche.lib_zxing.activity.CodeUtils; -import java.util.List; +import java.util.Timer; +import java.util.TimerTask; import me.jessyan.autosize.utils.LogUtils; @@ -51,6 +60,10 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener private EditText edit_code; private TextView tv_getVerification; private TextView tv_login; + private ImageView iv_qrCode; + private LinearLayout lin_code; + private ProgressBar progress; + private TextView tv_code_msg; public LoginPhoneFragment() { // Required empty public constructor @@ -80,6 +93,7 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener if (mRootView == null) { mRootView = inflater.inflate(R.layout.fragment_phone_login, container, false); initView(mRootView); + GenerateQRcode(); } return mRootView; } @@ -94,6 +108,12 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener tv_getVerification.setOnClickListener(this); tv_login = view.findViewById(R.id.tv_login); tv_login.setOnClickListener(this); + iv_qrCode = view.findViewById(R.id.iv_qrCode); + iv_qrCode.setOnClickListener(this); + lin_code = view.findViewById(R.id.lin_code); + lin_code.setOnClickListener(this); + progress = view.findViewById(R.id.progress); + tv_code_msg = view.findViewById(R.id.tv_code_msg); } @Override @@ -119,6 +139,145 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener } MobileLogin(edit_phone.getText().toString(), edit_code.getText().toString()); + } else if (view.getId() == R.id.lin_code || view.getId() == R.id.iv_qrCode) { + if(timer!=null){ + timer.cancel(); + } + GenerateQRcode(); + } + } + + /** + * 生成二维码 + */ + public void GenerateQRcode() { + lin_code.setVisibility(View.VISIBLE); + progress.setVisibility(View.VISIBLE); + tv_code_msg.setText("二维码生成中"); + EasyHttp.post(getActivity()) + .api(new QRCodeApi("Login", "")) + .request(new OnHttpListener>>() { + @Override + public void onSucceed(HttpData> apiResponseHttpData) { + if (apiResponseHttpData.isRequestSucceed()) { + if (apiResponseHttpData.getData().isInnerRequestSucceed()) { + lin_code.setVisibility(View.GONE); + iv_qrCode.setVisibility(View.VISIBLE); + Bitmap mBitmap = CodeUtils.createImage(apiResponseHttpData.getData().getData().getCode(), 400, 400, null); + iv_qrCode.setImageBitmap(mBitmap); + callbackLsn(apiResponseHttpData.getData().getData().getCode()); + } else { + lin_code.setVisibility(View.VISIBLE); + progress.setVisibility(View.GONE); + tv_code_msg.setText("生成二维码失败,点击刷新"); + iv_qrCode.setVisibility(View.INVISIBLE); + } + } else { + lin_code.setVisibility(View.VISIBLE); + progress.setVisibility(View.GONE); + tv_code_msg.setText("生成二维码失败,点击刷新"); + iv_qrCode.setVisibility(View.INVISIBLE); + } + } + + @Override + public void onFail(Exception e) { + lin_code.setVisibility(View.VISIBLE); + progress.setVisibility(View.GONE); + tv_code_msg.setText("生成二维码失败,点击刷新"); + iv_qrCode.setVisibility(View.INVISIBLE); + ToastUtils.showLong("获取二维码失败"); + LogUtils.e("失败:" + e); + } + }); + } + + private Timer timer; + + //监听二维码 定时请求,监听二维码是否已回调(是否已绑定数据) + public void callbackLsn(String code) { + timer = new Timer(); + timer.schedule(new TimerTask() { + @Override + public void run() { + EasyHttp.post(getActivity()) + .api(new GetCodeCallBackLsn(code)) + .request(new OnHttpListener>>() { + + @Override + public void onSucceed(HttpData> apiResponseHttpData) { + if (apiResponseHttpData.isRequestSucceed()) { + if (apiResponseHttpData.getData().isInnerRequestSucceed()) { + TokenBean tokenBean = new Gson() + .fromJson(apiResponseHttpData.getData().getData().getCallbackData().replace("\\", ""), TokenBean.class); + CacheUtil.setToken(tokenBean); + CacheUtil.setAccountNumber(tokenBean.getMobile()); + CacheUtil.saveImUserAccount(tokenBean.getIm_useraccount()); + CacheUtil.saveImUserPwd(tokenBean.getIm_password()); + CacheUtil.saveImTokenRong(tokenBean.getIm_token()); + CacheUtil.savePkey(tokenBean.getPreRegion().getPkey()); + CacheUtil.saveipsvr(tokenBean.getPreRegion().getIpsvr()); + CacheUtil.setIpAddress(tokenBean.getPreRegion()); + if (tokenBean.getIsAtuh().equals("1") + && tokenBean.getFaceAuthFlag() == 1) { + getAreaLogn(tokenBean.getIdentity_id(), + tokenBean.getMobile(), + tokenBean.getName(), + tokenBean.getPreRegion().getPkey()); + } else { + LmiotDialog.hidden(); + CacheUtil.setToken(null); + new XPopup.Builder(getActivity()).isRequestFocus(true) + .asCustom(new TipDialog(getActivity(), "请先前往手机app进行实名认证,认证成功后才可登录", new TipDialog.DialogClick() { + @Override + public void cancel() { + + } + + @Override + public void confirm() { + + } + })).show(); + } + if (timer != null) { + timer.cancel(); + } + } else if (apiResponseHttpData.getData().getCode() == 500) { + if (timer != null) { + timer.cancel(); + } + lin_code.setVisibility(View.VISIBLE); + progress.setVisibility(View.GONE); + iv_qrCode.setVisibility(View.INVISIBLE); + tv_code_msg.setText("二维码失效,点击刷新"); + ToastUtils.showLong("二维码失效"); + } + } else { + if (timer != null) { + timer.cancel(); + } + lin_code.setVisibility(View.VISIBLE); + progress.setVisibility(View.INVISIBLE); + tv_code_msg.setText("二维码失效,点击刷新"); + ToastUtils.showLong("二维码失效"); + } + } + + @Override + public void onFail(Exception e) { + + } + }); + } + }, 0, 5000); // 设置定时任务的时间间隔为 5 秒 + } + + @Override + public void onDestroy() { + super.onDestroy(); + if (timer != null) { + timer.cancel(); } } @@ -161,7 +320,7 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener //手机号登录 public void MobileLogin(String mobile, String code) { - LmiotDialog.show(getActivity(),"登录中.."); + LmiotDialog.show(getActivity(), "登录中.."); EasyHttp.post(getActivity()) .api(new MobileLoginApi(mobile, code)) .request(new OnHttpListener>>() { @@ -202,7 +361,6 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener } })).show(); } - } else { LmiotDialog.hidden(); ToastUtils.showLong(apiResponseHttpData.getData().getMessage()); @@ -222,17 +380,24 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener }); } + public void getAreaLogn(String identity_id, String mobile, String name, String pkey) { + EasyConfig.getInstance().addHeader("token", CacheUtil.getToken().getToken()); EasyHttp.post(this) .api(new AreaLoginApi(identity_id, mobile, name, pkey)) - .request(new OnHttpListener>() { + .request(new OnHttpListener>>() { @Override - public void onSucceed(HttpData personInfoBeanHttpData) { + public void onSucceed(HttpData> personInfoBeanHttpData) { LmiotDialog.hidden(); if (personInfoBeanHttpData.isRequestSucceed()) { - CacheUtil.saveUserToken(personInfoBeanHttpData.getData().getUserToken()); - HomeActivity.StartActivity(getActivity()); - getActivity().finish(); + if (personInfoBeanHttpData.getData().isInnerRequestSucceed()) { + CacheUtil.saveUserToken(personInfoBeanHttpData.getData().getData().getUserToken()); + HomeActivity.StartActivity(getActivity()); + getActivity().finish(); + } else { + CacheUtil.setToken(null); + ToastUtils.showLong(personInfoBeanHttpData.getData().getMessage()); + } } else { CacheUtil.setToken(null); ToastUtils.showLong(personInfoBeanHttpData.getMessage()); diff --git a/app/src/main/res/layout/activity_msg.xml b/app/src/main/res/layout/activity_msg.xml index 01e2b64..05a1739 100644 --- a/app/src/main/res/layout/activity_msg.xml +++ b/app/src/main/res/layout/activity_msg.xml @@ -2,6 +2,7 @@ diff --git a/app/src/main/res/layout/fragment_phone_login.xml b/app/src/main/res/layout/fragment_phone_login.xml index 148d01f..87bff5e 100644 --- a/app/src/main/res/layout/fragment_phone_login.xml +++ b/app/src/main/res/layout/fragment_phone_login.xml @@ -1,7 +1,10 @@ + android:layout_height="match_parent" + tools:ignore="MissingPrefix" + xmlns:app="http://schemas.android.com/apk/res-auto"> - + + + + @@ -24,7 +25,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="12dp" - android:text="通知" + tools:text="通知" android:textColor="@color/white_f1f1f1" android:textSize="21sp" app:layout_constraintBottom_toBottomOf="parent"