Java 实战项目锤炼之网上商城系统的实现流程

一、项目简述(+需求文档+PPT)

功能: 主页显示热销商品;所有商品展示,可进行商品搜索;点 击商品进入商品详情页,显示库存,具有立即购买和加入 购物车功能,可增减购买商品数量亦可手动输入(同时验证 库存),热销商品展示。立即购买进入确认订单页面,可选 择已经添加的地址,亦可新增地址。(同时验证库存),可 选择购买哪些商品,可删除不需要的商品。点击结算进入 确认订单页面,确认后提交订单,订单重复提交给予响 应,库存不足或商品下架给予响应。后台管理:(修改密码 等),商品管理(商品批量添加、上下架、库存维护等), 订单管理。

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe ( IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: JSP + C3P0+ Servlert + html+ css + JavaScript + JQuery + Ajax + Fileupload等等。

后台管理-主页操作代码:

/**

* 后台管理-主页

*/

@Controller

public class AdminHomeController extends BaseController {

@Resource(name = "adminService")

private AdminService adminService;

@Resource(name = "productOrderService")

private ProductOrderService productOrderService;

@Resource(name = "productService")

private ProductService productService;

@Resource(name = "userService")

private UserService userService;

/**

* 转到后台管理-主页

* @param session session对象

* @param map 前台传入的Map

* @return 响应数据

* @throws ParseException 转换异常

*/

@RequestMapping(value = "admin", method = RequestMethod.GET)

public String goToPage(HttpSession session, Map<String, Object> map) throws ParseException {

logger.info("获取管理员信息");

Object adminId = checkAdmin(session);

if (adminId == null) {

return "redirect:/admin/login";

}

Admin admin = adminService.get(null, Integer.parseInt(adminId.toString()));

map.put("admin", admin);

logger.info("获取统计信息");

//产品总数

Integer productTotal = productService.getTotal(null, new Byte[]{0, 2});

//用户总数

Integer userTotal = userService.getTotal(null);

//订单总数

Integer orderTotal = productOrderService.getTotal(null, new Byte[]{3});

logger.info("获取图表信息");

map.put("jsonObject", getChartData(null,null,7));

map.put("productTotal", productTotal);

map.put("userTotal", userTotal);

map.put("orderTotal", orderTotal);

logger.info("转到后台管理-主页");

return "admin/homePage";

}

/**

* 转到后台管理-主页(ajax方式)

* @param session session对象

* @param map 前台传入的Map

* @return 响应数据

* @throws ParseException 转换异常

*/

@RequestMapping(value = "admin/home", method = RequestMethod.GET)

public String goToPageByAjax(HttpSession session, Map<String, Object> map) throws ParseException {

logger.info("获取管理员信息");

Object adminId = checkAdmin(session);

if (adminId == null) {

return "admin/include/loginMessage";

}

Admin admin = adminService.get(null, Integer.parseInt(adminId.toString()));

map.put("admin", admin);

logger.info("获取统计信息");

Integer productTotal = productService.getTotal(null, new Byte[]{0, 2});

Integer userTotal = userService.getTotal(null);

Integer orderTotal = productOrderService.getTotal(null, new Byte[]{3});

logger.info("获取图表信息");

map.put("jsonObject", getChartData(null, null,7));

logger.info("获取图表信息");

map.put("jsonObject", getChartData(null,null,7));

map.put("productTotal", productTotal);

map.put("userTotal", userTotal);

map.put("orderTotal", orderTotal);

logger.info("转到后台管理-主页-ajax方式");

return "admin/homeManagePage";

}

/**

* 按日期查询图表数据(ajax方式)

* @param beginDate 开始日期

* @param endDate 结束日期

* @return 响应数据

* @throws ParseException 转换异常

*/

@ResponseBody

@RequestMapping(value = "admin/home/charts", method = RequestMethod.GET, produces = "application/json;charset=utf-8")

public String getChartDataByDate(@RequestParam(required = false) String beginDate, @RequestParam(required = false) String endDate) throws ParseException {

if (beginDate != null && endDate != null) {

//转换日期格式

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

return getChartData(simpleDateFormat.parse(beginDate), simpleDateFormat.parse(endDate),7).toJSONString();

} else {

return getChartData(null, null,7).toJSONString();

}

}

/**

* 按日期获取图表数据

* @param beginDate 开始日期

* @param endDate 结束日期

* @param days 天数

* @return 图表数据的JSON对象

* @throws ParseException 转换异常

*/

private JSONObject getChartData(Date beginDate,Date endDate,int days) throws ParseException {

JSONObject jsonObject = new JSONObject();

SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd", Locale.UK);

SimpleDateFormat time2 = new SimpleDateFormat("MM/dd", Locale.UK);

SimpleDateFormat timeSpecial = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.UK);

//如果没有指定开始和结束日期

if (beginDate == null || endDate == null) {

//指定一周前的日期为开始日期

Calendar cal = Calendar.getInstance();

cal.add(Calendar.DATE, 1-days);

beginDate = time.parse(time.format(cal.getTime()));

//指定当前日期为结束日期

cal = Calendar.getInstance();

endDate = cal.getTime();

} else {

beginDate = time.parse(time.format(beginDate));

endDate = timeSpecial.parse(time.format(endDate) + " 23:59:59");

}

logger.info("根据订单状态分类");

//未付款订单数统计数组

int[] orderUnpaidArray = new int[7];

//未发货订单数统计叔祖

int[] orderNotShippedArray = new int[7];

//未确认订单数统计数组

int[] orderUnconfirmedArray = new int[7];

//交易成功订单数统计数组

int[] orderSuccessArray = new int[7];

//总交易订单数统计数组

int[] orderTotalArray = new int[7];

logger.info("从数据库中获取统计的订单集合数据");

List<OrderGroup> orderGroupList = productOrderService.getTotalByDate(beginDate, endDate);

//初始化日期数组

JSONArray dateStr = new JSONArray(days);

//按指定的天数进行循环

for (int i = 0; i < days; i++) {

//格式化日期串(MM/dd)并放入日期数组中

Calendar cal = Calendar.getInstance();

cal.setTime(beginDate);

cal.add(Calendar.DATE, i);

String formatDate = time2.format(cal.getTime());

dateStr.add(formatDate);

//该天的订单总数

int orderCount = 0;

//循环订单集合数据的结果集

for(int j = 0; j < orderGroupList.size(); j++){

OrderGroup orderGroup = orderGroupList.get(j);

//如果该订单日期与当前日期一致

if(orderGroup.getProductOrder_pay_date().equals(formatDate)){

//从结果集中移除数据

orderGroupList.remove(j);

//根据订单状态将统计结果存入对应的订单状态数组中

switch (orderGroup.getProductOrder_status()) {

case 0:

//未付款订单

orderUnpaidArray[i] = orderGroup.getProductOrder_count();

break;

case 1:

//未发货订单

orderNotShippedArray[i] = orderGroup.getProductOrder_count();

break;

case 2:

//未确认订单

orderUnconfirmedArray[i] = orderGroup.getProductOrder_count();

break;

case 3:

//交易成功订单

orderSuccessArray[i] = orderGroup.getProductOrder_count();

break;

}

//累加当前日期的订单总数

orderCount += orderGroup.getProductOrder_count();

}

}

//将统计的订单总数存入总交易订单数统计数组

orderTotalArray[i] = orderCount;

}

logger.info("返回结果集map");

jsonObject.put("orderTotalArray", orderTotalArray);

jsonObject.put("orderUnpaidArray", orderUnpaidArray);

jsonObject.put("orderNotShippedArray", orderNotShippedArray);

jsonObject.put("orderUnconfirmedArray", orderUnconfirmedArray);

jsonObject.put("orderSuccessArray", orderSuccessArray);

jsonObject.put("dateStr",dateStr);

return jsonObject;

}

}

