bonus.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <?php
  2. /**
  3. * 红包管理
  4. *
  5. *
  6. *
  7. ***/
  8. defined('InShopNC') or exit('Access Invalid!');
  9. class bonusControl extends mobileHomeControl
  10. {
  11. public function __construct()
  12. {
  13. parent::__construct();
  14. }
  15. /**
  16. * 首页-获取红包
  17. */
  18. public function modeOp()
  19. {
  20. $type_id = $_GET['type_id'];
  21. $result = Model()->table('bonus_type')->where(array('type_id' => $type_id))->limit(1)->select();
  22. if (!empty($result)) {
  23. Tpl::output('sender', $result[0]['sender']);
  24. Tpl::output('link', self::home_url . "?act=h5_hb&op=bindtel&type_id={$type_id}");
  25. Tpl::showpage('mode', 'h5_hb/mode');
  26. } else {
  27. Tpl::showpage('mode', 'h5_hb/over');
  28. }
  29. }
  30. /**
  31. * 获取红包类型
  32. */
  33. private function getBonusType($type_id)
  34. {
  35. static $bonustype;
  36. if (empty($bonustype)) {
  37. $result = Model()->table('bonus_type')->select();
  38. foreach ($result as $key => $value) {
  39. $typeid = strval($value['type_id']);
  40. $bonustype[$typeid] = $value;
  41. }
  42. }
  43. return $bonustype[$type_id];
  44. }
  45. /**
  46. * 获取红包列表, 红包使用列表数据
  47. */
  48. public function bonus_listOp()
  49. {
  50. // 根据token获取用户ID
  51. $condition = array();
  52. $condition['user_id'] = $_SESSION['member_id'];
  53. if (!empty($condition['user_id']))
  54. {
  55. // 红包总值(直接等于预存款值)
  56. $member = Model('member');
  57. $pd_array = $member->getMemberPdInfo($condition['user_id']);;
  58. $total_value = $pd_array['available_predeposit']; // 当前预存款
  59. $freeze_value = $pd_array['freeze_predeposit']; // 当前预存款冻结
  60. // 获取使用列表
  61. $ret_array = $member->getPdOrderList($condition['user_id']);
  62. self::outsuccess(array('total_value' => $total_value,'freeze_value' => $freeze_value,"ret_array" => $ret_array));
  63. }
  64. }
  65. /**
  66. * 添加余额
  67. */
  68. private function _add_money_ex($member_id, $pointsnum, $order_sn, $pointsdesc, $bonusname)
  69. {
  70. $obj_validate = new Validate();
  71. $obj_validate->validateparam = array(
  72. array("input" => $member_id, "require" => "true", "message" => Language::get('admin_points_member_error_again')),
  73. array("input" => $pointsnum, "require" => "true", 'validator' => 'Compare', 'operator' => ' >= ', 'to' => 1, "message" => Language::get('admin_points_points_min_error'))
  74. );
  75. $error = $obj_validate->validate();
  76. if ($error != '') {
  77. return -1;
  78. }
  79. $money = abs(floatval($pointsnum));
  80. $memo = trim($pointsdesc);
  81. if ($money <= 0) {
  82. return -2; // 输入的金额必需大于0
  83. }
  84. //查询会员信息
  85. $obj_member = Model('member');
  86. $member_id = intval($member_id);
  87. $member_info = $obj_member->getMemberInfo(array('member_id' => $member_id));
  88. if (!is_array($member_info) || count($member_info) <= 0) {
  89. return -3; // 用户信息不对
  90. }
  91. $available_predeposit = floatval($member_info['available_predeposit']);
  92. $freeze_predeposit = floatval($member_info['freeze_predeposit']);
  93. $model_pd = Model('predeposit');
  94. try {
  95. //扣除冻结的预存款
  96. $data = array();
  97. $data['member_id'] = $member_info['member_id'];
  98. $data['member_name'] = $member_info['member_name'];
  99. $data['amount'] = $money;
  100. $data['order_sn'] = $order_sn;
  101. $data['admin_name'] = $bonusname;
  102. $data['pdr_sn'] = $order_sn;
  103. $data['lg_desc'] = $memo;
  104. $model_pd->changePd("bonus_add_money", $data);
  105. return 0; // 操作成功
  106. } catch (Exception $e) {
  107. return -7; // 操作异常
  108. }
  109. return -8;
  110. }
  111. public function gensnOp(){
  112. $model_pd = Model('predeposit');
  113. $user_bonus = Model()->table("user_bonus")->limit(10000)->select();
  114. foreach($user_bonus as $val){
  115. $data = array();
  116. $data['bonus_sn'] = $model_pd->makeSn();
  117. if(intval($val['bonus_sn']) == 100000){
  118. $ret = Model()->table('user_bonus')->where(array('bonus_id' => $val['bonus_id']))->update($data);
  119. if(!$ret){
  120. return joutput_error(errcode::ErrDB);
  121. }
  122. }
  123. }
  124. return joutput_data(null);
  125. }
  126. // 红包绑定
  127. public function bind_bonusOp()
  128. {
  129. // 获取user_id
  130. $condition = array();
  131. $condition['member_id'] = $_SESSION['member_id'];
  132. if (!empty($condition['member_id'])) {
  133. // get member_mobile 获取用户手机号
  134. $member = Model()->table("member")->field("member_mobile")->where($condition)->select();
  135. if (!empty($member)) {
  136. $user_bonus = Model()->table("user_bonus")->where(array('user_mobile' => $member[0]['member_mobile'], 'user_id' => 0))->select();
  137. // 更新user_bonus
  138. if (!empty($user_bonus)) {
  139. Model::beginTransaction();
  140. $bonus_info = array();
  141. foreach ($user_bonus as $value) {
  142. $info = [];
  143. $bonus_type = $this->getBonusType(strval($value['bonus_type_id']));
  144. $info['sender'] = $bonus_type['sender'];
  145. $info['type_name'] = $bonus_type['type_name'];
  146. $info['bonus_value'] = $value['bonus_value'];
  147. array_push($bonus_info, $info);
  148. // 添加预存款
  149. $ret = $this->_add_money_ex($_SESSION['member_id'], $value['bonus_value'], $value["bonus_sn"], '', $bonus_type['type_name']);
  150. if (0 != $ret) {
  151. Model::rollback();
  152. return joutput_error(errcode::ErrDB);
  153. }
  154. }
  155. // 更新为已领取
  156. $data = array();
  157. $data['user_id'] = $_SESSION['member_id'];
  158. $data['status'] = '1';
  159. $ret = Model()->table('user_bonus')->where(array('user_mobile' => $member[0]['member_mobile']))->update($data);
  160. if (0 == $ret) {
  161. Model::rollback();
  162. return joutput_error(errcode::ErrDB);
  163. }
  164. Model::commit();
  165. joutput_data(array('have_bonus' => 1, 'bonus_info' => $bonus_info));
  166. } else {
  167. joutput_data(array('have_bonus' => 0, 'bonus_info' => null));
  168. }
  169. } else {
  170. return joutput_error(errcode::ErrMobileNotBinded);
  171. }
  172. }
  173. }
  174. }