欢迎光临
我们一直在努力

智慧盲盒系统开发分享和盲盒抽奖部分源码

智慧盲盒系统刚刚上线了,我以开发者的角度来聊一下盲盒设计开发的架构设计。盲盒系统从系统开发来分的有以下几个模块:商城模块;盲盒模块;会员分销模块;订单模块;售后服务;支付模块

智慧盲盒系统从商业底层来说也是基于商城的模式玩法创新,系统上产品SKU数据成千上万,分为不同的产品类别区,也同事氛围不同的盲盒类别区,在程序开发模式中我们要考虑到如何通过趣味的玩法模式,引流用户注册和参加盲盒游戏模式;欢迎大家一起技术交流:李铁牛15889726201

我在开发盲盒系统中,首要列举了一下几个要解决的技术点:

1.商城产品SKU快速导入
2.数据量级的技术处理
3.数据访问效率问题
4.支付风控合理解决
5.系统黑客攻击问题

智慧盲盒系统开发分享和盲盒抽奖部分源码

 

1.商城产品SKU快速导入

我们技术专门开发了一套SKU快速获取的程序,通过程序对接厂家的产品数据库,一键批量获取厂家数据的产品到我们的产品仓库中,产品仓库的SKU氛围上架中,已下架,已删除,未审核的产品区,并且详细标注每个产品的导入来源和实时的产品库存,图片,产品介绍,库存信息等数据。

2.数据量级的技术处理

SKU产品数据估计在千万的数量,普通的mysql数据存储模式在查询加载相对较慢,系统SKU已考虑了分表分库模式,不同的类别SKU程序创建数据表特例来存储

3.数据访问效率问题
系统缓存基于Redis,做了大量的数据键值对的读写设计,Redis缓存服务器独立部署,并做了Redis镜像同步策略,来防止单台缓存服务器导致的雪崩效应

4.支付风控合理解决

新上线的系统,在支付宝支付和微信支付的正常风控策略内,可能会自动触发支付限制,这种限制是正常的风控限制,就像你的个人账户每个月有大批量的资金出入,也会触发最好限额或者风控限制,这种个人账户限额是需要银行卡个人去申请解禁或者提额,在对公在线支付的系统里也会有这样的支付情况,我们的开发团队对相同的支付额度做了随机尾数处理,例如100的支付,系统对用户做随机优惠策略,这样杜绝了雷同单笔的支付数据;

5.系统黑客攻击问题

这里也是重点,系统在部署上线之初我们就架设了高防服务器策略,监控测序7*24小时预付海内外的DDS,CC攻击,系统防御方面在上线前就花费了抗攻击的服务器策略设计,虽然这些都是硬性的系统资金投入,但是维稳黑客攻击是运营系统的重中之中,一旦系统出现卡顿,服务器拒绝响应那么整个电商盲盒运营将被波及,所以,个人一直在做系统开发的过程中,非常注意系统防黑攻击和数据备份策略设计。

分享一段盲盒抽奖核心代码

public static function decBoxStock($num, $Combinationid, $unique) { $product_id = self::where('id', $CombinationId)->value('product_id'); if ($unique) { $res = false !== StoreProductAttrValue::decProductAttrStock($CombinationId, $unique, $num, 4); $res = $res && self::where('id', $CombinationId)->dec('stock', $num)->dec('quota', $num)->inc('sales', $num)->update(); $sku = StoreProductAttrValue::where('product_id', $CombinationId)->where('unique', $unique)->where('type', 4)->value('suk'); $res = $res && StoreProductAttrValue::where('product_id', $product_id)->where('suk', $sku)->where('type', 0)->dec('stock', $num)->inc('sales', $num)->update(); } else { $res = false !== self::where('id', $CombinationId)->dec('stock', $num)->inc('sales', $num)->update(); } $res = $res && StoreProduct::where('id', $product_id)->dec('stock', $num)->inc('sales', $num)->update(); return $res; } public static function incBoxStock($num, $CombinationId, $unique = '') { $combination = self::where('id', $CombinationId)->field(['product_id', 'stock', 'sales', 'quota'])->find(); if (!$combination) return true; if ($combination->sales > 0) $combination->sales = bcsub($combination->sales, $num, 0); if ($combination->sales < 0) $combination->sales = 0; $res = true; if ($unique) { $res = false !== StoreProductAttrValue::incProductAttrStock($CombinationId, $unique, $num, 4); $sku = StoreProductAttrValue::where('product_id', $CombinationId)->where('unique', $unique)->where('type', 4)->value('suk'); $res = $res && StoreProductAttrValue::where('product_id', $combination['product_id'])->where('suk', $sku)->where('type', 0)->inc('stock', $num)->dec('sales', $num)->update(); } $combination->stock = bcadd($combination->stock, $num, 0); $combination->quota = bcadd($combination->quota, $num, 0); $res = $res && $combination->save() && StoreProduct::where('id', $combination['product_id'])->inc('stock', $num)->dec('sales', $num)->update(); return $res; } 

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《智慧盲盒系统开发分享和盲盒抽奖部分源码》
文章链接:https://www.456zj.com/22558.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址