基于B2C的网上拍卖系统主要用于帮助人们应用互联网方便快捷买到自己所中意的商品,并参与到秒杀与竞拍当中。
主要功能包括:
1.前台模块
(1)普通用户登录/注册。
(2)分类查看商品(普通商品与促销商品)(3)查看商品详细信息
(4)查看秒杀商品(5)查看竞拍商品
(6)将商品加入购物车(7)购买,结算功能 (8)留言
2.后台模块
(1)修改密码
(2)商品管理:
– 编辑/删除
– 设置/取消促销
(3)秒杀商品:设置/取消秒杀
(4)竞拍商品:设置/取消竞拍
(5)订单管理:查看订单
(5)留言管理:查看/删除留言项目访问路径:
前台:http://localhost:8080/sale
后台:http://localhost:8080/sale/user/adminlogin
前端
前端框架 : 数据可视化框架 : echarts后端IOC容器 : SpringMVC框架 : SpringMVCORM框架 : 缓存技术:数据库:Mysql日志框架 : Log4j安全框架 : 代码已经上传github,
下载地址:https://github.com/21503882
用户注册
用户登录
发布商品
商品管理
发布拍卖
个人拍卖管理
参与拍卖管理
竞拍
管理员登录
会员管理
会员等级管理
审核 新商品
商品管理
类型管理
拍卖管理
公告
管理员表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 管理员id username | VARCHAR(255) | | 账号 password | VARCHAR(255) | | 密码
买家表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 买家id mingzi | VARCHAR(255) | | 名字 username | VARCHAR(255) | | 账号 password | VARCHAR(255) | | 密码 yue | VARCHAR(255) | | 余额
卖家表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 卖家id mingzi | VARCHAR(255) | | 名字 username | VARCHAR(255) | | 账号 password | VARCHAR(255) | | 密码 nianling | VARCHAR(255) | | 年龄 xingbie | VARCHAR(255) | | 性别 yue | VARCHAR(255) | | 余额
商品表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 商品id mingcheng | VARCHAR(255) | | 名称 jiage | VARCHAR(255) | | 价格 chushouzhe | VARCHAR(255) | | 卖家名字 chushouzheid | VARCHAR(255) | | 卖家id shuoming | VARCHAR(255) | | 说明
sql建表语句
SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- ---------------------------- -- Table structure for ggwangshangpaimai -- ---------------------------- DROP TABLE IF EXISTS `t_admin`; CREATE TABLE `t_admin` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '管理员id',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='管理员'; -- ---------------------------- DROP TABLE IF EXISTS `t_maijia`; CREATE TABLE `t_maijia` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '买家id',`mingzi` VARCHAR(255) DEFAULT NULL COMMENT '名字',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',`yue` VARCHAR(255) DEFAULT NULL COMMENT '余额',PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='买家'; -- ---------------------------- DROP TABLE IF EXISTS `t_chushouzhe`; CREATE TABLE `t_chushouzhe` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '卖家id',`mingzi` VARCHAR(255) DEFAULT NULL COMMENT '名字',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',`nianling` VARCHAR(255) DEFAULT NULL COMMENT '年龄',`xingbie` VARCHAR(255) DEFAULT NULL COMMENT '性别',`yue` VARCHAR(255) DEFAULT NULL COMMENT '余额',PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='卖家'; -- ---------------------------- DROP TABLE IF EXISTS `t_shangping`; CREATE TABLE `t_shangping` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '商品id',`mingcheng` VARCHAR(255) DEFAULT NULL COMMENT '名称',`jiage` VARCHAR(255) DEFAULT NULL COMMENT '价格',`chushouzhe` VARCHAR(255) DEFAULT NULL COMMENT '卖家名字',`chushouzheid` INT(11) DEFAULT NULL COMMENT '卖家id',`shuoming` VARCHAR(5000) DEFAULT NULL COMMENT '说明',PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='商品';
商品处理控制层
package org.mypro.front;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import javax.jms.Session;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.mypro.dao.ShangpingMapper;
import org.mypro.entity.Shangping;
import org.mypro.entity.ShangpingExample;
import org.mypro.entity.Chushouzhe;
import org.mypro.entity.ChushouzheExample;
import org.mypro.dao.ChushouzheMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
@Controller
@RequestMapping(value = "/")
public class ShangpingController {
private static final Log logger = LogFactory.getLog(ShangpingController.class);
@Autowired
private ShangpingMapper shangpingdao; // 定义chushouzhedao参数
@Autowired
private ChushouzheMapper chushouzhedao;
//定义方法tianjiashangping,响应页面tianjiashangping请求
@RequestMapping(value = "tianjiashangping")
public String tianjiashangping(HttpServletRequest request, HttpServletResponse response,HttpSession session,String backurl) {
logger.debug("ShangpingController.tianjiashangping ......");
// 定义 example1为 ChushouzheExample的实例
ChushouzheExample example1 = new ChushouzheExample();
List chushouzheall = chushouzhedao.selectByExample(example1);
request.setAttribute("chushouzheall", chushouzheall);
if(backurl != null && backurl.indexOf("tianjiashangping.action") == -1){
return "forward:/" + backurl; }
return "tianjiashangping";
}
@RequestMapping(value = "tianjiashangpingact")
public String tianjiashangpingact(HttpServletRequest request,HttpSession session, HttpServletResponse response,Shangping shangping,String backurl) throws IOException {
logger.debug("ShangpingController.tianjiashangpingact ......");
shangpingdao.insert(shangping);
request.setAttribute("message", "添加商品成功");
if(backurl != null && backurl.indexOf("tianjiashangpingact.action") == -1){
return "forward:/" + backurl; }
//返回tianjiashangping方法
return "forward:/tianjiashangping.action";
}
//定义shangpingguanli方法响应页面请求
@RequestMapping(value = "shangpingguanli")
public String shangpingguanli(HttpServletRequest request,HttpSession session, HttpServletResponse response,String backurl) {
logger.debug("ShangpingController.shangpingguanli ......");
ShangpingExample example = new ShangpingExample();
List shangpingall = shangpingdao.selectByExample(example);
request.setAttribute("shangpingall", shangpingall);
if(backurl != null && backurl.indexOf("shangpingguanli.action") == -1){
return "forward:/" + backurl; }
return "shangpingguanli";
}
// 定义 shangpingchakan方法
@RequestMapping(value = "shangpingchakan")
public String shangpingchakan(HttpServletRequest request,HttpSession session, HttpServletResponse response,String backurl) {
logger.debug("ShangpingController.shangpingchakan ......");
ShangpingExample example = new ShangpingExample();
List shangpingall = shangpingdao.selectByExample(example);
request.setAttribute("shangpingall", shangpingall);
if(backurl != null && backurl.indexOf("shangpingchakan.action") == -1){
return "forward:/" + backurl; }
return "shangpingchakan";
}
// 定义 xiugaishangping方法
@RequestMapping(value = "xiugaishangping")
public String xiugaishangping(HttpServletRequest request, HttpServletResponse response,HttpSession session,int id,String backurl){
logger.debug("ShangpingController.xiugaishangping ......");
Shangping shangping = shangpingdao.selectByPrimaryKey(id);
// 定义 example1为 ChushouzheExample的实例
ChushouzheExample example1 = new ChushouzheExample();
List chushouzheall = chushouzhedao.selectByExample(example1);
request.setAttribute("chushouzheall", chushouzheall);
request.setAttribute("shangping", shangping);
if(backurl != null && backurl.indexOf("xiugaishangping.action") == -1){
return "forward:/" + backurl; }
return "xiugaishangping";
}
// 定义xiugaishangpingact处理商品修改
@RequestMapping(value = "xiugaishangpingact")
public String xiugaishangpingact(HttpServletRequest request, HttpServletResponse response,Shangping shangping,HttpSession session,String backurl) throws IOException {
logger.debug("ShangpingController.xiugaishangpingact ......");
shangpingdao.updateByPrimaryKeySelective(shangping);
request.setAttribute("message", "修改商品信息成功");
if(backurl != null && backurl.indexOf("xiugaishangpingact.action") == -1){
return "forward:/" + backurl; }
return "forward:/shangpingguanli.action";
}
// 定义shanchushangping,处理删除商品
@RequestMapping(value = "shanchushangping")
public String shanchushangping(HttpServletRequest request, HttpServletResponse response,HttpSession session,int id,String backurl){
logger.debug("ShangpingController.shanchushangping ......");
shangpingdao.deleteByPrimaryKey(id);
request.setAttribute("message", "删除商品成功");
if(backurl != null && backurl.indexOf("shanchushangping.action") == -1){
return "forward:/" + backurl; }
return "forward:/shangpingguanli.action";
}
// 定义sousuoshangping方法,处理搜索操作
@RequestMapping(value = "sousuoshangping")
public String sousuoshangping(HttpServletRequest request, HttpServletResponse response,HttpSession session,String search,String backurl) {logger.
debug("ShangpingController.sousuoshangping ......");ShangpingExample example
= new ShangpingExample();ShangpingExample.
Criteria criteria = example.createCriteria();
if(search != null){criteria.
andMingchengLike("%" + search + "%");
}
List shangpingall = shangpingdao.selectByExample(example);request.
setAttribute("shangpingall", shangpingall);
if(backurl != null && backurl.indexOf("sousuoshangping.action") == -1){
return "forward:/" + backurl; }
return "sousuoshangping";
}
// 定义[email protected]
(value = "shangpingxiangqing")
public String shangpingxiangqing(HttpServletRequest request,HttpSession session, HttpServletResponse response,int id,String backurl) {logger.
debug("ShangpingController.shangpingxiangqing ......");Shangping shangping
= shangpingdao.selectByPrimaryKey(id);request.
setAttribute("shangping", shangping);
if(backurl != null && backurl.indexOf("shangpingxiangqing.action") == -1){
return "forward:/" + backurl; }
return "shangpingxiangqing";
}
// 上传文件图片等
public String uploadUtile(MultipartFile file, HttpServletRequest request) throws IOException {
// 根据当前时间生成时间字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS");
String res = sdf.format(new Date());
// uploads文件夹位置
String rootPath = request.getSession().getServletContext().getRealPath("resource/uploads/");
// 原始名称
String originalFileName = file.getOriginalFilename();
// 新文件名
String newFileName = "sliver" + res + originalFileName.substring(originalFileName.lastIndexOf("."));
// 创建年月文件夹
Calendar date = Calendar.getInstance();
File dateDirs = new File(date.get(Calendar.YEAR) + File.separator + (date.get(Calendar.MONTH)+1));
// 新文件
File newFile = new File(rootPath + File.separator + dateDirs + File.separator + newFileName);
// 判断目标文件所在目录是否存在
if( !newFile.getParentFile().exists()) {
// 如果目标文件所在的目录不存在,则创建父目录newFile.
getParentFile().mkdirs();
}
System.out.println(newFile);
// 将内存中的数据写入磁盘file.
transferTo(newFile);
// 完整的url
代码已经上传github,下载地址:https://github.com/21503882
String fileUrl = date.get(Calendar.YEAR) + "/" + (date.get(Calendar.MONTH)+1) + "/" + newFileName; return fileUrl; }}