From d871b3c107c72c015b9bd6aaffd81878747f478b Mon Sep 17 00:00:00 2001
From: username@email.com <yzy2002yzy@163.com>
Date: 星期五, 12 四月 2024 08:39:03 +0800
Subject: [PATCH] 经销商推广费用,   用户积分

---
 CoreCms.Net.Task/HangfireDispose.cs                                                  |    3 
 CoreCms.Net.Model/FromBody/FMUpdate.cs                                               |    2 
 CoreCms.Net.Task/AutoSettleAchievementTotal.cs                                       |   37 ++++
 CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/achievementdetails.html |   58 +++++++
 CoreCms.Net.Configuration/SystemSettingConstVars.cs                                  |    9 +
 CoreCms.Net.Web.Admin/Controllers/Distribution/CoreCmsDistributionController.cs      |   34 ++++
 CoreCms.Net.Configuration/SystemSettingDictionary.cs                                 |    7 
 CoreCms.Net.Services/Distribution/CoreCmsDistributionServices.cs                     |  135 ++++++++++++++++
 CoreCms.Net.Web.Admin/wwwroot/views/user/userInfo/editParentId.html                  |    4 
 CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/index.html              |   10 
 CoreCms.Net.IServices/Distribution/ICoreCmsDistributionServices.cs                   |   16 ++
 CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/achievement.html        |   59 +++++++
 CoreCms.Net.Web.Admin/Controllers/User/CoreCmsUserController.cs                      |   25 +-
 CoreCms.Net.Model/ViewModels/DTO/Distribution/DistributionRankingDTO.cs              |   24 +++
 CoreCms.Net.Services/User/CoreCmsUserPointLogServices.cs                             |   15 +
 CoreCms.Net.Web.Admin/wwwroot/views/distribution/setting/index.html                  |   18 ++
 16 files changed, 428 insertions(+), 28 deletions(-)

diff --git a/CoreCms.Net.Configuration/SystemSettingConstVars.cs b/CoreCms.Net.Configuration/SystemSettingConstVars.cs
index d13ca62..2190b8d 100644
--- a/CoreCms.Net.Configuration/SystemSettingConstVars.cs
+++ b/CoreCms.Net.Configuration/SystemSettingConstVars.cs
@@ -949,6 +949,15 @@
         /// </summary>
         public static readonly string DictionaryAchievementSet = "dictionaryAchievementSet";
 
+        /// <summary>
+        /// 鎺ㄥ箍璐圭敤
+        /// </summary>
+        public static readonly string DictionaryTuiGuangFeiYong = "dictionaryTuiGuangFeiYong";
+        /// <summary>
+        /// 涓氱哗闂ㄦ
+        /// </summary>
+        public static readonly string DictionaryYeJiMenKan = "dictionaryYeJiMenKan";
+
 
     }
 }
\ No newline at end of file
diff --git a/CoreCms.Net.Configuration/SystemSettingDictionary.cs b/CoreCms.Net.Configuration/SystemSettingDictionary.cs
index 3a6cc86..9bc34fb 100644
--- a/CoreCms.Net.Configuration/SystemSettingDictionary.cs
+++ b/CoreCms.Net.Configuration/SystemSettingDictionary.cs
@@ -155,7 +155,7 @@
 
             di.Add(SystemSettingConstVars.PointDiscountedProportion, new DictionaryKeyValues() { sKey = "璁㈠崟绉垎鎶樼幇姣斾緥", sValue = "100" });
             di.Add(SystemSettingConstVars.OrdersPointProportion, new DictionaryKeyValues() { sKey = "璁㈠崟绉垎浣跨敤姣斾緥", sValue = "10" });
-            di.Add(SystemSettingConstVars.OrdersRewardProportion, new DictionaryKeyValues() { sKey = "璁㈠崟绉垎濂栧姳姣斾緥", sValue = "1" });
+            di.Add(SystemSettingConstVars.OrdersRewardProportion, new DictionaryKeyValues() { sKey = "璁㈠崟绉垎濂栧姳姣斾緥", sValue = "10" });
 
             di.Add(SystemSettingConstVars.SignAppointDateStatus, new DictionaryKeyValues() { sKey = "鎸囧畾鐗规畩鏃ユ湡鐘舵��", sValue = "false" });
             di.Add(SystemSettingConstVars.SignAppointDate, new DictionaryKeyValues() { sKey = "鎸囧畾鐗规畩鏃ユ湡", sValue = "" });
@@ -279,6 +279,11 @@
             //涓氱哗濂栧姳鎶�鏈洜瀛�
             di.Add(SystemSettingConstVars.DictionaryAchievementSet, new DictionaryKeyValues() { sKey = "涓氱哗濂栧姳", sValue = "2" });
 
