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分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 欢迎下载,欢迎沟通,互相学习,共同进步!提供答疑!
资源推荐
资源详情
资源评论
收起资源包目录
基于springboot的在线聊天系统设计与实现.zip (290个子文件)
UserServiceImpl.class 9KB
UserController.class 7KB
DefaultWorkerIdStrategy.class 7KB
ChatHandler.class 6KB
DefaultRandomCodeStrategy.class 6KB
HttpReq.class 5KB
FileUtils.class 5KB
Utils.class 5KB
CustomHandler.class 5KB
Serializes.class 4KB
FileLock.class 4KB
Props.class 3KB
FastDFSClient.class 3KB
QRCodeUtils.class 3KB
IdWorker.class 3KB
ChatHandler.class 3KB
HUyanJSONResult.class 3KB
JsonUtils.class 2KB
Users.class 2KB
Sid.class 2KB
SearchFriendsStatusEnum.class 2KB
Users.class 2KB
ChatMsg.class 2KB
ChatMsg.class 2KB
GeneratorDisplay.class 2KB
OperatorFriendRequestTypeEnum.class 2KB
Ip.class 2KB
MsgActionEnum.class 2KB
WSServerInitialzer.class 2KB
WSServer.class 2KB
HelloServer.class 2KB
WSServer.class 2KB
DayPrefixRandomCodeStrategy.class 2KB
IPv4Utils.class 2KB
UsersVO.class 2KB
WSServerInitialzer.class 2KB
FriendsRequest.class 2KB
MsgSignFlagEnum.class 1KB
UserService.class 1KB
FriendsRequest.class 1KB
NettyBooter.class 1KB
Code.class 1KB
MD5Utils.class 1KB
DayCode.class 1KB
MyFriendsVO.class 1KB
HelloServerInitializer.class 1KB
FriendRequestVO.class 1KB
MyFriends.class 1KB
Props$Silent.class 1KB
MyFriends.class 1KB
Id.class 1KB
UsersBO.class 978B
Application.class 900B
DefaultWorkerIdStrategy$1.class 869B
DefaultRandomCodeStrategy$1.class 778B
DefaultWorkerIdStrategy$2.class 755B
UsersMapperCustom.class 707B
FastdfsImporter.class 664B
Sid$1.class 622B
WSServer$SingletonWSServer.class 529B
Test.class 485B
InvalidSystemClock.class 417B
MyMapper.class 340B
MyMapper.class 340B
FriendsRequestMapper.class 270B
FriendsRequestMapper.class 270B
MyFriendsMapper.class 255B
MyFriendsMapper.class 255B
ChatMsgMapper.class 249B
ChatMsgMapper.class 249B
UsersMapper.class 243B
UsersMapper.class 243B
RandomCodeStrategy.class 211B
WorkerIdStrategy.class 209B
.classpath 1KB
.classpath 1KB
.classpath 996B
.confirmed_dependencies 577B
mui.css 95KB
util.css 82KB
mui.min.css 74KB
main.css 8KB
demo.css 6KB
cropper.css 5KB
cropper.css 5KB
iconfont.css 4KB
main.css 3KB
main.css 3KB
chat.css 3KB
header.css 120B
.dependencies 4B
iconfont.eot 4KB
.gitignore 9B
.gitignore 9B
.gitignore 9B
index.html 29KB
huyan-chatlist.html 16KB
chatting.html 8KB
huyan-contact.html 7KB
uploader.html 5KB
共 290 条
- 1
- 2
- 3
资源评论
z同学的编程之路
- 粉丝: 1882
- 资源: 2130
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功