o2_api_manager.dart 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. import 'dart:convert' show json;
  2. import 'package:flutter/material.dart';
  3. import 'package:o2_flutter/common/models/o2_api_module.dart';
  4. import 'package:o2_flutter/common/models/o2_server.dart';
  5. import 'package:o2_flutter/common/models/o2_unit.dart';
  6. import 'package:o2_flutter/common/utils/shared_preference_manager.dart';
  7. class O2ApiManager {
  8. static final O2ApiManager instance = O2ApiManager._internal();
  9. factory O2ApiManager() => instance;
  10. O2ApiManager._internal();
  11. O2Unit? _o2unit;
  12. CenterServerInfo? _centerServerInfo;
  13. ///
  14. /// get
  15. ///
  16. O2Unit? get o2Unit {
  17. return _o2unit;
  18. }
  19. CenterServerInfo? get centerServerInfo {
  20. return _centerServerInfo;
  21. }
  22. String get o2TokenName {
  23. if (_centerServerInfo == null) {
  24. return 'x-token';
  25. } else {
  26. return _centerServerInfo?.tokenName ?? 'x-token';
  27. }
  28. }
  29. ///
  30. /// 初始化当前连接的O2服务器信息
  31. ///
  32. Future<void> initO2Unit(String unitJsonStr) async {
  33. debugPrintStack(label: 'initO2Unit:$unitJsonStr');
  34. String? unit = await SharedPreferenceManager.instance.putString(SharedPreferenceManager.FLUTTER_O2_UNIT_KEY, unitJsonStr);
  35. if (unit != null) {
  36. _o2unit = O2Unit.fromJson(json.decode(unit));
  37. }
  38. }
  39. ///
  40. /// 初始化当前连接的O2 center服务器数据
  41. /// @param centerServerJson
  42. ///
  43. Future<void> initO2CenterServer(String centerServerJson) async {
  44. debugPrintStack(label: 'initO2WebServer:$centerServerJson');
  45. String? center = await SharedPreferenceManager.instance.putString(SharedPreferenceManager.FLUTTER_O2_CENTER_SERVER_KEY, centerServerJson);
  46. if (center != null) {
  47. _centerServerInfo = CenterServerInfo.fromJson(json.decode(center));
  48. }
  49. }
  50. ///
  51. /// 文件地址
  52. ///
  53. String getFileURL(String? fileId) {
  54. //http://dev.o2oa.net:20020/x_file_assemble_control/jaxrs/file/b871a896-93f7-4245-8e5a-100fd4a67d9d/download/stream
  55. String? baseUrl = getModuleBaseUrl(O2DistributeModuleEnum.x_file_assemble_control);
  56. if(fileId != null && fileId != 'null' && fileId.isNotEmpty && baseUrl != null && baseUrl.isNotEmpty) {
  57. return '${baseUrl}jaxrs/file/$fileId/download/stream';
  58. }else {
  59. return '';
  60. }
  61. }
  62. ///
  63. /// 获取中心服务器地址
  64. ///
  65. String getCenterBaseUrl() {
  66. if(_o2unit == null) {
  67. return '';
  68. }
  69. String? context = _o2unit?.centerContext;
  70. if (context == null) {
  71. return '';
  72. }
  73. if(context.contains('/')) {
  74. return '${_o2unit?.httpProtocol}://${_o2unit?.centerHost}:${_o2unit?.centerPort}$context/';
  75. }else {
  76. return '${_o2unit?.httpProtocol}://${_o2unit?.centerHost}:${_o2unit?.centerPort}/$context/';
  77. }
  78. }
  79. ///
  80. /// 获取模块的url地址
  81. ///
  82. String? getModuleBaseUrl(O2DistributeModuleEnum module) {
  83. ModuleServerInfo? serverInfo;
  84. switch (module) {
  85. case O2DistributeModuleEnum.x_processplatform_assemble_surface_script:
  86. serverInfo = _centerServerInfo?.assembles?.x_processplatform_assemble_surface_script;
  87. break;
  88. case O2DistributeModuleEnum.x_processplatform_assemble_surface_task:
  89. serverInfo = _centerServerInfo?.assembles?.x_processplatform_assemble_surface_task;
  90. break;
  91. case O2DistributeModuleEnum.x_processplatform_assemble_surface_worklog:
  92. serverInfo = _centerServerInfo?.assembles?.x_processplatform_assemble_surface_worklog;
  93. break;
  94. case O2DistributeModuleEnum.x_processplatform_assemble_surface_attachment:
  95. serverInfo = _centerServerInfo?.assembles?.x_processplatform_assemble_surface_attachment;
  96. break;
  97. case O2DistributeModuleEnum
  98. .x_processplatform_assemble_surface_workcompleted:
  99. serverInfo =
  100. _centerServerInfo?.assembles?.x_processplatform_assemble_surface_workcompleted;
  101. break;
  102. case O2DistributeModuleEnum.x_processplatform_assemble_surface_work:
  103. serverInfo = _centerServerInfo?.assembles?.x_processplatform_assemble_surface_work;
  104. break;
  105. case O2DistributeModuleEnum.x_file_assemble_control:
  106. serverInfo = _centerServerInfo?.assembles?.x_file_assemble_control;
  107. break;
  108. case O2DistributeModuleEnum.x_meeting_assemble_control:
  109. serverInfo = _centerServerInfo?.assembles?.x_meeting_assemble_control;
  110. break;
  111. case O2DistributeModuleEnum.x_attendance_assemble_control:
  112. serverInfo = _centerServerInfo?.assembles?.x_attendance_assemble_control;
  113. break;
  114. case O2DistributeModuleEnum.x_okr_assemble_control:
  115. serverInfo = _centerServerInfo?.assembles?.x_okr_assemble_control;
  116. break;
  117. case O2DistributeModuleEnum.x_bbs_assemble_control:
  118. serverInfo = _centerServerInfo?.assembles?.x_bbs_assemble_control;
  119. break;
  120. case O2DistributeModuleEnum.x_hotpic_assemble_control:
  121. serverInfo = _centerServerInfo?.assembles?.x_hotpic_assemble_control;
  122. break;
  123. case O2DistributeModuleEnum
  124. .x_processplatform_assemble_surface_applicationdict:
  125. serverInfo =
  126. _centerServerInfo?.assembles?.x_processplatform_assemble_surface_applicationdict;
  127. break;
  128. case O2DistributeModuleEnum.x_cms_assemble_control:
  129. serverInfo = _centerServerInfo?.assembles?.x_cms_assemble_control;
  130. break;
  131. case O2DistributeModuleEnum.x_organization_assemble_control:
  132. serverInfo = _centerServerInfo?.assembles?.x_organization_assemble_control;
  133. break;
  134. case O2DistributeModuleEnum.x_organization_assemble_custom:
  135. serverInfo = _centerServerInfo?.assembles?.x_organization_assemble_custom;
  136. break;
  137. case O2DistributeModuleEnum.x_processplatform_assemble_surface:
  138. serverInfo = _centerServerInfo?.assembles?.x_processplatform_assemble_surface;
  139. break;
  140. case O2DistributeModuleEnum.x_processplatform_assemble_surface_read:
  141. serverInfo = _centerServerInfo?.assembles?.x_processplatform_assemble_surface_read;
  142. break;
  143. case O2DistributeModuleEnum
  144. .x_processplatform_assemble_surface_readcompleted:
  145. serverInfo =
  146. _centerServerInfo?.assembles?.x_processplatform_assemble_surface_readcompleted;
  147. break;
  148. case O2DistributeModuleEnum.x_organization_assemble_express:
  149. serverInfo = _centerServerInfo?.assembles?.x_organization_assemble_express;
  150. break;
  151. case O2DistributeModuleEnum.x_organization_assemble_personal:
  152. serverInfo = _centerServerInfo?.assembles?.x_organization_assemble_personal;
  153. break;
  154. case O2DistributeModuleEnum
  155. .x_processplatform_assemble_surface_taskcompleted:
  156. serverInfo =
  157. _centerServerInfo?.assembles?.x_processplatform_assemble_surface_taskcompleted;
  158. break;
  159. case O2DistributeModuleEnum.x_processplatform_assemble_surface_process:
  160. serverInfo = _centerServerInfo?.assembles?.x_processplatform_assemble_surface_process;
  161. break;
  162. case O2DistributeModuleEnum.x_component_assemble_control:
  163. serverInfo = _centerServerInfo?.assembles?.x_component_assemble_control;
  164. break;
  165. case O2DistributeModuleEnum
  166. .x_processplatform_assemble_surface_application:
  167. serverInfo = _centerServerInfo?.assembles?.x_processplatform_assemble_surface_application;
  168. break;
  169. case O2DistributeModuleEnum.x_processplatform_assemble_surface_data:
  170. serverInfo = _centerServerInfo?.assembles?.x_processplatform_assemble_surface_data;
  171. break;
  172. case O2DistributeModuleEnum.x_processplatform_assemble_designer:
  173. serverInfo = _centerServerInfo?.assembles?.x_processplatform_assemble_designer;
  174. break;
  175. case O2DistributeModuleEnum.x_processplatform_assemble_surface_review:
  176. serverInfo = _centerServerInfo?.assembles?.x_processplatform_assemble_surface_review;
  177. break;
  178. case O2DistributeModuleEnum.x_organization_assemble_authentication:
  179. serverInfo = _centerServerInfo?.assembles?.x_organization_assemble_authentication;
  180. break;
  181. case O2DistributeModuleEnum.x_portal_assemble_surface:
  182. serverInfo = _centerServerInfo?.assembles?.x_portal_assemble_surface;
  183. break;
  184. case O2DistributeModuleEnum.x_calendar_assemble_control:
  185. serverInfo = _centerServerInfo?.assembles?.x_calendar_assemble_control;
  186. break;
  187. case O2DistributeModuleEnum.x_mind_assemble_control:
  188. serverInfo = _centerServerInfo?.assembles?.x_mind_assemble_control;
  189. break;
  190. case O2DistributeModuleEnum.x_teamwork_assemble_control:
  191. serverInfo = _centerServerInfo?.assembles?.x_teamwork_assemble_control;
  192. break;
  193. }
  194. if (serverInfo == null) {
  195. return null;
  196. }
  197. String protocol = _o2unit == null? "http" : _o2unit?.httpProtocol ?? "http";
  198. return "$protocol://${serverInfo.host}:${serverInfo.port}${serverInfo.context}/";
  199. }
  200. }