コード例 #1
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationLifetime lifetime)
        {
            app.UseAuthentication();
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseStaticFiles();

            app.UseCors("default");
            app.UseMvc();

            var confRegisterConsul = ConfigHelper.ReadConfigByName("IsRegisterConsul", "");
            var IsRegisterConsul   = false;

            Boolean.TryParse(confRegisterConsul, out IsRegisterConsul);

            //注册服务
            if (IsRegisterConsul)
            {
                ServiceContract serviceEntity = new ServiceContract
                {
                    IP          = Configuration["Service:Ip"],
                    Port        = Convert.ToInt32(Configuration["Service:Port"]),
                    ServiceName = Configuration["Service:Name"],
                    ConsulIP    = Configuration["Consul:IP"],
                    ConsulPort  = Convert.ToInt32(Configuration["Consul:Port"])
                };
                ConsulCommon.RegisterConsul(app, lifetime, serviceEntity);
            }

            string      KafkaUploadTopic = ConfigHelper.ReadConfigByName("KafkaUploadTopic");
            string      KafkaMsgTopic    = ConfigHelper.ReadConfigByName("KafkaMsgTopic");
            UploadLogic uploadLogic      = new UploadLogic();


            //总署订阅消息
            KafKaLogic.GetInstance().Pull((KafKaContract, topic) =>
            {
                if (topic == KafkaUploadTopic)       //总署订阅消息
                {
                    Task.Run(() =>
                    {
                        uploadLogic.PullUploadMsg(KafKaContract);
                    });
                }
                else if (topic == KafkaMsgTopic)      //隶属关订阅消息
                {
                    Task.Run(() =>
                    {
                        uploadLogic.PullMsg(KafKaContract);
                    });
                }
            });

            var model = new UploadContract();

            model.InsertTime = DateTime.Now;

            var str = SerializeHelper.serializeToString(model);

            LogHelper.logInfo(str);
            //定时任务
            QuartzLogic quartz = new QuartzLogic();
            var         cron   = ConfigHelper.ReadConfigByName("QuartzTime");

            quartz.ExecuteByCron <MyJobLogic>(cron);
        }
