/// <summary> /// 发放优惠券到指定会员 /// </summary> /// <param name="member"></param> /// <param name="coupon"></param> /// <returns></returns> private bool SendCouponToMember(Member member, Models.Coupon coupon) { CouponRelation couponRel = new CouponRelation { Id = KeyGenerator.GetGuidKey(), CouponId = coupon.Id, CouponCode = _couponService.CreateCouponCode(), MemberId = member.Id, CreateTime = DateTime.Now, IsUsed = false, FromType = CouponRelation.EnumFromType.Send }; //有效期 if (coupon.ExpiryType == ExpiryType.ExpiryByDay) { couponRel.StartTime = DateTime.Now; if (coupon.ExpiryDay != 0) { couponRel.EndTime = DateTime.Now.AddDays(Convert.ToInt32(coupon.ExpiryDay)); } else { couponRel.EndTime = DateTime.MaxValue; } } else { couponRel.StartTime = coupon.StartTime; couponRel.EndTime = coupon.EndTime; } return(_currencyService.Create(couponRel)); }
public ActionResult Create() { Models.Coupon coupon = new Models.Coupon(); coupon.Id = Guid.Empty; coupon.ExpiryType = ExpiryType.ExpiryByDay; coupon.CouponType = CouponType.FullCut; return(View("Edit", coupon)); }
public ActionResult Edit(Guid id) { Models.Coupon coupon = null; if (id == Guid.Empty) { coupon = new Models.Coupon { Id = Guid.Empty }; } else { coupon = _currencyService.GetSingleById <Models.Coupon>(id); Argument.ThrowIfNull(coupon, "优惠券信息不存在"); } return(View(coupon)); }
public CouponModel(Models.Coupon model) { Id = model.Id; Title = model.Title; Describe = model.Describe; ExpiryType = model.ExpiryType; ExpiryDay = model.ExpiryDay; CouponType = model.CouponType; if (model.CouponType == CouponType.FullCut) { Money = model.Money; Minimum = model.Minimum; } else { Discount = model.Discount; } if (ExpiryType == ExpiryType.ExpiryByDate) { StartTime = Convert.ToDateTime(model.StartTime).ToString("yyyy-MM-dd"); EndTime = Convert.ToDateTime(model.EndTime).ToString("yyyy-MM-dd"); } }
/// <summary> /// 读取JD的EXCEL表 /// </summary> /// <param name="userID"></param> /// <param name="cid"></param> /// <param name="html"></param> /// <param name="path"></param> /// <returns></returns> public static List <Models.Coupon> GetCouponsFromExcel(string userID, Models.JdCidUrl cid, string html, string path) { var dtable = new ExcelHelper(path).ExcelToDataTable(null, true); var doc = CQ.CreateDocument(html); List <Models.Coupon> coupons = new List <Models.Coupon>(); Func <string, string> decode = t => { return(WebUtility.HtmlDecode(t.Trim())); }; foreach (System.Data.DataRow item in dtable.Rows) { try { var strDate = item["推广时间"].ToString(); var dates = strDate.SplitToArray <DateTime>('至'); var id = item["商品详情页"].ToString() .Replace("http://item.jd.com/", "") .Replace(".html", ""); var hItem = CQ.CreateDocument(doc.Select($"[skuid={id}]")[0].OuterHTML); var img = hItem.Select(".img-wrap img")[0].GetAttribute("src"); var oPrice = Convert.ToDecimal(decode(hItem.Select(".pc_unitPrice .pri").FirstOrDefault()?.InnerText).Remove(0, 1)); var price = Convert.ToDecimal(decode(hItem.Select(".price-exc .price em").FirstOrDefault()?.InnerText ?? "$0").Remove(0, 1)); if (price == 0) { price = oPrice; } var link = item["我要推广"].ToString(); var docShopName = hItem.Select(".shop-name"); var shopName = docShopName.Count() > 0 ? decode(docShopName[0].InnerText) : "京东自营"; var c = new Models.Coupon { TypeID = cid.ID, Cid = cid.Cid, Commission = Convert.ToDecimal(item["无线佣金(元)"]), CommissionRate = Convert.ToDecimal(item["无线佣金比例(%)"]), CreateDateTime = DateTime.Now, EndDateTime = dates[1], Image = img, PCouponID = id, Left = 1000, Link = link, Name = item["商品名称"].ToString(), OriginalPrice = oPrice, Platform = Enums.CouponPlatform.Jd, PLink = link, Price = price, ProductID = id, Sales = Convert.ToInt32(item["30天引入订单"]), ShopName = shopName, Total = 1000, StartDateTime = dates[0], Value = $"-{oPrice - price}", ProductType = cid.Cid, UserID = userID, }; coupons.Add(c); } catch (Exception ex) { continue; } } return(coupons); }
public ActionResult EditOnPost(ViewCoupon model) { var result = new DataJsonResult(); try { Models.Coupon coupon = null; if (model.Id != Guid.Empty) { coupon = _currencyService.GetSingleById <Models.Coupon>(model.Id); } bool isNew = coupon == null; if (isNew) { coupon = new Models.Coupon { Id = KeyGenerator.GetGuidKey(), CreateTime = DateTime.Now, Status = Models.CouponStatus.Enable }; } coupon.CouponType = model.CouponType; if (model.CouponType == CouponType.FullCut) { if (model.Money <= 0) { throw new Exception("优惠金额不能小于0"); } coupon.Minimum = model.Minimum; coupon.Money = model.Money; } else { if (model.Discount < 0.1M || model.Discount > 10) { throw new Exception("优惠折扣必需在0.1-10之间"); } coupon.Discount = model.Discount; } coupon.Title = model.Title; coupon.Quantity = model.Quantity; coupon.ExpiryType = model.ExpiryType; if (model.ExpiryType == ExpiryType.ExpiryByDay) { coupon.ExpiryDay = model.ExpiryDay; coupon.StartTime = null; coupon.EndTime = null; } else { coupon.ExpiryDay = 0; coupon.StartTime = Convert.ToDateTime(model.StartTime).DayZero(); coupon.EndTime = Convert.ToDateTime(model.EndTime).DayEnd(); if (coupon.StartTime > coupon.EndTime) { throw new Exception("开始时间不能大于结束时间"); } } coupon.Describe = model.Describe; if (isNew) { if (!_currencyService.Create(coupon)) { throw new Exception("保存出错"); } } else { if (!_currencyService.Update(coupon)) { throw new Exception("保存出错"); } } } catch (Exception e) { result.ErrorMessage = e.Message; } return(Json(result)); }
public GetItemListResult GetItemList(IEnumerable <ChannelUser> channelUsers, Cid2 cid, string keyword = null, int pageNo = 1, int pageSize = 50, SortType sortType = SortType.Default) { //{ "keyword": 字符串 否 搜索词(商品名称关键词或商品描述关键词) //"pageNo": 整型 否 页码 //"pageSize": 整型 否 每页数据个数 //"sortType": 整型 是 0:默认排序,11:佣金升序,12:佣金降序,21:价格升序,22:价格降序;销量升序,32:销量降序,41:优惠券升序,42:优惠券降序 //"tag": 字符串 否 商品标签,待官方确认要素值 //"cid": 整型 否 类目id } var p = new Dictionary <string, string>(); var q = new { keyword = keyword, pageNo = pageNo, pageSize = pageSize, //sortType = (int)sortType, cid = cid.DID, hasCoupon = true }; p.Add("promInfoQuery", JsonConvert.SerializeObject(q)); p.Add("userId", Token.UserID); var url = GetUrl("xiaodian.cpsdata.promitem.get", p); var result = new Api.BaseApi(url, "POST", p).CreateRequestReturnJson(); var model = new GetItemListResult(); if (result["status"]["code"].Value <string>() != "0000000") { throw new Exception($"请求有误{result["status"].Value<JToken>().ToString(Formatting.None)}"); } model.Total = result["result"]["data"]["total"].Value <int>(); model.TotalPage = (model.Total / 50) + (model.Total % 50 > 0 ? 1 : 0); model.Page = pageNo; foreach (JObject item in result["result"]["data"]["items"]) { try { var obj = new { ItemID = item["itemId"].Value <string>(), DayLeft = item["dayLeft"].Value <int>(), PictUrl = item["pictUrl"].Value <string>(), Title = item["title"].Value <string>(), ShopTitle = item["shopTitle"].Value <string>(), ExtendDesc = item["extendDesc"].Value <string>(), AfterCouponPrice = item["afterCouponPrice"].Value <decimal>(), CouponStartFee = item["couponStartFee"].Value <decimal>(), CouponInfo = item["couponInfo"].Value <string>(), Promid = item["promid"].Value <string>(), BIZ30day = item["biz30day"].Value <int>(), CommissionRate = Convert.ToDecimal(item["commissionRate"].Value <string>().Replace("%", "")), CouponLeftCount = item["couponLeftCount"].Value <int>(), CouponTotalCount = item["couponTotalCount"].Value <int>(), Cid = item["cid"].Value <string>() }; if (!string.IsNullOrWhiteSpace(obj.CouponInfo)) { foreach (var c in channelUsers) { var tm = new Models.Coupon { CreateDateTime = DateTime.Now, EndDateTime = DateTime.Now.Date.AddDays(obj.DayLeft + 1).AddSeconds(-1), StartDateTime = DateTime.Now.Date, ProductID = obj.ItemID, Image = obj.PictUrl, Link = $"http://union.mogujie.com/jump?userid={Token.UserID}&itemid={obj.ItemID}&promid={obj.Promid}&gid={c.ID}", Name = obj.Title, OriginalPrice = obj.AfterCouponPrice + obj.CouponStartFee, Platform = Enums.CouponPlatform.MoGuJie, Price = obj.AfterCouponPrice, ShopName = obj.ShopTitle, Subtitle = obj.ExtendDesc, Value = obj.CouponInfo, Sales = obj.BIZ30day, CommissionRate = obj.CommissionRate, Commission = Math.Round(obj.AfterCouponPrice * obj.CommissionRate / 100, 2), Total = obj.CouponTotalCount, Left = obj.CouponLeftCount, PCouponID = obj.Promid, Cid = obj.Cid, PLink = $"http://union.mogujie.com/jump?itemid={obj.ItemID}&promid={obj.Promid}", UserID = c.UserID, TypeID = cid.TypeID, ProductType = cid.Name, }; model.Items.Add(tm); } } } catch (Exception ex) { continue; } } return(model); }