Răsfoiți Sursa

Merge branch 'redesign‌-260706' into dev

shizhongqi 2 ore în urmă
părinte
comite
3e0fbc2cd5

+ 2 - 0
app-hd/controllers/HomePageConfigController.php

@@ -193,6 +193,7 @@ class HomePageConfigController extends BaseController
         $form->validateForm();
         HomePageModuleClass::saveSeckill(
             $this->mainId,
+            $this->shopId,
             $form->getBasePayload(),
             $form->getGoods(),
             $form->getEnabled()
@@ -214,6 +215,7 @@ class HomePageConfigController extends BaseController
         $form->validateForm();
         HomePageModuleClass::saveGroupBuy(
             $this->mainId,
+            $this->shopId,
             $form->getBasePayload(),
             $form->getGoods(),
             $form->getEnabled()

+ 1 - 1
app-hd/controllers/UseCaseController.php

@@ -10,7 +10,7 @@ class UseCaseController extends BaseController
     public function actionAdd() {
         $post = Yii::$app->request->post(); $name = trim($post['useCaseName'] ?? '');
         if ($name === '') util::fail('请输入使用场景名称');
-        $item = UseCaseClass::addUseCase(['mainId'=>$this->mainId,'sjId'=>$this->sjId,'useCaseName'=>$name,'inTurn'=>(int)($post['inTurn']??0),'status'=>(int)($post['status']??1),'delStatus'=>0]);
+        $item = UseCaseClass::addUseCase(['mainId'=>$this->mainId,'shopId'=>$this->shopId,'sjId'=>$this->sjId,'useCaseName'=>$name,'inTurn'=>(int)($post['inTurn']??0),'status'=>(int)($post['status']??1),'delStatus'=>0]);
         util::success(['id'=>$item->id]);
     }
     public function actionUpdate() {

+ 2 - 0
app-mall/controllers/GroupBuyController.php

@@ -200,6 +200,7 @@ class GroupBuyController extends BaseController
             GroupBuyMemberClass::bindOrderMember(
                 $groupBuyId,
                 $mainId,
+                intval($this->shopId),
                 $customId,
                 intval($order->id),
                 strval($order->orderSn),
@@ -280,6 +281,7 @@ class GroupBuyController extends BaseController
             GroupBuyMemberClass::bindOrderMember(
                 $groupBuyId,
                 $mainId,
+                intval($this->shopId),
                 $customId,
                 intval($order->id),
                 strval($order->orderSn),

+ 9 - 4
biz-hd/groupBuy/classes/GroupBuyActivityClass.php

@@ -62,14 +62,16 @@ class GroupBuyActivityClass extends BaseClass
      * 保存团购配置:按时间重叠复用/新建活动批次,商品按关键字段变化新建版本
      *
      * @param int $mainId
+     * @param int $shopId
      * @param array $base
      * @param array $goods
      * @param int $enabled
      * @return bool
      */
-    public static function saveGroupBuy($mainId, $base, $goods = [], $enabled = 0)
+    public static function saveGroupBuy($mainId, $shopId, $base, $goods = [], $enabled = 0)
     {
         $mainId = intval($mainId);
+        $shopId = intval($shopId);
         if ($mainId <= 0) {
             util::fail('无效门店');
         }
@@ -78,7 +80,7 @@ class GroupBuyActivityClass extends BaseClass
         }
 
         $validatedGoods = self::validateGroupBuyGoods($mainId, is_array($goods) ? $goods : []);
-        $activity = self::resolveOrCreateActivity($mainId, $base);
+        $activity = self::resolveOrCreateActivity($mainId, $shopId, $base);
         $activityId = intval($activity['id'] ?? ($activity->id ?? 0));
         if ($activityId <= 0) {
             util::fail('活动保存失败');
@@ -97,7 +99,7 @@ class GroupBuyActivityClass extends BaseClass
             'delStatus' => 0,
         ]);
 
-        GroupBuyGoodsClass::syncActivityGoods($mainId, $activityId, $validatedGoods);
+        GroupBuyGoodsClass::syncActivityGoods($mainId, $shopId, $activityId, $validatedGoods);
         HomePageConfigClass::updateModuleEnabled($mainId, 'groupBuy', $enabled);
 
         // 同步写 Redis,保证旧读路径与预览链路仍可用
@@ -183,12 +185,14 @@ class GroupBuyActivityClass extends BaseClass
      * 按起止时间重叠复用历史活动,否则新建批次
      *
      * @param int $mainId
+     * @param int $shopId
      * @param array $base
      * @return array|\yii\db\ActiveRecord
      */
-    public static function resolveOrCreateActivity($mainId, $base)
+    public static function resolveOrCreateActivity($mainId, $shopId, $base)
     {
         $mainId = intval($mainId);
+        $shopId = intval($shopId);
         $startTime = intval($base['startTime'] ?? 0);
         $endTime = intval($base['endTime'] ?? 0);
         if ($startTime <= 0 || $endTime <= $startTime) {
@@ -211,6 +215,7 @@ class GroupBuyActivityClass extends BaseClass
 
         return self::add([
             'mainId' => $mainId,
+            'shopId' => $shopId,
             'title' => strval($base['title'] ?? ''),
             'subtitle' => strval($base['subtitle'] ?? ''),
             'showCountdown' => !empty($base['showCountdown']) ? 1 : 0,

+ 4 - 1
biz-hd/groupBuy/classes/GroupBuyGoodsClass.php

@@ -17,13 +17,15 @@ class GroupBuyGoodsClass extends BaseClass
      * 同步活动商品:有 id 且关键字段未变则更新;关键字段变化或新商品则新建版本并隐藏旧版
      *
      * @param int $mainId
+     * @param int $shopId
      * @param int $activityId
      * @param array $goodsList validateGroupBuyGoods 的结果
      * @return bool
      */
-    public static function syncActivityGoods($mainId, $activityId, $goodsList)
+    public static function syncActivityGoods($mainId, $shopId, $activityId, $goodsList)
     {
         $mainId = intval($mainId);
+        $shopId = intval($shopId);
         $activityId = intval($activityId);
         $keepIds = [];
 
@@ -35,6 +37,7 @@ class GroupBuyGoodsClass extends BaseClass
             $payload = [
                 'activityId' => $activityId,
                 'mainId' => $mainId,
+                'shopId' => $shopId,
                 'goodsId' => $goodsId,
                 'specName' => strval($item['specName'] ?? ''),
                 'price' => floatval($item['price'] ?? 0),

+ 3 - 1
biz-hd/groupBuy/classes/GroupBuyMemberClass.php

@@ -24,17 +24,19 @@ class GroupBuyMemberClass extends BaseClass
      *
      * @param int $groupBuyId
      * @param int $mainId
+     * @param int $shopId
      * @param int $customId
      * @param int $orderId
      * @param string $orderSn
      * @param int $role
      * @return \yii\db\ActiveRecord
      */
-    public static function bindOrderMember($groupBuyId, $mainId, $customId, $orderId, $orderSn, $role)
+    public static function bindOrderMember($groupBuyId, $mainId, $shopId, $customId, $orderId, $orderSn, $role)
     {
         return self::add([
             'groupBuyId' => intval($groupBuyId),
             'mainId' => intval($mainId),
+            'shopId' => intval($shopId),
             'orderId' => intval($orderId),
             'orderSn' => strval($orderSn),
             'customId' => intval($customId),

+ 6 - 4
biz-hd/homePageConfig/classes/HomePageModuleClass.php

@@ -180,14 +180,15 @@ class HomePageModuleClass
      * 保存秒杀专区:落 MySQL 活动批次/商品版本,并同步 Redis
      *
      * @param int $mainId
+     * @param int $shopId
      * @param array $base 已校验的活动基础字段
      * @param array $goods 已校验的商品列表(形态)
      * @param int $enabled
      * @return bool
      */
-    public static function saveSeckill($mainId, $base, $goods = [], $enabled = 0)
+    public static function saveSeckill($mainId, $shopId, $base, $goods = [], $enabled = 0)
     {
-        return \bizHd\seckill\classes\SeckillActivityClass::saveSeckill($mainId, $base, $goods, $enabled);
+        return \bizHd\seckill\classes\SeckillActivityClass::saveSeckill($mainId, $shopId, $base, $goods, $enabled);
     }
 
     /**
@@ -453,14 +454,15 @@ class HomePageModuleClass
      * 保存团购专区:落 MySQL 活动批次/商品版本,并同步 Redis
      *
      * @param int $mainId
+     * @param int $shopId
      * @param array $base 已校验的活动基础字段
      * @param array $goods 已校验的商品列表(形态)
      * @param int $enabled
      * @return bool
      */
-    public static function saveGroupBuy($mainId, $base, $goods = [], $enabled = 0)
+    public static function saveGroupBuy($mainId, $shopId, $base, $goods = [], $enabled = 0)
     {
-        return \bizHd\groupBuy\classes\GroupBuyActivityClass::saveGroupBuy($mainId, $base, $goods, $enabled);
+        return \bizHd\groupBuy\classes\GroupBuyActivityClass::saveGroupBuy($mainId, $shopId, $base, $goods, $enabled);
     }
 
     /**

+ 9 - 4
biz-hd/seckill/classes/SeckillActivityClass.php

@@ -62,14 +62,16 @@ class SeckillActivityClass extends BaseClass
      * 保存秒杀配置:按时间重叠复用/新建活动批次,商品按关键字段变化新建版本
      *
      * @param int $mainId
+     * @param int $shopId
      * @param array $base
      * @param array $goods
      * @param int $enabled
      * @return bool
      */
-    public static function saveSeckill($mainId, $base, $goods = [], $enabled = 0)
+    public static function saveSeckill($mainId, $shopId, $base, $goods = [], $enabled = 0)
     {
         $mainId = intval($mainId);
+        $shopId = intval($shopId);
         if ($mainId <= 0) {
             util::fail('无效门店');
         }
@@ -78,7 +80,7 @@ class SeckillActivityClass extends BaseClass
         }
 
         $validatedGoods = self::validateSeckillGoods($mainId, is_array($goods) ? $goods : []);
-        $activity = self::resolveOrCreateActivity($mainId, $base);
+        $activity = self::resolveOrCreateActivity($mainId, $shopId, $base);
         $activityId = intval($activity['id'] ?? ($activity->id ?? 0));
         if ($activityId <= 0) {
             util::fail('活动保存失败');
@@ -97,7 +99,7 @@ class SeckillActivityClass extends BaseClass
             'delStatus' => 0,
         ]);
 
-        SeckillGoodsClass::syncActivityGoods($mainId, $activityId, $validatedGoods);
+        SeckillGoodsClass::syncActivityGoods($mainId, $shopId, $activityId, $validatedGoods);
         HomePageConfigClass::updateModuleEnabled($mainId, 'seckill', $enabled);
 
         // 同步写 Redis,保证旧读路径与预览链路仍可用
@@ -177,12 +179,14 @@ class SeckillActivityClass extends BaseClass
      * 按起止时间重叠复用历史活动,否则新建批次
      *
      * @param int $mainId
+     * @param int $shopId
      * @param array $base
      * @return array|\yii\db\ActiveRecord
      */
-    public static function resolveOrCreateActivity($mainId, $base)
+    public static function resolveOrCreateActivity($mainId, $shopId, $base)
     {
         $mainId = intval($mainId);
+        $shopId = intval($shopId);
         $startTime = intval($base['startTime'] ?? 0);
         $endTime = intval($base['endTime'] ?? 0);
         if ($startTime <= 0 || $endTime <= $startTime) {
@@ -205,6 +209,7 @@ class SeckillActivityClass extends BaseClass
 
         return self::add([
             'mainId' => $mainId,
+            'shopId' => $shopId,
             'title' => strval($base['title'] ?? ''),
             'subtitle' => strval($base['subtitle'] ?? ''),
             'showCountdown' => !empty($base['showCountdown']) ? 1 : 0,

+ 4 - 1
biz-hd/seckill/classes/SeckillGoodsClass.php

@@ -17,13 +17,15 @@ class SeckillGoodsClass extends BaseClass
      * 同步活动商品:有 id 且关键字段未变则更新;关键字段变化或新商品则新建版本并隐藏旧版
      *
      * @param int $mainId
+     * @param int $shopId
      * @param int $activityId
      * @param array $goodsList validateSeckillGoods 的结果
      * @return bool
      */
-    public static function syncActivityGoods($mainId, $activityId, $goodsList)
+    public static function syncActivityGoods($mainId, $shopId, $activityId, $goodsList)
     {
         $mainId = intval($mainId);
+        $shopId = intval($shopId);
         $activityId = intval($activityId);
         $keepIds = [];
 
@@ -35,6 +37,7 @@ class SeckillGoodsClass extends BaseClass
             $payload = [
                 'activityId' => $activityId,
                 'mainId' => $mainId,
+                'shopId' => $shopId,
                 'goodsId' => $goodsId,
                 'specName' => strval($item['specName'] ?? ''),
                 'price' => floatval($item['price'] ?? 0),

+ 2 - 1
sql/20260714_goods_use_case.sql

@@ -1,6 +1,7 @@
 CREATE TABLE `xhGoodsUseCase` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `mainId` int(11) NOT NULL DEFAULT 0 COMMENT '中央id',
+  `shopId` int(11) NOT NULL DEFAULT 0 COMMENT '门店id',
   `sjId` int(11) NOT NULL DEFAULT 0 COMMENT '商家id',
   `useCaseName` varchar(50) NOT NULL DEFAULT '' COMMENT '场景名称',
   `inTurn` int(11) NOT NULL DEFAULT 0 COMMENT '排序',
@@ -30,4 +31,4 @@ ALTER TABLE xhHd
 
 
 ALTER TABLE xhCustom
-  add COLUMN `homeRule` tinyint(4) NOT NULL DEFAULT '0' COMMENT '上门遵循规则 0遵循总设置 1遵循自定义' after `updateTime`;
+  add COLUMN `homeRule` tinyint(4) NOT NULL DEFAULT '0' COMMENT '上门遵循规则 0遵循总设置 1遵循自定义' after `updateTime`;

+ 3 - 0
sql/20260723_group_buy.sql

@@ -4,6 +4,7 @@
 CREATE TABLE IF NOT EXISTS `xhGroupBuyActivity` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `mainId` int(11) NOT NULL DEFAULT 0 COMMENT '中央id',
+  `shopId` int(11) NOT NULL DEFAULT 0 COMMENT '门店id',
   `title` varchar(32) NOT NULL DEFAULT '' COMMENT '活动标题',
   `subtitle` varchar(64) NOT NULL DEFAULT '' COMMENT '活动副标题',
   `showCountdown` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否显示倒计时',
@@ -24,6 +25,7 @@ CREATE TABLE IF NOT EXISTS `xhGroupBuyGoods` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `activityId` int(11) NOT NULL DEFAULT 0 COMMENT '活动批次id',
   `mainId` int(11) NOT NULL DEFAULT 0 COMMENT '中央id',
+  `shopId` int(11) NOT NULL DEFAULT 0 COMMENT '门店id',
   `goodsId` int(11) NOT NULL DEFAULT 0 COMMENT '商品id(可含规格子商品)',
   `specName` varchar(64) NOT NULL DEFAULT '' COMMENT '规格名',
   `price` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '团购价',
@@ -76,6 +78,7 @@ CREATE TABLE IF NOT EXISTS `xhGroupBuyMember` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `groupBuyId` int(11) NOT NULL DEFAULT 0 COMMENT '拼团单id',
   `mainId` int(11) NOT NULL DEFAULT 0 COMMENT '中央id',
+  `shopId` int(11) NOT NULL DEFAULT 0 COMMENT '门店id',
   `orderId` int(11) NOT NULL DEFAULT 0 COMMENT '订单id',
   `orderSn` varchar(64) NOT NULL DEFAULT '' COMMENT '订单号',
   `customId` int(11) NOT NULL DEFAULT 0 COMMENT '客户id',

+ 2 - 0
sql/20260730_seckill.sql

@@ -4,6 +4,7 @@
 CREATE TABLE IF NOT EXISTS `xhSeckillActivity` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `mainId` int(11) NOT NULL DEFAULT 0 COMMENT '中央id',
+  `shopId` int(11) NOT NULL DEFAULT 0 COMMENT '门店id',
   `title` varchar(32) NOT NULL DEFAULT '' COMMENT '活动标题',
   `subtitle` varchar(64) NOT NULL DEFAULT '' COMMENT '活动副标题',
   `showCountdown` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否显示倒计时',
@@ -24,6 +25,7 @@ CREATE TABLE IF NOT EXISTS `xhSeckillGoods` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `activityId` int(11) NOT NULL DEFAULT 0 COMMENT '活动批次id',
   `mainId` int(11) NOT NULL DEFAULT 0 COMMENT '中央id',
+  `shopId` int(11) NOT NULL DEFAULT 0 COMMENT '门店id',
   `goodsId` int(11) NOT NULL DEFAULT 0 COMMENT '商品id(可含规格子商品)',
   `specName` varchar(64) NOT NULL DEFAULT '' COMMENT '规格名',
   `price` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '秒杀价',