package com.fang.bbks.modules.social.web;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.catalina.connector.Request;
import org.apache.http.HttpRequest;
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.ModelAttribute;
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.ModelAndView;
import com.fang.bbks.common.utils.SessionUtil;
import com.fang.bbks.common.web.BaseController;
import com.fang.bbks.modules.social.entity.Dynamic;
import com.fang.bbks.modules.social.service.DynamicService;
import com.fang.bbks.modules.social.service.InterestService;
import com.fang.bbks.modules.social.service.MessageService;
import com.fang.bbks.modules.social.service.NetWorkService;
import com.fang.bbks.modules.social.service.RelationService;
import com.fang.bbks.modules.sys.entity.Comment;
import com.fang.bbks.modules.sys.entity.User;
import com.fang.bbks.modules.sys.service.CommentService;
import com.fang.bbks.modules.sys.service.UserService;
/**
* @Intro descrption here
* @author Lee [shouli1990@gmail.com]
* @Version V0.0.1
* @Date 2013-11-15
* @since 下午1:59:52
*/
@Controller
@RequestMapping("/user")
public class UserController extends BaseController {
private final static Logger log = LoggerFactory.getLogger(UserController.class);
@Autowired
private UserService userService;
@Autowired
private DynamicService dynamicService;
@Autowired
private NetWorkService netWorkService;
@Autowired
private RelationService relationService;
@Autowired
private MessageService messageService;
@Autowired
private SessionUtil sessionUtil;
@Autowired
private CommentService commentService;
@Autowired
private InterestService interestService;
/**
* 个人主页
*
* @param request
* @param mv
* @return --> -->
*/
@RequestMapping(method = RequestMethod.GET, value = { "/profile/index","/profile/","/profile" })
public String profile(Model uiModel,HttpServletRequest request,
HttpServletResponse response) {
User u = sessionUtil.getSignInUser(request.getSession());
if(u == null){
uiModel.addAttribute(HANDLER_MSG, "您还未登录,请登录");
return "redirect:/login";
}
netWorkService.setUserInfo(u.getId(),uiModel);
return "/user/profile";
}
/**
* 用户信息主页
*
* @param request
* @param mv
* @return
*/
@RequestMapping(method = RequestMethod.GET, value = { "/detail/{uid}" })
public String detail(
@PathVariable("uid") Long uid, Model uiModel,
@RequestParam(value="type",required=false) Integer type,
HttpServletRequest request) {
User cu =sessionUtil.getSignInUser(request.getSession());
//未登录
if(cu == null){
uiModel.addAttribute(HANDLER_MSG, "您还未登录,请登录");
return "redirect:/login";
}
//资源不存在,转首页
if(userService.findOne(uid) == null){
uiModel.addAttribute(HANDLER_MSG, "您要访问的资源已经被删除!");
return "redirect:/index";
}
//转个人主页
if(uid == cu.getId()){
return "redirect:/user/profile";
}
if(type == null || type != 1 || type != 2){
uiModel.addAttribute("dynamicInfo", dynamicService.listDynamic(uid));
Comment comment = new Comment();
comment.setUid(uid);
uiModel.addAttribute("commentInfo", commentService.find(comment));
}else if(type == 1){
uiModel.addAttribute("dynamicInfo", dynamicService.listDynamic(uid));
}else {
Comment comment = new Comment();
comment.setUid(uid);
uiModel.addAttribute("commentInfo", commentService.find(comment));
}
uiModel.addAttribute("type", type);
uiModel.addAttribute("userInfo", userService.findOne(uid));
if(relationService.isFlow(cu.getId(), uid)){
uiModel.addAttribute("doFlow", true);
}
//找他的兴趣
uiModel.addAttribute("invos", interestService.findAll(uid, null));
return "/user/detail";
}
/**
* 跟新用户状态信息
* @param uiModel
* @param request
* @param response
* @param description
* @return
*/
@RequestMapping(value = { "/updateStatus" })
public String updateStatus( Model uiModel,HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value = "description",required = true) String description){
log.debug("update description...{}",description);
User u = sessionUtil.getSignInUser(request.getSession());
if(u == null){
uiModel.addAttribute(HANDLER_MSG, "您还未登录,请登录");
return "redirect:/login";
}
try{
userService.updateState(description,u.getId());
u.setDescription(description);
sessionUtil.setSignInUser(request.getSession(), u);
}catch(Exception e){
log.error("数据操作异常,{}",e.getMessage(),e);
uiModel.addAttribute(HANDLER_MSG,"系统异常,稍后再试!");
}
return "redirect:/user/profile";
}
@RequestMapping(value = { "/updateAvatar" })
public String updateAvatar( Model uiModel,HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value = "avatarSrc",required = true) String avatarSrc){
log.debug("update avatarSrc...{}",avatarSrc);
User u = sessionUtil.getSignInUser(request.getSession());
if(u == null){
uiModel.addAttribute(HANDLER_MSG, "您还未登录,请登录");
return "redirect:/login";
}
try{
userService.updateAvatar(avatarSrc,u.getId());
u.setAvatar(avatarSrc);
sessionUtil.setSignInUser(request.getSession(), u);
}catch(Exception e){
log.error("数据操作异常,{}",e.getMessage(),e);
uiModel.addAttribute(HANDLER_MSG,"系统异常,稍后再试!");
}
return "redirect:/user/profile";
}
@RequestMapping(value = { "/publishDynamic" })
public String publishDynamic( Model uiModel,HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value = "content",required = true) String content){
log.debug("update content...{}",content);
User u = sessionUtil.getSignInUser(request.getSession());
if(u == null){
uiModel.addAttribute(HANDLER_MSG, "您还未登录,请登录");
return "redirect:/login";
}
try{
dynamicService.publishDynamic(content, u.getId());
}catch(Exception e){
log.error("数据操作异常,{}",e.getMessage(),e);
uiModel.addAttribute(HANDLER_MSG,"系统异常,稍后再试!");
}
return "redirect:/user/profile";
}
@RequestMapping(value = { "/flow" })
public String flow( Model uiModel,HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value = "uid",required = true) Long uid){
log.debug("flow...{}",uid);
User u = sessionUtil.getSignInUser(request.getSession());
if(u == null){
uiModel.addAttribute(HANDLER_MSG, "您还未登录,请登录");
return "redirect:/login";
}
try{
netWorkService.flow(u.getId(), uid);
}catch(Exception e){
e.printStackTrace();
log.error("err flow handler,{},{}", e.getMessage(),e);
}
return "redirect:/user/detail/"+uid;
}
@RequestMapping(value = { "/unflow" })
public String unflow( Model uiModel,HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value = "uid",required = true) Long uid){
log.debug("unflow...{}",uid);
User u = sessionUtil.getSignInUser(request.getSession());
if(u == null){
uiModel.addAttribute(HANDLER_MSG, "您还未登录,请登录");
return "redirect:/login";
}
try{
netWorkService.unflow(u.getId(), uid);
}catch(Exception e){
e.printStackTrace();
log.error("err flow handler,{},{}", e.getMessage(),e);
}
return "redirect:/user/detail/"+uid;
}
@RequestMapping(value = { "/sendMessage" })
public String sendMessage( Model uiModel,
HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value = "message",required = true) String message,
@RequestParam(value = "uid",required = true) Long uid){
log.debug("sendMessage...{}",uid);
User u = sessionUtil.getSignInUser(request.getSession());
if(u == null){
uiModel.addAttribute(HANDLER_MSG, "您还未登录,请登录");
return "redirect:/login";
}
//资源不存在,转首页
if(userService.findOne(uid) == null){
uiModel.addAttribute(HANDLER_MSG, "您要访问的资源已经被删除!");
return "redirect:/index";
}
try{
messageService.sendMessage(message, u.getId(), uid);
}catch(Exception e){
e.printStackTrace();
log.error("err flow handler,{},{}", e.getMessage(),e);
}
return "redirect:/user/profile";
}
@RequestMapping(value = { "/replyMessage" })
public String replyMessage( Model uiModel,
HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value = "messageId",required = true) Long messageId,
@RequestParam(value = "message",required = true) String message,
@RequestParam(value = "uid",required = true) Long uid){
log.debug("replyMessage...{},{},{}",uid,message,messageId);
User u = sessionUtil.getSignInUser(request.getSession());
if(u == null){
uiModel.addAttribute(HANDLER_MSG, "您还未登录,请登录");
return "redirect:/login";
}
//资源不存在,转首页
if(userService.findOne(uid) == null){
uiModel.addAttribute(HANDLER_MSG, "您要访问的资源已经被删除!");
return "redirect:/index";
}
try{
messageService.replyMessage(u.getId(), uid,message,messageId);
}catch(Exception e){
e.printStackTrace();
log.error("err reply handler,{},{}", e.getMessage(),e);
}
return "redirect:/user/profile";
}
}