package com.zhujizheng.IHome.chat.net; import com.zhujizheng.IHome.chat.dto.PYSyncChatMsgDTO; import com.zhujizheng.IHome.chat.service.PYSingleChatService; import com.zhujizheng.IHome.chat.vo.PYSingleChatAckVO; import com.zhujizheng.IHome.chat.vo.PYSyncChatMsgVO; import com.zhujizheng.IHome.websocket.Net.Base.NetProtocolBase; import com.zhujizheng.IHome.websocket.Net.exception.NetException; import lombok.extern.slf4j.Slf4j; import net.sf.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; @Slf4j @Component public class NetSyncChatMsg extends NetProtocolBase { @Autowired private PYSingleChatService service; @Override public void dealWithJSONAndSid(JSONObject json, String sid) { super.dealWithJSONAndSid(json, sid); PYSyncChatMsgDTO dto = (PYSyncChatMsgDTO) JSONObject.toBean(json, PYSyncChatMsgDTO.class); List list = service.syncChatMsg(Integer.parseInt(sid), dto.getReceiveId()); PYSyncChatMsgVO vo = PYSyncChatMsgVO.createVOWithDTO(dto); if (vo == null) { this.sendServerError(sid); } else { if (list == null) { // 下发空数组,表示同步结束 vo.setList(new ArrayList<>()); vo.setResult(true); this.sendObject(vo, sid); return; } if (list.size() <= 10) { vo.setList(list); vo.setResult(true); this.sendObject(vo, sid); // 下发空数组,表示同步结束 vo.setList(new ArrayList<>()); vo.setResult(true); this.sendObject(vo, sid); return; } List ackVOList = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { if (i % 10 == 0 && i != 0) { vo.setList(ackVOList); vo.setResult(true); this.sendObject(vo, sid); ackVOList = new ArrayList<>(); } PYSingleChatAckVO ackVO = list.get(i); ackVOList.add(ackVO); } if (ackVOList.size() > 0) { vo.setList(ackVOList); vo.setResult(true); this.sendObject(vo, sid); } // 下发空数组,表示同步结束 vo.setList(new ArrayList<>()); vo.setResult(true); this.sendObject(vo, sid); } } }