Ejemplo n.º 1
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            this.Icon = Properties.Resources.clock;

            version = notesService.GetVersion();
            this.chkEnableSync.Checked = version.SyncEnable;
            this.txtSyncUrl.Text       = version.SyncUrl;
            this.txtSyncUser.Text      = version.SyncUser;
            this.txtSyncToken.Text     = version.SyncToken;

            if (version.SmsConfig == null)
            {
                version.SmsConfig = new AliSmsConfig();
            }

            if (!string.IsNullOrEmpty(version.SmsConfig.ApiUrl))
            {
                txtAliSmsUrl.Text = version.SmsConfig.ApiUrl;
            }

            txtAliAk.Text           = version.SmsConfig.AK;
            txtAliSk.Text           = version.SmsConfig.SK;
            txtAliSign.Text         = version.SmsConfig.SignName;
            txtAliTemplateCode.Text = version.SmsConfig.TemplateCode;
            txtAliTempParam.Text    = version.SmsConfig.TemplateParamJson;
        }
Ejemplo n.º 2
0
        private void DoSync(Version version, int serverVersion)
        {
            logger.Info("SyncServerToClient begin: " + version.ServerVersion + ":" + version.ClientVersion);
            var serverNotes = syncFeign.GetNotes(version.SyncUser, version.SyncToken);

            logger.Info("服务端下发数据:\n" + serializer.SerializToStr(serverNotes));

            // 备份本地
            notesService.BackupAll();

            // 保存服务端拉到的提醒
            foreach (var note in serverNotes)
            {
                // 直接使用服务端的id,不再使用客户端ID了
                notesService.Save(note);
            }

            version.ServerVersion = serverVersion;
            version.ClientVersion = serverVersion;
            version.LastSyncTime  = DateTime.Now;
            versionRepository.Save(version);
            logger.Info("SyncServerToClient end: " + version.ServerVersion + ":" + version.ClientVersion);

            // 刷新主界面
            FormHelper.Invoke(MainForm.Default, () => MainForm.Default.LoadNotes());
        }
Ejemplo n.º 3
0
        private void DoSync(Version version)
        {
            logger.Info("SyncClientToServer begin: " + version.ServerVersion + ":" + version.ClientVersion);
            var allNotes      = notesService.FindAll();
            var serverVersion = syncFeign.SaveNotes(version.SyncUser, version.SyncToken, allNotes);

            version.ServerVersion = serverVersion;
            version.ClientVersion = serverVersion;
            version.LastSyncTime  = DateTime.Now;
            versionRepository.Save(version);
            logger.Info("SyncClientToServer end: " + version.ServerVersion + ":" + version.ClientVersion);
        }
Ejemplo n.º 4
0
        public bool Sync(Version version, int serverVersion)
        {
            // 服务端版本等于上次同步版本,且本地版本大于服务端版本,走客户端同步
            if (version.ServerVersion == serverVersion &&
                version.ClientVersion > serverVersion)
            {
                DoSync(version);
                return(true);
            }

            return(false);
        }
Ejemplo n.º 5
0
        public bool Sync(Version version, int serverVersion)
        {
            // 上次同步版本 < 服务端版本 && 本地版本 == 上次同步版本,走服务端同步
            if (version.ServerVersion < serverVersion &&
                version.ClientVersion == version.ServerVersion)
            {
                DoSync(version, serverVersion);
                return(true);
            }

            return(false);
        }
Ejemplo n.º 6
0
        public bool Sync(Version version, int serverVersion)
        {
            // 上次同步版本 < 服务端版本 && 本地版本 > 上次同步版本
            // 表示2边同时变更了,有冲突
            if (version.ServerVersion < serverVersion &&
                version.ClientVersion > version.ServerVersion)
            {
                DoSync();
                return(true);
            }

            return(false);
        }
Ejemplo n.º 7
0
        private void VersionCheck(Version verObj, int serverVerNow)
        {
            if (verObj.ClientVersion < verObj.ServerVersion)
            {
                throw new ArgumentException(
                          $"本地版本:{verObj.ClientVersion.ToString()} 小于 上次同步版本:{verObj.ServerVersion.ToString()}, 有问题");
            }

            if (verObj.ServerVersion > serverVerNow)
            {
                throw new ArgumentException(
                          $"服务端版本:{serverVerNow.ToString()} 小于 上次同步版本:{verObj.ServerVersion.ToString()}, 有问题");
            }
        }
Ejemplo n.º 8
0
        private void StartSync(Version verObj)
        {
            // 读取服务端版本号
            var serverVerNow = syncFeign.GetServerVersion(verObj.SyncUser, verObj.SyncToken);

            VersionCheck(verObj, serverVerNow);

            foreach (var syncType in syncTypeList)
            {
                // 有一个同步方案匹配,就退出
                if (syncType.Sync(verObj, serverVerNow))
                {
                    return;
                }
            }
        }
Ejemplo n.º 9
0
        private void BtnSave_Click(object sender, EventArgs e)
        {
            version            = notesService.GetVersion();
            version.SyncEnable = this.chkEnableSync.Checked;
            version.SyncUrl    = this.txtSyncUrl.Text.Trim();
            version.SyncUser   = this.txtSyncUser.Text.Trim();
            version.SyncToken  = this.txtSyncToken.Text.Trim();
            if (version.SyncEnable)
            {
                if (version.SyncUrl.Length <= 0 || version.SyncUser.Length <= 0 || version.SyncToken.Length <= 0)
                {
                    MessageBox.Show("同步URL、账号、密钥不能为空");
                    return;
                }
            }

            if (version.SmsConfig == null)
            {
                version.SmsConfig = new AliSmsConfig();
            }

            version.SmsConfig.ApiUrl            = txtAliSmsUrl.Text.Trim();
            version.SmsConfig.AK                = txtAliAk.Text.Trim();
            version.SmsConfig.SK                = txtAliSk.Text.Trim();
            version.SmsConfig.SignName          = txtAliSign.Text.Trim();
            version.SmsConfig.TemplateCode      = txtAliTemplateCode.Text.Trim();
            version.SmsConfig.TemplateParamJson = txtAliTempParam.Text.Trim();
            if (version.SmsConfig.TemplateParamJson.Length > 0 &&
                !version.SmsConfig.ValidParaFormat)
            {
                MessageBox.Show("短信配置的模板参数,必须包含 {title} ");
                return;
            }

            notesService.SaveVersion(version);
            this.Close();
        }