/// <summary>
        /// 是否可以同步微信
        /// </summary>
        /// <param name="couponid"></param>
        /// <param name="couponcodeid"></param>
        /// <param name="couponType"></param>
        /// <param name="url"></param>
        /// <returns></returns>
        public WXSyncJSInfoByCard GetSyncWeiXin(long couponid, long couponcodeid, WXCardLogInfo.CouponTypeEnum couponType, string url)
        {
            WXSyncJSInfoByCard result      = null;
            bool              isNeedSyncWX = false;
            WXCardLogInfo     wxcardinfo   = null;
            WXCardCodeLogInfo wxcodeinfo   = null;

            wxcardinfo = Get(couponid, couponType);
            if (wxcardinfo != null)
            {
                if (wxcardinfo.AuditStatus == (int)WXCardLogInfo.AuditStatusEnum.Audited)
                {
                    isNeedSyncWX = true;
                }
            }
            if (isNeedSyncWX)
            {
                wxcodeinfo = GetCodeInfo(couponcodeid, couponType);
                if (wxcodeinfo != null)
                {
                    if (wxcodeinfo.CodeStatus != (int)WXCardCodeLogInfo.CodeStatusEnum.WaitReceive)
                    {
                        isNeedSyncWX = false;
                    }
                }
            }
            if (isNeedSyncWX)
            {
                result = GetWXSyncJSInfo(wxcardinfo.CardId, url);
            }

            return(result);
        }
Exemple #2
0
        public string GetCardReceiveUrl(string cardid, long couponRecordId, WXCardLogInfo.CouponTypeEnum couponType)
        {
            string str = "";

            if (!string.IsNullOrWhiteSpace(cardid))
            {
                WXCardLogInfo wXCardLogInfo = context.WXCardLogInfo.FirstOrDefault((WXCardLogInfo d) => d.CardId == cardid);
                if (wXCardLogInfo != null)
                {
                    string             accessToken        = GetAccessToken(wXCardLogInfo.AppId, wXCardLogInfo.AppSecret);
                    int                num                = (int)SyncCouponRecordInfo(cardid, couponRecordId, couponType);
                    CreateQRResultJson createQRResultJson = CardApi.CreateQR(accessToken, wXCardLogInfo.CardId);
                    if (createQRResultJson.errcode != ReturnCode.请求成功)
                    {
                        int num1 = (int)createQRResultJson.errcode;
                        Log.Info(string.Concat("[Coupon]", num1.ToString(), ":", createQRResultJson.errmsg));
                    }
                    else
                    {
                        str = createQRResultJson.url;
                    }
                }
            }
            return(str);
        }
