package com.xzp.forum.controller;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.view.RedirectView;
import com.alibaba.fastjson.JSON;
import com.xzp.forum.dao.AnswerDao;
import com.xzp.forum.dao.ImageDao;
import com.xzp.forum.dao.MessageDao;
import com.xzp.forum.dao.TopicDao;
import com.xzp.forum.dao.UserDao;
import com.xzp.forum.model.Image;
import com.xzp.forum.model.Topic;
import com.xzp.forum.model.User;
import com.xzp.forum.service.FollowService;
import com.xzp.forum.service.QiniuService;
import com.xzp.forum.util.HostHolder;
/**
* 个人简介接口
*
* @author xiezhiping
*
*/
@Controller
public class ProfileController {
private static final Logger logger = LoggerFactory.getLogger(ProfileController.class);
@Autowired
private UserDao userDao;
@Autowired
private TopicDao topicDao;
@Autowired
private MessageDao messageDao;
@Autowired
private AnswerDao answerDao;
@Autowired
private ImageDao imageDao;
@Autowired
private HostHolder hostHolder;
@Autowired
private FollowService followService;
@Autowired
QiniuService qiniuService;
@RequestMapping(path = "/profile", method = RequestMethod.GET)
public String displayMyProfile(Model model) {
User user = hostHolder.getUser();
logger.warn("[displayMyProfile] display profile, username:{}",user.getUsername());
Long points = userDao.getPoints(user.getId());
// jedisAdapter.zadd(rankKey, points, user.getUsername());
Long numberOfTopics = topicDao.countTopicsByUser_Id(user.getId());
Long numberOfAnswers = answerDao.countAnswersByUser_Id(user.getId());
Long numberOfHelped = answerDao.countAnswersByUser_IdAndUseful(user.getId(), true);
List<String> myImgs=imageDao.getImgByUserId(user.getId());
List<String> myAllImgs=imageDao.getAllImgByUserId(user.getId());
model.addAttribute("user", user);
model.addAttribute("newMessage", messageDao.countMessageByToId(user.getId()));
model.addAttribute("points", points);
model.addAttribute("numberOfTopics", numberOfTopics);
model.addAttribute("numberOfAnswers", numberOfAnswers);
model.addAttribute("numberOfHelped", numberOfHelped);
model.addAttribute("myImgs", myImgs);
model.addAttribute("isHasMoreImg", myAllImgs.size()>myImgs.size());
model.addAttribute("switch", true);
return "profile";
}
@RequestMapping(path = "/profile/{id}", method = RequestMethod.GET)
public String displayProfileById(@PathVariable Long id, Model model) {
User user = userDao.getUserById(id);
logger.warn("[displayMyProfile] display profile, username:{}",user.getUsername());
Long points = userDao.getPoints(user.getId());
Long numberOfTopics = topicDao.countTopicsByUser_Id(id);
Long numberOfAnswers = answerDao.countAnswersByUser_Id(id);
Long numberOfHelped = answerDao.countAnswersByUser_IdAndUseful(id, true);
List<String> myImgs=imageDao.getImgByUserId(user.getId());
List<String> myAllImgs=imageDao.getAllImgByUserId(user.getId());
User otherUser=hostHolder.getUser();
boolean isFollowed = followService.isFollowed(otherUser.getId(), id);
model.addAttribute("user", otherUser);
model.addAttribute("otherUser", user);
model.addAttribute("newMessage", messageDao.countMessageByToId(hostHolder.getUser().getId()));
model.addAttribute("points", points);
model.addAttribute("numberOfTopics", numberOfTopics);
model.addAttribute("numberOfAnswers", numberOfAnswers);
model.addAttribute("numberOfHelped", numberOfHelped);
model.addAttribute("myImgs", myImgs);
model.addAttribute("isHasMoreImg", myAllImgs.size()>myImgs.size());
model.addAttribute("switch", (user.getId()==otherUser.getId())?true:false);
model.addAttribute("followNums", followService.getFollowNum(user.getUsername(), user.getId()));
model.addAttribute("commonFansNum", followService.getCommonFans(user.getId(), otherUser.getId()).size());
model.addAttribute("isFollowed", isFollowed);
return "profile";
}
@RequestMapping(path = "/profile", method = RequestMethod.POST)
public View addTask(@RequestParam("category") String category, @RequestParam("title") String title,
@RequestParam("content") String content, @RequestParam("code") String code,
@RequestParam("id_user") String id_user, HttpServletRequest request) {
Topic topic = new Topic();
topic.setCategory(category);
if (Objects.equals(code, "")) {
topic.setCode(null);
} else {
topic.setCode(code);
}
topic.setContent(content);
topic.setTitle(title);
topic.setCreatedDate(new Date());
topic.setIdUser(Integer.parseInt(id_user));
topic.setUser(userDao.getUserById(Long.parseLong(id_user)));
topicDao.addTopic(topic);
String contextPath = request.getContextPath();
return new RedirectView(contextPath + "/profile");
}
@RequestMapping(path="/imageWall/{id}",method=RequestMethod.GET)
public String imageWall(@PathVariable Long id, Model model) {
User user = userDao.getUserById(id);
List<String> myAllImgs=imageDao.getAllImgByUserId(user.getId());
model.addAttribute("user", user);
model.addAttribute("myImgs", myAllImgs);
model.addAttribute("newMessage", messageDao.countMessageByToId(user.getId()));
return "imageWall";
}
@RequestMapping(path="/upload",method=RequestMethod.POST)
public String uploadImage(@RequestParam("file") MultipartFile file,HttpServletRequest request, Model model) {
try {
String fileUrl=qiniuService.saveImage(file);
// if(fileUrl == null) {
// return ForumUtil.getJSONString(1, "上传图片失败");
// }
Image image=new Image();
image.setImgUrl(fileUrl);
image.setIdUser(hostHolder.getUser().getId());
imageDao.addImg(image);
User user = hostHolder.getUser();
Long points = userDao.getPoints(user.getId());
Long numberOfTopics = topicDao.countTopicsByUser_Id(user.getId());
Long numberOfAnswers = answerDao.countAnswersByUser_Id(user.getId());
Long numberOfHelped = answerDao.countAnswersByUser_IdAndUseful(user.getId(), true);
List<String> myImgs=imageDao.getImgByUserId(user.getId());
List<String> myAllImgs=imageDao.getAllImgByUserId(user.getId());
model.addAttribute("user", user);
model.addAttribute("otherUser", user);
model.addAttribute("newMessage", messageDao.countMessageByToId(user.getId()));
model.addAttribute("points", points);
model.addAttribute("numberOfTopics", numberOfTopics);
model.addAttribute("numberOfAnswers", numberOfAnswers);
model.addAttribute("numberOfHelped", numberOfHelped);
model.addAttribute("myImgs", myImgs);
model.addAttribute("isHasMoreImg", myAllImgs.size()>myImgs.size());
model.addAttribute("switch", true);
return "profile";
} catch (IOException e) {
e.printStackTrace();
return "profile";
}
}
/**
* userId用户关注otherUserId用户
* @param userId
* @param otherUserId
* @return
*/
@RequestMapping(path="/follow/{userId}_{otherUserId}",method=RequestMethod.POST)
@ResponseBody
public String addFollow(@PathVariable Long userId, @PathVariable Long otherUserId) {
User user = userDao.getUserById(userId);
User otherUser = userDao.getUserById(otherUserId);
logger.warn("[addFollow] addFollow . {} follows {}", user.getUsername(), otherUser.getUsername());
followService.addF
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
jnu_forum是基于Java的论坛系统。前端使用Html+CSS+JS实现,后端使用Java语言开发,技术栈包括但不限于Spring/SpringMVC/SpringBoot、MyBatis、Redis、PageHelper、MySQL、Maven等,开发工具为Eclipse。 功能 1、登录和注册 2、(分类)浏览话题 3、发表话题 4、上传照片 5、评论以及评论赞踩 6、站内信通知 7、用户积分排行榜 8、关注和共同关注 主要功能实现 1、登录注册:使用SpringSecurity4框架,即使用已经包装好的接口来实现,简单易用。 2、上传照片:照片是存储在第三方服务器,即七牛云。 3、站内信通知:通过异步队列来实现的站内信通知,其中选择Redis来作为队列。 4、排行榜:排行榜是通过Redis的有序集合来实现的,可以快速实现topK排序。 5、关注和共同关注:通过Redis的集合数据结构实现。 备注: 1、本项目的Redis已经换成集群了,本地跑的时候先建立集群,否则自行将集群换成单机Redis,具体修改application.propertie和com.xzp.foru
资源推荐
资源详情
资源评论
收起资源包目录
Java+SpringBoot+MyBatis+Maven+MySQL实现的一个Java分享学习论坛(毕业设计) (114个子文件)
mvnw.cmd 5KB
materialize.css 178KB
materialize.min.css 138KB
online.css 582B
.DS_Store 10KB
.DS_Store 10KB
.DS_Store 10KB
.DS_Store 8KB
.DS_Store 8KB
.DS_Store 8KB
.DS_Store 8KB
.DS_Store 8KB
.DS_Store 8KB
.DS_Store 8KB
.DS_Store 8KB
.DS_Store 6KB
.gitignore 249B
profile.html 6KB
topic.html 6KB
topics.html 4KB
addTopic.html 4KB
online.html 3KB
login.html 2KB
offline.html 2KB
register.html 2KB
answers.html 2KB
message.html 2KB
index.html 2KB
title.html 1KB
aboutUs.html 1KB
rank.html 1KB
error.html 1KB
imageWall.html 943B
image 1B
maven-wrapper.jar 46KB
ProfileController.java 9KB
TopicsController.java 5KB
DemoUtil.java 4KB
TopicController.java 4KB
AddTopicController.java 4KB
JedisAdapter.java 3KB
MessageController.java 3KB
EventConsumer.java 3KB
SecurityConfiguration.java 3KB
User.java 3KB
FollowService.java 3KB
AnswerController.java 3KB
QiniuService.java 2KB
TopicsService.java 2KB
Answer.java 2KB
AnswerDao.java 2KB
Topic.java 2KB
PageService.java 2KB
EventModel.java 2KB
PageBean.java 2KB
TopicDao.java 1KB
Message.java 1KB
CommentHandler.java 1KB
RankController.java 1KB
RegisterController.java 1KB
MessageDao.java 1KB
UserDao.java 1KB
ForumUtil.java 1KB
RegisterService.java 1KB
PageHelperController.java 1KB
JnuForumApplication.java 889B
RedisKeyUtil.java 879B
FileUtil.java 805B
EventProducer.java 782B
HostHolder.java 725B
ImageDao.java 724B
MessageService.java 615B
FooterController.java 566B
UserInfoCacheMgr.java 508B
AdditionalLoginConfiguration.java 486B
Image.java 440B
LoginController.java 418B
TopicSortUtil.java 328B
IndexController.java 322B
ViewObject.java 307B
EventType.java 217B
EventHandler.java 213B
EntityType.java 180B
RankService.java 119B
dlrb.jpg 700KB
office.jpg 155KB
materialize.js 359KB
jquery.js 262KB
materialize.min.js 162KB
jquery.min.js 85KB
mvnw 6KB
comment.png 1.14MB
topics.png 277KB
index.png 271KB
message.png 256KB
rank.png 170KB
profile.png 155KB
followAndFans.png 152KB
addtopic.png 147KB
login.png 145KB
共 114 条
- 1
- 2
资源评论
白话机器学习
- 粉丝: 8260
- 资源: 7686
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功