基于javaweb+mysql的ssm在线商城购物商城美妆商城(前台、后台)(java+jsp+ssm+javabean+mysql+tomcat)

这是一个基于JavaWeb、SSM(Spring、SpringMVC、MyBatis)框架开发的美妆在线商城项目,包括前后台功能,如商品展示、注册登录、购物车、订单管理等。系统使用MySQL作为数据库,Tomcat作为应用服务器,支持商品上下架、类型管理及用户管理等功能。
摘要由CSDN通过智能技术生成

基于javaweb+mysql的ssm在线商城购物商城美妆商城(前台、后台)(java+jsp+ssm+javabean+mysql+tomcat)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

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

功能说明

前台:

首页展示商品信息,注册,登录,查询商品,看商品详情,添加商品至购物车,更新、删除购物车中商品信息,下订单、订单查看等操作

后台:登录,商品上架下架、商品信息修改、添加,订单查看,类型管理:商品类型新增删除以及修改查询等

前台:

后台:

技术框架

JavaBean MVC JSP SSM(Spring SpringMVC MyBatis) MySQL Bootstrap JavaScript

基于javaweb+mysql的SSM在线商城购物商城美妆商城(前台、后台)(java+jsp+ssm+javabean+mysql+tomcat)

            model.addAttribute("message", "注册失败!");
        }

        //返回注册页面
        return "register";

    }

}
/**
 * 
 */
package com.demo.manage.action;

@Controller
@RequestMapping("/user_manager")
public class ManagerUserController {
	
	@Autowired
	private ManagerUserServiceI userService;
	
	
	 //跳转至登录页面	
	 @RequestMapping("/showLoginPage")
	 public String showLoginPage() {
		 
		
		 return "user/login";
		 
	 }
	 
	 
	 //处理登录请求
	 @RequestMapping("/userLogin")
	 * @param session
	 * @param id
	 * @param number
	 * 更新购物车中商品的购物数量
	 */
	void updateShopcar(HttpSession session, int id, int number);

	/**
	 * @param session
	 * @param id
	 * //删除购物车中商品的购物数量
	 */
	void deleteShopcar(HttpSession session, int id);

	
}
/**
 * 
 */
package com.demo.manage.service;

public interface ManagerUserServiceI {

	/**
	 * @param loginName
	 * @param password
	 * @return
	 * 根据账号以及密码获取用户信息
	 */
	User getUserByNameAndPass(User user);

	/**
	 * @param user
	 *  //用户信息注册   
	 */
	void saveUser(User user,HttpServletRequest request) throws Exception;

	/**
	 * @param activeCode
	 * //用户信息激活  
	 */
	void activeUser(String activeCode);
            userMapper.saveUser(user);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

    }
}
/**
 * 
 */
package com.demo.manage.util.filter;

/**
 * *登录拦截器,如果没有登录则直接访问登录页面
 */
public class ManagerLoginInterceptor extends HandlerInterceptorAdapter {

	/* (non-Javadoc)
	 * @see org.springframework.web.servlet.handler.HandlerInterceptorAdapter#preHandle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object)
	 */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		
		//从session中获取用户信息
		User user = (User)request.getSession().getAttribute(Constant.SESSION_USER);
		
		if(user == null ) {
			request.setAttribute("tip", "您尚未登录,请登录后再进行相关操作!");
			//跳转至登录页面
			request.getRequestDispatcher("/WEB-INF/jsp/user/login.jsp").forward(request, response);
		    return false;
		}else {
			return true;
		}
	}

}
/**
 * 
 */
package com.demo.manage.action;

    @RequestMapping(value = "/loadFirstArticleType.action", produces = {"application/json;charset=utf-8"})
    public String loadFirstArticleType() {

        List<ArticleType> types = articleTypeService.findAllFirstArticleType();
        System.out.println("types:" + JSONArray.fromObject(types).toString());
        return JSONArray.fromObject(types).toString();

    }

    //商品类型的添加或者修改操作
    @RequestMapping("/addOrUpdate.action")
    public String addOrUpdate(ArticleType type, String parentCode) {

        if (type.getCode() != null && !type.getCode().equals("")) {
            //进行更新商品类型操作
            articleTypeService.updateArticleType(type);

        } else {
            //进行添加商品类型操作
            articleTypeService.saveArticleType(type, parentCode);
        }

        return "redirect:/articleType_manager/getAll.action";

    }

    //删除商品类型
    @RequestMapping("/deleteType.action")
    public String deleteType(@Param("code") String code) {

        String message = articleTypeService.deleteType(code);
        return "redirect:/articleType_manager/getAll.action?message=delete success";

    }
}
/**
 * 
 */
