歡迎光臨
每天分享高質量文章

SAAS雲平臺搭建札記: (一) 淺論SAAS多租戶自助雲服務平臺的產品、服務和訂單

    最近在做一個多租戶的雲SAAS軟體自助服務平臺,途中遇到很多問題,我會將一些心得、體會逐漸分享出來,和大家一起探討。這是本系列的第一篇文章。

    大家知道,要做一個全自助服務的SAAS雲平臺是比較複雜的,稍微有些漏洞,就會被不法分子鑽漏洞,牽涉到一些金錢上的糾紛。因此,一開始的設計就比較重要了。說到雲自助服務平臺,可能和網上購物、線上商城有些類似,但裡面提供的是相關服務,還是有些區別的,我在這裡先講幾個概念:

  • 產品:產品即服務,即是提供給使用者的服務。產品有單價,有些產品是基礎產品,使用者購買正式產品必須免費提供的,產品可以提供給使用者進行試用。
  • 模組:產品包括很多模組,有些模組是必然會提供給使用者的,比如 操作人員管理、操作日誌 等,還有些模組是可選的,使用者針對自己的情況進行購買,類似增值服務,比如移動端、企業主頁等。另外還有些一次性的服務,比如系統資料對接硬體裝置購買等;
  • 服務:使用者所能享受到的服務,有一定的使用期限;
  • 訂單:使用者根據所擁有的 服務 所下的訂單(而不是產品哦,為什麼?);
  • 購物車:在使用者訂單生成前先把產品放在購物車裡,購物車有很多類別,有的購物車是對目前服務進行的延期,有些是把試用的產品轉為正式,有些是對現有服務模組的增刪,牽涉到追加購買等。購物車操作頻繁、需要做非常多的校驗,要和已經購買的服務做無縫的對接,這也是雲SAAS產品和普通電商很大不同的地方。到了訂單階段,就相對比較簡單了,生成訂單後將購物車清空、可以生成多張訂單,支付的時候再做一遍校驗。

     總體的概念流程是 服務->產品->購物車->訂單->服務

    上一張購物車驗證規則的流程圖

    一些類(還沒有全部完成):

    對物體類的操作大都採用工廠方式:

    購物車類程式碼:

public class UserCart

{

public string UserId { get; set; }

///

/// 設定域名

///

public string ServiceIndentify { get; set; }

public OrderType OrderType { get; set; }

public IList UserCartProducts { get; set; }

public float TotalPrice

{

get

{

if (OrderType == OrderType.Experience)

{

return 0;

}

else

{

return UserCartProducts.Sum(p => p.Price);

}

}

}

public virtual IList 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 UserCartProductBasicModules { get; set; }

public IList UserCartProductAddtionalModules { get; set; }

public IList UserCartAddtionalServices { get; set; }

public IList 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; }

}

其他類類似。大家對這塊有什麼好的意見和建議,希望能夠提出來。

贊(0)

分享創造快樂