/** * Copyright 2018-2028 Akaxin Group * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.windchat.im.business.dao; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.akaxin.proto.core.UserProto; import com.windchat.im.storage.api.IFriendApplyDao; import com.windchat.im.storage.api.IUserFriendDao; import com.windchat.im.storage.bean.ApplyFriendBean; import com.windchat.im.storage.bean.ApplyUserBean; import com.windchat.im.storage.bean.SimpleUserBean; import com.windchat.im.storage.bean.UserFriendBean; import com.windchat.im.storage.service.FriendApplyDaoService; import com.windchat.im.storage.service.UserFriendDaoService; /** * 用户好友相关操作 * * @author Sam{@link an.guoyue254@gmail.com} * @since 2018-02-01 17:49:41 */ public class UserFriendDao { private static final Logger logger = LoggerFactory.getLogger(UserFriendDao.class); private static UserFriendDao instance = new UserFriendDao(); private IUserFriendDao userFriendDao = new UserFriendDaoService(); private IFriendApplyDao friendApplyDao = new FriendApplyDaoService(); private final int RELATION_NUMBERo = 1; public static UserFriendDao getInstance() { return instance; } public int getUserFriendNum(String siteUserId) { try { return userFriendDao.getUserFriendNum(siteUserId); } catch (SQLException e) { logger.error("get user friend num error", e); } return -1; } public List getUserFriends(String userId) { List friendList = new ArrayList(); try { friendList = userFriendDao.getUserFriends(userId); } catch (SQLException e) { logger.error("get user friend list error", e); } return friendList; } public List getUserFriendsByPage(String siteUserId, int pageNum, int pageSize) { List friendList = null; try { friendList = userFriendDao.getUserFriendsByPage(siteUserId, pageNum, pageSize); } catch (SQLException e) { logger.error("get user friend list error", e); } return friendList; } public boolean saveFriendApply(String siteUserId, String siteFriendId, String applyReason) { try { return friendApplyDao.saveApply(siteFriendId, siteUserId, applyReason); } catch (SQLException e) { logger.error("friend apply error.", e); } return false; } // 查询二者是否为好友 public boolean isFriend(String siteUserId, String siteFriendId) throws SQLException { return userFriendDao.queryIsFriendRelation(siteUserId, siteFriendId, false); } public boolean isNotFriend(String siteUserId, String siteFriendId) throws SQLException { return !isFriend(siteUserId, siteFriendId); } public boolean agreeApply(String siteUserId, String siteFriendId, boolean agree) { boolean result = true; try { if (agree) { if (userFriendDao.queryRelation(siteUserId, siteFriendId) != RELATION_NUMBERo) { result = userFriendDao.saveRelation(siteUserId, siteFriendId, RELATION_NUMBERo); } if (userFriendDao.queryRelation(siteFriendId, siteUserId) != RELATION_NUMBERo) { result = userFriendDao.saveRelation(siteFriendId, siteUserId, RELATION_NUMBERo) && result; } } } catch (Exception e) { result = false; logger.error("agree friend apply error.", e); } return result; } public ApplyFriendBean agreeApplyWithClear(String siteUserId, String siteFriendId, boolean isMaster) { ApplyFriendBean bean = null; try { bean = friendApplyDao.getApplyInfo(siteUserId, siteFriendId, isMaster); friendApplyDao.deleteApply(siteFriendId, siteUserId); friendApplyDao.deleteApply(siteUserId, siteFriendId); } catch (SQLException e) { logger.error("agree apply friend with clear error", e); } return bean; } public UserProto.UserRelation getUserRelation(String siteUserId, String siteFriendId) { int relation = 0; try { relation = userFriendDao.queryRelation(siteUserId, siteFriendId); if (relation == RELATION_NUMBERo) { relation = userFriendDao.queryRelation(siteFriendId, siteUserId); if (relation == RELATION_NUMBERo) { return UserProto.UserRelation.RELATION_FRIEND; } return UserProto.UserRelation.RELATION_CARE; } else { relation = userFriendDao.queryRelation(siteFriendId, siteUserId); if (relation == RELATION_NUMBERo) { return UserProto.UserRelation.RELATION_FANS; } } } catch (SQLException e) { logger.error("get user relation error.siteUserId={} siteFriendId={}", e); } return UserProto.UserRelation.RELATION_NONE; } /** * 获取一个好友的申请总数 * * @param siteUserId * @param siteFriendId * @return */ public int getApplyCount(String siteUserId, String siteFriendId) { int count = 0; try { count = friendApplyDao.getApplyCount(siteUserId, siteFriendId); } catch (SQLException e) { logger.error("get apply user count error.", e); } return count; } /** * 获取用户当前的好友申请总数 * * @param siteUserId * @return */ public int getApplyCount(String siteUserId) { int count = 0; try { count = friendApplyDao.getApplyCount(siteUserId); } catch (SQLException e) { logger.error("get apply user count error.", e); } return count; } public List getApplyUserList(String siteUserId) { try { return friendApplyDao.getApplyUsers(siteUserId); } catch (SQLException e) { logger.error("get apply user list error.", e); } return null; } public boolean deleteFriend(String siteUserId, String siteFriendId) { boolean result = false; try { result = userFriendDao.deleteRelation(siteUserId, siteFriendId); } catch (SQLException e) { logger.error("delete friend error.", e); } return result; } public UserFriendBean getFriendSetting(String siteUserId, String siteFriendId) { try { UserFriendBean bean = userFriendDao.getFriendSetting(siteUserId, siteFriendId); if (bean == null) { bean = new UserFriendBean(); bean.setMute(false); } return bean; } catch (SQLException e) { logger.error("get friend setting error", e); } return null; } public boolean updateFriendSetting(String siteUserId, UserFriendBean bean) { try { return userFriendDao.updateFriendSetting(siteUserId, bean); } catch (SQLException e) { logger.error("update friend setting error", e); } return false; } public boolean getFriendMute(String siteUserId, String siteFriendId) throws SQLException { return userFriendDao.isMute(siteUserId, siteFriendId); } public boolean updateFriendMute(String siteUserId, String siteFriendId, boolean mute) { try { return userFriendDao.updateMute(siteUserId, siteFriendId, mute); } catch (SQLException e) { logger.error("update friend mute error", e); } return false; } public boolean remarkFriend(String siteUserId, String siteFriendId, String aliasName, String aliasInLatin) { try { return userFriendDao.remarkFriend(siteUserId, siteFriendId, aliasName, aliasInLatin); } catch (SQLException e) { logger.error("update friend mute error", e); } return false; } }