|
|
@@ -6,6 +6,7 @@ use Longyi\RewardPoints\Repositories\RewardPointRepository;
|
|
|
use Longyi\RewardPoints\Models\RewardActiveRule;
|
|
|
use Webkul\Customer\Models\Customer;
|
|
|
use Illuminate\Support\Facades\Log;
|
|
|
+use Carbon\Carbon;
|
|
|
|
|
|
class ReviewEvents
|
|
|
{
|
|
|
@@ -32,19 +33,19 @@ class ReviewEvents
|
|
|
// 获取客户信息
|
|
|
$customer = $this->getCustomer($review->customer_id);
|
|
|
if (!$customer) {
|
|
|
- Log::warning('Customer not found for review points', [
|
|
|
- 'review_id' => $review->id,
|
|
|
- 'customer_id' => $review->customer_id
|
|
|
- ]);
|
|
|
+ // Log::warning('Customer not found for review points', [
|
|
|
+ // 'review_id' => $review->id,
|
|
|
+ // 'customer_id' => $review->customer_id
|
|
|
+ // ]);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
// 【简化】只需要调用 isApplicableToCustomer,它会内部处理所有适用性检查
|
|
|
if (!$rule->isApplicableToCustomer($customer)) {
|
|
|
- Log::info('Review rule not applicable', [
|
|
|
- 'review_id' => $review->id,
|
|
|
- 'customer_id' => $customer->id,
|
|
|
- ]);
|
|
|
+ // Log::info('Review rule not applicable', [
|
|
|
+ // 'review_id' => $review->id,
|
|
|
+ // 'customer_id' => $customer->id,
|
|
|
+ // ]);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -52,19 +53,28 @@ class ReviewEvents
|
|
|
$points = $rule->getPointsForCustomer($customer);
|
|
|
|
|
|
if ($points <= 0) {
|
|
|
- Log::info('Review points is 0, skipping', [
|
|
|
- 'review_id' => $review->id,
|
|
|
- 'points' => $points
|
|
|
- ]);
|
|
|
+ // Log::info('Review points is 0, skipping', [
|
|
|
+ // 'review_id' => $review->id,
|
|
|
+ // 'points' => $points
|
|
|
+ // ]);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
// 检查是否已经为该评价发放过积分
|
|
|
if ($this->hasReceivedReviewPoints($review->id, $customer->id)) {
|
|
|
- Log::info('Review points already granted', [
|
|
|
+ /*Log::info('Review points already granted', [
|
|
|
'review_id' => $review->id,
|
|
|
'customer_id' => $customer->id
|
|
|
- ]);
|
|
|
+ ]);*/
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 检查今日是否已获得评价积分(一个用户一天只发放一次)
|
|
|
+ if ($this->hasReceivedReviewPointsToday($customer->id)) {
|
|
|
+ /*Log::info('Customer already received review points today', [
|
|
|
+ 'review_id' => $review->id,
|
|
|
+ 'customer_id' => $customer->id
|
|
|
+ ]);*/
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -78,11 +88,11 @@ class ReviewEvents
|
|
|
$rule
|
|
|
);
|
|
|
|
|
|
- Log::info('Review points added', [
|
|
|
+ /*Log::info('Review points added', [
|
|
|
'review_id' => $review->id,
|
|
|
'customer_id' => $customer->id,
|
|
|
'points' => $points
|
|
|
- ]);
|
|
|
+ ]);*/
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -95,9 +105,9 @@ class ReviewEvents
|
|
|
}
|
|
|
|
|
|
if (empty($review->customer_id)) {
|
|
|
- Log::info('Review has no customer_id', [
|
|
|
- 'review_id' => $review->id ?? null
|
|
|
- ]);
|
|
|
+ // Log::info('Review has no customer_id', [
|
|
|
+ // 'review_id' => $review->id ?? null
|
|
|
+ // ]);
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
@@ -130,7 +140,21 @@ class ReviewEvents
|
|
|
// 通过备注字段判断(需要存储评价ID)
|
|
|
return \Longyi\RewardPoints\Models\RewardPointHistory::where('customer_id', $customerId)
|
|
|
->where('type_of_transaction', RewardActiveRule::TYPE_REVIEW)
|
|
|
- ->where('description', 'LIKE', "%Review ID: {$reviewId}%")
|
|
|
+ ->where('transaction_detail', 'LIKE', "%Review ID: {$reviewId}%")
|
|
|
+ ->exists();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检查今日是否已获得评价积分
|
|
|
+ */
|
|
|
+ protected function hasReceivedReviewPointsToday(int $customerId): bool
|
|
|
+ {
|
|
|
+ $today = Carbon::now()->format('Y-m-d');
|
|
|
+
|
|
|
+ return \Longyi\RewardPoints\Models\RewardPointHistory::where('customer_id', $customerId)
|
|
|
+ ->where('type_of_transaction', RewardActiveRule::TYPE_REVIEW)
|
|
|
+ ->whereDate('transaction_time', $today)
|
|
|
+ ->where('status', \Longyi\RewardPoints\Models\RewardPointHistory::STATUS_COMPLETED)
|
|
|
->exists();
|
|
|
}
|
|
|
|