MailController.php
3.7 KB
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
namespace App\Http\Controllers\Bside\Mail;
use App\Enums\Common\Code;
use App\Http\Controllers\Bside\BaseController;
use App\Http\Logic\Bside\Mail\MailLogic;
use App\Models\Mail\Mail as MailModel;
use App\Models\Mail\MailUser as MailUserModel;
class MailController extends BaseController
{
const STATUS_ZERO = 0; //状态为未读状态
const STATUS_ONE = 1; //状态为已读状态
/**
* @name :当前用户站内信列表
* @author :liyuhang
* @method
*/
public function lists(){
$mailModel = new MailModel();
//获取当前用户下的所有站内信
$lists = $mailModel->where('status',0)->where($this->map)
->where('user_list','like','%,'.$this->uid.',%')
->orWhere('user_list', '')
->select(['*'])->orderBy($this->order,'desc')
->paginate($this->row, ['*'], 'page', $this->page);
if(!empty($lists)){
$lists = $lists->toArray();
}
$mailUserModel = new MailUserModel();
$lists['unreadNum'] = $this->unreadNum($mailUserModel,$lists['total']);
if(!empty($lists['list'])){
//验证未读还是已读
$lists['list'] = $this->verifyRead($mailUserModel,$lists['list']);
}
$this->response('success',Code::SUCCESS,$lists);
}
/**
* @name :(验证已读还是未读)verifyRead
* @author :lyh
* @method :post
* @time :2023/6/17 15:02
*/
public function verifyRead(&$mailUserModel,$list){
$data = [];
foreach ($list as $k => $v){
//获取用户已读还是未读
$info = $mailUserModel->read(['mail_id'=>$v['id'],'user_id'=>$this->uid]);
if($info !== false){
$v['read_status'] = $this::STATUS_ONE;//
}else{
$v['read_status'] = $this::STATUS_ZERO;
}
$data[] = $v;
}
return $data;
}
/**
* @name :(未读数量)readNum
* @author :lyh
* @method :post
* @time :2023/6/17 13:58
*/
public function unreadNum(&$mailUserModel,$total){
//已读数量
$count = $mailUserModel->where(['user_id'=>$this->uid])->count();
$num = ($total - $count > 0) ? $total - $count : 0;
return $num;
}
/**
* @name :获取站内信详情
* @author :liyuhang
* @method
*/
public function info(MailLogic $mailLogic){
$this->request->validate([
'id'=>['required']
],[
'id.required' => 'ID不能为空'
]);
$info = $mailLogic->mail_info();
$this->response('success',Code::SUCCESS,$info);
}
/**
* @remark :一键已读
* @name :oneClickRead
* @author :lyh
* @method :post
* @time :2023/7/5 17:50
*/
public function oneClickRead(){
//获取所有已读的站内信
$mailUserModel = new MailUserModel();
$list = $mailUserModel->list(['user_id'=>$this->user['id']],'id',['id','mail_id']);
$arr = [];
foreach ($list as $v){
$arr[] = $v['mail_id'];
}
$mailModel = new MailModel();
$mail_list = $mailModel->list(['id'=>['not in',$arr],'user_list'=>['like','%,'.$this->user['id'].',%']]);
$data = [];
foreach ($mail_list as $k1 => $v1){
$data[] = [
'user_id'=>$this->user['id'],
'mail_id'=>$v1['id'],
'created_at'=>date('Y-m-d H:i:s'),
'updated_at'=>date('Y-m-d H:i:s'),
];
}
$rs = $mailUserModel->insert($data);
if($rs === false){
$this->response('error',Code::SYSTEM_ERROR);
}
$this->response('success');
}
}