Exemple #3
0
        public WXSyncJSInfoByCard GetSyncWeiXin(long couponid, long couponcodeid, WXCardLogInfo.CouponTypeEnum couponType, string url)
        {
            WXSyncJSInfoByCard wXSyncJSInfo = null;
            bool              flag          = false;
            WXCardLogInfo     wXCardLogInfo = null;
            WXCardCodeLogInfo codeInfo      = null;

            wXCardLogInfo = Get(couponid, couponType);
            if (wXCardLogInfo != null)
            {
                int?auditStatus = wXCardLogInfo.AuditStatus;
                if ((auditStatus.GetValueOrDefault() != 1 ? false : auditStatus.HasValue))
                {
                    flag = true;
                }
            }
            if (flag)
            {
                codeInfo = GetCodeInfo(couponcodeid, couponType);
                if (codeInfo != null && codeInfo.CodeStatus != 0)
                {
                    flag = false;
                }
            }
            if (flag)
            {
                wXSyncJSInfo = GetWXSyncJSInfo(wXCardLogInfo.CardId, url);
            }
            return(wXSyncJSInfo);
        }
        /// <summary>
        /// 获取卡券领取地址
        /// </summary>
        /// <param name="cardid"></param>
        /// <returns></returns>
        public string GetCardReceiveUrl(string cardid, long couponRecordId, WXCardLogInfo.CouponTypeEnum couponType)
        {
            string result = "";

            if (!string.IsNullOrWhiteSpace(cardid))
            {
                var card = Context.WXCardLogInfo.FirstOrDefault(d => d.CardId == cardid);
                if (card != null)
                {
                    string acctoken = GetAccessToken(card.AppId, card.AppSecret);
                    //生成记录
                    long logid   = SyncCouponRecordInfo(cardid, couponRecordId, couponType);
                    int  outerid = (int)logid;
                    CreateQRResultJson wxResultJson = CardApi.CreateQR(acctoken, card.CardId, null, null, null, false, null, outerid);
                    if (wxResultJson.errcode == Senparc.Weixin.ReturnCode.请求成功)
                    {
                        result = wxResultJson.url;
                    }
                    else
                    {
                        Log.Info("[Coupon]" + ((int)wxResultJson.errcode).ToString() + ":" + wxResultJson.errmsg);
                    }
                }
            }
            return(result);
        }
        /// <summary>
        /// 使用卡券
        /// <para>核销卡券</para>
        /// </summary>
        /// <param name="couponcodeid">红包记录号</param>
        /// <param name="coupontype">红包类型</param>
        public void Consume(long couponcodeid, WXCardLogInfo.CouponTypeEnum coupontype)
        {
            WXCardCodeLogInfo wxcdata = Context.WXCardCodeLogInfo.FirstOrDefault(d => d.CouponCodeId == couponcodeid && d.CouponType == coupontype);

            if (wxcdata != null)
            {
                Consume(wxcdata.CardId, wxcdata.Code);
            }
        }
Exemple #6
0
        public void Consume(long couponcodeid, WXCardLogInfo.CouponTypeEnum coupontype)
        {
            WXCardCodeLogInfo wXCardCodeLogInfo = context.WXCardCodeLogInfo.FirstOrDefault((WXCardCodeLogInfo d) => d.CouponCodeId == couponcodeid && (int?)d.CouponType == (int?)coupontype);

            if (wXCardCodeLogInfo != null)
            {
                Consume(wXCardCodeLogInfo.CardId, wXCardCodeLogInfo.Code);
            }
        }
        /// <summary>
        /// 获取卡券领取地址
        /// </summary>
        /// <param name="cardid"></param>
        /// <returns></returns>
        public string GetCardReceiveUrl(long id, long couponRecordId, WXCardLogInfo.CouponTypeEnum couponType)
        {
            string cardid = "";
            var    card   = Context.WXCardLogInfo.FirstOrDefault(d => d.Id == id);

            if (card != null)
            {
                cardid = card.CardId;
            }
            return(GetCardReceiveUrl(cardid, couponRecordId, couponType));
        }
Exemple #8
0
        public string GetCardReceiveUrl(long id, long couponRecordId, WXCardLogInfo.CouponTypeEnum couponType)
        {
            string        cardId        = "";
            WXCardLogInfo wXCardLogInfo = context.WXCardLogInfo.FirstOrDefault((WXCardLogInfo d) => d.Id == id);

            if (wXCardLogInfo != null)
            {
                cardId = wXCardLogInfo.CardId;
            }
            return(GetCardReceiveUrl(cardId, couponRecordId, couponType));
        }
Exemple #9
0
        public void Event_Audit(string cardid, WXCardLogInfo.AuditStatusEnum auditstatus)
        {
            WXCardLogInfo nullable = context.WXCardLogInfo.FirstOrDefault((WXCardLogInfo d) => d.CardId == cardid);

            if (nullable != null)
            {
                WXCardLogInfo.CouponTypeEnum?couponType     = nullable.CouponType;
                WXCardLogInfo.CouponTypeEnum valueOrDefault = couponType.GetValueOrDefault();
                if (couponType.HasValue && valueOrDefault == WXCardLogInfo.CouponTypeEnum.Coupon && nullable.CouponId.HasValue)
                {
                    Instance <ICouponService> .Create.SyncWeixinCardAudit(nullable.CouponId.Value, cardid, auditstatus);
                }
                nullable.AuditStatus = (int)(auditstatus);
                context.SaveChanges();
            }
        }
