person_bonus.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. <?php
  2. /**
  3. * 会员红包管理
  4. *
  5. ***/
  6. defined('InShopNC') or exit('Access Invalid!');
  7. require_once(BASE_ROOT_PATH . '/helper/algorithm.php');
  8. require_once(BASE_ROOT_PATH . '/helper/bonus_helper.php');
  9. require_once(BASE_ROOT_PATH . '/helper/account_helper.php');
  10. require_once(BASE_ROOT_PATH . '/helper/member_helper.php');
  11. require_once(BASE_ROOT_PATH . '/helper/sms_helper.php');
  12. require_once(BASE_ROOT_PATH . '/mobile/util/errcode.php');
  13. require_once(BASE_ROOT_PATH . '/helper/util_helper.php');
  14. require_once(BASE_ROOT_PATH . '/helper/employee_award.php');
  15. require_once(BASE_ROOT_PATH . '/admin/control/control.php');
  16. class person_bonusControl extends SystemControl
  17. {
  18. const EXPORT_SIZE = 5000;
  19. public function __construct()
  20. {
  21. parent::__construct();
  22. Language::read('points');
  23. }
  24. public function addOp()
  25. {
  26. if (chksubmit())
  27. {
  28. $obj_validate = new Validator();
  29. $obj_validate->validateparam = array(
  30. array("input"=>$_POST["bonus_rate"], "require"=>"true",'validator'=>'Compare','operator'=>' >= ','to'=> 1,"message" => '红包抵扣率必须大于0'),
  31. array("input"=>$_POST["bonus_amount"], "require"=>"true",'validator'=>'Compare','operator'=>' >= ','to'=> 0.01,"message" => '金额最少一分钱')
  32. );
  33. $error = $obj_validate->validate();
  34. if ($error != ''){
  35. showMessage($error,'','','error');
  36. }
  37. $optype = intval($_POST['operatetype']);
  38. if ($optype == 1)
  39. {
  40. $params = $this->add_params($_POST,$error);
  41. if($params == false) {
  42. showMessage($error,'index.php?act=person_bonus&op=add','','error');
  43. } else {
  44. QueueClient::push('sendBonusAndSMS',$params);
  45. showMessage(Language::get('nc_common_save_succ'),'index.php?act=person_bonus&op=add');
  46. }
  47. }
  48. else
  49. {
  50. $members = member_helper::from_mobiles($_POST['members'],$error);
  51. if(!empty($members))
  52. {
  53. $rate = intval($_POST['bonus_rate']);
  54. $amount = doubleval($_POST['bonus_amount']);
  55. foreach ($members as $member) {
  56. $member_id = $member['member_id'];
  57. $ret = account_helper::withhold_bonus($rate,$amount,$member_id);
  58. }
  59. showMessage(Language::get('nc_common_save_succ'),'index.php?act=person_bonus&op=add');
  60. } else {
  61. showMessage("手机列表为空",'index.php?act=person_bonus&op=add','','error');
  62. }
  63. }
  64. }
  65. else
  66. {
  67. $items = Model()->table('sms_template')->where(array('disable' => 0))->field('yuntx_id,title,content')->select();
  68. Tpl::output('sms_tpls',$items);
  69. Tpl::showpage('person_bonus.add');
  70. }
  71. }
  72. private function add_params($input, &$err)
  73. {
  74. $params= [];
  75. $params['member']['input_type'] = $input['input_type'];
  76. if(empty($input['members'])) {
  77. $err = "手机号码或者SQL语句为空";
  78. return false;
  79. } else {
  80. $params['member']['data'] = $input['members'];
  81. }
  82. $params['member']['ex_brand'] = $input['ex_brand'] == 'on' ? true : false;
  83. $params['member']['ex_lrlz'] = $input['ex_lrlz'] == 'on' ? true : false;
  84. $params['bonus']['rate'] = intval($input['bonus_rate']);;
  85. $params['bonus']['amount'] = doubleval($input['bonus_amount']);;
  86. $params['bonus']['bless'] = $input['bonus_bless'];
  87. $params['bonus']['can_share'] = intval($input['can_share']);
  88. $params['sms']['open'] = $input['send_sms'] == 'on' ? true : false;
  89. if($params['sms']['open'])
  90. {
  91. $tmpid = $input['sms_template'];
  92. if($tmpid <= 0) {
  93. $err = "错误的短信模版";
  94. return false;
  95. }
  96. $params['sms']['template_id'] = $tmpid;
  97. }
  98. return $params;
  99. }
  100. public function checkmemberOp()
  101. {
  102. $name = trim($_GET['name']);
  103. if (!$name){
  104. echo ''; die;
  105. }
  106. $obj_member = Model('member');
  107. $member_info = $obj_member->getMemberInfo(['member_mobile' => $name,'member_mobile_bind' => 1]);
  108. if (is_array($member_info) && count($member_info)>0){
  109. echo json_encode(array('id'=>$member_info['member_id'],'name'=>$name,'points'=>$member_info['member_points']));
  110. }else {
  111. echo ''; die;
  112. }
  113. }
  114. public function promotionOp()
  115. {
  116. if(chksubmit())
  117. {
  118. $copies = intval($_POST['copies']);
  119. if($copies <=0 ) {
  120. $copies = 1;
  121. }
  122. if($copies == 1)
  123. {
  124. $maker = new bonus\activity_bonus();
  125. $ret = $maker->make($_POST);
  126. if($ret == false) {
  127. $err = $maker->err();
  128. showMessage($err,'index.php?act=person_bonus&op=promotion','','error');
  129. } else {
  130. Tpl::output('type_sn',$ret['type_sn']);
  131. Tpl::output('bonus_url',$ret['url']);
  132. Tpl::showpage('person_bonus.activity');
  133. }
  134. }
  135. else
  136. {
  137. $urls = [];
  138. for($i = 0; $i < $copies; ++$i)
  139. {
  140. $maker = new bonus\activity_bonus();
  141. $ret = $maker->make($_POST);
  142. if($ret != false) {
  143. $urls[] = $ret['url'];
  144. }
  145. }
  146. $bonus_url = implode(",",$urls);
  147. Tpl::output('type_sn',"multi_type_sn");
  148. Tpl::output('bonus_url',$bonus_url);
  149. Tpl::showpage('person_bonus.activity');
  150. }
  151. }
  152. else
  153. {
  154. Tpl::showpage('person_bonus.activity');
  155. }
  156. }
  157. public function annual_meetingOp()
  158. {
  159. if(chksubmit())
  160. {
  161. $awards = intval($_POST['awards']);
  162. $members = trim($_POST['members']);
  163. if(empty($awards) || empty($members)) {
  164. showMessage('奖项、员工工号 不能为空','index.php?act=person_bonus&op=annual_meeting','','error');
  165. return;
  166. }
  167. else {
  168. $awarder = new employee_award();
  169. $awarder->send($awards,$members);
  170. showMessage(Language::get('nc_common_save_succ'),'index.php?act=person_bonus&op=annual_meeting');
  171. }
  172. }
  173. else {
  174. Tpl::showpage('person_bonus.annual_meeting');
  175. }
  176. }
  177. }