SchoolProduct.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel.DataAnnotations;
  4. using System.Reflection.Metadata;
  5. using System.Text;
  6. using System.Text.Json.Serialization;
  7. using TEAMModelOS.SDK.Context.Attributes.Azure;
  8. using TEAMModelOS.SDK.DI;
  9. namespace TEAMModelOS.SDK.Models
  10. {
  11. //產品購買紀錄
  12. public class SchoolProductCommon : CosmosEntity
  13. {
  14. public SchoolProductCommon()
  15. {
  16. pk = "Product";
  17. }
  18. public string dataType { get; set; }
  19. public string prodCode { get; set; }
  20. }
  21. //產品購買紀錄-序號
  22. public class SchoolProductSerial : SchoolProductCommon
  23. {
  24. public string serial { get; set; }
  25. public List<deviceBound> deviceBound { get; set; }
  26. public int clientQty { get; set; }
  27. public long orderDate { get; set; }
  28. public long regDate { get; set; }
  29. public long startDate { get; set; }
  30. public long endDate { get; set; }
  31. public int deviceMax { get; set; }
  32. public object aprule { get; set; }
  33. public string expireStatus { get; set; }
  34. public int status { get; set; }
  35. }
  36. //產品購買紀錄-服務
  37. public class SchoolProductService : SchoolProductCommon
  38. {
  39. public long orderDate { get; set; }
  40. public long startDate { get; set; }
  41. public long endDate { get; set; }
  42. public int number { get; set; }
  43. public string unit { get; set; }
  44. }
  45. //產品購買紀錄-硬體
  46. public class SchoolProductHard : SchoolProductCommon
  47. {
  48. public long orderDate { get; set; }
  49. public string model { get; set; }
  50. public string serial { get; set; }
  51. }
  52. //產品一覽
  53. public class SchoolProductSum
  54. {
  55. public SchoolProductSum()
  56. {
  57. pk = "ProductSum";
  58. code = "ProductSum";
  59. prodinfo = new List<SchoolProductSumProdInfo>();
  60. serial = new List<SchoolProductSumData>();
  61. service = new List<SchoolProductSumDataService>();
  62. hard = new List<SchoolProductSumDataHard>();
  63. }
  64. public string pk { get; set; }
  65. public string code { get; set; }
  66. public string id { get; set; }
  67. public List<SchoolProductSumProdInfo> prodinfo { get; set; }
  68. public List<SchoolProductSumData> serial { get; set; }
  69. public List<SchoolProductSumDataService> service { get; set; }
  70. public List<SchoolProductSumDataHard> hard { get; set; }
  71. //public Aclassone aclassone { get; set; } //是否獨立出來,未定
  72. }
  73. public class SchoolProductSumProdInfo
  74. {
  75. public string prodCode { get; set; }
  76. public string prodName { get; set; }
  77. public string dataType { get; set; }
  78. public ServiceType serviceType { get; set; }
  79. }
  80. public enum ServiceType
  81. {
  82. number = 0,
  83. module = 1,
  84. space = 2
  85. }
  86. //產品一覽 產品內容 基本項
  87. public class SchoolProductSumData
  88. {
  89. public SchoolProductSumData()
  90. {
  91. ids = new List<string>();
  92. }
  93. public string prodCode { get; set; }
  94. public List<string> ids { get; set; }
  95. public int avaliable { get; set; }
  96. }
  97. //產品一覽 產品內容 服務
  98. public class SchoolProductSumDataService : SchoolProductSumData
  99. {
  100. public long startDate { get; set; }
  101. public long endDate { get; set; }
  102. }
  103. //產品一覽 產品內容 硬體
  104. public class SchoolProductSumDataHard : SchoolProductSumData
  105. {
  106. public string model { get; set; }
  107. }
  108. //服務各產品資訊可用資訊(前端用)
  109. public class SchoolProductOrder
  110. {
  111. public string prodCode { get; set; }
  112. public int avaliable { get; set; }
  113. public long avaliableStartDate { get; set; }
  114. public long avaliableEndDate { get; set; }
  115. }
  116. //IES5 學校產品購買紀錄 前端顯示用
  117. public class SchoolOrder
  118. {
  119. public string id { get; set; }
  120. public long date { get; set; }
  121. public List<SchoolOrderSerial> serial { get; set; }
  122. public List<SchoolOrderService> service { get; set; }
  123. public List<SchoolOrderHard> hard { get; set; }
  124. }
  125. //IES5 學校產品購買紀錄 前端顯示用 序號部分
  126. public class SchoolOrderSerial
  127. {
  128. public string prodCode { get; set; }
  129. public string type { get; set; }
  130. public string ymwd { get; set; }
  131. public long sdate { get; set; }
  132. public long edate { get; set; }
  133. public int cqty { get; set; }
  134. public int device { get; set; }
  135. public object aprule { get; set; }
  136. public List<string> sn { get; set; }
  137. }
  138. //IES5 學校產品購買紀錄 前端顯示用 服務部分
  139. public class SchoolOrderService
  140. {
  141. public string prodCode { get; set; }
  142. public string type { get; set; }
  143. public long sdate { get; set; }
  144. public long edate { get; set; }
  145. public int number { get; set; }
  146. public string unit { get; set; }
  147. }
  148. //IES5 學校產品購買紀錄 前端顯示用 硬體部分
  149. public class SchoolOrderHard
  150. {
  151. public string prodCode { get; set; }
  152. public List<string> sn { get; set; }
  153. }
  154. //序號資訊(含deviceId、classId、OS等硬體資訊)
  155. public class SerialInfoBaseWithdeviceBoundExt : SchoolProductSerial
  156. {
  157. public new List<deviceBoundExt> deviceBound { get; set; }
  158. }
  159. //服務授權期限(主週期資訊) ※code='Product' code='Product-{SchoolID}' dataType='servicePeriod'
  160. public class SchoolProductServicePeriod : SchoolProductCommon
  161. {
  162. public int type { get; set; } //授權週期類型 0:銷售 1:試用
  163. public long startDate { get; set; }
  164. public long endDate { get; set; }
  165. public int number { get; set; }
  166. public string unit { get; set; }
  167. }
  168. /////////////////////////////////////////////////////////
  169. public class SchoolProduct : CosmosEntity
  170. {
  171. public SchoolProduct()
  172. {
  173. pk = "Base";
  174. }
  175. public List<SerialInfoBaseWithdeviceBound> serial { get; set; }
  176. public ProductService service { get; set; }
  177. public List<ProductHard> hard { get; set; }
  178. public Aclassone aclassone { get; set; }
  179. }
  180. public class Aclassone
  181. {
  182. public List<string> ids { get; set; } //固定分配的學生ID
  183. public List<string> outids { get; set; } //過期被回收的學生ID(無法使用,待數量購足後回復移至ids)
  184. public int total { get; set; }
  185. public int used { get; set; }
  186. }
  187. public class SerialInfoBase
  188. {
  189. public string id { get; set; }
  190. public string serial { get; set; }
  191. public string prodCode { get; set; }
  192. public int clientQty { get; set; }
  193. public long regDate { get; set; }
  194. public long startDate { get; set; }
  195. public long endDate { get; set; }
  196. public int deviceMax { get; set; }
  197. public object aprule { get; set; }
  198. public string expireStatus { get; set; }
  199. public int status { get; set; }
  200. }
  201. public class SerialInfoBaseWithdeviceBound : SerialInfoBase
  202. {
  203. public List<deviceBound> deviceBound { get; set; }
  204. }
  205. //public class SerialInfoBaseWithdeviceBoundExt : SerialInfoBase
  206. //{
  207. // public List<deviceBoundExt> deviceBound { get; set; }
  208. //}
  209. public class deviceBound
  210. {
  211. public string uuid { get; set; }
  212. public string uuid2 { get; set; }
  213. public string deviceId { get; set; }
  214. public string classId { get; set; }
  215. }
  216. public class deviceBoundRich : deviceBound
  217. {
  218. public string serial { get; set; }
  219. }
  220. public class deviceForCoreService
  221. {
  222. public string uuid1 { get; set; }
  223. public string uuid2 { get; set; }
  224. public string device_id { get; set; }
  225. public string class_id { get; set; }
  226. public string sn { get; set; }
  227. }
  228. public class deviceFromCoreService
  229. {
  230. public string uuid1 { get; set; }
  231. public string uuid2 { get; set; }
  232. public string device_id { get; set; }
  233. public string sn { get; set; }
  234. public string os { get; set; }
  235. public string os_ver { get; set; }
  236. public string local_ip { get; set; }
  237. public string product_ver { get; set; }
  238. public string cpu { get; set; }
  239. public string pc_name { get; set; }
  240. }
  241. public class deviceBoundExt : deviceBound
  242. {
  243. public string ip { get; set; }
  244. public string pcname { get; set; }
  245. public string os { get; set; }
  246. public string cpu { get; set; }
  247. public string osver { get; set; }
  248. }
  249. public class ProductService
  250. {
  251. public List<ServiceMainPeriod> mainperiod { get; set; }
  252. public List<ServicePeriod> period { get; set; }
  253. public List<ServiceProduct> product { get; set; }
  254. }
  255. public class ServiceMainPeriod
  256. {
  257. public string mainPeriodId { get; set; }
  258. public string mainPeriodtype { get; set; }
  259. public long startDate { get; set; }
  260. public long endDate { get; set; }
  261. public bool active { get; set; }
  262. }
  263. public class ServicePeriod
  264. {
  265. public string mainPeriodId { get; set; }
  266. public string periodId { get; set; }
  267. public long startDate { get; set; }
  268. public long endDate { get; set; }
  269. public bool active { get; set; }
  270. }
  271. public class ServiceProduct
  272. {
  273. public string prodCode { get; set; }
  274. public bool noperiod { get; set; }
  275. public string serviceType { get; set; }
  276. public List<ServiceProductAuth> auth { get; set; }
  277. public int avaliable { get; set; }
  278. }
  279. public class ServiceProductResult
  280. {
  281. public string prodCode { get; set; }
  282. public bool noperiod { get; set; }
  283. public string serviceType { get; set; }
  284. public long startDate { get; set; }
  285. public long endDate { get; set; }
  286. public int avaliable { get; set; }
  287. }
  288. public class ServiceProductAclassoneResult : ServiceProductResult
  289. {
  290. public int staUsed { get; set; }
  291. public int dynUsed { get; set; }
  292. }
  293. public class ServiceProductAuth
  294. {
  295. public string orderId { get; set; }
  296. public string periodId { get; set; }
  297. public int number { get; set; }
  298. public string unit { get; set; }
  299. }
  300. public class ServiceProductAuthHistoryBasic
  301. {
  302. public string orderId { get; set; }
  303. public long orderDate { get; set; }
  304. public int number { get; set; }
  305. public string unit { get; set; }
  306. }
  307. public class ServiceProductAuthHistory : ServiceProductAuthHistoryBasic
  308. {
  309. public List<string> periodIdList { get; set; }
  310. }
  311. public class ServiceProductAuthHistoryStartEnd : ServiceProductAuthHistoryBasic
  312. {
  313. public long startDate { get; set; }
  314. public long endDate { get; set; }
  315. }
  316. public class ProductHard
  317. {
  318. public string prodCode { get; set; }
  319. public string model { get; set; }
  320. public string serial { get; set; }
  321. }
  322. public class CoreUuid
  323. {
  324. public string serial { get; set; }
  325. public string os { get; set; }
  326. public string ip { get; set; }
  327. public string uuid { get; set; }
  328. public string uuid2 { get; set; }
  329. public string deviceId { get; set; }
  330. public string pcname { get; set; }
  331. public string cpu { get; set; }
  332. public int ram { get; set; }
  333. }
  334. public class periodZone
  335. {
  336. public long startDate { get; set; }
  337. public long endDate { get; set; }
  338. }
  339. public class Serial
  340. {
  341. public string id { get; set; } //序號ID
  342. public SerialOrder orderinfo { get; set; } //訂單資訊
  343. //public SerialProd prod { get; set; } //產品資訊
  344. public string prodCode { get; set; } //產品八碼
  345. public int opid { get; set; } //訂單產品識別號
  346. public string serial { get; set; } //序號
  347. public int serialType { get; set; } //序號類型 0:單一授權, 1:大量授權
  348. public int deviceQty { get; set; } = 0; //Device可綁定數量
  349. public int clientQty { get; set; } = 0; //Client授權數
  350. public int installQty { get; set; } = 0; //安裝次數
  351. public string verOrder { get; set; } = null; //購買產品版本資訊
  352. public string verAdd { get; set; } = null; //版本升級版本
  353. public string verAddTMId { get; set; } = null; //版本升級者TMID
  354. //public int? verLimit { get; set; } = null; //特殊序號限制版本
  355. public string regVer { get; set; } = null; //授權啟用版本
  356. public long regDate { get; set; } = 0;//授權啟用日 Timestamp(UTC)
  357. public long regStartDate { get; set; } = 0; //指定最晚啟用日 Timestamp(UTC)
  358. public int authDateTimeType { get; set; } //時間日期授權方式 0:無時間授權 1:時間授權(年月週日) 2:日期授權(指定日期) 3:日期時間授權(兩種皆有)
  359. public long authDateEnd { get; set; } = 0; //訂單指定授權到期日 Timestamp(UTC)
  360. public SerialAuthTimeYMWD authTimeYMWD { get; set; } = null; //訂單指定授權年月週日
  361. public int authDaysNearEndDate { get; set; } = 0; //到期幾天前通知
  362. public long authSysStartDate { get; set; } = 0; //系統算出最終授權起始日 Timestamp(UTC)
  363. public long authSysEndDate { get; set; } = 0; //系統算出最終授權到期日 Timestamp(UTC)
  364. public int authExistDay { get; set; } //序號未啟用作廢前可存在天數
  365. public string authExpireStatus { get; set; } //序號啟用狀態 空:未啟用 A:啟用中 S:即將到期 F:已過期
  366. public SerialAprule aprule { get; set; } = null; //AP自訂義項目
  367. public SerialSaleClient saleClient { get; set; } = null; //銷售終端
  368. public SerialEndUser endUser { get; set; } = null; //終端用戶
  369. public SerialInnerUser innerUser { get; set; } = null; //內部使用者
  370. public List<SerialUUIDInfo> authEnv { get; set; } = null; //UUID
  371. public SerialUUIDInfoOnDel authEnvOnDel { get; set; } = null; //最近一個被解綁的用戶環境資訊
  372. public List<int> attachModule { get; set; } //附屬模組ID列表
  373. public int[] function { get; set; } = null; //擴展各功能代碼
  374. public List<SerialUnbindReq> unbindReq { get; set; } = null; //解綁工單
  375. public int status { get; set; } //可用狀態
  376. public string extraStatus { get; set; } //可用狀態註釋欄
  377. public string changeBy { get; set; } //資料變更來源
  378. public int ttl { get; set; } = -1; //過期刪除秒數
  379. public long operationTime { get; set; } //最新資料變更時間戳記
  380. public string dataType { get; } = "serial"; //資料類型
  381. public static implicit operator Serial(Document v)
  382. {
  383. throw new NotImplementedException();
  384. }
  385. public class SerialAuthTimeYMWD
  386. {
  387. public int y { get; set; } //[Int]年
  388. public int m { get; set; } //[Int]月
  389. public int w { get; set; } //[Int]週
  390. public int d { get; set; } //[Int]日
  391. }
  392. public class SerialSaleClient
  393. {
  394. public string name { get; set; } //[String]銷售終端姓名
  395. public string schoolCode { get; set; } = null; //[String]銷售終端學校代碼
  396. public string clientId { get; set; } = null; //[String]銷售終端客戶ID
  397. public string tmid { get; set; } = null; //[String]TMID
  398. public string type { get; set; } //[String]銷售終端資料類型 school:學校 client:經銷商客戶
  399. public string countryId { get; set; } //[String]國家代碼
  400. public string provinceId { get; set; } //[String]省代碼
  401. public string cityId { get; set; } //[String]市代碼
  402. public string schoolShortCode { get; set; } //[String]學校簡碼
  403. public string districtId { get; set; } //[String]區代碼
  404. public string dataCenter { get; set; } //[String]數據中心
  405. }
  406. public class SerialEndUser
  407. {
  408. public string name { get; set; } //[String]終端用戶姓名
  409. public string TEAMModelId { get; set; } //[String]終端用戶TMID
  410. }
  411. public class SerialInnerUser
  412. {
  413. public int uid { get; set; } //[Int]BB系統使用者ID
  414. public string name { get; set; } //[String]姓名
  415. public string cityCode { get; set; } //[String]城市代碼
  416. public string groupName { get; set; } //[String]部門名稱
  417. }
  418. public class SerialAprule
  419. {
  420. public dynamic series { get; set; } //[String]AP自訂義項目值 逗號分隔字串格式
  421. public dynamic json { get; set; } //[String]AP自訂義項目值 JSON格式
  422. }
  423. }
  424. //序號所屬訂單資訊
  425. public class SerialOrder
  426. {
  427. public string orderid { get; set; } //[String]訂單編號
  428. public int orderAudit { get; set; } //[Int]訂單審核狀態 0:待審, 1:通過, 2:否決, 3:問題
  429. public int orderProperty { get; set; } //[Int]訂單類型 0:銷售,1:展示申請 2:內部申請
  430. }
  431. //序號所屬產品資訊
  432. public class SerialProd
  433. {
  434. public string upgradeCode { get; set; } //[String]產品upgradeCode
  435. public string groupName { get; set; } //[String]產品群組名
  436. public string prodCode { get; set; } //[String]產品八碼
  437. public string prodName { get; set; } //[String]產品名
  438. public int prodType { get; set; } //[Int]產品類型 0:軟體, 1:服務, 2:行動, 3:硬體
  439. public bool free { get; set; } //[Bol]是否為免費產品 (true:免費/false:收費)
  440. }
  441. //序號所屬UUID
  442. public class SerialUUIDInfo
  443. {
  444. public string cesqid { get; set; } //[Int]BB系統用戶環境識別ID
  445. public int? ceid { get; set; } = null; //[Int]BB系統用戶環境識別ID
  446. public string uuid { get; set; } //[String]UUID(英數12碼)
  447. public string uuid2 { get; set; } //[String]UUID2(英數12碼)
  448. public string olduuid { get; set; } //[String]舊UUID
  449. public string pcname { get; set; } //[String]電腦名稱
  450. public string os { get; set; } //[String]OS
  451. public string cpu { get; set; } //[String]CPU
  452. public string vga { get; set; } //[String]VGA
  453. public int? ram { get; set; } //[Int]RAM
  454. public string ip { get; set; } //[String]IP
  455. public string regver { get; set; } //[String]註冊版本
  456. public long regdate { get; set; } //[String]註冊時間 Timestamp(UTC)
  457. }
  458. //最近一個被解綁的用戶環境資訊
  459. public class SerialUUIDInfoOnDel
  460. {
  461. public string uuid { get; set; } //[String]UUID(英數12碼)
  462. public string uuid2 { get; set; } //[String]UUID2(英數12碼)
  463. public string olduuid { get; set; } //[String]舊UUID
  464. public string pcname { get; set; } //[String]電腦名稱
  465. }
  466. //序號所屬解綁工單(申請中)
  467. public class SerialUnbindReq
  468. {
  469. public string serial { get; set; } //[String]序號
  470. public string ubrid { get; set; } //[String]解綁工單ID
  471. public string uuid { get; set; } //[String]UUID(英數12碼)
  472. public string uuid2 { get; set; } //[String]UUID2(英數12碼)
  473. public string olduuid { get; set; } //[String]舊UUID
  474. public string pcname { get; set; } //[String]電腦名稱
  475. public string tmid { get; set; } //[String]醍魔豆帳號
  476. public string name { get; set; } //[String]醍魔豆帳號用戶名
  477. public string countrycode { get; set; } //[String]醍魔豆帳號國家代碼
  478. public string cellphone { get; set; } //[String]醍魔豆帳號手機號
  479. public string department { get; set; } //[String]醍魔豆帳號單位名
  480. public long operationTime { get; set; } //[long]工單產生時間(UnixTime)
  481. }
  482. //5代服務、ID服務 授權週期
  483. public class ServiceClassPeriod
  484. {
  485. public string id { get; set; } //OPID
  486. public string prodCode { get; set; } //產品代碼
  487. public int type { get; set; } //授權類型 0:銷售 1:試用 (預留欄位)
  488. public long startDate { get; set; } = 0;//授權啟用日 Timestamp(UTC)
  489. public long endDate { get; set; } = 0;//授權到期日 Timestamp(UTC)
  490. public int number { get; set; } //數量
  491. public string unit { get; set; } //單位
  492. public ServiceClassSaleClient saleClient { get; set; } //銷售終端
  493. public object aprule { get; set; }
  494. public string changeBy { get; set; } //資料變更來源
  495. public int ttl { get; set; } = -1; //過期刪除秒數
  496. public long operationTime { get; set; } //最新資料變更時間戳記
  497. public string dataType { get; set; } //資料類型 "servicePeriod"
  498. }
  499. //銷售終端 授權週期版
  500. public class ServiceClassSaleClient
  501. {
  502. public string schoolCode { get; set; } //教育部代碼
  503. public string schoolShortCode { get; set; } //學校簡碼
  504. public string clientId { get; set; } //客戶ID
  505. public string tmid { get; set; } //TMID
  506. public string name { get; set; } //名稱
  507. public string type { get; set; } //類型 school、tmid
  508. public string dataCenter { get; set; } //站點 Global、China
  509. }
  510. }