/// <summary>
        /// 批量创建公众号二维码
        /// </summary>
        /// <returns></returns>
        public ActionResult CreateQrCode(QrCodeCreateDTO dto)
        {
            WeChatQRCodeFacade facade = new WeChatQRCodeFacade();

            return(Json(facade.CreateWeChatQrCodeBatch(dto)));
        }
Ejemplo n.º 2
0
        private ResultDTO CreateWeChatQrCodeBatchExt(QrCodeCreateDTO dto)
        {
            if (dto == null || dto.AppId == Guid.Empty || dto.CreateNo <= 0)
            {
                return new ResultDTO()
                       {
                           ResultCode = 1, Message = "参数为空"
                       }
            }
            ;
            try
            {
                WeChatQrCodeSV worker = new WeChatQrCodeSV();

                var developerInfo = WCPSV.Instance.GetDeveloperInfo(dto.AppId);
                if (developerInfo == null || string.IsNullOrEmpty(developerInfo.WAppId) || string.IsNullOrEmpty(developerInfo.WSecret))
                {
                    return new ResultDTO()
                           {
                               ResultCode = 3, Message = "未配置公众号"
                           }
                }
                ;
                var       tokenInfo = worker.GetToken(dto.AppId);
                ResultDTO ret       = new ResultDTO();
                //获取token失败
                if (tokenInfo == null)
                {
                    ret.ResultCode = 2;

                    ret.Message = "获取微信access_token失败";
                    return(ret);
                }
                if (!tokenInfo.isSuccess)
                {
                    ret.ResultCode = 2;
                    ret.Message    = tokenInfo.Message;
                    return(ret);
                }
                ContextSession contextSession = ContextFactory.CurrentThreadContext;
                int            successCount   = 0;
                bool           hasError       = false;
                string         errorMess      = string.Empty;
                for (int i = 0; i < dto.CreateNo; i++)
                {
                    var id           = Guid.NewGuid();
                    var createResult = worker.CreateForeverQrcode(new ForeverQrcodeDTO()
                    {
                        SceneStr = id.ToString()
                    }, tokenInfo);
                    if (createResult == null)
                    {
                        hasError  = true;
                        errorMess = "";
                        break;
                    }
                    if (!createResult.isSuccess)
                    {
                        hasError  = true;
                        errorMess = createResult.Message;
                        break;
                    }

                    WeChatQRCode qrCode = new WeChatQRCode
                    {
                        Id = id,
                        WeChatPublicCode = dto.WeChatPublicCode,
                        WeChatAppId      = developerInfo.WAppId,
                        WeChatSecret     = developerInfo.WSecret,
                        AppId            = dto.AppId,
                        QRNo             = GetWeChatQRNoExt(),
                        QRType           = { Value = dto.QrType },
                        SpreadInfoId     = Guid.Empty,
                        WeChatTicket     = createResult.Data,
                        Description      = dto.Description,
                        EntityState      = EntityState.Added
                    };
                    contextSession.SaveObject(qrCode);
                    contextSession.SaveChanges();
                    successCount++;
                }
                if (hasError)
                {
                    if (successCount > 0)
                    {
                        ret.ResultCode = 5;
                        ret.isSuccess  = true;
                        ret.Message    = string.Format("本次应生成二维码数量:{0},实际生成数量:{1},失败原因:{2}", dto.CreateNo, successCount, errorMess);
                    }
                    else
                    {
                        ret.ResultCode = 4;
                        ret.Message    = errorMess;
                    }
                    return(ret);
                }
                return(new ResultDTO {
                    isSuccess = true, Message = "success"
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("WeChatQRCodeBP.CreateWeChatQrCodeBatchExt异常,入参:{0}", JsonHelper.JsSerializer(dto)), ex);
                return(new ResultDTO {
                    Message = "异常,请重试!"
                });
            }
        }