Example #1
0
        /// <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));
        }
Example #2
0
 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));
 }
Example #3
0
 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));
 }
Example #4
0
        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");
            }
        }
Example #5
0
        /// <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);
        }
Example #6
0
        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));
        }
Example #7
0
        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);
        }