商城首页
首页信息
首页信息
登陆
商品列表
订单列表
个人信息
商品管理
添加商品
咨询列表
添加购物车
购物车管理
订单创建
技术描述
开发工具: Idea/Eclipse
数据库: mysql
Jar包仓库: Jar包
前段框架:jquery/Jsp
后端框架: Jsp/Servlet
资料说明
基于JSP+Servlet+MySQL+的在线购物电子商务商城系统,分为管理员,普通用户角色,整体功能包含,登陆,添加购物车,购物车管理,下订单,订单管理,用户管理,商品分类管理,商品上架,咨询管理,用户信息查询,我的订单,商品管理等。
@WebServlet(urlPatterns = {"/Cart"}, name = "Cart")
public class CartServlet extends AbstractServlet {
private ProductService productService;
private OrderService orderService;
private UserService userService;
private ProductCategoryService productCategoryService;
private CartService cartService;
private UserAddressService userAddressService;
public void init() throws ServletException {
productService = new ProductServiceImpl();
orderService = new OrderServiceImpl();
userService = new UserServiceImpl();
productCategoryService = new ProductCategoryServiceImpl();
cartService = new CartServiceImpl();
userAddressService = new UserAddressServiceImpl();
}
@Override
public Class getServletClass() {
return CartServlet.class;
}
/**
* 添加到购物车
*
* @return
*/
public ReturnResult add(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
ReturnResult result = new ReturnResult();
String id = request.getParameter("entityId");
String quantityStr = request.getParameter("quantity");
Integer quantity = 1;
if (!EmptyUtils.isEmpty(quantityStr))
quantity = Integer.parseInt(quantityStr);
//查询出商品
Product product = productService.findById(id);
if (product.getStock() < quantity) {
return result.returnFail("商品数量不足");
}
//获取购物车
ShoppingCart cart = getCartFromSession(request);
//往购物车放置商品
result = cart.addItem(product, quantity);
if (result.getStatus() == Constants.ReturnResult.SUCCESS) {
cart.setSum((EmptyUtils.isEmpty(cart.getSum()) ? 0.0 : cart.getSum()) + (product.getPrice() * quantity * 1.0));
}
return result;
}
/**
* 刷新购物车
*
* @param request
* @param response
* @return
*/
public String refreshCart(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
ShoppingCart cart = getCartFromSession(request);
cart = cartService.calculate(cart);
session.setAttribute("cart", cart);//全部的商品
return "/common/pre/searchBar";
}
/**
* 跳到结算页面
*
* @param request
* @param response
* @return
*/
public String toSettlement(HttpServletRequest request, HttpServletResponse response) throws Exception {
List<ProductCategoryVo> productCategoryVoList = productCategoryService.queryAllProductCategoryList();
//封装返回
request.setAttribute("productCategoryVoList", productCategoryVoList);
return "/pre/settlement/toSettlement";
}
/**
* 跳转到购物车页面
*
* @param request
* @param response
* @return
*/
public String settlement1(HttpServletRequest request, HttpServletResponse response) throws Exception {
ShoppingCart cart = getCartFromSession(request);
cart = cartService.calculate(cart);
request.getSession().setAttribute("cart", cart);
return "/pre/settlement/settlement1";
}
/**
* @param request
* @param response
* @return
*/
public String settlement2(HttpServletRequest request, HttpServletResponse response) throws Exception {
User user = getUserFromSession(request);
List<UserAddress> userAddressList = userAddressService.queryUserAdressList(user.getId());
request.setAttribute("userAddressList", userAddressList);
return "/pre/settlement/settlement2";
}
/**
* 生成订单
*
* @param request
* @param response
* @return
*/
public Object settlement3(HttpServletRequest request, HttpServletResponse response) throws Exception {
ShoppingCart cart = getCartFromSession(request);
cart = cartService.calculate(cart);
User user = getUserFromSession(request);
ReturnResult result = checkCart(request);
if (result.getStatus() == Constants.ReturnResult.FAIL) {
return result;
}
//新增地址
String addressId = request.getParameter("addressId");
String newAddress = request.getParameter("newAddress");
String newRemark = request.getParameter("newRemark");
UserAddress userAddress = new UserAddress();
if (addressId.equals("-1")) {
userAddress.setRemark(newRemark);
userAddress.setAddress(newAddress);
userAddress.setId(userAddressService.addUserAddress(user.getId(), newAddress, newRemark));
} else {
userAddress = userAddressService.getUserAddressById(Integer.parseInt(addressId));
}
//生成订单
Order order = orderService.payShoppingCart(cart, user, userAddress.getAddress());
clearCart(request, response);
request.setAttribute("currentOrder", order);
return "/pre/settlement/settlement3";
}
/**
* 清空购物车
*
* @param request
* @param response
*/
public ReturnResult clearCart(HttpServletRequest request, HttpServletResponse response) throws Exception {
ReturnResult result = new ReturnResult();
//结账后清空购物车
request.getSession().removeAttribute("cart");
result.returnSuccess(null);
return result;
}
/**
* 修改购物车信息
*
* @param request
* @return
*/
public ReturnResult modCart(HttpServletRequest request, HttpServletResponse response) throws Exception {
ReturnResult result = new ReturnResult();
HttpSession session = request.getSession();
String id = request.getParameter("entityId");
String quantityStr = request.getParameter("quantity");
ShoppingCart cart = getCartFromSession(request);
Product product = productService.findById(id);
if (EmptyUtils.isNotEmpty(quantityStr)) {
if (Integer.parseInt(quantityStr) > product.getStock()) {
return result.returnFail("商品数量不足");
}
}
cart = cartService.modifyShoppingCart(id, quantityStr, cart);
session.setAttribute("cart", cart);//全部的商品
return result.returnSuccess();
}
/**
* 从session中获取购物车
*
* @param request
* @return
*/
private ShoppingCart getCartFromSession(HttpServletRequest request) throws Exception {
HttpSession session = request.getSession();
ShoppingCart cart = (ShoppingCart) session.getAttribute("cart");
if (cart == null) {
cart = new ShoppingCart();
session.setAttribute("cart", cart);
}
return cart;
}
private ReturnResult checkCart(HttpServletRequest request) throws Exception {
ReturnResult result = new ReturnResult();
HttpSession session = request.getSession();
ShoppingCart cart = getCartFromSession(request);
cart = cartService.calculate(cart);
for (ShoppingCartItem item : cart.getItems()) {
Product product = productService.findById(item.getProduct().getId() + "");
if (product.getStock() < item.getQuantity()) {
return result.returnFail(product.getName() + "商品数量不足");
}
}
return result.returnSuccess();
}
/**
* @param request
* @return
*/
private User getUserFromSession(HttpServletRequest request) {
HttpSession session = request.getSession();
User user = (User) session.getAttribute("loginUser");
return user;
}
}
@WebServlet(urlPatterns = {"/Favorite"}, name = "Favorite")
public class FavoriteServlet extends AbstractServlet {
private ProductService productService;
public void init() throws ServletException {
productService = new ProductServiceImpl();
}
@Override
public Class getServletClass() {
return FavoriteServlet.class;
}
/**
* 跳转到历史记录
*
* @param request
* @param response
* @return
*/
public String toFavoriteList(HttpServletRequest request, HttpServletResponse response) throws Exception {
List<Product> recentProducts = queryFavoriteList(request);
request.setAttribute("recentProducts", recentProducts);
return "/pre/product/favoriteList";
}
/**
* 添加到收藏
*
* @return
*/
public ReturnResult addFavorite(HttpServletRequest request, HttpServletResponse response) throws Exception {
ReturnResult result = new ReturnResult();
String id = request.getParameter("id");
Product product = productService.findById(id);
List<Product> favoriteList = queryFavoriteList(request);
//判断是否满了
if (favoriteList.size() > 0 && favoriteList.size() == 5) {
favoriteList.remove(0);
}
boolean temp = false;
for (int i = 0; i < favoriteList.size(); i++) {
if (favoriteList.get(i).getId().equals(product.getId())) {
temp = true;
break;
}
}
if (!temp) {
favoriteList.add(favoriteList.size(), product);
}
MemcachedUtils.add(getFavoriteKey(request), favoriteList);
result.returnSuccess();
return result;
}
/**
* 查询最近商品
*
* @return
*/
private List<Product> queryFavoriteList(HttpServletRequest request) throws Exception {
HttpSession session = request.getSession();
User user = (User) session.getAttribute("loginUser");
//判断用户是否登录
String key = EmptyUtils.isEmpty(user) ? session.getId() : user.getLoginName();
List<Product> recentProducts = (List<Product>) MemcachedUtils.get(key);
if (EmptyUtils.isEmpty(recentProducts)) {
recentProducts = new ArrayList<Product>();
}
return recentProducts;
}
/**
* @param request
* @return
*/
private String getFavoriteKey(HttpServletRequest request) throws Exception {
HttpSession session = request.getSession();
User user = (User) session.getAttribute("loginUser");
return EmptyUtils.isEmpty(user) ? session.getId() : user.getLoginName();
}
}