前台主页代码:

/**

* 主页

*/

@Controller

public class ForeHomeController extends BaseController {

@Resource(name = "userService")

private UserService userService;

@Resource(name="categoryService")

private CategoryService categoryService;

@Resource(name="productService")

private ProductService productService;

@Resource(name="productImageService")

private ProductImageService productImageService;

//转到前台天猫-主页

@RequestMapping(value = "/", method = RequestMethod.GET)

public String goToPage(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("获取产品分类列表");

List<Category> categoryList = categoryService.getList(null,null);

logger.info("获取每个分类下的产品列表");

for(Category category : categoryList){

List<Product> productList = productService.getList(

new Product().setProduct_category(category),

new Byte[]{0, 2},

new OrderUtil("product_sale_count", true), new PageUtil(0, 8)

);

if (productList != null) {

for (Product product : productList) {

Integer product_id = product.getProduct_id();

product.setSingleProductImageList(

productImageService.getList(

product_id, (byte) 0, new PageUtil(0, 1)

)

);

}

}

category.setProductList(productList);

}

map.put("categoryList",categoryList);

logger.info("获取促销产品列表");

List<Product> specialProductList = productService.getList(

null, new Byte[]{2}, null, new PageUtil(0, 6)

);

map.put("specialProductList", specialProductList);

logger.info("转到前台主页");

return "fore/homePage";

}

//转到前台天猫-错误页

@RequestMapping(value = "error", method = RequestMethod.GET)

public String goToErrorPage() {

return "fore/errorPage";

}

//获取主页分类下产品信息-ajax

@ResponseBody

@RequestMapping(value = "product/nav/{category_id}", method = RequestMethod.GET, produces = "application/json;charset=utf-8")

public String getProductByNav(@PathVariable("category_id") Integer category_id) {

JSONObject object = new JSONObject();

if (category_id == null) {

object.put("success", false);

return object.toJSONString();

}

logger.info("获取分类ID为{}的产品标题数据", category_id);

List<Product> productList = productService.getTitle(

new Product().setProduct_category(new Category().setCategory_id(category_id)),

new PageUtil(0, 40)

);

List<List<Product>> complexProductList = new ArrayList<>(8);

List<Product> products = new ArrayList<>(5);

for (int i = 0; i < productList.size(); i++) {

//如果临时集合中产品数达到5个,加入到产品二维集合中,并重新实例化临时集合

if (i % 5 == 0) {

complexProductList.add(products);

products = new ArrayList<>(5);

}

products.add(productList.get(i));

}

complexProductList.add(products);

Category category = new Category().setCategory_id(category_id).setComplexProductList(complexProductList);

object.put("success", true);

object.put("category", category);

return object.toJSONString();

}

}

以上就是Java 实战项目锤炼之网上商城系统的实现流程的详细内容,更多关于Java 网上商城系统的资料请关注其它相关文章!

以上是 Java 实战项目锤炼之网上商城系统的实现流程 的全部内容, 来源链接: utcz.com/p/250644.html

回到顶部