移动系统liao
2024-06-21 b38c91e5cce54e1114ec5968c722c1a1c57bd21a
完成派送订单佣金写入余额逻辑
19个文件已修改
1个文件已添加
340 ■■■■■ 已修改文件
.gitignore 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Configuration/GlobalEnumVars.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Configuration/SystemSettingConstVars.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Configuration/SystemSettingDictionary.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.IServices/baifenbingfa/IDistributorDeliveryServices.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Model/Entities/Bill/CoreCmsBillAftersales.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Model/Entities/Bill/CoreCmsBillDelivery.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Model/Entities/Distribution/CoreCmsDistributionOrder.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Model/Entities/Order/CoreCmsOrder.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Model/Entities/Order/CoreCmsOrderPartial.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Model/Entities/baifenbingfa/DistributionSend/DistributionSendOder.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Model/Entities/baifenbingfa/DistributionSend/DistributionSendOderPartial.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.RedisMQ/DistributionSendOderMQ.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.RedisMQ/OrderAgentOrDistributionSubscribe.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.RedisMQ/OrderFinishCommandSubscribe.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Services/Distribution/CoreCmsDistributionOrderServices.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Services/baifenbingfa/DistributorDeliveryServices.cs 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Utility/Helper/UserHelper.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/achievement.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/distribution/setting/index.html 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -63,3 +63,4 @@
CoreCms.Net.Web.WebApi/appsettings.json
CoreCms.Net.Web.WebApi/CoreCms.Net.Web.WebApi.xml
CoreCms.Net.Uni-App/bin/
数据库/
CoreCms.Net.Configuration/GlobalEnumVars.cs
@@ -246,7 +246,14 @@
            /// 订单
            /// </summary>
            [Description("订单")]
            GoodsOder = 11,
            GoodsOder = 12,
            /// <summary>
            /// 经销配送佣金
            /// </summary>
            [Description("经销配送佣金")]
            DistributionDelivery = 13,
        }
        /// <summary>
        /// 用户积分变动来源类型
CoreCms.Net.Configuration/SystemSettingConstVars.cs
@@ -940,6 +940,11 @@
        public static readonly string DictionaryUserGroupKey = "dictionaryUserGroupKey";
       /// <summary>
        /// 经销商发货奖励设置
        /// </summary>
        public static readonly string DictionaryDeliverFees = "dictionaryDeliverFees";
        /// <summary>
       /// 业绩奖励  开关
       /// </summary>
        public static readonly string DictionaryAchievementOnOff = "dictionaryAchievementOnOff";
CoreCms.Net.Configuration/SystemSettingDictionary.cs
@@ -274,6 +274,8 @@
            //》++++++++++++++++++++++++++++++++++++百分兵法增加++++++++++++++++
            //经销商用户组绑定key 有就绑定,无则不绑定
            di.Add(SystemSettingConstVars.DictionaryUserGroupKey, new DictionaryKeyValues() { sKey = "经销商关联用户组KEY", sValue = "DictionaryUserGroupKey" });
            //经销商配送奖励
            di.Add(SystemSettingConstVars.DictionaryDeliverFees, new DictionaryKeyValues() { sKey = "经销商配送奖励", sValue = "5" });
            //业绩开关
            di.Add(SystemSettingConstVars.DictionaryAchievementOnOff, new DictionaryKeyValues() { sKey = "是否开启业绩奖励", sValue = "1" });
            //业绩奖励技术因子
CoreCms.Net.IServices/baifenbingfa/IDistributorDeliveryServices.cs
@@ -42,6 +42,15 @@
        /// <param name="CancelledDec">取消原因</param>
        /// <returns></returns>
        Task<WebApiCallBack> SetDeliveryAccepted(sendDistributionAcceptType acceptType,string DeliveryID,string CancelledDec= null);
        /// <summary>
        /// 完成订单,配送订单将分配到用户余额
        /// </summary>
        /// <param name="orderId"></param>
        /// <returns></returns>
         Task<WebApiCallBack> FinishOrder(string orderId);
    }
