dever 4 years ago
parent
commit
e2211e8eb9
2 changed files with 65 additions and 5 deletions
  1. 32 0
      database/config.php
  2. 33 5
      lib/Core.php

+ 32 - 0
database/config.php

@@ -7,6 +7,14 @@ $type = array
 	3 => '可自定义积分',
 );
 
+$callback_type = array
+(
+	1 => '无回调',
+	2 => 'Dever组件',
+	3 => 'http接口',
+	4 => '命令行',
+);
+
 return array
 (
 	# 表名
@@ -55,6 +63,30 @@ return array
 			'search'	=> 'select',
 			'list'		=> true,
 		),
+
+		'callback_type'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '回调类型',
+			'default' 	=> '1',
+			'desc' 		=> '回调类型',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'select',
+			'option'	=> $callback_type,
+			'search'	=> 'select',
+			'control'	=> 'callback_type',
+		),
+
+		'callback_value'		=> array
+		(
+			'type' 		=> 'varchar-800',
+			'name' 		=> '回调地址-积分增减成功后,将自动调取回调,会把user_log表的数据传过去,如果代码中设置了回调,该回调将失效',
+			'default' 	=> '',
+			'desc' 		=> '回调地址',
+			'match' 	=> 'is_string',
+			'update'	=> 'textarea',
+			'show'		=> 'callback_type=2,3,4',
+		),
 		
 		'reorder'		=> array
 		(

+ 33 - 5
lib/Core.php

@@ -55,7 +55,7 @@ class Core
 			$insert['cron_type'] = 1;
 			$log_id = Dever::db('score/action_log')->insert($insert);
 
-			Dever::load('score/lib/core.oper?log_id='.$log_id);
+			//Dever::load('score/lib/core.oper_commit?log_id='.$log_id);
 			return;
 			$sync = Dever::config('base', 'project')->score['sync'];
 			if ($sync) {
@@ -149,6 +149,11 @@ class Core
 
 	}
 
+	public function oper_commit()
+	{
+
+	}
+
 	/**
 	 * 根据用户行为,增加积分
 	 *
@@ -167,6 +172,13 @@ class Core
 
 	private function rule($log, $info)
 	{
+		$config = Dever::db('score/config')->one($info['config_id']);
+		if (!$config) {
+			return;
+		}
+		if ($config && $config['state'] == 2) {
+			return;
+		}
 		# 手动增加积分
 		if (isset($log['mscore']) && $log['mscore'] > 0) {
 			$info['num'] = $log['mscore'];
@@ -209,23 +221,39 @@ class Core
 		# 完成
 		$this->finish($log, 2, $num);
 
-		$user_log_id = $this->add($uid, $num, $info, $log);
+		$user_log = $this->add($uid, $num, $info, $log);
 
-		if (!$user_log_id) {
+		if (!$user_log['id']) {
 			return;
 		}
 
+		$user_log['type'] = $info['type'];
+		$user_log['type_id'] = $info['type_id'];
+
 		# 增加返利
 		if ($info['rebate_type'] > 1) {
 			$this->rebate($uid, $num, $info, $log);
 		}
 
 		if ($log['callback']) {
+			Dever::load($log['callback'], $user_log);
+			/*
 			if (strstr($log['callback'], '?')) {
 				Dever::load($log['callback'] . '&user_log_id=' . $user_log_id);
 			} else {
 				Dever::load($log['callback'], $user_log_id);
 			}
+			*/
+		} elseif ($config['callback_type'] > 1 && $config['callback_value']) {
+			if ($config['callback_type'] == 2) {
+				Dever::load($config['callback_value'], $user_log);
+			} elseif ($config['callback_type'] == 3) {
+				Dever::curl($config['callback_value'], $user_log, 'post');
+			} elseif ($config['callback_type'] == 4) {
+				$temp = explode('/', $config['callback_value']);
+				$config['callback_value'] = str_replace($temp[0] . '/', '', $config['callback_value']);
+				Dever::daemon($config['callback_value'] . '?log_id='.$user_log['id'], $temp[0]);
+			}
 		}
 	}
 
@@ -261,7 +289,7 @@ class Core
 		$insert['num'] = $num;
 		$insert['total'] = $update['score'];
 		$insert['cdate'] = time();
-		$user_log_id = Dever::db($this->user_log)->insert($insert);
+		$insert['id'] = Dever::db($this->user_log)->insert($insert);
 
 		if ($user_log_id) {
 			Dever::db($this->user)->update($update);
@@ -275,7 +303,7 @@ class Core
 			}
 		}
 
-		return $user_log_id;
+		return $insert;
 	}
 
 	# 返利