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

Merge branch 'zhongqi-birthDay' into dev

shizhongqi 2 месяцев назад
Родитель
Сommit
1c27b026f8

+ 23 - 3
app-mall/controllers/UserController.php

@@ -3,6 +3,7 @@
 namespace mall\controllers;
 
 use biz\shop\classes\ShopExtClass;
+use bizHd\birthday\classes\BirthdayGiftClass;
 use bizHd\custom\classes\CustomClass;
 use bizHd\wx\classes\WxOpenClass;
 use bizMall\message\services\SmsService;
@@ -72,7 +73,7 @@ class UserController extends BaseController
             util::fail('农历没有31号');
         }
         $user = $this->user;
-        if ($user->birthdaySet == 1 && getenv('YII_ENV') != 'dev') {
+        if (getenv('YII_ENV') != 'dev' && $user->birthdaySet == 1) {
             util::fail('你已经设置过了');
         }
         if ($lunar == 1) {
@@ -99,8 +100,9 @@ class UserController extends BaseController
         $user->birthdayTime = $birthdayTime;
         $user->birthdaySet = 1;
         $user->save();
-        $userId = $user->id;
-        $customList = \bizMall\custom\classes\CustomClass::getAllByCondition(['userId' => $userId], null, '*', null, true);
+
+        // 同步变更客户表(xhCustom)中的数据
+        $customList = \bizMall\custom\classes\CustomClass::getAllByCondition(['userId' => $user->id], null, '*', null, true);
         if (!empty($customList)) {
             foreach ($customList as $custom) {
                 $custom->lunar = $lunar;
@@ -111,6 +113,24 @@ class UserController extends BaseController
                 $custom->save();
             }
         }
+
+        // 同步变更生日赠礼记录表(xhBirthdayGift)中的数据(只更新当年年份的,往年的不去修改)
+        $birthdayGiftList = BirthdayGiftClass::getAllByCondition(['userId' => $user->id, 'year' => date("Y")], null, '*', null, true);
+        if (!empty($birthdayGiftList)) {
+            foreach ($birthdayGiftList as $birthdayGift) {
+                list($giftBirthdayMonth, $giftBirthdayDate) = BirthdayGiftClass::convertBirthdayMonthDay(
+                    $lunar,
+                    $birthdayMonth,
+                    $birthdayDate
+                );
+                $birthdayGift->lunar = $lunar;
+                $birthdayGift->birthdayMonth = $giftBirthdayMonth;
+                $birthdayGift->birthdayDate = $giftBirthdayDate;
+                $birthdayGift->birthdayDisplay = BirthdayGiftClass::formatBirthdayDisplay($custom, $giftBirthdayMonth, $giftBirthdayDate);
+                $birthdayGift->save();
+            }
+        }
+        
         util::complete('修改成功');
     }
 

+ 33 - 6
biz-hd/birthday/classes/BirthdayGiftClass.php

@@ -12,6 +12,7 @@ use common\components\noticeUtil;
 use common\components\printUtil;
 use common\components\ChuanglanSmsApi;
 use common\components\util;
+use Overtrue\ChineseCalendar\Calendar;
 use PhpAmqpLib\Wire\AMQPTable;
 use Yii;
 use yii\db\IntegrityException;
@@ -114,15 +115,35 @@ class BirthdayGiftClass extends BaseClass
         return null;
     }
 
