/// <summary> /// 使用卡券 /// </summary> /// <param name="code"></param> /// <param name="cardid"></param> /// <returns></returns> public void Consume(string cardid, string code) { WXCardCodeLogInfo wxcdata = Context.WXCardCodeLogInfo.FirstOrDefault(d => d.CardId == cardid && d.Code == code); if (wxcdata != null) { var carddata = Context.WXCardLogInfo.FirstOrDefault(d => d.Id == wxcdata.CardLogId.Value); if (carddata != null) { #if DEBUG Core.Log.Info("开始核销卡券:" + wxcdata.Code); #endif var acctoken = GetAccessToken(carddata.AppId, carddata.AppSecret); if (!string.IsNullOrWhiteSpace(acctoken) && !string.IsNullOrWhiteSpace(wxcdata.Code)) { var wxResultJson = CardApi.CardUnavailable(acctoken, wxcdata.Code, wxcdata.CardId); if (wxResultJson.errcode != Senparc.Weixin.ReturnCode.请求成功) { Core.Log.Error("微信同步使用卡券失败", new Exception(((int)wxResultJson.errcode).ToString() + ":" + wxResultJson.errmsg)); } } } wxcdata.CodeStatus = (int)WXCardCodeLogInfo.CodeStatusEnum.HasConsume; wxcdata.UsedTime = DateTime.Now; Context.SaveChanges(); } }
/// <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); }
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); }
public void Unavailable(string cardid, string code) { WXCardCodeLogInfo nullable = context.WXCardCodeLogInfo.FirstOrDefault((WXCardCodeLogInfo d) => (d.CardId == cardid) && (d.Code == code)); if (nullable != null) { WXCardLogInfo wXCardLogInfo = context.WXCardLogInfo.FirstOrDefault((WXCardLogInfo d) => d.Id == nullable.CardLogId.Value); if (wXCardLogInfo != null) { string accessToken = GetAccessToken(wXCardLogInfo.AppId, wXCardLogInfo.AppSecret); if (!string.IsNullOrWhiteSpace(accessToken)) { WxJsonResult wxJsonResult = CardApi.CardUnavailable(accessToken, nullable.Code, nullable.CardId, 10000); if (wxJsonResult.errcode != ReturnCode.请求成功) { int num = (int)wxJsonResult.errcode; Log.Error("微信同步修改卡券库存失败", new Exception(string.Concat(num.ToString(), ":", wxJsonResult.errmsg))); } } } nullable.CodeStatus = -1; nullable.UsedTime = new DateTime?(DateTime.Now); context.SaveChanges(); } }
/// <summary> /// 卡券Code失效 /// </summary> /// <param name="id">投放记录编号</param> public void Unavailable(long id) { WXCardCodeLogInfo wxcdata = Context.WXCardCodeLogInfo.FirstOrDefault(d => d.Id == id); if (wxcdata != null) { Unavailable(wxcdata.CardId, wxcdata.Code); } }
/// <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); } }
public void Unavailable(long id) { WXCardCodeLogInfo wXCardCodeLogInfo = context.WXCardCodeLogInfo.FirstOrDefault((WXCardCodeLogInfo d) => d.Id == id); if (wXCardCodeLogInfo != null) { Unavailable(wXCardCodeLogInfo.CardId, wXCardCodeLogInfo.Code); } }
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); } }
public void Event_Unavailable(string cardid, string code) { if (!string.IsNullOrWhiteSpace(cardid) && !string.IsNullOrWhiteSpace(code)) { WXCardCodeLogInfo wXCardCodeLogInfo = context.WXCardCodeLogInfo.FirstOrDefault((WXCardCodeLogInfo d) => (d.CardId == cardid) && (d.Code == code)); if (wXCardCodeLogInfo != null) { context.WXCardCodeLogInfo.Remove(wXCardCodeLogInfo); context.SaveChanges(); } } }
public void Event_Send(string cardid, string code, string openid, int outerid) { if (!string.IsNullOrWhiteSpace(cardid) && !string.IsNullOrWhiteSpace(code) && !string.IsNullOrWhiteSpace(openid)) { long num = outerid; WXCardCodeLogInfo nullable = context.WXCardCodeLogInfo.FirstOrDefault((WXCardCodeLogInfo d) => (d.CardId == cardid) && d.Id == num); if (nullable != null) { nullable.Code = code; nullable.CodeStatus = 1; nullable.OpenId = openid; nullable.SendTime = new DateTime?(DateTime.Now); } context.SaveChanges(); } }
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); }
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); }