CoreCms.Net.Model/Entities/Bill/CoreCmsBillAftersales.cs
@@ -13,7 +13,7 @@
namespace CoreCms.Net.Model.Entities
{
    /// <summary>
    /// 退货单表
    /// 售后单表
    /// </summary>
    [SugarTable("CoreCmsBillAftersales",TableDescription = "退货单表")]
    public partial class CoreCmsBillAftersales
CoreCms.Net.Model/Entities/Bill/CoreCmsBillDelivery.cs
@@ -283,6 +283,12 @@
        [Description("等待确认接受")]
        NoAccted,
        /// <summary>
        /// 奖励确认
        /// </summary>
        [Description("奖励确认")]
        OderFreeComplete,
    }
CoreCms.Net.Model/Entities/Distribution/CoreCmsDistributionOrder.cs
@@ -8,6 +8,7 @@
 *        Description: 暂无
***********************************************************************/ 
using SqlSugar;
using System;
using System.ComponentModel.DataAnnotations;
namespace CoreCms.Net.Model.Entities
@@ -25,6 +26,8 @@
        {
        }
        /// <summary>
        /// 序列
        /// </summary>
CoreCms.Net.Model/Entities/Order/CoreCmsOrder.cs
@@ -221,7 +221,7 @@
        
        
        /// <summary>
        /// 售后状态
        /// 收货状态
        /// </summary>
        [Display(Name = "售后状态")]
        
CoreCms.Net.Model/Entities/Order/CoreCmsOrderPartial.cs
@@ -64,9 +64,17 @@
        ///     售后单
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public List<CoreCmsBillAftersales> aftersalesItem { get; set; }
        /// <summary>
        /// 导航返回
        /// </summary>
        [Navigate(NavigateType.OneToMany, nameof(CoreCmsBillAftersales.orderId), nameof(orderId))]
        public List<CoreCmsBillAftersales> aftersalesItem1 { get; set; }
        /// <summary>
        ///     发货单
        /// </summary>
        [SugarColumn(IsIgnore = true)]
CoreCms.Net.Model/Entities/baifenbingfa/DistributionSend/DistributionSendOder.cs
@@ -6,6 +6,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinExpressDeliveryOpenMessageGetDeliveryListResponse.Types;
namespace CoreCms.Net.Model.Entities.baifenbingfa.DistributionSendOder
{
@@ -14,8 +15,10 @@
    /// </summary>
    [SugarTable(TableDescription = "供应商发货配发记录")]
    [SqlCodeFirst]
    public class DistributionSendOder: BFBaseModel
    public partial class DistributionSendOder: BFBaseModel
    {
        /// <summary>
        /// ID
        /// </summary>
@@ -61,11 +64,22 @@
        /// </summary>
        [SugarColumn(ColumnDescription = "配送单Id")]
        public string deliveryID { get; set; }
        /// <summary>
        /// 配送费用
        /// </summary>
        [SugarColumn(ColumnDescription = "配送费用",DefaultValue ="0")]
        public decimal amount { get; set; }= 0;
        /// <summary>
        /// 配送状态
        /// </summary>
        [SugarColumn(ColumnDescription = "配送状态",IsNullable =true)]
        public sendDistributionAcceptType? sendDistributionAccept { get; set; }
        /// <summary>
        /// 应聘职务
        /// </summary>
        [Navigate(NavigateType.OneToOne, nameof(deliveryID))]
        public CoreCmsBillDelivery delivery { get; set; }
    }
}
CoreCms.Net.Model/Entities/baifenbingfa/DistributionSend/DistributionSendOderPartial.cs
New file
@@ -0,0 +1,13 @@
using CoreCms.Net.Model.Entities.baifenbingfa.jon;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinExpressDeliveryOpenMessageGetDeliveryListResponse.Types;
namespace CoreCms.Net.Model.Entities.baifenbingfa.DistributionSend
{
}
CoreCms.Net.RedisMQ/DistributionSendOderMQ.cs
@@ -4,9 +4,12 @@
using CoreCms.Net.IServices;
using CoreCms.Net.Loging;
using CoreCms.Net.Model.Entities.baifenbingfa.DistributionSendOder;
using CoreCms.Net.Utility.Extensions;
using CoreCms.Net.Utility.Helper;
using InitQ.Abstractions;
using InitQ.Attributes;
using Newtonsoft.Json;
using StackExchange.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -21,10 +24,13 @@
    public class DistributionSendOderMQ: IRedisSubscribe
    {
        private readonly IUnitOfWork _unitOfWork;
        public DistributionSendOderMQ(IUnitOfWork unitOfWork)
        private readonly ICoreCmsUserBalanceServices _userBalanceServices;
        private readonly ICoreCmsSettingServices _coreCmsSettingServices; //注入服务
        public DistributionSendOderMQ(IUnitOfWork unitOfWork, ICoreCmsUserBalanceServices userBalanceServices, ICoreCmsSettingServices coreCmsSettingServices)
        {
            _unitOfWork= unitOfWork;
            _userBalanceServices = userBalanceServices;
            _coreCmsSettingServices = coreCmsSettingServices;
        }
        /// <summary>
@@ -42,7 +48,10 @@
            }
            Param.createTime = DateTime.Now;
            Param.createBy = "系统队列";
            var allConfigs = await _coreCmsSettingServices.GetConfigDictionaries();//获取所有配置
                                                                            //筛选配置
            var DictionaryDeliverFees = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.DictionaryDeliverFees).ObjectToDecimal(0);
            Param.amount = DictionaryDeliverFees;
            await _unitOfWork.GetDbClient().Insertable(Param).ExecuteCommandAsync();
        }
