Commit 806f4d0b authored by liudong1993's avatar liudong1993

Merge branch 'master' of http://gitlab.oytour.com/Kui2/education

parents 4ebf6ce1 d276c4da
using System;
using Edu.Common.Enum.Course;
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
......@@ -22,16 +23,24 @@ namespace Edu.Model.Entity.Bonus
/// </summary>
public int BonusId { get; set; }
/// <summary>
/// 订单编号
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// 订单状态
/// </summary>
public OrderStateEnum OrderState { get; set; }
/// <summary>
/// 订单人数
/// </summary>
public int GuestNum { get; set; }
public int OrderGuestNum { get; set; }
/// <summary>
/// 订单金额
/// </summary>
public decimal OrderMoney { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Bonus
{
/// <summary>
/// 员工人头奖励日志实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Personnel_BonusLog
{
/// <summary>
/// 奖励日志编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 奖励主表编号
/// </summary>
public int BonusId { get; set; }
/// <summary>
/// 日志类型(1-订单改变日志)
/// </summary>
public int LogType { get; set; }
/// <summary>
/// 订单编号
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// 日志内容
/// </summary>
public string LogContent { get; set; }
}
}
......@@ -296,5 +296,35 @@ namespace Edu.Model.Entity.Course
/// 返佣类型 1按课耗反 2付款返佣
/// </summary>
public int CommissionReType { get; set; }
/// <summary>
/// 直客首次报名返佣比例
/// </summary>
public decimal B2CRbRatio { get; set; }
/// <summary>
/// 直客首次报名返佣类型
/// </summary>
public CourseRebateSetEnum B2CRbRatioType { get; set; }
/// <summary>
/// 直客首次报名返佣类型值
/// </summary>
public decimal B2CRbRatioValue { get; set; }
/// <summary>
/// 直客续费返佣比例
/// </summary>
public decimal B2CRNRatio { get; set; }
/// <summary>
/// 直客续费返佣类型
/// </summary>
public CourseRebateSetEnum B2CRNRatioType { get; set; }
/// <summary>
/// 直客续费返佣类型值
/// </summary>
public decimal B2CRNRatioValue { get; set; }
}
}
\ No newline at end of file
using Edu.Model.Entity.Bonus;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Bonus
{
/// <summary>
/// 员工人头奖励日志扩展实体类
/// </summary>
public class RB_Personnel_BonusLog_Extend : RB_Personnel_BonusLog
{
}
}
......@@ -10,5 +10,9 @@ namespace Edu.Model.ViewModel.Bonus
/// </summary>
public class RB_Personnel_Bonus_Extend : RB_Personnel_Bonus
{
/// <summary>
/// 人头奖励详情列表
/// </summary>
public List<RB_Personnel_BonusDetail_Extend> DetailList { get; set; }
}
}
......@@ -1513,6 +1513,14 @@ namespace Edu.Module.Course
{nameof(RB_Course_ViewModel.TransIntroductceReNewRatioValue),courseModel.TransIntroductceReNewRatioValue },
{nameof(RB_Course_ViewModel.CommissionReType),courseModel.CommissionReType },
{nameof(RB_Course_ViewModel.B2CRbRatio),courseModel.B2CRbRatio },
{nameof(RB_Course_ViewModel.B2CRbRatioType),courseModel.B2CRbRatioType },
{nameof(RB_Course_ViewModel.B2CRbRatioValue),courseModel.B2CRbRatioValue },
{nameof(RB_Course_ViewModel.B2CRNRatio),courseModel.B2CRNRatio },
{nameof(RB_Course_ViewModel.B2CRNRatioType),courseModel.B2CRNRatioType },
{nameof(RB_Course_ViewModel.B2CRNRatioValue),courseModel.B2CRNRatioValue },
};
flag = courseRepository.Update(fileds, new WhereHelper(nameof(RB_Course_ViewModel.CourseId), courseModel.CourseId));
}
......
......@@ -814,7 +814,8 @@ namespace Edu.Module.Course
var newPreferPrice = orderModel.PreferPrice - backModel.RealityBackMoney;
Dictionary<string, object> orderFileds = new Dictionary<string, object>()
{
{nameof(RB_Order_ViewModel.PreferPrice),newPreferPrice }
{nameof(RB_Order_ViewModel.PreferPrice),newPreferPrice },
{nameof(RB_Order_ViewModel.OrderState),(int)OrderStateEnum.DropOut },
};
flag = orderRepository.Update(orderFileds, new WhereHelper(nameof(RB_Order_ViewModel.OrderId), backModel.OrderId));
#endregion
......
......@@ -6,6 +6,9 @@ using System.Collections.Generic;
using System.Text;
using System.Linq;
using Edu.Model.Entity.Bonus;
using Edu.Model.ViewModel.Bonus;
using Edu.Common.Plugin;
using VT.FW.DB;
namespace Edu.Module.Course
{
......@@ -34,73 +37,147 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_Personnel_BonusDetailRepository personnel_BonusDetailRepository = new RB_Personnel_BonusDetailRepository();
/// <summary>
/// 人头奖金日志仓储层对象
/// </summary>
private readonly RB_Personnel_BonusLogRepository personnel_BonusLogRepository = new RB_Personnel_BonusLogRepository();
/// <summary>
/// 订单仓储层对象
/// </summary>
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
/// <summary>
/// 开始月份
/// </summary>
private int StartYear = 2021;
/// <summary>
/// 结束月份
/// </summary>
private int StartMoneh = 11;
/// <summary>
/// 生成业绩
/// </summary>
public void CreateEmployeeBonusModule(int GroupId)
{
string endDate = "2021-12-31";
int CurrentYear = 2021;
int CurrentMonth = 12;
DateTime d1 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
d1 = new DateTime(2021, 11, 1);
DateTime endTime = d1.AddMonths(1).AddDays(-1);
int CurrentYear = endTime.Year;
int CurrentMonth = endTime.Month;
string endDate = Common.ConvertHelper.FormatDate(endTime);
//人头配置列表
var planList= bonus_PlanRepository.GetBounsPlanListRepository(new RB_Bonus_PlanExtend() {
Group_Id=GroupId
},isGetDetail:true);
var planList = bonus_PlanRepository.GetBounsPlanListRepository(new RB_Bonus_PlanExtend()
{
Group_Id = GroupId
}, isGetDetail: true);
foreach (var item in planList)
{
var saleList = Common.ConvertHelper.StringToList(item.SaleIds);
foreach (var saleId in saleList)
{
var orderList = GetSaleOrderList(item, GroupId, endDate, saleId);
var curNum = orderList?.Where(qitem => qitem.Year == CurrentYear && qitem.Month == CurrentMonth)?.Sum(qitem => qitem.GuestNum) ?? 0;
var curOrderMoney = orderList?.Where(qitem => qitem.Year == CurrentYear && qitem.Month == CurrentMonth)?.Sum(qitem => qitem.OrderMoney) ?? 0;
var pModel = new RB_Personnel_Bonus()
{
Id = 0,
RewardType = item.PlanType,
YearNum = CurrentYear,
MonthNum = CurrentMonth,
EmployeeId=saleId,
CurGuestNum= curNum,
CurOrderMoney= curOrderMoney,
Group_Id =GroupId,
CurRewardMoney= GetStepAwardAmount(item, curNum),
CreateBy=1,
CreateTime=DateTime.Now,
UpdateBy=1,
UpdateTime=DateTime.Now,
};
var newId = personnel_BonusRepository.Insert(pModel);
pModel.Id = newId;
foreach (var oItem in orderList)
CalcPersionBonusModule(item, GroupId, endDate, saleId, CurrentYear, CurrentMonth);
}
}
}
/// <summary>
/// 计算人员业绩
/// </summary>
/// <param name="item"></param>
/// <param name="GroupId"></param>
/// <param name="endDate"></param>
/// <param name="saleId"></param>
/// <param name="CurrentYear"></param>
/// <param name="CurrentMonth"></param>
/// <param name="isCalcReduce">true-计算抵扣,false-不计算</param>
private void CalcPersionBonusModule(RB_Bonus_PlanExtend item, int GroupId, string endDate, int saleId, int CurrentYear, int CurrentMonth, bool isCalcReduce = false)
{
var orderList = GetSaleOrderList(item, GroupId, endDate, saleId, out List<RB_Order_ViewModel> allOrderList);
var curNum = orderList?.Where(qitem => qitem.Year == CurrentYear && qitem.Month == CurrentMonth)?.Sum(qitem => qitem.GuestNum) ?? 0;
var curOrderMoney = orderList?.Where(qitem => qitem.Year == CurrentYear && qitem.Month == CurrentMonth)?.Sum(qitem => qitem.OrderMoney) ?? 0;
//查询销售已发放的奖励
var saleBonusList = personnel_BonusRepository.GetPersonnelBonusListRepository(new RB_Personnel_Bonus_Extend()
{
EmployeeId = saleId
});
if (saleBonusList != null && saleBonusList.Count > 0)
{
foreach (var bItem in saleBonusList)
{
//查询此月份的订单列表
var curMonthOrderList = allOrderList?.Where(qitem => qitem.CreateTime.Year == bItem.YearNum && qitem.CreateTime.Month == bItem.MonthNum)?.ToList();
foreach (var dItem in bItem.DetailList)
{
var detail = new RB_Personnel_BonusDetail()
Dictionary<string, object> detailFileds = new Dictionary<string, object>();
detailFileds.Clear();
var tempCurMonthOrder = curMonthOrderList?.FirstOrDefault(qitem => qitem.OrderId == dItem.OrderId);
if (dItem.OrderState != (tempCurMonthOrder?.OrderState))
{
Id = 0,
BonusId = pModel.Id,
OrderMoney=oItem.OrderMoney,
GuestNum=oItem.GuestNum,
};
var newMoney = tempCurMonthOrder.Income - tempCurMonthOrder.Refund - tempCurMonthOrder.PlatformTax;
detailFileds.Add(nameof(RB_Personnel_BonusDetail_Extend.OrderGuestNum), 0);
detailFileds.Add(nameof(RB_Personnel_BonusDetail_Extend.OrderMoney), newMoney);
string _log1 = $"订单号【{dItem.OrderId}】的订单状态由:{dItem.OrderState.ToName()}=>{tempCurMonthOrder?.OrderState.ToName()}" +
$"订单人数由:{dItem.OrderGuestNum}=>0,订单金额由:{dItem.OrderMoney}=>{newMoney}"
;
personnel_BonusLogRepository.AddPersonnelBonusLogRepository(bItem.Id, 1, dItem.OrderId, _log1);
}
if (detailFileds != null && detailFileds.Count > 0)
{
personnel_BonusDetailRepository.Update(detailFileds, new WhereHelper(nameof(RB_Personnel_BonusDetail_Extend.Id), dItem.Id));
}
}
}
}
else
{
var pModel = new RB_Personnel_Bonus()
{
Id = 0,
RewardType = item.PlanType,
YearNum = CurrentYear,
MonthNum = CurrentMonth,
EmployeeId = saleId,
CurGuestNum = curNum,
CurOrderMoney = curOrderMoney,
Group_Id = GroupId,
CurRewardMoney = GetStepAwardAmount(item, curNum),
CreateBy = 1,
CreateTime = DateTime.Now,
UpdateBy = 1,
UpdateTime = DateTime.Now,
};
var newId = personnel_BonusRepository.Insert(pModel);
pModel.Id = newId;
foreach (var oItem in allOrderList)
{
var detailModel = new RB_Personnel_BonusDetail()
{
Id = 0,
BonusId = pModel.Id,
OrderId = oItem.OrderId,
OrderState = oItem.OrderState,
OrderMoney = oItem.Income - oItem.Refund - oItem.PlatformTax,
OrderGuestNum = oItem.GuestNum,
};
var newDetailId = personnel_BonusDetailRepository.Insert(detailModel);
detailModel.Id = newDetailId;
}
}
}
/// <summary>
/// 获取梯度奖励金额
/// </summary>
/// <param name="item"></param>
/// <param name="GuestNum"></param>
/// <returns></returns>
private decimal GetStepAwardAmount(RB_Bonus_PlanExtend item,int GuestNum)
private decimal GetStepAwardAmount(RB_Bonus_PlanExtend item, int GuestNum)
{
decimal awardAmount = 0;
if (item != null && item.DetailList != null && item.DetailList.Count > 0)
......@@ -125,11 +202,11 @@ namespace Edu.Module.Course
/// <param name="endDate"></param>
/// <param name="SaleId"></param>
/// <returns></returns>
private List<PersionOrderItem> GetSaleOrderList(RB_Bonus_PlanExtend item,int GroupId,string endDate,int SaleId)
private List<PersionOrderItem> GetSaleOrderList(RB_Bonus_PlanExtend item, int GroupId, string endDate, int SaleId, out List<RB_Order_ViewModel> orderList)
{
List<PersionOrderItem> list = new List<PersionOrderItem>();
//所有当前人员订单列表
var orderList = orderRepository.GetAllBonusOrderListRepository(GroupId, endDate,SaleId);
orderList = orderRepository.GetAllBonusOrderListRepository(GroupId, endDate, SaleId);
//适用课程
if (!string.IsNullOrEmpty(item.UseCourseIds))
{
......@@ -140,16 +217,16 @@ namespace Edu.Module.Course
{
orderList = orderList?.Where(qitem => !item.NotUseCourseIds.Contains(qitem.CourseId.ToString()))?.ToList();
}
//按照年份、月份统计订单人数和金额
var groupList = orderList
.GroupBy(qitem => new { qitem.CreateTime.Year, qitem.CreateTime.Month })
.Select(qitem => new
{
qitem.Key.Year,
qitem.Key.Month,
GuestNum=qitem.Sum(s=>s.GuestNum),
OrderMoney=qitem.Sum(s=>s.Income - s.Refund + s.PlatformTax)
});
//按照年份、月份统计订单人数和金额
var groupList = orderList
.GroupBy(qitem => new { qitem.CreateTime.Year, qitem.CreateTime.Month })
.Select(qitem => new
{
qitem.Key.Year,
qitem.Key.Month,
GuestNum = qitem.Sum(s => s.GuestNum),
OrderMoney = qitem.Sum(s => s.Income - s.Refund + s.PlatformTax)
});
foreach (var gItem in groupList)
{
......
......@@ -145,8 +145,7 @@ namespace Edu.Module.Customer
}
else
{
model.ApproveState = 0;
model.CustomerState = Common.Enum.Customer.CustomerStateEnum.NotActivation;
model.CustomerState = Common.Enum.Customer.CustomerStateEnum.Normal;
model.Password = Common.DES.Encrypt(Common.Config.DefaultPwd);
var newId = customerRepository.Insert(model);
model.CustomerId = newId;
......
using Edu.Model.Entity.Bonus;
using Edu.Model.ViewModel.Bonus;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Edu.Repository.Bonus
{
/// <summary>
/// 员工人头奖励日志仓储层
/// </summary>
public class RB_Personnel_BonusLogRepository:BaseRepository<RB_Personnel_BonusLog>
{
/// <summary>
/// 获取员工人头奖励日志分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Personnel_BonusLog_Extend> GetPersonnelBonusLogPageRepository(int pageIndex, int pageSize, out long rowsCount, RB_Personnel_BonusLog_Extend query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Personnel_BonusLog AS A
WHERE 1=1
");
if (query != null)
{
if (query.BonusId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Personnel_BonusLog_Extend.BonusId), query.BonusId);
}
if (query.LogType > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Personnel_BonusLog_Extend.LogType), query.LogType);
}
if (query.OrderId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Personnel_BonusLog_Extend.OrderId), query.OrderId);
}
}
return GetPage<RB_Personnel_BonusLog_Extend>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
}
/// <summary>
/// 新增日志
/// </summary>
/// <param name="BonusId"></param>
/// <param name="LogType"></param>
/// <param name="OrderId"></param>
/// <param name="LogContent"></param>
/// <returns></returns>
public bool AddPersonnelBonusLogRepository(int BonusId,int LogType,int OrderId,string LogContent)
{
var newModel = new RB_Personnel_BonusLog()
{
BonusId = BonusId,
LogType = LogType,
OrderId = OrderId,
LogContent = LogContent
};
var newId = base.Insert(newModel);
return newId > 0;
}
}
}
......@@ -12,6 +12,11 @@ namespace Edu.Repository.Bonus
/// </summary>
public class RB_Personnel_BonusRepository : BaseRepository<RB_Personnel_Bonus>
{
/// <summary>
/// 员工人头奖励详情仓储层对象
/// </summary>
private readonly RB_Personnel_BonusDetailRepository personnel_BonusDetailRepository = new RB_Personnel_BonusDetailRepository();
/// <summary>
/// 获取员工人头奖励分页列表
/// </summary>
......@@ -46,5 +51,56 @@ WHERE 1=1
}
return GetPage<RB_Personnel_Bonus_Extend>(pageIndex,pageSize,out rowsCount,builder.ToString()).ToList();
}
/// <summary>
/// 获取员工人头奖励列表
/// </summary>
/// <param name="query"></param>
/// <param name="isGetDetail">true-查询详情</param>
/// <returns></returns>
public List<RB_Personnel_Bonus_Extend> GetPersonnelBonusListRepository(RB_Personnel_Bonus_Extend query,bool isGetDetail=false)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Personnel_Bonus AS A
WHERE 1=1
");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Personnel_Bonus_Extend.Group_Id), query.Group_Id);
}
if (query.YearNum > 0)
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Personnel_Bonus_Extend.YearNum), query.YearNum);
}
if (query.MonthNum > 0)
{
builder.AppendFormat(" AND A.{0} IN({1}) ", nameof(RB_Personnel_Bonus_Extend.MonthNum), query.MonthNum);
}
if (query.EmployeeId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Personnel_Bonus_Extend.EmployeeId), query.EmployeeId);
}
}
var list= Get<RB_Personnel_Bonus_Extend>(builder.ToString()).ToList();
if (list != null && list.Count > 0)
{
string ids = string.Join(",", list.Select(qitem => qitem.Id));
List<RB_Personnel_BonusDetail_Extend> detailsList = personnel_BonusDetailRepository.GetPersonnelBonusDetailListRepository(new RB_Personnel_BonusDetail_Extend()
{
QBonusIds = ids
});
foreach (var item in list)
{
item.DetailList = detailsList?.Where(qitem => qitem.BonusId == item.Id)?.ToList();
}
}
return list;
}
}
}
......@@ -1192,7 +1192,7 @@ WHERE 1=1
");
builder.AppendFormat(" AND o.OrderState IN({0},{1}) ", (int)OrderStateEnum.Normal, (int)OrderStateEnum.DropOut);
builder.AppendFormat(" AND o.{0}={1} ", nameof(RB_Order_ViewModel.OrderType), (int)OrderTypeEnum.CourseOrder);
builder.AppendFormat(" AND o.CreateTime >= '2021-12-01' ");
builder.AppendFormat(" AND o.CreateTime >= '2021-11-01' ");
//帐平
builder.AppendFormat(" AND o.PreferPrice = (o.Income - o.Refund + o.DiscountMoney + o.PlatformTax) ");
if (group_Id > 0)
......@@ -1207,7 +1207,7 @@ WHERE 1=1
{
builder.AppendFormat(" AND ( EnterID={0} OR CreateBy={0} ) ", SaleId);
}
builder.AppendFormat(" GROUP BY o.OrderId ");
builder.AppendFormat(" ORDER BY o.CreateTime ASC ");
return Get<RB_Order_ViewModel>(builder.ToString()).ToList();
}
}
......
......@@ -1267,7 +1267,15 @@ namespace Edu.WebApi.Controllers.Course
TransIntroductceReNewRatioType = (CourseRebateSetEnum)courseObj.GetInt("TransIntroductceReNewRatioType"),
TransIntroductceReNewRatioValue = courseObj.GetDecimal("TransIntroductceReNewRatioValue"),
CommissionReType = courseObj.GetInt("CommissionReType")
CommissionReType = courseObj.GetInt("CommissionReType"),
B2CRbRatio=courseObj.GetDecimal("B2CRbRatio"),
B2CRbRatioType=(CourseRebateSetEnum)courseObj.GetInt("B2CRbRatioType"),
B2CRbRatioValue=courseObj.GetDecimal("B2CRbRatioValue"),
B2CRNRatio=courseObj.GetDecimal("B2CRNRatio"),
B2CRNRatioType= (CourseRebateSetEnum)courseObj.GetInt("B2CRNRatioType"),
B2CRNRatioValue=courseObj.GetDecimal("B2CRNRatioValue"),
};
var priceObj = base.ParmJObj.GetStringValue("priceList");
var list = new List<RB_Course_Preferential_Extend>();
......@@ -1361,6 +1369,14 @@ namespace Edu.WebApi.Controllers.Course
extModel.CommissionReType = courseModel.CommissionReType;
extModel.B2CRbRatio = courseModel.B2CRbRatio;
extModel.B2CRbRatioType = courseModel.B2CRbRatioType;
extModel.B2CRbRatioValue = courseModel.B2CRbRatioValue;
extModel.B2CRNRatio = courseModel.B2CRNRatio;
extModel.B2CRNRatioType = courseModel.B2CRNRatioType;
extModel.B2CRNRatioValue = courseModel.B2CRNRatioValue;
var flag = courseModule.SetCoursePreferentialListModule(extModel, list);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment