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 = "参数错误" } }; }
/// <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); } }