public JsonResult WPSNotify(WPSNotifyRequest body)
        {
            _log.WriteInfo("开始请求接口【onnotify】");
            WPSBaseModel result = new WPSBaseModel();

            try
            {
                var request = GetFilterRequest.GetParams(HttpContext.ApplicationInstance.Request);
                if (!request.Status)
                {
                    result.code    = request.code;
                    result.message = request.message;
                    result.details = request.details;
                    result.hint    = request.hint;
                }
                else
                {
                    result.code = (int)Enumerator.ErrorCode.OK;
                }
            }
            catch (Exception ex)
            {
                _log.WriteError("【系统异常】-【" + ex.Message + "】", ex);
                result.code    = (int)Enumerator.ErrorCode.ServerError;
                result.message = Enumerator.ErrorCode.ServerError.ToString();
                result.details = result.hint = EnumExtension.GetDescription(Enumerator.ErrorCode.ServerError);
            }

            _log.WriteInfo("请求接口【onnotify】完成,返回数据:" + JsonConvert.SerializeObject(result));
            return(Json(result));
        }
        public JsonResult RenameFile(RenameFileRequest body)
        {
            _log.WriteInfo("开始请求接口【file/rename】,请求参数:" + JsonConvert.SerializeObject(body));
            WPSBaseModel result = new WPSBaseModel();

            try
            {
                var request = GetFilterRequest.GetParams(HttpContext.ApplicationInstance.Request);

                if (!request.Status)
                {
                    result.code    = request.code;
                    result.message = request.message;
                    result.details = request.details;
                    result.hint    = request.hint;
                }
                else
                {
                    #region 在测试环境暂时不要将此块房开,由于上面获取文件名是固定的,成功更改文件成功后,不能打开文件
                    //var fileName = request.FileId == "1000" ? "TestFile.docx" : (request.FileId == "1001" ? "TestFile_v1.docx" : "TestFile_v2.docx");

                    ////原文件的物理路径
                    //string filePath = Server.MapPath($"/Files/{fileName}");

                    //// 移动到的新位置的物理路径(如果还是当前文件夹, 则会重命名文件)
                    //string fileTargetPath = Server.MapPath($"/Files/{body.name}");

                    ////判断到的新地址是否存在重命名文件
                    //if (System.IO.File.Exists(fileTargetPath))
                    //{
                    //    result.code = (int)Enumerator.ErrorCode.文件已存在;
                    //    result.message = EnumExtension.GetDescription(Enumerator.ErrorCode.文件已存在);
                    //}
                    //System.IO.File.Move(filePath, fileTargetPath);//2个文件在不同目录则是移动,如果在相同目录下则是重命名
                    #endregion
                    result.code = (int)Enumerator.ErrorCode.OK;
                }
            }
            catch (Exception ex)
            {
                _log.WriteError("【系统异常】-【" + ex.Message + "】", ex);
                result.code    = (int)Enumerator.ErrorCode.ServerError;
                result.message = Enumerator.ErrorCode.ServerError.ToString();
                result.details = result.hint = EnumExtension.GetDescription(Enumerator.ErrorCode.ServerError);
            }
            _log.WriteInfo("请求接口【file/rename】完成,返回数据:" + JsonConvert.SerializeObject(result));
            return(Json(result));
        }
        public JsonResult Version(int version)
        {
            _log.WriteInfo("开始请求接口【file/version】");
            GetFileByVersionResult result = new GetFileByVersionResult();

            try
            {
                var request = GetFilterRequest.GetParams(HttpContext.ApplicationInstance.Request);
                if (!request.Status)
                {
                    result.code    = request.code;
                    result.message = request.message;
                    result.details = request.details;
                    result.hint    = request.hint;
                }
                else
                {
                    // 从数据库查询文件信息......

                    // 创建时间和修改时间默认全是现在

                    var    now      = TimestampHelper.GetCurrentTimestamp();
                    var    fileName = version == 1 ? "TestFile_v1.docx" : (version == 2 ? "TestFile_v2.docx" : "TestFile.docx");
                    string filePath = Server.MapPath($"/Files/{fileName}");
                    result.file = new GetFileResult
                    {
                        id           = request.FileId,
                        name         = fileName,
                        version      = version,
                        size         = FileHelper.FileSize(filePath), // WPS单位是B,
                        create_time  = now,
                        creator      = "天玺",
                        modify_time  = now,
                        modifier     = "天玺",
                        download_url = $"{ConfigurationManager.AppSettings["WPSTokenUrl"]}/Files/{fileName}"
                    };
                }
            }
            catch (Exception ex)
            {
                _log.WriteError("【系统异常】-【" + ex.Message + "】", ex);
                result.code    = (int)Enumerator.ErrorCode.ServerError;
                result.message = Enumerator.ErrorCode.ServerError.ToString();
                result.details = result.hint = EnumExtension.GetDescription(Enumerator.ErrorCode.ServerError);
            }
            _log.WriteInfo("请求接口【file/version】完成,返回数据:" + JsonConvert.SerializeObject(result));
            return(Json(result, JsonRequestBehavior.AllowGet));
        }
        public JsonResult SaveFile()
        {
            _log.WriteInfo("开始请求接口【file/save】");
            SaveFileResult result = new SaveFileResult();

            try
            {
                var request = GetFilterRequest.GetParams(HttpContext.ApplicationInstance.Request);
                if (!request.Status)
                {
                    result.code    = request.code;
                    result.message = request.message;
                    result.details = request.details;
                    result.hint    = request.hint;
                }
                else
                {
                    var fileName             = request.FileId == "1000" ? "TestFile.docx" : (request.FileId == "1001" ? "TestFile_v1.docx" : "TestFile_v2.docx");
                    HttpFileCollection files = HttpContext.ApplicationInstance.Request.Files;
                    foreach (string key in files.AllKeys)
                    {
                        HttpPostedFile file = files[key];
                        if (string.IsNullOrEmpty(file.FileName) == false)
                        {
                            file.SaveAs(Server.MapPath("~/Files/") + fileName);
                        }
                    }

                    result.file = new WPSFileModel
                    {
                        download_url = $"{ConfigurationManager.AppSettings["WPSTokenUrl"]}/Files/{fileName}",
                        id           = request.FileId,
                        name         = request.Params["_w_fileName"].ToString()
                    };
                }
            }
            catch (Exception ex)
            {
                _log.WriteError("【系统异常】-【" + ex.Message + "】", ex);
                result.code    = (int)Enumerator.ErrorCode.ServerError;
                result.message = Enumerator.ErrorCode.ServerError.ToString();
                result.details = result.hint = EnumExtension.GetDescription(Enumerator.ErrorCode.ServerError);
            }
            _log.WriteInfo("请求接口【file/save】完成,返回数据:" + JsonConvert.SerializeObject(result));
            return(Json(result));
        }
        public JsonResult NewFile(CreateWPSFileRequest request)
        {
            _log.WriteInfo("开始请求接口【file/new】");
            var result = new CreateWPSFileResult();

            try
            {
                var filterRequest = GetFilterRequest.GetParams(HttpContext.ApplicationInstance.Request);
                if (!filterRequest.Status)
                {
                    result.code    = filterRequest.code;
                    result.message = filterRequest.message;
                    result.details = filterRequest.details;
                    result.hint    = filterRequest.hint;
                }
                else
                {
                    HttpFileCollection files    = HttpContext.ApplicationInstance.Request.Files;
                    string             fileName = Guid.NewGuid().ToString("N") + ".docx";
                    foreach (string key in files.AllKeys)
                    {
                        HttpPostedFile file = files[key];
                        if (string.IsNullOrEmpty(file.FileName) == false)
                        {
                            file.SaveAs(Server.MapPath("~/Files/") + fileName);
                        }
                    }

                    result.redirect_url = $"{ConfigurationManager.AppSettings["WPSTokenUrl"]}/Files/{fileName}";
                    result.user_id      = "1000";
                }
            }
            catch (Exception ex)
            {
                _log.WriteError("【系统异常】-【" + ex.Message + "】", ex);
                result.code    = (int)Enumerator.ErrorCode.ServerError;
                result.message = Enumerator.ErrorCode.ServerError.ToString();
                result.details = result.hint = EnumExtension.GetDescription(Enumerator.ErrorCode.ServerError);
            }

            _log.WriteInfo("请求接口【file/new】完成,返回数据:" + JsonConvert.SerializeObject(result));
            return(Json(result));
        }
        public JsonResult GetUserInfo(GetUserInfoRequest body)
        {
            _log.WriteInfo("开始请求接口【user/info】");
            UserModelList result = new UserModelList();

            try
            {
                var request = GetFilterRequest.GetParams(HttpContext.ApplicationInstance.Request);
                if (!request.Status)
                {
                    result.code    = request.code;
                    result.message = request.message;
                    result.details = request.details;
                    result.hint    = request.hint;
                }
                else
                {
                    result.users = new List <UserModel>();
                    result.users.Add(new UserModel
                    {
                        id         = "1000",
                        name       = "天玺",
                        avatar_url = $"{ConfigurationManager.AppSettings["WPSTokenUrl"]}/Images/photo1.jpg",
                    });
                    result.users.Add(new UserModel
                    {
                        id         = "1001",
                        name       = "兆丰",
                        avatar_url = $"{ConfigurationManager.AppSettings["WPSTokenUrl"]}/Images/photo2.jpg"
                    });
                }
            }
            catch (Exception ex)
            {
                _log.WriteError("【系统异常】-【" + ex.Message + "】", ex);
                result.code    = (int)Enumerator.ErrorCode.ServerError;
                result.message = Enumerator.ErrorCode.ServerError.ToString();
                result.details = result.hint = EnumExtension.GetDescription(Enumerator.ErrorCode.ServerError);
            }
            _log.WriteInfo("请求接口【user/info】完成,返回数据:" + JsonConvert.SerializeObject(result));
            return(Json(result));
        }
        public JsonResult FileInfo()
        {
            _log.WriteInfo("开始请求接口【file/info】");
            FileInfoResult result = new FileInfoResult();

            try
            {
                var request = GetFilterRequest.GetParams(HttpContext.ApplicationInstance.Request);
                if (!request.Status)
                {
                    result.code    = request.code;
                    result.message = request.message;
                    result.details = request.details;
                    result.hint    = request.hint;
                }
                else
                {
                    // 获取自定义参数
                    var userId = request.Params["_w_userId"].ToString(); //用户ID
                    var fileId = request.FileId;                         //文件ID

                    #region >>>从数据库查询用户名、文件 等信息......<<<

                    #endregion

                    #region >>>示例<<<
                    // 创建时间和修改时间默认全是现在,可更改,但是注意时间戳是11位的(秒)
                    var    now      = TimestampHelper.GetCurrentTimestamp();
                    var    fileName = request.FileId == "1000" ? "TestFile.docx" : (request.FileId == "1001" ? "TestFile_v1.docx" : "TestFile_v2.docx");
                    int    version  = request.FileId == "1000" ? 5 : (request.FileId == "1001" ? 1 : 2);
                    string filePath = Server.MapPath($"/Files/{fileName}");
                    result.file = new WPSFile
                    {
                        id   = "1000",
                        name = "TestFile.docx",
                        // 如果线下修改后将修改此版本重新上传
                        version      = 5,
                        size         = FileHelper.FileSize(filePath), // WPS单位是B
                        create_time  = now,
                        creator      = "天玺",
                        modify_time  = now,
                        modifier     = "天玺",
                        download_url = $"{ConfigurationManager.AppSettings["WPSTokenUrl"]}/Files/{fileName}",
                        user_acl     = new User_acl
                        {
                            history = 1, // 允许查看历史版本
                            rename  = 1, // 允许重命名
                            copy    = 1, // 允许复制
                            export  = 1,
                        },
                        watermark = new Watermark
                        {
                            type  = 1, // 1为有水印
                            value = "水印文字"
                        }
                    };
                    result.user = new UserForFile()
                    {
                        id   = "1000",
                        name = "天玺",
                        //permission = "read",
                        permission = "write", // write为允许编辑,read为只能查看
                        avatar_url = $"{ConfigurationManager.AppSettings["WPSTokenUrl"]}/Images/photo1.jpg",
                    };
                    #endregion
                }
            }
            catch (Exception ex)
            {
                _log.WriteError("【系统异常】-【" + ex.Message + "】", ex);
                result.code    = (int)Enumerator.ErrorCode.ServerError;
                result.message = Enumerator.ErrorCode.ServerError.ToString();
                result.details = result.hint = EnumExtension.GetDescription(Enumerator.ErrorCode.ServerError);
            }

            _log.WriteInfo("请求接口【file/info】完成,返回数据:" + JsonConvert.SerializeObject(result));
            return(Json(result, JsonRequestBehavior.AllowGet));
        }
        public JsonResult GetHistory(GetHistoryRequest body)
        {
            _log.WriteInfo("开始请求接口【file/history】");
            GetHistoryResult result = new GetHistoryResult();

            try
            {
                var request = GetFilterRequest.GetParams(HttpContext.ApplicationInstance.Request);
                if (!request.Status)
                {
                    result.code    = request.code;
                    result.message = request.message;
                    result.details = request.details;
                    result.hint    = request.hint;
                }
                else
                {
                    // 从数据库查询用户、文件信息等......

                    // 创建时间和修改时间默认全是现在
                    //var now = TimestampHelper.GetCurrentTimestamp();

                    var startNow = TimestampHelper.ConvertToTimeStamp(DateTime.Now.AddHours(-10));
                    // 不需要使用历史版本功能的此处也请返回,如果此接口不通时,文档加载会报错:“GetFileInfoFailed”
                    result.histories = new List <HistroyModel>
                    {
                        new HistroyModel
                        {
                            id           = "1001",
                            name         = "TestFile_v1.docx",
                            size         = FileHelper.FileSize(Server.MapPath("/Files/TestFile_v1.docx")), // 单位B
                            version      = 1,
                            download_url = $"{ConfigurationManager.AppSettings["WPSTokenUrl"]}/Files/TestFile_v1.docx",
                            create_time  = startNow,
                            modify_time  = startNow,
                            creator      = new UserModel
                            {
                                id         = "1001",
                                name       = "兆丰",
                                avatar_url = $"{ConfigurationManager.AppSettings["WPSTokenUrl"]}/Images/photo2.jpg"
                            },
                            modifier = new UserModel
                            {
                                id         = "1001",
                                name       = "兆丰",
                                avatar_url = $"{ConfigurationManager.AppSettings["WPSTokenUrl"]}/Images/photo2.jpg"
                            }
                        },
                        new HistroyModel
                        {
                            id           = "1002",
                            name         = "TestFile_v2.docx",
                            size         = FileHelper.FileSize(Server.MapPath("/Files/TestFile_v2.docx")), // 单位B
                            version      = 2,
                            download_url = $"{ConfigurationManager.AppSettings["WPSTokenUrl"]}/Files/TestFile_v2.docx",
                            create_time  = startNow,
                            modify_time  = startNow,
                            creator      = new UserModel
                            {
                                id         = "1002",
                                name       = "丫丫",
                                avatar_url = $"{ConfigurationManager.AppSettings["WPSTokenUrl"]}/Images/photo3.jpg"
                            },
                            modifier = new UserModel
                            {
                                id         = "1002",
                                name       = "丫丫",
                                avatar_url = $"{ConfigurationManager.AppSettings["WPSTokenUrl"]}/Images/photo3.jpg"
                            }
                        }
                    };
                }
            }
            catch (Exception ex)
            {
                _log.WriteError("【系统异常】-【" + ex.Message + "】", ex);
                result.code    = (int)Enumerator.ErrorCode.ServerError;
                result.message = Enumerator.ErrorCode.ServerError.ToString();
                result.details = result.hint = EnumExtension.GetDescription(Enumerator.ErrorCode.ServerError);
            }

            _log.WriteInfo("请求接口【file/history】完成,返回数据:" + JsonConvert.SerializeObject(result));
            return(Json(result));
        }