package com.zdcf.action;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.io.FilenameUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.zdcf.model.FileExchange;
import com.zdcf.model.Movie;
import com.zdcf.search.IChnlMovieSearchService;
import com.zdcf.search.entity.ChnlMovieSearch;
import com.zdcf.search.param.MovieSearchParam;
import com.zdcf.service.FileService;
import com.zdcf.service.MovieService;
import com.zdcf.tool.Tools;
@Controller
@RequestMapping("/movie")
public class MovieAction {
private static Logger logger = Logger.getLogger(MovieAction.class);
@Autowired
private IChnlMovieSearchService movieSearchService;
@Autowired
private FileService fileService;
@Autowired
private MovieService movieService;
@RequestMapping("/toMovieList")
public String toMovieList(MovieSearchParam searchParam,HttpServletRequest request,ModelMap model) throws IOException{
String ip = Tools.getNoHTMLString(getIpAddr(request));
logger.info("ip:"+ip+" 进入电影列表");
String currentPage = "1";
if(null!=request.getParameter("currentPage")){
currentPage =request.getParameter("currentPage");
}
searchParam.setI(Integer.valueOf(currentPage));
List<ChnlMovieSearch> list = movieSearchService.search(searchParam);
// for (ChnlMovieSearch chnlMovieSearch : list) {
//
// FileExchange fileExchange =fileService.getFileExchange(chnlMovieSearch.getImg());
// if(null==fileExchange){
// FileExchange newfileExchange = new FileExchange();
// HttpClient client = new HttpClient();
// GetMethod get = new GetMethod(chnlMovieSearch.getImg());
// String fileExt = FilenameUtils.getExtension(chnlMovieSearch.getImg());
// String newUrl = UUID.randomUUID().toString().replaceAll("-", "")+"."+fileExt;
// newfileExchange.setOldUrl(chnlMovieSearch.getImg());
// newfileExchange.setNewUrl(newUrl);
//
// File storeFile = new File(request.getSession().getServletContext().getRealPath("/")+"uploadfile/"+newUrl);
// FileOutputStream output = null;
// try{
// client.executeMethod(get);
// output = new FileOutputStream(storeFile);
// output.write(get.getResponseBody());
// output.close();
// }catch (HttpException e)
// {
// e.printStackTrace();
// }
// //存储redis和数据库
// fileService.addFileExchange(newfileExchange);
// chnlMovieSearch.setImg(newfileExchange.getNewUrl());
// }else{
// chnlMovieSearch.setImg( fileExchange.getNewUrl());
// }
// }
model.addAttribute("list", list);
model.addAttribute("searchParam", searchParam);
return "movie/movieList";
}
@RequestMapping("/getMovieDetail")
public String getMovieDetail(@RequestParam("id")int id,ModelMap model,HttpServletRequest request) throws UnsupportedEncodingException{
String ip = getIpAddr(request);
Movie movie = movieService.getMovieById(id);
logger.info("ip:"+ip+" 查看了电影:《"+movie.getName()+"》");
model.addAttribute("movie", movie);
// if(!isMobile()){
return "/movie/movieDetail";
// }else{
// return "/message/zhihuArticleDetail";
// }
}
public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Real-IP");
if (null != ip && !"".equals(ip.trim())
&& !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
ip = request.getHeader("X-Forwarded-For");
if (null != ip && !"".equals(ip.trim())
&& !"unknown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个IP值,第一个为真实IP。
int index = ip.indexOf(',');
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
}
return request.getRemoteAddr();
}
@ResponseBody
@RequestMapping("/queryKeyWord")
public Map<String, Object> mutiThreads(MovieSearchParam searchParam){
searchParam.setS(5);
Map<String, Object> map = new HashMap<String, Object>();
List<ChnlMovieSearch> list = movieSearchService.search(searchParam);
map.put("list", list);
return map;
}
@ResponseBody
@RequestMapping("/fileExchange")
public Map<String, Object> fileExchange(String url,HttpServletRequest request) throws IOException{
Map<String, Object> map = new HashMap<String, Object>();
FileExchange fileExchange =fileService.getFileExchange(url);
if(null==fileExchange){
FileExchange newfileExchange = new FileExchange();
HttpClient client = new HttpClient();
GetMethod get = new GetMethod(url);
String fileExt = FilenameUtils.getExtension(url);
String newUrl = UUID.randomUUID().toString().replaceAll("-", "")+"."+fileExt;
newfileExchange.setOldUrl(url);
newfileExchange.setNewUrl(newUrl);
File storeFile = new File(request.getSession().getServletContext().getRealPath("/")+"uploadfile/"+newUrl);
FileOutputStream output = null;
try{
client.executeMethod(get);
output = new FileOutputStream(storeFile);
output.write(get.getResponseBody());
output.close();
}catch (HttpException e)
{
e.printStackTrace();
}
//存储redis和数据库
fileService.addFileExchange(newfileExchange);
map.put("url", newfileExchange.getNewUrl());
}else{
map.put("url", fileExchange.getNewUrl());
}
return map;
}
}