/// <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; } }
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 ); } } }
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" }); } }
/// <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); }
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 }); }