一、项目介绍:
迷你天猫商城是一个基于SSM框架的综合性B2C电商平台,需求设计主要参考天猫商城的购物流程:用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,确认收货,评价等一系列操作。
作为模拟天猫商城系统的核心组成部分之一,采用SSM框架的天猫数据管理后台包含商品管理,订单管理,类别管理,用户管理和交易额统计等模块,实现了对整个商城的一站式管理和维护。
二、项目运行
环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
项目技术: JSP + Springboot + SpringMVC + Spring +MyBatis + css + JavaScript + JQuery + Ajax + layui+ maven等等。
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
productOrderItem.setProductOrderItem_product(product);
productOrderItem.setProductOrderItem_number(product_number);
productOrderItem.setProductOrderItem_price(product.getProduct_sale_price() * product_number);
productOrderItem.setProductOrderItem_user(new User().setUser_id(Integer.valueOf(userId.toString())));
boolean yn = productOrderItemService.add(productOrderItem);
if (yn) {
object.put("success", true);
} else {
object.put("success", false);
}
return object.toJSONString();
}
//删除订单项-购物车-ajax
@ResponseBody
@RequestMapping(value = "orderItem/{orderItem_id}", method = RequestMethod.DELETE, produces = "application/json;charset=utf-8")
public String deleteOrderItem(@PathVariable("orderItem_id") Integer orderItem_id,
HttpSession session,
HttpServletRequest request) {
JSONObject object = new JSONObject();
logger.info("检查用户是否登录");
Object userId = checkUser(session);
if (userId == null) {
object.put("url", "/login");
object.put("success", false);
return object.toJSONString();
if (order == null) {
logger.warn("订单不存在,返回订单列表页");
object.put("success", false);
object.put("url", "/order/0/10");
return object.toJSONString();
}
logger.info("验证订单状态");
if (order.getProductOrder_status() != 0) {
logger.warn("订单状态不正确,返回订单列表页");
object.put("success", false);
object.put("url", "/order/0/10");
return object.toJSONString();
}
logger.info("验证用户与订单是否一致");
if (order.getProductOrder_user().getUser_id() != Integer.parseInt(userId.toString())) {
logger.warn("用户与订单信息不一致,返回订单列表页");
object.put("success", false);
logger.info("查询订单是否存在");
ProductOrder order = productOrderService.getByCode(order_code);
if (order == null) {
logger.warn("订单不存在,返回订单列表页");
object.put("success", false);
object.put("url", "/order/0/10");
return object.toJSONString();
}
logger.info("验证订单状态");
if (order.getProductOrder_status() != 2) {
logger.warn("订单状态不正确,返回订单列表页");
object.put("success", false);
object.put("url", "/order/0/10");
return object.toJSONString();
}
logger.info("验证用户与订单是否一致");
if (order.getProductOrder_user().getUser_id() != Integer.parseInt(userId.toString())) {
logger.warn("用户与订单信息不一致,返回订单列表页");
object.put("success", false);
object.put("url", "/order/0/10");
return object.toJSONString();
}
logger.info("更新订单信息");
logger.warn("订单不存在,返回订单列表页");
return "redirect:/order/0/10";
}
logger.info("验证订单状态");
if (order.getProductOrder_status() != 1) {
logger.warn("订单状态不正确,返回订单列表页");
return "redirect:/order/0/10";
}
logger.info("验证用户与订单是否一致");
if (order.getProductOrder_user().getUser_id() != Integer.parseInt(userId.toString())) {
logger.warn("用户与订单信息不一致,返回订单列表页");
return "redirect:/order/0/10";
}
logger.info("更新订单信息");
ProductOrder productOrder = new ProductOrder()
logger.warn("产品详情图片添加失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
}
logger.info("产品信息及其子信息添加成功!");
jsonObject.put("success", true);
jsonObject.put("product_id", product_id);
return jsonObject.toJSONString();
}
//更新产品信息-ajax
@ResponseBody
@RequestMapping(value = "admin/product/{product_id}", method = RequestMethod.PUT, produces = "application/json;charset=utf-8")
public String updateProduct(@RequestParam String product_name/* 产品名称 */,
@RequestParam String product_title/* 产品标题 */,
@RequestParam Integer product_category_id/* 产品类型ID */,
@RequestParam Double product_sale_price/* 产品最低价 */,
@RequestParam Double product_price/* 产品最高价 */,
@RequestParam Byte product_isEnabled/* 产品状态 */,
@RequestParam String propertyAddJson/* 产品添加属性JSON */,
@RequestParam String propertyUpdateJson/* 产品更新属性JSON */,
@RequestParam(required = false) Integer[] propertyDeleteList/* 产品删除属性ID数组 */,
@RequestParam(required = false) String[] productSingleImageList/*产品预览图片名称数组*/,
@RequestParam(required = false) String[] productDetailsImageList/*产品详情图片名称数组*/,
logger.info("验证用户与订单是否一致");
if (order.getProductOrder_user().getUser_id() != Integer.parseInt(userId.toString())) {
logger.warn("用户与订单信息不一致,返回订单列表页");
object.put("success", false);
object.put("url", "/order/0/10");
return object.toJSONString();
}
order.setProductOrderItemList(productOrderItemService.getListByOrderId(order.getProductOrder_id(), null));
double orderTotalPrice = 0.00;
if (order.getProductOrderItemList().size() == 1) {
logger.info("获取单订单项的产品信息");
ProductOrderItem productOrderItem = order.getProductOrderItemList().get(0);
Product product = productService.get(productOrderItem.getProductOrderItem_product().getProduct_id());
List<ProductImage> detailsProductImageList = new ArrayList<>(8);
for (ProductImage productImage : productImageList) {
if (productImage.getProductImage_type() == 0) {
singleProductImageList.add(productImage);
} else {
detailsProductImageList.add(productImage);
}
}
product.setSingleProductImageList(singleProductImageList);
product.setDetailProductImageList(detailsProductImageList);
map.put("product",product);
logger.info("获取产品详情-属性值信息");
List<PropertyValue> propertyValueList = propertyValueService.getList(new PropertyValue().setPropertyValue_product(product),null);
logger.info("获取产品详情-分类信息对应的属性列表");
List<Property> propertyList = propertyService.getList(new Property().setProperty_category(product.getProduct_category()),null);
logger.info("属性列表和属性值列表合并");
for(Property property : propertyList){
return object.toJSONString();
}
JSONObject orderItemMap = JSONObject.parseObject(orderItemJSON);
Set<String> orderItem_id = orderItemMap.keySet();
List<ProductOrderItem> productOrderItemList = new ArrayList<>(3);
if (orderItem_id.size() > 0) {
for (String id : orderItem_id) {
ProductOrderItem orderItem = productOrderItemService.get(Integer.valueOf(id));
if (orderItem == null || !orderItem.getProductOrderItem_user().getUser_id().equals(userId)) {
logger.warn("订单项为空或用户状态不一致!");
object.put("success", false);
object.put("url", "/cart");
return object.toJSONString();
}
if (orderItem.getProductOrderItem_order() != null) {
logger.warn("用户订单项不属于购物车,回到购物车页");
object.put("success", false);
object.put("url", "/cart");
return object.toJSONString();
}
boolean yn = productOrderItemService.update(new ProductOrderItem().setProductOrderItem_id(Integer.valueOf(id)).setProductOrderItem_userMessage(orderItemMap.getString(id)));
if (!yn) {
throw new RuntimeException();
}
orderItem.setProductOrderItem_product(productService.get(orderItem.getProductOrderItem_product().getProduct_id()));
cookie4.setMaxAge(maxAge);
cookie5.setMaxAge(maxAge);
cookie6.setMaxAge(maxAge);
cookie7.setMaxAge(maxAge);
response.addCookie(cookie1);
response.addCookie(cookie2);
response.addCookie(cookie3);
response.addCookie(cookie4);
response.addCookie(cookie5);
response.addCookie(cookie6);
response.addCookie(cookie7);
StringBuffer productOrder_code = new StringBuffer()
.append(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()))
.append(0)
.append(userId);
logger.info("生成的订单号为:{}", productOrder_code);
logger.info("整合订单对象");
ProductOrder productOrder = new ProductOrder()
logger.info("获取前10条产品列表");
PageUtil pageUtil = new PageUtil(0, 10);
List<Product> productList = productService.getList(null, null, null, pageUtil);
map.put("productList", productList);
logger.info("获取产品总数量");
Integer productCount = productService.getTotal(null, null);
map.put("productCount", productCount);
logger.info("获取分页信息");
pageUtil.setTotal(productCount);
map.put("pageUtil", pageUtil);
logger.info("转到后台管理-产品页-ajax方式");
return "admin/productManagePage";
}
logger.info("获取productImage_id为{}的产品图片信息",productImage_id);
ProductImage productImage = productImageService.get(productImage_id);
logger.info("删除产品图片");
Boolean yn = productImageService.deleteList(new Integer[]{productImage_id});
if (yn) {
logger.info("删除图片成功!");
object.put("success", true);
} else {
logger.warn("删除图片失败!事务回滚");
object.put("success", false);
throw new RuntimeException();
}
return object.toJSONString();
}
//上传产品图片-ajax
@ResponseBody
@RequestMapping(value = "admin/uploadProductImage", method = RequestMethod.POST, produces = "application/json;charset=utf-8")