using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Edu.AOP; using Edu.Cache.User; using Edu.Cache.WeChat; using Edu.Common.API; using Edu.Common.Plugin; using Edu.Model.ViewModel.Course; using Edu.Model.ViewModel.Sell; using Edu.Model.ViewModel.User; using Edu.Module.Course; using Edu.Module.User; using Edu.Repository.Course; using Edu.WebApi.Filter; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace Edu.WebApi.Controllers.User { [Route("api/[controller]/[action]")] [ApiExceptionFilter] [ApiController] [EnableCors("AllowCors")] public class UserInfoController : BaseController { /// /// 账户相关处理类对象 /// private readonly AccountModule accountModule = AOPHelper.CreateAOPObject(); /// /// 员工处理类对象 /// private readonly EmployeeModule employeeModule = new EmployeeModule(); /// /// 教务奖励处理类对象 /// private readonly SellCommissionModule sellCommissionModule = new SellCommissionModule(); /// /// 教师奖励明细 /// private readonly TeachingRewardsModule teachingRewardsModule = new TeachingRewardsModule(); /// /// 订单处理类对象 /// private readonly OrderModule orderModule = new OrderModule(); #region 个人资料-密码修改 /// /// 重置用户密码信息 /// /// [HttpPost] public ApiResult UpdateUserPassword() { var OldPassWord = base.ParmJObj.GetStringValue("OldPassWord"); var NewPassWord = base.ParmJObj.GetStringValue("NewPassWord"); var NewSurePassWord = base.ParmJObj.GetStringValue("NewSurePassWord"); if (string.IsNullOrWhiteSpace(OldPassWord) || string.IsNullOrWhiteSpace(NewPassWord) || string.IsNullOrWhiteSpace(NewSurePassWord)) { return ApiResult.Failed(message: "请输入密码"); } if (OldPassWord.Equals(NewPassWord)) { return ApiResult.Failed(message: "新密码与旧密码不能一致"); } else { var extModel = employeeModule.GetEmployeeModule(base.UserInfo.Id, base.UserInfo.AccountId, (int)base.UserInfo.AccountType); if (extModel == null) { return ApiResult.Failed(message: "员工信息不存在"); } if (extModel.Password != Common.DES.Encrypt(OldPassWord)) { return ApiResult.Failed(message: "旧密码输入错误"); } if (extModel.Password == Common.DES.Encrypt(NewSurePassWord)) { return ApiResult.Failed(message: "新密码与旧密码不能一致"); } if (!NewSurePassWord.Equals(NewPassWord)) { return ApiResult.Failed(message: "新密码输入不一致"); } List list = new List { new RB_Account_ViewModel { Id = base.UserInfo.Id, AccountId = base.UserInfo.AccountId, AccountType = base.UserInfo.AccountType, Group_Id = base.UserInfo.Group_Id } }; bool result = accountModule.SetBatchResetPassword(list, NewPassWord); if (result) { return ApiResult.Success(message: "更新密码成功"); } else { return ApiResult.Failed(message: "更新密码失败"); } } } #endregion #region 个人资料-账户资料 /// /// 添加修改管理者 SetManager /// /// [HttpPost] public ApiResult SetEmployeeBaseInfo() { var extModel = new Employee_ViewModel() { EmployeeName = base.ParmJObj.GetStringValue("EmployeeName"), EmployeeTel = base.ParmJObj.GetStringValue("EmployeeTel"), UserIcon = base.ParmJObj.GetStringValue("UserIcon"), Email = base.ParmJObj.GetStringValue("Email"), School_Id = base.ParmJObj.GetInt("School_Id"), }; var updateModel = employeeModule.GetEmployeeModule(base.UserInfo.Id, base.UserInfo.AccountId, (int)base.UserInfo.AccountType); updateModel.EmployeeName = extModel.EmployeeName; updateModel.EmployeeTel = extModel.EmployeeTel; updateModel.UserIcon = extModel.UserIcon; updateModel.Email = extModel.Email; updateModel.School_Id = extModel.School_Id; updateModel.UpdateBy = base.UserInfo.Id; updateModel.UpdateTime = DateTime.Now; #region 获取企业微信token string TXLToken = "";//企业微信通讯录token if (!string.IsNullOrEmpty(updateModel.WorkUserId)) { var configmodel = employeeModule.GetWeChatConfigModel(base.UserInfo.Group_Id); if (configmodel != null && configmodel.Enable == 1) { //获取通讯录token TXLToken = WeChatReidsCache.GetToken(Cache.CacheKey.QYWeChat_TelToken_Key + base.UserInfo.Group_Id); if (string.IsNullOrEmpty(TXLToken)) { var TelToken = ThirdCore.QYWinXin.QYWeiXinHelper.GetToken(configmodel.WX_CorpId, configmodel.Employee_Secret); if (TelToken.errcode == Senparc.Weixin.ReturnCode_Work.请求成功) { WeChatReidsCache.TokenSet(Cache.CacheKey.QYWeChat_TelToken_Key + base.UserInfo.Group_Id, TelToken.access_token, TelToken.expires_in - 1); TXLToken = TelToken.access_token; } else { return ApiResult.Failed("企业微信token请求失败"); } } } } #endregion bool flag = employeeModule.SetEmployeeModule(updateModel, TXLToken); if (flag) { UserReidsCache.ClearUserLoginCache(base.UserInfo.Id); } return flag ? ApiResult.Success() : ApiResult.Failed(); } #endregion #region 个人中心 [HttpPost] public ApiResult GetUserCenterInfo() { #region 新同事 var employeeList = employeeModule.GetEmployeeListModule(new Employee_ViewModel { StartEntryTime = System.DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd"), EndEntryTime = System.DateTime.Now.ToString("yyyy-MM-dd"), Group_Id = base.UserInfo.Group_Id }); var employeeListResult = employeeList.Select(x => new { x.EmployeeName, x.DeptName, x.PostName, x.AccountRemark, x.AccountId, x.AccountType, x.School_Id, x.Id }); #endregion #region 提成情况 //未完成的订单数 var orderList = orderModule.GetOrderNoComplete(new RB_Order_ViewModel { OrderState = Common.Enum.Course.OrderStateEnum.Normal, Group_Id = base.UserInfo.Group_Id, EnterID = base.UserInfo.Id }); //课程进度未达标<15% var guestList = orderModule.GetOrderGuestListByEnterID(new RB_Order_Guest_ViewModel { Group_Id = base.UserInfo.Group_Id, EnterID = base.UserInfo.Id }); //本月提成 decimal totalCommiommission = 0; int sureStatus = -1;//本月提成确认状态,-1未生成提成,0-未确认,1-已确认 int commissionId = 0;//当月提成的id #region 我的提成(销售) var extModel = new RB_Sell_Commission_Details_ViewModel() { PeriodsTime = System.DateTime.Now.ToString("yyyy-MM-01"), UserId = base.UserInfo.Id, Group_Id = base.UserInfo.Group_Id }; var userList = sellCommissionModule.GetSellCommissionByUser(extModel); if (userList != null && userList.Any()) { totalCommiommission = userList.Sum(x => x.CurrentPeriodMoney + x.CurrentExtraMoney + x.DeductionMoney + x.DeductionExtraMoney); sureStatus = userList.FirstOrDefault().SureStatus; commissionId = userList.FirstOrDefault().Id; } else { userList = sellCommissionModule.GetEstimateSellCommissionInfo(System.DateTime.Now.ToString("yyyy-MM-01"), base.UserInfo); if (userList != null && userList.Any()) { totalCommiommission = userList.Sum(x => x.CurrentPeriodMoney + x.CurrentExtraMoney + x.DeductionMoney + x.DeductionExtraMoney); } } #endregion #endregion #region 奖金情况 //本月提成 decimal totalTCommiommission = 0; int sureTStatus = -1;//本月提成确认状态,-1未生成提成,0-未确认,1-已确认 int commissionTId = 0;//当月提成的id #region 我的提成(销售) var tExtModel = new RB_Teaching_BonusDetail_ViewModel() { Month = System.DateTime.Now.ToString("yyyy-MM-01"), TeacherId = base.UserInfo.AccountId, Group_Id = base.UserInfo.Group_Id }; var teacherList = teachingRewardsModule.GetListByTeacherId(tExtModel); if (teacherList != null && teacherList.Any()) { totalTCommiommission = teacherList.Sum(x => x.Money); sureTStatus = teacherList.FirstOrDefault().SureStatus; commissionTId = teacherList.FirstOrDefault().Id; } else { teacherList = teachingRewardsModule.GetEstimateTeachingBonusAdd(new RB_Teaching_Bonus_ViewModel { Month = System.DateTime.Now.ToString("yyyy-MM"), TeacherIds = base.UserInfo.Id.ToString() }, base.UserInfo); if (teacherList != null && teacherList.Any()) { totalTCommiommission = teacherList.Sum(x => x.Money); } } #endregion #endregion return ApiResult.Success("", new { EmployeeListResult = employeeListResult, OrderNoCompleteNum = orderList.Count(), CourseNum = guestList.Count(), TotalCommiommission = totalCommiommission, CommissionId = commissionId, SureStatus = sureStatus, TotalTCommiommission = totalTCommiommission, CommissionTId = commissionTId, SureTStatus = sureTStatus, }); } /// /// 首页个人中心,-我的提成 /// /// public ApiResult GetUserSellCommission() { string periodsTime = base.ParmJObj.GetStringValue("PeriodsTime"); if (string.IsNullOrWhiteSpace(periodsTime)) { periodsTime = System.DateTime.Now.AddMonths(-6).ToString("yyyy-MM-01"); } var extModel = new RB_Sell_Commission_Details_ViewModel() { PeriodsTime = periodsTime, UserId = base.UserInfo.Id, Group_Id = base.UserInfo.Group_Id }; #region 我的提成(销售) var userList = sellCommissionModule.GetSellCommissionByUser(extModel); #endregion /// List teacherList = new List(); //if (base.UserInfo.AccountType == Common.Enum.User.AccountTypeEnum.Teacher) //{ // #region 我的提成(老师课时费) // var tExtModel = new RB_Teaching_BonusDetail_ViewModel() // { // Month = base.ParmJObj.GetStringValue("PeriodsTime"), // TeacherId = base.UserInfo.AccountId, // Group_Id = base.UserInfo.Group_Id // }; // teacherList = teachingRewardsModule.GetListByTeacherId(tExtModel); // #endregion //} DateTime startTime = Convert.ToDateTime(periodsTime); DateTime endTime = System.DateTime.Now; List commiommissionList = new List(); for (DateTime dt = startTime; dt <= endTime; dt = dt.AddMonths(1)) { decimal totalCommiommission = userList.Where(x => x.PeriodsTime == dt.ToString("yyyy-MM")).Sum(x => x.CurrentPeriodMoney + x.CurrentExtraMoney + x.DeductionMoney + x.DeductionExtraMoney); //if (teacherList != null && teacherList.Any()) //{ // totalCommiommission += teacherList.Where(x => x.Month == startTime.ToString("yyyy-MM")).Sum(x => x.Money); //} commiommissionList.Add(new { YearStr = dt.Year, MonthStr = dt.Month, TotalCommiommission = totalCommiommission }); } return ApiResult.Success("", commiommissionList); } /// /// 首页个人中心,-我的奖金 /// /// public ApiResult GetTeacherSellCommission() { string periodsTime = base.ParmJObj.GetStringValue("PeriodsTime"); if (string.IsNullOrWhiteSpace(periodsTime)) { periodsTime = System.DateTime.Now.AddMonths(-6).ToString("yyyy-MM-01"); } List teacherList = new List(); if (base.UserInfo.AccountType == Common.Enum.User.AccountTypeEnum.Teacher) { #region 我的提成(老师课时费) var tExtModel = new RB_Teaching_BonusDetail_ViewModel() { Month = base.ParmJObj.GetStringValue("PeriodsTime"), TeacherId = base.UserInfo.AccountId, Group_Id = base.UserInfo.Group_Id }; teacherList = teachingRewardsModule.GetListByTeacherId(tExtModel); #endregion } DateTime startTime = Convert.ToDateTime(periodsTime); DateTime endTime = System.DateTime.Now; List commiommissionList = new List(); for (DateTime dt = startTime; dt <= endTime; dt = dt.AddMonths(1)) { decimal totalCommiommission = 0; if (teacherList != null && teacherList.Any()) { totalCommiommission += teacherList.Where(x => x.Month == startTime.ToString("yyyy-MM")).Sum(x => x.Money); } commiommissionList.Add(new { YearStr = dt.Year, MonthStr = dt.Month, TotalCommiommission = totalCommiommission }); } return ApiResult.Success("", commiommissionList); } /// /// 确认销售提成 /// /// public ApiResult UpdateSureTeachingBonusDetail() { int Id = base.ParmJObj.GetInt("Id"); int UserId = base.UserInfo.AccountId; bool retult = teachingRewardsModule.UpdateSureTeachingBonusDetail(UserId, Id); return retult ? ApiResult.Success("") : ApiResult.Failed("确认失败"); } /// /// 确认销售提成 /// /// public ApiResult UpdatSureSellCommission() { int Id = base.ParmJObj.GetInt("Id"); int UserId = base.UserInfo.Id; bool retult = sellCommissionModule.UpdateSureSellCommission(UserId, Id); return retult ? ApiResult.Success("") : ApiResult.Failed("确认失败"); } #endregion } }