+            //鎺ㄥ箍璐圭敤
+            di.Add(SystemSettingConstVars.DictionaryTuiGuangFeiYong, new DictionaryKeyValues() { sKey = "鎺ㄥ箍璐圭敤", sValue = "3" });
+            //涓氱哗闂ㄦ
+            di.Add(SystemSettingConstVars.DictionaryYeJiMenKan, new DictionaryKeyValues() { sKey = "涓氱哗闂ㄦ", sValue = "10000" });
+
             return di;
         }
 
diff --git a/CoreCms.Net.IServices/Distribution/ICoreCmsDistributionServices.cs b/CoreCms.Net.IServices/Distribution/ICoreCmsDistributionServices.cs
index 57806c9..bb3e172 100644
--- a/CoreCms.Net.IServices/Distribution/ICoreCmsDistributionServices.cs
+++ b/CoreCms.Net.IServices/Distribution/ICoreCmsDistributionServices.cs
@@ -133,6 +133,19 @@
         /// </summary>    
         /// <returns></returns>
         Task<bool> CreateDistributionAchievementOrder(CreateDAOrderInParam Parma);
+
+
+        /// <summary>
+        /// 缁撶畻鎵�鏈変緵搴斿晢鐨勭哗鏁堝鍔�
+        /// </summary>
+        /// <returns></returns>
+        Task<bool> SettledAllAchievement();
+
+        /// <summary>
+        ///     鑾峰彇缁忛攢鍟嗘帹骞胯垂
+        /// </summary>
+        /// <returns></returns>
+        List<DistributionRankingDTO> QueryAchievement(int UserId);
     }
     /// <summary>
     /// 鍒涘缓缁忛攢鍟嗚鍗曚笟缁╄緭鍑哄弬鏁�
@@ -155,6 +168,9 @@
         /// 閲戦
         /// </summary>
         public decimal Money { get; set; }
+
+
         
+
     }
 }
\ No newline at end of file
diff --git a/CoreCms.Net.Model/FromBody/FMUpdate.cs b/CoreCms.Net.Model/FromBody/FMUpdate.cs
index 21190b3..683abcd 100644
--- a/CoreCms.Net.Model/FromBody/FMUpdate.cs
+++ b/CoreCms.Net.Model/FromBody/FMUpdate.cs
@@ -209,7 +209,7 @@
         ///     涓婄骇搴忓垪
         /// </summary>
         [Required(ErrorMessage = "璇疯緭鍏ヤ笂绾у簭鍒�")]
-        public int parentId { get; set; }
+        public string parentId { get; set; }
 
         /// <summary>
         ///    鍘熶笂绾у簭鍒�
diff --git a/CoreCms.Net.Model/ViewModels/DTO/Distribution/DistributionRankingDTO.cs b/CoreCms.Net.Model/ViewModels/DTO/Distribution/DistributionRankingDTO.cs
index 83349d1..e22ec2f 100644
--- a/CoreCms.Net.Model/ViewModels/DTO/Distribution/DistributionRankingDTO.cs
+++ b/CoreCms.Net.Model/ViewModels/DTO/Distribution/DistributionRankingDTO.cs
@@ -8,6 +8,7 @@
  *        Description: 鏆傛棤
  ***********************************************************************/
 
+using SqlSugar;
 using System;
 
 namespace CoreCms.Net.Model.ViewModels.DTO.Distribution
@@ -39,5 +40,28 @@
         ///     璁㈠崟鏁�
         /// </summary>
         public decimal orderCount { get; set; }
+
+
+        /// <summary>
+        ///     寮�濮嬫椂闂�
+        /// </summary>
+        public string startTime { get; set; }
+
+        /// <summary>
+        ///     缁撴潫鏃堕棿
+        /// </summary>
+        public string endTime { get; set; }
+
+
+        /// <summary>
+        ///     缁╂晥鎬婚
+        /// </summary>
+        public string achievementTotals { get; set; }
+
+        /// <summary>
+        /// 缁╂晥濂栧姳鎬诲拰
+        /// </summary>		
+        public string achievementBonus { get; set; }
+
     }
 }
\ No newline at end of file
diff --git a/CoreCms.Net.Services/Distribution/CoreCmsDistributionServices.cs b/CoreCms.Net.Services/Distribution/CoreCmsDistributionServices.cs
index 4d4ecc8..091d16d 100644
--- a/CoreCms.Net.Services/Distribution/CoreCmsDistributionServices.cs
+++ b/CoreCms.Net.Services/Distribution/CoreCmsDistributionServices.cs
@@ -19,6 +19,7 @@
 using CoreCms.Net.IServices;
 using CoreCms.Net.Loging;
 using CoreCms.Net.Model.Entities;
