Upgrade.php 6.47 KB
<?php

namespace domain\upgrade;

use Yii;
use domain\upgrade\models\Upgrade     as UpgradeModel;
use Resource\FileService;
use Exception;

/**
 * 版本
 * Class Upgrade
 * @package domain\upgrade
 */
class Upgrade
{
    /**
     * 创建版本
     * @param $item
     */
    static function create($item)
    {
        try {
            if (isset($item["version"])) {
                $item["version"] = trim($item["version"]);
            }
            $where = [
                'version'           => $item["version"],
                'manufacture_id'    => $item["manufacture_id"],
                'project_id'        => $item["project_id"],
                'model_id'          => $item["model_id"],
                'package_name'      => $item["package_name"],
                'is_delete'         => 0,
                'type'              => $item["type"]
            ];
            $findUpgradeModel = UpgradeModel::findOne($where);
            if (!empty($findUpgradeModel)) {
                return -1;
            }
            $upgradeModel = Yii::createObject(UpgradeModel::className());
            $upgradeModel->type             = $item["type"];    // 版本类型 1. app类升级,2. OTA整包升级
            $upgradeModel->version          = $item["version"]; // 版本
            $upgradeModel->manufacture_id   = $item["manufacture_id"]; // 厂商编号
            $upgradeModel->project_id       = $item["project_id"]; // 项目
            $upgradeModel->model_id         = $item["model_id"];    // 型号
            $upgradeModel->desc             = $item["desc"];    // 描述
            $upgradeModel->path             = $item["path"];        // 文件路径
            $upgradeModel->upload_path      = $item["upload_path"];        // 服务器文件路径
            $upgradeModel->package_name     = $item["package_name"]; // 安装包名称
            if (isset($item["device_ids"])) {
                $upgradeModel->device_ids = $item["指定deviceID,可以多个,多个用逗号隔开"]; // 版本
            }
            $upgradeModel->size     = $item["size"]; // 文件大小
            $upgradeModel->file_md5 = $item["file_md5"]; // 软件包校验用的md5
            $saveResult = $upgradeModel->save();
            return $saveResult;
        } catch (Exception $e) {
            return false;
        }
    }

    /**
     * 更新版本
     * @param $id
     * @param $item
     * @return null|static
     */
    static function update($id, $item)
    {
        $upgradeModel = UpgradeModel::findOne($id);
        if (empty($upgradeModel)) {
            return false;
        }
        if (isset($item['version'])) {
            $item['version'] = trim($item['version']);
        }
        if (isset($item['version']) && $upgradeModel->version != $item['version']) {
            $where = [
                'version'           => $item["version"],
                'manufacture_id'    => $item["manufacture_id"],
                'project_id'        => $item["project_id"],
                'model_id'          => $item["model_id"],
                'package_name'      => $item["package_name"],
                'is_delete'         => 0,
                'type'              => $item["type"]
            ];
            $findUpgradeModel = UpgradeModel::findOne($where);
            if (!empty($findUpgradeModel) && $findUpgradeModel->id != $id) {
                return -1;
            }
        }
        if (isset($item['version']) && !empty($item['version'])) {
            $upgradeModel->version = $item['version'];
        }
        if (isset($item['manufacture_id']) && !empty($item['manufacture_id'])) {
            $upgradeModel->manufacture_id = $item['manufacture_id'];
        }
        if (isset($item['project_id']) && !empty($item['project_id'])) {
            $upgradeModel->project_id = $item['project_id'];
        }
        if (isset($item['model_id']) && !empty($item['model_id'])) {
            $upgradeModel->model_id = $item['model_id'];
        }
        if (isset($item['desc']) && !empty($item['desc'])) {
            $upgradeModel->desc = $item['desc'];
        }
        if (isset($item['path']) && !empty($item['path'])) {
            $upgradeModel->path = $item['path'];
        }
        if (isset($item['upload_path']) && !empty($item['upload_path'])) {
            $upgradeModel->upload_path = $item['upload_path'];
        }
        if (isset($item['focuse']) && !empty($item['focuse'])) {
            $upgradeModel->focuse = $item['focuse'];
        }
        if (isset($item['device_ids']) && !empty($item['device_ids'])) {
            $upgradeModel->device_ids = $item['device_ids'];
        }
        // 1 全量 2 增量
        if (isset($item['package_type']) && !empty($item['package_type'])) {
            $upgradeModel->package_type = $item['package_type'];
        }
        // 增量允许的起始版本号
        if (isset($item['start_version']) && !empty($item['start_version'])) {
            $upgradeModel->start_version = $item['start_version'];
        }
        // 增量允许的结束版本号
        if (isset($item['end_version'])) {
            $upgradeModel->end_version = $item['end_version'];
        }
        if (isset($item['size']) && !empty($item['size'])) {
            $upgradeModel->size = $item['size'];
        }
        if (isset($item['status']) && !empty($item['status'])) {
            $upgradeModel->status = $item['status'];
        }
        if (isset($item['file_md5']) && !empty($item['file_md5'])) {
            $upgradeModel->file_md5 = $item['file_md5'];
        }
        if (isset($item['pushed_at']) && !empty($item['pushed_at'])) {
            $upgradeModel->pushed_at = $item['pushed_at'];
        }
        if (isset($item['package_name']) && !empty($item['package_name'])) {
            $upgradeModel->package_name = $item['package_name'];
        }

        $resultSave = $upgradeModel->save();
        return $resultSave;
    }

    /**
     * 删除版本
     * @param $id
     * @param $item
     * @return null|static
     */
    public static function delete($id)
    {
        $upgradeModel = UpgradeModel::findOne($id);
        if (empty($upgradeModel)) {
            return false;
        }
        $path = $upgradeModel->path;
        $uploadPath = $upgradeModel->upload_path;
        $localRoot = Yii::getAlias('@app/ht');
        unlink($localRoot.'/'.$uploadPath);
        $fileService = new FileService();
        $fileService->delete($path);


        return UpgradeModel::updateAll(["is_delete" => 1, 'path' => null, 'upload_path' => null], ["id" => $id]);
    }
}