predeposit_helper.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 16/4/12
  6. * Time: 下午4:57
  7. */
  8. class predeposit_helper
  9. {
  10. private $model_pd;
  11. public function __construct() {
  12. $this->model_pd = Model('predeposit');
  13. }
  14. public function get_predeposit()
  15. {
  16. $pd_array = Model('member')->getMemberPdInfo($_SESSION['member_id']);
  17. $total_value = $pd_array['available_predeposit']; // 当前预存款
  18. $freeze_value = $pd_array['freeze_predeposit']; // 当前预存款冻结
  19. return array('total_value' => $total_value,'freeze_value' => $freeze_value);
  20. }
  21. public function get_predeposit_total()
  22. {
  23. $member = Model('member');
  24. $relay_array = $member->getMemberPdInfo($_SESSION['member_id']);
  25. $total = floatval($relay_array['available_predeposit']);
  26. return $total;
  27. }
  28. public function is_enough($money) {
  29. return intval(self::get_predeposit_total() * 100) >= intval($money * 100);
  30. }
  31. public function bonus_add_money($amount,$bonus_sn,$sender_name,$info)
  32. {
  33. $data = array();
  34. $data['member_id'] = $_SESSION['member_id'];
  35. $data['member_name'] = $_SESSION['member_name'];
  36. $data['amount'] = $amount;
  37. $data['order_sn'] = $bonus_sn;
  38. $data['admin_name'] = $sender_name;
  39. $data['pdr_sn'] = $bonus_sn;
  40. $data['lg_desc'] = $info;
  41. $this->model_pd->changePd("bonus_add_money", $data);
  42. }
  43. public function pay_add_money($paysn,$total_fee)
  44. {
  45. // $data = array();
  46. // $data['member_id'] = $member_info['member_id'];
  47. // $data['member_name'] = $member_info['member_name'];
  48. // $data['amount'] = $money;
  49. // $data['order_sn'] = $order_sn;
  50. // $data['admin_name'] = $bonusname;
  51. // $data['pdr_sn'] = $order_sn;
  52. // $data['lg_desc'] = $memo;
  53. // $model_pd->changePd("sys_add_money", $data);
  54. }
  55. public function transform_money($member_id,$name,$amount)
  56. {
  57. $data = array();
  58. $data['member_id'] = $member_id;
  59. $data['member_name'] = is_null($name) ? '' : $name;
  60. $data['amount'] = $amount;
  61. $order_sn = $this->model_pd->makeSn();
  62. $data['order_sn'] = $order_sn;
  63. $data['admin_name'] = '平台管理员';
  64. $data['pdr_sn'] = $order_sn;
  65. $data['lg_desc'] = '版本升级,余额迁移.';
  66. $this->model_pd->changePd("sys_add_money",$data);
  67. }
  68. public function hand_out_bonus($amount,$bonus_sn,$sender_name,$info) {
  69. $data = array();
  70. $data['member_id'] = $_SESSION['member_id'];
  71. $data['member_name'] = $_SESSION['member_name'];
  72. $data['amount'] = $amount;
  73. $data['order_sn'] = $bonus_sn;
  74. $data['admin_name'] = $sender_name;
  75. $data['pdr_sn'] = $bonus_sn;
  76. $data['lg_desc'] = $info;
  77. $this->model_pd->changePd("hand_out_bonus", $data);
  78. }
  79. private function filter_sn($lg_desc)
  80. {
  81. //发送红包系统调节预存款【减少】,红包单号: 910514563264556490
  82. $pos = mb_strpos($lg_desc,':');
  83. if($pos != false) {
  84. return mb_substr($lg_desc,$pos + 1);
  85. }
  86. return '';
  87. }
  88. public function filter_pd_log($items)
  89. {
  90. $pdlogs = array();
  91. foreach($items as $val)
  92. {
  93. $item = array();
  94. $av_amount = $val['lg_av_amount'];
  95. $freeze_amount = $val['lg_freeze_amount'];
  96. $admin_name = $val['lg_admin_name'];
  97. $add_time = $val['lg_add_time'];
  98. $type = $val['lg_type'];
  99. $sn = $this->filter_sn($val['lg_desc']);
  100. $item['av_amount'] = $av_amount;
  101. $item['freeze_amount'] = $freeze_amount;
  102. $item['add_time'] = $add_time;
  103. $fAdd = true;
  104. if($type == 'order_pay') {
  105. $item['title'] = "支付订单";
  106. $item['sn'] = "订单号:{$sn}";
  107. }
  108. else if($type == 'order_freeze') {
  109. $item['title'] = "下单,冻结预存款";
  110. $item['sn'] = "订单号:{$sn}";
  111. }
  112. else if($type == 'order_cancel') {
  113. $item['title'] = "取消订单,解冻预存款";
  114. $item['sn'] = "订单号:{$sn}";
  115. }
  116. else if($type == 'order_comb_pay') {
  117. $item['title'] = "下单,支付被冻结的预存款";
  118. $item['sn'] = "订单号:{$sn}";
  119. $item['av_amount'] = $freeze_amount;
  120. }
  121. else if($type == 'recharge') {
  122. $item['title'] = "充值";
  123. $item['sn'] = "充值单号:{$sn}";
  124. }
  125. else if($type == 'refund') {
  126. $item['title'] = "确认退款";
  127. }
  128. else if($type == 'vr_refund') {
  129. $item['title'] = "虚拟兑码退款成功";
  130. }
  131. else if($type == 'hand_out_bonus') {
  132. $item['title'] = "发出红包";
  133. $item['sn'] = '';
  134. }
  135. else if($type == 'bonus_add_money') {
  136. $item['title'] = "{$admin_name}的红包";
  137. $item['sn'] = '';
  138. }
  139. else if($type == 'sys_add_money') {
  140. $item['title'] = "管理员调节预存款";
  141. $item['sn'] = '';
  142. }
  143. else if($type == 'sys_del_money') {
  144. $item['title'] = "管理员调节预存款";
  145. $item['sn'] = '';
  146. }
  147. else if($type == 'sys_freeze_money') {
  148. $item['title'] = "管理员冻结预存款";
  149. $item['sn'] = "充值单号:{$sn}";
  150. }
  151. else if($type == 'sys_unfreeze_money') {
  152. $item['title'] = "管理员解冻预存款";
  153. $item['sn'] = "充值单号:{$sn}";
  154. }
  155. else {
  156. $fAdd = false;
  157. }
  158. if($fAdd) {
  159. array_push($pdlogs,$item);
  160. }
  161. }
  162. return $pdlogs;
  163. }
  164. //订单总额,可用的余额,当前订单已经使用的余额
  165. //返回分
  166. public function calc_pred($order_amount,$avail_amound,$pd_amount,&$no_cash)
  167. {
  168. if(is_pushoms()) {
  169. $scale = 0.30;
  170. } else {
  171. $scale = 0.99;
  172. }
  173. $cur_used = intval($order_amount * $scale + 0.5);
  174. $cur_used = $cur_used > $avail_amound ? $avail_amound : $cur_used;
  175. if($order_amount == $cur_used) {
  176. $no_cash = true;
  177. } else {
  178. $no_cash = false;
  179. }
  180. return ($cur_used - $pd_amount > 0 ? $cur_used - $pd_amount : 0);
  181. }
  182. // public function calc_pred($pay_sn,&$avail_pred)
  183. // {
  184. // $logic_payment = Logic('payment');
  185. // $result = $logic_payment->getRealOrderInfo($pay_sn, $_SESSION['member_id']);
  186. //
  187. // if(empty($result)) {
  188. // return false;
  189. // }
  190. // $data = $result['data'];
  191. // $order_amount = $data['api_pay_amount'];
  192. //
  193. // $member = Model('member');
  194. // $relay_array = $member->getMemberPdInfo($_SESSION['member_id']);
  195. // $avail_pred = floatval($relay_array['available_predeposit']);
  196. // //$order_list = $data['order_list']; todo 需要更严格的扣费策略,从各个商品考虑
  197. //
  198. // $use_pred = intval(($order_amount * 0.2) * 100);
  199. // $use_pred = $use_pred > intval($avail_pred * 100) ? intval($avail_pred * 100) : $use_pred;
  200. //
  201. // return $use_pred / 100;
  202. // }
  203. }