Browse Source

feat(limit-purchase): 更新限购规则保存逻辑并添加默认规则处理

- 在规则保存和更新时启用事件触发
- 添加模型注解以支持方法提示
- 实现默认规则唯一性逻辑,确保只有一个默认规则
- 优化控制器代码结构,提高可读性
runphp 3 tháng trước cách đây
mục cha
commit
8561512fa5

+ 3 - 3
src/Controller/Admin/RuleController.php

@@ -11,7 +11,6 @@ use function SixShop\Core\success_response;
 
 class RuleController
 {
-
     /**
      * 规则列表
      */
@@ -31,7 +30,7 @@ class RuleController
             'name/s',
             'regions/a',
         ]);
-        return success_response($limitPurchaseRuleEntity->save($data));
+        return success_response($limitPurchaseRuleEntity->withEvent(true)->save(data:$data));
     }
     public function update(int $id, Request $request, LimitPurchaseRuleEntity $limitPurchaseRuleEntity): Response
     {
@@ -41,7 +40,8 @@ class RuleController
             'name/s',
             'regions/a',
         ]);
-        return success_response($limitPurchaseRuleEntity->update($data, ['id' => $id]));
+        $data['id'] = $id;
+        return success_response($limitPurchaseRuleEntity->withEvent(true)->update(data:$data));
     }
 
     public function delete(int $id, LimitPurchaseRuleEntity $limitPurchaseRuleEntity)

+ 2 - 0
src/Entity/LimitPurchaseRuleEntity.php

@@ -4,10 +4,12 @@ declare(strict_types=1);
 namespace SixShop\LimitPurchase\Entity;
 
 use SixShop\Core\Entity\BaseEntity;
+use SixShop\LimitPurchase\Model\LimitPurchaseRuleModel;
 
 /**
  * 限购规则实体类
  * 用于管理商品限购规则
+ * @mixin LimitPurchaseRuleModel
  */
 class LimitPurchaseRuleEntity extends BaseEntity
 {

+ 9 - 0
src/Model/LimitPurchaseRuleModel.php

@@ -35,4 +35,13 @@ class LimitPurchaseRuleModel extends Model
             ]
         ];
     }
+
+    public function onAfterWrite(self $model)
+    {
+        if ($model->is_default) {
+            $model->where('id', '<>', $model->id)
+                ->where('is_default', 1)
+                ->update(['is_default' => 0]);
+        }
+    }
 }