parent
980f608bbf
commit
85f583c02d
@ -1,4 +1,374 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
package com.how2java.tmall.controller;
|
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