本应用是一个基于SpringMVC与Web开发的网上商城应用,其采用结构化设计分析方法,该系统包括:后端接口模块、web前台购物和web后台管理 这三大总的模块;
其中后端接口模块包括基于mysql数据库中用户、货物、购物车、订单、广告、评论、商家等表对应接口的开发,与国际化设计,异常处理,文件管理等功能。
web后台管理模块又包括分类录入商品(以及商品的相关信息,如名称、单价、图片、描述等)和管理前台用户等功能。
前台管理模块包括用户登录,查询、浏览商品,以及加入购物车、生成订单功能等。新用户可以通过注册成为本网站的用户,并可以定购商品和查询订单。本系统的具体各项功能需求如下。
即根据用户需求分析,系统可大致分为以下几个模块组成
为完成整体需求,用户模块需要完成以下需求:
① 账户登录——用户登录时的账户和密码是否正确,若正确则可以正常登录,不正确或者漏填会弹出重新输入账号密码
② 用户注册——用户没有账号的时候则需要进行注册,注册时候要区分大小写,并且账号不能出现重复,密码要输入两次,若两次输入不一样则需要返回重新输入,若输入为空也需要重新输入
③ 用户名和头像的更换——用户可以点击自己的头像或者ID进行更改
④ 多账户更换登录——在个人主页可以实现用户不同账号的切换
为完成整体需求,商品模块需要完成以下需求:
① 针对数据库的商品表开发对应后端接口;
② 在web购物平台中,可以查看全部的商品列表
③ 在web购物平台中,可选择价格区间,查看对应价格区间的商品
④ 在web购物平台中,可根据关键词搜索商品
⑤ 在web购物平台中,可点击商品,查看商品详情
⑥ 在管理系统中对商品数据进行增删查改等管理操作;
为完成整体需求,购物车模块需要完成以下需求:
① 购物车管理——用户点击“我的购物车”后,页面会展示用户在商品页中选择的商品,显示商品数据详情,及总金额;
② 添加购物车——在商品详情页点击“加入购物车”,即可把商品加入购物车;
③ 删除购物车——用户点击删除按钮即可删除对应购物车;
④ 更改商品数目——在购物车中可以选择商品数目,然后自动生成总金额
⑤ 在管理系统中对购物车中数据进行增删查改等管理操作。
⑥ 在点击“结算”按钮后,将调用支付宝的沙箱支付功能,生成付款二维码,用户扫描二维码后会扣除账户内对应余额,若余额不足会给出相应提示。
① 生成订单——用户点击“购买”后,会根据当前购物车里的商品生成对应的订单
② 支付订单——用户扫描支付宝二维码或输入支付宝账户密码即可进行支付
③ 更新订单状态——生成订单后默认为“未付款”,若成功付款,则将订单状态更改为“已付款“
为完成整体需求,订单模块需要完成以下需求:
① 订单管理——用户点击“我的订单”后,页面会展示用户在购物车中生成的所有订单,订单详情会显示用户名、商品名称、商品金额以及生成的订单编号
② 删除订单——用户点击删除按钮即可删除对应订单
③ 在订单属性中添加“订单状态”,用户支付成功后将订单状态由“未支付”切换为“已支付”
④ 在管理系统中对购物车中数据进行增删查改等管理操作。
为完成整体需求,评论模块需要完成以下需求:
① 用户能够对商品进行评论。
② 要能显示出用户的昵称,头像及评论的时间。
③ 用户能够对其他用户的评论进行评论。
④ 被评论的用户可以回复评论。
为完成整体需求,广告模块需要完成以下需求:
① 在后端开发接口,在web管理系统中对广告数据进行管理;
② 在web商城中,以轮播图的形式显示广告信息;
③ 点击广告跳转到对应商品详情界面
为完成整体需求,广告模块需要完成以下需求:
① 在后端开发接口,在web管理系统中对商家数据进行管理;
② 在web商城中,在商品详情页中显示商家信息;
③ 点击商家信息,跳转到对应商家链接
为完成整体需求,广告模块需要完成以下需求:
① 在后端开发接口,在web管理系统及web商城中拦截器未被允许调用的接口;
② 对于大部分接口,直接调用会被拦截器拦截;
③ 只有登录后,拦截器才会开发,以供调用其它接口信息
为完成整体需求,广告模块需要完成以下需求:
① 在后端开发接口,在web管理系统中的商品列表中调用文件管理的接口;
② 可以excel的形式导出商品数据;
③ 可以excel的形式导入数据到商品列表中;
为完成整体需求,广告模块需要完成以下需求:
① 在后端进行开发,在web管理系统及web商城中对进行国际化实现;
② 在web管理系统中,可在登录界面点击切换语言显示;
③ 在web商城中,可在主页界面点击切换语言显示;
为完成整体需求,广告模块需要完成以下需求:
① 在后端进行开发,对接口实现异常处理;
② 在web商城中,调用接口出现异常时,会出现异常处理信息;
③ 在web管理系统中,调用接口出现异常时,会出现异常处理信息;
附:系统功能模块
项目结构如下:
- GoodsAdmin 后端项目
- WebShop web商城
- WebShopAdmin web后台管理系统
关于后端项目的设计:
后端项目的数据库选择mysql,并基于SpringMVC框架,采用Mybatis技术进行开发,把Model,View,Controller分离,把较为复杂的web应用分成逻辑清晰的几部分,简化开发流程。
项目大致可划分为以下几个层
- Pojo层 该层用于定义bean实体类,即数据库实体类;
- Mapper层 用于进行数据库sql操作,并以接口的形式开放
- Service层 该层用于处理所有的相关代码逻辑操作;
- Controller层 即控制层,在此处进行接口的编写
对于一个数据模块,就比如商品模块举例;
- 首先要在pojo目录下,定义商品实体类,其每一个属性要与数据库字段一一对应;
- 然后在resourse下,创建.xml文件,在此进行sql语句的编写,操作mysql数据库,获取或修改目标数据;然后在mapper目录下,声明对于接口,把这些sql操作以接口的形式开放;
- 之后在service目录下,创建service接口,声明需要的方法,然后创建implservice类,该类继承service接口,通过操作mapper接口,并实现其方法,完善代码逻辑,并实现逻辑功能;
- 最后在controller目录下,通过操作service接口,调用其方法,实现接口功能,并声明对应接口,完成接口代码的编写;
当前端调用接口,传递来参数数据后,后端模块需要校验是否为有效数据,并解析参数数据,可能会存在数据类型转换的问题,例如:string转换为int、double;list转换为string等
关于前端项目的设计:
前端技术框架采用vue,前端UI使用的是Element的UI样式,并且采用axios调用后端已编写好的接口。
它会调用后端接口,获取数据,并转化为Json格式,通过javascrip解析,并显示在界面上;
根据需求分析,数据库共存在7张表;
- Goods 商品表
- User 用户表
- Cart 购物车表
- Order 订单表
- Advert 广告表
- Store 商家表
- Comment 评论表
在Controller中根据传入的用户信息(用户名、密码等),根据一个全局的map进行匹配,当传入的用户信息与项目配置里存储的globalStorage相同时,才会登录成功,并且设置对应的session信息;
注销功能就是清除session信息即本地storage信息即可;
检查登录信息功能就是查看session信息;
根路径:/ login
ü doLogin——登录功能
ü checkLogin——查看登录状态
ü logout——注销功能
用户模块主要是在后端通过spirngMVC进行后端接口的开发,通过vue及element框架实现前端,使用axios进行后端接口调用,使整个模块采用规范化的统一格式对后端进行接口网络请求。增加代码可读性及健壮性。
根路径:/ user
ü User login ——登陆判断
ü addUser——注册
ü List<User> findall——获取所有用户
ü User findByid——根据id获取用户
ü updateUser——根据id更新用户
ü delUser——根据id删除用户
ü searchUser——按keyword搜索货物信息
根路径:/ goods
ü selectAllGoods——查询所有商品列表
ü selectGoodsById——按id查找货物信息
ü selectGoodsByName——按name查找货物信息
ü addGoods——添加商品
ü updateGoods——修改商品信息
ü deleteGoodsById——根据id删除商品数据
ü deleteGoodsByName——根据name删除商品数据
ü searchGoods——按keyword查询商品列表
ü selectGoodsByIdWithStore——根据商品id查询商家
根路径:/cart
ü selectAllCart——查询所有购物车列表
ü toShoppingCart——将商品添加进入购物车
ü deleteCart——将商品从购物车删除
ü selectCartById——根据购物车ID查询购物车
ü updateCart——修改购物车信息
ü toShoppingCart——根据id删除商品数据
ü selectCartIdList——根据订单ID查询购物车信息
ü addCartOrder——将购物车添加进订单
ü SelectGoodsByList——根据购物车ID查询商品ID集合
ü pay——发起API调用
ü notify——支付宝回调接口,用于返回订单数据
ü order——根据购物车信息发起请求
ü AliPayConfig——关于支付宝接口调用的配置
根路径:/ order
ü selectAllOrder——查询所有的订单
ü selectOrderByorderId——按orderId查找订单信息
ü selectOrderByuserId——按userId查找订单信息
ü addOrder——添加订单
ü updateOrder——修改订单信息
ü deleteOrderById——根据orderId删除订单数据
ü searchOrderById——根据orderId查找订单数据
ü updateStatus——根据orderId查找订单数据
ü searchCart——根据购物车cartId查看购物车
ü selectOrderInfo——根据用户编号userId查看订单信息
ü searchOrder——根据关键词搜索全部订单
ü 动态SQL
根路径:/comments
ü selectAllComments——查询所有评论列表
ü selectCommentsBycId——按cId查找评论信息
ü selectCommentsbyGoodsId——按商品id查找商品信息
ü addComments——添加评论
ü updateComments——修改评论信息
ü deleteCommentsBycId——根据cId删除评论信息
ü deleteCommentsByuserId——根据用户id删除评论信息
ü searchComments——按keyword查询评论信息
根路径:/ Store
ü selectAllStore——查询所有商品列表
ü selectStoreById——按id查找货物信息
ü selectStoreByName——按name查找货物信息
ü addStore——添加商品
ü updateStore——修改商品信息
ü deleteStoreById——根据id删除商品数据
ü deleteStoreByName——根据name删除商品数据
ü searchStore——按keyword查询商品列表
根路径:/ Advert
ü selectAllAdvert——查询所有商品列表
ü selectAdvertById——按id查找货物信息
ü selectAdvertByName——按name查找货物信息
ü addAdvert——添加商品
ü updateAdvert——修改商品信息
ü deleteAdvertById——根据id删除商品数据
ü deleteAdvertByName——根据name删除商品数据
ü searchAdvert——按keyword查询商品列表
在config目录下,在配置类EnrollConfig类中,通过registry.addInterceptor添加拦截器,在interceptor目录下定义Logininterceptor拦截器类,在调用其它接口前,先调用该拦截器的方法,只有地区session存在数据,并且ssion中的用户数据等于本地storage的用户数据时(一户已登录,且登录用户为浏览器用户)则才能正常访问接口,否则接口被拦截器拦截;
首先在util中定义PoiUtils类,通过Poi插件,读取MultipartFile文件信息或是创建office文件,完成读取excel及创建excel功能;
读取excel,获取传入的MultipartFile读取对应的每一行每一列的数据,然后根据规范的格式通过set方法设置数据到实体类中,然后通过mapper中的sql操作,插入数据到数据库中;
导出excel则是通过goods的get方法,获取每一个属性的值,然后通过poi自带的api,插入数据到excel文件中,然后在接口中进行返回即可;
最后在controller中定义ExcelController方法,调用PouUtil类的方法,完成导出导入excel文件的接口即可;
根路径:/ excel
ü import——导入excel文件到商品表中
ü export——导出商品表数据至excel文件
使用vue-i18n实现浏览器国际化,支持页面中英文切换
日常开发过程中,难免有的程序会因为某些原因抛出异常,而这些异常一般都是利用try ,catch的方式处理异常或者throw,throws的方式抛出异常不管。这种方法对于程序员来说处理也比较麻烦,对客户来说也不太友好,所以我们希望既能方便程序员编写代码,不用过多的自己去处理各种异常编写重复的代码又能提升用户的体验,这时候全局异常处理就显得很重要也很便捷了。
ü MyExceptionHandler——开启全局的异常捕获
ü Result<T>——统一结果返回与统一异常
ü ErrorEnum——自定义错误的枚举类
ü DefinitionException——自定义异常处理类
ü GlobalExceptionHandler——定义全局异常处理
ü NotFoundException——404异常特殊处理
前台商城 :120.77.80.71:80
后台管理 :120.77.80.71:8000
后端接口 :120.77.80.71:8081
Gitee地址:https://gitee.com/mycyy1/ShoppingSystem