@@ -61,15 +70,43 @@
                NLogUtil.WriteAll(NLog.LogLevel.Error, LogType.RedisMessageQueue, "ActiveDistributionSendOder 修改状态 处理失败", $"转换模型失败===》 {message}");
                return;
            }
            DistributionSendOder oder = null;
            if (Param.SendOderActive == Model.Entities.sendDistributionAcceptType.OderFreeComplete)
                 oder=await   _unitOfWork.GetDbClient().Queryable<DistributionSendOder>().Includes(x=>x.delivery).Where(x => x.deliveryID == Param.deliveryID ).FirstAsync();
            else
          var oder=await   _unitOfWork.GetDbClient().Queryable<DistributionSendOder>().Where(x => x.deliveryID == Param.deliveryID && x.userID == Param.userID).FirstAsync();
                oder = await _unitOfWork.GetDbClient().Queryable<DistributionSendOder>().Includes(x => x.delivery).Where(x => x.deliveryID == Param.deliveryID && x.userID == Param.userID).FirstAsync();
            oder.upDataTime = DateTime.Now;
            oder.upDataBy = "ActiveDistributionSendOder 队列";
            oder.description = Param.Dec;
            oder.sendDistributionAccept= Param.SendOderActive;
            _unitOfWork.BeginTran();
            try
            {
                if (Param.SendOderActive == Model.Entities.sendDistributionAcceptType.OderFreeComplete) {
                    if (oder.userID != null && oder.delivery?.orderId != null)
                    {
                        //钱挪到会员余额里面
                        var result = await _userBalanceServices.Change(oder.userID ?? 0, (int)GlobalEnumVars.UserBalanceSourceTypes.DistributionDelivery,
                          oder.amount, oder.delivery.orderId);
                    }
                    else
                        NLogUtil.WriteAll(NLog.LogLevel.Error, LogType.Order, "经销商发货结算失败", $"DistributionSendOder ID={oder.id}  该订单的用户ID或者是deliveryID或者是CoreCmsBillDelivery 中的 oderId");
         
                }
            await _unitOfWork.GetDbClient().Updateable(oder).ExecuteCommandAsync();
                _unitOfWork.CommitTran();
            }
            catch (Exception  )
            {
                _unitOfWork.RollbackTran();
                throw;
            }
        }
CoreCms.Net.RedisMQ/OrderAgentOrDistributionSubscribe.cs
@@ -150,7 +150,6 @@
                                        iData.name = !string.IsNullOrEmpty(user.nickName) ? user.nickName : user.mobile;
                                        iData.verifyStatus = (int)GlobalEnumVars.DistributionVerifyStatus.VerifyYes;
                                        iData.verifyTime = DateTime.Now;
                                        await _distributionServices.AddData(iData, order.userId);
                                    }
                                }
