基于MVC的母婴用品租赁系统的设计与实现

2023-05-30 06:27刘媛媛
电脑知识与技术 2023年1期
关键词:推荐算法租赁

刘媛媛

摘要:该文根据某移动母婴电商公司的实际需求,提出了一套适用于母婴用品购买租赁的全新设计方案。使用SSM框架进行系统构架搭建,设计出一套基于MVC模型的母婴用品购买租赁系统。此外,系统通过引入推荐算法,改善了用户的体验度,为用户提供了一个便捷的母婴用品租赁平台。

关键词:推荐算法;租赁;MVC;SSM

中图分类号:TP311    文献标识码:A

文章编号:1009-3044(2023)01-0053-05

开放科学(资源服务)标识码(OSID) :

1 绪论

2021年8月,全面三孩生育政策正式通过,意味着中国三孩政策全面开放[1]。这一重大的政策变动将对母婴消费市场产生了巨大的影响[2]。为了提倡共享经济,有效节约资源,针对儿童玩具、婴儿推车等时效性强的消费品,移动租赁平台给消费者提供了一个租赁的渠道,解决了母婴用品价格高、时效性短、更新快等问题[3]。本文将基于上述系统中租赁流程复杂,用户体验度差等问题,设计出一套租赁流程简单,使用方便,用户体验度好的移动母婴租赁App。系统中用推荐算法实现了在不同的商城基于销量,评论数,好评数,以及搜索数的排名推荐,基于用户的协同过滤推荐。

2 系统的需求分析

2.1 功能性需求分析

管理端分为5个角色:系统管理员、订单管理员、商品管理员、收益管理员、推广管理员,不同的用户拥有不同的权限。移动端分为3个角色:游客、普通用户和会员用户。移动客户端游客有注册和浏览商品的权限,普通用户可以登录、购买商品、租赁商品、修改个人信息以及修改购物车的权限,会员用户和普通用户权限相同,但会员可以免押金、免租金、免运费进行商品租赁。商品查询模块是移动母婴购物租赁平台的重要组成部分。同一时间段内,该功能使用的并发量大,设计商品搜索按租赁购买类别、关键字、品牌、商品分类、价格范围查询,并且可以按热度、价格、上架时间排序,以满足用户多样的需求。

2.2 数据流图

由图1所示,游客注册信息后返回注册结果,注册信息保存在用户信息表,也可游客身份浏览商品,商品信息保存在商品表中,注册后可进行购买和租赁,可以查看订单信息,订单信息保存在订单表中,同时,管理员可以对用户信息表,商品信息表以及订单信息表进行CRUD操作。用户登录移动端可以浏览查询商品,商品信息从商品表中获得,选择商品下单后,订单信息记录在订单信息表中,同时显示用户订单信息。

3 系统的总体设计

3.1 功能模块设计

根据用户的功能需求,基于MVC模型的母婴租赁平台客户端分为系统主界面模块、购物车模块、订单模块、商品查询模块、会员功能模块和个人信息模块六个模块。其中每个大模块又包含若干个小模块。平台功能结构如图2所示。

主界面模块主要展示用户进入手机App首页所显示的内容,有新品上架、商品分类、商城快讯以及促销打折,每个小模块点击后可进入相应的详情页面;商品查询模块可以对商城中的商品进行查询;会员功能模块主要有会员充值、修改以及查看功能;订单管理模块主要功能是查看订单,申请退租、续租、撤销及评价相应的订单。购物车模块可以对购物车中商品进行编辑;个人信息模块主要功能是查看用户个人信息,提交反馈信息等。

3.2 数据库设计

本系统采用MySQL数据库,根据设计生成的部分关系模型如下:

1) 用户管理模块

用户{用户ID、手机号、微信号、QQ号、密码、昵称、性别、头像、角色ID、账户余额、邀请码、是否会员、状态、创建时间}

角色{角色ID、角色名、权限ID、状态、创建时间}

權限{权限ID、权限名、状态、创建时间}

2) 商品管理模块

商品{商品ID、商品名、租买类型、类别ID、租期、主图、描述、收藏数、品牌ID、状态、创建时间}

商品详情{商品详情ID、商品ID、商品规格ID、租金、押金、原价、售价、库存、创建时间}

品牌{品牌ID、品牌名、描述、品牌图片、创建时间}

商品类别{类别ID、类别名、父级类别、创建时间}

商品规格{规格ID、规格名、创建时间}

3) 订单管理模块

订单{订单ID、订单编号、订单类型、支付时间、订单总额、配送方式、收货人、收货地址、联系方式、快递公司、快递单号、运费、备注信息、优惠券编号、预约时间、订单状态、创建时间}

订单详情{订单详情ID、订单ID、商品ID、商品类型、租期、数量、总租金、总价格、押金、商品规格ID、租期开始时间、结束时间、到期天数、状态、创建时间}

4) 活动管理模块

活动{活动ID、活动名、类型、图片、描述、状态、创建时间}

3.3 系统架构设计

