using System; using System.Collections.Generic; using System.Linq; using Edu.Common; using Edu.Common.API; using Edu.Common.Enum.Finance; using Edu.Common.Plugin; using Edu.Model.CacheModel; using Edu.Model.Entity.Finance; using Edu.Model.ViewModel.Course; using Edu.Model.ViewModel.Finance; using Edu.Model.ViewModel.User; using Edu.Repository.Course; using Edu.Repository.Finance; using Edu.Repository.StudyAbroad; using Edu.Repository.User; using VT.FW.DB; namespace Edu.Module.Finance { /// /// 活动处理类 /// public class ActivityModule { /// /// 活动配置 /// private readonly RB_Activity_ConfigRepository activity_ConfigRepository = new RB_Activity_ConfigRepository(); /// /// 提成期数 /// private readonly RB_Activity_PeriodsRepository activity_PeriodsRepository = new RB_Activity_PeriodsRepository(); /// /// 提成期数明细 /// private readonly RB_Activity_PeriodsDetailRepository activity_PeriodsDetailRepository = new RB_Activity_PeriodsDetailRepository(); /// /// 财务 /// private readonly RB_FinanceRepository financeRepository = new RB_FinanceRepository(); /// /// 账户 /// private readonly RB_AccountRepository accountRepository = new RB_AccountRepository(); /// /// 部门 /// private readonly RB_DepartmentRepository departmentRepository = new RB_DepartmentRepository(); /// /// 校区 /// private readonly RB_SchoolRepository schoolRepository = new RB_SchoolRepository(); #region 活动配置 /// /// 获取活动配置列表 /// /// /// public RB_Activity_Config_ViewModel GetActivityConfigModel(RB_Activity_Config_ViewModel model) { var dmodel = activity_ConfigRepository.GetList(model).FirstOrDefault(); if (dmodel == null) { dmodel = new RB_Activity_Config_ViewModel(); } return dmodel; } /// /// 新增/修改活动配置 /// /// /// public string SetActivityConfig(RB_Activity_Config_ViewModel demdoel) { if (demdoel.Id > 0) { Dictionary keyValues = new Dictionary() { { nameof(RB_Activity_Config_ViewModel.Type),demdoel.Type}, { nameof(RB_Activity_Config_ViewModel.CommissionMoney),demdoel.CommissionMoney}, { nameof(RB_Activity_Config_ViewModel.UpdateBy),demdoel.UpdateBy}, { nameof(RB_Activity_Config_ViewModel.UpdateTime),demdoel.UpdateTime}, }; List wheres = new List() { new WhereHelper(){ FiledName=nameof(RB_Activity_Config_ViewModel.Id), FiledValue=demdoel.Id, OperatorEnum=OperatorEnum.Equal } }; bool flag = activity_ConfigRepository.Update(keyValues, wheres); return flag ? "" : "出错了,请联系管理员"; } else { bool flag = activity_ConfigRepository.Insert(demdoel) > 0; return flag ? "" : "出错了,请联系管理员"; } } #endregion #region 活动提成 /// /// 获取列表 /// /// /// public List GetActivityCommissionPeriodsList(RB_Activity_Periods_ViewModel dmodel) { return activity_PeriodsRepository.GetList(dmodel); } /// /// 获取提成期数分页类别 /// /// /// /// /// /// public List GetActivityCommissionPeriodsPageList(int pageIndex, int pageSize, out long count, RB_Activity_Periods_ViewModel dmodel) { var list = activity_PeriodsRepository.GetPageList(pageIndex, pageSize, out count, dmodel); if (list.Any()) { //查询财务单据 string periodsIds = string.Join(",", list.Select(x => x.Id)); var financeList = financeRepository.GetListSingle(new RB_Finance_Extend() { RB_Group_Id = dmodel.Group_Id, FinanceType = 2, OtherType = 42, ReFinanceIds = periodsIds, IsSelectNormal = 1 }); foreach (var item in list) { var flist = financeList.Where(x => x.ReFinanceId == item.Id).Select(x => x.FrID); if (flist.Any()) { item.Financials = string.Join(",", flist); } } } return list; } /// /// 获取用户提成列表 /// /// /// public List GetActivityCommissionUserList(RB_Activity_PeriodsDetail_ViewModel dmodel) { var list = activity_PeriodsDetailRepository.GetActivityCommissionUserList(dmodel); if (list.Any()) { //查询用户 部门 校区 string userIds = string.Join(",", list.Select(x => x.UserId).Distinct()); string deptIds = string.Join(",", list.Select(x => x.Depart_Id).Distinct()); string schoolIds = string.Join(",", list.Select(x => x.School_Id).Distinct()); var ulist = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = dmodel.Group_Id, QIds = userIds }); var dlist = departmentRepository.GetDepartmentListRepository(new RB_Department_ViewModel() { Group_Id = dmodel.Group_Id, QDeptIds = deptIds }); var slist = schoolRepository.GetSchoolListRepository(new RB_School_ViewModel() { Group_Id = dmodel.Group_Id, QSIds = schoolIds }); foreach (var item in list) { var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault(); item.UserName = umodel.EmployeeName + (umodel.LeaveStatus == Common.Enum.User.LeaveStatusEnum.Departure ? "离职" : ""); item.DeptName = dlist.Where(x => x.DeptId == item.Depart_Id).FirstOrDefault()?.DeptName ?? ""; item.SchoolName = slist.Where(x => x.SId == item.School_Id).FirstOrDefault()?.SName ?? ""; } } return list; } /// /// 获取用户提成明细列表 /// /// /// public List GetActivityCommissionUserDetailList(RB_Activity_PeriodsDetail_ViewModel dmodel) { var list = activity_PeriodsDetailRepository.GetList(dmodel); if (list.Any()) { //查询用户 部门 校区 string userIds = string.Join(",", list.Select(x => x.UserId).Distinct()); string deptIds = string.Join(",", list.Select(x => x.Depart_Id).Distinct()); string schoolIds = string.Join(",", list.Select(x => x.School_Id).Distinct()); var ulist = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = dmodel.Group_Id, QIds = userIds }); var dlist = departmentRepository.GetDepartmentListRepository(new RB_Department_ViewModel() { Group_Id = dmodel.Group_Id, QDeptIds = deptIds }); var slist = schoolRepository.GetSchoolListRepository(new RB_School_ViewModel() { Group_Id = dmodel.Group_Id, QSIds = schoolIds }); foreach (var item in list) { var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault(); item.UserName = umodel.EmployeeName + (umodel.LeaveStatus == Common.Enum.User.LeaveStatusEnum.Departure ? "离职" : ""); item.DeptName = dlist.Where(x => x.DeptId == item.Depart_Id).FirstOrDefault()?.DeptName ?? ""; item.SchoolName = slist.Where(x => x.SId == item.School_Id).FirstOrDefault()?.SName ?? ""; } } return list; } /// /// 获取未发放提成用户列表 + 提成金额 /// /// /// /// public object GetActivityCommissionSendEmployeeList(int periodId, UserInfo userInfo) { var model = activity_PeriodsRepository.GetEntity(periodId); if (model == null) { return "周期不存在"; } List EmpIdList = new List(); if (!string.IsNullOrEmpty(model.EmpIds)) { EmpIdList = JsonHelper.DeserializeObject>("[" + model.EmpIds + "]"); } var list = GetActivityCommissionUserList(new RB_Activity_PeriodsDetail_ViewModel() { Group_Id = userInfo.Group_Id, PeriodId = periodId }); return ApiResult.Success("", list.Select(x => new { x.UserId, x.UserName, x.CommissionMoney, IsGiveOut = EmpIdList.Contains(x.UserId) ? 1 : 2 })); } /// /// 设置发放提成 /// /// /// /// /// public string SetActivityCommissionSendEmployee(int periodId, string empIds, UserInfo userInfo) { var model = activity_PeriodsRepository.GetEntity(periodId); if (model == null) { return "周期不存在"; } if (model.Group_Id != userInfo.Group_Id) { return "集团不正确"; } List EmpIdList = new List(); if (!string.IsNullOrEmpty(model.EmpIds)) { EmpIdList = JsonHelper.DeserializeObject>("[" + model.EmpIds + "]"); } List NewIdList = JsonHelper.DeserializeObject>("[" + empIds + "]"); foreach (var item in NewIdList) { if (EmpIdList.Contains(item)) { return "用户ID" + item + "已发放了提成,无法重复发放"; } } EmpIdList.AddRange(NewIdList); string empids2 = string.Join(",", EmpIdList); Dictionary keyValues = new Dictionary() { { nameof(RB_Activity_Periods_ViewModel.EmpIds),empids2} }; List wheres = new List() { new WhereHelper(){ FiledName= nameof(RB_Activity_Periods_ViewModel.Id), FiledValue=periodId, OperatorEnum=OperatorEnum.Equal } }; bool flag = activity_PeriodsRepository.Update(keyValues, wheres); return flag ? "" : "出错了,请联系管理员"; } /// /// 获取提成统计 /// /// /// /// /// /// public List GetActivityCommissionStatisticsPageList(int pageIndex, int pageSize, out long count, RB_Activity_PeriodsDetail_ViewModel dmodel) { var list = activity_PeriodsDetailRepository.GetPageList(pageIndex, pageSize, out count, dmodel); if (list.Any()) { //查询用户 部门 校区 string userIds = string.Join(",", list.Select(x => x.UserId).Distinct()); string deptIds = string.Join(",", list.Select(x => x.Depart_Id).Distinct()); string schoolIds = string.Join(",", list.Select(x => x.School_Id).Distinct()); var ulist = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = dmodel.Group_Id, QIds = userIds }); var dlist = departmentRepository.GetDepartmentListRepository(new RB_Department_ViewModel() { Group_Id = dmodel.Group_Id, QDeptIds = deptIds }); var slist = schoolRepository.GetSchoolListRepository(new RB_School_ViewModel() { Group_Id = dmodel.Group_Id, QSIds = schoolIds }); foreach (var item in list) { var umodel = ulist.Where(x => x.Id == item.UserId).FirstOrDefault(); item.UserName = umodel.EmployeeName + (umodel.LeaveStatus == Common.Enum.User.LeaveStatusEnum.Departure ? "离职" : ""); item.DeptName = dlist.Where(x => x.DeptId == item.Depart_Id).FirstOrDefault()?.DeptName ?? ""; item.SchoolName = slist.Where(x => x.SId == item.School_Id).FirstOrDefault()?.SName ?? ""; } } return list; } /// /// 累计提成金额统计 /// /// /// public decimal GetActivityCommissionStatistics(RB_Activity_PeriodsDetail_ViewModel dmodel) { return activity_PeriodsDetailRepository.GetSellCommissionStatistics(dmodel); } #endregion } }