/// <summary>
        /// 行程分享
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="userId">The user identifier.</param>
        /// <returns>Task&lt;Response&lt;StrokeShareResponse&gt;&gt;.</returns>
        /// <exception cref="NotImplementedException"></exception>
        public async Task <Response <StrokeShareResponse> > StrokeShare(StrokeShareRequest request)
        {
            var userId     = contextAccessor.UserId();
            var strokeInfo = await this.strokeContext.Strokes.FirstOrDefaultAsync(x => x.Id == request.StrokeId);

            if (strokeInfo == null || strokeInfo.IsActive == false)
            {
                throw new Exception("该行程不存在或已经下架");
            }
            Logger.LogDebug($"dizHi------------{request.ShareUrl}");
            // var resultUrl = "https://bcl.baocailang.com/wechat/oauth2?state=travel";//用此地址
            var result = JSSDKHelper.GetJsSdkUiPackageAsync(this.weChatOptions.AppId, this.weChatOptions.AppSecret, request.ShareUrl).Result;

            #region 另一种方法
            //var timestamp = JSSDKHelper.GetTimestamp();
            //var nonceStr = JSSDKHelper.GetNoncestr();

            //var ticket = Senparc.Weixin.MP.Containers.JsApiTicketContainer.TryGetJsApiTicket(this.weChatOptions.AppId, this.weChatOptions.AppSecret, true);
            //var signature = JSSDKHelper.GetSignature(ticket, nonceStr, timestamp, request.ShareUrl);

            #endregion
            var shareUrl = $"https://bcl.baocailang.com/wechat/oauth2?state=travel%26shareCode={userId}%26from=1%26resultUrl={request.JumpUrl}";

            //var shareUrl = request.ShareUrl + $"&shareCode={userId}&from=1&resultUrl={request.JumpUrl}";
            Logger.LogDebug($"构造的分享地址为:{shareUrl}");
            return(new Response <StrokeShareResponse>
            {
                Data = new StrokeShareResponse
                {
                    AppId = this.weChatOptions.AppId,
                    NonceStr = result.NonceStr,
                    Signature = result.Signature,
                    Timestamp = result.Timestamp,
                    ShareImageUrl = this.weChatOptions.HostUrl + strokeInfo.ImageUrl,
                    ShareUrl = shareUrl
                }
            });
        }
 public Task <Response <StrokeShareResponse> > StrokeShare([FromBody] StrokeShareRequest request)
 {
     return(this.strokeService.StrokeShare(request));
 }