Exemple #1
0
        /// <summary>
        /// 获取卡券领取地址
        /// </summary>
        /// <param name="cardid"></param>
        /// <returns></returns>
        public string GetCardReceiveUrl(string cardid, long couponRecordId, Entities.WXCardLogInfo.CouponTypeEnum couponType)
        {
            string result = "";

            if (!string.IsNullOrWhiteSpace(cardid))
            {
                var card = DbFactory.Default.Get <Entities.WXCardLogInfo>().Where(d => d.CardId == cardid).FirstOrDefault();
                //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);
        }
Exemple #2
0
 /// <summary>
 /// 使用卡券
 /// <para>核销卡券</para>
 /// </summary>
 /// <param name="couponcodeid">红包记录号</param>
 /// <param name="coupontype">红包类型</param>
 public void Consume(long couponcodeid, Entities.WXCardLogInfo.CouponTypeEnum coupontype)
 {
     Entities.WXCardCodeLogInfo wxcdata = DbFactory.Default.Get <Entities.WXCardCodeLogInfo>().Where(d => d.CouponCodeId == couponcodeid && d.CouponType == coupontype).FirstOrDefault();
     if (wxcdata != null)
     {
         Consume(wxcdata.CardId, wxcdata.Code);
     }
 }
Exemple #3
0
        /// <summary>
        /// 获取卡券领取地址
        /// </summary>
        /// <param name="cardid"></param>
        /// <returns></returns>
        public string GetCardReceiveUrl(long id, long couponRecordId, Entities.WXCardLogInfo.CouponTypeEnum couponType)
        {
            string cardid = "";
            var    card   = DbFactory.Default.Get <Entities.WXCardLogInfo>().Where(d => d.Id == id).FirstOrDefault();

            //var card = Context.WXCardLogInfo.FirstOrDefault(d => d.Id == id);
            if (card != null)
            {
                cardid = card.CardId;
            }
            return(GetCardReceiveUrl(cardid, couponRecordId, couponType));
        }
Exemple #4
0
        /// <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, Entities.WXCardLogInfo.CouponTypeEnum couponType)
        {
            long result = 0;

            DbFactory.Default.InTransaction(() =>
            {
                if (!string.IsNullOrWhiteSpace(cardid))
                {
                    var card = DbFactory.Default.Get <Entities.WXCardLogInfo>().Where(d => d.CardId == cardid).FirstOrDefault();
                    //var card = Context.WXCardLogInfo.FirstOrDefault(d => d.CardId == cardid);
                    if (card != null)
                    {
                        var wxcdata = DbFactory.Default.Get <Entities.WXCardCodeLogInfo>().Where(d => d.CouponCodeId == couponRecordId && d.CouponType == couponType).FirstOrDefault();
                        //var wxcdata = Context.WXCardCodeLogInfo.FirstOrDefault(d => d.CouponCodeId == couponRecordId && d.CouponType == couponType);
                        if (wxcdata == null)
                        {
                            //记录数据
                            wxcdata              = new Entities.WXCardCodeLogInfo();
                            wxcdata.CardId       = cardid;
                            wxcdata.CodeStatus   = (int)Entities.WXCardCodeLogInfo.CodeStatusEnum.WaitReceive;
                            wxcdata.CouponType   = couponType;
                            wxcdata.CouponCodeId = couponRecordId;
                            wxcdata.SendTime     = DateTime.Now;
                            wxcdata.CardLogId    = card.Id;
                            DbFactory.Default.Add(wxcdata);
                            //Context.WXCardCodeLogInfo.Add(wxcdata);
                            //Context.SaveChanges();
                            switch (wxcdata.CouponType)
                            {
                            case Entities.WXCardLogInfo.CouponTypeEnum.Coupon:
                                var coupondata = DbFactory.Default.Get <Entities.CouponRecordInfo>().Where(d => d.Id == couponRecordId).FirstOrDefault();
                                //var coupondata = Context.CouponRecordInfo.FirstOrDefault(d => d.Id == couponRecordId);
                                if (coupondata != null)
                                {
                                    coupondata.WXCodeId = wxcdata.Id;
                                    DbFactory.Default.Update(coupondata);
                                }
                                break;
                            }
                            //Context.SaveChanges();
                        }
                        result = wxcdata.Id;
                    }
                }
            });
            return(result);
        }
Exemple #5
0
 /// <summary>
 /// 获取领取记录
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public Entities.WXCardCodeLogInfo GetCodeInfo(long couponCodeId, Entities.WXCardLogInfo.CouponTypeEnum couponType)
 {
     return(DbFactory.Default.Get <Entities.WXCardCodeLogInfo>().Where(d => d.CouponCodeId == couponCodeId && d.CouponType == couponType).FirstOrDefault());
 }
Exemple #6
0
        /// <summary>
        /// 获取同步微信JS
        /// </summary>
        /// <param name="couponcodeid"></param>
        /// <param name="couponType"></param>
        /// <returns></returns>
        public Entities.WXJSCardModel GetJSWeiXinCard(long couponid, long couponcodeid, Entities.WXCardLogInfo.CouponTypeEnum couponType)
        {
            Entities.WXJSCardModel result = new Entities.WXJSCardModel();
            result.cardId = "0"; //默认不可同步
            bool isNeedSyncWX = false;

            Entities.WXCardLogInfo     wxcardinfo = null;
            Entities.WXCardCodeLogInfo wxcodeinfo = null;
            wxcardinfo = Get(couponid, couponType);
            if (wxcardinfo != null)
            {
                if (wxcardinfo.AuditStatus == (int)Entities.WXCardLogInfo.AuditStatusEnum.Audited)
                {
                    isNeedSyncWX = true;
                }
            }
            if (isNeedSyncWX)
            {
                wxcodeinfo = GetCodeInfo(couponcodeid, couponType);
                if (wxcodeinfo != null)
                {
                    if (wxcodeinfo.CodeStatus != (int)Entities.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 Entities.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 #7
0
        /// <summary>
        /// 是否可以同步微信
        /// </summary>
        /// <param name="couponid"></param>
        /// <param name="couponcodeid"></param>
        /// <param name="couponType"></param>
        /// <param name="url"></param>
        /// <returns></returns>
        public Entities.WXSyncJSInfoByCard GetSyncWeiXin(long couponid, long couponcodeid, Entities.WXCardLogInfo.CouponTypeEnum couponType, string url)
        {
            Entities.WXSyncJSInfoByCard result = null;
            bool isNeedSyncWX = false;

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

            return(result);
        }
Exemple #8
0
        /// <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 Entities.WXSyncJSInfoCardInfo MakeSyncWXJSInfo(string cardid, long couponRecordId, Entities.WXCardLogInfo.CouponTypeEnum couponType)
        {
            Entities.WXSyncJSInfoCardInfo result = null;
            if (!string.IsNullOrWhiteSpace(cardid))
            {
                var card = DbFactory.Default.Get <Entities.WXCardLogInfo>().Where(d => d.CardId == cardid).FirstOrDefault();
                //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 Entities.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 = JSSDKHelper.GetCardSign(apiticket, result.nonce_str, result.timestamp, result.card_id);
                        result.signature = JSSDKHelper.GetCardSign(card.AppId, card.AppSecret, card.ShopId.ToString(), result.nonce_str, result.timestamp, result.card_id, card.CouponType.ToString());


                        result.outerid = outerid;
                    }
                    else
                    {
                        Log.Info("[Coupon]票据获取失败");
                    }
                }
            }
            return(result);
        }