protected override GetSuperRetailTraderItemListRD ProcessRequest(APIRequest <GetSuperRetailTraderItemListRP> pRequest)
        {
            GetSuperRetailTraderItemListRP rp = pRequest.Parameters;
            GetSuperRetailTraderItemListRD rd = new GetSuperRetailTraderItemListRD();

            rd.SuperRetailTraderItemList = new List <SuperRetailTraderItemInfo>();

            var superRetailTraderItemMappingBll = new T_SuperRetailTraderItemMappingBLL(CurrentUserInfo);
            var superRetailTraderSkuMappingBll  = new T_SuperRetailTraderSkuMappingBLL(CurrentUserInfo);
            var superRetailTraderConfigBll      = new T_SuperRetailTraderConfigBLL(CurrentUserInfo);

            OrderBy[] orderBy = new OrderBy[] { new OrderBy()
                                                {
                                                    FieldName = "CreateTime", Direction = OrderByDirections.Desc
                                                } };
            PagedQueryResult <T_SuperRetailTraderSkuMappingEntity> superRetailTraderSkuList = new PagedQueryResult <T_SuperRetailTraderSkuMappingEntity>();

            //获取分销商Sku列表
            superRetailTraderSkuList = superRetailTraderSkuMappingBll.GetSuperRetailTraderSkuList("", rp.ItemName, rp.Status, rp.PageSize, rp.PageIndex);
            //获取分销商怕配置信息
            T_SuperRetailTraderConfigEntity superRetailTraderConfigEntity = superRetailTraderConfigBll.QueryByEntity(new T_SuperRetailTraderConfigEntity()
            {
                CustomerId = CurrentUserInfo.ClientID
            }, null).FirstOrDefault();


            decimal temp;               //分销价格
            decimal Cost           = 0; //成本价
            decimal CustomerProfit = 0; //商家分润

            if (superRetailTraderConfigEntity != null && superRetailTraderConfigEntity.Cost != 0 && superRetailTraderConfigEntity.Cost != null)
            {
                Cost = Convert.ToDecimal(superRetailTraderConfigEntity.Cost); //成本价
            }
            if (superRetailTraderConfigEntity != null && superRetailTraderConfigEntity.CustomerProfit != null && superRetailTraderConfigEntity.CustomerProfit != 0)
            {
                CustomerProfit = Convert.ToDecimal(superRetailTraderConfigEntity.CustomerProfit); //商家分润
            }
            List <SuperRetailTraderItemInfo> SkuList = superRetailTraderSkuList.Entities.Select(n => new SuperRetailTraderItemInfo()
            {
                ItemId               = n.ItemId,
                ItemName             = n.ItemName,
                SkuId                = n.SkuId,
                PropName             = superRetailTraderItemMappingBll.GetPropName(n.PropName1, n.PropName2),
                SalesPrice           = n.SalesPrice,
                DistributerStock     = Convert.ToInt32(n.DistributerStock) - Convert.ToInt32(n.SalesQty),
                DistributerCostPrice = Convert.ToDecimal(n.DistributerCostPrice),
                DistributePirce      = temp = Cost == 0 ? 0 : Math.Round(Convert.ToDecimal(n.DistributerCostPrice / Convert.ToDecimal(Cost / 100)), 2, MidpointRounding.AwayFromZero), //分销价格 成本价 / 成本占比
                CustomerProgit       = CustomerProfit == 0 ? 0 : Math.Round(temp * Convert.ToDecimal(CustomerProfit / 100), 2, MidpointRounding.AwayFromZero),                         //商家分润  分销价 * 商家分润占比
                Status               = Convert.ToInt32(n.Status)
            }).ToList();

            rd.SuperRetailTraderItemList.AddRange(SkuList);

            rd.TotalCount     = superRetailTraderSkuList.RowCount;
            rd.TotalPageCount = superRetailTraderSkuList.PageCount;


            return(rd);
        }
Exemple #2
0
        protected override GetSuperRetailTraderItemDetailRD ProcessRequest(APIRequest <GetSuperRetailTraderItemDetailRP> pRequest)
        {
            GetSuperRetailTraderItemDetailRP rp          = pRequest.Parameters;
            GetSuperRetailTraderItemDetailRD rd          = new GetSuperRetailTraderItemDetailRD();
            OnlineShoppingItemBLL            itemService = new OnlineShoppingItemBLL(CurrentUserInfo);

            var superRetailTraderItemMappingBll = new T_SuperRetailTraderItemMappingBLL(CurrentUserInfo);
            var superRetailTraderSkuMappingBll  = new T_SuperRetailTraderSkuMappingBLL(CurrentUserInfo);
            var superRetailTraderConfigBll      = new T_SuperRetailTraderConfigBLL(CurrentUserInfo);
            var customerBasicSettingBll         = new CustomerBasicSettingBLL(CurrentUserInfo);

            //获取商品详细信息
            var ItemDetail = superRetailTraderItemMappingBll.GetSuperRetailTraderItemDetail(rp.ItemId);
            //获取Sku详细信息
            var skuList = superRetailTraderSkuMappingBll.GetSuperRetailTraderSkuDetail(rp.ItemId, pRequest.CustomerID);
            //获取分销商配置信息
            T_SuperRetailTraderConfigEntity superRetailTraderConfigEntity = superRetailTraderConfigBll.QueryByEntity(new T_SuperRetailTraderConfigEntity()
            {
                CustomerId = CurrentUserInfo.ClientID
            }, null).FirstOrDefault();

            #region 商品图片
            var dsImages = itemService.GetItemImageList(rp.ItemId);
            if (dsImages != null && dsImages.Tables.Count > 0 && dsImages.Tables[0].Rows.Count > 0)
            {
                rd.ImageList = DataTableToObject.ConvertToList <ImageInfo>(dsImages.Tables[0]);
            }
            #endregion

            rd.ItemId           = ItemDetail.ItemId;
            rd.ItemName         = ItemDetail.ItemName;
            rd.Prop1            = ItemDetail.Prop1Name;
            rd.Prop2            = ItemDetail.Prop2Name;
            rd.Price            = ItemDetail.Price;
            rd.DistributerPrice = Math.Round(Convert.ToDecimal(ItemDetail.DistributerCostPrice / Convert.ToDecimal(superRetailTraderConfigEntity.Cost / 100)), 2, MidpointRounding.AwayFromZero); //分销价格 成本价 / 成本占比
            if (rd.Price == 0)                                                                                                                                                                    //价格为零,折扣为10折
            {
                rd.Discount = 1;
            }
            else
            {
                rd.Discount = Math.Round(rd.DistributerPrice / rd.Price, 2, MidpointRounding.AwayFromZero); //折扣
            }
            rd.ItemIntroduce = ItemDetail.ItemIntroduce;

            rd.SkuList = skuList.Select(n => new APISkuInfo()
            {
                SkuID            = n.SkuId,
                PropName1        = n.PropName1,
                PropName2        = n.PropName2,
                DistributerPrice = Math.Round(Convert.ToDecimal(n.DistributerCostPrice / Convert.ToDecimal(superRetailTraderConfigEntity.Cost / 100)), 2, MidpointRounding.AwayFromZero),  //分销价格 成本价 / 成本占比
                DistributerStock = Convert.ToInt32(n.DistributerStock) - Convert.ToInt32(n.SalesPrice),
                SoldQty          = Convert.ToInt32(n.SalesQty)
            }).ToList();

            rd.DeliveryDesc = customerBasicSettingBll.GetSettingValueByCode("DeliveryStrategy");

            return(rd);
        }
Exemple #3
0
        /// <summary>
        /// 超级分销App 获取协议信息
        /// </summary>
        /// <param name="pRequest"></param>
        /// <returns></returns>
        protected override GetTSuperRetailTraderConfigRD ProcessRequest(DTO.Base.APIRequest <GetTSuperRetailTraderConfigRP> pRequest)
        {
            var parameter = pRequest.Parameters;
            var rd        = new GetTSuperRetailTraderConfigRD();
            LoggingSessionInfo           loggingSessionInfo = Default.GetBSLoggingSession(pRequest.CustomerID, pRequest.UserID);
            T_SuperRetailTraderConfigBLL bll = new T_SuperRetailTraderConfigBLL(loggingSessionInfo);
            var _model = bll.QueryByEntity(new T_SuperRetailTraderConfigEntity()
            {
                CustomerId = loggingSessionInfo.ClientID, IsDelete = 0
            }, null);

            if (_model.Length > 0)
            {
                rd.Agreement     = _model[0].Agreement;
                rd.AgreementName = _model[0].AgreementName;
            }
            return(rd);
        }
