最近在做一个多租户的云SAAS软件自助服务平台,途中遇到很多问题,我会将一些心得、体会逐渐分享出来,和大家一起探讨。这是本系列的第一篇文章。

大家知道,要做一个全自助服务的SAAS云平台是比较复杂的,稍微有些漏洞,就会被不法分子钻漏洞,牵涉到一些金钱上的纠纷。因此,一开始的设计就比较重要了。说到云自助服务平台,可能和网上购物、在线商城有些类似,但里面提供的是相关服务,还是有些区别的,我在这里先讲几个概念:

  • 产品:产品即服务,即是提供给用户的服务。产品有单价,有些产品是基础产品,用户购买正式产品必须免费提供的,产品可以提供给用户进行试用。
  • 模块:产品包括很多模块,有些模块是必然会提供给用户的,比如 操作人员管理、操作日志 等,还有些模块是可选的,用户针对自己的情况进行购买,类似增值服务,比如移动端、企业主页等。另外还有些一次性的服务,比如系统数据对接硬件设备购买等;
  • 服务:用户所能享受到的服务,有一定的使用期限;
  • 订单:用户根据所拥有的 服务 所下的订单(而不是产品哦,为什么?);
  • 购物车:在用户订单生成前先把产品放在购物车里,购物车有很多类别,有的购物车是对目前服务进行的延期,有些是把试用的产品转为正式,有些是对现有服务模块的增删,牵涉到追加购买等。购物车操作频繁、需要做非常多的校验,要和已经购买的服务做无缝的对接,这也是云SAAS产品和普通电商很大不同的地方。到了订单阶段,就相对比较简单了,生成订单后将购物车清空、可以生成多张订单,支付的时候再做一遍校验。

总体的概念流程是 服务->产品->购物车->订单->服务

上一张购物车验证规则的流程图

一些类(还没有全部完成):

对实体类的操作大都采用工厂方式:

