我的工作生涯中关于项目的需求和功能分析(商城项目)
时隔一年左右,我又来啦!
这次是一个商城项目,还是照例分为三个栏目,项目需求,需求解析和需求实现。
不具体到技术细节,只谈论如何实现,以及如何以更好的方式实现。
项目需求:
首先,需求就是一个商城,有分类,有商品,有购物车,有优惠券,有拼团和众筹,有订单管理的商城系统。
但是,这个商城有一个不太一般的功能,就是分销商功能。
分销商的功能有很多,也可以管理商品,但是分销商上传的商品需要运营人员审核后才可以上架,筛选购买总店的商品,分类和专题商品,
同时分销商还可以返佣和店铺折扣,也就是在分销商的店铺里购买,要比总店的折扣来的便宜,同时分销商店铺每卖出一件商品,可以返佣。
意思就是假如一件商品,总店卖100元,分销商店铺可以只卖95元(打95折),同时可以返佣95元的百分之五(4.75)元。
店铺只有一级层级,好歹减少了一些复杂度。
同时还有一个需求,就是因为之前存在 app,需要app那边的一口价商品可以无缝商家到这个商城中,并且商城要根据app那边的贩卖情况,
上下架商品,也就是app那边的商品售罄或者下架了,这边也需要同步下架。
需求解析:
接下来,就是考虑如何分解项目及内容。
这是一个前后端分离的项目,所以我不需要考虑前端的实现,只要做好后台和接口就行了。
1:商品管理,商品需要有上下架,逻辑删除,首页推荐和热门推荐,以及批量设置版本。
2:轮播图,根据时间自动上下架。
3:优惠券,只需要满减优惠券,但是需要有新人礼,根据活动添加限定商品,分类,专题的优惠券,以及优惠券兑换码兑换优惠券。
4:快递公司,用于快递100的订单接口查询。
5:分销商,分销商管理和审核商品。
6:分类管理,存在三级,一级首页入口,二级页面顶部分类,三级专题。
7:单页面,用于微信分享的活动页面。
8:财务管理,分销商的提现申请和商品购物流水记录。
9:数据统计,用户数量统计,留存率等,专题统计,统计点击量和成交量,订单统计,统计当日成交量等。
10:海报,用户成为分销商后会生成海报。
11:会员折扣,设置用户成为会员,可以享受全部商品折扣。
12:拼团,分2,3,5人,成团可以使用更优惠的价格购买,类似拼多多的拼团功能。
13:众筹,时间限制内有x人购买,则视作众筹成功,否则则失败退款。
14:设置网站参数等。
需求实现:
1:商品管理,这部分功能还是比较清楚的,最简单的做法就是在前端显示的时候根据对应的字段来表示是否显示出来。
2:轮播图限时展示,有2种方式,第一种就是在返回json的时候再返回一个时间,可以是时间戳也可以是字符串,反正就是一个转换的事情,让前端来控制轮播图的展示时间,
第二种方式就是查询当前时间段,处于开始时间和结束时间之内的轮播图返回给前端,2种方法各有优点。
3:优惠券,这里如果做成可扩展方式的话,优惠券表要设计成 满减,折扣,立减等等,给优惠券增加类型,然后通过类型来判断优惠券的类型,根据对应类型来计算优惠方式,
优惠券自身有开始时间,结束时间 ,根据这些状态来设置优惠券的使用时间和状态,然后用户领取优惠券就是一个多对多的关系,然后在关系中也保存开始时间,结束时间,
使用状态等,这样设计有一个好处,就是 通过code 获取优惠券的功能的时候,数据表只需要增加一个code 就可以扩展出这个功能。
4:这里使用快递一百的接口,需要传快递公司编号和快递单号才可以查询,所以这里创建了一个快递公司表来保存快递编号,如果不嫌麻烦的话,也可以直接在订单里保存
快递公司编号。
5:分销商,算是核心功能吧,总后台可以管理分销商,审核分销商上传的商品等,但是技术上没有什么关键的要点,无非就是用户登陆店铺的时候,传递一个id 代表分销商的id,
通过这个id 来保存订单分销数据,返佣等等。分销商有一个分销后台,通过这个后台来处理订单,商品管理等,总的来说分销商除了不能修改页面的板块之外,其实能够操作的地方
有很多。
6:可以按照树状结构来保存,但是开发时说明了只有3个分类,所以就弄了3个表,因为存在分销商的关系,所以如果单表的话,查询语句的复杂度太高了,数据库的查询性能可能
存在问题。
7:可能没什么好说的,就是后台上传一些图文等,在前端根据id来显示。
8:财务管理,分销商提现也没什么好说的,无非就是校验写的全一些,流水会在用户关键操作的时候记录。
9:数据统计,这各部分就是sql语句比较复杂,总的来说就是根据订单表和用户来做连接查询。
11:会员折扣,在准备生成订单和生成订单的时候校验这个折扣,同时也是一个多对多关系。
12:拼团功能可以说是比较复杂的,首先要设置团购商品,然后分为几个成团区间,比如2人,3人,5人等,成团后生成订单,然后就可以走订单的流程。
顺便说一句,有增加机器人的需求,所以这里 团商品是一个表, 团是一个表,团内成员是一个表,然后通过团来生成订单,这样就可以避免也生成机器人的订单,造成统计或流水出现错误。
13:众筹,众筹是一个弱化版的拼团, 所以是商品一个表,然后就直接生成订单了,就算众筹失败,直接退款即可,成功的话就是走后台订单的处理流程。
14:网站参数也没什么可说的。
所以这个项目就是我在目前公司的第一个实际接手的项目,虽然不算从零开发,但是也折腾了我好久,因为使用的技术太老旧了,操作起来不是很方便,又因为存在分销商和会员金额结算,
导致项目耦合度也非常高,WebForm+Ado.Net 10年前的项目大概是这么开发的吧。
总的来说,没有什么高技术需求,但是复杂度特别高。
明天还有一篇项目解析。