更新登录

This commit is contained in:
wyf
2025-06-09 15:31:18 +08:00
parent 71a4504f78
commit 8dfc522a69
31 changed files with 1737 additions and 1662 deletions

View File

@@ -2,8 +2,8 @@ import 'package:ef/ef.dart';
import 'package:flutter_city_picker/model/address.dart';
import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:vbvs_app/controller/mh_controller/user_data.dart';
import 'package:vbvs_app/controller/mh_controller/muser_info_controller.dart';
import 'package:vbvs_app/controller/user_info_controller.dart';
import 'package:vbvs_app/model/user_data.dart';
part 'address_controller.g.dart';
@@ -80,8 +80,8 @@ class AddressController extends GetControllerEx<AddressModel> {
addAddress(AddressModel model) async {
try {
final MUserInfoController userInfoController =
Get.find<MUserInfoController>();
final UserInfoController userInfoController =
Get.find<UserInfoController>();
UserModel user = userInfoController.model.user!;
// 设置省市区街道名称

View File

@@ -1,17 +1,6 @@
import 'dart:io';
import 'package:ef/ef.dart';
import 'package:flutter/src/widgets/framework.dart';
import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:img_picker/img_picker.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:path/path.dart' as p;
import 'package:uuid/uuid.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'muser_info_controller.dart';
part 'apply_repair_controller.g.dart';
@JsonSerializable()

View File

@@ -1,234 +0,0 @@
import 'dart:convert';
import 'package:EasyDartModule/EasyDartModule.dart';
import 'package:ef/ef.dart';
import 'package:fluwx/fluwx.dart';
import 'package:get_storage/get_storage.dart';
import 'package:img_picker/img_picker.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:dio/dio.dart' as dio;
import 'package:vbvs_app/common/color/ServiceConstant.dart';
import 'package:vbvs_app/common/color/app_uri_status.dart';
import 'package:vbvs_app/common/util/DailyLogUtils.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/controller/mh_controller/user_data.dart';
import 'package:vbvs_app/model/api_response.dart';
part 'muser_info_controller.g.dart';
@JsonSerializable()
class MUserInfoModel {
int? message = 0; //消息数量
UserModel? user; //用户信息
String? token; //token值
String? runSystem; //运行系统
String? phoneVersion; //手机版本
String? deviceId; //手机唯一
String? deviceModel; //设备可见型号(如 "iPhone""iPad"
String? appVersion; //app版本信息
@JsonKey(ignore: true)
Session? superbase_session;
@JsonKey(ignore: true)
User? superbase_user;
String? img_bucket = 'user';
int? login = 0; //是否登录0未登录 1已登录
MUserInfoModel();
static MUserInfoModel fromJson(Map<String, dynamic> json) =>
_$MUserInfoModelFromJson(json);
Map<String, dynamic> toJson() => _$MUserInfoModelToJson(this);
}
class MUserInfoController extends GetControllerEx<MUserInfoModel> {
// 初始化实例
final Fluwx fluwx = Fluwx();
MUserInfoController() {
attr = GetModel(MUserInfoModel()).obs;
}
List device_bind_status = [];
int device_bind_flag = 0; //0。未初始化 1.已初始化
Future<ApiResponse> uploadImg() async {
EasyDartModule.logger.info("请求上传图片");
DailyLogUtils.writeLog("请求上传图片");
final ImagePicker picker = ImagePicker();
final XFile? image = await picker.pickImage(source: ImageSource.gallery);
try {
ApiResponse apiResponse = ApiResponse(code: -1, msg: "我的.头像上传失败".tr);
if (image != null) {
int fileSize = await image.length(); // 获取图片大小,单位为字节
if (fileSize > 1048576 * 5) {
apiResponse.msg = "我的.头像限制".tr;
return apiResponse;
}
String serviceAddress = ServiceConstant.service_address;
String serviceName = ServiceConstant.server_service;
String serviceApi = ServiceConstant.upload_file;
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
String? language = "";
if (languageController.selectLanguage != null) {
language = languageController.selectLanguage.value!.language_code;
}
if (language != null && language.isNotEmpty) {
if (queryUrl.contains("?")) {
queryUrl += "&lang=$language";
} else {
queryUrl += "?lang=$language";
}
}
var formData = dio.FormData.fromMap({
"type": 1,
"file": await dio.MultipartFile.fromFile(
image.path, // 确保 image 是 File 类型
filename: image.path.split('/').last,
),
});
var response = await EasyDartModule.dio.post(queryUrl, data: formData);
if (response != null) {
var responseData = response.data is String
? jsonDecode(response.data)
: response.data;
ApiResponse res =
ApiResponse.fromJson(responseData, (object) => object);
MyUtils.formatResponse(apiResponse, "我的.上传成功".tr, "我的.头像上传失败".tr);
model.user!.tmpHead = res.data['path'];
updateAll();
return res;
} else {
return ApiResponse(code: -1, msg: "服务器.失败".tr);
}
} else {
apiResponse.msg = "我的.未选择图片".tr;
return apiResponse;
}
} catch (e) {
EasyDartModule.logger.error("上传图片失败->$e");
DailyLogUtils.writeError("上传图片失败->$e");
return ApiResponse(code: -1, msg: "服务器.失败".tr);
}
}
//更新用户信息
Future<ApiResponse> updateData() async {
EasyDartModule.logger.info("更新用户资料");
DailyLogUtils.writeLog("更新用户资料");
try {
ApiResponse apiResponse = ApiResponse(code: -1, msg: "我的.保存失败".tr);
UserModel user = model.user!;
if (user.tmpNickName == null || user.tmpNickName!.isEmpty) {
apiResponse.msg = "我的.昵称为空".tr;
return apiResponse;
}
String serviceAddress = ServiceConstant.service_address;
String serviceName = ServiceConstant.server_service;
String serviceApi = ServiceConstant.user_info;
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
String? language = "";
if (languageController.selectLanguage != null) {
language = languageController.selectLanguage.value!.language_code;
}
if (language != null && language.isNotEmpty) {
if (queryUrl.contains("?")) {
queryUrl += "&lang=$language";
} else {
queryUrl += "?lang=$language";
}
}
final data = {
"nickName": user.tmpNickName,
if (user.tmpHead != null && user.tmpHead!.isNotEmpty)
"avatar": user.tmpHead,
};
var response =
await EasyDartModule.dio.put(queryUrl, data: jsonEncode(data));
if (apiResponse != null) {
var responseData =
response.data is String ? jsonDecode(response.data) : response.data;
ApiResponse res =
ApiResponse.fromJson(responseData, (object) => object);
MyUtils.formatResponse(res, "我的.保存成功".tr, "我的.保存失败".tr);
return res;
} else {
return ApiResponse(code: -1, msg: "服务器.失败".tr);
}
} catch (e) {
EasyDartModule.logger.info("更新用户资料失败->$e");
DailyLogUtils.writeLog("更新用户资料失败->$e");
return ApiResponse(code: -1, msg: "服务器.失败".tr);
}
}
//查询用户信息
Future<ApiResponse> getUserInfo() async {
EasyDartModule.logger.info("查询用户资料");
DailyLogUtils.writeLog("查询用户资料");
try {
ApiResponse apiResponse = ApiResponse(code: -1, msg: "我的.查询失败".tr);
String serviceAddress = ServiceConstant.service_address;
String serviceName = ServiceConstant.server_service;
String serviceApi = ServiceConstant.user_info;
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
String? language = "";
if (languageController.selectLanguage != null) {
language = languageController.selectLanguage.value!.language_code;
}
if (language != null && language.isNotEmpty) {
if (queryUrl.contains("?")) {
queryUrl += "&lang=$language";
} else {
queryUrl += "?lang=$language";
}
}
var response = await EasyDartModule.dio.get(queryUrl);
if (response != null) {
var responseData =
response.data is String ? jsonDecode(response.data) : response.data;
ApiResponse res =
ApiResponse.fromJson(responseData, (object) => object);
MyUtils.formatResponse(apiResponse, "我的.保存成功".tr, "我的.保存失败".tr);
if (res.code == HttpStatusCodes.ok) {
MUserInfoController userInfoController = Get.find();
userInfoController.model.user = UserModel.fromJson(res.data);
final box = GetStorage();
box.write('user', userInfoController.model.user!.toJson()); // 存储用户信息
userInfoController.updateAll();
}
return apiResponse;
} else {
return ApiResponse(code: -1, msg: "服务器.失败".tr);
}
} catch (e) {
EasyDartModule.logger.info("更新用户资料失败->$e");
DailyLogUtils.writeLog("更新用户资料失败->$e");
return ApiResponse(code: -1, msg: "服务器.失败".tr);
}
}
// ApiResponse logOut() {
// ApiResponse apiResponse = ApiResponse(code: 1, msg: "设置页.退出成功".tr);
// EasyDartModule.logger.info("退出登录");
// DailyLogUtils.writeLog("退出登录");
// model.login = 0;
// EasyDartModule.dio.token = null;
// final box = GetStorage();
// box.remove("user");
// box.remove("token");
// BodyDeviceController bodyDeviceController = Get.find();
// bodyDeviceController.bindDeviceNum.value = 0;
// HomeController homeController = Get.find();
// homeController.sleepNum.value = 0;
// LoginController loginController = Get.find();
// loginController.model.register_agree = null;
// bodyDeviceController.sleepReportData.value = {};
// MessageController messageController = Get.find();
// messageController.model.body_message_read = 0;
// messageController.model.system_message_read = 0;
// CountdownController countdownController = Get.find();
// countdownController.countdown.value = 0;
// return apiResponse;
// }
}

View File

@@ -1,36 +0,0 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'muser_info_controller.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
MUserInfoModel _$MUserInfoModelFromJson(Map<String, dynamic> json) =>
MUserInfoModel()
..message = (json['message'] as num?)?.toInt()
..user = json['user'] == null
? null
: UserModel.fromJson(json['user'] as Map<String, dynamic>)
..token = json['token'] as String?
..runSystem = json['runSystem'] as String?
..phoneVersion = json['phoneVersion'] as String?
..deviceId = json['deviceId'] as String?
..deviceModel = json['deviceModel'] as String?
..appVersion = json['appVersion'] as String?
..img_bucket = json['img_bucket'] as String?
..login = (json['login'] as num?)?.toInt();
Map<String, dynamic> _$MUserInfoModelToJson(MUserInfoModel instance) =>
<String, dynamic>{
'message': instance.message,
'user': instance.user,
'token': instance.token,
'runSystem': instance.runSystem,
'phoneVersion': instance.phoneVersion,
'deviceId': instance.deviceId,
'deviceModel': instance.deviceModel,
'appVersion': instance.appVersion,
'img_bucket': instance.img_bucket,
'login': instance.login,
};

View File

@@ -1,6 +1,7 @@
import 'package:ef/ef.dart';
import 'package:flutter/src/widgets/framework.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
part 'register_controller.g.dart';
@@ -28,79 +29,77 @@ class RegisterController extends GetControllerEx<RegisterModel> {
attr = GetModel(RegisterModel()).obs;
}
// Future<String> registerUser(BuildContext context) async {
// String message = "";
// final MyDialogController myDialogController =
// Get.find<MyDialogController>();
// if (model.register_phone == null || model.register_phone!.isEmpty) {
// message = "请输入手机号";
// showToast(message);
// return message;
// }
// if (!MyUtils.isValidPhoneNumber(model.register_phone!)) {
// message = '请输入正确的手机号';
// showToast(message);
// return message;
// }
// if (model.register_pd == null || model.register_pd!.isEmpty) {
// message = "请输入密码";
// showToast(message);
// return message;
// }
// String passwordMsg = "1.密码长度必须至少8位\n2.密码需要字母加数字\n3.特殊字符和大写字母至少包含一个";
// bool hasUppercase = model.register_pd!.contains(RegExp(r'[A-Z]'));
// bool hasDigit = model.register_pd!.contains(RegExp(r'[0-9]'));
// bool hasSpecialCharacters =
// model.register_pd!.contains(RegExp(r'[!@#$%^&*(),.?":{}|<>]'));
// bool hasLetter = model.register_pd!.contains(RegExp(r'[a-zA-Z]'));
Future<String> registerUser(BuildContext context) async {
String message = "";
// if (model.register_phone == null || model.register_phone!.isEmpty) {
// message = "请输入手机号".tr;
// TopSlideNotification.show(context,message);
// return message;
// }
// if (!MyUtils.isValidPhoneNumber(model.register_phone!)) {
// message = '请输入正确的手机号';
// showToast(message);
// return message;
// }
// if (model.register_pd == null || model.register_pd!.isEmpty) {
// message = "请输入密码";
// showToast(message);
// return message;
// }
// String passwordMsg = "1.密码长度必须至少8位\n2.密码需要字母加数字\n3.特殊字符和大写字母至少包含一个";
// bool hasUppercase = model.register_pd!.contains(RegExp(r'[A-Z]'));
// bool hasDigit = model.register_pd!.contains(RegExp(r'[0-9]'));
// bool hasSpecialCharacters =
// model.register_pd!.contains(RegExp(r'[!@#$%^&*(),.?":{}|<>]'));
// bool hasLetter = model.register_pd!.contains(RegExp(r'[a-zA-Z]'));
// if (model.register_pd!.length < 8) {
// message = passwordMsg;
// showToast(message);
// return message;
// }
// if (model.register_pd!.length < 8) {
// message = passwordMsg;
// showToast(message);
// return message;
// }
// if (!hasLetter || !hasDigit) {
// message = passwordMsg;
// showToast(message);
// return message;
// }
// if (!hasLetter || !hasDigit) {
// message = passwordMsg;
// showToast(message);
// return message;
// }
// if (!(hasSpecialCharacters || hasUppercase)) {
// message = passwordMsg;
// showToast(message);
// return message;
// }
// if (model.register_confirm_pd == null ||
// model.register_confirm_pd!.isEmpty) {
// message = "请输入确认密码";
// showToast(message);
// return message;
// }
// if (model.register_pd != model.register_confirm_pd) {
// message = "两次密码不一致";
// showToast(message);
// return message;
// }
// if (model.register_code == null || model.register_code!.isEmpty) {
// message = "请输入验证码";
// showToast(message);
// return message;
// }
// if (model.register_agree == null || model.register_agree != true) {
// message = "需要同意协议";
// showToast(message);
// return message;
// }
// message = await repository.createUser(
// model.register_pd!, model.register_phone!, model.register_code!);
// if (message.isNotEmpty) {
// showToast(message);
// return message;
// }
// if (!(hasSpecialCharacters || hasUppercase)) {
// message = passwordMsg;
// showToast(message);
// return message;
// }
// if (model.register_confirm_pd == null ||
// model.register_confirm_pd!.isEmpty) {
// message = "请输入确认密码";
// showToast(message);
// return message;
// }
// if (model.register_pd != model.register_confirm_pd) {
// message = "两次密码不一致";
// showToast(message);
// return message;
// }
// if (model.register_code == null || model.register_code!.isEmpty) {
// message = "请输入验证码";
// showToast(message);
// return message;
// }
// if (model.register_agree == null || model.register_agree != true) {
// message = "需要同意协议";
// showToast(message);
// return message;
// }
// message = await repository.createUser(
// model.register_pd!, model.register_phone!, model.register_code!);
// if (message.isNotEmpty) {
// showToast(message);
// return message;
// }
// return "";
// }
return "";
}
// Future<String> getCode(BuildContext context) async {
// String message = "";

View File

@@ -1,22 +0,0 @@
import 'package:json_annotation/json_annotation.dart';
part 'user_data.g.dart';
@JsonSerializable()
class UserModel {
String? uid;
String? userName;
String? nickName;
String? tel;
String? avatar;
String? exp1;
String? exp2;
String? head;
String? tmpHead;
String? tmpNickName;
UserModel();
static UserModel fromJson(Map<String, dynamic> json) =>
_$UserModelFromJson(json);
Map<String, dynamic> toJson() => _$UserModelToJson(this);
}

View File

@@ -1,32 +0,0 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'user_data.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
UserModel _$UserModelFromJson(Map<String, dynamic> json) => UserModel()
..uid = json['uid'] as String?
..userName = json['userName'] as String?
..nickName = json['nickName'] as String?
..tel = json['tel'] as String?
..avatar = json['avatar'] as String?
..exp1 = json['exp1'] as String?
..exp2 = json['exp2'] as String?
..head = json['head'] as String?
..tmpHead = json['tmpHead'] as String?
..tmpNickName = json['tmpNickName'] as String?;
Map<String, dynamic> _$UserModelToJson(UserModel instance) => <String, dynamic>{
'uid': instance.uid,
'userName': instance.userName,
'nickName': instance.nickName,
'tel': instance.tel,
'avatar': instance.avatar,
'exp1': instance.exp1,
'exp2': instance.exp2,
'head': instance.head,
'tmpHead': instance.tmpHead,
'tmpNickName': instance.tmpNickName,
};