From 2e9ebcd201768c3c2cd2eed311155cf6886419f5 Mon Sep 17 00:00:00 2001
From: liaoxujun@qq.com <liaoxujun@qq.com>
Date: 星期一, 25 三月 2024 16:32:52 +0800
Subject: [PATCH] no message
---
CoreCms.Net.Services/Distribution/CoreCmsDistributionServices.cs | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 113 insertions(+), 3 deletions(-)
diff --git a/CoreCms.Net.Services/Distribution/CoreCmsDistributionServices.cs b/CoreCms.Net.Services/Distribution/CoreCmsDistributionServices.cs
index 4b557ab..4d4ecc8 100644
--- a/CoreCms.Net.Services/Distribution/CoreCmsDistributionServices.cs
+++ b/CoreCms.Net.Services/Distribution/CoreCmsDistributionServices.cs
@@ -1,7 +1,7 @@
/***********************************************************************
- * Project: CoreCms
+ * Project: baifenBinfa
* ProjectName: 鐧惧垎鍏垫硶绠$悊绯荤粺
- * Web: hhtp://chuanyin.com
+ * Web: http://chuanyin.com
* Author:
* Email:
* CreateTime: 202403/02
@@ -19,6 +19,7 @@
using CoreCms.Net.IServices;
using CoreCms.Net.Loging;
using CoreCms.Net.Model.Entities;
+using CoreCms.Net.Model.Entities.Distribution;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.DTO.Distribution;
using CoreCms.Net.Model.ViewModels.UI;
@@ -27,7 +28,9 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NPOI.SS.Formula.Functions;
+using Org.BouncyCastle.Asn1.Cmp;
using SqlSugar;
+using static CoreCms.Net.Configuration.GlobalEnumVars;
namespace CoreCms.Net.Services
@@ -48,7 +51,9 @@
private readonly ICoreCmsOrderRepository _orderRepository;
private readonly ICoreCmsSettingServices _settingServices;
private readonly IUnitOfWork _unitOfWork;
- public CoreCmsDistributionServices(IUnitOfWork unitOfWork, ICoreCmsDistributionRepository dal, ICoreCmsDistributionOrderRepository distributionOrderRepository, ICoreCmsUserRepository userRepository, ICoreCmsGoodsRepository goodsRepository, ICoreCmsUserGradeRepository userGradeRepository, ICoreCmsSettingServices settingServices, ICoreCmsOrderRepository orderRepository, ICoreCmsDistributionGradeRepository distributionGradeRepository, ICoreCmsDistributionResultRepository distributionResultRepository, ICoreCmsDistributionConditionServices coreCmsDistributionConditionServices)
+ private readonly ICoreCmsUserBalanceServices _userBalanceServices;
+
+ public CoreCmsDistributionServices(IUnitOfWork unitOfWork, ICoreCmsDistributionRepository dal, ICoreCmsDistributionOrderRepository distributionOrderRepository, ICoreCmsUserRepository userRepository, ICoreCmsGoodsRepository goodsRepository, ICoreCmsUserGradeRepository userGradeRepository, ICoreCmsSettingServices settingServices, ICoreCmsOrderRepository orderRepository, ICoreCmsDistributionGradeRepository distributionGradeRepository, ICoreCmsDistributionResultRepository distributionResultRepository, ICoreCmsDistributionConditionServices coreCmsDistributionConditionServices, ICoreCmsUserBalanceServices userBalanceServices)
{
this._dal = dal;
_distributionOrderRepository = distributionOrderRepository;
@@ -62,6 +67,9 @@
_coreCmsDistributionConditionServices = coreCmsDistributionConditionServices;
base.BaseDal = dal;
_unitOfWork = unitOfWork;
+ _userBalanceServices = userBalanceServices;
+
+
}
#region 鑾峰彇缁忛攢鍟嗕俊鎭�
@@ -624,8 +632,110 @@
{
return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
}
+
+
#endregion
+ public async Task<(decimal,DateTime?, DateTime?)> AchievementTotal(int UserId)
+ {
+ var StartTime= await _unitOfWork.GetDbClient()
+ .Queryable<DistributionAchievement>()
+ .Where(x=>x.userID == UserId&&x.isdelete==false)
+ .Select(x=>x.endTime)
+ .OrderByDescending(x=>x)
+ .FirstAsync();
+ if (StartTime == null)
+ ///鏈�澶氱粺璁′袱骞村唴鐨勪笟缁�
+ StartTime = DateTime.Now.AddYears(-2);
+ else
+ StartTime= StartTime.Value.AddSeconds(1);
+ var endTime = DateTime.Now;
+ //payStatus = (int)GlobalEnumVars.OrderPayStatus.Refunded,
+ // status = (int)GlobalEnumVars.OrderStatus.Complete
+ //var result = await _balanceServices.Change(item.userId, (int)GlobalEnumVars.UserBalanceSourceTypes.Distribution,
+ // item.amount, item.orderId);
+ var total= await _unitOfWork.GetDbClient().Queryable<CoreCmsOrder>().Where(x => x.status == (int)GlobalEnumVars.OrderStatus.Complete
+ && (x.payStatus != (int)GlobalEnumVars.OrderPayStatus.No || x.payStatus != (int)GlobalEnumVars.OrderPayStatus.Refunded)
+ && x.isdel == false
+ && x.updateTime > StartTime
+ && x.updateTime < endTime
+ ).SumAsync(x => x.orderAmount);
+ var orderToler= await _unitOfWork.GetDbClient().Queryable<DistributionAchievementOrder>().Where(x => x.userID == UserId
+ && x.createTime > StartTime
+ && x.createTime < endTime).SumAsync(x => x.achievementTotal);
+ total = total + orderToler;
+ if (total==0)
+ return (total,null, null);
+ else
+ return (total, StartTime, endTime);
+ }
+
+ public async Task<decimal> AchievementBonus(decimal AttributeTotal)
+ {
+
+ var allConfigs = await _settingServices.GetConfigDictionaries();
+ var key = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.DictionaryAchievementSet).ObjectToInt(0);
+ return AttributeTotal *(decimal)key / 100;
+ }
+
+ public async Task<bool> SettledAchievement(int UserId)
+ {
+ //闈炰緵搴斿晢锛屽仠姝�
+ var da = await _dal.GetCountAsync(x => x.userId == UserId && x.verifyStatus == (int)GlobalEnumVars.DistributionVerifyStatus.VerifyYes, isDataCache: true, cacheTimes: 1);
+ if (da == 0)
+ return true;
+ var att = await AchievementTotal(UserId);
+ if(att.Item1>0)
+ {
+ DistributionAchievement oder = new DistributionAchievement
+ {
+ achievementTotals = att.Item1,
+ achievementBonus = await AchievementBonus(att.Item1),
+ createBy="绯荤粺缁撶畻",
+ createTime=DateTime.Now,
+ startTime=att.Item2,
+ endTime = att.Item3,
+ userID = UserId
+
+ };
+ //寤虹珛缁撶畻鍗�
+ var id= await _unitOfWork.GetDbClient().Insertable(oder).ExecuteCommandIdentityIntoEntityAsync();
+ var a= await _userBalanceServices.Change(UserId, (int )UserBalanceSourceTypes.DistributionAchievement,
+ oder.achievementBonus,id.ToString());
+ if(a.code!=0)
+ {
+ NLogUtil.WriteAll(NLog.LogLevel.Fatal, LogType.DataBase, "缁忛攢鍟嗕笟缁╂彁鎴愬啓鍏ヤ綑棰濆け璐�", a.msg);
+ return false;
+ }
+ return true;
+ }
+ return true;
+ }
+
+
+ public async Task<bool> CreateDistributionAchievementOrder(CreateDAOrderInParam Parma)
+ {
+ //闈炰緵搴斿晢锛屽仠姝�
+ var da= await _dal.GetCountAsync(x=>x.userId== Parma.UserID && x.verifyStatus== (int)GlobalEnumVars.DistributionVerifyStatus.VerifyYes,isDataCache:true,cacheTimes:1);
+ if (da == 0)
+ return true;
+ var oder = new DistributionAchievementOrder
+ {
+ achievementTotal = Parma.Money,
+ createBy = "缁忛攢鍟嗕笟缁╁啓鍏�",
+ createTime = DateTime.Now,
+ orderId = Parma.OderId,
+ userID = Parma.UserID,
+ orderType=(int ) Parma.SourceTypes
+
+
+
+
+ };
+
+ return await _unitOfWork.GetDbClient().Updateable(oder).ExecuteCommandAsync()>0;
+
+ }
}
}
--
Gitblit v1.9.1