wesmiler 2 年之前
父节点
当前提交
2006ec2ca4
共有 4 个文件被更改,包括 86 次插入8 次删除
  1. 2 0
      app/Services/Api/MemberSettingService.php
  2. 59 7
      app/Services/Api/MessageService.php
  3. 24 1
      app/Services/EmailService.php
  4. 1 0
      routes/api.php

+ 2 - 0
app/Services/Api/MemberSettingService.php

@@ -68,6 +68,8 @@ class MemberSettingService extends BaseService
         $datas = $datas? $datas->setHidden(['id','update_time','mark'])->toArray() : [];
         $datas = $datas? $datas->setHidden(['id','update_time','mark'])->toArray() : [];
         if($datas){
         if($datas){
             RedisService::set($cacheKey, $datas, rand(10, 20));
             RedisService::set($cacheKey, $datas, rand(10, 20));
+        }else{
+            $datas = ['receive_app'=>1,'receive_custom'=>1,'receive_order'=>1,'receive_account'=>1];
         }
         }
         return $type? (isset($datas[$type])? $datas[$type] : $default) : $datas;
         return $type? (isset($datas[$type])? $datas[$type] : $default) : $datas;
     }
     }

+ 59 - 7
app/Services/Api/MessageService.php

@@ -148,9 +148,9 @@ class MessageService extends BaseService
         $setting = MemberSettingService::make()->getSetting($userId);
         $setting = MemberSettingService::make()->getSetting($userId);
         if($setting){
         if($setting){
             foreach ($setting as $k => $v){
             foreach ($setting as $k => $v){
-                if($k == 'receive_order'){
+                if($k == 'receive_order' && $v==1){
                     $types[] = 2;
                     $types[] = 2;
-                }else if ($k == 'receive_account'){
+                }else if ($k == 'receive_account' && $v==1){
                     $types[] = 3;
                     $types[] = 3;
                 }
                 }
             }
             }
@@ -329,20 +329,72 @@ class MessageService extends BaseService
      */
      */
     public function getBarCount($userId, $type=0)
     public function getBarCount($userId, $type=0)
     {
     {
-        $cacheKey = "caches:messages:barCount:{$userId}_{$type}";
+        $cacheKey = "caches:barCount:{$userId}_{$type}";
         $data = RedisService::get($cacheKey);
         $data = RedisService::get($cacheKey);
         if($data){
         if($data){
             return $data;
             return $data;
         }
         }
-        $data1 = $this->getUnreadCount($userId, $type);
-        $data1 = $data1? intval($data1) : 0;
-        $data2 = ImChatService::make()->getUnreadCount($userId);
-        $data = $data1+$data2;
+        $data = $this->getUnreadCount($userId,0, $type);
         RedisService::set($cacheKey, $data, rand(3, 5));
         RedisService::set($cacheKey, $data, rand(3, 5));
         return $data;
         return $data;
     }
     }
 
 
     /**
     /**
+     * 推送站内消息
+     * @param $userId 用户ID
+     * @param $title 标题
+     * @param $message 消息内容
+     * @param int $type 类型:1-公告,2-订单,3-账户,4-客服,5-动态
+     * @return false
+     */
+    public function pushMessage($userId, $title, $message, $type=1, $fromUid=0)
+    {
+        $types = [4,5];
+        $pushStatus = false;
+        $datas = MemberSettingService::make()->getSetting($userId);
+        if($datas){
+            foreach ($datas as $k => $v){
+                if($v==1){
+                    if($k == 'receive_app'){
+                        $pushStatus = true;
+                        $types[] = 1;
+                    }else if ($k == 'receive_order'){
+                        $types[] = 2;
+                    }else if ($k == 'receive_account'){
+                        $types[] = 3;
+                    }
+                }
+
+            }
+        }else{
+            $pushStatus = true;
+            $types = [1,2,3,4,5];
+        }
+
+        if($userId && $pushStatus && in_array($type, $types)){
+            $appName = ConfigService::make()->getConfigByCode('app_name', '星链社交');
+            $log = [
+                'from_uid'=> $fromUid,
+                'to_uid'=> $userId,
+                'from_user_name'=> $appName,
+                'chat_type'=> 0,
+                'msg_type'=> 1,
+                'type'=> $type,
+                'title'=> $title,
+                'description'=> $title,
+                'content'=> $message,
+                'chat_key'=> "0{$userId}",
+                'create_time'=> time(),
+                'status'=> 1,
+                'mark'=> 1,
+            ];
+           return MessageModel::insert($log);
+        }
+
+        return false;
+    }
+
+    /**
      * 获取
      * 获取
      * @param $userId
      * @param $userId
      * @return array|mixed
      * @return array|mixed

+ 24 - 1
app/Services/EmailService.php

@@ -17,6 +17,7 @@ use AlibabaCloud\Tea\Exception\TeaUnableRetryError;
 use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
 use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
 use App\Models\MemberModel;
 use App\Models\MemberModel;
 use App\Models\MessageModel;
 use App\Models\MessageModel;
+use App\Services\Api\MemberSettingService;
 use Darabonba\OpenApi\Models\Config;
 use Darabonba\OpenApi\Models\Config;
 use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
 use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
 use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
 use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
@@ -204,7 +205,29 @@ class EmailService extends BaseService
                 // 系统消息
                 // 系统消息
                 $userInfo = MemberModel::where(['id'=> $userId])->select(['id','email','nickname','avatar'])->first();
                 $userInfo = MemberModel::where(['id'=> $userId])->select(['id','email','nickname','avatar'])->first();
                 $email = isset($userInfo['email'])? $userInfo['email'] : '';
                 $email = isset($userInfo['email'])? $userInfo['email'] : '';
-                if($userInfo && $userId){
+                $types = [4,5];
+                $pushStatus = false;
+                $datas = MemberSettingService::make()->getSetting($userId);
+                if($datas){
+                    foreach ($datas as $k => $v){
+                        if($v==1){
+                            if($k == 'receive_app'){
+                                $pushStatus = true;
+                                $types[] = 1;
+                            }else if ($k == 'receive_order'){
+                                $types[] = 2;
+                            }else if ($k == 'receive_account'){
+                                $types[] = 3;
+                            }
+                        }
+
+                    }
+                }else{
+                    $pushStatus = true;
+                    $types = [1,2,3,4,5];
+                }
+
+                if($userInfo && $userId && $pushStatus && in_array($type, $types)){
                     $log = [
                     $log = [
                         'to_uid'=> $userId,
                         'to_uid'=> $userId,
                         'to_user_name'=> isset($userInfo['nickname'])? $userInfo['nickname'] : '',
                         'to_user_name'=> isset($userInfo['nickname'])? $userInfo['nickname'] : '',

+ 1 - 0
routes/api.php

@@ -103,6 +103,7 @@ Route::prefix('v1')->group(function(){
     Route::post('/message/chat', [\App\Http\Controllers\Api\v1\MessageController::class, 'chatGroupList']);
     Route::post('/message/chat', [\App\Http\Controllers\Api\v1\MessageController::class, 'chatGroupList']);
     Route::post('/message/history', [\App\Http\Controllers\Api\v1\MessageController::class, 'history']);
     Route::post('/message/history', [\App\Http\Controllers\Api\v1\MessageController::class, 'history']);
     Route::post('/message/unread', [\App\Http\Controllers\Api\v1\MessageController::class, 'unread']);
     Route::post('/message/unread', [\App\Http\Controllers\Api\v1\MessageController::class, 'unread']);
+    Route::post('/message/barCount', [\App\Http\Controllers\Api\v1\MessageController::class, 'getBarCount']);
     Route::post('/message/clear', [\App\Http\Controllers\Api\v1\MessageController::class, 'clear']);
     Route::post('/message/clear', [\App\Http\Controllers\Api\v1\MessageController::class, 'clear']);
     Route::post('/message/clearAll', [\App\Http\Controllers\Api\v1\MessageController::class, 'clearAll']);
     Route::post('/message/clearAll', [\App\Http\Controllers\Api\v1\MessageController::class, 'clearAll']);
     Route::post('/message/setRead', [\App\Http\Controllers\Api\v1\MessageController::class, 'setRead']);
     Route::post('/message/setRead', [\App\Http\Controllers\Api\v1\MessageController::class, 'setRead']);