项目简介
客户是一所学校,同时也是天然宝石原创饰品品牌:经营零售门店、线上销售、咨询、工作坊、课程和内容。目录中仅一个类别就有数百件独一无二的饰品。客户需要一个网站把这些业务整合起来,绝不重复出售已售出的商品,并引导访客从文章走向购买。
技术栈
任务
把饰品网店、咨询和工作坊预约、课程销售与内容整合到一个网站。支持在线支付,并显示来自 1C 的独一无二商品的实时库存。
限制条件
网站运行在普通的虚拟主机上(PHP 7.4、Apache、通过 SSH 部署,没有容器和队列),代码在这些限制下编写。每件商品只有一件,库存记录在仅能通过 HTTP 请求访问的 1C 中:如果 1C 没有响应,商店不能盲目销售。课程在外部平台销售,需要把访客连同来源标签一起转过去。付款需开具符合俄罗斯财税法(54-ФЗ)的收据。
解决方案
我们基于 Yii2 CMS 搭建了网店、日程、个人账户和文章库。目录包含类别、按矿物搜索以及“你为什么需要这块石头”筛选,该筛选根据 1C 中的商品描述生成。购物车和支付通过 Robokassa 和 YooKassa 完成并开具收据。库存每分钟从 1C 更新一次,付款时再次核对;如果 1C 不可用,店铺页面会显示暂时关闭。网站从外部云端下载商品照片,并以多种尺寸保存。我们还增加了按日程预约咨询和工作坊、带累计折扣和通知的个人账户、文章库以及按角色划分权限的管理后台。
难点
与 1C 交换数据的第一版在每次浏览类别时都会运行繁重的导入。我们将其替换为仅同步数量的轻量同步,并防止并行运行。新模式通过功能开关启用,可以迅速回滚。
后续发展
平台随业务一同成长:不断增加新的落地页、针对搜索查询的精选集和 SEO 工具。
成果
我们上线了统一平台:带目录和筛选的网店、咨询和工作坊预约、带累计折扣的个人账户、文章库以及管理后台。库存每分钟从 1C 更新一次,已售出的商品无法再次付款。




