From 70f4df431fb82685507a6f820a5e49bf032c6a4e Mon Sep 17 00:00:00 2001 From: jyuesong <425698907@qq.com> Date: Sun, 24 Apr 2022 12:12:53 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8D=E6=96=B0=E7=89=88=E6=9C=ACap?= =?UTF-8?q?i?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/base/http/api.dart | 74 ++++++++++++++++++++++++-------- lib/base/http/url.dart | 2 + lib/json.jc.dart | 13 +++++- lib/module/env/env_page.dart | 2 +- lib/module/home/home_page.dart | 20 ++++++++- lib/module/home/system_bean.dart | 23 ++++++++++ lib/utils/utils.dart | 35 ++++++++++++++- 7 files changed, 144 insertions(+), 25 deletions(-) create mode 100644 lib/module/home/system_bean.dart diff --git a/lib/base/http/api.dart b/lib/base/http/api.dart index e774a11..a7142f1 100644 --- a/lib/base/http/api.dart +++ b/lib/base/http/api.dart @@ -1,6 +1,7 @@ import 'package:qinglong_app/base/http/http.dart'; import 'package:qinglong_app/module/config/config_bean.dart'; import 'package:qinglong_app/module/env/env_bean.dart'; +import 'package:qinglong_app/module/home/system_bean.dart'; import 'package:qinglong_app/module/login/login_bean.dart'; import 'package:qinglong_app/module/login/user_bean.dart'; import 'package:qinglong_app/module/others/dependencies/dependency_bean.dart'; @@ -9,9 +10,17 @@ import 'package:qinglong_app/module/others/scripts/script_bean.dart'; import 'package:qinglong_app/module/others/task_log/task_log_bean.dart'; import 'package:qinglong_app/module/task/task_bean.dart'; +import '../../utils/utils.dart'; import 'url.dart'; class Api { + static Future> system() async { + return await Http.get( + Url.system, + {}, + ); + } + static Future> login( String userName, String passWord, @@ -24,10 +33,11 @@ class Api { }, ); } + static Future> loginOld( - String userName, - String passWord, - ) async { + String userName, + String passWord, + ) async { return await Http.post( Url.loginOld, { @@ -36,6 +46,7 @@ class Api { }, ); } + static Future> loginTwo( String userName, String passWord, @@ -78,21 +89,24 @@ class Api { ); } - static Future> startTasks(List crons) async { + static Future> startTasks( + List crons) async { return await Http.put( Url.runTasks, crons, ); } - static Future> stopTasks(List crons) async { + static Future> stopTasks( + List crons) async { return await Http.put( Url.stopTasks, crons, ); } - static Future> updatePassword(String name, String password) async { + static Future> updatePassword( + String name, String password) async { return await Http.put( Url.updatePassword, { @@ -109,11 +123,17 @@ class Api { ); } - static Future> addTask(String name, String command, String cron, {String? id}) async { + static Future> addTask( + String name, String command, String cron, + {String? id}) async { var data = {"name": name, "command": command, "schedule": cron}; if (id != null) { - data["id"] = id; + if (Utils.isUpperVersion()) { + data["id"] = id; + } else { + data["_id"] = id; + } return await Http.put( Url.addTask, data, @@ -174,7 +194,8 @@ class Api { ); } - static Future> saveFile(String name, String content) async { + static Future> saveFile( + String name, String content) async { return await Http.post( Url.saveFile, {"content": content, "name": name}, @@ -209,7 +230,9 @@ class Api { ); } - static Future> addEnv(String name, String value, String remarks, {String? id}) async { + static Future> addEnv( + String name, String value, String remarks, + {String? id}) async { var data = { "value": value, "remarks": remarks, @@ -217,7 +240,12 @@ class Api { }; if (id != null) { - data["id"] = id; + if (Utils.isUpperVersion()) { + data["id"] = id; + } else { + data["_id"] = id; + } + return await Http.put( Url.addEnv, data, @@ -229,7 +257,8 @@ class Api { ); } - static Future> moveEnv(String id, int fromIndex, int toIndex) async { + static Future> moveEnv( + String id, int fromIndex, int toIndex) async { return await Http.put( Url.envMove(id), {"fromIndex": fromIndex, "toIndex": toIndex}, @@ -244,7 +273,8 @@ class Api { } static Future>> taskLog() async { - return await Http.get>(Url.taskLog, null, serializationName: "dirs"); + return await Http.get>(Url.taskLog, null, + serializationName: "dirs"); } static Future> taskLogDetail(String name) async { @@ -261,7 +291,8 @@ class Api { ); } - static Future> updateScript(String name, String path, String content) async { + static Future> updateScript( + String name, String path, String content) async { return await Http.put( Url.scriptDetail, { @@ -272,7 +303,8 @@ class Api { ); } - static Future> delScript(String name, String path) async { + static Future> delScript( + String name, String path) async { return await Http.delete( Url.scriptDetail, { @@ -282,7 +314,8 @@ class Api { ); } - static Future> scriptDetail(String name, String? path) async { + static Future> scriptDetail( + String name, String? path) async { return await Http.get( Url.scriptDetail + name, { @@ -291,7 +324,8 @@ class Api { ); } - static Future>> dependencies(String type) async { + static Future>> dependencies( + String type) async { return await Http.get>( Url.dependencies, { @@ -300,7 +334,8 @@ class Api { ); } - static Future> dependencyReinstall(String id) async { + static Future> dependencyReinstall( + String id) async { return await Http.put( Url.dependencies, [id], @@ -314,7 +349,8 @@ class Api { ); } - static Future> addDependency(String name, int type) async { + static Future> addDependency( + String name, int type) async { return await Http.post( Url.dependencies, [ diff --git a/lib/base/http/url.dart b/lib/base/http/url.dart index 26e2025..e2fc3f5 100644 --- a/lib/base/http/url.dart +++ b/lib/base/http/url.dart @@ -2,6 +2,8 @@ import '../../main.dart'; import '../userinfo_viewmodel.dart'; class Url { + static get system => "/api/system"; + static get login => "/api/user/login"; static get loginOld => "/api/login"; diff --git a/lib/json.jc.dart b/lib/json.jc.dart index a5331fc..cf338fb 100644 --- a/lib/json.jc.dart +++ b/lib/json.jc.dart @@ -2,6 +2,7 @@ import 'package:qinglong_app/module/config/config_bean.dart'; import 'package:qinglong_app/module/env/env_bean.dart'; +import 'package:qinglong_app/module/home/system_bean.dart'; import 'package:qinglong_app/module/login/login_bean.dart'; import 'package:qinglong_app/module/login/user_bean.dart'; import 'package:qinglong_app/module/others/dependencies/dependency_bean.dart'; @@ -33,6 +34,10 @@ class JsonConversion$Json { return EnvBean.jsonConversion(json) as M; } + if(type == (SystemBean).toString()){ + return SystemBean.jsonConversion(json) as M; + } + if(type == (LoginBean).toString()){ return LoginBean.jsonConversion(json) as M; } @@ -60,7 +65,7 @@ class JsonConversion$Json { if(type == (TaskBean).toString()){ return TaskBean.jsonConversion(json) as M; } - + throw Exception("not found"); } @@ -73,6 +78,10 @@ class JsonConversion$Json { return data.map((e) => EnvBean.jsonConversion(e)).toList() as M; } + if([] is M){ + return data.map((e) => SystemBean.jsonConversion(e)).toList() as M; + } + if([] is M){ return data.map((e) => LoginBean.jsonConversion(e)).toList() as M; } @@ -100,7 +109,7 @@ class JsonConversion$Json { if([] is M){ return data.map((e) => TaskBean.jsonConversion(e)).toList() as M; } - + throw Exception("not found"); } } diff --git a/lib/module/env/env_page.dart b/lib/module/env/env_page.dart index c9f22b3..5fce435 100644 --- a/lib/module/env/env_page.dart +++ b/lib/module/env/env_page.dart @@ -152,7 +152,7 @@ class EnvItemCell extends StatelessWidget { Navigator.of(context).pushNamed(Routes.routeAddEnv, arguments: bean); }, foregroundColor: Colors.white, - icon: CupertinoIcons.pencil, + icon: CupertinoIcons.pencil_outline, ), SlidableAction( backgroundColor: Colors.orange, diff --git a/lib/module/home/home_page.dart b/lib/module/home/home_page.dart index ce65573..d960c49 100644 --- a/lib/module/home/home_page.dart +++ b/lib/module/home/home_page.dart @@ -1,16 +1,22 @@ +import 'dart:convert'; + import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:qinglong_app/base/http/api.dart'; import 'package:qinglong_app/base/ql_app_bar.dart'; import 'package:qinglong_app/base/routes.dart'; import 'package:qinglong_app/module/config/config_page.dart'; import 'package:qinglong_app/module/env/env_page.dart'; +import 'package:qinglong_app/module/home/system_bean.dart'; import 'package:qinglong_app/module/others/other_page.dart'; import 'package:qinglong_app/module/task/task_page.dart'; import 'package:move_to_background/move_to_background.dart'; import 'package:qinglong_app/utils/update_utils.dart'; import 'dart:math' as math; +import '../../utils/utils.dart'; + class HomePage extends ConsumerStatefulWidget { const HomePage({Key? key}) : super(key: key); @@ -18,7 +24,8 @@ class HomePage extends ConsumerStatefulWidget { _HomePageState createState() => _HomePageState(); } -class _HomePageState extends ConsumerState with TickerProviderStateMixin { +class _HomePageState extends ConsumerState + with TickerProviderStateMixin { int _index = 0; String _title = ""; bool isNewYear = false; @@ -41,6 +48,7 @@ class _HomePageState extends ConsumerState with TickerProviderStateMix super.initState(); WidgetsBinding.instance?.addPostFrameCallback((timeStamp) { update(); + getSystemBean(); }); } @@ -238,7 +246,8 @@ class _HomePageState extends ConsumerState with TickerProviderStateMix void update() async { String? result = await UpdateUtils().checkUpdate(); if (result != null && result.isNotEmpty) { - UpdateDialog updateDialog = UpdateDialog(context, title: "发现新版本", updateContent: "版本号:v$result", onUpdate: () { + UpdateDialog updateDialog = UpdateDialog(context, + title: "发现新版本", updateContent: "版本号:v$result", onUpdate: () { UpdateUtils.launchURL(result); }); updateDialog.show(); @@ -256,6 +265,13 @@ class _HomePageState extends ConsumerState with TickerProviderStateMix isNewYear = false; } } + + void getSystemBean() async { + var bean = await Api.system(); + if (bean.success) { + Utils.systemBean.version = bean.bean?.version ?? "2.10.13"; + } + } } class IndexBean { diff --git a/lib/module/home/system_bean.dart b/lib/module/home/system_bean.dart new file mode 100644 index 0000000..2657c25 --- /dev/null +++ b/lib/module/home/system_bean.dart @@ -0,0 +1,23 @@ + +import 'package:json_conversion_annotation/json_conversion_annotation.dart'; + +@JsonConversion() +class SystemBean { + String? version; + + SystemBean({this.version}); + + SystemBean.fromJson(Map json) { + version = json['version']; + } + + Map toJson() { + final Map data = new Map(); + data['version'] = this.version; + return data; + } + + static SystemBean jsonConversion(Map json) { + return SystemBean.fromJson(json); + } +} \ No newline at end of file diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index b0435d7..eabf6fb 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -1,7 +1,40 @@ import 'package:flutter/cupertino.dart'; import 'package:intl/intl.dart'; +import '../module/home/system_bean.dart'; + class Utils { + static final SystemBean systemBean = SystemBean(); + + static bool isUpperVersion() { + try { + List? version = Utils.systemBean.version?.split("\."); + + String f = version?[0] ?? "2"; + String s = version?[1] ?? "10"; + String t = version?[2] ?? "0"; + + int first = int.parse(f); + int second = int.parse(s); + int third = int.parse(t); + + /// 2.10.13 及以下版本 + + if (first > 2) { + return true; + } + if (second > 10) { + return true; + } + if (third > 13) { + return true; + } + return false; + } catch (e) { + return false; + } + } + static void hideKeyBoard(BuildContext context) { FocusScope.of(context).requestFocus(FocusNode()); } @@ -71,7 +104,7 @@ class Utils { } static String formatMessageTime(int time) { - if(time == 0){ + if (time == 0) { return "-"; } DateTime current = DateTime.now();