oper_sms.php 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. <?php
  2. defined('InShopNC') or exit('Access Invalid!');
  3. require_once(BASE_ROOT_PATH . '/helper/algorithm.php');
  4. require_once(BASE_ROOT_PATH . '/helper/account_helper.php');
  5. require_once(BASE_ROOT_PATH . '/helper/sms_helper.php');
  6. class oper_smsControl extends SystemControl
  7. {
  8. public function __construct()
  9. {
  10. parent::__construct();
  11. }
  12. public function indexOp()
  13. {
  14. $sms_template = Model('sms_template');
  15. $template_list = $sms_template->select();
  16. Tpl::output('template_list', $template_list);
  17. Tpl::showpage('oper_sms');
  18. }
  19. public function sms_addOp()
  20. {
  21. $sms_title = trim($_POST['sms_title']);
  22. $yuntx_id = intval(trim($_POST['yuntx_id']));
  23. $sms_content = trim($_POST['sms_content']);
  24. if (empty($sms_title) || $yuntx_id <= 0 || empty($sms_content)) {
  25. return showMessage("参数错误", 'index.php?act=oper_sms&op=index', '', 'error');
  26. }
  27. $sms_template = Model('sms_template');
  28. $data = array('yuntx_id' => $yuntx_id, 'title' => $sms_title, 'content' => $sms_content);
  29. $ret = $sms_template->insert($data);
  30. if ($ret != false) {
  31. showMessage(Language::get('nc_common_save_succ'), 'index.php?act=oper_sms&op=index');
  32. } else {
  33. showMessage("存入数据库失败", 'index.php?act=oper_sms&op=index', '', 'error');
  34. }
  35. }
  36. private function add_params($input, &$err)
  37. {
  38. $params = [];
  39. $params['member']['input_type'] = $input['input_type'];
  40. if (empty($input['members'])) {
  41. $err = "手机号码或者SQL语句为空";
  42. return false;
  43. } else {
  44. $params['member']['data'] = $input['members'];
  45. }
  46. $params['member']['ex_brand'] = $input['ex_brand'] == 'on' ? true : false;
  47. $params['member']['ex_lrlz'] = $input['ex_lrlz'] == 'on' ? true : false;
  48. if($input['operatetype'] == 'sms')
  49. {
  50. $tmpid = $input['sms_template'];
  51. if ($tmpid <= 0) {
  52. $err = "错误的短信模版";
  53. return false;
  54. }
  55. $params['send']['type'] = 'sms';
  56. $params['send']['data'] = $tmpid;
  57. }
  58. else
  59. {
  60. if(empty($input['pushcontet'])) {
  61. $err = "push 内容不能为空";
  62. return false;
  63. } else {
  64. $params['send']['type'] = 'push';
  65. $params['send']['data'] = $input['pushcontet'];
  66. }
  67. }
  68. return $params;
  69. }
  70. public function send_sms_pushOp()
  71. {
  72. if (chksubmit())
  73. {
  74. $params = $this->add_params($_POST,$error);
  75. if($params == false) {
  76. showMessage($error,'index.php?act=person_bonus&op=add','','error');
  77. } else {
  78. QueueClient::push('sendPushOrSMS',$params);
  79. showMessage("成功放入推送队列", 'index.php?act=oper_sms&op=index');
  80. }
  81. }
  82. else
  83. {
  84. $items = Model()->table('sms_template')->where(array('disable' => 0))->field('yuntx_id,title,content')->select();
  85. Tpl::output('sms_tpls',$items);
  86. Tpl::showpage('oper_send.smspush');
  87. }
  88. }
  89. public function awaken_userOp()
  90. {
  91. if(chksubmit())
  92. {
  93. }
  94. else {
  95. Tpl::showpage('oper_send.awaken');
  96. }
  97. }
  98. public function bonus_awakenOp()
  99. {
  100. $days = intval($_POST['days']);
  101. $paysn = $_POST['paysn'];
  102. $amount = floatval($_POST['amount']);
  103. if(empty($paysn)) {
  104. showMessage("参数错误,paysn 不能为空",'index.php?act=oper_sms&op=awaken_user','','error');
  105. }
  106. else {
  107. QueueClient::push('onAsyncBroadcastOrder',['pay_sn' => $paysn,'amount' => $amount,'days' => $days]);
  108. showMessage("成功放入推送队列", 'ndex.php?act=oper_sms&op=awaken_user');
  109. }
  110. }
  111. private function format_member_filter($input)
  112. {
  113. $filters = [];
  114. if(isset($input['offtime']) && intval($input['offtime']) > 0) {
  115. $filters[] = ['type' => 'offtime', 'days' => intval($input['offtime'])];
  116. }
  117. if(isset($input['regtime']) && intval($input['regtime']) > 0) {
  118. $filters[] = ['type' => 'regtime', 'days' => intval($input['regtime'])];
  119. }
  120. if(isset($input['order_numgt']) && intval($input['order_numgt']) > 0) {
  121. $filters[] = ['type' => 'order_numgt', 'count' => intval($input['order_numgt'])];
  122. }
  123. if(isset($input['order_days']) && intval($input['order_days']) > 0) {
  124. $filters[] = ['type' => 'order_days', 'days' => intval($input['order_days'])];
  125. }
  126. if(isset($input['bonus_rate']) && floatval($input['bonus_rate']) > 0) {
  127. $filters[] = ['type' => 'bonus_rate', 'rate' => floatval($input['bonus_rate'])];
  128. }
  129. if(isset($input['bonus_amount']) && intval($input['bonus_amount']) > 0) {
  130. $filters[] = ['type' => 'bonus', 'amount' => intval($input['bonus_amount'])];
  131. }
  132. if(isset($input['gift']) && !empty($input['gift'])) {
  133. $filters[] = ['type' => 'gift', 'value' => boolval($input['gift'])];
  134. }
  135. if(isset($input['invitor']) && !empty($input['invitor'])) {
  136. $filters[] = ['type' => 'invitor', 'value' => boolval($input['invitor'])];
  137. }
  138. return $filters;
  139. }
  140. private function format_sms_filter($input)
  141. {
  142. $filters = [];
  143. if(isset($input['sms_offtime']) && intval($input['sms_offtime']) > 0) {
  144. $filters[] = ['type' => 'offtime', 'days' => intval($input['sms_offtime'])];
  145. }
  146. if(isset($input['sms_regtime']) && intval($input['sms_regtime']) > 0) {
  147. $filters[] = ['type' => 'regtime', 'days' => intval($input['sms_regtime'])];
  148. }
  149. return $filters;
  150. }
  151. public function brand_awakenOp()
  152. {
  153. $amount = intval($_POST['bonus_num']);
  154. $brand = trim($_POST['brand']);
  155. $openurl = trim($_POST['openurl']);
  156. //if(empty($amount) ||empty($brand) || empty($openurl) || empty($et_amount)) {
  157. if(empty($amount) ||empty($brand) || empty($openurl)) {
  158. showMessage("参数错误,红包金额或宣传品牌或传送地址 不能为空",'index.php?act=oper_sms&op=awaken_user','','error');
  159. }
  160. else
  161. {
  162. $filters = [
  163. 'member_filters' => [],
  164. 'sms_filters' => []
  165. ];
  166. $send_params =['type' => Sms::tpl_new_goods,
  167. 'sms_params' => ['day' => '周一','amount' => $amount,'brand' => $brand,'url' => $openurl],
  168. 'push_params' => []];
  169. $member_filters = $this->format_member_filter($_POST);
  170. if(count($member_filters)){
  171. $filters['member_filters'] = $member_filters;
  172. }
  173. $sms_filters = $this->format_sms_filter($_POST);
  174. if(count($sms_filters)){
  175. $filters['sms_filters'] = $sms_filters;
  176. }
  177. $oper_param = ['type' => 'bonus','rate' => 30,'amount' => 50];
  178. if(isset($_POST['bonus_amount']) && intval($_POST['bonus_amount']) > 0)
  179. {
  180. $oper_param = ['type' => 'bonus','rate' => 30,'amount' => intval($_POST['bonus_amount'])];
  181. }
  182. QueueClient::push('onAsyncBroadcastNormal',['filters' => $filters,'oper_param' => $oper_param,'send_params' => $send_params]);
  183. showMessage("成功放入推送队列", 'index.php?act=oper_sms&op=awaken_user');
  184. }
  185. }
  186. public function view_usersOp()
  187. {
  188. $filter_params = $this->format_member_filter($_POST);
  189. if(!empty($filter_params))
  190. {
  191. $filters = async\filter::create($filter_params);
  192. $broadcast = new async\broadcast($filters);
  193. $match_users = $broadcast->count();
  194. if($match_users > 0){
  195. showMessage("有 ". $match_users. " 个用户符合筛选条件", '','json','succ');
  196. }
  197. else {
  198. showMessage("没有用户符合筛选条件", '','json','error');
  199. }
  200. }
  201. else
  202. {
  203. showMessage("请设置筛选条件", '','json','error');
  204. }
  205. }
  206. }