Пример #1
0
        public RestfulResult Portrait(PortraitRequest request, int?authuid, UserModel authUser)
        {
            request.AuthUid  = authuid.Value;
            request.AuthUser = authUser;

            switch (request.Method.ToLower())
            {
            case DefineRestfulMethod.Create:
                var r = new UploadLogoRequest(request)
                {
                    Files = Request.Files
                };
                return(new RestfulResult {
                    Data = this._customerService.UploadLogo(r)
                });

            case DefineRestfulMethod.Destroy:
                var d = new DestroyLogoRequest(request);
                return(new RestfulResult {
                    Data = this._customerService.DestroyLogo(d)
                });
            }

            return(new RestfulResult {
                Data = new ExecuteResult {
                    StatusCode = StatusCode.ClientError, Message = "参数错误"
                }
            });
        }
        public UploadAsyncResponse Post(UploadImageAsyncRequest request)
        {
            UploadAsyncResponse res = new UploadAsyncResponse();

            Log.Info("Inside ImageAsyncUpload");
            IUploadImageRequest req = null;

            if (request.ImageInfo.FileCategory == EbFileCategory.Dp)
            {
                req = new UploadDpRequest();
            }
            else if (request.ImageInfo.FileCategory == EbFileCategory.Images)
            {
                req = new UploadImageRequest();
            }
            else if (request.ImageInfo.FileCategory == EbFileCategory.SolLogo)
            {
                req = new UploadLogoRequest();
            }
            else if (request.ImageInfo.FileCategory == EbFileCategory.LocationFile)
            {
                req = new UploadLocRequest();
            }

            try
            {
                string context = string.IsNullOrEmpty(request.ImageInfo.Context) ? StaticFileConstants.CONTEXT_DEFAULT : request.ImageInfo.Context;
                req.Byte           = request.ImageByte;
                req.FileCategory   = request.ImageInfo.FileCategory;
                req.SolutionId     = request.SolutionId;
                req.SolnId         = request.SolnId;
                req.UserId         = (req is UploadDpRequest) ? request.UserIntId : request.UserId;
                req.UserAuthId     = request.UserAuthId;
                req.BToken         = (!String.IsNullOrEmpty(this.Request.Authorization)) ? this.Request.Authorization.Replace("Bearer", string.Empty).Trim() : String.Empty;
                req.RToken         = (!String.IsNullOrEmpty(this.Request.Headers["rToken"])) ? this.Request.Headers["rToken"] : String.Empty;
                req.SubscriptionId = (!String.IsNullOrEmpty(this.Request.Headers[TokenConstants.SSE_SUBSCRIP_ID])) ? this.Request.Headers[TokenConstants.SSE_SUBSCRIP_ID] : String.Empty;

                req.ImageRefId = GetFileRefId(request.UserId, request.ImageInfo.FileName, request.ImageInfo.FileType, request.ImageInfo.MetaDataDictionary.ToJson(), request.ImageInfo.FileCategory, request.ImageInfo.Context);

                this.MessageProducer3.Publish(req);
                res.FileRefId = req.ImageRefId;
            }
            catch (Exception e)
            {
                Log.Info("Exception:" + e.ToString());
                res.FileRefId = 0;
                res.ResponseStatus.Message = e.Message;
            }
            return(res);
        }
