| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313 | <?phpif (!function_exists('dd')) {    function dd($obj)    {        halt($obj);    }}if (!function_exists('fail')) {    /**     * 主动抛错     */    function fail($message, $data = [], $code = 0)    {        $result = [            'code' => $code,            'data' => $data,            'msg'  => is_array($message) ? json_encode($message) : $message,        ];        request_log_update($result);        // 如果未设置类型则自动判断        $type     = 'json';        $response = \think\Response::create($result, $type, 200);        throw new \think\exception\HttpResponseException($response);    }}if (!function_exists('succ')) {    /**     * 成功返回     */    function succ($data = [], $message = '')    {        $result = [            'code' => 1,            'data' => $data,            'msg'  => $message,        ];        request_log_update($result);        // 如果未设置类型则自动判断        $type     = 'json';        $response = \think\Response::create($result, $type, 200);        throw new \think\exception\HttpResponseException($response);    }}if (!function_exists('getConfig')) {    /**     * 获取配置     * @param string  $field   配置组名     * @param string  $key     字段     * @param string  $default 字段默认值     * @param boolean $refresh 是否刷新缓存     * @return mixed     */    function getConfig(string $field, $key = '', $default = '', $refresh = true)    {        $config = \think\Cache::get($field);        if (!$config || $refresh) {            $config = \think\Db::name('exam_config_info')->order('id')->limit(1)->value($field);            if (!$config) {                return null;            }            $config = json_decode($config, true);            //存入缓存            \think\Cache::set($field, $config);        }        if ($key) {            return $config[$key] ?? $default;        }        return $config;    }}if (!function_exists('getCurl')) {    /**     * get请求     * @param $url     * @return bool|string     */    function getCurl($url)    {        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);        $data = curl_exec($ch);        curl_close($ch);        return $data;    }}if (!function_exists('postCurl')) {    /**     * post请求     * @param        $url     * @param string $data     * @param string $type     * @return bool|string     */    function postCurl($url, $data = '', $type = 'json')    {        if ($type == 'json') {            $data   = json_encode($data); //对数组进行json编码            $header = array("Content-type: application/json;charset=UTF-8", "Accept: application/json", "Cache-Control: no-cache", "Pragma: no-cache");        }        $curl = curl_init();        curl_setopt($curl, CURLOPT_URL, $url);        curl_setopt($curl, CURLOPT_POST, 1);        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);        if (!empty($data)) {            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);        }        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);        curl_setopt($curl, CURLOPT_HTTPHEADER, $header);        $res = curl_exec($curl);        if (curl_errno($curl)) {            echo 'Error+' . curl_error($curl);        }        curl_close($curl);        return $res;    }}if (!function_exists('only_keys')) {    /**     * 只取数组部分key数据     * @param array $array     * @param array $keys     * @return array     */    function only_keys(array $array, array $keys)    {        $result = [];        foreach ($array as $k => $value) {            if (in_array($k, $keys)) {                $result[$k] = $value;            }        }        return $result;    }}if (!function_exists('hidden_keys')) {    /**     * 隐藏数组部分key数据     * @param array $array     * @param array $keys     * @return array     */    function hidden_keys(array $array, array $keys)    {        $result = [];        foreach ($array as $k => $value) {            if (in_array($k, $keys)) {                unset($value[$k]);                $result[$k] = $value;            }        }        return $result;    }}if (!function_exists('hidden_list_keys')) {    /**     * 隐藏数组部分key数据     * @param array $list     * @param array $keys     * @return array     */    function hidden_list_keys(array $list, array $keys)    {        $list   = collection($list)->toArray();        $result = [];        foreach ($list as $i => $item) {            foreach ($item as $k => $value) {                if (in_array($k, $keys)) {                    unset($item[$k]);                }            }            $result[$i] = $item;        }        return $result;    }}if (!function_exists('is_empty_in_array')) {    /**     * 数组内是否包含且存在字段值     * @param $array     * @param $field     * @return bool     */    function is_empty_in_array($array, $field)    {        if (!isset($array[$field]) || !$array[$field]) {            return true;        }        return false;    }}if (!function_exists('cache_data')) {    /**     * 获取/设置缓存数据     * @param string  $cache_key   缓存key名     * @param Closure $fun         用户函数,获取并返回数据     * @param int     $expire_time 缓存过期时间     * @return mixed     */    function cache_data(string $cache_key, Closure $fun, int $expire_time = 0, bool $refresh = false)    {        // 固定前缀        $cache_key = "exam:{$cache_key}";        // 存在缓存,返回缓存        if (!$refresh && $cache = cache($cache_key)) {            return $cache;        }        // 执行数据获取        $data = $fun();        $data = is_array($data) ? json_encode($data, JSON_UNESCAPED_UNICODE) : $data;        // 设置缓存        cache($cache_key, $data, $expire_time);        return $data;    }}if (!function_exists('getUser')) {    /**     * 获取Api用户信息     * @return mixed     */    function getUser()    {        if (\app\common\library\Auth::instance()->isLogin()) {            return \app\common\library\Auth::instance();        }        return null;    }}if (!function_exists('getUserId')) {    /**     * 获取Api用户ID     * @return mixed     */    function getUserId()    {        if ($user = getUser()) {            return $user->id;        }        return 0;    }}if (!function_exists('str_trim')) {    /**     * 字符串去除空格     * @return string     */    function str_trim($str)    {        return str_replace(' ', '', $str);    }}if (!function_exists('generate_no')) {    /**     * 根据时间生成编号     * @return string     */    function generate_no($pre = '')    {        $date         = date('YmdHis', time());        $u_timestamp  = microtime(true);        $timestamp    = floor($u_timestamp);        $milliseconds = round(($u_timestamp - $timestamp) * 100); // 改这里的数值控制毫秒位数        return $pre . $date . date(preg_replace('`(?<!\\\\)u`', $milliseconds, 'u'), $timestamp);    }}function request_log_update($log_result){    /*if ($this->logType === 1){        if (strlen(json_encode($log_result['data'])) > 1000) {            $log_result['data'] = '数据太多,不记录';        }        LogUtil::info('result', 'Api-Middleware-Log', 'request_log', $log_result);    }else{*/        if(defined('API_REQUEST_ID')) { //记录app正常返回结果            if(strlen(json_encode($log_result['data'])) > 1000) {                $log_result['data'] = '数据太多,不记录';            }            db('api_request_log')->where('id',API_REQUEST_ID)->update(['result'=>json_encode($log_result)]);        }    /*}*/}
 |