RechargeShbClass.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace bizHd\recharge\classes;
  3. use Yii;
  4. use bizHd\base\classes\BaseClass;
  5. class RechargeShbClass extends BaseClass
  6. {
  7. public static $baseFile = '\bizHd\recharge\models\RechargeShb';
  8. /**
  9. * 设置充值送红包规则
  10. * @param int $shopId
  11. * @param int $mainId
  12. * @param int $id
  13. * @param array $rulesData
  14. * @return array
  15. */
  16. public static function setRules($shopId, $mainId, $id, $amount, $rulesData)
  17. {
  18. if (empty($rulesData)) {
  19. return [];
  20. }
  21. $createRows = [];
  22. $connection = Yii::$app->db;
  23. $transaction = $connection->beginTransaction();
  24. try {
  25. $num = 0;
  26. $allHbAmount = 0;
  27. foreach ($rulesData as $item) {
  28. $num += $item['hbNum'];
  29. $allHbAmount += $item['hbAmount'] * $item['hbNum'];
  30. $createRows[] = [
  31. 'hbAmount' => $item['hbAmount'],
  32. 'hbNum' => $item['hbNum'],
  33. 'miniCost' => $item['miniCost'] ?? 0, //最低消费金额,0表示没有要求
  34. 'duration' => $item['duration'] == 0 ? 0 : $item['duration'], //0表示永不过期
  35. 'effectiveType' => $item['effectiveType'],
  36. 'effectiveDate' => $item['effectiveType'] == 1 ? ($item['effectiveDate'] ?? date('Y-m-d')) : '0000-00-00',
  37. 'effectiveDays' => $item['effectiveDays'] ?? 0
  38. ];
  39. }
  40. $createRowsStr = json_encode($createRows);
  41. if ($id == '') {
  42. self::add([
  43. 'shopId' => $shopId,
  44. 'mainId' => $mainId,
  45. 'amount' => $amount,
  46. 'num' => $num,
  47. 'allHbAmount' => $allHbAmount,
  48. 'rules' => $createRowsStr
  49. ]);
  50. } else {
  51. self::updateById($id, [
  52. 'amount' => $amount,
  53. 'num' => $num,
  54. 'allHbAmount' => $allHbAmount,
  55. 'rules' => $createRowsStr
  56. ]);
  57. }
  58. $transaction->commit();
  59. } catch (\Exception $e) {
  60. $transaction->rollBack();
  61. YII::error('RechargeShbClass::setRules error: ' . $e->getMessage());
  62. throw $e;
  63. }
  64. return ['createRows' => $createRows];
  65. }
  66. }