/// <summary>
        /// 粉丝海报
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public GetMemberQRCodeImageResult GetMemberQRCodeImage(GetCampaign_MemberQRCodeImageArgs args)
        {
            GetMemberQRCodeImageResult result;

            HttpRequestArgs requestArgs = new HttpRequestArgs();

            requestArgs.Method  = "POST";
            requestArgs.Url     = _fileServiceUri + "MemberQRCode/GetMemberQRCodeImage";
            requestArgs.Content = JsonConvert.SerializeObject(args);

            _log.Write("向文件服务器发起 GetMemberQRCodeImage 请求", requestArgs.Content, TraceEventType.Verbose);

            HttpRequestResult requestResult = _httpService.Request(requestArgs);

            if (requestResult.Success)
            {
                _log.Write("文件服务器 GetMemberQRCodeImage 返回", requestResult.Content, TraceEventType.Verbose);
                result = JsonConvert.DeserializeObject <GetMemberQRCodeImageResult>(requestResult.Content);
            }
            else
            {
                result         = new GetMemberQRCodeImageResult();
                result.Message = requestResult.Exception.Message;
            }
            return(result);
        }
Ejemplo n.º 2
0
        public NormalResult <Campaign_MemberQRCodeItemEntity> CreateMemberQRCodeItem(DomainContext domainContext, Guid campaignId, Guid memberId)
        {
            NormalResult <Campaign_MemberQRCodeItemEntity> result = new NormalResult <Campaign_MemberQRCodeItemEntity>();

            //判断有没有超过最大参与人数
            //if (MemberQRCodeIsFullParticipant(campaignId))
            //{
            //    result.Success = false;
            //    result.Message = "该活动已达最大允许参与人数。";
            //    return result;
            //}

            Campaign_MemberQRCodeEntity campaignMemberQRCode = GetMemberQRCode(campaignId);

            if (campaignMemberQRCode == null)
            {
                result.Success = false;
                result.Message = "指定的活动不存在。";
                return(result);
            }

            string landingUrl = String.Format(_campaignManager.SettingsManager.GetClientAddress(domainContext) +
                                              "Campaign/MemberQRCodeLanding/{0}?campaignId={1}&memberId={2}",
                                              campaignMemberQRCode.Domain, campaignId, memberId);

            GetCampaign_MemberQRCodeImageArgs args = new GetCampaign_MemberQRCodeImageArgs();

            args.BackgroundImageId = campaignMemberQRCode.BackgroundImageId;
            args.LandingUrl        = landingUrl;
            args.Domain            = campaignMemberQRCode.Domain;
            args.MemberId          = memberId;

            GetMemberQRCodeImageResult getMemberQRCodeImageResult = _campaignManager.FileService.GetMemberQRCodeImage(args);

            if (getMemberQRCodeImageResult.Success == false)
            {
                result.Success = false;
                result.Message = getMemberQRCodeImageResult.Message;
                return(result);
            }

            Campaign_MemberQRCodeItemEntity item = new Campaign_MemberQRCodeItemEntity();

            item.CampaignId = campaignId;
            item.CreateTime = DateTime.Now;
            item.Domain     = campaignMemberQRCode.Domain;
            item.Member     = memberId;
            item.QRCodeUrl  = _campaignManager.FileService.FileServiceUri + getMemberQRCodeImageResult.FileName;

            _campaignManager.DataBase.Insert(item);

            result.Success = true;
            result.Data    = item;
            return(result);
        }
Ejemplo n.º 3
0
        public ActionResult GetMemberQRCodeImage()
        {
            GetCampaign_MemberQRCodeImageArgs args   = RequestArgs <GetCampaign_MemberQRCodeImageArgs>();
            GetMemberQRCodeImageResult        result = new GetMemberQRCodeImageResult();

            if (args == null)
            {
                result.Message = "参数无效。";
                return(new ContentResult()
                {
                    Content = JsonConvert.SerializeObject(result)
                });
            }

            string serverRootDir = Server.MapPath("/");

            result = _memberQRCodeManager.GetMemberQRCodeImage(serverRootDir, args);
            return(new ContentResult()
            {
                Content = JsonConvert.SerializeObject(result)
            });
        }
        internal GetMemberQRCodeImageResult GetMemberQRCodeImage(string serverRootDir, GetCampaign_MemberQRCodeImageArgs args)
        {
            GetMemberQRCodeImageResult result = new GetMemberQRCodeImageResult();

            if (args == null || String.IsNullOrEmpty(args.LandingUrl))
            {
                result.Message = "参数不正确";
                return(result);
            }

            MemberEntity member = _memberManager.GetMember(args.MemberId);

            if (member == null)
            {
                result.Message = "会员信息不存在";
                return(result);
            }

            FileRecord fileRecord = _fileManager.Get(args.BackgroundImageId);

            if (fileRecord == null)
            {
                result.Message = "背景图信息不存在";
                return(result);
            }

            string backgroundImageFile =
                Path.Combine(serverRootDir, String.Format("FileStore/{0}/{1}", args.Domain, fileRecord.StoredFileName));

            if (File.Exists(backgroundImageFile) == false)
            {
                result.Message = "背景图文件不存在";
                return(result);
            }

            FileDownloadAgentArgs downloadArgs = new FileDownloadAgentArgs();

            downloadArgs.Domain        = args.Domain;
            downloadArgs.Url           = member.Headimgurl_96;
            downloadArgs.ServerRootDir = serverRootDir;

            FileDownloadAgentResult downloadResult = _fileManager.Download(downloadArgs);

            if (downloadResult.Success == false)
            {
                result.Message = downloadResult.Message;
                return(result);
            }

            string headImageFile = Path.Combine(serverRootDir, downloadResult.OutputFile);

            Image qrImage         = null;
            Image backgroundImage = null;
            Image headImage       = null;

            try
            {
                qrImage = QRCodeHelper.GetQRCode(args.LandingUrl);

                if (qrImage == null)
                {
                    result.Message = "二维码生成失败。";
                    return(result);
                }

                backgroundImage = Image.FromFile(backgroundImageFile);
                Graphics g = Graphics.FromImage(backgroundImage);

                //qrImage
                float x = backgroundImage.Width - qrImage.Width - 20;
                float y = backgroundImage.Height - qrImage.Height - 20;
                g.DrawImage(qrImage, x, y);

                //headImage
                x         = 20;
                y         = backgroundImage.Height - 20 - 96;
                headImage = Image.FromFile(headImageFile);
                g.DrawImage(headImage, x, y, 96, 96);

                ////nickName
                //Font font = new Font("黑体", 35f);
                //x = 96 + 40;
                //y = backgroundImage.Height - font.Size - 50;
                //g.DrawString(member.NickName, font, Brushes.Black, new PointF(x, y));

                g.Save();

                string targetDir      = Path.Combine(serverRootDir, "FileStore", args.Domain.ToString());
                string storeFileName  = Guid.NewGuid().ToString() + ".jpg";
                string outputFileName = Path.Combine(targetDir, storeFileName);
                backgroundImage.Save(outputFileName, ImageFormat.Jpeg);

                result.Success  = true;
                result.FileName = String.Format("FileStore/{0}/{1}", args.Domain, storeFileName);
            }
            catch (Exception ex)
            {
                result.Message = ex.Message;
            }
            finally
            {
                if (qrImage != null)
                {
                    qrImage.Dispose();
                }

                if (backgroundImage != null)
                {
                    backgroundImage.Dispose();
                }

                if (headImage != null)
                {
                    headImage.Dispose();
                }
            }

            return(result);
        }