IE盒子

搜索
查看: 115|回复: 0

基于Java的外卖点餐系统

[复制链接]

2

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2023-3-3 02:54:42 | 显示全部楼层 |阅读模式
计算机毕设小程主页

一、开发介绍


  • 1.1开发环境
  • 开发语言:Java
  • 数据库:MySQL
  • 系统架构:B/S
  • 后端:Springboot / SSM(Spring+SpringMVC+Mybatis)
  • 前端:Vue
  • 工具:IDEA或者Eclipse、JDK1.8、Maven
二、项目介绍

2.1视频展示

2.2图片展示

用户登录模块:



首页模块:


美食店铺模块:






用户订单模块:




个人信息模块:


注册商家:


商家菜单管理模块:


商家订单管理:


商家店铺信息管理模块:


管理员模块:
用户管理:


商家管理:


订单管理:


三、部分代码设计

/**
* Mybatis-Plus工具类
*/
public class MPUtil {
        public static final char UNDERLINE = '_';


        //mybatis plus allEQ 表达式转换
                public static Map allEQMapPre(Object bean,String pre) {
                   Map<String, Object> map =BeanUtil.beanToMap(bean);
                  return camelToUnderlineMap(map,pre);
           }

                //mybatis plus allEQ 表达式转换
                public static Map allEQMap(Object bean) {
                   Map<String, Object> map =BeanUtil.beanToMap(bean);
                   return camelToUnderlineMap(map,"");
           }

                public static Wrapper allLikePre(Wrapper wrapper,Object bean,String pre) {
                           Map<String, Object> map =BeanUtil.beanToMap(bean);
                           Map result = camelToUnderlineMap(map,pre);

                        return genLike(wrapper,result);
                }

                public static Wrapper allLike(Wrapper wrapper,Object bean) {
                          Map result = BeanUtil.beanToMap(bean, true, true);
                        return genLike(wrapper,result);
                }


                public static Wrapper genLike( Wrapper wrapper,Map param) {
                        Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
                        int i=0;
                        while (it.hasNext()) {
                                if(i>0) wrapper.and();
                                Map.Entry<String, Object> entry = it.next();
                                String key = entry.getKey();
                                String value = (String) entry.getValue();
                                wrapper.like(key, value);
                                i++;
                        }
                        return wrapper;
                }

                public static Wrapper likeOrEq(Wrapper wrapper,Object bean) {
                          Map result = BeanUtil.beanToMap(bean, true, true);
                        return genLikeOrEq(wrapper,result);
                }

                public static Wrapper genLikeOrEq( Wrapper wrapper,Map param) {
                        Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
                        int i=0;
                        while (it.hasNext()) {
                                if(i>0) wrapper.and();
                                Map.Entry<String, Object> entry = it.next();
                                String key = entry.getKey();
                                if(entry.getValue().toString().contains("%")) {
                                        wrapper.like(key, entry.getValue().toString().replace("%", ""));
                                } else {
                                        wrapper.eq(key, entry.getValue());
                                }
                                i++;
                        }
                        return wrapper;
                }

                public static Wrapper allEq(Wrapper wrapper,Object bean) {
                          Map result = BeanUtil.beanToMap(bean, true, true);
                        return genEq(wrapper,result);
                }


                public static Wrapper genEq( Wrapper wrapper,Map param) {
                        Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
                        int i=0;
                        while (it.hasNext()) {
                                if(i>0) wrapper.and();
                                Map.Entry<String, Object> entry = it.next();
                                String key = entry.getKey();
                                wrapper.eq(key, entry.getValue());
                                i++;
                        }
                        return wrapper;
                }


                public static Wrapper between(Wrapper wrapper,Map<String, Object> params) {
                        for(String key : params.keySet()) {
                                String columnName = "";
                                if(key.endsWith("_start")) {
                                        columnName = key.substring(0, key.indexOf("_start"));
                                        if(StringUtils.isNotBlank(params.get(key).toString())) {
                                                wrapper.ge(columnName, params.get(key));
                                        }
                                }
                                if(key.endsWith("_end")) {
                                        columnName = key.substring(0, key.indexOf("_end"));
                                        if(StringUtils.isNotBlank(params.get(key).toString())) {
                                                wrapper.le(columnName, params.get(key));
                                        }
                                }
                        }
                        return wrapper;
                }

