username@email.com
2025-08-25 24f914a80d01fa8e5c6cfcba14ae59a6c0a117a8
修改
7个文件已修改
772 ■■■■ 已修改文件
Admin.NET/FZCZTB.NET.MD/Collection.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/TenderOrder.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/TenderOrderBidding.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZFCGDD.ORDER.Application/Service/SuplierTendOrder/SuplierTendOrderService.cs 287 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/Dto/TenderOrderInput.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/Dto/TenderOrderOutput.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/TenderOrderService.cs 335 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/Collection.cs
@@ -27,6 +27,14 @@
        /// </summary>
        [SugarColumn(IsPrimaryKey = true)]
        public Guid TenderId { get; set; }
        /// <summary>
        /// 创建者CusExtendId
        /// </summary>
        [OwnerUser]
        [SugarColumn(ColumnDescription = "创建者CusExtendId", IsOnlyIgnoreUpdate = true)]
        public long? CusExtendId { get; set; }
    }
Admin.NET/FZCZTB.NET.MD/TenderOrder.cs
@@ -228,7 +228,7 @@
        /// <summary>
        /// 订单状态
        /// 订单状态 1保存 2 发布  3 中标
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "订单状态")]
        public int? OrderStatus { get; set; }
@@ -334,11 +334,34 @@
        [SugarColumn(IsNullable = true, ColumnDescription = "中标时间")]
        public DateTime? ZhongbiaoDate { get; set; }
        /// <summary>
        /// 中标公告
        /// </summary>
        [SugarColumn(Length = 512, IsNullable = true, ColumnDescription = "中标公告")]
        public string Zhongbiaogonggao { get; set; }
        /// <summary>
        /// 中标公告Name
        /// </summary>
        [SugarColumn(Length = 512, IsNullable = true, ColumnDescription = "中标公告Name")]
        public string ZhongbiaogonggaoName { get; set; }
        /// <summary>
        /// 中标tittle
        /// </summary>
        [SugarColumn(Length = 200, IsNullable = true, ColumnDescription = "中标tittle")]
        public string ZhongbiaoTittle { get; set; }
        /// <summary>
        /// 创建者CusExtendId
        /// </summary>
        [OwnerUser]
        [SugarColumn(ColumnDescription = "创建者CusExtendId", IsOnlyIgnoreUpdate = true)]
        public  long? CusExtendId { get; set; }
    }
}
Admin.NET/FZCZTB.NET.MD/TenderOrderBidding.cs
@@ -86,6 +86,46 @@
        [SugarColumn(Length = 50, IsNullable = true, ColumnDescription = "支付返回标号")]
        public string TradeNo { get; set; }
        /// <summary>
        /// 创建者CusExtendId
        /// </summary>
        [OwnerUser]
        [SugarColumn(ColumnDescription = "创建者CusExtendId", IsOnlyIgnoreUpdate = true)]
        public long? CusExtendId { get; set; }
        /// <summary>
        /// 是否支付代理费
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "是否支付代理费")]
        public bool? IsDailiTransfer { get; set; }
        /// <summary>
        /// 代理费支付时间
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "代理费支付时间")]
        public DateTime? DailiTransferTime { get; set; }
        /// <summary>
        /// 代理费支付编号
        /// </summary>
        [SugarColumn(Length = 50, IsNullable = true, ColumnDescription = "代理费支付编号")]
        public string DailiTransferNo { get; set; }
        /// <summary>
        ///代理支付金额
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDescription = "代理支付金额")]
        public decimal? DailiZhifujine { get; set; }
        /// <summary>
        /// 代理支付返回标号
        /// </summary>
        [SugarColumn(Length = 50, IsNullable = true, ColumnDescription = "代理支付返回标号")]
        public string DailiTradeNo { get; set; }
    }
Admin.NET/FZFCGDD.ORDER.Application/Service/SuplierTendOrder/SuplierTendOrderService.cs
@@ -31,6 +31,7 @@
using MimeKit;
using static SKIT.FlurlHttpClient.Wechat.Api.Events.TransferCustomerServiceReply.Types;
using Aop.Api.Domain;
using FZCZTB.NET.MD.CutomerMd.Extend;
namespace FZCZTB.TSCL.Application;
/// <summary>
@@ -76,9 +77,13 @@
        {
            usertrueId = userId;
        }
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        var collection = await _CollectionRep.AsQueryable().Where(x =>x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == userId).FirstAsync();
        var collection = await _CollectionRep.AsQueryable().Where(x =>x.TenderId == input.TenderOrderId).Where(x => x.CusExtendId == customerExId).FirstAsync();
        if (input.isColection && collection != null)
        {
            return true;
@@ -104,6 +109,7 @@
            entity.CreateUserName = RealName;
            entity.UpdateUserId = usertrueId;
            entity.UpdateUserName = RealName;
            entity.CusExtendId = customerExId;
            entity.TenderId = input.TenderOrderId;
        }
        return await _CollectionRep.InsertAsync(entity);
