'require|checkIsAbleUpgrade', 'update_type' => 'require|eg:1' ]; protected $message = [ 'id.require' => '参数缺失', 'update_type.require' => '参数缺失', 'update_type.eg' => '更新类型错误', ]; /** * @notes 检查是否可以更新 * @param $value * @param $reule * @param $data * @return bool|string * @author 段誉 * @date 2021/8/14 16:22 */ protected function checkIsAbleUpgrade($value, $reule, $data) { //本地更新版本号 $localVersionData = local_version(); $localVersionNo = $localVersionData['version']; //目标更新版本信息 $targetVersionData = UpgradeLogic::getVersionDataById($data['id']); if (empty($targetVersionData)) { return '未获取到对应版本信息'; } //目标更新的版本号 $targetVersionNo = $targetVersionData['version_no']; //本地版本需要小于目标更新版本 if ($localVersionNo > $targetVersionNo) { return '当前系统无法升级到该版本,请重新选择更新版本。'; } //获取远程列表 $remoteData = UpgradeLogic::getRemoteVersion()['lists'] ?? []; if (empty($remoteData)) { return '获取更新数据失败'; } //是否满足升级 foreach ($remoteData as $k => $item) { if ($item['version_no'] != $localVersionNo) { continue; } if (empty($remoteData[$k - 1])) { return '已为最新版本'; } if ($remoteData[$k - 1]['version_no'] != $targetVersionNo) { return '当前系统无法升级到该版本,请重新选择更新版本。'; } } return true; } }