修改上传图片安全验证问题

This commit is contained in:
张成
2026-02-14 12:59:21 +08:00
parent 8688b6b82d
commit 64f0267457
54 changed files with 239 additions and 240 deletions

View File

@@ -473,7 +473,7 @@ async function safeMarkAsRead(type, ids) {
}) })
} catch (err) { } catch (err) {
// 标记已读失败不影响用户体验,静默处理 // 标记已读失败不影响用户体验,静默处理
console.error('标记已读失败:', err) console.warn('标记已读失败:', err)
} }
} }
``` ```

View File

@@ -28,7 +28,7 @@ function formatSize(bytes) {
function analyze() { function analyze() {
if (!fs.existsSync(DIST_DIR)) { if (!fs.existsSync(DIST_DIR)) {
console.error('dist 目录不存在,请先执行 taro build --type weapp'); console.warn('dist 目录不存在,请先执行 taro build --type weapp');
return; return;
} }

View File

@@ -11,7 +11,7 @@ const { envConfigs } = require(envConfigPath);
const config = envConfigs[appEnv]; const config = envConfigs[appEnv];
if (!config) { if (!config) {
console.error(`[sync-project-config] Unknown APP_ENV: ${appEnv}`); console.warn(`[sync-project-config] Unknown APP_ENV: ${appEnv}`);
process.exit(1); process.exit(1);
} }

View File

@@ -342,7 +342,7 @@ export default forwardRef(function Comments(
try { try {
await messageService.markAsRead("comment", [message_id]); await messageService.markAsRead("comment", [message_id]);
} catch (e) { } catch (e) {
console.error("标记评论已读失败:", e); console.warn("标记评论已读失败:", e);
} }
} }

View File

@@ -134,7 +134,7 @@ const DistanceQuickFilterV2 = (props) => {
throw new Error('获取位置信息失败'); throw new Error('获取位置信息失败');
} }
} catch (error: any) { } catch (error: any) {
console.error('重新定位失败:', error); console.warn('重新定位失败:', error);
(Taro as any).showToast({ (Taro as any).showToast({
title: error?.message || '定位失败,请检查定位权限', title: error?.message || '定位失败,请检查定位权限',
icon: 'none', icon: 'none',

View File

@@ -42,7 +42,7 @@ const FollowUserCard: React.FC<FollowUserCardProps> = ({ user, tabKey, onFollowC
onFollowChange?.(user.id, new_status); onFollowChange?.(user.id, new_status);
} catch (error) { } catch (error) {
console.error('关注操作失败:', error); console.warn('关注操作失败:', error);
Taro.showToast({ Taro.showToast({
title: '操作失败', title: '操作失败',
icon: 'none' icon: 'none'
@@ -67,7 +67,7 @@ const FollowUserCard: React.FC<FollowUserCardProps> = ({ user, tabKey, onFollowC
onBlockSuccess?.(user.id); onBlockSuccess?.(user.id);
} }
} catch (error) { } catch (error) {
console.error('删除推荐人员失败:', error); console.warn('删除推荐人员失败:', error);
Taro.showToast({ Taro.showToast({
title: '操作失败', title: '操作失败',
icon: 'none' icon: 'none'

View File

@@ -146,7 +146,7 @@ const HomeNavbar = (props: IProps) => {
console.log(`[HomeNavbar] 距离上次选择"继续浏览"还不到2小时剩余时间: ${Math.ceil((TWO_HOURS_MS - time_diff) / 1000 / 60)}分钟`); console.log(`[HomeNavbar] 距离上次选择"继续浏览"还不到2小时剩余时间: ${Math.ceil((TWO_HOURS_MS - time_diff) / 1000 / 60)}分钟`);
return false; return false;
} catch (error) { } catch (error) {
console.error('[HomeNavbar] 检查定位弹窗显示条件失败:', error); console.warn('[HomeNavbar] 检查定位弹窗显示条件失败:', error);
return true; // 出错时默认显示 return true; // 出错时默认显示
} }
}; };
@@ -239,7 +239,7 @@ const HomeNavbar = (props: IProps) => {
// console.log(`距离上次选择"继续浏览"还不到2小时剩余时间: ${Math.ceil((TWO_HOURS_MS - time_diff) / 1000 / 60)}分钟`); // console.log(`距离上次选择"继续浏览"还不到2小时剩余时间: ${Math.ceil((TWO_HOURS_MS - time_diff) / 1000 / 60)}分钟`);
// return false; // return false;
// } catch (error) { // } catch (error) {
// console.error('检查定位弹窗显示条件失败:', error); // console.warn('检查定位弹窗显示条件失败:', error);
// return true; // 出错时默认显示 // return true; // 出错时默认显示
// } // }
// }; // };
@@ -276,7 +276,7 @@ const HomeNavbar = (props: IProps) => {
(Taro as any).setStorageSync(CITY_CHANGE_TIME_KEY, current_time); (Taro as any).setStorageSync(CITY_CHANGE_TIME_KEY, current_time);
console.log(`[LocationDialog] 已记录用户切换城市的时间2小时内不再提示`); console.log(`[LocationDialog] 已记录用户切换城市的时间2小时内不再提示`);
} catch (error) { } catch (error) {
console.error('保存城市切换时间失败:', error); console.warn('保存城市切换时间失败:', error);
} }
console.log("切换到用户详情中的位置信息并更新缓存:", detectedProvince); console.log("切换到用户详情中的位置信息并更新缓存:", detectedProvince);
@@ -304,7 +304,7 @@ const HomeNavbar = (props: IProps) => {
(Taro as any).setStorageSync(LOCATION_DIALOG_DISMISS_TIME_KEY, current_time); (Taro as any).setStorageSync(LOCATION_DIALOG_DISMISS_TIME_KEY, current_time);
console.log(`[LocationDialog] 已记录用户选择"继续浏览"的时间2小时内不再提示`); console.log(`[LocationDialog] 已记录用户选择"继续浏览"的时间2小时内不再提示`);
} catch (error) { } catch (error) {
console.error('保存定位弹窗关闭时间失败:', error); console.warn('保存定位弹窗关闭时间失败:', error);
} }
// 关闭弹窗 // 关闭弹窗
@@ -409,7 +409,7 @@ const HomeNavbar = (props: IProps) => {
(Taro as any).setStorageSync(CITY_CHANGE_TIME_KEY, current_time); (Taro as any).setStorageSync(CITY_CHANGE_TIME_KEY, current_time);
console.log("已保存城市到缓存并记录切换时间:", _newArea, current_time); console.log("已保存城市到缓存并记录切换时间:", _newArea, current_time);
} catch (error) { } catch (error) {
console.error("保存城市缓存失败:", error); console.warn("保存城市缓存失败:", error);
} }
// 先调用列表接口(会使用更新后的 state.area // 先调用列表接口(会使用更新后的 state.area

View File

@@ -43,7 +43,7 @@ const ImageUpload: React.FC<ImageUploadProps> = ({
onChange([...images, ...newImages]) onChange([...images, ...newImages])
}, },
fail: (err) => { fail: (err) => {
console.error('选择图片失败:', err) console.warn('选择图片失败:', err)
} }
}) })
}, [images.length, maxCount, onChange]) }, [images.length, maxCount, onChange])

View File

@@ -256,7 +256,7 @@ const RadarChartV2 = forwardRef<RadarChartV2Ref, RadarChartV2Props>(
const bgImg = await loadImage(canvas, shareBgUrl); const bgImg = await loadImage(canvas, shareBgUrl);
ctx.drawImage(bgImg, 0, 0, width, height); ctx.drawImage(bgImg, 0, 0, width, height);
} catch (error) { } catch (error) {
console.error("Failed to load background image:", error); console.warn("Failed to load background image:", error);
// 如果加载失败,使用白色背景作为兜底 // 如果加载失败,使用白色背景作为兜底
ctx.fillStyle = "#FFFFFF"; ctx.fillStyle = "#FFFFFF";
ctx.fillRect(0, 0, width, height); ctx.fillRect(0, 0, width, height);
@@ -392,12 +392,12 @@ const RadarChartV2 = forwardRef<RadarChartV2Ref, RadarChartV2Props>(
); );
ctx.restore(); ctx.restore();
} catch (error) { } catch (error) {
console.error("Failed to load docCopy image:", error); console.warn("Failed to load docCopy image:", error);
} }
currentY += (48 + 20) * scale; // 头像区域高度 + gap currentY += (48 + 20) * scale; // 头像区域高度 + gap
} catch (error) { } catch (error) {
console.error("Failed to load avatar image:", error); console.warn("Failed to load avatar image:", error);
} }
} }
@@ -523,7 +523,7 @@ const RadarChartV2 = forwardRef<RadarChartV2Ref, RadarChartV2Props>(
iconSize, iconSize,
); );
} catch (error) { } catch (error) {
console.error("Failed to load icon:", error); console.warn("Failed to load icon:", error);
} }
// 绘制底部文字 // 绘制底部文字
@@ -601,7 +601,7 @@ const RadarChartV2 = forwardRef<RadarChartV2Ref, RadarChartV2Props>(
// 恢复上下文状态 // 恢复上下文状态
ctx.restore(); ctx.restore();
} catch (error) { } catch (error) {
console.error("Failed to load QR code:", error); console.warn("Failed to load QR code:", error);
} }
} }