@@ -124,8 +130,11 @@
        long userId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId);
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        var query = _sqlSugarClient.Queryable<Collection,TenderOrder>((a, b) => a.TenderId == b.Id)
            .Where((a, b) => a.CreateUserId == userId)
            .Where((a, b) => a.CusExtendId == customerExId)
            
                      .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectName), (a, b) => b.ProjectName.Contains(input.ProjectName.Trim()))
                      .WhereIF(!string.IsNullOrWhiteSpace(input.Dailijigoumingcheng), (a, b) => b.Dailijigoumingcheng.Contains(input.Dailijigoumingcheng.Trim()))
@@ -193,14 +202,103 @@
    ///// <summary>
    ///// 供应商支付报名费 ➕
    ///// </summary>
    ///// <param name="input"></param>
    ///// <returns></returns>
    //[DisplayName("供应商支付报名费")]
    //[ApiDescriptionSettings(Name = "AddBaomingfei"), HttpPost]
    //public async Task<bool> AddBaomingfei(SuplierBaomingfeiInput input)
    //{
    //    long userId = 0;
    //    long? usertrueId = null;
    //    if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId))
    //    {
    //        usertrueId = userId;
    //    }
    //    var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
    //    string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
    //    if (CustomerLogoinType != "GYS" )
    //    {
    //        throw Oops.Oh("只有登录角色供应商才能支付报名费!");
    //    }
    //    var tenderOrder = await _TenderOrderRep.AsQueryable().Where(x => x.Id == input.TenderOrderId).FirstAsync();
    //    if (tenderOrder == null)
    //    {
    //        throw Oops.Oh("不存在的招标!");
    //    }
    //    //if (tenderOrder.Baomingfei.HasValue && tenderOrder.Baomingfei.Value > 0)
    //    //{
    //        var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == userId).FirstAsync();
    //        if(tenderOrderBidding!=null && (tenderOrderBidding.IsTransfer.HasValue && tenderOrderBidding.IsTransfer.Value))
    //        {
    //            throw Oops.Oh("已经付款!");
    //        }
    //        if (tenderOrderBidding == null)
    //        {
    //            tenderOrderBidding = new TenderOrderBidding();
    //            tenderOrderBidding.Id = Guid.NewGuid();
    //            tenderOrderBidding.TenderId = input.TenderOrderId;
    //            tenderOrderBidding.IsTransfer = true;
    //            tenderOrderBidding.Zhifujine = tenderOrder.Baomingfei;
    //            tenderOrderBidding.TransferTime = DateTime.Now;
    //            tenderOrderBidding.TransferNo = "BMF"+tenderOrderBidding.Id.ToString("N");
    //            tenderOrderBidding.TradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
    //           tenderOrderBidding.CreateTime = DateTime.Now;
    //            tenderOrderBidding.CreateUserId = usertrueId;
    //            tenderOrderBidding.CreateUserName = RealName;
    //            tenderOrderBidding.UpdateTime = DateTime.Now;
    //            tenderOrderBidding.UpdateUserId = usertrueId;
    //            tenderOrderBidding.UpdateUserName = RealName;
    //            return await _TenderOrderBiddingRep.InsertAsync(tenderOrderBidding);
    //        }
    //        else
    //        {
    //            tenderOrderBidding.IsTransfer = true;
    //            tenderOrderBidding.Zhifujine = tenderOrder.Baomingfei;
    //            tenderOrderBidding.TransferTime = DateTime.Now;
    //            tenderOrderBidding.TransferNo = "BMF" + tenderOrderBidding.Id.ToString("N");
    //            tenderOrderBidding.TradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
    //            tenderOrderBidding.UpdateTime = DateTime.Now;
    //            tenderOrderBidding.UpdateUserId = usertrueId;
    //            tenderOrderBidding.UpdateUserName = RealName;
    //            return await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
    //        }
    //    //}
    //    //else
    //    //{
    //    //    throw Oops.Oh("无需支付报名费!");
    //    //}
    //}
    /// <summary>
    /// 供应商支付报名费 ➕
    /// 供应商获取代理人的支付信息 ➕
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("供应商支付报名费")]
    [DisplayName("供应商获取代理人的支付信息")]
    [ApiDescriptionSettings(Name = "AddBaomingfei"), HttpPost]
    public async Task<bool> AddBaomingfei(SuplierBaomingfeiInput input)
    public async Task<FBS_CusExtend> AddBaomingfei(SuplierBaomingfeiInput input)
    {
@@ -212,6 +310,12 @@
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "GYS")
        {
            throw Oops.Oh("只有登录角色供应商才能获取代理人的支付信息!");
        }
        
        var tenderOrder = await _TenderOrderRep.AsQueryable().Where(x => x.Id == input.TenderOrderId).FirstAsync();
        if (tenderOrder == null)
