【类 型】:

【原  因】:
【过  程】:
【影  响】:
This commit is contained in:
air 2025-06-24 20:54:28 +08:00
parent a05a132575
commit 5ab0a05cb8

View File

@ -369,58 +369,62 @@ class AdminController extends PublicController
{
// 权限判断
if ($this->tokenShop_id != C('powerId')) {
$where['m.shop_id'] = $this->tokenShop_id; // 非总管理员 只返回自己的账户信息
$where['m.shop_id'] = $this->tokenShop_id;
}
// 当前登录的admin_id
$currentAdminId = $this->tokenAdmin_id; // 你应该有这个字段当前登录管理员的id
// 查询字段,注意字段前加表别名
$fields = array(
'm.id',
'm.shop_id',
'm.admin_id',
'm.by_admin_id',
'm.tit',
'm.message',
'm.end_time',
'm.add_time',
'a.name' => 'admin_name',
'a.uname' => 'admin_uname'
);
$messageDb = M('message');
// 组装条件shop_id限制 + (admin_id = 当前管理员 OR by_admin_id = 当前管理员)
if (isset($where['m.shop_id'])) {
$messageDb->where($where);
}
// 构造复杂条件admin_id或by_admin_id满足当前管理员
$messageDb->where(function ($query) use ($currentAdminId) {
$query->where('m.admin_id = %d', $currentAdminId)
->orWhere('m.by_admin_id = %d', $currentAdminId);
});
// 查询message数据不关联adminuser先拿全部字段
$messageList = $messageDb
->alias('m')
->join('__ADMINUSER__ a ON m.by_admin_id = a.id', 'LEFT')
->field($fields)
->where($where)
->field('m.*')
->order('m.add_time DESC')
->select();
if ($messageList !== false) {
echo json_encode(array(
'status' => 1,
'msg' => '获取成功',
'messageList' => $messageList
));
} else {
echo json_encode(array(
'status' => 0,
'msg' => '获取失败'
));
if ($messageList === false) {
echo json_encode(['status' => 0, 'msg' => '获取失败']);
return;
}
// 取出所有admin_id和by_admin_id去重
$adminIds = [];
$byAdminIds = [];
foreach ($messageList as &$msg) {
if ($msg['admin_id']) $adminIds[$msg['admin_id']] = true;
if ($msg['by_admin_id']) $byAdminIds[$msg['by_admin_id']] = true;
}
$adminIds = array_keys($adminIds);
$byAdminIds = array_keys($byAdminIds);
// 查 admin_id 对应的用户信息
$adminUserDb = M('adminuser');
$adminUsers = $adminUserDb->where(['id' => ['IN', $adminIds]])->field('id,name,uname')->select();
$adminUserMap = [];
foreach ($adminUsers as $u) {
$adminUserMap[$u['id']] = $u;
}
// 查 by_admin_id 对应的用户信息
$byAdminUsers = $adminUserDb->where(['id' => ['IN', $byAdminIds]])->field('id,name,uname')->select();
$byAdminUserMap = [];
foreach ($byAdminUsers as $u) {
$byAdminUserMap[$u['id']] = $u;
}
// 合并用户信息回message列表
foreach ($messageList as &$msg) {
$msg['admin_name'] = isset($adminUserMap[$msg['admin_id']]) ? $adminUserMap[$msg['admin_id']]['name'] : '';
$msg['admin_uname'] = isset($adminUserMap[$msg['admin_id']]) ? $adminUserMap[$msg['admin_id']]['uname'] : '';
$msg['by_admin_name'] = isset($byAdminUserMap[$msg['by_admin_id']]) ? $byAdminUserMap[$msg['by_admin_id']]['name'] : '';
$msg['by_admin_uname'] = isset($byAdminUserMap[$msg['by_admin_id']]) ? $byAdminUserMap[$msg['by_admin_id']]['uname'] : '';
}
echo json_encode([
'status' => 1,
'msg' => '获取成功',
'messageList' => $messageList
]);
}