View File

@@ -575,7 +575,7 @@ const ShareCardCanvas: React.FC<ShareCardCanvasProps> = ({
setTempImagePath(res.tempFilePath) setTempImagePath(res.tempFilePath)
}, },
fail: (error: any) => { fail: (error: any) => {
console.error('图片生成失败:', error) console.warn('图片生成失败:', error)
setIsDrawing(false) setIsDrawing(false)
reject(error) reject(error)
} }
@@ -595,7 +595,7 @@ const ShareCardCanvas: React.FC<ShareCardCanvasProps> = ({
console.log('Canvas绘制命令已发送') console.log('Canvas绘制命令已发送')
} catch (error) { } catch (error) {
console.error('绘制分享卡片失败:', error) console.warn('绘制分享卡片失败:', error)
setIsDrawing(false) // 绘制失败,重置状态 setIsDrawing(false) // 绘制失败,重置状态
Taro.showToast({ Taro.showToast({
title: '生成分享卡片失败', title: '生成分享卡片失败',

View File

@@ -16,7 +16,7 @@ const SubscribeNotificationTip: React.FC<SubscribeNotificationTipProps> = ({
navigateTo({ navigateTo({
url: '/other_pages/enable_notification/index', url: '/other_pages/enable_notification/index',
}).catch((err) => { }).catch((err) => {
console.error('跳转失败:', err); console.warn('跳转失败:', err);
}); });
}; };

View File

@@ -86,9 +86,9 @@ async function onChooseImageSuccess(tempFiles) {
...fileRes, ...fileRes,
...(height > IMAGE_MAX_SIZE.height ...(height > IMAGE_MAX_SIZE.height
? { ? {
width: Math.floor(IMAGE_MAX_SIZE.height * image_aspect_ratio), width: Math.floor(IMAGE_MAX_SIZE.height * image_aspect_ratio),
height: IMAGE_MAX_SIZE.height, height: IMAGE_MAX_SIZE.height,
} }
: { width: Math.floor(height * image_aspect_ratio), height }), : { width: Math.floor(height * image_aspect_ratio), height }),
}; };
} else { } else {
@@ -96,9 +96,9 @@ async function onChooseImageSuccess(tempFiles) {
...fileRes, ...fileRes,
...(width > IMAGE_MAX_SIZE.width ...(width > IMAGE_MAX_SIZE.width
? { ? {
width: IMAGE_MAX_SIZE.width, width: IMAGE_MAX_SIZE.width,
height: Math.floor(IMAGE_MAX_SIZE.width / image_aspect_ratio), height: Math.floor(IMAGE_MAX_SIZE.width / image_aspect_ratio),
} }
: { width, height: Math.floor(width / image_aspect_ratio) }), : { width, height: Math.floor(width / image_aspect_ratio) }),
}; };
} }
@@ -119,7 +119,6 @@ export default function UploadFromWx(props: UploadFromWxProps) {
sourceType: ["album", "camera"], sourceType: ["album", "camera"],
}).then(async (res) => { }).then(async (res) => {
const analyzedFiles = await onChooseImageSuccess(res.tempFiles); const analyzedFiles = await onChooseImageSuccess(res.tempFiles);
// cropping image to standard size
const compressedTempFiles = await compressImage(analyzedFiles); const compressedTempFiles = await compressImage(analyzedFiles);
let start = Date.now(); let start = Date.now();
@@ -130,19 +129,22 @@ export default function UploadFromWx(props: UploadFromWxProps) {
is_public: 1 as unknown as 0 | 1, is_public: 1 as unknown as 0 | 1,
id: (start++).toString(), id: (start++).toString(),
})); }));
const onFileUpdate = uploadApi.batchUpload(files).then((res) => {
return res.map((item) => ({ Taro.showLoading({ title: "上传中..." });
id: item.id, try {
url: item ? item.data.file_url : "", const uploadRes = await uploadApi.batchUpload(files);
})); const successful = uploadRes
}); .filter((item) => item.data != null)
onAdd( .map((item) => ({
files.map((item) => ({ id: item.id,
id: item.id, url: (item.data as { file_url: string }).file_url,
url: item.filePath, }));
})), onAdd(successful, Promise.resolve(successful));
onFileUpdate } catch (e) {
); console.warn("批量上传失败:", e);
} finally {
Taro.hideLoading();
}
}); });
}; };
return ( return (

View File

@@ -250,7 +250,7 @@ const UserInfoCardComponent: React.FC<UserInfoCardProps> = ({
icon: "success", icon: "success",
}); });
} catch (error) { } catch (error) {
console.error("保存失败:", error); console.warn("保存失败:", error);
Taro.showToast({ Taro.showToast({
title: "保存失败", title: "保存失败",
icon: "error", icon: "error",
@@ -293,7 +293,7 @@ const UserInfoCardComponent: React.FC<UserInfoCardProps> = ({
icon: "success", icon: "success",
}); });
} catch (error) { } catch (error) {
console.error("保存失败:", error); console.warn("保存失败:", error);
Taro.showToast({ Taro.showToast({
title: "保存失败", title: "保存失败",
icon: "error", icon: "error",

View File

@@ -86,7 +86,7 @@ function Index() {
// handleShare(true); // handleShare(true);
// } // }
} catch (error) { } catch (error) {
console.error("用户位置更新失败", error); console.warn("用户位置更新失败", error);
} }
}; };

View File

@@ -17,14 +17,14 @@ const HomePage: React.FC = () => {
if (loginResult.success) { if (loginResult.success) {
// 静默登录成功,获取用户信息 // 静默登录成功,获取用户信息
fetchUserInfo().catch((error) => { fetchUserInfo().catch((error) => {
console.error("获取用户信息失败:", error); console.warn("获取用户信息失败:", error);
}); });
checkNicknameChangeStatus().catch((error) => { checkNicknameChangeStatus().catch((error) => {
console.error("检查昵称变更状态失败:", error); console.warn("检查昵称变更状态失败:", error);
}); });
} }
} catch (error) { } catch (error) {
console.error("静默登录失败:", error); console.warn("静默登录失败:", error);
// 静默登录失败不影响使用 // 静默登录失败不影响使用
} }

View File

@@ -139,7 +139,7 @@ const VerificationPage: React.FC = () => {
}); });
} }
} catch (error) { } catch (error) {
console.error("发送验证码异常:", error); console.warn("发送验证码异常:", error);
Taro.showToast({ Taro.showToast({
title: "发送失败,请重试", title: "发送失败,请重试",
icon: "none", icon: "none",

View File

@@ -235,7 +235,7 @@ const ListPageContent: React.FC<ListPageContentProps> = ({
if (isActive) { if (isActive) {
getLocation().catch((error) => { getLocation().catch((error) => {
console.error('获取位置信息失败:', error); console.warn('获取位置信息失败:', error);
}); });
} }
}, [isActive, showHomeQrcode]); }, [isActive, showHomeQrcode]);
@@ -309,7 +309,7 @@ const ListPageContent: React.FC<ListPageContentProps> = ({
lastLoadedAreaRef.current = [...currentArea] as [string, string]; lastLoadedAreaRef.current = [...currentArea] as [string, string];
} }
} catch (error) { } catch (error) {
console.error("重新加载数据失败:", error); console.warn("重新加载数据失败:", error);
} }
}, delayMs); }, delayMs);
prevIsActiveRef.current = isActive; prevIsActiveRef.current = isActive;
@@ -375,7 +375,7 @@ const ListPageContent: React.FC<ListPageContentProps> = ({
await updateUserLocation(location.latitude, location.longitude, isFirstCall); await updateUserLocation(location.latitude, location.longitude, isFirstCall);
hasUpdatedLocationRef.current = true; hasUpdatedLocationRef.current = true;
} catch (error) { } catch (error) {
console.error("更新用户位置失败:", error); console.warn("更新用户位置失败:", error);
} }
} }
// 先调用列表接口 // 先调用列表接口
@@ -462,7 +462,7 @@ const ListPageContent: React.FC<ListPageContentProps> = ({
await getMatchesData(); await getMatchesData();
await fetchGetGamesCount(); await fetchGetGamesCount();
} catch (error) { } catch (error) {
console.error("刷新列表失败:", error); console.warn("刷新列表失败:", error);
} }
}; };
@@ -477,7 +477,7 @@ const ListPageContent: React.FC<ListPageContentProps> = ({
const { fetchDictionary } = useDictionaryStore.getState(); const { fetchDictionary } = useDictionaryStore.getState();
await fetchDictionary(); await fetchDictionary();
} catch (error) { } catch (error) {
console.error("初始化字典数据失败:", error); console.warn("初始化字典数据失败:", error);
} }
}; };
@@ -616,7 +616,7 @@ const ListPageContent: React.FC<ListPageContentProps> = ({
try { try {
await loadMoreMatches(); await loadMoreMatches();
} catch (error) { } catch (error) {
console.error("加载更多失败:", error); console.warn("加载更多失败:", error);
} finally { } finally {
loadingMoreRef.current = false; loadingMoreRef.current = false;
} }

View File

@@ -117,7 +117,7 @@ const MyselfPageContent: React.FC<MyselfPageContentProps> = ({
set_game_records(notEndGames); set_game_records(notEndGames);
setEndedGameRecords(finishedGames); setEndedGameRecords(finishedGames);
} catch (error) { } catch (error) {
console.error("加载球局数据失败:", error); console.warn("加载球局数据失败:", error);
} }
}, [active_tab, user_info, classifyGameRecords]); }, [active_tab, user_info, classifyGameRecords]);
@@ -150,7 +150,7 @@ const MyselfPageContent: React.FC<MyselfPageContentProps> = ({
duration: 1500, duration: 1500,
}); });
} catch (error) { } catch (error) {
console.error("关注操作失败:", error); console.warn("关注操作失败:", error);
(Taro as any).showToast({ (Taro as any).showToast({
title: "操作失败,请重试", title: "操作失败,请重试",
icon: "error", icon: "error",
@@ -198,7 +198,7 @@ const MyselfPageContent: React.FC<MyselfPageContentProps> = ({
try { try {
await Promise.all([fetchUserInfo(), load_game_data()]); await Promise.all([fetchUserInfo(), load_game_data()]);
} catch (error) { } catch (error) {
console.error("刷新失败:", error); console.warn("刷新失败:", error);
(Taro as any).showToast({ (Taro as any).showToast({
title: "刷新失败,请重试", title: "刷新失败,请重试",
icon: "none", icon: "none",

View File

@@ -68,7 +68,7 @@ const MainPage: React.FC = () => {
return; return;
} }
} catch (error) { } catch (error) {
console.error("微信授权异常:", error); console.warn("微信授权异常:", error);
setAuthErrorMessage("微信授权失败,请重试"); setAuthErrorMessage("微信授权失败,请重试");
setShowAuthError(true); setShowAuthError(true);
return; return;
@@ -81,7 +81,7 @@ const MainPage: React.FC = () => {
await fetchUserInfo(); await fetchUserInfo();
await checkNicknameChangeStatus(); await checkNicknameChangeStatus();
} catch (error) { } catch (error) {
console.error("获取用户信息失败:", error); console.warn("获取用户信息失败:", error);
} }
} }
}; };

View File

@@ -77,7 +77,7 @@ const CommentReply = () => {
if (allCommentIds.length > 0) { if (allCommentIds.length > 0) {
// 使用统一接口标记已读传入所有评论ID // 使用统一接口标记已读传入所有评论ID
messageService.markAsRead('comment', allCommentIds).catch(e => { messageService.markAsRead('comment', allCommentIds).catch(e => {
console.error("标记评论已读失败:", e); console.warn("标记评论已读失败:", e);
}); });
} }
} }
@@ -221,7 +221,7 @@ const CommentReply = () => {
if (allCommentIds.length > 0) { if (allCommentIds.length > 0) {
messageService.markAsRead('comment', allCommentIds).catch(e => { messageService.markAsRead('comment', allCommentIds).catch(e => {
console.error("标记评论已读失败:", e); console.warn("标记评论已读失败:", e);
}); });
} }
} }

View File

@@ -21,7 +21,7 @@ const EnableNotificationPage: React.FC = () => {
setQrCodeUrl(res.data.ServiceAccountQRCode); setQrCodeUrl(res.data.ServiceAccountQRCode);
} }
} catch (error) { } catch (error) {
console.error('获取二维码失败:', error); console.warn('获取二维码失败:', error);
} }
}; };
fetchQRCode(); fetchQRCode();