@@ -219,60 +323,20 @@
            throw Oops.Oh("不存在的招标!");
        }
        //if (tenderOrder.Baomingfei.HasValue && tenderOrder.Baomingfei.Value > 0)
        //{
            var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == userId).FirstAsync();
            if(tenderOrderBidding!=null && (tenderOrderBidding.IsTransfer.HasValue && tenderOrderBidding.IsTransfer.Value))
        var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.CustomerId == tenderOrder.CusExtendId ).FirstAsync();
        var cusExtend1 = new FBS_CusExtend();
        if (cusExtend != null)
            {
                throw Oops.Oh("已经付款!");
            cusExtend1.EnterpriseName = cusExtend.EnterpriseName;
            cusExtend1.BankName = cusExtend.BankName;
            cusExtend1.BankAccount = cusExtend.BankAccount;
            cusExtend1.BankAccountIMG = cusExtend.BankAccountIMG;
            }
            if (tenderOrderBidding == null)
            {
                tenderOrderBidding = new TenderOrderBidding();
                tenderOrderBidding.Id = Guid.NewGuid();
                tenderOrderBidding.TenderId = input.TenderOrderId;
                tenderOrderBidding.IsTransfer = true;
                tenderOrderBidding.Zhifujine = tenderOrder.Baomingfei;
                tenderOrderBidding.TransferTime = DateTime.Now;
                tenderOrderBidding.TransferNo = "BMF"+tenderOrderBidding.Id.ToString("N");
                tenderOrderBidding.TradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
               tenderOrderBidding.CreateTime = DateTime.Now;
                tenderOrderBidding.CreateUserId = usertrueId;
                tenderOrderBidding.CreateUserName = RealName;
                tenderOrderBidding.UpdateTime = DateTime.Now;
                tenderOrderBidding.UpdateUserId = usertrueId;
                tenderOrderBidding.UpdateUserName = RealName;
                return await _TenderOrderBiddingRep.InsertAsync(tenderOrderBidding);
        return cusExtend1;
            }
            else
            {
                tenderOrderBidding.IsTransfer = true;
                tenderOrderBidding.Zhifujine = tenderOrder.Baomingfei;
                tenderOrderBidding.TransferTime = DateTime.Now;
                tenderOrderBidding.TransferNo = "BMF" + tenderOrderBidding.Id.ToString("N");
                tenderOrderBidding.TradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
                tenderOrderBidding.UpdateTime = DateTime.Now;
                tenderOrderBidding.UpdateUserId = usertrueId;
                tenderOrderBidding.UpdateUserName = RealName;
                return await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
            }
        //}
        //else
        //{
        //    throw Oops.Oh("无需支付报名费!");
        //}
    }
