feat(admin): 新增后台管理端商品浏览记录页面和删除接口

- 新增后端 ShopGoodsBrowseController 的 /admin/{id} 删除接口,支持管理端删除
- 原删除接口 /{id} 继续限定当前用户权限
- 新增前端管理端页面及相关类型和接口文件,实现浏览记录的列表展示和搜索功能
- 管理后台菜单通过 sys_menu 表动态配置,新增商品浏览记录菜单项
- 前端请求后端返回数据结构规范调整,使用 res.data.code 和 res.data.data
- 后端编译通过,前端类型校验无错误
- 需后端重新部署并配置后台菜单实现功能

fix(privacy): 简化微信隐私协议弹窗逻辑

- 当用户已在登录页勾选同意隐私协议时,不再弹出授权确认窗口
- 在 wxAny.onNeedPrivacyAuthorization 中直接 resolve 同意,提升用户体验
This commit is contained in:
2026-07-15 13:32:24 +08:00
parent 3f1931e420
commit 6dbe128ddd
2 changed files with 16 additions and 16 deletions

View File

@@ -116,3 +116,16 @@
- 待执行:数据库需手动执行 `shop_goods_browse.sql` 建表
- 后续可选:后台管理页面(`/Users/gxwebsoft/VUE/guilixu-admin`Vue3+AntD Vue
## 后台管理端浏览记录页面guilixu-admin
- 后端补充:`ShopGoodsBrowseController` 新增 `DELETE /admin/{id}` 管理端删除接口(不限定用户),原 `DELETE /{id}` 限定当前用户
- 前端文件(`/Users/gxwebsoft/VUE/guilixu-admin`4 个文件):
1. `src/api/shop/shopGoodsBrowse/model/index.ts` — ShopGoodsBrowse + ShopGoodsBrowseParam 类型
2. `src/api/shop/shopGoodsBrowse/index.ts` — pageShopGoodsBrowse(调 /admin/page) + removeShopGoodsBrowse(调 /admin/{id})
3. `src/views/shop/shopGoodsBrowse/index.vue` — 页面ele-pro-table 表格ID/用户ID/商品图片/商品名称/价格/浏览次数/浏览来源/最后浏览时间/首次浏览/操作删除)
4. `src/views/shop/shopGoodsBrowse/components/search.vue` — 搜索栏用户ID/商品ID/浏览来源/时间范围)
- 管理后台菜单机制后端动态菜单sys_menu 表),前端按 `component` 字段约定加载 `src/views/{component}/index.vue`
- 菜单配置:后台"系统管理 → 菜单管理"新增component 填 `shop/shopGoodsBrowse`
- 注意:管理后台 API 用 `res.data.code`/`res.data.data`(非小程序端的 `res.code`request 传参用 `{ params }` 包裹
- 编译验证:后端 Maven compile 成功;前端 vue-tsc 无 shopGoodsBrowse 相关错误
- 待操作:后端需重新部署(新增了 admin 删除接口);管理后台需配置菜单

View File

@@ -24,25 +24,12 @@ function App(props: AppProps) {
}
// 微信隐私协议(基础库 3.16.1+ 强制)
// 当小程序使用 chooseImage/chooseMedia/getLocation 等接口时,若用户未在隐私协议中同意
// 微信会回调这里,开发者必须弹一个自定义的协议确认弹窗,并提供"同意并继续"/"拒绝"两个分支
// 用户已在登录页底部勾选同意《用户协议》和《隐私政策》
// 此处直接 resolve agree不再弹自定义授权窗口
const wxAny: any = Taro
if (typeof wxAny.onNeedPrivacyAuthorization === 'function') {
wxAny.onNeedPrivacyAuthorization((resolve: any) => {
wxAny.showModal({
title: '用户隐私协议',
content: '为了正常使用图片上传、拍照、定位等功能,需要您同意《用户隐私协议》。',
confirmText: '同意',
cancelText: '拒绝',
success: (modalRes: any) => {
if (modalRes.confirm) {
resolve({ event: 'agree', button: 'agree' })
} else {
resolve({ event: 'disagree' })
}
},
fail: () => resolve({ event: 'disagree' }),
})
})
}
})