exppoints.model.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. /**
  3. * 经验值及经验值日志管理
  4. *
  5. */
  6. defined('InShopNC') or exit('Access Invalid!');
  7. class exppointsModel extends Model{
  8. /**
  9. * 操作经验值
  10. * @author ShopNC Develop Team
  11. * @param string $stage 操作阶段 login(登录),comments(评论),order(下单)
  12. * @param array $insertarr 该数组可能包含信息 array('exp_memberid'=>'会员编号','exp_membername'=>'会员名称','exp_points'=>'经验值','exp_desc'=>'描述','orderprice'=>'订单金额','order_sn'=>'订单编号','order_id'=>'订单序号');
  13. * @param bool $if_repeat 是否可以重复记录的信息,true可以重复记录,false不可以重复记录,默认为true
  14. * @return bool
  15. */
  16. function saveExppointsLog($stage,$insertarr){
  17. if (!$insertarr['exp_memberid']){
  18. return false;
  19. }
  20. $exppoints_rule = C("exppoints_rule")?unserialize(C("exppoints_rule")):array();
  21. //记录原因文字
  22. switch ($stage){
  23. case 'login':
  24. if (!$insertarr['exp_desc']){
  25. $insertarr['exp_desc'] = '会员登录';
  26. }
  27. $insertarr['exp_points'] = 0;
  28. if (intval($exppoints_rule['exp_login']) > 0){
  29. $insertarr['exp_points'] = intval($exppoints_rule['exp_login']);
  30. }
  31. break;
  32. case 'comments':
  33. if (!$insertarr['exp_desc']){
  34. $insertarr['exp_desc'] = '评论商品';
  35. }
  36. $insertarr['exp_points'] = 0;
  37. if (intval($exppoints_rule['exp_comments']) > 0){
  38. $insertarr['exp_points'] = intval($exppoints_rule['exp_comments']);
  39. }
  40. break;
  41. case 'order':
  42. if (!$insertarr['exp_desc']){
  43. $insertarr['exp_desc'] = '订单'.$insertarr['order_sn'].'购物消费';
  44. }
  45. $insertarr['exp_points'] = 0;
  46. $exppoints_rule['exp_orderrate'] = floatval($exppoints_rule['exp_orderrate']);
  47. if ($insertarr['orderprice'] && $exppoints_rule['exp_orderrate'] > 0){
  48. $insertarr['exp_points'] = @intval($insertarr['orderprice']/$exppoints_rule['exp_orderrate']);
  49. $exp_ordermax = intval($exppoints_rule['exp_ordermax']);
  50. if ($exp_ordermax > 0 && $insertarr['exp_points'] > $exp_ordermax){
  51. $insertarr['exp_points'] = $exp_ordermax;
  52. }
  53. }
  54. break;
  55. }
  56. //新增日志
  57. $value_array = array();
  58. $value_array['exp_memberid'] = $insertarr['exp_memberid'];
  59. $value_array['exp_membername'] = $insertarr['exp_membername'];
  60. $value_array['exp_points'] = $insertarr['exp_points'];
  61. $value_array['exp_addtime'] = time();
  62. $value_array['exp_desc'] = $insertarr['exp_desc'];
  63. $value_array['exp_stage'] = $stage;
  64. $result = false;
  65. if($value_array['exp_points'] != '0'){
  66. $result = self::addExppointsLog($value_array);
  67. }
  68. if ($result){
  69. //更新member内容
  70. $obj_member = Model('member');
  71. $upmember_array = array();
  72. $upmember_array['member_exppoints'] = array('exp','member_exppoints + '.$insertarr['exp_points']);
  73. $obj_member->editMember(array('member_id'=>$insertarr['exp_memberid']),$upmember_array);
  74. return true;
  75. }else {
  76. return false;
  77. }
  78. }
  79. /**
  80. * 添加经验值日志信息
  81. *
  82. * @param array $param 添加信息数组
  83. */
  84. public function addExppointsLog($param) {
  85. if(empty($param)) {
  86. return false;
  87. }
  88. $result = $this->table('exppoints_log')->insert($param);
  89. return $result;
  90. }
  91. /**
  92. * 经验值日志总条数
  93. *
  94. * @param array $where 条件数组
  95. * @param array $field 查询字段
  96. * @param array $group 分组
  97. */
  98. public function getExppointsLogCount($where, $field = '*', $group = '') {
  99. $count = $this->table('exppoints_log')->field($field)->where($where)->group($group)->count();
  100. return $count;
  101. }
  102. /**
  103. * 经验值日志列表
  104. *
  105. * @param array $where 条件数组
  106. * @param mixed $page 分页
  107. * @param string $field 查询字段
  108. * @param int $limit 查询条数
  109. * @param string $order 查询条数
  110. */
  111. public function getExppointsLogList($where, $field = '*', $page = 0, $limit = 0,$order = '', $group = '') {
  112. if (is_array($page)){
  113. if ($page[1] > 0){
  114. return $this->table('exppoints_log')->field($field)->where($where)->page($page[0],$page[1])->order($order)->group($group)->select();
  115. } else {
  116. return $this->table('exppoints_log')->field($field)->where($where)->page($page[0])->order($order)->group($group)->select();
  117. }
  118. } else {
  119. return $this->table('exppoints_log')->field($field)->where($where)->page($page)->order($order)->group($group)->select();
  120. }
  121. }
  122. /**
  123. * 获得阶段说明文字
  124. */
  125. public function getStage(){
  126. $stage_arr = array();
  127. $stage_arr['login'] = '会员登录';
  128. $stage_arr['comments'] = '商品评论';
  129. $stage_arr['order'] = '订单消费';
  130. return $stage_arr;
  131. }
  132. }