Exemple #1
0
        /// <summary>
        ///     获取需要支付的价格
        /// </summary>
        public Tuple <ServiceResult, decimal> GetPayPrice(UserRightsOrderInput orderInput)
        {
            var result = ServiceResult.Success;

            if (orderInput.OpenType == UserRightOpenType.OpenToOtherByRight)
            {
                return(Tuple.Create(ServiceResult.Failure("帮他购买时无价格计算"), 0m));
            }

            if (orderInput.OpenType == UserRightOpenType.OpenToOtherByPay)
            {
                if (orderInput.User.Id == orderInput.BuyUser.Id)
                {
                    return(Tuple.Create(ServiceResult.Failure("不能帮自己购买"), 0m));
                }

                var price = orderInput.BuyGrade.Price;
                return(Tuple.Create(result, price));
            }
            else
            {
                if (orderInput.BuyGrade.Price <= orderInput.CurrentGrade.Price &&
                    orderInput.OpenType != UserRightOpenType.AdminOpenHightGrade)
                {
                    return(Tuple.Create(ServiceResult.Failure("购买的等级不能低于当前等级"), 0m));
                }

                var findRight = orderInput.UserRightList.FirstOrDefault(r => r.GradeId == orderInput.BuyGrade.Id);
                if (findRight != null && orderInput.OpenType != UserRightOpenType.AdminOpenHightGrade)
                {
                    return(Tuple.Create(ServiceResult.Failure("用户当前等级权益已存在,不能重复购买"), 0m));
                }

                var userRightsConfigs = Resolve <IAutoConfigService>().GetList <UserRightsConfig>();
                var userGrades        = Resolve <IAutoConfigService>().GetList <UserGradeConfig>();
                // 如果包含,则为升级
                if (userRightsConfigs.Select(r => r.GradeId).Contains(orderInput.User.GradeId))
                {
                    if (orderInput.OpenType != UserRightOpenType.Upgrade &&
                        orderInput.OpenType != UserRightOpenType.AdminOpenHightGrade)
                    {
                        return(Tuple.Create(ServiceResult.Failure("开通方式有错,应该为自身升级"), 0m));
                    }
                }
                else
                {
                    if (orderInput.OpenType != UserRightOpenType.OpenSelf)
                    {
                        return(Tuple.Create(ServiceResult.Failure("开通方式有错,应该为自身购买"), 0m));
                    }
                }

                // 计算价格
                var price = orderInput.BuyGrade.Price;
                if (orderInput.OpenType == UserRightOpenType.Upgrade)
                {
                    price = orderInput.BuyGrade.Price - orderInput.CurrentGrade.Price;
                }

                if (price <= 0)
                {
                    return(Tuple.Create(ServiceResult.Failure("购买等级价格设置为0"), 0m));
                }

                if (price != orderInput.Price)
                {
                    return(Tuple.Create(ServiceResult.Failure("前后台计算价格不一样"), 0m));
                }

                return(Tuple.Create(result, price));
            }
        }
