最近在作一個多租戶的雲SAAS軟件自助服務平臺,途中遇到不少問題,我會將一些心得、體會逐漸分享出來,和你們一塊兒探討。這是本系列的第一篇文章。html
你們知道,要作一個全自助服務的SAAS雲平臺是比較複雜的,稍微有些漏洞,就會被不法分子鑽漏洞,牽涉到一些金錢上的糾紛。所以,一開始的設計就比較重要了。說到雲自助服務平臺,可能和網上購物、在線商城有些相似,但裏面提供的是相關服務,仍是有些區別的,我在這裏先講幾個概念:ide
整體的概念流程是 服務->產品->購物車->訂單->服務spa
上一張購物車驗證規則的流程圖設計
一些類(尚未所有完成):日誌
對實體類的操做大都採用工廠方式:code
購物車類代碼:htm
1 public class UserCart 2 { 3 public string UserId { get; set; } 4 /// <summary> 5 /// 設置域名 6 /// </summary> 7 public string ServiceIndentify { get; set; } 8 public OrderType OrderType { get; set; } 9 public IList<UserCartProduct> UserCartProducts { get; set; } 10 public float TotalPrice 11 { 12 get 13 { 14 if (OrderType == OrderType.Experience) 15 { 16 return 0; 17 } 18 else 19 { 20 return UserCartProducts.Sum(p => p.Price); 21 } 22 } 23 } 24 public virtual IList<UserCartProduct> UserCartProduct { get; set; } 25 } 26 27 public class UserCartProduct 28 { 29 public string ProductId { get; set; } 30 public int ProductBasePrice { get; set; } 31 public Period Period { get; set; } 32 public DateTime StartDate { get; set; } 33 public DateTime EndDate { get; set; } 34 public IList<string> UserCartProductBasicModules { get; set; } 35 public IList<UserCartAddtionalModule> UserCartProductAddtionalModules { get; set; } 36 public IList<UserCartAddtionalService> UserCartAddtionalServices { get; set; } 37 public IList<UserCartOption> UserCartOptions { get; set; } 38 public float Price 39 { 40 get 41 { 42 return ProductBasePrice 43 + UserCartProductAddtionalModules.Sum(m => m.UintPrice.GetPriceByPeriod(Period)) 44 + UserCartAddtionalServices.Sum(m => m.UintPrice.GetPriceByPeriod(new Period(PeriodType.Times, m.Quantity))) 45 + UserCartOptions.Sum(m => m.UintPrice.GetPriceByPeriod(Period)); 46 } 47 } 48 public virtual UserCart UserCart { get; set; } 49 } 50 51 public class ModuleBase 52 { 53 public string ModuleId { get; set; } 54 55 public PeriodPrice UintPrice { get; set; } 56 57 } 58 59 public class UserCartAddtionalModule: ModuleBase 60 { 61 } 62 63 public class UserCartAddtionalService : ModuleBase 64 { 65 public int Quantity { get; set; } 66 } 67 68 public class UserCartOption: ModuleBase 69 { 70 public string CheckId { get; set; } 71 public string OriginCheckedId { get; set; } 72 public PeriodPrice OriginPeriodPrice { get; set; } 73 }
其餘類相似。blog
你們對這塊有什麼好的意見和建議,但願可以提出來。get
SAAS雲平臺搭建札記系列文章:權限控制
SAAS雲平臺搭建札記: (一)淺論SAAS多租戶自助雲服務平臺的產品、服務和訂單