/// <summary> /// Sets the value. /// 根据前端页面表单HttpContext设置内容 /// </summary> /// <param name="httpContext">The HTTP context.</param> public ServiceResult SetValue(HttpContext httpContext) { var activityModule = AutoMapping.SetValue <GroupBuyActivity>(httpContext); // 活动模块 activityModule = JsonMapping.HttpContextToExtension <GroupBuyActivity>(activityModule, httpContext); var priceSytles = Resolve <IAutoConfigService>() .GetList <PriceStyleConfig>(r => r.Status == Status.Normal); // 状态不正常的商品,可能不支持价格类型 var moneyTypes = Resolve <IAutoConfigService>().MoneyTypes(); // 所有货币类型 var productId = httpContext.Request.Form["ProductId"].ConvertToLong(); var product = Resolve <IProductService>().GetSingle(r => r.Id == productId); if (product == null) { return(ServiceResult.Failure("商品不存在")); } var priceStyleConfig = Resolve <IAutoConfigService>().GetList <PriceStyleConfig>() .FirstOrDefault(r => r.Id == product.PriceStyleId); if (product.MinCashRate == 0) { product.MinCashRate = priceStyleConfig.MinCashRate; } activityModule.SkuProducts.Foreach(r => { r.GroupBuyDisplayPrice = Resolve <IProductGoodsService>().Resolve <IProductService>() .GetDisplayPrice(r.Price, priceStyleConfig.Id, priceStyleConfig.MinCashRate); // 如果商品中有价格参数,则使员商品中的最小抵现价格 if (priceStyleConfig != null) { var moneyConfig = moneyTypes.FirstOrDefault(e => e.Id == priceStyleConfig.MoneyTypeId); if (moneyConfig?.RateFee == 0) { moneyConfig.RateFee = 1; } // 如果不是现金商品 if (priceStyleConfig.PriceStyle != PriceStyle.CashProduct) { r.MinPayCash = Math.Round(r.Price * priceStyleConfig.MinCashRate, 2); // 最低可使用的现金资产 r.MaxPayPrice = Math.Round(r.Price * (1 - priceStyleConfig.MinCashRate) / moneyConfig.RateFee, 2); // 最高可使用的现金资产 } else { r.MaxPayPrice = 0; // 现金商品,最高可使用的虚拟资产为0 r.MinPayCash = r.Price; //现金商品,最低使用的现金为价格 } } }); var result = ServiceResult.Success; result.ReturnObject = activityModule; return(result); }