You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
5.5 KiB
PHP
166 lines
5.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Yo;
|
|
use Login;
|
|
|
|
class ChatController extends Controller
|
|
{
|
|
//h5新建对话,返回新的对话id
|
|
public function creatNew(){
|
|
|
|
$title=request('title');
|
|
Login::user();
|
|
$UserId=Login::$info->id;
|
|
|
|
if(!isset($UserId)) return Yo::echo(['status' => false,'msg'=>'用户id必填']);
|
|
$id=DB::table('chat_workorders')->insertGetId([
|
|
'userid'=>$UserId,
|
|
'title'=>$title,
|
|
]);
|
|
if($id){
|
|
return Yo::echo(['status' => true,'id'=>$id]);
|
|
}else{
|
|
return Yo::echo(['status' => false]);
|
|
}
|
|
|
|
}
|
|
//h5插入消息
|
|
public function InsertMsg(){
|
|
$MsgInfo=request('MsgInfo');
|
|
Login::user();
|
|
$UserId=Login::$info->id;
|
|
$querywork=DB::table('chat_workorders')->select(['status'])->where(['id'=>$MsgInfo['WorkOrder'],'userid'=>$UserId])->first();
|
|
if($querywork->status==3) return Yo::echo(['status' => false,'msg'=>'工单已关闭,如遇到问题请重新提交工单']);
|
|
$i=DB::table('chat_lists')->insert([
|
|
'work_order_id'=>$MsgInfo['WorkOrder'],
|
|
'msg_type'=>0,
|
|
'userid'=>$UserId,
|
|
'content'=>$MsgInfo['Content']
|
|
]);
|
|
if($i){
|
|
return Yo::echo(['status' => true]);
|
|
}else{
|
|
return Yo::echo(['status' => false,'msg'=>'留言失败']);
|
|
}
|
|
}
|
|
|
|
//h5获取自己的消息记录
|
|
public function GetSelfMsgList(){
|
|
$WorkOrderId=request('WorkOrder');
|
|
Login::user();
|
|
$UserId=Login::$info->id;
|
|
$page=request('Page');
|
|
$pagesize=200;
|
|
$offset=($page-1)*$pagesize;
|
|
$querywork=DB::table('chat_workorders')->select(['status'])->where(['id'=>$WorkOrderId,'userid'=>$UserId])->first();
|
|
if(!isset($querywork)) return Yo::echo(['status' => false,'msg'=>'非法']); //如果没有找到此用户名下工单
|
|
$query=DB::table('chat_lists')
|
|
->where(['work_order_id'=>$WorkOrderId])
|
|
->orderBy('id','desc')
|
|
->offset($offset)->take($pagesize)
|
|
->get();
|
|
|
|
return Yo::echo(['status' => true,'list'=>$query,'workorder_status'=>$querywork]);
|
|
}
|
|
|
|
|
|
//h5获取工单列表
|
|
public function GetWorkOrderList(){
|
|
Login::user();
|
|
$UserId=Login::$info->id;
|
|
//查看是否有未完结工单
|
|
$IncompleteCount=DB::table('chat_workorders')->where('userid',$UserId)->whereIn('status',[1,2])->count();
|
|
$query=DB::select("SELECT a.title,a.status,a.created_at ,b.content,a.id FROM
|
|
( SELECT * FROM chat_workorders WHERE userid = ? AND STATUS <> 0 AND del = 2 ) AS a
|
|
LEFT JOIN (
|
|
select * from( select * from chat_lists where userid = ? AND msg_type = 0 ) as aa INNER JOIN
|
|
(SELECT max(id) as bid, work_order_id as w_id FROM chat_lists WHERE userid = ? AND msg_type = 0 GROUP BY work_order_id) as bb
|
|
on aa.id=bb.bid) AS b ON a.id = b.work_order_id order by a.id desc",[$UserId,$UserId,$UserId] );
|
|
return Yo::echo(['status' => true,'list'=>$query,'incompleteCount'=>$IncompleteCount]);
|
|
}
|
|
//admin获取工单列表
|
|
public function GetAdminWorkOrderList(){
|
|
$search=request('search');
|
|
$page=request('page');
|
|
$pagesize=request('pagesize');
|
|
$offset=($page-1)*$pagesize;
|
|
|
|
$query=DB::select("select a.*,b.nickname from chat_workorders as a left JOIN users as b on a.userid = b.id
|
|
where a.del<>1 order by id desc limit ?,?",[$offset,$pagesize]);
|
|
$count=DB::select("select count(*) as c from chat_workorders as a left JOIN users as b on a.userid = b.id where a.del<>1");
|
|
|
|
return Yo::echo(['count' => $count[0]->c,'list'=>$query]);
|
|
}
|
|
//admin获取工单消息记录
|
|
public function GetAdminMsgList(){
|
|
$WorkOrderId=request('WorkOrder');
|
|
|
|
$querywork=DB::select("select a.*,b.nickname from chat_workorders as a join users as b on a.userid=b.id where a.id=?",[$WorkOrderId]);
|
|
if(isset($querywork)){
|
|
$querywork=$querywork[0];
|
|
}else{
|
|
$querywork='';
|
|
}
|
|
$query=DB::table('chat_lists')
|
|
->where(['work_order_id'=>$WorkOrderId])
|
|
->orderBy('id', )
|
|
->get();
|
|
|
|
return Yo::echo(['status' => true,'list'=>$query,'workOrderInfo'=>$querywork]);
|
|
}
|
|
|
|
//admin插入消息
|
|
public function adminInsertMsg(){
|
|
$Content=request('Content');
|
|
$WorkOrderId=request('WorkOrder');
|
|
$querywork=DB::table('chat_workorders')->select(['status'])->where(['id'=>$WorkOrderId])->first();
|
|
if($querywork->status==3) return Yo::echo(['status' => false,'msg'=>'工单已关闭,无法回复']);
|
|
$i=DB::table('chat_lists')->insert([
|
|
'work_order_id'=>$WorkOrderId,
|
|
'msg_type'=>1,
|
|
'userid'=>0,
|
|
'content'=>$Content
|
|
]);
|
|
if($i){
|
|
return Yo::echo(['status' => true]);
|
|
}else{
|
|
return Yo::echo(['status' => false,'msg'=>'回复失败']);
|
|
}
|
|
}
|
|
|
|
//更改工单信息
|
|
public function changeWorkOrder(){
|
|
$WorkOrderId=request('WorkOrderId');
|
|
$Status=request('Status');
|
|
$u=DB::table('chat_workorders')->where(['id'=>$WorkOrderId])->update([
|
|
'status'=>$Status
|
|
]);
|
|
if($u){
|
|
return Yo::echo(['status' => true,'msg'=>'操作完成']);
|
|
}else{
|
|
return Yo::echo(['status' => false,'msg'=>'操作失败']);
|
|
}
|
|
}
|
|
|
|
//H5用户自己关闭工单
|
|
public function UserChangeWorkOrder(){
|
|
$WorkOrderId=request('WorkOrder');
|
|
Login::user();
|
|
$UserId=Login::$info->id;
|
|
|
|
|
|
$u=DB::table('chat_workorders')->where(['id'=>$WorkOrderId,'userid'=>$UserId])->update([
|
|
'status'=>3
|
|
]);
|
|
if($u){
|
|
return Yo::echo(['status' => true,'msg'=>'操作完成']);
|
|
}else{
|
|
return Yo::echo(['status' => false,'msg'=>'操作失败']);
|
|
}
|
|
}
|
|
}
|