@@ -293,22 +357,32 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "GYS")
        {
            throw Oops.Oh("只有登录角色供应商才能上传招标文件!");
        }
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == userId).FirstAsync();
        var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CusExtendId == customerExId).FirstAsync();
        var tenderOrder  = await _TenderOrderRep.AsQueryable().Where(x => x.Id == input.TenderOrderId).FirstAsync();
        if(tenderOrder == null)
        {
            throw Oops.Oh("不存在的招标!");
        }
        if(tenderOrder.Baomingfei.HasValue && tenderOrder.Baomingfei.Value > 0)
        {
            if (tenderOrderBidding == null || (!tenderOrderBidding.IsTransfer.HasValue || tenderOrderBidding.IsTransfer.Value == false))
            {
                throw Oops.Oh("必须先支付才能投标!");
            }
        }
        //if(tenderOrder.Baomingfei.HasValue && tenderOrder.Baomingfei.Value > 0)
        //{
        //    if (tenderOrderBidding == null || (!tenderOrderBidding.IsTransfer.HasValue || tenderOrderBidding.IsTransfer.Value == false))
        //    {
        //        throw Oops.Oh("必须先支付才能投标!");
        //    }
        //}
       if(tenderOrderBidding == null)
        {
@@ -325,6 +399,15 @@
            tenderOrderBidding.UpdateTime = DateTime.Now;
            tenderOrderBidding.UpdateUserId = usertrueId;
            tenderOrderBidding.UpdateUserName = RealName;
            tenderOrderBidding.CusExtendId = customerExId;
            if( !tenderOrder.Baomingfei.HasValue || tenderOrder.Baomingfei.Value<=0)
            {
                tenderOrderBidding.IsTransfer = true;
                tenderOrderBidding.Zhifujine = 0;
                tenderOrderBidding.TransferTime = DateTime.Now;
                tenderOrderBidding.TransferNo = "BMF" + tenderOrderBidding.Id.ToString("N");
                tenderOrderBidding.TradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
            }
            return await _TenderOrderBiddingRep.InsertAsync(tenderOrderBidding);
        }
@@ -333,6 +416,14 @@
        tenderOrderBidding.UpdateTime = DateTime.Now;
        tenderOrderBidding.UpdateUserId = usertrueId;
        tenderOrderBidding.UpdateUserName = RealName;
        if (!tenderOrder.Baomingfei.HasValue || tenderOrder.Baomingfei.Value <= 0)
        {
            tenderOrderBidding.IsTransfer = true;
            tenderOrderBidding.Zhifujine = 0;
            tenderOrderBidding.TransferTime = DateTime.Now;
            tenderOrderBidding.TransferNo = "BMF" + tenderOrderBidding.Id.ToString("N");
            tenderOrderBidding.TradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
        }
        return await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
    }
@@ -350,8 +441,11 @@
        long userId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId);
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        var query = _sqlSugarClient.Queryable<TenderOrderBidding, TenderOrder>((a, b) => a.TenderId == b.Id)
            .Where((a, b) => a.CreateUserId == userId)
            .Where((a, b) => a.CusExtendId == customerExId)
                      .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectName), (a, b) => b.ProjectName.Contains(input.ProjectName.Trim()))
                      .WhereIF(!string.IsNullOrWhiteSpace(input.Dailijigoumingcheng), (a, b) => b.Dailijigoumingcheng.Contains(input.Dailijigoumingcheng.Trim()))
@@ -393,4 +487,73 @@
        return pagedList;
    }
    /// <summary>
    /// 供应商下载中标文件 ➕
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("供应商下载中标文件")]
    [ApiDescriptionSettings(Name = "DownZhongbiao"), HttpPost]
    public async Task<TenderOrderOutput> DownZhongbiao(SuplierBaomingfeiInput input)
    {
        long userId = 0;
        long? usertrueId = null;
        if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId))
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "GYS")
        {
            throw Oops.Oh("只有登录角色供应商才能上传招标文件!");
        }
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        var tenderOrder = await _TenderOrderRep.AsQueryable().Where(x => x.Id == input.TenderOrderId).FirstAsync();
        if (tenderOrder == null)
        {
            throw Oops.Oh("不存在的招标!");
        }
        if(tenderOrder.OrderStatus !=3)
        {
            throw Oops.Oh("只有中标之后才能下载中标文件!");
        }
        var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CusExtendId == customerExId).FirstAsync();
        if (tenderOrderBidding == null )
        {
            throw Oops.Oh("不存在的投标!");
        }
        if (!tenderOrderBidding.IsSelected.HasValue && tenderOrderBidding.IsSelected.Value)
        {
            throw Oops.Oh("没有中标!");
        }
        if (!tenderOrderBidding.IsDailiTransfer.HasValue && tenderOrderBidding.IsDailiTransfer.Value)
        {
            throw Oops.Oh("没有缴纳代理费!");
        }
        var tenderOrderOutput = new TenderOrderOutput();
        tenderOrderOutput.Zhongbiaowenjian = tenderOrder.Zhongbiaowenjian;
        tenderOrderOutput.ZhongbiaowenjianName = tenderOrder.ZhongbiaowenjianName;
        return tenderOrderOutput;
    }
}
Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/Dto/TenderOrderInput.cs
@@ -998,10 +998,23 @@
    /// <summary>
    /// 中标供应商id   逗号分隔! 12121212,232323,232323,232323
    /// 中标公告
    /// </summary>
    [Required(ErrorMessage = "中标供应商id不能为空")]
    public string SupplierUserIds { get; set; }
    [Required(ErrorMessage = "中标公告Name不能为空")]
    public string Zhongbiaogonggao { get; set; }
    /// <summary>
    /// 中标公告Name
    /// </summary>
    [Required(ErrorMessage = "中标公告Name不能为空")]
    public string ZhongbiaogonggaoName { get; set; }
    /// <summary>
    /// 中标投标Id  逗号分隔! F0D64522-BF2B-4759-9431-EE89952283CA,4A1A779A-4263-4229-8DA6-AD4E56052F44,F0D64522-BF2B-4759-9431-EE89952283CA  [FB_TenderOrderBidding]的id
    /// </summary>
    [Required(ErrorMessage = "中标投标Id不能为空")]
    public string TenderOrderBiddingIds { get; set; }
    /// <summary>
