package org.taobao88.taobao.controllers; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; 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.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.SessionAttributes; import org.taobao88.taobao.enterprise.dao.CountryRegCityDAO; import org.taobao88.taobao.enterprise.dao.GoodsDAO; import org.taobao88.taobao.enterprise.dao.ImagesDAO; import org.taobao88.taobao.enterprise.dao.OrderDAO; import org.taobao88.taobao.enterprise.dao.OrderStatusDAO; import org.taobao88.taobao.enterprise.dao.OrdersStatusesDAO; import org.taobao88.taobao.enterprise.dao.PostServiceDAO; import org.taobao88.taobao.enterprise.dao.StatusesDAO; import org.taobao88.taobao.enterprise.entity.Country; import org.taobao88.taobao.enterprise.entity.Goods; import org.taobao88.taobao.enterprise.entity.OrderStatus; import org.taobao88.taobao.enterprise.entity.OrderT; import org.taobao88.taobao.enterprise.entity.PostService; import org.taobao88.taobao.enterprise.entity.Recomendation; import org.taobao88.taobao.enterprise.entity.RecomendationType; import org.taobao88.taobao.enterprise.entity.SideMenu; import org.taobao88.taobao.enterprise.service.*; @Controller @SessionAttributes("basket") @RequestMapping(value = "/") public class IndexController extends MainController { @Autowired private SideMenuService sideMenuService; @Autowired private RecomendationService recomendationService; @Autowired private RecomendationTypeService recomendationTypeService; @Autowired private BrandsService brandsService; @Autowired private TopMenuService topMenuService; @Autowired private GoodsService goodsService; @Autowired private PriceService priceService; @Autowired private UserService userService; @Autowired private OrderService orderService; @Autowired private OrderDAO orderDAO; @Autowired private OrderStatusDAO orderStatusDAO; @Autowired private OrderStatusService orderStatusService; @Autowired private GoodsDAO goodsDAO; @Autowired private PostServiceDAO postServiceDAO; @Autowired private ImagesDAO imagesDAO; @Autowired private CountryRegCityDAO countryDAO; @Autowired private StatusesDAO statusesDAO; @Autowired private OrdersStatusesDAO ordersStatusesDAO; @RequestMapping(method = RequestMethod.GET) public String get(HttpServletRequest request, Model model){ Map<Integer, RecomendationType> recomendationTypes = recomendationTypeService.getRecomendationTypes(); List<OrderT> basket = new ArrayList<OrderT>(); model.addAttribute("sideMenu", sideMenuService.getSideMenu("menu_order")); model.addAttribute("recomendations", recomendationService.getSortedRecomendations(recomendationTypes.get(0))); model.addAttribute("slider", recomendationService.getAllRecomendations(recomendationTypes.get(1))); model.addAttribute("banner", recomendationService.getAllRecomendations(recomendationTypes.get(5))); model.addAttribute("topMenuList", topMenuService.getFullTopMenu()); request.getSession().setAttribute("basket", basket.size()); return "index"; } @RequestMapping(value = "brands", method = RequestMethod.GET) public String brands(Model model) { Map<Integer, RecomendationType> recomendationTypes = recomendationTypeService.getRecomendationTypes(); model.addAttribute("sideMenu", sideMenuService.getSideMenu("menu_order")); model.addAttribute("brands", brandsService.getSortedBrands()); model.addAttribute("topMenuList", topMenuService.getFullTopMenu()); model.addAttribute("banner", recomendationService.getAllRecomendations(recomendationTypes.get(5))); return "index"; } @RequestMapping(value = "discount", method = RequestMethod.GET) public String discount(Model model) { Map<Integer, RecomendationType> recomendationTypes = recomendationTypeService.getRecomendationTypes(); model.addAttribute("sideMenu", sideMenuService.getSideMenu("menu_order")); model.addAttribute("discount", recomendationService.getSortedRecomendations(recomendationTypes.get(2))); model.addAttribute("topMenuList", topMenuService.getFullTopMenu()); model.addAttribute("banner", recomendationService.getAllRecomendations(recomendationTypes.get(5))); return "index"; } @RequestMapping(value = "free", method = RequestMethod.GET) public String free(Model model) { Map<Integer, RecomendationType> recomendationTypes = recomendationTypeService.getRecomendationTypes(); model.addAttribute("sideMenu", sideMenuService.getSideMenu("menu_order")); model.addAttribute("free", recomendationService.getSortedRecomendations(recomendationTypes.get(3))); model.addAttribute("topMenuList", topMenuService.getFullTopMenu()); model.addAttribute("banner", recomendationService.getAllRecomendations(recomendationTypes.get(5))); return "index"; } @RequestMapping(value = "comments", method = RequestMethod.GET) public String comments(Model model) { Map<Integer, RecomendationType> recomendationTypes = recomendationTypeService.getRecomendationTypes(); model.addAttribute("sideMenu", sideMenuService.getSideMenu("menu_order")); model.addAttribute("comments", recomendationService.getSortedRecomendations(recomendationTypes.get(4))); model.addAttribute("topMenuList", topMenuService.getFullTopMenu()); model.addAttribute("banner", recomendationService.getAllRecomendations(recomendationTypes.get(5))); return "index"; } @RequestMapping(value = "basket", method = RequestMethod.GET) public String basket(HttpServletRequest request, Model model) { List<OrderT> orders = orderDAO.getOrdersOnStartPage((int) request.getSession().getAttribute("currentIdUser")); for (OrderT o : orders) { o.setGoods(goodsDAO.findEmployeeById(o.getIdGoods())); } model.addAttribute("orders", orders); model.addAttribute("topMenuList", topMenuService.getFullTopMenu()); RecomendationType recType = recomendationTypeService.getTypeById(0); model.addAttribute("recomendations", recomendationService.getFirstFourRecomendations(recType)); List<Country> countries = countryDAO.getAllCountry(); List<Country> countriesToJsp = new ArrayList<>(); List<PostService> allServices = postServiceDAO.getAll(); for (Country c : countries) { if (c.getIdCountry() != 1) { countriesToJsp.add(c); } } Map<String, PostService> serviceMap = new HashMap<>(); for (PostService p : allServices) { p.setImage(imagesDAO.getImagesById(p.getImageId())); serviceMap.put(p.getServiceName(), p); } model.addAttribute("postServices", serviceMap); model.addAttribute("countries", countriesToJsp); int basket = 0; if (!orders.isEmpty()) { basket = orders.size(); } request.getSession().setAttribute("basket", basket); return "basket"; } @RequestMapping(value = "item", method = RequestMethod.GET) public String item(@RequestParam ("id") int id, Model model) { Map<Integer, RecomendationType> recomendationTypes = recomendationTypeService.getRecomendationTypes(); Recomendation item = recomendationService.getRecomendationById(id); model.addAttribute("item", item); model.addAttribute("topMenuList", topMenuService.getFullTopMenu()); model.addAttribute("banner", recomendationService.getAllRecomendations(recomendationTypes.get(5))); return "item"; } @RequestMapping(value = "m", method = RequestMethod.GET) public String showMenu(@RequestParam ("i") int id, Model model) { model.addAttribute("topMenu", topMenuService.getTopMenuById(id)); model.addAttribute("topMenuList", topMenuService.getFullTopMenu()); return "_template"; } @RequestMapping(value = "addToBasket", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) public @ResponseBody String addToBasket(@RequestParam ("id") int id, HttpServletRequest request, Model model) throws UnsupportedEncodingException { Recomendation rec = recomendationService.getRecomendationById(id); int userId = (int) request.getSession().getAttribute("currentIdUser"); Goods goods = goodsService.convertFromRecomendationToGoods(rec); goods.setIdGoods(goodsDAO.saveGoods(goods)); OrderStatus orderStatus = getOrderStatus(); orderStatus.setIdOrderStatus(orderStatusService.saveStatus(orderStatus)); OrderT order = new OrderT(); order.setApprove("false"); order.setIdUser(userId); order.setIdGoods(goods.getIdGoods()); order.setFullPrice(priceService.getOrderPrice(order)); order.setIdOrderStatus(orderStatus.getIdOrderStatus()); goods.setOrderT(order); orderDAO.addOrder(order); List<OrderT> orders = orderDAO.getOrdersOnStartPage(userId); return orders.size() + ""; } @SuppressWarnings("unchecked") @RequestMapping(value = "removeFromBasket", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) public @ResponseBody void removeFromBasket(@RequestParam ("id") int id, HttpServletRequest request, Model model) { List<Goods> basket = (List<Goods>) request.getSession().getAttribute("basket"); Iterator<Goods> iterator = basket.iterator(); while(iterator.hasNext()) { Goods good = iterator.next(); if (good.getIdGoods() == id) { iterator.remove(); OrderT order = orderDAO.findByGoods(good); orderDAO.deleteOrder(order.getIdOrder()); orderStatusDAO.deleteOrderStatus(order.getIdOrderStatus()); goodsDAO.deleteGood(order.getIdGoods()); } } model.addAttribute("basket", basket.size()); } @RequestMapping(value = "fill", method = RequestMethod.GET) public String fill(@RequestParam ("id") int id, HttpServletRequest request, Model model) { Goods goods = goodsService.findEmployeeById(id); OrderT order = orderDAO.findByGoods(goods); order.setGoods(goods); model.addAttribute("topMenuList", topMenuService.getFullTopMenu()); model.addAttribute("orderT", order); return "fill"; } @RequestMapping(value = "fillUpdate", method = RequestMethod.POST) public String fillUpdate(HttpServletRequest request) throws UnsupportedEncodingException { int userId = (int) request.getSession().getAttribute("currentIdUser"); Goods goods = goodsService.findEmployeeById(Integer.parseInt(request.getParameter("idGoods"))); String photoGoods = request.getParameter("photoGoods"); if (photoGoods == null) { goods.setPhotoGoods("false"); } else { goods.setPhotoGoods("true"); } goods.setColorGoods(request.getParameter("color")); goods.setSizeGoods(request.getParameter("size")); goods.setAmountGoods(Integer.parseInt(request.getParameter("amount"))); goodsService.updateEmployee(goods); OrderT order = orderDAO.findByGoods(goods); order.setFullPrice(priceService.getOrderPrice(order)); orderDAO.updateOrder(order); List<OrderT> orders = orderDAO.getOrdersOnStartPage(userId); request.getSession().setAttribute("basket", orders.size()); return "redirect:/basket"; } @RequestMapping(value = "/storeOrder", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) public @ResponseBody String storeOrder(HttpServletRequest request) { Enumeration<String> attributes = request.getParameterNames(); while (attributes.hasMoreElements()) { String parameter = attributes.nextElement(); request.getSession().setAttribute(parameter, request.getParameter(parameter)); } return null; } @RequestMapping(value = "/index/other", method = RequestMethod.GET) public String other(Model model) { List<SideMenu> menus = sideMenuService.getSideMenu("level"); model.addAttribute("other_menu", sideMenuService.getSideMenu("level")); return "side_menus/other"; } }