mainwindow.cpp
@@ -39,6 +39,14 @@
    ui->pushButton_dateset->setVisible(false);
    ui->pushButton_adddate->setVisible(false);
    ui->pushButton_reducedate->setVisible(false);
    ui->lineEdit_basenum->setVisible(false);
    ui->lineEdit_biosnum->setVisible(false);
    ui->lineEdit_basenum_2->setVisible(false);
    ui->lineEdit_biosnum_2->setVisible(false);
    ui->label_basenum->setVisible(false);
    ui->label_biosnum->setVisible(false);
    ui->label_basenum_2->setVisible(false);
    ui->label_biosnum_2->setVisible(false);
    //前七条是简化加密数据必用的,在这里设定好方便对应
    m_numToInfo.insert("1","Baseboard_Uuid");
    m_numToInfo.insert("2","CPU_Processorid");
@@ -143,12 +151,9 @@
    QString hashkey32 = EncryptData(hashkey64,QCryptographicHash::Md5);
    QString AESresult = AES_decryption(b64result,hashkey32);
    decodedText = DecodebyBase64(AESresult);
    qDebug()<<"AESresult"<<AESresult;
    qDebug()<<"decodedText"<<decodedText;
    //添加解压缩的操作
    QByteArray text = decodedText.toLocal8Bit();
    QByteArray jsonData = qUncompress(text.fromBase64(text));
    qDebug()<<"jsonData"<<jsonData;
//    decodedText = DecodebyBase64(QString::fromLocal8Bit(jsonData));
    decodedText = QString(jsonData);
    return decodedText;
