package com.edufound.reader.presenter; import android.content.Intent; import android.widget.Toast; import com.alibaba.fastjson.JSONObject; import com.edufound.reader.apiserver.UserApiServerImpl; import com.edufound.reader.base.BaseActivity; import com.edufound.reader.base.BasePresenter; import com.edufound.reader.bean.HttpResultBean; import com.edufound.reader.bean.MyInfoBean; import com.edufound.reader.bean.UserBean; import com.edufound.reader.contract.UserInfoSettingContract; import com.edufound.reader.model.UserInfoSettingModel; import com.edufound.reader.receiver.BackPageReceiver; import com.edufound.reader.util.Consts; import com.edufound.reader.util.DeviceUuidFactory; import com.edufound.reader.util.EfunboxUtil; import com.edufound.reader.util.MMKVEncodeKey; import com.edufound.reader.util.MMKVUtil; import com.google.gson.reflect.TypeToken; import com.okhttplib.HttpInfo; import com.okhttplib.callback.Callback; import com.orhanobut.logger.Logger; import org.json.JSONException; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class UserInfoSettingPresenter extends BasePresenter implements UserInfoSettingContract.Presenter { UserInfoSettingModel mModel; UserApiServerImpl mUserApi; String mGradeEnum; public UserInfoSettingPresenter() { mModel = new UserInfoSettingModel(); mUserApi = new UserApiServerImpl(); } @Override public void getMyInfo() { mUserApi.getMyInfo(mView.getActivity(), new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { HttpResultBean bean = info.getRetDetail(new TypeToken>() { }.getType()); Consts.setmConstsUserBean(bean.getData().getUser()); mView.getUserInfoSuccess(bean.getData().getUser()); mGradeEnum = bean.getData().getUser().getGrade(); } @Override public void onFailure(HttpInfo info) throws IOException { } }); } @Override public String getGradeEnum() { return mGradeEnum; } @Override public void upadteMyInfo(UserBean bean) { mModel.updateMyInfo(mView.getActivity(), ((BaseActivity) mView.getActivity()).getGson().toJson(bean), new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { HttpResultBean bean = info.getRetDetail(new TypeToken>() { }.getType()); Consts.setmConstsUserBean(bean.getData()); mView.getUserInfoSuccess(bean.getData()); mGradeEnum = bean.getData().getGrade(); } @Override public void onFailure(HttpInfo info) throws IOException { } }); } @Override public void activityDestory() { Intent intent = new Intent(BackPageReceiver.BACK_HOME_REF_USER_INFO); mView.getActivity().sendBroadcast(intent); } @Override public void loginOut() { mUserApi.userLoginOut(mView.getActivity(), new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { Consts.setmConstsUserBean(null); Consts.setUID(Consts.getDefaultUid()); mView.loginOutSuccess(); Consts.setIsYFVip(false); } @Override public void onFailure(HttpInfo info) throws IOException { } }); } @Override public void getBaiDuPhone(String token) { mUserApi.getBaiDuUserPhone(mView.getActivity(), token, new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { JSONObject object = JSONObject.parseObject(info.getRetDetail().toString()); String phone = JSONObject.parseObject(object.getString("data")).getString("phone"); registerMobile(phone); } @Override public void onFailure(HttpInfo info) throws IOException { Logger.e("获取百度手机号失败:" + info.getRetDetail()); } }); } @Override public void registerMobile(String phone) { if (EfunboxUtil.isMobileNO(phone)) { Map map = new HashMap<>(); map.put("deviceCode", DeviceUuidFactory.getUuid()); map.put("channel", Consts.getUMengChannel()); map.put("mobileNo", phone); if (MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE).equals("") || MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE) == null) { //如果没有,默认给一年级 map.put("grade", "PRIMARY_FIRST_GRADE"); } else { map.put("grade", MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE)); } String json = ((BaseActivity) mView.getActivity()).getGson().toJson(map); mUserApi.registerMobile(mView.getActivity(), json, new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { HttpResultBean bean = info.getRetDetail(new TypeToken>() { }.getType()); Consts.setUID(bean.getData().getUid()); //用户是否登录,登录了,创建Consts的userbean String nickName = EfunboxUtil.setPhoneMiddle(bean.getData().getMobile()); bean.getData().setNickName(nickName); Consts.setmConstsUserBean(bean.getData()); } @Override public void onFailure(HttpInfo info) throws IOException { Toast.makeText(mView.getActivity(), "注册失败", Toast.LENGTH_SHORT).show(); // CusToast.getInstance(mView.getActivity()).show("注册失败",2000); } }); } else { Toast.makeText(mView.getActivity(), "手机号不正确", Toast.LENGTH_SHORT).show(); } } @Override public void userCancellation() { mUserApi.userCancellation(mView.getActivity(), new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { Logger.e("注销成功:" + info.getRetDetail()); Consts.setmConstsUserBean(null); Consts.setUID(Consts.getDefaultUid()); mView.loginOutSuccess(); Consts.setIsYFVip(false); } @Override public void onFailure(HttpInfo info) throws IOException { Logger.e("注销失败:" + info.getRetDetail()); } }); } @Override public void checkLogin() { mUserApi.isLogin(mView.getActivity(), DeviceUuidFactory.getUuid(), new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { try { Logger.e("info:" + info.getRetDetail()); org.json.JSONObject object = new org.json.JSONObject(info.getRetDetail()); if (object.getString("code").equals("300") || object.getInt("code") == 300) { } else { HttpResultBean bean = info.getRetDetail(new TypeToken>() { }.getType()); Consts.setUID(bean.getData().getUid()); //用户是否登录,登录了,创建Consts的userbean Consts.setmConstsUserBean(bean.getData()); } } catch (JSONException e) { e.printStackTrace(); } finally { //无论如何最后走判断 //获取是否是vip EfunboxUtil.getYFVip(mView.getActivity(), null); } } @Override public void onFailure(HttpInfo info) throws IOException { EfunboxUtil.getYFVip(mView.getActivity(), null); } }); } }