|
|
@@ -4,8 +4,12 @@ namespace app\controller\api;
|
|
|
|
|
|
use app\extra\basic\Base;
|
|
|
use app\middleware\AuthMiddleware;
|
|
|
+use app\model\saas\SaasChatMsg;
|
|
|
+use app\model\saas\SaasChatStore;
|
|
|
use app\model\saas\SaasStore;
|
|
|
use app\model\system\SystemUser;
|
|
|
+use app\service\saas\ChatStoreService;
|
|
|
+use DI\Attribute\Inject;
|
|
|
use LinFly\Annotation\Attributes\Route\Controller;
|
|
|
use LinFly\Annotation\Attributes\Route\GetMapping;
|
|
|
use LinFly\Annotation\Attributes\Route\Middleware;
|
|
|
@@ -18,17 +22,33 @@ use support\Response;
|
|
|
class Service extends Base
|
|
|
{
|
|
|
|
|
|
+ #[Inject]
|
|
|
+ protected ChatStoreService $service;
|
|
|
|
|
|
/**
|
|
|
* 获取客服列表-已聊过的
|
|
|
* @param Request $request
|
|
|
- * @return Response|void
|
|
|
+ * @return Response
|
|
|
*/
|
|
|
#[GetMapping("list")]
|
|
|
- public function getServiceList(Request $request)
|
|
|
+ public function getServiceList(Request $request): Response
|
|
|
{
|
|
|
try {
|
|
|
-
|
|
|
+ $param = $request->all();
|
|
|
+ if (!empty($param['size'])) {
|
|
|
+ $param['pageSize'] = $param['size'];
|
|
|
+ }
|
|
|
+ $param['openid'] = $request->user['openid'];
|
|
|
+ $list = $this->service->setModel()->getList($param,null,true,['last','avatar'],['last' => function($data,$resp) use($param){
|
|
|
+ $last = (new SaasChatMsg)->where("poi_id",$resp['poi_id'])->where("openid",$param['openid'])->order("create_at desc")->field("content,create_at")->findOrEmpty();
|
|
|
+ if ($last->isEmpty()) {
|
|
|
+ return ["content"=>"无","create_at"=> formatTime(date("Y-m-d H:i:s",time()))];
|
|
|
+ }
|
|
|
+ return ["content"=> $last['content'],"create_at"=> formatTime($last['create_at'])];
|
|
|
+ },'avatar' => function(){
|
|
|
+ return "https://washmy.oss-cn-guangzhou.aliyuncs.com/storage/20260511/23627b2cb8f73a8a90b95c31d726e6ecad0cbb9a.png";
|
|
|
+ }]);
|
|
|
+ return successTrans("success.data",pageFormat($list));
|
|
|
} catch (\Throwable $throwable) {
|
|
|
return error($throwable->getMessage());
|
|
|
}
|
|
|
@@ -46,6 +66,14 @@ class Service extends Base
|
|
|
$param = $request->all();
|
|
|
$store = (new SaasStore)->where("poi_id",$param['poi'])->findOrEmpty();
|
|
|
if ($store->isEmpty()) return error("店铺不存在");
|
|
|
+ $chatStore = (new SaasChatStore)->where(['poi_id'=> $store['poi_id'],"openid" => $request->user['openid']])->findOrEmpty();
|
|
|
+ if ($chatStore->isEmpty()) {
|
|
|
+ $chatStore->insertGetId([
|
|
|
+ "poi_id" => $store['poi_id'],
|
|
|
+ "poi_name" => $store['poi_name'],
|
|
|
+ "openid" => $request->user['openid']
|
|
|
+ ]);
|
|
|
+ }
|
|
|
// 获取在线客服
|
|
|
$service = (new SystemUser)->where("store_id",$param['poi'])->where("type",3)->where("is_line",1)->findOrEmpty();
|
|
|
if ($service->isEmpty()) return $this->encode("ok",['store' => $store,'code' => 3]); // 无客服在线
|