@@ -1027,6 +1040,21 @@
}
/// <summary>
/// 采购代理人取人供应商已支付报名费
/// </summary>
public class QuerenSuplierBaomingfeiInput
{
    /// <summary>
    /// 招标Id
    /// </summary>
    [Required(ErrorMessage = "招标Id不能为空")]
    public Guid TenderOrderBiddingId { get; set; }
}
Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/Dto/TenderOrderOutput.cs
@@ -365,6 +365,16 @@
    public DateTime? ZhongbiaoDate { get; set; }
    /// <summary>
    /// 中标公告
    /// </summary>
    public string Zhongbiaogonggao { get; set; }
    /// <summary>
    /// 中标公告Name
    /// </summary>
    public string ZhongbiaogonggaoName { get; set; }
    /// <summary>
    /// 中标tittle
    /// </summary>
    public string ZhongbiaoTittle { get; set; }
@@ -609,6 +619,39 @@
        /// </summary>
        public string? UpdateUserName { get; set; }
        /// <summary>
        /// 创建者CusExtendId
        /// </summary>
        public long? CusExtendId { get; set; }
        /// <summary>
        /// 是否支付代理费
        /// </summary>
        public bool? IsDailiTransfer { get; set; }
        /// <summary>
        /// 代理费支付时间
        /// </summary>
        public DateTime? DailiTransferTime { get; set; }
        /// <summary>
        /// 代理费支付编号
        /// </summary>
        public string DailiTransferNo { get; set; }
        /// <summary>
        ///代理支付金额
        /// </summary>
        public decimal? DailiZhifujine { get; set; }
        /// <summary>
        /// 代理支付返回标号
        /// </summary>
        public string DailiTradeNo { get; set; }
    }
Admin.NET/FZFCGDD.ORDER.Application/Service/TenderOrder/TenderOrderService.cs
@@ -31,6 +31,7 @@
using MimeKit;
using static FZCZTB.TSCL.Application.ChangeTenderOrderOut;
using FZCZTB.NET.MD.CutomerMd.Extend;
using FZCZTB.NET.MD.CutomerMd;
namespace FZCZTB.TSCL.Application;
/// <summary>
@@ -241,8 +242,12 @@
        long userId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId);
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        var query = _TenderOrderRep.AsQueryable()
            .Where(x => x.CreateUserId == userId)
            .Where(x => x.CusExtendId == customerExId)
            .WhereIF(!string.IsNullOrWhiteSpace(input.Xingzhengquyu), u => u.Xingzhengquyu.Contains(input.Xingzhengquyu.Trim()))
              .WhereIF(!string.IsNullOrWhiteSpace(input.Hangyepinmu), u => u.Hangyepinmu == input.Hangyepinmu.Trim())
               .WhereIF( input.OrderStatus.HasValue, u => u.OrderStatus == input.OrderStatus)
