| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- <?php
- use Carbon\Carbon;
- use Illuminate\Database\Eloquent\Model;
- const DAY_TO_MILLI_SECONDS = 1000*60*60*24;
- function formatExcelDate(int $timestamp)
- {
- $diff = intval($timestamp);
- $today=new Carbon('1900-01-01');
- $day = $today->addDays($diff-2);
- return $day->toDateString();
- }
- function formatExcelDateTime(float $timestamp): string
- {
- $today = new Carbon('1900-01-01');
- $day = $today->addMilliseconds(intval($timestamp*DAY_TO_MILLI_SECONDS))->subDays(2);
- return $day->toDateTimeString();
- }
- function diff($array1,$array2,string $identification,array $mapping,bool $intactDetached = false):array
- {
- $changes = [
- 'attached' => [], 'detached' => [], 'updated' => [],
- ];
- $map = [];
- foreach ($array2 as $item){
- if (is_array($item))$map[$item[$identification]] = $item;
- else $map[$item->$identification] = json_decode($item,true);
- }
- foreach ($array1 as $item){
- /** @var \stdClass|array|Model $item */
- if (!is_array($item) && !is_subclass_of($item,Model::class))$item = (array)$item;
- if (!isset($map[$item[$mapping[$identification]]])){
- $obj = [];
- foreach ($mapping as $column2=>$column1)$obj[$column2] = $item[$column1];
- $changes['attached'][] = $obj;continue;
- }
- $sign = false;
- $obj = [];
- foreach ($mapping as $column2=>$column1){
- $obj[$column2] = $item[$column1];
- if ($map[$item[$mapping[$identification]]][$column2] != $item[$column1])$sign = true;
- }
- if ($sign)$changes['updated'][] = $obj;
- unset($map[$item[$mapping[$identification]]]);
- }
- if ($map){
- if ($intactDetached){
- foreach ($map as $item){
- $obj = [];
- foreach ($mapping as $column2=>$column1)$obj[$column2] = $item[$column2];
- $changes['detached'][] = $obj;
- }
- }else $changes['detached'][] = array_keys($map);
- }
- return $changes;
- }
- //**官方的时间戳是13位的而php一般都是11位的所以需要进行处理一下**
- function getMillisecond():string
- {
- list($t1, $t2) = explode(' ', microtime());
- return (float)sprintf('%.0f',(floatval($t1)+floatval($t2))*1000);
- }
- function httpPost($uri = '', $body = '', $header = ''):array
- {
- $client = new \GuzzleHttp\Client([
- 'base_uri' => $uri
- ]);
- $res = $client->post($uri, [
- 'header' => $header,
- 'form_params' => $body
- ]);
- $data = $res->getBody()->getContents();
- return json_decode($data, true);
- }
- //获取电脑的Mac地址
- function getMacAddr($type = PHP_OS):string
- {
- $return_array = []; $mac_addr = '';
- switch (strtolower($type)){
- case 'linux' :
- @exec('ifconfig -a', $return_array);
- break;
- case 'solaris' :
- case 'unix' :
- case 'aix' : break;
- default:
- @exec('ipconfig /all', $return_array);
- if (empty($return_array)){
- $ipconfig = $_SERVER['WINDIR'].'system32ipconfig.exe';
- if (is_file($ipconfig)) @exec($ipconfig.' /all', $return_array);
- else @exec($_SERVER['WINDIR'].'systemipconfig.exe /all', $return_array);
- }
- break;
- }
- $temp_array = [];
- foreach ($return_array as $value){
- if (preg_match('/[0-9a-f][0-9a-f][:-]'.'[0-9a-f][0-9a-f][:-]'.'[0-9a-f][0-9a-f][:-]'.'[0-9a-f][0-9a-f][:-]'.'[0-9a-f][0-9a-f][:-]'.'[0-9a-f][0-9a-f]/i', $value, $temp_array)){
- $mac_addr = $temp_array[0];
- break;
- }
- }
- unset($temp_array);
- return $mac_addr;
- }
- //2021-09-03 oracle 链接+
- function getOciConnect()
- {
- $username = config('database.connections.oracle.username');
- $password = config('database.connections.oracle.password');
- $host = config('database.connections.oracle.host');
- $service_name = config('database.connections.oracle.service_name');
- $charset = config('database.connections.oracle.charset');
- return oci_connect($username,$password,$host.'/'.$service_name,$charset);
- }
|