- 后端新增 clearDefault 方法,保存默认地址前清除其他默认状态,避免多默认地址 - 前端地址编辑页保存成功后若为默认,调用 setDefaultAddress 触发后端清理逻辑 - useAddress hook 加入 ensureSingleDefault,前端保证地址数据中只有一个默认地址 - 新增 shop_goods_browse 表及相关实体、Mapper、服务和控制器,实现用户商品浏览记录功能 - 商品详情页接入浏览记录上报,支持登录用户浏览记录服务端同步 - 浏览历史页支持登录用户服务端分页查询,未登录用户使用本地存储兜底 - 浏览历史页支持浏览记录单条删除、清空、上拉加载和下拉刷新功能 - 调整用户中心入口,恢复浏览历史菜单项显示 - 文档和内存文件更新,包括数据库建表 SQL、接口定义和项目编译说明
53 lines
1.4 KiB
TypeScript
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));
|
|
}
|