Files
tuiche/lib/pages/mh_page/user/controller/bind_tel_controller.dart
2025-08-19 18:20:47 +08:00

188 lines
6.7 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'dart:convert';
import 'package:EasyDartModule/EasyDartModule.dart';
import 'package:ef/ef.dart';
import 'package:flutter/src/widgets/framework.dart';
import 'package:get_storage/get_storage.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:vbvs_app/common/color/ServiceConstant.dart';
import 'package:vbvs_app/common/util/DailyLogUtils.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/common/util/requestWithLog.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/model/api_response.dart';
import 'package:vbvs_app/model/user_data.dart';
part 'bind_tel_controller.g.dart';
@JsonSerializable()
class AuthBindTelModel {
String? authUserInfo; //授权用户信息
String? phone; //电话
String? code; //验证码
AuthBindTelModel();
static AuthBindTelModel fromJson(Map<String, dynamic> json) =>
_$AuthBindTelModelFromJson(json);
Map<String, dynamic> toJson() => _$AuthBindTelModelToJson(this);
}
class AuthBindTelController extends GetControllerEx<AuthBindTelModel> {
AuthBindTelController() {
attr = GetModel(AuthBindTelModel()).obs;
}
bindTel(BuildContext context) async {
String message = "";
if (model.phone == null || model.phone!.isEmpty) {
message = "请输入手机号".tr;
TopSlideNotification.show(context, text: message);
return message;
}
if (!MyUtils.isValidPhoneNumber(model.phone!)) {
message = '请输入正确的手机号'.tr;
TopSlideNotification.show(context, text: message);
return message;
}
if (model.code == null || model.code!.isEmpty) {
message = "请输入验证码".tr;
TopSlideNotification.show(context, text: message);
return message;
}
final Map<String, dynamic> requestBody = {
"tel": model.phone,
"wxInfo": model.authUserInfo,
"verifyCode": model.code,
};
// var response = await ApiService.request
// .post("/api/auth/account/info/wxLoginBindTel", data: requestBody);
// if (response.data != null) {
// try {
// ApiResponse<UserModel> apiResponse = ApiResponse.fromJson(response.data,
// (json) => UserModel.fromJson(json as Map<String, dynamic>));
// if (apiResponse.code == HttpStatusCodes.ok) {
// final UserInfoController userInfoController = Get.find();
// userInfoController.model.user = apiResponse.data;
// userInfoController.model.token = response.headers['token']!.first;
// String efPd = await getValueBySysConfigKey(CommonVariables.efKey);
// if (efPd != null && efPd.isNotEmpty) {
// await initDataEf(key: efPd);
// } else {
// print("efPD为空初始化失败");
// return '登录失败';
// }
// final box = GetStorage();
// box.write('user', userInfoController.model.user!.toJson()); // 存储用户信息
// box.write('token', userInfoController.model.token); // 存储 token
// final AuthResponse res = await ef.client.auth.signInWithPassword(
// phone: userInfoController.model.user!.tel,
// password: userInfoController.model.user!.exp1!,
// );
// userInfoController.model.superbase_session = res.session;
// userInfoController.model.superbase_user = res.user;
// userInfoController.updateAll();
// return '';
// }
// return apiResponse.msg ?? '登录失败';
// } catch (e) {
// print(e);
// return '登录失败';
// }
// }
}
getCode(BuildContext context, [Map? img]) async {
String message = "";
if (model.phone == null || model.phone!.isEmpty) {
message = "请输入手机号".tr;
TopSlideNotification.show(context,
text: message, textColor: stringToColor("#FF7159"));
return message;
}
if (!MyUtils.isValidPhoneNumber(model.phone!)) {
message = '请输入正确的手机号'.tr;
TopSlideNotification.show(context,
text: message, textColor: stringToColor("#FF7159"));
return message;
}
String serviceAddress = ServiceConstant.service_address;
String serviceName = ServiceConstant.server_service;
String serviceApi = ServiceConstant.send_code;
String queryUrl = "${serviceAddress}${serviceName}${serviceApi}";
var data = {
"userName": model.phone!,
'type': 5,
};
if (img != null) {
if (img!['code'] != null) {
data['code'] = img!['code'];
}
}
await requestWithLog(
logTitle: "获取验证码".tr,
method: MyHttpMethod.post,
queryUrl: queryUrl,
data: data,
onSuccess: (res) {
TopSlideNotification.show(context, text: '发送验证码成功'.tr);
},
onFailure: (res) {
message = res.msg!;
TopSlideNotification.show(
context,
text: message.tr,
textColor: themeController.currentColor.sc9,
);
},
);
return message;
}
Future<ApiResponse> updateUserPhone() 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.value != null) {
language = languageController.selectLanguage.value!.language_code;
}
if (language != null && language.isNotEmpty) {
if (queryUrl.contains("?")) {
queryUrl += "&lang=$language";
} else {
queryUrl += "?lang=$language";
}
}
final data = {
'phone': model.phone,
'verify': model.code,
};
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);
}
}
}