package com.sk.weichat.bean.message; import android.text.TextUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; import com.sk.weichat.bean.Friend; import com.sk.weichat.bean.User; import com.sk.weichat.util.TimeUtils; import java.io.Serializable; import java.util.UUID; /** * #define CALL_CENTER_USERID @"10000" //系统消息
* #define FRIEND_CENTER_USERID @"10001" //新朋友
* #define BLOG_CENTER_USERID @"10003" //商务圈
* #define TEST_CENTER_USERID @"10004" //面试中心
* 朋友中心 * */ @DatabaseTable public class NewFriendMessage extends XmppMessage implements Cloneable, Serializable { private static final long serialVersionUID = -4231369003725583507L; public NewFriendMessage() { } public NewFriendMessage(String jsonData) { parserJsonData(jsonData); } @DatabaseField(generatedId = true) private int _id; @DatabaseField(canBeNull = false) private String ownerId; // 这个消息是属于哪个用户的 @DatabaseField(canBeNull = false) private String userId; // 此新朋友消息针对的是哪个用户(一定是别人,不是自己) @DatabaseField private String nickName;// 此新朋友消息针对的是哪个用户(一定是别人,不是自己) @DatabaseField private String content;// (打招呼的内容) @DatabaseField private boolean isRead; @DatabaseField private int companyId;// 此新朋友消息针对的是哪个用户,他的公司Id(一定是别人,不是自己) /* 下面3个只用于xmpp通讯时,生成json消息。在接受时,会自动转为上面的有效消息,所以不应该作为其他用途,不作为判断依据,不写入数据库 */ private String fromUserId; private String fromUserName; private int fromCompanyId; public int get_id() { return _id; } public void set_id(int _id) { this._id = _id; } public String getOwnerId() { return ownerId; } public void setOwnerId(String ownerId) { this.ownerId = ownerId; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getNickName() { return nickName; } public void setNickName(String nickname) { this.nickName = nickname; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public int getCompanyId() { return companyId; } public void setCompanyId(int companyId) { this.companyId = companyId; } public boolean isRead() { return isRead; } public void setRead(boolean isRead) { this.isRead = isRead; } public String getFromUserId() { return fromUserId; } public void setFromUserId(String fromUserId) { this.fromUserId = fromUserId; } public String getFromUserName() { return fromUserName; } public void setFromUserName(String fromUserName) { this.fromUserName = fromUserName; } public int getFromCompanyId() { return fromCompanyId; } public void setFromCompanyId(int fromCompanyId) { this.fromCompanyId = fromCompanyId; } @Override public NewFriendMessage clone() { NewFriendMessage n = null; try { n = (NewFriendMessage) super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return n; } private void parserJsonData(String jsonData) { try { JSONObject jObject = JSON.parseObject(jsonData); userId = getStringValueFromJSONObject(jObject, "fromUserId"); nickName = getStringValueFromJSONObject(jObject, "fromUserName"); companyId = getIntValueFromJSONObject(jObject, "fromCompanyId"); type = getIntValueFromJSONObject(jObject, "type"); timeSend = getIntValueFromJSONObject(jObject, "timeSend"); content = getStringValueFromJSONObject(jObject, "content"); } catch (Exception e) { e.printStackTrace(); } } /** * fromUserId, fromUserName, fromCompanyId, timeSend, content, type, * * @return */ public String toJsonString() { String msg = ""; JSONObject object = new JSONObject(); object.put("fromUserId", this.fromUserId); object.put("fromUserName", this.fromUserName); object.put("fromCompanyId", this.fromCompanyId); object.put("type", this.type); object.put("timeSend", this.timeSend); if (!TextUtils.isEmpty(this.content)) { object.put("content", this.content); } msg = object.toString(); return msg; } /** * * @param fromUser * 应该是当前登陆的User * @param type * @param content * @param toUserId * @param toNickName * @param toCompanyId * @param status * ,此状态主要用于更新朋友关系。 发送加关注、加好友 此状态有效
* 发送打招呼 、解除关注、解除好友此状态无效,填Integer.MIN_VALUE
* 下面几个重载方法都遵循此原则
* @return */ public static NewFriendMessage createWillSendMessage(User fromUser, int type, String content, String toUserId, String toNickName, int toCompanyId) { String packetId = UUID.randomUUID().toString().replace("-", ""); NewFriendMessage message = new NewFriendMessage(); message.setPacketId(packetId); // 首先是传输协议的字段, message.setFromUserId(fromUser.getUserId()); message.setFromUserName(fromUser.getNickName()); message.setFromCompanyId(fromUser.getCompanyId()); message.setTimeSend(TimeUtils.sk_time_current_time()); message.setType(type); message.setContent(content); // 本地数据库状态 message.setOwnerId(fromUser.getUserId()); message.setUserId(toUserId); message.setNickName(toNickName); message.setCompanyId(toCompanyId); message.setRead(true); message.setMySend(true); return message; } public static NewFriendMessage createWillSendMessage(User fromUser, int type, String content, User toUser) { return createWillSendMessage(fromUser, type, content, toUser.getUserId(), toUser.getNickName(), toUser.getCompanyId()); } public static NewFriendMessage createWillSendMessage(User fromUser, int type, String content, Friend toFriend) { return createWillSendMessage(fromUser, type, content, toFriend.getUserId(), toFriend.getNickName(), toFriend.getCompanyId()); } public static NewFriendMessage createWillSendMessage(User fromUser, int type, String content, NewFriendMessage existMessage) { return createWillSendMessage(fromUser, type, content, existMessage.getUserId(), existMessage.getNickName(), existMessage.getCompanyId()); } }