JsonRPCResponseBuilder.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. using TEAMModelOS.SDK.Extension.DataResult.PageToken;
  2. using MessagePack;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Text;
  6. namespace TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse
  7. {
  8. [MessagePackObject(keyAsPropertyName: true)]
  9. public class JsonRPCResponseBuilder
  10. {
  11. private string message="Success";
  12. private string devmsg = "Error";
  13. private int code = 0;
  14. private object data;
  15. private long total;
  16. private int currPage;
  17. private int pageSize;
  18. private int totalPage;
  19. private Dictionary<string, object> extend;
  20. private Pagination page;
  21. private AzureTableToken token;
  22. private object error=null;
  23. public JsonRPCResponseBuilder()
  24. {
  25. }
  26. public JsonRPCResponseBuilder Success()
  27. {
  28. error = null;
  29. return this;
  30. }
  31. public JsonRPCResponseBuilder Success(String message)
  32. {
  33. this.message = message;
  34. return this;
  35. }
  36. public static JsonRPCResponseBuilder custom()
  37. {
  38. return new JsonRPCResponseBuilder();
  39. }
  40. public JsonRPCResponseBuilder Data(object data)
  41. {
  42. this.data = data;
  43. return this;
  44. }
  45. public JsonRPCResponseBuilder Error(object error, string message)
  46. {
  47. this.code = 1;
  48. this.message = message;
  49. this.error = error;
  50. return this;
  51. }
  52. public JsonRPCResponseBuilder Error(object error, int code,string message)
  53. {
  54. this.code = code;
  55. this.message = message;
  56. this.error = error;
  57. return this;
  58. }
  59. public JsonRPCResponseBuilder Error(object error,int code)
  60. {
  61. this.code = code;
  62. this.message = "Error";
  63. this.error = error;
  64. return this;
  65. }
  66. public JsonRPCResponseBuilder Error(object error)
  67. {
  68. this.code = 1;
  69. this.message = "Error";
  70. this.error = error;
  71. return this;
  72. }
  73. public JsonRPCResponseBuilder Extend(Dictionary<String, object> extend)
  74. {
  75. this.extend = extend;
  76. return this;
  77. }
  78. public JsonRPCResponseBuilder Token(AzureTableToken token)
  79. {
  80. this.token = token;
  81. return this;
  82. }
  83. public JsonRPCResponseBuilder Page(Pagination page)
  84. {
  85. this.pageSize = page.pageSize;
  86. this.currPage = page.currPage;
  87. this.total = page.total;
  88. this.page = page;
  89. this.totalPage = (int)Math.Ceiling((double)this.total / (double)this.pageSize);
  90. return this;
  91. }
  92. public JsonRPCResponseBuilder totalCount(int totalCount)
  93. {
  94. this.total = totalCount;
  95. return this;
  96. }
  97. public JsonRPCResponseBuilder CurrPage(int currPage)
  98. {
  99. this.currPage = currPage;
  100. return this;
  101. }
  102. public JsonRPCResponseBuilder PageSize(int pageSize)
  103. {
  104. this.pageSize = pageSize;
  105. return this;
  106. }
  107. public JsonRPCResponseBuilder TotalPage(int totalPage)
  108. {
  109. this.totalPage = totalPage;
  110. return this;
  111. }
  112. public BaseJosnRPCResponse build()
  113. {
  114. object baseResponse= null;
  115. if (error != null) {
  116. ErrorJosnRPCResponse<object> errorJosnRPCResponse = new ErrorJosnRPCResponse<object>();
  117. errorJosnRPCResponse.error.code = code;
  118. errorJosnRPCResponse.error.message = message;
  119. errorJosnRPCResponse.error.data = error;
  120. errorJosnRPCResponse.error.devmsg = devmsg;
  121. baseResponse = errorJosnRPCResponse;
  122. return (BaseJosnRPCResponse)baseResponse;
  123. }
  124. if (this.total > 0 && this.pageSize > 0)
  125. {
  126. this.totalPage = (int)Math.Ceiling((double)this.total / (double)this.pageSize);
  127. }
  128. if (null != this.data && this.token != null)
  129. {
  130. TokenJosnRPCResponse<object> tokenJosnRPCResponse = new TokenJosnRPCResponse<object>();
  131. tokenJosnRPCResponse.result.data = this.data;
  132. tokenJosnRPCResponse.result.extend = this.extend;
  133. tokenJosnRPCResponse.result.azureToken = this.token;
  134. tokenJosnRPCResponse.result.message = message;
  135. baseResponse = tokenJosnRPCResponse;
  136. }
  137. else if (null != this.data && this.total > 0 && this.currPage > 0 && this.pageSize > 0 && this.totalPage > 0)
  138. {
  139. PageJosnRPCResponse<object> pageDatasResponse = new PageJosnRPCResponse<object>();
  140. pageDatasResponse.result.data = this.data;
  141. pageDatasResponse.result.page = new Pagination(this.total, this.currPage, this.pageSize, this.totalPage);
  142. pageDatasResponse.result.extend = this.extend;
  143. pageDatasResponse.result.message = message;
  144. baseResponse = pageDatasResponse;
  145. }
  146. else if (this.data != null)
  147. {
  148. DataJosnRPCResponse<object> datasResponse = new DataJosnRPCResponse<object>();
  149. datasResponse.result.data = this.data;
  150. datasResponse.result.extend = this.extend;
  151. datasResponse.result.message = message;
  152. baseResponse = datasResponse;
  153. }
  154. else
  155. {
  156. baseResponse = new BaseJosnRPCResponse();
  157. }
  158. return (BaseJosnRPCResponse)baseResponse;
  159. }
  160. }
  161. }