public void EditStock(int num, string cardid) { WXCardLogInfo wXCardLogInfo = context.WXCardLogInfo.FirstOrDefault((WXCardLogInfo d) => d.CardId == cardid); if (wXCardLogInfo != null) { string accessToken = GetAccessToken(wXCardLogInfo.AppId, wXCardLogInfo.AppSecret); if (!string.IsNullOrWhiteSpace(accessToken)) { CardDetailGetResultJson cardDetailGetResultJson = CardApi.CardDetailGet(accessToken, wXCardLogInfo.CardId, 10000); if (cardDetailGetResultJson != null) { int num1 = num - cardDetailGetResultJson.card.general_coupon.base_info.sku.quantity; if (num1 != 0) { WxJsonResult wxJsonResult = CardApi.ModifyStock(accessToken, wXCardLogInfo.CardId, (num1 > 0 ? num1 : 0), (num1 < 0 ? Math.Abs(num1) : 0), 10000); if (wxJsonResult.errcode != ReturnCode.请求成功) { int num2 = (int)wxJsonResult.errcode; Log.Error("微信同步修改卡券库存失败", new Exception(num2.ToString())); } } } } } }
public void Delete(long id) { WXCardLogInfo wXCardLogInfo = context.WXCardLogInfo.FirstOrDefault((WXCardLogInfo d) => d.Id == id); if (wXCardLogInfo != null) { string accessToken = GetAccessToken(wXCardLogInfo.AppId, wXCardLogInfo.AppSecret); List <WXCardCodeLogInfo> list = ( from d in context.WXCardCodeLogInfo where d.CardId == wXCardLogInfo.CardId select d).ToList(); foreach (WXCardCodeLogInfo wXCardCodeLogInfo in list) { Consume(wXCardCodeLogInfo.Id); } context.WXCardLogInfo.Remove(wXCardLogInfo); CardDeleteResultJson cardDeleteResultJson = CardApi.CardDelete(accessToken, wXCardLogInfo.CardId, 10000); if (cardDeleteResultJson.errcode != ReturnCode.请求成功) { int num = (int)cardDeleteResultJson.errcode; Log.Error("微信同步删除卡券失败", new Exception(num.ToString())); } context.SaveChanges(); } }
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); }
private WXSyncJSInfoByCard GetWXSyncJSInfo(string cardid, string url) { WXSyncJSInfoByCard wXSyncJSInfoByCard = null; if (!string.IsNullOrWhiteSpace(cardid)) { WXCardLogInfo wXCardLogInfo = context.WXCardLogInfo.FirstOrDefault((WXCardLogInfo d) => d.CardId == cardid); if (wXCardLogInfo != null) { string jSApiTicket = GetJSApiTicket(wXCardLogInfo.AppId, wXCardLogInfo.AppSecret); if (string.IsNullOrWhiteSpace(jSApiTicket)) { Log.Info("[Coupon]票据获取失败"); } else { wXSyncJSInfoByCard = new WXSyncJSInfoByCard(); JSSDKHelper jSSDKHelper = new JSSDKHelper(); wXSyncJSInfoByCard.appid = wXCardLogInfo.AppId; wXSyncJSInfoByCard.apiticket = jSApiTicket; wXSyncJSInfoByCard.timestamp = JSSDKHelper.GetTimestamp(); wXSyncJSInfoByCard.nonceStr = JSSDKHelper.GetNoncestr(); wXSyncJSInfoByCard.signature = JSSDKHelper.GetSignature(wXSyncJSInfoByCard.apiticket, wXSyncJSInfoByCard.nonceStr, wXSyncJSInfoByCard.timestamp, url); } } } return(wXSyncJSInfoByCard); }
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); }
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> /// 是否可以同步微信 /// </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 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); }
public void Delete(string cardid) { WXCardLogInfo wXCardLogInfo = context.WXCardLogInfo.FirstOrDefault((WXCardLogInfo d) => d.CardId == cardid); if (wXCardLogInfo != null) { Delete(wXCardLogInfo.Id); } }
public void EditStock(int num, long id) { WXCardLogInfo wXCardLogInfo = context.WXCardLogInfo.FirstOrDefault((WXCardLogInfo d) => d.Id == id); if (wXCardLogInfo == null) { throw new HimallException("错误的数据编号"); } EditStock(num, wXCardLogInfo.CardId); }
public void AddCoupon(CouponInfo info) { CanAddOrEditCoupon(info); var coupon = Context.ActiveMarketServiceInfo.FirstOrDefault(a => a.TypeId == MarketType.Coupon && a.ShopId == info.ShopId); if (coupon == null) { throw new HimallException("您没有订购此服务"); } if (coupon.MarketServiceRecordInfo.Max(item => item.EndTime.Date) < info.EndTime) { throw new HimallException("结束日期已经超过购买优惠券服务的日期"); } info.WXAuditStatus = 1; if (info.IsSyncWeiXin == 1) { info.WXAuditStatus = 0; } Context.CouponInfo.Add(info); Context.SaveChanges(); #region 步微信 if (info.IsSyncWeiXin == 1) { WXCardLogInfo wxdata = new WXCardLogInfo(); wxdata.CardColor = info.FormWXColor; wxdata.CardTitle = info.FormWXCTit; wxdata.CardSubTitle = info.FormWXCSubTit; wxdata.CouponType = ThisCouponType; wxdata.CouponId = info.Id; wxdata.ShopId = info.ShopId; wxdata.ShopName = info.ShopName; wxdata.ReduceCost = (int)(info.Price * 100); wxdata.LeastCost = (int)(info.OrderAmount * 100); wxdata.Quantity = info.Num; wxdata.GetLimit = info.PerMax; wxdata.DefaultDetail = info.Price.ToString("F2") + "元优惠券1张"; wxdata.BeginTime = info.StartTime.Date; wxdata.EndTime = info.EndTime.AddDays(1).AddMinutes(-1); if (ser_wxcard.Add(wxdata)) { info.CardLogId = wxdata.Id; Context.SaveChanges(); } else { Context.CouponInfo.Remove(info); Context.SaveChanges(); throw new HimallException("同步微信卡券失败,请检查参数是否有错!"); } } #endregion SaveCover(info); }
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)); }
public void AddCoupon(CouponInfo info) { CanAddOrEditCoupon(info); ActiveMarketServiceInfo activeMarketServiceInfo = context.ActiveMarketServiceInfo.FirstOrDefault((ActiveMarketServiceInfo a) => (int)a.TypeId == 2 && a.ShopId == info.ShopId); if (activeMarketServiceInfo == null) { throw new HimallException("您没有订购此服务"); } if (activeMarketServiceInfo.MarketServiceRecordInfo.Max <MarketServiceRecordInfo, DateTime>((MarketServiceRecordInfo item) => item.EndTime.Date) < info.EndTime) { throw new HimallException("结束日期不能大于订购的日期"); } info.WXAuditStatus = 1; if (info.IsSyncWeiXin == 1) { info.WXAuditStatus = 0; } context.CouponInfo.Add(info); context.SaveChanges(); if (info.IsSyncWeiXin == 1) { WXCardLogInfo wXCardLogInfo = new WXCardLogInfo() { CardColor = info.FormWXColor, CardTitle = info.FormWXCTit, CardSubTitle = info.FormWXCSubTit, CouponType = new WXCardLogInfo.CouponTypeEnum?(ThisCouponType), CouponId = new long?(info.Id), ShopId = info.ShopId, ShopName = info.ShopName, ReduceCost = (int)(info.Price * new decimal(100)), LeastCost = (int)(info.OrderAmount * new decimal(100)), Quantity = info.Num, GetLimit = info.PerMax }; decimal price = info.Price; wXCardLogInfo.DefaultDetail = string.Concat(price.ToString("F2"), "元优惠券1张"); wXCardLogInfo.BeginTime = info.StartTime.Date; DateTime dateTime = info.EndTime.AddDays(1); wXCardLogInfo.EndTime = dateTime.AddMinutes(-1); if (!ser_wxcard.Add(wXCardLogInfo)) { context.CouponInfo.Remove(info); context.SaveChanges(); throw new HimallException("同步微信卡券失败,请检查参数是否有错!"); } info.CardLogId = new long?(wXCardLogInfo.Id); context.SaveChanges(); } SaveCover(info); }
// Methods public void AddCoupon(CouponInfo info) { this.CanAddOrEditCoupon(info); ActiveMarketServiceInfo info2 = base.Context.ActiveMarketServiceInfo.FirstOrDefault <ActiveMarketServiceInfo>(a => (((int)a.TypeId) == 2) && (a.ShopId == info.ShopId)); if (info2 == null) { throw new HimallException("您没有订购此服务"); } if (info2.MarketServiceRecordInfo.Max <MarketServiceRecordInfo, DateTime>(item => item.EndTime.Date) < info.EndTime) { throw new HimallException("结束日期已经超过购买优惠券服务的日期"); } info.WXAuditStatus = 1; if (info.IsSyncWeiXin == 1) { info.WXAuditStatus = 0; } base.Context.CouponInfo.Add(info); base.Context.SaveChanges(); if (info.IsSyncWeiXin == 1) { WXCardLogInfo info3 = new WXCardLogInfo { CardColor = info.FormWXColor, CardTitle = info.FormWXCTit, CardSubTitle = info.FormWXCSubTit, CouponType = new WXCardLogInfo.CouponTypeEnum?(this.ThisCouponType), CouponId = new long?(info.Id), ShopId = info.ShopId, ShopName = info.ShopName, ReduceCost = (int)(info.Price * 100M), LeastCost = (int)(info.OrderAmount * 100M), Quantity = info.Num, GetLimit = info.PerMax, DefaultDetail = info.Price.ToString("F2") + "元优惠券1张", BeginTime = info.StartTime.Date, EndTime = info.EndTime.AddDays(1.0).AddMinutes(-1.0) }; if (!this.ser_wxcard.Add(info3)) { base.Context.CouponInfo.Remove(info); base.Context.SaveChanges(); throw new HimallException("同步微信卡券失败,请检查参数是否有错!"); } info.CardLogId = new long?(info3.Id); base.Context.SaveChanges(); } this.SaveCover(info); }
public void Add(ShopBonusInfo model, long shopid) { ShopBonusInfo shopBonusInfo = ( from p in context.ShopBonusInfo where p.ShopId == shopid select p).FirstOrDefault(); if (shopBonusInfo != null && !shopBonusInfo.IsInvalid && shopBonusInfo.DateEnd > DateTime.Now && shopBonusInfo.DateStart < DateTime.Now) { throw new HimallException("一个时间段只能新增一个随机红包"); } DateTime dateTime = model.DateEnd.AddHours(23); DateTime dateTime1 = dateTime.AddMinutes(59); model.DateEnd = dateTime1.AddSeconds(59); DateTime dateTime2 = model.BonusDateEnd.AddHours(23); DateTime dateTime3 = dateTime2.AddMinutes(59); model.BonusDateEnd = dateTime3.AddSeconds(59); model.ShopId = shopid; model.IsInvalid = false; model.ReceiveCount = new int?(0); model.QRPath = ""; model = context.ShopBonusInfo.Add(model); context.Configuration.ValidateOnSaveEnabled = false; context.SaveChanges(); context.Configuration.ValidateOnSaveEnabled = false; context.SaveChanges(); if (model.SynchronizeCard) { WXCardLogInfo wXCardLogInfo = new WXCardLogInfo() { CardColor = model.CardColor, CardTitle = model.CardTitle, CardSubTitle = model.CardSubtitle, CouponType = new WXCardLogInfo.CouponTypeEnum?(ThisCouponType), CouponId = new long?(model.Id), ShopId = model.ShopId, Quantity = 0 }; string str = model.RandomAmountStart.ToString("F2"); decimal randomAmountEnd = model.RandomAmountEnd; wXCardLogInfo.DefaultDetail = string.Concat(str, "元", randomAmountEnd.ToString("F2"), "元随机优惠券1张"); wXCardLogInfo.LeastCost = (model.UseState == ShopBonusInfo.UseStateType.None ? 0 : (int)(model.UsrStatePrice * new decimal(100))); wXCardLogInfo.BeginTime = model.BonusDateStart.Date; DateTime dateTime4 = model.BonusDateEnd.AddDays(1); wXCardLogInfo.EndTime = dateTime4.AddMinutes(-1); Instance <IWXCardService> .Create.Add(wXCardLogInfo); } }
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(); } }
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); }
public void Add(ShopBonusInfo model, long shopid) { var bonus = DbFactory.Default.Get <ShopBonusInfo>().Where(p => p.ShopId == shopid).FirstOrDefault(); if (bonus != null && bonus.IsInvalid == false && bonus.DateEnd > DateTime.Now && bonus.DateStart < DateTime.Now) { throw new HimallException("一个时间段只能新增一个随机红包"); } model.DateEnd = model.DateEnd.AddHours(23).AddMinutes(59).AddSeconds(59); model.BonusDateEnd = model.BonusDateEnd.AddHours(23).AddMinutes(59).AddSeconds(59); model.ShopId = shopid; model.IsInvalid = false; model.ReceiveCount = 0; model.QRPath = ""; if (model.SynchronizeCard) { //微信卡券同步改为自动过审后有BUG,暂时默认优惠券添加就是同步状态成功的 model.WXCardState = WXCardLogInfo.AuditStatusEnum.Audited.GetHashCode(); } DbFactory.Default.Add(model); #region 步微信 if (model.SynchronizeCard == true) { WXCardLogInfo wxdata = new WXCardLogInfo(); wxdata.CardColor = model.CardColor; wxdata.CardTitle = model.CardTitle; wxdata.CardSubTitle = model.CardSubtitle; wxdata.CouponType = WXCardLogInfo.CouponTypeEnum.Bonus; wxdata.CouponId = model.Id; wxdata.ShopId = model.ShopId; wxdata.Quantity = 0; //最大库存数 wxdata.DefaultDetail = model.RandomAmountStart.ToString("F2") + "元" + model.RandomAmountEnd.ToString("F2") + "元随机优惠券1张"; wxdata.LeastCost = (model.UseState == ShopBonusInfo.UseStateType.None ? 0 : (int)(model.UsrStatePrice * 100)); wxdata.BeginTime = model.BonusDateStart.Date; wxdata.EndTime = model.BonusDateEnd.AddDays(1).AddMinutes(-1); ServiceProvider.Instance <IWXCardService> .Create.Add(wxdata); } #endregion }
public void EditCoupon(CouponInfo info) { CanAddOrEditCoupon(info); CouponInfo himallCouponSetting = context.CouponInfo.FirstOrDefault((CouponInfo a) => a.ShopId == info.ShopId && a.Id == info.Id); if (himallCouponSetting == null) { throw new HimallException("错误的优惠券信息"); } int num = context.CouponRecordInfo.Count((CouponRecordInfo d) => d.CouponId == himallCouponSetting.Id); if (info.Num < num) { throw new HimallException("错误的发放总量,己领取数己超过发放总量"); } context.CouponSettingInfo.RemoveRange(himallCouponSetting.Himall_CouponSetting); if (info.Himall_CouponSetting != null && info.Himall_CouponSetting.Count > 0) { himallCouponSetting.Himall_CouponSetting = info.Himall_CouponSetting; } himallCouponSetting.CouponName = info.CouponName; himallCouponSetting.PerMax = info.PerMax; himallCouponSetting.Num = info.Num; himallCouponSetting.ReceiveType = info.ReceiveType; himallCouponSetting.EndIntegralExchange = info.EndIntegralExchange; himallCouponSetting.NeedIntegral = info.NeedIntegral; himallCouponSetting.IntegralCover = info.IntegralCover; if (himallCouponSetting.IsSyncWeiXin == 1 && himallCouponSetting.CardLogId.HasValue) { WXCardLogInfo wXCardLogInfo = context.WXCardLogInfo.FirstOrDefault((WXCardLogInfo d) => d.Id == himallCouponSetting.CardLogId.Value); if (wXCardLogInfo != null) { int num1 = himallCouponSetting.Num - num; ser_wxcard.EditGetLimit(new int?(himallCouponSetting.PerMax), wXCardLogInfo.CardId); ser_wxcard.EditStock(num1, wXCardLogInfo.CardId); } } context.SaveChanges(); SaveCover(himallCouponSetting); }
public void EditCoupon(CouponInfo info) { this.CanAddOrEditCoupon(info); CouponInfo model = base.Context.CouponInfo.FirstOrDefault <CouponInfo>(a => (a.ShopId == info.ShopId) && (a.Id == info.Id)); if (model == null) { throw new HimallException("错误的优惠券信息"); } int num = base.Context.CouponRecordInfo.Count <CouponRecordInfo>(d => d.CouponId == model.Id); if (info.Num < num) { throw new HimallException("错误的发放总量,已领取数已超过发放总量"); } base.Context.CouponSettingInfo.RemoveRange(model.Himall_CouponSetting); if ((info.Himall_CouponSetting != null) && (info.Himall_CouponSetting.Count > 0)) { model.Himall_CouponSetting = info.Himall_CouponSetting; } model.CouponName = info.CouponName; model.PerMax = info.PerMax; model.Num = info.Num; model.ReceiveType = info.ReceiveType; model.EndIntegralExchange = info.EndIntegralExchange; model.NeedIntegral = info.NeedIntegral; model.IntegralCover = info.IntegralCover; if ((model.IsSyncWeiXin == 1) && model.CardLogId.HasValue) { WXCardLogInfo info2 = base.Context.WXCardLogInfo.FirstOrDefault <WXCardLogInfo>(d => d.Id == model.CardLogId.Value); if (info2 != null) { int num2 = model.Num - num; this.ser_wxcard.EditGetLimit(new int?(model.PerMax), info2.CardId); this.ser_wxcard.EditStock(num2, info2.CardId); } } base.Context.SaveChanges(); this.SaveCover(model); }
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); }
public void Add(ShopBonusInfo model, long shopid) { var bonus = Context.ShopBonusInfo.Where(p => p.ShopId == shopid).FirstOrDefault(); if (bonus != null && !bonus.IsInvalid && bonus.DateEnd > DateTime.Now && bonus.DateStart < DateTime.Now) { throw new HimallException("一个时间段只能新增一个随机红包"); } model.DateEnd = model.DateEnd.AddHours(23).AddMinutes(59).AddSeconds(59); model.BonusDateEnd = model.BonusDateEnd.AddHours(23).AddMinutes(59).AddSeconds(59); model.ShopId = shopid; model.IsInvalid = false; model.ReceiveCount = 0; model.QRPath = ""; model = Context.ShopBonusInfo.Add(model); Context.Configuration.ValidateOnSaveEnabled = false; Context.SaveChanges(); Context.Configuration.ValidateOnSaveEnabled = false; Context.SaveChanges(); #region 步微信 if (model.SynchronizeCard == true) { WXCardLogInfo wxdata = new WXCardLogInfo(); wxdata.CardColor = model.CardColor; wxdata.CardTitle = model.CardTitle; wxdata.CardSubTitle = model.CardSubtitle; wxdata.CouponType = ThisCouponType; wxdata.CouponId = model.Id; wxdata.ShopId = model.ShopId; wxdata.Quantity = 0; //最大库存数 wxdata.DefaultDetail = model.RandomAmountStart.ToString("F2") + "元" + model.RandomAmountEnd.ToString("F2") + "元随机优惠券1张"; wxdata.LeastCost = (model.UseState == ShopBonusInfo.UseStateType.None ? 0 : (int)(model.UsrStatePrice * 100)); wxdata.BeginTime = model.BonusDateStart.Date; wxdata.EndTime = model.BonusDateEnd.AddDays(1).AddMinutes(-1); ServiceProvider.Instance <IWXCardService> .Create.Add(wxdata); } #endregion }
public void EditGetLimit(int?num, string cardid) { Func <string, WxJsonResult> fun = null; if (!num.HasValue) { num = 0; } WXCardLogInfo carddata = context.WXCardLogInfo.FirstOrDefault(o => o.CardId == cardid); if (carddata != null) { string accessToken = GetAccessToken(carddata.AppId, carddata.AppSecret); if (!string.IsNullOrWhiteSpace(accessToken)) { if (fun == null) { fun = delegate(string accessToken2) { string urlFormat = string.Format("https://api.weixin.qq.com/card/update?access_token={0}", accessToken2); var data = new { card_id = carddata.CardId, general_coupon = new { base_info = new { get_limit = num } } }; return(CommonJsonSend.Send <WxJsonResult>(null, urlFormat, data, CommonJsonSendType.POST, 0x2710, false)); }; } WxJsonResult result = ApiHandlerWapper.TryCommonApi(fun, accessToken, true); if (result.errcode != ReturnCode.请求成功) { Log.Error("微信同步修改卡券个人限领失败", new Exception(((int)result.errcode).ToString() + ":" + result.errmsg)); } } } }
/// <summary> /// 添加卡券 /// </summary> /// <param name="info"></param> public bool Add(WXCardLogInfo info) { bool issuccess = false; string acctoken = ""; string curHost = "http://" + Core.Helper.WebHelper.GetHost(); string imagefile = "/images/defaultwxlogo.png"; string wxlogo = Core.HimallIO.GetImagePath(imagefile); if (wxlogo.IndexOf("http") < 0) { wxlogo = curHost + imagefile; } var siteSetting = ServiceProvider.Instance <ISiteSettingService> .Create.GetSiteSettings(); var shopser = ServiceProvider.Instance <IShopService> .Create; var vshopser = ServiceProvider.Instance <IVShopService> .Create; CardCreateResultJson wxResultJson = new CardCreateResultJson(); #region 组织数据 //基础数据 Card_BaseInfoBase _BaseInfo = new Card_BaseInfoBase() { logo_url = wxlogo, brand_name = siteSetting.SiteName, code_type = Card_CodeType.CODE_TYPE_BARCODE, title = info.CardTitle, sub_title = info.CardSubTitle, color = info.CardColor, notice = "专供" + siteSetting.SiteName + "使用", description = @"" + (info.LeastCost > 0 ? "满¥" + (info.LeastCost / 100).ToString("F2") + "使用" : "无门槛使用") + ",有效期至" + info.BeginTime.ToString("yyyy年MM月dd日") + "-" + info.EndTime.ToString("yyyy年MM月dd日"), date_info = new Card_BaseInfo_DateInfo() { type = Card_DateInfo_Type.DATE_TYPE_FIX_TIME_RANGE.ToString(), begin_timestamp = DateTimeHelper.GetWeixinDateTime(info.BeginTime), end_timestamp = DateTimeHelper.GetWeixinDateTime(info.EndTime), }, sku = new Card_BaseInfo_Sku() { quantity = info.Quantity == 0 ? MaxStock : info.Quantity }, get_limit = info.GetLimit == 0 ? MaxStock : info.GetLimit, use_custom_code = false, bind_openid = false, can_share = false, can_give_friend = false, custom_url_name = "立即使用", }; //代金券数据 var cardData = new Card_GeneralCouponData() { base_info = _BaseInfo, default_detail = info.DefaultDetail }; #endregion #region 诊所发布 if (info.ShopId > 0) { _BaseInfo.custom_url = curHost + "/Shop/Home/" + info.ShopId.ToString(); } var vshopSetting = vshopser.GetVShopSetting(info.ShopId); var vshopinfo = vshopser.GetVShopByShopId(info.ShopId); var shopinfo = shopser.GetShop(info.ShopId); if (vshopSetting != null && shopinfo != null && vshopinfo != null) { if (!string.IsNullOrWhiteSpace(vshopSetting.AppId) && !string.IsNullOrWhiteSpace(vshopSetting.AppSecret)) { acctoken = GetAccessToken(vshopSetting.AppId, vshopSetting.AppSecret); if (!string.IsNullOrWhiteSpace(acctoken)) { _BaseInfo.brand_name = shopinfo.ShopName; if (!string.IsNullOrWhiteSpace(vshopinfo.WXLogo)) { wxlogo = curHost + vshopinfo.WXLogo; _BaseInfo.logo_url = wxlogo; } wxResultJson = CardApi.CreateCard(acctoken, cardData); if (wxResultJson.errcode == Senparc.Weixin.ReturnCode.请求成功) { info.AppId = vshopSetting.AppId; info.AppSecret = vshopSetting.AppSecret; info.CardId = wxResultJson.card_id; issuccess = true; } } } } #endregion if (!issuccess) { #region 平台发布 if (!string.IsNullOrWhiteSpace(siteSetting.WeixinAppId) && !string.IsNullOrWhiteSpace(siteSetting.WeixinAppSecret)) { acctoken = GetAccessToken(siteSetting.WeixinAppId, siteSetting.WeixinAppSecret); if (!string.IsNullOrWhiteSpace(acctoken)) { _BaseInfo.brand_name = shopinfo.ShopName; if (!string.IsNullOrWhiteSpace(siteSetting.WXLogo)) { wxlogo = curHost + siteSetting.WXLogo; _BaseInfo.logo_url = wxlogo; } wxResultJson = CardApi.CreateCard(acctoken, cardData); if (wxResultJson.errcode == Senparc.Weixin.ReturnCode.请求成功) { info.AppId = siteSetting.WeixinAppId; info.AppSecret = siteSetting.WeixinAppSecret; info.CardId = wxResultJson.card_id; issuccess = true; } } } if (info.ShopId < 1) { _BaseInfo.custom_url = curHost + "/"; } #endregion } if (issuccess) { info.AuditStatus = (int)WXCardLogInfo.AuditStatusEnum.Auditin; //初始审核状态 //数据入库 Context.WXCardLogInfo.Add(info); Context.SaveChanges(); } return(issuccess); }
public void AddCoupon(CouponInfo info) { CanAddOrEditCoupon(info); var coupon = DbFactory.Default.Get <ActiveMarketServiceInfo>().Where(a => a.TypeId == MarketType.Coupon && a.ShopId == info.ShopId).FirstOrDefault(); if (coupon == null) { throw new HimallException("您没有订购此服务"); } var serviceEndTime = MarketApplication.GetServiceEndTime(coupon.Id); var newEnd = DateTime.Parse(serviceEndTime.ToString("yyyy-MM-dd") + " 23:59:59"); if (newEnd < info.EndTime) { throw new HimallException(string.Format("活动结束时间不得超过服务到期时间,<br/>您的服务到期时间为{0}", newEnd.ToString("yyyy-MM-dd HH:mm:ss"))); } info.WXAuditStatus = 1; if (info.IsSyncWeiXin == 1) { //微信卡券同步改为自动过审后有BUG,暂时默认优惠券添加就是同步状态成功的 //info.WXAuditStatus = 0; } DbFactory.Default .InTransaction(() => { DbFactory.Default.Add(info); info.CouponSettingInfo.ForEach(p => p.CouponID = info.Id); DbFactory.Default.AddRange(info.CouponSettingInfo); if (info.CouponProductInfo != null) { info.CouponProductInfo.ForEach(p => p.CouponId = info.Id); DbFactory.Default.Add <CouponProductInfo>(info.CouponProductInfo); } #region 步微信 if (info.IsSyncWeiXin == 1) { WXCardLogInfo wxdata = new WXCardLogInfo(); wxdata.CardColor = info.FormWXColor; wxdata.CardTitle = info.FormWXCTit; wxdata.CardSubTitle = info.FormWXCSubTit; wxdata.CouponType = ThisCouponType; wxdata.CouponId = info.Id; wxdata.ShopId = info.ShopId; wxdata.ShopName = info.ShopName; wxdata.ReduceCost = (int)(info.Price * 100); wxdata.LeastCost = (int)(info.OrderAmount * 100); wxdata.Quantity = info.Num; wxdata.GetLimit = info.PerMax; wxdata.DefaultDetail = info.Price.ToString("F2") + "元优惠券1张"; wxdata.BeginTime = info.StartTime.Date; wxdata.EndTime = info.EndTime.AddDays(1).AddMinutes(-1); if (ser_wxcard.Add(wxdata)) { DbFactory.Default .Set <CouponInfo>() .Set(n => n.CardLogId, wxdata.Id) .Where(n => n.Id == info.Id) .Succeed(); } else { DbFactory.Default.Del(info); throw new HimallException("同步微信卡券失败,请检查参数是否有错!"); } } #endregion }); SaveCover(info); }
public bool Add(WXCardLogInfo info) { string str; bool flag = false; string accessToken = ""; string str1 = string.Concat("http://", WebHelper.GetHost()); string str2 = string.Concat(str1, "/images/defaultwxlogo.png"); SiteSettingsInfo siteSettings = Instance <ISiteSettingService> .Create.GetSiteSettings(); IShopService create = Instance <IShopService> .Create; IVShopService vShopService = Instance <IVShopService> .Create; CardCreateResultJson cardCreateResultJson = new CardCreateResultJson(); Card_BaseInfoBase cardBaseInfoBase = new Card_BaseInfoBase() { logo_url = str2, brand_name = siteSettings.SiteName, code_type = Card_CodeType.CODE_TYPE_BARCODE, title = info.CardTitle, sub_title = info.CardSubTitle, color = info.CardColor, notice = string.Concat("专供", siteSettings.SiteName, "使用") }; Card_BaseInfoBase cardBaseInfoBase1 = cardBaseInfoBase; string[] strArrays = new string[5]; string[] strArrays1 = strArrays; if (info.LeastCost > 0) { int leastCost = info.LeastCost / 100; str = string.Concat("满¥", leastCost.ToString("F2"), "使用"); } else { str = "无门槛使用"; } strArrays1[0] = str; strArrays[1] = ",有效期至"; strArrays[2] = info.BeginTime.ToString("yyyy年MM月dd日"); strArrays[3] = "-"; strArrays[4] = info.EndTime.ToString("yyyy年MM月dd日"); cardBaseInfoBase1.description = string.Concat(strArrays); Card_BaseInfo_DateInfo cardBaseInfoDateInfo = new Card_BaseInfo_DateInfo() { type = Card_DateInfo_Type.DATE_TYPE_FIX_TIME_RANGE.ToString(), begin_timestamp = Senparc.Weixin.Helpers.DateTimeHelper.GetWeixinDateTime(info.BeginTime), end_timestamp = Senparc.Weixin.Helpers.DateTimeHelper.GetWeixinDateTime(info.EndTime) }; cardBaseInfoBase.date_info = cardBaseInfoDateInfo; Card_BaseInfoBase cardBaseInfoBase2 = cardBaseInfoBase; Card_BaseInfo_Sku cardBaseInfoSku = new Card_BaseInfo_Sku() { quantity = (info.Quantity == 0 ? MaxStock : info.Quantity) }; cardBaseInfoBase2.sku = cardBaseInfoSku; cardBaseInfoBase.get_limit = (info.GetLimit == 0 ? MaxStock : info.GetLimit); cardBaseInfoBase.use_custom_code = false; cardBaseInfoBase.bind_openid = false; cardBaseInfoBase.can_share = false; cardBaseInfoBase.can_give_friend = false; cardBaseInfoBase.custom_url_name = "立即使用"; Card_BaseInfoBase shopName = cardBaseInfoBase; Card_GeneralCouponData cardGeneralCouponDatum = new Card_GeneralCouponData() { base_info = shopName, default_detail = info.DefaultDetail }; Card_GeneralCouponData cardGeneralCouponDatum1 = cardGeneralCouponDatum; if (info.ShopId > 0) { long shopId = info.ShopId; shopName.custom_url = string.Concat(str1, "/Shop/Home/", shopId.ToString()); } WXShopInfo vShopSetting = vShopService.GetVShopSetting(info.ShopId); VShopInfo vShopByShopId = vShopService.GetVShopByShopId(info.ShopId); ShopInfo shop = create.GetShop(info.ShopId, false); if (vShopSetting != null && shop != null && vShopByShopId != null && !string.IsNullOrWhiteSpace(vShopSetting.AppId) && !string.IsNullOrWhiteSpace(vShopSetting.AppSecret)) { accessToken = GetAccessToken(vShopSetting.AppId, vShopSetting.AppSecret); if (!string.IsNullOrWhiteSpace(accessToken)) { shopName.brand_name = shop.ShopName; if (!string.IsNullOrWhiteSpace(vShopByShopId.WXLogo)) { shopName.logo_url = string.Concat(str1, vShopByShopId.WXLogo); } cardCreateResultJson = CardApi.CreateCard(accessToken, cardGeneralCouponDatum1, 10000); if (cardCreateResultJson.errcode == ReturnCode.请求成功) { info.AppId = vShopSetting.AppId; info.AppSecret = vShopSetting.AppSecret; info.CardId = cardCreateResultJson.card_id; flag = true; } } } if (!flag) { if (!string.IsNullOrWhiteSpace(siteSettings.WeixinAppId) && !string.IsNullOrWhiteSpace(siteSettings.WeixinAppSecret)) { accessToken = GetAccessToken(siteSettings.WeixinAppId, siteSettings.WeixinAppSecret); if (!string.IsNullOrWhiteSpace(accessToken)) { shopName.brand_name = shop.ShopName; if (!string.IsNullOrWhiteSpace(siteSettings.WXLogo)) { shopName.logo_url = string.Concat(str1, siteSettings.WXLogo); } cardCreateResultJson = CardApi.CreateCard(accessToken, cardGeneralCouponDatum1, 10000); if (cardCreateResultJson.errcode == ReturnCode.请求成功) { info.AppId = siteSettings.WeixinAppId; info.AppSecret = siteSettings.WeixinAppSecret; info.CardId = cardCreateResultJson.card_id; flag = true; } } } if (info.ShopId < 1) { shopName.custom_url = string.Concat(str1, "/"); } } if (flag) { info.AuditStatus = new int?(0); context.WXCardLogInfo.Add(info); context.SaveChanges(); } return(flag); }