Files
pj_supermarket_cloud/lib/pages/setting/controller.dart
T
2025-03-10 19:35:18 +08:00

235 lines
6.1 KiB
Dart

import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:forui/forui.dart';
import 'package:get/get.dart';
import 'package:pj_supermarket_cloud/common/index.dart';
class SettingController extends GetxController {
static const String _tag = "设置 Controller";
final appC = Get.find<AppControl>();
Rx<SysSetting?> sysSetting = Rx(null);
Rx<UserSetting?> userSetting = Rx(null);
// 全局文字大小
var globalFontSizeC = FRadioSelectGroupController<String>(
value: SettingGlobalFontSize.xl3.code,
);
// 付款方式
var globalPayTableC = FMultiSelectGroupController(
values: OrderPayDisplayType.values.map((v) => v.code).toSet(),
);
// 默认付款方式
var defaultGlobalPayTableC = FRadioSelectGroupController<String>(
value: OrderPayDisplayType.face.code,
);
_initData() {
update(["setting"]);
getSetting();
}
RxList<SettingMenu> menuList = <SettingMenu>[
SettingMenu(
prefixIcon: FAssets.icons.bookCopy,
title: "基本信息",
type: SettingMenuType.baseInfo,
),
SettingMenu(
prefixIcon: FAssets.icons.refreshCw,
title: "同步设置",
type: SettingMenuType.syncSetting,
),
SettingMenu(
prefixIcon: FAssets.icons.japaneseYen,
title: "支付设置",
type: SettingMenuType.paySetting,
),
SettingMenu(
prefixIcon: FAssets.icons.databaseBackup,
title: "资源备份",
type: SettingMenuType.backup,
),
SettingMenu(
prefixIcon: FAssets.icons.scanFace,
title: "人脸管理",
type: SettingMenuType.faceSetting,
),
SettingMenu(
prefixIcon: FAssets.icons.shoppingCart,
title: "商品管理",
type: SettingMenuType.productSetting,
),
].obs;
Rx<SettingMenuType> cuurentMenuType = SettingMenuType.baseInfo.obs;
@override
void onInit() async {
super.onInit();
globalFontSizeC.addValueListener((v) {
final fontSizeType = SettingGlobalFontSize.values.fromCode(
v.first,
);
if (fontSizeType == null) return;
final appTheme = Get.find<AppThemeControl>();
appTheme.setSizeScalar(fontSizeType);
});
}
@override
void onReady() {
super.onReady();
_initData();
}
@override
void onClose() {
super.onClose();
globalFontSizeC.dispose();
globalPayTableC.dispose();
defaultGlobalPayTableC.dispose();
}
void doMenu(SettingMenu v) {
if (v.type == cuurentMenuType.value) {
return;
}
cuurentMenuType.value = v.type;
menuList.refresh();
}
// 同步设置
void syncConfig() async {
final isNetwork = AppNetworkTool.isAutoNetworkMsg();
if (!isNetwork) return;
EasyLoading.show(
status: '同步中...',
maskType: EasyLoadingMaskType.black,
);
try {
await SyncConfigTool.autoSyncSysInfo();
Toast.success(msg: "同步设备信息成功");
EasyLoading.dismiss();
} catch (e, stack) {
Toast.error(msg: "同步设备信息错误");
logger.e("|$_tag|同步设备信息error:|$e|stack:|$stack|");
EasyLoading.dismiss();
}
}
// 重新连接长链接
void syncMq() async {
final isNetwork = AppNetworkTool.isAutoNetworkMsg();
if (!isNetwork) return;
EasyLoading.show(
status: '同步中...',
maskType: EasyLoadingMaskType.black,
);
try {
await AppMqTool.mqRefresh();
Toast.success(msg: "同步长连接成功");
EasyLoading.dismiss();
} catch (e, stack) {
Toast.error(msg: "同步长连接错误");
logger.e("|$_tag|同步长连接error:|$e|stack:|$stack|");
EasyLoading.dismiss();
}
}
// 同步分类
void syncClassify() async {
final isNetwork = AppNetworkTool.isAutoNetworkMsg();
if (!isNetwork) return;
EasyLoading.show(
status: '同步中...',
maskType: EasyLoadingMaskType.black,
);
try {
await SyncProductTool.syncClassify();
Toast.success(msg: "同步分类成功");
EasyLoading.dismiss();
} catch (e, stack) {
Toast.error(msg: "同步分类错误");
logger.e("|$_tag|同步分类error:|$e|stack:|$stack|");
EasyLoading.dismiss();
}
}
// 同步商品
void syncProduct() async {
final isNetwork = AppNetworkTool.isAutoNetworkMsg();
if (!isNetwork) return;
EasyLoading.show(
status: '同步中...',
maskType: EasyLoadingMaskType.black,
);
try {
await SyncProductTool.syncProduct();
EasyLoading.dismiss();
Toast.success(msg: "同步商品成功");
EasyLoading.dismiss();
} catch (e, stack) {
Toast.error(msg: "同步商品错误");
logger.e("|$_tag|同步商品error:|$e|stack:|$stack|");
EasyLoading.dismiss();
}
}
// 同步离线订单
void syncOfflineOrder() async {
final isNetwork = AppNetworkTool.isAutoNetworkMsg();
if (!isNetwork) return;
EasyLoading.show(
status: '同步中...',
maskType: EasyLoadingMaskType.black,
);
try {
await SyncOrderTool.syncOfflineOrder();
Toast.success(msg: "同步离线订单成功");
EasyLoading.dismiss();
} catch (e) {
Toast.error(msg: "同步离线订单错误");
logger.e("|$_tag|同步离线订单error:|$e|");
EasyLoading.dismiss();
}
}
// 备份sql
void backupsSql() async {
EasyLoading.show(
status: '备份中...',
maskType: EasyLoadingMaskType.black,
);
try {
final bool = await AppFileTool.backupSqlFile();
if (!bool) throw Error();
EasyLoading.dismiss();
Toast.success(msg: "备份中sql成功");
EasyLoading.dismiss();
} catch (e) {
Toast.error(msg: "备份中sql失败");
EasyLoading.dismiss();
}
}
// 备份日志
void backupsLog() async {
Toast.success(msg: "当前日志为实时备份");
}
Future<void> getSetting() async {
sysSetting.value = await AppSettingTool.getSysSetting();
userSetting.value = await AppSettingTool.getUserSetting();
if (userSetting.value!.globalFontSize != null) {
globalFontSizeC = FRadioSelectGroupController(
value: SettingGlobalFontSize.xl3.code,
);
}
}
}