package com.hdl.photovoltaic.other;
|
|
import android.text.TextUtils;
|
|
import com.google.gson.Gson;
|
import com.google.gson.JsonObject;
|
import com.hdl.linkpm.sdk.core.exception.HDLException;
|
import com.hdl.photovoltaic.internet.HttpClient;
|
import com.hdl.photovoltaic.internet.api.HttpApi;
|
import com.hdl.photovoltaic.listener.CloudCallBeak;
|
import com.hdl.photovoltaic.ui.bean.MessageBean;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
/**
|
* 警报消息中心逻辑
|
*/
|
public class HdlMessageLogic {
|
private static volatile HdlMessageLogic sHdlMessageLogic;
|
|
/**
|
* 获取当前对象
|
*
|
* @return HdlAccountLogic
|
*/
|
public static synchronized HdlMessageLogic getInstance() {
|
if (sHdlMessageLogic == null) {
|
synchronized (HdlMessageLogic.class) {
|
if (sHdlMessageLogic == null) {
|
sHdlMessageLogic = new HdlMessageLogic();
|
}
|
}
|
|
}
|
return sHdlMessageLogic;
|
}
|
|
|
/**
|
* 获取未处理消息数量
|
*
|
* @param cloudCallBeak -
|
*/
|
public void getMessageUntreatedCount(CloudCallBeak<String> cloudCallBeak) {
|
String requestUrl = HttpApi.POST_Message_UntreatedCount;
|
JsonObject json = new JsonObject();
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String str) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(str);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onFailure(e);
|
}
|
}
|
});
|
|
|
}
|
|
/**
|
* 获取消息列表
|
*
|
* @param messageStatus all:全部,untreated:未处理,processed:已处理;
|
* @param cloudCallBeak -
|
*/
|
public void getMessageList(MessageStatus messageStatus, CloudCallBeak<List<MessageBean>> cloudCallBeak) {
|
String requestUrl = HttpApi.POST_Message_List;
|
JsonObject json = new JsonObject();
|
|
if (messageStatus == MessageStatus.untreated) {
|
json.addProperty("status", "UNTREATED");//未处理
|
} else if (messageStatus == MessageStatus.processed) {
|
json.addProperty("status", "PROCESSED");//已处理
|
}
|
json.addProperty("pageNo", 1);//页码
|
json.addProperty("pageSize", 50);//页数
|
|
List<MessageBean> list = new ArrayList<>();
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String jsonStr) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(new ArrayList<>());
|
}
|
Gson gson = new Gson();
|
MessageListClass messageListClass = gson.fromJson(jsonStr, MessageListClass.class);
|
list.addAll(messageListClass.getList());
|
//总共有多少页
|
long totalPage = messageListClass.totalPage;
|
if (totalPage < 2) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(list);
|
}
|
return;
|
}
|
//记录请求条数
|
AtomicInteger atomicInteger = new AtomicInteger(0);
|
//从第二页获取数据
|
for (int i = 2; i <= totalPage; i++) {
|
json.addProperty("pageNo", i);//更新页码
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String jsonStr) {
|
atomicInteger.set(atomicInteger.get() + 1);
|
MessageListClass messageListClass1 = gson.fromJson(jsonStr, MessageListClass.class);
|
list.addAll(messageListClass1.getList());
|
if (atomicInteger.get() == totalPage - 1) {
|
//最后一条退出
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(list);
|
}
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
atomicInteger.set(atomicInteger.get() + 1);
|
if (atomicInteger.get() == totalPage - 1) {
|
//最后一条退出
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(list);
|
}
|
}
|
}
|
});
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onFailure(e);
|
}
|
}
|
});
|
|
|
}
|
|
|
/**
|
* 获取消息详情
|
*
|
* @param cloudCallBeak -
|
*/
|
public void getMessageInfo(CloudCallBeak<MessageBean> cloudCallBeak) {
|
String requestUrl = HttpApi.POST_Message_Info;
|
JsonObject json = new JsonObject();
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String jsonStr) {
|
if (TextUtils.isEmpty(jsonStr)) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(null);
|
}
|
}
|
Gson gson = new Gson();
|
MessageBean messageBean = gson.fromJson(jsonStr, MessageBean.class);
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(messageBean);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onFailure(e);
|
}
|
}
|
});
|
|
|
}
|
|
/**
|
* 消息标记已读(已解除)
|
*
|
* @param msgId 消息id
|
* @param cloudCallBeak -
|
*/
|
public void getMessageUntreatedCount(String msgId, CloudCallBeak<Boolean> cloudCallBeak) {
|
String requestUrl = HttpApi.POST_Message_Solve;
|
JsonObject json = new JsonObject();
|
json.addProperty("msgId", msgId);
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String str) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(true);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onFailure(e);
|
}
|
}
|
});
|
|
|
}
|
|
|
public enum MessageStatus {
|
all,//全部
|
untreated,//未处理
|
processed,//已处理
|
|
|
}
|
|
static class MessageListClass {
|
|
//总条数
|
private long totalCount;
|
//总页数
|
private long totalPage;
|
//当前页
|
private long pageNo;
|
//页数
|
private long pageSize;
|
//消息列表
|
private List<MessageBean> list;
|
|
public long getTotalCount() {
|
return totalCount;
|
}
|
|
public void setTotalCount(long totalCount) {
|
this.totalCount = totalCount;
|
}
|
|
public long getTotalPage() {
|
return totalPage;
|
}
|
|
public void setTotalPage(long totalPage) {
|
this.totalPage = totalPage;
|
}
|
|
public long getPageNo() {
|
return pageNo;
|
}
|
|
public void setPageNo(long pageNo) {
|
this.pageNo = pageNo;
|
}
|
|
public long getPageSize() {
|
return pageSize;
|
}
|
|
public void setPageSize(long pageSize) {
|
this.pageSize = pageSize;
|
}
|
|
public List<MessageBean> getList() {
|
return list == null ? new ArrayList<>() : list;
|
}
|
|
public void setList(List<MessageBean> list) {
|
this.list = list;
|
}
|
}
|
|
}
|