<?php
namespace app\mobile\controller;

use think\facade\Db;

class OmsContacts extends OmsBase
{
    public function index()
    {
        return $this->guarded(function () {
            $this->requireMethod('GET');
            $account = $this->current();
            $keyword = $this->request->get('keyword', '');
            $page = $this->request->get('page', '1');
            if (!is_string($keyword) || mb_strlen($keyword, 'UTF-8') > 30 || !is_scalar($page) || !preg_match('/^[1-9][0-9]{0,5}$/', (string)$page)) $this->fail('查询参数不正确');
            $keyword = trim($keyword); $page = (int)$page; $pageSize = 10;
            if ((int)$account['user_type'] === 1) {
                // 沿用旧版现场员工可见的客服、宿管名单。
                $rows = [
                    ['id'=>1, 'truename'=>'冉喻琴','phone'=>'17723159542','dpt'=>'捷仕达','job'=>'客服','ext'=>''],
                    ['id'=>2, 'truename'=>'杨成果','phone'=>'15310904466','dpt'=>'捷仕达','job'=>'宿管','ext'=>''],
                    ['id'=>3, 'truename'=>'彭兴蓉','phone'=>'15084396124','dpt'=>'天坤','job'=>'客服','ext'=>''],
                    ['id'=>4, 'truename'=>'李雪','phone'=>'18996153153','dpt'=>'天坤','job'=>'宿管','ext'=>''],
                    ['id'=>5, 'truename'=>'罗乐','phone'=>'18483666930','dpt'=>'杰成','job'=>'客服','ext'=>''],
                    ['id'=>6, 'truename'=>'李廷昊','phone'=>'17623757030','dpt'=>'杰成','job'=>'宿管','ext'=>''],
                    ['id'=>7, 'truename'=>'李翼驰','phone'=>'13647604248','dpt'=>'投促','job'=>'客服','ext'=>''],
                    ['id'=>8, 'truename'=>'陈文杰','phone'=>'19122053988','dpt'=>'投促','job'=>'宿管','ext'=>''],
                ];
                if ($keyword !== '') $rows = array_values(array_filter($rows, function ($row) use ($keyword) { return mb_strpos($row['truename'], $keyword, 0, 'UTF-8') !== false; }));
                $total = count($rows); $rows = array_slice($rows, ($page - 1) * $pageSize, $pageSize);
            } else {
                $query = Db::name('admin_user')->where('status', 1);
                if ($keyword !== '') $query->whereLike('truename', '%' . str_replace(['\\', '%', '_'], ['\\\\', '\\%', '\\_'], $keyword) . '%');
                $total = (clone $query)->count();
                $rows = $query->field('id,truename,phone,ext,dpt,job')->order('dpt asc,job desc,id asc')->limit(($page - 1) * $pageSize, $pageSize)->select()->toArray();
                $orgIds = array_values(array_unique(array_merge(array_column($rows, 'dpt'), array_column($rows, 'job'))));
                $titles = $orgIds ? Db::name('admin_org')->whereIn('id', $orgIds)->column('title', 'id') : [];
                foreach ($rows as &$row) {
                    $row['id'] = (int)$row['id'];
                    $row['dpt'] = $titles[$row['dpt']] ?? '';
                    $row['job'] = $titles[$row['job']] ?? '';
                    $row['phone'] = (string)($row['phone'] ?? '');
                    $row['ext'] = (string)($row['ext'] ?? '');
                }
                unset($row);
            }
            return json(['code'=>0, 'message'=>'成功', 'data'=>['items'=>$rows, 'total'=>$total, 'page'=>$page, 'pageSize'=>$pageSize]]);
        });
    }
}
