spend.class.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <?php
  2. defined('IN_PHPCMS') or exit('No permission resources.');
  3. /**
  4. * 消费记录类使用说明
  5. * @author chenzhouyu
  6. *
  7. * 直接使用pc_base::load_app_class('spend', 'pay', 0);
  8. * 进行加载。
  9. * 使用spend::amount()进行金钱的消费
  10. * spend::point()进行积分消费
  11. * 当函数返回的结果为false是,可使用spend::get_msg()获取错误原因
  12. *
  13. */
  14. class spend {
  15. //数据库连接
  16. protected static $db;
  17. //错误代码
  18. public static $msg;
  19. /**
  20. * 数据库连接
  21. */
  22. protected static function connect() {
  23. self::$db = pc_base::load_model("pay_spend_model");
  24. }
  25. /**
  26. * 按用户名、时间、标识查询是否有消费记录
  27. * @param integer $userid 用户名
  28. * @param integer $time 时间。 从指定时间到现在的时间范围内。
  29. * @param string $logo 标识
  30. */
  31. public static function spend_time($userid, $time, $logo) {
  32. if (empty(self::$db)) {
  33. self::connect();
  34. }
  35. return self::$db->get_one("`userid` = '$userid' AND `creat_at` BETWEEN '$time' AND '".SYS_TIME."' AND `logo` = '$logo'");
  36. }
  37. /**
  38. * 添加金钱消费记录
  39. * @param integer $value 消费金额
  40. * @param string $msg 消费信息
  41. * @param integer $userid 用户ID
  42. * @param string $username 用户名
  43. * @param integer $op_userid 操作人
  44. * @param string $op_username 操作人用户名
  45. * @param string $logo 特殊标识,如文章消费时,可以对文章进行标识,以满足在一段时间内,都可以再次的使用
  46. */
  47. public static function amount($value, $msg, $userid = '', $username = '', $op_userid = '', $op_username = '', $logo = '') {
  48. return self::_add(array('username'=>$username, 'userid'=>$userid, 'type'=>1, 'value'=>$value, 'op_userid'=>$op_userid, 'op_username'=>$op_username, 'msg'=>$msg,'logo'=>$logo));
  49. }
  50. /**
  51. * 添加积分消费记录
  52. * @param integer $value 消费金额
  53. * @param string $msg 消费信息
  54. * @param integer $userid 用户ID
  55. * @param string $username 用户名
  56. * @param integer $op_userid 操作人
  57. * @param string $op_username 操作人用户名
  58. * @param string $logo 特殊标识,如文章消费时,可以对文章进行标识,以满足在一段时间内,都可以再次的使用
  59. */
  60. public static function point($value, $msg, $userid = '', $username = '', $op_userid = '', $op_username = '', $logo = '') {
  61. return self::_add(array('username'=>$username, 'userid'=>$userid, 'type'=>2, 'value'=>$value, 'op_userid'=>$op_userid, 'op_username'=>$op_username, 'msg'=>$msg,'logo'=>$logo));
  62. }
  63. /**
  64. * 添加消费记录
  65. * @param array $data 添加消费记录参数
  66. */
  67. private static function _add($data) {
  68. $data['userid'] = isset($data['userid']) && intval($data['userid']) ? intval($data['userid']) : 0;
  69. $data['username'] = isset($data['username']) ? trim($data['username']) : '';
  70. $data['op_userid'] = isset($data['op_userid']) && intval($data['op_userid']) ? intval($data['op_userid']) : 0;
  71. $data['op_username'] = isset($data['op_username']) ? trim($data['op_username']) : '';
  72. $data['type'] = isset($data['type']) && intval($data['type']) ? intval($data['type']) : 0;
  73. $data['value'] = isset($data['value']) && intval($data['value']) ? abs(intval($data['value'])) : 0;
  74. $data['msg'] = isset($data['msg']) ? trim($data['msg']) : '';
  75. $data['logo'] = isset($data['logo']) ? trim($data['logo']) : '';
  76. $data['creat_at'] = SYS_TIME;
  77. //检察消费类型
  78. if (!in_array($data['type'], array(1,2))) {
  79. return false;
  80. }
  81. //检察消费描述
  82. if (empty($data['msg'])) {
  83. self::$msg = 1;
  84. return false;
  85. }
  86. //检察消费金额
  87. if (empty($data['value'])) {
  88. self::$msg = 2;
  89. return false;
  90. }
  91. //检察userid和username并偿试再次的获取
  92. if (empty($data['userid']) || empty($data['username'])) {
  93. if (defined('IN_ADMIN')) {
  94. self::$msg = 3;
  95. return false;
  96. } elseif (!$data['userid'] = param::get_cookie('_userid') || !$data['username'] = param::get_cookie('_username')) {
  97. self::$msg = 3;
  98. return false;
  99. } else {
  100. self::$msg = 3;
  101. return false;
  102. }
  103. }
  104. //检察op_userid和op_username并偿试再次的获取
  105. if (defined('IN_ADMIN') && (empty($data['op_userid']) || empty($data['op_username']))) {
  106. $data['op_username'] = param::get_cookie('admin_username');
  107. $data['op_userid'] = param::get_cookie('userid');
  108. }
  109. //数据库连接
  110. if (empty(self::$db)) {
  111. self::connect();
  112. }
  113. $member_db = pc_base::load_model('member_model');
  114. //判断用户的金钱或积分是否足够。
  115. if (!self::_check_user($data['userid'], $data['type'], $data['value'], $member_db)) {
  116. self::$msg = 6;
  117. return false;
  118. }
  119. $sql = array();
  120. if ($data['type'] == 1) {//金钱方式消费
  121. $sql = array('amount'=>"-=".$data['value']);
  122. } elseif ($data['type'] == 2) { //积分方式消费
  123. $sql = array('point'=>'-='.$data['value']);
  124. } else {
  125. self::$msg = 7;
  126. return false;
  127. }
  128. //进入数据库操作
  129. if ($member_db->update($sql, array('userid'=>$data['userid'], 'username'=>$data['username'])) && self::$db->insert($data)) {
  130. self::$msg = 0;
  131. return true;
  132. } else {
  133. self::$msg = 8;
  134. return false;
  135. }
  136. }
  137. /**
  138. * 判断用户的金钱、积分是否足够
  139. * @param integer $userid 用户ID
  140. * @param integer $type 判断(1:金钱,2:积分)
  141. * @param integer $value 数量
  142. * @param $db 数据库连接
  143. */
  144. private static function _check_user($userid, $type, $value, &$db) {
  145. if ($user = $db->get_one(array('userid'=>$userid), '`amount`, `point`')) {
  146. if ($type == 1) { //金钱消费
  147. if ($user['amount'] < $value) {
  148. return false;
  149. } else {
  150. return true;
  151. }
  152. } elseif ($type == 2) { //积分
  153. if ($user['point'] < $value) {
  154. return false;
  155. } else {
  156. return true;
  157. }
  158. } else {
  159. return false;
  160. }
  161. } else {
  162. return false;
  163. }
  164. }
  165. /**
  166. *
  167. * 获取详细的报错信息
  168. */
  169. public static function get_msg() {
  170. $msg = self::$msg;
  171. $arr = array(
  172. '1' => L('spend_msg_1', '', 'pay'),
  173. '2' => L('spend_msg_2', '', 'pay'),
  174. '3' => L('spend_msg_3', '', 'pay'),
  175. '6' => L('spend_msg_6', '', 'pay'),
  176. '7' => L('spend_msg_7', '', 'pay'),
  177. '8' => L('spend_msg_8', '', 'pay'),
  178. );
  179. return isset($arr[$msg]) ? $arr[$msg] : false;
  180. }
  181. }