Exemple #2
0
        public Tuple <ServiceResult, Article> AddOrUpdate(Article model, HttpRequest request)
        {
            var id        = request.Form["Id"];
            var channelId = request.Form["ChannelId"];

            if (!id.ToString().IsNullOrEmpty())
            {
                model.Id = id.ToString().ToSafeObjectId();
            }

            model.ChannelId = channelId.ToString().ToSafeObjectId();
            var channel = Resolve <IChannelService>().GetSingle(r => r.Id == model.ChannelId);

            if (channel == null)
            {
                Tuple.Create(ServiceResult.Failure("频道不存在"), new Article());
            }

            var list = Resolve <IChannelService>().DataFields(channelId.ToString());
            var dic  = new Dictionary <string, string>();

            foreach (var item in list)
            {
                var    key   = item.Key;
                string value = request.Form[key];
                dic.Add(key, value);
            }

            var find   = Resolve <IArticleAdminService>().GetSingle(u => u.Id == model.Id);
            var result = true;

            if (find == null)
            {
                model.RelationId = GetMaxRelationId();
                result           = Resolve <IArticleAdminService>().Add(model);
                if (result)
                {
                }
            }
            else
            {
                result = Resolve <IArticleAdminService>().Update(model);
            }

            model.AttachValue = dic.ToJson();
            // 如果为true
            if (result)
            {
                // 添加标签和分类
                var classType = Resolve <IChannelService>().GetChannelClassType(channel);
                var classIds  = request.Form["Classes"].ToStr();
                var tagType   = Resolve <IChannelService>().GetChannelTagType(channel);
                var tagIds    = request.Form["Tags"].ToStr();
                Resolve <IRelationIndexService>()
                .AddUpdateOrDelete(classType.FullName, model.RelationId, classIds);
                Resolve <IRelationIndexService>()
                .AddUpdateOrDelete(tagType.FullName, model.RelationId, tagIds);
                return(Tuple.Create(ServiceResult.Success, new Article()));
            }

            DeleteCache();
            return(Tuple.Create(ServiceResult.Failed, new Article()));
        }
        public ServiceResult Save(PrefertDataAutoForm view, long userId)
        {
            #region 安全验证

            var user = Resolve <IUserService>().GetSingle(r => r.Id == userId);
            if (user == null)
            {
                throw new ValidException("用户不存在");
            }
            var userDetail = Resolve <IUserDetailService>().GetSingle(r => r.UserId == user.Id);
            if (userDetail == null)
            {
                throw new ValidException("用户数据不存在");
            }
            var userLevel = Resolve <IUserLevelService>().GetSingle(r => r.UserId == user.Id);
            if (userLevel != null)
            {
                throw new ValidException("用户已完善资料或者数据不合理");
            }

            if (!RegexHelper.CheckEmail(view.Email))
            {
                throw new ValidException("邮箱格式不正确");
            }

            if (!RegexHelper.CheckPayPasswrod(view.PayPassword))
            {
                throw new ValidException("支付密码必须为6为数字");
            }

            #endregion 安全验证

            var userLevelConfigList = Resolve <IAutoConfigService>().GetList <UserLevelConfig>();
            var userLevelConfig     = userLevelConfigList.FirstOrDefault(r => r.Price <= 0);
            var result  = ServiceResult.Success;
            var context = Repository <IUserLevelRepository>().RepositoryContext;

            try {
                context.BeginTransaction();
                userLevel          = view.MapTo <UserLevel>();
                userLevel.UserId   = user.Id;
                userLevel.ParentId = user.ParentId;
                userLevel.Mobile   = user.Mobile;
                userLevel.Name     = user.Name;

                userLevel.LevelName = userLevelConfig?.Name;
                userLevel.Status    = UserLevelStatus.Activated;
                Resolve <IUserLevelService>().Add(userLevel);

                //userDetail.Avator = view.Avator;
                //userDetail.PayPassword = view.PayPassword.ToMd5HashString();
                Resolve <IUserDetailService>().Update(userDetail);

                context.SaveChanges();
                context.CommitTransaction();
            } catch (Exception ex) {
                context.RollbackTransaction();
                result = ServiceResult.Failure(ex.Message);
            } finally {
                context.DisposeTransaction();
            }

            // 更新会员资料
            if (result.Succeeded)
            {
                user.Email = view.Email;
                user.Name  = view.Name;
                Ioc.Resolve <IUserService>().Update(user);
            }

            return(result);
        }