View File

@@ -62,7 +62,7 @@ const NewFollow = () => {
if (allFanIds.length > 0) { if (allFanIds.length > 0) {
// 使用统一接口标记已读传入所有关注者ID // 使用统一接口标记已读传入所有关注者ID
messageService.markAsRead('follow', allFanIds).catch(e => { messageService.markAsRead('follow', allFanIds).catch(e => {
console.error("标记关注已读失败:", e); console.warn("标记关注已读失败:", e);
}); });
} }
} else { } else {
@@ -168,7 +168,7 @@ const NewFollow = () => {
if (allFanIds.length > 0) { if (allFanIds.length > 0) {
messageService.markAsRead('follow', allFanIds).catch(e => { messageService.markAsRead('follow', allFanIds).catch(e => {
console.error("标记关注已读失败:", e); console.warn("标记关注已读失败:", e);
}); });
} }
} else { } else {

View File

@@ -99,7 +99,7 @@ function isOnCancelEmpty(onCancelFunc) {
const normalized = funcString.replace(/\s/g, ""); const normalized = funcString.replace(/\s/g, "");
return emptyFunctionPatterns.includes(normalized); return emptyFunctionPatterns.includes(normalized);
} catch (error) { } catch (error) {
console.error("检查 onCancel 函数时出错:", error); console.warn("检查 onCancel 函数时出错:", error);
return false; return false;
} }
} }
@@ -531,7 +531,7 @@ function Result() {
// setQrCodeUrl(tempFilePath); // setQrCodeUrl(tempFilePath);
// } // }
} catch (error) { } catch (error) {
console.error("获取二维码失败:", error); console.warn("获取二维码失败:", error);
} }
} }
@@ -645,7 +645,7 @@ function Result() {
}); });
return imageUrl; return imageUrl;
} catch (error) { } catch (error) {
console.error("生成图片失败:", error); console.warn("生成图片失败:", error);
throw error; throw error;
} }
} }

View File

@@ -88,7 +88,7 @@ const AiImportPopup: React.FC<AiImportPopupProps> = ({
}) })
} }
} catch (error) { } catch (error) {
console.error('获取剪切板失败:', error) console.warn('获取剪切板失败:', error)
Taro.showToast({ Taro.showToast({
title: '读取剪切板失败,请手动输入', title: '读取剪切板失败,请手动输入',
icon: 'error', icon: 'error',
@@ -163,7 +163,7 @@ const AiImportPopup: React.FC<AiImportPopupProps> = ({
} }
} }
} catch (error) { } catch (error) {
console.error('选择图片失败:', error) console.warn('选择图片失败:', error)
if (!(typeof error === 'object' && error.errMsg && error.errMsg.includes('fail cancel'))) { if (!(typeof error === 'object' && error.errMsg && error.errMsg.includes('fail cancel'))) {
setUploadFailCount(prev => prev + 1) setUploadFailCount(prev => prev + 1)
Taro.showToast({ Taro.showToast({

View File

@@ -53,7 +53,7 @@ const SelectStadium: React.FC<SelectStadiumProps> = ({
} }
} }
} catch (error) { } catch (error) {
console.error('获取场馆列表失败:', error) console.warn('获取场馆列表失败:', error)
} finally { } finally {
setLoading(false) setLoading(false)
} }
@@ -107,7 +107,7 @@ const SelectStadium: React.FC<SelectStadiumProps> = ({
setShowDetail(true) setShowDetail(true)
}, },
fail: (err: { errMsg: string }) => { fail: (err: { errMsg: string }) => {
console.error('选择位置失败:', err) console.warn('选择位置失败:', err)
const { errMsg } = err || {}; const { errMsg } = err || {};
if (!errMsg.includes('fail cancel')) { if (!errMsg.includes('fail cancel')) {
Taro.showToast({ Taro.showToast({

View File

@@ -152,7 +152,7 @@ const StadiumDetail = forwardRef<StadiumDetailRef, StadiumDetailProps>(({
}) })
}, },
fail: (err: { errMsg: string }) => { fail: (err: { errMsg: string }) => {
console.error('选择位置失败:', err) console.warn('选择位置失败:', err)
const { errMsg } = err || {}; const { errMsg } = err || {};
if (!errMsg.includes('fail cancel')) { if (!errMsg.includes('fail cancel')) {
Taro.showToast({ Taro.showToast({

View File

@@ -51,7 +51,7 @@ export class FollowService {
throw new Error(response.message || '获取互关列表失败'); throw new Error(response.message || '获取互关列表失败');
} }
} catch (error) { } catch (error) {
console.error('获取互关列表失败:', error); console.warn('获取互关列表失败:', error);
return { list: [], total: 0 }; return { list: [], total: 0 };
} }
} }
@@ -79,7 +79,7 @@ export class FollowService {
throw new Error(response.message || '获取粉丝列表失败'); throw new Error(response.message || '获取粉丝列表失败');
} }
} catch (error) { } catch (error) {
console.error('获取粉丝列表失败:', error); console.warn('获取粉丝列表失败:', error);
return { list: [], total: 0 }; return { list: [], total: 0 };
} }
} }
@@ -107,7 +107,7 @@ export class FollowService {
throw new Error(response.message || '获取新增粉丝列表失败'); throw new Error(response.message || '获取新增粉丝列表失败');
} }
} catch (error) { } catch (error) {
console.error('获取新增粉丝列表失败:', error); console.warn('获取新增粉丝列表失败:', error);
return { list: [], total: 0 }; return { list: [], total: 0 };
} }
} }
@@ -135,7 +135,7 @@ export class FollowService {
throw new Error(response.message || '获取关注列表失败'); throw new Error(response.message || '获取关注列表失败');
} }
} catch (error) { } catch (error) {
console.error('获取关注列表失败:', error); console.warn('获取关注列表失败:', error);
return { list: [], total: 0 }; return { list: [], total: 0 };
} }
} }
@@ -178,7 +178,7 @@ export class FollowService {
throw new Error(response.message || '关注失败'); throw new Error(response.message || '关注失败');
} }
} catch (error) { } catch (error) {
console.error('关注失败:', error); console.warn('关注失败:', error);
throw error; throw error;
} }
} }
@@ -201,7 +201,7 @@ export class FollowService {
throw new Error(response.message || '取消关注失败'); throw new Error(response.message || '取消关注失败');
} }
} catch (error) { } catch (error) {
console.error('取消关注失败:', error); console.warn('取消关注失败:', error);
throw error; throw error;
} }
} }
@@ -231,7 +231,7 @@ export class FollowService {
throw new Error(response.message || '获取推荐用户失败'); throw new Error(response.message || '获取推荐用户失败');
} }
} catch (error) { } catch (error) {
console.error('获取推荐用户失败:', error); console.warn('获取推荐用户失败:', error);
return { list: [], total: 0 }; return { list: [], total: 0 };
} }
} }
@@ -251,7 +251,7 @@ export class FollowService {
return 'none'; return 'none';
} }
} catch (error) { } catch (error) {
console.error('检查关注状态失败:', error); console.warn('检查关注状态失败:', error);
return 'none'; return 'none';
} }
} }
@@ -269,7 +269,7 @@ export class FollowService {
throw new Error(response.message || '屏蔽推荐用户失败'); throw new Error(response.message || '屏蔽推荐用户失败');
} }
} catch (error) { } catch (error) {
console.error('屏蔽推荐用户失败:', error); console.warn('屏蔽推荐用户失败:', error);
throw error; throw error;
} }
} }

