import { IBestToast } from '@ibestservices/ibest-ui' import { AppStorageKeyCollect } from '../constants' import { ReqString, ResultCallBack } from '../models' import { LoginCollect } from '../models/LoginCollect' import { UserInfo, userInfo } from '../models/UserInfo' import { yTRouter } from '../utils/arkts/utils/YTRouter' import { YTRequest } from './YTRequest' import { ContextHelper, YTLog } from '../../../../Index' import { AxiosProgressEvent, FormData } from '@ohos/axios' import { YTDate } from '../utils/arkts/utils/YTDate' import { HuaweiAuthPlugin } from '../utils/arkts/utils/HuaWeiAuthPlugin' //用户相关api export class YTUserRequest extends YTRequest { //获取验证码 static getLoginCaptcha(phonenumber: string, result: ResultCallBack) { YTUserRequest.post( `/warehouseApUser/sendSmsCode`, new LoginCollect('login') .setPhonenumber(phonenumber) ) .then(res => { result(res) }) .catch((err: Error) => { result(undefined, err) }) } //验证码登录 static phonenumberLogin(param: LoginCollect, result?: ResultCallBack) { if (param.getUuid() !== undefined) { YTUserRequest.post(`/warehouseApUser/phoneLogin`, param) .then(res => { userInfo.setToken(res[AppStorageKeyCollect.TOKEN]) YTUserRequest.refreshUserInfo((res) => { IBestToast.show({ message: '登录成功' }) yTRouter.routerBack() result?.(res) }) }) } else { IBestToast.show({ message: "请求异常,请重新发送验证码", type: "fail" }) } } //注册 static register(param: LoginCollect) { if (param.getUuid() !== undefined) { YTUserRequest.post(`/warehouseApUser/phoneSave`, param) .then(res => { userInfo.setToken(res[AppStorageKeyCollect.TOKEN]) YTUserRequest.refreshUserInfo(() => { IBestToast.show({ message: '注册成功' }) yTRouter.routerBack() }) }) } else { IBestToast.show({ message: "请求异常,请重新发送验证码", type: "fail" }) } } //密码登录 static passwordLogin(param: LoginCollect, result?: ResultCallBack) { YTUserRequest.post(`/warehouseApUser/passwordLogin`, param) .then(res => { userInfo.setToken(res[AppStorageKeyCollect.TOKEN]) YTUserRequest.refreshUserInfo((res) => { IBestToast.show({ message: '登录成功' }) yTRouter.routerBack() result?.(res) }) }) } //重置密码 static resetPassword(param: LoginCollect, result?: ResultCallBack) { YTUserRequest.post(`/warehouseApUser/resetPwd`, param) .then(() => { result?.() }) } //华为登录 static harmonyLogin(instance: LoginCollect) { try { IBestToast.showLoading() HuaweiAuthPlugin.requestAuth() .then(code => { instance.setCode(code!) YTUserRequest.post(`/warehouseApUser/hmLogin`, instance) .then(data => { const token = data['token'] userInfo.setToken(token) YTUserRequest.refreshUserInfo((userInfo) => { YTLog.info(userInfo) IBestToast.hide() setTimeout(() => { IBestToast.show({ message: '登录成功' }) }, 100) yTRouter.routerBack() }) }) .catch((err: Error) => { IBestToast.hide() YTLog.error(err) }) }) .catch((e: Error) => { YTLog.error(e) IBestToast.hide() setTimeout(() => { IBestToast.show({ message: '网络错误', type: 'fail' }) }, 50) }) } catch (e) { YTLog.error(e) IBestToast.hide() } } //刷新用户信息 static refreshUserInfo(result?: ResultCallBack) { YTUserRequest.post(`/warehouseApUser/info`) .then(res => { userInfo.setUserInfoAndLogin(res) YTLog.info(userInfo) result?.(res) }) .catch((err: Error) => { result?.(undefined, err) }) } // 修改用户头像 static uploadHeadImg(fullpath: string, success: () => void) { const formData = new FormData() formData.append('file', fullpath) YTUserRequest.upPost('/common/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' }, context: ContextHelper.context, onUploadProgress: (progressEvent: AxiosProgressEvent): void => { YTLog.info(progressEvent && progressEvent.loaded && progressEvent.total ? Math.ceil(progressEvent.loaded / progressEvent.total * 100) + '%' : '0%', 'uploadFile'); } }) .then(res => { const url = res['url'] YTUserRequest.post(`/warehouseApUser/modifyMemberIcon`, { 'memberIcon': url }) .then(() => { success() }) .catch((e: Error) => { YTLog.error(e) IBestToast.show({ message: '头像上传失败', type: 'fail' }) }) }) .catch((e: Error) => { YTLog.error(e) }) } // 修改用户昵称 static changeNickname(name: string, success: () => void) { YTUserRequest.post(`/warehouseApUser/modifyMemberName`, { 'memberName': name }) .then(() => { YTUserRequest.refreshUserInfo(() => { success() }) }) } //问题反馈 static questionBack(des: string, createBy: string) { YTUserRequest.post(`/api/military/feedback/add`, { 'backQuestion': des, 'mobile': createBy, 'createTime': new YTDate().formatDate('-', true), }) .then(() => { IBestToast.show("反馈成功") yTRouter.routerBack() }) .catch((e: Error) => { YTLog.error(e) }) } //账号注销/warehouseApUser/logout static logout(result?: ResultCallBack) { YTUserRequest.post(`/warehouseApUser/logout`) .then(() => { userInfo.logout() result?.() }) .catch((e: Error) => { YTLog.error(e) }) } //像后端推送pushToken static savePushToken(param: UserInfo, result: ResultCallBack) { YTUserRequest.post('/warehouseApUser/savePushToken', param) .then(res => { result(res) }) .catch((err: Error) => { result(undefined, err) }) } }