Exemplo n.º 1
0
        public CreateQRCodeResponse CreateQRCode(CreateQRCodeRequest createQRCodeRequest)
        {
            int count = _qRCodeRepository.GetAlleQRCodes()
                        .Where(x => x.eVoucherId == createQRCodeRequest.eVoucharId).Count();

            if (count < 1000)
            {
                string promoCode = String.Empty;
                string imageURL  = string.Empty;
                QRCode obj       = new QRCode();
                obj.Id         = Guid.NewGuid();
                obj.eVoucherId = createQRCodeRequest.eVoucharId;
                bool isAlreadyHave = false;
                do
                {
                    promoCode     = GeneratePromoteCode();
                    isAlreadyHave = _qRCodeRepository.CheckPromoCode(promoCode);
                }while (isAlreadyHave);
                obj.PromoCode = promoCode;
                QRCoder.QRCodeGenerator qrGenerator = new QRCoder.QRCodeGenerator();
                QRCoder.QRCodeData      qrCodeData  = qrGenerator.CreateQrCode(promoCode, QRCoder.QRCodeGenerator.ECCLevel.Q);
                QRCoder.QRCode          qrCode      = new QRCoder.QRCode(qrCodeData);
                try
                {
                    using (Bitmap bitMap = qrCode.GetGraphic(20))
                    {
                        using (MemoryStream ms = new MemoryStream())
                        {
                            bitMap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                            byte[] byteImage = ms.ToArray();
                            imageURL        = "data:image/png;base64," + Convert.ToBase64String(byteImage);
                            obj.QRCodeImg   = byteImage;
                            obj.CreatedBy   = "System";
                            obj.CreatedDate = DateTime.Now;
                            _qRCodeRepository.CreateQRCode(obj);
                            var qrDto          = _messageMapper.MapToeQRCodeDto(obj);
                            var createResponse = new CreateQRCodeResponse
                            {
                                codeDto    = qrDto,
                                StatusCode = System.Net.HttpStatusCode.OK
                            };
                            return(createResponse);
                        }
                    }
                }
                catch (Exception ex)
                {
                    var createResponse = new CreateQRCodeResponse
                    {
                        StatusCode = System.Net.HttpStatusCode.BadRequest
                    };
                    return(createResponse);
                }
            }
            else
            {
                string        messageStr = "QRCode generation exceed limitation!";
                List <string> msgList    = new List <string>();
                msgList.Add(messageStr);
                var createResponse = new CreateQRCodeResponse
                {
                    Messages = msgList
                };
                return(createResponse);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// 获取小程序二维码,适用于需要的码数量较少的业务场景。通过该接口生成的小程序码,永久有效,有数量限制,详见<see href="https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/qr-code.html">获取二维码</see>。
 /// </summary>
 public async Task <CreateQRCodeResponse> CreateQRCode(CreateQRCodeRequest request)
 {
     return(await _client.SendAsync <CreateQRCodeResponse>(request));
 }
Exemplo n.º 3
0
        public ActionResult <CreateQRCodeResponse> CreateQRCode(CreateQRCodeRequest createQRCodeRequest)
        {
            var response = _QRCodeService.CreateQRCode(createQRCodeRequest);

            return(response);
        }