900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 基于javaweb+springboot的仿天猫商城系统(java+jsp+Springboot+SSM+mysql+maven)

基于javaweb+springboot的仿天猫商城系统(java+jsp+Springboot+SSM+mysql+maven)

时间:2018-10-19 20:12:16

相关推荐

基于javaweb+springboot的仿天猫商城系统(java+jsp+Springboot+SSM+mysql+maven)

基于javaweb+springboot的仿天猫商城系统(java+jsp+Springboot+SSM+mysql+maven)

一、项目介绍:

迷你天猫商城是一个基于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等等。

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

.setProductImage_product(product));}logger.info("共有{}条产品详情图片数据", productImageList.size());yn = productImageService.addList(productImageList);if (yn) {logger.info("产品详情图片添加成功!");} else {logger.warn("产品详情图片添加失败!事务回滚");jsonObject.put("success", false);throw new RuntimeException();}}jsonObject.put("success", true);jsonObject.put("product_id", product_id);return jsonObject.toJSONString();}//按条件查询产品-ajax@ResponseBody@RequestMapping(value = "admin/product/{index}/{count}", method = RequestMethod.GET, produces = "application/json;charset=utf-8")public String getProductBySearch(@RequestParam(required = false) String product_name/* 产品名称 */,

Short number = Short.valueOf(orderItemString.getString(key));if (number <= 0 || number > 500) {logger.warn("订单项产品数量不合法!");object.put("success", false);return object.toJSONString();}double price = productOrderItem.getProductOrderItem_price() / productOrderItem.getProductOrderItem_number();Boolean yn = productOrderItemService.update(new ProductOrderItem().setProductOrderItem_id(Integer.valueOf(key)).setProductOrderItem_number(number).setProductOrderItem_price(number * price));if (!yn) {throw new RuntimeException();}}Object[] orderItemIDArray = orderItemIDSet.toArray();object.put("success", true);object.put("orderItemIDArray", orderItemIDArray);return object.toJSONString();} else {

logger.info("获取用户信息");user = userService.get(Integer.parseInt(userId.toString()));map.put("user", user);} else {return "redirect:/login";}Byte[] status_array = null;if (status != null) {status_array = new Byte[]{status};}PageUtil pageUtil = new PageUtil(index, count);logger.info("根据用户ID:{}获取订单列表", userId);List<ProductOrder> productOrderList = productOrderService.getList(new ProductOrder().setProductOrder_user(new User().setUser_id(Integer.valueOf(userId.toString()))), status_array, new OrderUtil("productOrder_id", true), pageUtil);//订单总数量Integer orderCount = 0;if (productOrderList.size() > 0) {orderCount = productOrderService.getTotal(new ProductOrder().setProductOrder_user(new User().setUser_id(Integer.valueOf(userId.toString()))), status_array);logger.info("获取订单项信息及对应的产品信息");for (ProductOrder order : productOrderList) {

jsonObject.put("success", true);jsonObject.put("category_id", category_id);} else {jsonObject.put("success", false);logger.warn("添加失败!事务回滚");throw new RuntimeException();}return jsonObject.toJSONString();}//更新分类信息-ajax@ResponseBody@RequestMapping(value = "admin/category/{category_id}", method = RequestMethod.PUT, produces = "application/json;charset=utf-8")public String updateCategory(@RequestParam String category_name/* 分类名称 */,@RequestParam String category_image_src/* 分类图片路径 */,@PathVariable("category_id") Integer category_id/* 分类ID */) {JSONObject jsonObject = new JSONObject();logger.info("整合分类信息");Category category = new Category().setCategory_id(category_id).setCategory_name(category_name).setCategory_image_src(category_image_src.substring(category_image_src.lastIndexOf("/") + 1));logger.info("更新分类信息,分类ID值为:{}", category_id);boolean yn = categoryService.update(category);if (yn) {