View File

@@ -27,7 +27,7 @@ export const getGamesList = async (params?: Record<string, any>) => {
// const fetchApi = isIntegrate ? '/games/integrate_list' : '/games/list' // const fetchApi = isIntegrate ? '/games/integrate_list' : '/games/list'
return httpService.post('/games/list', params, { showLoading: false }) return httpService.post('/games/list', params, { showLoading: false })
} catch (error) { } catch (error) {
console.error("列表数据获取失败:", error); console.warn("列表数据获取失败:", error);
throw error; throw error;
} }
}; };
@@ -41,7 +41,7 @@ export const getGamesIntegrateList = async (params?: Record<string, any>) => {
try { try {
return httpService.post('/games/integrate_list', params, { showLoading: false }) return httpService.post('/games/integrate_list', params, { showLoading: false })
} catch (error) { } catch (error) {
console.error("列表数据获取失败:", error); console.warn("列表数据获取失败:", error);
throw error; throw error;
} }
}; };
@@ -55,7 +55,7 @@ export const getGamesCount = async (params?: Record<string, any>) => {
try { try {
return httpService.post('/games/count', params, { showLoading: false }) return httpService.post('/games/count', params, { showLoading: false })
} catch (error) { } catch (error) {
console.error("列表数量获取失败:", error); console.warn("列表数量获取失败:", error);
throw error; throw error;
} }
}; };
@@ -71,7 +71,7 @@ export const getSearchHistory = async (params) => {
return httpService.post('/games/search_history', params, { showLoading: false }) return httpService.post('/games/search_history', params, { showLoading: false })
} catch (error) { } catch (error) {
// 捕获并打印错误信息 // 捕获并打印错误信息
console.error("历史记录获取失败:", error); console.warn("历史记录获取失败:", error);
// 抛出错误以便上层处理 // 抛出错误以便上层处理
throw error; throw error;
} }
@@ -87,7 +87,7 @@ export const clearHistory = async (params) => {
return httpService.post('/games/search_history/delete_all', params, { showLoading: false }) return httpService.post('/games/search_history/delete_all', params, { showLoading: false })
} catch (error) { } catch (error) {
// 捕获并打印错误信息 // 捕获并打印错误信息
console.error("清除历史记录失败:", error); console.warn("清除历史记录失败:", error);
// 抛出错误以便上层处理 // 抛出错误以便上层处理
throw error; throw error;
} }
@@ -104,7 +104,7 @@ export const searchSuggestion = async (params) => {
return httpService.post('/games/search_recommendations', params) return httpService.post('/games/search_recommendations', params)
} catch (error) { } catch (error) {
// 捕获并打印错误信息 // 捕获并打印错误信息
console.error("搜索建议获取失败:", error); console.warn("搜索建议获取失败:", error);
// 抛出错误以便上层处理 // 抛出错误以便上层处理
throw error; throw error;
} }
@@ -116,7 +116,7 @@ export const getCities = async () => {
return httpService.post('/cities/tree', {}) return httpService.post('/cities/tree', {})
} catch (error) { } catch (error) {
// 捕获并打印错误信息 // 捕获并打印错误信息
console.error("城市列表获取失败:", error); console.warn("城市列表获取失败:", error);
// 抛出错误以便上层处理 // 抛出错误以便上层处理
throw error; throw error;
} }
@@ -127,7 +127,7 @@ export const getCityQrCode = async () => {
return httpService.post('/hot_city_qr/list', {}) return httpService.post('/hot_city_qr/list', {})
} catch (error) { } catch (error) {
// 捕获并打印错误信息 // 捕获并打印错误信息
console.error("城市二维码获取失败:", error); console.warn("城市二维码获取失败:", error);
// 抛出错误以便上层处理 // 抛出错误以便上层处理
throw error; throw error;
} }
@@ -140,7 +140,7 @@ export const getDistricts = async (params: { province: string; city: string }) =
return httpService.post('/cities/cities', params) return httpService.post('/cities/cities', params)
} catch (error) { } catch (error) {
// 捕获并打印错误信息 // 捕获并打印错误信息
console.error("行政区列表获取失败:", error); console.warn("行政区列表获取失败:", error);
// 抛出错误以便上层处理 // 抛出错误以便上层处理
throw error; throw error;
} }

View File