-    public static function formatBirthdayDisplay($custom)
+    public static function convertBirthdayMonthDay($lunar, $birthdayMonth, $birthdayDate, $year = null)
+    {
+        $birthdayMonth = intval($birthdayMonth);
+        $birthdayDate = intval($birthdayDate);
+        if (intval($lunar) != 1) {
+            return [$birthdayMonth, $birthdayDate];
+        }
+
+        try {
+            $calendar = new Calendar();
+            $result = $calendar->lunar($year ?: date('Y'), $birthdayMonth, $birthdayDate);
+        } catch (\InvalidArgumentException $e) {
+            util::fail($e->getMessage());
+        }
+
+        return [intval($result['gregorian_month']), intval($result['gregorian_day'])];
+    }
+
+    public static function formatBirthdayDisplay($custom, $birthdayMonth, $birthdayDate)
     {
         $m = intval($custom->birthdayMonth ?? 0);
         $d = intval($custom->birthdayDate ?? 0);
         if ($m <= 0 || $d <= 0) {
             return '';
         }
-        $prefix = intval($custom->lunar ?? 0) == 1 ? '农历 ' : '';
-        return $prefix . $m . '月' . $d . '日';
+        if (intval($custom->lunar ?? 0) == 1) {
+            return $birthdayMonth . '月' . $birthdayDate . '日' . ' (农历 ' . $m . '月' . $d . '日)';
+        }
+        return $m . '月' . $d . '日';
     }
 
     /**
@@ -281,6 +302,12 @@ class BirthdayGiftClass extends BaseClass
         $hdId = $hd->id ?? 0;
         $birthdayTime = intval($custom->birthdayTime);
         $status = $birthdayTime > 0 ? self::STATUS_PENDING_NOTIFY : self::STATUS_NO_BIRTHDAY;
+        list($birthdayMonth, $birthdayDate) = self::convertBirthdayMonthDay(
+            $custom->lunar,
+            $custom->birthdayMonth,
+            $custom->birthdayDate,
+            $year
+        );
         $data = [
             'mainId' => $mainId,
             'shopId' => $shopId,
@@ -291,10 +318,10 @@ class BirthdayGiftClass extends BaseClass
             'member' => $member,
             'memberName' => $custom->memberName ?? '',
             'giftName' => $giftName,
-            'birthdayMonth' => intval($custom->birthdayMonth),
-            'birthdayDate' => intval($custom->birthdayDate),
+            'birthdayMonth' => $birthdayMonth,
+            'birthdayDate' => $birthdayDate,
             'lunar' => intval($custom->lunar),
-            'birthdayDisplay' => self::formatBirthdayDisplay($custom),
+            'birthdayDisplay' => self::formatBirthdayDisplay($custom, birthdayMonth, birthdayDate),
         ];
         if (empty($gift)) {
             $data['status'] = $status;

+ 18 - 1
biz-hd/custom/classes/CustomClass.php

@@ -6,6 +6,7 @@ use biz\wx\classes\WxMessageClass;
 use bizHd\balance\classes\BalanceChangeClass;
 use bizHd\balance\classes\BalanceGiveChangeClass;
 use bizHd\balance\classes\BalancePayChangeClass;
+use bizHd\birthday\classes\BirthdayGiftClass;
 use bizHd\member\classes\MemberChangeClass;
 use bizHd\member\classes\MemberLevelClass;
 use bizHd\order\classes\OrderClass;
@@ -77,7 +78,7 @@ class CustomClass extends BaseClass
         if (getenv('YII_ENV') != 'dev' && $user->birthdaySet == 1) {
             util::fail('客户已填写,不能修改');
         }
-        //用户自己没有设置过生日,直接改
+
         $custom->lunar = $lunar;
         $custom->birthdayDate = $birthdayDate;
         $custom->birthdayMonth = $birthdayMonth;
@@ -91,6 +92,22 @@ class CustomClass extends BaseClass
         $user->birthday = $birthday;
         $user->birthdayTime = $birthdayTime;
         $user->save();
+
+        // 同步变更生日赠礼记录表(xhBirthdayGift)中的数据(只更新当年年份的,往年的不去修改)
+        $birthdayGift = BirthdayGiftClass::getByCondition(['userId'=>$user->id, 'shopId'=>$shopId, 'year'=>date("Y")], true);
+        if (!empty($birthdayGift)) {
+            list($giftBirthdayMonth, $giftBirthdayDate) = BirthdayGiftClass::convertBirthdayMonthDay(
+                $lunar,
+                $birthdayMonth,
+                $birthdayDate
+            );
+            $birthdayGift->lunar = $lunar;
+            $birthdayGift->birthdayMonth = $giftBirthdayMonth;
+            $birthdayGift->birthdayDate = $giftBirthdayDate;
+            $birthdayGift->birthdayDisplay = BirthdayGiftClass::formatBirthdayDisplay($custom, $giftBirthdayMonth, $giftBirthdayDate);
+            $birthdayGift->save();
+        }
+
         return $custom;
     }