package com.demo.shop.service.impl;

		 
		 //商品信息下架	
		 @RequestMapping("/removeArticle.action")
		 public String removeArticle(Model model,Integer id) {
			 
			 articleService.removeArticleById(id);
			 
			 return "redirect:/article_manager/getAll.action";
			 
		 }
		 
		 //添加商品  
		 @RequestMapping("/addArticle.action")
		 public String addArticle(MultipartFile file,String code,Article article,HttpServletRequest request) {
			 
			
			 try {
				
				 InputStream input = file.getInputStream();
				 
				 //获取项目部署路径
				 String realPath =  request.getServletContext().getRealPath("/image/article");
				 
				 //如果上传所指定的目录不存在则创建目录
				 File f = new File(realPath);
				 if(!f.exists()) {
					 f.mkdirs();
				 }
				 
				 //获取当前上传的文件的名字   a.jpg
			     String imageName = file.getOriginalFilename();
			     //重新生成新的文件名
			     String  newFileName = UUID.randomUUID().toString() + imageName.substring(imageName.lastIndexOf("."), imageName.length());
			     System.out.println("文件路径:"+(realPath+File.separator+newFileName));
			     //构建输出流
			     OutputStream out = new FileOutputStream(realPath+File.separator+newFileName);
			     
			     byte[] data = new byte[1024];
			     
			     int len = 0;
			     
			     while((len = input.read(data)) != -1) {
			    	 out.write(data, 0, len);
			    	 out.flush();
			     }
			     
			     out.close();
			     input.close();
			     
			     //指定商品类型
			     article.setTypeCode(code);
			     

@Service(value="muserService")
@Transactional
public class ManagerUserServicempl implements ManagerUserServiceI {
	
	@Autowired
	private ManagerUserMapper userMapper;

	/* (non-Javadoc)
	 *  根据账号以及密码获取用户信息
	 */
	@Override
	public User getUserByNameAndPass(User user) {
		// TODO Auto-generated method stub
		return userMapper.getUserByNameAndPass(user);
	}

	/* (non-Javadoc)
	 * //用户信息注册   
	 */
	@Override
	public void saveUser(User user,HttpServletRequest request) throws Exception {
		// TODO Auto-generated method stub
		user.setCreateDate(new Date());
		
		//通过UUID生成激活码
		String activeCode =  UUID.randomUUID().toString();
		user.setActive(activeCode);
		userMapper.saveUser(user);
		
		
		/*******************************邮件发送*********************************/
		//1、创建	Properties对象用于封装邮件服务器相关信息
		Properties props = new Properties();
		// 服务器地址
				OrderItem item = new OrderItem();
				item.setArticleId(articleId);
				item.setOrderNum(buyNum);
				
				//订单详细记录放在集合中
				items.add(item);
				
				totalPrice += Double.valueOf(infos[2]);
			}
			
			//指定订单的总金额
			order.setAmount(totalPrice);
			
			//保存订单信息 ,保存完订单信息之后,需要获取订单的id,因为需要将订单的id存放在订单详情中
			orderMapper.saveOrder(order);
			
			//获取订单主键的值
			int orderId = order.getId();
			for(OrderItem item : items) {
				item.setOrderId(orderId);
				//保存订单明细
				orderItemMapper.saveItem(item);
			}
			
			
			/*****************************生成支付二维码*******************************/
			DataJoinUtils dataJoinUtils = new DataJoinUtils();

			Map<String, String> result =  dataJoinUtils.wxPay("http://localhost:8080/ecShop/article/index", order.getOrderCode(), "1", "127.0.0.1", "化妆品");
			//将二维码地址封装至order对象中
			order.setImgUrl(result.get("code_url"));
		
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		

       return order;
		
	}

	/* (non-Javadoc)
	 * @see com.demo.shop.service.OrderServiceI#getOrdersByUserId()
	 * 根据当前用户的id查询,该用户所有的订单信息
	 */
	@Override
	public List<Order> getOrdersByUserId() {
		// TODO Auto-generated method stub
		//获取当前用户的信息

@Controller
@RequestMapping("/shopCar")
public class ShopCarController {
	
	@Autowired
	private ShopCarServiceI shopCarService;
	
	@RequestMapping("/addToCar.do")
	public String addShopCar(HttpSession session,@Param("id")int id,@Param("number")int number) {
		
		shopCarService.addArticleToShopCar(session,id,number);
		
		//商品加入购物车成功之后,立马展示购物车中的商品信息
		return "redirect:/shopCar/showShopCar.do";
	}
	
	//展示购物车中的商品信息
	@RequestMapping("/showShopCar.do")
	public String showShopCar(HttpSession session,Model model) {
		
		//根据用户的id获取该用户购物详情
		List<Shopcar> shopCars = shopCarService.getAllShopCarByUserId(session);
		model.addAttribute("shopCars", shopCars);
		
		//定义总金额
		double totalPrice = 0.0;
		
		//遍历集合  计算购物车中商品的总金额
		for(Shopcar shopcar : shopCars) {
			totalPrice += shopcar.getArticle().getDiscountPrice() * shopcar.getBuynum();
		}
		
		model.addAttribute("totalPrice", totalPrice);
		
		//跳转至展示购物车中商品信息的页面
		return "shopCar";
	}
	
	//更新购物车中商品的信息
		@RequestMapping("/updateShopcar.do")
		public String updateShopcar(HttpSession session,@Param("id")int id,@Param("number")int number) {
			
			//更新购物车中商品的购物数量
/**
 * 定义拦截器,用于判断用户是否登录,如果用户已经登录则放行,否则用户未登录则跳转至登录页面
 */
public class LoginFilter extends HandlerInterceptorAdapter {

	
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		 
		//从session中获取用户信息
		User user = (User)request.getSession().getAttribute("session_user");
		
		if(user == null) {
			request.setAttribute("error_message", "您尚未登录,请登录后再进行相关操作!");
			//跳转至登录页面
			request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
		    return false;
		}else {
			return true;
		}
	}

	   
}
/**
 * 
 */
package com.demo.shop.service;

public interface ShopCarServiceI {

	/**
	 * @param session
	 * @param id
	 * @param number
	 * 将商品信息加入至购物车
	 */
	void addArticleToShopCar(HttpSession session, int id, int number);
	}

}
/**
 *
 */
package com.demo.shop.service.impl;

@Service("userService")
@Transactional
public class UserServiceImpl implements UserServiceI {

    @Autowired
    private UserMapper userMapper;

    /* (non-Javadoc)
     * //根据用户输入的账号以及密码获取用户的信息
     */
    @Override
    public User findUserByNameAndPass(User user) {
        // TODO Auto-generated method stub
        User u = userMapper.findUserByNameAndPass(user);
        return u;
    }

    /* (non-Javadoc)
     * //异步校验账号是否存在
     */
    @Override
    public String validLoginName(String loginName) {
        // TODO Auto-generated method stub

     *  //用户注册
     */
    @Override
    public void saveUser(User user, HttpServletRequest request) {
        // TODO Auto-generated method stub
        try {
            user.setCreateDate(new Date());
            user.setDisabled("1");
            userMapper.saveUser(user);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

    }
}
/**
 * 
 */
package com.demo.manage.util.filter;

/**
 * *登录拦截器,如果没有登录则直接访问登录页面
 */
public class ManagerLoginInterceptor extends HandlerInterceptorAdapter {

	/* (non-Javadoc)
	 * @see org.springframework.web.servlet.handler.HandlerInterceptorAdapter#preHandle(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object)
	 */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		
		//从session中获取用户信息
		User user = (User)request.getSession().getAttribute(Constant.SESSION_USER);
		
		if(user == null ) {
			request.setAttribute("tip", "您尚未登录,请登录后再进行相关操作!");
			//跳转至登录页面
			request.getRequestDispatcher("/WEB-INF/jsp/user/login.jsp").forward(request, response);
		    return false;
		}else {
			return true;
		}
	}
    }

    //用户注册
    @RequestMapping(value = "/userRegister")
    public String userRegister(Model model, HttpServletRequest request, User user) {

        try {

            userService.saveUser(user, request);
            model.addAttribute("message", "注册成功!");
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
            model.addAttribute("message", "注册失败!");
        }

        //返回注册页面
        return "register";

    }

}
/**
 * 
 */
package com.demo.manage.action;

@Controller

@Controller
@RequestMapping("/article_manager")
public class ManagerArticleController {
	
	 @Autowired   
	 private ManagerArticleServiceI articleService;
	 
	 @Autowired   
	 private ManagerArticleTypeServiceI articleTypeService;
	
	
	     //展示首页商品信息	
		 @RequestMapping("/getAll.action")
		 public String getAllArticles(Model model,String typeCode,String title,PageModel pageModel) {
			 
			 //根据商品类型以及商品的标题获取商品信息
			 List<Article> articles = articleService.getAllArticles(typeCode,title,pageModel);
			 model.addAttribute("articles", articles);
			 
			 model.addAttribute("pageModel", pageModel);
			 
			 
			 model.addAttribute("title", title);
			 model.addAttribute("typeCode", typeCode);
			 
			 
			 //获取所有的一级商品类型
			 List<ArticleType> articleTypes = articleTypeService.findAllFirstArticleType();
			 model.addAttribute("firstArticleTypes", articleTypes);
			 
			 return "article/list";
			 
		 }
		 
		 //展示商品明细信息	
		 @RequestMapping("/preArticle.action")
		 public String preArticle(Model model,Integer id) {
			 
			 //根据商品的id获取商品信息
			 Article article = articleService.getArticleById(id);
			 
			 model.addAttribute("article", article);
			 
			 return "article/preArticle";
			 
        model.addAttribute("articleType", type);

        return "articleType/view";

    }

    //加载添加商品类型页面
    @RequestMapping("/showAdd.action")
    public String showAdd() {

        return "articleType/view";

    }

    //通过异步请求的方式获取所有一级商品类型
    @ResponseBody
    @RequestMapping(value = "/loadFirstArticleType.action", produces = {"application/json;charset=utf-8"})
    public String loadFirstArticleType() {

        List<ArticleType> types = articleTypeService.findAllFirstArticleType();
        System.out.println("types:" + JSONArray.fromObject(types).toString());
        return JSONArray.fromObject(types).toString();

    }

    //商品类型的添加或者修改操作
    @RequestMapping("/addOrUpdate.action")
    public String addOrUpdate(ArticleType type, String parentCode) {

        if (type.getCode() != null && !type.getCode().equals("")) {
            //进行更新商品类型操作
            articleTypeService.updateArticleType(type);

        } else {
            //进行添加商品类型操作
            articleTypeService.saveArticleType(type, parentCode);
        }

	     // 设置消息的HTML格式的内容
	     msg.setContent("<a href='http://127.0.0.1:8080/"+request.getContextPath()+"/user/active?activeCode="+user.getActive()+"' target='_blank'>恭喜您注册成功,点击该链接进行激活,此邮件无需回复!</a>","text/html;charset=UTF-8");
	     // 设置发送人
		msg.setFrom(new InternetAddress("luochunlong666@126.com"));
	     // 设置接收者
	     // 接收者类型由:TO(收件人)、CC(抄送)、BCC(密送)
		msg.setRecipient(RecipientType.TO,new InternetAddress(user.getEmail()));
    
        // 发送邮件
		Transport.send(msg);
		
	}
	
	
	

	/* (non-Javadoc)
	 * @see com.demo.shop.service.UserServiceI#activeUser(java.lang.String)
	 * //用户信息激活  
	 */
	@Override
	public void activeUser(String activeCode) {
		// TODO Auto-generated method stub
		userMapper.activeUser(activeCode);
	}

	/* (non-Javadoc)
	 * 根据账号获取用户信息
	 */
	@Override
	public String getUserByLoginName(String loginName) {
		// TODO Auto-generated method stub
		User user = userMapper.getUserByLoginName(loginName);
		return user == null ? "not" : "exist";
	}
	
	
    
}
/**
 *

@Service("orderService")
@Transactional
public class OrderServiceImpl implements OrderServiceI {
	
	@Autowired
	private OrderMapper orderMapper;
	
	@Autowired
	private OrderItemMapper orderItemMapper;

	/* (non-Javadoc)
	 * 提交订单
	 * #1_2_216.0#5_1_158.4   == >  1_2_216.0#5_1_158.4
	 */
	@Override
	public Order orderSubmit(String orderInfo) {
		// TODO Auto-generated method stub
		//创建订单对象
		Order order = new Order();
		try {
			String[]  orderInfos = orderInfo.substring(1).split("#");
			
			
			//指定下单时间
			order.setCreateDate(new Date());
			
    public String addOrUpdate(ArticleType type, String parentCode) {

        if (type.getCode() != null && !type.getCode().equals("")) {
            //进行更新商品类型操作
            articleTypeService.updateArticleType(type);

        } else {
            //进行添加商品类型操作
            articleTypeService.saveArticleType(type, parentCode);
        }

        return "redirect:/articleType_manager/getAll.action";

    }

    //删除商品类型
    @RequestMapping("/deleteType.action")
    public String deleteType(@Param("code") String code) {

        String message = articleTypeService.deleteType(code);
        return "redirect:/articleType_manager/getAll.action?message=delete success";

    }
}
/**
 * 
 */
package com.demo.shop.service.impl;

            model.addAttribute("message", URLDecoder.decode(message));
        }

        return "articleType/list";

    }

    //加载修改商品类型页面
    @RequestMapping("/showUpdate.action")
    public String showUpdate(Model model, String code) {

        ArticleType type = articleTypeService.getArticleTypeByCode(code);
        model.addAttribute("articleType", type);

        return "articleType/view";

    }

    //加载添加商品类型页面
    @RequestMapping("/showAdd.action")
    public String showAdd() {

        return "articleType/view";

    }

    //通过异步请求的方式获取所有一级商品类型
    @ResponseBody
    @RequestMapping(value = "/loadFirstArticleType.action", produces = {"application/json;charset=utf-8"})
    public String loadFirstArticleType() {

        List<ArticleType> types = articleTypeService.findAllFirstArticleType();
        System.out.println("types:" + JSONArray.fromObject(types).toString());
        return JSONArray.fromObject(types).toString();

    }

    //商品类型的添加或者修改操作
			     request.setAttribute("tip", "商品添加失败:"+e.getMessage());
			}
			 
			 return "redirect:/article_manager/getAll.action";
			 
		 }
		 
		 //跳转至修改商品信息页面   
		 @RequestMapping("/showUpdate.action")
		 public String showUpdate(Model model,Integer id) {
			 
			 
			  //根据商品id获取商品信息
			  Article article = articleService.getArticleById(id);
			  model.addAttribute("article", article);
			  
			  //获取所有的一级商品类型
			  List<ArticleType> articleTypes = articleTypeService.findAllFirstArticleType();
			  model.addAttribute("types", articleTypes);
			 
			 return "article/updateArticle";
			 
		 }
		 
		 
		 //更新商品信息  
		 @RequestMapping("/updateArticle.action")
		 public String updateArticle(MultipartFile file,String code,Article article,HttpServletRequest request) {
			 
			
			 try {
				
				 InputStream input = file.getInputStream();
				 
				 //获取项目部署路径
				 String realPath =  request.getServletContext().getRealPath("/image/article");
				 
				 //如果上传所指定的目录不存在则创建目录
				 File f = new File(realPath);
				 if(!f.exists()) {
					 f.mkdirs();
				 }
				 
				 //获取当前上传的文件的名字   a.jpg
			     String imageName = file.getOriginalFilename();
			     if(imageName!=null && !imageName.equals("")) {
	 //处理登录请求
	 @RequestMapping("/userLogin")
	 public String userLogin(User user,Model model,HttpSession session) {
		 
		 User u = userService.getUserByNameAndPass(user);
		 if(u == null) {
			 //账号或密码不正确,给用户提示信息,并跳转至登录页面
			 model.addAttribute("tip", "您输入的账号或密码不正确请核实!");
			 
			 return "user/login";
		 }else if("0".equals(u.getDisabled())){
			 model.addAttribute("tip", "您尚未激活,请激活后再进行相关操作!");
			 return "user/login";
		 }else {
			 //跳转至首页,并将用户的信息保存至session中
			 session.setAttribute(Constant.SESSION_USER, u);
			 return "redirect:/article_manager/getAll.action";
			 
		 }
		

	 }
	 
	 //用户退出   
	 @RequestMapping("/logout")
	 public String logout(HttpSession session) {
		 
		 //将用户的信息从session中清除
		 session.removeAttribute(Constant.SESSION_USER);
		
		 return "user/login";
		 
	 }
	 
	 //展示用户注册页面  showRegisterPage
	 @RequestMapping("/showRegisterPage")
	 public String showRegisterPage() {
		 
		
		 return "user/register";
		 
	 }
		List<Shopcar> shopCars = shopCarService.getAllShopCarByUserId(session);
		model.addAttribute("shopCars", shopCars);
		
		//定义总金额
		double totalPrice = 0.0;
		
		//遍历集合  计算购物车中商品的总金额
		for(Shopcar shopcar : shopCars) {
			totalPrice += shopcar.getArticle().getDiscountPrice() * shopcar.getBuynum();
		}
		
		model.addAttribute("totalPrice", totalPrice);
		
		//跳转至展示购物车中商品信息的页面
		return "shopCar";
	}
	
	//更新购物车中商品的信息
		@RequestMapping("/updateShopcar.do")
		public String updateShopcar(HttpSession session,@Param("id")int id,@Param("number")int number) {
			
			//更新购物车中商品的购物数量
			shopCarService.updateShopcar(session,id,number);
			
			//商品加入购物车成功之后,立马展示购物车中的商品信息
			return "redirect:/shopCar/showShopCar.do";
		}
		
		//删除购物车中商品的信息
		@RequestMapping("/deleteShopCar.do")
		public String deleteShopCar(HttpSession session,@Param("id")int id) {
			
			//删除购物车中商品的购物数量
			shopCarService.deleteShopcar(session,id);
			
			//商品加入购物车成功之后,立马展示购物车中的商品信息
			return "redirect:/shopCar/showShopCar.do";
		}

	
}
/**
 * 
 */
package com.demo.shop.controller;
 * 
 */
package com.demo.manage.action;

@Controller
@RequestMapping("/order_manager")
public class ManagerOrderController {
	
	@Autowired
	private ManagerOrderServiceI orderService;
	
	
	     //订单分页查询
		 @RequestMapping("/getAll.action")
		 public String getAll(PageModel pageModel,Model model) {
			 
			 List<Order> orders = orderService.getAll(pageModel);
			 model.addAttribute("orders", orders);
			 return "order/list";
			 
		 }
		 
		 
		 
		 //确认发送订单   
		 @RequestMapping("/checkOrder.action")
		 public String checkOrder(Order order) {
			 orderService.checkOrder(order);
			 
			 return "redirect:/order_manager/getAll.action";
			 
		 }
	
}
/**
 * 
 */
package com.demo.shop.filter;


	/**
	 * @param session
	 * @param id
	 * @param number
	 * 将商品信息加入至购物车
	 */
	void addArticleToShopCar(HttpSession session, int id, int number);

	/**
	 * @param session
	 * @return
	 * 展示购物车中的商品信息
	 */
	List<Shopcar> getAllShopCarByUserId(HttpSession session);

	/**
	 * @param session
	 * @param id
	 * @param number
	 * 更新购物车中商品的购物数量
	 */
	void updateShopcar(HttpSession session, int id, int number);

	/**
	 * @param session
	 * @param id
	 * //删除购物车中商品的购物数量
	 */
	void deleteShopcar(HttpSession session, int id);

	
}
/**
 * 
 */
