card.ctrl.php 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. /**
  3. * [WeEngine System] Copyright (c) 2014 WE7.CC
  4. * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
  5. */
  6. defined('IN_IA') or exit('Access Denied');
  7. $dos = array('use');
  8. $do = in_array($do, $dos) ? $do : 'use';
  9. if($do == 'use') {
  10. load()->model('card');
  11. $card_setting = card_setting();
  12. $card_params = json_decode($card_setting['params'], true);
  13. if (!empty($card_params)) {
  14. foreach ($card_params as $key => $value) {
  15. if ($value['id'] == 'cardActivity') {
  16. $grant_rate = $value['params']['grant_rate'];
  17. }
  18. }
  19. }
  20. $card_setting['grant_rate'] = $grant_rate;
  21. if(is_error($card_setting)) {
  22. message($card_setting['message'], referer(), 'error');
  23. }
  24. $card_member = card_member($uid);
  25. if(is_error($card_member)) {
  26. message($card_member['message'], referer(), 'error');
  27. }
  28. $stores = pdo_fetchall('SELECT id,business_name FROM ' . tablename('activity_stores') . ' WHERE uniacid = :uniacid', array(':uniacid' => $_W['uniacid']), 'id');
  29. if(checksubmit()) {
  30. $credit = max(0, floatval($_GPC['credit']));
  31. $discount_credit = $credit;
  32. $store_id = intval($_GPC['store_id']);
  33. $store_str = (!$store_id || empty($stores[$store_id])) ? '未知' : $stores[$store_id]['business_name'];
  34. if(!$credit || $credit <= 0) {
  35. message('请输入消费金额', referer(), 'error');
  36. }
  37. if($card_setting['discount_type'] > 0 && !empty($card_setting['discount'])) {
  38. $discount = $card_setting['discount'][$member['groupid']];
  39. if(!empty($discount['condition']) && !empty($discount['discount']) && $credit >= $discount['condition']) {
  40. if($card_setting['discount_type'] == 1) {
  41. $discount_credit = $credit - $discount['discount'];
  42. $discount_str = ",该会员属于【{$member['groupname']}】,可享受【满{$discount['condition']}元减{$discount['discount']}元】,最终支付【{$discount_credit}】元";
  43. } else {
  44. $rate = $discount['discount'];
  45. $discount_credit = $credit * $rate;
  46. $discount_str = ",该会员属于【{$member['groupname']}】,可享受【满{$discount['condition']}元打{$rate}折】,最终支付【{$discount_credit}】元";
  47. }
  48. if($discount_credit < 0) {
  49. $discount_credit = 0;
  50. }
  51. }
  52. }
  53. if($member['credit2'] < $discount_credit) {
  54. message('余额不足', referer(), 'error');
  55. }
  56. if($card_setting['grant_rate'] > 0) {
  57. $credit1 = $discount_credit * $card_setting['grant_rate'];
  58. $log_credit1 = array(
  59. $member['uid'],
  60. "使用会员卡消费【{$discount_credit}】元,消费返积分比率:【1:{$card_setting['grant_rate']}】,共赠送积分{$credit1}",
  61. 'card',
  62. $clerk['id']
  63. );
  64. mc_credit_update($member['uid'], 'credit1', $credit1, $log_credit1);
  65. $discount_str .= ",消费返积分比率:【1:{$card_setting['grant_rate']}】,共赠送积分{$credit1}";
  66. }
  67. $log_credit2 = array(
  68. $member['uid'],
  69. "使用会员卡消费【{$credit}】元 {$discount_str},消费门店:{$store_str}",
  70. 'card',
  71. $clerk['id']
  72. );
  73. mc_credit_update($member['uid'], 'credit2', -$discount_credit, $log_credit2);
  74. mc_notice_credit2($card_member['openid'], $member['uid'], -$discount_credit, $credit1, $store_str);
  75. message("消费成功,共扣除余额{$discount_credit}元,赠送{$credit1}积分", url('clerk/check'), 'success');
  76. }
  77. if($card_setting['discount_type'] != 0 && !empty($card_setting['discount'])) {
  78. $discount = $card_setting['discount'];
  79. if(!empty($discount[$member['groupid']])) {
  80. $tips = "该会员所在的会员组: {$_W['account']['groups'][$member['groupid']]['title']} ,可享受满 {$discount[$member['groupid']]['condition']} ";
  81. if($card_setting['discount_type'] == 2) {
  82. $tips .= "打 {$discount[$member['groupid']]['discount']} 折";
  83. } else {
  84. $tips .= "减 {$discount[$member['groupid']]['discount']} 元";
  85. }
  86. $mine_discount = $discount[$member['groupid']];
  87. }
  88. }
  89. }
  90. template('clerk/card');