基于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 登录
@Controller
public class IndexController extends BaseController {
@Resource
ProductDAO productDAO;
@Resource
CategoryDAO categoryDAO;
@Resource
PictureDAO pictureDAO;
@Resource
NewsDAO newsDAO;
@Resource
AboutDAO aboutDAO;
@Resource
MemberDAO memberDAO;
@Resource
OrdermsgDAO ordermsgDAO;
@Resource
CartDAO cartDAO;
@Resource
}
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("白金卡");
public String userEdit(User u, HttpServletRequest request){
userDAO.update(u);
return "redirect:userList.do";
}
@RequestMapping("/admin/userDel")
public String userDel(int id,HttpServletRequest request){
User user = userDAO.findById(id);
user.setDelstatus("1");
userDAO.update(user);
return "redirect:userList.do";
}
//商家注册
@RequestMapping("shopRegister")
public String shopRegister(User user,HttpServletRequest request){
user.setUserpassword(MD5.getDigest(user.getUserpassword()));
user.setDelstatus("0");
user.setShstatus("待审核");
user.setUsertype("商家");
userDAO.add(user);
return "redirect:skipshopRetist.do?suc=suc";
}
}
return "admin/tjnum";
}
//销售额
@RequestMapping("/admin/selectSaleMoney")
public String selectSaleMoney(HttpServletRequest request) {
User shop = (User)request.getSession().getAttribute("admin");
HashMap map = new HashMap();
map.put("fkstatus", "交易完成");
if(!shop.getUsertype().equals("管理员")){
map.put("saver", shop.getId());
}
map.put("goodstype", "购买商品");
List<Ordermsg> olist = ordermsgDAO.selectSaleMoney(map);
//ArrayList nslist = new ArrayList();
ArrayList nlist = new ArrayList();
ArrayList slist = new ArrayList();
for(Ordermsg dingdan:olist){
nlist.add("'"+dingdan.getSavetime()+"'");
slist.add(dingdan.getTotal());
}
request.setAttribute("nlist", nlist);
request.setAttribute("slist", slist);
return "admin/tjsalemoney";
}
//活跃度
@RequestMapping("/admin/statisticsHy")
public String statisticsHy(HttpServletRequest request) {
String key = request.getParameter("key");
User shop = (User)request.getSession().getAttribute("admin");
ArrayList nlist = new ArrayList();
ArrayList slist = new ArrayList();
HashMap map = new HashMap();
List<Member> mlist = memberDAO.selectAll(map);
for(Member member:mlist){
nlist.add("'"+member.getTname()+"'");
map.put("memberid", member.getId());
map.put("goodstype", "购买商品");
map.put("status", "交易完成");
}else{
request.setAttribute("error", "原密码错误");
}
return "admin/updatepwd";
}
@RequestMapping("/admin/userList")
public String selectAll(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,HttpServletRequest request){
String key = request.getParameter("key");
HashMap map = new HashMap();
map.put("key", key);
map.put("usertype", "商家");
map.put("shstatus", "通过审核");
PageHelper.startPage(pageNum, 10);
List<User> list = userDAO.selectAll(map);
PageInfo<User> pageInfo = new PageInfo<User>(list);
request.setAttribute("key",key);
request.setAttribute("pageInfo",pageInfo);
return "admin/userlist";
}
@RequestMapping("admin/userAdd")
public String userAdd(User user, HttpServletRequest request){
userDAO.add(user);
return "redirect:userList.do";
}
//检查用户名的唯一性
@RequestMapping("admin/checkUsername")
public void checkUsername(String username, HttpServletRequest request, HttpServletResponse response){
try {
PrintWriter out = response.getWriter();
HashMap map = new HashMap();
map.put("username", username);
List<User> list = userDAO.selectAll(map);
if(list.size()==0){
out.print(0);
}else{
out.print(1);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//支付方式页面
@RequestMapping("skipZffs")
public String skipZffs(HttpServletRequest request){
Member member = (Member)request.getSession().getAttribute("sessionmember");
String suc = request.getParameter("suc")==null?"":request.getParameter("suc");
String id = request.getParameter("id");
String totalstr = request.getParameter("totalstr");
String ticketid = request.getParameter("ticketid");
String addrid = request.getParameter("addrid");
request.setAttribute("id", id);
request.setAttribute("sjtotal", totalstr);
request.setAttribute("ticketid", ticketid);
request.setAttribute("addrid", addrid);
saveobject.getCategoryObject(request);
return "zffs";
}
//订单付款
@RequestMapping("fukuan")
public String fukuan(HttpServletRequest request){
Member member = (Member)request.getSession().getAttribute("sessionmember");
Member mmm = memberDAO.findById(member.getId());
String id = request.getParameter("id");
String sjtotal = request.getParameter("sjtotal");
String ticketid = request.getParameter("ticketid");
String addrid = request.getParameter("addrid");
String zffs = request.getParameter("zffs");
String shfs = request.getParameter("shfs");
//double yue = mmm.getMoney();
//查优惠券
double doublesjtotal = Double.parseDouble(sjtotal);
if(ticketid != null && !ticketid.equals("")){
Ticket ticket = ticketDAO.findById(Integer.valueOf(ticketid));
doublesjtotal = doublesjtotal - Double.valueOf(ticket.getMoney());
}
//boolean flag = true;
//double sxyue = yue-doublesjtotal;
//if(sxyue>=0){
Ordermsg ordermsg = ordermsgDAO.findById(Integer.parseInt(id));
jscode += "if(document.getElementById(\"txt3\"))\n";
jscode += "{\n";
jscode += "document.getElementById(\"txt3\").src=\"/vehiclemanagementsys/upfile/" + map.get("filename3") + "\";\n";
jscode += "}\n";
jscode += "if(document.getElementById(\"txt4\"))\n";
jscode += "{\n";
jscode += "document.getElementById(\"txt4\").src=\"/vehiclemanagementsys/upfile/" + map.get("filename4") + "\";\n";
jscode += "}\n";
jscode += "if(document.getElementById(\"txt5\"))\n";
jscode += "{\n";
jscode += "document.getElementById(\"txt5\").src=\"/vehiclemanagementsys/upfile/" + map.get("filename5") + "\";\n";
jscode += "}\n";
}
}
jscode += "}\n";
jscode += " getPvalue();\n";
jscode += "</script>\n";
} catch (Exception e) {
e.printStackTrace();
}
return jscode;
}
public static String generalFileName(String srcFileName) {
try {
int index = srcFileName.lastIndexOf(".");
return StrUtil.generalSrid() + srcFileName.substring(index).toLowerCase();
} catch (Exception e) {
return StrUtil.generalSrid();
}
}
public synchronized static String getID() {
Random random = new Random();
StringBuffer ret = new StringBuffer(20);
String rand = String.valueOf(Math.abs(random.nextInt()));
ret.append(getDateStr());
ret.append(rand.substring(0, 6));
return ret.toString();
}
public static String getImgUpInfo(int height) {
}
totalstr = String.format("%.2f", total);
request.setAttribute("totaldoubel", Double.parseDouble(totalstr));
request.setAttribute("cartlist", cartlist);
request.setAttribute("totalstr", totalstr);
saveobject.getCategoryObject(request);
String suc = request.getParameter("suc")==null?"":request.getParameter("suc");
if(!suc.equals("")){
request.setAttribute("suc", "创建成功");
}
HashMap mmm = new HashMap();
mmm.put("goodstype", "购买商品");
saveobject.hotSales("", request);
List<Product> zphlist = saveobject.hotSales("",request);
request.setAttribute("zphlist", zphlist);
return "cartlist";
}
// 添加购物车
@RequestMapping("addCart")
public void addCart(HttpServletRequest request, HttpServletResponse response) {
PrintWriter out;
try {
out = response.getWriter();
Member member = (Member) request.getSession().getAttribute(
"sessionmember");
if (member != null) {
String productid = request.getParameter("productid");
String num = request.getParameter("num");
//判断是否是购买自己的商品
Product product = (Product)productDAO.findById(Integer.parseInt(productid));
HashMap map = new HashMap();
map.put("memberid", member.getId());
map.put("productid", productid);
List<Cart> list = cartDAO.selectAll(map);
if (list.size() == 0) {
Cart cart = new Cart();
cart.setMemberid(member.getId());
cart.setProductid(Integer.parseInt(productid));
cart.setNum(Integer.parseInt(num));
cart.setShopid(Integer.valueOf(product.getSaver()));
cartDAO.add(cart);
} else {
str += "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
str += "<script language=javascript>\n";
if (alert) {
str += "alert('操作成功');\n";
}
if (reflush) {
str += "parent.location=parent.location;\n";
}
str += "</script>\n";
PrintWriter wrt = null;
try {
//request.get
wrt = response.getWriter();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
wrt.write(str);
}
return "";
}
public int getInt(String sql) {
System.out.println(sql);
int i = 0;
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
if (rs.next()) {
i = rs.getInt(1);
}
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return i;
}
public double getDouble(String sql) {
double i = 0;
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
if (rs.next()) {
i = rs.getDouble(1);
}
st.close();
Saveobject saveobject;
@Resource
OrdermsgDAO ordermsgDAO;
@Resource
ShapplyDAO shapplyDAO;
@Resource
OrdermsgdetailsDAO ordermsgdetailsDAO;
@Resource
UserDAO userDAO;
//后台查询资讯列表
@RequestMapping("/admin/shapplyList")
public String shapplyList(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,HttpServletRequest request) {
User user = (User)request.getSession().getAttribute("admin");
HashMap map = new HashMap();
if(!user.getUsertype().equals("管理员")){
map.put("shopid", user.getId());
}
PageHelper.startPage(pageNum, 10);
List<Shapply> list = shapplyDAO.selectAll(map);
for(Shapply sh:list){
Product product = productDAO.findById(sh.getProductid());
sh.setProduct(product);
Member mb = memberDAO.findById(sh.getMemberid());
sh.setMember(mb);
User shop = userDAO.findById(Integer.valueOf(product.getSaver()));
sh.setShop(shop);
}
PageInfo<Shapply> pageInfo = new PageInfo<Shapply>(list);
request.setAttribute("pageInfo",pageInfo);
return "admin/shapplylist";
}
//去申请售后页面
@RequestMapping("toShapply")
public String toShapply(int id,HttpServletRequest request){
request.setAttribute("orderid",id);
Ordermsg ordermsg = ordermsgDAO.findById(id);
HashMap map = new HashMap();
map.put("ddno", ordermsg.getDdno());
List<Ordermsgdetails> orderdetaillist = ordermsgdetailsDAO.selectAll(map);
for(Ordermsgdetails ordermsgdetails: orderdetaillist){
ordermsgdetails.setProduct(productDAO.findById(Integer.valueOf(ordermsgdetails.getProductid())));
}
request.setAttribute("orderdetaillist",orderdetaillist);
}
}
@Component
public class Saveobject {
@Resource
CategoryDAO categoryDao;
@Resource
ProductDAO productDAO;
@Resource
CartDAO cartDao;
@Resource
MemberDAO memberDAO;
long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
// long ns = 1000;
// 获得两个时间的毫秒时间差异
long diff = endDate.getTime() - startDate.getTime();
// 计算差多少天
long day = diff / nd;
// 计算差多少小时
long hour = diff / nh;
long y = diff % nh;
//计算余分钟
long b = y / (1000 * 60);
// 计算差多少分钟
long min = diff % nd % nh / nm;
// 计算差多少秒//输出结果
// long sec = diff % nd % nh % nm / ns;
if (b > 30) {
hournum = hour + 1;
} else {
hournum = hour;
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return hournum;
}
public static String delHTMLTag(String htmlStr) {
String regEx_script = "<script[^>]*?>[\\s\\S]*?<\\/script>"; //定义script的正则表达式
String regEx_style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; //定义style的正则表达式
String regEx_html = "<[^>]+>"; //定义HTML标签的正则表达式
Pattern p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);
Matcher m_script = p_script.matcher(htmlStr);
htmlStr = m_script.replaceAll(""); //过滤
Pattern p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);
Matcher m_style = p_style.matcher(htmlStr);
htmlStr = m_style.replaceAll(""); //过滤style标签
PageHelper.startPage(pageNum, 10);
List<Message> list = messageDAO.selectAll(map);
for(int i=0;i<list.size();i++){
Member m = memberDAO.findById(list.get(i).getMemberid());
list.get(i).setMember(m);
}
PageInfo<Message> pageInfo = new PageInfo<Message>(list);
if(suc.equals("error")){
request.setAttribute("suc", "请先登录");
}
saveobject.getCart(request);
saveobject.getCategoryObject(request);
request.setAttribute("pageInfo", pageInfo);
return "messagelist";
}
//前台留言添加
@RequestMapping("messageAdd")
public String messageAdd(HttpServletRequest request){
Member member = (Member)request.getSession().getAttribute("sessionmember");
String content = request.getParameter("content");
if(member!=null){
Message message = new Message();
message.setContent(content);
message.setMemberid(member.getId());
message.setSavetime(Info.getDateStr());
messageDAO.add(message);
return "redirect:message_List.do";
}else{
return "redirect:message_List.do?suc=error";
}
}
//后台留言列表
@RequestMapping("/admin/messageList")
public String messageList(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,HttpServletRequest request) {
String key = request.getParameter("key");
HashMap map = new HashMap();
map.put("key", key);
List<Message> list = messageDAO.selectAll(map);
for(int i=0;i<list.size();i++){
Member m = memberDAO.findById(list.get(i).getMemberid());
list.get(i).setMember(m);
}
}
@Controller
public class AddressController extends BaseController {
@Resource
AddressDAO addressDAO;
@Resource
CategoryDAO categoryDAO;
@Resource
MemberDAO memberDAO;
@Resource
Saveobject saveobject;
//添加收货地址页面
@RequestMapping("skipAddress")
public String skipAddress(HttpServletRequest request){
String orderid = request.getParameter("orderid");
saveobject.getCart(request);
saveobject.getCategoryObject(request);
request.setAttribute("orderid", orderid);
@Controller
public class ProductController extends BaseController {
@Resource
ProductDAO productDAO;
@Resource
CategoryDAO categoryDAO;
@Resource
MemberDAO memberDAO;
@Resource
CommentDAO commentDAO;
@Resource
OrdermsgDAO ordermsgDAO;
@Resource
Saveobject saveobject;
@Resource
UserDAO userDAO;
//积分商品添加
@RequestMapping("/admin/fubiAdd")
public String fubiAdd(Product product,HttpServletRequest request){
User user = (User)request.getSession().getAttribute("admin");
String productno = Info.getAutoId();
product.setProductno(productno);
product.setSaver(String.valueOf(user.getId()));
product.setIssj("no");
product.setIstj("no");
product.setProductid("-1");
product.setDelstatus("0");
productDAO.add(product);
return "redirect:fubiList.do";
}
//后台查询积分商品列表
@RequestMapping("/admin/fubiList")
public String fubiList(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,HttpServletRequest request) {
String key = request.getParameter("key");
HashMap map = new HashMap();
if(ordermsg.getShfs().equals("到店自取")){
ordermsg.setIsdd("抵达目的地");
}
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);
}else if(bbb.getCardtype().equals("白金卡")){
zk=0.85;
}
return zk;
}
public void getWlrecord(String ddno,HttpServletRequest request){
HashMap map = new HashMap();
map.put("ddno", ddno);
List<Wlrecord> wllist = wlrecordDAO.selectAll(map);
request.setAttribute("wllist", wllist);
}
public int getInvertory(int productid,HttpServletRequest request){
User admin = (User)request.getSession().getAttribute("admin");
int kc = 0;
HashMap map = new HashMap();
map.put("productid", productid);
map.put("type", "in");
int innum = 0;
int outnum = 0;
List<Inventory> inlist = inventoryDAO.selectAll(map);
for(Inventory inventory:inlist){
innum+=inventory.getNum();
}
map.put("type", "out");
List<Inventory> outlist = inventoryDAO.selectAll(map);
for(Inventory inv:outlist){
outnum+=inv.getNum();
}
if(innum>outnum){
kc=innum-outnum;
}
return kc;
}
public int getfdInvertory(int productid,String saver,HttpServletRequest request){
int kc = 0;
HashMap map = new HashMap();
map.put("goodsid", productid);
map.put("saver",saver);
return "redirect:skipFukuan.do?id="+orderid;
}
}
@Controller
public class CategoryController extends BaseController {
@Resource
CategoryDAO categoryDAO;
@RequestMapping("/admin/categoryList")
public String categoryList(@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);