package com.xiaozhi.blog.web.others.sina; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; 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 com.tianji.test.core.redis.LoginHelper; import com.xiaozhi.blog.mongo.MongoUserDao; import com.xiaozhi.blog.service.other.sina.BlogTime; import com.xiaozhi.blog.vo.SinaAccessToken; import weibo4j.Favorite; import weibo4j.Timeline; import weibo4j.model.Favorites; import weibo4j.model.FavoritesWapper; import weibo4j.model.Paging; import weibo4j.model.WeiboException; @Controller @RequestMapping("/blog/sina/favorites") public class SinaFavoritesController { private static Log logger = LogFactory.getLog(SinaFavoritesController.class); @Autowired private Favorite favorite; @Autowired private MongoUserDao retwis; @Autowired private BlogTime blogTime; @Autowired private Timeline timeline; /** * 获取用户收藏列表 * @param page * @param model * @return */ @RequestMapping(value = "favoritetimeline", method = RequestMethod.GET) public String favorites(@RequestParam(required = false,defaultValue="1") Integer page,Model model) { SinaAccessToken accessToken = (SinaAccessToken)retwis.getAccessTokenByUser(LoginHelper.getUserId()); favorite.client.setToken(accessToken.getAccesstoken()); timeline.client.setToken(accessToken.getAccesstoken()); try { FavoritesWapper favoritesWapper = this.favorite.getFavorites(new Paging(page, 20)); if(logger.isDebugEnabled()){ logger.debug("--------------------------->"+favoritesWapper.getFavoriteslist().size()); } model.addAttribute("favoritesWapper",this.blogTime.getFavoritesWapperWithFaceImage(favoritesWapper,timeline)); model.addAttribute("pages", getPages(favoritesWapper.getTotalNumber(),20)); model.addAttribute("page",new Paging(page, 20)); } catch (WeiboException e) { logger.debug("--------------------------->error :"+e.getError()); if("expired_token".equals(e.getError())){ return "redirect:/bind/sina?callbackUrl=/blog/sina/hometimeline"; }else{ e.printStackTrace(); } } return "/blog/sina/favoritetimeline"; } /** * ajax 微博收藏分页 * @param name * @param page * @param model * @return */ @RequestMapping(value = "favorites/page", method = RequestMethod.GET) public String favoritesPage(Integer page,Model model) { try { SinaAccessToken accessToken = (SinaAccessToken)retwis.getAccessTokenByUser(LoginHelper.getUserId()); favorite.client.setToken(accessToken.getAccesstoken()); timeline.client.setToken(accessToken.getAccesstoken()); FavoritesWapper favoritesWapper = this.favorite.getFavorites(new Paging(page, 20)); model.addAttribute("favoritesWapper",this.blogTime.getFavoritesWapperWithFaceImage(favoritesWapper,timeline)); model.addAttribute("pages", getPages (favoritesWapper.getTotalNumber(),20)); model.addAttribute("page",new Paging(page, 20)); } catch (WeiboException e) { e.printStackTrace(); } return "/blog/sina/favoritespage"; } /** * 收藏一条微博信息 * @param id * @param model * @return */ @RequestMapping(value = "createFavorite/{id}", method = RequestMethod.POST) public @ResponseBody boolean createFavorite(@PathVariable String id,Model model){ try { SinaAccessToken accessToken = (SinaAccessToken)retwis.getAccessTokenByUser(LoginHelper.getUserId()); favorite.client.setToken(accessToken.getAccesstoken()); Favorites favorites = this.favorite.createFavorites(id); return true; } catch (WeiboException e) { e.printStackTrace(); } return false; } /** * 删除我的微博收藏 * @param id * @param model * @return */ @RequestMapping(value = "removeFavorite/{id}", method = RequestMethod.POST) public @ResponseBody boolean removeFavorite(@PathVariable String id,Model model){ try { SinaAccessToken accessToken = (SinaAccessToken)retwis.getAccessTokenByUser(LoginHelper.getUserId()); favorite.client.setToken(accessToken.getAccesstoken()); Favorites favorites = this.favorite.destroyFavorites(id); return true; } catch (WeiboException e) { e.printStackTrace(); } return false; } private long getPages (long totalNumber,long pagesize){ long pages = totalNumber % pagesize; if (pages == 0) pages = totalNumber / pagesize; else pages = totalNumber / pagesize + 1; return pages; } }