List<Property> propertyList = propertyService.getList(new Property().setProperty_category(categoryList.get(0)),null);map.put("propertyList",propertyList);logger.info("转到后台管理-产品添加页-ajax方式");return "admin/include/productDetails";}//添加产品信息-ajax.@ResponseBody@RequestMapping(value = "admin/product", method = RequestMethod.POST,produces = "application/json;charset=utf-8")public String addProduct(@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 propertyJson/* 产品属性JSON */,@RequestParam(required = false) String[] productSingleImageList/*产品预览图片名称数组*/,@RequestParam(required = false) String[] productDetailsImageList/*产品详情图片名称数组*/) {JSONObject jsonObject = new JSONObject();logger.info("整合产品信息");Product product = new Product().setProduct_name(product_name).setProduct_title(product_title).setProduct_category(new Category().setCategory_id(product_category_id)).setProduct_sale_price(product_sale_price)

map.put("districtList", districtAddress);map.put("orderTotalPrice", productOrderItem.getProductOrderItem_price());map.put("addressId", addressId);map.put("cityAddressId", cityAddressId);map.put("districtAddressId", districtAddressId);map.put("order_post", order_post);map.put("order_receiver", order_receiver);map.put("order_phone", order_phone);map.put("detailsAddress", detailsAddress);logger.info("转到前台天猫-订单建立页");return "fore/productBuyPage";}//转到前台天猫-购物车订单建立页@RequestMapping(value = "order/create/byCart", method = RequestMethod.GET)

if (adminId == null) {return "admin/include/loginMessage";}logger.info("转到后台管理-分类添加页-ajax方式");return "admin/include/categoryDetails";}//添加分类信息-ajax@ResponseBody@RequestMapping(value = "admin/category", method = RequestMethod.POST, produces = "application/json;charset=utf-8")public String addCategory(@RequestParam String category_name/* 分类名称 */,@RequestParam String category_image_src/* 分类图片路径 */) {JSONObject jsonObject = new JSONObject();logger.info("整合分类信息");Category category = new Category().setCategory_name(category_name).setCategory_image_src(category_image_src.substring(category_image_src.lastIndexOf("/") + 1));logger.info("添加分类信息");boolean yn = categoryService.add(category);if (yn) {int category_id = lastIDService.selectLastID();

.setProductOrderItem_user(new User().setUser_id(Integer.valueOf(userId.toString()))).setProductOrderItem_product(productService.get(orderItem_product_id)).setProductOrderItem_number(orderItem_number).setProductOrderItem_price(product.getProduct_sale_price() * orderItem_number).setProductOrderItem_userMessage(userMessage).setProductOrderItem_order(new ProductOrder().setProductOrder_id(order_id));yn = productOrderItemService.add(productOrderItem);if (!yn) {throw new RuntimeException();}object.put("success", true);object.put("url", "/order/pay/" + productOrder.getProductOrder_code());return object.toJSONString();}//创建新订单-多订单项-ajax@ResponseBody@RequestMapping(value = "order/list", method = RequestMethod.POST, produces = "application/json;charset=utf-8")public String createOrderByList(HttpSession session, Map<String, Object> map, HttpServletResponse response,

@RequestMapping(value = "admin/productImage/{productImage_id}",method = RequestMethod.DELETE,produces = "application/json;charset=utf-8")public String deleteProductImageById(@PathVariable Integer productImage_id/* 产品图片ID */){JSONObject object = new JSONObject();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("删除图片失败!事务回滚");

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("检查用户是否登录");

@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/*产品详情图片名称数组*/,@PathVariable("product_id") Integer product_id/* 产品ID */) {JSONObject jsonObject = new JSONObject();logger.info("整合产品信息");Product product = new Product().setProduct_id(product_id).setProduct_name(product_name).setProduct_title(product_title).setProduct_category(new Category().setCategory_id(product_category_id)).setProduct_sale_price(product_sale_price).setProduct_price(product_price).setProduct_isEnabled(product_isEnabled).setProduct_create_date(new Date());logger.info("更新产品信息,产品ID值为:{}", product_id);

public class CategoryController extends BaseController {@Autowiredprivate CategoryService categoryService;@Autowiredprivate LastIDService lastIDService;@Autowiredprivate PropertyService propertyService;//转到后台管理-分类页-ajax@RequestMapping(value = "admin/category", method = RequestMethod.GET)public String goToPage(HttpSession session, Map<String, Object> map) {logger.info("检查管理员权限");Object adminId = checkAdmin(session);if (adminId == null) {return "admin/include/loginMessage";}logger.info("获取前10条分类列表");PageUtil pageUtil = new PageUtil(0, 10);List<Category> categoryList = categoryService.getList(null, pageUtil);map.put("categoryList", categoryList);logger.info("获取分类总数量");Integer categoryCount = categoryService.getTotal(null);

List<Address> addressList = addressService.getRoot();List<Address> cityList = addressService.getList(null,cityAddress.getAddress_regionId().getAddress_areaId());List<Address> districtList = addressService.getList(null,cityAddress.getAddress_areaId());map.put("addressList", addressList);map.put("cityList", cityList);map.put("districtList", districtList);map.put("addressId", cityAddress.getAddress_regionId().getAddress_areaId());map.put("cityAddressId", cityAddress.getAddress_areaId());map.put("districtAddressId", districtAddressId);return "fore/userDetails";} else {return "redirect:/login";}}

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);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("获取单订单项的产品信息");

