# yidian-security **Repository Path**: renqing-codebase/yidian-security ## Basic Information - **Project Name**: yidian-security - **Description**: 提供给餐饮企业的外卖点单项目。后台管理端可以对餐厅的菜品、套餐、订单等进行管理 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2022-11-05 - **Last Updated**: 2025-01-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 一点外卖项目 #### 项目介绍 ------ - 本项目(一点外卖)旨在专门为餐饮企业(餐厅、饭店)定制的一款软件产品,包括系统管理后台和移动端应用两部分。 - 其中系统管理后台基于人人开源项目实现,采用SpringBoot、Shiro、MyBatis-Plus框架,开发的一套权限系统,主要提供给餐饮企业内部员工使用,可以对餐厅的菜品、套餐、订单等进行管理维护。开源项目地址:https://gitee.com/renrenio/renren-security - 移动端使用uni-app开发微信小程序实现,支持微信登录、Redis缓存、quartz定时、导出数据等功能。主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单等。 - 小程序客户端地址:https://gitee.com/renqing-codebase/yidian-restaurant - 后台地址:[http://localhost:8001(账号密码:admin/admin)](http://localhost:8001%EF%BC%88%E8%B4%A6%E5%8F%B7%E5%AF%86%E7%A0%81%EF%BC%9Aadmin/admin%EF%BC%89) - 后台接口文档地址: - 微信小程序接口文档地址: 您的star是我坚持的动力,感谢大家的支持,欢迎提交pr共同改进项目。 ------ #### 目录结构 ------ 后台前端项目位于renren-ui下 SQL文件位于根目录下的yidian_security.sql,需要MYSQL8以上版本。 **ps:请先运行后端项目,再启动前端项目。** ``` yidian-security │ ├─renren-admin 管理后台 │ ├─db 数据库SQL脚本 │ │ │ ├─modules 模块 │ │ ├─job 定时任务 │ │ ├─log 日志管理 │ │ ├─oss 文件存储 │ │ ├─security 安全模块 │ │ ├─sys 系统管理(核心) | | └─demo 外卖业务模块(核心) │ │ │ └─resources │ ├─mapper MyBatis文件 │ ├─public 静态资源 │ └─application.yml 全局配置文件 │ │ ├─renren-api 外卖小程序后台服务 │ ├─renren-common 公共模块 ├─renren-generator 代码生成器 │ └─resources │ ├─mapper MyBatis文件 │ ├─template 代码生成器模板(可增加或修改相应模板) │ ├─application.yml 全局配置文件 │ └─generator.properties 代码生成器,配置文件 │ ├─renren-ui 后台管理Vue前端项目 ``` ------ #### 项目特点 ------ - 友好的代码结构及注释,便于阅读及二次开发 - 实现前后端分离,通过token进行数据交互 - 支持动态权限修改,采用RBAC模型,前端菜单和后台权限实时更新。 - 提供CrudService接口,对增删改查进行封装,代码更简洁 - 页面交互使用Vue2.x,极大的提高了开发效率 - 完善的部门管理及数据权限,通过注解实现数据权限的控制 - 完善的XSS防范及脚本过滤,彻底杜绝XSS攻击 - 完善的代码生成机制,可在线生成entity、xml、dao、service、vue、sql代码,减少70%以上的开发任务 - 引入quartz定时任务,可动态完成任务的添加、修改、删除、暂停、恢复及日志查看等功能 - 引入Hibernate Validator校验框架,轻松实现后端校验 - 引入云存储服务,已支持:七牛云、阿里云、腾讯云等 - 引入swagger文档支持,方便编写API接口文档 - 新增AOP注解实现日志管理。 - 代码遵循阿里巴巴开发规范,利于开发者学习。 ------ #### 技术选型 ------ - 用户层:H5,Vue 2.x,ElementUI 2.x ,uni-app - 网关层:nginx 1.18 - 应用层:Spring Boot 2.7.1,SpringMVC,Swagger,Lombok,Logback,Apache Shiro 1.9 - 数据层:MySQL 8,Druid 1.2,MyBatis 3.5,MyBatis Plus ,Redis,SpringCache - 工具:git,maven,Junit ------ #### 功能架构 ------ ![](https://jsd.cdn.zzko.cn/gh/Idolthon/images@main/6cc8bdfe9cc5b03a7b36bdb51cfeb084.png) ------ #### 开发环境 ------ | 说明 | 开发工具 | | ------------------ | ----------------------------- | | Java开发工具IDE | IDEA | | Vue开发工具IDE | WebStrom或者VS Code | | MySQL远程连接工具 | Navicat | | Redis远程连接工具 | Another Redis Desktop Manager | | Linux远程连接工具 | FinalShell | | 编译微信小程序工具 | HBuilder X | | 开发环境 | 版本 | | -------- | ------ | | JDK | 1.8 | | MySQL | 8.0.29 | | Redis | 6.0.5 | | Maven | 3.8 | | NodeJs | 12.x.x | | Nginx | 1.18.0 | ------ #### 项目截图 ------ ![66981325365](https://jsd.cdn.zzko.cn/gh/Idolthon/images@main/1669813253654.png?raw=true)![66981797545](https://jsd.cdn.zzko.cn/gh/Idolthon/images@main/1669817975454.png?raw=true) ![66982709589](https://jsd.cdn.zzko.cn/gh/Idolthon/images@main/1669827095890.png?raw=true) ![66982713823](https://jsd.cdn.zzko.cn/gh/Idolthon/images@main/1669827138233.png?raw=true) ------ #### 快速开始 ------ - 通过git下载源码 - idea、eclipse需安装lombok插件,不然会提示找不到entity的get set方法 - 创建数据库yidian_security,数据库编码为UTF-8mb4 - 执行yidian_security.sql文件,初始化数据 - 修改application-dev.yml文件,更新MySQL账号和密码等相关配置信息 - 修改application.yml文件,更新redis等相关配置信息 - 在renren-api模块下,修改application.yml文件,更新微信小程序配置 ``` weixin: getPhoneNumberUrl: getAccessTokenUrl: jscode2sessionUrl: appid: secret: ``` ------ ##### 安装Nodejs环境(如果有请忽略) ------ - NodeJs版本不要安装太高,13.x-14.x最好 - 附上一个下载链接: - 具体配置环境变量等请自行百度一下找一下教程,步骤很简单。 ##### 运行后台管理系统前端项目 配置好Nodejs环境之后就可以打开后台管理前端源代码 - 打开终端输入 ``` npm install ``` - 等待安装依赖完成后,输入 ``` npm run serve ``` 等待编译完成后,会自动打开页面,或者访问 ##### 云存储配置 登录后进入系统设置,文件上传,填写自己的云存储配置(填写一样即可),确定保存并退出 ![66988182033](https://jsd.cdn.zzko.cn/gh/Idolthon/images@main/1669881820330.png?raw=true) 微信小程序端 设置如下 : ![](https://jsd.cdn.zzko.cn/gh/Idolthon/images@main/Snipaste_2022-12-02_16-46-44.png) 我用的是七牛云,具体云空间配置请自行百度。 ------ ##### 安装以及修改HBuilder X配置以及微信开发者工具配置 - 修改微信开发者工具的设置,将服务端口打开,不打开,HBuilder X在编译之后不会自动唤醒微信开发者工具。 ![image](https://user-images.githubusercontent.com/78630698/192106411-320ba427-52ab-480d-bd14-7ff5cfe1c744.png) - 将图片中的AppId修改为你自己申请的小程序测试号AppId ![img](https://user-images.githubusercontent.com/78630698/192106120-5937b039-bd43-40dd-8561-b1bd8c8e1e67.png) - 完成了以上配置之后就可以启动小程序项目了 ------ #### 注意事项 ------ - 如果要运行小程序,需要先提前申请一个小程序开发测试账号 - 支付功能暂未完善,如果自己有商户号,可以取消注释订单业务层代码,进行调试 #### Redis配置 ------ - 项目引入redis缓存和Spring -Data-Redis,若要开启缓存,请启动redis服务端,并在application.yml中设置open为true ------ #### Nginx配置 ------ ##### 部署静态资源,配置反向代理 - 打开终端输入 ``` npm run build ``` 前端vue项目会打包成dist文件包 - 拷贝文件包到nginx的html目录下 - 修改 Nginx 配置文件 ,Nginx安装目录下,找到 Nginx 的配置文件 nginx.conf,改动如下 ``` server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html/dist; #静态资源根目录 index index.html; }1 #反向代理配置 location ^~ /api/ { rewrite ^/api/(.*)$ /$1 break; proxy_pass http://192.168.46.100:8080; #这里用自己web服务器地址 } ``` 配置完成,重启nginx,打开浏览器输入localhost,弹出登录页面,说明配置成功 ------ #### 数据库主从复制 ------ ##### 配置主库(master) - 修改MySQL数据库配置文件 (windows:mysql\bin\my.ini,Linux:/etc/my/cnf) ``` [mysqld] #开启二进制日志 log-bin=mysql-bin #服务器id server-id=100 ``` - 重启MySQL服务 - 创建一个用户并授权,用于MySQL主从同步: ``` create user 'slave'@'127.0.0.1' identified by '123456'; grant all privileges on *.* to 'slave'@'127.0.0.1'; ``` - 在MySQLMaster下执行命令: ``` show master status \G ``` ​ \G是隔行显示信息,为了方便查看。返回结果如下: ![img](https://img-blog.csdnimg.cn/20201023174004520.png) ``` show status ``` ![img](https://img-blog.csdnimg.cn/20201023174739334.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NTk4Nzkx,size_16,color_FFFFFF,t_70) ##### 配置从库(slave) - 同理,在配置文件中添加 ``` [mysqld] #服务器id server-id=100 ``` - 重启MySQL服务 - 连接主库配置 ``` change master to master_host='127.0.0.1', master_user='slave', master_password='123456', master_log_file='mysql-bin.000003', master_log_pos=156; ``` ​ host为主实例地址,user和password为主实例为主从同步创建的用户,log_file为当前写入的binlog日志文件,log_pos为当前写入位置。 - - 启动slave ``` start slave; ``` ![img](https://img-blog.csdnimg.cn/d75d85675522480fb57e47f07734ca56.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjg2MTUwNTY=,size_9,color_FFFFFF,t_70,g_se,x_16) - 查看是否配置成功 ``` show slave status \G; ``` ![img](https://img-blog.csdnimg.cn/07e39c3c045f4a409eb8af0ed9bfadae.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbTBfNjg2MTUwNTY=,size_20,color_FFFFFF,t_70,g_se,x_16) 有两yes代表配置成功 参考:(https://blog.csdn.net/m0_68615056/article/details/123716045) ------ #### 项目总结 ------ 这个作为新手入门项目是十分不错的,项目所用的技术栈覆盖的也比较广,适合初学者学习。 ------ #### 问题和建议 ------ 技术讨论、二次开发等咨询、问题和建议,添加我的微信(添加好友时,请备注来意),我会在第一时间进行解答和回复! ![66988940818](https://jsd.cdn.zzko.cn/gh/Idolthon/images@main/1669889408181.png) 参考项目:(https://github.com/yx159247/MP_take_out) 也可添加其微信咨询 ![img](https://user-images.githubusercontent.com/78630698/187065150-536ccff2-c5e9-4a52-abea-87deed9047a4.jpg)