123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378 |
- import 'dart:convert';
- import 'package:flutter/material.dart';
- import 'package:get/get.dart';
- import 'package:o2oa_all_platform/pages/home/apps/index.dart';
- import '../models/index.dart';
- import '../services/index.dart';
- import '../utils/index.dart';
- import '../widgets/index.dart';
- import 'x_attendance_assemble_control.dart';
- ///
- ///中心服务
- ///
- class ProgramCenterService extends GetxService {
- static ProgramCenterService get to => Get.find();
- // 内存中放置 后续使用
- AppStyle? _appStyle;
- AppStyle? get appStyle {
- if (_appStyle == null) {
- String style = SharedPreferenceService.to
- .getString(SharedPreferenceService.appStyleSpKey);
- OLogger.d("当前服务器的appStyle: $style");
- if (style.isNotEmpty) {
- _appStyle = AppStyle.fromJson(O2Utils.parseStringToJson(style));
- }
- }
- return _appStyle;
- }
- String baseUrl() {
- var centerUrl = O2ApiManager.instance.getCenterBaseUrl();
- if (centerUrl == null || centerUrl.isEmpty) {
- return '';
- }
- return centerUrl;
- }
- /// 执行脚本
- /// [scriptName] 脚本名称
- /// [body] 传入参数
- Future<dynamic> executeScript(String scriptName, Map<String, dynamic> body) async {
- try {
- ApiResponse response = await O2HttpClient.instance.post('${baseUrl()}jaxrs/invoke/$scriptName/execute', body);
- if (response.isSuccess()) {
- final value = ScriptExecuteResponse.fromJson(response.data);
- return value.value;
- }
- } catch (err, stackTrace) {
- OLogger.e('执行脚本失败', err, stackTrace);
- }
- return null;
- }
- /// 连接O2OA center服务器
- Future<bool> loadCenterServerOnline() async {
- var unit = O2ApiManager.instance.o2CloudServer;
- if (unit == null) {
- return false;
- }
- if (baseUrl().isEmpty) {
- return false;
- }
- try {
- var url =
- "${baseUrl()}jaxrs/distribute/webserver/assemble/source/${unit.centerHost}";
- ApiResponse response =
- await O2HttpClient.instance.get(url, needToken: false);
- if (response.data == null) {
- return false;
- }
- var dataJson = json.encode(response.data);
- OLogger.i("获取到服务器信息完成, $dataJson");
- await O2ApiManager.instance.putCenterServerJson2SP(dataJson);
- return true;
- } catch (err, stackTrace) {
- OLogger.e('连接服务器失败', err, stackTrace);
- return false;
- }
- }
- ///
- /// 在线获取移动app相关的配置
- ///
- Future<AppStyle?> loadCurrentStyle() async {
- try {
- ApiResponse response = await O2HttpClient.instance
- .get('${baseUrl()}jaxrs/appstyle/current/style', needToken: false);
- if (response.isSuccess()) {
- AppStyle appStyle = AppStyle.fromJson(response.data);
- _appStyle = appStyle;
- final needGrey = SharedPreferenceService.to.getBool(SharedPreferenceService.appStyleNeedGreyKey, defaultValue: false);
- final newNeedGrey = appStyle.needGray ?? false;
- if (needGrey != newNeedGrey) {
- OLogger.d('全局黑白的变化 ............');
- await SharedPreferenceService.to.putBool(SharedPreferenceService.appStyleNeedGreyKey, newNeedGrey);
- EventBus().emit(EventBus.greyColorChangeGlobalMsg); // 发送通知 重建 ui
- }
- _storeAppStyle2SP(appStyle);
- OLogger.d("请求完成,获取到appstyle!");
- return appStyle;
- }
- } catch (err, stackTrace) {
- OLogger.e('获取appStyle失败', err, stackTrace);
- }
- return null;
- }
- ///
- /// 把appStyle对象存储存储到sp
- ///
- Future<void> _storeAppStyle2SP(AppStyle appStyle) async {
- String jsonAppStyle = json.encode(appStyle.toJson());
- await SharedPreferenceService.to
- .putString(SharedPreferenceService.appStyleSpKey, jsonAppStyle);
- }
- ///
- /// 原生应用列表
- ///
- List<AppFrontData?> getCurrentNativeAppList() {
- var list = appStyle?.nativeAppList ?? [];
- List<AppFrontData?> ret = list
- .map<AppFrontData?>((e) {
- O2NativeAppEnum? appEnum = _getO2NativeWithKey(e.key);
- if (appEnum == null) {
- return null;
- }
- if (e.enable == false) {
- return null;
- }
- AppFrontData data = AppFrontData(
- name: appEnum.name,
- displayName: e.displayName,
- key: appEnum.key,
- type: O2AppTypeEnum.native,
- nativeEnum: appEnum);
- return data;
- })
- .where((element) => element != null)
- .toList();
- // && !AttendanceAssembleControlService.to.isV2() 暂时显示旧版打卡 后面版本将隐藏旧打卡
- if (ret.firstWhereOrNull((element) =>
- element != null && element.key == O2NativeAppEnum.attendance.key) !=
- null && !AttendanceAssembleControlService.to.closeOldAttendance()) {
- ret.add(AppFrontData(
- name: O2NativeAppEnum.attendanceOld.name,
- key: O2NativeAppEnum.attendanceOld.key,
- type: O2AppTypeEnum.native,
- nativeEnum: O2NativeAppEnum.attendanceOld));
- }
- return ret;
- }
- ///
- /// 门户应用
- ///
- List<AppFrontData?> getCurrentPortalAppList() {
- var list = appStyle?.portalList ?? [];
- return list
- .map<AppFrontData?>((e) {
- String? portalId = e.id;
- String? name = e.name;
- if (portalId == null || name == null) {
- return null;
- }
- AppFrontData data = AppFrontData(
- name: name,
- key: portalId,
- type: O2AppTypeEnum.portal,
- portalId: portalId);
- return data;
- })
- .where((element) => element != null)
- .toList();
- }
- O2NativeAppEnum? _getO2NativeWithKey(String? key) {
- if (key == null) {
- return null;
- }
- switch (key) {
- case "task":
- return O2NativeAppEnum.task;
- case "taskcompleted":
- return O2NativeAppEnum.taskcompleted;
- case "read":
- return O2NativeAppEnum.read;
- case "readcompleted":
- return O2NativeAppEnum.readcompleted;
- case "bbs":
- return O2NativeAppEnum.bbs;
- case "calendar":
- return O2NativeAppEnum.calendar;
- case "cms":
- return O2NativeAppEnum.cms;
- case "meeting":
- return O2NativeAppEnum.meeting;
- case "mindMap":
- return O2NativeAppEnum.mindMap;
- case "attendance":
- return O2NativeAppEnum.attendance;
- case "yunpan":
- return O2NativeAppEnum.yunpan;
- default:
- return null;
- }
- }
- ///
- /// 是否显示系统消息
- ///
- bool isShowSystemMessage() {
- if (appStyle != null) {
- return appStyle?.systemMessageSwitch ?? true;
- }
- return true;
- }
- ///
- /// 简易模式
- ///
- bool isSimpleMode() {
- if (appStyle != null) {
- return appStyle?.simpleMode ?? false;
- }
- return false;
- }
- /// 推广页invoke脚本
- String promotionPageScript() {
- if (appStyle != null) {
- return appStyle?.promotionPageScript ?? '';
- }
- return '';
- }
-
- /// 语音助手invoke脚本
- String speechScript() {
- if (appStyle != null) {
- return appStyle?.speechScript ?? '';
- }
- return '';
- }
- /// 扩展参数
- Map<String, dynamic> extendParam() {
- if (appStyle != null) {
- return appStyle?.extendParam ?? {};
- }
- return {};
- }
- /// 首页tab 门户 扩展参数
- ExtendParamHomeTabPortal? getExtendParamHomeTabPortal(String key) {
- final p = extendParam();
- if (p[key] != null) {
- return ExtendParamHomeTabPortal.fromJson(p[key]);
- }
- return null;
- }
- /// 首页居中,如果居中页面个数就固定了 5 个。appIndexPages无效了
- bool isIndexCentered() {
- if (appStyle != null) {
- return appStyle?.indexCentered ?? false;
- }
- return false;
- }
- /// 首页信息中心 过滤条件
- List<String> indexFilterCmsCategoryList () {
- return appStyle?.cmsCategoryFilterList ?? [];
- }
- /// 首页办公中心 过滤条件
- List<String> indexFilterProcessList () {
- return appStyle?.processFilterList ?? [];
- }
- /// 首页页面列表
- List<String> appIndexPages() {
- return appStyle?.appIndexPages ?? [];
- }
- ///
- /// 首页是显示门户还是默认的
- ///
- String? homeIndexPage() {
- if (appStyle != null &&
- appStyle?.indexType == 'portal' &&
- appStyle?.indexPortal?.isNotEmpty == true) {
- return appStyle!.indexPortal!;
- }
- return null;
- }
- ///启动 logo图
- Widget aboutLogoImageView() {
- return _commonAppImageView('launch_logo', 48, 48, 'icon_settings_about.png');
- }
- ///启动 logo图
- Widget launchLogoImageView() {
- return _commonAppImageView('launch_logo', 128, 128, 'icon_settings_about.png');
- }
- ///
- ///首页底部Home focus 图
- Widget homeFocusImageView() {
- return _commonAppImageView('index_bottom_menu_logo_focus', 48, 48, 'index_bottom_bar_selected.png');
- }
-
- ///
- ///首页底部Home blur 图
- Widget homeBlurImageView() {
- return _commonAppImageView('index_bottom_menu_logo_blur', 48, 48, 'index_bottom_bar_unselected.png');
- }
-
- ///登录页头像 图
- Widget loginAvatarImageView() {
- return _commonAppImageView('login_avatar', 76, 76, 'login_avatar.png');
- }
-
- /// 应用页面 图片 375
- Widget appPageImageView() {
- return _commonAppImageView('application_top', 375, 195, 'application_top.png');
- }
- ///流程图标 图
- // Uint8List? getProcessDefaultImage() {
- // return _getServerBase64Image('process_default');
- // }
- ///关于 图
- Widget setupAboutImageView() {
- return _commonAppImageView('setup_about_logo', 22, 22, 'icon_settings_about.png');
- }
- Widget _commonAppImageView(String keyName, double width, double height, String defaultAssetImage) {
- if (appStyle != null && appStyle!.images != null) {
- final element =
- appStyle?.images?.firstWhere((e) => e.name == keyName);
- if (element != null) {
- final webUrl = O2ApiManager.instance.webBaseUrl();
- if (element.path?.isNotEmpty == true && webUrl?.isNotEmpty == true) {
- final url = '$webUrl/${element.path!}';
- return Image.network(
- url,
- width: width,
- height: height,
- fit: BoxFit.fill,
- );
- } else if (element.value?.isNotEmpty == true) {
- return Image.memory(
- base64Decode(element.value!),
- width: width,
- height: height,
- fit: BoxFit.fill,
- );
- }
- }
- }
- return AssetsImageView(
- defaultAssetImage,
- width: width,
- height: height,
- fit: BoxFit.fill,
- );
- }
-
- }
|