@@ -122,7 +122,7 @@ export const wechat_auth_login = async (
}; };
} }
} catch (error) { } catch (error) {
console.error("微信授权登录失败:", error); console.warn("微信授权登录失败:", error);
return { return {
success: false, success: false,
message: "微信授权失败,请重试", message: "微信授权失败,请重试",
@@ -160,7 +160,7 @@ export const phone_auth_login = async (
await useUser.getState().fetchUserInfo(); await useUser.getState().fetchUserInfo();
await useUser.getState().checkNicknameChangeStatus(); await useUser.getState().checkNicknameChangeStatus();
} catch (error) { } catch (error) {
console.error("更新用户信息到 store 失败:", error); console.warn("更新用户信息到 store 失败:", error);
} }
return { return {
@@ -178,7 +178,7 @@ export const phone_auth_login = async (
}; };
} }
} catch (error) { } catch (error) {
console.error("手机号登录失败:", error); console.warn("手机号登录失败:", error);
return { return {
success: false, success: false,
message: error.message, message: error.message,
@@ -206,7 +206,7 @@ export const send_sms_code = async (phone: string): Promise<SmsResponse> => {
}; };
} }
} catch (error) { } catch (error) {
console.error("发送短信失败:", error); console.warn("发送短信失败:", error);
return { return {
success: false, success: false,
message: error.message, message: error.message,
@@ -232,7 +232,7 @@ export const verify_sms_code = async (
user_info: response.data?.userInfo, user_info: response.data?.userInfo,
}; };
} catch (error) { } catch (error) {
console.error("验证验证码失败:", error); console.warn("验证验证码失败:", error);
return { return {
success: false, success: false,
message: error.message, message: error.message,
@@ -255,7 +255,7 @@ export const save_login_state = (token: string, user_info: WechatUserInfo) => {
Taro.setStorageSync("is_logged_in", true); Taro.setStorageSync("is_logged_in", true);
Taro.setStorageSync("login_time", Date.now()); Taro.setStorageSync("login_time", Date.now());
} catch (error) { } catch (error) {
console.error("保存登录状态失败:", error); console.warn("保存登录状态失败:", error);
} }
}; };
@@ -270,7 +270,7 @@ export const clear_login_state = () => {
Taro.removeStorageSync("is_logged_in"); Taro.removeStorageSync("is_logged_in");
Taro.removeStorageSync("login_time"); Taro.removeStorageSync("login_time");
} catch (error) { } catch (error) {
console.error("清除登录状态失败:", error); console.warn("清除登录状态失败:", error);
} }
}; };
@@ -374,7 +374,7 @@ export const refresh_login_status = async (): Promise<boolean> => {
// 检查本地存储的登录状态 // 检查本地存储的登录状态
return check_login_status(); return check_login_status();
} catch (error) { } catch (error) {
console.error("刷新登录状态失败:", error); console.warn("刷新登录状态失败:", error);
return false; return false;
} }
}; };
@@ -385,7 +385,7 @@ export const updateUserPhone = async (payload: ChangePhoneParams) => {
const response = await httpService.post("/user/update_phone", payload); const response = await httpService.post("/user/update_phone", payload);
return response; return response;
} catch (error) { } catch (error) {
console.error("更新用户手机号失败:", error); console.warn("更新用户手机号失败:", error);
throw error; throw error;
} }
}; };
@@ -402,7 +402,7 @@ export const getUserInfoById = async (id) => {
); );
return response; return response;
} catch (error) { } catch (error) {
console.error("获取用户信息失败:", error); console.warn("获取用户信息失败:", error);
throw error; throw error;
} }
}; };
@@ -415,7 +415,7 @@ export const followUser = async (following_id) => {
}); });
return response; return response;
} catch (error) { } catch (error) {
console.error("关注失败:", error); console.warn("关注失败:", error);
throw error; throw error;
} }
}; };
@@ -428,7 +428,7 @@ export const unFollowUser = async (following_id) => {
}); });
return response; return response;
} catch (error) { } catch (error) {
console.error("取消关注失败:", error); console.warn("取消关注失败:", error);
throw error; throw error;
} }
}; };
@@ -464,7 +464,7 @@ export const silentLogin = async (): Promise<LoginResponse> => {
console.log("微信登录结果:", login_result); console.log("微信登录结果:", login_result);
if (!login_result.code) { if (!login_result.code) {
console.error("微信登录失败未获取到code"); console.warn("微信登录失败未获取到code");
return { return {
success: false, success: false,
message: "微信登录失败", message: "微信登录失败",
@@ -506,14 +506,14 @@ export const silentLogin = async (): Promise<LoginResponse> => {
user_info, user_info,
}; };
} else { } else {
console.error("静默登录失败:", auth_response.message); console.warn("静默登录失败:", auth_response.message);
return { return {
success: false, success: false,
message: auth_response.message || "静默登录失败", message: auth_response.message || "静默登录失败",
}; };
} }
} catch (error) { } catch (error) {
console.error("静默登录异常:", error); console.warn("静默登录异常:", error);
return { return {
success: false, success: false,
message: "静默登录失败,请重试", message: "静默登录失败,请重试",

View File

@@ -39,19 +39,28 @@ export interface uploadFileResponseData {
updated_at: string, updated_at: string,
} }
// 从上传错误中取出可展示的文案
function get_upload_error_msg(error: any): string {
if (!error) return "上传失败";
const msg =
error?.message ||
(typeof error?.error === "string" ? error.error : error?.error?.message) ||
(error?.data?.message ?? error?.data?.msg) ||
"";
return (msg && String(msg).trim()) || "上传失败";
}
// 发布球局类 // 发布球局类
class UploadApi { class UploadApi {
async upload(req: UploadFilesData): Promise<{ id: string, data: uploadFileResponseData }> { async upload(req: UploadFilesData): Promise<{ id: string, data: uploadFileResponseData }> {
const fullUrl = `${envConfig.apiBaseURL}/api/gallery/upload`;
let fullUrl = `${envConfig.apiBaseURL}/api/gallery/upload` const authHeader = tokenManager.getAuthHeader();
const { id, ...rest } = req;
const authHeader = tokenManager.getAuthHeader()
const { id, ...rest } = req
try { try {
const res = await Taro.uploadFile({ const res = await Taro.uploadFile({
url: fullUrl, url: fullUrl,
filePath: rest.filePath, filePath: rest.filePath,
name: 'file', name: "file",
formData: { formData: {
description: rest.description, description: rest.description,
tags: rest.tags, tags: rest.tags,
@@ -59,12 +68,17 @@ class UploadApi {
}, },
header: authHeader, header: authHeader,
}); });
return { const parsed = JSON.parse(res.data);
id, if (parsed.code !== 0) {
data: JSON.parse(res.data).data, const msg = get_upload_error_msg(parsed);
Taro.showToast({ title: msg, icon: "none" });
throw new Error(msg);
} }
return { id, data: parsed.data };
} catch (error) { } catch (error) {
throw { id, error } const msg = get_upload_error_msg(error);
Taro.showToast({ title: msg, icon: "none" });
throw { id, error };
} }
} }
@@ -103,7 +117,7 @@ class UploadApi {
throw new Error(result.message || '上传失败'); throw new Error(result.message || '上传失败');
} }
} catch (error) { } catch (error) {
console.error('上传图片失败:', error); console.warn('上传图片失败:', error);
throw error; throw error;
} }
} }

View File

@@ -351,7 +351,7 @@ export class UserService {
throw new Error(response.message || "获取用户信息失败"); throw new Error(response.message || "获取用户信息失败");
} }
} catch (error) { } catch (error) {
console.error("获取用户信息失败:", error); console.warn("获取用户信息失败:", error);
// 返回默认用户信息 // 返回默认用户信息
return {} as UserInfo; return {} as UserInfo;
} }
@@ -392,7 +392,7 @@ export class UserService {
throw new Error(response.message || "更新用户信息失败"); throw new Error(response.message || "更新用户信息失败");
} }
} catch (error) { } catch (error) {
console.error("更新用户信息失败:", error); console.warn("更新用户信息失败:", error);
throw error; throw error;
} }
} }
@@ -417,7 +417,7 @@ export class UserService {
throw new Error(response.message || "获取主办球局失败"); throw new Error(response.message || "获取主办球局失败");
} }
} catch (error) { } catch (error) {
console.error("获取主办球局失败:", error); console.warn("获取主办球局失败:", error);
// 返回符合ListContainer data格式的模拟数据 // 返回符合ListContainer data格式的模拟数据
return []; return [];
} }
@@ -443,7 +443,7 @@ export class UserService {
throw new Error(response.message || "获取参与球局失败"); throw new Error(response.message || "获取参与球局失败");
} }
} catch (error) { } catch (error) {
console.error("获取参与球局失败:", error); console.warn("获取参与球局失败:", error);
// 返回符合ListContainer data格式的模拟数据 // 返回符合ListContainer data格式的模拟数据
return []; return [];
} }
@@ -485,7 +485,7 @@ export class UserService {
throw new Error(response.message || "操作失败"); throw new Error(response.message || "操作失败");
} }
} catch (error) { } catch (error) {
console.error("关注操作失败:", error); console.warn("关注操作失败:", error);
throw error; throw error;
} }
} }
@@ -543,7 +543,7 @@ export class UserService {
throw new Error(response.message || "更新用户信息失败"); throw new Error(response.message || "更新用户信息失败");
} }
} catch (error) { } catch (error) {
console.error("保存用户信息失败:", error); console.warn("保存用户信息失败:", error);
throw error; throw error;
} }
} }
@@ -573,26 +573,16 @@ export class UserService {
throw new Error(response.message || "获取用户动态失败"); throw new Error(response.message || "获取用户动态失败");
} }
} catch (error) { } catch (error) {
console.error("获取用户动态失败:", error); console.warn("获取用户动态失败:", error);
return []; return [];
} }
} }
// 上传头像 // 上传头像:仅在上传成功且 save 成功时返回 ossPath失败则抛出由调用方处理避免误调 user/update
static async upload_avatar(file_path: string): Promise<string> { static async upload_avatar(file_path: string): Promise<string> {
try { const result = await uploadFiles.upload_oss_img(file_path);
// 先上传文件到服务器 await this.save_user_info({ avatar: result.ossPath });
const result = await uploadFiles.upload_oss_img(file_path); return result.ossPath;
await this.save_user_info({ avatar: result.ossPath });
// 使用新的响应格式中的file_url字段
return result.ossPath;
} catch (error) {
console.error("头像上传失败:", error);
// 如果上传失败,返回默认头像
return require("../static/userInfo/default_avatar.svg");
}
} }
// 解析用户手机号 // 解析用户手机号
@@ -612,7 +602,7 @@ export class UserService {
throw new Error(response.message || "获取手机号失败"); throw new Error(response.message || "获取手机号失败");
} }
} catch (error) { } catch (error) {
console.error("获取手机号失败:", error); console.warn("获取手机号失败:", error);
return ""; return "";
} }
} }
@@ -628,7 +618,7 @@ export class UserService {
throw new Error(message || "获取职业树失败"); throw new Error(message || "获取职业树失败");
} }
} catch (error) { } catch (error) {
console.error("获取职业树失败:", error); console.warn("获取职业树失败:", error);
return []; return [];
} }
} }
@@ -644,7 +634,7 @@ export class UserService {
throw new Error(message || "获取城市树失败"); throw new Error(message || "获取城市树失败");
} }
} catch (error) { } catch (error) {
console.error("获取职业树失败:", error); console.warn("获取职业树失败:", error);
return []; return [];
} }
} }
@@ -665,7 +655,7 @@ export class UserService {
throw new Error(message || "注销账户失败"); throw new Error(message || "注销账户失败");
} }
} catch (error) { } catch (error) {
console.error("注销账户失败:", error); console.warn("注销账户失败:", error);
} }
} }
} }
@@ -680,7 +670,7 @@ export const fetchUserProfile = async (): Promise<
const response = await httpService.post("user/detail"); const response = await httpService.post("user/detail");
return response; return response;
} catch (error) { } catch (error) {
console.error("获取用户信息失败:", error); console.warn("获取用户信息失败:", error);
throw error; throw error;
} }
}; };
@@ -695,7 +685,7 @@ export const checkNicknameChangeStatus = async (): Promise<
); );
return response; return response;
} catch (error) { } catch (error) {
console.error("获取昵称修改状态失败:", error); console.warn("获取昵称修改状态失败:", error);
throw error; throw error;
} }
}; };
@@ -707,7 +697,7 @@ export const updateNickname = async (nickname: string) => {
}); });
return response; return response;
} catch (error) { } catch (error) {
console.error("昵称修改失败:", error); console.warn("昵称修改失败:", error);
throw error; throw error;
} }
}; };
@@ -718,7 +708,7 @@ export const updateUserProfile = async (payload: Partial<UserInfoType>) => {
const response = await httpService.post("/user/update", payload); const response = await httpService.post("/user/update", payload);
return response; return response;
} catch (error) { } catch (error) {
console.error("更新用户信息失败:", error); console.warn("更新用户信息失败:", error);
throw error; throw error;
} }
}; };
@@ -737,7 +727,7 @@ export const updateUserLocation = async (
}); });
return response; return response;
} catch (error) { } catch (error) {
console.error("更新用户坐标位置失败:", error); console.warn("更新用户坐标位置失败:", error);
throw error; throw error;
} }
}; };
@@ -774,13 +764,13 @@ export const handleCustomerService = async (): Promise<void> => {
console.log("打开客服成功:", res); console.log("打开客服成功:", res);
}, },
fail: (error) => { fail: (error) => {
console.error("打开客服失败:", error); console.warn("打开客服失败:", error);
// 如果官方客服不可用,显示备用联系方式 // 如果官方客服不可用,显示备用联系方式
showCustomerServiceFallback(customerService); showCustomerServiceFallback(customerService);
}, },
}); });
} catch (error) { } catch (error) {
console.error("客服功能异常:", error); console.warn("客服功能异常:", error);
// 备用方案:显示联系信息 // 备用方案:显示联系信息
showCustomerServiceFallback(); showCustomerServiceFallback();
} }
@@ -810,7 +800,7 @@ const showCustomerServiceFallback = (customerInfo?: any) => {
phoneNumber: customerInfo.phoneNumber, phoneNumber: customerInfo.phoneNumber,
}); });
} catch (error) { } catch (error) {
console.error("拨打电话失败:", error); console.warn("拨打电话失败:", error);
Taro.showToast({ Taro.showToast({
title: "拨打电话失败", title: "拨打电话失败",
icon: "none", icon: "none",
@@ -827,7 +817,7 @@ const showCustomerServiceFallback = (customerInfo?: any) => {
icon: "success", icon: "success",
}); });
} catch (error) { } catch (error) {
console.error("复制邮箱失败:", error); console.warn("复制邮箱失败:", error);
Taro.showToast({ Taro.showToast({
title: "复制失败", title: "复制失败",
icon: "none", icon: "none",

View File

@@ -39,7 +39,7 @@ export class WalletService {
throw new Error(response.message || "获取钱包信息失败"); throw new Error(response.message || "获取钱包信息失败");
} }
} catch (error) { } catch (error) {
console.error("获取钱包信息失败:", error); console.warn("获取钱包信息失败:", error);
// 返回模拟数据 // 返回模拟数据
return { return {
balance: 1588.80, balance: 1588.80,
@@ -62,7 +62,7 @@ export class WalletService {
throw new Error(response.message || "获取交易记录失败"); throw new Error(response.message || "获取交易记录失败");
} }
} catch (error) { } catch (error) {
console.error("获取交易记录失败:", error); console.warn("获取交易记录失败:", error);
// 返回模拟数据 // 返回模拟数据
return [ return [
{ {
@@ -107,7 +107,7 @@ export class WalletService {
throw new Error(response.message || "提现申请提交失败"); throw new Error(response.message || "提现申请提交失败");
} }
} catch (error) { } catch (error) {
console.error("提现申请提交失败:", error); console.warn("提现申请提交失败:", error);
throw error; throw error;
} }
} }

View File

@@ -93,7 +93,7 @@ function MyComponent() {
console.log('请求成功!') console.log('请求成功!')
} catch (error) { } catch (error) {
console.error('请求失败:', error) console.warn('请求失败:', error)
} finally { } finally {
setLoading(false) setLoading(false)
} }

View File

@@ -76,7 +76,7 @@ export const useDictionaryStore = create<DictionaryState>()((set, get) => ({
error: errorMessage, error: errorMessage,
isLoading: false isLoading: false
}) })
console.error('获取字典数据失败:', error) console.warn('获取字典数据失败:', error)
} }
}, },