+using CoreCms.Net.Model.Entities.baifenbingfa.apply;
 using CoreCms.Net.Model.Entities.Distribution;
 using CoreCms.Net.Model.ViewModels.Basics;
 using CoreCms.Net.Model.ViewModels.DTO.Distribution;
@@ -52,8 +53,10 @@
         private readonly ICoreCmsSettingServices _settingServices;
         private readonly IUnitOfWork _unitOfWork;
         private readonly ICoreCmsUserBalanceServices _userBalanceServices;
+        private readonly ICoreCmsUserServices _coreCmsUserServices;
 
-        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) 
+        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
+            , ICoreCmsUserServices coreCmsUserServices) 
         {
             this._dal = dal;
             _distributionOrderRepository = distributionOrderRepository;
@@ -68,7 +71,9 @@
             base.BaseDal = dal;
             _unitOfWork = unitOfWork;
             _userBalanceServices = userBalanceServices;
-          
+            _coreCmsUserServices = coreCmsUserServices;
+
+
 
         }
 
@@ -713,7 +718,106 @@
             return true;
         }
 
-      
+
+
+        public async Task<bool> SettledAllAchievement()
+        {
+           
+
+            //鏌ヨ鐢ㄦ埛  
+            var coreCmsUsers = await _userRepository.QueryListByClauseAsync(x => x.isDelete == false && x.status == 1);
+
+            foreach(var coreCmsUser in coreCmsUsers)
+            {  //闈炰緵搴斿晢锛屽仠姝�
+                var da = await _dal.GetCountAsync(x => x.userId == coreCmsUser.id && x.verifyStatus == (int)GlobalEnumVars.DistributionVerifyStatus.VerifyYes, isDataCache: true, cacheTimes: 1);
+                if (da == 0)
+                    continue;
+
+                //鏌ヨ鏄惁宸茬粡璁$畻杩囦簡
+                DateTime StartTime = new DateTime(DateTime.Now.AddYears(-1).Year, 1, 1);
+                DateTime endTime = new DateTime(DateTime.Now.Year, 1, 1).AddDays(-1);
+                var total = _unitOfWork.GetDbClient().Queryable<DistributionAchievement>().Where(x =>
+          x.isdelete == false
+          && x.userID == coreCmsUser.id
+          && x.startTime == StartTime
+          && x.endTime == endTime
+          ).ToList();
+                if (total != null && total.Count > 0)
+                    continue;
+
+                var att = await AchievementTotalAll(coreCmsUser.id);
+                if (att.Item1 > 0)
+                {
+                    DistributionAchievement oder = new DistributionAchievement
+                    {
+                        achievementTotals = att.Item1,
+                        achievementBonus = await AchievementBonuscount(att.Item1),
+                        createBy = "绯荤粺缁撶畻",
+                        createTime = DateTime.Now,
+                        startTime = att.Item2,
+                        endTime = att.Item3,
+                        userID = coreCmsUser.id
+
+                    };
+                    //寤虹珛缁撶畻鍗�
+                    var id = await _unitOfWork.GetDbClient().Insertable(oder).ExecuteCommandIdentityIntoEntityAsync();
+                    if (oder.achievementBonus > 0)
+                    {
+                        var jm = await _coreCmsUserServices.UpdateBalance(coreCmsUser.id, oder.achievementBonus, "缁忛攢鍟嗘帹骞胯垂鐢ㄥ啓鍏ヤ綑棰�");
+                        if (jm.code != 0)
+                        {
+                            NLogUtil.WriteAll(NLog.LogLevel.Fatal, LogType.DataBase, "缁忛攢鍟嗘帹骞胯垂鐢ㄥ啓鍏ヤ綑棰濆け璐�", jm.msg);
+                            return false;
+                        }
+                    }
+                   
+                    return true;
+                }
+
+            }
+
+
+          
+            return true;
+        }
+
+
+
+
+        public async Task<(decimal, DateTime?, DateTime?)> AchievementTotalAll(int UserId)
+        {
+
+
+            DateTime StartTime = new DateTime(DateTime.Now.AddYears(-1).Year, 1, 1);
+            DateTime endTime = new DateTime(DateTime.Now.Year, 1, 1);
+
+
+            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.userId == UserId
+            && x.updateTime > StartTime
+            && x.updateTime < endTime
+            ).SumAsync(x => x.orderAmount);
+
+            return (total, StartTime, endTime.AddDays(-1));
+        }
+
+
+        public async Task<decimal> AchievementBonuscount(decimal AttributeTotal)
+        {
+
+            var allConfigs = await _settingServices.GetConfigDictionaries();
+            var tuiGuangFeiYong = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.DictionaryTuiGuangFeiYong).ObjectToInt(0);
+            var yeJiMenKan = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.DictionaryYeJiMenKan).ObjectToInt(0);
+            if(AttributeTotal <= yeJiMenKan)
+            {
+                return 0;
+            }
+            return (AttributeTotal - (decimal)yeJiMenKan) * (decimal)tuiGuangFeiYong / 100;
+        }
+
+
         public async Task<bool> CreateDistributionAchievementOrder(CreateDAOrderInParam Parma)
         {
            //闈炰緵搴斿晢锛屽仠姝�
@@ -737,5 +841,30 @@
           return   await  _unitOfWork.GetDbClient().Updateable(oder).ExecuteCommandAsync()>0;
              
         }