CoreCms.Net.RedisMQ/OrderFinishCommandSubscribe.cs
@@ -2,6 +2,7 @@
using System.Threading.Tasks;
using CoreCms.Net.Configuration;
using CoreCms.Net.IServices;
using CoreCms.Net.IServices.baifenbingfa;
using CoreCms.Net.Loging;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Utility.Extensions;
@@ -27,9 +28,11 @@
        private readonly ICoreCmsSettingServices _settingServices;
        private readonly ICoreCmsUserServices _userServices;
        private readonly ICoreCmsAgentOrderServices _agentOrderServices;
        private readonly IDistributorDeliveryServices _distributorDeliveryServices;
        public OrderFinishCommandSubscribe(ICoreCmsBillPaymentsServices billPaymentsServices, ICoreCmsDistributionOrderServices distributionOrderServices, ICoreCmsDistributionServices distributionServices, ICoreCmsSettingServices settingServices, ICoreCmsUserServices userServices, ICoreCmsAgentOrderServices agentOrderServices)
        public OrderFinishCommandSubscribe(ICoreCmsBillPaymentsServices billPaymentsServices, ICoreCmsDistributionOrderServices distributionOrderServices, ICoreCmsDistributionServices distributionServices, ICoreCmsSettingServices settingServices, ICoreCmsUserServices userServices, ICoreCmsAgentOrderServices agentOrderServices,
            IDistributorDeliveryServices distributorDeliveryServices)
        {
            _billPaymentsServices = billPaymentsServices;
            _distributionOrderServices = distributionOrderServices;
@@ -37,6 +40,7 @@
            _settingServices = settingServices;
            _userServices = userServices;
            _agentOrderServices = agentOrderServices;
            _distributorDeliveryServices= distributorDeliveryServices;
        }
        /// <summary>
@@ -63,6 +67,8 @@
                    await _agentOrderServices.FinishOrder(msg);
                    //邀请要求模式下进行分佣,会检测是否开启了三级分销和代理模式。
                    await _userServices.InviteCommission(msg);
                    //处理经销商发货收益分配记录到余额内
                    await _distributorDeliveryServices.FinishOrder(msg);
                    NLogUtil.WriteAll(NLog.LogLevel.Info, LogType.RedisMessageQueue, "订单完结结佣", "订单编号获取正常:" + msg);
                }
CoreCms.Net.Services/Distribution/CoreCmsDistributionOrderServices.cs
@@ -392,6 +392,24 @@
        }
        /// <summary>
        /// 经销上配送费结算专用
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        private async IAsyncEnumerable<WebApiCallBack> ChangeForEachForDistributionDelivery(List<CoreCmsDistributionOrder> list)
        {
            foreach (var item in list)
            {
                //钱挪到会员余额里面
                var result = await _balanceServices.Change(item.userId, (int)GlobalEnumVars.UserBalanceSourceTypes.DistributionDelivery,
                    item.amount, item.orderId);
                yield return result;
            }
        }
        #endregion
        #region 作废订单
CoreCms.Net.Services/baifenbingfa/DistributorDeliveryServices.cs
@@ -21,6 +21,11 @@
using CoreCms.Net.DTO;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinExpressDeliveryOpenMessageGetDeliveryListResponse.Types;
using CoreCms.Net.Loging;
using CoreCms.Net.Model.Entities.baifenbingfa.DistributionSendOder;
using StackExchange.Redis;
using Microsoft.Extensions.Logging;
namespace CoreCms.Net.Services.baifenbingfa
{
    /// <summary>
@@ -39,7 +44,9 @@
        private readonly IRedisOperationRepository _redisOperationRepository;
       private readonly  IHttpContextUser _user;
        public readonly ICoreCmsDistributionServices _coreCmsDistributionServices;
        private readonly ICoreCmsOrderServices _orderServices;
        public DistributorDeliveryServices(
            IUnitOfWork unitOfWork,
@@ -51,7 +58,8 @@
            , ICoreCmsSettingServices settingServices
            , IRedisOperationRepository redisOperationRepository
            , IHttpContextUser user
            ,ICoreCmsDistributionServices coreCmsDistributionServices )
            ,ICoreCmsDistributionServices coreCmsDistributionServices
            ,ICoreCmsOrderServices orderServices)
        {
            this._dal = dal;
            base.BaseDal = dal;
@@ -64,6 +72,7 @@
            _redisOperationRepository = redisOperationRepository;
            _user = user;
            _coreCmsDistributionServices = coreCmsDistributionServices;
            _orderServices = orderServices;
        }
        public async Task<(List< CoreCmsBillDelivery>,int )> GetDeliveryList(GetDeliveryListPost Param)
