Commit acdf844c authored by jianglx's avatar jianglx

优化客服

parent da9b1214
...@@ -30,6 +30,7 @@ import android.widget.Toast; ...@@ -30,6 +30,7 @@ import android.widget.Toast;
import com.alibaba.android.arouter.launcher.ARouter; import com.alibaba.android.arouter.launcher.ARouter;
import com.frame.base.url.Constance; import com.frame.base.url.Constance;
import com.frame.rv.config.RvFrameConfig; import com.frame.rv.config.RvFrameConfig;
import com.ruiwenliu.wrapper.ICommunicateListener;
import com.ruiwenliu.wrapper.MessageEventLogout; import com.ruiwenliu.wrapper.MessageEventLogout;
import com.ruiwenliu.wrapper.MessageEventRemoteLogin; import com.ruiwenliu.wrapper.MessageEventRemoteLogin;
import com.ruiwenliu.wrapper.SPConstance; import com.ruiwenliu.wrapper.SPConstance;
...@@ -55,9 +56,11 @@ import com.rv.home.rv.module.ApiConfig; ...@@ -55,9 +56,11 @@ import com.rv.home.rv.module.ApiConfig;
import com.ruiwenliu.wrapper.base.presenter.CommonPresenter; import com.ruiwenliu.wrapper.base.presenter.CommonPresenter;
import com.rv.home.rv.module.ui.main.home.HomeFragment; import com.rv.home.rv.module.ui.main.home.HomeFragment;
import com.rv.home.rv.module.ui.main.home.bean.EffectiveTimeBean; import com.rv.home.rv.module.ui.main.home.bean.EffectiveTimeBean;
import com.rv.im.CustomerListActivity;
import com.rv.im.ImService; import com.rv.im.ImService;
import com.rv.im.ImSetting; import com.rv.im.ImSetting;
import com.rv.im.call.AudioOrVideoController; import com.rv.im.call.AudioOrVideoController;
import com.rv.im.db.service.ChatMessageServiceImp;
import com.rv.im.db.table.ChatMessage; import com.rv.im.db.table.ChatMessage;
import com.rv.im.view.TitleTextWindow; import com.rv.im.view.TitleTextWindow;
import com.rv.im.xmpp.ListenerManager; import com.rv.im.xmpp.ListenerManager;
...@@ -95,7 +98,7 @@ import cn.jpush.android.api.BasicPushNotificationBuilder; ...@@ -95,7 +98,7 @@ import cn.jpush.android.api.BasicPushNotificationBuilder;
import cn.jpush.android.api.JPushInterface; import cn.jpush.android.api.JPushInterface;
public class MainActivity extends BaseActivity<CommonPresenter> implements DownListenerManager.DownListener, ChatMessageListener { public class MainActivity extends BaseActivity<CommonPresenter> implements DownListenerManager.DownListener, ChatMessageListener ,ICommunicateListener {
private boolean hasGetVersionInfo = false; // 判断是否已经获取过版本信息 private boolean hasGetVersionInfo = false; // 判断是否已经获取过版本信息
...@@ -421,6 +424,11 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL ...@@ -421,6 +424,11 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
@Override @Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 9527) {
((HomeFragment) mAdapter.getItem(0)).ChangeImStatus(hasUnreadMsg());
((TourismFragment) mAdapter.getItem(1)).ChangeImStatus(hasUnreadMsg());
return;
}
if (mAdapter != null) { if (mAdapter != null) {
mAdapter.getCurrentFragment().onActivityResult(requestCode, resultCode, data); mAdapter.getCurrentFragment().onActivityResult(requestCode, resultCode, data);
} }
...@@ -463,6 +471,8 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL ...@@ -463,6 +471,8 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
ARouter.getInstance() ARouter.getInstance()
.build(Constance.ACTIVITY_URL_COUPONALL) .build(Constance.ACTIVITY_URL_COUPONALL)
.navigation(); .navigation();
} else if (intent != null && "chat".equals(intent.getStringExtra("to"))) {
startActivityForResult(new Intent(this, CustomerListActivity.class), 9527);
} else if (intent != null && "mine_wallet".equals(intent.getStringExtra("to"))) { } else if (intent != null && "mine_wallet".equals(intent.getStringExtra("to"))) {
setCurrent(TYPE_MINE); setCurrent(TYPE_MINE);
ARouter.getInstance() ARouter.getInstance()
...@@ -754,4 +764,9 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL ...@@ -754,4 +764,9 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
((HomeFragment) mAdapter.getItem(0)).newsComing(); ((HomeFragment) mAdapter.getItem(0)).newsComing();
((TourismFragment) mAdapter.getItem(1)).newsComing(); ((TourismFragment) mAdapter.getItem(1)).newsComing();
} }
@Override
public boolean hasUnreadMsg() {
return ChatMessageServiceImp.getInstance(getApplicationContext()).getUnReadMsg() > 0;
}
} }
package com.ruiwenliu.wrapper;
public interface ICommunicateListener {
boolean hasUnreadMsg();
}
package com.rv.home.rv.module.ui.main.home; package com.rv.home.rv.module.ui.main.home;
import android.Manifest; import android.Manifest;
import android.app.Activity;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
...@@ -39,6 +40,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter; ...@@ -39,6 +40,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.frame.base.url.Constance; import com.frame.base.url.Constance;
import com.frame.rv.config.RvFrameConfig; import com.frame.rv.config.RvFrameConfig;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.ruiwenliu.wrapper.ICommunicateListener;
import com.ruiwenliu.wrapper.SPConstance; import com.ruiwenliu.wrapper.SPConstance;
import com.ruiwenliu.wrapper.base.BaseBean; import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseFragment; import com.ruiwenliu.wrapper.base.BaseFragment;
...@@ -241,8 +243,6 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa ...@@ -241,8 +243,6 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
private int countPage; private int countPage;
private int mPage; private int mPage;
private boolean hasNewMessage ;
public static HomeFragment getInstance(int type) { public static HomeFragment getInstance(int type) {
Bundle bundl = new Bundle(); Bundle bundl = new Bundle();
bundl.putInt("type", type); bundl.putInt("type", type);
...@@ -251,6 +251,7 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa ...@@ -251,6 +251,7 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
return fragment; return fragment;
} }
@Override @Override
public int getViewLayout() { public int getViewLayout() {
return R.layout.fragment_home; return R.layout.fragment_home;
...@@ -282,6 +283,12 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa ...@@ -282,6 +283,12 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
tvHotRvtour.setTextColor(getResources().getColor(R.color.colorWrite)); tvHotRvtour.setTextColor(getResources().getColor(R.color.colorWrite));
tvHotRvtour.getPaint().setFakeBoldText(true); tvHotRvtour.getPaint().setFakeBoldText(true);
if (((ICommunicateListener) _mActivity).hasUnreadMsg()) {
travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white_news);
} else {
travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white);
}
ViewTreeObserver observer = rlItemLayout.getViewTreeObserver(); ViewTreeObserver observer = rlItemLayout.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override @Override
...@@ -876,17 +883,11 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa ...@@ -876,17 +883,11 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
scrollview.fullScroll(View.FOCUS_UP); scrollview.fullScroll(View.FOCUS_UP);
} else if (id == R.id.iv_home_travel_server_image) { } else if (id == R.id.iv_home_travel_server_image) {
if (isLogin()) { if (isLogin()) {
hasNewMessage = false ;
if (llItemTop.getVisibility() != View.VISIBLE) {
travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white);
} else {
travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange);
}
ComponentName name = new ComponentName(getActivity(), "com.rv.im.CustomerListActivity"); ComponentName name = new ComponentName(getActivity(), "com.rv.im.CustomerListActivity");
Intent intent = new Intent(); Intent intent = new Intent();
intent.putExtra("login_user_id", Cookie.getStringValue(getContext(), SPConstance.USER_JSON_IMUSERID)); intent.putExtra("login_user_id", Cookie.getStringValue(getContext(), SPConstance.USER_JSON_IMUSERID));
intent.setComponent(name); intent.setComponent(name);
startActivity(intent); startActivityForResult(intent, 9527);
} }
} else if (id == R.id.tv_home_car_rental_guide) { } else if (id == R.id.tv_home_car_rental_guide) {
//租车指南 //租车指南
...@@ -1255,12 +1256,12 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa ...@@ -1255,12 +1256,12 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
//只是layout背景透明(仿知乎滑动效果) //只是layout背景透明(仿知乎滑动效果)
llItemSearch.setBackground(getResources().getDrawable(R.drawable.shape_rv_textview_home_translucent)); llItemSearch.setBackground(getResources().getDrawable(R.drawable.shape_rv_textview_home_translucent));
travelCityText.setTextColor(getResources().getColor(R.color.colorWrite)); travelCityText.setTextColor(getResources().getColor(R.color.colorWrite));
// if(hasNewMessage){
// travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white_news); if (((ICommunicateListener) _mActivity).hasUnreadMsg()) {
// }else { travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white_news);
// travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white); } else {
// }
travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white); travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white);
}
ivTravelCityTextHint.setImageResource(R.drawable.rv_common_icon_up_arrow2); ivTravelCityTextHint.setImageResource(R.drawable.rv_common_icon_up_arrow2);
ivSearchInputHint.setImageResource(R.drawable.rv_common_icon_search2); ivSearchInputHint.setImageResource(R.drawable.rv_common_icon_search2);
searchInput.setHintTextColor(getResources().getColor(R.color.colorWrite)); searchInput.setHintTextColor(getResources().getColor(R.color.colorWrite));
...@@ -1272,12 +1273,11 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa ...@@ -1272,12 +1273,11 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
} else { } else {
llItemTop.setVisibility(View.VISIBLE); llItemTop.setVisibility(View.VISIBLE);
llItemSearch.setBackground(getResources().getDrawable(R.drawable.shape_rv_textview_home_search)); llItemSearch.setBackground(getResources().getDrawable(R.drawable.shape_rv_textview_home_search));
// if(hasNewMessage){ if (((ICommunicateListener) _mActivity).hasUnreadMsg()) {
// travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange_news); travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange_news);
// }else{ } else {
// travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange);
// }
travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange); travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange);
}
travelCityText.setTextColor(getResources().getColor(R.color.colorMain)); travelCityText.setTextColor(getResources().getColor(R.color.colorMain));
ivTravelCityTextHint.setImageResource(R.drawable.rv_common_icon_up_arrow); ivTravelCityTextHint.setImageResource(R.drawable.rv_common_icon_up_arrow);
ivSearchInputHint.setImageResource(R.drawable.rv_common_icon_search); ivSearchInputHint.setImageResource(R.drawable.rv_common_icon_search);
...@@ -1403,13 +1403,29 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa ...@@ -1403,13 +1403,29 @@ public class HomeFragment extends BaseFragment<HomePresenter> implements Observa
* 新消息 * 新消息
*/ */
public void newsComing() { public void newsComing() {
// hasNewMessage = true ; if (llItemTop.getVisibility() != View.VISIBLE) {
// if (llItemTop.getVisibility() != View.VISIBLE) { travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white_news);
// travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white_news); } else {
// } else { travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange_news);
// travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange_news); }
// } }
public void ChangeImStatus(boolean hasUnReadMsg) {
if (llItemTop.getVisibility() != View.VISIBLE) {
if (hasUnReadMsg) {
travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white_news);
} else {
travelServerImage.setImageResource(R.drawable.rv_rentingcar_icon_service_white);
} }
} else {
if (hasUnReadMsg) {
travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange_news);
} else {
travelServerImage.setImageResource(R.drawable.rentingcar_icon_service_orangeorange);
}
}
}
@Override @Override
public void onDestroy() { public void onDestroy() {
......
...@@ -28,6 +28,7 @@ import com.baidu.mapapi.search.geocode.GeoCoder; ...@@ -28,6 +28,7 @@ import com.baidu.mapapi.search.geocode.GeoCoder;
import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener; import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener;
import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult; import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.ruiwenliu.wrapper.ICommunicateListener;
import com.ruiwenliu.wrapper.SPConstance; import com.ruiwenliu.wrapper.SPConstance;
import com.frame.base.url.Constance; import com.frame.base.url.Constance;
import com.ruiwenliu.wrapper.base.BaseBean; import com.ruiwenliu.wrapper.base.BaseBean;
...@@ -110,9 +111,6 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S ...@@ -110,9 +111,6 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S
private LocationManager locationManager; private LocationManager locationManager;
private GeoCoder geoCoder; private GeoCoder geoCoder;
private boolean hasNewMessage;
public static TourismFragment getInstance(int type) { public static TourismFragment getInstance(int type) {
Bundle bundl = new Bundle(); Bundle bundl = new Bundle();
bundl.putInt("type", type); bundl.putInt("type", type);
...@@ -202,6 +200,11 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S ...@@ -202,6 +200,11 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S
} }
} }
}, rvTourAround); }, rvTourAround);
if (((ICommunicateListener) _mActivity).hasUnreadMsg()) {
ImgTravelServer.setImageResource(R.drawable.common_journey_service_gray_news);
} else {
ImgTravelServer.setImageResource(R.drawable.common_journey_service_gray);
}
} }
@Override @Override
...@@ -234,14 +237,11 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S ...@@ -234,14 +237,11 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S
.navigation(); .navigation();
} else if (id == R.id.travel_server_image) { } else if (id == R.id.travel_server_image) {
if (isLogin()) { if (isLogin()) {
hasNewMessage = false;
ImgTravelServer.setImageResource(R.drawable.common_journey_service_gray);
ComponentName name = new ComponentName(getActivity(), "com.rv.im.CustomerListActivity"); ComponentName name = new ComponentName(getActivity(), "com.rv.im.CustomerListActivity");
Intent intent = new Intent(); Intent intent = new Intent();
intent.putExtra("login_user_id", Cookie.getStringValue(getContext(), SPConstance.USER_JSON_IMUSERID)); intent.putExtra("login_user_id", Cookie.getStringValue(getContext(), SPConstance.USER_JSON_IMUSERID));
intent.setComponent(name); intent.setComponent(name);
startActivity(intent); startActivityForResult(intent, 9527);
} }
} else if (id == R.id.ll_item_popular_brigade_many || id == R.id.iv_popular_brigade_many) { } else if (id == R.id.ll_item_popular_brigade_many || id == R.id.iv_popular_brigade_many) {
//查看热门更多 //查看热门更多
...@@ -440,8 +440,15 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S ...@@ -440,8 +440,15 @@ public class TourismFragment extends BaseFragment<TourismPresenter> implements S
} }
public void newsComing() { public void newsComing() {
// hasNewMessage = true; ImgTravelServer.setImageResource(R.drawable.common_journey_service_gray_news);
// ImgTravelServer.setImageResource(R.drawable.common_journey_service_gray_news); }
public void ChangeImStatus(boolean hasUnReadMsg) {
if (hasUnReadMsg) {
ImgTravelServer.setImageResource(R.drawable.common_journey_service_gray_news);
} else {
ImgTravelServer.setImageResource(R.drawable.common_journey_service_gray);
}
} }
......
...@@ -41,8 +41,6 @@ import java.util.List; ...@@ -41,8 +41,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Timer; import java.util.Timer;
import okhttp3.Call;
public class CustomerListActivity extends BaseStatusActivity<CommonPresenter> implements SimpleRefreshLayout.OnSimpleRefreshListener, ChatMessageListener { public class CustomerListActivity extends BaseStatusActivity<CommonPresenter> implements SimpleRefreshLayout.OnSimpleRefreshListener, ChatMessageListener {
private SimpleRefreshLayout refreshLayout; private SimpleRefreshLayout refreshLayout;
...@@ -129,6 +127,7 @@ public class CustomerListActivity extends BaseStatusActivity<CommonPresenter> im ...@@ -129,6 +127,7 @@ public class CustomerListActivity extends BaseStatusActivity<CommonPresenter> im
if (lists != null && lists.size() > 0) { if (lists != null && lists.size() > 0) {
for (Customer customer : lists) { for (Customer customer : lists) {
ChatMessage message = ChatMessageServiceImp.getInstance(getApplicationContext()).getLastMsg(customer.getImUserId()); ChatMessage message = ChatMessageServiceImp.getInstance(getApplicationContext()).getLastMsg(customer.getImUserId());
customer.setUnReadMessage(ChatMessageServiceImp.getInstance(getApplicationContext()).getUnReadMsg(customer.getImUserId()));
if (message != null) customer.setLastMessageInfo(message); if (message != null) customer.setLastMessageInfo(message);
} }
Collections.sort(lists, (o1, o2) -> { Collections.sort(lists, (o1, o2) -> {
...@@ -218,6 +217,7 @@ public class CustomerListActivity extends BaseStatusActivity<CommonPresenter> im ...@@ -218,6 +217,7 @@ public class CustomerListActivity extends BaseStatusActivity<CommonPresenter> im
for (Customer customer : customers) { for (Customer customer : customers) {
if (!TextUtils.isEmpty(customer.getImUserId()) && if (!TextUtils.isEmpty(customer.getImUserId()) &&
customer.getImUserId().equals(fromUserId)) { customer.getImUserId().equals(fromUserId)) {
customer.setUnReadMessage(ChatMessageServiceImp.getInstance(getApplicationContext()).getUnReadMsg(fromUserId));
if (message != null) if (message != null)
customer.setLastMessageInfo(message); customer.setLastMessageInfo(message);
break; break;
......
...@@ -4,6 +4,7 @@ import android.content.Context; ...@@ -4,6 +4,7 @@ import android.content.Context;
import android.graphics.Color; import android.graphics.Color;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder; import com.chad.library.adapter.base.BaseViewHolder;
...@@ -40,11 +41,24 @@ public class CustomerListAdapter extends BaseQuickAdapter<Customer, BaseViewHold ...@@ -40,11 +41,24 @@ public class CustomerListAdapter extends BaseQuickAdapter<Customer, BaseViewHold
} }
if (!TextUtils.isEmpty(item.getLastMsg())) if (!TextUtils.isEmpty(item.getLastMsg()))
// helper.setText(R.id.tv_last_msg, item.getLastMsg());
helper.setText(R.id.tv_last_msg, parser.addSmileySpans(deleteHtml(item.getLastMsg()), true)); helper.setText(R.id.tv_last_msg, parser.addSmileySpans(deleteHtml(item.getLastMsg()), true));
else { else {
helper.setText(R.id.tv_last_msg, " "); helper.setText(R.id.tv_last_msg, " ");
} }
if (item.getUnReadMessage() > 0) {
if(item.getUnReadMessage() < 100){
helper.setText(R.id.tv_unread_num, item.getUnReadMessage() + "");
}else{
helper.setText(R.id.tv_unread_num, "···");
}
helper.itemView.findViewById(R.id.tv_unread_num).setVisibility(View.VISIBLE);
helper.itemView.findViewById(R.id.img_no_unread).setVisibility(View.GONE);
} else {
helper.itemView.findViewById(R.id.tv_unread_num).setVisibility(View.GONE);
helper.itemView.findViewById(R.id.img_no_unread).setVisibility(View.VISIBLE);
}
} }
private static String deleteHtml(String msg) { private static String deleteHtml(String msg) {
......
...@@ -24,7 +24,6 @@ public class ConversationDao { ...@@ -24,7 +24,6 @@ public class ConversationDao {
private ConversationDao(Context context) { private ConversationDao(Context context) {
try { try {
this.mContext = context; this.mContext = context;
// mHelper = OpenHelperManager.getHelper(mContext, SQLiteHelper.class);
dao = DaoManager.createDao(SQLiteHelper.getInstance(context).getConnectionSource(), ChatConversation.class); dao = DaoManager.createDao(SQLiteHelper.getInstance(context).getConnectionSource(), ChatConversation.class);
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
...@@ -32,26 +31,10 @@ public class ConversationDao { ...@@ -32,26 +31,10 @@ public class ConversationDao {
} }
public static final ConversationDao getInstance(Context context) { public static final ConversationDao getInstance(Context context) {
// if (instance == null) {
// synchronized (ConversationDao.class) {
// if (instance == null) {
// instance = new ConversationDao(context);
// }
// }
// }
return new ConversationDao(context); return new ConversationDao(context);
} }
// public static final ConversationDao getInstance(Context context) {
// if (instance == null) {
// synchronized (ConversationDao.class) {
// if (instance == null) {
// instance = new ConversationDao(context);
// }
// }
// }
// return instance;
// }
@Override @Override
protected void finalize() throws Throwable { protected void finalize() throws Throwable {
......
...@@ -10,6 +10,7 @@ import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; ...@@ -10,6 +10,7 @@ import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao; import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.dao.DaoManager; import com.j256.ormlite.dao.DaoManager;
import com.j256.ormlite.dao.GenericRawResults; import com.j256.ormlite.dao.GenericRawResults;
import com.rv.im.ImSetting;
import com.rv.im.db.SQLiteHelper; import com.rv.im.db.SQLiteHelper;
import com.rv.im.db.table.ChatMessage; import com.rv.im.db.table.ChatMessage;
import com.rv.im.enums.MessageStatusEnum; import com.rv.im.enums.MessageStatusEnum;
...@@ -102,7 +103,7 @@ public class MessageDao { ...@@ -102,7 +103,7 @@ public class MessageDao {
* 删除消息 * 删除消息
* @param message * @param message
*/ */
public void deleteMessage(ChatMessage message){ public void deleteMessage(ChatMessage message) {
if (dao == null) { if (dao == null) {
LogUtil.e(TAG, "dao is null"); LogUtil.e(TAG, "dao is null");
return; return;
...@@ -272,25 +273,40 @@ public class MessageDao { ...@@ -272,25 +273,40 @@ public class MessageDao {
LogUtil.e(TAG, "userId is null"); LogUtil.e(TAG, "userId is null");
return 0; return 0;
} }
int count = 0; List<ChatMessage> chatMessages = null;
List<ChatMessage> chatMessages;
try { try {
chatMessages = dao.queryBuilder().orderBy("timeSend", false).where() chatMessages = dao.queryBuilder().where()
.eq("fromUserId", userId) .eq("fromUserId", userId)
.or() .and()
.eq("toUserId", userId) .eq("isRead", false)
.query(); .query();
if (chatMessages != null && chatMessages.size() > 0) { } catch (SQLException e) {
for (ChatMessage message : chatMessages) { e.printStackTrace();
if (!message.isRead()) {
count += 1;
} }
return chatMessages != null ? chatMessages.size() : 0;
} }
/***********
* 获取所有未读的消息
* @return
*/
public int getUnReadMessage() {
if (dao == null) {
LogUtil.e(TAG, "dao is null");
return 0;
} }
List<ChatMessage> chatMessages = null;
try {
chatMessages = dao.queryBuilder().where()
.eq("isRead", false)
.and()
.eq("toUserId", ImSetting.getUserId())
.query();
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
return count; return chatMessages != null ? chatMessages.size() : 0;
} }
public void setMessageRead(String userId) { public void setMessageRead(String userId) {
...@@ -302,7 +318,6 @@ public class MessageDao { ...@@ -302,7 +318,6 @@ public class MessageDao {
LogUtil.e(TAG, "userId is null"); LogUtil.e(TAG, "userId is null");
return; return;
} }
int count = 0;
List<ChatMessage> chatMessages; List<ChatMessage> chatMessages;
try { try {
chatMessages = dao.queryBuilder().orderBy("timeSend", false).where() chatMessages = dao.queryBuilder().orderBy("timeSend", false).where()
......
...@@ -80,6 +80,11 @@ public class ChatMessageServiceImp implements IChatMessageService { ...@@ -80,6 +80,11 @@ public class ChatMessageServiceImp implements IChatMessageService {
return dao.getUnReadMessage(targetUserId); return dao.getUnReadMessage(targetUserId);
} }
@Override
public int getUnReadMsg() {
return dao.getUnReadMessage();
}
@Override @Override
public void setMsgRead(String targetUserId) { public void setMsgRead(String targetUserId) {
dao.setMessageRead(targetUserId); dao.setMessageRead(targetUserId);
......
...@@ -24,6 +24,8 @@ public interface IChatMessageService { ...@@ -24,6 +24,8 @@ public interface IChatMessageService {
int getUnReadMsg(String targetUserId); int getUnReadMsg(String targetUserId);
int getUnReadMsg();
void setMsgRead(String targetUserId); void setMsgRead(String targetUserId);
void setVoicePlay(String packId); void setVoicePlay(String packId);
......
...@@ -30,6 +30,8 @@ public class Customer { ...@@ -30,6 +30,8 @@ public class Customer {
private long lastMsgTimes; private long lastMsgTimes;
private int unReadMessage ;
public int get_id() { public int get_id() {
return _id; return _id;
} }
...@@ -102,6 +104,14 @@ public class Customer { ...@@ -102,6 +104,14 @@ public class Customer {
this.lastMsgTimes = lastMsgTimes; this.lastMsgTimes = lastMsgTimes;
} }
public int getUnReadMessage() {
return unReadMessage;
}
public void setUnReadMessage(int unReadMessage) {
this.unReadMessage = unReadMessage;
}
public void setLastMessageInfo(ChatMessage lastMessageInfo) { public void setLastMessageInfo(ChatMessage lastMessageInfo) {
if (lastMessageInfo.getMessageType() == MessageTypeEnum.TEXT.getType()) { if (lastMessageInfo.getMessageType() == MessageTypeEnum.TEXT.getType()) {
......
...@@ -30,13 +30,13 @@ public class NotificationMananger { ...@@ -30,13 +30,13 @@ public class NotificationMananger {
} else { } else {
builder = new NotificationCompat.Builder(context); builder = new NotificationCompat.Builder(context);
} }
Intent intent = new Intent();
intent.setComponent(new ComponentName(context, "com.xxfc.rv.MainActivity"));
intent.putExtra("to","chat") ;
intent.putExtra("fromId",fromId) ;
// //
// Intent intent = new Intent(); // Intent intent = new Intent(context, CustomerListActivity.class);
// intent.setComponent(new ComponentName(context, "com.xxfc.rv."));
// intent.putExtra("to","chat") ;
// intent.putExtra("fromId",fromId) ;
//
Intent intent = new Intent(context, CustomerListActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
Notification notification = builder.setTicker("您有新的消息") Notification notification = builder.setTicker("您有新的消息")
.setSmallIcon(R.mipmap.logo) .setSmallIcon(R.mipmap.logo)
......
...@@ -58,17 +58,52 @@ ...@@ -58,17 +58,52 @@
</LinearLayout> </LinearLayout>
<TextView
android:id="@+id/tv_state" <LinearLayout
android:layout_width="@dimen/size_50" android:layout_width="@dimen/size_50"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10" android:layout_marginRight="@dimen/dp_10"
android:gravity="right|top" android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/tv_state"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:text="在线" android:text="在线"
android:textColor="@color/gray" android:textColor="@color/gray"
android:textSize="@dimen/text_12" /> android:textSize="@dimen/text_12" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/size_3"
android:gravity="right"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_unread_num"
android:layout_width="@dimen/indicator_size"
android:layout_height="@dimen/indicator_size"
android:layout_alignParentEnd="true"
android:layout_marginRight="@dimen/size_3"
android:background="@drawable/tab_unread_bg"
android:gravity="center"
android:textColor="@android:color/white"
android:textSize="10dp"
android:visibility="gone" />
<ImageView
android:id="@+id/img_no_unread"
android:layout_width="@dimen/dp20"
android:layout_height="@dimen/size_15"
android:src="@mipmap/msg_replay_icon"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
......
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