+
+        /// <summary>
+        ///     鑾峰彇缁忛攢鍟嗘帹骞胯垂
+        /// </summary>
+        /// <returns></returns>
+        public  List<DistributionRankingDTO> QueryAchievement(int UserId)
+        {
+            var totals = _unitOfWork.GetDbClient().Queryable<DistributionAchievement>().Where(x =>
+        x.isdelete == false
+        && x.userID == UserId
+        ).OrderByDescending(x=>x.startTime).ToList();
+
+            var distributionRankingDTOs = new List<DistributionRankingDTO>();
+            foreach(var distributionAchievement in totals)
+            {
+                var distributionRankingDTO = new DistributionRankingDTO();
+                distributionRankingDTO.startTime = distributionAchievement.startTime.HasValue ? distributionAchievement.startTime.Value.ToString("yyyy-MM-dd") : "";
+                distributionRankingDTO.endTime = distributionAchievement.endTime.HasValue ? distributionAchievement.endTime.Value.ToString("yyyy-MM-dd") : "";
+                distributionRankingDTO.achievementTotals = distributionAchievement.achievementTotals.ToString("F2");
+                distributionRankingDTO.achievementBonus = distributionAchievement.achievementBonus.ToString("F2");
+                distributionRankingDTOs.Add(distributionRankingDTO);
+            }
+
+            return distributionRankingDTOs;
+        }
     }
 }
diff --git a/CoreCms.Net.Services/User/CoreCmsUserPointLogServices.cs b/CoreCms.Net.Services/User/CoreCmsUserPointLogServices.cs
index 23218bd..dff1bc2 100644
--- a/CoreCms.Net.Services/User/CoreCmsUserPointLogServices.cs
+++ b/CoreCms.Net.Services/User/CoreCmsUserPointLogServices.cs
@@ -23,6 +23,7 @@
 using CoreCms.Net.Utility.Helper;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Hosting;
+using NPOI.SS.Formula.Functions;
 using SqlSugar;
 
 
@@ -109,6 +110,7 @@
                 var settingServices = container.ServiceProvider.GetService<ICoreCmsSettingServices>();
                 var orderItemServices = container.ServiceProvider.GetService<ICoreCmsOrderItemServices>();
                 var productsServices = container.ServiceProvider.GetService<ICoreCmsProductsServices>();
+                var distributionServices = container.ServiceProvider.GetService<ICoreCmsDistributionServices>();
                 var allConfigs = await settingServices.GetConfigDictionaries();
                 //鑾峰彇绉垎鑾峰彇妯″紡
                 var pointGetModel = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointGetModel).ObjectToInt();
@@ -118,9 +120,16 @@
                     var ordersRewardProportion = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.OrdersRewardProportion).ObjectToInt();
                     if (ordersRewardProportion > 0)
                     {
-                        var point = Convert.ToInt32(money / ordersRewardProportion);
-                        await SetPoint(userId, point, (int)GlobalEnumVars.UserPointSourceTypes.PointTypeRebate,
-                            "璁㈠崟锛�" + orderId + " 濂栧姳");
+                        //濡傛灉鏄粡閿�鍟嗗氨涓嶈兘鑾峰緱绉垎
+                       var user =  await distributionServices.QueryListByClauseAsync(x => x.userId == userId && x.verifyStatus ==  1 && x.isDelete == false );//(int)GlobalEnumVars.DistributionVerifyStatus.VerifyYes
+
+                        if (user == null || user.Count == 0)
+                        {
+                            //濡傛灉鏄櫘閫氱敤鎴峰垯璐у緱绉垎
+                            var point = Convert.ToInt32(money / ordersRewardProportion);
+                            await SetPoint(userId, point, (int)GlobalEnumVars.UserPointSourceTypes.PointTypeRebate,
+                                "璁㈠崟锛�" + orderId + " 濂栧姳");
+                        }
                     }
                 }
                 else if (pointGetModel == 2)