购物车类代码:

    public class UserCart{public string UserId { get; set; }/// <summary>/// 设置域名/// </summary>public string ServiceIndentify { get; set; }public OrderType OrderType { get; set; }public IList<UserCartProduct> UserCartProducts { get; set; }public float TotalPrice{get{if (OrderType == OrderType.Experience){return 0;}else{return UserCartProducts.Sum(p => p.Price);}}}public virtual IList<UserCartProduct> UserCartProduct { get; set; }}public class UserCartProduct{public string ProductId { get; set; }public int ProductBasePrice { get; set; }public Period Period { get; set; }public DateTime StartDate { get; set; }public DateTime EndDate { get; set; }public IList<string> UserCartProductBasicModules { get; set; }public IList<UserCartAddtionalModule> UserCartProductAddtionalModules { get; set; }public IList<UserCartAddtionalService> UserCartAddtionalServices { get; set; }public IList<UserCartOption> UserCartOptions { get; set; }public float Price{get{return ProductBasePrice+ UserCartProductAddtionalModules.Sum(m => m.UintPrice.GetPriceByPeriod(Period))+ UserCartAddtionalServices.Sum(m => m.UintPrice.GetPriceByPeriod(new Period(PeriodType.Times, m.Quantity)))+ UserCartOptions.Sum(m => m.UintPrice.GetPriceByPeriod(Period));}}public virtual UserCart UserCart { get; set; }}public class ModuleBase{public string ModuleId { get; set; }public PeriodPrice UintPrice { get; set; }}public class UserCartAddtionalModule: ModuleBase{}public class UserCartAddtionalService : ModuleBase{public int Quantity { get; set; }}public class UserCartOption: ModuleBase{public string CheckId { get; set; }public string OriginCheckedId { get; set; }public PeriodPrice OriginPeriodPrice { get; set; }}

其他类类似。

大家对这块有什么好的意见和建议,希望能够提出来。

SAAS云平台搭建札记系列文章:

SAAS云平台搭建札记: (一)浅论SAAS多租户自助云服务平台的产品、服务和订单

SAAS云平台搭建札记: (二)Linux Unbutu下.Net Core整套运行环境的搭建

SAAS云平台搭建札记: (一)浅论SAAS多租户自助云服务平台的产品、服务和订单相关推荐

  1. SAAS云平台搭建札记: (一) 浅论SAAS多租户自助云服务平台的产品、服务和订单

    最近在做一个多租户的云SAAS软件自助服务平台,途中遇到很多问题,我会将一些心得.体会逐渐分享出来,和大家一起探讨.这是本系列的第一篇文章. 大家知道,要做一个全自助服务的SAAS云平台是比较复杂的, ...

  2. 物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码

    本例程Android源码请点此处免费下载 物联网平台搭建的全过程介绍(四)两台设备之间通过云数据流转实现远程通信之Android studio例程中介绍了两台Android设备通过物联网平台进行通信的 ...

  3. 华为私有云的搭建方案_最简单的纯软件私有云搭建方案,我来教你

    目前国内各大免费网盘纷纷关停,很多用户对存储空间的需求变得愈发迫切.对于普通用户而言,选择网盘的首要因素是成本及安全的问题,拿最常用的某度云来说,非会员用户不管是容量,还是带宽,都有相当多地限制,而且 ...

  4. 怎么样用WS(亚马逊云服务器)搭建一个自己的BLOG (1) – 申请一个AWS云服务器

    自己搭建了一个服务器,在这里也分享一下经验.原文我放在blog4it.com,是我新申请的顶级域名,后面会介绍如何申请这个顶级域名. 做了10多年的IT工作,很想有一个自己的网站,刚好慧与公司鼓励开发 ...

  5. 云服务器搭建百度贴吧自动签到(贴吧云签到)较详细教程

    获取云服务器 可以从我的上一个博客(点击查看)获取教程,本篇使用的是宝塔面板(centos7.7),但即使不用宝塔面板搭建也大同小异. 准备 自己配置好LNMP环境. 选择的项目是GitHub上的一个 ...

  6. 虚拟化搭建云服务器,服务器虚拟化系统平台搭建

    对各类资源进行合理分配,同时要建立冗余的虚拟环境,以满足系统迁移以及故障恢复的需要. 平台架构,在几台实体服务器上运行系统软件,并备有一台管理服务器,创建多台虚拟机,同时共享 CPU.内存.网络与存储 ...

  7. 【云中沙箱】如何快速使用阿里云快速搭建论坛网站?

    如何快速使用阿里云快速搭建论坛网站? 云中沙箱实验"使用阿里云快速搭建论坛网站",教您如何快速使用阿里云快速搭建论坛网站? 云中沙箱,阿里云官方实验平台.网址:http://lab ...

  8. 微服架构基础设施环境平台搭建 -(一)基础环境准备

    微服架构基础设施环境平台搭建 -(一)基础环境准备 通过采用微服相关架构构建一套以Kubernetes+Docker为自动化运维基础平台,以微服务为服务中心,在此基础之上构建业务中台,并通过Jekin ...

  9. 在线教育平台搭建具体步骤

    到目前为止,国内的疫情基本算是被控制住了,大部分地区中小学也在正式开学.可能有些人会想:开学了,就不用搞在线教育了.但实际上,疫情的结束只是在线教育发展的新起点.且目前很多线下教培机构还是顺势而上,努 ...

最新文章

  1. 【刷题】BZOJ 4516 [Sdoi2016]生成魔咒
  2. Spring Cloud Gateway真的有那么差吗?
  3. 围观窗体与组件01 - 零基础入门学习Delphi23
  4. 【渝粤题库】国家开放大学2021春3962金融营销基础题目
  5. 在ODM公司要不要跳槽到创业公司
  6. 代码整洁之道--思维导图
  7. QOS之NBAR 下
  8. Ps 初学者教程,如何向风景图中添加元素?
  9. 分享一种很好看的字体
  10. coreldraw x4如何重叠图片_怎么用CDR x4(coreldraw x4)裁剪图片?x4怎么自动抠图
  11. Leetcode-714. 买卖股票的最佳时机含手续费
  12. Java自定义类的属性、方法结合数组简单使用
  13. 电商型网站要怎么制作?把住这三个关键点
  14. 计算机专业英语常用词汇整理
  15. 写给朋友们的Markdown教程,真的很好用,而且很简单
  16. 阿里巴巴java工程师应聘条件_【全国】—前端/Java工程师—阿里巴巴(长期招聘)...
  17. 傅小兰研究员是学报第一任女主编吗?
  18. 不得转载可以转发吗_微信公众号可以复制转载别人的文章吗?如何转发其他公众号文章?...
  19. c语言 读取TXT 去空格,C语言读取TXT文件,忽略文件空格,把内容写入数组中应该如何实现...
  20. re-id #issue

热门文章

  1. 【三十六】Python全栈之路--MySQL
  2. linux下简单的邮件服务器搭建,linux中搭建简单邮件服务器
  3. 我,48岁,上海外企高管,如今,失业三年终于找到工作,分享工作经验
  4. WinEdt入门使用总结
  5. 关于ABAP中P类型的理解
  6. 小e和siri_除了聊天和搜索,Siri还有这6种用法,你知道吗?
  7. 一个北漂IT人对成功的感悟
  8. std::any用法示例
  9. yshon对讲机如何调频率_对讲机频率怎么调
  10. 《Metasploit 魔鬼训练营》博客目录