闫增涛
2025-04-08 b41630280b49408824feb333849d51d83fa06fca
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
/**
+-----------------------------------------------------------------------------------------------
* GouGuOPEN [ 左手研发,右手开源,未来可期!]
+-----------------------------------------------------------------------------------------------
* @Copyright (c) 2021~2024 http://www.gouguoa.com All rights reserved.
+-----------------------------------------------------------------------------------------------
* @Licensed 勾股OA,开源且可免费使用,但并不是自由软件,未经授权许可不能去除勾股OA的相关版权信息
+-----------------------------------------------------------------------------------------------
* @Author 勾股工作室 <hdm58@qq.com>
+-----------------------------------------------------------------------------------------------
*/
 
namespace app\home\model;
 
use think\Model;
use think\facade\Db;
 
class Msg extends Model
{    
    /**
    * 获取分页列表
    * @param $where
    * @param $param
    */
    public function datalist($where, $param)
    {
        $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit'];
        $order = empty($param['order']) ? 'id desc' : $param['order'];
        try {
            $list = self::where($where)
            ->order($order)
            ->paginate(['list_rows'=> $rows])
            ->each(function ($item, $key){
                $item->from_name = '系统';
                $item->thumb = '/static/home/images/icon.png';
                
                if($item->from_uid>0){
                    $from_name = Db::name('Admin')->where('id',$item->from_uid)->find();
                    $item->from_name = $from_name['name'];
                    $item->thumb = $from_name['thumb'];
                }
                if(!empty($item->uids)){
                    $to_name = Db::name('Admin')->where(['id','in',$item->uids])->column('name');
                    $item->to_name = implode(',',$to_name);
                }
                else{
                    $item->to_name = '-';
                }
            });
            return $list;
        } catch(\Exception $e) {
            return ['code' => 1, 'data' => [], 'msg' => $e->getMessage()];
        }
    }
    
    //消息详情
    public function detail($id)
    {
        $detail = self::find($id);
        if(!empty($detail)){
            //消息附件
            $file_array = Db::name('File')->order('create_time desc')->where([['id','in',$detail['file_ids']]])->select()->toArray();
            $detail['file_array'] = $file_array;
            //引用消息附件
            if($detail['msg_id']>0){
                $from_msg = self::field('content,file_ids,template,action_id')->where(['id' => $detail['msg_id']])->find();
                $detail['from_template'] = $from_msg['template'];
                $detail['from_action_id'] = $from_msg['action_id'];
                $detail['from_content'] = $from_msg['content'];
                $detail['from_file_ids'] = $from_msg['file_ids'];                
                $from_file_array = Db::name('File')->order('create_time desc')->where([['id','in',$detail['from_file_ids']]])->select()->toArray();
                $detail['from_file_array'] = $from_file_array;
            }
        }
        return $detail;
    }
}