Exemple #4
0
        protected override GetSuperRetailTraderItemRD ProcessRequest(APIRequest <GetSuperRetailTraderItemRP> pRequest)
        {
            GetSuperRetailTraderItemRP rp = pRequest.Parameters;
            GetSuperRetailTraderItemRD rd = new GetSuperRetailTraderItemRD();

            var superRetailTraderItemMappingBll = new T_SuperRetailTraderItemMappingBLL(CurrentUserInfo);
            var superRetailTraderSkuMappingBll  = new T_SuperRetailTraderSkuMappingBLL(CurrentUserInfo);
            var superRetailTraderConfigBll      = new T_SuperRetailTraderConfigBLL(CurrentUserInfo);
            //获取商品列表
            PagedQueryResult <T_SuperRetailTraderItemMappingEntity> ItemList = superRetailTraderItemMappingBll.GetSuperRetailTraderItemList(rp.ItemName, rp.ItemCategoryId, 10, rp.PageSize, rp.PageIndex + 1);
            //获取分销商配置信息
            T_SuperRetailTraderConfigEntity superRetailTraderConfigEntity = superRetailTraderConfigBll.QueryByEntity(new T_SuperRetailTraderConfigEntity()
            {
                CustomerId = CurrentUserInfo.ClientID
            }, null).FirstOrDefault();

            if (superRetailTraderConfigEntity != null)
            {
                decimal temp;
                rd.ItemList = ItemList.Entities.Select(n => new APISuperRetailTraderItemInfo()
                {
                    ItemId           = n.ItemId,
                    ItemName         = n.ItemName,
                    ImageUrl         = n.ImageUrl,
                    SoldQty          = Convert.ToInt32(n.SalesQty),
                    DistributerPrice = temp = Math.Round(Convert.ToDecimal(n.DistributerCostPrice / Convert.ToDecimal(superRetailTraderConfigEntity.Cost / 100)), 2, MidpointRounding.AwayFromZero), //分销价格
                    SkuCommission    = Math.Round(Convert.ToDecimal(temp * Convert.ToDecimal(superRetailTraderConfigEntity.SkuCommission / 100)), 2, MidpointRounding.AwayFromZero)                  //商品佣金
                }).ToList();
            }
            else
            {
                throw new APIException("商户未设置分销体系")
                      {
                          ErrorCode = 210
                      };
            }
            rd.TotalCount     = ItemList.RowCount;
            rd.TotalPageCount = ItemList.PageCount;

            return(rd);
        }
        protected override GetTSuperRetailTraderConfigRD ProcessRequest(DTO.Base.APIRequest <GetTSuperRetailTraderConfigRP> pRequest)
        {
            var parameter          = pRequest.Parameters;
            var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; //登录状态信息
            var rd = new GetTSuperRetailTraderConfigRD();
            T_SuperRetailTraderConfigBLL bll = new T_SuperRetailTraderConfigBLL(loggingSessionInfo);
            //按照时间获取最新一条有效记录
            List <EqualsCondition> lstWhereCondition = new List <EqualsCondition>()
            {
                new EqualsCondition()
                {
                    FieldName = "CustomerId", Value = loggingSessionInfo.ClientID
                },
                new EqualsCondition()
                {
                    FieldName = "IsDelete", Value = 0
                },
            };

            List <OrderBy> orderCondition = new List <OrderBy>()
            {
                new OrderBy()
                {
                    FieldName = "CreateTime", Direction = OrderByDirections.Desc
                }
            };
            var model = bll.Query(lstWhereCondition.ToArray(), orderCondition.ToArray());

            if (model != null && model.Length > 0)
            {
                rd.Agreement          = model[0].Agreement;
                rd.AgreementName      = model[0].AgreementName;
                rd.CustomerProfit     = model[0].CustomerProfit.ToString();
                rd.DistributionProfit = model[0].DistributionProfit.ToString();
                rd.Id            = model[0].Id.ToString();
                rd.SkuCommission = model[0].SkuCommission.ToString();
                rd.Cost          = model[0].Cost.ToString();
            }
            return(rd);
        }
Exemple #6
0
        protected override GetSuperRetailTraderProfitConfigRD ProcessRequest(DTO.Base.APIRequest <GetSuperRetailTraderProfitConfigRP> pRequest)
        {
            var parameter          = pRequest.Parameters;
            var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; //登录状态信息
            var rd = new GetSuperRetailTraderProfitConfigRD();
            T_SuperRetailTraderProfitConfigBLL           bll = new T_SuperRetailTraderProfitConfigBLL(loggingSessionInfo);
            T_SuperRetailTraderConfigBLL                 SuperRetailTraderConfigService = new T_SuperRetailTraderConfigBLL(loggingSessionInfo);
            List <T_SuperRetailTraderProfitConfigEntity> _model = bll.QueryByEntity(new T_SuperRetailTraderProfitConfigEntity()
            {
                IsDelete = 0, CustomerId = loggingSessionInfo.ClientID, Status = "10"
            }, null).ToList();                                                                                                                                                                                            //获取最新

            if (_model.Count == 2)
            {
                foreach (var item in _model)
                {
                    if (item.Level == 1)
                    {
                        continue;
                    }
                    item.Level = 4;
                }
                _model.Add(new T_SuperRetailTraderProfitConfigEntity()
                {
                    Level = 2, Status = "90", SuperRetailTraderProfitConfigId = null, Profit = 0
                });
                _model.Add(new T_SuperRetailTraderProfitConfigEntity()
                {
                    Level = 3, Status = "90", SuperRetailTraderProfitConfigId = null, Profit = 0
                });
            }
            else if (_model.Count == 3)
            {
                foreach (var item in _model)
                {
                    if (item.Level == 1)
                    {
                        continue;
                    }
                    item.Level = item.Level + 1;;
                }
                _model.Add(new T_SuperRetailTraderProfitConfigEntity()
                {
                    Level = 2, Status = "90", SuperRetailTraderProfitConfigId = null, Profit = 0
                });
            }

            //获取level==1 的数据

            var first = SuperRetailTraderConfigService.QueryByEntity(new T_SuperRetailTraderConfigEntity()
            {
                CustomerId = loggingSessionInfo.ClientID, IsDelete = 0
            }, null).FirstOrDefault();

            if (first == null)
            {
                throw new APIException("系统繁忙,请稍候重试。")
                      {
                          ErrorCode = 135
                      };
            }
            if (_model.Where(m => m.Level == 1).Count() == 0)
            {
                _model.Add(new T_SuperRetailTraderProfitConfigEntity()
                {
                    Level = 1, Status = "10", SuperRetailTraderProfitConfigId = null, Profit = first.SkuCommission
                });
            }
            else
            {
                _model.Where(m => m.Level == 1).FirstOrDefault().Profit = first.SkuCommission;
            }
            rd.ProfitConfigList = _model.Select(m => new GetSuperRetailTraderProfitConfigInfoRD()
            {
                Level = m.Level, Profit = m.Profit, Status = m.Status, SuperRetailTraderProfitConfigId = m.SuperRetailTraderProfitConfigId
            }).ToList();
            return(rd);
        }
