基于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
return "creatorder";
}
//清空购物车
@RequestMapping("carDel")
public String delCart(HttpServletRequest request) {
Member member = (Member)request.getSession().getAttribute("sessionmember");
if(member!=null){
HashMap map = new HashMap();
map.put("memberid",member.getId());
List<Cart> list = cartDAO.selectAll(map);
for(Cart cart:list){
cartDAO.delCart(cart.getId());
}
return "redirect:cartList";
}else{
return "login";
}
}
}
@Controller
public class MemberController extends BaseController {
@Resource
MemberDAO memberDAO;
@Resource
@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);
double jg =0.0;
if(product.getTprice()>0){
jg=product.getTprice();
}else{
jg=product.getPrice();
}
if(member.getUtype().equals("普通用户")){
total+=Double.parseDouble(String.valueOf(cartlist.get(i).getNum()))*jg;
}else{
total+=0.8 * Double.parseDouble(String.valueOf(cartlist.get(i).getNum()))*jg;
}
double subtotal=0D;
if(member.getUtype().equals("普通用户")){
subtotal = Double.parseDouble(String.valueOf(cartlist.get(i).getNum()))*jg;
}else{
subtotal+=0.8 * Double.parseDouble(String.valueOf(cartlist.get(i).getNum()))*jg;
}
String subtotalstr = String.format("%.2f", subtotal);
cartlist.get(i).setSubtotal(subtotalstr);
}
totalstr = String.format("%.2f", total);
request.setAttribute("cartlist", cartlist);
jscode+="<font οnclick=\"uploaddoc()\" src=\"js/nopic.jpg\" style='cursor:hand' id=txt >点击此处上传</font>";
jscode+=" <input type=text readonly style='border:0px' size=30 name=\"docname\" id=\"docname\" value=\"\" />";
return jscode;
}
public static String tform(HashMap map)
{
String jscode = "";
try{
jscode+="<script type=\"text/javascript\">\n";
jscode+="function getPvalue()\n";
jscode+="{\n";
Set set = map.entrySet();
Iterator it = set.iterator();
while(it.hasNext())
{
String pm=((Object)it.next()).toString();
String str1 = "";
String str2 = "";
String[] strs = pm.split("=");
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";
request.setAttribute("newslist", newslist);
request.getSession().setAttribute("pclist", pclist);
request.setAttribute("shoplist", shoplist);
return "index";
}
//菜品搜索
@RequestMapping("searchProductname")
public String searchProductname(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,String productname, HttpServletRequest request) {
String key = request.getParameter("key");
String key1 = request.getParameter("key1");
String key2 = request.getParameter("key2");
HashMap map = new HashMap();
map.put("key", key);
map.put("key1", key1);
map.put("key2", key2);
PageHelper.startPage(pageNum, 10);
List<Product> list = productDAO.selectProductname(map);
PageInfo<Product> pageInfo = new PageInfo<Product>(list);
request.setAttribute("pageInfo", pageInfo);
request.setAttribute("key", key);
request.setAttribute("key1", key1);
request.setAttribute("key2", key2);
saveobject.getCartObject(request);
saveobject.getCategoryObject(request);
return "searchproductname";
}
//页面跳转
@RequestMapping("skip")
public String skip(HttpServletRequest request) {
String flag = request.getParameter("flag")==null?"":request.getParameter("flag");
saveobject.getCategoryObject(request);
if(flag.equals("login")){
return "login";
}else if(flag.equals("register")){
return "register";
}else{
return "shopregister";
}
}
List<News> newslist = newsDAO.selectAll(map);
About about = aboutDAO.findById(1);
saveobject.getCategoryObject(request);
saveobject.getCartObject(request);
saveobject.getBrand(request);
//其它
request.setAttribute("about", about);
request.setAttribute("newslist", newslist);
request.getSession().setAttribute("pclist", pclist);
request.setAttribute("shoplist", shoplist);
return "index";
}
//菜品搜索
@RequestMapping("searchProductname")
public String searchProductname(@RequestParam(defaultValue = "1",value = "pageNum") Integer pageNum,String productname, HttpServletRequest request) {
String key = request.getParameter("key");
String key1 = request.getParameter("key1");
String key2 = request.getParameter("key2");
HashMap map = new HashMap();
map.put("key", key);
map.put("key1", key1);
map.put("key2", key2);
PageHelper.startPage(pageNum, 10);
List<Product> list = productDAO.selectProductname(map);
PageInfo<Product> pageInfo = new PageInfo<Product>(list);
request.setAttribute("pageInfo", pageInfo);
request.setAttribute("key", key);
request.setAttribute("key1", key1);
request.setAttribute("key2", key2);
saveobject.getCartObject(request);
saveobject.getCategoryObject(request);
return "searchproductname";
}
//页面跳转
@RequestMapping("skip")
public String skip(HttpServletRequest request) {
String flag = request.getParameter("flag")==null?"":request.getParameter("flag");
saveobject.getCategoryObject(request);
if(flag.equals("login")){
return "login";
}else if(flag.equals("register")){
return "register";
}else{
return "shopregister";
}
}
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");
}
bis = new BufferedInputStream((InputStream)new FileInputStream(request.getSession().getServletContext().getRealPath("upload")+"/"+filename));
fos = response.getOutputStream();
bos = new BufferedOutputStream(fos);
int bytesRead = 0;
byte[] buffer = new byte[5 * 1024];
while ((bytesRead = bis.read(buffer)) != -1) {
bos.write(buffer, 0, bytesRead);
}
bos.close();
bis.close();
fos.close();
// new Info().delPic(request.getRealPath("/upfile/")+"/", filename);
} catch (Exception e) {
e.printStackTrace();
}finally{
}
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
@Controller
public class NewsController extends BaseController {
try {
str = new String(str.getBytes("ISO-8859-1"),"utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
public static String getGBKStr(String str) throws UnsupportedEncodingException{
if(str==null){
return "";
}
return new String(str.getBytes("ISO-8859-1"),"GBK");
}
public static String getGB2312Str(String str) throws UnsupportedEncodingException{
if(str==null){
return "";
}
return new String(str.getBytes("ISO-8859-1"),"gb2312");
}
/**
*/
public static String getDay(String date,int day) {
String b = date.substring(0,10);
String c = b.substring(0,4);
String d = b.substring(5,7);
String f = b.substring(8,10);
String aa = c+"/"+d+"/"+f;
String a = "";
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
GregorianCalendar grc=new GregorianCalendar();
grc.setTime(new Date(aa));
grc.add(GregorianCalendar.DAY_OF_MONTH,day);
String resu = dateFormat.format(grc.getTime());
String t[]= resu.split("-");
sourceLowcase=subLowcase1+subLowcase2;
source=sub1+sub2;
}
//System.out.println(start+" "+end);
}
return source;
}
//计算两个时间间隔多少小时
public static Long getDatePoor(String stime, String etime) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long hournum = 0;
try {
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){
}
String sql = "insert into " + tablename + "(";
Connection conn = this.getConn();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select * from " + tablename);
ResultSetMetaData rsmd = rs.getMetaData();
int i = rsmd.getColumnCount();
for (int j = 1; j <= i; j++) {
if (rsmd.getColumnName(j).equals("id")) continue;
typemap.put(rsmd.getColumnName(j) + "---", rsmd.getColumnTypeName(j));
collist.add(rsmd.getColumnName(j));
sql += rsmd.getColumnName(j) + ",";
}
sql = sql.substring(0, sql.length() - 1);
sql += ") values(";
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
Enumeration enumeration = request.getParameterNames();
String names = ",";
while (enumeration.hasMoreElements()) {
names += enumeration.nextElement().toString() + ",";
}
try {
Statement st = conn.createStatement();
for (String str : collist) {
if (names.indexOf("," + str + ",") > -1) {
String[] values = request.getParameterValues(str);
String value = "";
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-" + str + "-value") != null) {
collist.add(rsmd.getColumnName(j));
if (names.indexOf("," + rsmd.getColumnName(j) + ",") > -1) {
String[] values = request.getParameterValues(rsmd.getColumnName(j));
String value = "";
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-" + rsmd.getColumnName(j) + "-value") != null) {
String dkv = request.getParameter(vstr);
String dknamevalue = request.getParameter("dk-" + rsmd.getColumnName(j) + "-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);
if (rsmd.getColumnTypeName(j).equals("int")) {
sql += rsmd.getColumnName(j) + "=" + value + ",";
} else {
sql += rsmd.getColumnName(j) + "='" + value + "',";
}
} else {
if (extmap.get(rsmd.getColumnName(j)) != null) {
if (rsmd.getColumnTypeName(j).equals("int")) {
sql += rsmd.getColumnName(j) + "=" + extmap.get(rsmd.getColumnName(j)) + ",";
} else {
sql += rsmd.getColumnName(j) + "='" + extmap.get(rsmd.getColumnName(j)) + "',";
}
}
}
}
sql = sql.substring(0, sql.length() - 1);
sql += " where id=" + request.getParameter("id");
System.out.println(sql);
Statement st1 = conn.createStatement();
st1.execute(sql);
st1.close();
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
String str = "";
if (!reflush)
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";
} else {
issj = "no";
}
List<Product> list = productDAO.selectAll(map);
for (Product product : list) {
product.setIssj(issj);
productDAO.updateStatus(product);
}
return "redirect:userList";
}
//钱包
@RequestMapping("admin/yueShow")
public String yueShow(HttpServletRequest request) {
User u = (User) request.getSession().getAttribute("admin");
User user = userDAO.findById(u.getId());
request.setAttribute("shop", user);
return "yue";
}
}
@Controller
public class CartController extends BaseController {
@Resource
CartDAO cartDAO;
@Resource
MemberDAO memberDAO;
@Resource
ProductDAO productDAO;
@Resource
CategoryDAO categoryDAO;
nlist.add("'"+product.getProductname()+"'");
slist.add(product.getVote());
}
request.setAttribute("nlist", nlist);
request.setAttribute("slist", slist);
return "tjvoteproduct";
}
//销售额
@RequestMapping("admin/saleMoney")
public String saleMoney(HttpServletRequest request) {
User admin = (User)request.getSession().getAttribute("admin");
HashMap map = new HashMap();
if(admin.getUsertype().equals("商家")){
map.put("saver",admin.getId());
}
List<Ordermsg> olist = ordermsgDAO.selectSaleMoney(map);
//ArrayList nslist = new ArrayList();
ArrayList nlist = new ArrayList();
ArrayList slist = new ArrayList();
for(Ordermsg ordermsg:olist){
nlist.add("'"+ordermsg.getSavetime()+"'");
slist.add(ordermsg.getTotal());
}
request.setAttribute("nlist", nlist);
request.setAttribute("slist", slist);
return "tjsalemoney";
}
//订单量
@RequestMapping("admin/orderNum")
public String orderNum(HttpServletRequest request) {
User admin = (User)request.getSession().getAttribute("admin");
HashMap map = new HashMap();
if(admin.getUsertype().equals("商家")){
map.put("saver",admin.getId());
}
List<Ordermsg> olist = ordermsgDAO.orderNum(map);
//ArrayList nslist = new ArrayList();
ArrayList nlist = new ArrayList();
ArrayList slist = new ArrayList();
for(Ordermsg ordermsg:olist){
nlist.add("'"+ordermsg.getSavetime()+"'");
slist.add(ordermsg.getOrderno());
}
// System.out.println("nlist==="+nlist);
// System.out.println("slist==="+slist);
request.setAttribute("nlist", nlist);
request.setAttribute("slist", slist);
return "tjordernum";
}
if(start==-1) {
break;
}
subLowcase1=sourceLowcase.substring(0,start);
sub1=source.substring(0,start);
end=sourceLowcase.indexOf(to,start);
if(end==-1){
end=sourceLowcase.indexOf("/>",start);
if(end==-1) {
done=false;
}
}
else{
end=end+to.length();
subLowcase2=sourceLowcase.substring(end,source.length());
sub2=source.substring(end,source.length());
sourceLowcase=subLowcase1+subLowcase2;
source=sub1+sub2;
}
//System.out.println(start+" "+end);
}
return source;
}
//计算两个时间间隔多少小时
public static Long getDatePoor(String stime, String etime) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long hournum = 0;
try {
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;
// 计算差多少小时
map.put("key1", key1);
if(admin.getUsertype().equals("商家")){
map.put("saver",admin.getId());
}
List<Product> plist = productDAO.selectProductAll(map);
//ArrayList nslist = new ArrayList();
ArrayList nlist = new ArrayList();
ArrayList slist = new ArrayList();
for(Product product:plist){
List<Ordermsgdetails> ordermsgdetailslist = ordermsgdetailsDAO.selectSale(product.getId());
int i =0;
nlist.add("'"+product.getProductname()+"'");
if(ordermsgdetailslist.size()==0){
slist.add(i);
}else{
for(Ordermsgdetails ordermsgdetails:ordermsgdetailslist){
i+=ordermsgdetails.getNum();
}
slist.add(i);
}
}
request.setAttribute("key", key);
request.setAttribute("key1", key1);
request.setAttribute("nlist", nlist);
request.setAttribute("slist", slist);
return "tjsaleproduct";
}
//点赞统计
@RequestMapping("admin/voteProduct")
public String voteProduct(HttpServletRequest request) {
User admin = (User)request.getSession().getAttribute("admin");
HashMap map = new HashMap();
if(admin.getUsertype().equals("商家")){
map.put("saver",admin.getId());
}
List<Product> plist = productDAO.selectAll(map);
//ArrayList nslist = new ArrayList();
ArrayList nlist = new ArrayList();
ArrayList slist = new ArrayList();
for(Product product:plist){
nlist.add("'"+product.getProductname()+"'");
slist.add(product.getVote());
}
request.setAttribute("nlist", nlist);
request.setAttribute("slist", slist);
return "tjvoteproduct";
}
//销售额
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");
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";
}
}
}
@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
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);