package com.huyan.service.impl;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import org.n3r.idworker.Sid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import com.huyan.enums.MsgSignFlagEnum;
import com.huyan.enums.SearchFriendsStatusEnum;
import com.huyan.mapper.ChatMsgMapper;
import com.huyan.mapper.FriendsRequestMapper;
import com.huyan.mapper.MyFriendsMapper;
import com.huyan.mapper.UsersMapper;
import com.huyan.mapper.UsersMapperCustom;
import com.huyan.netty.ChatMsg;
import com.huyan.pojo.FriendsRequest;
import com.huyan.pojo.MyFriends;
import com.huyan.pojo.Users;
import com.huyan.pojo.vo.FriendRequestVO;
import com.huyan.pojo.vo.MyFriendsVO;
import com.huyan.service.UserService;
import com.huyan.utils.FastDFSClient;
import com.huyan.utils.FileUtils;
import com.huyan.utils.QRCodeUtils;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.entity.Example.Criteria;
/**
* @author 胡琰
* @version 创建时间:2019年1月21日 上午10:48:00
* @Description:
*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UsersMapper userMapper;
@Autowired
private UsersMapperCustom usersMapperCustom;
@Autowired
private MyFriendsMapper myFriendsMapper;
@Autowired
private ChatMsgMapper chatMsgMapper;
@Autowired
private FriendsRequestMapper friendsRequestMapper;
@Autowired
private Sid sid;
@Autowired
private QRCodeUtils qrCodeUtils;
@Autowired
private FastDFSClient fastDFSClient;
@Transactional(propagation = Propagation.SUPPORTS)
@Override
public boolean queryUsernameIsExist(String username) {
Users user = new Users();
user.setUsername(username);
Users result = userMapper.selectOne(user);
return result != null ? true : false;
}
/* (non-Javadoc)
* @see com.huyan.service.UserService#queryUserForLogin(java.lang.String, java.lang.String)
*/
@Transactional(propagation = Propagation.SUPPORTS)
@Override
public Users queryUserForLogin(String username, String pwd) {
Example userExample = new Example(Users.class);
Criteria criteria = userExample.createCriteria();
criteria.andEqualTo("username", username);
criteria.andEqualTo("password", pwd);
Users result = userMapper.selectOneByExample(userExample);
return result;
}
@Transactional(propagation = Propagation.REQUIRED)
@Override
public Users saveUser(Users user) {
String UserId = sid.nextShort();
//生成二維碼
String qrCodePath = "C://user" + UserId + "qrcode.png";
//huxin_qrcode:[username]
qrCodeUtils.createQRCode(qrCodePath, "huxin_qrcode:[username]" + user.getUsername());
MultipartFile qrcodeFile = FileUtils.fileToMultipart(qrCodePath);
String qrCodeUrl = "";
try {
qrCodeUrl = fastDFSClient.uploadQRCode(qrcodeFile);
} catch (IOException e) {
e.printStackTrace();
}
user.setQrcode(qrCodeUrl);
user.setId(UserId);
userMapper.insert(user);
return user;
}
/* (non-Javadoc)
* @see com.huyan.service.UserService#updateUserInfo(com.huyan.pojo.Users)
*/
@Transactional(propagation = Propagation.REQUIRED)
@Override
public Users updateUserInfo(Users user) {
userMapper.updateByPrimaryKeySelective(user);
return queryUserById(user.getId());
}
@Transactional(propagation = Propagation.SUPPORTS)
private Users queryUserById(String useId) {
return userMapper.selectByPrimaryKey(useId);
}
/* (non-Javadoc)
* @see com.huyan.service.UserService#preconditionSearchFriends(java.lang.String, java.lang.String)
*/
@Transactional(propagation = Propagation.SUPPORTS)
@Override
public Integer preconditionSearchFriends(String myuserId, String friendUsername) {
Users user = queryUserInfoUsername(friendUsername);
//1.搜索的用户如果不存在,返回[无此用户]
if (user == null) {
return SearchFriendsStatusEnum.USER_NOT_EXIST.status;
}
//2.搜索账号是你自己,返回[不能添加自己]
if (user.getId().equals(myuserId)) {
return SearchFriendsStatusEnum.NOT_YOURSELF.status;
}
//3.搜索的朋友是你的好友,返回[该用户已经是你的好友]
Example mfe = new Example(MyFriends.class);
Criteria mfc = mfe.createCriteria();
mfc.andEqualTo("myUserId",myuserId);
mfc.andEqualTo("myFriendUserId",user.getId());
MyFriends myFriendsRel = myFriendsMapper.selectOneByExample(mfe);
if (myFriendsRel != null) {
return SearchFriendsStatusEnum.ALREADY_FRIENDS.status;
}
return SearchFriendsStatusEnum.SUCCESS.status;
}
public Users queryUserInfoUsername(String username) {
Example ue = new Example(Users.class);
Criteria uc = ue.createCriteria();
uc.andEqualTo("username",username);
return userMapper.selectOneByExample(ue);
}
/* (non-Javadoc)
* @see com.huyan.service.UserService#queryUserInfoByUsername(java.lang.String)
*/
@Override
public Users queryUserInfoByUsername(String username) {
Example ue = new Example(Users.class);
Criteria uc = ue.createCriteria();
uc.andEqualTo("username",username);
return userMapper.selectOneByExample(ue);
}
/* (non-Javadoc)
* @see com.huyan.service.UserService#sendFriendsRequstRequest(java.lang.String, java.lang.String)
*/
@Override
public void sendFriendsRequstRequest(String myuserId, String friendUsername) {
//更具用户名吧朋友信息查询出阿里
Users friend = queryUserInfoByUsername(friendUsername);
//1.查询发送好友请求记录表
Example fre = new Example(FriendsRequest.class);
Criteria frc = fre.createCriteria();
frc.andEqualTo("sendUserId",myuserId);
frc.andEqualTo("acceptUserId",friend.getId());
FriendsRequest friendRequest = friendsRequestMapper.selectOneByExample(fre);
if (friendRequest == null) {
//2.如果不是你的好友,并且好友记录没有添加,则新增好友请求记录
String requestId = sid.nextShort();
FriendsRequest request = new FriendsRequest();
request.setId(requestId);
request.setSendUserId(myuserId);
request.setAcceptUserId(friend.getId());
request.setRequestDateTime(new Date());
friendsRequestMapper.insert(request);
}
}
/* (non-Javadoc)
* @see com.huyan.service.UserService#queryFriendRequestList(java.lang.String)
*/
@Transactional(propagation = Propagation.SUPPORTS)
@Override
public List<FriendRequestVO> queryFriendRequestList(String acceptUserId) {
return usersMapperCustom.queryFriendRequestList(acceptUserId);
}
/* (non-Javadoc)
* @see com.huyan.service.UserService#deleteFriendRequest(java.lang.String, java.lang.String)
*/
@Transactional(propagation = Propagation.REQUIRED)
@Override
public void deleteFriendRequest(String sendUserId, String acceptUserId) {
Example fre = new Example(MyFriends.class);
Criteria frc = fre.createCriteria();
frc.andEqualTo("sendUserId",sendUserId);
frc.andEqualTo("acceptUserId",acceptUserId);
friendsRequestMapper.deleteByExample(fre);
}
/* (non-Javadoc)
* @see com.huyan.service.UserService#passFriendRequest(java.lang.String, java.lang.String)
*/
@Transactional(propagation = Propagation.REQUIRED)
@Override
public void passFriendRequest(String sendUserId, String acceptUserId) {
saveFriends(sendUserId,acceptUserId);
saveFriends(acceptUserId,sendUserId);
deleteFriendRequest(sendUserId,acceptUserId);
}
@Transactional(propagation = Propagation.REQUIRED)
private void saveFriends(String sendUserId, String acceptUserId) {
MyFriends myFriends = new MyFriends();
String recordId = sid.nextShort();
myFriends.setId(recordId);
myFriends.setMyFriendUserId(acceptUserId);
myFriends.setMyUserId(sendUserId);
myFriendsMapper.insert(myFriends);
}
/* (non-Javadoc)
* @see com.huyan.service.UserService#queryMyFriends(java.lang.String)
*/
@Override
public
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源介绍】 基于springboot的在线聊天系统设计与实现.zip基于springboot的在线聊天系统设计与实现.zip基于springboot的在线聊天系统设计与实现.zip基于springboot的在线聊天系统设计与实现.zip基于springboot的在线聊天系统设计与实现.zip基于springboot的在线聊天系统设计与实现.zip基于springboot的在线聊天系统设计与实现.zip基于springboot的在线聊天系统设计与实现.zip基于springboot的在线聊天系统设计与实现.zip基于springboot的在线聊天系统设计与实现.zip基于springboot的在线聊天系统设计与实现.zip基于springboot的在线聊天系统设计与实现.zip基于springboot的在线聊天系统设计与实现.zip基于springboot的在线聊天系统设计与实现.zip基于springboot的在线聊天系统设计与实现.zip基于springboot的在线聊天系统设计与实现.zip 【备注】 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 欢迎下载,欢迎沟通,互相学习,共同进步!提供答疑!
资源推荐
资源详情
资源评论














收起资源包目录





































































































共 290 条
- 1
- 2
- 3
资源评论

- birking232024-12-20资源不错,内容挺好的,有一定的使用价值,值得借鉴,感谢分享。

manylinux
- 粉丝: 5077
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 2022年C语言程序设计A课程形成性考核作业.doc
- 五章系统安全评价技术.pptx
- 中信数码冲印网络营销策划书.doc
- 医疗行业无线网络解决方案.docx
- 软件资产管理在企业中的应用.pptx
- 软件工程图书管理系统(2).doc
- 中国智慧城市体验中心分析报告PPT课件.ppt
- 计算机基础知识试题6.doc
- 基于工程应用的VB与ANSYS接口问题及二次开发.docx
- 硕士本科论文办公自动化系统的设计与实现.pdf
- 建设工程项目管理工作用表.doc
- 2022年下半年软件设计师模拟真题与答案解析上午选择与下午案例计算机软考.doc
- 智慧交通应用解决方案.docx
- 数据库使用协议.doc
- 电力二次系统安全防护方案.doc
- 项目管理九大管理工具.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