@@ -354,7 +359,7 @@
                {
                    tenderOrderBiddingOutput.IsTransferName = "否";
                }
                var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.CustomerId == tenderOrderBiddingOutput.CreateUserId && x.TransactionCode == "GYS" && x.steps == CusExtendStep.Pass).FirstAsync();
                var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.Id == tenderOrderBiddingOutput.CusExtendId).FirstAsync();
                if (cusExtend != null)
                {
                    tenderOrderBiddingOutput.ChangshangName = cusExtend.EnterpriseName;
@@ -368,6 +373,75 @@
        return tenderOrderOutput;
    }
    /// <summary>
    /// 采购代理人增加非政府订单处理获取联系方式
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("采购代理人增加非政府订单获取联系方式")]
    [ApiDescriptionSettings(Name = "Addgetcontact"), HttpPost]
    public async Task<TenderOrderOutput> Addgetcontact()
    {
        long userId = 0;
        long? usertrueId = null;
        if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId))
        {
            usertrueId = userId;
        }
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能获取联系方式!");
        }
        var tenderOrderOutput = new TenderOrderOutput();
        var fBS_CusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>()
         .Where(x => x.Id == customerExId).FirstAsync();
        if (fBS_CusExtend != null)
        {
            if (CustomerLogoinType != "DLJG" )
            {
                tenderOrderOutput.Dailijigoumingcheng = fBS_CusExtend.EnterpriseName;
                tenderOrderOutput.DailiLianxiren = fBS_CusExtend.OperatorName;
                tenderOrderOutput.DailiLianxidianhua = fBS_CusExtend.OperatorPhone;
                tenderOrderOutput.DailiDianziyoujian = fBS_CusExtend.EnterpriseEmail;
                tenderOrderOutput.DailiTongxindizhi = fBS_CusExtend.Residence;
                tenderOrderOutput.DailiXiangmujingli = "";
                tenderOrderOutput.DailijingliLianxidianhua = "";
            }
            else if (CustomerLogoinType != "CGR")
            {
                tenderOrderOutput.Caigourenmingcheng = fBS_CusExtend.EnterpriseName;
                tenderOrderOutput.Xingzhengquyu = "";
                tenderOrderOutput.XingzhengquyuName = "";
                tenderOrderOutput.Jigoudaima = fBS_CusExtend.UnifiedSocialCreditCode;
                tenderOrderOutput.Daimaleixing = "";
                tenderOrderOutput.DaimaleixingName = "";
                tenderOrderOutput.Lianxiren = fBS_CusExtend.OperatorName;
                tenderOrderOutput.Lianxidianhua = fBS_CusExtend.OperatorPhone;
                tenderOrderOutput.Tongxindizhi = fBS_CusExtend.Residence;
                tenderOrderOutput.Dianziyoujian = fBS_CusExtend.EnterpriseEmail;
                tenderOrderOutput.Xiangmujingbanren = "";
                tenderOrderOutput.Zhiwu = "";
                tenderOrderOutput.Jingbanrendianhua = "";
            }
        }
        return tenderOrderOutput;
    }
    /// <summary>
    /// 采购代理人增加非政府订单处理 ➕
@@ -386,6 +460,18 @@
        {
            usertrueId = userId;
        }
        long customerExId = 0;
        long.TryParse(App.User?.FindFirst(ClaimConst.CustomerExId)?.Value, out customerExId);
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if(CustomerLogoinType!= "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能发布招标!");
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        entity.CreateTime = DateTime.Now;
        entity.UpdateTime = DateTime.Now;
@@ -393,6 +479,7 @@
        entity.CreateUserName = RealName;
        entity.UpdateUserId = usertrueId;
        entity.UpdateUserName = RealName;
        entity.CusExtendId = customerExId;
        entity.OrderStatus = 1;
        entity.Tousu = false;
        entity.Zhiyi = false;
