|
@@ -24,15 +24,28 @@ class SystemUserLevelTaskServices extends BaseServices
|
|
|
{
|
|
|
|
|
|
protected $tasks = [
|
|
|
- ['name' => 'expend', 'title' => '消费满额', 'info' => '消费满{%num1%}', 'unit1' => '元'],
|
|
|
- ['name' => 'achievement', 'title' => '业绩达标', 'info' => '业绩满{%num1%}', 'unit1' => '元'],
|
|
|
- ['name' => 'spread_num', 'title' => '推荐会员', 'info' => '邀请等级{%num1%}及以上的用户{%num2%}', 'unit1' => '级', 'unit2' => '人'],
|
|
|
+ 'expend' => ['name' => 'expend', 'title' => '消费满额', 'info' => '消费满{%num1%}', 'unit1' => '元'],
|
|
|
+ 'achievement' => ['name' => 'achievement', 'title' => '业绩达标', 'info' => '业绩满{%num1%}', 'unit1' => '元'],
|
|
|
+ 'spread_num' => ['name' => 'spread_num', 'title' => '推荐会员', 'info' => '邀请等级{%num1%}及以上的用户{%num2%}', 'unit1' => '级', 'unit2' => '人'],
|
|
|
];
|
|
|
|
|
|
|
|
|
public function taskBase()
|
|
|
{
|
|
|
- return $this->tasks;
|
|
|
+ $tasks = $this->tasks;
|
|
|
+ foreach ($tasks as $v) {
|
|
|
+ $units = [];
|
|
|
+ for ($i = 1; ; $i++) {
|
|
|
+ $unit = 'unit' . $i;
|
|
|
+ if (isset($v[$unit])) {
|
|
|
+ $units[] = ['label' => $v[$unit], 'replace' => "{%num" . $i . "%}", 'key' => $i, 'num_name' => 'num' . $i];
|
|
|
+ } else {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $tasks[$v['name']]['units'] = $units;
|
|
|
+ }
|
|
|
+ return $tasks;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -43,17 +56,13 @@ class SystemUserLevelTaskServices extends BaseServices
|
|
|
{
|
|
|
foreach ($task as &$v) {
|
|
|
if (!$this->tasks[$v['name'] ?? '']) throw new ValidateException('任务不存在');
|
|
|
- if (($v['num1'] ?? 0) < 0) throw new ValidateException('任务数量不能小于0');
|
|
|
- $v['info'] = str_replace('{%num1%}', ($v['num1'] ?? 0) . $this->tasks[$v['name']]['unit1'], $this->tasks[$v['name']]['info']);
|
|
|
- for ($i = 2; ; $i++) {
|
|
|
- $unit = 'unit' . $i;
|
|
|
- $num = 'num' . $i;
|
|
|
- if (isset($this->tasks[$v['name']][$unit])) {
|
|
|
- if (($v[$num] ?? 0) < 0) throw new ValidateException('任务数量' . $i . '不能小于0');
|
|
|
- $v['info'] = str_replace('{%num' . $i . '%}', ($v[$num] ?? 0) . $this->tasks[$v['name']][$unit], $v['info']);
|
|
|
- } else {
|
|
|
- break;
|
|
|
- }
|
|
|
+ if (!isset($v['units'])) {
|
|
|
+ throw new ValidateException('请设置任务数量');
|
|
|
+ }
|
|
|
+ foreach ($v['units'] as $task_value) {
|
|
|
+ if (($task_value['value'] ?? 0) < 0) throw new ValidateException('任务数量不能小于0');
|
|
|
+ if (!isset($task_value['replace'])) throw new ValidateException('任务参数异常');
|
|
|
+ $v['info'] = str_replace($task_value['replace'], ($task_value['value'] ?? 0) . ($task_value['label'] ?? ''), ($v['info'] ?? $this->tasks[$v['name']]['info']));
|
|
|
}
|
|
|
$v['must'] = $v['must'] ?? 0;
|
|
|
}
|
|
@@ -85,14 +94,14 @@ class SystemUserLevelTaskServices extends BaseServices
|
|
|
Log::error('等级任务' . $v['name'] . '未完成');
|
|
|
continue;
|
|
|
}
|
|
|
- $nums = ['num1' => $v['num1']];
|
|
|
- for ($i = 2; ; $i++) {
|
|
|
- $num = 'num' . $i;
|
|
|
- if (isset($v[$num])) {
|
|
|
- $nums[$num] = $v[$num];
|
|
|
- } else {
|
|
|
- break;
|
|
|
- }
|
|
|
+ if (!isset($v['units'])) {
|
|
|
+ Log::error('任务数量未设置');
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ $nums = [];
|
|
|
+ foreach ($v['units'] as $task_value) {
|
|
|
+ if (($task_value['value'] ?? 0) < 0) throw new ValidateException('任务数量不能小于0');
|
|
|
+ $nums['num' . (string)$task_value['key']] = $task_value['value'] ?? 0;
|
|
|
}
|
|
|
if (!$this->{'task_' . $v['name']}($uid, $start_time, $nums)) {
|
|
|
if ($v['must']) $must[] = ['name' => $v['name'], 'status' => 0];
|