Просмотр исходного кода

Merge branch 'redesign‌-260706' into dev

ouyang 1 день назад
Родитель
Сommit
4a6d236d53

+ 2 - 47
app-hd/controllers/MemberLevelController.php

@@ -2,9 +2,7 @@
 
 namespace hd\controllers;
 
-use bizHd\custom\classes\CustomClass as HdCustomClass;
 use bizHd\member\classes\MemberLevelClass;
-use common\components\dict;
 use common\components\util;
 use Yii;
 
@@ -12,56 +10,13 @@ class MemberLevelController extends BaseController
 {
     public $guestAccess = [];
 
-    //初始化数据 ssh 20250831
+    //初始化数据 ssh 20250831;等级列表与 mall 权益页同源(MemberLevelClass::getShopMemberList)
     public function actionGetInitData()
     {
         $shop = $this->shop;
         $reduceDay = $shop->reduceDay ?? 30;
         $memberLevelSet = $shop->memberLevelSet ?? 0;
-        $shopId = $this->shopId;
-        if ($memberLevelSet == 1) {
-            $list = MemberLevelClass::getAllByCondition(['shopId' => $shopId], 'level ASC', '*', null);
-            $member = [];
-            if (!empty($list)) {
-                foreach ($list as $k => $val) {
-                    $name = $val['name'] ?? '会员';
-                    $levelSn = $val['levelSn'] ?? 'general';
-                    $level = $val['level'] ?? 1;
-                    $amount = $val['amount'] ?? 0;
-                    $amount = floatval($amount);
-                    $discount = floatval($val['discount'] ?? 10);
-                    $birthdayBenefit = trim($val['birthdayBenefit'] ?? '');
-                    $benefitDesc = trim($val['benefitDesc'] ?? '');
-                    $it = [
-                        'name' => $name,
-                        'levelSn' => $levelSn,
-                        'level' => $level,
-                        'member' => $level,
-                        'amount' => $amount,
-                        'discount' => $discount,
-                        'birthdayBenefit' => $birthdayBenefit,
-                        'benefitDesc' => $benefitDesc,
-                    ];
-                    $member[] = $it;
-                }
-            }
-        } else {
-            $member = dict::getDict('memberLevelMap');
-            foreach ($member as $k => $row) {
-                if (!isset($row['discount'])) {
-                    $member[$k]['discount'] = 10;
-                }
-                if (!isset($row['birthdayBenefit'])) {
-                    $member[$k]['birthdayBenefit'] = '';
-                }
-                if (!isset($row['benefitDesc'])) {
-                    $member[$k]['benefitDesc'] = '';
-                }
-                if (!isset($row['member'])) {
-                    $member[$k]['member'] = intval($row['level'] ?? ($k + 1));
-                }
-            }
-        }
+        $member = MemberLevelClass::getShopMemberList($shop);
         util::success(['member' => $member, 'reduceDay' => $reduceDay, 'memberLevelSet' => $memberLevelSet]);
     }
 

+ 11 - 5
app-mall/controllers/MerchantController.php

@@ -2,11 +2,10 @@
 
 namespace mall\controllers;
 
-use bizMall\merchant\services\MerchantExtendService;
+use bizHd\member\classes\MemberLevelClass;
 use bizMall\merchant\services\MerchantService;
 use bizMall\merchant\services\ShopService;
 use Yii;
-use yii\web\Controller;
 use common\components\util;
 
 class MerchantController extends BaseController
@@ -27,10 +26,17 @@ class MerchantController extends BaseController
 		util::success($sj);
 	}
 
-	//客户的会员等级 ssh 2020.1.2
+	/**
+	 * 客户会员等级列表(mall 权益页)
+	 * 读取花店后台「会员等级设置」同源数据(xhMemberLevel / 默认字典),不再用旧 gradeList
+	 */
 	public function actionUserGrade()
 	{
-		$list = MerchantExtendService::getGradeList($this->sjExtend->attributes, 'asc', false);
+		$shop = $this->shop;
+		if (empty($shop)) {
+			util::fail('请先选择门店');
+		}
+		$list = MemberLevelClass::getShopMemberList($shop);
 		util::success($list);
 	}
 	
