基于javaweb+mysql的网上订餐在线点餐管理系统(前台、后台)

基于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"> &nbsp;&nbsp;
                        <label>
                            <input name="ustatus" type="radio" checked="checked" class="ace" value="1"><span class="lbl">显示</span>
                        </label>&nbsp;&nbsp;&nbsp;
                        <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"> &nbsp;&nbsp;
                        <label>
                            <input name="ustatus" type="radio" checked="checked" class="ace" value="1"><span class="lbl">显示</span>
                        </label>&nbsp;&nbsp;&nbsp;
                        <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";
    }

    /**

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值