import 'package:wow_english/common/core/user_util.dart'; import 'package:wow_english/models/user_entity.dart'; import 'package:wow_english/utils/log_util.dart'; import '../request_client.dart'; enum SmsType { login, change_passWord, stdDestroy } class UserDao { /// 登录 static Future login(phoneNumber, type, checkKey, checkNumber) async { var params = {'phoneNum': phoneNumber, 'type': type, checkKey: checkNumber}; var data = await requestClient.post( Apis.login, data: params, ); if (data != null) { UserUtil.saveUser(data); } return data; } /// 登出 static Future logout() async { var result = await requestClient.post(Apis.logout); print('logout result=$result'); UserUtil.logout(); return result; } /// 发送验证码 /// [msgType] 消息类型 登录:login, 更改密码:change_passWord, 账号注销:stdDestroy static Future sendCode(phoneNumber, {smsType = 'login'}) async { final params = {'phoneNum': phoneNumber, 'smsType': smsType}; await requestClient.post(Apis.sendSmsCode, data: params); } /// 设置密码,初始化密码 /// [password] 密码 static Future initPassword(String password) async { final params = {'password': password}; await requestClient.post(Apis.initPassword, data: params); } /// 修改密码 /// [phoneNum] 手机号 /// [password] 密码 /// [smsCode] 短信验证码 static Future changePassword(String phoneNum, String password, String smsCode) async { final params = {'phoneNum': phoneNum, 'password': password, 'code': smsCode}; await requestClient.post(Apis.changePassword, data: params); } /// 忘记密码 /// [phoneNum] 手机号 /// [password] 密码 /// [smsCode] 短信验证码 static Future resetPassword(String phoneNum, String password, String smsCode) async { final params = {'phoneNum': phoneNum, 'password': password, 'code': smsCode}; await requestClient.post(Apis.resetPassword, data: params); } /// 验证短信验证码 /// [msgType] 消息类型 登录:login, 更改密码:change_passWord, 账号注销:stdDestroy static Future checkSmsCode(String phoneNum, String smsCode, String msgType) async { final params = {'phoneNum': phoneNum, 'code': smsCode, 'msgType': msgType}; await requestClient.post(Apis.checkSmsCode, data: params); } /// 获取用户信息 static Future getUserInfo() async { return await requestClient.post(Apis.getUserInfo); } /// 更新用户信息,返回即成功,无body static Future updateUserInfo(UserEntity userEntity) async { Log.d('updateUserInfo, userEntity: $userEntity'); return await requestClient.put(Apis.setUserInfo, data: userEntity.toUpdateJson()); } /// 更新用户信息指定字段 static Future updateUserInfoField({String? name, int? age, int? gender, String? avatarUrl}) async { Log.d('name=$name, age=$age, gender=$gender, avatarUrl=$avatarUrl'); final Map data = {}; if (name != null) { data['name'] = name; } if (age != null) { data['age'] = age; } if (gender != null) { data['gender'] = gender; } if (avatarUrl != null) { data['avatarUrl'] = avatarUrl; } return await requestClient.put(Apis.setUserInfo, data: data); } }