bonus.php 7.0 KB

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