Exemple #1
0
 /// <summary>
 /// Clear and reset the model. Required Init function to be called again before calling ProcessAndRender.
 /// </summary>
 public void Clear()
 {
     if (_weChatQRCodeDetectionModel != null)
     {
         _weChatQRCodeDetectionModel.Dispose();
         _weChatQRCodeDetectionModel = null;
     }
 }
Exemple #2
0
        public async Task Init(
            System.Net.DownloadProgressChangedEventHandler onDownloadProgressChanged = null)
#endif
        {
            if (_weChatQRCodeDetectionModel == null)
            {
                FileDownloadManager manager = new FileDownloadManager();
                manager.AddFile(
                    "https://github.com/WeChatCV/opencv_3rdparty/raw/wechat_qrcode/detect.prototxt",
                    _modelFolderName,
                    "E8ACFC395CAF443A47F15686A9B9207B36CB8F7E6CEB8FBAF6466665E68A9466");

                manager.AddFile(
                    "https://github.com/WeChatCV/opencv_3rdparty/raw/wechat_qrcode/detect.caffemodel",
                    _modelFolderName,
                    "CC49B8C9BABAF45F3037610FE499DF38C8819EBDA29E90CA9F2E33270F6EF809");

                manager.AddFile(
                    "https://github.com/WeChatCV/opencv_3rdparty/raw/wechat_qrcode/sr.prototxt",
                    _modelFolderName,
                    "8AE41ACBA97E8B4A8E741EE350481E49B8E01D787193F470A4C95EE1C02D5B61");

                manager.AddFile(
                    "https://github.com/WeChatCV/opencv_3rdparty/raw/wechat_qrcode/sr.caffemodel",
                    _modelFolderName,
                    "E5D36889D8E6EF2F1C1F515F807CEC03979320AC81792CD8FB927C31FD658AE3");

                if (onDownloadProgressChanged != null)
                {
                    manager.OnDownloadProgressChanged += onDownloadProgressChanged;
                }

#if UNITY_EDITOR || UNITY_IOS || UNITY_ANDROID || UNITY_STANDALONE || UNITY_WEBGL
                yield return(manager.Download());
#else
                await manager.Download();
#endif

                if (manager.AllFilesDownloaded)
                {
                    _weChatQRCodeDetectionModel = new WeChatQRCode(
                        manager.Files[0].LocalFile,
                        manager.Files[1].LocalFile,
                        manager.Files[2].LocalFile,
                        manager.Files[3].LocalFile
                        );
                }
            }
        }
