Selaa lähdekoodia

充值送红包 -- 获取规则,查询符合的最佳规则,自动生成红包

shizhongqi 7 kuukautta sitten
vanhempi
commit
9f7d6f9c75
2 muutettua tiedostoa jossa 60 lisäystä ja 14 poistoa
  1. 46 1
      biz-hd/recharge/classes/RechargeClass.php
  2. 14 13
      common/base/models/Base.php

+ 46 - 1
biz-hd/recharge/classes/RechargeClass.php

@@ -9,6 +9,8 @@ use bizHd\balance\classes\BalanceGiveChangeClass;
 use bizHd\balance\classes\BalancePayChangeClass;
 use bizHd\custom\classes\CustomClass;
 use bizHd\custom\classes\HdClass;
+use bizHd\hb\classes\HbClass;
+use bizHd\hb\classes\HbManageClass;
 use bizHd\order\classes\OrderClass;
 use bizHd\order\classes\SettleClass;
 use bizHd\shop\classes\MainClass;
@@ -174,7 +176,50 @@ class RechargeClass extends BaseClass
                 }
             } elseif ($rechargeWeal == 2) {
                 //充值送红包
-
+                // 1.根据充值金额,查询符合条件的红包规则
+                $hbRules = RechargeShbClass::getByCondition(['shopId' => $shopId, 'amount<=' => $amount], true);
+                
+                // 2.遍历符合条件的红包规则,找出最大的红包金额(要结合红包数量来判断)
+                $maxHbAmount = 0;
+                $maxHbRule = null;
+                foreach ($hbRules as $hbRule) {
+                    $totalMoney = $hbRule['hbAmount'] * $hbRule['num'];
+                    if ($totalMoney > $maxHbAmount) {
+                        $maxHbAmount = $totalMoney;
+                        $maxHbRule = $hbRule;
+                    }
+                }
+                if (!empty($maxHbRule)) {
+                    //给用户生成红包
+                    $data = [
+                        'mainId' => $mainId,
+                        'shopId' => $shopId,
+                        'userId' => $recharge->userId,
+                        'customId' => $customId,
+                        'amount' => $maxHbRule['amount'],
+                        'minConsume' => $maxHbRule['miniCost'],
+                        'beginTime' => time(),
+                        'endTime' => 4102416000,
+                        'willTime' => 4102416000,
+                        'duration' => $maxHbRule['duration'],
+                        'getType' => 2, //取得方式 0新人领取 1门店发放 2充值赠送
+                        'remark' => '充值赠送红包',
+                    ];
+            
+                    $manageData = [
+                        'getType' => 2,
+                        'getTargetId' => 0,
+                        'createStaffId' => 0,
+                        'createStaffName' => '',
+                        'remark' => $data['remark'] ?? '',
+                    ];
+                    for ($i = 0; $i < $maxHbRule['num']; $i++) {
+                        $hb = HbClass::add($data);
+            
+                        $manageData['hbId'] = $hb['id'];
+                        HbManageClass::add($manageData);
+                    }
+                }
             } else {
                 //其他
             }

+ 14 - 13
common/base/models/Base.php

@@ -239,6 +239,8 @@ class Base extends ActiveRecord
      *     'name' => 'john',               // 等于
      *     'id>' => 3,                     // 大于
      *     'id<' => 10,                    // 小于
+     *     'id>=' => 3,                    // 大于等于
+     *     'id<=' => 10,                   // 小于等于
      *     'id!=' => -1,                   // 不等于
      *     'id' => ['in', [10,11,12]],     // IN
      *     'id' => ['not in', [10,11,12]], // NOT IN
@@ -261,13 +263,23 @@ class Base extends ActiveRecord
                     $pos = strpos($key, '!=');
                     $currentKey = substr($key, 0, $pos);
                     $param = ['!=', $currentKey, $val];
+                } elseif (strstr($key, '>=')) {
+                    //大于等于
+                    $pos = strpos($key, '>=');
+                    $currentKey = substr($key, 0, $pos);
+                    $param = ['>=', $currentKey, $val];
+                } elseif (strstr($key, '<=')) {
+                    //小于等于
+                    $pos = strpos($key, '<=');
+                    $currentKey = substr($key, 0, $pos);
+                    $param = ['<=', $currentKey, $val];
                 } elseif (strstr($key, '>')) {
-                    //暂不支持大于等于,等于请使用between
+                    //大于
                     $pos = strpos($key, '>');
                     $currentKey = substr($key, 0, $pos);
                     $param = ['>', $currentKey, $val];
                 } elseif (strstr($key, '<')) {
-                    //暂不支持小于等于,等于请使用between
+                    //小于
                     $pos = strpos($key, '<');
                     $currentKey = substr($key, 0, $pos);
                     $param = ['<', $currentKey, $val];
@@ -467,17 +479,6 @@ class Base extends ActiveRecord
         return self::updateAllCounters($counters, $condition, $params);
     }
 
-    /**
-     * 获取图书的作者
-     * @return \yii\db\ActiveQuery
-     * @note 此方法疑似为示例代码,建议检查
-     */
-    public function getAuthor()
-    {
-        //同样第一个参数指定关联的子表模型类名
-        return $this->hasOne(Author::className(), ['id' => 'author_id']);
-    }
-
     /**
      * 根据主键获取记录并锁定 (SELECT FOR UPDATE)
      * @param int|string $id 主键ID