文末获取源码
开发语言:Java
使用框架:spring boot
前端技术:JavaScript、Vue.js 、css3
开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
数据库:MySQL 5.7/8.0
数据库管理工具:phpstudy/Navicat
JDK版本:Java jdk8
Maven:apache-maven 3.8.1-bin
目录
一、前言介绍
科技进步带来的生产力的发展,其本质上是生产效率的提高。在社会快速发展的今天,效率永远是衡量一款产品的重要标准。在生活中,我们常常遇到这样的问题:上班期间,由于中午休息的时间基本一致,在一座写字楼中就往往会出现这样的问题,即在中午的某个时间段内将会出现人流的高度集中,大家选择在同一时间去食堂或者楼下的餐厅吃饭。这无疑会大大降低人们对于这段时间的利用效率。这时,人们可能会采取一种方式来回避高峰期,那就是叫外卖点餐。传统的外卖方式就是打电话预定,然而,在这种方式中,顾客往往通过餐厅散发的传单来获取餐厅的相关信息,通过电话来传达自己的订单信息,餐厅方面通过电话接受订单后,一般通过手写来记录,最后通过口头确认才算完成一份订单的提交,之后就是订单的完成和食品的递交。显然,在传统外卖流程中,顾客通过传单来接收信息,所能获得的信息太少,而且印发传单成本高昂,无疑那些面对大众的中低档餐厅不会或者很少印发传单;其次通过电话来接收订单,效率很低,耗时至少5到10分钟;最后,口头确认存在出错的风险,无法保证订单的有效性。而点餐系统或称之为餐饮点餐系统,将完美的解决以上的所有问题。
二、系统需求分析
餐饮点餐系统需要满足的需求有以下几个:
1.信息获取方便,用户可在网页上快速浏览到新的信息
2.查看菜品详情,单独查看某一个菜品信息,获取好评等。
3.注册登录,餐饮需要吸引客户,即通过注册来提高用户的存留率。
4.历史记录,用户可以查看自己订餐信息以及其他操作。
5.修改用户信息,可以修改用户密码或者用户名等一些个性化操作。
6.管理员功能,管理员可以对用户或者点餐进行管理。
7.系统安全,操作简便,不过于复杂。
三、系统前台模块
3.1系统首页页面
3.2订餐资讯页面
3.3菜单页面
3.4菜品详情页面
3.5我的页面
3.6支付页面
四、管理员功能模块
4.1系统首页页面
4.2用户管理页面
4.3资讯管理页面
4.4菜品管理页面
4.5订单列表管理页面
4.6订单统计管理页面
五、部分核心代码
5.1订餐资讯的逻辑代码
-
@RequestMapping(
"/get_obj")
-
-
public Map<String, Object> obj(HttpServletRequest request) {
-
-
Query
select = service.
select(service.readQuery(request), service.readConfig(request));
-
-
List resultList =
select.getResultList();
-
-
if (resultList.size() >
0) {
-
-
JSONObject jsonObject =
new JSONObject();
-
-
jsonObject.put(
"obj",resultList.
get(
0));
-
-
return success(jsonObject);
-
-
}
else {
-
-
return success(
null);
-
-
}
-
-
}
-
-
public Query select(Map<String,String> query,Map<String,String> config){
-
-
StringBuffer sql =
new StringBuffer(
"select ");
-
-
sql.append(config.
get(FindConfig.FIELD) ==
null ||
"".
equals(config.
get(FindConfig.FIELD)) ?
"*" : config.
get(FindConfig.FIELD)).append(
" ");
-
-
sql.append(
"from ").append(
"`").append(table).append(
"`").append(toWhereSql(query,
"0".
equals(config.
get(FindConfig.LIKE))));
-
-
if (config.
get(FindConfig.GROUP_BY) !=
null && !
"".
equals(config.
get(FindConfig.GROUP_BY))){
-
-
sql.append(
"group by ").append(config.
get(FindConfig.GROUP_BY)).append(
" ");
-
-
}
-
-
if (config.
get(FindConfig.ORDER_BY) !=
null && !
"".
equals(config.
get(FindConfig.ORDER_BY))){
-
-
sql.append(
"order by ").append(config.
get(FindConfig.ORDER_BY)).append(
" ");
-
-
}
-
-
if (config.
get(FindConfig.PAGE) !=
null && !
"".
equals(config.
get(FindConfig.PAGE))){
-
-
int page = config.
get(FindConfig.PAGE) !=
null && !
"".
equals(config.
get(FindConfig.PAGE)) ? Integer.parseInt(config.
get(FindConfig.PAGE)) :
1;
-
-
int limit = config.
get(FindConfig.SIZE) !=
null && !
"".
equals(config.
get(FindConfig.SIZE)) ? Integer.parseInt(config.
get(FindConfig.SIZE)) :
10;
-
-
sql.append(
" limit ").append( (page
-1)*limit ).append(
" , ").append(limit);
-
-
}
-
-
log.info(
"[{}] - 查询操作,sql: {}",table,sql);
-
-
return runEntitySql(sql.toString());
-
-
}
5.2订餐资讯分类管理逻辑代码
-
@RequestMapping(
"/get_list")
-
-
public
Map<
String,
Object>
getList(
HttpServletRequest request) {
-
-
Map<
String,
Object> map = service.
selectToPage(service.
readQuery(request), service.
readConfig(request));
-
-
return
success(map);
-
-
}
5.3菜品管理的关键代码
-
@PostMapping(
"/add")
-
-
@Transactional
-
-
public
Map<
String,
Object>
add(
HttpServletRequest request) throws
IOException {
-
-
service.
insert(service.
readBody(request.
getReader()));
-
-
return
success(
1);
-
-
}
-
-
@Transactional
-
-
public
Map<
String,
Object>
addMap(
Map<String,Object> map){
-
-
service.
insert(map);
-
-
return
success(
1);
-
-
}
-
-
public
Map<
String,
Object>
readBody(
BufferedReader reader){
-
-
BufferedReader br =
null;
-
-
StringBuilder sb =
new
StringBuilder(
"");
-
-
try{
-
-
br = reader;
-
-
String str;
-
-
while ((str = br.
readLine()) !=
null){
-
-
sb.
append(str);
-
-
}
-
-
br.
close();
-
-
String json = sb.
toString();
-
-
return
JSON
Object.
parseObject(json,
Map.
class);
-
-
}
catch (
IOException e){
-
-
e.
printStackTrace();
-
-
}
finally{
-
-
if (
null != br){
-
-
try{
-
-
br.
close();
-
-
}
catch (
IOException e){
-
-
e.
printStackTrace();
-
-
}
-
-
}
-
-
}
-
-
return
null;
-
-
}
-
-
public
void
insert(
Map<String,Object> body){
-
-
StringBuffer sql =
new
StringBuffer(
"INSERT INTO ");
-
-
sql.
append(
"`").
append(table).
append(
"`").
append(
" (");
-
-
for (
Map.
Entry<
String,
Object>
entry:body.
entrySet()){
-
-
sql.
append(
"`"+
humpToLine(entry.
getKey())+
"`").
append(
",");
-
-
}
-
-
sql.
deleteCharAt(sql.
length()-
1);
-
-
sql.
append(
") VALUES (");
-
-
for (
Map.
Entry<
String,
Object>
entry:body.
entrySet()){
-
-
Object value = entry.
getValue();
-
-
if (value
instanceof
String){
-
-
sql.
append(
"'").
append(entry.
getValue()).
append(
"'").
append(
",");
-
-
}
else {
-
-
sql.
append(entry.
getValue()).
append(
",");
-
-
}
-
-
}
-
-
sql.
deleteCharAt(sql.
length() -
1);
-
-
sql.
append(
")");
-
-
log.
info(
"[{}] - 插入操作:{}",table,sql);
-
-
Query query =
runCountSql(sql.
toString());
-
-
query.
executeUpdate();
-
-
}
5.4订单信息管理关键代码
-
@RequestMapping(value = {
"/avg_group",
"/avg"})
-
-
public
Map<
String,
Object>
avg(
HttpServletRequest request) {
-
-
Query count = service.
avg(service.
readQuery(request), service.
readConfig(request));
-
-
return
success(count.
getResultList());
-
-
}
5.5用户管理关键代码
-
@PostMapping(
"/add")
-
-
@Transactional
-
-
public
Map<
String,
Object>
add(
HttpServletRequest request) throws
IOException {
-
-
service.
insert(service.
readBody(request.
getReader()));
-
-
return
success(
1);
-
-
}
-
-
@Transactional
-
-
public
Map<
String,
Object>
addMap(
Map<String,Object> map){
-
-
service.
insert(map);
-
-
return
success(
1);
-
-
}
-
-
public
Map<
String,
Object>
readBody(
BufferedReader reader){
-
-
BufferedReader br =
null;
-
-
StringBuilder sb =
new
StringBuilder(
"");
-
-
try{
-
-
br = reader;
-
-
String str;
-
-
while ((str = br.
readLine()) !=
null){
-
-
sb.
append(str);
-
-
}
-
-
br.
close();
-
-
String json = sb.
toString();
-
-
return
JSON
Object.
parseObject(json,
Map.
class);
-
-
}
catch (
IOException e){
-
-
e.
printStackTrace();
-
-
}
finally{
-
-
if (
null != br){
-
-
try{
-
-
br.
close();
-
-
}
catch (
IOException e){
-
-
e.
printStackTrace();
-
-
}
-
-
}
-
-
}
-
-
return
null;
-
-
}
-
-
public
void
insert(
Map<String,Object> body){
-
-
StringBuffer sql =
new
StringBuffer(
"INSERT INTO ");
-
-
sql.
append(
"`").
append(table).
append(
"`").
append(
" (");
-
-
for (
Map.
Entry<
String,
Object>
entry:body.
entrySet()){
-
-
sql.
append(
"`"+
humpToLine(entry.
getKey())+
"`").
append(
",");
-
-
}
-
-
sql.
deleteCharAt(sql.
length()-
1);
-
-
sql.
append(
") VALUES (");
-
-
for (
Map.
Entry<
String,
Object>
entry:body.
entrySet()){
-
-
Object value = entry.
getValue();
-
-
if (value
instanceof
String){
-
-
sql.
append(
"'").
append(entry.
getValue()).
append(
"'").
append(
",");
-
-
}
else {
-
-
sql.
append(entry.
getValue()).
append(
",");
-
-
}
-
-
}
-
-
sql.
deleteCharAt(sql.
length() -
1);
-
-
sql.
append(
")");
-
-
log.
info(
"[{}] - 插入操作:{}",table,sql);
-
-
Query query =
runCountSql(sql.
toString());
-
-
query.
executeUpdate();
-
-
}
5.6用户功能关键代码
-
@RequestMapping(
"/get_obj")
-
-
public Map<String, Object> obj(HttpServletRequest request) {
-
-
Query
select = service.
select(service.readQuery(request), service.readConfig(request));
-
-
List resultList =
select.getResultList();
-
-
if (resultList.size() >
0) {
-
-
JSONObject jsonObject =
new JSONObject();
-
-
jsonObject.put(
"obj",resultList.
get(
0));
-
-
return success(jsonObject);
-
-
}
else {
-
-
return success(
null);
-
-
}
-
-
}
-
-
public Query select(Map<String,String> query,Map<String,String> config){
-
-
StringBuffer sql =
new StringBuffer(
"select ");
-
-
sql.append(config.
get(FindConfig.FIELD) ==
null ||
"".
equals(config.
get(FindConfig.FIELD)) ?
"*" : config.
get(FindConfig.FIELD)).append(
" ");
-
-
sql.append(
"from ").append(
"`").append(table).append(
"`").append(toWhereSql(query,
"0".
equals(config.
get(FindConfig.LIKE))));
-
-
if (config.
get(FindConfig.GROUP_BY) !=
null && !
"".
equals(config.
get(FindConfig.GROUP_BY))){
-
-
sql.append(
"group by ").append(config.
get(FindConfig.GROUP_BY)).append(
" ");
-
-
}
-
-
if (config.
get(FindConfig.ORDER_BY) !=
null && !
"".
equals(config.
get(FindConfig.ORDER_BY))){
-
-
sql.append(
"order by ").append(config.
get(FindConfig.ORDER_BY)).append(
" ");
-
-
}
-
-
if (config.
get(FindConfig.PAGE) !=
null && !
"".
equals(config.
get(FindConfig.PAGE))){
-
-
int page = config.
get(FindConfig.PAGE) !=
null && !
"".
equals(config.
get(FindConfig.PAGE)) ? Integer.parseInt(config.
get(FindConfig.PAGE)) :
1;
-
-
int limit = config.
get(FindConfig.SIZE) !=
null && !
"".
equals(config.
get(FindConfig.SIZE)) ? Integer.parseInt(config.
get(FindConfig.SIZE)) :
10;
-
-
sql.append(
" limit ").append( (page
-1)*limit ).append(
" , ").append(limit);
-
-
}
-
-
log.info(
"[{}] - 查询操作,sql: {}",table,sql);
-
-
return runEntitySql(sql.toString());
-
-
}
5.7订单信息的关键代码
-
@RestController
-
-
@RequestMapping(
"auth")
-
-
public
class AuthController extends BaseController<Auth, AuthService> {
-
-
/**
-
-
* 服务对象
-
-
*/
-
-
@Autowired
-
-
public
AuthController(
AuthService service) {
-
-
setService(service);
-
-
}
-
-
}
转载:https://blog.csdn.net/m0_49113107/article/details/128104906