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

<?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'=>'操作失败']);
}
}
}