@@ -416,6 +503,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能更新招标!");
        }
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First();
        if(tenderOrder == null)
        {
@@ -451,6 +546,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能更新非政府订单质疑!");
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First();
@@ -483,6 +586,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能更新非政府订单投诉!");
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First();
@@ -508,6 +619,13 @@
    [ApiDescriptionSettings(Name = "Delete"), HttpPost]
    public async Task Delete(DeleteTenderOrderInput input)
    {
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能删除招标!");
        }
        //var entity = await _TenderOrderRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
        var entity = await _sqlSugarClient.Queryable<TenderOrder>().Where(x=>x.Id== input.Id).FirstAsync() ?? throw Oops.Oh(ErrorCodeEnum.D1002);
        //await _TenderOrderRep.FakeDeleteAsync(entity);   //假删除
@@ -523,6 +641,14 @@
    [ApiDescriptionSettings(Name = "BatchDelete"), HttpPost]
    public async Task<bool > BatchDelete([Required(ErrorMessage = "主键列表不能为空")]List<DeleteTenderOrderInput> input)
    {
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能批量删除招标!");
        }
        var exp = Expressionable.Create<TenderOrder>();
        foreach (var row in input) exp = exp.Or(it => it.Id == row.Id);
        var list = await _TenderOrderRep.AsQueryable().Where(exp.ToExpression()).ToListAsync();
@@ -621,6 +747,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能发布招标!");
        }
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First();
        if (tenderOrder == null)
        {
@@ -659,6 +793,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能更新非政府订单标题!");
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.Id).First();
@@ -691,6 +833,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能发布变更公告!");
        }
        var tenderOrder = _TenderOrderRep.AsQueryable().Where(x => x.Id == input.TenderId).First();
        if (tenderOrder == null)
        {
@@ -783,12 +933,79 @@
    [ApiDescriptionSettings(Name = "CHangeDelete"), HttpPost]
    public async Task CHangeDelete(DeleteTenderOrderInput input)
    {
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能删除变更公告!");
        }
        //var entity = await _TenderOrderRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
        var entity = await _sqlSugarClient.Queryable<ChangeOrder>().Where(x => x.Id == input.Id).FirstAsync() ?? throw Oops.Oh(ErrorCodeEnum.D1002);
        //await _TenderOrderRep.FakeDeleteAsync(entity);   //假删除
        await _ChangeOrderRep.DeleteAsync(entity);   //真删除
    }
    /// <summary>
    /// 采购代理人确认供应商已支付报名费 ➕
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("采购代理人确认供应商已支付报名费")]
    [ApiDescriptionSettings(Name = "QuerenBaomingfei"), HttpPost]
    public async Task<bool> QuerenBaomingfei(QuerenSuplierBaomingfeiInput input)
    {
        long userId = 0;
        long? usertrueId = null;
        if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId))
        {
            usertrueId = userId;
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能确认供应商已支付报名费!");
        }
        var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.Id == input.TenderOrderBiddingId).FirstAsync();
        if (tenderOrderBidding == null )
        {
            throw Oops.Oh("没找到投标信息!");
        }
        if (tenderOrderBidding != null && (tenderOrderBidding.IsTransfer.HasValue && tenderOrderBidding.IsTransfer.Value))
        {
            throw Oops.Oh("已经付款!");
        }
        var tenderOrder = await _TenderOrderRep.AsQueryable().Where(x => x.Id == tenderOrderBidding.TenderId).FirstAsync();
        if (tenderOrder == null)
        {
            throw Oops.Oh("不存在的招标!");
        }
        tenderOrderBidding.IsTransfer = true;
        tenderOrderBidding.Zhifujine = tenderOrder.Baomingfei;
        tenderOrderBidding.TransferTime = DateTime.Now;
        tenderOrderBidding.TransferNo = "BMF" + tenderOrderBidding.Id.ToString("N");
        tenderOrderBidding.TradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
        tenderOrderBidding.UpdateTime = DateTime.Now;
        tenderOrderBidding.UpdateUserId = usertrueId;
        tenderOrderBidding.UpdateUserName = RealName;
        return await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
    }
    /// <summary>
@@ -808,6 +1025,14 @@
        {
            usertrueId = userId;
        }
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能发布中标文件!");
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
       
