Exemple #1
0
 public static ISharedPyramid BuildSharedPyramid(
     this IList <ISharedContext> context,
     IWxUserKey basic,
     IConfiguration configuration)
 {
     return(BuildSharedPyramid(context, basic, configuration, out long basicWxUserId));
 }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #5
0
 public ISharedPyramid GetSharedPyramid(IWxUserKey basic)
 {
     return(this.wxUserService.GetSharedContext(basic)
            .BuildSharedPyramid(basic as IWxUserKey, configuration, out long basicWxUserId));
 }