parent
980f608bbf
commit
85f583c02d
@ -1,4 +1,374 @@
|
||||
|
||||
|
||||
|
||||
package com.how2java.tmall.controller;
|
||||
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.how2java.tmall.pojo.*;
|
||||
import com.how2java.tmall.service.*;
|
||||
import comparator.*;
|
||||
import org.apache.commons.lang.math.RandomUtils;
|
||||
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.RequestParam;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.util.HtmlUtils;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("")
|
||||
public class ForeController {
|
||||
@Autowired
|
||||
CategoryService categoryService;
|
||||
@Autowired
|
||||
ProductService productService;
|
||||
@Autowired
|
||||
UserService userService;
|
||||
@Autowired
|
||||
ProductImageService productImageService;
|
||||
@Autowired
|
||||
PropertyValueService propertyValueService;
|
||||
@Autowired
|
||||
OrderService orderService;
|
||||
@Autowired
|
||||
OrderItemService orderItemService;
|
||||
@Autowired
|
||||
ReviewService reviewService;
|
||||
@RequestMapping("forehome")
|
||||
public String home(Model model) {
|
||||
List<Category> cs= categoryService.list();
|
||||
productService.fill(cs);
|
||||
productService.fillByRow(cs);
|
||||
model.addAttribute("cs", cs);
|
||||
return "fore/home";
|
||||
}
|
||||
|
||||
@RequestMapping("foreregister")
|
||||
public String register(Model model,User user) {
|
||||
String name = user.getName();
|
||||
name = HtmlUtils.htmlEscape(name);
|
||||
user.setName(name);
|
||||
boolean exist = userService.isExist(name);
|
||||
|
||||
if(exist){
|
||||
String m ="用户名已经被使用,不能使用";
|
||||
model.addAttribute("msg", m);
|
||||
|
||||
|
||||
return "fore/register";
|
||||
}
|
||||
userService.add(user);
|
||||
|
||||
return "redirect:registerSuccessPage";
|
||||
}
|
||||
@RequestMapping("forelogin")
|
||||
public String login(@RequestParam("name") String name, @RequestParam("password") String password, Model model, HttpSession session) {
|
||||
name = HtmlUtils.htmlEscape(name);
|
||||
User user = userService.get(name,password);
|
||||
|
||||
if(null==user){
|
||||
model.addAttribute("msg", "账号密码错误");
|
||||
return "fore/login";
|
||||
}
|
||||
session.setAttribute("user", user);
|
||||
return "redirect:forehome";
|
||||
}
|
||||
@RequestMapping("forelogout")
|
||||
public String logout( HttpSession session) {
|
||||
session.removeAttribute("user");
|
||||
return "redirect:forehome";
|
||||
}
|
||||
|
||||
@RequestMapping("foreproduct")
|
||||
public String product( int pid, Model model) {
|
||||
Product p = productService.get(pid);
|
||||
|
||||
List<ProductImage> productSingleImages = productImageService.list(p.getId(), ProductImageService.type_single);
|
||||
List<ProductImage> productDetailImages = productImageService.list(p.getId(), ProductImageService.type_detail);
|
||||
p.setProductSingleImages(productSingleImages);
|
||||
p.setProductDetailImages(productDetailImages);
|
||||
|
||||
List<PropertyValue> pvs = propertyValueService.list(p.getId());
|
||||
List<Review> reviews = reviewService.list(p.getId());
|
||||
productService.setSaleAndReviewNumber(p);
|
||||
|
||||
model.addAttribute("reviews", reviews);
|
||||
model.addAttribute("p", p);
|
||||
model.addAttribute("pvs", pvs);
|
||||
return "fore/product";
|
||||
}
|
||||
|
||||
@RequestMapping("forecheckLogin")
|
||||
@ResponseBody
|
||||
public String checkLogin( HttpSession session) {
|
||||
User user =(User) session.getAttribute("user");
|
||||
if(null!=user)
|
||||
return "success";
|
||||
return "fail";
|
||||
}
|
||||
@RequestMapping("foreloginAjax")
|
||||
@ResponseBody
|
||||
public String loginAjax(@RequestParam("name") String name, @RequestParam("password") String password,HttpSession session) {
|
||||
name = HtmlUtils.htmlEscape(name);
|
||||
User user = userService.get(name,password);
|
||||
|
||||
if(null==user){
|
||||
return "fail";
|
||||
}
|
||||
session.setAttribute("user", user);
|
||||
return "success";
|
||||
}
|
||||
@RequestMapping("forecategory")
|
||||
public String category(int cid,String sort, Model model) {
|
||||
Category c = categoryService.get(cid);
|
||||
productService.fill(c);
|
||||
productService.setSaleAndReviewNumber(c.getProducts());
|
||||
|
||||
if(null!=sort){
|
||||
switch(sort){
|
||||
case "review":
|
||||
Collections.sort(c.getProducts(),new ProductReviewComparator());
|
||||
break;
|
||||
case "date" :
|
||||
Collections.sort(c.getProducts(),new ProductDateComparator());
|
||||
break;
|
||||
|
||||
case "saleCount" :
|
||||
Collections.sort(c.getProducts(),new ProductSaleCountComparator());
|
||||
break;
|
||||
|
||||
case "price":
|
||||
Collections.sort(c.getProducts(),new ProductPriceComparator());
|
||||
break;
|
||||
|
||||
case "all":
|
||||
Collections.sort(c.getProducts(),new ProductAllComparator());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
model.addAttribute("c", c);
|
||||
return "fore/category";
|
||||
}
|
||||
|
||||
@RequestMapping("foresearch")
|
||||
public String search( String keyword,Model model){
|
||||
|
||||
PageHelper.offsetPage(0,20);
|
||||
List<Product> ps= productService.search(keyword);
|
||||
productService.setSaleAndReviewNumber(ps);
|
||||
model.addAttribute("ps",ps);
|
||||
return "fore/searchResult";
|
||||
}
|
||||
@RequestMapping("forebuyone")
|
||||
public String buyone(int pid, int num, HttpSession session) {
|
||||
Product p = productService.get(pid);
|
||||
int oiid = 0;
|
||||
|
||||
User user =(User) session.getAttribute("user");
|
||||
boolean found = false;
|
||||
List<OrderItem> ois = orderItemService.listByUser(user.getId());
|
||||
for (OrderItem oi : ois) {
|
||||
if(oi.getProduct().getId().intValue()==p.getId().intValue()){
|
||||
oi.setNumber(oi.getNumber()+num);
|
||||
orderItemService.update(oi);
|
||||
found = true;
|
||||
oiid = oi.getId();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!found){
|
||||
OrderItem oi = new OrderItem();
|
||||
oi.setUid(user.getId());
|
||||
oi.setNumber(num);
|
||||
oi.setPid(pid);
|
||||
orderItemService.add(oi);
|
||||
oiid = oi.getId();
|
||||
}
|
||||
return "redirect:forebuy?oiid="+oiid;
|
||||
}
|
||||
|
||||
@RequestMapping("forebuy")
|
||||
public String buy( Model model,String[] oiid,HttpSession session){
|
||||
List<OrderItem> ois = new ArrayList<>();
|
||||
float total = 0;
|
||||
|
||||
for (String strid : oiid) {
|
||||
int id = Integer.parseInt(strid);
|
||||
OrderItem oi= orderItemService.get(id);
|
||||
total +=oi.getProduct().getPromotePrice()*oi.getNumber();
|
||||
ois.add(oi);
|
||||
}
|
||||
|
||||
session.setAttribute("ois", ois);
|
||||
model.addAttribute("total", total);
|
||||
return "fore/buy";
|
||||
}
|
||||
@RequestMapping("foreaddCart")
|
||||
@ResponseBody
|
||||
public String addCart(int pid, int num, Model model,HttpSession session) {
|
||||
Product p = productService.get(pid);
|
||||
User user =(User) session.getAttribute("user");
|
||||
boolean found = false;
|
||||
|
||||
List<OrderItem> ois = orderItemService.listByUser(user.getId());
|
||||
for (OrderItem oi : ois) {
|
||||
if(oi.getProduct().getId().intValue()==p.getId().intValue()){
|
||||
oi.setNumber(oi.getNumber()+num);
|
||||
orderItemService.update(oi);
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(!found){
|
||||
OrderItem oi = new OrderItem();
|
||||
oi.setUid(user.getId());
|
||||
oi.setNumber(num);
|
||||
oi.setPid(pid);
|
||||
orderItemService.add(oi);
|
||||
}
|
||||
return "success";
|
||||
}
|
||||
@RequestMapping("forecart")
|
||||
public String cart( Model model,HttpSession session) {
|
||||
User user =(User) session.getAttribute("user");
|
||||
List<OrderItem> ois = orderItemService.listByUser(user.getId());
|
||||
model.addAttribute("ois", ois);
|
||||
return "fore/cart";
|
||||
}
|
||||
|
||||
@RequestMapping("forechangeOrderItem")
|
||||
@ResponseBody
|
||||
public String changeOrderItem( Model model,HttpSession session, int pid, int number) {
|
||||
User user =(User) session.getAttribute("user");
|
||||
if(null==user)
|
||||
return "fail";
|
||||
|
||||
List<OrderItem> ois = orderItemService.listByUser(user.getId());
|
||||
for (OrderItem oi : ois) {
|
||||
if(oi.getProduct().getId().intValue()==pid){
|
||||
oi.setNumber(number);
|
||||
orderItemService.update(oi);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
return "success";
|
||||
}
|
||||
@RequestMapping("foredeleteOrderItem")
|
||||
@ResponseBody
|
||||
public String deleteOrderItem( Model model,HttpSession session,int oiid){
|
||||
User user =(User) session.getAttribute("user");
|
||||
if(null==user)
|
||||
return "fail";
|
||||
orderItemService.delete(oiid);
|
||||
return "success";
|
||||
}
|
||||
|
||||
@RequestMapping("forecreateOrder")
|
||||
public String createOrder( Model model,Order order,HttpSession session){
|
||||
User user =(User) session.getAttribute("user");
|
||||
String orderCode = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + RandomUtils.nextInt(10000);
|
||||
order.setOrderCode(orderCode);
|
||||
order.setCreateDate(new Date());
|
||||
order.setUid(user.getId());
|
||||
order.setStatus(OrderService.waitPay);
|
||||
List<OrderItem> ois= (List<OrderItem>) session.getAttribute("ois");
|
||||
|
||||
float total =orderService.add(order,ois);
|
||||
return "redirect:forealipay?oid="+order.getId() +"&total="+total;
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping("forepayed")
|
||||
public String payed(int oid, float total, Model model) {
|
||||
Order order = orderService.get(oid);
|
||||
order.setStatus(OrderService.waitDelivery);
|
||||
order.setPayDate(new Date());
|
||||
orderService.update(order);
|
||||
model.addAttribute("o", order);
|
||||
return "fore/payed";
|
||||
}
|
||||
|
||||
@RequestMapping("forebought")
|
||||
public String bought( Model model,HttpSession session) {
|
||||
User user =(User) session.getAttribute("user");
|
||||
List<Order> os= orderService.list(user.getId(),OrderService.delete);
|
||||
|
||||
orderItemService.fill(os);
|
||||
|
||||
model.addAttribute("os", os);
|
||||
|
||||
return "fore/bought";
|
||||
}
|
||||
|
||||
@RequestMapping("foreconfirmPay")
|
||||
public String confirmPay( Model model,int oid) {
|
||||
Order o = orderService.get(oid);
|
||||
orderItemService.fill(o);
|
||||
model.addAttribute("o", o);
|
||||
return "fore/confirmPay";
|
||||
}
|
||||
@RequestMapping("foreorderConfirmed")
|
||||
public String orderConfirmed( Model model,int oid) {
|
||||
Order o = orderService.get(oid);
|
||||
o.setStatus(OrderService.waitReview);
|
||||
o.setConfirmDate(new Date());
|
||||
orderService.update(o);
|
||||
return "fore/orderConfirmed";
|
||||
}
|
||||
@RequestMapping("foredeleteOrder")
|
||||
@ResponseBody
|
||||
public String deleteOrder( Model model,int oid){
|
||||
Order o = orderService.get(oid);
|
||||
o.setStatus(OrderService.delete);
|
||||
orderService.update(o);
|
||||
return "success";
|
||||
}
|
||||
@RequestMapping("forereview")
|
||||
public String review( Model model,int oid) {
|
||||
Order o = orderService.get(oid);
|
||||
orderItemService.fill(o);
|
||||
Product p = o.getOrderItems().get(0).getProduct();
|
||||
List<Review> reviews = reviewService.list(p.getId());
|
||||
productService.setSaleAndReviewNumber(p);
|
||||
model.addAttribute("p", p);
|
||||
model.addAttribute("o", o);
|
||||
model.addAttribute("reviews", reviews);
|
||||
return "fore/review";
|
||||
}
|
||||
@RequestMapping("foredoreview")
|
||||
public String doreview( Model model,HttpSession session,@RequestParam("oid") int oid,@RequestParam("pid") int pid,String content) {
|
||||
Order o = orderService.get(oid);
|
||||
o.setStatus(OrderService.finish);
|
||||
orderService.update(o);
|
||||
|
||||
Product p = productService.get(pid);
|
||||
content = HtmlUtils.htmlEscape(content);
|
||||
|
||||
User user =(User) session.getAttribute("user");
|
||||
Review review = new Review();
|
||||
review.setContent(content);
|
||||
review.setPid(pid);
|
||||
review.setCreateDate(new Date());
|
||||
review.setUid(user.getId());
|
||||
reviewService.add(review);
|
||||
|
||||
return "redirect:forereview?oid="+oid+"&showonly=true";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in new issue