/// <summary> /// 确认结算,如果这条消费记录的卡号不属于自己的,则给下级经销商生成结算请求 /// </summary> /// <param name="id"></param> /// <returns></returns> public void Close(int id) { TransactionHelper.BeginTransaction(); var item = DistributorBrokerageService.GetDistributorBrokerageById(id); if (item == null) { return; } var user = this.SecurityHelper.GetCurrentUser(); int currentId = -1; if (user is DistributorUserModel) { currentId = DistributorService.GetByUserId(user.CurrentUser.Id).DistributorId; } if (item.settlementDistributorId == currentId && item.status == false) { item.status = true; DistributorBrokerageService.UpdateDistributorBrokerage(item); //增加经销商的余额 var distributor1 = DistributorService.GetById(item.settlementDistributorId); distributor1.Amount += item.brokerage; DistributorService.Update(distributor1); if (item.DistributorId != item.settlementDistributorId) { //归属他下属的卡消费,他要跟下属结算。 //如果是多级还要找到他的直接下属,只能向他的直接下属发起结算请求。 int underId = GetDirectlyUnder(item.settlementDistributorId, item.DistributorId); if (underId != 0) { var distributor = DistributorService.GetAccountLevelPolicyRates(underId).FirstOrDefault(); DistributorBrokerage model = new DistributorBrokerage(); model.DistributorId = item.DistributorId; model.AccountId = item.AccountId; model.Bdate = item.Bdate; model.consume = item.consume; model.Edate = item.Edate; model.settlementDistributorId = underId; model.Rate = distributor.Rate; model.brokerage = item.consume * distributor.Rate; model.status = false; DistributorBrokerageService.CreateDistributorBrokerage(model); } AddMessage("update.success", item.Id); } } else { AddError("不是结算经销商", item.Id); } TransactionHelper.Commit(); }
public void Query() { var request = new DistributorBrokerageRequest(); //request.AccountId = this.AccountId; request.SubmitTimeMin = Data.Start; request.SubmitTimeMax = Data.End; request.NameWith = AccountName; if (Distributor != -10001) { request.DistributorId = Distributor; } if (State == 1) { request.Status = true; } if (State == 0) { request.Status = false; } var q = DistributorBrokerageService.QueryBrokerage(request).ToList(); //如果是系统总部,列表中只包含一级经销商。 var distributors = DistributorService.Query().Where(x => x.ParentId == 0).ToList(); var user = this.SecurityHelper.GetCurrentUser(); if (user is AdminUserModel) { List = List = q.ToList(this, x => new ListDistributorBrokerage(x));//(from c in q where distributors.Any(p=>p.DistributorId==c.DistributorId) select c).ToList(this,x=>new ListDistributorBrokerage(x)); } //显示直属当前经销商和归属当前经销商的下级 else if (user is DistributorUserModel) { int id = ((DistributorUserModel)user).DistributorId; var totalIds = q.Select(x => x.DistributorId).ToList(); var ids = GetChildrenDistributorId(id, totalIds); ids.Add(id); List = (from c in q where ids.Contains(c.settlementDistributorId) select c).ToList(this, x => new ListDistributorBrokerage(x)); } foreach (var item in List) { var distributor1 = DistributorService.GetById(item.DistributorId); if (distributor1 != null) { var distributoruser = MembershipService.GetUserById(distributor1.UserId); if (user != null) { item.DistributorName = distributoruser.DisplayName; } } var distributor2 = DistributorService.GetById(item.settlementDistributorId); if (distributor2 != null) { var distributoruser = MembershipService.GetUserById(distributor2.UserId); if (user != null) { item.SettlementDistributorName = distributoruser.DisplayName; } } var account = AccountService.GetById(item.AccountId); if (account != null) { item.AccountName = account.Name; } } }