@@ -44,4 +50,4 @@ class MerchantController extends BaseController
 		util::success(['date' => $date]);
 	}
 
-}
+}

+ 5 - 2
app-mall/controllers/OrderController.php

@@ -1492,12 +1492,15 @@ class OrderController extends BaseController
                 util::fail($psMethodError);
             }
 
-            $sendType = $post['sendType'] ?? 0;
-            if ($sendType != 1) {
+            // 商家配送(0)/跑腿(2)必填配送时间;到店自取(1)、物流(3)、快递(4)不强制(后两者由客服确认时效)
+            $sendType = intval($post['sendType'] ?? 0);
+            if (in_array($sendType, [0, 2], true)) {
                 if (empty($post['reachPeriod'])) {
                     util::fail('请选择配送时间哈');
                 }
                 $post['reachTime'] = strtotime($post['reachDate'] . ' ' . $post['reachPeriod']);
+            } elseif (!empty($post['reachPeriod'])) {
+                $post['reachTime'] = strtotime($post['reachDate'] . ' ' . $post['reachPeriod']);
             }
 
             $post['bigNum'] = $totalNum;

+ 4 - 6
app-ghs/controllers/MainInviteAdminController.php → app-pt/controllers/MainInviteAdminController.php

@@ -1,9 +1,9 @@
 <?php
 /**
- * ghs Web 门店邀请分佣管理
- * 基础分佣只读 dict;批发商独立比例与佣金明细分页/详情
+ * pt 平台后台 — 门店邀请分佣管理
+ * 复用 bizHd\shop\classes\MainInviteAdminClass;原 ghs Web 管理端迁入。
  */
-namespace ghs\controllers;
+namespace pt\controllers;
 
 use bizHd\shop\classes\MainInviteAdminClass;
 use common\components\util;
@@ -11,7 +11,6 @@ use Yii;
 
 class MainInviteAdminController extends BaseController
 {
-
     public $guestAccess = [];
 
     /**
@@ -80,7 +79,7 @@ class MainInviteAdminController extends BaseController
     }
 
     /**
-     * 佣金分成明细分页
+     * 佣金分成明细分页 / 导出
      */
     public function actionCommissionList()
     {
@@ -114,5 +113,4 @@ class MainInviteAdminController extends BaseController
             util::fail($e->getMessage());
         }
     }
-
 }

+ 1 - 1
app-pt/controllers/StaffController.php

@@ -43,4 +43,4 @@ class StaffController extends BaseController
         util::success($detail);
     }
 
-}
+}

+ 60 - 1
biz-hd/member/classes/MemberLevelClass.php

@@ -37,4 +37,63 @@ class MemberLevelClass extends BaseClass
         return true;
     }
 
-}
+    /**
+     * 获取门店会员等级展示列表(与 hd 后台「会员等级设置」同源)
+     * mall 权益页、hd 初始化接口共用,避免两套等级数据不一致
+     * @param object|array $shop 门店(含 id、mainId、memberLevelSet)
+     * @return array 按 level 升序的等级行
+     */
+    public static function getShopMemberList($shop)
+    {
+        $shopId = intval(is_array($shop) ? ($shop['id'] ?? 0) : ($shop->id ?? 0));
+        $mainId = intval(is_array($shop) ? ($shop['mainId'] ?? 0) : ($shop->mainId ?? 0));
+        $memberLevelSet = intval(is_array($shop) ? ($shop['memberLevelSet'] ?? 0) : ($shop->memberLevelSet ?? 0));
+
+        // memberLevelSet=1:已按门店自定义;否则用默认字典(与 MemberLevelController::actionGetInitData 一致)
+        if ($memberLevelSet == 1) {
+            $list = self::getAllByCondition(['shopId' => $shopId], 'level ASC', '*', null);
+            $member = [];
+            if (!empty($list)) {
+                foreach ($list as $val) {
+                    $member[] = self::formatMemberRow($val);
+                }
+            }
+            return $member;
+        }
+
+        $member = dict::getDict('memberLevelMap');
+        foreach ($member as $k => $row) {
+            $member[$k] = self::formatMemberRow($row);
+        }
+        return array_values($member);
+    }
+
+    /**
+     * 统一等级行字段,便于前台展示折扣/成长值/权益文案
+     * @param array|object $val 等级原始数据
+     * @return array
+     */
+    public static function formatMemberRow($val)
+    {
+        $name = is_array($val) ? ($val['name'] ?? '会员') : ($val->name ?? '会员');
+        $levelSn = is_array($val) ? ($val['levelSn'] ?? 'general') : ($val->levelSn ?? 'general');
+        $level = intval(is_array($val) ? ($val['level'] ?? 1) : ($val->level ?? 1));
+        $amount = floatval(is_array($val) ? ($val['amount'] ?? 0) : ($val->amount ?? 0));
+        $discount = floatval(is_array($val) ? ($val['discount'] ?? 10) : ($val->discount ?? 10));
+        $birthdayBenefit = trim(is_array($val) ? ($val['birthdayBenefit'] ?? '') : ($val->birthdayBenefit ?? ''));
+        $benefitDesc = trim(is_array($val) ? ($val['benefitDesc'] ?? '') : ($val->benefitDesc ?? ''));
+        return [
+            'name' => $name,
+            'levelSn' => $levelSn,
+            'level' => $level,
+            'member' => $level,
+            'amount' => $amount,
+            // 兼容旧 mall 字段 growth(成长值门槛)
+            'growth' => $amount,
+            'discount' => $discount,
+            'birthdayBenefit' => $birthdayBenefit,
+            'benefitDesc' => $benefitDesc,
+        ];
+    }
+
+}

