NewFriendMessage.java 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. package com.sk.weichat.bean.message;
  2. import android.text.TextUtils;
  3. import com.alibaba.fastjson.JSON;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.j256.ormlite.field.DatabaseField;
  6. import com.j256.ormlite.table.DatabaseTable;
  7. import com.sk.weichat.bean.Friend;
  8. import com.sk.weichat.bean.User;
  9. import com.sk.weichat.util.TimeUtils;
  10. import java.io.Serializable;
  11. import java.util.UUID;
  12. /**
  13. * #define CALL_CENTER_USERID @"10000" //系统消息<br/>
  14. * #define FRIEND_CENTER_USERID @"10001" //新朋友 <br/>
  15. * #define BLOG_CENTER_USERID @"10003" //商务圈 <br/>
  16. * #define TEST_CENTER_USERID @"10004" //面试中心<br/>
  17. * 朋友中心
  18. *
  19. */
  20. @DatabaseTable
  21. public class NewFriendMessage extends XmppMessage implements Cloneable, Serializable {
  22. private static final long serialVersionUID = -4231369003725583507L;
  23. public NewFriendMessage() {
  24. }
  25. public NewFriendMessage(String jsonData) {
  26. parserJsonData(jsonData);
  27. }
  28. @DatabaseField(generatedId = true)
  29. private int _id;
  30. @DatabaseField(canBeNull = false)
  31. private String ownerId; // 这个消息是属于哪个用户的
  32. @DatabaseField(canBeNull = false)
  33. private String userId; // 此新朋友消息针对的是哪个用户(一定是别人,不是自己)
  34. @DatabaseField
  35. private String nickName;// 此新朋友消息针对的是哪个用户(一定是别人,不是自己)
  36. @DatabaseField
  37. private String content;// (打招呼的内容)
  38. @DatabaseField
  39. private boolean isRead;
  40. @DatabaseField
  41. private int companyId;// 此新朋友消息针对的是哪个用户,他的公司Id(一定是别人,不是自己)
  42. /* 下面3个只用于xmpp通讯时,生成json消息。在接受时,会自动转为上面的有效消息,所以不应该作为其他用途,不作为判断依据,不写入数据库 */
  43. private String fromUserId;
  44. private String fromUserName;
  45. private int fromCompanyId;
  46. public int get_id() {
  47. return _id;
  48. }
  49. public void set_id(int _id) {
  50. this._id = _id;
  51. }
  52. public String getOwnerId() {
  53. return ownerId;
  54. }
  55. public void setOwnerId(String ownerId) {
  56. this.ownerId = ownerId;
  57. }
  58. public String getUserId() {
  59. return userId;
  60. }
  61. public void setUserId(String userId) {
  62. this.userId = userId;
  63. }
  64. public String getNickName() {
  65. return nickName;
  66. }
  67. public void setNickName(String nickname) {
  68. this.nickName = nickname;
  69. }
  70. public String getContent() {
  71. return content;
  72. }
  73. public void setContent(String content) {
  74. this.content = content;
  75. }
  76. public int getCompanyId() {
  77. return companyId;
  78. }
  79. public void setCompanyId(int companyId) {
  80. this.companyId = companyId;
  81. }
  82. public boolean isRead() {
  83. return isRead;
  84. }
  85. public void setRead(boolean isRead) {
  86. this.isRead = isRead;
  87. }
  88. public String getFromUserId() {
  89. return fromUserId;
  90. }
  91. public void setFromUserId(String fromUserId) {
  92. this.fromUserId = fromUserId;
  93. }
  94. public String getFromUserName() {
  95. return fromUserName;
  96. }
  97. public void setFromUserName(String fromUserName) {
  98. this.fromUserName = fromUserName;
  99. }
  100. public int getFromCompanyId() {
  101. return fromCompanyId;
  102. }
  103. public void setFromCompanyId(int fromCompanyId) {
  104. this.fromCompanyId = fromCompanyId;
  105. }
  106. @Override
  107. public NewFriendMessage clone() {
  108. NewFriendMessage n = null;
  109. try {
  110. n = (NewFriendMessage) super.clone();
  111. } catch (CloneNotSupportedException e) {
  112. e.printStackTrace();
  113. }
  114. return n;
  115. }
  116. private void parserJsonData(String jsonData) {
  117. try {
  118. JSONObject jObject = JSON.parseObject(jsonData);
  119. userId = getStringValueFromJSONObject(jObject, "fromUserId");
  120. nickName = getStringValueFromJSONObject(jObject, "fromUserName");
  121. companyId = getIntValueFromJSONObject(jObject, "fromCompanyId");
  122. type = getIntValueFromJSONObject(jObject, "type");
  123. timeSend = getIntValueFromJSONObject(jObject, "timeSend");
  124. content = getStringValueFromJSONObject(jObject, "content");
  125. } catch (Exception e) {
  126. e.printStackTrace();
  127. }
  128. }
  129. /**
  130. * fromUserId, fromUserName, fromCompanyId, timeSend, content, type,
  131. *
  132. * @return
  133. */
  134. public String toJsonString() {
  135. String msg = "";
  136. JSONObject object = new JSONObject();
  137. object.put("fromUserId", this.fromUserId);
  138. object.put("fromUserName", this.fromUserName);
  139. object.put("fromCompanyId", this.fromCompanyId);
  140. object.put("type", this.type);
  141. object.put("timeSend", this.timeSend);
  142. if (!TextUtils.isEmpty(this.content)) {
  143. object.put("content", this.content);
  144. }
  145. msg = object.toString();
  146. return msg;
  147. }
  148. /**
  149. *
  150. * @param fromUser
  151. * 应该是当前登陆的User
  152. * @param type
  153. * @param content
  154. * @param toUserId
  155. * @param toNickName
  156. * @param toCompanyId
  157. * @param status
  158. * ,此状态主要用于更新朋友关系。 发送加关注、加好友 此状态有效<br/>
  159. * 发送打招呼 、解除关注、解除好友此状态无效,填Integer.MIN_VALUE<br/>
  160. * 下面几个重载方法都遵循此原则<br/>
  161. * @return
  162. */
  163. public static NewFriendMessage createWillSendMessage(User fromUser, int type, String content, String toUserId, String toNickName, int toCompanyId) {
  164. String packetId = UUID.randomUUID().toString().replace("-", "");
  165. NewFriendMessage message = new NewFriendMessage();
  166. message.setPacketId(packetId);
  167. // 首先是传输协议的字段,
  168. message.setFromUserId(fromUser.getUserId());
  169. message.setFromUserName(fromUser.getNickName());
  170. message.setFromCompanyId(fromUser.getCompanyId());
  171. message.setTimeSend(TimeUtils.sk_time_current_time());
  172. message.setType(type);
  173. message.setContent(content);
  174. // 本地数据库状态
  175. message.setOwnerId(fromUser.getUserId());
  176. message.setUserId(toUserId);
  177. message.setNickName(toNickName);
  178. message.setCompanyId(toCompanyId);
  179. message.setRead(true);
  180. message.setMySend(true);
  181. return message;
  182. }
  183. public static NewFriendMessage createWillSendMessage(User fromUser, int type, String content, User toUser) {
  184. return createWillSendMessage(fromUser, type, content, toUser.getUserId(), toUser.getNickName(), toUser.getCompanyId());
  185. }
  186. public static NewFriendMessage createWillSendMessage(User fromUser, int type, String content, Friend toFriend) {
  187. return createWillSendMessage(fromUser, type, content, toFriend.getUserId(), toFriend.getNickName(), toFriend.getCompanyId());
  188. }
  189. public static NewFriendMessage createWillSendMessage(User fromUser, int type, String content, NewFriendMessage existMessage) {
  190. return createWillSendMessage(fromUser, type, content, existMessage.getUserId(), existMessage.getNickName(), existMessage.getCompanyId());
  191. }
  192. }