Exemple #7
0
        protected override GetMemberInfoRD ProcessRequest(DTO.Base.APIRequest <GetMemberInfoRP> pRequest)
        {
            GetMemberInfoRD rd = new GetMemberInfoRD();

            rd.MemberInfo = new MemberInfo();
            var vipLoginBLL = new VipBLL(base.CurrentUserInfo);

            //如果有一个查询标识非空,就用查询标识查,发现没有会员就报错
            if (!string.IsNullOrEmpty(pRequest.Parameters.SearchFlag))
            {
                List <IWhereCondition> complexCondition = new List <IWhereCondition> {
                };
                complexCondition.Add(new EqualsCondition()
                {
                    FieldName = "ClientID", Value = CurrentUserInfo.ClientID
                });
                var cond1 = new LikeCondition()
                {
                    FieldName = "VipName", Value = "%" + pRequest.Parameters.SearchFlag + "%"
                };
                var cond2 = new LikeCondition()
                {
                    FieldName = "VipRealName", Value = "%" + pRequest.Parameters.SearchFlag + "%"
                };
                var com1 = new ComplexCondition()
                {
                    Left = cond1, Right = cond2, Operator = LogicalOperators.Or
                };

                var cond3 = new EqualsCondition()
                {
                    FieldName = "Phone", Value = pRequest.Parameters.SearchFlag
                };
                var com2 = new ComplexCondition()
                {
                    Left = com1, Right = cond3, Operator = LogicalOperators.Or
                };
                complexCondition.Add(com2);
                complexCondition.Add(new DirectCondition("(WeiXinUserId!='' Or WeiXinUserId IS NOT NULL)"));
                var tempVipList = vipLoginBLL.Query(complexCondition.ToArray(), null);
                if (tempVipList != null && tempVipList.Length != 0)
                {
                    pRequest.UserID = pRequest.Parameters.MemberID = tempVipList[0].VIPID;
                }
            }

            string m_MemberID = "";

            if (!string.IsNullOrWhiteSpace(pRequest.Parameters.OwnerVipID))
            {
                m_MemberID = string.IsNullOrWhiteSpace(pRequest.Parameters.OwnerVipID) ? pRequest.UserID : pRequest.Parameters.OwnerVipID;
            }
            else
            {
                m_MemberID = string.IsNullOrWhiteSpace(pRequest.Parameters.MemberID) ? pRequest.UserID : pRequest.Parameters.MemberID;
            }

            string UserID       = m_MemberID;
            var    VipLoginInfo = vipLoginBLL.GetByID(UserID);

            if (VipLoginInfo == null)
            {
                throw new APIException("用户不存在")
                      {
                          ErrorCode = 330
                      }
            }
            ;
            #region 20140909 kun.zou 发现状态为0,改为1
            if (VipLoginInfo.Status.HasValue && VipLoginInfo.Status == 0)
            {
                VipLoginInfo.Status = 1;
                vipLoginBLL.Update(VipLoginInfo, false);
                var log = new VipLogEntity()
                {
                    Action       = "更新",
                    ActionRemark = "vip状态为0的改为1.",
                    CreateBy     = UserID,
                    CreateTime   = DateTime.Now,
                    VipID        = VipLoginInfo.VIPID,
                    LogID        = Guid.NewGuid().ToString("N")
                };
                var logBll = new VipLogBLL(base.CurrentUserInfo);
                logBll.Create(log);
            }
            #endregion
            int couponCount = vipLoginBLL.GetVipCoupon(UserID);

            rd.MemberInfo.Mobile      = VipLoginInfo.Phone;      //手机号码
            rd.MemberInfo.Name        = VipLoginInfo.UserName;   //姓名
            rd.MemberInfo.VipID       = VipLoginInfo.VIPID;      //组标识
            rd.MemberInfo.VipName     = VipLoginInfo.VipName;    //会员名
            rd.MemberInfo.ImageUrl    = VipLoginInfo.HeadImgUrl; //会员头像  add by Henry 2014-12-5
            rd.MemberInfo.VipRealName = VipLoginInfo.VipRealName;
            rd.MemberInfo.VipNo       = VipLoginInfo.VipCode;
            rd.MemberInfo.IsDealer    = VipLoginInfo.Col48 != null?int.Parse(VipLoginInfo.Col48) : 0;

            //超级分销体系配置表 为判断是否存在分销体系使用
            var T_SuperRetailTraderConfigbll = new T_SuperRetailTraderConfigBLL(CurrentUserInfo);
            //获取分销体系信息
            var T_SuperRetailTraderConfigInfo = T_SuperRetailTraderConfigbll.QueryByEntity(new T_SuperRetailTraderConfigEntity()
            {
                IsDelete = 0, CustomerId = CurrentUserInfo.CurrentUser.customer_id
            }, null).FirstOrDefault();
            if (T_SuperRetailTraderConfigInfo != null)
            {
                rd.MemberInfo.CanBeSuperRetailTrader = 1;
            }
            else
            {
                rd.MemberInfo.CanBeSuperRetailTrader = 0;
            }
            rd.MemberInfo.SuperRetailTraderID = VipLoginInfo.Col26;
            //rd.MemberInfo.Integration = VipLoginInfo.Integration ?? 0;//会员积分

            #region 会员有效积分
            var vipIntegralBLL  = new VipIntegralBLL(CurrentUserInfo);
            var vipIntegralInfo = vipIntegralBLL.QueryByEntity(new VipIntegralEntity()
            {
                VipID = UserID, VipCardCode = VipLoginInfo.VipCode
            }, null).FirstOrDefault();
            if (vipIntegralInfo != null)
            {
                rd.MemberInfo.Integration = vipIntegralInfo.ValidIntegral != null ? vipIntegralInfo.ValidIntegral.Value : 0;
            }
            #endregion

            //会员等级
            //rd.MemberInfo.VipLevelName = string.IsNullOrEmpty(vipLoginBLL.GetVipLeave(UserID)) ? null : vipLoginBLL.GetVipLeave(UserID);
            #region 会员卡名称
            var                vipCardVipMappingBLL = new VipCardVipMappingBLL(CurrentUserInfo);
            var                vipCardBLL           = new VipCardBLL(CurrentUserInfo);
            var                vipCardTypeBLL       = new SysVipCardTypeBLL(CurrentUserInfo);
            var                vipCardRuleBLL       = new VipCardRuleBLL(CurrentUserInfo);
            var                vipT_InoutBLL        = new T_InoutBLL(CurrentUserInfo);
            VipAmountBLL       vipAmountBLL         = new VipAmountBLL(CurrentUserInfo);
            ShoppingCartBLL    service     = new ShoppingCartBLL(CurrentUserInfo);
            ShoppingCartEntity queryEntity = new ShoppingCartEntity();
            queryEntity.VipId = UserID;
            int totalQty = service.GetListQty(queryEntity);
            rd.MemberInfo.ShopCartCount = totalQty;
            //定义当前自定义等级
            int?CurVipLevel        = 0;
            var vipCardMappingInfo = vipCardVipMappingBLL.QueryByEntity(new VipCardVipMappingEntity()
            {
                VIPID = UserID, CustomerID = CurrentUserInfo.ClientID
            },
                                                                        new OrderBy[] { new OrderBy()
                                                                                        {
                                                                                            FieldName = "CreateTime", Direction = OrderByDirections.Desc
                                                                                        } }).FirstOrDefault();
            if (vipCardMappingInfo != null)
            {
                var vipCardInfo = vipCardBLL.QueryByEntity(new VipCardEntity()
                {
                    VipCardID = vipCardMappingInfo.VipCardID, VipCardStatusId = 1
                }, null).FirstOrDefault();
                if (vipCardInfo != null)
                {
                    var vipCardTypeInfo = vipCardTypeBLL.QueryByEntity(new SysVipCardTypeEntity()
                    {
                        VipCardTypeID = vipCardInfo.VipCardTypeID
                    }, null).FirstOrDefault();
                    if (vipCardTypeInfo != null)
                    {
                        rd.MemberInfo.VipLevelName     = vipCardTypeInfo.VipCardTypeName != null ? vipCardTypeInfo.VipCardTypeName : "";
                        rd.MemberInfo.CardTypeImageUrl = vipCardTypeInfo.PicUrl != null ? vipCardTypeInfo.PicUrl : "";
                        rd.MemberInfo.CardTypePrice    = vipCardTypeInfo.Prices != null ? vipCardTypeInfo.Prices.Value : 0;
                        rd.MemberInfo.IsExtraMoney     = vipCardTypeInfo.IsExtraMoney != null ? vipCardTypeInfo.IsExtraMoney : 0;
                        CurVipLevel             = vipCardTypeInfo.VipCardLevel;
                        rd.MemberInfo.IsPrepaid = vipCardTypeInfo.Isprepaid;
                        if (CurVipLevel > 1)
                        {
                            var VipCardTypeSysInfo = vipCardTypeBLL.GetBindVipCardTypeInfo(CurrentUserInfo.ClientID, VipLoginInfo.Phone, pRequest.UserID, CurVipLevel);
                            if (VipCardTypeSysInfo == null || VipCardTypeSysInfo.Tables[0].Rows.Count == 0)
                            {
                                rd.MemberInfo.IsNeedCard = 2;
                            }
                        }
                        else
                        {
                            rd.MemberInfo.IsNeedCard = 1;
                        }
                        //因为卡等级不能重复,知道当前等级后查找相应的下一级是否是自动升级(消费升级)
                        var NextVipCardTypeInfo = vipCardTypeBLL.QueryByEntity(new SysVipCardTypeEntity()
                        {
                            VipCardLevel = CurVipLevel + 1, CustomerID = CurrentUserInfo.ClientID
                        }, null).FirstOrDefault();
                        if (NextVipCardTypeInfo != null)
                        {
                            //获取当前会员的消费金额信息
                            decimal CurVipConsumptionAmount = 0;
                            decimal VipConsumptionInfo      = vipT_InoutBLL.GetVipSumAmount(UserID);
                            if (VipConsumptionInfo > 0)
                            {
                                CurVipConsumptionAmount = Convert.ToDecimal(Convert.ToDecimal(VipConsumptionInfo).ToString("0.00"));
                            }
                            //知道下一等级后要判断,升级条件是否是消费升级
                            //定义累积消费金额
                            decimal AccumulatedAmount      = 0;
                            var     vipCardTypeUpGradeInfo = vipCardTypeBLL.GetVipCardTypeUpGradeInfo(CurrentUserInfo.ClientID, CurVipLevel);
                            if (vipCardTypeUpGradeInfo != null && vipCardTypeUpGradeInfo.Tables[0].Rows.Count > 0)
                            {
                                //判断拉取的所有卡等级里的最近的一级满足条件即可返回提示所需的值
                                int flag = 0;
                                foreach (DataRow dr in vipCardTypeUpGradeInfo.Tables[0].Rows)
                                {
                                    AccumulatedAmount = Convert.ToDecimal(Convert.ToDecimal(dr["BuyAmount"].ToString()).ToString("0.00"));
                                    //获取消费升级还需多少钱
                                    if (AccumulatedAmount > CurVipConsumptionAmount && flag == 0)
                                    {
                                        flag = 1;
                                        rd.MemberInfo.UpGradeNeedMoney = AccumulatedAmount - CurVipConsumptionAmount;
                                        if (rd.MemberInfo.UpGradeNeedMoney > 0)
                                        {
                                            rd.MemberInfo.UpgradePrompt = "还需要消费" + rd.MemberInfo.UpGradeNeedMoney + "元可以升级啦,快点通知会员!";
                                        }
                                    }
                                }
                            }
                        }

                        var VipCardRuleInfo = vipCardRuleBLL.QueryByEntity(new VipCardRuleEntity()
                        {
                            CustomerID = CurrentUserInfo.ClientID, VipCardTypeID = vipCardTypeInfo.VipCardTypeID
                        }, null).FirstOrDefault();
                        if (VipCardRuleInfo != null)
                        {
                            rd.MemberInfo.CardDiscount = Convert.ToDecimal(Convert.ToDecimal((VipCardRuleInfo.CardDiscount / 10)).ToString("0.00"));
                        }
                    }
                }
            }
            else
            {
                //表示需要领卡,并展示等级为1的默认卡
                rd.MemberInfo.IsNeedCard = 0;
                var VipCardTypeData = vipCardTypeBLL.QueryByEntity(new SysVipCardTypeEntity()
                {
                    VipCardLevel = 1, CustomerID = CurrentUserInfo.ClientID
                }, null).FirstOrDefault();
                if (VipCardTypeData != null)
                {
                    rd.MemberInfo.CardTypeImageUrl = VipCardTypeData.PicUrl != null ? VipCardTypeData.PicUrl : "";
                }
            }
            //获取红利/// decimal[0]=总收入(红利) decimal[2]=支出余额 decimal[1]=总提现金额
            decimal[] array = vipAmountBLL.GetVipSumAmountByCondition(UserID, CurrentUserInfo.ClientID, true);
            if (array[0] != null)
            {
                rd.MemberInfo.ProfitAmount = array[0];
            }
            //是否有付费的会员卡
            List <IWhereCondition> freeCardCon = new List <IWhereCondition> {
            };
            freeCardCon.Add(new EqualsCondition()
            {
                FieldName = "CustomerID", Value = CurrentUserInfo.ClientID
            });
            freeCardCon.Add(new DirectCondition("Prices>0"));
            var freeCardTypeInfo = vipCardTypeBLL.Query(freeCardCon.ToArray(), null).FirstOrDefault();
            if (freeCardTypeInfo != null)
            {
                rd.MemberInfo.IsCostCardType = 1;
            }
            else
            {
                rd.MemberInfo.IsCostCardType = 0;
            }

            #endregion

            rd.MemberInfo.Status       = VipLoginInfo.Status.HasValue ? VipLoginInfo.Status.Value : 1;
            rd.MemberInfo.CouponsCount = couponCount;
            rd.MemberInfo.IsActivate   = (VipLoginInfo.IsActivate.HasValue && VipLoginInfo.IsActivate.Value == 1 ? true : false);
            var customerBasicSettingBll = new CustomerBasicSettingBLL(CurrentUserInfo);
            rd.MemberInfo.MemberBenefits = customerBasicSettingBll.GetMemberBenefits(pRequest.CustomerID);



            //获取标签信息
            TagsBLL TagsBLL = new TagsBLL(base.CurrentUserInfo);


            var dsIdentity = TagsBLL.GetVipTagsList("", UserID);//“车主标签”  传7
            if (dsIdentity != null && dsIdentity.Tables.Count > 0 && dsIdentity.Tables[0].Rows.Count > 0)
            {
                rd.IdentityTagsList = DataTableToObject.ConvertToList <TagsInfo>(dsIdentity.Tables[0]).ToArray(); //“年龄段”  传8
            }


            #region 获取注册表单的列明和值

            var vipEntity = vipLoginBLL.QueryByEntity(new VipEntity()
            {
                VIPID = UserID
            }, null);

            if (vipEntity == null || vipEntity.Length == 0)
            {
                return(rd);
            }
            else
            {
                var ds = vipLoginBLL.GetVipColumnInfo(CurrentUserInfo.ClientID, "online005");

                var vipDs = vipLoginBLL.GetVipInfo(UserID);

                if (ds.Tables[0].Rows.Count > 0)
                {
                    var temp = ds.Tables[0].AsEnumerable().Select(t => new MemberControlInfo()
                    {
                        ColumnName  = t["ColumnName"].ToString(),
                        ControlType = Convert.ToInt32(t["ControlType"]),
                        ColumnValue = vipDs.Tables[0].Rows[0][t["ColumnName"].ToString()].ToString(),
                        ColumnDesc  = t["columnDesc"].ToString()
                    });

                    rd.MemberControlList = temp.ToArray();
                }
            }

            //var vipamountBll = new VipAmountBLL(this.CurrentUserInfo);

            //var vipAmountEntity = vipamountBll.GetByID(UserID);


            var unitBll = new UnitBLL(this.CurrentUserInfo);
            //Hashtable htPara = new Hashtable();
            //htPara["MemberID"] = UserID;
            //htPara["CustomerID"] = CurrentUserInfo.ClientID;
            //htPara["PageIndex"] = 1;
            //htPara["PageSize"] = 10;
            //DataSet dsMyAccount = unitBll.GetMyAccount(htPara);

            //if (dsMyAccount.Tables[0].Rows.Count > 0)
            //{
            //    //rd.AccountList = DataTableToObject.ConvertToList<AccountInfo>(dsMyAccount.Tables[0]);
            //    //rd.MemberInfo.Balance = Convert.ToDecimal(dsMyAccount.Tables[0].Rows[0]["Total"].ToString());
            //    //rd.TotalPageCount = int.Parse(dsMyAccount.Tables[0].Rows[0]["PageCount"].ToString());

            //}
            //else
            //    rd.MemberInfo.Balance = 0;

            //返现 add by Henry 2015-4-15
            var vipAmountBll = new VipAmountBLL(CurrentUserInfo);
            //var vipAmountInfo = vipAmountBll.GetByID(UserID);
            var vipAmountInfo = vipAmountBll.QueryByEntity(new VipAmountEntity()
            {
                VipId = UserID, VipCardCode = VipLoginInfo.VipCode
            }, null).FirstOrDefault();
            decimal returnAmount = 0;
            decimal amount       = 0;
            if (vipAmountInfo != null)
            {
                returnAmount = vipAmountInfo.ValidReturnAmount == null ? 0 : vipAmountInfo.ValidReturnAmount.Value;
                amount       = vipAmountInfo.EndAmount == null ? 0 : vipAmountInfo.EndAmount.Value;
            }
            rd.MemberInfo.ReturnAmount = returnAmount; //返现
            rd.MemberInfo.Balance      = amount;       //余额
            #endregion


            //获取订单的日期和订单的里的商品名称、商品单价、商品数量
            //先获取订单列表,再获取订单详细信息
            int?         pageSize     = 3; //rp.Parameters.PageSize;,只取三条记录
            int?         pageIndex    = 1; //rp.Parameters.PageIndex;
            string       OrderBy      = "";
            string       OrderType    = "";
            T_InoutBLL   T_InoutBLL   = new T_InoutBLL(CurrentUserInfo);
            InoutService InoutService = new InoutService(CurrentUserInfo);
            //只取状态为700的
            //根据订单列表取订单详情
            DataSet dsOrder = T_InoutBLL.GetOrdersByVipID(rd.MemberInfo.VipID, pageIndex ?? 1, pageSize ?? 15, OrderBy, OrderType);//获取会员信息
            if (dsOrder != null && dsOrder.Tables.Count != 0 && dsOrder.Tables[0].Rows.Count != 0)
            {
                List <JIT.CPOS.DTO.Module.VIP.Login.Response.OrderInfo> orderList = DataTableToObject.ConvertToList <JIT.CPOS.DTO.Module.VIP.Login.Response.OrderInfo>(dsOrder.Tables[1]);
                foreach (JIT.CPOS.DTO.Module.VIP.Login.Response.OrderInfo oi in orderList)
                {
                    IList <InoutDetailInfo> detailList = InoutService.GetInoutDetailInfoByOrderId(oi.order_id);
                    oi.DetailList = detailList;
                }
                rd.OrderList = orderList;
            }

            MessageInfo message = new MessageInfo();


            InnerGroupNewsBLL InnerGroupNewsService = new InnerGroupNewsBLL(CurrentUserInfo);
            SetoffToolsBLL    setofftoolsService    = new SetoffToolsBLL(CurrentUserInfo);

            //1=微信用户 2=APP员工
            int UnReadInnerMessageCount = InnerGroupNewsService.GetVipInnerGroupNewsUnReadCount(CurrentUserInfo.UserID, pRequest.CustomerID, 1, null, Convert.ToDateTime(VipLoginInfo.CreateTime));
            var setofftoolsMessageCount = setofftoolsService.GetUnReadSetoffToolsCount(CurrentUserInfo.UserID, pRequest.CustomerID, 1, 1);
            message.InnerGroupNewsCount = UnReadInnerMessageCount;
            message.SetoffToolsCount    = setofftoolsMessageCount;
            var VipUpNewsInfo = InnerGroupNewsService.GetVipInnerNewsInfo(CurrentUserInfo.ClientID, 2, 1, 3, 0);
            if (VipUpNewsInfo != null && VipUpNewsInfo.Tables[0].Rows.Count > 0)
            {
                message.UpGradeSucess = VipUpNewsInfo.Tables[0].Rows[0]["Text"] != null ? VipUpNewsInfo.Tables[0].Rows[0]["Text"].ToString() : "";
                //获取通知信息 并更新已读状态 数据如果不是一条进行更新所有数据
                var newsUserMappingBLL = new NewsUserMappingBLL(CurrentUserInfo);
                if (VipUpNewsInfo.Tables[0].Rows.Count > 1)//数据如果不是一条进行更新所有数据
                {
                    foreach (DataRow VipNewsdr in VipUpNewsInfo.Tables[0].Rows)
                    {
                        var vipNewsInfo = newsUserMappingBLL.QueryByEntity(new NewsUserMappingEntity()
                        {
                            CustomerId = CurrentUserInfo.ClientID, MappingID = VipNewsdr["MappingID"].ToString()
                        }, null).FirstOrDefault();
                        if (vipNewsInfo != null)
                        {
                            vipNewsInfo.HasRead = 1;
                            newsUserMappingBLL.Update(vipNewsInfo);
                        }
                    }
                }
                else
                {
                    var vipNewsInfo = newsUserMappingBLL.QueryByEntity(new NewsUserMappingEntity()
                    {
                        CustomerId = CurrentUserInfo.ClientID, MappingID = VipUpNewsInfo.Tables[0].Rows[0]["MappingID"].ToString()
                    }, null).FirstOrDefault();
                    if (vipNewsInfo != null)
                    {
                        vipNewsInfo.HasRead = 1;
                        newsUserMappingBLL.Update(vipNewsInfo);
                    }
                }
            }
            else
            {
                message.UpGradeSucess = "";
            }
            rd.MessageInfo = message;
            return(rd);
        }
    }
