我的工作生涯中关于项目的需求和功能分析(活动报名项目)

  说好的第二天更新,也算是最近做的一个项目,也算是之前使用的一些技术的综合吧,

类似Java的 SSM SSH 这样的整合框架,但是依旧没有使用现阶段(2018)最新的技术。

 

这里就先说一下项目的技术使用,类似Java的  Spring + Spring Mvc + Mybatis 

换到 .Net 这边就是  Autofac + Asp.Net Mvc + Entity Framework 。

所以说语言都是共通的 。

那么接下来依旧是项目需求, 需求实现。

 

  项目需求:

  这个是一个文化传媒公司的一个项目,需求是可以创建一个活动,在线上付费后,在

线下参与,也有场地租用,这个是配合上一个功能,用户创建活动的时候,可以选择已有的场地,

或者填写自己的场地。

  我这里举个例子:

  例如1:我有一些老师,老师有一些技能,比如刺绣,陶艺,花艺等技能,但是我想靠老师变现,

所以我在这个平台上开了一个课,但是我没有场地,可以在该平台上租用场地,或者我自己提供场地也行,

等有一些常来学习的用户之后,可以加入我在平台上创建的小组,我通过这个小组来创建一些仅限该小组

可加入的活动。

  2:我空闲时间比较多,想要学习一些业余技能,比如花艺,那么我就可以在这个上面报名来上一些

花艺课程,之后可以参与这个老师创建的小组,。

  3:我空闲时间更多,可以参加很多个活动,但是费用有些高,那么可以参加一个会员,一年一付,

参加会员之后可以减免活动报名费,只需要活动的材料费。

  从上面的案例就可以知道,这个项目的核心功能究竟是什么,首先是有一个活动,用户报名付款之后,

就可以在线下参与,同时 场地是支持活动的,创建活动前需要租用场地,租用完毕后可以创建活动。

  用户可以加入小组以增加粘性。

  

  1:活动管理,可以审核活动,管理活动等。

  2:录播中心,参与活动的录像,参与旅游的录像等。

  3:大师管理,创建活动的时候选择,用于授课。

  4:微展示,项目实际名称不是这个,但是我觉得形容一下就是这样,展示用户一些照片,视频和活动记录等等。

  5:活动分类,这里做了多级,但是实际上只用了2级。

  6:场地管理,可以审核场地和审核预约记录,预约只在线下沟通。

  7:轮播图,这个没什么好说的。

  8:财务管理,交易记录,积分获取记录,审核提现申请等,交易记录也就是流水记录,有一套积分获取规则,积分等级

和积分商城(未上线)。

  9:城市,在进入首页的时候选择所在城市,或使用html5定位功能。

  10:用户列表,需要审核实名用户以及手动扣除用户余额。

  11:发票管理,用户参加活动或旅游都需要开票,这里要审核用户发票信息以及审核用户发票申请。

  12:统计报表,收支记录和用户新增记录。

  13:文章,旅游的游记。

  需求实现:

  1:活动管理,可以说是重中之重吧,整个项目的核心功能,因为项目是新立项,所以使用了比较新的技术,

也就是写在上面的那三件套,同时也使用了一些其他的框架,这个先放一边,首先活动管理需要活动开始24小时

之前发送短信提醒活动,活动结束3天后结算报名费到可提现金额中,所以要使用一个任务调度框架,根据各方面的

需求,选择了 Hangfire,为什么选择了这个呢,因为它使用方式比较简单,同时可以比较简单的整合 Autofac ,对

精度也没有太高的需求。

  接下来说活动本身,首先因为立项的时候存在2个需求,活动和旅游,同时这2个功能差不多,所以整合在

了一起,也算是减少一些复杂度吧。

  活动要可以选择场地,大师,同时可以有会员报名人数和普通成员报名人数,这些使用外键和多对多关系来保存就行了。

但是需要pc端微信扫码付费,所以使用了 Senparc.Weixin.SDK ,这里打个广告,.Net方向比较好用的一个微信开发框架,

企业,公众号,开放平台,商户平台,都有对应封装好的Api。

  总之处理好支付的回调即可,有扫码支付和公众号支付。

  2:录播中心,使用了阿里百川,也就是CDN,这个我觉得没什么好说的,购买CDN服务,然后使劲传就完事了。

  3:大师管理,这个也没什么好说的,只需要展示出来即可。

  4:微展示,就是用户有一个主页,在这个主页上展示该成员的合作信息以及设置的链接,这里把所有板块抽象成一个表,

然后通过不同的类型区分板块分类,同时保存一个类似Sort这样的字段,通过这个字段来定位板块位置。

  5:活动分类,只是保存活动的时候添加,只在活动列表页的导航使用,一对多关系即可,因为活动没有多个分类。

  6:场地管理,这个也只作为展示作用,所以不需要根据预约记录来设定可用时间和不可用时间,当然要设定也不难,

首先就保存可用时间,然后根据预约记录来设定可预约时间即可。

  7:轮播图,应该没什么好说的,甚至不需要定时上下架功能。

  8:交易记录,也就是流水,可以使用以下AOP思想,在结算的代码上注入这个功能,每次支付完成就保存一次,

积分记录,同上,积分商城,很简单的功能,提现记录,实现预定好提现渠道,这个功能需求是线下转账,如果要做成

线上的也可以,上面提到的微信框架就可以调用接口付款。

  9:城市,这里前端定位后判断这里是否匹配,如果匹配直接跳转到对应城市的活动列表,不匹配就显示全国的城市。

  10:用户列表,只能微信登陆,使用框架保存获取的信息,然后使用AutoMapper 映射到User 表,然后保存即可。

  11:发票管理,这个只需要在购买记录上增加一个是否已开发票的标记,开票后标记该字段就可以不重复开票。

  12:统计报表,根据日期查询数据库。

  13:文章,显示一个总列表,但是只可以查询全部文章和小组分享的文章,也就是不可以查看私密文章和其他未加入小组

的文章,查询是使用或来判断是否保存小组外键即可。

 

 

  总结来说就是,当项目经验更多之后,做这些项目其实并不能增长更多的经验,只会让自己变得更熟练,那么就要

在业余的时间增加一些使用其他技术的经验了。

  所以这个项目使用了   Asp.Net Mvc 5 + Owin + Asp.Net Web Api 2。

  数据库使用Sql Server 2012 。
  数据库框架使用 Entity Framework 6。
  计划任务框架使用 HangFire。
  Ioc框架使用Autofac。
  权限认证使用了Asp.Net Identity。
  日志使用Log4Net。
  数据映射使用 AutoMapper。
  Json序列化工具使用NewtonSoft。
  使用Senparc.Weixin.SDK 来辅助开发微信登陆,注册和付款等功能。

  还有一部分DDD思想,我个人觉得TDD和DDD 这些思想,大家都可以看看,因为技术都是大同小异的,

但是理解其中的思想,就能游刃有余的开发各种项目了。

 

posted on 2018-04-18 21:38  男人到死都是少年  阅读(345)  评论(0编辑  收藏  举报

导航