diff --git a/CoreCms.Net.Task/AutoSettleAchievementTotal.cs b/CoreCms.Net.Task/AutoSettleAchievementTotal.cs
new file mode 100644
index 0000000..48e421e
--- /dev/null
+++ b/CoreCms.Net.Task/AutoSettleAchievementTotal.cs
@@ -0,0 +1,37 @@
+锘縰sing CoreCms.Net.IServices;
+using CoreCms.Net.Services;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CoreCms.Net.Task
+{
+    /// <summary>
+    /// 瀹氭椂璁$畻缁忛攢鍟嗘帹骞胯垂鐢�
+    /// </summary>
+    public class  AutoSettleAchievementTotal
+    {
+        private readonly ICoreCmsDistributionServices _coreCmsDistributionServices;
+
+        public AutoSettleAchievementTotal(ICoreCmsDistributionServices coreCmsDistributionServices)
+        {
+            _coreCmsDistributionServices = coreCmsDistributionServices;
+        }
+
+        public async System.Threading.Tasks.Task Execute()
+        {
+            DateTime datenow = DateTime.Now.Date;
+            DateTime januaryTenth = new DateTime(datenow.Year, 1, 10);
+            //姣忓ぉ鐨�0鐐瑰紑濮嬭绠�
+            if (datenow == januaryTenth && DateTime.Now.Hour >= 0 && DateTime.Now.Hour <= 2)
+            //if (true)
+            {
+                await _coreCmsDistributionServices.SettledAllAchievement();
+            }
+
+           
+        }
+    }
+}
diff --git a/CoreCms.Net.Task/HangfireDispose.cs b/CoreCms.Net.Task/HangfireDispose.cs
index f2c5be8..07fa16d 100644
--- a/CoreCms.Net.Task/HangfireDispose.cs
+++ b/CoreCms.Net.Task/HangfireDispose.cs
@@ -70,7 +70,8 @@
             //鑷姩鍙栨秷鏈嶅姟鍣ㄨ鍗曚换鍔�
             RecurringJob.AddOrUpdate<AutoCancelServiceOrderJob>("AutoCancelServiceOrderJob", s => s.Execute(), "0 0/5 * * * ? ", new RecurringJobOptions { TimeZone = TimeZoneInfo.Local }); // 姣�5鍒嗛挓鍙栨秷涓�娆¤鍗�
 
-
+            //瀹氭椂璁$畻缁忛攢鍟嗘帹骞胯垂鐢�
+            RecurringJob.AddOrUpdate<AutoSettleAchievementTotal>("AutoSettleAchievementTotal", s => s.Execute(), "0 0 0/1 * * ? ", new RecurringJobOptions { TimeZone = TimeZoneInfo.Local }); // 姣忓皬鏃惰绠楃粡閿�鍟嗘帹骞胯垂鐢�
         }
 
         #endregion
diff --git a/CoreCms.Net.Web.Admin/Controllers/Distribution/CoreCmsDistributionController.cs b/CoreCms.Net.Web.Admin/Controllers/Distribution/CoreCmsDistributionController.cs
index 26eb665..d9d042f 100644
--- a/CoreCms.Net.Web.Admin/Controllers/Distribution/CoreCmsDistributionController.cs
+++ b/CoreCms.Net.Web.Admin/Controllers/Distribution/CoreCmsDistributionController.cs
@@ -680,5 +680,39 @@
         }
 
         #endregion
+
+
+        #region 棰勮鏁版嵁============================================================
+
+        // POST: Api/CoreCmsDistribution/GetDetailsAchievement/10
+        /// <summary>
+        ///     棰勮鏁版嵁
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Description("棰勮鏁版嵁")]
+        public async Task<AdminUiCallBack> GetDetailsAchievement([FromBody] FMIntId entity)
+        {
+            var jm = new AdminUiCallBack();
+
+            var model = await _coreCmsDistributionServices.QueryByIdAsync(entity.id);
+            if (model == null)
+            {
+                jm.msg = "涓嶅瓨鍦ㄦ淇℃伅";
+                return jm;
+            }
+            var  distributionRankingDTOs = _coreCmsDistributionServices.QueryAchievement(model.userId);
+
+
+
+
+            jm.code = 0;
+            jm.data = distributionRankingDTOs;
+
+            return jm;
+        }
+
+        #endregion
     }
 }