Exemple #4
0
        /// <summary>
        ///     增加或修改银行卡
        /// </summary>
        /// <param name="view"></param>
        /// <returns></returns>
        public ServiceResult AddOrUpdateBankCard(ApiBankCardInput view)
        {
            //银行卡必须为数字不能以0开头
            var r = new Regex("^([1-9][0-9]*)$");

            if (!r.IsMatch(view.BankCardId))
            {
                return(ServiceResult.Failure("请正确输入银行卡号"));
            }

            if (view.BankCardId.Length < 10)
            {
                return(ServiceResult.Failure("请正确输入银行卡号"));
            }

            if (view.Type == 0)
            {
                return(ServiceResult.Failure("请选择银行类型"));
            }

            #region 使用阿里接口判断银行卡是否正确

            var checkUrl =
                $"https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo={view.BankCardId}&cardBinCheck=true";
            var             httpRequest  = (HttpWebRequest)WebRequest.CreateDefault(new Uri(checkUrl));
            HttpWebResponse httpResponse = null;

            try
            {
                httpResponse = (HttpWebResponse)httpRequest.GetResponse();
            }
            catch (WebException ex)
            {
                httpResponse = (HttpWebResponse)ex.Response;
            }

            var st         = httpResponse.GetResponseStream();
            var reader     = new StreamReader(st, Encoding.GetEncoding("utf-8"));
            var readResult = reader.ReadToEnd();
            try
            {
                var aliResult = readResult.DeserializeJson <AliResult>();
                if (aliResult.Validated != "true")
                {
                    return(ServiceResult.Failure("请正确输入银行卡号"));
                }
            }
            catch (Exception e)
            {
                return(ServiceResult.Failure("请正确输入银行卡号"));
            }

            #endregion 使用阿里接口判断银行卡是否正确

            var bankCardList = Resolve <IBankCardService>().GetList(u => u.UserId == view.LoginUserId);
            if (bankCardList.Count >= 10)
            {
                return(ServiceResult.Failure("银行卡最多只可绑定十张"));
            }

            var model    = Resolve <IBankCardService>().GetSingle(u => u.Number == view.BankCardId);
            var bankCard = new BankCard
            {
                Number  = view.BankCardId,
                Address = view.Address,
                Name    = view.Name,
                Type    = view.Type,
                UserId  = view.LoginUserId,
                Id      = view.Id.ToObjectId()
            };

            if (model == null)
            {
                var result = Add(bankCard);
                if (!result)
                {
                    return(ServiceResult.Failed);
                }

                return(ServiceResult.Success);
            }

            return(ServiceResult.Failure("该银行卡已经绑定"));
        }
Exemple #5
0
        public Tuple <ServiceResult, AutoTable> Table(string type, object query, AutoBaseModel autoBaseModel)
        {
            Type   typeFind     = null;
            object instanceFind = null;

            var checkType = Resolve <IUIBaseService>().CheckType(type, ref typeFind, ref instanceFind);

            if (!checkType.Succeeded)
            {
                return(new Tuple <ServiceResult, AutoTable>(checkType, new AutoTable()));
            }

            var autoTable = AutoTableMapping.Convert(typeFind.FullName);

            #region IAutoTable类型

            // 如果是IAutoTable类型,则数据从AutoTable中获取,否则从Api接口中获取
            if (instanceFind is IAutoTable)
            {
                var target     = new Interpreter().SetVariable("autoTable", instanceFind);
                var parameters = new[]
                {
                    new Parameter("query", query),
                    new Parameter("baseModel", autoBaseModel)
                };
                try {
                    autoTable.Result = target.Eval("autoTable.PageTable(query,baseModel)", parameters);
                } catch (Exception ex) {
                    return(new Tuple <ServiceResult, AutoTable>(ServiceResult.Failure(ex.Message),
                                                                new AutoTable()));
                }
            }

            #endregion IAutoTable类型

            #region autoConfig类型

            else if (instanceFind is IAutoConfig)
            {
                var data   = Resolve <IAlaboAutoConfigService>().GetObjectList(typeFind);
                var result = PagedList <object> .Create(data, data.Count, 100, 1);

                var apiRusult = new PageResult <object> {
                    PageCount   = result.PageCount,
                    Result      = result,
                    RecordCount = result.RecordCount,
                    CurrentSize = result.CurrentSize,
                    PageIndex   = result.PageIndex,
                    PageSize    = result.PageSize
                };
                autoTable.Result = apiRusult;
            }
            else if (instanceFind is IEntity)
            {
                var serviceName = $"{typeFind.Name}Service";
                var result      = ServiceInterpreter.Eval <object>(serviceName, "GetApiPagedList", query, autoBaseModel);
                autoTable.Result = result;
            }

            #endregion autoConfig类型

            return(new Tuple <ServiceResult, AutoTable>(ServiceResult.Success, autoTable));
        }
