package com.yeshi.ec.rebate.myapplication.presenter;
|
|
import android.app.Activity;
|
import android.content.Context;
|
import android.content.DialogInterface;
|
import android.content.Intent;
|
import android.support.v7.widget.LinearLayoutCompat;
|
import android.view.View;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
|
import com.alibaba.baichuan.android.trade.model.AlibcShowParams;
|
import com.alibaba.baichuan.android.trade.model.OpenType;
|
import com.bumptech.glide.Glide;
|
import com.bumptech.glide.load.engine.DiskCacheStrategy;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
|
import com.wpc.library.util.cache.DiskLruCache;
|
import com.wpc.library.util.common.StringUtils;
|
import com.yeshi.ec.rebate.myapplication.BasicTextHttpResponseHandler;
|
import com.yeshi.ec.rebate.myapplication.ShoppingApi;
|
import com.yeshi.ec.rebate.myapplication.contract.MessgeContract;
|
import com.yeshi.ec.rebate.myapplication.entity.MainMessage;
|
import com.yeshi.ec.rebate.myapplication.model.MessgeModel;
|
import com.yeshi.ec.rebate.myapplication.ui.dialog.RedPacketHintDialog;
|
import com.yeshi.ec.rebate.myapplication.ui.message.MainMessageAdapter;
|
import com.yeshi.ec.rebate.myapplication.ui.mine.LoginSelectActivity;
|
import com.yeshi.ec.rebate.myapplication.ui.recommend.ShareExplosionsGoodsDetailActivity;
|
import com.yeshi.ec.rebate.myapplication.util.GlideCircleTransform;
|
import com.yeshi.ec.rebate.myapplication.util.JumpActivityUtil;
|
import com.yeshi.ec.rebate.myapplication.util.user.UserUtil;
|
|
import org.apache.http.Header;
|
import org.json.JSONArray;
|
import org.json.JSONObject;
|
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.Iterator;
|
import java.util.List;
|
|
/**
|
* 消息 Persenter
|
*/
|
public class MessgePresenter extends BasePresenter<MessgeContract.MessgeView> {
|
private Context mContext;
|
private MessgeModel model;
|
|
public MessgePresenter(Context mContext) {
|
this.mContext = mContext;
|
this.model = new MessgeModel();
|
}
|
|
/**
|
* 未读消息
|
*/
|
public void getUnReadMsgCount(String uid) {
|
model.getUnReadMsgCount(mContext, uid, new MessgeContract.onMessgeCallBack() {
|
@Override
|
public void onSuccess(JSONObject jsonObject) {
|
if (getView() != null) {
|
getView().onUnReadMsgCount(jsonObject);
|
}
|
}
|
});
|
}
|
|
/**
|
* 清空未读消息
|
*/
|
public void setAllMsgRead(String uid) {
|
model.setAllMsgRead(mContext, uid, new MessgeContract.onMessgeCallBack() {
|
@Override
|
public void onSuccess(JSONObject jsonObject) {
|
if (getView() != null) {
|
getView().onAllMsgReadSuccess(jsonObject);
|
}
|
}
|
});
|
}
|
|
/**
|
* 消息中心红包
|
*/
|
public void getMSGConfig(String uid) {
|
model.getMSGConfig(mContext, uid, new MessgeContract.onMessgeCallBack() {
|
@Override
|
public void onSuccess(JSONObject jsonObject) {
|
if (getView() != null) {
|
getView().onMSGConfigSuccess(jsonObject);
|
}
|
}
|
});
|
}
|
|
/**
|
* 设置未读消息条数
|
*
|
* @param jsonObject
|
* @param tv_order_notice_num
|
* @param tv_capital_notice_num
|
* @param tv_account_notice_num
|
* @param tv_invite_notice_num
|
* @param tv_other_msg_num
|
* @param ll_order_notice_num
|
* @param ll_capital_notice_num
|
* @param ll_account_notice_num
|
* @param ll_invite_notice_num
|
* @param ll_other_msg_num
|
* @param iv_red_dot
|
*/
|
public void setUnReadMsgCount(JSONObject jsonObject, TextView tv_order_notice_num, TextView tv_capital_notice_num, TextView tv_account_notice_num, TextView tv_invite_notice_num, TextView tv_other_msg_num, LinearLayout ll_order_notice_num, LinearLayout ll_capital_notice_num, LinearLayout ll_account_notice_num, LinearLayout ll_invite_notice_num, LinearLayout ll_other_msg_num, TextView iv_red_dot) {
|
String typeOrder = jsonObject.optJSONObject("data").optString("typeOrder");
|
String typeMoney = jsonObject.optJSONObject("data").optString("typeMoney");
|
String typeAccount = jsonObject.optJSONObject("data").optString("typeAccount");
|
String typeInvite = jsonObject.optJSONObject("data").optString("typeInvite");
|
String typeSystem = jsonObject.optJSONObject("data").optString("typeSystem");
|
String typeOther = jsonObject.optJSONObject("data").optString("typeOther");
|
tv_order_notice_num.setText(typeOrder);
|
tv_capital_notice_num.setText(typeMoney);
|
tv_account_notice_num.setText(typeAccount);
|
tv_invite_notice_num.setText(typeInvite);
|
tv_other_msg_num.setText(typeOther);
|
ll_order_notice_num.setVisibility(typeOrder.equalsIgnoreCase("0") ? View.GONE : View.VISIBLE);
|
ll_capital_notice_num.setVisibility(typeMoney.equalsIgnoreCase("0") ? View.GONE : View.VISIBLE);
|
ll_account_notice_num.setVisibility(typeAccount.equalsIgnoreCase("0") ? View.GONE : View.VISIBLE);
|
ll_invite_notice_num.setVisibility(typeInvite.equalsIgnoreCase("0") ? View.GONE : View.VISIBLE);
|
ll_other_msg_num.setVisibility(typeOther.equalsIgnoreCase("0") ? View.GONE : View.VISIBLE);
|
// iv_red_dot.setVisibility(typeSystem.equalsIgnoreCase("0") ? View.INVISIBLE : View.VISIBLE);
|
iv_red_dot.setVisibility(StringUtils.isEmpty(typeSystem) || typeSystem.equalsIgnoreCase("0") ?
|
View.GONE : View.VISIBLE);
|
iv_red_dot.setText(typeSystem);
|
}
|
|
/**
|
* 消息红包跳转 百川
|
*
|
* @param floatImgDetail
|
* @param accountLogin
|
* @param isLogin
|
* @param imgUrl
|
* @param builder
|
*/
|
public void setMSGConfig_baichuan(JSONObject floatImgDetail, final boolean accountLogin, final boolean isLogin, String imgUrl, RedPacketHintDialog.Builder builder) {
|
JSONObject params = null;
|
try {
|
params = new JSONObject(floatImgDetail.optString("params"));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
String str = "";
|
if (params == null)
|
return;
|
Iterator<String> its = params.keys();
|
while (its.hasNext()) {
|
String key = its.next();
|
str = params.optString(key);
|
}
|
final String url = str;
|
builder.setPositiveButton(new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
if (accountLogin && !isLogin) {
|
UserUtil.jumpLogin(mContext);
|
dialog.dismiss();
|
} else {
|
AlibcShowParams alibcShowParams = new AlibcShowParams();
|
alibcShowParams.setOpenType(OpenType.Native);
|
JumpActivityUtil.jumpBaiChuan((Activity) mContext, "", url, "", alibcShowParams);
|
dialog.dismiss();
|
}
|
}
|
}).imgUrl(imgUrl).setNegativeButton(new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
}
|
}).create();
|
}
|
|
/**
|
* 消息中心弹窗jumpDetail 为null
|
*
|
* @param builder
|
*/
|
public void setMSGConfig_jumpDetailnull(RedPacketHintDialog.Builder builder) {
|
builder.setPositiveButton(new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
}
|
}).setNegativeButton(new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
}
|
}).create().show();
|
}
|
|
/**
|
* 系统消息-列表处理
|
*
|
* @param mPage
|
* @param jsonObject
|
* @param ll_critical_notice
|
* @param isLogin
|
* @param iv_critical_msg_img
|
* @param iv_critical_msg_grade
|
* @param tv_critical_msg_title
|
* @param tv_critical_msg_time
|
* @param tv_critical_msg_content
|
* @param iv_red_dot
|
*/
|
public void setMessage(int mPage, JSONObject jsonObject, LinearLayout ll_critical_notice, boolean isLogin, ImageView iv_critical_msg_img, ImageView iv_critical_msg_grade, TextView tv_critical_msg_title, TextView tv_critical_msg_time, TextView tv_critical_msg_content, TextView iv_red_dot) {
|
if (mPage == 1) {
|
JSONObject systemMsg = jsonObject.optJSONObject("data").optJSONObject("systemMsg");
|
ll_critical_notice.setVisibility(systemMsg == null ? View.GONE : View.VISIBLE);
|
if (systemMsg != null && isLogin) { //登陆才显示 系统消息
|
Glide.with(mContext).load(systemMsg.optString("portrait"))
|
.transform(new GlideCircleTransform(mContext)).into(iv_critical_msg_img);
|
Glide.with(mContext).load(systemMsg.optString("timeTag")).into(iv_critical_msg_grade);
|
tv_critical_msg_title.setText(systemMsg.optString("title"));
|
tv_critical_msg_time.setText(systemMsg.optString("createTime"));
|
tv_critical_msg_content.setText(systemMsg.optString("content"));
|
// iv_red_dot.setVisibility(StringUtils.isEmpty(systemMsg.optString(
|
// "unReadCount")) || systemMsg.optString(
|
// "unReadCount").equalsIgnoreCase("0") ?
|
// View.INVISIBLE : View.VISIBLE);
|
iv_red_dot.setVisibility(StringUtils.isEmpty(systemMsg.optString(
|
"unReadCount")) || systemMsg.optString(
|
"unReadCount").equalsIgnoreCase("0") ?
|
View.GONE : View.VISIBLE);
|
iv_red_dot.setText(systemMsg.optString("unReadCount"));
|
|
}
|
}
|
}
|
|
/**
|
* 打开其它Activity
|
*/
|
public void openActivity(JSONObject jsonObject) {
|
Intent intent = null;
|
JSONObject params = null;
|
try {
|
intent = new Intent(mContext, Class.forName(jsonObject
|
.optJSONObject("jumpDetail").optString("activity")));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
try {
|
params = new JSONObject(jsonObject.optString("params"));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
if (params != null) {
|
Iterator<String> its = params.keys();
|
while (its.hasNext()) {
|
String key = its.next();
|
String value = params.optString(key);
|
intent.putExtra(key, value);
|
}
|
}
|
mContext.startActivity(intent);
|
}
|
|
/**
|
* 处理公告消息
|
*
|
* @param notifyMsg
|
* @param ll_critical_announce
|
* @param ll_critical_announce_title
|
* @param ll_critical_announce_time
|
* @param ll_critical_announce_content
|
* @param ll_critical_announce_img //公告图片
|
*/
|
public void setAnnounce(final JSONObject notifyMsg, LinearLayoutCompat ll_critical_announce, TextView ll_critical_announce_title, TextView ll_critical_announce_time, TextView ll_critical_announce_content, ImageView ll_critical_announce_img, ImageView ll_critical_announce_reddot) {
|
// ll_critical_announce.setVisibility(View.VISIBLE);//显示 公告布局
|
ll_critical_announce_title.setText(notifyMsg.optString("title"));//标题
|
ll_critical_announce_time.setText(notifyMsg.optString("time"));//时间
|
ll_critical_announce_content.setText(notifyMsg.optString("latestMsg"));//公告内容
|
//已经阅读红点隐藏
|
if (notifyMsg.optBoolean("read")) {
|
ll_critical_announce_reddot.setVisibility(View.INVISIBLE);
|
} else {
|
ll_critical_announce_reddot.setVisibility(View.VISIBLE);
|
}
|
//有图片地址显示图片
|
if (notifyMsg.optString("picture") != null) {
|
ll_critical_announce_img.setVisibility(View.VISIBLE);
|
Glide.with(mContext)
|
.load(notifyMsg.optString("picture"))
|
.skipMemoryCache(false)
|
.dontAnimate()
|
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)//保存最终图片
|
.into(ll_critical_announce_img);
|
} else {//否则隐藏图片
|
ll_critical_announce_img.setVisibility(View.GONE);
|
}
|
//jumpDetail不返回时不跳转
|
if (notifyMsg.optJSONObject("jumpDetail") != null) {
|
// if (notifyMsg.optJSONObject("jumpDetail").optString("type").equals("web")) {
|
ll_critical_announce.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (notifyMsg.optJSONObject("jumpDetail") != null) {
|
getReadCommonMsg(notifyMsg.optString("type"));//点击请求接口
|
openActivity(notifyMsg);//跳转activity
|
}
|
}
|
});
|
// }
|
}
|
}
|
|
/**
|
* 标记 公告 请求接口
|
*
|
* @param type
|
*/
|
private void getReadCommonMsg(String type) {
|
ShoppingApi.getreadCommonMsg(mContext, getUID(), type, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
}
|
});
|
}
|
|
/**
|
* 展示红包等级福利提示Dialog
|
*
|
* @param builder
|
* @param floatImgDetail
|
* @param accountLogin
|
* @param isLogin
|
*/
|
public void showHintDialog(RedPacketHintDialog.Builder builder, final JSONObject floatImgDetail, final boolean accountLogin, final boolean isLogin) {
|
builder.setPositiveButton(new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
if (accountLogin && !isLogin) {
|
UserUtil.jumpLogin(mContext);
|
dialog.dismiss();
|
} else {
|
openActivity(floatImgDetail);
|
dialog.dismiss();
|
}
|
|
}
|
}).setNegativeButton(new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
}
|
}).create();
|
}
|
|
/**
|
* @param date 当前时间
|
* @param sameDate 上次打开时间
|
* @return
|
*/
|
public boolean isSameDay(Date date, Date sameDate) {
|
if (null == date || null == sameDate)
|
return false;
|
Calendar nowCalendar = Calendar.getInstance();
|
nowCalendar.setTime(sameDate);
|
Calendar dateCalendar = Calendar.getInstance();
|
dateCalendar.setTime(date);
|
return nowCalendar.get(Calendar.YEAR) == dateCalendar.get(Calendar.YEAR)
|
&& nowCalendar.get(Calendar.MONTH) == dateCalendar.get(Calendar.MONTH)
|
&& nowCalendar.get(Calendar.DATE) == dateCalendar.get(Calendar.DATE);
|
}
|
|
/**
|
* 缓存
|
*
|
* @param cache
|
* @param mPage
|
* @param mList
|
* @param adapter
|
* @param ll_critical_notice
|
* @param tv_critical_msg_title
|
* @param tv_critical_msg_time
|
* @param tv_critical_msg_content
|
* @param iv_red_dot
|
*/
|
public void getCaChe(DiskLruCache cache, int mPage, List<MainMessage> mList, MainMessageAdapter adapter, LinearLayout ll_critical_notice,
|
TextView tv_critical_msg_title, TextView tv_critical_msg_time,
|
TextView tv_critical_msg_content, TextView iv_red_dot, ImageView iv_critical_msg_img, ImageView iv_critical_msg_grade,
|
MessgeContract.onCommonListCallback listCallback) {
|
|
if (cache != null) {
|
{
|
DiskLruCache.Snapshot snapshot = null;
|
try {
|
snapshot = cache.get(getKey("getHomeMsgList"));
|
if (snapshot != null) {
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
List<MainMessage> list = gson.fromJson(
|
snapshot.getString(0),
|
new TypeToken<List<MainMessage>>() {
|
}.getType());
|
if (mPage == 1) {
|
mList.clear();
|
}
|
mList.addAll(list);
|
adapter.notifyDataSetChanged();
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
if (snapshot != null) {
|
snapshot.close();
|
}
|
}
|
}
|
{
|
DiskLruCache.Snapshot snapshot = null;
|
try {
|
snapshot = cache.get(getKey("systemMsg"));
|
if (snapshot != null) {
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
JSONObject systemMsg = gson.fromJson(
|
snapshot.getString(0),
|
JSONObject.class);
|
ll_critical_notice.setVisibility(systemMsg == null ? View.GONE : View.VISIBLE);
|
|
if (systemMsg != null) { //登陆才显示 系统消息
|
Glide.with(mContext).load(systemMsg.optString("portrait"))
|
.transform(new GlideCircleTransform(mContext)).into(iv_critical_msg_img);
|
Glide.with(mContext).load(systemMsg.optString("timeTag")).into(iv_critical_msg_grade);
|
tv_critical_msg_title.setText(systemMsg.optString("title"));
|
tv_critical_msg_time.setText(systemMsg.optString("createTime"));
|
tv_critical_msg_content.setText(systemMsg.optString("content"));
|
iv_red_dot.setVisibility(StringUtils.isEmpty(systemMsg.optString(
|
"unReadCount")) || systemMsg.optString(
|
"unReadCount").equalsIgnoreCase("0") ?
|
View.GONE : View.VISIBLE);
|
iv_red_dot.setText(systemMsg.optString("unReadCount"));
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
if (snapshot != null) {
|
snapshot.close();
|
}
|
}
|
}
|
{
|
DiskLruCache.Snapshot snapshot = null;
|
try {
|
snapshot = cache.get(getKey("commonList"));
|
if (snapshot != null) {
|
JSONArray commonList = new JSONArray(snapshot.getString(0));
|
listCallback.onSuccess(commonList);//返回接口
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
} finally {
|
if (snapshot != null) {
|
snapshot.close();
|
}
|
}
|
}
|
}
|
}
|
|
private String getKey(String method) {
|
return new Md5FileNameGenerator().generate(method);
|
}
|
|
/**
|
* 获取 用户UID
|
*/
|
public String getUID() {
|
return mContext.getSharedPreferences("user", Context.MODE_PRIVATE).getString("uid", "");
|
}
|
}
|