\ No newline at end of file
diff --git a/CoreCms.Net.Web.Admin/Controllers/User/CoreCmsUserController.cs b/CoreCms.Net.Web.Admin/Controllers/User/CoreCmsUserController.cs
index a4b4ff1..2b8d304 100644
--- a/CoreCms.Net.Web.Admin/Controllers/User/CoreCmsUserController.cs
+++ b/CoreCms.Net.Web.Admin/Controllers/User/CoreCmsUserController.cs
@@ -1185,11 +1185,7 @@
         {
             var jm = new AdminUiCallBack();
 
-            if (entity.id == entity.parentId)
-            {
-                jm.msg = "绂佹璁剧疆鑷繁涓鸿嚜宸辩殑鎺ㄨ崘浜�";
-                return jm;
-            }
+           
 
             var model = await _coreCmsUserServices.QueryByIdAsync(entity.id);
             if (model == null)
@@ -1197,10 +1193,10 @@
                 jm.msg = "涓嶅瓨鍦ㄦ淇℃伅";
                 return jm;
             }
-
-            if (entity.parentId > 0)
+            var parentId = 0;
+            if (!string.IsNullOrEmpty(entity.parentId))
             {
-                var parentObj = await _coreCmsUserServices.QueryByIdAsync(entity.parentId);
+                var parentObj = await _coreCmsUserServices.QueryByClauseAsync( x=> x.mobile == entity.parentId && x.isDelete == false && x.status == 1);
                 if (parentObj == null)
                 {
                     jm.msg = "涓嶅瓨鍦ㄦ涓婄骇淇℃伅";
@@ -1212,10 +1208,19 @@
                     jm.msg = "涓嶅厑璁稿弻鏂逛簰鐩歌缃负涓婄骇";
                     return jm;
                 }
+
+                if (entity.id == parentObj.id)
+                {
+                    jm.msg = "绂佹璁剧疆鑷繁涓鸿嚜宸辩殑鎺ㄨ崘浜�";
+                    return jm;
+                }
+
+                parentId = parentObj.id;
             }
             else
             {
-                entity.parentId = 0;
+                jm.msg = "蹇呴』濉啓涓婄骇鎵嬫満";
+                return jm;
             }
 
            // var bl = await _coreCmsUserServices.UpdateAsync(p => new CoreCmsUser() { parentId = entity.parentId }, p => p.id == model.id);
@@ -1236,7 +1241,7 @@
             entity1.dec = "鐢ㄦ埛" + model.nickName + "鎺ㄨ崘浜鸿皟鏁�";
             entity1.reMake = "";
             entity1.oldData = entity.oldparentId + "";
-            entity1.data = entity.parentId + "";
+            entity1.data = parentId + "";
             entity1.createTime = DateTime.Now;
             entity1.upDataTime = entity1.createTime;
             entity1.createBy = name;
diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/achievement.html b/CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/achievement.html
index e69de29..ad6ee04 100644
--- a/CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/achievement.html
+++ b/CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/achievement.html
@@ -0,0 +1,59 @@
+<script type="text/html" template lay-done="layui.data.done(d);">
+    <table class="layui-table layui-form" lay-filter="LAY-app-CoreCmsDistribution-detailsForm" id="LAY-app-CoreCmsDistribution-detailsForm">
+        <colgroup>
+            <col width="150">
+            <col>
+        </colgroup>
+        <tbody>
+            <tr>
+                <td style="width:30%;">
+                    开始时间
+                </td>
+                <td style="width:30%;">
+                    结束时间
+                </td>
+                <td style="width:20%;">
+                    绩效总额
+                </td>
+                <td style="width:20%;">
+                    推广费用
+                </td>
+            </tr>
+
+            {{# layui.each(d.params.data, function(index, item){ }}
+            <tr>
+                <td>
+                    {{ item.startTime }}
+                </td>
+                <td>
+                    {{ item.endTime }}
+                </td>
+                <td>
+                    {{ item.achievementTotals }}
+                </td>
+                <td>
+                    {{ item.achievementBonus }}
+                </td>
+            </tr>
+            {{# }); }}
+
+        </tbody>
+    </table>
+</script>
+
+<script>
+    var debug = layui.setter.debug;
+    layui.data.done = function (d) {
+        //开启调试情况下获取接口赋值数据
+        if (debug) { console.log(d.params.data); }
+
+        layui.use(['admin', 'form', 'coreHelper'], function () {
+            var $ = layui.$
+                , setter = layui.setter
+                , admin = layui.admin
+                , coreHelper = layui.coreHelper
+                , form = layui.form;
+            form.render(null, 'LAY-app-CoreCmsDistribution-detailsForm');
+        });
+    };
+</script>
\ No newline at end of file
diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/achievementdetails.html b/CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/achievementdetails.html
new file mode 100644
index 0000000..543917b
--- /dev/null
+++ b/CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/achievementdetails.html
@@ -0,0 +1,58 @@
+<script type="text/html" template lay-done="layui.data.done(d);">
+    <table class="layui-table layui-form" lay-filter="LAY-app-CoreCmsDistribution-detailsForm" id="LAY-app-CoreCmsDistribution-detailsForm">
+        <colgroup>
+            <col width="150">
+            <col>
+        </colgroup>
+        <tbody>
+            <tr>
+                <td style="width: 30%;">
+                    寮�濮嬫椂闂�
+                </td>
+                <td style="width: 30%;">
+                    缁撴潫鏃堕棿
+                </td>
+                <td style="width: 20%;">
+                    缁╂晥鎬婚锛堝厓锛�
+                </td>
+                <td style="width: 20%;">
+                    鎺ㄥ箍璐圭敤锛堝厓锛�
+                </td>
+            </tr>
+
+            {{# layui.each(d.params.data, function(index, item){ }}
+            <tr>
+                <td>
+                    {{ item.startTime }}
+                </td>
+                <td>
+                    {{ item.endTime }}
+                </td>
+                <td>
+                    {{ item.achievementTotals }}
+                </td>
+                <td>
+                    {{ item.achievementBonus }}
+                </td>
+            </tr>
+            {{# }); }}
+        </tbody>
+    </table>
+</script>
+
+<script>
+    var debug = layui.setter.debug;
+    layui.data.done = function (d) {
+        //寮�鍚皟璇曟儏鍐典笅鑾峰彇鎺ュ彛璧嬪�兼暟鎹�
+        if (debug) { console.log(d.params.data); }
+
+        layui.use(['admin', 'form', 'coreHelper'], function () {
+            var $ = layui.$
+                , setter = layui.setter
+                , admin = layui.admin
+                , coreHelper = layui.coreHelper
+                , form = layui.form;
+            form.render(null, 'LAY-app-CoreCmsDistribution-detailsForm');
+        });
+    };
+</script>
\ No newline at end of file
diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/index.html b/CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/index.html
index cb860c3..20dd5b9 100644
--- a/CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/index.html
+++ b/CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/index.html
@@ -104,7 +104,7 @@
 
 <script type="text/html" id="LAY-app-CoreCmsDistribution-tableBox-bar">
     <!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="qrcode">灏忕▼搴忕爜</a> -->
-    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="achievement">涓氱哗</a>
+    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="achievement">鎺ㄥ箍璐�</a>
     <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">鏌ョ湅</a>
     <a class="layui-btn layui-btn-xs" lay-event="edit">瀹℃牳</a>
     <a class="layui-btn layui-btn-danger layui-btn-xs" data-dropdown="#CoreCmsDistributionTbDelDrop{{d.LAY_NUM}}" no-shade="true">鍒犻櫎</a>
@@ -211,7 +211,7 @@
                                     }
                                 }
                             },
-                            { field: 'DistributionAchievementTotals', title: '鍘嗗彶涓氱哗鎬诲拰(鍏�)', sort: false, width: 100 },
+                            { field: 'distributionAchievementTotals', title: '鍘嗗彶鎺ㄥ箍璐规�诲拰(鍏�)', sort: false, width: 100 },
                             //{ field: 'storeDesc', title: '搴楅摵绠�浠�', sort: false, width: 105 },
                             {
                                 field: 'verifyStatus', title: '瀹℃牳鐘舵��', sort: false, width: 80, templet: function (data) {
@@ -385,15 +385,15 @@
                 }
                 //鎵ц棰勮鎿嶄綔
                 function achievement(obj) {
-                    coreHelper.Post("Api/CoreCmsDistribution/GetDetails", { id: obj.data.id }, function (e) {
+                    coreHelper.Post("Api/CoreCmsDistribution/GetDetailsAchievement", { id: obj.data.id }, function (e) {
                         if (e.code === 0) {
                             admin.popup({
                                 shadeClose: false,
                                 title: '鏌ョ湅璇︽儏',
                                 area: ['700px', '550px'],
-                                id: 'LAY-popup-CoreCmsDistribution-details',
+                                id: 'LAY-popup-CoreCmsDistribution-detailsAchievement',
                                 success: function (layero, index) {
-                                    view(this.id).render('distribution/distributor/details', { data: e.data }).done(function () {
+                                    view(this.id).render('distribution/distributor/achievementdetails', { data: e.data }).done(function () {
                                         form.render();
                                     });
                                     // 绂佹寮圭獥鍑虹幇婊氬姩鏉�
diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/distribution/setting/index.html b/CoreCms.Net.Web.Admin/wwwroot/views/distribution/setting/index.html
index 8d80e7f..b3ad65f 100644
--- a/CoreCms.Net.Web.Admin/wwwroot/views/distribution/setting/index.html
+++ b/CoreCms.Net.Web.Admin/wwwroot/views/distribution/setting/index.html
@@ -65,7 +65,7 @@
                                         <div class="layui-form-item">
                                             <label class="layui-form-label">{{d.data.configs['dictionaryUserGroupKey']['sKey']}}锛�</label>
                                             <div class="layui-input-inline ">
-                                                <input type="text" name="dictionaryUserGroupKey" value="{{d.data.configs['dictionaryUserGroupKey']['sValue']}}"  autocomplete="off" placeholder="" class="layui-input">
+                                                <input type="text" name="dictionaryUserGroupKey" value="{{d.data.configs['dictionaryUserGroupKey']['sValue']}}" autocomplete="off" placeholder="" class="layui-input">
                                             </div>
                                             <div class="layui-form-mid layui-word-aux">*闈炲繀瑕佷笉淇敼*</div>
                                         </div>
@@ -79,7 +79,7 @@
                                         <div class="layui-form-item">
                                             <label class="layui-form-label">{{d.data.configs['dictionaryAchievementSet']['sKey']}}锛�</label>
                                             <div class="layui-input-inline  layui-inline-2">
-                                                <input type="text" name="dictionaryAchievementSet" value="{{d.data.configs['dictionaryAchievementSet']['sValue']}}"  autocomplete="off" placeholder="" class="layui-input" lay-verify="title|number" >
+                                                <input type="text" name="dictionaryAchievementSet" value="{{d.data.configs['dictionaryAchievementSet']['sValue']}}" autocomplete="off" placeholder="" class="layui-input" lay-verify="title|number">
                                             </div>
                                             <div class="layui-form-mid layui-word-aux">%</div>
                                         </div>
@@ -126,6 +126,20 @@
                                             </div>
                                         </div>
 
+                                        <div class="layui-form-item">
+                                            <label class="layui-form-label">{{d.data.configs['dictionaryTuiGuangFeiYong']['sKey']}}锛�</label>
+                                            <div class="layui-input-inline  layui-inline-2">
+                                                <input type="text" name="dictionaryTuiGuangFeiYong" value="{{d.data.configs['dictionaryTuiGuangFeiYong']['sValue']}}" autocomplete="off" placeholder="" class="layui-input" lay-verify="title|number">
+                                            </div>
+                                            <div class="layui-form-mid layui-word-aux">%</div>
+                                        </div>
+                                        <div class="layui-form-item">
+                                            <label class="layui-form-label">{{d.data.configs['dictionaryYeJiMenKan']['sKey']}}锛�</label>
+                                            <div class="layui-input-inline  layui-inline-2">
+                                                <input type="text" name="dictionaryYeJiMenKan" value="{{d.data.configs['dictionaryYeJiMenKan']['sValue']}}" autocomplete="off" placeholder="" class="layui-input" lay-verify="title|number">
+                                            </div>
+                                            <div class="layui-form-mid layui-word-aux">鍏�</div>
+                                        </div>
 
                                         <div class="layui-form-item">
                                             <label class="layui-form-label">&nbsp;</label>
diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/user/userInfo/editParentId.html b/CoreCms.Net.Web.Admin/wwwroot/views/user/userInfo/editParentId.html
index b58f07d..76cfa88 100644
--- a/CoreCms.Net.Web.Admin/wwwroot/views/user/userInfo/editParentId.html
+++ b/CoreCms.Net.Web.Admin/wwwroot/views/user/userInfo/editParentId.html
@@ -26,9 +26,9 @@
 
         <div class="layui-form-item">
             <div class="layui-inline">
-                <label class="layui-form-label">鏂颁笂绾у簭鍒楋細</label>
+                <label class="layui-form-label">鏂颁笂绾х數璇濓細</label>
                 <div class="layui-input-inline layui-inline-3">
-                    <input type="number" name="parentId" id="parentId" class="layui-input" value="0" lay-verify="required|number">
+                    <input type="text" name="parentId" id="parentId" class="layui-input" value="" lay-verify="required">
                 </div>
             </div>
         </div>

--
Gitblit v1.9.1