Exemple #8
0
        protected override GetOverViewRD ProcessRequest(DTO.Base.APIRequest <EmptyRequestParameter> pRequest)

        {
            var rd = new GetOverViewRD();
            var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo;
            //超级分销体系配置表 为判断是否存在分销体系使用
            var T_SuperRetailTraderConfigbll = new T_SuperRetailTraderConfigBLL(loggingSessionInfo);
            var R_SRT_Homebll = new R_SRT_HomeBLL(loggingSessionInfo);
            //获取分销体系信息
            var T_SuperRetailTraderConfigInfo = T_SuperRetailTraderConfigbll.QueryByEntity(new T_SuperRetailTraderConfigEntity()
            {
                IsDelete = 0, CustomerId = loggingSessionInfo.CurrentUser.customer_id
            }, null).FirstOrDefault();

            if (T_SuperRetailTraderConfigInfo != null)
            {
                rd.IsDataNull = 1;
            }
            else
            {
                rd.IsDataNull = 0; return(rd);
            }
            //获取七天最新店员、会员相关数据
            var SevenDaysInfo = R_SRT_Homebll.GetSevenDaySalesAndPersonCount();

            if (SevenDaysInfo != null && SevenDaysInfo.Tables[0].Rows.Count > 0)
            {
                rd.DaySevenRTSalesList = DataTableToObject.ConvertToList <Day7RTSalesInfo>(SevenDaysInfo.Tables[0]);
                rd.DaySevenRTCountList = DataTableToObject.ConvertToList <Day7RTCountInfo>(SevenDaysInfo.Tables[0]);
            }
            //按统计日获取最新一条概览信息
            var R_SRT_HomeInfo = R_SRT_Homebll.QueryByEntity(new R_SRT_HomeEntity()
            {
                CustomerId = loggingSessionInfo.CurrentUser.customer_id
            }, new OrderBy[] { new OrderBy()
                               {
                                   FieldName = "CreateTime", Direction = OrderByDirections.Desc
                               } }).FirstOrDefault();

            if (R_SRT_HomeInfo != null)
            {
                //总销量、近七天新增销售额
                var RTTotalSalesInfo = new RTSalesInfo();
                RTTotalSalesInfo.RTTotalSalesAmount   = R_SRT_HomeInfo.RTTotalSalesAmount;
                RTTotalSalesInfo.RTDay7AddSalesAmount = R_SRT_HomeInfo.RTDay7SalesAmount;
                rd.RTTotalSales = RTTotalSalesInfo;
                //分销商总数、近七天新增分销商总数
                var RTTotalCountInfo = new RTCountInfo();
                RTTotalCountInfo.RTTotalCount   = R_SRT_HomeInfo.RTTotalCount;
                RTTotalCountInfo.Day7AddRTCount = R_SRT_HomeInfo.Day7AddRTCount;
                rd.RTTotalCount = RTTotalCountInfo;
                //近7日分销商订单信息
                var DaySevenRTOrderInfo = new DaysRTOrderInfo();
                DaySevenRTOrderInfo.DaysRTOrderCount     = R_SRT_HomeInfo.Day7RTOrderCount;
                DaySevenRTOrderInfo.DaysRTOrderCountRate = R_SRT_HomeInfo.Day7RTOrderCountW2W;
                DaySevenRTOrderInfo.DaysTRTAvgAmount     = R_SRT_HomeInfo.Day7RTAC;
                DaySevenRTOrderInfo.DaysTRTAvgAmountRate = R_SRT_HomeInfo.Day7RTACW2W;
                rd.DaySevenRTOrder = DaySevenRTOrderInfo;
                //近30日分销商订单信息
                var DayThirtyRTOrderInfo = new DaysRTOrderInfo();
                DayThirtyRTOrderInfo.DaysRTOrderCount     = R_SRT_HomeInfo.Day30RTOrderCount;
                DayThirtyRTOrderInfo.DaysRTOrderCountRate = R_SRT_HomeInfo.Day30RTOrderCountM2M;
                DayThirtyRTOrderInfo.DaysTRTAvgAmount     = R_SRT_HomeInfo.Day30RTAC;
                DayThirtyRTOrderInfo.DaysTRTAvgAmountRate = R_SRT_HomeInfo.Day30RTACM2M;
                rd.DayThirtyRTOrder = DayThirtyRTOrderInfo;
                //近7日活跃分销商
                var DaySevenActivityRTInfo = new DaysActivityRTInfo();
                DaySevenActivityRTInfo.DaysActiveRTCount    = R_SRT_HomeInfo.Day7ActiveRTCount;
                DaySevenActivityRTInfo.DaysRTOrderCountRate = R_SRT_HomeInfo.Day7ActiveRTCountW2W;
                rd.DaySevenActivityRT = DaySevenActivityRTInfo;
                //近30日活跃分销商信息
                var DayThirtyActivityRTInfo = new DaysActivityRTInfo();
                DayThirtyActivityRTInfo.DaysActiveRTCount    = R_SRT_HomeInfo.Day30ActiveRTCount;
                DayThirtyActivityRTInfo.DaysRTOrderCountRate = R_SRT_HomeInfo.Day30ActiveRTCountM2M;
                rd.DayThirtyActivityRT = DayThirtyActivityRTInfo;
                //近7日分享数据信息
                var DaySevenRTShareInfo = new DaysRTShareInfo();
                DaySevenRTShareInfo.DaysRTShareCount     = R_SRT_HomeInfo.Day7RTShareCount;
                DaySevenRTShareInfo.DaysRTShareCountRate = R_SRT_HomeInfo.Day7RTShareCountW2W;
                DaySevenRTShareInfo.DaysAddRTCount       = R_SRT_HomeInfo.Day7AddRTCount;
                DaySevenRTShareInfo.DaysAddRTCountRate   = R_SRT_HomeInfo.Day7AddRTCountW2W;
                rd.DaySevenRTShare = DaySevenRTShareInfo;
                //近30日分享数据信息
                var DayThirtyRTShareInfo = new DaysRTShareInfo();
                DayThirtyRTShareInfo.DaysRTShareCount     = R_SRT_HomeInfo.Day30RTShareCount;
                DayThirtyRTShareInfo.DaysRTShareCountRate = R_SRT_HomeInfo.Day30RTShareCountM2M;
                DayThirtyRTShareInfo.DaysAddRTCount       = R_SRT_HomeInfo.Day30AddRTCount;
                DayThirtyRTShareInfo.DaysAddRTCountRate   = R_SRT_HomeInfo.Day30AddRTCountM2M;
                rd.DayThirtyRTShare = DayThirtyRTShareInfo;
                rd.IsRTSalesOrder   = 1;
            }
            else
            {
                rd.IsRTSalesOrder = 0;
            }
            return(rd);
        }
