package com.zhujizheng.IHome.applyfriend.net; import com.zhujizheng.IHome.applyfriend.service.PYApplyFriendService; import com.zhujizheng.IHome.applyfriend.vo.PYApplyFriendVO; import com.zhujizheng.IHome.generator.dao.PYMsgNotify; import com.zhujizheng.IHome.msgnotify.net.NetMsgNotifyAck; import com.zhujizheng.IHome.msgnotify.service.PYMsgNotifyServer; import com.zhujizheng.IHome.msgnotify.vo.PYMsgNotifyVO; import com.zhujizheng.IHome.user.dto.PYUserUpdateDTO; import com.zhujizheng.IHome.user.net.NetFriendInfoChanged; import com.zhujizheng.IHome.user.net.NetUserInfoChanged; import com.zhujizheng.IHome.user.service.PYUserService; import com.zhujizheng.IHome.user.vo.PYUserVO; import com.zhujizheng.IHome.util.alipush.AliPushService; import com.zhujizheng.IHome.websocket.Net.Base.NetProtocolBase; import com.zhujizheng.IHome.websocket.server.WebSocketServer; import lombok.extern.slf4j.Slf4j; import net.sf.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Slf4j @Component public class NetReplyApplyFriend extends NetProtocolBase { @Autowired private PYUserService userService; @Autowired private PYApplyFriendService applyFriendService; @Autowired private AliPushService aliPushService; @Autowired private PYMsgNotifyServer msgNotifyServer; @Override public void dealWithJSONAndSid(JSONObject json, String sid) { super.dealWithJSONAndSid(json, sid); int applyId = json.getInt("applyId"); // 更新好友申请表 PYApplyFriendVO vo = applyFriendService.replyApplyFriend(applyId); if (vo == null) { log.error("更新好友申请表失败"); this.sendServerError(sid); return; } Integer applyUserId = vo.getApplyUserId(); Integer selfId = vo.getFriendId(); // 更新自己的loverId PYUserUpdateDTO selfUpdateDTO = PYUserUpdateDTO.createBindLover(selfId, applyUserId); int updateSelfResult = userService.updateInfo(selfUpdateDTO); if (updateSelfResult == 0) { log.error("更新自己的loverId失败"); this.sendServerError(sid); return; } // 更新对方的loverId PYUserUpdateDTO updateDTO = PYUserUpdateDTO.createBindLover(applyUserId, selfId); int updateResult = userService.updateInfo(updateDTO); if (updateResult == 0) { log.error("更新对方的loverId失败"); this.sendServerError(sid); return; } // 查询对方的用户信息 PYUserVO applyUserVO = userService.selectInfo(applyUserId); // 查询自己的用户信息 PYUserVO friendVO = userService.selectInfo(selfId); NetApplyFriendAck applyFriendAck = new NetApplyFriendAck(); // 更新对方发起申请的消息通知 String desc = friendVO.getUserName() + "接受了你的申请"; PYMsgNotify msgNotify = PYMsgNotify.createApplyMsgNotify(applyUserId, selfId, desc, ""); PYMsgNotifyVO msgNotifyVO = msgNotifyServer.addOrUpdateMsgNotify(msgNotify); // 更新自己收到申请的消息通知 String sidDesc = "你接受了" + applyUserVO.getUserName() + "的申请"; PYMsgNotify sidMsgNotify = PYMsgNotify.createApplyMsgNotify(selfId, applyUserId, sidDesc, ""); PYMsgNotifyVO sidMsgNotifyVO = msgNotifyServer.addOrUpdateMsgNotify(sidMsgNotify); NetMsgNotifyAck msgNotifyAck = new NetMsgNotifyAck(); NetFriendInfoChanged friendInfoChanged = new NetFriendInfoChanged(); NetUserInfoChanged userInfoChanged = new NetUserInfoChanged(); // 通知自己好友申请状态已更新 applyFriendAck.sendObject(vo, sid); // 通知自己消息通知描述已更新 msgNotifyAck.sendObject(sidMsgNotifyVO, sid); // 通知自己好友数据已更新 friendInfoChanged.sendObject(applyUserVO, sid); // 通知自己用户数据已更新 userInfoChanged.sendObject(friendVO, sid); WebSocketServer item = WebSocketServer.getWebSocketMap().get(applyUserId.toString()); if (null == item) { // 离线推送 log.info("离线推送:applyUserId.toString() = " + applyUserId.toString()); aliPushService.pushRemoteNotify("新消息", desc, applyUserId.toString(), 1); } else { // 通知对方好友申请状态已更新 applyFriendAck.sendObject(vo, applyUserId.toString()); // 通知对方消息通知描述已更新 msgNotifyAck.sendObject(msgNotifyVO, applyUserId.toString()); // 通知对方好友数据已更新 friendInfoChanged.sendObject(friendVO, sid); // 通知对方用户数据已更新 userInfoChanged.sendObject(applyUserVO, sid); } } }