using Edu.AOP.CustomerAttribute;
using Edu.Cache.User;
using Edu.Common;
using Edu.Common.API;
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.Entity.Sell;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Customer;
using Edu.Model.ViewModel.Finance;
using Edu.Model.ViewModel.Grade;
using Edu.Model.ViewModel.Log;
using Edu.Model.ViewModel.Sell;
using Edu.Model.ViewModel.User;
using Edu.Repository.Course;
using Edu.Repository.Customer;
using Edu.Repository.Finance;
using Edu.Repository.Grade;
using Edu.Repository.Log;
using Edu.Repository.Sell;
using Edu.Repository.StudyAbroad;
using Edu.Repository.User;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using VT.FW.DB;
namespace Edu.Module.Course
{
///
/// 返佣存折处理类
///
public class CustomerCommissionModule
{
///
/// 返佣周期
///
private readonly RB_ReturnMoney_BatchRepository returnMoney_BatchRepository = new RB_ReturnMoney_BatchRepository();
///
/// 返佣明细
///
private readonly RB_Order_ReturnComissionRepository order_ReturnComissionRepository = new RB_Order_ReturnComissionRepository();
///
/// 用户返佣
///
private readonly RB_User_ReturnComissionRepository user_ReturnComissionRepository = new RB_User_ReturnComissionRepository();
///
/// 同行
///
private readonly RB_CustomerRepository customerRepository = new RB_CustomerRepository();
///
/// 学生
///
private readonly RB_StudentRepository studentRepository = new RB_StudentRepository();
///
/// 账户
///
private readonly RB_AccountRepository accountRepository = new RB_AccountRepository();
///
/// 校区
///
private readonly RB_SchoolRepository schoolRepository = new RB_SchoolRepository();
private readonly RB_Customer_RemitRepository customer_RemitRepository = new RB_Customer_RemitRepository();
#region 首页返佣
///
/// 获取首页返佣同级
///
///
///
public object GetCenterCommissionStatistics(UserInfo userInfo)
{
var model = user_ReturnComissionRepository.GetCenterCommissionStatistics(userInfo.Group_Id, userInfo.Id);
return new
{
model?.UnSettlementMoney,
model?.SttlementMoney,
model?.CashOutMoney,
model?.CanCashOutMoney
};
}
#endregion
#region 返佣存折列表
///
/// 获取列表
///
///
///
public List GetCommissionPeriodsList(RB_ReturnMoney_Batch_ViewModel dmodel)
{
return returnMoney_BatchRepository.GetList(dmodel);
}
///
/// 获取佣金期数分页类别
///
///
///
///
///
///
public List GetCommissionPeriodsPageList(int pageIndex, int pageSize, out long count, RB_ReturnMoney_Batch_ViewModel dmodel)
{
var list = returnMoney_BatchRepository.GetPageList(pageIndex, pageSize, out count, dmodel.CommissionType, dmodel.Month, dmodel.GroupId);
if (list != null && list.Count > 0)
{
foreach (var item in list)
{
item.TotalMoney = item.TotalEmployee + item.TotalCustomer + item.TotalInternal + item.TotalTrans;
}
}
return list;
}
///
/// 获取用户提成列表
///
///
///
public List GetCommissionUserListModule(RB_Order_ReturnComission_ViewModel dmodel)
{
var list = order_ReturnComissionRepository.GetCommissionUserListRepository(dmodel);
if (list.Any())
{
//分成三个部门 内部人员 同行 学员
//查询用户 部门 校区
string userIds = string.Join(",", list.Where(x => x.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.EmployeeInput || x.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.InternalIntroduction).Select(x => x.OrderSourceId).Distinct());
string customerIds = string.Join(",", list.Where(x => x.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.CustomerInput).Select(x => x.OrderSourceId).Distinct());
string stuIds = string.Join(",", list.Where(x => x.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.TransIntroduction).Select(x => x.OrderSourceId).Distinct());
string schoolIds = string.Join(",", list.Select(x => x.SchoolId).Distinct());
var slist = schoolRepository.GetSchoolListRepository(new RB_School_ViewModel() { Group_Id = dmodel.GroupId, QSIds = schoolIds });
List ulist = new List();
if (!string.IsNullOrEmpty(userIds))
{
ulist = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = dmodel.GroupId, QIds = userIds });
}
List clist = new List();
if (!string.IsNullOrEmpty(customerIds))
{
clist = customerRepository.GetCustomerListRepository(new RB_Customer_Extend() { Group_Id = dmodel.GroupId, CustomerIds = customerIds });
}
List stulist = new List();
if (!string.IsNullOrEmpty(stuIds))
{
stulist = studentRepository.GetStudentListRepository(new RB_Student_ViewModel() { Group_Id = dmodel.GroupId, StuIds = stuIds });
}
foreach (var item in list)
{
item.SchoolName = slist.Where(x => x.SId == item.SchoolId).FirstOrDefault()?.SName ?? "";
item.UserDeptName = "-";
if (item.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.EmployeeInput || item.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.InternalIntroduction)
{
var umodel = ulist.Where(x => x.Id == item.OrderSourceId).FirstOrDefault();
item.UserDept = umodel.Dept_Id;
item.UserDeptName = umodel.DeptName;
item.UserName = umodel.EmployeeName + (umodel.LeaveStatus == Common.Enum.User.LeaveStatusEnum.Departure ? "离职" : "");
}
else if (item.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.CustomerInput)
{
item.UserName = clist.Where(x => x.CustomerId == item.OrderSourceId).FirstOrDefault()?.CustomerName ?? "";
}
else if (item.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.TransIntroduction)
{
item.UserName = stulist.Where(x => x.StuId == item.OrderSourceId).FirstOrDefault()?.StuName ?? "";
}
}
}
if (dmodel.UserDept > 0)
{
list = list.Where(x => x.UserDept == dmodel.UserDept).ToList();
}
return list;
}
///
/// 获取返佣统计
///
///
///
///
///
///
public List GetCommissionStatisticsPageList(int pageIndex, int pageSize, out long count, RB_Order_ReturnComission_ViewModel dmodel)
{
var list = order_ReturnComissionRepository.GetPageList(pageIndex, pageSize, out count, dmodel);
if (list.Any())
{
//查询用户 部门 校区
string userIds = string.Join(",", list.Where(x => x.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.EmployeeInput || x.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.InternalIntroduction).Select(x => x.OrderSourceId).Distinct());
string customerIds = string.Join(",", list.Where(x => x.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.CustomerInput).Select(x => x.OrderSourceId).Distinct());
string stuIds = string.Join(",", list.Where(x => x.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.TransIntroduction).Select(x => x.OrderSourceId).Distinct());
string schoolIds = string.Join(",", list.Select(x => x.SchoolId).Distinct());
var slist = schoolRepository.GetSchoolListRepository(new RB_School_ViewModel() { Group_Id = dmodel.GroupId, QSIds = schoolIds });
List ulist = new List();
if (!string.IsNullOrEmpty(userIds))
{
ulist = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = dmodel.GroupId, QIds = userIds });
}
List clist = new List();
if (!string.IsNullOrEmpty(customerIds))
{
clist = customerRepository.GetCustomerListRepository(new RB_Customer_Extend() { Group_Id = dmodel.GroupId, CustomerIds = customerIds });
}
List stulist = new List();
if (!string.IsNullOrEmpty(stuIds))
{
stulist = studentRepository.GetStudentListRepository(new RB_Student_ViewModel() { Group_Id = dmodel.GroupId, StuIds = stuIds });
}
foreach (var item in list)
{
item.SchoolName = slist.Where(x => x.SId == item.SchoolId).FirstOrDefault()?.SName ?? "";
if (item.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.EmployeeInput || item.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.InternalIntroduction)
{
var umodel = ulist.Where(x => x.Id == item.OrderSourceId).FirstOrDefault();
item.UserName = umodel.EmployeeName + (umodel.LeaveStatus == Common.Enum.User.LeaveStatusEnum.Departure ? "离职" : "");
}
else if (item.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.CustomerInput)
{
item.UserName = clist.Where(x => x.CustomerId == item.OrderSourceId).FirstOrDefault()?.CustomerName ?? "";
}
else if (item.OrderSourceType == Common.Enum.User.StuCreateTypeEnum.TransIntroduction)
{
item.UserName = stulist.Where(x => x.StuId == item.OrderSourceId).FirstOrDefault()?.StuName ?? "";
}
}
}
return list;
}
///
/// 累计佣金金额统计
///
///
///
public decimal GetCommissionStatistics(RB_Order_ReturnComission_ViewModel dmodel)
{
return order_ReturnComissionRepository.GetCommissionStatistics(dmodel);
}
///
/// 获取返佣/存折统计
///
///
///
///
///
///
public object GetCustomerCommissionStat(int orderSourceType, int orderSourceId, int CategoryId, int commissionType, UserInfo userInfo)
{
var model = user_ReturnComissionRepository.GetCustomerCommissionStat(userInfo.Group_Id, orderSourceType, orderSourceId, CategoryId, commissionType);
return new
{
model?.UnSettlementMoney,
model?.SttlementMoney,
model?.CashOutMoney,
model?.CanCashOutMoney
};
}
#endregion
#region 更新返佣财务单据
///
/// 更新返佣财务单据
///
///
///
public bool UdateReturnMoneyModule(object FinanceIds, int Id)
{
Dictionary fileds = new Dictionary()
{
{nameof(RB_ReturnMoney_Batch.FinanceIds),FinanceIds},
};
var flag = returnMoney_BatchRepository.Update(fileds, new WhereHelper(nameof(RB_ReturnMoney_Batch.Id), Id));
return flag;
}
#endregion
#region 员工提现申请获取提现金额校验
///
/// 获取首页返佣同级
///
///
///
public RB_User_ReturnComission_ViewModel GetWithdrawal(UserInfo userInfo)
{
var model = user_ReturnComissionRepository.GetCenterCommissionStatistics(userInfo.Group_Id, userInfo.Id);
return model;
}
///
/// 获取用户返佣列表
///
///
///
public List GetCommissionEnterList(RB_Order_ReturnComission_ViewModel demodel)
{
return order_ReturnComissionRepository.GetCommissionEnterList(demodel);
}
///
/// 获取首页返佣同级
///
///
///
[TransactionCallHandler]
public bool SetWithdrawalInfo(RB_Customer_Remit_Extend model, decimal afterRemit)
{
bool flag = false;
//更新提现表数据
Dictionary fileds = new Dictionary()
{
{nameof(RB_User_ReturnComission_ViewModel.CanCashOutMoney),0 },
{nameof(RB_User_ReturnComission_ViewModel.CashOutMoney),afterRemit},
};
flag = user_ReturnComissionRepository.Update(fileds, new WhereHelper(nameof(RB_User_ReturnComission_ViewModel.Id), model.CustomerId));
//新增提现申请
if (flag)
{
flag = customer_RemitRepository.Insert(model);
if (flag)
{
}
}
return flag;
}
#endregion
}
}