@@ -77,7 +86,42 @@
            }
            if (Param.distributionAcceptStatus != null)
            {
                where= where.And(x => x.sendDistributionAccept == Param.distributionAcceptStatus);
                switch (Param.distributionAcceptStatus)
                {
                    case sendDistributionAcceptType.Accepted:
                        ///进行中,售后空
                        where = where.And(x => x.sendDistributionAccept == sendDistributionAcceptType.Accepted
                        && x.order.status == (int)GlobalEnumVars.OrderStatus.Normal && !x.order.aftersalesItem1.Any()&& x.order.confirmStatus != (int)GlobalEnumVars.OrderConfirmStatus.ConfirmReceipt);
                        //where = where.And(x => x.sendDistributionAccept == Param.distributionAcceptStatus);
                        break;
                    case sendDistributionAcceptType.NoAccted:
                        ///未确认接受的,不能售后空
                        where = where.And(x => x.sendDistributionAccept == sendDistributionAcceptType.NoAccted
                        && x.order.status == (int)GlobalEnumVars.OrderStatus.Normal && !x.order.aftersalesItem1.Any());
                        //where = where.And(x => x.sendDistributionAccept == Param.distributionAcceptStatus);
                        break;
                    case sendDistributionAcceptType.OderFreeComplete:
                        where = where.And(x => x.sendDistributionAccept == sendDistributionAcceptType.Accepted
                      && x.order.status == (int)GlobalEnumVars.OrderStatus.Complete && !x.order.aftersalesItem1.Any());
                        //where = where.And(x => x.sendDistributionAccept == Param.distributionAcceptStatus);
                        break;
                    case sendDistributionAcceptType.Cancelled:
                        where = where.And(x =>( x.sendDistributionAccept == sendDistributionAcceptType.Cancelled
                 ||  x.order.status == (int)GlobalEnumVars.OrderStatus.Cancel || x.order.aftersalesItem1.Any()));
                        //where = where.And(x => x.sendDistributionAccept == Param.distributionAcceptStatus);
                        break;
                    case sendDistributionAcceptType.Delivered:
                        where = where.And(x => x.sendDistributionAccept == sendDistributionAcceptType.Delivered
                 || x.order.confirmStatus == (int)GlobalEnumVars.OrderConfirmStatus.ConfirmReceipt );
                        //where = where.And(x => x.sendDistributionAccept == Param.distributionAcceptStatus);
                        break;
                    default:
                        break;
                }
                //where= where.And(x => x.sendDistributionAccept == Param.distributionAcceptStatus);
            }
            where= where.And(x => x.sendDistributionUserID == _user.ID);
            //必须是出于发货状态