本文以SSM框架进行构架设计。由图3所示,通过PC端浏览器发出请求后将数据提交处理,业务层根据业务逻辑处理数据。业务层在处理数据时如果需要持久层提供数据支持则向持久层发出数据请求,持久层把业务层需要的数据返回,最后业务层处理数据将结果返回到表示层。数据结果由表示层来展示。

4 系统详细设计与实现

4.1 整体框架实现

本系统选择使用Tomcat+SpringMVC+Spring+MyBatis的技术路线,数据库采用MySQL。安装Java开发环境JDK,开发工具IntelliJ IDEA,项目管理工具Maven。在IntelliJ IDEA中构建Maven项目,配置文件pom.xml中配置本系统构架所需依赖包。系统采用Nginx+Tomcat+Redis的构架。同时使用DRUID连接池,结合了C3PO、DBCP、PROXOOL等DataBase池的优点,加入了可靠的日志监控,可以良好地监控SQL语句的执行情况[4]。

4.2 系统功能设计与实现

4.2.1 商品展示模块的设计与实现

用户进入商品展示页面,可以进行相应的查询,按关键字、种类、价格热度等条件查询,选择用户需要的商品。若选购,添加到购物车。若不选购,结束退出。商品展示页面显示商品的主图、商品名称、商品的租金、押金等信息,其次,在商品展示页面提供商品的搜索功能,可以根据分类、价格、热点、年龄等的条件搜索。点击某个商品,进入商品详情页。本文对移动母婴租赁系统移动端的功能定义在com.zlzq.pro.controller.webservice包中,后端管理系统的功能定义在com.zlzq.pro.controller包中,利用Map传输必传和可传参数,必传参数有type,值为0和1,分别代表销售和租赁的商品类型。

如果必传参数传输错误,则显示Constant类中相应的错误提示。该接口不仅可以显示全部商品数据,还可以显示商品查询数据,例如,当需要进行关键字查询商品列表时,参数中多传一个name参数,在SQL语句查询中可以使用like关键字进行商品名称模糊搜索。若搜索的关键字是纸尿裤,则具体SQL语句实例如下。

select * from product where name like ‘%纸尿裤%

但如果用户搜索的关键字为“奶粉 白金装”,字符串中间为空格,搜索要求为商品名中不仅含有奶粉关键字还要含有白金装关键字,针对这个问题,本文把传输的name字段按空格拆分成关键字数组namelist再进行SQL语句拼接。具体部分SQL语句片段如下。

name like ‘%${item}%

and name like ‘%${item}%

此外,由于商品在數据表中的位置固定,故每次打开全部商品显示数据顺序一致,则会使一些商品的展现率不高,给用户的体验度较差,对于这个问题,解决方案为移动端每次进入商品列表时传输一个随机数num,下拉分页时,随机数不变,但重新进入商品列表中,则生成新的随机数,以该随机数为种子,使用三角函数和商品主键id进行排序,具体实现代码如下:

order by cos(#{num}+id)

这样可以实现每次进入商品列表可以随机显示商品的功能。若按照商品种类、品牌、月龄进行搜索,采用MyBatis框架后,只用一个条件查询方法,根据不同的查询条件参数MyBatis组合条件查询的核心代码如下:

status=0

and brandid = #{brandId}

and typeid = #{typeId}

and range = #{range}

通过上述代码可以完成商品列表展示以及商品的搜索功能,实现效果图如图4所示。

4.2.2 购物车模块的设计与实现

用户进入购物车后,可以查看该用户购物车中存放的商品,并且可以进行相应的CRUD操作,并判断是否确认下单,确认后可以下单,若不确认,可以继续查看购物车并对其做相应的更改。购物车中的信息采用持久化存储,基于数据库MySQL进行数据存储,相关的业务逻辑在Controller中进行处理。

用户首先把所需要的商品加入购物车,查看购物车界面时,需要验证用户是否进行登录,登录信息在移动端本地存储,若登录成功,查看添加到购物车的商品信息,并且查看商品规格信息,包括商品的库存、现价、租金等信息。用户可以对购物车商品信息进行修改,最终把修改后的购物车信息存储到数据库相关表中。

为了防止超卖问题存在,在修改购物车信息时,应反复校验库存是否不足,尤其在修改购车车中商品的购买或租赁数量时。并且在最后下单时再校验一次商品是否下架,防止在用户操作购物车的期间后台管理员下架相关商品引发订单错误。

购物车页面每种商品分为租赁和销售两种,租赁的商品除租金之外还要额外支付押金。对于购物车中的商品用户可以进行修改数量、库存,删除购物车中的商品等操作。对于销售和租赁的商品,用户可以合并下单或者分别下单,刷新购物车页面,对于商品库存为0的有相应提示,界面强制不可以下单该商品。

4.2.3 订单管理模块的详细设计与实现

订单管理模块是移动母婴购物租赁平台最重要的模块,游客不能进行商品购买租赁下单,普通用户和会员用户可以进行相应的订单管理。订单管理模块分为查看、退租、续租、撤销订单模块。下面我们具体分析用户下单流程。若用户在使用移动客户端进行商品租赁的时,有普通用户租赁、会员租赁、商品退租、商品续租以及押金返还等操作,在商品进行租赁时,下单时会判断是否为会员租赁,会员在会员有效期内免押金、免租金、免运费进行租赁商品,下单时如果是会员,则修改订单总额后进行下单支付。支付成功后平台进行统一发货,待用户确认收到货后进行使用,到商品租赁期满,用户可以自行选择是否续租,不续租的商品进入退租环节,由用户发货平台收货,定损后进行押金退回,用户可选择评价后结束。待续租的商品选择租期后下单,重复流程后结束。

4.3 推荐算法的详细设计与实现

本系统在完成业务功能的基础上,加上推荐功能,能通过推荐来挖掘用户的商品浏览、购买、搜索、评分、收藏等行为,分析用户喜好,利用推荐算法加以推荐。推荐算法的详细设计与实现包括:基于销量、评论数、好评数、搜索数的排名推荐;基于用户的协同过滤推荐;基于购物车商品的协同过滤推荐。

4.3.1 基于评论数、好评数、销量、搜索数推荐的详细设计与实现

根据评论数、好评数、销量、搜索数等排名推荐的具体设计,是用户作为访客浏览商城时,按照评论数、好评数、销量、搜索数四个维度,将商品推荐从数量从多到少的先后次序,为用户进行排名,如图5所示。

按照商品的评论数、好评数、销量、搜索次数从大到小倒序排列,商品的信息按照排序返回,放入Map中,在移动端展示推荐中排名前面的商品。SQL语句如下:

1) 按评论数排序:

