188 lines
6.7 KiB
Dart
188 lines
6.7 KiB
Dart
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);
|
||
}
|
||
}
|
||
}
|