using Edu.Cache.User;
using Edu.Common.API;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.Bonus;
using Edu.Model.ViewModel.Sell;
using Edu.Module.Course;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Edu.WebApi.Controllers.Bonus
{
[Route("api/[controller]/[action]")]
[ApiExceptionFilter]
[ApiController]
[EnableCors("AllowCors")]
public class BonusController : BaseController
{
///
/// 获取课程顾问、市场达标奖金配置处理类对象
///
private readonly BonusConfigModule bonusConfigModule = new BonusConfigModule();
///
/// 员工人头奖励仓储层对象
///
private readonly EmployeeBonusModule employeeBonusModule = AOP.AOPHelper.CreateAOPObject();
#region 人头奖励配置
///
/// 获取课程顾问、市场达标奖金配置分页列表
///
///
[HttpPost]
public ApiResult GetBounsPlanPage()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject(RequestParm.Msg.ToString());
var query = new RB_Bonus_PlanExtend()
{
PlanName = base.ParmJObj.GetStringValue("PlanName"),
};
query.Group_Id = base.UserInfo.Group_Id;
List result = new List();
var list = bonusConfigModule.GetBounsPlanPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
foreach (var item in list)
{
string CreateByName = UserReidsCache.GetUserLoginInfo(item.CreateBy)?.AccountName ?? "";
result.Add(new
{
item.Id,
item.PlanName,
item.BasicSalary,
item.OpenBonus,
item.WorkAgeSalary,
item.ClueNumSalary,
item.SaleIds,
item.UseCourseIds,
item.NotUseCourseIds,
CreateByName,
item.PlanType,
item.PlanTypeStr,
CreateTime = Common.ConvertHelper.FormatTime(item.CreateTime),
item.DetailList,
item.SaleList,
item.UseCourseList,
item.NotUseCourseList,
item.MonthGoalMoney,
});
}
pageModel.Count = rowsCount;
pageModel.PageData = result;
return ApiResult.Success(data: pageModel);
}
///
/// 新增修改课程顾问、市场达标奖金配置
///
///
[HttpPost]
public ApiResult SetBounsPlan()
{
var query = new RB_Bonus_PlanExtend()
{
Id = base.ParmJObj.GetInt("Id"),
PlanType = base.ParmJObj.GetInt("PlanType"),
PlanName = base.ParmJObj.GetStringValue("PlanName"),
BasicSalary = base.ParmJObj.GetDecimal("BasicSalary"),
OpenBonus = base.ParmJObj.GetDecimal("OpenBonus"),
WorkAgeSalary = base.ParmJObj.GetDecimal("WorkAgeSalary"),
ClueNumSalary = base.ParmJObj.GetDecimal("ClueNumSalary"),
SaleIds = base.ParmJObj.GetStringValue("SaleIds"),
UseCourseIds = base.ParmJObj.GetStringValue("UseCourseIds"),
NotUseCourseIds = base.ParmJObj.GetStringValue("NotUseCourseIds"),
MonthGoalMoney = base.ParmJObj.GetDecimal("MonthGoalMoney"),
};
query.CreateBy = base.UserInfo.Id;
query.UpdateBy = base.UserInfo.Id;
query.CreateTime = DateTime.Now;
query.UpdateTime = DateTime.Now;
query.Group_Id = base.UserInfo.Group_Id;
query.Status = Common.Enum.DateStateEnum.Normal;
query.DetailList = new List();
string detailList = base.ParmJObj.GetStringValue("DetailList");
if (!string.IsNullOrEmpty(detailList))
{
JArray jarray = JArray.Parse(detailList);
if (jarray != null && jarray.Count > 0)
{
foreach (var jItem in jarray)
{
JObject jobj = JObject.Parse(jItem.ToString());
query.DetailList.Add(new RB_Bouns_PlanDetail_Extend()
{
DetailId = jobj.GetInt("DetailId"),
PlanId = jobj.GetInt("PlanId"),
StartNum = jobj.GetDecimal("StartNum"),
EndNum = jobj.GetDecimal("EndNum"),
Money = jobj.GetDecimal("Money"),
});
}
}
}
bool flag = bonusConfigModule.SetBonusPlanModule(query);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
///
/// 根据编号获取课程顾问、市场达标奖金配置
///
///
[HttpPost]
public ApiResult GetBonusPlan()
{
var Id = base.ParmJObj.GetInt("Id");
var model = bonusConfigModule.GetBonusPlanModule(Id);
return ApiResult.Success(data: model);
}
///
/// 根据编号删除课程顾问、市场达标奖金配置
///
///
[HttpPost]
public ApiResult RemoveBonusPlan()
{
var Id = base.ParmJObj.GetInt("Id");
var flag = bonusConfigModule.RemoveBonusPlanModule(Id);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
#endregion
#region 员工人头奖励
///
/// 生成员工人头奖励
///
///
[HttpPost]
public ApiResult CreateEmpBonus()
{
var userInfo = base.UserInfo;
var startDate = base.ParmJObj.GetStringValue("StartDate");
bool flag= employeeBonusModule.CreateEmployeeBonusModule(userInfo, out string message, startDate);
return flag ? ApiResult.Success() : ApiResult.Failed(message: message);
}
///
/// 订单金额发生改变
///
///
[HttpPost]
public ApiResult SetEmployeeBounsIssue()
{
//订单改变
var Ids = base.ParmJObj.GetStringValue("Ids");
bool flag = employeeBonusModule.SetEmployeeBounsIsIssueModule(Ids);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
///
/// 订单金额发生改变
///
///
[HttpPost]
public ApiResult ChangeOrder()
{
//订单改变
var OrderId = base.ParmJObj.GetInt("OrderId");
employeeBonusModule.ChangeEmployeeBonusModule(OrderId);
return ApiResult.Success();
}
///
/// 获取人头奖励分页列表
///
///
[HttpPost]
public ApiResult GetPersonnelPeriodPage()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject(RequestParm.Msg.ToString());
var query = new RB_Personnel_Period_Extend()
{
};
query.Group_Id = base.UserInfo.Group_Id;
List result = new List();
var list = employeeBonusModule.GetPersonnelPeriodPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
foreach (var item in list)
{
string CreateByName = UserReidsCache.GetUserLoginInfo(item.CreateBy)?.AccountName ?? "";
result.Add(new
{
item.Id,
item.Name,
item.Periods,
item.SumPrice,
item.Remark,
CreateByName,
item.Financials,
CreateTime = Common.ConvertHelper.FormatTime(item.CreateTime),
item.BonusList,
});
}
pageModel.Count = rowsCount;
pageModel.PageData = result;
return ApiResult.Success(data: pageModel);
}
///
/// 获取员工期数提成明细
///
///
[HttpPost]
public ApiResult GetPersonnelPeriodDetails()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject(RequestParm.Msg.ToString());
var query = new RB_Personnel_Bonus_Extend()
{
PeriodId = base.ParmJObj.GetInt("PeriodId"),
YearNum = base.ParmJObj.GetInt("YearNum"),
MonthNum = base.ParmJObj.GetInt("MonthNum"),
EmployeeId = base.ParmJObj.GetInt("EmployeeId")
};
query.Group_Id = base.UserInfo.Group_Id;
List result = new List();
var list = employeeBonusModule.GetPersonnelBonusPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
foreach (var item in list)
{
string EmployeeName = UserReidsCache.GetUserLoginInfo(item.EmployeeId)?.AccountName ?? "";
string CreateByName= UserReidsCache.GetUserLoginInfo(item.CreateBy)?.AccountName ?? "";
result.Add(new
{
item.Id,
item.PeriodId,
item.PlanId,
item.PlanType,
item.YearNum,
item.MonthNum,
item.EmployeeId,
EmployeeName,
item.CurGuestNum,
item.CurRewardMoney,
item.CurOrderMoney,
item.DeductionMoney,
item.FinishDeductionMoney,
item.CreateBy,
CreateByName,
CreateTime=Common.ConvertHelper.FormatTime(item.CreateTime),
item.IsReach,
IsReachStr= item.IsReach==1?"已达标":"未达标",
item.OpenBonus,
item.ClueNumSalary,
item.BeforeMoney,
item.DetailList,
item.DeductionList,
item.BonusLogList,
});
}
pageModel.Count = rowsCount;
pageModel.PageData = result;
return ApiResult.Success(data: pageModel);
}
#endregion
}
}