@@ -85,20 +129,63 @@
            //必须是有效状态
            //where= where.And(x => x.order.status == (int)GlobalEnumVars.OrderStatus.Normal);
            RefAsync<int> totl = 0;
            var list = await _unitOfWork.GetDbClient().Queryable<CoreCmsBillDelivery>().Includes(x => x.order, order => order.Orderitems, ite => ite.productInfo).Select(x => new CoreCmsBillDelivery
            var list = await _unitOfWork.GetDbClient().Queryable<CoreCmsBillDelivery>()
                .Includes(x => x.order, order => order.Orderitems, ite => ite.productInfo)
                .Includes(x => x.order, Order => Order.aftersalesItem1)
                .Where(where)
                .Select(x => new CoreCmsBillDelivery
            {
                sendDistributionAccept = x.sendDistributionAccept == sendDistributionAcceptType.NoAccted ?
                //用户没有同意但是订单已经取消了 需要赋值 取消状态
                (x.order.status== (int)GlobalEnumVars.OrderStatus.Normal ? sendDistributionAcceptType.NoAccted: sendDistributionAcceptType.Cancelled ):
                (
                  x.sendDistributionAccept== sendDistributionAcceptType.Accepted?
                  //用户已经同意了
                  (x.order.confirmStatus == (int)GlobalEnumVars.OrderConfirmStatus.ConfirmReceipt? sendDistributionAcceptType.Delivered: sendDistributionAcceptType.Accepted)
                  : x.order.status==(int )GlobalEnumVars.OrderStatus.Cancel? sendDistributionAcceptType.Cancelled: x.sendDistributionAccept
                ),
                  order=x.order,
            },true).MergeTable()
                .Where(where).OrderByDescending(x => x.createTime)
                }, true)
                 .MergeTable()
                //.Mapper(x => x.order.billAftersalesId = SqlFunc.Subqueryable<CoreCmsBillAftersales>().Where(core => core.orderId == x.orderId).Select(core => core.aftersalesId))
                .Mapper(
                x =>
                {
                    switch (x.sendDistributionAccept)
                    {
                        case sendDistributionAcceptType.Accepted:
                             if (x.order.status == (int)GlobalEnumVars.OrderStatus.Cancel)
                                x.sendDistributionAccept = sendDistributionAcceptType.Cancelled;
                             else
                              if (x.order.status == (int)GlobalEnumVars.OrderStatus.Complete && !x.order.aftersalesItem1.Any())
                                x.sendDistributionAccept = sendDistributionAcceptType.OderFreeComplete;
                            if (x.order.status == (int)GlobalEnumVars.OrderStatus.Complete && x.order.aftersalesItem1.Any())
                                x.sendDistributionAccept = sendDistributionAcceptType.Cancelled;
                            else if (x.order.status == (int)GlobalEnumVars.OrderStatus.Normal && x.order.aftersalesItem1.Any())
                                x.sendDistributionAccept = sendDistributionAcceptType.Cancelled;
                            else
                             if (x.order.confirmStatus == (int)GlobalEnumVars.OrderConfirmStatus.ConfirmReceipt)
                                x.sendDistributionAccept = sendDistributionAcceptType.Delivered;
                            else
                                x.sendDistributionAccept = x.sendDistributionAccept;
                            break;
                        case sendDistributionAcceptType.NoAccted:
                            ///未确认接受的,不能售后空
                           if(x.order.status== (int)GlobalEnumVars.OrderStatus.Complete||x.order.status== (int)GlobalEnumVars.OrderStatus.Cancel|| x.order.aftersalesItem1.Any())
                                x.sendDistributionAccept= sendDistributionAcceptType.Cancelled;
                            else
                                x.sendDistributionAccept = x.sendDistributionAccept;
                            break;
                        case sendDistributionAcceptType.OderFreeComplete:
                          //永远不会到这
                            break;
                        case sendDistributionAcceptType.Cancelled:
                            //不需要处理
                            break;
                        default:
                            break;
                    }
                }
                )
                .OrderByDescending(x => x.createTime)
                .ToPageListAsync(Param.page, Param.limit, totl);
             var listdata=  new PageList<CoreCmsBillDelivery>(list, Param.page, Param.limit, totl);
@@ -108,7 +195,13 @@
        public async Task<int> GetNoAcceptedDeliveryCount()
        {
           return  await _dal.GetCountAsync(x => x.sendDistributionUserID == _user.ID && x.sendDistributionAccept ==  sendDistributionAcceptType.NoAccted);
           var lista=  await _unitOfWork.GetDbClient().Queryable<CoreCmsBillDelivery>().Includes(x => x.order,ord=>ord.aftersalesItem1)
               .Where(x => x.sendDistributionUserID == _user.ID && x.sendDistributionAccept == sendDistributionAcceptType.NoAccted
           && x.order.status != (int)GlobalEnumVars.OrderStatus.Complete ).ToListAsync();
            return lista.Where(x=>(x.order.aftersalesItem1==null|| x.order.aftersalesItem1.Count()==0)).Count();//删选出没有售后申请的订单
        }
        public async Task<bool> GetShowDelivery()