Exemple #10
0
        public WXJSCardModel GetJSWeiXinCard(long couponid, long couponcodeid, WXCardLogInfo.CouponTypeEnum couponType)
        {
            WXJSCardModel wXJSCardModel = new WXJSCardModel()
            {
                cardId = "0"
            };
            bool              flag          = false;
            WXCardLogInfo     wXCardLogInfo = null;
            WXCardCodeLogInfo codeInfo      = null;

            wXCardLogInfo = Get(couponid, couponType);
            if (wXCardLogInfo != null)
            {
                int?auditStatus = wXCardLogInfo.AuditStatus;
                if ((auditStatus.GetValueOrDefault() != 1 ? false : auditStatus.HasValue))
                {
                    flag = true;
                }
            }
            if (flag)
            {
                codeInfo = GetCodeInfo(couponcodeid, couponType);
                if (codeInfo != null && codeInfo.CodeStatus != 0)
                {
                    flag = false;
                }
            }
            if (flag)
            {
                WXSyncJSInfoCardInfo wXSyncJSInfoCardInfo = MakeSyncWXJSInfo(wXCardLogInfo.CardId, couponcodeid, couponType);
                if (wXSyncJSInfoCardInfo != null)
                {
                    wXJSCardModel.cardId  = wXSyncJSInfoCardInfo.card_id;
                    wXJSCardModel.cardExt = new WXJSCardExtModel()
                    {
                        signature = wXSyncJSInfoCardInfo.signature,
                        timestamp = wXSyncJSInfoCardInfo.timestamp,
                        nonce_str = wXSyncJSInfoCardInfo.nonce_str,
                        outer_id  = wXSyncJSInfoCardInfo.outerid
                    };
                }
            }
            return(wXJSCardModel);
        }
        /// <summary>
        /// 获取同步微信JS
        /// </summary>
        /// <param name="couponcodeid"></param>
        /// <param name="couponType"></param>
        /// <returns></returns>
        public WXJSCardModel GetJSWeiXinCard(long couponid, long couponcodeid, WXCardLogInfo.CouponTypeEnum couponType)
        {
            WXJSCardModel result = new WXJSCardModel();

            result.cardId = "0"; //默认不可同步
            bool              isNeedSyncWX = false;
            WXCardLogInfo     wxcardinfo   = null;
            WXCardCodeLogInfo wxcodeinfo   = null;

            wxcardinfo = Get(couponid, couponType);
            if (wxcardinfo != null)
            {
                if (wxcardinfo.AuditStatus == (int)WXCardLogInfo.AuditStatusEnum.Audited)
                {
                    isNeedSyncWX = true;
                }
            }
            if (isNeedSyncWX)
            {
                wxcodeinfo = GetCodeInfo(couponcodeid, couponType);
                if (wxcodeinfo != null)
                {
                    if (wxcodeinfo.CodeStatus != (int)WXCardCodeLogInfo.CodeStatusEnum.WaitReceive)
                    {
                        isNeedSyncWX = false;
                    }
                }
            }
            if (isNeedSyncWX)
            {
                var data = MakeSyncWXJSInfo(wxcardinfo.CardId, couponcodeid, couponType);
                if (data != null)
                {
                    result.cardId            = data.card_id;
                    result.cardExt           = new WXJSCardExtModel();
                    result.cardExt.signature = data.signature;
                    result.cardExt.timestamp = data.timestamp;
                    result.cardExt.nonce_str = data.nonce_str;
                    result.cardExt.outer_id  = data.outerid;
                }
            }
            return(result);
        }
