Java项目:ssh网上便利店系统

作者主页:夜未央5788

 简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

项目介绍

该项目分为前后台。非maven项目;

前台主要功能包括:
会员登录、注册、商品展示、加入购物车、会员中心、我的订单、我的地址等;

后台主要功能包括:

用户管理、商品分类管理、商品管理、订单管理、商家管理、小区管理;

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.是否Maven项目: 否;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目 

6.数据库:MySql 5.7版本;

技术栈

1. 后端:Spring Structs Hibernate

2. 前端:JSP+bootstrap+jQuery

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置
3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;
4. 运行项目,前台运行地址:http://localhost:8080/eastshop 登录

后台运行地址:http://localhost:8080/eastshop/admin/login.jsp

运行截图

 

 

 

 

 

 

 

 

 

 

相关代码 

AddressAction

package com.eastshop.address.action;

import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.eastshop.address.service.AddressService;
import com.eastshop.address.vo.Address;
import com.eastshop.seller.service.RegionService;
import com.eastshop.seller.service.SellerService;
import com.eastshop.seller.vo.Region;
import com.eastshop.user.vo.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

/**
 * 收货地址的Action类
 * 
 * @author admin
 * 
 */
public class AddressAction extends ActionSupport implements
		ModelDriven<Address> {
	// 模型驱动管理的对象
	private Address address = new Address();

	public Address getModel() {
		return address;
	}

	// 注入AddressService
	private AddressService addressService;

	public void setAddressService(AddressService addressService) {
		this.addressService = addressService;
	}

	// 注入RegionServie
	private RegionService regionService;

	public void setRegionService(RegionService regionService) {
		this.regionService = regionService;
	}
	
	// 是否跳转页面
	private char isForward; //'0':不转发 ,'1':转发
	
	public void setIsForward(char isForward) {
		this.isForward = isForward;
	}

	// 查询我的收货地址
	public String findByUid() {
		// 从session中取出登录的用户
		User existUser = (User) ServletActionContext.getRequest().getSession()
				.getAttribute("existUser");
		// 根据用户id查找收货地址
		List<Address> addrList = addressService.findByUid(existUser.getUid());
		// 结果存入值栈
		ActionContext.getContext().getValueStack().set("addrList", addrList);
		// 查找商家服务的小区
		List<Region> regions = regionService.findRegion();
		// 结果存入值栈
		ActionContext.getContext().getValueStack().set("regions", regions);
		return "findByUid";
	}
	
	// 跳转到添加收货地址的页面
	public String insertAddr(){
		// 查找商家服务的小区
		List<Region> regions = regionService.findRegion();
		// 结果存入值栈
		ActionContext.getContext().getValueStack().set("regions", regions);
		return "insertAddr";
	}
	
	// 保存收货地址
	public String insertAddrSubmit() {
		// 从session中取出登录的用户
		User existUser = (User) ServletActionContext.getRequest().getSession()
				.getAttribute("existUser");
		// 设置收货地址所属的用户
		address.setUser(existUser);
		addressService.save(address);
		return isForward == '0' ? NONE : "insertAddrSubmit";
	}

	// 跳转到修改收货地址的页面
	public String editAddr() {
		// 根据收货地址id查找收货地址
		address = addressService.findByAid(address.getAid());
		// 结果存入值栈
		ActionContext.getContext().getValueStack().set("address", address);
		// 查找商家服务的小区
		List<Region> regions = regionService.findRegion();
		// 结果存入值栈
		ActionContext.getContext().getValueStack().set("regions", regions);
		return "editAddr";
	}

	// 提交修改的收货的地址
	public String editAddrSubmit() {
		// 从session中取出登录的用户
		User existUser = (User) ServletActionContext.getRequest().getSession()
				.getAttribute("existUser");
		// 设置关联的用户
		address.setUser(existUser);
		// 更新收货地址
		addressService.update(address);
		return NONE;
	}
	
	// 删除收货地址
	public String deleteAddr(){
		// 根据id查找收货地址
		address = addressService.findByAid(address.getAid());
		// 删除收货地址
		addressService.delete(address);
		return "deleteAddr";
	}
}

CartAction

package com.eastshop.cart.action;

import org.apache.struts2.ServletActionContext;

import com.eastshop.cart.vo.Cart;
import com.eastshop.cart.vo.CartItem;
import com.eastshop.product.service.ProductService;
import com.eastshop.product.vo.Product;
import com.opensymphony.xwork2.ActionSupport;

/**
 * 购物车Action
 * 
 * @author admin
 * 
 */
public class CartAction extends ActionSupport {
	// 接收pid
	private Integer pid;
	// 接收数量count
	private Integer count;
	// 注入商品的Service
	private ProductService productService;

	public void setProductService(ProductService productService) {
		this.productService = productService;
	}

	public void setPid(Integer pid) {
		this.pid = pid;
	}

	public void setCount(Integer count) {
		this.count = count;
	}

