51 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			51 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace app\common\model;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use think\Model;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Version extends Model
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // 开启自动写入时间戳字段
							 | 
						||
| 
								 | 
							
								    protected $autoWriteTimestamp = 'int';
							 | 
						||
| 
								 | 
							
								    // 定义时间戳字段名
							 | 
						||
| 
								 | 
							
								    protected $createTime = 'createtime';
							 | 
						||
| 
								 | 
							
								    protected $updateTime = 'updatetime';
							 | 
						||
| 
								 | 
							
								    // 定义字段类型
							 | 
						||
| 
								 | 
							
								    protected $type = [
							 | 
						||
| 
								 | 
							
								    ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 检测版本号
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param string $version 客户端版本号
							 | 
						||
| 
								 | 
							
								     * @return array
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public static function check($version)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $versionlist = self::where('status', 'normal')->cache('__version__')->order('weigh desc,id desc')->select();
							 | 
						||
| 
								 | 
							
								        foreach ($versionlist as $k => $v) {
							 | 
						||
| 
								 | 
							
								            // 版本正常且新版本号不等于验证的版本号且找到匹配的旧版本
							 | 
						||
| 
								 | 
							
								            if ($v['status'] == 'normal' && $v['newversion'] !== $version && \fast\Version::check($version, $v['oldversion'])) {
							 | 
						||
| 
								 | 
							
								                $updateversion = $v;
							 | 
						||
| 
								 | 
							
								                break;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        if (isset($updateversion)) {
							 | 
						||
| 
								 | 
							
								            $search = ['{version}', '{newversion}', '{downloadurl}', '{url}', '{packagesize}'];
							 | 
						||
| 
								 | 
							
								            $replace = [$version, $updateversion['newversion'], $updateversion['downloadurl'], $updateversion['downloadurl'], $updateversion['packagesize']];
							 | 
						||
| 
								 | 
							
								            $upgradetext = str_replace($search, $replace, $updateversion['content']);
							 | 
						||
| 
								 | 
							
								            return [
							 | 
						||
| 
								 | 
							
								                "enforce"     => $updateversion['enforce'],
							 | 
						||
| 
								 | 
							
								                "version"     => $version,
							 | 
						||
| 
								 | 
							
								                "newversion"  => $updateversion['newversion'],
							 | 
						||
| 
								 | 
							
								                "downloadurl" => $updateversion['downloadurl'],
							 | 
						||
| 
								 | 
							
								                "packagesize" => $updateversion['packagesize'],
							 | 
						||
| 
								 | 
							
								                "upgradetext" => $upgradetext
							 | 
						||
| 
								 | 
							
								            ];
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return null;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |