智慧教务系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

189 lines
6.4 KiB

<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址:https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------
namespace app\api\controller\apiController;
use app\Request;
use app\service\api\apiService\CampusService;
use app\service\api\apiService\ChatService;
use app\service\api\apiService\CommonService;
use core\base\BaseApiService;
/**
* 聊天控制器相关接口
* Class Personnel
* @package app\api\controller\apiController
*/
class Chat extends BaseApiService
{
//获取好友关系列表
public function getChatFriendsList(Request $request)
{
$personnel_id = $request->param('personnel_id', '');//员工人力资源表id(两个参数2选1)
$customer_resources_id = $request->param('customer_resources_id', '');//学生资源表id(两个参数2选1)
if (empty($personnel_id) && empty($customer_resources_id)) {
return fail('缺少参数');
}
$where = [
'personnel_id' => $personnel_id,
'customer_resources_id' => $customer_resources_id,
];
$res = (new ChatService())->getChatFriendsPage($where);
return success($res);
}
//获取好友关系详情
public function getChatFriendsInfo(Request $request)
{
$personnel_id = $request->param('personnel_id','');//员工人力资源表id
$customer_resources_id = $request->param('customer_resources_id','');//学生资源表id
if (empty($personnel_id) && empty($customer_resources_id)) {
return fail('缺少参数');
}
$where = [
'personnel_id' => $personnel_id,
'customer_resources_id' => $customer_resources_id,
];
$res = (new ChatService())->getChatFriendsInfo($where);
if(!$res['data']){
//创建好友关系
$add = (new ChatService())->addChatFriends($where);
if(!$add['code']){
return fail('创建好友关系失败');
}else{
$res = (new ChatService())->getChatFriendsInfo($where);
}
}
if(!$res['code']){
return fail($res['msg']);
}
return success($res['data']);
}
//创建好友关系
public function addChatFriends(Request $request)
{
$personnel_id = $request->param('personnel_id', '');
$customer_resources_id = $request->param('customer_resources_id', '');
if (empty($personnel_id) || empty($customer_resources_id)) {
return fail('缺少参数');
}
$where = [
'personnel_id' => $personnel_id,
'customer_resources_id' => $customer_resources_id,
];
//检测好友关系是否存在
$getChatFriendsInfo = (new ChatService())->getChatFriendsInfo($where);
if ($getChatFriendsInfo['data']) {
return fail('好友关系已存在');
}
$addChatFriends = (new ChatService())->addChatFriends($where);
if (!$addChatFriends['code']) {
return fail($addChatFriends['msg']);
}
return success($addChatFriends['data']);
}
//获取聊天记录
public function getChatMessagesList(Request $request)
{
$friend_id = $request->param('friend_id', '');//关联chat_friends表id
if (empty($friend_id)) {
return fail('发送者类型不正确');
}
$where = [
'friend_id' => $friend_id,
];
$res = (new ChatService())->getChatMessagesList($where);
return success($res);
}
//发送聊天内容
public function sendChatMessages(Request $request)
{
$from_type = $request->param('from_type', '');//发送者类型|personnel=员工,customer=学生(客户)
$from_id = $request->param('from_id', '');//发送者ID
$to_id = $request->param('to_id', '');//接收者ID
$friend_id = $request->param('friend_id', '');//关联chat_friends表id
$message_type = $request->param('message_type', '');//消息类型|text=文本,img=图片
$content = $request->param('content', '');//文本内容(JSON 格式扩展字段),文本类型=纯文字,图片类型=绝对路径
if (!in_array($message_type, ['text', 'img'])) {
return fail('消息类型不正确');
}
if (!in_array($from_type, ['personnel', 'customer'])) {
return fail('发送者类型不正确');
}
if (empty($from_id) || empty($to_id) || empty($friend_id) || empty($content)) {
return fail('缺少参数');
}
$data = [
'from_type' => $from_type, // 发送者类型:personnel=员工,customer=学生(客户)
'from_id' => $from_id, // 发送者ID(员工/学生),根据from_type判断
'to_id' => $to_id, // 接收者ID(员工/学生),根据from_type判断
'friend_id' => $friend_id, // 关联chat_friends表id
'message_type' => $message_type, // 消息类型:text=文本,img=图片
'content' => $content // 文本内容(JSON格式扩展字段)
];
$res = (new ChatService())->sendChatMessages($data);
if(!$res['code']){
return fail($res['msg']);
}
return success($res['data']);
}
//修改未读消息数量
public function editUnreadCount(Request $request){
$from_type = $request->param('from_type', '');//发送者类型|personnel=员工,customer=学生(客户)
$from_id = $request->param('from_id', '');//发送者ID
$friend_id = $request->param('friend_id', '');//关联chat_friends表id
if (!in_array($from_type, ['personnel', 'customer'])) {
return fail('发送者类型不正确');
}
if (empty($from_id) || empty($friend_id)) {
return fail('缺少参数');
}
$res = (new ChatService())->editUnreadCount($from_type,$friend_id);
// if(!$res){
// return fail('修改失败');
// }
return success($res);
}
}