Exemple #12
0
        private long SyncCouponRecordInfo(string cardid, long couponRecordId, WXCardLogInfo.CouponTypeEnum couponType)
        {
            long id = 0;

            if (!string.IsNullOrWhiteSpace(cardid))
            {
                WXCardLogInfo wXCardLogInfo = context.WXCardLogInfo.FirstOrDefault((WXCardLogInfo d) => d.CardId == cardid);
                if (wXCardLogInfo != null)
                {
                    WXCardCodeLogInfo wXCardCodeLogInfo = context.WXCardCodeLogInfo.FirstOrDefault((WXCardCodeLogInfo d) => d.CouponCodeId == couponRecordId && (int?)d.CouponType == (int?)couponType);
                    if (wXCardCodeLogInfo == null)
                    {
                        wXCardCodeLogInfo = new WXCardCodeLogInfo()
                        {
                            CardId       = cardid,
                            CodeStatus   = 0,
                            CouponType   = new WXCardLogInfo.CouponTypeEnum?(couponType),
                            CouponCodeId = new long?(couponRecordId),
                            SendTime     = new DateTime?(DateTime.Now),
                            CardLogId    = new long?(wXCardLogInfo.Id)
                        };
                        context.WXCardCodeLogInfo.Add(wXCardCodeLogInfo);
                        context.SaveChanges();
                        WXCardLogInfo.CouponTypeEnum?nullable       = wXCardCodeLogInfo.CouponType;
                        WXCardLogInfo.CouponTypeEnum valueOrDefault = nullable.GetValueOrDefault();
                        if (nullable.HasValue && valueOrDefault == WXCardLogInfo.CouponTypeEnum.Coupon)
                        {
                            CouponRecordInfo couponRecordInfo = context.CouponRecordInfo.FirstOrDefault((CouponRecordInfo d) => d.Id == couponRecordId);
                            if (couponRecordInfo != null)
                            {
                                couponRecordInfo.WXCodeId = new long?(wXCardCodeLogInfo.Id);
                            }
                        }
                        context.SaveChanges();
                    }
                    id = wXCardCodeLogInfo.Id;
                }
            }
            return(id);
        }
        /// <summary>
        /// 卡券与红包领取信息同步前持久化
        /// </summary>
        /// <param name="cardid"></param>
        /// <param name="openid"></param>
        /// <param name="couponRecordId"></param>
        /// <param name="couponType"></param>
        private long SyncCouponRecordInfo(string cardid, long couponRecordId, WXCardLogInfo.CouponTypeEnum couponType)
        {
            long result = 0;

            if (!string.IsNullOrWhiteSpace(cardid))
            {
                var card = Context.WXCardLogInfo.FirstOrDefault(d => d.CardId == cardid);
                if (card != null)
                {
                    var wxcdata = Context.WXCardCodeLogInfo.FirstOrDefault(d => d.CouponCodeId == couponRecordId && d.CouponType == couponType);
                    if (wxcdata == null)
                    {
                        //记录数据
                        wxcdata              = new WXCardCodeLogInfo();
                        wxcdata.CardId       = cardid;
                        wxcdata.CodeStatus   = (int)WXCardCodeLogInfo.CodeStatusEnum.WaitReceive;
                        wxcdata.CouponType   = couponType;
                        wxcdata.CouponCodeId = couponRecordId;
                        wxcdata.SendTime     = DateTime.Now;
                        wxcdata.CardLogId    = card.Id;
                        Context.WXCardCodeLogInfo.Add(wxcdata);
                        Context.SaveChanges();
                        switch (wxcdata.CouponType)
                        {
                        case WXCardLogInfo.CouponTypeEnum.Coupon:
                            var coupondata = Context.CouponRecordInfo.FirstOrDefault(d => d.Id == couponRecordId);
                            if (coupondata != null)
                            {
                                coupondata.WXCodeId = wxcdata.Id;
                            }
                            break;
                        }
                        Context.SaveChanges();
                    }
                    result = wxcdata.Id;
                }
            }
            return(result);
        }
 /// <summary>
 /// 获取领取记录
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public WXCardCodeLogInfo GetCodeInfo(long couponCodeId, WXCardLogInfo.CouponTypeEnum couponType)
 {
     return(Context.WXCardCodeLogInfo.FirstOrDefault(d => d.CouponCodeId == couponCodeId && d.CouponType == couponType));
 }
