JDK版本:1.8及以上
IDE工具:或想法,微信小程序开发工具
数据库:.7(必须为5.7)
编程语言:Java
Java框架:SSM
:3.6.1
详细技术:HTML+CSS+JAVA+SSM ++ VUE ++微信发展工具
3。功能设计
基于微信的在线食堂订购系统分为三个角色:用户,商人和管理员。在该项目中研究的微信食堂在线订购迷你计划将前端和后端分开,因此产品订单,商户信息,产品信息,产品信息和其他相关信息集中在管理背景中,以便管理员进行管理,以便用户可以在此处订购餐点迷你计划并管理个人订单。该系统允许信息管理变得有效,并且对于用户订购餐点和查看个人订单的情况越来越方便。
图3.1是设计的管理员功能结构。管理员管理机构操作的功能包括管理用户注册信息,业务信息,产品信息,公告信息等。
图3.2是设计的商户功能结构。商人许可操作的功能包括管理产品,管理和回复产品评论,管理产品订单,查看公告等。
图3.3是设计的用户功能结构。用户许可操作的功能包括购买产品,查看商户信息,查看公告,查看产品评论,管理产品订单,执行帐户充值等。
4。数据设计
开发系统还需要提前设计数据库。这里的数据库是相关数据的集合,并且存储的数据也以某种组织方式进行。目前,数据库可以服务多个应用程序,因为它具有其最佳存储方法和低数据冗余率的优势。尽管数据库为程序提供信息存储服务,但它也可以保持远离程序的独立性。简而言之,数据库已经开发了很长时间,从现在的每个人最初未知,其相关技术已经变得越来越成熟,并且它也具有坚实的理论基础。该系统的主要实体属性图如下:
5。部分效果显示5.1用户微信实现效果
下图是编码产品信息接口。用户在产品信息接口中购买产品,或单击“添加到购物车”按钮以将产品保存在购物车中。
下图是编码订单确认接口。用户需要确认购买的商品和订单确认接口中收到的商品的地址信息,如果余额足够,可以成功支付订单。
下图是我的产品订单接口的编码实现。用户可以在我的产品订单接口中拿起食物,退款和评估订单。
下图是编码的商户信息接口。用户查看商人信息接口中商家的详细介绍,包括商人的星级评级,商人的业务许可证和其他信息。
5.3效果商人模块在后端管理方面实现了
下图是通过编码实现的产品管理接口。商家在产品管理界面中具有更大的产品库存,减少产品库存,删除产品,更改产品信息并添加产品的权限。
下图是通过编码实现的产品评估管理接口。商人在产品评估管理接口中查看用户对订单产品的评估,商人需要回复评估信息。
下图是编码产品订单管理接口。除了查看产品订单管理接口中产品订单的详细信息外,商人还可以为用户的订单提供服务。
管理员模块
6。纸的屏幕截图
7。一些功能代码
/\*\* \* 权限(Token)验证 \*/ @Component public class AuthorizationInterceptor implements HandlerInterceptor { public static final String LOGIN\_TOKEN\_KEY = "Token"; @Autowired private TokenService tokenService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String servletPath = request.getServletPath(); if("/dictionary/page".equals(request.getServletPath()) || "/file/upload".equals(request.getServletPath()) || "/yonghu/register".equals(request.getServletPath()) ){//请求路径是字典表或者文件上传 直接放行 return true; } //支持跨域请求 response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Credentials", "true"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization"); response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin")); IgnoreAuth annotation; if (handler instanceof HandlerMethod) { annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class); } else { return true; } //从header中获取token String token = request.getHeader(LOGIN\_TOKEN\_KEY); /\*\* \* 不需要验证权限的方法直接放过 \*/ if(annotation!=null) { return true; } TokenEntity tokenEntity = null; if(StringUtils.isNotBlank(token)) { tokenEntity = tokenService.getTokenEntity(token); } if(tokenEntity != null) { request.getSession().setAttribute("userId", tokenEntity.getUserid()); request.getSession().setAttribute("role", tokenEntity.getRole()); request.getSession().setAttribute("tableName", tokenEntity.getTablename()); request.getSession().setAttribute("username", tokenEntity.getUsername()); return true; } PrintWriter writer = null; response.setCharacterEncoding("UTF-8");