|
@@ -0,0 +1,171 @@
|
|
|
+package com.ym.pojo;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.ym.common.ETencentGroupType;
|
|
|
+import com.ym.common.ETencentImCallbackCommand;
|
|
|
+import lombok.Data;
|
|
|
+import lombok.NoArgsConstructor;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Description
|
|
|
+ *
|
|
|
+ * @author liujunchi
|
|
|
+ * @date 2023-03-06
|
|
|
+ */
|
|
|
+@NoArgsConstructor
|
|
|
+@Data
|
|
|
+public class TencentData {
|
|
|
+
|
|
|
+ // 群成员离开之后回调对象
|
|
|
+ @NoArgsConstructor
|
|
|
+ @Data
|
|
|
+ public static class CallbackAfterMemberExit {
|
|
|
+ // 回调命令
|
|
|
+ private ETencentImCallbackCommand callbackCommand;
|
|
|
+ // 群组 ID
|
|
|
+ private String groupId;
|
|
|
+ // 群组类型
|
|
|
+ private ETencentGroupType type;
|
|
|
+ // 成员离开方式:Kicked-被踢;Quit-主动退群
|
|
|
+ private String exitType;
|
|
|
+ // 操作者
|
|
|
+ private String operatorAccount;
|
|
|
+ // 离开群的成员列表
|
|
|
+ private List<MemberListDTO> exitMemberList;
|
|
|
+ //毫秒级别,事件触发时间戳
|
|
|
+ private LocalDateTime eventTime;
|
|
|
+
|
|
|
+ public static CallbackAfterMemberExit toObject(String jsonString) {
|
|
|
+
|
|
|
+ CallbackAfterMemberExit res = new CallbackAfterMemberExit();
|
|
|
+
|
|
|
+ JSONObject jsonObject = JSON.parseObject(jsonString);
|
|
|
+ res.setCallbackCommand(ETencentImCallbackCommand.valueOf(jsonObject.getString("CallbackCommand")));
|
|
|
+ res.setGroupId(jsonObject.getString("GroupId"));
|
|
|
+ res.setType(jsonObject.getObject("Type",ETencentGroupType.class));
|
|
|
+ res.setExitType(jsonObject.getString("ExitType"));
|
|
|
+ res.setOperatorAccount(jsonObject.getString("Operator_Account"));
|
|
|
+
|
|
|
+ JSONArray exitMemberList = jsonObject.getJSONArray("ExitMemberList");
|
|
|
+ if (!exitMemberList.isEmpty()) {
|
|
|
+ List<MemberListDTO> memberListDTOS = new ArrayList<>();
|
|
|
+ for (int i = 0; i < exitMemberList.size(); i++) {
|
|
|
+ MemberListDTO memberListDTO = new MemberListDTO();
|
|
|
+ JSONObject exitMemberListJSONObject = exitMemberList.getJSONObject(i);
|
|
|
+ String member_account = exitMemberListJSONObject.getString("Member_Account");
|
|
|
+ memberListDTO.setMemberAccount(member_account);
|
|
|
+ memberListDTOS.add(memberListDTO);
|
|
|
+ }
|
|
|
+ res.setExitMemberList(memberListDTOS);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ res.setEventTime(jsonObject.getTimestamp("EventTime").toLocalDateTime());
|
|
|
+
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @NoArgsConstructor
|
|
|
+ @Data
|
|
|
+ public static class MemberListDTO {
|
|
|
+ private String memberAccount;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 直播群成员在线状态回调
|
|
|
+ @NoArgsConstructor
|
|
|
+ @Data
|
|
|
+ public static class CallbackOnMemberStateChange {
|
|
|
+ // 回调命令
|
|
|
+ private ETencentImCallbackCommand callbackCommand;
|
|
|
+ // 群组 ID
|
|
|
+ private String groupId;
|
|
|
+ // 事件类型:Offline - 掉线、Online - 重新上线
|
|
|
+ private String eventType;
|
|
|
+ // 离开群的成员列表
|
|
|
+ private List<MemberListDTO> memberList;
|
|
|
+
|
|
|
+ public static CallbackOnMemberStateChange toObject(String jsonString) {
|
|
|
+
|
|
|
+ CallbackOnMemberStateChange res = new CallbackOnMemberStateChange();
|
|
|
+
|
|
|
+ JSONObject jsonObject = JSON.parseObject(jsonString);
|
|
|
+ res.setCallbackCommand(ETencentImCallbackCommand.valueOf(jsonObject.getString("CallbackCommand")));
|
|
|
+ res.setGroupId(jsonObject.getString("GroupId"));
|
|
|
+
|
|
|
+ JSONArray exitMemberList = jsonObject.getJSONArray("MemberList");
|
|
|
+ if (!exitMemberList.isEmpty()) {
|
|
|
+ List<MemberListDTO> memberListDTOS = new ArrayList<>();
|
|
|
+ for (int i = 0; i < exitMemberList.size(); i++) {
|
|
|
+ MemberListDTO memberListDTO = new MemberListDTO();
|
|
|
+ JSONObject exitMemberListJSONObject = exitMemberList.getJSONObject(i);
|
|
|
+ String member_account = exitMemberListJSONObject.getString("Member_Account");
|
|
|
+ memberListDTO.setMemberAccount(member_account);
|
|
|
+ memberListDTOS.add(memberListDTO);
|
|
|
+ }
|
|
|
+ res.setMemberList(memberListDTOS);
|
|
|
+ }
|
|
|
+
|
|
|
+ res.setEventType(jsonObject.getString("EventType"));
|
|
|
+
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @NoArgsConstructor
|
|
|
+ @Data
|
|
|
+ public static class CallbackAfterNewMemberJoin {
|
|
|
+
|
|
|
+ // 回调命令
|
|
|
+ private ETencentImCallbackCommand callbackCommand;
|
|
|
+ // 群组 ID
|
|
|
+ private String groupId;
|
|
|
+ // 群组类型
|
|
|
+ private ETencentGroupType type;
|
|
|
+ // 入群方式:Apply(申请入群);Invited(邀请入群)
|
|
|
+ private String joinType;
|
|
|
+ // 操作者成员
|
|
|
+ private String operatorAccount;
|
|
|
+ // 新入群成员列表
|
|
|
+ private List<MemberListDTO> newMemberList;
|
|
|
+ //毫秒级别,事件触发时间戳
|
|
|
+ private LocalDateTime eventTime;
|
|
|
+
|
|
|
+ public static CallbackAfterNewMemberJoin toObject(String jsonString) {
|
|
|
+
|
|
|
+ CallbackAfterNewMemberJoin res = new CallbackAfterNewMemberJoin();
|
|
|
+
|
|
|
+ JSONObject jsonObject = JSON.parseObject(jsonString);
|
|
|
+ res.setCallbackCommand(ETencentImCallbackCommand.valueOf(jsonObject.getString("CallbackCommand")));
|
|
|
+ res.setGroupId(jsonObject.getString("GroupId"));
|
|
|
+ res.setType(jsonObject.getObject("Type",ETencentGroupType.class));
|
|
|
+ res.setJoinType(jsonObject.getString("JoinType"));
|
|
|
+ res.setOperatorAccount(jsonObject.getString("Operator_Account"));
|
|
|
+
|
|
|
+ JSONArray exitMemberList = jsonObject.getJSONArray("NewMemberList");
|
|
|
+ if (!exitMemberList.isEmpty()) {
|
|
|
+ List<MemberListDTO> memberListDTOS = new ArrayList<>();
|
|
|
+ for (int i = 0; i < exitMemberList.size(); i++) {
|
|
|
+ MemberListDTO memberListDTO = new MemberListDTO();
|
|
|
+ JSONObject exitMemberListJSONObject = exitMemberList.getJSONObject(i);
|
|
|
+ String member_account = exitMemberListJSONObject.getString("Member_Account");
|
|
|
+ memberListDTO.setMemberAccount(member_account);
|
|
|
+ memberListDTOS.add(memberListDTO);
|
|
|
+ }
|
|
|
+ res.setNewMemberList(memberListDTOS);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ res.setEventTime(jsonObject.getTimestamp("EventTime").toLocalDateTime());
|
|
|
+
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|