@@ -822,15 +1047,18 @@
            throw Oops.Oh("已经中标的项目不能再次中标!");
        }
        var ssss = input.SupplierUserIds.Split(',');
        if (string.IsNullOrEmpty(input.SupplierUserIds))
        var ssss = input.TenderOrderBiddingIds.Split(',');
        if (string.IsNullOrEmpty(input.TenderOrderBiddingIds))
        {
            throw Oops.Oh("没有选中中标供应商!");
        }
         foreach ( var sss in ssss)
        {
            var SupplierUserId = long.Parse(sss);
            var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == SupplierUserId).FirstAsync();
            var tenderOrderBiddingId = Guid.Parse(sss);
            var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.Id == tenderOrderBiddingId).FirstAsync();
            if (tenderOrderBidding == null)
            {
                throw Oops.Oh("不存在的投标!");
@@ -843,46 +1071,50 @@
            {
                throw Oops.Oh("没有投标文件。不能中标!");
            }
        }
       
        tenderOrder.ZhongbiaoId = null;
        //tenderOrder.ZhongbiaoName = input.SupplierUserName;
        tenderOrder.ZhongbiaoName = "";
        foreach (var sss in ssss)
        {
            var SupplierUserId = long.Parse(sss);
            var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.CustomerId == SupplierUserId && x.TransactionCode == "GYS" && x.steps == CusExtendStep.Pass).FirstAsync();
            if (cusExtend != null)
            {
                tenderOrder.ZhongbiaoName += cusExtend.EnterpriseName+",";
            }
        }
        tenderOrder.Zhongbiaowenjian = input.Zhongbiaowenjian;
        tenderOrder.ZhongbiaowenjianName = input.ZhongbiaowenjianName;
        tenderOrder.Zhongbiaogonggao = input.Zhongbiaogonggao;
        tenderOrder.ZhongbiaogonggaoName = input.ZhongbiaogonggaoName;
        tenderOrder.ZhongbiaoDate = DateTime.Now;
        tenderOrder.UpdateTime = DateTime.Now;
        tenderOrder.UpdateUserId = usertrueId;
        tenderOrder.UpdateUserName = RealName;
        tenderOrder.OrderStatus = 3;
        tenderOrder.ZhongbiaoTittle = input.ZhongbiaoTittle;
        await _TenderOrderRep.UpdateAsync(tenderOrder);
        foreach (var sss in ssss)
        {
            var SupplierUserId = long.Parse(sss);
            var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.TenderId == input.TenderOrderId).Where(x => x.CreateUserId == SupplierUserId).FirstAsync();
            var tenderOrderBiddingId = Guid.Parse(sss);
            var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.Id == tenderOrderBiddingId).FirstAsync();
            tenderOrderBidding.IsSelected = true;
            tenderOrderBidding.SelectedTime = tenderOrder.ZhongbiaoDate;
            tenderOrderBidding.UpdateTime = DateTime.Now;
            tenderOrderBidding.UpdateUserId = usertrueId;
            tenderOrderBidding.UpdateUserName = RealName;
            await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
            var SupplierUserId = tenderOrderBidding.CusExtendId??0;
            var cusExtend = await _sqlSugarClient.Queryable<FBS_CusExtend>().Where(x => x.Id == SupplierUserId).FirstAsync();
            if (cusExtend != null)
            {
                tenderOrder.ZhongbiaoName += cusExtend.EnterpriseName + ",";
        }
        }
        tenderOrder.ZhongbiaoName = tenderOrder.ZhongbiaoName.Trim(',');
        await _TenderOrderRep.UpdateAsync(tenderOrder);
        return true;
@@ -895,4 +1127,65 @@
    }
    /// <summary>
    /// 采购代理人确认供应商已支付代理费 ➕
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [DisplayName("采购代理人确认供应商已支付代理费")]
    [ApiDescriptionSettings(Name = "QuerenDailifei"), HttpPost]
    public async Task<bool> QuerenDailifei(QuerenSuplierBaomingfeiInput input)
    {
        long userId = 0;
        long? usertrueId = null;
        if (long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId))
        {
            usertrueId = userId;
        }
        var RealName = App.User?.FindFirstValue(ClaimConst.RealName);
        string? CustomerLogoinType = App.User?.FindFirst(ClaimConst.CustomerLogoinType)?.Value;
        if (CustomerLogoinType != "DLJG" || CustomerLogoinType != "CGR")
        {
            throw Oops.Oh("只有登录角色招标代理机构或者采购人才能确认供应商已支付代理费!");
        }
        var tenderOrderBidding = await _TenderOrderBiddingRep.AsQueryable().Where(x => x.Id == input.TenderOrderBiddingId).FirstAsync();
        if (tenderOrderBidding == null)
        {
            throw Oops.Oh("没找到投标信息!");
        }
        if (tenderOrderBidding != null && (tenderOrderBidding.IsDailiTransfer.HasValue && tenderOrderBidding.IsDailiTransfer.Value))
        {
            throw Oops.Oh("已经付款!");
        }
        var tenderOrder = await _TenderOrderRep.AsQueryable().Where(x => x.Id == tenderOrderBidding.TenderId).FirstAsync();
        if (tenderOrder == null)
        {
            throw Oops.Oh("不存在的招标!");
        }
        tenderOrderBidding.IsDailiTransfer = true;
        tenderOrderBidding.DailiZhifujine = 0;
        tenderOrderBidding.DailiTransferTime = DateTime.Now;
        tenderOrderBidding.DailiTransferNo = "BMF" + tenderOrderBidding.Id.ToString("N");
        tenderOrderBidding.DailiTradeNo = DateTimeOffset.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next(100, 1000); // 订单号
        tenderOrderBidding.UpdateTime = DateTime.Now;
        tenderOrderBidding.UpdateUserId = usertrueId;
        tenderOrderBidding.UpdateUserName = RealName;
        return await _TenderOrderBiddingRep.UpdateAsync(tenderOrderBidding);
    }
}