	// 将购物项添加到购物车:执行的方法
	public String addCart() {
		// 封装一个CartItem对象.
		CartItem cartItem = new CartItem();
		// 设置数量:
		cartItem.setCount(count);
		// 根据pid进行查询商品:
		Product product = productService.findByPid(pid);
		// 设置商品:
		cartItem.setProduct(product);
		// 将购物项添加到购物车.
		// 购物车应该存在session中.
		Cart cart = getCart();
		cart.addCart(cartItem);

		return "addCart";
	}

	// 清空购物车的执行的方法:
	public String clearCart(){
		// 获得购物车对象.
		Cart cart = getCart();
		// 调用购物车中清空方法.
		cart.clearCart();
		return "clearCart";
	}
	
	// 从购物车中移除购物项的方法:
	public String removeCart(){
		// 获得购物车对象
		Cart cart = getCart();
		// 调用购物车中移除的方法:
		cart.removeCart(pid);
		// 返回页面:
		return "removeCart";
	}
	
	// 我的购物车:执行的方法
	public String myCart(){
		return "myCart";
	}
	
	/**
	 * 获得购物车的方法:从session中获得购物车.
	 * @return
	 */
	private Cart getCart() {
		Cart cart = (Cart) ServletActionContext.getRequest().getSession()
				.getAttribute("cart");
		if (cart == null) {
			cart = new Cart();
			ServletActionContext.getRequest().getSession()
					.setAttribute("cart", cart);
		}
		return cart;
	}
}

OrderAction

package com.eastshop.order.action;

import java.io.IOException;
import java.util.Date;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.eastshop.address.service.AddressService;
import com.eastshop.address.vo.Address;
import com.eastshop.cart.vo.Cart;
import com.eastshop.cart.vo.CartItem;
import com.eastshop.order.service.OrderService;
import com.eastshop.order.vo.Order;
import com.eastshop.order.vo.Orderitem;
import com.eastshop.user.vo.User;
import com.eastshop.utils.PageBean;
import com.eastshop.utils.PaymentUtil;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

/**
 * 订单管理的Action类
 * 
 * @author admin
 */
public class OrderAction extends ActionSupport implements ModelDriven<Order> {
	// 模型驱动使用的对象
	private Order order = new Order();

	public Order getModel() {
		return order;
	}

	// 注入OrderService
	private OrderService orderService;

	public void setOrderService(OrderService orderService) {
		this.orderService = orderService;
	}

	// 注入AddressService
	private AddressService addressService;

	public void setAddressService(AddressService addressService) {
		this.addressService = addressService;
	}

	// 接收page
	private int page;

	public void setPage(int page) {
		this.page = page;
	}
	
	// 接收支付通道的编码
	private String pd_FrpId;
	
	public void setPd_FrpId(String pd_FrpId) {
		this.pd_FrpId = pd_FrpId;
	}

	// 接收收款成功后的响应数据
	private String r6_Order;
	private String r3_Amt;
	
	public String getR6_Order() {
		return r6_Order;
	}

	public void setR6_Order(String r6_Order) {
		this.r6_Order = r6_Order;
	}

	public String getR3_Amt() {
		return r3_Amt;
	}

	public void setR3_Amt(String r3_Amt) {
		this.r3_Amt = r3_Amt;
	}

	// 保存订单的方法
	public String saveOrder() throws IOException {
		// 1.从session中取出购物车
		Cart cart = (Cart) ServletActionContext.getRequest().getSession()
				.getAttribute("cart");
		if (cart == null || cart.getCartItems().size() == 0) {
			this.addActionMessage("亲,您还没有购物!");
			return "msg";
		}
		// 2.从session中取出登录的用户
		User user = (User) ServletActionContext.getRequest().getSession()
				.getAttribute("existUser");
		if (user == null) {
			this.addActionMessage("亲,您还没有登录!");
			return "msg";
		}
		// 3.补全订单数据
		order.setTotal(cart.getTotal());
		order.setOrdertime(new Date());
		order.setState(0); // 0:未付款
		order.setUser(user);
		// 4.补全订单的订单项
		for (CartItem cartItem : cart.getCartItems()) {
			// 订单项的信息从购物项获得
			Orderitem orderitem = new Orderitem();
			orderitem.setSubtotal(cartItem.getSubtotal());
			orderitem.setCount(cartItem.getCount());
			orderitem.setOrder(order);
			orderitem.setProduct(cartItem.getProduct());
			order.getOrderitems().add(orderitem);
		}
		// 5.保存订单
		Integer oid = orderService.save(order);
		ActionContext.getContext().getValueStack().set("oid", oid);
		// 6.清空购物车
		cart.clearCart();
		// 7.转向查询订单的页面
		return "saveOrder";
	}

	// 分页查询我的订单的方法
	public String findByUidWithPage() {
		User existUser = (User) ServletActionContext.getRequest().getSession()
				.getAttribute("existUser");
		// 根据用户的id分页查询订单
		PageBean<Order> pageBean = orderService.findByUidWithPage(page,
				existUser.getUid());
		// 将查询结果存入值栈
		ActionContext.getContext().getValueStack().set("pageBean", pageBean);
		return "findByUidWithPage";
	}

