|
@@ -1,20 +1,142 @@
|
|
|
package com.neko.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.neko.domain.dto.friendDto.FriendDto;
|
|
|
+import com.neko.domain.dto.friendDto.FriendTongDto;
|
|
|
import com.neko.domain.pojo.FriendRelation;
|
|
|
+import com.neko.domain.pojo.FriendRequest;
|
|
|
+import com.neko.domain.pojo.User;
|
|
|
+import com.neko.domain.vo.RequestFriendVo;
|
|
|
+import com.neko.mapper.FriendRequestMapper;
|
|
|
+import com.neko.mapper.UserMapper;
|
|
|
import com.neko.service.FriendRelationService;
|
|
|
import com.neko.mapper.FriendRelationMapper;
|
|
|
+import com.neko.utils.*;
|
|
|
+import io.jsonwebtoken.Claims;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
/**
|
|
|
* @author 金聪
|
|
|
* @description 针对表【friend_relation(好友关系表)】的数据库操作Service实现
|
|
|
* @createDate 2025-05-18 20:59:28
|
|
|
*/
|
|
|
@Service
|
|
|
+@Slf4j
|
|
|
public class FriendRelationServiceImpl extends ServiceImpl<FriendRelationMapper, FriendRelation>
|
|
|
implements FriendRelationService{
|
|
|
+ @Autowired
|
|
|
+ FriendRelationMapper friendRelationMapper;
|
|
|
+ @Autowired
|
|
|
+ FriendRequestMapper friendRequestMapper;
|
|
|
+ @Autowired
|
|
|
+ UserMapper userMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResultVo addFriend(FriendDto dto) {
|
|
|
+ if(dto.getSendToken()==null || dto.getJiePhone()==null){
|
|
|
+ log.info("添加朋友");
|
|
|
+ return ResultVo.error(ApiServiceExceptionEnum.SHUJU_NOT_NULL);
|
|
|
+ }
|
|
|
+ //发送好友请求
|
|
|
+ Claims claims = AppJwtUtil.getClaimsBody(dto.getSendToken());
|
|
|
+ String id = claims.get("id").toString();
|
|
|
+ System.err.println(id);
|
|
|
+ QueryWrapper<User> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(User::getPhone,dto.getJiePhone());
|
|
|
+ User user = userMapper.selectOne(queryWrapper);
|
|
|
+
|
|
|
+ FriendRequest request = new FriendRequest();
|
|
|
+ request.setId(String.valueOf(SnowflakeUtil.nextId()));
|
|
|
+ request.setSenderId(id);
|
|
|
+ request.setReceiverId(user.getId());
|
|
|
+ request.setMessage(dto.getMessage());
|
|
|
+ request.setCreateTime(new Date());
|
|
|
+ int i = friendRequestMapper.insert(request);
|
|
|
+ if(i!=1){
|
|
|
+ log.info("好友请求 发送失败");
|
|
|
+ return ResultVo.error(ApiServiceExceptionEnum.RESULT_ERROR);
|
|
|
+ }
|
|
|
+ //添加好友信息
|
|
|
+ FriendRelation relation = new FriendRelation();
|
|
|
+ relation.setId(String.valueOf(SnowflakeUtil.nextId()));
|
|
|
+ relation.setUserId(id);
|
|
|
+ relation.setFriendId(user.getId());
|
|
|
+ relation.setRemark(dto.getRemark());
|
|
|
+ relation.setGroupName(dto.getGroupName());
|
|
|
+ relation.setCreateTime(new Date());
|
|
|
+ friendRelationMapper.insert(relation);
|
|
|
+
|
|
|
+ return ResultVo.success(ApiServiceExceptionEnum.Friend_ADD_OK);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResultVo handleFriendHttp(FriendTongDto dto) {
|
|
|
+ if(dto.getSendToken()==null || dto.getJiePhone()==null){
|
|
|
+ log.info("同意请求");
|
|
|
+ return ResultVo.error(ApiServiceExceptionEnum.SHUJU_NOT_NULL);
|
|
|
+ }
|
|
|
+
|
|
|
+ Claims claims = AppJwtUtil.getClaimsBody(dto.getSendToken());
|
|
|
+ String id = claims.get("id").toString();
|
|
|
+ Long iid = Long.valueOf(id);
|
|
|
+ QueryWrapper<FriendRequest> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(FriendRequest::getReceiverId,iid)
|
|
|
+ .eq(FriendRequest::getStatus,0);
|
|
|
+ FriendRequest request = friendRequestMapper.selectOne(queryWrapper);
|
|
|
+ request.setStatus(dto.getStatus());
|
|
|
+
|
|
|
+ //查询发起请求者的ID
|
|
|
+ QueryWrapper<User> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.lambda().eq(User::getPhone,dto.getJiePhone());
|
|
|
+ User user = userMapper.selectOne(wrapper);
|
|
|
+
|
|
|
+ //
|
|
|
+ QueryWrapper<FriendRelation> query = new QueryWrapper<>();
|
|
|
+ query.lambda().eq(FriendRelation::getUserId,user.getId());
|
|
|
+ FriendRelation friendRelation = friendRelationMapper.selectOne(query);
|
|
|
+ friendRelation.setStatus(1);
|
|
|
+
|
|
|
+ FriendRelation relation = new FriendRelation();
|
|
|
+ relation.setId(String.valueOf(SnowflakeUtil.nextId()));
|
|
|
+ relation.setUserId(id);
|
|
|
+ relation.setFriendId(user.getId());
|
|
|
+ relation.setRemark(dto.getRemark());
|
|
|
+ relation.setGroupName(dto.getGroupName());
|
|
|
+ relation.setStatus(1);
|
|
|
+ relation.setCreateTime(new Date());
|
|
|
+
|
|
|
+ friendRequestMapper.updateById(request);
|
|
|
+ if(dto.getStatus()==1){
|
|
|
+ log.info("同意好友请求");
|
|
|
+ friendRelationMapper.updateById(friendRelation);
|
|
|
+ friendRelationMapper.insert(relation);
|
|
|
+ friendRelationMapper.deleteById(user.getId());
|
|
|
+ return ResultVo.success(ApiServiceExceptionEnum.RESULT_SUCCES);
|
|
|
+ }else if(dto.getStatus()==2){
|
|
|
+ log.info("已拒绝好友请求");
|
|
|
+ return ResultVo.success(ApiServiceExceptionEnum.Friend_JUJUE);
|
|
|
+ }else {
|
|
|
+ return ResultVo.error(ApiServiceExceptionEnum.RESULT_ERROR);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResultVo findFriendList(RequestFriendVo requestFriend) {
|
|
|
+ Claims claims = AppJwtUtil.getClaimsBody(requestFriend.getToken());
|
|
|
+ String id = claims.get("id").toString();
|
|
|
+ requestFriend.setId(id);
|
|
|
+
|
|
|
+ List<FriendRelation> list = friendRelationMapper.findFriendList(requestFriend);
|
|
|
+// System.err.println(list);
|
|
|
|
|
|
+ return ResultVo.success(ApiServiceExceptionEnum.RESULT_SUCCES,list);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|