diff --git a/FlyCube/MpApi/Controller/AdminController.class.php b/FlyCube/MpApi/Controller/AdminController.class.php index 3cd59ce..a2fa2ed 100644 --- a/FlyCube/MpApi/Controller/AdminController.class.php +++ b/FlyCube/MpApi/Controller/AdminController.class.php @@ -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 + ]); }