我的工作生涯中关于项目的需求和功能分析(商城项目)

时隔一年左右,我又来啦!

这次是一个商城项目,还是照例分为三个栏目,项目需求,需求解析和需求实现。

不具体到技术细节,只谈论如何实现,以及如何以更好的方式实现。

  项目需求:

  首先,需求就是一个商城,有分类,有商品,有购物车,有优惠券,有拼团和众筹,有订单管理的商城系统。

但是,这个商城有一个不太一般的功能,就是分销商功能。

分销商的功能有很多,也可以管理商品,但是分销商上传的商品需要运营人员审核后才可以上架,筛选购买总店的商品,分类和专题商品,

同时分销商还可以返佣和店铺折扣,也就是在分销商的店铺里购买,要比总店的折扣来的便宜,同时分销商店铺每卖出一件商品,可以返佣。

  意思就是假如一件商品,总店卖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年前的项目大概是这么开发的吧。

总的来说,没有什么高技术需求,但是复杂度特别高。

明天还有一篇项目解析。

原文地址:https://www.cnblogs.com/wct1/p/8868122.html

时间: 2024-08-28 01:47:25

我的工作生涯中关于项目的需求和功能分析(商城项目)的相关文章

我的工作生涯中关于项目的需求和功能分析(房地产项目)

这一篇是 我在之前的之前公司中最后一个项目,期间虽然有一些小项目,但都内容都不及我之前的几个,当然我之前的几个也不算大就是了. 好了,这个项目是一个A轮创业公司的,创业一般不会来找外包,就算来找外包,项目进度也需要非常快,功能要求多. 不过经过我研究他们的需求后,发现要的功能不是特别多嘛 ...然后我就错了... 开始项目分析: 首先单就功能描述来说,就是房产中介,类似房*多,房*下这些,他们老板也说了照这个抄一个大概就可以,看到这里我就知道抄一个差不多是有多困难..不过反正是给多少钱做多少事.

请列出你在从事IT生涯中,最难以忘怀的一次误操作

IT系统最怕什么,我觉得就两点: 1.不可靠的软硬件. 2.误操作. 第一点就不用解释了,第二点是该文的内容,主要摘选自ITPUB的精华贴——[精华] 请列出你在从事DBA生涯中,最难以忘怀的一次误操作 中摘录各位网友的经验和教训,常看看以警惕自己. #2 一次一个session占用内存很大,这个session id比较大,所以以为是用户进程,kill, 则库立刻down了,查日志后,才知道是一个后台进程,但详细是哪个进程,现在忘记了. 好的是库起来了,这个故障,我一直牢记于心. 现在做任何操作

程序员编程生涯中会犯的7个错误

英文原文:7 Mistakes You're Making In Your Programming Career 作为软件开发人员生活和职业指导,我需要和很多程序员交流,帮助他们提升职业生涯,加速成长.时间久了,我发现很多程序员总是犯着相同的错误,前仆后继,却毫不自知.下面就是程序员在他们的软件开发生涯中最常犯的 7 个错误. 1. 没有明确的目标 心中没有终点目标,那就只会随波逐流. 如果你想在软件开发的职业生涯上获得成功,那么你需要有一个明确的目标.仅仅只是对遥远的未来有一个模糊的想法是不够

开发人员怎样减轻工作过程中遇到的压力

1.经常锻炼身体 身体是革命的本钱,如果身体不好,会影响工作的效率,即使你能力再强,如果身体不好,时不时的出现身体不舒服的问题,对工作效率也是会有影响的,所以经常锻炼身体显得特别重要. 运动时,不仅能分散注意力.忘掉不快,还能促进大脑分泌多巴胺.内腓肽等物质,它们是人体的“快乐因子”,有助于缓解不适.产生愉悦的情绪反应. 心情烦闷时,无论跑步或快步行走,只要出出汗,压力也会随着汗水,“溜”出你的身体. 另外要养成早睡早起的习惯,晚上11点以前睡觉比较好,再晚也尽量不要晚于12点,睡觉越晚,会越影

奔跑中的2015-入职后的第一个项目总结

从2014年11月18日到2015年7月1日离开,在石家庄待了半年有余,从项目的开始到结束.体验了初次承担项目的兴奋,也体验了一人在外的艰辛.走的时候有些突然,本想跟石家庄帮助过我的那些伙伴好好吃个饭,说些对他们来说显得有些"肉麻"的话,好好道个别.而现实好多事情总是会突兀地出现点意外,使原有的计划一再延后,这次更是给了我个遥遥无期. 正像我突然之间接到去石家庄出差一样,在项目收尾之际又突然之间收到公司的邮件通知再次这么莫名地上路了...... 这次的项目对于公司来说,只是一份收入来源

Android开发中遇到的问题(五)——Eclipse导入Android项目出现"Invalid project description overlaps the location of another project"错误的解决办法

一.错误描述 使用如下的命令手动创建一个Android项目 android create project -n LinearLayoutTest -t 1 -p E:/Android/workspace/LinearLayoutTest -k me.gacl.ui -a MainActivity 命令执行完成之后就会在E:/Android/workspace目录下创建一个名字为LinearLayoutTest的Android项目,如下图所示: E:/Android/workspace目录就是我的

随着“互联网+”概念在政府工作报告中提出,互联网金融领域再度升温

随着“互联网+”概念在政府工作报告中提出,互联网金融领域再度升温.大会启动之后受到了监管层.学术界.产业界.金融界.传媒界.投资界及行业协会的高度关注与踊跃参与.峰会特邀全国各地互联网金融前沿企业创始人.高管分享成功经验,打造了超高规格的互联网金融行业盛会.现场环节设计地精彩纷呈,高峰论坛.优秀项目推荐.投融资对接.品牌集中展示等,现场“站”无虚席,人气爆棚. 大会受到了包括国家和各省市政府金融管理机构的支持,四千互联网金融大咖参会,盛况空前.广东省金融工作办公室总经济师余昆明,广东互联网金融协

rsync与FTP(vsftpd)在不同工作场景中的应用

rsync与FTP(多为vsftpd)在大家的平时的运维工作中应该都多有接触,这里我就不再一一介绍了.很多朋友都觉得这两者可以跟同步和备份等同起来,其实真正使用的时候这两个是有区别的,我一般将rsync简概之为冗余,而FTP称之为备份,两者在不同的工作场景中的应用也是不同的,如下: 一.rsync可以应用如下的工作场景: ①NFS文件的一主一备环境,有些项目和网站限定了不能做NFS的DRBD双机方案,所以可以考虑用rsync作一个冗余NFS机器出来(--delete参数使用时应该谨慎): ②rs

Excel VBA在生成副本的工作表中插入本工作簿中的VBA模块代码

即在工作簿中添加一个工作表,然后移出并存为新的工作簿,在移出前将本工作簿的一个模块的代码拷贝至新的工作簿.下面是关键代码: '====================================================================== '各班名单保存为单个xls文件 ActiveSheet.Move ChDir myPath '忽略对话框,覆盖保存 Application.DisplayAlerts = False '班级名称增加"考生号处理"vba模块