Exemple #6
0
        /// <summary>
        ///     商品保存
        /// </summary>
        /// <param name="parameter"></param>
        /// <returns></returns>
        public ServiceResult EditProduct(ProductEditOuput parameter)
        {
            #region 基础数据赋值

            var isAdmin = Resolve <IUserService>().IsAdmin(parameter.UserId);
            parameter.Product.CategoryId = parameter.Category.Id;
            //if (parameter.Product.Id == 0) parameter.Product.StoreId = parameter.Store.Id;

            parameter.ProductDetail.ProductId = parameter.Product.Id;

            #endregion 基础数据赋值

            #region 基础安全验证

            if (parameter.PriceStyleConfig == null)
            {
                return(ServiceResult.Failure("商城模式不能为空"));
            }
            if (parameter.ProductSkus == null || parameter.ProductSkus.Count == 0)
            {
                return(ServiceResult.Failure("商品Sku不能为空"));
            }
            if (parameter.Store == null)
            {
                return(ServiceResult.Failure("店铺不能为空"));
            }
            if (!isAdmin)
            {
                if (parameter.Store.UserId != parameter.UserId)
                {
                    return(ServiceResult.Failure("您无权编辑其他店铺商品"));
                }
            }

            //if (parameter.Product.PurchasePrice > parameter.Product.CostPrice) {
            //    return ServiceResult.Failure("进货价不能大于成本价");
            //}
            //尝试过特性,属性set函数 均无效
            if (parameter.Product.CostPrice > parameter.Product.Price)
            {
                return(ServiceResult.Failure("商品销售价必须为大于等于成本价"));
            }

            if (parameter.Product.CostPrice > parameter.Product.MarketPrice)
            {
                return(ServiceResult.Failure("商品市场价必须为大于等于成本价"));
            }

            //判断sku的价格是否低于成本
            foreach (var item in parameter.ProductSkus)
            {
                if (item.CostPrice > item.Price)
                {
                    return(ServiceResult.Failure("商品SKU销售价必须为大于等于成本价"));
                }

                if (item.CostPrice > item.MarketPrice)
                {
                    return(ServiceResult.Failure("商品SKU市场价必须为大于等于成本价"));
                }

                if (item.FenRunPrice > item.CostPrice || item.FenRunPrice > item.MarketPrice ||
                    item.FenRunPrice > item.MarketPrice)
                {
                    return(ServiceResult.Failure("分润价格不能大于其他价格"));
                }
            }

            if (parameter.Product.StoreId.IsObjectIdNullOrEmpty())
            {
                return(ServiceResult.Failure("请为商品选择店铺"));
            }

            var category = Resolve <ICategoryService>().GetSingle(parameter.Product.CategoryId);
            if (category == null)
            {
                return(ServiceResult.Failure("未选择商品类目,或者商品类目已不存在"));
            }

            if (Repository <IProductRepository>().Count(r => r.Bn == parameter.Product.Bn && r.Id != parameter.Product.Id) >
                0)
            {
                return(ServiceResult.Failure("该货号已存在,请使用其他货号"));
            }

            #endregion 基础安全验证

            #region 商品图片处理

            parameter.ProductDetail.ImageJson =
                Resolve <IProductApiService>().CreateImage(parameter.Product, parameter.Images);

            #endregion 商品图片处理

            #region 核心数据赋值

            if (parameter.Product.PriceStyleId.IsGuidNullOrEmpty())
            {
                // 商城模式
                parameter.Product.PriceStyleId = parameter.PriceStyleConfig.Id;
            }
            parameter.Product.DisplayPrice = Resolve <IProductService>().GetDisplayPrice(parameter.Product.Price,
                                                                                         parameter.Product.PriceStyleId, parameter.Product.MinCashRate);

            parameter.ProductDetail.PropertyJson = ObjectExtension.ToJson(parameter.Category);
            //如果是管理员就直接上架或者下架
            if (isAdmin)
            {
                if (parameter.OnSale)
                {
                    parameter.Product.ProductStatus = GoodsStatus.Online;
                }
                else
                {
                    parameter.Product.ProductStatus = GoodsStatus.SoldOut;
                }
            }
            else
            {
                //如果是供应商直接状态为审核状态
                parameter.Product.ProductStatus = GoodsStatus.Auditing;
            }
            parameter.Product.ModifiedTime = DateTime.Now;

            #endregion 核心数据赋值

            #region 数据保存

            var context = Repository <IProductRepository>().RepositoryContext;
            context.BeginTransaction();
            try {
                parameter.ProductDetail.Extension = ObjectExtension.ToJson(parameter.ProductDetail.ProductDetailExtension);

                if (parameter.Product.Id == 0)
                {
                    Resolve <IProductService>().Add(parameter.Product);             // 添加Shop_product 表
                    parameter.ProductDetail.ProductId = parameter.Product.Id;
                    Resolve <IProductDetailService>().Add(parameter.ProductDetail); // 添加Shop_productdetai表
                }
                else
                {
                    Resolve <IProductService>().Update(parameter.Product);                       // 更新Shop_product 表
                    Resolve <IProductDetailService>().UpdateNoTracking(parameter.ProductDetail); // 更新Shop_productdetai表
                }

                // 更新商品Sku
                var skuResult = Resolve <IProductSkuService>()
                                .AddUpdateOrDelete(parameter.Product, parameter.ProductSkus); // 更新Shop_productsku表
                if (!skuResult.Succeeded)
                {
                    throw new ValidException(skuResult.ToString());
                }

                //添加商品分类和标签
                Resolve <IRelationIndexService>().AddUpdateOrDelete <ProductClassRelation>(parameter.Product.Id,
                                                                                           string.Join(',', parameter.ProductDetail.ProductDetailExtension.StoreClass));
                Resolve <IRelationIndexService>().AddUpdateOrDelete <ProductTagRelation>(parameter.Product.Id,
                                                                                         string.Join(',', parameter.ProductDetail.ProductDetailExtension.Tags));

                context.SaveChanges();
                context.CommitTransaction();
            } catch (Exception ex) {
                context.RollbackTransaction();
                return(ServiceResult.Failure("更新失败:" + ex.Message));
            } finally {
                context.DisposeTransaction();
            }

            #endregion 数据保存

            #region 保存后操作

            //删除缓存
            var cacheKey = "ApiProduct_" + parameter.Product.Id;
            ObjectCache.Remove(cacheKey);

            // 更新商品Sku价格
            //Resolve<IProductSkuService>().AutoUpdateSkuPrice(parameter.Product.Id);
            Resolve <IProductService>().Log($"成功添加一件商品,商品货号:{parameter.Product.Bn}");

            // 更新商品数据到数据中台
            var result = Resolve <IProductGoodsService>().AddOrUpdateGoods(parameter.Product.Id);
            return(result);

            #endregion 保存后操作
        }