Exemple #3
0
        public ResultDTO BindWeChatQrCodeExt(SpreadBindWeChatQrCodeDTO search)
        {
            if (search == null || search.Id == Guid.Empty || search.AppId == Guid.Empty)
            {
                return new ResultDTO {
                           ResultCode = 1, Message = "参数为空"
                }
            }
            ;
            try
            {
                ContextSession contextSession = ContextFactory.CurrentThreadContext;

                var spreadInfo = SpreadInfo.ObjectSet().FirstOrDefault(c => c.IsDel != 1 && c.Id == search.Id);
                if (spreadInfo == null)
                {
                    return new ResultDTO {
                               ResultCode = 2, Message = "推广主不存在"
                    }
                }
                ;
                var weChatQrCode = WeChatQRCode.ObjectSet().Where(c => c.AppId == search.AppId && c.IsDel != 1 && !c.IsUse && c.QRType.Value == search.QRType && c.QRNo == search.QRNo).FirstOrDefault();
                if (weChatQrCode == null)
                {
                    return new ResultDTO {
                               ResultCode = 3, Message = "没有找到可使用的带参数二维码,请到“App后台-微信公众号”中生成二维码"
                    }
                }
                ;
                weChatQrCode.SpreadInfoId = search.Id;
                weChatQrCode.IsUse        = true;
                weChatQrCode.Name         = getQrCodeName(spreadInfo);
                weChatQrCode.ModifiedOn   = DateTime.Now;
                weChatQrCode.EntityState  = EntityState.Modified;
                contextSession.SaveChanges();
                return(new ResultDTO {
                    isSuccess = true, Message = "success"
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("SpreadInfoBP.BindWeChatQrCodeExt异常,dto={0}", JsonHelper.JsonSerializer(search)), ex);
                return(new ResultDTO {
                    ResultCode = 1, Message = "Error"
                });
            }
        }
Exemple #4
0
        /// <summary>
        /// 时间处理
        /// </summary>
        /// <returns></returns>
        protected virtual void DealEvent()
        {
            if (string.IsNullOrEmpty(Log.Ticket))
            {
                return;
            }
            var qrcode = WeChatQRCode.ObjectSet().FirstOrDefault(c => c.QRType.Value == (int)QrType.SpreadManager && c.WeChatTicket == Log.Ticket);

            if (qrcode == null || qrcode.SpreadInfoId == Guid.Empty)
            {
                return;
            }
            var url = SpreadInfo.ObjectSet().Where(c => c.Id == qrcode.SpreadInfoId).Select(c => c.SpreadUrl).FirstOrDefault();

            Jinher.AMP.WCP.Deploy.CustomDTO.CusNewsPushDTO msgDto = new CusNewsPushDTO()
            {
                AppId   = CustomConfig.WeChatSpreader.AppId.ToString(),
                Content = getMessageContent(url),
            };
            WCPSV.Instance.PushSysMessageToUsers(msgDto);
        }
        /// <summary>
        /// 创建公众号带参二维码
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public Jinher.AMP.BTP.Deploy.CustomDTO.ResultDTO CreateWeChatQRCodeExt(Jinher.AMP.BTP.Deploy.CustomDTO.CateringDTO.WeChatQRCodeDTO dto)
        {
            BTP.Deploy.CustomDTO.ResultDTO ret = new Deploy.CustomDTO.ResultDTO();
            ContextSession contextSession      = ContextFactory.CurrentThreadContext;

            BE.WeChatQRCode qrCode = new WeChatQRCode();
            qrCode.Id = dto.id == Guid.Empty ? Guid.NewGuid() : dto.id;
            qrCode.WeChatPublicCode = dto.weChatPublicCode;
            qrCode.WeChatAppId      = dto.WeChatAppId;
            qrCode.WeChatSecret     = dto.weChatSecret;
            qrCode.WeChatTicket     = dto.WeChatTicket;
            qrCode.AppId            = dto.appId;
            qrCode.StoreId          = dto.StoreId;
            qrCode.QRNo             = dto.qrNo;
            qrCode.QRType.Value     = (int)dto.QrType;
            qrCode.IsDel            = 0;
            qrCode.IsUse            = false;
            qrCode.SpreadInfoId     = Guid.Empty;
            qrCode.EntityState      = System.Data.EntityState.Added;

            contextSession.SaveObject(qrCode);
            try
            {
                int changes = contextSession.SaveChanges();
                ret.isSuccess = changes > 0;
                ret.Message   = "添加成功";
                JAP.Common.Loging.LogHelper.Info("CreateWeChatQRCode:添加成功");
            }
            catch (Exception ex)
            {
                ret.isSuccess = false;
                ret.Message   = ex.Message;
                JAP.Common.Loging.LogHelper.Error(ex.Message, ex);
            }

            return(ret);
        }
Exemple #6
0
        public ResultDTO <ListResult <SpreadInfoShowDTO> > GetSpreadInfoListExt(SpreadSearchDTO search)
        {
            if (search == null)
            {
                return new ResultDTO <ListResult <SpreadInfoShowDTO> > {
                           ResultCode = 1, Message = "参数为空"
                }
            }
            ;
            if (search.PageIndex == 0)
            {
                search.PageIndex = 1;
            }
            if (search.PageSize == 0)
            {
                search.PageSize = 20;
            }
            var query = SpreadInfo.ObjectSet().Where(c => c.IsDel != 1);

            if (search.SpreadType.HasValue)
            {
                query = query.Where(c => c.SpreadType == search.SpreadType.Value);
            }
            if (!string.IsNullOrEmpty(search.UserCode))
            {
                query = query.Where(c => c.UserCode.Contains(search.UserCode));
            }
            if (search.SpreadAppId.HasValue && search.SpreadAppId != Guid.Empty)
            {
                query = query.Where(c => c.SpreadAppId == search.SpreadAppId.Value);
            }
            if (search.IWId.HasValue)
            {
                query = query.Where(c => c.IWId == search.IWId.Value);
            }
            ListResult <SpreadInfoShowDTO> data = new ListResult <SpreadInfoShowDTO> {
                List = new List <SpreadInfoShowDTO>()
            };

            data.Count = query.Count();
            data.List  = query.OrderByDescending(c => c.SubTime).Skip((search.PageIndex - 1) * search.PageSize).
                         Take(search.PageSize).Select(c => new SpreadInfoShowDTO
            {
                Id                 = c.Id,
                SpreadId           = c.SpreadId,
                Account            = c.UserCode,
                Name               = c.Name,
                SpreadType         = c.SpreadType,
                SpreadAppId        = c.SpreadAppId,
                HotshopId          = c.HotshopId,
                QrCodeUrl          = c.QrCodeUrl,
                SpreadDesc         = c.SpreadDesc,
                SpreadUrl          = c.SpreadUrl,
                SubTime            = c.SubTime,
                IsDel              = c.IsDel,
                HotshopName        = "",
                IsBindWeChatQrCode = false,
                SpreadAppName      = "",
                SpreadTypeDesc     = "",
                IWCode             = c.IWCode,
                SubSpreadCount     = c.SubSpreadCount,
                DividendPercent    = c.DividendPercent
            }).ToList();
            if (data.List.Any())
            {
                var spreadTypes        = data.List.Select(c => c.SpreadType).Distinct().ToList();
                var spreadCategoryList = SpreadCategory.ObjectSet()
                                         .Where(c => spreadTypes.Contains(c.SpreadType))
                                         .Select(m => new SpreadCategoryDTO {
                    SpreadType = m.SpreadType, CategoryDesc = m.CategoryDesc
                }).ToList();

                var ids       = data.List.Select(c => c.Id).ToList();
                var bindedIds = WeChatQRCode.ObjectSet().Where(c => ids.Contains(c.SpreadInfoId)).Select(m => m.SpreadInfoId).ToList();


                var appIds = data.List.Select(c => c.SpreadAppId).Distinct().ToList();
                appIds.AddRange(data.List.Select(c => c.HotshopId));
                appIds = appIds.Distinct().ToList();
                var appDict = APPSV.GetAppNameListByIds(appIds);
                foreach (var spreadInfoShowDTO in data.List)
                {
                    if (appDict.ContainsKey(spreadInfoShowDTO.SpreadAppId))
                    {
                        spreadInfoShowDTO.SpreadAppName = appDict[spreadInfoShowDTO.SpreadAppId];
                    }
                    if (appDict.ContainsKey(spreadInfoShowDTO.HotshopId))
                    {
                        spreadInfoShowDTO.HotshopName = appDict[spreadInfoShowDTO.HotshopId];
                    }
                    var spreadTypeDto = spreadCategoryList.FirstOrDefault(c => c.SpreadType == spreadInfoShowDTO.SpreadType);
                    if (spreadTypeDto != null)
                    {
                        spreadInfoShowDTO.SpreadTypeDesc = spreadTypeDto.CategoryDesc;
                    }
                    if (bindedIds.Contains(spreadInfoShowDTO.Id))
                    {
                        spreadInfoShowDTO.IsBindWeChatQrCode = true;
                    }
                }
            }

            return(new ResultDTO <ListResult <SpreadInfoShowDTO> >
            {
                isSuccess = true,
                Message = "success",
                Data = data
            });
        }
        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 = "异常,请重试!"
                });
            }
        }
        private ResultDTO <ListResult <WeChatQRCodeShowDTO> > GetWechatQrCodeListExt(WeChatQRCodeSearchDTO search)
        {
            var result = new ListResult <WeChatQRCodeShowDTO>();
            //var query = BE.WeChatQRCode.ObjectSet().Where(c => c.IsDel != 1 && c.AppId == search.AppId);
            var query = from code in WeChatQRCode.ObjectSet()
                        join type in WeChatQrCodeType.ObjectSet() on code.QRType.Value equals type.Type
                        where code.IsDel != 1 && code.AppId == search.AppId
                        select new
            {
                Id = code.Id,
                WeChatPublicCode = code.WeChatPublicCode,
                AppId            = code.AppId,
                QRNo             = code.QRNo,
                WeChatTicket     = code.WeChatTicket,
                StoreId          = code.StoreId,
                IsDel            = code.IsDel,
                IsUse            = code.IsUse,
                SpreadInfoId     = code.SpreadInfoId,
                Description      = code.Description,
                QRType           = code.QRType,
                SubTime          = code.SubTime,
                QRTypeDesc       = type.Description,
                QRTypeUseType    = type.UseTye,
                Name             = code.Name
            };

            if (search.QRType.HasValue)
            {
                query = query.Where(q => q.QRType.Value == search.QRType.Value);
            }
            //else if (!search.IsShowCatering)
            //{
            //    query = query.Where(c => c.QRTypeUseType != 1);
            //}
            if (!string.IsNullOrEmpty(search.WeChatPublicCode))
            {
                query = query.Where(q => q.WeChatPublicCode == search.WeChatPublicCode);
            }
            if (search.IsUse.HasValue)
            {
                query = query.Where(q => q.IsUse == search.IsUse.Value);
            }

            result.Count = query.Count();
            result.List  = query.OrderByDescending(q => q.SubTime).
                           Skip((search.PageIndex - 1) * search.PageSize).
                           Take(search.PageSize).
                           Select(q => new WeChatQRCodeShowDTO
            {
                Id = q.Id,
                WeChatPublicCode = q.WeChatPublicCode,
                AppId            = q.AppId,
                QRNo             = q.QRNo,
                WeChatTicket     = q.WeChatTicket,
                StoreId          = q.StoreId,
                IsDel            = q.IsDel,
                IsUse            = q.IsUse,
                SpreadInfoId     = q.SpreadInfoId,
                Description      = q.Description,
                QRType           = q.QRType.Value,
                SubTime          = q.SubTime,
                QrTypeDesc       = q.QRTypeDesc,
                Name             = q.Name
            }).
                           ToList();
            if (result.List.Any())
            {
                foreach (var weChatQrCodeShowDTO in result.List)
                {
                    if (string.IsNullOrEmpty(weChatQrCodeShowDTO.Name))
                    {
                        weChatQrCodeShowDTO.Name = weChatQrCodeShowDTO.QRNo.ToString(CultureInfo.InvariantCulture);
                    }
                }
            }
            return(new ResultDTO <ListResult <WeChatQRCodeShowDTO> >()
            {
                isSuccess = true, Data = result
            });
        }