package com.demo.manage.service;

			String[]  orderInfos = orderInfo.substring(1).split("#");
			
			
			//指定下单时间
			order.setCreateDate(new Date());
			
			//获取session
			HttpSession session = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getSession();
			
			//从session中获取用户信息
			int userId = ((User)session.getAttribute("session_user")).getId();
			
			//指定订单属于哪一个用户
			order.setUserId(userId);
			
			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
			//设置订单编号
			order.setOrderCode("PO-"+sdf.format(new Date())+userId);
			
			
			//定义订单总金额
			double totalPrice = 0.0;
			
			//创建集合用于封装订单详情信息
			List<OrderItem> items = new ArrayList<>();
			for(String  info: orderInfos) {
				String[] infos =info.split("_");
				
				//获取商品id
				int articleId = Integer.valueOf(infos[0]);
				//购买数量
				int buyNum = Integer.valueOf(infos[1]);
				
				OrderItem item = new OrderItem();
				item.setArticleId(articleId);
				item.setOrderNum(buyNum);
				
				//订单详细记录放在集合中
				items.add(item);
				
				totalPrice += Double.valueOf(infos[2]);
			}
			
			//指定订单的总金额
			order.setAmount(totalPrice);
	public void addArticleToShopCar(HttpSession session, int id, int number) {
		// TODO Auto-generated method stub
		
		//从session中获取用户信息
		User user = (User)session.getAttribute("session_user");
		
		//获取用户的id
		int userId = user.getId();
		//根据用户id以及商品id从购物车表中获取相关信息
		Shopcar shopCar = shopcarMapper.getShopCarByUserIdAndArticleId(userId,id);
	
		if(shopCar!=null) {
			//该商品已经存在于当前用户的购车中,则进行商品数量的叠加
			shopcarMapper.updateShopCar(userId,id,number);
		}else {
			//该商品不存在与当前用户的购物车中
			shopcarMapper.addShopCar(userId,id,number);
		}
		
	}

	/* (non-Javadoc)
	 * @see com.demo.shop.service.ShopCarServiceI#getAllShopCarByUserId(javax.servlet.http.HttpSession)
	 */
	@Override
	public List<Shopcar> getAllShopCarByUserId(HttpSession session) {
		// TODO Auto-generated method stub
		//从session中获取用户信息
		User user = (User)session.getAttribute("session_user");
		
		//获取用户的id
		int userId = user.getId();
		
		//获取用户的购物详情信息
		List<Shopcar> shopcars = shopcarMapper.getAllShopCarByUserId(userId);
		return shopcars;
	}

	/* (non-Javadoc)
	 * //更新购物车中商品的购物数量
	 */
	@Override
		
		/*******************************邮件发送*********************************/
		//1、创建	Properties对象用于封装邮件服务器相关信息
		Properties props = new Properties();
		// 服务器地址
		props.setProperty("mail.smtp.host", "smtp.126.com");
		// 服务器需要鉴权
		props.setProperty("mail.smtp.auth", "true");
		
		
		//2、创建Authenticator的实例,实现账户、密码的鉴权。
        Authenticator auth = new Authenticator(){
            protected PasswordAuthentication getPasswordAuthentication()
            {
                return new PasswordAuthentication("luochunlong666@126.com", "luochunlong123");
            }
        };
        
        //3).获得Session实例
        Session mailSession = Session.getInstance(props, auth);
        
        //4).创建SMTPMessage,要提供session
        SMTPMessage msg = new SMTPMessage(mailSession);
        
       // 5).设置Message的内容,包括发送者、接收者、消息体
	     // 设置邮件标题,没有标题的邮件几乎都会被认为是垃圾邮件被系统退回。
	     msg.setSubject("用户注册激活邮件,请勿回复,按照指引激活");
	     // 设置消息的HTML格式的内容
	     msg.setContent("<a href='http://127.0.0.1:8080/"+request.getContextPath()+"/user/active?activeCode="+user.getActive()+"' target='_blank'>恭喜您注册成功,点击该链接进行激活,此邮件无需回复!</a>","text/html;charset=UTF-8");
	     // 设置发送人
		msg.setFrom(new InternetAddress("luochunlong666@126.com"));
	     // 设置接收者
	     // 接收者类型由:TO(收件人)、CC(抄送)、BCC(密送)
		msg.setRecipient(RecipientType.TO,new InternetAddress(user.getEmail()));
    
        // 发送邮件
		Transport.send(msg);
		
	}
	
	
	

	/* (non-Javadoc)
	 * @see com.demo.shop.service.UserServiceI#activeUser(java.lang.String)
	 * //用户信息激活  
	 */
	@Override
 *
 */
package com.demo.shop.service.impl;

@Service("userService")
@Transactional
public class UserServiceImpl implements UserServiceI {

    @Autowired
    private UserMapper userMapper;

    /* (non-Javadoc)
     * //根据用户输入的账号以及密码获取用户的信息
     */
    @Override
    public User findUserByNameAndPass(User user) {
        // TODO Auto-generated method stub
        User u = userMapper.findUserByNameAndPass(user);
        return u;
    }

    /* (non-Javadoc)
     * //异步校验账号是否存在
     */
    @Override
    public String validLoginName(String loginName) {
        // TODO Auto-generated method stub

        User user = userMapper.validLoginName(loginName);
        if (user != null) {
            return "您输入的账号已经存在!";

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值