+ 10 - 3
biz-hd/order/classes/OrderClass.php

@@ -257,7 +257,7 @@ class OrderClass extends BaseClass
             $data['fullAddress'] = $address . $floor;
         }
 
-        $sendType = $data['sendType'] ?? 0;
+        $sendType = intval($data['sendType'] ?? 0);
         if ($sendType == 1) {
             //到店自取,客户自己下单,不会有到店自取时间,但是如果是花店后台接单,会填到店自取时间,重要!!!!!!!!阿东那边已经出问题了!!!
             if (empty($data['reachDate'])) {
@@ -266,14 +266,21 @@ class OrderClass extends BaseClass
             if (empty($data['reachPeriod'])) {
                 $data['reachPeriod'] = date("H:i", time() + 3600);
             }
+        } elseif (in_array($sendType, [3, 4], true)) {
+            // 物流(3)/快递(4):时效由客服确认,不强制配送时间;日期缺省为当天
+            $data['reachDate'] = !empty($data['reachDate']) ? $data['reachDate'] : date("Y-m-d");
+            $data['reachPeriod'] = $data['reachPeriod'] ?? '';
         } else {
-            //如果不是到店自取的,则必须要有配送时间,默认当天
+            //商家配送/跑腿等必须要有配送时间,日期默认当天
             $data['reachDate'] = !empty($data['reachDate']) ? $data['reachDate'] : date("Y-m-d");
             if (empty($data['reachPeriod'])) {
                 util::fail('请选择配送时间');
             }
         }
-        $data['reachTime'] = strtotime($data['reachDate'] . ' ' . $data['reachPeriod']);
+        // 无时段时仅按日期生成 reachTime(物流/快递常见)
+        $data['reachTime'] = !empty($data['reachPeriod'])
+            ? strtotime($data['reachDate'] . ' ' . $data['reachPeriod'])
+            : strtotime($data['reachDate'] . ' 00:00:00');
 
         $book = $data['book'] ?? 0;
         if ($book == 0) {

+ 1 - 1
sql/20260706_redesign.sql

@@ -146,7 +146,7 @@ CREATE TABLE IF NOT EXISTS `xhDistributionRule` (
     `shopId` int(11) NOT NULL DEFAULT '0' COMMENT '门店ID',
     `mainId` int(11) NOT NULL DEFAULT '0' COMMENT 'mainId',
     `status` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '分销功能 0关 1开',
-    `settleDays` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '订单完成后 N 天结算',
+    `settleDays` smallint(5) unsigned NOT NULL DEFAULT '5' COMMENT '订单完成后 N 天结算',
     `bonusType` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '1固定比例 2按时间递减',
     `bonusRate` decimal(6,2) NOT NULL DEFAULT '0.00' COMMENT '固定比例%(bonusType=1)',
     `durationType` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '分红时长 1不限 2限制',