コード例 #2
0
        public async Task <ResultContract <string> > UploadFile(BaseUploadContract data)
        {
            var result = new ResultContract <string>()
            {
                Code = 0, Msg = "上传成功"
            };

            try
            {
                //验证参数
                var orgInfo = new OrganizationContract();
                this.CheckParameter(data, ref result, ref orgInfo);
                if (result.Code == -1)
                {
                    return(result);
                }

                List <UploadContract> fileList = new List <UploadContract>();
                var files   = Request.Form.Files;
                var groupId = Guid.NewGuid().ToString();
                int order   = 1;
                foreach (var file in files)
                {
                    var fileModel = new UploadContract()
                    {
                        UserId      = data.UserId,
                        OrgId       = data.OrgId,
                        AppId       = data.AppId,
                        Tags        = data.Tags,
                        UploadTime  = DateTime.Now,
                        DisplayName = data.DisplayName,
                        Remark      = data.Remark,
                        OrgName     = orgInfo.OrganizationName,
                        Order       = order,
                        ThemeType   = data.ThemeType
                    };

                    //分组id
                    fileModel.GroupId = groupId;
                    var fileData = new MultipartFormDataContent();

                    //判断文件夹是否存在
                    if (!Directory.Exists(uploadFilePath))
                    {
                        Directory.CreateDirectory(uploadFilePath);
                    }
                    var imgPath = AppDomain.CurrentDomain.BaseDirectory + ConfigHelper.ReadConfigByName("ImgsPath");
                    if (!Directory.Exists(imgPath))
                    {
                        Directory.CreateDirectory(imgPath);
                    }

                    fileModel.FileName = file.FileName;
                    var lastName = file.FileName.Substring(file.FileName.LastIndexOf(".") + 1, (file.FileName.Length - file.FileName.LastIndexOf(".") - 1)); //扩展名
                    fileModel.FileId      = Guid.NewGuid();
                    fileModel.NewFileName = fileModel.FileId + "." + lastName;
                    var fileLocalFullName = uploadFilePath + Path.DirectorySeparatorChar + fileModel.NewFileName;
                    var stream            = file.OpenReadStream();
                    //文件保存到本地
                    double fileSize = 0;
                    //保存文件
                    FileHelper.SavaFile(fileLocalFullName, stream, ref fileSize);
                    //文件上传成功 修改model
                    fileModel.IsUpload = false;
                    fileModel.Url      = fileLocalFullName;
                    fileModel.FileType = lastName;
                    //组织名称。后期加上
                    //判断文件大小
                    double uploadLimitSize = 0;
                    double.TryParse(ConfigHelper.ReadConfigByName("UploadLimitSizeM"), out uploadLimitSize);

                    //如果是视频截取封面
                    if (CommonDictionary.GetInstance().VideoType.Count(d => d.ToLower() == lastName.ToLower()) > 0)
                    {
                        var thumbnailPath = AliyunOSSHepler.GetInstance().GetPicFromVideo(fileLocalFullName, imgPath + Path.DirectorySeparatorChar + fileModel.FileId + ".jpg", "1");
                        var thumbnailUrl  = "";
                        var isUpload      = AliyunOSSHepler.GetInstance().UploadFiles(imgPath, fileModel.FileId + ".jpg", ref
                                                                                      thumbnailUrl, true);

                        fileModel.ThumbnailUrl = thumbnailPath;

                        if (isUpload && !string.IsNullOrWhiteSpace(thumbnailUrl))
                        {
                            fileModel.ThumbnailUrl = thumbnailUrl;
                        }
                        else
                        {
                            fileModel.IsFailure = true;
                            this._uploadHandService.SavaTagsFile(fileModel);
                            //把文件 移动到错误文件 文件夹
                            System.IO.File.Move(uploadFilePath + Path.DirectorySeparatorChar + fileModel.NewFileName, FailurePath + Path.DirectorySeparatorChar + fileModel.NewFileName);
                            result.Code = -1;
                            result.Msg  = "截图失败";
                            return(result);
                        }
                    }

                    //如果断网把标签和文件都存到本地
                    if (!CommonDictionary.GetInstance().KafkaIsOnline)
                    {
                        this._uploadHandService.SavaTagsFile(fileModel);
                    }
                    else
                    {
                        //如果文件大小比预设大小 小 直接上云
                        if (fileSize < uploadLimitSize)
                        {
                            var url = "";
                            fileModel.IsUpload = AliyunOSSHepler.GetInstance().UploadFiles(uploadFilePath, fileModel.NewFileName, ref
                                                                                           url, false);

                            //如果上传失败  标签存本地
                            if (!fileModel.IsUpload)
                            {
                                fileModel.IsFailure = true;
                                this._uploadHandService.SavaTagsFile(fileModel);
                                //把文件 移动到错误文件 文件夹
                                System.IO.File.Move(uploadFilePath + Path.DirectorySeparatorChar + fileModel.NewFileName, FailurePath + Path.DirectorySeparatorChar + fileModel.NewFileName);
                            }
                            else
                            {
                                fileModel.Url = url;
                            }
                        }

                        fileList.Add(fileModel);
                        order++;
                    }
                }

                ////把标签 推送到总署
                KafKaContract kafkaModel = new KafKaContract();
                if (fileList.Count > 1)  //批量添加
                {
                    kafkaModel.MsgCode = KafkaMsgCodeEnum.AddList;
                    kafkaModel.Msg     = SerializeHelper.serializeToString(fileList);
                    KafKaLogic.GetInstance().Push(kafkaModel, KafkaTopic);
                }
                else if (fileList.Count() == 1) //单个文件添加
                {
                    kafkaModel.MsgCode  = KafkaMsgCodeEnum.Add;
                    fileList[0].GroupId = Guid.NewGuid().ToString();
                    kafkaModel.Msg      = SerializeHelper.serializeToString(fileList[0]);
                    KafKaLogic.GetInstance().Push(kafkaModel, KafkaTopic);
                }
            }
            catch (Exception e)
            {
                LogHelper.logError("上传文件失败:" + e.StackTrace);
                result.Code = -1;
                result.Msg  = e.Message;
            }

            return(result);
        }