| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 | 
							- <?php
 
- defined('IN_PHPCMS') or exit('No permission resources.'); 
 
- /**
 
-  * 消费记录类使用说明
 
-  * @author chenzhouyu
 
-  * 
 
-  * 直接使用pc_base::load_app_class('spend', 'pay', 0);
 
-  * 进行加载。
 
-  * 使用spend::amount()进行金钱的消费
 
-  * spend::point()进行积分消费
 
-  * 当函数返回的结果为false是,可使用spend::get_msg()获取错误原因
 
-  * 
 
-  */
 
- class spend {
 
- 	
 
- 	//数据库连接
 
- 	protected static $db;
 
- 	
 
- 	//错误代码
 
- 	public static $msg;
 
- 	
 
- 	/**
 
- 	 * 数据库连接
 
- 	 */
 
- 	protected  static function connect() {
 
- 		self::$db = pc_base::load_model("pay_spend_model");
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 按用户名、时间、标识查询是否有消费记录
 
- 	 * @param integer $userid      用户名
 
- 	 * @param integer $time        时间。  从指定时间到现在的时间范围内。
 
- 	 * @param string $logo   标识
 
- 	 */
 
- 	public static function spend_time($userid, $time, $logo) {
 
- 		if (empty(self::$db)) {
 
- 			self::connect();
 
- 		}
 
- 		return self::$db->get_one("`userid` = '$userid' AND `creat_at` BETWEEN '$time' AND '".SYS_TIME."' AND `logo` = '$logo'");
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 添加金钱消费记录
 
- 	 * @param integer $value          消费金额
 
- 	 * @param string $msg             消费信息
 
- 	 * @param integer $userid         用户ID
 
- 	 * @param string $username        用户名
 
- 	 * @param integer $op_userid      操作人
 
- 	 * @param string $op_username     操作人用户名
 
- 	 * @param string $logo            特殊标识,如文章消费时,可以对文章进行标识,以满足在一段时间内,都可以再次的使用
 
- 	 */
 
- 	public static function amount($value, $msg, $userid = '', $username = '', $op_userid = '', $op_username = '', $logo = '') {
 
- 		return self::_add(array('username'=>$username, 'userid'=>$userid, 'type'=>1, 'value'=>$value, 'op_userid'=>$op_userid, 'op_username'=>$op_username, 'msg'=>$msg,'logo'=>$logo));
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 添加积分消费记录
 
- 	 * @param integer $value          消费金额
 
- 	 * @param string $msg             消费信息
 
- 	 * @param integer $userid         用户ID
 
- 	 * @param string $username        用户名
 
- 	 * @param integer $op_userid      操作人
 
- 	 * @param string $op_username     操作人用户名
 
- 	 * @param string $logo            特殊标识,如文章消费时,可以对文章进行标识,以满足在一段时间内,都可以再次的使用
 
- 	 */
 
- 	public static function point($value, $msg, $userid = '', $username = '', $op_userid = '', $op_username = '', $logo = '') {
 
- 		return self::_add(array('username'=>$username, 'userid'=>$userid, 'type'=>2, 'value'=>$value, 'op_userid'=>$op_userid, 'op_username'=>$op_username, 'msg'=>$msg,'logo'=>$logo));
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 添加消费记录
 
- 	 * @param array $data 添加消费记录参数
 
- 	 */
 
- 	private static function _add($data) {
 
- 		$data['userid'] = isset($data['userid']) && intval($data['userid']) ? intval($data['userid']) : 0;
 
- 		$data['username'] = isset($data['username']) ? trim($data['username']) : '';
 
- 		$data['op_userid'] = isset($data['op_userid']) && intval($data['op_userid']) ? intval($data['op_userid']) : 0;
 
- 		$data['op_username'] = isset($data['op_username']) ? trim($data['op_username']) : '';
 
- 		$data['type'] = isset($data['type']) && intval($data['type']) ? intval($data['type']) : 0;
 
- 		$data['value'] = isset($data['value']) && intval($data['value']) ? abs(intval($data['value'])) : 0;
 
- 		$data['msg'] = isset($data['msg']) ? trim($data['msg']) : '';
 
- 		$data['logo'] = isset($data['logo']) ? trim($data['logo']) : '';
 
- 		$data['creat_at'] = SYS_TIME;
 
- 		
 
- 		//检察消费类型
 
- 		if (!in_array($data['type'], array(1,2))) {
 
- 			return false;
 
- 		}
 
- 		
 
- 		//检察消费描述
 
- 		if (empty($data['msg'])) {
 
- 			self::$msg = 1;
 
- 			return false;
 
- 		}
 
- 		
 
- 		//检察消费金额
 
- 		if (empty($data['value'])) {
 
- 			self::$msg = 2;
 
- 			return false;
 
- 		}
 
- 		
 
- 		//检察userid和username并偿试再次的获取
 
- 		if (empty($data['userid']) || empty($data['username'])) {
 
- 			if (defined('IN_ADMIN')) {
 
- 				self::$msg = 3;
 
- 				return false;
 
- 			} elseif (!$data['userid'] = param::get_cookie('_userid') || !$data['username'] = param::get_cookie('_username')) {
 
- 				self::$msg = 3;
 
- 				return false;
 
- 			} else {
 
- 				self::$msg = 3;
 
- 				return false;
 
- 			}
 
- 		}
 
- 		
 
- 		//检察op_userid和op_username并偿试再次的获取
 
- 		if (defined('IN_ADMIN') && (empty($data['op_userid']) || empty($data['op_username']))) {
 
- 			$data['op_username'] = param::get_cookie('admin_username');
 
- 			$data['op_userid'] = param::get_cookie('userid');
 
- 		}
 
- 		
 
- 		//数据库连接
 
- 		if (empty(self::$db)) {
 
- 			self::connect();
 
- 		}
 
- 		$member_db = pc_base::load_model('member_model');
 
- 		
 
- 		//判断用户的金钱或积分是否足够。
 
- 		if (!self::_check_user($data['userid'], $data['type'], $data['value'], $member_db)) {
 
- 			self::$msg = 6;
 
- 			return false;
 
- 		} 
 
- 				
 
- 		$sql = array();
 
- 		if ($data['type'] == 1) {//金钱方式消费
 
- 			$sql = array('amount'=>"-=".$data['value']);
 
- 		} elseif ($data['type'] == 2) { //积分方式消费
 
- 			$sql = array('point'=>'-='.$data['value']);
 
- 		} else {
 
- 			self::$msg = 7;
 
- 			return false;
 
- 		}
 
- 		
 
- 		//进入数据库操作
 
- 		if ($member_db->update($sql, array('userid'=>$data['userid'], 'username'=>$data['username'])) && self::$db->insert($data)) {
 
- 			self::$msg = 0;
 
- 			return true;
 
- 		} else {
 
- 			self::$msg = 8;
 
- 			return false;
 
- 		}
 
- 	}
 
- 	
 
- /**
 
-  * 判断用户的金钱、积分是否足够
 
-  * @param integer $userid    用户ID
 
-  * @param integer $type      判断(1:金钱,2:积分)
 
-  * @param integer $value     数量
 
-  * @param $db                数据库连接
 
-  */
 
- 	private static function _check_user($userid, $type, $value, &$db) {
 
- 		if ($user = $db->get_one(array('userid'=>$userid), '`amount`, `point`')) {
 
- 			if ($type == 1) { //金钱消费
 
- 				if ($user['amount'] < $value) {
 
- 					return false;
 
- 				} else {
 
- 					return true;
 
- 				}
 
- 			} elseif ($type == 2) { //积分
 
- 				if ($user['point'] < $value) {
 
- 					return false;
 
- 				} else {
 
- 					return true;
 
- 				}
 
- 			} else {
 
- 				return false;
 
- 			}
 
- 		} else {
 
- 			return false;
 
- 		}
 
- 	}
 
- 	
 
- 	/**
 
- 	 * 
 
- 	 * 获取详细的报错信息
 
- 	 */
 
- 	public static function get_msg() {
 
- 		$msg = self::$msg;
 
- 		$arr = array(
 
- 			'1' => L('spend_msg_1', '', 'pay'),
 
- 			'2' => L('spend_msg_2', '', 'pay'),
 
- 			'3' => L('spend_msg_3', '', 'pay'),
 
- 			'6' => L('spend_msg_6', '', 'pay'),
 
- 			'7' => L('spend_msg_7', '', 'pay'),
 
- 			'8' => L('spend_msg_8', '', 'pay'),
 
- 		);
 
- 		return isset($arr[$msg]) ? $arr[$msg] : false;
 
- 	}
 
- }
 
 
  |