基于javaweb+mysql的springboot校园订餐系统(java+springboot+maven+layui+jsp+echarts+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SpringBoot校园订餐系统(java+springboot+maven+layui+jsp+echarts+mysql)
用户:
H001 123456
H002 123456
H003 123456
管理员:
admin 123456
商家:
S001 123456
S002 123456
S003 123456
S004 123456
项目介绍
本校园网上订餐系统主要包括用户功能模块、商家功能模块和管理员功能模块三大部分,分为前后台,前台为普通用户登录,后台为管理员、商家登录。
(1)用户:用户可以查看系统首页界面信息,包括首页查看,带饭信息查看,常见菜式查看,主食查看,食堂查看,在线留言,用户可以进行注册登录,登录后功能有个人信息管理, 带饭管理,接收的带饭管理,收货地址管理,订单信息管理,收藏夹管理,钱包管理,安全退出
(2)管理员:管理员登录后主要功能模块包括个人信息管理,修改密码,滚动图片管理,菜品类别管理,食堂管理,菜品管理,留言管理,学生信息管理,商家信息管理。
(3)商家:商家注册登录后的主要功能有个人信息管理,修改密码,菜品管理,库存管理,订单管理,留言管理。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 4.数据库:MySql 5.7/8.0版本均可; 5.是否Maven项目:是;
技术栈
后端:SpringBoot+Mybaits 前端:JSP +layui+jquery +echarts
使用说明
项目运行: 1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,前台访问地址: http://localhost:8088/onlineshopboot/ 普通用户账号、密码:H03/123 商家账号、密码:S001/123 管理员账号、密码:admin/123
Member m = memberDAO.findById(list.get(i).getMemberid());
list.get(i).setMember(m);
}
PageInfo<Message> pageInfo = new PageInfo<Message>(list);
request.setAttribute("pageInfo", pageInfo);
request.setAttribute("key", key);
return "messageitems";
}
//留言回复
@RequestMapping("/admin/updateMessage")
public String updateMessage(Message message,HttpServletRequest request) {
User admin = (User)request.getSession().getAttribute("admin");
messageDAO.update(message);
Message msg = messageDAO.findById(message.getId());
if(admin.getUsertype().equals("管理员")){
return "redirect:messageList";
}else{
return "redirect:messageItems";
}
}
//删除留言
@RequestMapping("/admin/messageDelAll")
public String messageDelAll(HttpServletRequest request) {
User admin = (User)request.getSession().getAttribute("admin");
String vals = request.getParameter("vals");
String[] val = vals.split(",");
for(int i=0;i<val.length;i++){
messageDAO.delete(Integer.parseInt(val[i]));
}
if(admin.getUsertype().equals("管理员")){
return "redirect:messageList";
}else{
return "redirect:messageItems";
}
}
}
return "redirect:inventoryList";
}
}
@Controller
public class FavController extends BaseController {
@Resource
FavDAO favDAO;
@Resource
CartDAO cartDAO;
@Resource
MemberDAO memberDAO;
@Resource
ProductDAO productDAO;
@Resource
CategoryDAO categoryDAO;
@Resource
Saveobject saveobject;
// 添加到收藏夹
@RequestMapping("addFav")
public void addFav(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");
List<Fav> list = favDAO.selectMyProduct(member.getId(),Integer.parseInt(productid));
if (list.size() == 0) {
Fav fav = new Fav();
map.put("memberid",member.getId());
List<Cart> idlist = cartDAO.selectProductid(map);
for(Cart savercart:idlist){
map.put("shopid", savercart.getShopid());
List<Cart> cartlist = cartDAO.selectAll(map);
CheckCode cc = new CheckCode();
String orderno = cc.getCheckCode();
double total = 0.0;
String totalstr = "";
for(Cart cart:cartlist){
Product product = productDAO.findById(Integer.parseInt(cart.getProductid()));
Ordermsgdetails ordermsgdetails = new Ordermsgdetails();
ordermsgdetails.setOrderno(orderno);
ordermsgdetails.setProductid(cart.getProductid());
ordermsgdetails.setNum(cart.getNum());
ordermsgdetails.setMemberid(String.valueOf(member.getId()));
ordermsgdetailsDAO.add(ordermsgdetails);
double jg =0.0;
if(product.getTprice()>0){
jg=product.getTprice();
}else{
jg=product.getPrice();
}
if(member.getUtype().equals("普通用户")){
total+=Double.parseDouble(String.valueOf(cart.getNum()))*jg;
}else{
total+=0.8 * Double.parseDouble(String.valueOf(cart.getNum()))*jg;
}
}
totalstr = String.format("%.2f", total);
Ordermsg ordermsg = new Ordermsg();
ordermsg.setOrderno(orderno);
ordermsg.setMemberid(member.getId());
ordermsg.setSaver(Integer.parseInt(savercart.getShopid()));
ordermsg.setTotal(totalstr);
ordermsg.setAddrid(Integer.parseInt(addrid));
ordermsg.setFkstatus("待付款");
ordermsgDAO.add(ordermsg);
for(Cart ctt:cartlist){
cartDAO.delCart(ctt.getId());
}
}
for (String vstr : values) {
if (vstr == null) vstr = "";
if (vstr.equals("null")) vstr = "";
if (vstr.trim().equals("")) continue;
if (request.getParameter(vstr) != null && !"".equals(request.getParameter(vstr)) && request.getParameter("dk-" + name + "-value") != null) {
String dkv = request.getParameter(vstr);
String dknamevalue = request.getParameter("dk-" + name + "-value");
vstr += " - " + dknamevalue + ":" + dkv;
}
value += vstr + " ~ ";
}
}
if (value == null) value = "";
if (value.equals("null")) value = "";
if (value.length() > 0) value = value.substring(0, value.length() - 3);
return value;
}
public HashMap getmap(String id, String table) {
List<HashMap> list = new ArrayList();
try {
Statement st = conn.createStatement();
System.out.println("select * from " + table + " where id=" + id);
ResultSet rs = st.executeQuery("select * from " + table + " where id=" + id);
ResultSetMetaData rsmd = rs.getMetaData();
while (rs.next()) {
HashMap map = new HashMap();
int i = rsmd.getColumnCount();
for (int j = 1; j <= i; j++) {
if (!rsmd.getColumnName(j).equals("ID")) {
String str = rs.getString(j) == null ? "" : rs.getString(j);
if (str.equals("null")) str = "";
map.put(rsmd.getColumnName(j), str);
} else
map.put("id", rs.getString(j));
}
list.add(map);
}
rs.close();
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list.get(0);
}
public String insert(HttpServletRequest request, HttpServletResponse response, String tablename, HashMap extmap, boolean alert, boolean reflush) {
extmap.put("savetime", Info.getDateStr());
@Controller
public class CategoryController extends BaseController {
@Resource
CategoryDAO categoryDAO;
@RequestMapping("admin/categoryList")
public String categoryList(HttpServletRequest request) {
List<Category> list = categoryDAO.selectfatherAll();
for(Category category:list){
List<Category> childlist = categoryDAO.selectchildAll(category.getId());
category.setChildlist(childlist);
for(Category childcategory:childlist){
List<Category> minlist = categoryDAO.selectminAll(childcategory.getId());
childcategory.setMinlist(minlist);
}
}
request.setAttribute("list", list);
return "categorylist";
}
@RequestMapping("admin/searchCategory")
public String searchUser(HttpServletRequest request){
String index = request.getParameter("index");
String key = request.getParameter("key");
int pageindex = 1;
if(index!=null){
pageindex = Integer.parseInt(index);
}
Page<Object> page = PageHelper.startPage(pageindex,6);
List<Category> list = categoryDAO.search(key);
request.setAttribute("list", list);
request.setAttribute("key", key);
request.setAttribute("index", page.getPageNum());
request.setAttribute("pages", page.getPages());
request.setAttribute("total", page.getTotal());
return "categorysearchlist";
return "productadd";
}
//菜品添加
@RequestMapping("/admin/productAdd")
public String productAdd(Product product,HttpServletRequest request){
User admin = (User)request.getSession().getAttribute("admin");
product.setIstj("no");
product.setSaver(admin.getId());
productDAO.add(product);
return "redirect:productList";
}
//后台菜品查询
@RequestMapping("/admin/showProduct")
public String showproduct(int id,HttpServletRequest request){
saveobject.getBrand(request);
Product product = productDAO.findById(id);
Category fcategory = categoryDAO.findById(product.getFid());
Category ccategory = categoryDAO.findById(product.getCid());
product.setFcategory(fcategory);
product.setCcategory(ccategory);
List<Category> list = categoryDAO.selectfatherAll();
request.setAttribute("list", list);
request.setAttribute("product", product);
return "productedit";
}
//前台菜品查询
@RequestMapping("productDetails")
public String productDetails(int id,HttpServletRequest request){
String msg = request.getParameter("msg");
Product product = productDAO.findById(id);
Brand brand = brandDAO.findById(Integer.parseInt(product.getBrandid()));
product.setBrand(brand);
User user = userDAO.findById(product.getSaver());
product.setUser(user);
List<Product> list = productDAO.selectCorrelation(id,String.valueOf(product.getFid()));
Category fcategory = categoryDAO.findById(product.getFid());
Category ccategory = categoryDAO.findById(product.getCid());
product.setFcategory(fcategory);
product.setCcategory(ccategory);
if(msg!=null){
}
String[] d2 = DATE2.split("-");
if(d2[1].length()==1)
{
DATE2 = d2[0]+"-0"+d2[1];
}else{
DATE2 = d2[0]+"-"+d2[1];
}
if(d2[2].length()==1)
{
DATE2 = DATE2+"-0"+d2[2];
}else{
DATE2 = DATE2+"-"+d2[2];
}
for(int j=0;j<10000;j++)
{
i=j;
String gday = Info.getDay(DATE1, j);
if(gday.equals(DATE2))
{
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;
brandDAO.update(brand);
}
return "redirect:brandList";
}
}
PrintWriter out;
try {
out = response.getWriter();
Gson gson = new Gson();
String flag = gson.toJson(xml);
out.write(flag);
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@WebServlet(name = "upload",urlPatterns = "/upload")
public class Upload extends HttpServlet {
/**
* Constructor of the object.
*/
public Upload() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
@Controller
public class CartController extends BaseController {
@Resource
CartDAO cartDAO;
@Resource
MemberDAO memberDAO;
@Resource
ProductDAO productDAO;
@Resource
CategoryDAO categoryDAO;
@Resource
AddressDAO addressDAO;
@Resource
Saveobject saveobject;
// 查询购车菜品
@RequestMapping("cartList")
public String cartList(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,HttpServletRequest request) {
Member member = (Member)request.getSession().getAttribute("sessionmember");
if(member!=null){
HashMap map = new HashMap();
map.put("memberid",member.getId());
List<Cart> cartlist = cartDAO.selectAll(map);
String totalstr = "";
double total = 0.0;
for(int i=0;i<cartlist.size();i++){
Member m = memberDAO.findById(Integer.parseInt(cartlist.get(i).getMemberid()));
Product product = productDAO.findById(Integer.parseInt(cartlist.get(i).getProductid()));
cartlist.get(i).setMember(m);
cartlist.get(i).setProduct(product);
public String dingdanAdd(Category ct,HttpServletRequest request){
String type = request.getParameter("type");
if(type.equals("father")){
ct.setFatherid("0");
ct.setLeaf("1");
categoryDAO.add(ct);
}else if(type.equals("leaf")){
Category category = categoryDAO.findById(Integer.parseInt(ct.getFatherid()));
category.setLeaf("0");
categoryDAO.update(category);
ct.setLeaf("1");
categoryDAO.add(ct);
}
return "redirect:categoryList";
}
@RequestMapping("/admin/showCategory")
public String showCategory(int id,HttpServletRequest request){
Category category = categoryDAO.findById(id);
request.setAttribute("category", category);
return "categoryedit";
}
@RequestMapping("/admin/categoryEdit")
public String categoryEdit(Category category,HttpServletRequest request){
System.out.println("leaf=="+category.getLeaf());
categoryDAO.update(category);
request.setAttribute("category", category);
return "redirect:categoryList";
}
@RequestMapping("admin/categoryDel")
public String categoryDel(int id, HttpServletRequest request){
Category category = categoryDAO.findById(id);
String fatherid = category.getFatherid();
System.out.println("fatherid==="+fatherid);
if(fatherid.equals("0")){
fatherid=String.valueOf(id);
}
System.out.println("fatherid1==="+fatherid);
List<Category> list = (List<Category>)categoryDAO.selectOne(Integer.parseInt(fatherid));
System.out.println("id=="+id);
System.out.println("list==="+list.size());
if(list.size()==1){
Category ct = categoryDAO.findById(Integer.parseInt(category.getFatherid()));
ct.setLeaf("1");
categoryDAO.update(ct);
}
categoryDAO.delete(id);
return "redirect:categoryList";
}
//商家后台留言列表
@RequestMapping("admin/messageItems")
public String messageItems(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,HttpServletRequest request) {
String key = request.getParameter("key");
User admin = (User)request.getSession().getAttribute("admin");
HashMap map = new HashMap();
map.put("key", key);
map.put("flag", "商家");
map.put("shopid",admin.getId());
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);
request.setAttribute("pageInfo", pageInfo);
request.setAttribute("key", key);
return "messageitems";
}
//留言回复
@RequestMapping("/admin/updateMessage")
public String updateMessage(Message message,HttpServletRequest request) {
User admin = (User)request.getSession().getAttribute("admin");
messageDAO.update(message);
Message msg = messageDAO.findById(message.getId());
if(admin.getUsertype().equals("管理员")){
return "redirect:messageList";
}else{
return "redirect:messageItems";
}
}
//删除留言
@RequestMapping("/admin/messageDelAll")
public String messageDelAll(HttpServletRequest request) {
User admin = (User)request.getSession().getAttribute("admin");
String vals = request.getParameter("vals");
return map;
}
public static int getBetweenDayNumber(String dateA, String dateB) {
long dayNumber = 0;
//1小时=60分钟=3600秒=3600000
long mins = 60L * 1000L;
//long day= 24L * 60L * 60L * 1000L;计算天数之差
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
try {
Date d1 = df.parse(dateA);
Date d2 = df.parse(dateB);
dayNumber = (d2.getTime() - d1.getTime()) / mins;
} catch (Exception e) {
e.printStackTrace();
}
return (int) dayNumber;
}
public static String getselect(String name,String tablename,String zdname)
{
String select = "<select name=\""+name+"\" id=\""+name+"\" >";
for(HashMap permap:new CommDAO().select("select * from "+tablename+" order by id desc")){
select+="<option value=\""+permap.get(zdname)+"\">"+permap.get(zdname)+"</option>";
}
select+="</select>";
return select;
}
public static String getselect(String name,String tablename,String zdname,String where)
{
String select = "<select name=\""+name+"\" id=\""+name+"\" >";
select+="<option value=\"\">不限</option>";
for(HashMap permap:new CommDAO().select("select * from "+tablename+" where "+where+" order by id desc")){
String optionstr = "";
if(zdname.split(";").length==1){
optionstr=permap.get(zdname.split("~")[0]).toString();
}else{
for(String str:zdname.split(";"))
{
String zdstr = str.split("~")[0];
String zdnamestr = str.split("~")[1].equals("无名")?"":(str.split("~")[1]+":");
optionstr+=zdnamestr+permap.get(zdstr)+" - ";
Date startDate = df.parse(stime);
Date endDate = df.parse(etime);
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 getAutoId(){
String dateString="";
try{//yyyyMMddHHmmss
java.text.SimpleDateFormat formatter=new java.text.SimpleDateFormat("MMddhhmmss");
java.util.Date currentTime_1=new java.util.Date();
dateString=formatter.format(currentTime_1);
}catch(Exception e){
}
return dateString;
}
//过滤html标签
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标签的正则表达式
String totalstr = "";
for(Cart cart:cartlist){
Product product = productDAO.findById(Integer.parseInt(cart.getProductid()));
Ordermsgdetails ordermsgdetails = new Ordermsgdetails();
ordermsgdetails.setOrderno(orderno);
ordermsgdetails.setProductid(cart.getProductid());
ordermsgdetails.setNum(cart.getNum());
ordermsgdetails.setMemberid(String.valueOf(member.getId()));
ordermsgdetailsDAO.add(ordermsgdetails);
double jg =0.0;
if(product.getTprice()>0){
jg=product.getTprice();
}else{
jg=product.getPrice();
}
if(member.getUtype().equals("普通用户")){
total+=Double.parseDouble(String.valueOf(cart.getNum()))*jg;
}else{
total+=0.8 * Double.parseDouble(String.valueOf(cart.getNum()))*jg;
}
}
totalstr = String.format("%.2f", total);
Ordermsg ordermsg = new Ordermsg();
ordermsg.setOrderno(orderno);
ordermsg.setMemberid(member.getId());
ordermsg.setSaver(Integer.parseInt(savercart.getShopid()));
ordermsg.setTotal(totalstr);
ordermsg.setAddrid(Integer.parseInt(addrid));
ordermsg.setFkstatus("待付款");
ordermsgDAO.add(ordermsg);
for(Cart ctt:cartlist){
cartDAO.delCart(ctt.getId());
}
}
return "redirect:orderSuc";
}else{
return "redirect:addressMsg";
}
}
//修改商家
@RequestMapping("/admin/userEdit")
public String userEdit(User u, HttpServletRequest request) {
userDAO.update(u);
return "redirect:userList";
}
//删除商家
@RequestMapping("/admin/userDelAll")
public String userDelAll(HttpServletRequest request, HttpServletResponse response) {
String vals = request.getParameter("vals");
String[] val = vals.split(",");
for (int i = 0; i < val.length; i++) {
User user = userDAO.findById(Integer.parseInt(val[i]));
user.setDelstatus("1");
userDAO.update(user);
}
return "redirect:userList";
}
@RequestMapping("shopRegister")
public String shopRegister(User u, HttpServletRequest request, RedirectAttributes redirectAttributes) {
u.setShstatus("待审核");
u.setIsjy("正常");
u.setIsyy("正在营业");
userDAO.add(u);
redirectAttributes.addFlashAttribute("message", "注册成功,等待管理员审核");
return "redirect:skip?flag=shopregister";
}
//审核店铺
@RequestMapping("admin/updateShstatus")
public String updateShstatus(User u, HttpServletRequest request) {
String type = request.getParameter("type");
if (type.equals("tg")) {
u.setShstatus("通过审核");
} else {
u.setShstatus("拒绝");
}
userDAO.update(u);
}else{
product.setIssj("yes");
}
product.setId(id);
productDAO.updateStatus(product);
return "redirect:productList";
}
//人气排行
@RequestMapping("popularityProduct")
public String popularityProduct(HttpServletRequest request){
String index = request.getParameter("index");
int pageindex = 1;
if(index!=null){
pageindex = Integer.parseInt(index);
}
Page<Object> page = PageHelper.startPage(pageindex,6);
List<Product> list = productDAO.selectVote();
request.setAttribute("list", list);
saveobject.getCategoryObject(request);
saveobject.getCartObject(request);
request.setAttribute("index", page.getPageNum());
request.setAttribute("pages", page.getPages());
request.setAttribute("total", page.getTotal());
return "votelist";
}
//设置特价
@RequestMapping("admin/updateTprice")
public String updateTprice(Product product, HttpServletRequest request){
productDAO.updateTprice(product);
return "redirect:productList";
}
//设置推荐
@RequestMapping("admin/updateIstj")
public String updateIstj(int id, HttpServletRequest request){
Product product = productDAO.findById(id);
if(product.getIstj().equals("yes")){
product.setIstj("no");
}else{
product.setIstj("yes");
}
productDAO.update(product);
String totalstr = "";
double total = 0.0;
for (Cart cart:cartlist) {
Member m = memberDAO.findById(Integer.parseInt(cart.getMemberid()));
Product product = productDAO.findById(Integer.parseInt(cart.getProductid()));
cart.setMember(m);
cart.setProduct(product);
double jg =0.0;
if(product.getTprice()>0){
jg=product.getTprice();
}else{
jg=product.getPrice();
}
total += Double.parseDouble(String.valueOf(cart.getNum()))* jg;
double doublesubtotal = Double.parseDouble(String.valueOf(cart.getNum()))*jg;
cart.setSubtotal(String.format("%.2f", doublesubtotal));
}
totalstr = String.format("%.2f", total);
request.getSession().setAttribute("cartlist", cartlist);
request.getSession().setAttribute("totalstr", totalstr);
}
out.println("0");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//修改购物车
@RequestMapping("EditNum")
public void EditNum(HttpServletRequest request, HttpServletResponse response) {
PrintWriter out;
try {
out = response.getWriter();
String id = request.getParameter("id");
String num = request.getParameter("num");
Cart ct = new Cart();
ct.setId(Integer.parseInt(id));
ct.setNum(Integer.parseInt(num));
cartDAO.updateNum(ct);
out.println("0");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//结算