Files
xinlong-shop-taro/src/api/shop/shopGoodsBrowse/index.ts
赵忠林 3f1931e420 feat(address): 修复默认地址唯一性并新增用户浏览记录功能
- 后端新增 clearDefault 方法,保存默认地址前清除其他默认状态,避免多默认地址
- 前端地址编辑页保存成功后若为默认,调用 setDefaultAddress 触发后端清理逻辑
- useAddress hook 加入 ensureSingleDefault,前端保证地址数据中只有一个默认地址
- 新增 shop_goods_browse 表及相关实体、Mapper、服务和控制器,实现用户商品浏览记录功能
- 商品详情页接入浏览记录上报,支持登录用户浏览记录服务端同步
- 浏览历史页支持登录用户服务端分页查询,未登录用户使用本地存储兜底
- 浏览历史页支持浏览记录单条删除、清空、上拉加载和下拉刷新功能
- 调整用户中心入口,恢复浏览历史菜单项显示
- 文档和内存文件更新,包括数据库建表 SQL、接口定义和项目编译说明
2026-07-15 12:52:25 +08:00

53 lines
1.4 KiB
TypeScript

import request from '@/utils/request';
import type { ApiResult, PageResult } from '@/api';
import type { ShopGoodsBrowse, ShopGoodsBrowseParam } from './model';
/**
* 上报浏览记录(异步静默,不抛错影响主流程)
*/
export async function reportBrowse(data: Partial<ShopGoodsBrowse>): Promise<void> {
try {
await request.post<ApiResult<unknown>>('/shop/shop-goods-browse', data);
} catch {
/* 静默失败:浏览记录上报不影响用户体验 */
}
}
/**
* 分页查询我的浏览记录
*/
export async function pageBrowseHistory(params: ShopGoodsBrowseParam) {
const res = await request.get<ApiResult<PageResult<ShopGoodsBrowse>>>(
'/shop/shop-goods-browse/page',
params
);
if (res.code === 0) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 删除单条浏览记录
*/
export async function deleteBrowseRecord(id: number) {
const res = await request.del<ApiResult<unknown>>(
`/shop/shop-goods-browse/${id}`
);
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}
/**
* 清空我的浏览记录
*/
export async function clearBrowseHistory() {
const res = await request.del<ApiResult<unknown>>('/shop/shop-goods-browse');
if (res.code === 0) {
return res.message;
}
return Promise.reject(new Error(res.message));
}