package com.hx.hxchat.utils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONTokener;
import android.content.Context;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.AsyncTask;
import android.text.TextUtils;
import android.util.Log;
import android.widget.ImageView;
import com.easemob.chat.EMGroup;
import com.easemob.chat.EMGroupManager;
import com.easemob.chat.EMMessage;
import com.easemob.chat.TextMessageBody;
import com.fz.core.net.RequestHelper;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.hx.hxchat.Constant;
import com.hx.hxchat.db.LinkerDao;
import com.hx.hxchat.domain.GroupInfo;
import com.hx.hxchat.domain.User;
import com.hx.hxchat.domain.UserFriendBean;
import com.hx.hxchat.domain.UserFriendBean.Items;
import com.loopj.android.http.RequestParams;
import com.mgw.member.R;
import com.mgw.member.constant.Define_C;
import com.mgw.member.http.Http;
import com.mgw.member.manager.BaseApplication;
import com.mgw.member.ui.activity.MainActivity;
import com.mgw.member.uitls.LogUtils;
import com.mgw.member.uitls.PreferenceHelper;
import com.mgw.member.uitls.UIUtils;
import com.squareup.picasso.Picasso;
public class UserUtils {
public static String TAG = UserUtils.class.getSimpleName();
/**
* 根据username获取相应user, r
*
* @param username
* @return
*/
public static User getUserInfo(String username) {
User user = BaseApplication.getApplication().getContactList().get(username);
if (user == null) {
User user2 = BaseApplication.getApplication().GetLinkerDao().getContact(username);
if (user2 == null) {
User useFromNet = getUseFromNetAsync(username);
if (useFromNet != null) {
// 如果没有存到linkdao中
LinkerDao getLinkerDao = BaseApplication.getApplication().GetLinkerDao();
useFromNet.setLinkcache("1");
getLinkerDao.saveContact(useFromNet);
return useFromNet;
} else {
user = new User(username);
}
} else {
return user2;
}
}
// if (user != null) {
//
//
// // User useFromNet = getUseFromNetAsync(username);
// user.setAvatar(useFromNet.getAvatar());
// }
return user;
}
/**
* 设置用户头像
*
* @param username
*/
public static void setUserAvatar(Context context, String username, ImageView imageView) {
if (TextUtils.isEmpty(username)) {
return;
}
if (TextUtils.isDigitsOnly(username)) {
User user = getUserInfo(username);
if (user != null && user.getAvatar() != null && !"".equals(user.getAvatar())) {
Picasso.with(context).load(user.getAvatar()).placeholder(R.drawable.default_avatar).into(imageView);
} else {
Picasso.with(context).load(R.drawable.default_avatar).into(imageView);
}
} else {
Picasso.with(context).load(Uri.parse(username)).placeholder(R.drawable.default_avatar).into(imageView);
}
}
/**
* 设置用户头像
*
* @param context
* @param path
* 图像路径
* @param imageView
* imageview
*/
public static void setUserAvatar(Context context, Uri path, ImageView imageView) {
if (path instanceof Uri) {
Picasso.with(context).load(path).placeholder(R.drawable.default_avatar).into(imageView);
}
}
/**
* 通知自己服务器删除好友
*
* @throws JSONException
*/
public static JSONObject delfriend(Context context, String frienduserid) throws JSONException {
SharedPreferences sp = context.getSharedPreferences("mgw_data", 0);
Map<String, String> params = new HashMap<String, String>();
params.put("type", "member.delfriend");
params.put("userid", sp.getString("mgw_userID", "0"));
params.put("serial", sp.getString("mgw_serial", "0"));// serial登录的随机码(确定没有被挤下去)
params.put("friend", frienduserid);
String resultString = RequestHelper.PostBySingleBitmap(Define_C.mgw_url, params, null);
if (resultString == null || resultString.equals("")) {
return null;
}
Log.i("postGetOrderState", resultString);
JSONTokener jsonParser = new JSONTokener(resultString);
return (JSONObject) jsonParser.nextValue();
}
/**
* 通知自己公司服务器同意添加某个好友
*
* @throws JSONException
*
*/
public static JSONObject addfriend(Context context, String userid) throws JSONException {
SharedPreferences sp = context.getSharedPreferences("mgw_data", 0);
Map<String, String> params = new HashMap<String, String>();
params.put("type", "member.addfriend");
params.put("userid", sp.getString("mgw_userID", "0"));
params.put("serial", sp.getString("mgw_serial", "0"));
params.put("friend", userid);
String resultString = RequestHelper.PostBySingleBitmap(Define_C.mgw_url, params, null);
if (resultString == null || resultString.equals("")) {
return null;
}
Log.i("postGetOrderState", resultString);
JSONTokener jsonParser = new JSONTokener(resultString);
return (JSONObject) jsonParser.nextValue();
}
/**
* 获取好友信息
*
* @throws JSONException
*
*/
public static JSONObject getFriendInfo(Context context, String userid) throws JSONException {
Map<String, String> params = new HashMap<String, String>();
params.put("type", "user.getuserinfo");
params.put("userid", userid);
String resultString = RequestHelper.PostBySingleBitmap(Define_C.mgw_url, params, null);
if (resultString == null || resultString.equals("")) {
return null;
}
Log.i("postGetOrderState", resultString);
JSONTokener jsonParser = new JSONTokener(resultString);
return (JSONObject) jsonParser.nextValue();
}
/**
* 获取好友信息(包含异步)
*
* @throws JSONException
*
*/
public static UserFriendBean getFriendInfo2Bean(final String userid) throws JSONException {
UserFriendBean bean = null;
AsyncTask<String, Void, UserFriendBean> execute = new AsyncTask<String, Void, UserFriendBean>() {
@Override
protected UserFriendBean doInBackground(String... params) {
Gson gson = new Gson();
Map<String, String> params1 = new HashMap<String, String>();
params1.put("type", "user.getuserinfo");
params1.put("userid", userid);
String resultString = RequestHelper.PostBySingleBitmap(Define_C.mgw_url, params1, null);
if (resultString == null || resultString.equals("")) {
return null;
}
Log.i("postGetOrderState", resultString);
JSONTokener jsonParser = new JSONTokener(resultString);
if (resultString != null) {
UserFriendBean fromJson = gson.fromJson(resultString, UserFriendBean.class);
if (fromJson != null && "0".equals(fromJson.getFlag())) {
return fromJson;
}
}
return null;
}
};
try {
bean = execute.execute().get();
} catch (InterruptedException | ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bean;
}
/**
* 从网上获取bean(异步)
*
* @param username
* @return
* @throws JSONException
*/
public static User getUseFromNetAsync(String username) {
UserFriendBean friendInfo2Bean;
try {
friendInfo2Bean = getFriendInfo2Bean(username);
if (friendInfo2Bean == null) {
return null;
} else {
if (friendInfo2Bean != null && friendInfo2Bean.getItems() != null && friendInfo2Bean.getItems().size() > 0) {
User user = new User();
user.setNick(friendInfo2Bean.getItems().get(0).getNickName());
user.setUsername(friendInfo2Bean.getItems().get(0).getUserId());
user.setAvatar(friendInfo2Bean.getItems().get(0).getMemberPic());
LogUtils.i("UserUtil", "getAvatar= " + user.getAvatar() + ",getUsername=" + user.getUsername() + ",getNick= " + user.getNick());
return user;
}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
LogUtils.e(TAG, e.toString());
return null;
}
return null;
}
/**
* 从网上获取bean(非异步)
*
* @param username
* @return
*/
public static User getUseFromNet(String username) {
JSONObject postUesrs = null;
Gson gson = new Gson();
if (username == null || "".equals(username)) {
return null;
}
try {
postUesrs = Http.postUesrs(username);
if (postUesrs != null) {
UserFriendBean fromJson = gson.fromJson(postUesrs.toString(), UserFriendBean.class);
if (fromJson != null && fromJson.getItems() != null && fromJson.getItems().size() > 0) {
User user = new User();
user.setNick(fromJson.getItems().get(0).getNickName());
user.setUsername(fromJson.getItems().get(0).getUserId());
user.setAvatar(fromJson.getItems().get(0).getMemberPic());
LogUtils.i("UserUtil", "getAvatar= " + user.getAvatar() + ",getUsername=" + user.getUsername() + ",getNick= " + user.getNick());
return user;
}
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
LogUtils.i("UserUtil", "JSONException= " + e.toString());
return null;
}
return null;
}
/**
* 通过自己的userid获取自己的好友信息
*
* @param userid
* 自己的用户名
* */
public static JSONObject getfriendinfo() throws JSONException {
SharedPreferences sharedata = BaseApplication.getApplication().getSharedPreferences("mgw_data", 0);
Map<String, String> params = new HashMap<String, String>();
params.put("type", "member.getfriend");
params.put("userid", sharedata.getString("mgw_userID", "0"));
params.put("serial", sharedata.getString("mgw_serial", "0"));
String resultString = RequestHelper.PostBySingleBitmap(Define_C.mgw_url, params, null);
if (resultString == null || resultString.equals("")) {
return null;
}
Log.i("postUesrs", resultString);
JSONTokener jsonParser = new JSONTokener(resultString);
return (JSONObject) jsonParser.nextValue();
}
/**
* 通过自己的userid获取自己的好友信息
*
* @param userid
* 自己的用户名
* */
public static JSONObject getLoginInfo() {
try {
Map<String, String> params = new HashMap<String, String>();
params.put("type", "user.apploading");
params.put("telephone", "13888888888");
params.put("pmID", PreferenceHelper.getInstance(UIUtils.getContext()).getLoginCountPassword()[0]);
params.put("format", "json");
params.put("pKey", PreferenceHelper.getInstance(UIUtils.getContext()).getLoginCountPassword()[1]);
params.put("token", "");
String resultString = RequestHelper.PostBySingleBitmap(Define_C.mgw_url, params, null);
if (resultString == null || resultString.equals("")) {
return null;
}
JSONTokener jsonParser = new JSONTokener(resultString);
return (JSONObject) jsonParser.nextValue();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
/**
* 通过自己的userid获取自己的好友信息
*
* @param userid
* 自己的用户名
* */
public static JSONObject getProductInfo(Context c, String pid, String sid) {
try {
Map<String, String> params = new HashMap<String, String>();
params.put("type", "wzreposity.productdetails");
JSONObject obj = new JSONObject(c.getSharedPreferences("mgw_data", Context.MODE_PRIVATE).getString("mgw_data", ""));
params.put("userid", obj.getString("UserID"));
params.put("serial", obj.getString("serial"));
params.put("sid", sid);
params.put("pid", pid);
params.put("posx", c.getSharedPreferences("mgw_data", 0).getString("lng", ""));
params.put("posy", c.getSharedPreferences("mgw_data", 0).getString("lat", ""));
String resultString = RequestHelper.PostBySingleBitmap(Define_C.mgw_url, params, null);
if (resultString == null || resultString.equals("")) {
return null;
}
JSONTokener jsonParser = new JSONTokener(resultString);
return (JSONObject) jsonParser.nextValue();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
/**
* 设置comment
*
* @param user传进的对象
* @param ispingjie是否要拼接
* (true xxx[yyy],false xxx)
* @return
*/
public static String getCommentOrNick(User user, boolean ispingjie) {
if (user == null) {
return "null";
}
if (user != null && user.getComment() != null && !"".equals(user.getComment()) && user.getNick() != null) {
if (ispingjie) {
return user.getComment() + "[" + user.getNick() + "]";
} else {
return user.getComment();
}
} else {
return user.getNick();
}
}
/**
* 设置群头像
*
* @param iv_avatar1
* @param iv_avatar2
* @param iv_avatar3
* @param iv_avatar4
* @param split
*/
public static void setGroupsIcon(ImageView iv_avatar1, ImageView iv_avatar2, ImageView iv_avatar3, ImageView iv_avatar4, String[] split) {
String urr = "wadfasfa";
switch (split.length) {
case 1:
Picasso.with(UIUtils.getContext()).load(split[0]).into(iv_avatar1);
Picasso.with(UIUtils.getContext()).load(urr).placeholder(R.drawable.default_useravatar).into(iv_avatar2);
Picasso.with(UIUtils.getContext()).load(urr).placeholder(R.drawable.default_useravatar).into(iv_avatar3);
Picasso.with(UIUtils.getContext()).load(urr).placeholder(R.drawable.default_useravatar).into(iv_avatar4);
break;
case 2:
Picasso.with(UIUtils.getContext()).load(split[0]).into(iv_avatar1);
Picasso.with(UIUtils.getContext()).load(split[1]).into(iv_avatar2);
Picasso.with(UIUtils.getContext()).load(urr).placeholder(R.drawable.default_useravatar).into(iv_avatar3);
Picasso.with(UIUtils.getContext()).load(urr).placeholder(R.drawable.default_useravatar).into(iv_avatar4);
break;
case 3:
//
Picasso.with(UIUtils.getContext()).load(split[0]).into(iv_avatar1);
Picasso.with(UIUtils.getContext()).load(split[1]).into(iv_avatar2);
Picasso.with(UIUtils.getContext()).load(split[2]).into(iv_avatar3);
Picasso.with(UIUtils.getContext()).load(urr).placeholder(R.drawable.default_useravatar).into(iv_avatar4);
break;
case 4:
Picasso.with(UIUtils.getContext()).load(split[0]).into(iv_avatar1);
Picasso.with(UIUtils.getContext()).load(split[1]).into(iv_avatar2);
Picasso.with(UIUtils.getContext()).load(split[2]).into(iv_avatar3);
Picasso.with(UIUtils.getContext()).load(split[3]).into(iv_avatar4);
break;
default:
break;
}
}
/**
* 设置个人图像
*
* @param iv_avatar2
* @param avatar6
*/
public static void showUserAvatar(ImageView iv_avatar2, String avatar6) {
Picasso.with(UIUtils.getContext()).load(avatar6).into(iv_avatar2);
}
/**
* 根据消息内容和消息类型获取消息内容提示
*
* @param message
* @param context
* @return
*/
public static String getMessageDigest(EMMessage message, Context context) {
String digest = "";
switch (message.getType()) {
case LOCATION: // 位置消息
if (message.direct == EMMessage.Direct.RECEIVE) {
digest = getStrng(context, R.string.location_recv);
digest = String.format(digest, message.getFrom());
return digest;
} else {
// digest = EasyUtils.getAppResourceString(context,
// "location_prefix");
digest = getStrng(context, R.string.location_prefix);
}
break;
case IMAGE: // 图片消息
digest = getStrng(context, R.string.picture);
break;
case VOICE:// 语音消息
digest = getStrng(context, R.string.voice);
break;
case VIDEO: // 视频消息
digest = getStrng(context, R.string.video);
break;
case TXT: // 文本消息
if (!message.getBooleanAttribute(Constant.MESSAGE_ATTR_IS_VOICE_CALL, false)) {
TextMessageBody txtBody = (TextMessageBody) message.getBody();
digest = txtBody.getMessage();
} else {
TextMessageBody txtBody = (TextMessageBody) message.getBody();
digest = getStrng(context, R.string.voice_call) + txtBody.getMessage();
}
break;
case FILE: // 普通文件消息
digest = getStrng(context, R.string.file);
break;
default:
System.err.println("error, unknow type");
return "";
}
return digest;
}
public static String getStrng(Context context, int resId) {
return context.getResources().getString(resId);
}
/**
* 转换并存储群头像(图像组合)
* @param dd GroupInfo
*/
public static void setGroupICon(GroupInfo dd) {
EMGroup group = EMGroupManager.getInstance().getGroup(dd.getGroupId());
if(StringUtils.isEmpty(dd.getGroupName()))
dd.setGroupName(group.getGroupName());
CommonSetGroupIcon(dd, group);
}
public static void CommonSetGroupIcon(GroupInfo dd, EMGroup group) {
if(group==null){
return;
}
List<String> members = group.getMembers();
switch ( members.size()) {
case 1:
String sd = UserUtils.getUserInfo(members.get(0)) == null ? "" : UserUtils.getUserInfo(members.get(0)).getAvatar();
dd.setGroupIcon(sd+"#");
BaseApplication.getApplication().GetGroupsDao().saveGroupInfo(dd);
break;
case 2:
String sd0 = UserUtils.getUserInfo(members.get(0)) == null ? "" : UserUtils.getUserInfo(members.get(0)).getAvatar();
String sd1 = UserUtils.getUserInfo(members.get(1)) == null ? "" : UserUtils.getUserInfo(members.get(1)).getAvatar();
dd.setGroupIcon(sd0 + "#" + sd1);
BaseApplication.getApplication().GetGroupsDao().saveGroupInfo(dd);
break;
case 3:
String sd03 = UserUtils.getUserInfo(members.get(0)) == null ? "" : UserUtils.getUserInfo(members.get(0)).getAvatar();
String sd13 = UserUtils.getUserInfo(members.get(1)) == null ? "" : UserUtils.getUserInfo(members.get(1)).getAvatar();
String sd23 = UserUtils.getUserInfo(members.get(2)) == null ? "" : UserUtils.getUserInfo(members.get(2)).getAvatar();
dd.setGroupIcon(sd03 + "#" + sd13 + "#" + sd23);
BaseApplication.getApplication().GetGroupsDao().saveGroupInfo(dd);
break;
case 4:
String sd034 = UserUtils.getUserInfo(members.get(0)) == null ? "" : UserUtils.getUserInfo(members.get(0)).getAvatar();
String sd134 = UserUtils.getUserInfo(members.get(1)) == null ? "" : UserUtils.getUserInfo(members.get(1)).getAvatar();
String sd234 = UserUtils.getUserInfo(members.get(2)) == null ? "" : UserUtils.getUserInfo(members.get(2)).getAvatar();
String sd334 = UserUtils.getUserInfo(members.get(3)) == null ? "" : UserUtils.getUserInfo(members.get(3)).getAvatar();
dd.setGroupIcon(sd034 + "#" + sd134 + "#" + sd234 + "#" + sd334);
BaseApplication.getApplication().GetGroupsDao().saveGroupInfo(dd);
break;
default:
if( members.size()>4){
String sd0345 = UserUtils.getUserInfo(members.get(0)) == null ? "" : UserUtils.getUserInfo(members.get(0)).getAvatar();
String sd1345 = UserUtils.getUserInfo(members.get(1)) == null ? "" : UserUtils.getUserInfo(members.get(1)).getAvatar();
String sd2345 = UserUtils.getUserInfo(members.get(2)) == null ? "" : UserUtils.getUserInfo(members.get(2)).getAvatar();
String sd3345 = UserUtils.getUserInfo(members.get(3)) == null ? "" : UserUtils.getUserInfo(members.get(3)).getAvatar();
dd.setGroupIcon(sd0345 + "#" + sd1345 + "#" + sd2345 + "#" + sd3345);
BaseApplication.getApplication().GetGroupsDao().saveGroupInfo(dd);
}else if(members.size()==0){
//显示群主的相片
}
break;
}
}
}