public JsonResult FtpValidate(CommonParamViewModel model)
 {
     return(ExecuteFunctionRun(() =>
     {
         ActionResult result = new ActionResult();
         result.Success = FtpValidateResult(model);
         return Json(result, JsonRequestBehavior.AllowGet);
     }));
 }
        /// <summary>
        /// 保存存储策略
        /// </summary>
        /// <param name="model"></param>
        /// <returns>true:成功;false:失败</returns>
        private bool SaveStorageInfo(CommonParamViewModel model)
        {
            FileServer fileServer = this.Engine.FilePolicyManager.GetDefaultFileServer();

            OThinker.H3.DataModel.FileDownloadType downloadType = (OThinker.H3.DataModel.FileDownloadType) int.Parse(model.ClientMethod);
            OThinker.H3.DataModel.FileStorageType  storageType  = (OThinker.H3.DataModel.FileStorageType) int.Parse(model.StorageMethod);
            fileServer.DbCode       = model.SQLPool;
            fileServer.Account      = model.FTPAcount;
            fileServer.ServerHost   = model.FTPServer;
            fileServer.ServerPort   = string.IsNullOrEmpty(model.FTPServerPort) ? 21 : int.Parse(model.FTPServerPort);
            fileServer.Password     = model.FTPPassWord;
            fileServer.DownloadUrl  = model.FTPUrl;
            fileServer.DownloadType = downloadType;
            fileServer.StorageType  = storageType;
            fileServer.BasePath     = model.BasePath ?? "";
            return(this.Engine.FilePolicyManager.UpdateFileServer(fileServer));
        }
        /// <summary>
        /// FTP信息验证
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private bool FtpValidateResult(CommonParamViewModel model)
        {
            FileServer fileServer = this.Engine.FilePolicyManager.GetDefaultFileServer();

            // 检查数据库连接
            OThinker.H3.DataModel.FileStorageType  storageType  = (OThinker.H3.DataModel.FileStorageType) int.Parse(model.StorageMethod);
            OThinker.H3.DataModel.FileDownloadType downloadType = (OThinker.H3.DataModel.FileDownloadType) int.Parse(model.ClientMethod);
            fileServer.StorageType = storageType;
            string password = model.FTPPassWord;

            if (!string.IsNullOrEmpty(password))
            {
                fileServer.Password = password;
            }

            if (storageType == FileStorageType.FTP)
            {
                FtpWebRequest ftpRequest;
                try
                {
                    if (!string.IsNullOrEmpty(model.FTPServerPort))
                    {
                        ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + model.FTPServer.Trim() + ":" + model.FTPServerPort.Trim() + "/"));
                    }
                    else
                    {
                        ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + model.FTPServer.Trim() + "/"));
                    }

                    ftpRequest.Method      = WebRequestMethods.Ftp.ListDirectory;
                    ftpRequest.UseBinary   = true;
                    ftpRequest.Credentials = new NetworkCredential(model.FTPAcount, fileServer.Password);
                    FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
                }
                catch
                {
                    return(false);
                }
            }
            return(true);
        }
        public JsonResult SaveCommonParam(CommonParamViewModel model)
        {
            return(ExecuteFunctionRun(() =>
            {
                ActionResult result = new ActionResult();
                if (OThinker.H3.DataModel.FileStorageType.FTP == (OThinker.H3.DataModel.FileStorageType) int.Parse(model.StorageMethod))
                {
                    if (string.IsNullOrEmpty(model.FTPServer))
                    {
                        result.Success = false;
                        result.Message = "CommonParam.FTPInfoRequired";
                        return Json(result, JsonRequestBehavior.AllowGet);
                    }
                    else
                    {
                        if (!FtpValidateResult(model) && false)
                        {
                            result.Success = false;
                            result.Message = "msgGlobalString.FtpValidateFailed";
                            return Json(result, JsonRequestBehavior.AllowGet);
                        }
                    }
                }
                if (model.ClientMethod == "1" && string.IsNullOrEmpty(model.FTPUrl))
                {
                    result.Success = false;
                    result.Message = "CommonParam.FTPUrlIsEmpty";
                    return Json(result, JsonRequestBehavior.AllowGet);
                }

                bool saveStorage = SaveStorageInfo(model);
                //新用户初始密码设置
                if (!string.IsNullOrWhiteSpace(model.Password))
                {
                    Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_UserInitialPassword, model.Password.Trim());
                }
                // 流水号的方式
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_SequenceNoModal, model.SequenceNoModal);
                // 流水号的日期格式
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_SequenceNoDateFormat, model.SequenceNoDateFormat);
                // 流水号的长度
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_SequenceNoLength, model.SequenceNoLength);
                // 流水号的顺序
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_SequenceNoOrder, model.SequenceNoOrder);
                // 流水号的重置策略
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_GlobalSeqNoResetType, model.SequenceNoResetType);

                // 异常管理员
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_ExceptionManager, model.ExceptionManager);

                // 委托身份,默认为AgencyIdentityType.Source
                AgencyIdentityType agencyIdentity = AgencyIdentityType.Source;
                CustomSetting.SetAgencyIdentityType(Engine.SettingManager, agencyIdentity);

                // 任务超时检查的时间间隔
                CustomSetting.SetOvertimeCheckInterval(Engine.SettingManager, System.TimeSpan.Parse(model.OvertimeCheckInterval));
                //内网集成服务器的地址
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_RemoteStubAddress, model.RemoteHubAddress);

                //帮助站点url
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_WikiUrl,
                                                       string.IsNullOrEmpty(model.WikiUrl) ? "" : model.WikiUrl.Trim());

                //极光推送设置
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_JPushAppKey, model.AppKey);
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_JPushMasterSecret, model.MasterSecret);
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_JPushAppName, model.AppName);

                //微信设置
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_WeChatCorpID, model.CorpID);
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_WeChatSecret, model.Secret);
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_WeChatMessageSecret, model.MessageSecret);
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_WeChatAgentId, model.WeChatProID);
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_PortalUrl, model.WeChatMsgUrl);

                //钉钉设置
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_DDCorpID, model.DDCorpID);
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_DDSecret, model.DDSecret);
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_DDAgentId, model.DDProID);
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_DDUrl, model.DDMsgUrl);
                Engine.SettingManager.SetCustomSetting(CustomSetting.Setting_DDPcUrl, model.DDPcMsgUrl);

                result.Success = true;
                return Json(result, JsonRequestBehavior.AllowGet);
            }));
        }
        public JsonResult GetCommonParam()
        {
            return(ExecuteFunctionRun(() =>
            {
                ActionResult result = new ActionResult();

                FileServer fileServer = this.Engine.FilePolicyManager.GetDefaultFileServer();
                //系统设置模型
                CommonParamViewModel model = new CommonParamViewModel()
                {
                    Password = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_UserInitialPassword),
                    AgencyIdentity = CustomSetting.GetAgencyIdentityType(Engine.SettingManager).ToString(),
                    ExceptionManager = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_ExceptionManager),
                    SequenceNoModal = CustomSetting.GetSequenceNoModal(Engine.SettingManager).ToString(),
                    SequenceNoDateFormat = CustomSetting.GetSequenceNoDateFormat(Engine.SettingManager).ToString(),
                    SequenceNoOrder = CustomSetting.GetSequenceNoOrder(Engine.SettingManager).ToString(),
                    SequenceNoLength = CustomSetting.GetSequenceNoLength(Engine.SettingManager).ToString(),
                    SequenceNoResetType = CustomSetting.GetGlobalSeqResetType(this.Engine.SettingManager).ToString(),
                    NextInstanceID = GetNextInstanceID(),
                    OvertimeCheckInterval = CustomSetting.GetOvertimeCheckInterval(this.Engine.SettingManager).ToString(),
                    RemoteHubAddress = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_RemoteStubAddress),
                    WikiUrl = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_WikiUrl),
                    StorageMethod = ((int)fileServer.StorageType).ToString(),
                    ClientMethod = ((int)fileServer.DownloadType).ToString(),
                    SQLPool = fileServer.DbCode,
                    FTPServer = fileServer.ServerHost,
                    FTPServerPort = fileServer.ServerPort.ToString() ?? "21",
                    FTPAcount = fileServer.Account,
                    FTPPassWord = fileServer.Password,
                    FTPUrl = fileServer.DownloadUrl,
                    BasePath = fileServer.BasePath,
                    CorpID = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_WeChatCorpID),
                    Secret = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_WeChatSecret),
                    MessageSecret = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_WeChatMessageSecret),
                    WeChatProID = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_WeChatAgentId),
                    WeChatMsgUrl = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_PortalUrl),
                    AppKey = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_JPushAppKey),
                    MasterSecret = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_JPushMasterSecret),
                    AppName = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_JPushAppName),
                    DDCorpID = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_DDCorpID),
                    DDMsgUrl = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_DDUrl),
                    DDPcMsgUrl = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_DDPcUrl),
                    DDProID = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_DDAgentId),
                    DDSecret = Engine.SettingManager.GetCustomSetting(CustomSetting.Setting_DDSecret)
                };
                //流水号的日期格式
                List <Item> sequenceNoDateFormats = InitSequenceNoDateFormats();
                //流水号的模式
                List <Item> sequenceNoModals = InitSequenceNoModals();
                //委托身份
                List <Item> agencyIdentitys = InitAgencyIdentitys();
                //流水号的顺序
                List <Item> sequenceNoOrders = InitSequenceNoOrders();
                //流水号的长度
                List <Item> sequenceNoLengths = InitSequenceNoLengths();
                //流水号的重置策略
                List <Item> sequenceNoResetTypes = InitRestTypes();
                //用户选择的方式
                List <Item> clientMethods = InitClientMethods();
                //存储策略
                List <Item> storageMethods = InitStorageMethods();
                //数据库连接池
                List <Item> sqlPools = InitSqlPools();
                result.Extend = new
                {
                    CommonParam = model,
                    SequenceNoDateFormats = sequenceNoDateFormats,
                    SequenceNoModals = sequenceNoModals,
                    AgencyIdentitys = agencyIdentitys,
                    SequenceNoOrders = sequenceNoOrders,
                    SequenceNoLengths = sequenceNoLengths,
                    SequenceNoResetTypes = sequenceNoResetTypes,
                    StorageMethods = storageMethods,
                    ClientMethods = clientMethods,
                    SQLPools = sqlPools
                };
                result.Success = true;
                return Json(result, JsonRequestBehavior.AllowGet);
            }));
        }