diff --git a/Cargo.toml b/Cargo.toml index a8cc1d9..791e2ce 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "miniprogram" -version = "0.8.0" +version = "0.9.0" edition = "2021" publish = false diff --git a/miniprogram/api/shorturl.ts b/miniprogram/api/shorturl.ts index ad5a741..a61b85d 100644 --- a/miniprogram/api/shorturl.ts +++ b/miniprogram/api/shorturl.ts @@ -2,13 +2,13 @@ import http from '@utils/http' import { URL } from '@constant/shortlink' import { CODE } from '@constant/error' import { HttpApiError } from '@models/error' -import { error } from '@utils/logger' +import logger from '@utils/logger' const create = async (link: string) => { try { return await http.post(URL.CREATE, {link} as IShortlinkCreateRequest) } catch (e) { - error('创建短链接失败', e.code, e.message) + logger.error('创建短链接失败', e.code, e.message) return Promise.reject(new HttpApiError(CODE.HTTP_API_SHORTLINK_CREATE)) } diff --git a/miniprogram/api/totp.ts b/miniprogram/api/totp.ts index 95d0f5c..1baf87f 100644 --- a/miniprogram/api/totp.ts +++ b/miniprogram/api/totp.ts @@ -2,13 +2,13 @@ import http from '@utils/http' import { URL } from '@constant/totp' import { CODE } from '@constant/error' import { HttpApiError } from '@models/error' -import { error } from '@utils/logger' +import logger from '@utils/logger' const all = async () => { try { return await http.post(URL.ALL) } catch (e) { - error('查询 TOTP 列表失败', e.code, e.message) + logger.error('查询 TOTP 列表失败', e.code, e.message) return Promise.reject(new HttpApiError(CODE.HTTP_API_TOTP_ALL)) } @@ -18,7 +18,7 @@ const detail = async (id: number) => { try { return await http.post(URL.DETAIL, {id} as ITotpDetailRequest) } catch (e) { - error('查询 TOTP 详情失败', e.code, e.message) + logger.error('查询 TOTP 详情失败', e.code, e.message) return Promise.reject(new HttpApiError(CODE.HTTP_API_TOTP_DETAIL)) } @@ -28,7 +28,7 @@ const create = async (uri: string) => { try { return await http.post(URL.CREATE, {uri} as ITotpCreateRequest) } catch (e) { - error('创建 TOTP 失败', e.code, e.message) + logger.error('创建 TOTP 失败', e.code, e.message) return Promise.reject(new HttpApiError(CODE.HTTP_API_TOTP_CREATE)) } @@ -38,7 +38,7 @@ const update = async (data: ITotpUpdateRequest) => { try { return await http.post(URL.UPDATE, data) } catch (e) { - error('更新 TOTP 信息失败', e.code, e.message) + logger.error('更新 TOTP 信息失败', e.code, e.message) return Promise.reject(new HttpApiError(CODE.HTTP_API_TOTP_UPDATE)) } @@ -48,7 +48,7 @@ const deleteTotp = async (id: number) => { try { return await http.post(URL.DELETE, {id} as ITotpDeleteRequest) } catch (e) { - error('删除 TOTP 失败', e.code, e.message) + logger.error('删除 TOTP 失败', e.code, e.message) return Promise.reject(new HttpApiError(CODE.HTTP_API_TOTP_ALL)) } diff --git a/miniprogram/api/user.ts b/miniprogram/api/user.ts index 11082f3..5d2b69c 100644 --- a/miniprogram/api/user.ts +++ b/miniprogram/api/user.ts @@ -1,14 +1,14 @@ import http from '@utils/http' import { URL } from '@constant/user' import { CODE } from '@constant/error' -import { error } from '@utils/logger' +import logger from '@utils/logger' import { HttpApiError } from '@models/error' const login = async (code: string) => { try { return await http.post(URL.LOGIN, {code} as IUserLoginRequest, false, false) } catch (e) { - error('登录接口请求失败', e.code, e.message) + logger.error('登录接口请求失败', e.code, e.message) return Promise.reject(new HttpApiError(CODE.HTTP_API_USER_LOGIN)) } @@ -18,7 +18,7 @@ const detail = async () => { try { return await http.post(URL.DETAIL) } catch (e) { - error('查询用户详情失败', e.code, e.message) + logger.error('查询用户详情失败', e.code, e.message) return Promise.reject(new HttpApiError(CODE.HTTP_API_USER_DETAIL)) } @@ -28,7 +28,7 @@ const update = async (updated: IUserUpdateRequest) => { try { return await http.post(URL.UPDATE, updated) } catch (e) { - error('更新用户信息失败', e.code, e.message) + logger.error('更新用户信息失败', e.code, e.message) return Promise.reject(new HttpApiError(CODE.HTTP_API_USER_UPDATE)) } diff --git a/miniprogram/app.ts b/miniprogram/app.ts index e65878f..ec5d337 100644 --- a/miniprogram/app.ts +++ b/miniprogram/app.ts @@ -4,6 +4,7 @@ import userUtils from '@utils/user' import { EError, WeixinError } from '@models/error' import { CODE, MESSAGE } from '@constant/error' import { DEFAULT } from '@constant/user' +import logger from '@utils/logger' App({ globalData: { @@ -42,15 +43,19 @@ App({ }) }, onError(e: any) { - console.log(e) + logger.error('小程序异常', e) wx.showToast({title: '小程序异常', icon: 'error'}) }, onUnhandledRejection(e: any) { if (e.reason instanceof EError) { wx.showToast({title: e.reason.message || MESSAGE[e.reason.code], icon: 'error'}) - } else { - wx.showToast({title: '未知错误', icon: 'error'}) + + return; } + + logger.error('未知错误', e) + + wx.showToast({title: '未知错误', icon: 'error'}) } }) \ No newline at end of file diff --git a/miniprogram/interface/totp.ts b/miniprogram/interface/totp.ts index 408bc85..b91687f 100644 --- a/miniprogram/interface/totp.ts +++ b/miniprogram/interface/totp.ts @@ -14,6 +14,7 @@ interface ITotpDetailRequest extends IRequestData { } interface ITotpUpdateRequest extends IRequestData{ + id: number, issuer: string, username: string, } diff --git a/miniprogram/pages/totp/edit.ts b/miniprogram/pages/totp/edit.ts index 035979f..4371e7c 100644 --- a/miniprogram/pages/totp/edit.ts +++ b/miniprogram/pages/totp/edit.ts @@ -7,12 +7,13 @@ Page({ username: '', }, onLoad(query: any) { - this.data.id = query.id || 0 + this.data.id = Number(query.id || 0) }, async onShow() { - const {issuer, username} = await api.detail(this.data.id) + const {id, issuer, username} = await api.detail(this.data.id) this.setData({ + id, issuer: issuer ?? '', username: username ?? '', }) @@ -20,7 +21,7 @@ Page({ async submit(e: any) { await wx.showToast({title: '更新中', icon: 'loading', mask: true, duration: 3000}) - await api.update(e.detail.value as ITotpUpdateRequest) + await api.update({id: this.data.id, ...e.detail.value} as ITotpUpdateRequest) wx.showToast({ title: '修改成功', diff --git a/miniprogram/pages/totp/edit.wxml b/miniprogram/pages/totp/edit.wxml index d6a3dc8..b251733 100644 --- a/miniprogram/pages/totp/edit.wxml +++ b/miniprogram/pages/totp/edit.wxml @@ -9,7 +9,7 @@ 提供商 - + @@ -17,7 +17,7 @@ 账号 - + diff --git a/miniprogram/pages/user/edit.ts b/miniprogram/pages/user/edit.ts index af23f5b..44060f0 100644 --- a/miniprogram/pages/user/edit.ts +++ b/miniprogram/pages/user/edit.ts @@ -19,10 +19,12 @@ Page({ async onChooseAvatar(e: any) { await wx.showLoading({title: '上传中', icon: 'loading', mask: true}) + let res = await wx.compressImage({ src: e.detail.avatarUrl, quality: 1}) + wx.getFileSystemManager().readFile({ - filePath: e.detail.avatarUrl, + filePath: res.tempFilePath, encoding: 'base64', - success: async (res: any) => { + success: async (res: any) => { this.setData({ avatar: "data:image/png;base64," + res.data }) await wx.hideLoading() diff --git a/miniprogram/pages/user/edit.wxml b/miniprogram/pages/user/edit.wxml index c77b9ac..dc38403 100644 --- a/miniprogram/pages/user/edit.wxml +++ b/miniprogram/pages/user/edit.wxml @@ -3,7 +3,7 @@ @@ -12,7 +12,7 @@ 昵称 - + @@ -20,7 +20,7 @@ Slogan - + diff --git a/miniprogram/utils/http.ts b/miniprogram/utils/http.ts index 95c3f5e..f24ca56 100644 --- a/miniprogram/utils/http.ts +++ b/miniprogram/utils/http.ts @@ -2,6 +2,7 @@ import { URL } from '@constant/app' import { CODE, MESSAGE } from '@constant/error' import { HttpError, HttpApiError, LoginError } from '@models/error' import userUtils from '@utils/user' +import logger from '@utils/logger' const formatUrl = (request: IRequest): void => { if (typeof request.query != 'undefined') { @@ -45,6 +46,8 @@ const request = (request: IRequest, mustOpenId?: boolean): Promise => { } const wxRequest = (request: IRequest) => { + logger.info('请求接口', request) + return new Promise((resolve, reject) => { wx.request({ url: request.url, @@ -53,6 +56,8 @@ const wxRequest = (request: IRequest) => { timeout: request.timeout || 3000, method: request.method || 'POST', success: (res: any) => { + logger.info('接口请求成功', res) + if (res.data.code == 0) { resolve(res.data.data) } @@ -60,6 +65,8 @@ const wxRequest = (request: IRequest) => { reject(new HttpApiError(res.data.code as number, res.data.message as string)) }, fail: (err) => { + logger.warning('接口请求失败', err) + reject(new HttpError(err.errMsg)) }, }) diff --git a/miniprogram/utils/logger.ts b/miniprogram/utils/logger.ts index 6477f7c..c057380 100644 --- a/miniprogram/utils/logger.ts +++ b/miniprogram/utils/logger.ts @@ -1,11 +1,15 @@ -const logger = wx.getRealtimeLogManager ? wx.getRealtimeLogManager() : null +const l = wx.getRealtimeLogManager ? wx.getRealtimeLogManager() : null -const info = (...args: any[]) => { - logger?.info(args) +const logger = { + info: (...args: any[]) => { + l?.info(args) + }, + warning: (...args: any[]) => { + l?.warn(args) + }, + error: (...args: any[]) => { + l?.error(args) + } } -const error = (...args: any[]) => { - logger?.error(args) -} - -export { info, error } \ No newline at end of file +export default logger \ No newline at end of file diff --git a/src/repository/totp.rs b/src/repository/totp.rs index 86eb17d..6d0d06f 100644 --- a/src/repository/totp.rs +++ b/src/repository/totp.rs @@ -66,14 +66,11 @@ pub async fn update(model: Totp, updated: UpdateTotp) -> Result<()> { } pub async fn delete(model: Totp) -> Result<()> { - model - .delete(Pool::get("default")) - .await - .map_err(|e| { - println!("删除 Totp 失败: {:?}", e); + model.delete(Pool::get("default")).await.map_err(|e| { + println!("删除 Totp 失败: {:?}", e); - Error::DatabaseDelete - })?; + Error::DatabaseDelete + })?; Ok(()) } diff --git a/src/service/totp.rs b/src/service/totp.rs index ddee4d8..6d79d8c 100644 --- a/src/service/totp.rs +++ b/src/service/totp.rs @@ -14,7 +14,7 @@ pub async fn all(user: User) -> Result> { pub async fn detail(current_user: CurrentUser, id: i64) -> Result { let t = totp::find(id).await?; - if current_user.id != t.id { + if current_user.id != t.user_id { return Err(Error::TotpNotFound); } diff --git a/src/service/user.rs b/src/service/user.rs index e23d402..1e12d29 100644 --- a/src/service/user.rs +++ b/src/service/user.rs @@ -12,10 +12,7 @@ pub async fn login(code: &str) -> Result { return user; } - repository::user::insert(CreateUser { - open_id - }) - .await + repository::user::insert(CreateUser { open_id }).await } pub async fn detail(open_id: &str) -> Result {