|
|
@@ -23,7 +23,7 @@ class RuleController extends Controller
|
|
|
1 => ['name' => 'Order', 'icon' => 'icon-shopping-cart', 'color' => 'blue'],
|
|
|
2 => ['name' => 'Registration', 'icon' => 'icon-user', 'color' => 'green'],
|
|
|
3 => ['name' => 'Product Review', 'icon' => 'icon-star', 'color' => 'yellow'],
|
|
|
- 4 => ['name' => 'Daily Sign In', 'icon' => 'icon-calendar', 'color' => 'purple'],
|
|
|
+ 4 => ['name' => 'Login', 'icon' => 'icon-calendar', 'color' => 'purple'],
|
|
|
5 => ['name' => 'Referral', 'icon' => 'icon-share', 'color' => 'indigo'],
|
|
|
6 => ['name' => 'Birthday', 'icon' => 'icon-gift', 'color' => 'pink'],
|
|
|
7 => ['name' => 'Share', 'icon' => 'icon-share-alt', 'color' => 'orange'],
|
|
|
@@ -50,7 +50,7 @@ class RuleController extends Controller
|
|
|
];
|
|
|
|
|
|
protected RewardPointRepository $rewardPointRepository;
|
|
|
-
|
|
|
+
|
|
|
protected array $_config;
|
|
|
|
|
|
public function __construct(RewardPointRepository $rewardPointRepository)
|
|
|
@@ -67,13 +67,13 @@ class RuleController extends Controller
|
|
|
$rules = RewardActiveRule::query()
|
|
|
->orderBy('rule_id', 'desc')
|
|
|
->paginate(15);
|
|
|
-
|
|
|
+
|
|
|
$customerGroupsList = $this->getCustomerGroups();
|
|
|
$transactionTypes = self::TRANSACTION_TYPES;
|
|
|
$colorClasses = self::COLOR_CLASSES;
|
|
|
|
|
|
$view = $this->_config['view'] ?? 'rewardpoints::admin.rules.index';
|
|
|
-
|
|
|
+
|
|
|
return view($view, compact('rules', 'customerGroupsList', 'transactionTypes', 'colorClasses'));
|
|
|
}
|
|
|
|
|
|
@@ -83,7 +83,7 @@ class RuleController extends Controller
|
|
|
public function create(): View
|
|
|
{
|
|
|
$view = $this->_config['view'] ?? 'rewardpoints::admin.rules.create';
|
|
|
-
|
|
|
+
|
|
|
return view($view, [
|
|
|
'transactionTypes' => self::TRANSACTION_TYPES,
|
|
|
'storeViews' => $this->getStoreViews(),
|
|
|
@@ -102,7 +102,7 @@ class RuleController extends Controller
|
|
|
|
|
|
// 处理 Store Views 数据
|
|
|
$selectedStoreViews = $this->parseStoreViews($rule);
|
|
|
-
|
|
|
+
|
|
|
// 如果规则适用于所有店铺(store_view = '0'),则转换为 'all' 选项
|
|
|
$selectedStoreViewsForSelect = [];
|
|
|
if ($rule->store_view === '0' || empty($selectedStoreViews)) {
|
|
|
@@ -110,15 +110,15 @@ class RuleController extends Controller
|
|
|
} else {
|
|
|
$selectedStoreViewsForSelect = $selectedStoreViews;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 处理客户群组数据
|
|
|
$selectedCustomerGroupsArray = $this->parseCustomerGroups($rule);
|
|
|
- $selectedCustomerGroupsPoints = $rule->enable_different_points_by_group
|
|
|
+ $selectedCustomerGroupsPoints = $rule->enable_different_points_by_group
|
|
|
? (json_decode($rule->customer_group_ids, true) ?: [])
|
|
|
: [];
|
|
|
|
|
|
$view = $this->_config['view'] ?? 'rewardpoints::admin.rules.edit';
|
|
|
-
|
|
|
+
|
|
|
return view($view, [
|
|
|
'rule' => $rule,
|
|
|
'transactionTypes' => self::TRANSACTION_TYPES,
|
|
|
@@ -143,7 +143,7 @@ class RuleController extends Controller
|
|
|
RewardActiveRule::create($data);
|
|
|
|
|
|
session()->flash('success', 'Reward rule created successfully.');
|
|
|
-
|
|
|
+
|
|
|
return $this->redirectToIndex();
|
|
|
} catch (Exception $e) {
|
|
|
session()->flash('error', 'Error creating reward rule: ' . $e->getMessage());
|
|
|
@@ -151,7 +151,7 @@ class RuleController extends Controller
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* Update the specified reward rule
|
|
|
*/
|
|
|
@@ -162,14 +162,14 @@ class RuleController extends Controller
|
|
|
|
|
|
try {
|
|
|
$data = $this->prepareDataForSave($request, $validated);
|
|
|
-
|
|
|
+
|
|
|
// 确保 enable_different_points_by_group 字段被正确设置
|
|
|
$data['enable_different_points_by_group'] = $request->boolean('enable_different_points_by_group');
|
|
|
-
|
|
|
+
|
|
|
$rule->update($data);
|
|
|
|
|
|
session()->flash('success', 'Reward rule updated successfully.');
|
|
|
-
|
|
|
+
|
|
|
return $this->redirectToIndex();
|
|
|
} catch (Exception $e) {
|
|
|
session()->flash('error', 'Error updating reward rule: ' . $e->getMessage());
|
|
|
@@ -304,12 +304,12 @@ class RuleController extends Controller
|
|
|
if (empty($storeViews) || $storeViews === '0') {
|
|
|
return '0';
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 如果是单个值,直接返回
|
|
|
if (is_scalar($storeViews) && !empty($storeViews)) {
|
|
|
return (string)$storeViews;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return '0';
|
|
|
}
|
|
|
|
|
|
@@ -320,12 +320,12 @@ class RuleController extends Controller
|
|
|
{
|
|
|
if ($request->boolean('enable_different_points_by_group')) {
|
|
|
$groupPoints = $request->get('group_points', []);
|
|
|
-
|
|
|
+
|
|
|
// 确保 $groupPoints 是数组
|
|
|
if (!is_array($groupPoints)) {
|
|
|
$groupPoints = [];
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 过滤并处理群组积分数据,确保键是字符串或整数
|
|
|
$filteredPoints = [];
|
|
|
foreach ($groupPoints as $groupId => $points) {
|
|
|
@@ -338,7 +338,7 @@ class RuleController extends Controller
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
$data['customer_group_ids'] = !empty($filteredPoints) ? json_encode($filteredPoints) : '{}';
|
|
|
$data['reward_point'] = 0;
|
|
|
} else {
|
|
|
@@ -365,7 +365,7 @@ class RuleController extends Controller
|
|
|
}
|
|
|
return !empty($filtered) ? implode(',', array_unique($filtered)) : '';
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return '';
|
|
|
}
|
|
|
|
|
|
@@ -381,7 +381,7 @@ class RuleController extends Controller
|
|
|
return !empty($view);
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return [];
|
|
|
}
|
|
|
|
|
|
@@ -404,7 +404,7 @@ class RuleController extends Controller
|
|
|
}
|
|
|
return [];
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if ($rule->customer_group_ids && $rule->customer_group_ids !== '') {
|
|
|
$groups = explode(',', $rule->customer_group_ids);
|
|
|
// 过滤空值
|
|
|
@@ -412,7 +412,7 @@ class RuleController extends Controller
|
|
|
return !empty($group);
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return [];
|
|
|
}
|
|
|
|
|
|
@@ -424,11 +424,11 @@ class RuleController extends Controller
|
|
|
try {
|
|
|
$channels = Channel::all();
|
|
|
$storeViews = [];
|
|
|
-
|
|
|
+
|
|
|
foreach ($channels as $channel) {
|
|
|
$storeViews[$channel->code] = $channel->name;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return $storeViews;
|
|
|
} catch (Exception $e) {
|
|
|
return ['0' => 'All Stores'];
|
|
|
@@ -443,11 +443,11 @@ class RuleController extends Controller
|
|
|
try {
|
|
|
$groups = CustomerGroup::orderBy('id')->get();
|
|
|
$customerGroups = [];
|
|
|
-
|
|
|
+
|
|
|
foreach ($groups as $group) {
|
|
|
$customerGroups[$group->id] = $group->name;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
return $customerGroups;
|
|
|
} catch (Exception $e) {
|
|
|
return ['0' => 'All Groups'];
|
|
|
@@ -487,4 +487,4 @@ class RuleController extends Controller
|
|
|
$route = $this->_config['redirect'] ?? 'admin.reward-points.rules.index';
|
|
|
return redirect()->route($route);
|
|
|
}
|
|
|
-}
|
|
|
+}
|