说好的第二天更新,也算是最近做的一个项目,也算是之前使用的一些技术的综合吧,
类似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 这些思想,大家都可以看看,因为技术都是大同小异的,
但是理解其中的思想,就能游刃有余的开发各种项目了。