String sql=”select * from product order by discussnums+0 desc”

2) 按好评数排序:

String sql=”select * from product order by wellcomments+0 desc”

3) 按銷量排序:

String sql=”select * from product order by salenums+0 desc”

4) 按搜索数排序:

String sql=”select * from product order by searchnums+0 desc”

当移动端母婴购物租赁系统访问量增加,则商品的评论数、好评数、销量、搜索量实时变化,搜索排序结果实时更新,用户每次刷新页面时推荐商品结果不同。

4.3.2 基于用户协同过滤推荐的详细设计与实现

当用户登录后,从users表格中取出logintimes字段判断登入次数,若登录次数大于100次,就会过滤给该用户基于用户协同的商品推荐。详细设计基于用户协同过滤推荐是找出与登录用户最相似兴趣的K位用户,把K位用户喜欢的商品和登录用户没有喜欢过的商品拿出来做推荐展示。流程如图6所示。

首先取出登录者在user表中的用户偏好商品love_goods,该字段为字符串,用户偏好的商品id用逗号隔开,对该字符串使用split方法分割成字符串数组String[] A,该数组中存放用户偏好商品id。取出所有的非登录者在user表中的用户偏好商品love_goods,使用split方法分割成字符串数组String[] B,统计每个非登录者偏好商品的数组String[] B与登录者偏好数组String[] A的共同偏好商品的数量[5]。然后使用共同偏好商品的数量,登录者的偏好商品的数量,非登录者的喜好商品的数量,求出非登录者与登录者的余弦相似度(streamsubline) ,详见公式(1)。

对登录者与非登录者的余弦相似度进行排序,调用写好的sort方法,从大到小排出。将与登录者相似度较大的用户从大到小依次排出。非登录者从大到小选择前n个相似度,作为最接近登录者利益的用户,排序前3位的相似度均为非0的则取3,反之则取非0的。登录用户u对商品i的兴趣程度,通过感兴趣程度计算,详见公式(2)。

商品筛选后,从user表中提取n个用户的最接近u用户兴趣的商品,存入Vector对象中,然后从Vector对象中逐一提取,判断是否存在于登录者的偏好商品中,若不存在,保留Vector对象中该条数据,若存在,则删除该条数据。最终返回过滤后的推荐商品Vector,移动端遍历Vector对象则显示基于用户协同过滤的商品推荐数据。

5 总结

本文主要完成了母婴租赁系统的管理端以及客户端的设计与实现。本系统给后期模块的拓展留下了充足的空间,当业务量发展到一定阶段,由于强度大,可以分布式部署各个模块,从而降低单台服务器的压力。

参考文献:

[1] 侯翠.“营改增”对A公司融资租赁业务的影响与对策分析[D].沈阳:辽宁大学,2015.

[2] 胡先智.融资租赁业务在中国的开展与未来——浅析煤炭设备行业的融资租赁业务[D].上海:上海交通大学,2014.

[3] 郭瑞.互联网融资租赁业务模式发展研究[D].北京:中国社会科学院研究生院,2014:65-69.

[4] 周莹莹.我国商业银行融资租赁业务的风险管理研究[D].北京:北京交通大学,2012.

[5] 曹元杰.发展我国融资租赁业务的思考[J].内蒙古金融研究,2011(5):29-31.

【通联编辑:朱宝贵】

猜你喜欢
推荐算法租赁
国际租赁准则最新进展及其实务影响