return "redirect:/order/0/10";}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());product.setProduct_category(categoryService.get(product.getProduct_category().getCategory_id()));productOrderItem.setProductOrderItem_product(product);orderTotalPrice = productOrderItem.getProductOrderItem_price();} else {for (ProductOrderItem productOrderItem : order.getProductOrderItemList()) {orderTotalPrice += productOrderItem.getProductOrderItem_price();}}logger.info("订单总金额为:{}元", orderTotalPrice);map.put("productOrder", order);map.put("orderTotalPrice", orderTotalPrice);logger.info("转到前台天猫-订单支付页");return "fore/productPayPage";

if (propertyIdSet.size() > 0) {logger.info("整合产品子信息-需要更新的产品属性");List<PropertyValue> propertyValueList = new ArrayList<>(5);for (String key : propertyIdSet) {String value = object.getString(key);PropertyValue propertyValue = new PropertyValue().setPropertyValue_value(value).setPropertyValue_id(Integer.valueOf(key));propertyValueList.add(propertyValue);}logger.info("共有{}条需要更新的产品属性数据", propertyValueList.size());for (int i = 0; i < propertyValueList.size(); i++) {logger.info("正在更新第{}条,共{}条", i + 1, propertyValueList.size());

@Autowiredprivate PropertyService propertyService;//转到后台管理-分类页-ajax@RequestMapping(value = "admin/category", method = RequestMethod.GET)public String goToPage(HttpSession session, Map<String, Object> map) {logger.info("检查管理员权限");Object adminId = checkAdmin(session);if (adminId == null) {return "admin/include/loginMessage";}logger.info("获取前10条分类列表");PageUtil pageUtil = new PageUtil(0, 10);List<Category> categoryList = categoryService.getList(null, pageUtil);map.put("categoryList", categoryList);logger.info("获取分类总数量");Integer categoryCount = categoryService.getTotal(null);map.put("categoryCount", categoryCount);logger.info("获取分页信息");pageUtil.setTotal(categoryCount);map.put("pageUtil", pageUtil);

logger.info("获取用户信息");User user = userService.get(Integer.parseInt(userId.toString()));map.put("user", user);logger.info("获取用户所在地区级地址");String districtAddressId = user.getUser_address().getAddress_areaId();Address districtAddress = addressService.get(districtAddressId);logger.info("获取市级地址信息");Address cityAddress = addressService.get(districtAddress.getAddress_regionId().getAddress_areaId());logger.info("获取其他地址信息");List<Address> addressList = addressService.getRoot();List<Address> cityList = addressService.getList(null,cityAddress.getAddress_regionId().getAddress_areaId());List<Address> districtList = addressService.getList(null,cityAddress.getAddress_areaId());map.put("addressList", addressList);map.put("cityList", cityList);map.put("districtList", districtList);map.put("addressId", cityAddress.getAddress_regionId().getAddress_areaId());map.put("cityAddressId", cityAddress.getAddress_areaId());map.put("districtAddressId", districtAddressId);

Cookie cookie2 = new Cookie("cityAddressId", cityAddressId);Cookie cookie3 = new Cookie("districtAddressId", districtAddressId);Cookie cookie4 = new Cookie("order_post", URLEncoder.encode(productOrder_post, "UTF-8"));Cookie cookie5 = new Cookie("order_receiver", URLEncoder.encode(productOrder_receiver, "UTF-8"));Cookie cookie6 = new Cookie("order_phone", URLEncoder.encode(productOrder_mobile, "UTF-8"));Cookie cookie7 = new Cookie("detailsAddress", URLEncoder.encode(productOrder_detail_address, "UTF-8"));//设置过期时间为一年int maxAge = 60 * 60 * 24 * 365;cookie1.setMaxAge(maxAge);cookie2.setMaxAge(maxAge);cookie3.setMaxAge(maxAge);cookie4.setMaxAge(maxAge);cookie5.setMaxAge(maxAge);cookie6.setMaxAge(maxAge);

//前台天猫-用户更换头像@ResponseBody@RequestMapping(value = "user/uploadUserHeadImage", method = RequestMethod.POST, produces = "application/json;charset=utf-8")public String uploadUserHeadImage(@RequestParam MultipartFile file, HttpSession session){String originalFileName = file.getOriginalFilename();logger.info("获取图片原始文件名:{}", originalFileName);String extension = originalFileName.substring(originalFileName.lastIndexOf('.'));String fileName = UUID.randomUUID() + extension;String filePath = session.getServletContext().getRealPath("/") + "res/images/item/userProfilePicture/" + fileName;

map.put("pageUtil", pageUtil);map.put("productOrderList", productOrderList);map.put("categoryList", categoryList);map.put("status", status);logger.info("转到前台天猫-订单列表页");return "fore/orderListPage";}//转到前台天猫-订单建立页@RequestMapping(value = "order/create/{product_id}", method = RequestMethod.GET)public String goToOrderConfirmPage(@PathVariable("product_id") Integer product_id,@RequestParam(required = false, defaultValue = "1") Short product_number,Map<String, Object> map,HttpSession session,HttpServletRequest request) throws UnsupportedEncodingException {logger.info("检查用户是否登录");Object userId = checkUser(session);User user;if (userId != null) {logger.info("获取用户信息");user = userService.get(Integer.parseInt(userId.toString()));map.put("user", user);} else {return "redirect:/login";

@RequestParam(value = "user_profile_picture_src", required = false) String user_profile_picture_src /* 用户头像*/,@RequestParam(value = "user_password") String user_password/* 用户密码 */) throws ParseException, UnsupportedEncodingException {logger.info("检查用户是否登录");Object userId = checkUser(session);if (userId != null) {logger.info("获取用户信息");User user = userService.get(Integer.parseInt(userId.toString()));map.put("user", user);} else {return "redirect:/login";}logger.info("创建用户对象");if (user_profile_picture_src != null && "".equals(user_profile_picture_src)) {user_profile_picture_src = null;}User userUpdate = new User()

logger.warn("用户与订单信息不一致,返回订单列表页");object.put("success", false);object.put("url", "/order/0/10");return object.toJSONString();}logger.info("更新订单信息");ProductOrder productOrder = new ProductOrder().setProductOrder_id(order.getProductOrder_id()).setProductOrder_status((byte) 3).setProductOrder_confirm_date(new Date());boolean yn = productOrderService.update(productOrder);if (yn) {object.put("success", true);} else {object.put("success", false);}

