老哥们,有一个关于用户结算时购物车可用优惠券筛选的需求,求助!

Gaussen:目前创建优惠券有三种形式:

1.全部商品可用(这种最简单)。

2.部分商品可用 /(商品分门店商品和网店商品,因此包含 [网店商品全部可用+部分门店商品可用] , [网店商品部分可用+全部门店商品可用] , [网店商品部分可用+全部门店部分可用] 这几种组合)。

3.部分商品不可用(商品分门店商品和网店商品,组合同上)。

当前的优惠券设计是一个商家的优惠券主表,存储主要数据,然后另外一个和商品的关联表,主表里会记录券的类型,如果是全部商品可用,那么关联表里就无数据,如果是部分可用 /不可用,那么就会在关联表里记录 id,如果是网店 /门店全部可用,那么会记录一个 id 等于 0 的。

现在的问题是,按照这种设计,在用户进行结算的时候,查询优惠券的步骤非常繁杂,虽然实现是可以实现,但是很麻烦。

因此在做这部分的同事也有提议说要把所有的优惠券可用 /不可用的商品 id 都关联到关联表,即:如果商家 A 添加了一个全部商品可用的优惠券,就将他所有的商品都关联到关联表,部分同理。说这种他就很容易搜索,然而这种会造成巨大的冗余数据,而且每次商家新增商品的时候,都要对所有的优惠券进行筛选,然后新增关联数据,商家多起来,商品多起来,那数据量简直会爆炸,必然要分表,但优惠券本身还有失效过期等情况,后续处理也很麻烦。

想问一下老哥们,对于这种需求,有没有更好一些的设计方法?因为是全新功能,所以没有历史包袱。

kop1989:我们的做法是反过来,商品中记录可用的券类型。
然后券本身记录可用门店以及互斥关系。

vvmint233:感觉应该先筛选用户所有能用的优惠券然后根据优惠券的条件做过滤, 如果门店数量有限在捞库的时候根据可用的门店 id 把一些优惠券过滤掉, 再根据券本身的属性过滤掉超过时间的, 这样用户可用的应该不会很多, 剩下的主要就是优惠券的不适用商品, 你得根据商品的属性做优惠券的过滤, 表就一个商品和优惠券的. 我也没做过类似的但感觉这样会比较简单清楚

owenliang:我感觉你应该拿着购物车中的商品,去查询关联了哪些卷,这个计算规模是可控的。

如果你想拿着用户手中的优惠券,去查能应用到哪些商品上,这个计算规模不是可控的哦。

用户上传的敏感数据,需要加密吗?

lithium148:登录密码肯定是要加密的,但是敏感数据呢? 比如便签软件的便签内容,聊天软件的聊天内容,存储到服务器上需要加密吗? 实际各大公司有加密没有?应该在服务器端加密还是客户端加密? 谢谢!

想买个安卓当副机,求推荐

edinina:要求 5g 和高刷,拍照无所谓,存储也不用特别大,求推荐推荐,预算六千以内吧,华为小米除外,最近在看三星 vivo oppo 一加这几个牌子,但实在看不明白

减少查询次数的骚操作

lithium148:假设我有一个记录,用来管理某元件开关的状态,{id:1;开关:ture;其他记录:etc…}。 所有开关的初始状态均为开,随机 X 分钟后变为关状态( X 由用户设定,可以读取到),关闭后永远不会开启。 现在我把 10000 个这样的记录存在数据库的一张表里。我的程序需要每分钟遍历 1 次所有的记录,找出开关是开的。问题是即使只有最后 …

云主机可以做哪些好玩的东西?

ipadpro4k:做个网页送女票 opengps:最基本的开发辅助:SVN,GIT,文件存储最普通的成果:个人博客,测试站点更无聊的用法:挂 QQ,登微信比较稳妥的用途:用于站点监控,端口可用性检测比较黑暗的用法:爆破扫描还有很多。。。

广州两年经验的 Java , 9k 这个价是不是很少

codeyou:10k 都拿不到,太难了 wangkun025:吃饭足够、买房太少。经验不经验的,跟水平也关系不大。我倒是很多经验,仍旧是菜鸟。 yeqizhang:看你能力学历,以及什么公司了。广州大多数公司都很普通 cmdOptionKana:广州租房买房便宜啊,去北上杭深可能可以拿到更高工资,但竞争大,生活成本高。