View File

@@ -76,7 +76,7 @@ export const useKeyboardStore = create<KeyboardStore>((set, get) => ({
try { try {
listener(height, true) listener(height, true)
} catch (error) { } catch (error) {
console.error('键盘监听器执行错误:', error) console.warn('键盘监听器执行错误:', error)
} }
}) })
}) })
@@ -92,7 +92,7 @@ export const useKeyboardStore = create<KeyboardStore>((set, get) => ({
try { try {
listener(0, false) listener(0, false)
} catch (error) { } catch (error) {
console.error('键盘监听器执行错误:', error) console.warn('键盘监听器执行错误:', error)
} }
}) })
}) })

View File

@@ -410,7 +410,7 @@ export const useListStore = create<TennisStore>()((set, get) => ({
return Promise.resolve(); return Promise.resolve();
} catch (error) { } catch (error) {
console.error("更新列表数据失败:", error); console.warn("更新列表数据失败:", error);
return Promise.reject(error); return Promise.reject(error);
} }
}, },
@@ -724,7 +724,7 @@ export const useListStore = create<TennisStore>()((set, get) => ({
} }
return []; return [];
} catch (error) { } catch (error) {
console.error("获取行政区列表失败:", error); console.warn("获取行政区列表失败:", error);
return []; return [];
} }
}, },

View File

@@ -46,7 +46,7 @@ export const useMessageStore = create<MessageStore>()((set, get) => ({
set({ loading: false }); set({ loading: false });
} }
} catch (e) { } catch (e) {
console.error("获取红点信息失败:", e); console.warn("获取红点信息失败:", e);
set({ loading: false }); set({ loading: false });
} }
}, },

View File

@@ -5,7 +5,7 @@ export const setStorage = (key: string, data: any) => {
try { try {
Taro.setStorageSync(key, JSON.stringify(data)) Taro.setStorageSync(key, JSON.stringify(data))
} catch (error) { } catch (error) {
console.error('保存数据失败:', error) console.warn('保存数据失败:', error)
} }
} }
@@ -17,7 +17,7 @@ export const getStorage = <T>(key: string): T | null => {
} }
return null return null
} catch (error) { } catch (error) {
console.error('读取数据失败:', error) console.warn('读取数据失败:', error)
return null return null
} }
} }
@@ -26,7 +26,7 @@ export const removeStorage = (key: string) => {
try { try {
Taro.removeStorageSync(key) Taro.removeStorageSync(key)
} catch (error) { } catch (error) {
console.error('清除数据失败:', error) console.warn('清除数据失败:', error)
} }
} }
@@ -34,6 +34,6 @@ export const clearAllStorage = () => {
try { try {
Taro.clearStorageSync() Taro.clearStorageSync()
} catch (error) { } catch (error) {
console.error('清除所有数据失败:', error) console.warn('清除所有数据失败:', error)
} }
} }

View File

@@ -77,7 +77,7 @@ export const useUser = create<UserState>()((set) => ({
return userData; return userData;
} catch (error) { } catch (error) {
console.error("获取用户信息失败:", error); console.warn("获取用户信息失败:", error);
return undefined; return undefined;
} }
}, },
@@ -87,7 +87,7 @@ export const useUser = create<UserState>()((set) => ({
try { try {
(Taro as any).setStorageSync?.(CITY_CACHE_KEY, newArea); (Taro as any).setStorageSync?.(CITY_CACHE_KEY, newArea);
} catch (error) { } catch (error) {
console.error("保存城市缓存失败:", error); console.warn("保存城市缓存失败:", error);
} }
}, },
@@ -122,7 +122,7 @@ export const useUser = create<UserState>()((set) => ({
// 只有在更新头像等需要服务器返回新URL的字段时才需要重新获取 // 只有在更新头像等需要服务器返回新URL的字段时才需要重新获取
// 如果需要确保数据一致性,可以在特定场景下手动调用 fetchUserInfo // 如果需要确保数据一致性,可以在特定场景下手动调用 fetchUserInfo
} catch (error) { } catch (error) {
console.error("更新用户信息失败:", error); console.warn("更新用户信息失败:", error);
throw error; throw error;
} }
}, },
@@ -153,7 +153,7 @@ export const useUser = create<UserState>()((set) => ({
}, },
}); });
} catch (error) { } catch (error) {
console.error("检查昵称变更状态失败:", error); console.warn("检查昵称变更状态失败:", error);
} finally { } finally {
isCheckingNicknameStatus = false; isCheckingNicknameStatus = false;
} }
@@ -167,7 +167,7 @@ export const useUser = create<UserState>()((set) => ({
user: { ...state.user, nickname }, user: { ...state.user, nickname },
})); }));
} catch (error) { } catch (error) {
console.error("更新用户昵称失败:", error); console.warn("更新用户昵称失败:", error);
} }
}, },
// NTRP 测试结果缓存 // NTRP 测试结果缓存
@@ -201,7 +201,7 @@ export const useUser = create<UserState>()((set) => ({
} }
return null; return null;
} catch (error) { } catch (error) {
console.error("获取NTRP测试结果失败:", error); console.warn("获取NTRP测试结果失败:", error);
return null; return null;
} finally { } finally {
isFetchingLastTestResult = false; isFetchingLastTestResult = false;

View File

@@ -25,7 +25,7 @@ const TestPage: React.FC = () => {
} }
}, },
fail(err) { fail(err) {
console.error('订阅失败:', err); console.warn('订阅失败:', err);
Taro.showToast({ Taro.showToast({
title: '订阅失败', title: '订阅失败',
icon: 'error', icon: 'error',

View File

@@ -206,11 +206,11 @@ const DownloadBill: React.FC = () => {
} }
}, },
fail: function (err) { fail: function (err) {
console.error("文件下载失败:", err); console.warn("文件下载失败:", err);
}, },
}); });
} catch (error) { } catch (error) {
console.error(error); console.warn(error);
} }
}; };
const handleDownloadBill = async () => { const handleDownloadBill = async () => {
@@ -240,11 +240,11 @@ const DownloadBill: React.FC = () => {
} }
}, },
fail: function (err) { fail: function (err) {
console.error("文件下载失败:", err); console.warn("文件下载失败:", err);
}, },
}); });
} catch (error) { } catch (error) {
console.error(error); console.warn(error);
} }
}; };
return ( return (

View File

@@ -82,15 +82,15 @@ const DownloadBillRecords: React.FC = () => {
console.log('打开文档成功'); console.log('打开文档成功');
}, },
fail: (err) => { fail: (err) => {
console.error('打开文档失败', err); console.warn('打开文档失败', err);
} }
}); });
} else { } else {
console.error('下载失败,状态码:', res.statusCode); console.warn('下载失败,状态码:', res.statusCode);
} }
}, },
fail: (err) => { fail: (err) => {
console.error('下载失败', err); console.warn('下载失败', err);
} }
}); });
} }

