628 lines
26 KiB
PHP
628 lines
26 KiB
PHP
<?php
|
||
|
||
namespace App\Http\Controllers\Admin;
|
||
|
||
use App\Models\Wechat;
|
||
use EasyWechat;
|
||
use Illuminate\Http\Request;
|
||
use App\Http\Controllers\Controller;
|
||
use App\Jobs\SendIMPushMsg;
|
||
use App\Jobs\SendSubTemplateMsg;
|
||
use App\Jobs\SendTemplateMsg;
|
||
use App\Models\Answers;
|
||
use App\Models\AreaUser;
|
||
use App\Models\AssistantUser;
|
||
use App\Models\Message;
|
||
use App\Models\UrlLink;
|
||
use App\Models\User;
|
||
use App\Models\AssistantLinkman;
|
||
use App\Models\ClassArea;
|
||
use App\Models\ClassAreaSetting;
|
||
use App\Models\ClientMessage;
|
||
use App\Models\CommunityActivity;
|
||
use App\Models\Configs;
|
||
use App\Models\FeedbackHistory;
|
||
use App\Models\Followable;
|
||
use App\Models\LinkingRequest;
|
||
use App\Models\Live\Live;
|
||
use App\Models\MessageRecive;
|
||
use App\Models\ProfileCourtship;
|
||
use App\Models\ProfilePhoto;
|
||
use App\Models\RankHistory;
|
||
use App\Models\Server\CollageGroup;
|
||
use App\Models\Server\CollageGroupBatch;
|
||
use App\Models\Server\CollageGroupHistories;
|
||
use App\Models\Server\Counselor;
|
||
use App\Models\Server\MerchantAccount;
|
||
use App\Models\Server\MerchantReport;
|
||
use App\Models\Server\ReportQuestion;
|
||
use App\Models\Server\TouristOrder;
|
||
use App\Models\SystemBlacklist;
|
||
use App\Services\IMService;
|
||
use EasyWeChat\Factory;
|
||
use Illuminate\Support\Facades\DB;
|
||
use Illuminate\Support\Facades\Cache;
|
||
use Illuminate\Support\Facades\Redis;
|
||
|
||
ini_set('max_execution_time', '300');
|
||
class AssistantController extends Controller
|
||
{
|
||
|
||
protected $app;
|
||
protected $config;
|
||
public function __construct(){
|
||
$this->config = [
|
||
'app_id' => config('wechat.official_account.new.app_id'),
|
||
'secret' => config('wechat.official_account.new.secret'),
|
||
'token' => config('wechat.official_account.new.token'),
|
||
'aes_key' => config('wechat.official_account.new.aes_key')
|
||
];
|
||
$this->app = Factory::officialAccount($this->config);
|
||
}
|
||
/**
|
||
* 联系人列表
|
||
* @param Request $request [description]
|
||
* @return [type] [description]
|
||
*/
|
||
public function linkmen(Request $request, AssistantLinkman $link)
|
||
{
|
||
$users = $link->with('user');
|
||
$keyword = $request->input('keyword');
|
||
if ($keyword) {
|
||
$keyword = trim($keyword);
|
||
$users = $users->whereHas('user', function($sql) use($keyword){
|
||
$sql->where('name', 'like', '%'.$keyword.'%')
|
||
->orWhere('mobile', 'like', '%'.$keyword.'%');
|
||
});
|
||
}
|
||
$users = $users->orderBy('id', 'desc')->paginate();
|
||
return $this->success('ok', $users);
|
||
}
|
||
|
||
/**
|
||
* 用户与客服消息列表
|
||
* @param Request $request [description]
|
||
* @return [type] [description]
|
||
*/
|
||
public function userAssistantMessages(Request $request, User $user, AssistantUser $message)
|
||
{
|
||
$messages = $message->where('user_id', $user->id)->with('serviceUser')->orderBy('id', 'desc')->paginate();
|
||
$assistant_user = User::find(1);
|
||
return $this->success('ok', compact('messages', 'user', 'assistant_user'));
|
||
}
|
||
|
||
/**
|
||
* 发消息
|
||
* @param Request $request [description]
|
||
* @param User $user [description]
|
||
* @return [type] [description]
|
||
*/
|
||
public function sendMessage(Request $request, User $user, AssistantUser $message, AssistantLinkman $linkman)
|
||
{
|
||
$content = $request->input('content');
|
||
if (empty($content)) {
|
||
return $this->failure('请输入内容');
|
||
}
|
||
$message->create([
|
||
'user_id'=>$user->id,
|
||
'assistant_user_id'=>1,
|
||
'service_user_id'=>auth()->id(),
|
||
'status'=>0,
|
||
'content'=>$content,
|
||
'type'=>'SEND',
|
||
]);
|
||
|
||
$linkman = $linkman->firstOrcreate(['user_id'=>$user->id]);
|
||
$linkman->updated_at = date('Y-m-d H:i:s');
|
||
$linkman->save();
|
||
return $this->success('ok', $message);
|
||
}
|
||
|
||
//已发短信列表
|
||
public function messageList(Request $request){
|
||
$messages = Message::orderBy('created_at','desc');
|
||
$keyword = $request->keyword;
|
||
$start_time = $request->start_time;
|
||
$end_time = $request->end_time;
|
||
$birthday = $request->birthday;
|
||
if ($start_time && $end_time) {
|
||
$messages = $messages->whereBetween('created_at',[$start_time,$end_time]);
|
||
}
|
||
if ($keyword) {
|
||
$messages = $messages->where(function($sql) use($keyword){
|
||
$sql->where('phone','like','%'.$keyword.'%')
|
||
->orWhere('message','like','%'.$keyword.'%');
|
||
});
|
||
}
|
||
if ($birthday) {
|
||
$messages = $messages->where('message','like','%生日快乐%');
|
||
}
|
||
|
||
$messages = $messages->paginate();
|
||
|
||
foreach ($messages as $message) {
|
||
$mobile = $message->phone;
|
||
$user = User::where('mobile',$mobile)->select('id','nickname','app_avatar','circle_avatar')->first();
|
||
$link = '';
|
||
$str = $message->message;
|
||
if (strstr($str,'http')) { //长链接
|
||
//获取链接起始位置
|
||
$start = strpos($str, 'http');
|
||
//获取链接结束位置
|
||
$end = strrpos($str,'/');
|
||
//截取链接
|
||
$link = substr($str, $start,($end-$start)+4);
|
||
$link = preg_replace('/([\x80-\xff]*)/i','',$link);
|
||
|
||
}
|
||
if (strstr($str, 'ufutx.cn/s/')) { //短链接
|
||
//获取链接起始位置
|
||
$start = strpos($str, 'ufutx.cn/s/');
|
||
//获取链接结束位置
|
||
$end = strrpos($str,'/');
|
||
//截取链接
|
||
$link = substr($str, $start,($end-$start)+4);
|
||
$link = preg_replace('/([\x80-\xff]*)/i','',$link);
|
||
}
|
||
$message->link = $link;
|
||
$message->user = $user;
|
||
}
|
||
|
||
return $this->success('ok',$messages);
|
||
|
||
}
|
||
|
||
//获取点击短信链接人的号码
|
||
public function getPhone(Request $request){
|
||
$uri = $request['uri'];
|
||
$message_id = $request['message_id'];
|
||
$message = Message::where('id',$message_id)->first();
|
||
$message->update(['is_click'=>1]);
|
||
return redirect($uri);
|
||
}
|
||
|
||
//更改短信点击状态 并跳转
|
||
public function messageUrlGoto(Request $request){
|
||
$uri = $request['uri'];
|
||
$link = UrlLink::where('url','like','%uri='.$uri.'%')->first();
|
||
$uri = base64_decode($uri);
|
||
if ($link){
|
||
$link->update(['is_click'=>1]);
|
||
$link->increment('click_num',1);
|
||
}
|
||
return redirect($uri);
|
||
}
|
||
|
||
public function messageUrlGotov2(Request $request){
|
||
$uri = $request['uri'];
|
||
$message_id = $request['message_id'];
|
||
$uri = base64_decode($uri);
|
||
Message::where('id',$message_id)->update(['is_click'=>1]);
|
||
$message = Message::find($message_id);
|
||
$user = User::where('mobile',$message->phone)->first();
|
||
|
||
$now_date = date('Y-m-d H:i:s');
|
||
$send_time = $message->created_at;//短信发送时间
|
||
//过期时间
|
||
$expire_time = date('Y-m-d H:i:s',strtotime('+3 days',strtotime($send_time)));
|
||
if($now_date < $expire_time){//发送时间 小于三天
|
||
// $user->hidden_profile = 'NONE';
|
||
$user->can_be_found = 1;
|
||
$user->save();
|
||
// WrongInfoHistories::where('user_id',$user->id)->where('type','frozen')->delete();
|
||
}
|
||
return redirect($uri);
|
||
}
|
||
|
||
|
||
|
||
//每天发送短信折线图统计
|
||
public function dailySendSms(Request $request){
|
||
if($request->start_time && $request->end_time){
|
||
$start_time = $request->start_time;
|
||
$end_time = $request->end_time;
|
||
//间隔天数
|
||
$between_time = ceil((strtotime($end_time) - strtotime($start_time))/3600/24) + 1;
|
||
for($i=0; $i<$between_time; $i++){
|
||
$date[] = date("Y-m-d 00:00:00",strtotime("+$i day", strtotime($start_time)));
|
||
}
|
||
}
|
||
|
||
foreach ($date as $start_time) {
|
||
$end_time = date("Y-m-d 23:59:59",strtotime($start_time));
|
||
$date_arr[] = $start_time;
|
||
|
||
$message_count = Message::whereBetween('created_at',[$start_time,$end_time])->count();
|
||
$messages_count[] = $message_count;
|
||
|
||
$click_count = Message::where('is_click',1)->whereBetween('created_at',[$start_time,$end_time])->count();
|
||
$clicks_count[] = $click_count;
|
||
}
|
||
return $this->success('ok',compact('date_arr','messages_count','clicks_count'));
|
||
}
|
||
|
||
//短信统计点击率
|
||
public function messageClickRate(Request $request){
|
||
$page = $request->input('page',1);//第几页
|
||
$size = $request->input('size',15);//每页数量
|
||
$keyword = $request->keyword;
|
||
$key = 'message_click_rate_'.$request->page;
|
||
|
||
if(!$keyword){
|
||
if (Cache::has($key)) {
|
||
$data = Cache::get($key);
|
||
if($data){
|
||
return $this->success($data['count'],$data['results']);
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
if ($keyword) {
|
||
$keyword = trim($keyword);
|
||
$count = 15;
|
||
$sql = "SELECT u.id,u.nickname ,u.app_avatar,u.circle_avatar,u.mobile,
|
||
|
||
(SELECT COUNT(*) FROM ufutx_messages as m WHERE m.phone = u.mobile AND created_at >= '2021-06-01 00:00:00') as sms_count,
|
||
|
||
(SELECT COUNT(*) FROM ufutx_messages as m WHERE m.phone = u.mobile AND is_click = 1 AND created_at >= '2021-06-01 00:00:00') as sms_click_num
|
||
|
||
FROM ufutx_users as u where (SELECT COUNT(*) FROM ufutx_messages as m WHERE m.phone = u.mobile AND created_at >= '2021-06-01 00:00:00')>0 AND u.nickname like '%".$keyword."%'
|
||
|
||
order by sms_click_num desc , sms_count desc LIMIT ".($page-1)*$size.',15';
|
||
} else {
|
||
|
||
// $count = Message::where('created_at','>','2021-06-01 00:00:00')->groupBy('phone')->count();
|
||
$query = "SELECT COUNT(1) FROM (SELECT * FROM `ufutx_messages` WHERE created_at > '2021-06-01 00:00:00' GROUP BY phone) as messagecount";
|
||
$count = DB::select($query);
|
||
|
||
$sql = "SELECT u.id,u.nickname ,u.app_avatar,u.circle_avatar,u.mobile,
|
||
|
||
(SELECT COUNT(*) FROM ufutx_messages as m WHERE m.phone = u.mobile AND created_at >= '2021-06-01 00:00:00') as sms_count,
|
||
|
||
(SELECT COUNT(*) FROM ufutx_messages as m WHERE m.phone = u.mobile AND is_click = 1 AND created_at >= '2021-06-01 00:00:00') as sms_click_num
|
||
|
||
FROM ufutx_users as u where (SELECT COUNT(*) FROM ufutx_messages as m WHERE m.phone = u.mobile AND created_at >= '2021-06-01 00:00:00')>0
|
||
|
||
order by sms_click_num desc , sms_count desc LIMIT ".($page-1)*$size.',15';
|
||
}
|
||
|
||
|
||
|
||
$results = DB::select($sql);
|
||
|
||
if(!$keyword){
|
||
$data = ['count'=>$count,'results'=>$results];
|
||
Cache::put($key,$data,86400);
|
||
}
|
||
|
||
if (!empty($results)){
|
||
foreach ($results as $result) {
|
||
if ($result->sms_count == 0) {
|
||
$result->click_rate = 0;
|
||
}else {
|
||
$result->click_rate = ($result->sms_click_num) / ($result->sms_count);
|
||
}
|
||
|
||
}
|
||
}
|
||
return $this->success($count,$results);
|
||
}
|
||
|
||
//生日短信点击率
|
||
public function birthdaySmsInfo(Request $request){
|
||
$birth_send_sms_count = Message::where('message','like','%生日快乐%')->count();//发送生日短信总数
|
||
$birth_click_sms_count = Message::where('message','like','%生日快乐%')->where('is_click',1)->count();//生日短信点击总数
|
||
|
||
$get_rank_by_birth_sms = RankHistory::where('type','birthday_give')->count();//领取生日会员数
|
||
if ($birth_send_sms_count == 0){
|
||
$birth_sms_click_rate = 0;
|
||
$get_rank_by_birth_sms_rate = 0;
|
||
}else{
|
||
$birth_sms_click_rate = ($birth_click_sms_count)/($birth_send_sms_count);//生日短信点击率
|
||
$get_rank_by_birth_sms_rate = ($get_rank_by_birth_sms) / ($birth_send_sms_count);//生日会员领取率
|
||
}
|
||
|
||
return $this->success('ok',compact('birth_send_sms_count','birth_click_sms_count','get_rank_by_birth_sms','birth_sms_click_rate','get_rank_by_birth_sms_rate'));
|
||
}
|
||
|
||
|
||
public function testSendMessages(Request $request){
|
||
// $result = \WechatService::queryBankCardOrder($request->trade_no);
|
||
// dd($result);
|
||
//优质单身加入置顶
|
||
// $good_singles = ClassArea::where('id',$request->area_id)->first();
|
||
// try {
|
||
// $good_singles = AreaUser::where('area_id',$request->area_id)->where('is_show',1)->where('is_audited',1)->select('id','user_id','area_id')->get();
|
||
// DB::beginTransaction();
|
||
// foreach ($good_singles as $key => $good_single) {
|
||
// AreaUser::updateOrCreate(['area_id'=>1,'user_id'=>$good_single->user_id],['is_show'=>1,'is_audited'=>1,'is_apply'=>0]);
|
||
// }
|
||
// DB::commit();
|
||
// return $this->success('ok');
|
||
// } catch (\Exception $e) {
|
||
// DB::rollBack();
|
||
// $this->getError($e);
|
||
// return $this->failure();
|
||
// }
|
||
$type_ids = ReportQuestion::withTrashed()->where('m_id',0)->pluck('type_id')->toArray();
|
||
$result = CommunityActivity::whereIn('id',$type_ids)->select('id','merchant_id')->get();
|
||
foreach ($result as $key => $value) {
|
||
ReportQuestion::withTrashed()->where('type_id',$value->id)->update(['m_id'=>$value->merchant_id]);
|
||
}
|
||
// $time = MerchantReport::where('id',2)->first();
|
||
// if($time && $time->commitd_at){
|
||
// $commitd_arr = json_decode($time->commitd_at,true);
|
||
// // dd($commitd_arr);
|
||
// sort($commitd_arr);
|
||
// dd($commitd_arr);
|
||
// foreach ($commitd_arr as $key => $value) {
|
||
// $commitd_at[$key] = $value;
|
||
// }
|
||
// $time->commitd_at = $commitd_at;
|
||
// }
|
||
return $this->success('ok');
|
||
}
|
||
|
||
//自定义学历排序 degree 1专 2本 3硕 4博
|
||
public function degreeSort($min_degree = null,$max_degree = null){
|
||
$degree_arr = ['专科','本科','硕士','博士'];
|
||
$need_arr = [];
|
||
if(empty($min_degree) && empty($max_degree)){
|
||
return $need_arr;
|
||
}elseif(empty($min_degree) && !empty($max_degree)){
|
||
foreach ($degree_arr as $key => $value) {
|
||
$need_arr[] = $value;
|
||
if($max_degree == $key+1) return $need_arr;
|
||
}
|
||
}elseif(!empty($min_degree) && empty($max_degree)){
|
||
foreach ($degree_arr as $key => $value) {
|
||
$need_arr[] = $value;
|
||
if($min_degree == $key+1) return $need_arr;
|
||
}
|
||
}elseif(!empty($min_degree) && !empty($max_degree) && $min_degree != $max_degree){
|
||
foreach ($degree_arr as $key => $value) {//23 12
|
||
if($min_degree > ($key + 1)) continue;
|
||
$need_arr[] = $value;
|
||
if($max_degree == $key+1) return $need_arr;
|
||
}
|
||
}else{//最低学历最高学历相等
|
||
$need_arr[] = $degree_arr[$min_degree-1];
|
||
return $need_arr;
|
||
}
|
||
}
|
||
|
||
public function sendCilentMessage(Request $request)
|
||
{
|
||
//短信内容
|
||
$content = '【福恋】诚邀专注婚恋交际、家庭情感、个人成长领域的咨询老师,免费入驻福恋服务商ufutx.cn/s/7Sv,打造您的专属服务平台!';
|
||
//客服手机号
|
||
$mobile = Configs::where('key','client_mobile')->value('value');
|
||
// dd($mobile);
|
||
//咨询师手机号
|
||
$mobiles = Counselor::where('id','>',7)->pluck('mobile')->toArray();
|
||
$nicknames = Counselor::where('id','>',7)->pluck('name')->toArray();
|
||
// 创建客服消息
|
||
ClientMessage::create([
|
||
'mobile'=>$mobile,
|
||
'content'=>$content,
|
||
'mobiles'=>json_encode($mobiles),
|
||
'nicknames'=>json_encode($nicknames,JSON_UNESCAPED_UNICODE),
|
||
'is_completed'=>0,
|
||
'operator'=>auth()->id(),
|
||
]);
|
||
//返回
|
||
return $this->success('ok');
|
||
}
|
||
//给客服分发号码和内容
|
||
public function spreadMessage(Request $request){
|
||
$user = auth()->user();
|
||
$message_id = $request->message_id;
|
||
$send_mobile = $user->mobile;
|
||
$data = ['id'=>0,'mobile'=>'','content'=>'','name'=>'','created_at'=>''];
|
||
if(empty($send_mobile)) return $this->failure('请选择要发送短信的客服号码');
|
||
$message = ClientMessage::where('id',$message_id)->first();
|
||
$mobiles = json_decode($message->mobile);
|
||
if(!in_array($send_mobile,$mobiles)){
|
||
return $this->success('ok',$data);
|
||
}else{
|
||
//已经发送的号码
|
||
$sended_user_mobiles = MessageRecive::where('client_message_id',$message->id)->pluck('mobile')->toArray();
|
||
//总发送的user_id
|
||
$need_user_mobiles = ClientMessage::where('id',$message->id)->value('mobiles');
|
||
$need_user_mobiles = json_decode($need_user_mobiles,true);
|
||
//最终要发送的user_id;
|
||
$final_user_mobiles = array_diff($need_user_mobiles,$sended_user_mobiles);
|
||
if(empty($final_user_mobiles)) return $this->failure('任务已分发完成');
|
||
$user_mobile = array_rand($final_user_mobiles,1);
|
||
$f_user_mobile = $final_user_mobiles[$user_mobile];
|
||
$recive = MessageRecive::create([
|
||
'client_mobile'=>$send_mobile,
|
||
'client_message_id'=>$message->id,
|
||
'mobile'=>$f_user_mobile,
|
||
'status'=>1,
|
||
'is_click'=>0
|
||
]);
|
||
$user = Counselor::where('mobile',$f_user_mobile)->first();
|
||
// $user = User::where('mobile',$f_user_mobile)->first();
|
||
if(empty($user)) return $this->success('ok',$data);
|
||
$url = 'https://love.ufutx.com/h5/#/sincerelyInvite?mobile='.$f_user_mobile;
|
||
$short_url = \CommonUtilsService::createShortUrlv3($url,$recive->id);
|
||
if (strstr($message->content, 'ufutx.cn/s/')) { //短链接
|
||
//获取链接起始位置
|
||
$start = strpos($message->content, 'ufutx.cn/s/');
|
||
//获取链接结束位置
|
||
$end = strrpos($message->content,'/');
|
||
//截取链接
|
||
$link = substr($message->content, $start,($end-$start)+4);
|
||
$link = preg_replace('/([\x80-\xff]*)/i','',$link);
|
||
}
|
||
|
||
$content = str_replace($link,$short_url,$message->content);
|
||
$created_at = $recive->created_at->toDateTimeString();
|
||
$data = ['id'=>$recive->id,'mobile'=>$user->mobile,'content'=>$content,'name'=>$user->name,'created_at'=>$created_at];
|
||
return $this->success('ok',$data);
|
||
}
|
||
return $this->success('ok',$data);
|
||
}
|
||
|
||
public function configClientMobile(Request $request){
|
||
$mobile = $request->mobile;//数组
|
||
$bool = ConfigS::where('key','client_mobile')->first();
|
||
if($bool){
|
||
$mobiles = json_decode($bool->value,true);
|
||
$result = array_merge($mobiles,$mobile);
|
||
$result = json_encode($result);
|
||
$bool->update(['value'=>$result]);
|
||
}else{
|
||
Configs::create([
|
||
'key'=>'client_mobile',
|
||
'value'=>json_encode($mobile),
|
||
'remark'=>'福恋客服发短信号码'
|
||
]);
|
||
}
|
||
return $this->success('ok');
|
||
}
|
||
|
||
public function obtainMobiles(Request $request){
|
||
$mobiles = Configs::where('key','client_mobile')->value('value');
|
||
$mobiles = json_decode($mobiles,true);
|
||
return $this->success('ok',$mobiles);
|
||
}
|
||
//发送客服短信记录
|
||
public function clientMessageHistories(Request $request){
|
||
$keyword = $request->keyword;
|
||
$histories = ClientMessage::with('operator')->select('id','mobile','content','nicknames','created_at','operator');
|
||
if($keyword){
|
||
$keyword = trim($keyword);
|
||
$histories = $histories->where('content','like','%'.$keyword.'%');
|
||
}
|
||
$histories = $histories->orderBy('id','desc')->paginate();
|
||
foreach ($histories as $key => $history) {
|
||
$history->mobile = json_decode($history->mobile);
|
||
$history->nicknames = json_decode($history->nicknames);
|
||
}
|
||
return $this->success('ok',$histories);
|
||
}
|
||
|
||
//客服短信记录详情
|
||
public function clientMessageDetail(Request $request,$message_id){
|
||
$keyword = $request->keyword;
|
||
$status = $request->status??2;
|
||
$result = ClientMessage::where('id',$message_id)->first();
|
||
$content = $result->content;
|
||
$send_time = date('Y-m-d H:i:s',strtotime($result->created_at));
|
||
$messages = MessageRecive::with('counselor')->where('client_message_id',$message_id);
|
||
if($status != 2){
|
||
$messages = $messages->where('status',$status);
|
||
}
|
||
if($keyword){
|
||
$keyword = trim($keyword);
|
||
$messages = $messages->whereHas('counselor',function($sql) use($keyword){
|
||
$sql->where('name','like','%'.$keyword.'%')
|
||
->orWhere('mobile','like','%'.$keyword.'%');
|
||
});
|
||
}
|
||
// 点击数
|
||
$sql = MessageRecive::where('client_message_id',$message_id)->where('is_click',1);
|
||
$click_count = $sql->count();
|
||
$click_mobile = $sql->pluck('mobile')->toArray();
|
||
//入驻数
|
||
$recurte_count = 0;
|
||
$recurte_count = MerchantAccount::whereIn('mobile',$click_mobile)->count();
|
||
$messages = $messages->orderBy('id','desc')->paginate();
|
||
return $this->success('ok',compact('messages','content','send_time','click_count','recurte_count'));
|
||
|
||
}
|
||
public function smsSendStatus(Request $request,$id){
|
||
$status = $request->status??1;
|
||
MessageRecive::where('id',$id)->update(['status'=>$status]);
|
||
return $this->success('ok');
|
||
}
|
||
|
||
//单个客服发送统计
|
||
public function sendSmsStatistics(Request $request,$message_id){
|
||
$user = auth()->user();
|
||
//总发送数
|
||
$send_count = MessageRecive::where('client_mobile',$user->mobile)->where('client_message_id',$message_id)->count();
|
||
$success_count = MessageRecive::where('client_mobile',$user->mobile)->where('client_message_id',$message_id)->where('status',1)->count();
|
||
$fail_count = MessageRecive::where('client_mobile',$user->mobile)->where('client_message_id',$message_id)->where('status',0)->count();
|
||
$message = ClientMessage::where('id',$message_id)->first();
|
||
$send_count_total = count(json_decode($message->nicknames));
|
||
$has_send = MessageRecive::where('client_message_id',$message_id)->count();
|
||
$left_count = $send_count_total-$has_send;
|
||
$content = $message->content;
|
||
return $this->success('ok',compact('send_count','send_count_total','success_count','fail_count','content','left_count'));
|
||
}
|
||
|
||
//单个客服发送记录
|
||
public function sendSmsRecords(Request $request){
|
||
$user = auth()->user();
|
||
// $mobile = $request->mobile;
|
||
$data = [];
|
||
$records = MessageRecive::with('counselor')->where('client_message_id',$request->message_id)->where('client_mobile',$user->mobile)->orderBy('id','desc')->paginate();
|
||
foreach ($records as $key => $record) {
|
||
$data[$key]['id'] = $record->id;
|
||
$data[$key]['status'] = $record->status;
|
||
$data[$key]['mobile'] = $record->counselor ? $record->counselor->mobile : '';
|
||
$data[$key]['name'] = $record->counselor ? $record->counselor->name : '';
|
||
$data[$key]['created_at'] = $record->created_at->toDateTimeString();
|
||
}
|
||
return $this->success('ok',$data);
|
||
}
|
||
|
||
//单个客服任务列表
|
||
public function clientTasks(Request $request){
|
||
$user = auth()->user();
|
||
$ids = [];
|
||
$messages = ClientMessage::orderBy('id','asc')->select('id','mobile','content','created_at')->get();
|
||
foreach ($messages as $key => $message) {
|
||
$mobile = json_decode($message->mobile);
|
||
if(in_array($user->mobile,$mobile)){
|
||
$ids[] = $message->id;
|
||
}
|
||
}
|
||
$result = ClientMessage::whereIn('id',$ids)->select('id','mobile','content','nicknames','is_completed','created_at')->orderBy('is_completed','asc')->orderBy('id','desc')->paginate();
|
||
foreach ($result as $key => $value) {
|
||
$value->send_count = count(json_decode($value->nicknames));
|
||
unset($value->nicknames);
|
||
unset($value->mobile);
|
||
}
|
||
return $this->success('ok',$result);
|
||
}
|
||
|
||
public function messageUrlGotov3(Request $request){
|
||
$uri = $request['uri'];
|
||
$recive_id = $request['recive_id'];
|
||
MessageRecive::where('id',$recive_id)->update(['is_click'=>1]);
|
||
$uri = base64_decode($uri);
|
||
return redirect($uri);
|
||
}
|
||
|
||
public function getWechatUser(Request $request)
|
||
{
|
||
if(isset($request->openid) && $request->openid) {
|
||
$user = \WechatService::getOfficialAccountUser($request->openid);
|
||
} else {
|
||
$wechat = Wechat::find(8);
|
||
$user = \WechatService::getOfficialAccountUser($wechat->official_openid);
|
||
}
|
||
return $this->success('ok',$user);
|
||
}
|
||
|
||
//长链接变短链接
|
||
public function generateShortUrl(Request $request){
|
||
try {
|
||
$long_url = $request->long_url;
|
||
if (empty($long_url)) {
|
||
return $this->failure('链接不能为空');
|
||
}
|
||
$short_url = \CommonUtilsService::shortUrlv3($long_url);
|
||
return $this->success('ok',$short_url);
|
||
}catch (\Exception $e){
|
||
return $this->failure($e->getMessage());
|
||
}
|
||
}
|
||
|
||
}
|