Exemple #9
0
        protected override SetTSuperRetailTraderConfigRD ProcessRequest(DTO.Base.APIRequest <SetTSuperRetailTraderConfigRP> pRequest)
        {
            var parameter          = pRequest.Parameters;
            var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; //登录状态信息
            var rd = new SetTSuperRetailTraderConfigRD();
            T_SuperRetailTraderConfigBLL bll = new T_SuperRetailTraderConfigBLL(loggingSessionInfo);

            #region 修改协议
            if (parameter.IsFlag == true)
            {
                var oldmodel = bll.GetByID(parameter.Id);
                oldmodel.Agreement     = parameter.Agreement;
                oldmodel.AgreementName = parameter.AgreementName;
                bll.Update(oldmodel);
                rd = GetRd(oldmodel);
                return(rd);
            }
            #endregion

            #region 修改可分配利润
            if (String.IsNullOrEmpty(parameter.Id)) //头一次添加规则信息
            {
                T_SuperRetailTraderConfigEntity _model = GetModel(loggingSessionInfo.ClientID, parameter);
                _model.Id = Guid.NewGuid();
                //改动了数据 要重新插入信息
                bll.UpdateByCondition(loggingSessionInfo.ClientID); //修改以前信息为失效状态
                bll.Create(_model);
                rd = GetRd(_model);

                //修改 佣金分润信息
                T_SuperRetailTraderProfitConfigBLL SuperRetailTraderProfitConfigService = new T_SuperRetailTraderProfitConfigBLL(loggingSessionInfo);
                SuperRetailTraderProfitConfigService.UpdateByCustomerId(loggingSessionInfo.ClientID);
            }
            else   //有可能是修改有可能是添加
            {
                //判断总和是否超过了100%
                var currentmodel = bll.GetByID(parameter.Id);
                if (currentmodel == null)
                {
                    throw new APIException("系统繁忙,请稍后重试!");
                }

                if (!(currentmodel.Cost == parameter.Cost && currentmodel.CustomerProfit == parameter.CustomerProfit && currentmodel.DistributionProfit == parameter.DistributionProfit && currentmodel.SkuCommission == parameter.SkuCommission))
                {
                    //改动了数据 要重新插入信息
                    bll.UpdateByCondition(loggingSessionInfo.ClientID); //修改以前信息为失效状态
                    T_SuperRetailTraderConfigEntity _model = GetModel(loggingSessionInfo.ClientID, parameter);
                    _model.Id            = Guid.NewGuid();
                    _model.AgreementName = currentmodel.AgreementName;
                    _model.Agreement     = currentmodel.Agreement;
                    _model.RefId         = currentmodel.Id; //相关编号
                    bll.Create(_model);
                    rd = GetRd(_model);
                }
                else
                {
                    rd = GetRd(currentmodel);
                }
            }
            #endregion

            #region 默认设置分润体系 1:2:1 的体系
            //将该商户下面所有的分润设置设为失效状态
            T_SuperRetailTraderProfitConfigBLL superretailtraderprofitconfigService = new T_SuperRetailTraderProfitConfigBLL(loggingSessionInfo);
            superretailtraderprofitconfigService.UpdateByCustomerId(loggingSessionInfo.ClientID);
            int[]   precent            = new int[] { 1, 2, 1 };
            int     level              = 2;
            double  DistributionProfit = (Convert.ToDouble(parameter.DistributionProfit) / 4.0);
            decimal specialProfit      = 0.0m;
            foreach (var item in precent)
            {
                decimal Profit = Math.Round(Convert.ToDecimal(DistributionProfit * item), 1);

                if (level == 4)
                {
                    Profit = Convert.ToDecimal(parameter.DistributionProfit - specialProfit);
                }
                else
                {
                    specialProfit += Profit;
                }
                superretailtraderprofitconfigService.Create(new T_SuperRetailTraderProfitConfigEntity()
                {
                    CustomerId = loggingSessionInfo.ClientID,
                    Level      = level,
                    Profit     = Profit, //小数点有问题
                    IsDelete   = 0,
                    Status     = "10",
                    ProfitType = "Percent",
                    RefSuperRetailTraderProfitConfigId = null,
                    SuperRetailTraderProfitConfigId    = Guid.NewGuid()
                });

                if (level == 2)
                {
                    superretailtraderprofitconfigService.Create(new T_SuperRetailTraderProfitConfigEntity()
                    {
                        CustomerId = loggingSessionInfo.ClientID,
                        Level      = 1,
                        Profit     = parameter.SkuCommission,
                        IsDelete   = 0,
                        Status     = "10",
                        ProfitType = "Percent",
                        RefSuperRetailTraderProfitConfigId = null,
                        SuperRetailTraderProfitConfigId    = Guid.NewGuid()
                    });
                }
                level = level + 1;
            }
            #endregion
            return(rd);
        }
        /// <summary>
        /// 计算超级分销商佣金,分润用到的批处理
        /// </summary>
        public void CalculateSuperRetailTraderOrderJob()
        {
            var numCount = 50;

            var customerIDs = CustomerBLL.Instance.GetCustomerList();

            foreach (var customer in customerIDs)
            {
                string connString = customer.Value;
                var    count      = RedisOpenAPI.Instance.CCSuperRetailTraderOrder().GetSuperRetailTraderOrderLength(new CC_Order
                {
                    CustomerID = customer.Key
                });
                if (count.Code != ResponseCode.Success)
                {
                    BaseService.WriteLog("从redis获取待绑定优惠券数量失败");
                    continue;
                }
                if (count.Result <= 0)
                {
                    continue;
                }
                if (count.Result < numCount)
                {
                    numCount = Convert.ToInt32(count.Result);
                }

                DataTable dtProfitDetail = CreateTableProfitDetail();
                DataTable dtAmountDetail = CreateTableAmountDetail();
                DataTable dtAmount       = CreateTableAmount();

                for (var i = 0; i < numCount; i++)
                {
                    var response = RedisOpenAPI.Instance.CCSuperRetailTraderOrder().GetSuperRetailTraderOrder(new CC_Order
                    {
                        CustomerID = customer.Key
                    });
                    if (response.Code == ResponseCode.Success)
                    {
                        var orderInfo = response.Result.OrderInfo.JsonDeserialize <T_InoutEntity>();
                        //var loggingSessionInfo = response.Result.LogSession.JsonDeserialize<LoggingSessionInfo>();
                        var        loggingSessionInfo = CustomerBLL.Instance.GetBSLoggingSession(customer.Key, "1");
                        T_InoutBLL inoutBLL           = new T_InoutBLL(loggingSessionInfo);
                        //inoutBLL.CalculateSuperRetailTraderOrder(loggingSessionInfo, orderInfo);
                        if (orderInfo != null)
                        {
                            if (orderInfo.data_from_id == "35" || orderInfo.data_from_id == "36")
                            {
                                T_SuperRetailTraderBLL bllSuperRetailTrader = new T_SuperRetailTraderBLL(loggingSessionInfo);
                                DataSet dsAllFather = bllSuperRetailTrader.GetAllFather(orderInfo.sales_user);
                                if (dsAllFather != null && dsAllFather.Tables.Count > 0 && dsAllFather.Tables[0].Rows.Count > 0)
                                {
                                    T_SuperRetailTraderProfitConfigBLL bllSuperRetailTraderProfitConfig = new T_SuperRetailTraderProfitConfigBLL(loggingSessionInfo);
                                    T_SuperRetailTraderConfigBLL       bllSuperRetailTraderConfig       = new T_SuperRetailTraderConfigBLL(loggingSessionInfo);
                                    T_SuperRetailTraderProfitDetailBLL bllSuperRetailTraderProfitDetail = new T_SuperRetailTraderProfitDetailBLL(loggingSessionInfo);

                                    VipAmountBLL       bllVipAmount       = new VipAmountBLL(loggingSessionInfo);
                                    VipAmountDetailBLL bllVipAmountDetail = new VipAmountDetailBLL(loggingSessionInfo);

                                    var entitySuperRetailTraderProfitConfig = bllSuperRetailTraderProfitConfig.QueryByEntity(new T_SuperRetailTraderProfitConfigEntity()
                                    {
                                        CustomerId = loggingSessionInfo.ClientID, IsDelete = 0, Status = "10"
                                    }, null);
                                    var entityConfig = bllSuperRetailTraderConfig.QueryByEntity(new T_SuperRetailTraderConfigEntity()
                                    {
                                        CustomerId = loggingSessionInfo.ClientID, IsDelete = 0
                                    }, null).SingleOrDefault();
                                    if (entityConfig != null && entitySuperRetailTraderProfitConfig != null)
                                    {
                                        //佣金比列
                                        decimal SkuCommission = Convert.ToDecimal(entityConfig.SkuCommission) * Convert.ToDecimal(0.01);
                                        //商品分润比列
                                        decimal DistributionProfit = Convert.ToDecimal(entityConfig.DistributionProfit) * Convert.ToDecimal(0.01);


                                        foreach (DataRow dr in dsAllFather.Tables[0].Rows)
                                        {
                                            decimal amount            = 0;
                                            string  strAmountSourceId = string.Empty;
                                            T_SuperRetailTraderProfitConfigEntity singlProfitConfig = new T_SuperRetailTraderProfitConfigEntity();
                                            if (dr["level"].ToString() == "1")      //佣金
                                            {
                                                strAmountSourceId = "34";
                                                singlProfitConfig = entitySuperRetailTraderProfitConfig.Where(a => a.Level == Convert.ToInt16(dr["level"].ToString())).SingleOrDefault();
                                                if (singlProfitConfig != null)
                                                {
                                                    if (singlProfitConfig.ProfitType == "Percent")
                                                    {
                                                        amount = Convert.ToDecimal(orderInfo.actual_amount) * SkuCommission;
                                                    }
                                                }
                                            }
                                            else      //分润
                                            {
                                                strAmountSourceId = "33";
                                                singlProfitConfig = entitySuperRetailTraderProfitConfig.Where(a => a.Level == Convert.ToInt16(dr["level"].ToString())).SingleOrDefault();
                                                if (singlProfitConfig != null)
                                                {
                                                    if (singlProfitConfig.ProfitType == "Percent")
                                                    {
                                                        //amount = Convert.ToDecimal(orderInfo.actual_amount) * DistributionProfit * Convert.ToDecimal(singlProfitConfig.Profit) * Convert.ToDecimal(0.01);
                                                        amount = Convert.ToDecimal(orderInfo.actual_amount) * Convert.ToDecimal(singlProfitConfig.Profit) * Convert.ToDecimal(0.01);
                                                    }
                                                }
                                            }
                                            var vipAmountDetail = bllVipAmountDetail.QueryByEntity(new VipAmountDetailEntity()
                                            {
                                                ObjectId = orderInfo.order_id, AmountSourceId = strAmountSourceId
                                            }, null);
                                            if (vipAmountDetail != null && vipAmountDetail.Length > 0)
                                            {
                                                continue;
                                            }
                                            if (amount > 0)
                                            {
                                                IDbTransaction tran = new JIT.CPOS.BS.DataAccess.Base.TransactionHelper(loggingSessionInfo).CreateTransaction();
                                                try
                                                {
                                                    T_SuperRetailTraderProfitDetailEntity entitySuperRetailTraderProfitDetail = new T_SuperRetailTraderProfitDetailEntity()
                                                    {
                                                        SuperRetailTraderProfitConfigId = singlProfitConfig.SuperRetailTraderProfitConfigId,
                                                        SuperRetailTraderID             = new Guid(dr["SuperRetailTraderID"].ToString()),
                                                        Level             = Convert.ToInt16(dr["level"].ToString()),
                                                        ProfitType        = "Cash",
                                                        Profit            = amount,
                                                        OrderType         = "Order",
                                                        OrderId           = orderInfo.order_id,
                                                        OrderDate         = Convert.ToDateTime(orderInfo.order_date),
                                                        VipId             = orderInfo.vip_no,
                                                        OrderActualAmount = orderInfo.actual_amount,
                                                        SalesId           = new Guid(orderInfo.sales_user),
                                                        OrderNo           = orderInfo.order_no,
                                                        CustomerId        = loggingSessionInfo.ClientID
                                                    };
                                                    bllSuperRetailTraderProfitDetail.Create(entitySuperRetailTraderProfitDetail, (SqlTransaction)tran);

                                                    VipAmountEntity       entityVipAmount       = new VipAmountEntity();
                                                    VipAmountDetailEntity entityVipAmountDetail = new VipAmountDetailEntity();
                                                    entityVipAmountDetail = new VipAmountDetailEntity {
                                                        VipAmountDetailId = Guid.NewGuid(),
                                                        VipId             = dr["SuperRetailTraderID"].ToString(),
                                                        Amount            = amount,
                                                        UsedReturnAmount  = 0,
                                                        EffectiveDate     = DateTime.Now,
                                                        DeadlineDate      = Convert.ToDateTime("9999-12-31 23:59:59"),
                                                        AmountSourceId    = strAmountSourceId,
                                                        ObjectId          = orderInfo.order_id,
                                                        CustomerID        = loggingSessionInfo.ClientID,
                                                        Reason            = "超级分销商",
                                                        IsWithdrawCash    = 0
                                                    };
                                                    bllVipAmountDetail.Create(entityVipAmountDetail, (SqlTransaction)tran);
                                                    //DataRow dr_ProfitDetail = dtProfitDetail.NewRow();
                                                    //dr_ProfitDetail["Id"] = Guid.NewGuid();
                                                    //dr_ProfitDetail["SuperRetailTraderProfitConfigId"] = new Guid(singlProfitConfig.SuperRetailTraderProfitConfigId.ToString());
                                                    //dr_ProfitDetail["SuperRetailTraderID"] = new Guid(dr["SuperRetailTraderID"].ToString());
                                                    //dr_ProfitDetail["Level"] = Convert.ToInt16(dr["level"].ToString());
                                                    //dr_ProfitDetail["ProfitType"] = "Cash";
                                                    //dr_ProfitDetail["Profit"] = amount;
                                                    //dr_ProfitDetail["OrderType"] = "Order";
                                                    //dr_ProfitDetail["OrderId"] = orderInfo.order_id;
                                                    //dr_ProfitDetail["OrderNo"] = orderInfo.order_no;
                                                    //dr_ProfitDetail["OrderDate"] = Convert.ToDateTime(orderInfo.order_date);
                                                    //dr_ProfitDetail["OrderActualAmount"] = orderInfo.actual_amount;
                                                    //dr_ProfitDetail["SalesId"] = new Guid(orderInfo.sales_user);
                                                    //dr_ProfitDetail["VipId"] = orderInfo.vip_no;
                                                    //dr_ProfitDetail["CreateBy"] = loggingSessionInfo.ClientID;
                                                    //dr_ProfitDetail["CreateTime"] = DateTime.Now;
                                                    //dr_ProfitDetail["LastUpdateBy"] = loggingSessionInfo.ClientID;
                                                    //dr_ProfitDetail["LastUpdateTime"] = DateTime.Now;
                                                    //dr_ProfitDetail["CustomerId"] = loggingSessionInfo.ClientID;
                                                    //dr_ProfitDetail["IsDelete"] = 0;

                                                    //dtProfitDetail.Rows.Add(dr_ProfitDetail);

                                                    //DataRow dr_AmountDetail = dtAmountDetail.NewRow();
                                                    //dr_AmountDetail["VipAmountDetailId"] = Guid.NewGuid();
                                                    //dr_AmountDetail["VipId"] = dr["SuperRetailTraderID"].ToString();
                                                    //dr_AmountDetail["VipCardCode"] = "";
                                                    //dr_AmountDetail["UnitID"] = "";
                                                    //dr_AmountDetail["UnitName"] = "";
                                                    //dr_AmountDetail["SalesAmount"] = 0;
                                                    //dr_AmountDetail["Amount"] = amount;
                                                    //dr_AmountDetail["UsedReturnAmount"] = 0;
                                                    //dr_AmountDetail["Reason"] = "超级分销商";
                                                    //dr_AmountDetail["EffectiveDate"] = DateTime.Now;
                                                    //dr_AmountDetail["DeadlineDate"] = Convert.ToDateTime("9999-12-31 23:59:59");
                                                    //dr_AmountDetail["AmountSourceId"] = strAmountSourceId;
                                                    //dr_AmountDetail["ObjectId"] = orderInfo.order_id;
                                                    //dr_AmountDetail["Remark"] = "超级分销商";
                                                    //dr_AmountDetail["IsValid"] = 0;
                                                    //dr_AmountDetail["IsWithdrawCash"] = 0;
                                                    //dr_AmountDetail["CustomerID"] = loggingSessionInfo.ClientID;
                                                    //dr_AmountDetail["CreateTime"] = DateTime.Now;
                                                    //dr_AmountDetail["CreateBy"] = loggingSessionInfo.ClientID;
                                                    //dr_AmountDetail["LastUpdateBy"] = loggingSessionInfo.ClientID;
                                                    //dr_AmountDetail["LastUpdateTime"] = DateTime.Now;
                                                    //dr_AmountDetail["IsDelete"] = 0;
                                                    ////dr_AmountDetail["IsCalculated"] = 1;

                                                    //dtAmountDetail.Rows.Add(dr_AmountDetail);

                                                    entityVipAmount = bllVipAmount.QueryByEntity(new VipAmountEntity()
                                                    {
                                                        VipId = dr["SuperRetailTraderID"].ToString(), IsDelete = 0
                                                    }, null).SingleOrDefault();
                                                    if (entityVipAmount == null)
                                                    {
                                                        entityVipAmount = new VipAmountEntity {
                                                            VipId                  = dr["SuperRetailTraderID"].ToString(),
                                                            BeginAmount            = 0,
                                                            InAmount               = amount,
                                                            OutAmount              = 0,
                                                            EndAmount              = amount,
                                                            TotalAmount            = amount,
                                                            BeginReturnAmount      = 0,
                                                            InReturnAmount         = 0,
                                                            OutReturnAmount        = 0,
                                                            ReturnAmount           = 0,
                                                            ImminentInvalidRAmount = 0,
                                                            InvalidReturnAmount    = 0,
                                                            ValidReturnAmount      = 0,
                                                            TotalReturnAmount      = 0,
                                                            IsLocking              = 0,
                                                            CustomerID             = loggingSessionInfo.ClientID,
                                                            VipCardCode            = ""
                                                        };
                                                        bllVipAmount.Create(entityVipAmount, tran);
                                                        //DataRow dr_Amount = dtAmount.NewRow();
                                                        //dr_Amount["VipId"] = dr["SuperRetailTraderID"].ToString();
                                                        //dr_Amount["VipCardCode"] = "";
                                                        //dr_Amount["BeginAmount"] = 0;
                                                        //dr_Amount["InAmount"] = amount;
                                                        //dr_Amount["OutAmount"] = 0;
                                                        //dr_Amount["EndAmount"] = amount;
                                                        //dr_Amount["TotalAmount"] = amount;
                                                        //dr_Amount["BeginReturnAmount"] = 0;
                                                        //dr_Amount["InReturnAmount"] = 0;
                                                        //dr_Amount["OutReturnAmount"] = 0;
                                                        //dr_Amount["ReturnAmount"] = 0;
                                                        //dr_Amount["ImminentInvalidRAmount"] = 0;
                                                        //dr_Amount["InvalidReturnAmount"] = 0;
                                                        //dr_Amount["ValidReturnAmount"] = 0;
                                                        //dr_Amount["TotalReturnAmount"] = 0;
                                                        //dr_Amount["PayPassword"] = "";
                                                        //dr_Amount["IsLocking"] = 0;
                                                        //dr_Amount["CustomerID"] = loggingSessionInfo.ClientID;
                                                        //dr_Amount["CreateTime"] = DateTime.Now;
                                                        //dr_Amount["CreateBy"] = loggingSessionInfo.ClientID;
                                                        //dr_Amount["LastUpdateBy"] =loggingSessionInfo.ClientID;
                                                        //dr_Amount["LastUpdateTime"] = DateTime.Now;
                                                        //dr_Amount["IsDelete"] = 0;
                                                        //dtAmount.Rows.Add(dr_Amount);
                                                    }
                                                    else
                                                    {
                                                        entityVipAmount.InReturnAmount    = (entityVipAmount.InReturnAmount == null ? 0 : entityVipAmount.InReturnAmount.Value) + amount;
                                                        entityVipAmount.TotalReturnAmount = (entityVipAmount.TotalReturnAmount == null ? 0 : entityVipAmount.TotalReturnAmount.Value) + amount;

                                                        entityVipAmount.ValidReturnAmount = (entityVipAmount.ValidReturnAmount == null ? 0 : entityVipAmount.ValidReturnAmount.Value) + amount;
                                                        entityVipAmount.ReturnAmount      = (entityVipAmount.ReturnAmount == null ? 0 : entityVipAmount.ReturnAmount.Value) + amount;

                                                        bllVipAmount.Update(entityVipAmount);
                                                    }
                                                    tran.Commit();
                                                }
                                                catch (Exception)
                                                {
                                                    tran.Rollback();
                                                    throw;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                //if (dtAmount.Rows.Count > 0)
                //{
                //    Utils.SqlBulkCopy(connString, dtAmount, "VipAmount");
                //}
                //if (dtAmountDetail.Rows.Count>0 && dtProfitDetail.Rows.Count>0)
                //{
                //    Utils.SqlBulkCopy(connString, dtProfitDetail, "T_SuperRetailTraderProfitDetail");
                //    Utils.SqlBulkCopy(connString, dtAmountDetail, "VipAmountDetail");

                //}
            }
        }
Exemple #11
0
        protected override SetuperRetailTraderProfitConfigRD ProcessRequest(DTO.Base.APIRequest <SetuperRetailTraderProfitConfigRP> pRequest)
        {
            var parameter          = pRequest.Parameters;
            var loggingSessionInfo = new SessionManager().CurrentUserLoginInfo; //登录状态信息

            if (loggingSessionInfo == null)
            {
                throw new APIException("登录超时,请重试")
                      {
                          ErrorCode = 135
                      };
            }
            var rd = new SetuperRetailTraderProfitConfigRD();
            T_SuperRetailTraderProfitConfigBLL bll = new T_SuperRetailTraderProfitConfigBLL(loggingSessionInfo);
            int level   = 0;
            var _models = parameter.ProfitConfigList.OrderBy(m => m.Level);

            #region  务端验证 将未分配完的利润合并到商家利润里面去

            T_SuperRetailTraderConfigBLL SuperRetailTraderConfigService = new T_SuperRetailTraderConfigBLL(loggingSessionInfo);
            List <EqualsCondition>       lstWhereCondition = new List <EqualsCondition>()
            {
                new EqualsCondition()
                {
                    FieldName = "CustomerId", Value = loggingSessionInfo.ClientID
                },
                new EqualsCondition()
                {
                    FieldName = "IsDelete", Value = 0
                },
            };

            List <OrderBy> orderCondition = new List <OrderBy>()
            {
                new OrderBy()
                {
                    FieldName = "CreateTime", Direction = OrderByDirections.Desc
                }
            };
            var model = SuperRetailTraderConfigService.Query(lstWhereCondition.ToArray(), orderCondition.ToArray());

            if (model == null || model.Length == 0)
            {
                throw new APIException("请先设置商家佣金信息")
                      {
                          ErrorCode = 135
                      };
            }

            decimal?ProfitMoney = parameter.ProfitConfigList.Where(m => m.Level != 1 && m.Status == "10").Sum(m => m.Profit); //分销体系百分比

            if (ProfitMoney > model[0].DistributionProfit)                                                                    //设置分润比例大于商家比例
            {
                throw new APIException("分润体系不能大于佣金体系,请重新设置")
                      {
                          ErrorCode = 135
                      };
            }

            if (ProfitMoney != model[0].DistributionProfit)  //新入一条规则信息 如果设置比例不等于商家比例
            {
                SuperRetailTraderConfigService.UpdateByCondition(loggingSessionInfo.ClientID);
                decimal?undistributedprofit            = model[0].DistributionProfit - ProfitMoney;
                T_SuperRetailTraderConfigEntity entity = new T_SuperRetailTraderConfigEntity()
                {
                    AgreementName      = model[0].AgreementName,
                    Agreement          = model[0].Agreement,
                    Cost               = model[0].Cost,
                    DistributionProfit = model[0].DistributionProfit - undistributedprofit,
                    CustomerProfit     = model[0].CustomerProfit + undistributedprofit,
                    IsDelete           = 0,
                    CustomerId         = loggingSessionInfo.ClientID,
                    Id            = Guid.NewGuid(),
                    RefId         = model[0].Id,
                    SkuCommission = model[0].SkuCommission
                };
                SuperRetailTraderConfigService.Create(entity);
            }
            #endregion
            bll.UpdateByCustomerId(loggingSessionInfo.ClientID);

            foreach (var item in _models)
            {
                Guid id = Guid.NewGuid();

                if (item.Status.Trim() == "10")
                {
                    level = level + 1;    //如果是启用状态那么 level就自增
                }
                var oldmodel = bll.GetByID(item.SuperRetailTraderProfitConfigId);

                string refid = null;
                if (oldmodel != null)
                {
                    refid           = oldmodel.SuperRetailTraderProfitConfigId.ToString();
                    oldmodel.Status = "90";  //将本条信息置为失效状态。
                    bll.Update(oldmodel);
                }


                T_SuperRetailTraderProfitConfigEntity _model = new T_SuperRetailTraderProfitConfigEntity()
                {
                    SuperRetailTraderProfitConfigId = id,
                    Status     = item.Status,
                    Profit     = item.Profit,
                    Level      = level,
                    CustomerId = loggingSessionInfo.ClientID,
                    IsDelete   = 0,
                    ProfitType = "Percent",
                    RefSuperRetailTraderProfitConfigId = refid,
                };
                bll.Create(_model); //添加一条新的信息。

                SetSuperRetailTraderProfitConfigInfo info = new SetSuperRetailTraderProfitConfigInfo()
                {
                    Level  = item.Level == null ? 1 : int.Parse(item.Level + ""),
                    Profit = item.Profit,
                    Status = item.Status,
                    SuperRetailTraderProfitConfigId = id
                };
                rd.lst.Add(info); //返回值
            }
            return(rd);
        }