public static ISharedPyramid BuildSharedPyramid( this IList <ISharedContext> context, IWxUserKey basic, IConfiguration configuration) { return(BuildSharedPyramid(context, basic, configuration, out long basicWxUserId)); }
public void GenernateSharedPoster(Stream stream, IWxUserKey wxUserKey) { var wxapp = this.sharingHostService.MerchantDetails.SelectMany(x => x.Apps) .Where(x => x.AppId == wxUserKey.AppId) .SingleOrDefault(); this.wxapi.GenernateSharedMomentsPoster(stream, wxapp, wxUserKey); }
public static ISharedPyramid BuildSharedPyramid( this IList <ISharedContext> context, IWxUserKey basic, IConfiguration configuration, out long basicWxUserId) { var levelLimit = configuration.GetWeChatConstant().AllowSharedPyramidLevel; basicWxUserId = 0; var basicSharedContext = context.FirstOrDefault(o => o.Id.Equals(basic.Id)); if (basicSharedContext == null || basicSharedContext.InvitedBy == null) { return(default(ISharedPyramid)); } basicWxUserId = basicSharedContext.Id; //构建第一级 basicSharedContext 本身 var level = 1; var pyramid = new SharedPyramid() { Id = basicSharedContext.Id, Level = level, Parent = null, MchId = basic.MerchantId }; var lastInvitedBy = basicSharedContext.InvitedBy ?? 0; var lastPyramid = pyramid; while (level <= levelLimit) { level++; var sharedContext = context.FirstOrDefault(o => o.Id.Equals(lastInvitedBy)); if (sharedContext == null) { lastPyramid.Parent = new SharedPyramid() { Id = lastInvitedBy, Level = level, MchId = basic.MerchantId, Parent = null }; break; } var parent = new SharedPyramid() { Id = sharedContext.Id, Level = level, MchId = basic.MerchantId, Parent = null }; lastPyramid.Parent = parent; lastInvitedBy = sharedContext.InvitedBy ?? 0; lastPyramid = parent; } return(pyramid); }
public void GenernateSharedMomentsPoster(Stream stream, IWxApp app, IWxUserKey sharedBy) { var uri = $"https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={GetToken(app.AppId, app.Secret)}"; uri.SaveBinaryFile((http) => { http.Method = "POST"; http.ContentType = "application/json; encoding=utf-8"; var data = new { path = $"pages/welcome/index", scene = sharedBy.OpenId, width = 280 }; using (var xx = http.GetRequestStream()) { var body = data.SerializeToJson(); var buffers = UTF8Encoding.UTF8.GetBytes(body); xx.Write(buffers, 0, buffers.Length); xx.Flush(); } return(http); }, stream); }
public ISharedPyramid GetSharedPyramid(IWxUserKey basic) { return(this.wxUserService.GetSharedContext(basic) .BuildSharedPyramid(basic as IWxUserKey, configuration, out long basicWxUserId)); }