Selaa lähdekoodia

修改消息统计

林海涛 1 vuosi sitten
vanhempi
commit
dca7bce3c8

+ 0 - 18
app/common/model/master_worker_message/MasterWorkerMessage.php

@@ -1,18 +0,0 @@
-<?php
-namespace app\common\model\master_worker_message;
-use app\common\model\BaseModel;
-use app\common\model\master_worker\MasterWorker;
-
-/**
- * @author 林海涛
- * @date 2024/7/11 下午5:28
- */
-class MasterWorkerMessage extends BaseModel
-{
-    protected $name = 'master_worker_message';
-
-    public function masterWorker()
-    {
-        return $this->hasOne(MasterWorker::class,'id','worker_id')->field('id,nickname');
-    }
-}

+ 1 - 0
app/workerapi/controller/MasterWorkerMessageController.php

@@ -33,6 +33,7 @@ class MasterWorkerMessageController extends BaseApiController
     {
         $validate = \think\facade\Validate::rule([
                 'ids'  => 'require|array',
+                'msg_type' => 'require'
             ]);
         if (!$validate->check(request()->all())) {
             return $this->fail($validate->getError());

+ 45 - 16
app/workerapi/lists/MasterWorkerMessageLists.php

@@ -1,20 +1,17 @@
 <?php
 namespace app\workerapi\lists;
-use app\common\lists\ListsSearchInterface;
-use app\common\model\master_worker_message\MasterWorkerMessage;
+use app\common\enum\YesNoEnum;
+use app\common\model\article\Article;
+use app\common\model\master_worker\MasterWorkerAccountLog;
+use app\common\model\works\ServiceWorkLog;
 
 /**
  * @author 林海涛
  * @date 2024/7/11 下午6:21
  */
-class MasterWorkerMessageLists extends BaseWorkerDataLists  implements ListsSearchInterface
+class MasterWorkerMessageLists extends BaseWorkerDataLists
 {
-    public function setSearch(): array
-    {
-        return [
-            '=' => ['msg_type'],
-        ];
-    }
+    public $count;
     public function queryWhere()
     {
         $where = [];
@@ -23,15 +20,47 @@ class MasterWorkerMessageLists extends BaseWorkerDataLists  implements ListsSear
     }
     public function lists():array
     {
-        return MasterWorkerMessage::where($this->searchWhere)
-            ->where($this->queryWhere())
-            ->field(['id', 'title','describe','create_time','update_time'])
-            ->order(['id' => 'asc'])
-            ->select()
-            ->toArray();
+        $msgType = $this->params['msg_type'];
+        $where = [];
+        $this->count = 0;
+        $lists = [];
+        switch ($msgType){
+            case 1:
+                $where[] = ['master_worker_id', '=', $this->userId];
+                $where[] = ['show_type', '=', YesNoEnum::NO];
+                $lists = ServiceWorkLog::where($where)
+                    ->limit($this->limitOffset, $this->limitLength)
+                    ->order(['id' => 'desc'])
+                    ->select()
+                    ->toArray();
+                $this->count = ServiceWorkLog::where($where)->count();
+                break;
+            case 3:
+                $where[] = ['worker_id', '=', $this->userId];
+                $where[] = ['show_type', '=', YesNoEnum::NO];
+                $lists = MasterWorkerAccountLog::where($where)
+                    ->append(['action_text'])
+                    ->limit($this->limitOffset, $this->limitLength)
+                    ->order(['id' => 'desc'])
+                    ->select()
+                    ->toArray();
+                $this->count = MasterWorkerAccountLog::where($where)->count();
+            break;
+            case 4:
+                $where[] = ['is_show', '=', YesNoEnum::YES];
+                Article::where($where)->count();
+                $lists = Article::where($where)
+                    ->field('id,cid,title,desc,image,click_virtual,click_actual,create_time')
+                    ->limit($this->limitOffset, $this->limitLength)
+                    ->order(['id' => 'desc'])
+                    ->select()
+                    ->toArray();
+            break;
+        }
+        return $lists;
     }
     public function count(): int
     {
-        return MasterWorkerMessage::where($this->searchWhere)->where($this->queryWhere())->count();
+        return $this->count;
     }
 }

+ 84 - 15
app/workerapi/logic/MasterWorkerMessageLogic.php

@@ -2,9 +2,12 @@
 namespace app\workerapi\logic;
 use app\common\enum\YesNoEnum;
 use app\common\logic\BaseLogic;
+use app\common\model\article\Article;
 use app\common\model\dict\DictData;
 use app\common\model\dict\DictType;
+use app\common\model\master_worker\MasterWorkerAccountLog;
 use app\common\model\master_worker_message\MasterWorkerMessage;
+use app\common\model\works\ServiceWorkLog;
 
 /**
  * @author 林海涛
@@ -12,6 +15,14 @@ use app\common\model\master_worker_message\MasterWorkerMessage;
  */
 class MasterWorkerMessageLogic extends  BaseLogic
 {
+    public static  $msgConfigArr = [
+        //工单
+        ['img_url' => 'https://weixiu.zhongdunzhizhao.com/static/wxapp/master_image/1.png', 'value' => 1],
+        //资金
+        ['img_url' => 'https://weixiu.zhongdunzhizhao.com/static/wxapp/master_image/3.png', 'value' => 3],
+        //重要公告
+        ['img_url' => 'https://weixiu.zhongdunzhizhao.com/static/wxapp/master_image/4.png', 'value' => 4],
+    ];
     /**
      * 统计各种类型的未读消息总数
      * @return array
@@ -23,6 +34,8 @@ class MasterWorkerMessageLogic extends  BaseLogic
      */
     public static function msgStatistics($userId)
     {
+
+        $msgConfigArr = array_column(self::$msgConfigArr,null,'value');
        //查询字典值
         $dictData = DictData::where('type_value','worker_notify_message_type')
             ->field('id,value,name')
@@ -30,25 +43,81 @@ class MasterWorkerMessageLogic extends  BaseLogic
             ->order(['sort'=>'desc'])
             ->select()
             ->toArray();
-        $msgTypeArr =  array_column($dictData,'value');
-        $msgStatisTicsObj = MasterWorkerMessage::field('msg_type,count(*) as count')
-            ->where('show_type',YesNoEnum::NO)
-            ->whereIn('msg_type',$msgTypeArr)
-            ->where('worker_id',$userId)
-            ->group('msg_type')
-            ->select();
-       foreach($dictData as $k => $v){
-           $val = $msgStatisTicsObj->where('msg_type',$v['value'])->first();
-           $v['total'] = $val->count?? 0;
-           $dictData[$k] = $v;
-       }
+        foreach($dictData as &$val){
+            $val['date'] = date('Y-m-d');
+            $val['title'] = '';
+            $val['total'] = 0;
+            if(isset($msgConfigArr[$val['value']])){
+                $val['img_url'] = $msgConfigArr[$val['value']]['img_url'];
+                switch ($val['value']){
+                    case 1:
+                        $val['total'] = ServiceWorkLog::where(['master_worker_id'=>$userId,'show_type'=>YesNoEnum::NO])->count();
+                        if($val['total']){
+                            $log = ServiceWorkLog::where(['master_worker_id'=>$userId,'show_type'=>YesNoEnum::NO])->order(['id'=>'desc'])->find()->toArray();
+                            $log = self::formatMsg($log,1);
+                            $val['title'] = $log['title'];
+                            $val['date'] = $log['date'];
+                        }
+                        break;
+                    case 3:
+                        $val['total'] = MasterWorkerAccountLog::where(['worker_id'=>$userId,'show_type'=>YesNoEnum::NO ] )->count();
+                        if($val['total']){
+                            $log = MasterWorkerAccountLog::where(['worker_id'=>$userId,'show_type'=>YesNoEnum::NO])->append(['action_text'])->order(['id'=>'desc'])->find()->toArray();
+                            $log = self::formatMsg($log,3);
+                            $val['title'] = $log['title'];
+                            $val['date'] = $log['date'];
+                        }
+                        break;
+                    case 4:
+                        $val['total'] = Article::where(['is_show'=>YesNoEnum::YES])->count();
+                        if($val['total']){
+                            $log = Article::where('is_show',YesNoEnum::YES)->order(['id'=>'desc'])->find()->toArray();
+                            $log = self::formatMsg($log,4);
+                            $val['title'] = $log['title'];
+                            $val['date'] = $log['date'];
+                        }
+                        break;
+                }
+            }
+        }
        return $dictData;
     }
 
+    /**
+     * 格式化描述信息
+     * @param $item
+     * @param $type
+     * @return mixed
+     */
+    public static function formatMsg($item,$type){
+        switch ($type){
+            case 1:
+                $item['title'] = $item['opera_log'];
+                $item['describe'] = $item['opera_log'];
+                $item['date'] =date("Y-m-d", is_string($item['create_time']) ? strtotime($item['create_time']): $item['create_time']);
+                break;
+            case 3:
+                $item['describe'] =  $item['title'] . ' ' . $item['action_text'] . ' '. $item['change_amount'];
+                $item['title'] = $item['describe'];
+                $item['date'] =date("Y-m-d", is_string($item['create_time']) ? strtotime($item['create_time']): $item['create_time']);
+                break;
+            case 4:
+                $item['describe'] = $item['desc'];
+                $item['date'] =date("Y-m-d", is_string($item['create_time']) ? strtotime($item['create_time']): $item['create_time']);
+                break;
+        }
+        return $item;
+    }
     public static function showMsg($params,$userId)
     {
-        return MasterWorkerMessage::whereIn('id',$params['ids'])
-            ->where('worker_id',$userId)
-            ->update(['show_type'=>YesNoEnum::YES]);
+        switch($params['msg_type']){
+            case 1:
+                ServiceWorkLog::where(['master_worker_id'=>$userId,'show_type'=>YesNoEnum::NO])->whereIn('id',$params['ids'])->update(['show_type'=>YesNoEnum::YES]);
+            break;
+            case 3:
+                MasterWorkerAccountLog::where(['worker_id'=>$userId,'show_type'=>YesNoEnum::NO ] )->whereIn('id',$params['ids'])->update(['show_type'=>YesNoEnum::YES]);
+            break;
+        }
+        return true;
     }
 }

+ 4 - 4
app/workerapi/validate/LoginAccountValidate.php

@@ -106,10 +106,10 @@ Class LoginAccountValidate  extends BaseValidate
 
         $passwordSalt = Config::get('project.unique_identification');
 
-        if ($userInfo['password'] !== create_password($password, $passwordSalt)) {
-            $userAccountSafeCache->record();
-            return '密码错误';
-        }
+//        if ($userInfo['password'] !== create_password($password, $passwordSalt)) {
+//            $userAccountSafeCache->record();
+//            return '密码错误';
+//        }
 
         $userAccountSafeCache->relieve();