Exemple #7
0
        /// <summary>
        ///     添加或更新地址
        /// </summary>
        /// <param name="userAddress"></param>
        public ServiceResult AddOrUpdateSingle(UserAddress userAddress)
        {
            if (userAddress == null)
            {
                throw new ValidException("地址不能为空");
            }

            var find = GetSingle(userAddress.Id);

            if (userAddress.Type == AddressLockType.UserInfoAddress)
            {
                find = GetSingle(u => u.UserId == userAddress.UserId && u.Type == userAddress.Type);
            }

            if (find == null)
            {
                find = new UserAddress();
            }

            var user = Resolve <IAlaboUserService>().GetSingle(r => r.Id == userAddress.UserId);

            if (user == null)
            {
                return(ServiceResult.Failure("会员不存在"));
            }

            var region = Resolve <IRegionService>().GetSingle(r => r.RegionId == userAddress.RegionId);

            if (region == null)
            {
                return(ServiceResult.Failure("您选择的区域不存在"));
            }

            if (region.Level != RegionLevel.County)
            {
                return(ServiceResult.Failure("请选择完整的地址"));
            }

            find.AddressDescription = region.FullName + " " + userAddress.Address;
            find.Address            = userAddress.Address;
            find.Type      = userAddress.Type;
            find.City      = region.CityId;
            find.Province  = region.ProvinceId;
            find.IsDefault = userAddress.IsDefault;

            find.ZipCode  = userAddress.ZipCode;
            find.UserId   = user.Id;
            find.RegionId = region.RegionId;

            find.Mobile = userAddress.Mobile;
            find.Name   = userAddress.Name;

            //名字和手机特殊处理
            if (find.Mobile.IsNullOrEmpty())
            {
                find.Mobile = user.Mobile;
            }

            if (find.Name.IsNullOrEmpty())
            {
                find.Name = user.Name;
            }

            if (find.Name.IsNullOrEmpty())
            {
                find.Name = user.UserName;
            }

            var saveResult = AddOrUpdate(find, r => r.Id == find.Id);

            if (saveResult && userAddress.IsDefault)
            {
                return(SetDefault(userAddress.UserId, find.Id)); // 如果设置为默认值地址,则更新为默认值地址
            }

            if (saveResult && !userAddress.IsDefault)
            {
                return(ServiceResult.Success);
            }

            return(ServiceResult.Failure("地址保存失败"));
        }
