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/controller/user_info_controller.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 json) => _$AuthBindTelModelFromJson(json); Map toJson() => _$AuthBindTelModelToJson(this); } class AuthBindTelController extends GetControllerEx { 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 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 apiResponse = ApiResponse.fromJson(response.data, // (json) => UserModel.fromJson(json as Map)); // 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}"; UserInfoController userInfoController = Get.find(); var data = { "userName": model.phone!, 'type': 5, "ccode":userInfoController.select_country_code.value, }; 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 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, 'merge': true, }; 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); } } }