import 'dart:io'; import 'dart:math'; import 'package:fpdart/fpdart.dart'; import 'package:get/get.dart'; import 'package:kaer_with_panels/app/mixins/kr_app_bar_opacity_mixin.dart'; import 'package:kaer_with_panels/app/services/api_service/api.dart'; import 'package:kaer_with_panels/app/model/enum/kr_request_type.dart'; import 'package:kaer_with_panels/app/model/response/kr_is_register.dart'; import 'package:kaer_with_panels/app/model/response/kr_login_data.dart'; import 'package:kaer_with_panels/app/network/base_response.dart'; import 'package:kaer_with_panels/app/network/http_error.dart'; import 'package:kaer_with_panels/app/network/http_util.dart'; import 'package:kaer_with_panels/app/utils/kr_device_util.dart'; import '../../utils/kr_common_util.dart'; import '../../utils/kr_log_util.dart'; class KRAuthApi { /// 是否开启了审核开关 Future> kr_isRegister( KRLoginType tpye, String account, String? areaCode) async { final Map data = {}; data['method'] = tpye.value; data['account'] = account; final deviceId = await KRDeviceUtil().kr_getDeviceId(); KRLogUtil.kr_i('设备ID: $deviceId', tag: 'KRAuthApi'); data["identifier"] = deviceId; data["user_agent"] = _kr_getUserAgent(); data["os"] = _kr_getUserAgent(); if (areaCode != null) { data['area_code'] = areaCode.toString(); } BaseResponse baseResponse = await HttpUtil.getInstance() .request(Api.kr_isRegister, data, method: HttpMethod.POST, isShowLoading: true); if (!baseResponse.isSuccess) { return left( HttpError(msg: baseResponse.retMsg, code: baseResponse.retCode)); } return right(baseResponse.model.kr_isRegister); } /// 注册 Future> kr_register( KRLoginType tpye, String account, String? areaCode, String? code, String? password, {String? inviteCode}) async { final Map data = {}; data['method'] = tpye.value; data['account'] = account; data['password'] = password; data["code"] = code; data["identifier"] = await KRDeviceUtil().kr_getDeviceId(); data["os"] = _kr_getUserAgent(); if (inviteCode != null && inviteCode.isNotEmpty) { data["invite"] = inviteCode; } data["user_agent"] = _kr_getUserAgent(); if (tpye == KRLoginType.kr_telephone) { data['area_code'] = areaCode; } BaseResponse baseResponse = await HttpUtil.getInstance() .request(Api.kr_register, data, method: HttpMethod.POST, isShowLoading: true); if (!baseResponse.isSuccess) { return left( HttpError(msg: baseResponse.retMsg, code: baseResponse.retCode)); } return right(baseResponse.model.kr_token.toString()); } /// 验证验证码 Future> kr_checkVerificationCode( KRLoginType tpye, String account, String? areaCode, String code, int type) async { final Map data = {}; data['method'] = tpye.value; if(tpye == KRLoginType.kr_telephone){ data['account'] = areaCode.toString() + account; }else{ data['account'] = account; } data['code'] = code; data['type'] = type; BaseResponse baseResponse = await HttpUtil.getInstance() .request(Api.kr_checkVerificationCode, data, method: HttpMethod.POST, isShowLoading: true); if (!baseResponse.isSuccess) { return left( HttpError(msg: baseResponse.retMsg, code: baseResponse.retCode)); } if(baseResponse.model.kr_isRegister){ return right(true); }else{ return left(HttpError(msg: "error.70001".tr, code: 70001)); } } /// 登陆 Future> kr_login(KRLoginType tpye, bool isPsd, String account, String? areaCode, String? code, String? password) async { final Map data = {}; data['method'] = tpye.value; data['account'] = account; final deviceId = await KRDeviceUtil().kr_getDeviceId(); KRLogUtil.kr_i('设备ID: $deviceId', tag: 'KRAuthApi'); data["identifier"] = deviceId; data["user_agent"] = _kr_getUserAgent(); data["os"] = _kr_getUserAgent(); if (tpye == KRLoginType.kr_telephone) { data['area_code'] = areaCode; } if (isPsd) { data['password'] = password; } else { data["code"] = code; } BaseResponse baseResponse = await HttpUtil.getInstance() .request(Api.kr_login, data, method: HttpMethod.POST, isShowLoading: true); if (!baseResponse.isSuccess) { return left( HttpError(msg: baseResponse.retMsg, code: baseResponse.retCode)); } return right(baseResponse.model.kr_token.toString()); } /// 发送验证码 type 1 注册 其他 2 Future> kr_sendCode( KRLoginType tpye, String account, String? areaCode, int type) async { final Map data = {}; if (tpye == KRLoginType.kr_email) { data['email'] = account; } else { data['telephone'] = account; data['telephone_area_code'] = areaCode.toString(); } data['type'] = type; BaseResponse baseResponse = await HttpUtil.getInstance() .request( tpye == KRLoginType.kr_email ? Api.kr_sendEmailCode : Api.kr_sendPhoneCode, data, method: HttpMethod.POST, isShowLoading: true); if (!baseResponse.isSuccess) { return left( HttpError(msg: baseResponse.retMsg, code: baseResponse.retCode)); } // KRCommonUtil.kr_showToast(baseResponse.model.toString()); // KRIsRegister model = (baseResponse..model) as KRIsRegister; return right(true); } /// 删除账号 Future> kr_deleteAccount(KRLoginType tpye, String code) async { final Map data = {}; data['method'] = tpye.value; data['code'] = code; BaseResponse baseResponse = await HttpUtil.getInstance() .request(Api.kr_deleteAccount, data, method: HttpMethod.DELETE, isShowLoading: true); if (!baseResponse.isSuccess) { return left( HttpError(msg: baseResponse.retMsg, code: baseResponse.retCode)); } return right(""); } /// 忘记密码-设置新密码 Future> kr_setNewPsdByForgetPsd(KRLoginType tpye, String account, String? areaCode, String? code, String? password) async { final Map data = {}; data['method'] = tpye.value; data['account'] = account; data['password'] = password; data["code"] = code; data["identifier"] = await KRDeviceUtil().kr_getDeviceId(); data["user_agent"] = _kr_getUserAgent(); data["os"] = _kr_getUserAgent(); if (tpye == KRLoginType.kr_telephone) { data['area_code'] = areaCode; } BaseResponse baseResponse = await HttpUtil.getInstance() .request(Api.kr_setNewPsdByForgetPsd, data, method: HttpMethod.POST, isShowLoading: true); if (!baseResponse.isSuccess) { return left( HttpError(msg: baseResponse.retMsg, code: baseResponse.retCode)); } return right(baseResponse.model.kr_token.toString()); } String _kr_getUserAgent() { if (Platform.isAndroid) { return 'android'; } else if (Platform.isIOS) { return 'ios'; } else if (Platform.isMacOS) { return 'mac'; } else if (Platform.isWindows) { return 'windows'; } else if (Platform.isLinux) { return 'linux'; } else if (Platform.isFuchsia) { return 'harmony'; } else { return 'unknown'; } } }