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; ...@@ -7,6 +7,7 @@ using Edu.Common.Enum.Course;
using Edu.Common.Plugin; using Edu.Common.Plugin;
using Edu.Model.CacheModel; using Edu.Model.CacheModel;
using Edu.Model.Entity.Finance; using Edu.Model.Entity.Finance;
using Edu.Model.Entity.Sell;
using Edu.Model.ViewModel.Contract; using Edu.Model.ViewModel.Contract;
using Edu.Model.ViewModel.Course; using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Finance; using Edu.Model.ViewModel.Finance;
...@@ -100,6 +101,12 @@ namespace Edu.Module.Course ...@@ -100,6 +101,12 @@ namespace Edu.Module.Course
/// </summary> /// </summary>
private readonly StudentBillModule studentBillModule = new StudentBillModule(); 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>
/// 获取学员信息 /// 获取学员信息
/// </summary> /// </summary>
...@@ -791,9 +798,80 @@ namespace Edu.Module.Course ...@@ -791,9 +798,80 @@ namespace Edu.Module.Course
{ nameof(RB_BackClass_Protocol_ViewModel.PartyASignDate),DateTime.Now}, { nameof(RB_BackClass_Protocol_ViewModel.PartyASignDate),DateTime.Now},
{ nameof(RB_BackClass_Protocol_ViewModel.SignDate),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)); 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> /// <summary>
/// 退课协议,销售确认【0826新增生成财务单据】 /// 退课协议,销售确认【0826新增生成财务单据】
/// </summary> /// </summary>
......
This diff is collapsed.
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 ...@@ -119,6 +119,20 @@ WHERE 1=1
return Get<RB_Student_ViewModel>(builder.ToString(), parameters).ToList(); 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>
/// 获取学生分页列表 /// 获取学生分页列表
/// </summary> /// </summary>
......
...@@ -5,6 +5,7 @@ using System; ...@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.User namespace Edu.Repository.User
{ {
...@@ -164,5 +165,20 @@ WHERE 1=1 ...@@ -164,5 +165,20 @@ WHERE 1=1
return GetPage<RB_Student_OrderGuest_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList(); 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 ...@@ -1288,7 +1288,7 @@ namespace Edu.WebApi.Controllers.Course
int priceDiscountType = param.GetInt("PriceDiscountType"); int priceDiscountType = param.GetInt("PriceDiscountType");
if (priceDiscountType <= 0) if (priceDiscountType <= 0)
{ {
//return ApiResult.ParamIsNull(message: "请选择【优惠类型】"); return ApiResult.ParamIsNull(message: "请选择【优惠类型】");
} }
RB_Course_Preferential_Extend model = new RB_Course_Preferential_Extend() RB_Course_Preferential_Extend model = new RB_Course_Preferential_Extend()
{ {
......
...@@ -54,6 +54,63 @@ namespace Edu.WebApi.Controllers.Finance ...@@ -54,6 +54,63 @@ namespace Edu.WebApi.Controllers.Finance
/// </summary> /// </summary>
private readonly TeachingRewardsModule teachingRewardsModule = AOP.AOPHelper.CreateAOPObject<TeachingRewardsModule>(); 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>
/// 获取班级/留学就业收支明细 /// 获取班级/留学就业收支明细
/// </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