@@ -252,10 +257,10 @@
//        ui->label_isaquifer_2->setText(licenseinfo.IsEnabled_aquifer==0?QStringLiteral("未激活"):QStringLiteral("已激活"));
//        ui->label_ispipe_2->setText(licenseinfo.IsEnabled_pipe==0?QStringLiteral("未激活"):QStringLiteral("已激活"));
//        ui->label_isnetwork_2->setText(licenseinfo.IsEnabled_network==0?QStringLiteral("未激活"):QStringLiteral("已激活"));
        ui->label_iscell_2->setText(localinfo.ActiveState==0?QStringLiteral("未激活"):QStringLiteral("已激活"));
        ui->label_isaquifer_2->setText(localinfo.ActiveState==0?QStringLiteral("未激活"):QStringLiteral("已激活"));
        ui->label_ispipe_2->setText(localinfo.ActiveState==0?QStringLiteral("未激活"):QStringLiteral("已激活"));
        ui->label_isnetwork_2->setText(localinfo.ActiveState==0?QStringLiteral("未激活"):QStringLiteral("已激活"));
        ui->label_iscell_2->setText(licenseinfo.ActiveState==0?QStringLiteral("未激活"):QStringLiteral("已激活"));
        ui->label_isaquifer_2->setText(licenseinfo.ActiveState==0?QStringLiteral("未激活"):QStringLiteral("已激活"));
        ui->label_ispipe_2->setText(licenseinfo.ActiveState==0?QStringLiteral("未激活"):QStringLiteral("已激活"));
        ui->label_isnetwork_2->setText(licenseinfo.ActiveState==0?QStringLiteral("未激活"):QStringLiteral("已激活"));
    }
}
@@ -263,9 +268,7 @@
{
    QString encryptlocalid = ui->textEdit_localid->toPlainText();
    QString localid = getDecrypt(encryptlocalid,key);
    qDebug()<<"localid"<<localid;
    QByteArray localidbyte = localid.toLocal8Bit();
    qDebug()<<"localidbyte"<<localidbyte;
    QJsonParseError err_rpt;
    QJsonDocument localidjsondoc(QJsonDocument::fromJson(localid.toUtf8(), &err_rpt));//字符串格式化为JSON
    if(err_rpt.error != QJsonParseError::NoError)
@@ -304,15 +307,9 @@
//        localinfo.Versionid = localid_Obj.value("Versionid").toString();
        //与之前的加密对应,且去掉冗余信息
//        localinfo.Baseboard_Serialnumber = localid_Obj.value(m_numToInfo.key("Baseboard_Serialnumber")).toString();
        localinfo.Baseboard_Uuid = localid_Obj.value(m_numToInfo.key("Baseboard_Uuid")).toString();
//        localinfo.Bios_Serialnumber = localid_Obj.value(m_numToInfo.key("Bios_Serialnumber")).toString();
        localinfo.CPU_Processorid = localid_Obj.value(m_numToInfo.key("CPU_Processorid")).toString();
        localinfo.Username = localid_Obj.value(m_numToInfo.key("Username")).toString();
//        localinfo.IsEnabled_cell = localid_Obj.value(m_numToInfo.key("IsEnabled_cell")).toInt();
//        localinfo.IsEnabled_aquifer = localid_Obj.value(m_numToInfo.key("IsEnabled_aquifer")).toInt();
//        localinfo.IsEnabled_pipe = localid_Obj.value(m_numToInfo.key("IsEnabled_pipe")).toInt();
//        localinfo.IsEnabled_network = localid_Obj.value(m_numToInfo.key("IsEnabled_network")).toInt();
        localinfo.LicensedDuration_end = localid_Obj.value(m_numToInfo.key("LicensedDuration_end")).toString();
        localinfo.LicensedDuration_start = localid_Obj.value(m_numToInfo.key("LicensedDuration_start")).toString();
        localinfo.Productid = localid_Obj.value(m_numToInfo.key("Productid")).toString();
@@ -512,11 +509,13 @@
//    licensekey_Obj[m_numToInfo.key("IsEnabled_pipe")] = 1;
//    licensekey_Obj[m_numToInfo.key("IsEnabled_network")] = 1;
    licensekey_Obj[m_numToInfo.key("ActiveState")] = 1;
    QDateTime licensedate = QDateTime::fromString(licensekey_Obj[m_numToInfo.key("LicensedDuration_end")].toString(),"yyyy-MM-dd hh:mm:ss");
    if(licensedate.isNull()){
        qDebug()<<"licenseTime is Null";
        licensedate = QDateTime::currentDateTime();
    }
//    QDateTime licensedate = QDateTime::fromString(licensekey_Obj[m_numToInfo.key("LicensedDuration_end")].toString(),"yyyy-MM-dd hh:mm:ss");
//    if(licensedate.isNull()){
//        qDebug()<<"licenseTime is Null";
//        licensedate = QDateTime::currentDateTime();
//    }
    //现在点击授权是从当前的时间加授权时间
    QDateTime licensedate = QDateTime::currentDateTime();
    QDateTime newlicensedate = licensedate.addMonths(time);
    QString licensedatestr = newlicensedate.toString("yyyy-MM-dd hh:mm:ss");
    licensekey_Obj[m_numToInfo.key("LicensedDuration_end")] = licensedatestr;
@@ -531,18 +530,17 @@
    //将授权信息记录到excel表中
    QString edition ="";
    if(time == 3){
        edition = "normal";
        edition = QStringLiteral("普通版");
    }else if(time == 6){
        edition = "educational";
        edition = QStringLiteral("教育版");
    }else if(time == 12){
        edition = "professional";
        edition = QStringLiteral("专业版");
    }
    ActiveRecord(licensekey_Obj,edition,ui->textEdit_licensekey->toPlainText());
}
void MainWindow::ActiveRecord(QJsonObject jsonObj,QString edition, QString licenseKey)
{
    qDebug()<<"ActiveRecord"<<edition<<licenseKey;
    QString Baseboard_Uuid = jsonObj[m_numToInfo.key("Baseboard_Uuid")].toString();
    QString src = QApplication::applicationDirPath();
    QDir dir(src);
@@ -552,13 +550,14 @@
        Document xlsx;
        // 设置列标题
        QStringList headers = {
            "Baseboard_Uuid",
            "edition",
            "LicensedDuration_start",
            "LicensedDuration_end",
            "Productid",
            "Versionid",
            "licenseKey"
            "id",
            QStringLiteral("主板唯一标识"),
            QStringLiteral("版本"),
            QStringLiteral("许可起始时间"),
            QStringLiteral("许可截止时间"),
            QStringLiteral("产品号"),
            QStringLiteral("版本号"),
            QStringLiteral("许可密钥")
        };
        // 写入标题行
        for (int col = 1; col <= headers.size(); ++col) {
@@ -571,37 +570,36 @@
    int uuidColumn = -1;
    //先查找是否已经存在该项记录
    for(int i = 2; i <= xlsx.dimension().rowCount(); i++){
        QXlsx::Cell* headerCell = xlsx.cellAt(i, 1);
        QXlsx::Cell* headerCell = xlsx.cellAt(i, 2);
        if (headerCell) {
            QString headerValue = headerCell->value().toString();
            qDebug()<<"headerValue"<<headerValue<<Baseboard_Uuid;
            if (headerValue.compare(Baseboard_Uuid, Qt::CaseInsensitive) == 0) {
                uuidColumn = i;
                break;
            }
        }
    }
    qDebug()<<"uuidColumn"<<uuidColumn;
    if(uuidColumn == -1){
        //如果没有这条记录就写入新的
        qDebug()<<"here";
        int rowCount = xlsx.dimension().rowCount()+1;
        xlsx.write(rowCount, 1, jsonObj[m_numToInfo.key("Baseboard_Uuid")].toString());
        xlsx.write(rowCount, 2, edition);
        xlsx.write(rowCount, 3, jsonObj[m_numToInfo.key("LicensedDuration_start")].toString());
        xlsx.write(rowCount, 4, jsonObj[m_numToInfo.key("LicensedDuration_end")].toString());
        xlsx.write(rowCount, 5, jsonObj[m_numToInfo.key("Productid")].toString());
        xlsx.write(rowCount, 6, jsonObj[m_numToInfo.key("Versionid")].toString());
        xlsx.write(rowCount, 7, licenseKey);
        int id = xlsx.read(rowCount-1,1).toInt();
        xlsx.write(rowCount, 1, id+1);
        xlsx.write(rowCount, 2, jsonObj[m_numToInfo.key("Baseboard_Uuid")].toString());
        xlsx.write(rowCount, 3, edition);
        xlsx.write(rowCount, 4, jsonObj[m_numToInfo.key("LicensedDuration_start")].toString());
        xlsx.write(rowCount, 5, jsonObj[m_numToInfo.key("LicensedDuration_end")].toString());
        xlsx.write(rowCount, 6, jsonObj[m_numToInfo.key("Productid")].toString());
        xlsx.write(rowCount, 7, jsonObj[m_numToInfo.key("Versionid")].toString());
        xlsx.write(rowCount, 8, licenseKey);
    }else{
        //如果存在这条记录就更新数据信息
        xlsx.write(uuidColumn, 1, jsonObj[m_numToInfo.key("Baseboard_Uuid")].toString());
        xlsx.write(uuidColumn, 2, edition);
        xlsx.write(uuidColumn, 3, jsonObj[m_numToInfo.key("LicensedDuration_start")].toString());
        xlsx.write(uuidColumn, 4, jsonObj[m_numToInfo.key("LicensedDuration_end")].toString());
        xlsx.write(uuidColumn, 5, jsonObj[m_numToInfo.key("Productid")].toString());
        xlsx.write(uuidColumn, 6, jsonObj[m_numToInfo.key("Versionid")].toString());
        xlsx.write(uuidColumn, 7, licenseKey);
        xlsx.write(uuidColumn, 2, jsonObj[m_numToInfo.key("Baseboard_Uuid")].toString());
        xlsx.write(uuidColumn, 3, edition);
        xlsx.write(uuidColumn, 4, jsonObj[m_numToInfo.key("LicensedDuration_start")].toString());
        xlsx.write(uuidColumn, 5, jsonObj[m_numToInfo.key("LicensedDuration_end")].toString());
        xlsx.write(uuidColumn, 6, jsonObj[m_numToInfo.key("Productid")].toString());
        xlsx.write(uuidColumn, 7, jsonObj[m_numToInfo.key("Versionid")].toString());
        xlsx.write(uuidColumn, 8, licenseKey);
    }
    xlsx.save();
}