View File

@@ -142,7 +142,7 @@ const EditProfilePage: React.FC = () => {
// city: user_data.city || "", // city: user_data.city || "",
// }); // });
// } catch (error) { // } catch (error) {
// console.error("加载用户信息失败:", error); // console.warn("加载用户信息失败:", error);
// Taro.showToast({ // Taro.showToast({
// title: "加载用户信息失败", // title: "加载用户信息失败",
// icon: "error", // icon: "error",
@@ -169,9 +169,9 @@ const EditProfilePage: React.FC = () => {
icon: "success", icon: "success",
}); });
} catch (error) { } catch (error) {
console.error("头像上传失败:", error); console.warn("头像上传失败:", error);
Taro.showToast({ Taro.showToast({
title: "头像上传失败", title: error.message,
icon: "none", icon: "none",
}); });
} }
@@ -246,7 +246,7 @@ const EditProfilePage: React.FC = () => {
icon: "success", icon: "success",
}); });
} catch (error) { } catch (error) {
console.error("保存失败:", error); console.warn("保存失败:", error);
Taro.showToast({ Taro.showToast({
title: "保存失败", title: "保存失败",
icon: "error", icon: "error",
@@ -307,7 +307,7 @@ const EditProfilePage: React.FC = () => {
icon: "success", icon: "success",
}); });
} catch (error) { } catch (error) {
console.error("保存失败:", error); console.warn("保存失败:", error);
Taro.showToast({ Taro.showToast({
title: "保存失败", title: "保存失败",
icon: "error", icon: "error",
@@ -438,7 +438,7 @@ const EditProfilePage: React.FC = () => {
const phone = await UserService.parse_phone(e.detail.code); const phone = await UserService.parse_phone(e.detail.code);
handle_field_edit("phone", phone); handle_field_edit("phone", phone);
} catch (e) { } catch (e) {
console.error("解析手机号失败:", e); console.warn("解析手机号失败:", e);
Taro.showToast({ Taro.showToast({
title: "解析手机号失败,请重试", title: "解析手机号失败,请重试",
icon: "none", icon: "none",
@@ -564,9 +564,8 @@ const EditProfilePage: React.FC = () => {
</View> </View>
<View className="item_right"> <View className="item_right">
<Text <Text
className={`item_value ${ className={`item_value ${form_data.gender ? "" : "placeholder"
form_data.gender ? "" : "placeholder" }`}
}`}
> >
{convert_db_gender_to_display(form_data.gender)} {convert_db_gender_to_display(form_data.gender)}
</Text> </Text>
@@ -597,9 +596,8 @@ const EditProfilePage: React.FC = () => {
</View> </View>
<View className="item_right"> <View className="item_right">
<Text <Text
className={`item_value ${ className={`item_value ${form_data.birthday ? "" : "placeholder"
form_data.birthday ? "" : "placeholder" }`}
}`}
> >
{form_data.birthday || "选择生日"} {form_data.birthday || "选择生日"}
</Text> </Text>
@@ -628,9 +626,8 @@ const EditProfilePage: React.FC = () => {
</View> </View>
<View className="item_right"> <View className="item_right">
<Text <Text
className={`item_value ${ className={`item_value ${form_data.personal_profile ? "" : "placeholder"
form_data.personal_profile ? "" : "placeholder" }`}
}`}
> >
{form_data.personal_profile.replace(/\n/g, " ") || {form_data.personal_profile.replace(/\n/g, " ") ||
"介绍一下自己"} "介绍一下自己"}
@@ -661,17 +658,16 @@ const EditProfilePage: React.FC = () => {
</View> </View>
<View className="item_right"> <View className="item_right">
<Text <Text
className={`item_value ${ className={`item_value ${form_data.province ||
form_data.province ||
form_data.city || form_data.city ||
form_data.district form_data.district
? "" ? ""
: "placehoder" : "placehoder"
}`} }`}
> >
{form_data.province || {form_data.province ||
form_data.city || form_data.city ||
form_data.district form_data.district
? `${form_data.province} ${form_data.city} ${form_data.district}` ? `${form_data.province} ${form_data.city} ${form_data.district}`
: "选择所在地区"} : "选择所在地区"}
</Text> </Text>
@@ -697,9 +693,8 @@ const EditProfilePage: React.FC = () => {
</View> </View>
<View className="item_right"> <View className="item_right">
<Text <Text
className={`item_value ${ className={`item_value ${form_data.ntrp_level ? "" : "placeholder"
form_data.ntrp_level ? "" : "placeholder" }`}
}`}
> >
{form_data.ntrp_level || "测测你的 NTRP 水平"} {form_data.ntrp_level || "测测你的 NTRP 水平"}
</Text> </Text>
@@ -724,14 +719,12 @@ const EditProfilePage: React.FC = () => {
<Text className="item_label"></Text> <Text className="item_label"></Text>
</View> </View>
<View <View
className={`item_right ${ className={`item_right ${form_data.occupation ? "" : "placeholder"
form_data.occupation ? "" : "placeholder" }`}
}`}
> >
<Text <Text
className={`item_value ${ className={`item_value ${form_data.occupation ? "" : "placeholder"
form_data.occupation ? "" : "placeholder" }`}
}`}
> >
{form_data.occupation || "填写你的职业"} {form_data.occupation || "填写你的职业"}
</Text> </Text>
@@ -771,9 +764,9 @@ const EditProfilePage: React.FC = () => {
> >
{form_data.phone {form_data.phone
? form_data.phone.replace( ? form_data.phone.replace(
/(\d{3})(\d{4})(\d{4})/, /(\d{3})(\d{4})(\d{4})/,
"$1 $2 $3" "$1 $2 $3"
) )
: "未绑定"} : "未绑定"}
</Button> </Button>
<Image <Image

View File

@@ -85,7 +85,7 @@ const FollowPage: React.FC = () => {
})); }));
} catch (error) { } catch (error) {
console.error(`加载${TAB_CONFIG.find(t => t.key === tab)?.label}列表失败:`, error); console.warn(`加载${TAB_CONFIG.find(t => t.key === tab)?.label}列表失败:`, error);
Taro.showToast({ Taro.showToast({
title: '加载失败', title: '加载失败',
icon: 'none' icon: 'none'
@@ -163,7 +163,7 @@ const FollowPage: React.FC = () => {
} }
} catch (error) { } catch (error) {
console.error('关注操作失败:', error); console.warn('关注操作失败:', error);
Taro.showToast({ Taro.showToast({
title: '操作失败', title: '操作失败',
icon: 'none' icon: 'none'
@@ -202,7 +202,7 @@ const FollowPage: React.FC = () => {
try { try {
load_user_list(default_tab, true); load_user_list(default_tab, true);
} catch (error) { } catch (error) {
console.error('初始化加载失败:', error); console.warn('初始化加载失败:', error);
Taro.showToast({ Taro.showToast({
title: '初始化失败', title: '初始化失败',
icon: 'none' icon: 'none'
@@ -243,7 +243,7 @@ const FollowPage: React.FC = () => {
// icon: 'success' // icon: 'success'
// }); // });
} catch (error) { } catch (error) {
console.error('取消关注失败:', error); console.warn('取消关注失败:', error);
Taro.showToast({ Taro.showToast({
title: '操作失败', title: '操作失败',
icon: 'none' icon: 'none'

View File

@@ -62,7 +62,7 @@ const MyselfPage: React.FC = () => {
// // } // // }
// // set_game_records(games_data); // // set_game_records(games_data);
// } catch (error) { // } catch (error) {
// console.error("加载用户数据失败:", error); // console.warn("加载用户数据失败:", error);
// Taro.showToast({ // Taro.showToast({
// title: "加载失败,请重试", // title: "加载失败,请重试",
// icon: "error", // icon: "error",
@@ -150,7 +150,7 @@ const MyselfPage: React.FC = () => {
setEndedGameRecords(finishedGames); setEndedGameRecords(finishedGames);
// set_game_records(games_data); // set_game_records(games_data);
} catch (error) { } catch (error) {
console.error("加载球局数据失败:", error); console.warn("加载球局数据失败:", error);
} }
}, [active_tab, user_info, classifyGameRecords]); }, [active_tab, user_info, classifyGameRecords]);
@@ -176,7 +176,7 @@ const MyselfPage: React.FC = () => {
duration: 1500, duration: 1500,
}); });
} catch (error) { } catch (error) {
console.error("关注操作失败:", error); console.warn("关注操作失败:", error);
Taro.showToast({ Taro.showToast({
title: "操作失败,请重试", title: "操作失败,请重试",
icon: "error", icon: "error",

View File

@@ -117,7 +117,7 @@ const OtherUserPage: React.FC = () => {
}); });
setIsFollowing(userData.is_following || false); setIsFollowing(userData.is_following || false);
} catch (error) { } catch (error) {
console.error("加载用户数据失败:", error); console.warn("加载用户数据失败:", error);
Taro.showToast({ Taro.showToast({
title: "加载失败", title: "加载失败",
icon: "none", icon: "none",
@@ -169,7 +169,7 @@ const OtherUserPage: React.FC = () => {
setGameRecords(notEndGames); setGameRecords(notEndGames);
setEndedGameRecords(finishedGames); setEndedGameRecords(finishedGames);
} catch (error) { } catch (error) {
console.error("加载球局数据失败:", error); console.warn("加载球局数据失败:", error);
Taro.showToast({ Taro.showToast({
title: "加载失败,请重试", title: "加载失败,请重试",
icon: "error", icon: "error",
@@ -200,7 +200,7 @@ const OtherUserPage: React.FC = () => {
duration: 1500, duration: 1500,
}); });
} catch (error) { } catch (error) {
console.error("关注操作失败:", error); console.warn("关注操作失败:", error);
Taro.showToast({ Taro.showToast({
title: "操作失败", title: "操作失败",
icon: "none", icon: "none",
@@ -235,7 +235,7 @@ const OtherUserPage: React.FC = () => {
try { try {
await Promise.all([load_user_data(), load_game_data()]); await Promise.all([load_user_data(), load_game_data()]);
} catch (error) { } catch (error) {
console.error("刷新失败:", error); console.warn("刷新失败:", error);
} finally { } finally {
setRefreshing(false); setRefreshing(false);
} }

View File

@@ -84,7 +84,7 @@ const QueryTransactions = () => {
setSearchHistory(response.data); setSearchHistory(response.data);
} }
} catch (e) { } catch (e) {
console.error(e); console.warn(e);
} }
}; };
/** /**

View File

@@ -195,7 +195,7 @@ const WalletPage: React.FC = () => {
const res = await httpService.post("/wallet/check_password_status"); const res = await httpService.post("/wallet/check_password_status");
set_password_status(res.data.is_password_set); set_password_status(res.data.is_password_set);
} catch (e) { } catch (e) {
console.error("检查交易密码状态失败:", e); console.warn("检查交易密码状态失败:", e);
} }
}; };
@@ -218,7 +218,7 @@ const WalletPage: React.FC = () => {
total_withdraw, total_withdraw,
}); });
} catch (error: any) { } catch (error: any) {
console.error("加载钱包数据失败:", error); console.warn("加载钱包数据失败:", error);
let errorMessage = "加载失败,请重试"; let errorMessage = "加载失败,请重试";
if ( if (
@@ -262,7 +262,7 @@ const WalletPage: React.FC = () => {
set_transactions([]); set_transactions([]);
} }
} catch (error: any) { } catch (error: any) {
console.error("加载交易记录失败:", error); console.warn("加载交易记录失败:", error);
set_transactions([]); set_transactions([]);
let errorMessage = "加载交易记录失败"; let errorMessage = "加载交易记录失败";

View File

@@ -135,7 +135,7 @@ const Withdrawal: React.FC = () => {
total_withdraw, total_withdraw,
}); });
} catch (error: any) { } catch (error: any) {
console.error("加载钱包数据失败:", error); console.warn("加载钱包数据失败:", error);
let errorMessage = "加载失败,请重试"; let errorMessage = "加载失败,请重试";
if ( if (
@@ -171,7 +171,7 @@ const Withdrawal: React.FC = () => {
setMapErrorCodes(mapErrorCodes); setMapErrorCodes(mapErrorCodes);
} }
} catch (error: any) { } catch (error: any) {
console.error("获取提现错误码失败:", error); console.warn("获取提现错误码失败:", error);
} }
}; };
const handleWithdraw = async () => { const handleWithdraw = async () => {

View File

@@ -33,7 +33,7 @@ const initUserAuthCore = async (): Promise<void> => {
await fetchUserInfo(); await fetchUserInfo();
await checkNicknameChangeStatus(); await checkNicknameChangeStatus();
} catch (error) { } catch (error) {
console.error("获取用户信息失败:", error); console.warn("获取用户信息失败:", error);
} }
} else { } else {
// 未登录,尝试静默登录 // 未登录,尝试静默登录
@@ -45,12 +45,12 @@ const initUserAuthCore = async (): Promise<void> => {
await checkNicknameChangeStatus(); await checkNicknameChangeStatus();
} }
} catch (error) { } catch (error) {
console.error("静默登录失败:", error); console.warn("静默登录失败:", error);
// 静默登录失败不影响使用 // 静默登录失败不影响使用
} }
} }
} catch (error) { } catch (error) {
console.error("初始化用户授权失败:", error); console.warn("初始化用户授权失败:", error);
} finally { } finally {
isInitializingAuth = false; isInitializingAuth = false;
authInitPromise = null; authInitPromise = null;

View File

@@ -23,7 +23,7 @@ export const sceneRedirectLogic = (options, defaultPage: string) => {
url: query ? `/${defaultPage}?${query}` : `/${defaultPage}`, url: query ? `/${defaultPage}?${query}` : `/${defaultPage}`,
}); });
} catch (e) { } catch (e) {
console.error(e); console.warn(e);
} }
}; };

View File

@@ -553,7 +553,7 @@ const drawShareCard = async (ctx: any, data: ShareCardData, offscreen: any): Pro
console.log('Canvas绘制命令已发送') console.log('Canvas绘制命令已发送')
} catch (error) { } catch (error) {
console.error('绘制分享卡片失败:', error) console.warn('绘制分享卡片失败:', error)
Taro.showToast({ Taro.showToast({
title: '生成分享卡片失败', title: '生成分享卡片失败',
icon: 'none' icon: 'none'

View File

@@ -16,7 +16,7 @@ class TokenManager {
try { try {
return Taro.getStorageSync(TOKEN_KEY) return Taro.getStorageSync(TOKEN_KEY)
} catch (error) { } catch (error) {
console.error('获取访问令牌失败:', error) console.warn('获取访问令牌失败:', error)
return null return null
} }
} }
@@ -26,7 +26,7 @@ class TokenManager {
try { try {
return Taro.getStorageSync(REFRESH_TOKEN_KEY) return Taro.getStorageSync(REFRESH_TOKEN_KEY)
} catch (error) { } catch (error) {
console.error('获取刷新令牌失败:', error) console.warn('获取刷新令牌失败:', error)
return null return null
} }
} }
@@ -36,7 +36,7 @@ class TokenManager {
try { try {
return Taro.getStorageSync(TOKEN_EXPIRES_KEY) return Taro.getStorageSync(TOKEN_EXPIRES_KEY)
} catch (error) { } catch (error) {
console.error('获取令牌过期时间失败:', error) console.warn('获取令牌过期时间失败:', error)
return null return null
} }
} }
@@ -54,7 +54,7 @@ class TokenManager {
Taro.setStorageSync(TOKEN_EXPIRES_KEY, tokenInfo.expiresAt) Taro.setStorageSync(TOKEN_EXPIRES_KEY, tokenInfo.expiresAt)
} }
} catch (error) { } catch (error) {
console.error('设置令牌失败:', error) console.warn('设置令牌失败:', error)
} }
} }
@@ -65,7 +65,7 @@ class TokenManager {
Taro.removeStorageSync(REFRESH_TOKEN_KEY) Taro.removeStorageSync(REFRESH_TOKEN_KEY)
Taro.removeStorageSync(TOKEN_EXPIRES_KEY) Taro.removeStorageSync(TOKEN_EXPIRES_KEY)
} catch (error) { } catch (error) {
console.error('清除令牌失败:', error) console.warn('清除令牌失败:', error)
} }
} }

View File

@@ -17,7 +17,7 @@ export function saveImage(url) {
await Taro.saveImageToPhotosAlbum({ filePath }) await Taro.saveImageToPhotosAlbum({ filePath })
Taro.showToast({ title: "保存成功" }) Taro.showToast({ title: "保存成功" })
} catch (e) { } catch (e) {
console.error(e) console.warn(e)
Taro.showToast({ title: "图片保存失败", icon: "none" }) Taro.showToast({ title: "图片保存失败", icon: "none" })
} }
} }