Пример #3
0
        /// <summary>
        /// 上传头像
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ExecuteResult <CustomerInfoResponse> UploadLogo(UploadLogoRequest request)
        {
            //直接替换掉以前的头像,使用新头像

            if (request.Files.Count == 0)
            {
                return(new ExecuteResult <CustomerInfoResponse>(null)
                {
                    StatusCode = StatusCode.ClientError,
                    Message = "图像文件不能为空"
                });
            }

            if (request.Files.Count != 1)
            {
                return(new ExecuteResult <CustomerInfoResponse>(null)
                {
                    StatusCode = StatusCode.ClientError,
                    Message = "您只能上传一张头像"
                });
            }
            if (!request.Type.HasValue ||
                request.Type.Value == Hangzhou.Contract.DTO.ThumnImageType.Logo)
            {
                var oldResource = _resourceService.Get(request.AuthUid, SourceType.CustomerPortrait);

                var resourceResult = _resourceService.Save(request.Files, request.AuthUid, 0, request.AuthUid,
                                                           SourceType.CustomerPortrait);

                if (resourceResult == null || resourceResult.Count == 0)
                {
                    Logger.Error(String.Format("保存用户LOGO资源文件异常,用户ID={0}", request.AuthUid));
                    return(new ExecuteResult <CustomerInfoResponse>(null)
                    {
                        StatusCode = StatusCode.InternalServerError, Message = "保存文件异常"
                    });
                }

                if (resourceResult.Count != 1)
                {
                    Logger.Warn(String.Format("用户上传头像为1张时,返回不止一个资源.用户Id={0},资源Id={1}", request.AuthUid, String.Join(",", resourceResult.Select(v => v.Id).ToArray())));
                }

                //删除旧resource
                foreach (var item in oldResource)
                {
                    _resourceService.Del(item.Id);
                }

                //update
                var userentity = _customerRepository.GetItem(request.AuthUid);
                userentity.Logo        = Path.Combine(resourceResult[0].Domain, resourceResult[0].Name);
                userentity.UpdatedDate = DateTime.Now;
                userentity.UpdatedUser = request.AuthUser.Id;
                _customerRepository.Update(userentity);
                return(GetUserInfo(new GetUserInfoRequest
                {
                    AuthUid = request.AuthUid,
                    AuthUser = null,
                    Method = null,
                    Token = null,
                    Client_Version = request.Client_Version
                }));
            }
            else
            {
                ResourceInfoResponse logoBG = null;
                using (var ts = new TransactionScope())
                {
                    var oldResource = _resourceService.Get(request.AuthUser.Id, SourceType.CustomerThumbBackground).FirstOrDefault();
                    if (oldResource != null)
                    {
                        _resourceService.Del(oldResource.Id);
                    }
                    var resourceResult = _resourceService.Save(request.Files, request.AuthUser.Id, 0, request.AuthUser.Id,
                                                               SourceType.CustomerThumbBackground);
                    if (resourceResult == null || resourceResult.Count == 0)
                    {
                        Logger.Error(String.Format("保存用户LOGO资源文件异常,用户ID={0}", request.AuthUser.Id));
                        return(new ExecuteResult <CustomerInfoResponse>(null)
                        {
                            StatusCode = StatusCode.InternalServerError, Message = "保存文件异常"
                        });
                    }
                    logoBG = new ResourceInfoResponse().FromEntity <ResourceInfoResponse>(resourceResult.First());
                    ts.Complete();
                }

                var response = new CustomerInfoResponse()
                {
                    BackgroundLogo_r = logoBG
                };
                return(new ExecuteResult <CustomerInfoResponse>(response));
            }
        }
        public EbMqResponse Post(UploadLogoRequest request)
        {
            this.ServerEventClient.BearerToken     = request.BToken;
            this.ServerEventClient.RefreshToken    = request.RToken;
            this.ServerEventClient.RefreshTokenUri = Environment.GetEnvironmentVariable(EnvironmentConstants.EB_GET_ACCESS_TOKEN_URL);

            try
            {
                //if (this.EbConnectionFactory.ImageManipulate != null && request.Byte.Length > 307200)
                //{
                //    int qlty = (int)(20480000 / request.Byte.Length);

                //    qlty = qlty < 7 ? 7 : qlty;

                //    string Clodinaryurl = this.EbConnectionFactory.ImageManipulate.Resize
                //                                        (request.Byte, request.ImageRefId.ToString(), qlty);

                //    if (!string.IsNullOrEmpty(Clodinaryurl))
                //    {
                //        using (var client = new HttpClient())
                //        {
                //            var response = client.GetAsync(Clodinaryurl).Result;

                //            if (response.IsSuccessStatusCode)
                //            {
                //                var responseContent = response.Content;

                //                request.ImgManpSerConId = this.EbConnectionFactory.ImageManipulate.InfraConId;
                //                request.Byte = responseContent.ReadAsByteArrayAsync().Result;
                //            }
                //        }
                //    }
                //}

                string filestore_sid = this.InfraConnectionFactory.FilesDB.UploadFile(request.ImageRefId.ToString(), request.Byte, request.FileCategory, request.InfraConID);

                string sql = @"INSERT INTO eb_files_ref_variations 
                                    (eb_files_ref_id, filestore_sid, length, imagequality_id, is_image, img_manp_ser_con_id, filedb_con_id)
                                VALUES 
                                    (:refid, :filestoreid, :length, :imagequality_id, :is_image, :imgmanpserid, :filedb_con_id) RETURNING id;
                                UPDATE eb_solutions SET logorefid = :refid WHERE isolution_id = :solnid;";

                DbParameter[] parameters =
                {
                    this.InfraConnectionFactory.DataDB.GetNewParameter("refid",           EbDbTypes.Int32,   request.ImageRefId),
                    this.InfraConnectionFactory.DataDB.GetNewParameter("filestoreid",     EbDbTypes.String,  filestore_sid),
                    this.InfraConnectionFactory.DataDB.GetNewParameter("length",          EbDbTypes.Int64,   request.Byte.Length),
                    this.InfraConnectionFactory.DataDB.GetNewParameter("imagequality_id", EbDbTypes.Int32,   (int)request.ImgQuality),
                    this.InfraConnectionFactory.DataDB.GetNewParameter("filedb_con_id",   EbDbTypes.Int32,   request.InfraConID),
                    this.InfraConnectionFactory.DataDB.GetNewParameter("imgmanpserid",    EbDbTypes.Int32,   request.ImgManpSerConId),
                    this.InfraConnectionFactory.DataDB.GetNewParameter("is_image",        EbDbTypes.Boolean, true),
                    this.InfraConnectionFactory.DataDB.GetNewParameter("solnid",          EbDbTypes.String,  request.SolutionId)
                };

                var iCount = this.InfraConnectionFactory.DataDB.DoQuery(sql, parameters);

                if (iCount.Rows.Capacity > 0)
                {
                    this.ServerEventClient.Post <NotifyResponse>(new NotifyUserIdRequest
                    {
                        Msg          = request.ImageRefId,
                        Selector     = StaticFileConstants.UPLOADSUCCESS,
                        ToUserAuthId = request.UserAuthId,
                    });
                }
            }
            catch (Exception e)
            {
                if (request.ImgQuality == ImageQuality.original)
                {
                    this.ServerEventClient.Post <NotifyResponse>(new NotifyUserIdRequest
                    {
                        Msg          = request.ImageRefId,
                        Selector     = StaticFileConstants.UPLOADFAILURE,
                        ToUserAuthId = request.UserAuthId,
                    });
                }
                Log.Error("UploadImage:" + e.ToString());
                MqResponse.IsError     = true;
                MqResponse.ErrorString = e.ToString();
            }
            return(MqResponse);
        }