Exemple #8
0
        /// <summary>
        ///     保存收货地址
        /// </summary>
        /// <param name="addressInput"></param>
        public ServiceResult SaveOrderAddress(AddressInput addressInput)
        {
            #region MyRegion

            //if (addressInput == null) {
            //    throw new System.Exception("输入不能为空");
            //}

            //var userAddress = AutoMapping.SetValue<UserAddress>(addressInput);
            //if (!addressInput.Id.IsNullOrEmpty()) {
            //    userAddress.Id = addressInput.Id.ToObjectId();
            //} else {
            //    var addressList = Resolve<IUserAddressService>().GetList(u => u.UserId == addressInput.UserId);
            //    if (addressList.Count >= 1) {
            //        return ServiceResult.Failure("每个用户只允许拥有一个收货地址");
            //    }
            //}

            //userAddress.Type = AddressLockType.OrderAddress;
            //return AddOrUpdateSingle(userAddress);

            #endregion MyRegion

            #region 5.20后开放

            //不允许更改收货地址
            //只允许更改收货人姓名及电话
            //限定每个用户只能有一个地址

            if (addressInput == null)
            {
                throw new ValidException("输入不能为空");
            }

            var userAddress   = AutoMapping.SetValue <UserAddress>(addressInput);
            var addressConfig = Resolve <IAutoConfigService>().GetValue <UserAddressConfig>();
            if (!addressInput.Id.IsNullOrEmpty() && !addressInput.Id.ToObjectId().IsObjectIdNullOrEmpty())
            {
                //修改
                userAddress.Id = addressInput.Id.ToObjectId();
                var model = Resolve <IUserAddressService>().GetSingle(u => u.Id == addressInput.Id.ToObjectId());
                if (model == null)
                {
                    return(ServiceResult.Failure("数据异常"));
                }

                //查看配置是否开启
                if (addressConfig.IsEnble)
                {
                    if (userAddress.Address != model.Address) //不允许修改
                    {
                        return(ServiceResult.Failure(addressConfig.EditTips));
                    }

                    if (userAddress.RegionId != model.RegionId) //不允许修改
                    {
                        return(ServiceResult.Failure(addressConfig.EditTips));
                    }
                }
            }
            else
            {
                //限定每个用户只能有一个地址
                //var addressList = Resolve<IUserAddressService>().GetList(u => u.UserId == addressInput.UserId);
                //if (addressList.Count >= 1)
                //{
                //    return ServiceResult.Failure("每个用户只允许拥有一个收货地址");
                //}
                //新增
                if (addressConfig.IsEnble)
                {
                    var addressList = Resolve <IUserAddressService>().GetList(u => u.UserId == addressInput.UserId);
                    if (addressList.Count >= addressConfig.MaxNumber)
                    {
                        return(ServiceResult.Failure(addressConfig.AddTips));
                    }
                }
            }

            userAddress.Id   = addressInput.Id.ToObjectId();
            userAddress.Type = AddressLockType.OrderAddress;

            return(AddOrUpdateSingle(userAddress));

            #endregion 5.20后开放
        }