Exemple #15
0
 public WXCardCodeLogInfo GetCodeInfo(long couponCodeId, WXCardLogInfo.CouponTypeEnum couponType)
 {
     return(context.WXCardCodeLogInfo.FirstOrDefault((WXCardCodeLogInfo d) => d.CouponCodeId == couponCodeId && (int?)d.CouponType == (int?)couponType));
 }
Exemple #16
0
        private WXSyncJSInfoCardInfo MakeSyncWXJSInfo(string cardid, long couponRecordId, WXCardLogInfo.CouponTypeEnum couponType)
        {
            WXSyncJSInfoCardInfo wXSyncJSInfoCardInfo = null;

            if (!string.IsNullOrWhiteSpace(cardid))
            {
                WXCardLogInfo wXCardLogInfo = context.WXCardLogInfo.FirstOrDefault((WXCardLogInfo d) => d.CardId == cardid);
                if (wXCardLogInfo != null)
                {
                    string accessToken     = GetAccessToken(wXCardLogInfo.AppId, wXCardLogInfo.AppSecret);
                    string cardJSApiTicket = GetCardJSApiTicket(accessToken);
                    if (string.IsNullOrWhiteSpace(cardJSApiTicket))
                    {
                        Log.Info("[Coupon]票据获取失败");
                    }
                    else
                    {
                        wXSyncJSInfoCardInfo = new WXSyncJSInfoCardInfo();
                        int         num         = (int)SyncCouponRecordInfo(cardid, couponRecordId, couponType);
                        JSSDKHelper jSSDKHelper = new JSSDKHelper();
                        wXSyncJSInfoCardInfo.card_id   = cardid;
                        wXSyncJSInfoCardInfo.timestamp = JSSDKHelper.GetTimestamp();
                        wXSyncJSInfoCardInfo.nonce_str = "";
                        wXSyncJSInfoCardInfo.signature = JSSDKHelper.GetcardExtSign(
                            cardJSApiTicket,
                            wXSyncJSInfoCardInfo.timestamp,
                            wXSyncJSInfoCardInfo.card_id,
                            wXSyncJSInfoCardInfo.nonce_str);
                        wXSyncJSInfoCardInfo.outerid = num;
                    }
                }
            }
            return(wXSyncJSInfoCardInfo);
        }
        /// <summary>
        /// 生成同步微信按扭JS信息
        /// </summary>
        /// <param name="cardid"></param>
        /// <param name="openid"></param>
        /// <param name="couponRecordId"></param>
        /// <param name="couponType"></param>
        /// <param name="url">当前页地址</param>
        /// <returns></returns>
        private WXSyncJSInfoCardInfo MakeSyncWXJSInfo(string cardid, long couponRecordId, WXCardLogInfo.CouponTypeEnum couponType)
        {
            WXSyncJSInfoCardInfo result = null;

            if (!string.IsNullOrWhiteSpace(cardid))
            {
                var card = Context.WXCardLogInfo.FirstOrDefault(d => d.CardId == cardid);
                if (card != null)
                {
                    string acctoken  = GetAccessToken(card.AppId, card.AppSecret);
                    string apiticket = GetCardJSApiTicket(acctoken);
                    if (!string.IsNullOrWhiteSpace(apiticket))
                    {
                        result = new WXSyncJSInfoCardInfo();
                        //生成记录
                        long        logid     = SyncCouponRecordInfo(cardid, couponRecordId, couponType);
                        int         outerid   = (int)logid;
                        JSSDKHelper jsshelper = new JSSDKHelper();
                        result.card_id   = cardid;
                        result.timestamp = JSSDKHelper.GetTimestamp();
                        result.nonce_str = "";
                        result.signature = jsshelper.GetCardSign2015(apiticket, result.nonce_str, result.timestamp, result.card_id);
                        result.outerid   = outerid;
                    }
                    else
                    {
                        Log.Info("[Coupon]票据获取失败");
                    }
                }
            }
            return(result);
        }