                public static Wrapper sort(Wrapper wrapper,Map<String, Object> params) {
                        String order = "";
                        if(params.get("order") != null && StringUtils.isNotBlank(params.get("order").toString())) {
                                order = params.get("order").toString();
                        }
                        if(params.get("sort") != null && StringUtils.isNotBlank(params.get("sort").toString())) {
                                if(order.equalsIgnoreCase("desc")) {
                                        wrapper.orderDesc(Arrays.asList(params.get("sort")));
                                } else {
                                        wrapper.orderAsc(Arrays.asList(params.get("sort")));
                                }
                        }
                        return wrapper;
                }


        /**
         * 驼峰格式字符串转换为下划线格式字符串
         *
         * @param param
         * @return
         */
        public static String camelToUnderline(String param) {
                if (param == null || "".equals(param.trim())) {
                        return "";
                }
                int len = param.length();
                StringBuilder sb = new StringBuilder(len);
                for (int i = 0; i < len; i++) {
                        char c = param.charAt(i);
                        if (Character.isUpperCase(c)) {
                                sb.append(UNDERLINE);
                                sb.append(Character.toLowerCase(c));
                        } else {
                                sb.append(c);
                        }
                }
                return sb.toString();
        }

        public static void main(String[] ages) {
                System.out.println(camelToUnderline("ABCddfANM"));
        }

        public static Map camelToUnderlineMap(Map param, String pre) {

                Map<String, Object> newMap = new HashMap<String, Object>();
                Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
                while (it.hasNext()) {
                        Map.Entry<String, Object> entry = it.next();
                        String key = entry.getKey();
                        String newKey = camelToUnderline(key);
                        if (pre.endsWith(".")) {
                                newMap.put(pre + newKey, entry.getValue());
                        } else if (StringUtils.isEmpty(pre)) {
                                newMap.put(newKey, entry.getValue());
                        } else {

                                newMap.put(pre + "." + newKey, entry.getValue());
                        }
                }
                return newMap;
        }
}
/**
* 查询参数
*/
public class Query<T> extends LinkedHashMap<String, Object> {
        private static final long serialVersionUID = 1L;
    /**
     * mybatis-plus分页参数
     */
    private Page<T> page;
    /**
     * 当前页码
     */
    private int currPage = 1;
    /**
     * 每页条数
     */
    private int limit = 10;

    public Query(JQPageInfo pageInfo) {
            //分页参数
        if(pageInfo.getPage()!= null){
            currPage = pageInfo.getPage();
        }
        if(pageInfo.getLimit()!= null){
            limit = pageInfo.getLimit();
        }


        //防止SQL注入(因为sidx、order是通过拼接SQL实现排序的,会有SQL注入风险)
        String sidx = SQLFilter.sqlInject(pageInfo.getSidx());
        String order = SQLFilter.sqlInject(pageInfo.getOrder());


        //mybatis-plus分页
        this.page = new Page<>(currPage, limit);

        //排序
        if(StringUtils.isNotBlank(sidx) && StringUtils.isNotBlank(order)){
            this.page.setOrderByField(sidx);
            this.page.setAsc("ASC".equalsIgnoreCase(order));
        }
    }


    public Query(Map<String, Object> params){
        this.putAll(params);

        //分页参数
        if(params.get("page") != null){
            currPage = Integer.parseInt((String)params.get("page"));
        }
        if(params.get("limit") != null){
            limit = Integer.parseInt((String)params.get("limit"));
        }

        this.put("offset", (currPage - 1) * limit);
        this.put("page", currPage);
        this.put("limit", limit);

        //防止SQL注入(因为sidx、order是通过拼接SQL实现排序的,会有SQL注入风险)
        String sidx = SQLFilter.sqlInject((String)params.get("sidx"));
        String order = SQLFilter.sqlInject((String)params.get("order"));
        this.put("sidx", sidx);
        this.put("order", order);

        //mybatis-plus分页
        this.page = new Page<>(currPage, limit);

        //排序
        if(StringUtils.isNotBlank(sidx) && StringUtils.isNotBlank(order)){
            this.page.setOrderByField(sidx);
            this.page.setAsc("ASC".equalsIgnoreCase(order));
        }

    }

