Bladeren bron

feat(limit-purchase): add product purchase limit extension

runphp 3 maanden geleden
commit
a9963a58fd
3 gewijzigde bestanden met toevoegingen van 150 en 0 verwijderingen
  1. 85 0
      README.md
  2. 32 0
      composer.json
  3. 33 0
      src/Extension.php

+ 85 - 0
README.md

@@ -0,0 +1,85 @@
+# SixShop 商品限购扩展
+
+本扩展为 SixShop 系统提供商品限购功能,通过模板化的管理方式,让商家能够灵活地设置商品购买限制。
+
+## 功能概述
+
+该功能的核心逻辑是:
+1. 商家首先创建限购规则模板
+2. 在商品页面直接选择已创建的限购模板
+3. 系统根据模板规则对用户购买行为进行限制
+
+## 核心功能
+
+### 1. 限购模板管理
+
+#### 创建限购模板
+- 模板名称(如:"每日限购1件"、"北京地区限购3件")
+- 适用地区范围(全国、省、市、区县级别)
+- 限购数量设置
+- 时间周期设定(每日、每周、每月等)
+- 超限提示文案
+
+#### 模板列表管理
+- 查看所有已创建的限购模板
+- 编辑现有模板
+- 删除不需要的模板
+
+### 2. 商品限购设置
+
+在商品编辑页面集成限购设置功能:
+- 下拉选择框展示所有可用的限购模板
+- 实时预览选中模板的限购规则
+- 一键应用模板到当前商品
+
+### 3. 购买验证机制
+
+- 用户下单时自动检测商品关联的限购模板
+- 根据用户IP或收货地址判断所属地区
+- 计算用户在当前周期内的已购数量
+- 超出限购时阻止订单提交并显示提示信息
+
+## 使用流程
+
+### 后台管理流程
+
+1. **创建模板**
+   - 进入"营销管理" → "限购模板"
+   - 点击"新增模板"
+   - 填写模板信息和规则
+   - 保存模板
+
+2. **商品应用模板**
+   - 进入商品管理,编辑需要限购的商品
+   - 在"限购设置"区域找到模板选择器
+   - 从下拉列表中选择合适的模板
+   - 保存商品信息
+
+### 用户购买流程
+
+1. 用户访问商品详情页(系统根据用户位置匹配限购规则)
+2. 用户选择购买数量
+3. 提交订单时系统验证是否超出限购
+4. 如未超限则正常下单,超限则提示用户
+
+## 技术架构
+
+### 数据模型
+
+- `LimitTemplate` - 限购模板实体
+- `ProductLimit` - 商品与模板关联关系
+- `PurchaseRecord` - 用户购买记录
+
+### 核心服务
+
+- `LimitTemplateService` - 模板管理服务
+- `ProductLimitService` - 商品限购服务
+- `PurchaseValidationService` - 购买验证服务
+
+## 安装说明
+
+```bash
+composer require six-shop/limit-purchase
+```
+
+安装后在 SixShop 后台激活扩展即可使用相关功能。

+ 32 - 0
composer.json

@@ -0,0 +1,32 @@
+{
+  "name": "six-shop/limit-purchase",
+  "description": "商品限购功能扩展",
+  "type": "sixshop-extension",
+  "keywords": [
+    "sixshop",
+    "limit-purchase",
+    "thinkphp"
+  ],
+  "require": {
+    "php": ">=8.3",
+    "six-shop/system": ">=0.3.32 <1.0"
+  },
+  "authors": [
+    {
+      "name": "hui he",
+      "email": "runphp@qq.com"
+    }
+  ],
+  "license": "MIT",
+  "autoload": {
+    "psr-4": {
+      "SixShop\\LimitPurchase\\": "src"
+    }
+  },
+  "extra": {
+    "sixshop": {
+      "id": "limit-purchase",
+      "class": "SixShop\\LimitPurchase\\Extension"
+    }
+  }
+}

+ 33 - 0
src/Extension.php

@@ -0,0 +1,33 @@
+<?php
+declare(strict_types=1);
+
+namespace SixShop\LimitPurchase;
+
+use SixShop\Core\ExtensionAbstract;
+
+class Extension extends ExtensionAbstract
+{
+    public const string EXTENSION_ID = 'limit-purchase';
+
+    #[\Override]
+    public function getHooks(): array
+    {
+        return [
+            // 添加限购相关的钩子类
+        ];
+    }
+
+    #[\Override]
+    protected function getBaseDir(): string
+    {
+        return dirname(__DIR__);
+    }
+
+    #[\Override]
+    public function getCronJobs(): array
+    {
+        return [
+            // 添加限购相关的定时任务
+        ];
+    }
+}