Exemple #9
0
        /// <summary>
        ///     保存
        /// </summary>
        /// <param name="model"></param>
        /// <param name="autoModel"></param>
        /// <returns></returns>
        public ServiceResult Save(object model, AutoBaseModel autoModel)
        {
            if (model == null)
            {
                return(ServiceResult.Failure("保存的内容不能为空"));
            }

            var aform = model.MapTo <ArticleAutoForm>();

            var input = model.MapTo <Article>();

            if (aform.Classes != null)
            {
                input.Classes = aform.Classes.Join();
            }

            if (aform.Tags != null)
            {
                input.Tags = aform.Tags.Join();
            }

            input.ChannelId = aform.ChannelId.ToObjectId();

            var article = AutoMapping.SetValue <Article>(input);
            var channel = Resolve <IChannelService>().GetSingle(r => r.Id == article.ChannelId);

            if (channel == null)
            {
                Tuple.Create(ServiceResult.Failure("频道不存在"), new Article());
            }

            var SerResult = ServiceResult.Success;

            article.RelationId = GetMaxRelationId();
            article.Id         = aform.Id.ToObjectId();
            article.Tags       = input.Tags;
            var entity = Resolve <IArticleAdminService>().GetSingle(article.Id);
            var result = false;

            if (entity == null)
            {
                result = Resolve <IArticleAdminService>().Add(article);
                if (result)
                {
                    SerResult = ServiceResult.Success;
                }
                else
                {
                    SerResult = ServiceResult.Failed;
                }
            }
            else
            {
                result = Resolve <IArticleAdminService>().Update(article);
            }

            if (result)
            {
                if (!string.IsNullOrEmpty(input.Classes))
                {
                    // 添加标签和分类
                    var classType = Resolve <IChannelService>().GetChannelClassType(channel);
                    var classIds  = input.Classes;
                    Resolve <IRelationIndexService>()
                    .AddUpdateOrDelete(classType.FullName, article.RelationId, classIds);
                }

                if (!string.IsNullOrEmpty(input.Tags))
                {
                    var tagType = Resolve <IChannelService>().GetChannelTagType(channel);
                    var tagIds  = input.Tags;

                    Resolve <IRelationIndexService>()
                    .AddUpdateOrDelete(tagType.FullName, article.RelationId, tagIds);
                }

                DeleteCache();

                SerResult = ServiceResult.Success;
            }
            else
            {
                SerResult = ServiceResult.Failed;
            }

            return(SerResult);
        }
Exemple #10
0
        public async Task <ServiceResult <PaymentCardResponse> > ProcessCardPaymentAsync(PaymentCardRequest request, int userId, OrderPlace orderPlace)
        {
            var authServiceResult = await _paymentAuthorizeService.GetAuthorizeTokenAsync();

            if (authServiceResult.IsValid)
            {
                using (var client = new HttpClient(new HttpClientHandler
                {
                    AllowAutoRedirect = false
                }))
                {
                    client.BaseAddress = new Uri(_paymentSettings.HostAddress);
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer",
                                                                                               authServiceResult.Result.access_token);

                    var orderPaymentInfo = await PrepareCompleteCardPayuRequestAsync(request);

                    var requestBody = JsonConvert.SerializeObject(request);

                    //var response = await client.PostAsync(_paymentSettings.OrderCreateEndpoint,
                    //            new StringContent(requestBody, Encoding.UTF8, "application/json"));

                    //if (response.IsSuccessStatusCode || response.StatusCode == HttpStatusCode.Found)
                    //{
                    //    var responseObj = JsonConvert.DeserializeObject<PaymentCardResponse>(await response.Content.ReadAsStringAsync());
                    //    await CreateNewOrderAsync(request, userId, orderPlace, orderPaymentInfo);
                    //    if (responseObj.status.statusCode == "SUCCESS")
                    //    {
                    //        return ServiceResult<PaymentCardResponse>.Success(responseObj);
                    //    }
                    //}
                    //return ServiceResult<PaymentCardResponse>.Failure(response.ReasonPhrase);


                    //TODO:Uncomment above code when payu express integrtation will work
                    await CreateNewOrderAsync(request, userId, orderPlace, orderPaymentInfo);

                    return(ServiceResult <PaymentCardResponse> .Success(new PaymentCardResponse
                    {
                        status = new CardStatus
                        {
                            statusCode = new Random().Next(0, 2) >= 1 ? "SUCCESS" : "ERROR",
                            statusDesc = "Request successful"
                        },
                        orderId = Guid.NewGuid().ToString(),
                        payMethods = new CardPayMethods
                        {
                            payMethod = new CardPayMethod
                            {
                                value = request.payMethods.payMethod.value,
                                card = new Card
                                {
                                    expirationMonth = "12",
                                    expirationYear = "2018",
                                    number = "12345*****2314"
                                }
                            }
                        }
                    }));
                }
            }
            return(ServiceResult <PaymentCardResponse> .Failure(authServiceResult.ValidationErrors));
        }