    public Page<T> getPage() {
        return page;
    }

    public int getCurrPage() {
        return currPage;
    }

    public int getLimit() {
        return limit;
    }
}
<script type="text/javascript">
        var vue = new Vue({
            el: '#app',
            data: {
                menu: menu,
                roles: []
            },
            created(){
                for(let item in this.menu) {
                        if(this.menu[item].hasFrontLogin=='是') {
                                this.roles.push(this.menu[item]);
                        }
                }      
            },
            methods: {
                jump(url) {
                    jump(url)
                }
            }
        })
        layui.use(['layer', 'element', 'carousel', 'form', 'http', 'jquery'], function() {
            var layer = layui.layer;
            var element = layui.element;
            var carousel = layui.carousel;
            var form = layui.form;
            var http = layui.http;
            var jquery = layui.jquery;
               
                function randomString() {
                        var len = 4;
                        var chars = [
                          'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
                          'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
                          'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
                          'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
                          'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2',
                          '3', '4', '5', '6', '7', '8', '9'
                        ]
                        var colors = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
                        var sizes = ['14', '15', '16', '17', '18']
                       
                        var output = []
                        for (var i = 0; i < len; i++) {
                          // 随机验证码
                          var key = Math.floor(Math.random() * chars.length)
                          codes.num = chars[key]
                          // 随机验证码颜色
                          var code = '#'
                          for (var j = 0; j < 6; j++) {
                            var key = Math.floor(Math.random() * colors.length)
                            code += colors[key]
                          }
                          codes.color = code
                          // 随机验证码方向
                          var rotate = Math.floor(Math.random() * 45)
                          var plus = Math.floor(Math.random() * 2)
                          if (plus == 1) rotate = '-' + rotate
                          codes.rotate = 'rotate(' + rotate + 'deg)'
                          // 随机验证码字体大小
                          var size = Math.floor(Math.random() * sizes.length)
                          codes.size = sizes[size] + 'px'
                        }
                       
                        var str = ''
                        for(var i = 0;i<codes.length;i++) {
                                str += '<span style="color:' + codes.color + ';transform:' + codes.rotate + ';fontSize:' + codes.size + ';padding: 0 3px;display:inline-block">'+codes.num+'</span>'
                        }
                        jquery('#nums').html('').append(str);
                }

                jquery('#nums').click(function(){
                        randomString();
                })
               
                randomString();

            // 登录
            form.on('submit(login)', function(data) {
                data = data.field;
                if (vue.roles.length!=1) {
                        if (!data.role) {
                            layer.msg('请选择登录用户类型', {
                                time: 2000,
                                icon: 5
                            });
                            return false;
                        }
                } else {
                        data.role = vue.roles[0].tableName;
                }
                http.request(data.role + '/login', 'get', data, function(res) {
                    layer.msg('登录成功', {
                        time: 2000,
                        icon: 6
                    });
                    // 登录凭证
                    localStorage.setItem('Token', res.token);
                    var roleName = "";
                    if(typeof(jquery('#role:checked').attr('title')) == "undefined") {
                            roleName = vue.roles[0].roleName;
                    } else {
                            roleName = jquery('#role:checked').attr('title');
                    }
                    localStorage.setItem('role', roleName);
                    // 当前登录用户角色
                    localStorage.setItem('userTable', data.role);
                    localStorage.setItem('sessionTable', data.role);
                    // 用户名称
                    localStorage.setItem('adminName', data.username);
                    http.request(data.role + '/session', 'get', {}, function(res) {
                        // 用户id
                        localStorage.setItem('userid', res.data.id);
                            if(res.data.vip) {
                                localStorage.setItem('vip', res.data.vip);
                            }
                        // 路径访问设置
                        window.location.href = '../../index.html';
                    })
                    
                });
                return false
            });

        });

        /**
         * 跳转登录
         * @param {Object} tablename
         */
        function registerClick(tablename) {
            window.location.href = '../' + tablename + '/register.html?tablename=' + tablename;
        }
    </script>总结

大家可以帮忙点赞、收藏、关注、评论啦

有问题评论区交流
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表