Commit 21cb35bf authored by 罗超's avatar 罗超

佣金调整

parent 35e18500
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Sell
{
/// <summary>
/// 订单返佣记录表
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Order_ReturnComission
{
/// <summary>
///
/// </summary>
public int Id { get; set; }
/// <summary>
/// 订单编号
/// </summary>
public int OrderId { get; set; }
/// <summary>
/// 返佣类型 1按课耗反 2付款返佣
/// </summary>
public int CommissionReType { get; set; }
/// <summary>
/// 学员来源
/// </summary>
public int OrderSourceType { get; set; }
/// <summary>
/// 关联来源编号
/// </summary>
public int OrderSourceId { get; set; }
/// <summary>
/// 返佣条件值
/// </summary>
public decimal CommissionReValue { get; set; }
/// <summary>
/// -1,不返佣,0,待返佣,1,已返佣到账户,2佣金已提现
/// </summary>
public int Status { get; set; }
/// <summary>
/// 返佣金额
/// </summary>
public decimal CommissionMoeny { get; set; }
/// <summary>
/// 返佣备注
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 返佣提现单号
/// </summary>
public int UnionCashOutId { get; set; }
/// <summary>
/// 学员编号
/// </summary>
public int StuId { get; set; }
/// <summary>
/// 提成类型1、返佣;2、幸福存折
/// </summary>
public int CommissionType { get; set; }
/// <summary>
/// 归属批次
/// </summary>
public int BatchId { get; set; }
public int SchoolId { get; set; }
public int GroupId { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.Entity.Sell
{
public class RB_ReturnMoney_Batch
{
/// <summary>
///
/// </summary>
public int Id { get; set; }
/// <summary>
/// 提成记录番号
/// </summary>
public string BatchName { get; set; }
/// <summary>
/// 总提成金额
/// </summary>
public decimal TotalMoney { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateDate { get; set; }
/// <summary>
/// 集团
/// </summary>
public int GroupId { get; set; }
/// <summary>
/// 1。返佣;2.幸福存折
/// </summary>
public int CommissionType { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.User
{
/// <summary>
/// 用户佣金表
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_User_ReturnCommission
{
/// <summary>
/// 用户标识
/// </summary>
public int UserId { get; set; }
/// <summary>
/// 用户类型
/// </summary>
public int UserType { get; set; }
/// <summary>
/// 未结算佣金
/// </summary>
public decimal UnSettlementMoney { get; set; }
/// <summary>
/// 已结算佣金
/// </summary>
public decimal SttlementMoney { get; set; }
/// <summary>
/// 已提现佣金
/// </summary>
public decimal CashOutMoney { get; set; }
/// <summary>
/// 可提现佣金
/// </summary>
public decimal CanCashOutMoney { get; set; }
/// <summary>
/// 提成类型1、佣金;2、幸福存折
/// </summary>
public int CommissionType { get; set; }
public int GroupId { get; set; }
}
}
using Edu.Model.Entity.Sell;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Sell
{
public class RB_Order_ReturnComission_ViewModel : RB_Order_ReturnComission
{
public string StuSourceName { get; set; }
}
}
using Edu.Model.Entity.Sell;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Sell
{
public class RB_ReturnMoney_Batch_ViewModel: RB_ReturnMoney_Batch
{
public string CreateByName { get; set; }
public string CreateDateStr { get; set; }
}
}
using Edu.Model.Entity.User;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.User
{
public class RB_User_ReturnComission_ViewModel : RB_User_ReturnCommission
{
}
}
......@@ -7,6 +7,7 @@ using Edu.Common.Enum.Course;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.Entity.Finance;
using Edu.Model.Entity.Sell;
using Edu.Model.ViewModel.Contract;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Finance;
......@@ -100,6 +101,12 @@ namespace Edu.Module.Course
/// </summary>
private readonly StudentBillModule studentBillModule = new StudentBillModule();
private readonly RB_Order_ReturnComissionRepository returnComissionRepository = new RB_Order_ReturnComissionRepository();
private readonly RB_User_ReturnComissionRepository userReturnComissionRepository = new RB_User_ReturnComissionRepository();
private readonly RB_Student_OrderGuestRepository student_OrderGuestRepository = new RB_Student_OrderGuestRepository();
/// <summary>
/// 获取学员信息
/// </summary>
......@@ -791,9 +798,80 @@ namespace Edu.Module.Course
{ nameof(RB_BackClass_Protocol_ViewModel.PartyASignDate),DateTime.Now},
{ nameof(RB_BackClass_Protocol_ViewModel.SignDate),DateTime.Now},
};
UpdateReturnMoneyStatus(Id);
return backClass_ProtocolRepository.Update(keyValues, new WhereHelper(nameof(RB_BackClass_Protocol_ViewModel.Id), Id));
}
/// <summary>
/// 追回佣金
/// </summary>
/// <param name="id"></param>
private void UpdateReturnMoneyStatus(int id)
{
var guestModel = student_OrderGuestRepository.GetModelByBackId(id);
var model = returnComissionRepository.GetModelByOrderIdStuId(guestModel.OrderId, guestModel.Student_Id);
if (model != null && (model.Status==0 || model.Status==1))
{
var userModel = userReturnComissionRepository.GetModelBySourceId(model.OrderSourceType, model.OrderSourceId,model.CommissionType);
userModel.SttlementMoney -= model.CommissionMoeny;
if (model.Status == 1)
{
userModel.CanCashOutMoney -= model.CommissionMoeny;
}
Dictionary<string, object> userKeyValues = new Dictionary<string, object>()
{
{ nameof(RB_User_ReturnComission_ViewModel.SttlementMoney),userModel.SttlementMoney},
{ nameof(RB_User_ReturnComission_ViewModel.CanCashOutMoney),userModel.CanCashOutMoney}
};
List<WhereHelper> userWheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_User_ReturnComission_ViewModel.UserType),
FiledValue=model.OrderSourceType,
OperatorEnum= OperatorEnum.Equal
},
new WhereHelper()
{
FiledName=nameof(RB_User_ReturnComission_ViewModel.UserId),
FiledValue=model.OrderSourceId,
OperatorEnum= OperatorEnum.Equal
},
new WhereHelper()
{
FiledName=nameof(RB_User_ReturnComission_ViewModel.CommissionType),
FiledValue=model.CommissionType,
OperatorEnum= OperatorEnum.Equal
}
};
userReturnComissionRepository.Update(userKeyValues, userWheres);
Dictionary<string, object> keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Order_ReturnComission.Status),-1}
};
List<WhereHelper> wheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_Order_ReturnComission.StuId),
FiledValue=guestModel.Student_Id,
OperatorEnum= OperatorEnum.Equal
},
new WhereHelper()
{
FiledName=nameof(RB_Order_ReturnComission.OrderId),
FiledValue=guestModel.OrderId,
OperatorEnum= OperatorEnum.Equal
}
};
returnComissionRepository.Update(keyValues, wheres);
}
}
/// <summary>
/// 退课协议,销售确认【0826新增生成财务单据】
/// </summary>
......
......@@ -6,6 +6,7 @@ using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using Edu.Common.Enum.Sale;
using Edu.Common.Enum.System;
using Edu.Common.Enum.User;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.Entity.Contract;
......@@ -131,7 +132,7 @@ namespace Edu.Module.Course
/// <summary>
/// 同业返佣
/// </summary>
private readonly RB_Customer_BalanceDetailRepository customer_BalanceDetailRepository = new RB_Customer_BalanceDetailRepository();
//private readonly RB_Customer_BalanceDetailRepository customer_BalanceDetailRepository = new RB_Customer_BalanceDetailRepository();
/// <summary>
/// 学生关联
......@@ -224,6 +225,12 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_LearningGoalsRepository learningGoalsRepository = new RB_LearningGoalsRepository();
private readonly RB_Order_ReturnComissionRepository returnComissionRepository = new RB_Order_ReturnComissionRepository();
private readonly RB_User_ReturnComissionRepository userReturnComissionRepository = new RB_User_ReturnComissionRepository();
private readonly RB_ReturnMoney_BatchRepository returnMoney_BatchRepository = new RB_ReturnMoney_BatchRepository();
#region 日语培训
/// <summary>
......@@ -375,6 +382,242 @@ namespace Edu.Module.Course
return SetClassOrderCommonModule(demodel, userInfo, isEditOrder, out message);
}
/// <summary>
/// 记录返佣信息
/// </summary>
/// <param name="model"></param>
public void SetReturnOrderCommission(RB_Order_ViewModel model)
{
//排除原有的批量报入,和B2B未付款的订单
if (model.OrderIdentify == 2 && model.OrderState != OrderStateEnum.WaitPay)
{
var stuList = studentRepository.GetStudentListRepository(new RB_Student_ViewModel() { Group_Id = model.Group_Id, StuIds = model.StuIds, School_Id = -1 });
if (stuList.Any())
{
stuList.ForEach(x =>
{
//检查学员是否存在有效订单
int orderCount = studentRepository.GetStudentOrderCount(x.StuId);
var commissionModel = new RB_Order_ReturnComission_ViewModel()
{
Id = 0,
OrderId = model.OrderId,
OrderSourceType = x.CreateType.ToInt(),
OrderSourceId = x.CreateType == StuCreateTypeEnum.EmployeeInput ? x.CreateBy : (x.CreateType == StuCreateTypeEnum.CustomerInput? x.CustomerId : x.StuSourceId),
Status = -1, //下单默认为不可返佣,等待付款完成后更新为待返佣
UnionCashOutId = 0,
StuId = x.StuId,
CommissionType = orderCount == 0 ? 1 : 2,
SchoolId=model.School_Id,
GroupId=model.Group_Id
};
FormatOrderCommissionByCourse(ref commissionModel, model.CourseId);
returnComissionRepository.Insert(commissionModel);
});
}
}
}
/// <summary>
/// 生成指定类型的佣金
/// </summary>
/// <param name="type"></param>
/// <param name="uid"></param>
/// <param name="gid"></param>
/// <returns></returns>
public (bool result,string message) SetUserReturnMoneyModule(int type,int uid,int gid)
{
//检查本月是否存在操作记录
string month = DateTime.Now.ToString("yyyy-MM");
var isHave = returnMoney_BatchRepository.ExsitModelByMonth(gid, month, type);
if (!isHave)
{
var model = new RB_ReturnMoney_Batch()
{
Id = 0,
BatchName = DateTime.Now.ToString("yyyyMM") + "返佣",
TotalMoney = 0,
CreateBy = uid,
CreateDate = DateTime.Now,
GroupId = gid
};
//查询符合返佣条件的学员(非订单)
var list = returnComissionRepository.GetListBySetBatch(gid, type);
if (list.Any())
{
//开始生成用户待提现的金额
var userResult = list.GroupBy(x => new { x.OrderSourceType, x.OrderSourceId }).Select(g => (new RB_Order_ReturnComission_ViewModel
{
OrderSourceType = g.Key.OrderSourceType,
OrderSourceId = g.Key.OrderSourceId,
CommissionMoeny = g.Sum(item => item.CommissionMoeny),
CommissionReType = type
}));
if (userResult.Any())
{
//更新用户主表信息
userResult.ToList().ForEach(x =>
{
var userModel = userReturnComissionRepository.GetModelBySourceId(x.OrderSourceType, x.OrderSourceId, x.CommissionType);
if (userModel != null && userModel.UserId > 0)
{
userModel.CanCashOutMoney += x.CommissionMoeny;
userModel.UnSettlementMoney -= x.CommissionMoeny;
userModel.SttlementMoney += x.CommissionMoeny;
Dictionary<string, object> userKeyValues = new Dictionary<string, object>()
{
{ nameof(RB_User_ReturnComission_ViewModel.SttlementMoney),userModel.SttlementMoney},
{ nameof(RB_User_ReturnComission_ViewModel.CanCashOutMoney),userModel.CanCashOutMoney},
{ nameof(RB_User_ReturnComission_ViewModel.UnSettlementMoney),userModel.UnSettlementMoney}
};
List<WhereHelper> userWheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_User_ReturnComission_ViewModel.UserType),
FiledValue=userModel.UserType,
OperatorEnum= OperatorEnum.Equal
},
new WhereHelper()
{
FiledName=nameof(RB_User_ReturnComission_ViewModel.UserId),
FiledValue=userModel.UserId,
OperatorEnum= OperatorEnum.Equal
},
new WhereHelper()
{
FiledName=nameof(RB_User_ReturnComission_ViewModel.CommissionType),
FiledValue=userModel.CommissionType,
OperatorEnum= OperatorEnum.Equal
}
};
userReturnComissionRepository.Update(userKeyValues, userWheres);
}
else
{
userModel = new RB_User_ReturnComission_ViewModel()
{
UserId = x.OrderSourceId,
UserType = x.OrderSourceType,
CommissionType = x.CommissionType,
CanCashOutMoney = x.CommissionMoeny,
CashOutMoney = 0,
GroupId = gid,
SttlementMoney = x.CommissionMoeny,
UnSettlementMoney = 0
};
userReturnComissionRepository.Insert(userModel);
}
});
}
model.TotalMoney = list.Sum(x => x.CommissionMoeny);
//添加主表返佣信息
model.Id = returnMoney_BatchRepository.Insert(model);
//更新子表数据
var ids = list.Select(x => x.Id);
returnComissionRepository.UpdateModelByBatch(model.Id, string.Join(',', ids));
return (true, $"执行成功,本期返佣标号为:{model.BatchName}");
}
else
{
return (false, $"执行失败,本期无返佣金额");
}
}
else
{
return (false, "当月份已执行返佣操作,请下月再试");
}
}
/// <summary>
/// 查询指定分页的提成数据
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="type"></param>
/// <param name="month"></param>
/// <param name="groupId"></param>
/// <returns></returns>
public List<RB_ReturnMoney_Batch_ViewModel> GetBatchListModule(int pageIndex, int pageSize, out long count, int type, string month,int groupId)
{
var list = returnMoney_BatchRepository.GetPageList(pageIndex, pageSize, out count, type, month, groupId);
if (list.Any())
{
list.ForEach(x => {
x.CreateByName = UserReidsCache.GetUserLoginInfo(x.CreateBy)?.AccountName ?? "";
});
}
return list;
}
public void FormatOrderCommissionByCourse(ref RB_Order_ReturnComission_ViewModel m, int courseId)
{
var courseModel = courseRepository.GetEntity(courseId);
if (courseModel != null)
{
var sellPrice = courseModel.SellPrice * ((100-(m.CommissionType == 1 ? courseModel.B2CRatio : courseModel.B2CReNewRatio)) / 100);
if (m.OrderSourceType == 1)
{
m.CommissionMoeny = sellPrice * ((m.CommissionType == 1 ? courseModel.B2CRbRatio : courseModel.B2CRNRatio)/100);
m.CommissionReType = m.CommissionType == 1 ? courseModel.B2CRbRatioType.ToInt() : courseModel.B2CRNRatioType.ToInt();
m.CommissionReValue = m.CommissionType == 1 ? courseModel.B2CRbRatioValue : courseModel.B2CRNRatioValue;
m.Remark = $"学员来源为:直客,学员为{(m.CommissionType == 1 ? "首次报名" : "续费报名")},本次报名金额为:{sellPrice},本次返佣金额为:{m.CommissionMoeny.ToString("0.00")}";
}
else if (m.OrderSourceType == 2)
{
var customerModel = customerRepository.GetEntity(m.OrderSourceId);
if (customerModel.CustomerType == 1)
{
m.CommissionMoeny = sellPrice * ((m.CommissionType == 1 ? courseModel.B2BRebateRatio : courseModel.B2BReNewRatio) / 100);
m.CommissionReType = m.CommissionType == 1 ? courseModel.B2BRebateRatioType.ToInt() : courseModel.B2BReNewRatioType.ToInt();
m.CommissionReValue = m.CommissionType == 1 ? courseModel.B2BRebateRatioValue : courseModel.B2BReNewRatioValue;
m.Remark = $"学员来源为:同业,学员为{(m.CommissionType == 1 ? "首次报名" : "续费报名")},本次报名金额为:{sellPrice},本次返佣金额为:{m.CommissionMoeny.ToString("0.00")}";
}
else
{
m.CommissionMoeny = sellPrice * ((m.CommissionType == 1 ? courseModel.SchoolRebateRatio : courseModel.SchoolReNewRatio) / 100);
m.CommissionReType = m.CommissionType == 1 ? courseModel.SchoolRebateRatioType.ToInt() : courseModel.SchoolReNewRatioType.ToInt();
m.CommissionReValue = m.CommissionType == 1 ? courseModel.SchoolRebateRatioValue : courseModel.SchoolReNewRatioValue;
m.Remark = $"学员来源为:校代,学员为{(m.CommissionType == 1 ? "首次报名" : "续费报名")},本次报名金额为:{sellPrice},本次返佣金额为:{m.CommissionMoeny.ToString("0.00")}";
}
}
else if (m.OrderSourceType == 3)
{
m.CommissionMoeny = sellPrice * ((m.CommissionType == 1 ? courseModel.InnerRecommendRatio : courseModel.InnerRecommendReNewRatio)/100);
m.CommissionReType = m.CommissionType == 1 ? courseModel.InnerRecommendRatioType.ToInt() : courseModel.InnerRecommendReNewRatioType.ToInt();
m.CommissionReValue = m.CommissionType == 1 ? courseModel.InnerRecommendRatioValue : courseModel.InnerRecommendReNewRatioValue.Value;
m.Remark = $"学员来源为:内部介绍,学员为{(m.CommissionType == 1 ? "首次报名" : "续费报名")},本次报名金额为:{sellPrice},本次返佣金额为:{m.CommissionMoeny.ToString("0.00")}";
}
else if (m.OrderSourceType == 4)
{
m.CommissionMoeny = sellPrice * ((m.CommissionType == 1 ? (courseModel.TransIntroductceRatio) : courseModel.TransIntroductceReNewRatio)/100);
m.CommissionReType = m.CommissionType == 1 ? courseModel.TransIntroductceRatioType.ToInt() : courseModel.TransIntroductceReNewRatioType.ToInt();
m.CommissionReValue = m.CommissionType == 1 ? courseModel.TransIntroductceRatioValue : courseModel.TransIntroductceReNewRatioValue;
m.Remark = $"学员来源为:学员转介绍,学员为{(m.CommissionType == 1 ? "首次报名" : "续费报名")},本次报名金额为:{sellPrice},本次返佣金额为:{m.CommissionMoeny.ToString("0.00")}";
}
}
else
{
//未匹配到课程,以防万一
m.CommissionMoeny = 0;
m.CommissionReType = 3;
m.CommissionReValue = 0;
m.Remark = "系统未匹配到对应的返佣信息,本订单返佣为0";
}
}
/// <summary>
/// 修改老订单
......@@ -868,43 +1111,43 @@ namespace Edu.Module.Course
}
#region 幸福存折
//重置返佣 幸福存折
if (orderModel.CustomerId > 0 && BalanceList.Any())
{
var balanceList = customer_BalanceDetailRepository.GetCustomerBalanceDetailListRepository(new RB_Customer_BalanceDetail_ViewModel() { Group_Id = demodel.Group_Id, OrderId = demodel.OrderId });
foreach (var item in BalanceList)
{
var bmodel = balanceList.Where(x => x.RebateType == item.RebateType).FirstOrDefault();
if (bmodel == null)
{
item.OrderId = demodel.OrderId;
item.OrderSource = (int)demodel.OrderSource;
customer_BalanceDetailRepository.Insert(item);
}
else
{
Dictionary<string, object> keyValues1 = new Dictionary<string, object>() {
{ nameof(RB_Customer_BalanceDetail_ViewModel.Money), item.Money},
{ nameof(RB_Customer_BalanceDetail_ViewModel.Description), item.Description},
{ nameof(RB_Customer_BalanceDetail_ViewModel.UpdateTime), DateTime.Now},
{ nameof(RB_Customer_BalanceDetail_ViewModel.PeopleNum), item.PeopleNum}
};
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_Customer_BalanceDetail_ViewModel.Id),
FiledValue = item.Id,
OperatorEnum =OperatorEnum.Equal
}
};
customer_BalanceDetailRepository.Update(keyValues1, wheres1);
}
}
var delBList = balanceList.Where(x => !BalanceList.Select(y => y.RebateType).Contains(x.RebateType)).ToList();
foreach (var item in delBList)
{
customer_BalanceDetailRepository.Delete(item);
}
}
////重置返佣 幸福存折
//if (orderModel.CustomerId > 0 && BalanceList.Any())
//{
// var balanceList = customer_BalanceDetailRepository.GetCustomerBalanceDetailListRepository(new RB_Customer_BalanceDetail_ViewModel() { Group_Id = demodel.Group_Id, OrderId = demodel.OrderId });
// foreach (var item in BalanceList)
// {
// var bmodel = balanceList.Where(x => x.RebateType == item.RebateType).FirstOrDefault();
// if (bmodel == null)
// {
// item.OrderId = demodel.OrderId;
// item.OrderSource = (int)demodel.OrderSource;
// customer_BalanceDetailRepository.Insert(item);
// }
// else
// {
// Dictionary<string, object> keyValues1 = new Dictionary<string, object>() {
// { nameof(RB_Customer_BalanceDetail_ViewModel.Money), item.Money},
// { nameof(RB_Customer_BalanceDetail_ViewModel.Description), item.Description},
// { nameof(RB_Customer_BalanceDetail_ViewModel.UpdateTime), DateTime.Now},
// { nameof(RB_Customer_BalanceDetail_ViewModel.PeopleNum), item.PeopleNum}
// };
// List<WhereHelper> wheres1 = new List<WhereHelper>() {
// new WhereHelper(){
// FiledName = nameof(RB_Customer_BalanceDetail_ViewModel.Id),
// FiledValue = item.Id,
// OperatorEnum =OperatorEnum.Equal
// }
// };
// customer_BalanceDetailRepository.Update(keyValues1, wheres1);
// }
// }
// var delBList = balanceList.Where(x => !BalanceList.Select(y => y.RebateType).Contains(x.RebateType)).ToList();
// foreach (var item in delBList)
// {
// customer_BalanceDetailRepository.Delete(item);
// }
//}
#endregion
}
else
......@@ -1165,15 +1408,15 @@ namespace Edu.Module.Course
}
}
//返佣幸福存折
if (flag && demodel.CustomerId > 0 && BalanceList.Any())
{
foreach (var item in BalanceList)
{
item.OrderId = OrderId;
item.OrderSource = (int)demodel.OrderSource;
customer_BalanceDetailRepository.Insert(item);
}
}
//if (flag && demodel.CustomerId > 0 && BalanceList.Any())
//{
// foreach (var item in BalanceList)
// {
// item.OrderId = OrderId;
// item.OrderSource = (int)demodel.OrderSource;
// customer_BalanceDetailRepository.Insert(item);
// }
//}
#endregion
#region 更新甲鹤小程序规格对应的库存
......@@ -1298,6 +1541,9 @@ namespace Edu.Module.Course
}
#endregion
// 处理返佣信息
SetReturnOrderCommission(demodel);
return flag;
}
......@@ -3255,10 +3501,83 @@ namespace Edu.Module.Course
}
};
order_GuestRepository.Update(keyValues, wheres);
//如果有效课时与总课时相等代表款已收完,更新佣金为可发放状态
if (gmodel.TotalHours <= validClassHours)
{
var studentMapping = student_OrderGuestRepository.GetStrOrderGuestListRepository(new RB_Student_OrderGuest_ViewModel() {
GuestId = guestId
});
if (studentMapping.Any()) {
UpdateReturnMoneyStatus(studentMapping.First().Student_Id, gmodel.OrderId);
}
}
}
return true;
}
/// <summary>
/// 更新返佣状态不可返佣-->待结算
/// </summary>
/// <param name="stuId"></param>
/// <param name="orderId"></param>
private void UpdateReturnMoneyStatus(int stuId,int orderId)
{
var model = returnComissionRepository.GetModelByOrderIdStuId(orderId, stuId);
if (model != null && model.Status == -1)
{
var userModel = userReturnComissionRepository.GetModelBySourceId(model.OrderSourceType, model.OrderSourceId, model.CommissionType);
userModel.UnSettlementMoney += model.CommissionMoeny;
Dictionary<string, object> userKeyValues = new Dictionary<string, object>()
{
{ nameof(RB_User_ReturnComission_ViewModel.UnSettlementMoney),userModel.UnSettlementMoney}
};
List<WhereHelper> userWheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_User_ReturnComission_ViewModel.UserType),
FiledValue=model.OrderSourceType,
OperatorEnum= OperatorEnum.Equal
},
new WhereHelper()
{
FiledName=nameof(RB_User_ReturnComission_ViewModel.UserId),
FiledValue=model.OrderSourceId,
OperatorEnum= OperatorEnum.Equal
},
new WhereHelper()
{
FiledName=nameof(RB_User_ReturnComission_ViewModel.CommissionType),
FiledValue=model.CommissionType,
OperatorEnum= OperatorEnum.Equal
}
};
userReturnComissionRepository.Update(userKeyValues, userWheres);
Dictionary<string, object> keyValues = new Dictionary<string, object>()
{
{ nameof(RB_Order_ReturnComission.Status),0}
};
List<WhereHelper> wheres = new List<WhereHelper>()
{
new WhereHelper()
{
FiledName=nameof(RB_Order_ReturnComission.StuId),
FiledValue=stuId,
OperatorEnum= OperatorEnum.Equal
},
new WhereHelper()
{
FiledName=nameof(RB_Order_ReturnComission.OrderId),
FiledValue=orderId,
OperatorEnum= OperatorEnum.Equal
}
};
returnComissionRepository.Update(keyValues, wheres);
}
}
/// <summary>
/// 初始化所有学生的课时
/// </summary>
......
using Edu.Model.Entity.Sell;
using Edu.Model.ViewModel.Sell;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Sell
{
public class RB_Order_ReturnComissionRepository:BaseRepository<RB_Order_ReturnComission>
{
/// <summary>
/// 根据OrderId和StuId查询实体
/// </summary>
/// <param name="orderid"></param>
/// <param name="stuid"></param>
/// <returns></returns>
public RB_Order_ReturnComission_ViewModel GetModelByOrderIdStuId(int orderid,int stuid)
{
var sql = "select * from RB_Order_ReturnComission where OrderId=@oid and StuId=@sid";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("oid", orderid);
parameters.Add("sid", stuid);
return Get<RB_Order_ReturnComission_ViewModel>(sql, parameters).ToList().FirstOrDefault();
}
/// <summary>
///
/// </summary>
/// <param name="groupId"></param>
/// <param name="type"></param>
/// <returns></returns>
public List<RB_Order_ReturnComission_ViewModel> GetListBySetBatch(int groupId,int type)
{
var sql = "select a.* from rb_order_returncomission a left join rb_student_orderguest b on a.OrderId=b.OrderId and a.StuId=b.Student_Id left join rb_order_guest c on b.GuestId=c.Id where (c.CompleteHours/c.TotalHours)>=(a.CommissionReValue/100) and a.`Status`=0 and c.CreateTime<date_add(curdate(),interval -day(curdate())+1 day) and a.GroupId=@gid and a.CommissionType=@type";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("gid", groupId);
parameters.Add("type", groupId);
return Get<RB_Order_ReturnComission_ViewModel>(sql, parameters).ToList();
}
/// <summary>
/// 发放佣金,标记主表ID
/// </summary>
/// <param name="batchId"></param>
/// <param name="ids"></param>
/// <returns></returns>
public bool UpdateModelByBatch(int batchId,string ids)
{
var sql = $"update rb_order_returncomission set Status=1,BatchId={batchId} where Id in(ids)";
return Execute(sql, null) > 0;
}
}
}
using Edu.Model.Entity.Sell;
using Edu.Model.ViewModel.Sell;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Sell
{
public class RB_ReturnMoney_BatchRepository:BaseRepository<RB_ReturnMoney_Batch>
{
/// <summary>
/// 获取提成分页数据
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="type"></param>
/// <param name="month"></param>
/// <param name="groupId"></param>
/// <returns></returns>
public List<RB_ReturnMoney_Batch_ViewModel> GetPageList(int pageIndex, int pageSize, out long count, int type, string month, int groupId)
{
string sql = "select a.Id,a.BatchName,TotalMoney,a.CreateBy,DATE_FORMAT(a.CreateDate,'%Y-%m-%d %H:%i:%S') as CreateDateStr";
sql += " from RB_ReturnMoney_Batch a";
sql += " where a.GroupId=@gid";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("gid", groupId);
if (!string.IsNullOrEmpty(month))
{
sql += " and DATE_FORMAT(a.CreateDate,'%Y-%m')=@month";
parameters.Add("month", month);
}
if (type != 0)
{
sql += " and a.CommissionType=@type";
parameters.Add("type", type);
}
sql += " order by a.CreateDate desc";
return GetPage<RB_ReturnMoney_Batch_ViewModel>(pageIndex, pageSize, out count, sql, parameters).ToList();
}
/// <summary>
/// 查询当月份是否存在提成
/// </summary>
/// <param name="groupId"></param>
/// <param name="month"></param>
/// <returns></returns>
public bool ExsitModelByMonth(int groupId,string month,int type)
{
var sql = "select Count(0) from RB_ReturnMoney_Batch where GroupId=@gid and DATE_FORMAT(a.CreateDate,'%Y-%m')=@month and a.CommissionType=@type";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("gid", groupId);
parameters.Add("month", month);
parameters.Add("type", type);
var result = ExecuteScalar(sql, parameters);
return Convert.ToInt32(result) > 0;
}
}
}
......@@ -119,6 +119,20 @@ WHERE 1=1
return Get<RB_Student_ViewModel>(builder.ToString(), parameters).ToList();
}
/// <summary>
/// 查询学员的有效订单数(正常,退课)
/// </summary>
/// <returns></returns>
public int GetStudentOrderCount(int studentId)
{
var sql = "select Count(0) from rb_student_orderguest a left join rb_order b on a.OrderId=b.OrderId where a.Student_Id=@stuId and b.OrderState!=3";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("stuId",studentId);
var result = ExecuteScalar(sql, parameters);
return Convert.ToInt32(result);
}
/// <summary>
/// 获取学生分页列表
/// </summary>
......
......@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.User
{
......@@ -164,5 +165,20 @@ WHERE 1=1
return GetPage<RB_Student_OrderGuest_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
}
/// <summary>
/// 根据退课编号查询学员信息
/// </summary>
/// <param name="backId"></param>
/// <returns></returns>
public RB_Student_OrderGuest_ViewModel GetModelByBackId(int backId)
{
var sql = "select c.* from rb_backclass_protocol a left join rb_student_backclass b on a.BackId = b.BackId left join rb_student_orderguest c on c.GuestId = b.GuestId where a.Id = @backId";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("backId", backId);
return Get<RB_Student_OrderGuest_ViewModel>(sql, parameters).FirstOrDefault();
}
}
}
using Edu.Model.Entity.User;
using Edu.Model.ViewModel.User;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.User
{
public class RB_User_ReturnComissionRepository : BaseRepository<RB_User_ReturnCommission>
{
/// <summary>
/// 根据用户类型和编号查询用户返佣金额
/// </summary>
/// <param name="type"></param>
/// <param name="id"></param>
/// <returns></returns>
public RB_User_ReturnComission_ViewModel GetModelBySourceId(int type,int id, int ctype)
{
var sql = "select * from RB_User_ReturnCommission where UserType=@ut and UserId=@uid and CommissionType=@ctype";
DynamicParameters parameters = new DynamicParameters();
parameters.Add("ut", type);
parameters.Add("uid", id);
parameters.Add("ctype", ctype);
return Get<RB_User_ReturnComission_ViewModel>(sql, parameters).ToList().FirstOrDefault();
}
}
}
......@@ -1288,7 +1288,7 @@ namespace Edu.WebApi.Controllers.Course
int priceDiscountType = param.GetInt("PriceDiscountType");
if (priceDiscountType <= 0)
{
//return ApiResult.ParamIsNull(message: "请选择【优惠类型】");
return ApiResult.ParamIsNull(message: "请选择【优惠类型】");
}
RB_Course_Preferential_Extend model = new RB_Course_Preferential_Extend()
{
......
......@@ -54,6 +54,63 @@ namespace Edu.WebApi.Controllers.Finance
/// </summary>
private readonly TeachingRewardsModule teachingRewardsModule = AOP.AOPHelper.CreateAOPObject<TeachingRewardsModule>();
/// <summary>
/// 生成指定类型的佣金
/// </summary>
/// <returns></returns>
public ApiResult SetUserReturnCommission()
{
var userInfo = base.UserInfo;
var dmodel = JObject.Parse(RequestParm.Msg.ToString());
int type = dmodel.GetInt("type", 0);
if (type != 0)
{
var result = orderModule.SetUserReturnMoneyModule(type, userInfo.Id, userInfo.Group_Id);
if (result.result)
{
return ApiResult.Success(result.message);
}
else
{
return ApiResult.Failed(result.message);
}
}
else
{
return ApiResult.Failed("请传入指定的返佣类型");
}
}
/// <summary>
/// 获取返佣或幸福存折操作列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetReturnCommissionList()
{
var userInfo = base.UserInfo;
var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var dmodel = JObject.Parse(RequestParm.Msg.ToString());
int type = dmodel.GetInt("type", 0);
string month = dmodel.GetStringValue("month");
if (type != 0)
{
var list = orderModule.GetBatchListModule(pageModel.PageIndex, pageModel.PageSize, out long count, type, month, userInfo.Group_Id);
pageModel.Count = Convert.ToInt32(count);
pageModel.PageData = list;
return ApiResult.Success("", pageModel);
}
else
{
return ApiResult.Failed("请传入指定的返佣类型");
}
}
/// <summary>
/// 获取班级/留学就业收支明细
/// </summary>
......
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