Пример #1
0
        /// <summary>
        ///     get default value
        /// </summary>
        public object GetDefaultValue(ActivityEditInput activityEdit, Activity activity)
        {
            if (activityEdit.ProductId <= 0)
            {
                return(null);
            }

            var isDefault = true;
            var result    = new MemberDiscountActivity();

            if (!string.IsNullOrWhiteSpace(activity.Value))
            {
                isDefault = false;
                result    = JsonConvert.DeserializeObject <MemberDiscountActivity>(activity.Value);
            }

            //grade price
            var productSkus = Resolve <IProductSkuService>().GetGradePrice(activityEdit.ProductId).ToList();

            if (isDefault)
            {
                result.DiscountList = productSkus.Select(g => GetDefaultSku(g)).ToList();
                return(result);
            }

            //update data
            var discountList = new List <MemberDiscountActivityItem>();

            productSkus.ForEach(item =>
            {
                var tempDiscount = result.DiscountList.Find(p => p.ProductSkuId == item.Id);
                if (tempDiscount == null)
                {
                    discountList.Add(GetDefaultSku(item));
                }
                else
                {
                    //productSku
                    tempDiscount.GradeItems.ForEach(grade =>
                    {
                        var tempGrade = item.GradePriceList.Find(g => g.Id == grade.Id);
                        if (tempGrade != null)
                        {
                            if (grade.Name != tempGrade.Name)
                            {
                                grade.Name = tempGrade.Name;
                            }
                        }
                        else
                        {
                            tempDiscount.GradeItems.Remove(grade);
                        }
                    });
                    discountList.Add(tempDiscount);
                }
            });
            result.DiscountList = discountList.OrderBy(p => p.ProductSkuId).ToList();

            return(result);
        }
Пример #2
0
        public ApiResult <ActivityEditOutput> GetView([FromQuery] ActivityEditInput input)
        {
            if (!this.IsFormValid())
            {
                return(ApiResult.Failure <ActivityEditOutput>(this.FormInvalidReason()));
            }

            var model = Resolve <IActivityApiService>().GetView(input);

            return(ApiResult.Success(model));
        }
Пример #3
0
        /// <summary>
        ///     Sets the default.
        ///     设置默认值
        /// </summary>
        public object GetDefaultValue(ActivityEditInput activityEdit, Activity activity)
        {
            var groupBuyActivity = new GroupBuyActivity();

            if (activityEdit.ProductId > 0)
            {
                var product = Resolve <IProductService>().GetSingle(r => r.Id == activityEdit.ProductId);
                if (product != null)
                {
                    var productSkus = Resolve <IProductSkuService>().GetList(r => r.ProductId == product.Id);
                    // 新增活动
                    if (activity.Id <= 0)
                    {
                        activity.Name = "拼团" + product.Name;
                        productSkus.Foreach(r =>
                        {
                            var buySkuProduct = AutoMapping.SetValue <GroupBuySkuProduct>(r);
                            groupBuyActivity.SkuProducts.Add(buySkuProduct);
                        });
                    }
                    else
                    {
                        var groupBuyData = activity.Value.ToObject <GroupBuyActivity>();
                        groupBuyActivity             = AutoMapping.SetValue(groupBuyData, groupBuyActivity);
                        groupBuyActivity.SkuProducts = new List <GroupBuySkuProduct>();
                        // 编辑活动,sku使用
                        productSkus.Foreach(r =>
                        {
                            var buySkuProduct = AutoMapping.SetValue <GroupBuySkuProduct>(r);
                            var dataSku       = groupBuyData.SkuProducts.FirstOrDefault(e => e.Id == r.Id);
                            if (dataSku != null)
                            {
                                buySkuProduct.FenRunPrice          = dataSku.FenRunPrice;
                                buySkuProduct.Price                = dataSku.Price;
                                buySkuProduct.GroupBuyDisplayPrice = dataSku.GroupBuyDisplayPrice;
                                groupBuyActivity.SkuProducts.Add(buySkuProduct);
                            }
                        });
                    }
                }
            }

            // groupBuyActivity.SkuJson = groupBuyActivity.SkuProducts.ToJson();
            return(groupBuyActivity);
        }
Пример #4
0
 public object GetDefaultValue(ActivityEditInput activityEdit, Activity Activity)
 {
     return(null);
 }
Пример #5
0
        /// <summary>
        ///     get view for activity
        /// </summary>
        /// <param name="activityInput"></param>
        /// <returns></returns>
        public ActivityEditOutput GetView(ActivityEditInput activityInput)
        {
            //check
            var type = activityInput.Key.GetTypeByFullName();

            if (type == null)
            {
                throw new ValidException($"类型{activityInput.Key}不存在,请确定Url是否正确");
            }

            var instance = Activator.CreateInstance(type);

            if (!(instance is IActivity))
            {
                throw new ValidException("该类型不属于活动实体");
            }

            var activityEntityInstance = instance as IActivity;

            //check product
            if (activityInput.ProductId <= 0)
            {
                throw new ValidException("商品不存在");
            }

            var product = Resolve <IProductService>().GetSingle(activityInput.ProductId);

            if (product == null)
            {
                throw new ValidException("商品不存在");
            }

            //check activity
            var model = Resolve <IActivityService>()
                        .GetSingle(e => e.ProductId == activityInput.ProductId && e.Key == type.FullName);

            if (activityInput.Id > 0)
            {
                model = Resolve <IActivityService>().GetSingle(e => e.Id == activityInput.Id);
            }
            //builder
            var view = AutoMapping.SetValue <ActivityEditOutput>(activityInput);

            if (model != null)
            {
                view.Activity = model;
                view          = AutoMapping.SetValue(model, view);
                //user range
                view.UserRange = model.LimitGradeId.IsGuidNullOrEmpty()
                    ? UserRange.AllUser
                    : UserRange.ByUserGrade;
                //time range
                view.DateTimeRange = $"{model.StartTime.ToTimeString()} / {model.EndTime.ToTimeString()}";
                //support sigle product
                var attribute = Resolve <IActivityAdminService>().GetActivityModuleAttribute(type.FullName);
                if (attribute != null && attribute.IsSupportSigleProduct)
                {
                    activityInput.ProductId = model.ActivityExtension.ProductIds.FirstOrDefault();
                    view.ProductId          = activityInput.ProductId;
                }
            }
            else
            {
                view.Activity = new Activity {
                    Key       = type.FullName,
                    Status    = ActivityStatus.Processing,
                    ProductId = activityInput.ProductId
                };
                view.UserRange     = UserRange.AllUser;
                view.DateTimeRange =
                    $"{DateTime.Now.AddDays(1).Date.ToTimeString()} / {DateTime.Now.AddDays(7).Date.ToTimeString()}";
            }

            //get default value
            view.ActivityRules = activityEntityInstance.GetDefaultValue(activityInput, view.Activity);
            if (view.ActivityRules == null && !view.Activity.Value.IsNullOrEmpty())
            {
                view.ActivityRules = JsonConvert.DeserializeObject(view.Activity.Value, type);
            }

            //get form
            try {
                view.AutoForm = activityEntityInstance.GetAutoForm(view.ActivityRules);
            } catch (Exception) {
            }

            if (view.AutoForm == null)
            {
                view.AutoForm = view.ActivityRules == null
                    ? AutoFormMapping.Convert(type.FullName)
                    : AutoFormMapping.Convert(view.ActivityRules);
            }

            return(view);
        }