@@ -117,7 +210,16 @@
        }
        public async Task<WebApiCallBack> SetDeliveryAccepted(sendDistributionAcceptType acceptType, string DeliveryID, string CancelledDec = null)
        {
            WebApiCallBack ret = new WebApiCallBack();
            if (acceptType == sendDistributionAcceptType.OderFreeComplete)
            {
                //只有在完成订单中设置该状态,该状态会对配售收益进行提取整合
                ret.status = false;
                ret.msg = "状态设置错误";
                return ret;
            }
            var data = await _dal.QueryByIdAsync(DeliveryID);
            if (data == null)
            {
@@ -213,5 +315,53 @@
                throw;
            }
        }
        public async Task<WebApiCallBack> FinishOrder(string orderId)
        {
            var jm = new WebApiCallBack();
            var order = await _orderServices.QueryByClauseAsync(p =>
                p.orderId == orderId && p.status == (int)GlobalEnumVars.OrderStatus.Complete);
            if (order == null)
            {
                jm.msg = "订单查询失败";
                return jm;
            }
          var distributionSendOder =  await  _unitOfWork.GetDbClient().Queryable<DistributionSendOder>().Includes(x=>x.delivery)
                .Where(x=>x.delivery.orderId==order.orderId&&(x.sendDistributionAccept== sendDistributionAcceptType.Accepted|| x.sendDistributionAccept== sendDistributionAcceptType.Shipped||x.sendDistributionAccept== sendDistributionAcceptType.Delivered))
                .ToListAsync();
          if(  distributionSendOder.Count==1)
            {
                //满足所有条件开始分配逻辑
                var mQ = new ActiveDistributionSendOderMQ
                {
                    SendOderActive = sendDistributionAcceptType.OderFreeComplete,
                    deliveryID = distributionSendOder[0].deliveryID,
                    userID = order.userId
                };
                await _redisOperationRepository.ListLeftPushAsync(RedisMessageQueueKey.ActiveDistributionSendOderMQ, JsonConvert.SerializeObject(mQ));
                jm.status = true;
            }
          else if( distributionSendOder.Count>1)
            {
               jm.status= false;
                jm.msg = "发现多个配送订单,需要手动排查";
                NLogUtil.WriteAll(NLog.LogLevel.Error, LogType.Order, "处理经销商配送收益时错误", $"订单ID{orderId} 发现多个满足经销商派送单,放弃处理,需排查");
            }
          jm.status = true;
          return jm;
             //if (order.shipStatus is (int)GlobalEnumVars.OrderShipStatus.No or (int)GlobalEnumVars.OrderShipStatus.PartialYes)
             //   {
             //       return jm;
             //   }
        }
    }
}
CoreCms.Net.Utility/Helper/UserHelper.cs
@@ -65,6 +65,9 @@
                case (int)GlobalEnumVars.UserBalanceSourceTypes.CheckIn:
                    str += "日历签到奖励" + money + "元";
                    break;
                case (int)GlobalEnumVars.UserBalanceSourceTypes.DistributionDelivery:
                    str += "配送佣金" + money + "元";
                    break;
            }
            //::todo    这里还可以做一些其他的校验
            return str;
CoreCms.Net.Web.Admin/wwwroot/views/distribution/distributor/achievement.html
@@ -44,7 +44,7 @@
<script>
    var debug = layui.setter.debug;
    layui.data.done = function (d) {
        //������������»�ȡ�ӿڸ�ֵ����
   //
        if (debug) { console.log(d.params.data); }
        layui.use(['admin', 'form', 'coreHelper'], function () {
CoreCms.Net.Web.Admin/wwwroot/views/distribution/setting/index.html
@@ -70,6 +70,13 @@
                                            <div class="layui-form-mid layui-word-aux">*非必要不修改*</div>
                                        </div>
                                        <div class="layui-form-item">
                                            <label class="layui-form-label">{{d.data.configs['dictionaryDeliverFees']['sKey']}}:</label>
                                            <div class="layui-input-inline ">
                                                <input type="text" name="dictionaryDeliverFees" lay-verify="title|number" value="{{d.data.configs['dictionaryDeliverFees']['sValue']}}" autocomplete="off" placeholder="" class="layui-input">
                                            </div>
                                            <div class="layui-form-mid layui-word-aux">元</div>
                                        </div>
                                        <div class="layui-form-item">
                                            <label class="layui-form-label">{{d.data.configs['dictionaryAchievementOnOff']['sKey']}}:</label>
                                            <div class="layui-input-inline layui-inline-7">
                                                <input type="radio" lay-filter="dictionaryAchievementOnOff" name="dictionaryAchievementOnOff" value="1" title="开启" {{d.data.configs['dictionaryAchievementOnOff']['sValue']==="1" ? 'checked':''}}>