[求助] 用户查询商品时,应该怎么排除没有权限的商品?

2020-09-04 17:07:26 +08:00
 liubx
2020 次点击
所在节点    Java
22 条回复
zzw252
2020-09-04 17:13:46 +08:00
启用或登录时返回用户信息中带上权限集合,请求商品列表时回传权限集给后端?
wj219
2020-09-04 17:35:14 +08:00
商品里边有存品牌 id 么,条件用 in (用户有权限的品牌 id) 至少执行的 SQL 长度小一点
nutting
2020-09-04 17:39:37 +08:00
1L 馊主意,权限怎么能前端确定。这没啥思路,就是表关联,条件限制啊。你是说 in 这个做法 sql 低效?
vone
2020-09-04 17:40:54 +08:00
拿把菜刀架在用户脖子上,然后说请不要点开没权限的商品。

或者
select *
from 商品表
join 商品品牌表 on m=n
join 品牌权限表 on x=y
locoz
2020-09-04 17:47:29 +08:00
后端做效率太低辣,让前端在界面上直接隐藏没权限的商品(狗头保命)
gaius
2020-09-04 17:50:05 +08:00
搞个用户商品权限范围表,查询时实时获取,用 es 查,不知道有多少商品,想想还挺恐怖的
A388
2020-09-04 17:50:33 +08:00
@nutting 可能是 nodejs 做中间层传的撒
liubx
2020-09-04 17:51:21 +08:00
@nutting 商品多的话,sql 就会很长,这样不影响效率吗?
pushback
2020-09-04 17:52:08 +08:00
create table (user) - (user_goods) - (goods)
select g.*
from
user_goods ug
left join goods g on ug.goods_id = g.id
where
ug.user_id = ?
liubx
2020-09-04 17:54:15 +08:00
@zzw252 权限是在后端获取的。跟前端没关系的
liubx
2020-09-04 17:54:51 +08:00
@pushback 嗯,用 join 的话,sql 会短些。
liubx
2020-09-04 17:55:17 +08:00
@locoz 这样前端会砍死我的
liubx
2020-09-04 17:55:50 +08:00
@gaius 还没有用上 es,现在就 sql 查了
Orangutan
2020-09-04 17:57:57 +08:00
楼主没有说清楚效率低具体是低在哪里? 瓶颈在哪里?
如果是查询慢,同楼上,一般索引,sql 优化下,如果还是解决不了,可以将用户和相关品牌权限存入缓存. 直接从缓存拿到关系直接单表 in 查询,前提注意缓存更新维护
liubx
2020-09-04 17:59:52 +08:00
@Orangutan 现在效率还行。主要是担心,以后商品多了,sql 就会非常长,这样会不会导致 sql 查询慢
redtea
2020-09-04 18:03:08 +08:00
一个品牌一个库
vencent00
2020-09-04 18:04:52 +08:00
用户组不是太多的话把用户组对应的商品 id 存 redis,查询慢的话就上 es 吧,除了价格都走 es 查。
liubx
2020-09-04 18:09:49 +08:00
@vencent00 嗯,之后会上 es 。现在害得用 mysql
Orangutan
2020-09-04 18:10:53 +08:00
@liubx 具体情况具体分析吧,有精力的话可以搞点测试数据模拟一下
liubx
2020-09-04 18:14:57 +08:00
@Orangutan 嗯,多谢。试试看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/704279

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX