基于javaweb+mysql的ssm在线农产品商城(java+ssm+jsp+bootstrap+jquery+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM在线农产品商城(java+ssm+jsp+bootstrap+jquery+mysql)
项目介绍
本项目分为前后台,且有普通用户与管理员两种角色。 用户角色包含以下功能: 用户登录,查看首页,按分类查看商品,查看新闻资讯,查看关于我们,查看商品详情,加入购物车,查看我的订单,提交订单,添加收获地址,支付订单等功能。 管理员角色包含以下功能: 管理员登录,会员管理,资讯管理,类别管理,商品管理,商品库存管理,订单管理,售后管理,留言管理,顾客活跃度管理,营业额统计查看,销售量查看等功能。
环境需要
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.数据库:MySql 5.7版本; 6.是否Maven项目:否;
技术栈
- 后端:Spring+SpringMVC+Mybatis 2. 前端:JSP+bootstrap+jQuery
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/ssm_zxncpshop 登录
break;
}
}
return i;
}
//销量
public List<HashMap> saleNum(String sql) {
CommDAO dao = new CommDAO();
List<HashMap> list = dao.select(sql);
return list;
}
//库存
public static int getInventory(int id) {
int num = 0;
int intotal = 0;
int outtotal = 0;
CommDAO dao = new CommDAO();
List<HashMap> inlist = dao.select("select * from inventory where type='in' and productid='" + id + "'");
List<HashMap> outlist = dao.select("select * from inventory where type='out' and productid='" + id + "'");
for (HashMap inmap : inlist) {
intotal += Integer.parseInt(inmap.get("num").toString());
}
for (HashMap outmap : outlist) {
outtotal += Integer.parseInt(outmap.get("num").toString());
}
if (intotal >= outtotal) {
num = intotal - outtotal;
}
return num;
}
/**
* 比较时间大小
*/
public static String compare_datezq(String DATE1, String DATE2) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() > dt2.getTime()) {
return "big";
} else if (dt1.getTime() < dt2.getTime()) {
return "small";
} else {
request.setAttribute("pageInfo",pageInfo);
return "admin/newslist";
}
//添加活动
@RequestMapping("/admin/newsAdd")
public String newsAdd(News news,HttpServletRequest request){
newsDAO.add(news);
return "redirect:newsList.do";
}
//后台查询活动
@RequestMapping("/admin/showNews")
public String shownews(int id,HttpServletRequest request){
News news = newsDAO.findById(id);
request.setAttribute("news", news);
saveobject.getCart(request);
saveobject.getCategoryObject(request);
return "admin/newsedit";
}
//前台查询活动
@RequestMapping("newsShow")
public String newsShow(int id,HttpServletRequest request){
News news = newsDAO.findById(id);
request.setAttribute("news", news);
HashMap map = new HashMap();
map.put("goodstype", "购买商品");
saveobject.hotSales("",request);
saveobject.getCart(request);
saveobject.getCategoryObject(request);
List<Product> zphlist = saveobject.hotSales("",request);
request.setAttribute("zphlist", zphlist);
return "newsx";
}
//编辑活动
@RequestMapping("/admin/newsEdit")
public String newsEdit(News news,HttpServletRequest request){
newsDAO.update(news);
request.setAttribute("news", news);
return "redirect:newsList.do";
}
//删除活动
@RequestMapping("admin/newsDel")
public String newsDel(int id, HttpServletRequest request,HttpServletResponse response){
newsDAO.delete(id);
return "redirect:newsList.do";
//显示商品列表页
@RequestMapping("productLb")
public String productLb(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,HttpServletRequest request){
String fid = request.getParameter("fid");
String sid = request.getParameter("sid");
String ph = request.getParameter("ph");
String saver = request.getParameter("saver");
//显示商品列表
HashMap map = new HashMap();
map.put("fid", fid);
map.put("sid", sid);
map.put("issj", "yes");
map.put("ph", ph);
map.put("saver", saver);
List<Product> nlist = productDAO.selectAll(map);
PageHelper.startPage(pageNum,10);
List<Product> list = productDAO.selectAll(map);
PageInfo<Product> pageInfo = new PageInfo<Product>(list);
request.setAttribute("pageInfo", pageInfo);
request.setAttribute("nlist", nlist);
request.setAttribute("sid", sid);
request.setAttribute("fid", fid);
request.setAttribute("saver", saver);
String categroystr = "";
if(sid!=null && !sid.equals("")){
Category scategory = categoryDAO.findById(Integer.parseInt(sid));
categroystr=scategory.getName();
request.setAttribute("categroystr", categroystr);
}
if(fid!=null && !fid.equals("")){
Category fcategory = categoryDAO.findById(Integer.parseInt(fid));
categroystr=fcategory.getName();
request.setAttribute("categroystr", categroystr);
}
saveobject.getCart(request);
saveobject.getCategoryObject(request);
return "productlb";
}
@RequestMapping("shopproductLb")
public String shopproductLb(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,HttpServletRequest request){
@Controller
public class ApplyController extends BaseController {
@Resource
ApplyDAO applyDAO;
@Resource
UserDAO userDAO;
//后台查询入驻申请列表
@RequestMapping("admin/applyList")
public String applyList(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,HttpServletRequest request) {
String key = request.getParameter("key");
HashMap map = new HashMap();
map.put("key", key);
PageHelper.startPage(pageNum, 10);
List<Apply> list = applyDAO.selectAll(map);
PageInfo<Apply> pageInfo = new PageInfo<Apply>(list);
request.setAttribute("key",key);
request.setAttribute("pageInfo",pageInfo);
return "admin/applylist";
}
//商家申请列表
@RequestMapping("admin/applyLb")
public String applyLb(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,HttpServletRequest request) {
User admin = (User)request.getSession().getAttribute("admin");
User user = userDAO.findById(admin.getId());
String key = request.getParameter("key");
HashMap map = new HashMap();
map.put("memberid", user.getId());
PageHelper.startPage(pageNum, 10);
List<Apply> list = applyDAO.selectAll(map);
PageInfo<Apply> pageInfo = new PageInfo<Apply>(list);
request.setAttribute("key",key);
request.setAttribute("pageInfo",pageInfo);
return "admin/applylb";
for (HashMap permap : new CommDAO().select("select * from " + tablename + " where " + where + " order by id desc")) {
String check = "";
if (dxii == 0) check = "checked=checked";
String optionstr = "";
for (String str : zdname.split(";")) {
String zdstr = str.split("~")[0];
String zdnamestr = str.split("~")[1].equals("无名") ? "" : (str.split("~")[1] + ":");
optionstr += zdnamestr + permap.get(zdstr) + " - ";
}
if (optionstr.length() > 0) optionstr = optionstr.substring(0, optionstr.length() - 3);
radio += "<label><input type='radio' name='" + name + "' " + check + " value=\"" + optionstr + "\">" + optionstr + "</label>\n";
dxii++;
}
return radio;
}
public static void writeExcel(String fileName, String prosstr, java.util.List<List> plist, HttpServletRequest request, HttpServletResponse response) {
WritableWorkbook wwb = null;
String cols = "";
for (String str : prosstr.split("@")) {
cols += str.split("-")[0] + ",";
}
cols = cols.substring(0, cols.length() - 1);
String where = request.getAttribute("where") == null ? "" : request.getAttribute("where").toString();
List<List> mlist = new CommDAO().selectforlist("select " + cols + " from " + fileName + " " + where + " order by id desc");
fileName = request.getRealPath("/") + "/upfile/" + Info.generalFileName("a.xls");
String[] pros = prosstr.split("@");
try {
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File(fileName));
} catch (IOException e) {
e.printStackTrace();
}
if (wwb != null) {
//创建一个可写入的工作表
//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("sheet1", 0);
ws.setColumnView(0, 20);
ws.setColumnView(1, 20);
ws.setColumnView(2, 20);
ws.setColumnView(3, 20);
ws.setColumnView(4, 20);
ws.setColumnView(5, 20);
try {
for (int i = 0; i < pros.length; i++) {
Label label1 = new Label(i, 0, "");
str1 = strs[0];
if (strs.length == 1) str2 = "";
if (strs.length == 2) str2 = strs[1];
str2 = str2.replaceAll("\r\n", "-----");
if (!str1.equals("content")) {
jscode += " if(document.getElementsByName(\"" + str1 + "\").length>1)\n";
jscode += " {\n";
jscode += " var radios = document.getElementsByName(\"" + str1 + "\");\n";
jscode += " if(radios[0].type=='radio'){\n";
jscode += " for(var i=0;i<radios.length;i++)\n";
jscode += " {\n";
jscode += " if(radios[i].value==\"" + str2 + "\")\n";
jscode += " {\n";
jscode += " radios[i].checked=\"checked\";\n";
jscode += " }\n";
jscode += " }\n";
jscode += " }\n";
jscode += " if(radios[0].type=='checkbox'){\n";
jscode += " for(var i=0;i<radios.length;i++)\n";
jscode += " {\n";
jscode += " if(\"" + str2 + "\".indexOf(radios[i].value)>-1)\n";
jscode += " {\n";
jscode += " radios[i].checked=\"checked\";\n";
if (str2.indexOf(" - ") > -1) {
for (String strch : str2.split(" ~ ")) {
String strchname = strch.substring(0, strch.lastIndexOf(" - "));
jscode += " if(document.getElementsByName('" + strchname + "').length>0)\n";
jscode += " {\n";
jscode += " document.getElementsByName('" + strchname + "')[0].value='" + strch.substring(strch.lastIndexOf(":") + 1) + "';\n";
jscode += " }\n";
}
}
jscode += " }\n";
jscode += " }\n";
}
ordermsg.setDddetailist(dddetailist);
ordermsg.setAddr(addrid);
ordermsg.setShfs(shfs);
ordermsg.setZffs(zffs);
ordermsg.setFkstatus("已付款");
ordermsg.setTotal(doublesjtotal);
String fktime = Info.getDateStr();
// try {
// if(Info.compare(fktime,fktime.substring(0, 10)+" 18:00:00")){
// ordermsg.setRemark("当日达");
// }else{
// ordermsg.setRemark("次日达");
// }
// } catch (ParseException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
ordermsgDAO.update(ordermsg);
request.setAttribute("ordermsg", ordermsg);
if(ticketid!=null&&!ticketid.equals("")){
ticketDAO.delete(Integer.parseInt(ticketid));
}
//mmm.setMoney(sxyue);
//memberDAO.updateYue(mmm);
double xftotal = mmm.getXftotal()+doublesjtotal;
mmm.setXftotal(xftotal);
memberDAO.updateXftotal(mmm);
int jf = mmm.getJf()+new Double(doublesjtotal).intValue();
mmm.setJf(jf);
memberDAO.updateJf(mmm);
// if(!mmm.getCardtype().equals("白金卡")){
// if(xftotal>300&&xftotal<800){
// mmm.setCardtype("银卡");
// }else if(xftotal>800&&xftotal<1500){
// mmm.setCardtype("金卡");
// }else if(xftotal>1500){
// mmm.setCardtype("白金卡");
// }
// }
memberDAO.update(mmm);
saveobject.getCategoryObject(request);
return "success";
//}else{
// request.setAttribute("id", id);
@Controller
public class NewsController extends BaseController {
@Resource
NewsDAO newsDAO;
@Resource
CategoryDAO categoryDAO;
@Resource
MemberDAO memberDAO;
@Resource
ProductDAO productDAO;
@Resource
Saveobject saveobject;
@Resource
OrdermsgDAO ordermsgDAO;
//后台查询资讯列表
@RequestMapping("/admin/newsList")
public String newsList(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,HttpServletRequest request) {
String key = request.getParameter("key");
HashMap map = new HashMap();
map.put("key", key);
NewsDAO newsDAO;
@Resource
CategoryDAO categoryDAO;
@Resource
MemberDAO memberDAO;
@Resource
ProductDAO productDAO;
@Resource
Saveobject saveobject;
@Resource
OrdermsgDAO ordermsgDAO;
//后台查询资讯列表
@RequestMapping("/admin/newsList")
public String newsList(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,HttpServletRequest request) {
String key = request.getParameter("key");
HashMap map = new HashMap();
map.put("key", key);
PageHelper.startPage(pageNum, 10);
List<News> list = newsDAO.selectAll(map);
PageInfo<News> pageInfo = new PageInfo<News>(list);
request.setAttribute("key",key);
request.setAttribute("pageInfo",pageInfo);
return "admin/newslist";
}
//添加活动
@RequestMapping("/admin/newsAdd")
public String newsAdd(News news,HttpServletRequest request){
newsDAO.add(news);
return "redirect:newsList.do";
}
//后台查询活动
@RequestMapping("/admin/showNews")
public String shownews(int id,HttpServletRequest request){
News news = newsDAO.findById(id);
request.setAttribute("news", news);
saveobject.getCart(request);
saveobject.getCategoryObject(request);
return "admin/newsedit";
}
//前台查询活动
@RequestMapping("newsShow")
@Component
public class Saveobject {
@Resource
CategoryDAO categoryDao;
@Resource
ProductDAO productDAO;
@Resource
CartDAO cartDao;
@Resource
MemberDAO memberDAO;
@Resource
WlrecordDAO wlrecordDAO;
@Resource
InventoryDAO inventoryDAO;
@Resource
OrdermsgDAO ordermsgDAO;
@Resource
OrdermsgdetailsDAO ordermsgdetailsDAO;
public void getCategoryObject(HttpServletRequest request) {
HashMap map = new HashMap();
List<Category> fcategorylist = categoryDao.selectFcategory(map);// 一级分类
for (Category fcategory : fcategorylist) {
List<Category> scategorylist = categoryDao
.selectScategory(fcategory.getId());
List<Ordermsgdetails> ordermsgdetailslist = ordermsgdetailsDAO.selectAll(map1);
for(Ordermsgdetails ordermsgdetails:ordermsgdetailslist){
salenum += ordermsgdetails.getNum();
}
product.setSalenum(salenum);
newslist.add(product);
}
ListSortUtil<Product> sortList = new ListSortUtil<Product>();
sortList.sort(newslist, "salenum", "desc");
for(int i=0;i<newslist.size();i++){
Product pro = newslist.get(i);
if(i<5 && pro.getSalenum()>0){
zphlist.add(pro);
}else{
break;
}
}
//request.setAttribute("zphlist", zphlist);
}
return zphlist;
}
}
//登录
@RequestMapping("Login")
public String Login(String uname,String upass, HttpServletRequest request){
HashMap map = new HashMap();
map.put("uname", uname);
map.put("upass", MD5.getDigest(upass));
List<Member> list = memberDAO.selectAll(map);
if(list.size()==0){
return "redirect:skipLogin.do?suc=suc";
}else{
request.getSession().setAttribute("sessionmember", list.get(0));
return "redirect:index.do";
}
}
//注册
@RequestMapping("Register")
public String Register(Member member, HttpServletRequest request){
member.setUpass(MD5.getDigest(member.getUpass()));
member.setUtype("普通用户");
member.setDelstatus("0");
member.setSavetime(Info.getDateStr());
member.setJf(0);
member.setCardtype("普卡");
memberDAO.add(member);
return "redirect:skipReg.do?suc=suc";
}
//检查用户名的唯一性
@RequestMapping("checkUname")
public void checkUname(String uname, HttpServletRequest request, HttpServletResponse response){
try {
PrintWriter out = response.getWriter();
HashMap map = new HashMap();
map.put("uname", uname);
List<Member> list = memberDAO.selectAll(map);
if(list.size()==0){
out.print(0);
}else{
out.print(1);
}
} catch (IOException e) {
@Controller
public class OrdermsgController extends BaseController {
@Resource
CartDAO cartDAO;
@Resource
MemberDAO memberDAO;
@Resource
ProductDAO productDAO;
@Resource
Saveobject saveobject;
@Resource
OrdermsgdetailsDAO ordermsgdetailsDAO;
@Resource
OrdermsgDAO ordermsgDAO;
@Resource
InventoryDAO inventoryDAO;
@Resource
AddressDAO addressDAO;
@Resource
TicketDAO ticketDAO;
@Resource
UserDAO userDAO;
//创建订单
@RequestMapping("createOrder")
public String createOrder(HttpServletRequest request) {
Member member = (Member)request.getSession().getAttribute("sessionmember");
saveobject.getCart(request);
saveobject.getCategoryObject(request);
HashMap map = new HashMap();
map.put("memberid", member.getId());
int addrid = 0;
List<Address> addresslist = addressDAO.selectAll(map);
for(Address address:addresslist){
List<Address> addresslist = addressDAO.selectAll(map);
List<Ticket> ticketlist = ticketDAO.selectAll(map);
for(Address address:addresslist){
if(address.getIsmr().equals("yes")){
addrid=String.valueOf(address.getId());
}
}
request.setAttribute("addresslist", addresslist);
request.setAttribute("ticketlist", ticketlist);
request.setAttribute("ordermsg", ordermsg);
request.setAttribute("addrid", addrid);
double sjtotal = ordermsg.getTotal();
request.setAttribute("sjtotal", sjtotal);
return "fukuan";
}
//创建订单
@RequestMapping("createDd")
public String createDd(HttpServletRequest request) {
String totalstr = request.getParameter("totalstr");
String addrid = request.getParameter("addrid");
Member member = (Member) request.getSession().getAttribute(
"sessionmember");
double zk = saveobject.getzk(member.getId());
saveobject.getCart(request);
saveobject.getCategoryObject(request);
String memberid = String.valueOf(member.getId());
String fkstatus = "待付款";
String addrstr = addrid;
String savetime = Info.getDateStr();
HashMap map = new HashMap();
map.put("memberid", member.getId());
List<Cart> list = cartDAO.selectAll(map);
if(list.size()==0){
return "redirect:cartList.do";
}else{
List<Integer> shopidlist = new ArrayList<Integer>();
for(int i=0;i<list.size();i++){
Cart c = list.get(i);
shopidlist.add(c.getShopid());
}
HashSet h = new HashSet(shopidlist);
shopidlist.clear();
ordermsg.setFkstatus("已发货");
ordermsgDAO.update(ordermsg);
Inventory inv = new Inventory();
inv.setNum(orderdetail.getNum());
inv.setProductid(orderdetail.getProductid());
inv.setType("out");
inventoryDAO.add(inv);
}
return "redirect:orderList.do?suc=suc";
}else{
return "redirect:orderList.do?suc=error";
}
}
//发货
@RequestMapping("/admin/fubiorderFh")
public String fubiorderFh(int id,HttpServletRequest request) {
Ordermsg ordermsg = ordermsgDAO.findById(id);
if(ordermsg.getShfs().equals("到店自取")){
ordermsg.setIsdd("抵达目的地");
}
ordermsg.setFkstatus("已发货");
ordermsgDAO.update(ordermsg);
return "redirect:fubiorderList.do?suc=suc";
}
//收货
@RequestMapping("qianShou")
public String qianShou(int id,HttpServletRequest request){
Ordermsg ordermsg = ordermsgDAO.findById(id);
ordermsg.setFkstatus("交易完成");
ordermsgDAO.update(ordermsg);
return "redirect:orderLb.do";
}
@RequestMapping("fubiqianshou")
public String qs(int id,HttpServletRequest request){
Ordermsg ordermsg = ordermsgDAO.findById(id);
ordermsg.setFkstatus("交易完成");
ordermsgDAO.update(ordermsg);
return "redirect:fubiOrder.do";
}
@RequestMapping("fubiorderSc")
public String fubiorderSc(int id,HttpServletRequest request){
Ordermsg ordermsg = ordermsgDAO.findById(id);
ordermsg.setDelstatus("1");
ordermsgDAO.update(ordermsg);
return "redirect:fubiOrder.do";
}
@RequestMapping("fubiOrder")
public String fubiOrder(HttpServletRequest request) {
Member member = (Member) request.getSession().getAttribute(
"sessionmember");
String msg = request.getParameter("msg")==null?"":request.getParameter("msg");
HashMap map = new HashMap();
map.put("memberid", member.getId());
map.put("delstatus", "0");
map.put("goodstype", "积分商品");
List<Ordermsg> list = ordermsgDAO.selectAll(map);
for(Ordermsg ordermsg:list){
Member mem = memberDAO.findById(Integer.parseInt(ordermsg.getMemberid()));
ordermsg.setMember(mem);
Product product = productDAO.findById(Integer.parseInt(ordermsg.getProductid()));
ordermsg.setProduct(product);
}
request.setAttribute("list",list);
saveobject.getCart(request);
saveobject.getCategoryObject(request);
return "fubiorder";
}
//后台查询订单列表
@RequestMapping("/admin/orderList")
public String orderList(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,HttpServletRequest request) {
User admin = (User)request.getSession().getAttribute("admin");
String key = request.getParameter("key");
String suc = request.getParameter("suc")==null?"":request.getParameter("suc");
HashMap map = new HashMap();
map.put("ddno", key);
map.put("delstatus", "0");
if(!admin.getUsertype().equals("管理员")){
map.put("saver", String.valueOf(admin.getId()));
}
map.put("fkstatus", "待付款");
map.put("goodstype", "购买商品");
List<Ordermsg> list = ordermsgDAO.selectAll(map);
for(Ordermsg ordermsg:list){
Member member = memberDAO.findById(Integer.parseInt(ordermsg.getMemberid()));
List<Category> scategorylist = categoryDAO.selectScategory(Integer.parseInt(fid));
request.setAttribute("scategorylist", scategorylist);
}
map.put("key", key);
map.put("fid", fid);
map.put("sid", sid);
if(!admin.getUsertype().equals("管理员")){
map.put("saver", admin.getId());
}
map.put("leibie", "购买商品");
PageHelper.startPage(pageNum,10);
List<Product> list = productDAO.selectAll(map);
for(Product product:list){
Category fcategory = categoryDAO.findById(Integer.parseInt(product.getFid()));
Category scategory = categoryDAO.findById(Integer.parseInt(product.getSid()));
product.setFcategory(fcategory);
product.setScategory(scategory);
}
PageInfo<Product> pageInfo = new PageInfo<Product>(list);
request.setAttribute("key", key);
request.setAttribute("fid", fid);
request.setAttribute("sid", sid);
request.setAttribute("pageInfo", pageInfo);
request.setAttribute("fcategorylist", fcategorylist);
saveobject.getCategoryObject(request);
return "admin/productmsg";
}
//查询商品类别
@RequestMapping("/admin/categorySelect")
public String categorySelect(HttpServletRequest request){
HashMap map = new HashMap();
List<Category> list = categoryDAO.selectFcategory(map);
for(Category category:list){
List<Category> scategorylist = categoryDAO.selectScategory(category.getId());
category.setScategorylist(scategorylist);
}
request.setAttribute("list", list);
return "admin/productadd";
}
//商品添加
@RequestMapping("admin/productAdd")
public String productAdd(Product product,HttpServletRequest request){