package org.taobao88.taobao.controllers; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; 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.multipart.MultipartFile; import org.taobao88.taobao.enterprise.dao.CountryRegCityDAO; import org.taobao88.taobao.enterprise.dao.ImagesDAO; import org.taobao88.taobao.enterprise.dao.PostServicePriceDAO; import org.taobao88.taobao.enterprise.dao.PostServiceDAO; import org.taobao88.taobao.enterprise.entity.Country; import org.taobao88.taobao.enterprise.entity.Images; import org.taobao88.taobao.enterprise.entity.PostService; import org.taobao88.taobao.enterprise.entity.PostServicePrice; @Controller @RequestMapping(value = "/admin/postServices") public class PostServicesController { @Autowired private PostServiceDAO postServiceDAO; @Autowired private PostServicePriceDAO postRegionDAO; @Autowired private ImagesDAO imagesDAO; @Autowired private CountryRegCityDAO countryRegCityDAO; @Autowired private PostServicePriceDAO postServicePriceDAO; @RequestMapping(method = RequestMethod.GET) public String index(Model model) { List<PostService> services = postServiceDAO.getAll(); for (PostService s : services) { s.setImage(imagesDAO.getImagesById(s.getImageId())); } model.addAttribute("postServices", services); return "post_services/index"; } @RequestMapping(value = "/create", method = RequestMethod.GET) public String create(Model model) { model.addAttribute("postService", new PostService()); model.addAttribute("countries", countryRegCityDAO.getAllCountry()); return "post_services/create"; } @RequestMapping(value = "/doCreate", method = RequestMethod.POST) public String doCreate(@RequestParam ("serviceName") String serviceName, @RequestParam ("countryId") int countryId, @RequestParam ("logo") MultipartFile logo, HttpServletRequest request) { try { Country country = countryRegCityDAO.getCountryByID(countryId); PostService service = new PostService(); saveUploadedFile(logo); Images img = new Images(); img.setImageName(logo.getOriginalFilename()); img.setImageId(imagesDAO.addImage(img)); service.setCountry(country); service.setServiceName(serviceName); service.setImageId(img.getImageId()); service.setId(postServiceDAO.create(service)); String [] weight = request.getParameterValues("weight"); String [] price = request.getParameterValues("price"); for (int i = 0; i < weight.length; i++) { PostServicePrice p = new PostServicePrice(); p.setWeight(Double.parseDouble(weight[i])); p.setPrice(Double.parseDouble(price[i])); p.setPostService(service); p.setId(postServicePriceDAO.create(p)); } } catch (Exception e) { request.setAttribute("error", true); request.setAttribute("countries", countryRegCityDAO.getAllCountry()); return "post_services/create"; } return "redirect:/admin/postServices"; } @RequestMapping(value = "/update", method = RequestMethod.GET) public String update(@RequestParam ("id") int id, Model model) { PostService service = postServiceDAO.findById(id); model.addAttribute("postService", service); return "post_services/update"; } @RequestMapping(value = "/doUpdate", method = RequestMethod.POST) public String doUpdate(@RequestParam ("id") int id, @RequestParam ("serviceName") String serviceName, @RequestParam ("logo") MultipartFile logo, HttpServletRequest request) { PostService service = postServiceDAO.findById(id); try { if (logo.getSize() > 0) { Images img = new Images(); img.setImageName(logo.getOriginalFilename()); img.setImageId(imagesDAO.addImage(img)); service.setImageId(img.getImageId()); saveUploadedFile(logo); } service.setServiceName(serviceName); postServiceDAO.update(service); String [] weight = request.getParameterValues("weight"); String [] price = request.getParameterValues("price"); for (int i = 0; i < weight.length; i++) { PostServicePrice p = postServicePriceDAO.findById(service.getPostServicesPrices().get(i).getId()); p.setWeight(Double.parseDouble(weight[i])); p.setPrice(Double.parseDouble(price[i])); p.setPostService(service); postServicePriceDAO.update(p); } } catch (Exception e) { request.setAttribute("error", true); request.setAttribute("postService", service); return "post_services/update"; } return "redirect:/admin/postServices"; } @RequestMapping(value = "/delete", method = RequestMethod.GET) public String delete(@RequestParam ("id") int id, Model model) { PostService service = postServiceDAO.findById(id); for (PostServicePrice p : service.getPostServicesPrices()) { postServicePriceDAO.delete(p); } postServiceDAO.delete(service); return "redirect:/admin/postServices"; } private void saveUploadedFile(MultipartFile file) { try{ byte[] bytes = file.getBytes(); String rootPath = System.getProperty("catalina.home"); File dir = new File(rootPath + "/webapps/images"); if (!dir.exists()) dir.mkdir(); File serverFile = new File(dir.getAbsolutePath() + "/" + file.getOriginalFilename()); BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile)); stream.write(bytes); stream.close(); } catch (Exception e) { e.printStackTrace(); } } }