PicturesController.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. package com.zhcs.dt.controller.information.pictures;
  2. import java.io.PrintWriter;
  3. import java.text.DateFormat;
  4. import java.text.SimpleDateFormat;
  5. import java.util.ArrayList;
  6. import java.util.Date;
  7. import java.util.HashMap;
  8. import java.util.List;
  9. import java.util.Map;
  10. import javax.annotation.Resource;
  11. import javax.servlet.http.HttpServletRequest;
  12. import org.springframework.beans.propertyeditors.CustomDateEditor;
  13. import org.springframework.stereotype.Controller;
  14. import org.springframework.web.bind.WebDataBinder;
  15. import org.springframework.web.bind.annotation.InitBinder;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.bind.annotation.RequestParam;
  18. import org.springframework.web.bind.annotation.ResponseBody;
  19. import org.springframework.web.multipart.MultipartFile;
  20. import org.springframework.web.servlet.ModelAndView;
  21. import com.zhcs.dt.controller.base.BaseController;
  22. import com.zhcs.dt.entity.Page;
  23. import com.zhcs.dt.service.information.pictures.PicturesManager;
  24. import com.zhcs.dt.util.AppUtil;
  25. import com.zhcs.dt.util.Const;
  26. import com.zhcs.dt.util.DateUtil;
  27. import com.zhcs.dt.util.DelAllFile;
  28. import com.zhcs.dt.util.FileUpload;
  29. import com.zhcs.dt.util.GetWeb;
  30. import com.zhcs.dt.util.Jurisdiction;
  31. import com.zhcs.dt.util.PageData;
  32. import com.zhcs.dt.util.PathUtil;
  33. import com.zhcs.dt.util.Tools;
  34. import com.zhcs.dt.util.Watermark;
  35. /**
  36. * 类名称:图片管理
  37. * 创建人:FH Q313596790
  38. * 创建时间:2015-03-21
  39. */
  40. @Controller
  41. @RequestMapping(value="/pictures")
  42. public class PicturesController extends BaseController {
  43. String menuUrl = "pictures/list.do"; //菜单地址(权限用)
  44. @Resource(name="picturesService")
  45. private PicturesManager picturesService;
  46. /**列表
  47. * @param page
  48. * @return
  49. * @throws Exception
  50. */
  51. @RequestMapping(value="/list")
  52. public ModelAndView list(Page page) throws Exception{
  53. ModelAndView mv = this.getModelAndView();
  54. PageData pd = new PageData();
  55. pd = this.getPageData();
  56. String KEYW = pd.getString("keyword"); //检索条件
  57. if(null != KEYW && !"".equals(KEYW)){
  58. pd.put("KEYW", KEYW.trim());
  59. }
  60. page.setPd(pd);
  61. List<PageData> varList = picturesService.list(page); //列出Pictures列表
  62. mv.setViewName("information/pictures/pictures_list");
  63. mv.addObject("varList", varList);
  64. mv.addObject("pd", pd);
  65. mv.addObject("QX",Jurisdiction.getHC()); //按钮权限
  66. return mv;
  67. }
  68. /**列表(用于弹窗)
  69. * @param page
  70. * @return
  71. * @throws Exception
  72. */
  73. @RequestMapping(value="/listfortc")
  74. public ModelAndView listfortc(Page page) throws Exception{
  75. ModelAndView mv = this.getModelAndView();
  76. PageData pd = new PageData();
  77. pd = this.getPageData();
  78. String KEYW = pd.getString("keyword"); //检索条件
  79. if(null != KEYW && !"".equals(KEYW)){
  80. pd.put("KEYW", KEYW.trim());
  81. }
  82. page.setPd(pd);
  83. List<PageData> varList = picturesService.list(page); //列出Pictures列表
  84. mv.setViewName("information/pictures/pictures_list_tc");
  85. mv.addObject("varList", varList);
  86. mv.addObject("pd", pd);
  87. mv.addObject("QX",Jurisdiction.getHC()); //按钮权限
  88. return mv;
  89. }
  90. /**新增
  91. * @param file
  92. * @return
  93. * @throws Exception
  94. */
  95. @RequestMapping(value="/save")
  96. @ResponseBody
  97. public Object save(
  98. @RequestParam(required=false) MultipartFile file
  99. ) throws Exception{
  100. if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
  101. logBefore(logger, Jurisdiction.getUsername()+"新增图片");
  102. Map<String,String> map = new HashMap<String,String>();
  103. String ffile = DateUtil.getDays(), fileName = "";
  104. PageData pd = new PageData();
  105. if(Jurisdiction.buttonJurisdiction(menuUrl, "add")){
  106. if (null != file && !file.isEmpty()) {
  107. String filePath = PathUtil.getClasspath() + Const.FILEPATHIMG + ffile; //文件上传路径
  108. fileName = FileUpload.fileUp(file, filePath, this.get32UUID()); //执行上传
  109. }else{
  110. System.out.println("上传失败");
  111. }
  112. pd.put("PICTURES_ID", this.get32UUID()); //主键
  113. pd.put("TITLE", "图片"); //标题
  114. pd.put("NAME", fileName); //文件名
  115. pd.put("PATH", ffile + "/" + fileName); //路径
  116. pd.put("CREATETIME", Tools.date2Str(new Date())); //创建时间
  117. pd.put("MASTER_ID", "1"); //附属与
  118. pd.put("BZ", "图片管理处上传"); //备注
  119. Watermark.setWatemark(PathUtil.getClasspath() + Const.FILEPATHIMG + ffile + "/" + fileName);//加水印
  120. picturesService.save(pd);
  121. }
  122. map.put("result", "ok");
  123. return AppUtil.returnObject(pd, map);
  124. }
  125. /**删除
  126. * @param out
  127. * @throws Exception
  128. */
  129. @RequestMapping(value="/delete")
  130. public void delete(PrintWriter out) throws Exception{
  131. if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
  132. logBefore(logger, Jurisdiction.getUsername()+"删除图片");
  133. PageData pd = new PageData();
  134. if(Jurisdiction.buttonJurisdiction(menuUrl, "del")){
  135. pd = this.getPageData();
  136. if(Tools.notEmpty(pd.getString("PATH").trim())){
  137. DelAllFile.delFolder(PathUtil.getClasspath()+ Const.FILEPATHIMG + pd.getString("PATH")); //删除图片
  138. }
  139. picturesService.delete(pd);
  140. }
  141. out.write("success");
  142. out.close();
  143. }
  144. /**修改
  145. * @param request
  146. * @param file
  147. * @param tpz
  148. * @param PICTURES_ID
  149. * @param TITLE
  150. * @param MASTER_ID
  151. * @param BZ
  152. * @return
  153. * @throws Exception
  154. */
  155. @RequestMapping(value="/edit")
  156. public ModelAndView edit(
  157. HttpServletRequest request,
  158. @RequestParam(value="tp",required=false) MultipartFile file,
  159. @RequestParam(value="tpz",required=false) String tpz,
  160. @RequestParam(value="PICTURES_ID",required=false) String PICTURES_ID,
  161. @RequestParam(value="TITLE",required=false) String TITLE,
  162. @RequestParam(value="MASTER_ID",required=false) String MASTER_ID,
  163. @RequestParam(value="BZ",required=false) String BZ
  164. ) throws Exception{
  165. if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
  166. logBefore(logger, Jurisdiction.getUsername()+"修改图片");
  167. ModelAndView mv = this.getModelAndView();
  168. PageData pd = new PageData();
  169. pd = this.getPageData();
  170. if(Jurisdiction.buttonJurisdiction(menuUrl, "edit")){
  171. pd.put("PICTURES_ID", PICTURES_ID); //图片ID
  172. pd.put("TITLE", TITLE); //标题
  173. pd.put("MASTER_ID", MASTER_ID); //属于ID
  174. pd.put("BZ", BZ); //备注
  175. if(null == tpz){tpz = "";}
  176. String ffile = DateUtil.getDays(), fileName = "";
  177. if (null != file && !file.isEmpty()) {
  178. String filePath = PathUtil.getClasspath() + Const.FILEPATHIMG + ffile; //文件上传路径
  179. fileName = FileUpload.fileUp(file, filePath, this.get32UUID()); //执行上传
  180. pd.put("PATH", ffile + "/" + fileName); //路径
  181. pd.put("NAME", fileName);
  182. Watermark.setWatemark(PathUtil.getClasspath() + Const.FILEPATHIMG + ffile + "/" + fileName);//加水印
  183. }else{
  184. pd.put("PATH", tpz);
  185. }
  186. picturesService.edit(pd); //执行修改数据库
  187. }
  188. mv.addObject("msg","success");
  189. mv.setViewName("save_result");
  190. return mv;
  191. }
  192. /**去新增页面
  193. * @return
  194. */
  195. @RequestMapping(value="/goAdd")
  196. public ModelAndView goAdd() throws Exception{
  197. ModelAndView mv = this.getModelAndView();
  198. PageData pd = new PageData();
  199. pd = this.getPageData();
  200. mv.setViewName("information/pictures/pictures_add");
  201. mv.addObject("pd", pd);
  202. return mv;
  203. }
  204. /**去修改页面
  205. * @return
  206. * @throws Exception
  207. */
  208. @RequestMapping(value="/goEdit")
  209. public ModelAndView goEdit() throws Exception{
  210. ModelAndView mv = this.getModelAndView();
  211. PageData pd = new PageData();
  212. pd = this.getPageData();
  213. pd = picturesService.findById(pd); //根据ID读取
  214. mv.setViewName("information/pictures/pictures_edit");
  215. mv.addObject("msg", "edit");
  216. mv.addObject("pd", pd);
  217. return mv;
  218. }
  219. /**批量删除
  220. * @return
  221. * @throws Exception
  222. */
  223. @RequestMapping(value="/deleteAll")
  224. @ResponseBody
  225. public Object deleteAll() throws Exception {
  226. PageData pd = new PageData();
  227. Map<String,Object> map = new HashMap<String,Object>();
  228. pd = this.getPageData();
  229. if(Jurisdiction.buttonJurisdiction(menuUrl, "del")){
  230. List<PageData> pdList = new ArrayList<PageData>();
  231. List<PageData> pathList = new ArrayList<PageData>();
  232. String DATA_IDS = pd.getString("DATA_IDS");
  233. if(null != DATA_IDS && !"".equals(DATA_IDS)){
  234. String ArrayDATA_IDS[] = DATA_IDS.split(",");
  235. pathList = picturesService.getAllById(ArrayDATA_IDS);
  236. for(int i=0;i<pathList.size();i++){
  237. if(Tools.notEmpty(pathList.get(i).getString("PATH").trim())){
  238. DelAllFile.delFolder(PathUtil.getClasspath()+ Const.FILEPATHIMG + pathList.get(i).getString("PATH"));//删除图片
  239. }
  240. }
  241. picturesService.deleteAll(ArrayDATA_IDS);
  242. pd.put("msg", "ok");
  243. }else{
  244. pd.put("msg", "no");
  245. }
  246. pdList.add(pd);
  247. map.put("list", pdList);
  248. }
  249. return AppUtil.returnObject(pd, map);
  250. }
  251. /**删除图片
  252. * @param out
  253. * @throws Exception
  254. */
  255. @RequestMapping(value="/deltp")
  256. public void deltp(PrintWriter out) throws Exception {
  257. PageData pd = new PageData();
  258. pd = this.getPageData();
  259. String PATH = pd.getString("PATH");
  260. if(Tools.notEmpty(pd.getString("PATH").trim())){//图片路径
  261. DelAllFile.delFolder(PathUtil.getClasspath()+ Const.FILEPATHIMG + pd.getString("PATH")); //删除图片
  262. }
  263. if(PATH != null){
  264. picturesService.delTp(pd); //删除数据库中图片数据
  265. }
  266. out.write("success");
  267. out.close();
  268. }
  269. /**去图片爬虫页面
  270. * @return
  271. * @throws Exception
  272. */
  273. @RequestMapping(value="/goImageCrawler")
  274. public ModelAndView goImageCrawler() throws Exception{
  275. ModelAndView mv = this.getModelAndView();
  276. mv.setViewName("information/pictures/imageCrawler");
  277. return mv;
  278. }
  279. /**
  280. * 请求连接获取网页中每个图片的地址
  281. * @param args
  282. * @throws Exception
  283. */
  284. @RequestMapping(value="/getImagePath")
  285. @ResponseBody
  286. public Object getImagePath(){
  287. Map<String,Object> map = new HashMap<String,Object>();
  288. PageData pd = new PageData();
  289. pd = this.getPageData();
  290. List<String> imgList = new ArrayList<String>();
  291. String errInfo = "success";
  292. String serverUrl = pd.getString("serverUrl"); //网页地址
  293. String msg = pd.getString("msg"); //msg:save 时保存到服务器
  294. if (!serverUrl.startsWith("http://")){ //检验地址是否http://
  295. errInfo = "error"; //无效地址
  296. }else{
  297. try {
  298. imgList = GetWeb.getImagePathList(serverUrl);
  299. if("save".equals(msg)){
  300. String ffile = DateUtil.getDays();
  301. String filePath = PathUtil.getClasspath() + Const.FILEPATHIMG + ffile; //文件上传路径
  302. for(int i=0;i<imgList.size();i++){ //把网络图片保存到服务器硬盘,并数据库记录
  303. String fileName = FileUpload.getHtmlPicture(imgList.get(i),filePath,null); //下载网络图片上传到服务器上
  304. //保存到数据库
  305. pd.put("PICTURES_ID", this.get32UUID()); //主键
  306. pd.put("TITLE", "图片"); //标题
  307. pd.put("NAME", fileName); //文件名
  308. pd.put("PATH", ffile + "/" + fileName); //路径
  309. pd.put("CREATETIME", Tools.date2Str(new Date())); //创建时间
  310. pd.put("MASTER_ID", "1"); //附属与
  311. pd.put("BZ", serverUrl+"爬取"); //备注
  312. Watermark.setWatemark(PathUtil.getClasspath() + Const.FILEPATHIMG + ffile + "/" + fileName);//加水印
  313. picturesService.save(pd);
  314. }
  315. }
  316. } catch (Exception e) {
  317. errInfo = "error"; //出错
  318. }
  319. }
  320. map.put("imgList", imgList); //图片集合
  321. map.put("result", errInfo); //返回结果
  322. return AppUtil.returnObject(new PageData(), map);
  323. }
  324. @InitBinder
  325. public void initBinder(WebDataBinder binder){
  326. DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  327. binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
  328. }
  329. }