	// 在线支付的方法
	public String payOrder() throws IOException {
		// 修改订单的信息
		Order currOrder = orderService.findByOid(order.getOid());
		currOrder.setName(order.getName());
		currOrder.setPhone(order.getPhone());
		currOrder.setAddr(order.getAddr());
		orderService.update(currOrder);
		
		// 为订单付款
		String p0_Cmd = "Buy"; // 业务类型
		String p1_MerId = "10001126856"; // 商户编号
		String p2_Order = order.getOid().toString(); // 商户订单号
		String p3_Amt = "0.01"; // 支付金额
		String p4_Cur = "CNY"; // 交易币种
		String p5_Pid = ""; // 商品名称
		String p6_Pcat = ""; // 商品的种类
		String p7_Pdesc = ""; // 商品的描述
		String p8_Url = "http://localhost:8080/eastshop/order_callBack.action";
		String p9_SAF = ""; // 送货地址
		String pa_MP = ""; // 商户扩展信息
		String pd_FrpId = this.pd_FrpId; //支付通道编码
		String pr_NeedResponse = "1"; // 应答机制
		String keyValue = "69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl";
		String hmac = PaymentUtil.buildHmac(p0_Cmd, p1_MerId, p2_Order, p3_Amt, p4_Cur, p5_Pid, p6_Pcat, p7_Pdesc, p8_Url, p9_SAF, pa_MP, pd_FrpId, pr_NeedResponse, keyValue);
		
		// 向易宝出发
		StringBuffer sb = new StringBuffer("https://www.yeepay.com/app-merchant-proxy/node?");
		sb.append("p0_Cmd=").append(p0_Cmd).append("&");
		sb.append("p1_MerId=").append(p1_MerId).append("&");
		sb.append("p2_Order=").append(p2_Order).append("&");
		sb.append("p3_Amt=").append(p3_Amt).append("&");
		sb.append("p4_Cur=").append(p4_Cur).append("&");
		sb.append("p5_Pid=").append(p5_Pid).append("&");
		sb.append("p6_Pcat=").append(p6_Pcat).append("&");
		sb.append("p7_Pdesc=").append(p7_Pdesc).append("&");
		sb.append("p8_Url=").append(p8_Url).append("&");
		sb.append("p9_SAF=").append(p9_SAF).append("&");
		sb.append("pa_MP=").append(pa_MP).append("&");
		sb.append("pd_FrpId=").append(pd_FrpId).append("&");
		sb.append("pr_NeedResponse=").append(pr_NeedResponse).append("&");
		sb.append("hmac=").append(hmac);
		
		// 重定向到易宝
		ServletActionContext.getResponse().sendRedirect(sb.toString());
		return NONE;
	}

	// 付款成功后的转向
	public String callBack(){
		// 修改订单状态:修改状态为已经付款
		Order currOrder = orderService.findByOid(Integer.valueOf(r6_Order));
		currOrder.setState(1);
		orderService.update(currOrder);
		// 在页面显示付款成功信息
		this.addActionMessage("订单付款成功: 订单编号:"+r6_Order+" 付款的金额:"+r3_Amt);
		return "msg";
	}
	
	// 扫码支付
	public String payOrderByCode() {
		// 修改订单的信息
		Order currOrder = orderService.findByOid(order.getOid());
		currOrder.setName(order.getName());
		currOrder.setPhone(order.getPhone());
		currOrder.setAddr(order.getAddr());
		currOrder.setState(1); //1:已付款
		// 更新订单的信息
		orderService.update(currOrder);
		this.addActionMessage("支付成功!");
		return "msg";
	}
	
	// 根据订单id查询订单
	public String findByOid() {
		// 根据订单id查询订单
		order = orderService.findByOid(order.getOid());
		// 从session中取出登录的用户
		User user = (User) ServletActionContext.getRequest().getSession()
				.getAttribute("existUser");
		// 查询要显示的收货地址
		List<Address> addrList = addressService.findByUid(user.getUid());
		// 将结果存入值栈
		ActionContext.getContext().getValueStack().set("addrList", addrList);
		return "findByOid";
	}
	
	// 修改订单的状态
	public String updateState(){
		// 根据oid查找订单
		order = orderService.findByOid(order.getOid());
		// 设置订单的状态
		order.setState(1); //1:已付款
		// 更新订单
		orderService.update(order);
		return NONE;
	}
	
	// 修改订单的状态为"订单结束"
	public String updateStateFor3(){
		// 根据oid查找订单
		order = orderService.findByOid(order.getOid());
		// 设置订单的状态
		order.setState(3);
		// 更新订单
		orderService.update(order);
		return "updateStateFor3";
	}
	
	// 获取订单的状态
	public String getOrderState() throws IOException{
		// 根据oid查找订单
		order = orderService.findByOid(order.getOid());
		if(order.getState() == 1){
			ServletActionContext.getResponse().getWriter().print("1");
		}
		return NONE;
	}
}

如果也想学习本系统,下面领取。关注并回复:010ssh

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜未央5788

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值