return "redirect:/cart";}for (ProductOrderItem orderItem : orderItemList) {if (orderItem.getProductOrderItem_user().getUser_id() != userId) {logger.warn("用户订单项与用户不匹配,回到购物车页");return "redirect:/cart";}if (orderItem.getProductOrderItem_order() != null) {logger.warn("用户订单项不属于购物车,回到购物车页");return "redirect:/cart";}}logger.info("验证通过,获取订单项的产品信息");double orderTotalPrice = 0.0;for (ProductOrderItem orderItem : orderItemList) {Product product = productService.get(orderItem.getProductOrderItem_product().getProduct_id());product.setProduct_category(categoryService.get(product.getProduct_category().getCategory_id()));product.setSingleProductImageList(productImageService.getList(product.getProduct_id(), (byte) 0, new PageUtil(0, 1)));

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().setProductOrder_status((byte) 0).setProductOrder_address(new Address().setAddress_areaId(districtAddressId)).setProductOrder_post(productOrder_post).setProductOrder_user(new User().setUser_id(Integer.valueOf(userId.toString()))).setProductOrder_mobile(productOrder_mobile).setProductOrder_receiver(productOrder_receiver)

} catch (IOException e) {logger.warn("文件上传失败!");e.printStackTrace();object.put("success", false);}return object.toJSONString();}}权限基础控制层:/*** 基控制器*/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。