where(['param_code' => 'sms_fee'])->column('param_value'); if(!$sms_price) { Log::info('短信价格未定,停止发送'); return false; }else { $sms_price = $sms_price[0]; } if($data) { // 发送任务 // $record = Db::table('sms_push_event')->where(['id' => $sms_push_event_id, 'push_type' => 2])->find(); $record = Db::table('sms_push_event')->where(['id' => $sms_push_event_id, 'status' => 0])->find(); if($record) { // 查询是否是定时发送 if($record['send_type'] == 2 && $record['send_time'] > date('Y-m-d H:i:s')) { // 推给redis $stortime = strtotime($record['send_time']); $a = Redis::setEx('expired:sms:'.$record['id'], $stortime - time(), 1); Log::info(' 定时发送,已存入redis, 过期时间->>>' .$record['send_time'] . '/' . $stortime - time() . '保存结果' . $a); }else { // 待发送 if($record['status'] == 0) { Log::info('待发送'); // 范围用户 if($record['user_type'] == 2) { Log::info('范围用户'); $k_user_params = Db::table('sms_push_event_user')->where(['event_id' => $record['id']])->find(); if($k_user_params) { $user_list = ShopInfo::getUserList($k_user_params); if(!$user_list) { return false; } }else { Log::info('范围用户查找出错'); return false; } }elseif ($record['user_type'] == 1) { Log::info('全部用户'); // 全部用户 $user_list = Db::table('tb_shop_user')->whereNotNull('phone')->field('id,phone,nick_name')->select(); $user_list = ShopInfo::evnuserlist($user_list); } $y_temp = Db::table('sms_shop_template')->where(['id' => $record['push_event_id']])->find(); Log::info('用户列表' . json_encode($user_list)); if($user_list && $y_temp) { foreach ($user_list as $k => $v) { // 检测余额 $shop_money = Db::table('sms_shop_money')->where(['shop_id' => $record['shop_id']])->find(); if($shop_money) { // 余额计算 if($shop_money['money'] > $sms_price) { $templateParam = saveJson_arr($record['json'], $y_temp['reple_json'], $v); $data = [ 'templateCode' => $y_temp['template_code'], 'templateParam' => $templateParam, 'phoneNumbers' => $v['phone'], 'signName' => config('cons.sms_sign'), ]; $res = AlibabaSms::main($data); Db::table('sms_push_event')->where(['id' => $record['id']])->update([ 'status' => '1', 'update_time' => date('Y-m-d H:i:s'), 'send_time' => date('Y-m-d H:i:s'), ]); if($res['Code'] == 'OK') { Db::table('sms_push_event_record')->insert([ 'shop_id' => $record['shop_id'], 'event_id' => $record['id'], 'user_id' => $v['user_id'], 'user_phone' => $v['phone'], 'biz_id' => $res['BizId'], 'send_time' => date('Y-m-d H:i:s'), 'create_time' => date('Y-m-d H:i:s'), 'status' => 1, ]); Db::commit(); } }else { Log::info('商户【' . $record['shop_id'] . '】余额不足'); } }else { Log::info('商户【' . $record['shop_id'] . '】余额为空'); } sleep(1); } }else { Log::info('【发送营销短信】无目标用户---》' . $record['user_id']); } } } }else { Log::info('发送营销短信未查询到'); } } }catch (Exception $e) { Db::rollback(); Log::error($e->getMessage()); } } }