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;
- }
- }
|