Java 仿天貓服裝商城系統的實現流程
一、項目簡述
功能:網上商城系統,前臺+後臺管理,用戶註冊,登錄, 上哦展示,分組展示,搜索,收貨地址管理,購物車管 理,添加,購買,個人信息修改。訂單查詢等等,後臺商 品管理,分類管理,庫存管理,訂單管理,用戶管理,信 息、修改等等。
二、項目運行
環境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
項目技術: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。
權限控制代碼:
/** * 產品詳情頁 */ @Controller public class ForeProductDetailsController extends BaseController { @Resource(name = "productService") private ProductService productService; @Resource(name = "userService") private UserService userService; @Resource(name = "productImageService") private ProductImageService productImageService; @Resource(name = "categoryService") private CategoryService categoryService; @Resource(name = "propertyValueService") private PropertyValueService propertyValueService; @Resource(name = "propertyService") private PropertyService propertyService; @Resource(name = "reviewService") private ReviewService reviewService; @Resource(name = "productOrderItemService") private ProductOrderItemService productOrderItemService; //轉到前臺天貓-產品詳情頁 @RequestMapping(value = "product/{pid}", method = RequestMethod.GET) public String goToPage(HttpSession session, Map<String, Object> map, @PathVariable("pid") String pid /*產品ID*/) { logger.info("檢查用戶是否登錄"); Object userId = checkUser(session); if (userId != null) { logger.info("獲取用戶信息"); User user = userService.get(Integer.parseInt(userId.toString())); map.put("user", user); } logger.info("獲取產品ID"); Integer product_id = Integer.parseInt(pid); logger.info("獲取產品信息"); Product product = productService.get(product_id); if (product == null || product.getProduct_isEnabled() == 1) { return "redirect:/404"; } logger.info("獲取產品子信息-分類信息"); product.setProduct_category(categoryService.get(product.getProduct_category().getCategory_id())); logger.info("獲取產品子信息-預覽圖片信息"); List<ProductImage> singleProductImageList = productImageService.getList(product_id, (byte) 0, null); product.setSingleProductImageList(singleProductImageList); logger.info("獲取產品子信息-詳情圖片信息"); List<ProductImage> detailsProductImageList = productImageService.getList(product_id, (byte) 1, null); product.setDetailProductImageList(detailsProductImageList); 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) { for (PropertyValue propertyValue : propertyValueList) { if (property.getProperty_id().equals(propertyValue.getPropertyValue_property().getProperty_id())) { List<PropertyValue> property_value_item = new ArrayList<>(1); property_value_item.add(propertyValue); property.setPropertyValueList(property_value_item); break; } } } logger.info("獲取產品子信息-產品評論信息"); product.setReviewList(reviewService.getListByProductId(product_id, null)); if (product.getReviewList() != null) { for (Review review : product.getReviewList()) { review.setReview_user(userService.get(review.getReview_user().getUser_id())); } } logger.info("獲取猜你喜歡列表"); Integer category_id = product.getProduct_category().getCategory_id(); Integer total = productService.getTotal(new Product().setProduct_category(new Category().setCategory_id(category_id)), new Byte[]{0, 2}); logger.info("分類ID為{}的產品總數為{}條", category_id, total); //生成隨機數 int i = new Random().nextInt(total); if (i + 2 >= total) { i = total - 3; } if (i < 0) { i = 0; } List<Product> loveProductList = productService.getList(new Product().setProduct_category( new Category().setCategory_id(category_id)), new Byte[]{0, 2}, null, new PageUtil().setCount(3).setPageStart(i) ); if (loveProductList != null) { logger.info("獲取產品列表的相應的一張預覽圖片"); for (Product loveProduct : loveProductList) { loveProduct.setSingleProductImageList(productImageService.getList(loveProduct.getProduct_id(), (byte) 0, new PageUtil(0, 1))); } } logger.info("獲取分類列表"); List<Category> categoryList = categoryService.getList(null, new PageUtil(0, 3)); map.put("loveProductList", loveProductList); map.put("categoryList", categoryList); map.put("propertyList", propertyList); map.put("product", product); map.put("guessNumber", i); map.put("pageUtil", new PageUtil(0, 10).setTotal(product.getProduct_review_count())); logger.info("轉到前臺-產品詳情頁"); return "fore/productDetailsPage"; } //按產品ID加載產品評論列表-ajax @Deprecated @ResponseBody @RequestMapping(value = "review/{pid}", method = RequestMethod.GET, produces = "application/json;charset=utf-8") public String loadProductReviewList(@PathVariable("pid") String pid/*產品ID*/, @RequestParam Integer index/* 頁數 */, @RequestParam Integer count/* 行數 */) { logger.info("獲取產品ID"); Integer product_id = Integer.parseInt(pid); logger.info("獲取產品評論列表"); List<Review> reviewList = reviewService.getListByProductId(product_id, new PageUtil(index, count)); JSONObject jsonObject = new JSONObject(); jsonObject.put("reviewList", JSONArray.parseArray(JSON.toJSONString(reviewList))); return jsonObject.toJSONString(); } //按產品ID加載產品屬性列表-ajax @Deprecated @ResponseBody @RequestMapping(value = "property/{pid}", method = RequestMethod.GET, produces = "application/json;charset=utf-8") public String loadProductPropertyList(@PathVariable("pid") String pid/*產品ID*/) { logger.info("獲取產品ID"); Integer product_id = Integer.parseInt(pid); logger.info("獲取產品詳情-屬性值信息"); Product product = new Product(); product.setProduct_id(product_id); 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) { for (PropertyValue propertyValue : propertyValueList) { if (property.getProperty_id().equals(propertyValue.getPropertyValue_property().getProperty_id())) { List<PropertyValue> property_value_item = new ArrayList<>(1); property_value_item.add(propertyValue); property.setPropertyValueList(property_value_item); break; } } } JSONObject jsonObject = new JSONObject(); jsonObject.put("propertyList", JSONArray.parseArray(JSON.toJSONString(propertyList))); return jsonObject.toJSONString(); } //加載猜你喜歡列表-ajax @ResponseBody @RequestMapping(value = "guess/{cid}", method = RequestMethod.GET, produces = "application/json;charset=utf-8") public String guessYouLike(@PathVariable("cid") Integer cid, @RequestParam Integer guessNumber) { logger.info("獲取猜你喜歡列表"); Integer total = productService.getTotal(new Product().setProduct_category(new Category().setCategory_id(cid)), new Byte[]{0, 2}); logger.info("分類ID為{}的產品總數為{}條", cid, total); //生成隨機數 int i = new Random().nextInt(total); if (i + 2 >= total) { i = total - 3; } if (i < 0) { i = 0; } while (i == guessNumber) { i = new Random().nextInt(total); if (i + 2 >= total) { i = total - 3; } if (i < 0) { i = 0; break; } } logger.info("guessNumber值為{},新guessNumber值為{}", guessNumber, i); List<Product> loveProductList = productService.getList(new Product().setProduct_category( new Category().setCategory_id(cid)), new Byte[]{0, 2}, null, new PageUtil().setCount(3).setPageStart(i) ); if (loveProductList != null) { logger.info("獲取產品列表的相應的一張預覽圖片"); for (Product loveProduct : loveProductList) { loveProduct.setSingleProductImageList(productImageService.getList(loveProduct.getProduct_id(), (byte) 0, new PageUtil(0, 1))); } } JSONObject jsonObject = new JSONObject(); logger.info("獲取數據成功!"); jsonObject.put("success", true); jsonObject.put("loveProductList", JSONArray.parseArray(JSON.toJSONString(loveProductList))); jsonObject.put("guessNumber", i); return jsonObject.toJSONString(); } }
用戶信息管理控制層:
/** * 用戶信息管理 */ @Controller public class ForeUserController extends BaseController{ @Resource(name = "addressService") private AddressService addressService; @Resource(name="userService") private UserService userService; //轉到前臺天貓-用戶詳情頁 @RequestMapping(value = "userDetails", method = RequestMethod.GET) public String goToUserDetail(HttpSession session, Map<String,Object> map){ logger.info("檢查用戶是否登錄"); Object userId = checkUser(session); if (userId != null) { 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); return "fore/userDetails"; } else { return "redirect:/login"; } } //前臺天貓-用戶更換頭像 @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; logger.info("文件上傳路徑:{}", filePath); JSONObject jsonObject = new JSONObject(); try { logger.info("文件上傳中..."); file.transferTo(new File(filePath)); logger.info("文件上傳成功!"); jsonObject.put("success", true); jsonObject.put("fileName", fileName); } catch (IOException e) { logger.warn("文件上傳失敗!"); e.printStackTrace(); jsonObject.put("success", false); } return jsonObject.toJSONString(); } //前臺天貓-用戶詳情更新 @RequestMapping(value="user/update",method=RequestMethod.POST,produces ="application/json;charset=utf-8") public String userUpdate(HttpSession session, Map<String,Object> map, @RequestParam(value = "user_nickname") String user_nickname /*用戶昵稱 */, @RequestParam(value = "user_realname") String user_realname /*真實姓名*/, @RequestParam(value = "user_gender") String user_gender /*用戶性別*/, @RequestParam(value = "user_birthday") String user_birthday /*用戶生日*/, @RequestParam(value = "user_address") String user_address /*用戶所在地 */, @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() .setUser_id(Integer.parseInt(userId.toString())) .setUser_nickname(user_nickname) .setUser_realname(user_realname) .setUser_gender(Byte.valueOf(user_gender)) .setUser_birthday(new SimpleDateFormat("yyyy-MM-dd").parse(user_birthday)) .setUser_address(new Address().setAddress_areaId(user_address)) .setUser_profile_picture_src(user_profile_picture_src) .setUser_password(user_password); logger.info("執行修改"); if (userService.update(userUpdate)){ logger.info("修改成功!跳轉到用戶詳情頁面"); return "redirect:/userDetails"; } throw new RuntimeException(); } }
地址信息管理控制層:
/** * 地址信息管理 */ @RestController public class ForeAddressController extends BaseController { @Resource(name = "addressService") private AddressService addressService; //根據address_areaId獲取地址信息-ajax @RequestMapping(value = "address/{areaId}", method = RequestMethod.GET, produces = "application/json;charset=utf-8") protected String getAddressByAreaId(@PathVariable String areaId) { JSONObject object = new JSONObject(); logger.info("獲取AreaId為{}的地址信息"); List<Address> addressList = addressService.getList(null, areaId); if (addressList == null || addressList.size() <= 0) { object.put("success", false); return object.toJSONString(); } logger.info("獲取該地址可能的子地址信息"); List<Address> childAddressList = addressService.getList(null, addressList.get(0).getAddress_areaId()); object.put("success", true); object.put("addressList", addressList); object.put("childAddressList", childAddressList); return object.toJSONString(); } }
到此這篇關於Java 仿天貓服裝商城系統的實現流程的文章就介紹到這瞭,更多相關Java 商城系統內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Java畢業設計實戰項目之在線服裝銷售商城系統的實現流程
- json如何解析混合數組對象到實體類的list集合裡去
- Java ʵս��Ŀ֮���ߵ��ϵͳ��ʵ������
- java8中的Collectors.groupingBy用法詳解
- Java基礎之Spring5的核心之一IOC容器