基于javaweb+mysql的网上订餐在线点餐管理系统(前台、后台)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
前台用户:查看菜品、点餐下单、确认收货、评论等……
后台管理员:管理用户、订单、分类、交易、公告等……
前台
后台
技术框架
SpringBoot SpringMVC MyBatis JSP JavaScript jQuery……
productService.deleteAllProduct(id);
return "redirect:/admin/toProductList";
}
/**
* * 更改商品状态
*/
@GetMapping("/admin/updateProductStatus")
public String updateProductStatus(Product product, RedirectAttributes redirectAttributes){
if(product.getStatus()==0){
if(productService.findProductBannerByProductId(product.getId()) != null) {
redirectAttributes.addAttribute("errorInfo","请取消热门关联再进行操作");
return "redirect:/admin/toProductList";
}
}
productService.updateProductStatusById(product);
return "redirect:/admin/toProductList";
}
/**
* 后台展示商品分类
for ( int i = 0, len = jsonArray.length(); i < len; i++ ) {
result[i] = jsonArray.getString( i );
}
return result;
}
private String readFile ( String path ) throws IOException {
StringBuilder builder = new StringBuilder();
try {
InputStreamReader reader = new InputStreamReader( new FileInputStream( path ), "UTF-8" );
BufferedReader bfReader = new BufferedReader( reader );
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
后端product模块相关的controller
<!-- 修改公告-->
<div class="sort_style_add margin" id="updateNotice" style="display:none">
<div class="">
<ul>
<li><label class="label_name">公告标题</label><div class="col-sm-9"><input name="utitle" type="text" id="form-field-22" placeholder="" class="col-xs-10 col-sm-5"></div></li>
<li><label class="label_name">公告说明</label><div class="col-sm-9"><textarea name="ucontent" class="form-control" id="form-field-2" placeholder="" onkeyup="checkLength(this);"></textarea><span class="wordage">剩余字数:<span id="sy3" style="color:Red;">200</span>字</span></div></li>
<li><label class="label_name">公告状态</label>
<span class="add_content">
<label>
<input name="ustatus" type="radio" checked="checked" class="ace" value="1"><span class="lbl">显示</span>
</label>
<label>
<input name="ustatus" type="radio" class="ace" value="0"><span class="lbl" >隐藏</span>
</label>
</span>
</li>
</ul>
</div>
</div>
</form>
</body>
</html>
<script type="text/javascript">
function formSubmit (url,sTarget){
document.forms[0].target = sTarget
}
@RequestMapping("/admin/ansEva")
public String ansEva(String orderId,String ansContent,Integer orderStatus){
evaService.saveAnsEva(orderId,ansContent);
orderService.updateOrderStatus(orderStatus,orderId);
return "redirect:/admin/toOrderList";
}
//跳转到订单详情页面
@RequestMapping("/admin/orderDetailed")
public String orderDetailed(String orderId,Model model){
Order order = orderService.findListByOrderId(orderId);
model.addAttribute("order",order);
return "/admin/order/order_detailed";
}
/**
* 根据订单状态查询订单
*/
@RequestMapping("/admin/searchOrderList")
public String searchOrderList(Integer status,Model model){
List<Order> orderList = orderService.findOrderByStatus(status);
model.addAttribute("orderList",orderList);
return "/admin/toOrderList";
}
<span class="add_content">
<label>
<input name="ustatus" type="radio" checked="checked" class="ace" value="1"><span class="lbl">显示</span>
</label>
<label>
<input name="ustatus" type="radio" class="ace" value="0"><span class="lbl" >隐藏</span>
</label>
</span>
</li>
</ul>
</div>
</div>
</form>
</body>
</html>
<script type="text/javascript">
function formSubmit (url,sTarget){
document.forms[0].target = sTarget
document.forms[0].action = url;
document.forms[0].submit();
return true;
}
</div>
<div class="row">
<label><var id="lang_input_vhspace"></var></label>
<span><input class="text" type="text" id="vhSpace"/>px </span>
</div>
<div class="row">
<label><var id="lang_input_title"></var></label>
<span><input class="text" type="text" id="title"/></span>
</div>
</div>
<div class="right"><div id="preview"></div></div>
</div>
<!-- 上传图片 -->
<div id="upload" class="panel focus">
</c:forEach>
</tbody>
</table>
</form>
</div>
</div>
</div>
</div>
<!--添加管理员-->
<div id="add_administrator_style" class="add_menber" style="display:none">
<form action="<%=request.getContextPath()%>/addAdmin" id="form-admin-add">
<div class="form-group">
<label class="form-label"><span class="c-red">*</span>管理员:</label>
<div class="formControls">
<input type="text" class="input-text" placeholder="" id="user-name" name="username" datatype="*2-16" nullmsg="用户名不能为空">
</div>
<div class="col-4"> <span class="Validform_checktip"></span></div>
</div>
<div class="form-group">
<label class="form-label"><span class="c-red">*</span>真实姓名:</label>
<div class="formControls">
<input type="text" class="input-text" placeholder="" id="user-realname" name="userInfo.realName" datatype="*2-16" nullmsg="用户名不能为空">
</div>
<div class="col-4"> <span class="Validform_checktip"></span></div>
List<Product> HotProductList = productService.findHotProductList();
PageInfo<Product> p = new PageInfo<Product>(productConditionList);
model.addAttribute("productList", productConditionList);
model.addAttribute("kindId", kindId);
model.addAttribute("HotProductList", HotProductList);
model.addAttribute("pages", p);
return "/pages/list/list2";
}
@GetMapping("/findProductByCategory")
public String findProductByCategory(@RequestParam(required = true, defaultValue = "1") Integer page,Integer kindId,Model model){
PageHelper.startPage(page, 4);
List<Product> productList = productService.findProductByCategory(kindId);
List<Product> HotProductList = productService.findHotProductList();
PageInfo<Product> p = new PageInfo<Product>(productList);
model.addAttribute("productList", productList);
model.addAttribute("kindId", kindId);
model.addAttribute("HotProductList", HotProductList);
model.addAttribute("pages", p);
return "/pages/list/list2";
}
<!--[if lte IE 8]>
<link rel="stylesheet" href="${pageContext.request.contextPath}/back/assets/css/ace-ie.min.css" />
<![endif]-->
<script src="${pageContext.request.contextPath}/back/js/jquery-1.9.1.min.js"></script>
<script src="${pageContext.request.contextPath}/back/assets/js/bootstrap.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/back/Widget/Validform/5.3.2/Validform.min.js"></script>
<script src="${pageContext.request.contextPath}/back/assets/js/typeahead-bs2.min.js"></script>
<script src="${pageContext.request.contextPath}/back/assets/js/jquery.dataTables.min.js"></script>
<script src="${pageContext.request.contextPath}/back/assets/js/jquery.dataTables.bootstrap.js"></script>
<script src="${pageContext.request.contextPath}/back/assets/layer/layer.js" type="text/javascript" ></script>
<script src="${pageContext.request.contextPath}/back/js/lrtk.js" type="text/javascript" ></script>
<script src="${pageContext.request.contextPath}/back/assets/layer/layer.js" type="text/javascript"></script>
<script src="${pageContext.request.contextPath}/back/assets/laydate/laydate.js" type="text/javascript"></script>
return "redirect:/index";
}
@RequestMapping("/aboutUs")
public String aboutUs(){
return "/pages/other/about_us";
}
@RequestMapping("/userLogout")
public String userLogout(HttpSession httpSession){
//将user对象从session域中删除
httpSession.removeAttribute("user");
//页面应该跳转到登陆页面
return "redirect:/index";
}
}
package com.demo.controller.web;
import com.demo.entity.Evaluate;
import com.demo.entity.Order;
import com.demo.entity.vo.OrderExcelExportVO;
</div>
<div class="TurnPage" align="center">
<a href="/admin/toOrderList?page=${page.navigateFirstPage}">
<span class="Prev"><i></i>首页</span>
</a>
<a class="PNumber">第${page.pageNum}页</a>
<c:if test="${page.pageNum > 1}"> <a href="/admin/toOrderList?page=${page.prePage}"><span class="PNumber">上一页</span></a></c:if>
<c:if test="${page.pageNum != page.navigateLastPage}"> <a href="/admin/toOrderList?page=${page.nextPage}"><span class="PNumber">下一页</span></a></c:if>
<a href="/admin/toOrderList?page=${page.navigateLastPage}">
<span class="Next">最后一页<i></i></span>
</a>
<span class="PNumber"><i></i>共${page.pages}页</span>
</div>
</form>
</body>
</html>
<script>
//时间选择
laydate({
elem: '#start',
event: 'focus'
});
// 业务类型
sValue.append(p0_Cmd);
// 商户编号
sValue.append(p1_MerId);
// 商户订单号
sValue.append(p2_Order);
// 支付金额
sValue.append(p3_Amt);
// 交易币种
sValue.append(p4_Cur);
// 商品名称
sValue.append(p5_Pid);
// 商品种类
sValue.append(p6_Pcat);
// 商品描述
sValue.append(p7_Pdesc);
// 商户接收支付成功数据的地址
sValue.append(p8_Url);
// 送货地址
sValue.append(p9_SAF);
// 商户扩展信息
while ( ( tmpContent = bfReader.readLine() ) != null ) {
builder.append( tmpContent );
}
bfReader.close();
} catch ( UnsupportedEncodingException e ) {
// 忽略
}
return this.filter( builder.toString() );
}
// 过滤输入字符串, 剔除多行注释以及替换掉反斜杠
private String filter ( String input ) {
return input.replaceAll( "/\\*[\\s\\S]*?\\*/", "" );
if (!imageUrl.isEmpty()){
try{
fos = new FileOutputStream(path + newPicName);
in = imageUrl.getInputStream();
int b = 0;
while((b = in.read()) != -1){
fos.write(b);
}
//2-3关闭流
fos.close();
in.close();
}catch (Exception e){
e.printStackTrace();
}
}
//3-保存商品的信息到数据库中
product.setImageUrl(localPath+newPicName);
productService.addOne(product);
return "redirect:/admin/toProductList";
}
/**