移动系统liao
4 小时以前 a9bfc98a7e670f350529fc3e91d6cde453115a38
no message
15个文件已修改
7个文件已添加
823 ■■■■■ 已修改文件
Admin.NET/Admin.NET.Application/Configuration/Database.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/Admin.NET.Core/Const/ClaimConst.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/Admin.NET.Web.Core/Startup.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Customer.cs 357 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_CustomerRole.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_ExRole.cs 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_ExRoleMenu.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Menu.cs 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Role.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_RoleMenu.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.NET.MD/ProcurementComplaint.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintInput.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintOutput.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/ProcurementComplaintService.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/Plugins/Admin.NET.Plugin.ApprovalFlow/Admin.NET.Plugin.ApprovalFlow.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Admin.NET.Plugin.DingTalk.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/Plugins/Admin.NET.Plugin.GoView/Admin.NET.Plugin.GoView.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Admin.NET.Plugin.K3Cloud.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/Plugins/Admin.NET.Plugin.ReZero/Admin.NET.Plugin.ReZero.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Admin.NET.Plugin.WorkWeixin.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/Admin.NET.Application/Configuration/Database.json
@@ -27,14 +27,14 @@
        //    }
        //],
        "DbSettings": {
          "EnableInitDb": false, // 启用库初始化(若实体没有变化建议关闭)
          "EnableInitDb": true, // 启用库初始化(若实体没有变化建议关闭)
          "EnableInitView": false, // 启用视图初始化(若实体和视图没有变化建议关闭)
          "EnableDiffLog": false, // 启用库表差异日志
          "EnableUnderLine": false, // 启用驼峰转下划线
          "EnableConnEncrypt": false // 启用数据库连接串加密(国密SM2加解密)
        },
        "TableSettings": {
          "EnableInitTable": false, // 启用表初始化(若实体没有变化建议关闭)
          "EnableInitTable": true, // 启用表初始化(若实体没有变化建议关闭)
          "EnableIncreTable": true // 启用表增量更新(只更新贴了特性[IncreTable]的实体表)
        },
        "SeedSettings": {
Admin.NET/Admin.NET.Core/Const/ClaimConst.cs
@@ -65,4 +65,16 @@
    /// 登录模式PC、APP
    /// </summary>
    public const string LoginMode = "LoginMode";
    /// <summary>
    /// 用户类型
    /// </summary>
    public const string UserType = "UserType";
    /// <summary>
    /// 客户登录类型
    /// </summary>
    public const string CustomerLogoinType = "CustomerLogoinType";
}
Admin.NET/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj
@@ -16,6 +16,7 @@
  <ItemGroup>
    <ProjectReference Include="..\Admin.NET.Application\Admin.NET.Application.csproj" />
    <ProjectReference Include="..\FZCZTB.TSCL.Application\FZCZTB.TSCL.Application.csproj" />
  </ItemGroup>
</Project>
Admin.NET/Admin.NET.Web.Core/Startup.cs
@@ -351,7 +351,7 @@
        {
            foreach (var groupInfo in SpecificationDocumentBuilder.GetOpenApiGroups())
            {
                groupInfo.Description += "<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>";
                groupInfo.Description += "<br/><u><b><font color='FF0000'> 欢迎欢迎</font></b></u>";
            }
        });
Admin.NET/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj
@@ -62,7 +62,6 @@
  <ItemGroup>
    <ProjectReference Include="..\Admin.NET.Web.Core\Admin.NET.Web.Core.csproj" />
    <ProjectReference Include="..\FZCZTB.TSCL.Application\FZCZTB.TSCL.Application.csproj" />
  </ItemGroup>
</Project>
Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Customer.cs
New file
@@ -0,0 +1,357 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using Admin.NET.Core;
using Furion.FriendlyException;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FZCZTB.NET.MD.CutomerMd;
/// <summary>
/// 客户表
/// </summary>
[SugarTable("FB_Customer", "客户表")]
[SugarIndex("index_{table}_A", nameof(Account), OrderByType.Asc)]
[SugarIndex("index_{table}_P", nameof(Phone), OrderByType.Asc)]
[IncreTable]
public partial class FB_Customer : EntityBaseTenant
{
    /// <summary>
    /// 账号
    /// </summary>
    [SugarColumn(ColumnDescription = "账号", Length = 32)]
    [Required, MaxLength(32)]
    public virtual string Account { get; set; }
    /// <summary>
    /// 密码
    /// </summary>
    [SugarColumn(ColumnDescription = "密码", Length = 512)]
    [MaxLength(512)]
    [Newtonsoft.Json.JsonIgnore]
    [System.Text.Json.Serialization.JsonIgnore]
    public virtual string Password { get; set; }
    /// <summary>
    /// 真实姓名
    /// </summary>
    [SugarColumn(ColumnDescription = "真实姓名", Length = 32)]
    [MaxLength(32)]
    public virtual string RealName { get; set; }
    /// <summary>
    /// 昵称
    /// </summary>
    [SugarColumn(ColumnDescription = "昵称", Length = 32)]
    [MaxLength(32)]
    public string? NickName { get; set; }
    /// <summary>
    /// 头像
    /// </summary>
    [SugarColumn(ColumnDescription = "头像", Length = 512)]
    [MaxLength(512)]
    public string? Avatar { get; set; }
    /// <summary>
    /// 性别-男_1、女_2
    /// </summary>
    [SugarColumn(ColumnDescription = "性别")]
    public GenderEnum Sex { get; set; } = GenderEnum.Male;
    /// <summary>
    /// 年龄
    /// </summary>
    [SugarColumn(ColumnDescription = "年龄")]
    public int Age { get; set; }
    /// <summary>
    /// 出生日期
    /// </summary>
    [SugarColumn(ColumnDescription = "出生日期")]
    public DateTime? Birthday { get; set; }
    /// <summary>
    /// 民族
    /// </summary>
    [SugarColumn(ColumnDescription = "民族", Length = 32)]
    [MaxLength(32)]
    public string? Nation { get; set; }
    /// <summary>
    /// 手机号码
    /// </summary>
    [SugarColumn(ColumnDescription = "手机号码", Length = 16)]
    [MaxLength(16)]
    public string? Phone { get; set; }
    /// <summary>
    /// 证件类型
    /// </summary>
    [SugarColumn(ColumnDescription = "证件类型")]
    public CardTypeEnum CardType { get; set; }
    /// <summary>
    /// 身份证号
    /// </summary>
    [SugarColumn(ColumnDescription = "身份证号", Length = 32)]
    [MaxLength(32)]
    public string? IdCardNum { get; set; }
    /// <summary>
    /// 身份证号
    /// </summary>
    [SugarColumn(ColumnDescription = "身份证", Length = 512)]
    [MaxLength(512)]
    public string? IdCardPath { get; set; }
    /// <summary>
    /// 邮箱
    /// </summary>
    [SugarColumn(ColumnDescription = "邮箱", Length = 64)]
    [MaxLength(64)]
    public string? Email { get; set; }
    /// <summary>
    /// 地址
    /// </summary>
    [SugarColumn(ColumnDescription = "地址", Length = 256)]
    [MaxLength(256)]
    public string? Address { get; set; }
    /// <summary>
    /// 文化程度
    /// </summary>
    [SugarColumn(ColumnDescription = "文化程度")]
    public CultureLevelEnum CultureLevel { get; set; }
    /// <summary>
    /// 政治面貌
    /// </summary>
    [SugarColumn(ColumnDescription = "政治面貌", Length = 16)]
    [MaxLength(16)]
    public string? PoliticalOutlook { get; set; }
    /// <summary>
    /// 毕业院校
    /// </summary>COLLEGE
    [SugarColumn(ColumnDescription = "毕业院校", Length = 128)]
    [MaxLength(128)]
    public string? College { get; set; }
    /// <summary>
    /// 办公电话
    /// </summary>
    [SugarColumn(ColumnDescription = "办公电话", Length = 16)]
    [MaxLength(16)]
    public string? OfficePhone { get; set; }
    /// <summary>
    /// 紧急联系人
    /// </summary>
    [SugarColumn(ColumnDescription = "紧急联系人", Length = 32)]
    [MaxLength(32)]
    public string? EmergencyContact { get; set; }
    /// <summary>
    /// 紧急联系人电话
    /// </summary>
    [SugarColumn(ColumnDescription = "紧急联系人电话", Length = 16)]
    [MaxLength(16)]
    public string? EmergencyPhone { get; set; }
    /// <summary>
    /// 紧急联系人地址
    /// </summary>
    [SugarColumn(ColumnDescription = "紧急联系人地址", Length = 256)]
    [MaxLength(256)]
    public string? EmergencyAddress { get; set; }
    /// <summary>
    /// 个人简介
    /// </summary>
    [SugarColumn(ColumnDescription = "个人简介", Length = 512)]
    [MaxLength(512)]
    public string? Introduction { get; set; }
    /// <summary>
    /// 排序
    /// </summary>
    [SugarColumn(ColumnDescription = "排序")]
    public int OrderNo { get; set; } = 100;
    /// <summary>
    /// 状态
    /// </summary>
    [SugarColumn(ColumnDescription = "状态")]
    public StatusEnum Status { get; set; } = StatusEnum.Enable;
    /// <summary>
    /// 备注
    /// </summary>
    [SugarColumn(ColumnDescription = "备注", Length = 256)]
    [MaxLength(256)]
    public string? Remark { get; set; }
    ///// <summary>
    ///// 账号类型
    ///// </summary>
    //[SugarColumn(ColumnDescription = "账号类型")]
    //public AccountTypeEnum AccountType { get; set; } = AccountTypeEnum.NormalUser;
    ///// <summary>
    ///// 直属机构Id
    ///// </summary>
    //[SugarColumn(ColumnDescription = "直属机构Id")]
    //public long OrgId { get; set; }
    /// <summary>
    /// 直属机构
    /// </summary>
    //[Navigate(NavigateType.OneToOne, nameof(OrgId))]
    //public SysOrg SysOrg { get; set; }
    /// <summary>
    /// 直属主管Id
    /// </summary>
    //[SugarColumn(ColumnDescription = "直属主管Id")]
    //public long? ManagerUserId { get; set; }
    /// <summary>
    /// 直属主管
    /// </summary>
    //[Newtonsoft.Json.JsonIgnore]
    //[System.Text.Json.Serialization.JsonIgnore]
    //[Navigate(NavigateType.OneToOne, nameof(ManagerUserId))]
    //public SysUser ManagerUser { get; set; }
    ///// <summary>
    ///// 职位Id
    ///// </summary>
    //[SugarColumn(ColumnDescription = "职位Id")]
    //public long PosId { get; set; }
    ///// <summary>
    ///// 职位
    ///// </summary>
    //[Newtonsoft.Json.JsonIgnore]
    //[System.Text.Json.Serialization.JsonIgnore]
    //[Navigate(NavigateType.OneToOne, nameof(PosId))]
    //public SysPos SysPos { get; set; }
    ///// <summary>
    ///// 工号
    ///// </summary>
    //[SugarColumn(ColumnDescription = "工号", Length = 32)]
    //[MaxLength(32)]
    //public string? JobNum { get; set; }
    /// <summary>
    /// 职级
    /// </summary>
    [SugarColumn(ColumnDescription = "职级", Length = 32)]
    [MaxLength(32)]
    public string? PosLevel { get; set; }
    /// <summary>
    /// 职称
    /// </summary>
    [SugarColumn(ColumnDescription = "职称", Length = 32)]
    [MaxLength(32)]
    public string? PosTitle { get; set; }
    /// <summary>
    /// 擅长领域
    /// </summary>
    [SugarColumn(ColumnDescription = "擅长领域", Length = 32)]
    [MaxLength(32)]
    public string? Expertise { get; set; }
    /// <summary>
    /// 办公区域
    /// </summary>
    [SugarColumn(ColumnDescription = "办公区域", Length = 32)]
    [MaxLength(32)]
    public string? OfficeZone { get; set; }
    /// <summary>
    /// 办公室
    /// </summary>
    [SugarColumn(ColumnDescription = "办公室", Length = 32)]
    [MaxLength(32)]
    public string? Office { get; set; }
    /// <summary>
    /// 入职日期
    /// </summary>
    [SugarColumn(ColumnDescription = "入职日期")]
    public DateTime? JoinDate { get; set; }
    /// <summary>
    /// 最新登录Ip
    /// </summary>
    [SugarColumn(ColumnDescription = "最新登录Ip", Length = 256)]
    [MaxLength(256)]
    public string? LastLoginIp { get; set; }
    /// <summary>
    /// 最新登录地点
    /// </summary>
    [SugarColumn(ColumnDescription = "最新登录地点", Length = 128)]
    [MaxLength(128)]
    public string? LastLoginAddress { get; set; }
    /// <summary>
    /// 最新登录时间
    /// </summary>
    [SugarColumn(ColumnDescription = "最新登录时间")]
    public DateTime? LastLoginTime { get; set; }
    /// <summary>
    /// 最新登录设备
    /// </summary>
    [SugarColumn(ColumnDescription = "最新登录设备", Length = 128)]
    [MaxLength(128)]
    public string? LastLoginDevice { get; set; }
    /// <summary>
    /// 电子签名
    /// </summary>
    [SugarColumn(ColumnDescription = "电子签名", Length = 512)]
    [MaxLength(512)]
    public string? Signature { get; set; }
    ///// <summary>
    ///// 验证超级管理员类型,若账号类型为超级管理员则报错
    ///// </summary>
    ///// <param name="errorMsg">自定义错误消息</param>
    //public void ValidateIsSuperAdminAccountType(ErrorCodeEnum? errorMsg = ErrorCodeEnum.D1014)
    //{
    //    if (AccountType == AccountTypeEnum.SuperAdmin)
    //    {
    //        throw Oops.Oh(errorMsg);
    //    }
    //}
    /// <summary>
    /// 验证用户Id是否相同,若用户Id相同则报错
    /// </summary>
    /// <param name="userId">用户Id</param>
    /// <param name="errorMsg">自定义错误消息</param>
    public void ValidateIsUserId(long userId, ErrorCodeEnum? errorMsg = ErrorCodeEnum.D1001)
    {
        if (Id == userId)
        {
            throw Oops.Oh(errorMsg);
        }
    }
}
Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_CustomerRole.cs
New file
@@ -0,0 +1,45 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using Admin.NET.Core;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FZCZTB.NET.MD.CutomerMd;
[SugarTable("FB_CustomerRole", "客户菜单表")]
[IncreTable]
public class FB_CustomerRole : EntityBaseId
{
    /// <summary>
    /// 用户Id
    /// </summary>
    [SugarColumn(ColumnDescription = "用户Id")]
    public long CutomerId { get; set; }
    /// <summary>
    /// 用户
    /// </summary>
    [Newtonsoft.Json.JsonIgnore]
    [System.Text.Json.Serialization.JsonIgnore]
    [Navigate(NavigateType.OneToOne, nameof(CutomerId))]
    public SysUser SysUser { get; set; }
    /// <summary>
    /// 角色Id
    /// </summary>
    [SugarColumn(ColumnDescription = "角色Id")]
    public long RoleId { get; set; }
    /// <summary>
    /// 角色
    /// </summary>
    [Navigate(NavigateType.OneToOne, nameof(RoleId))]
    public SysRole SysRole { get; set; }
}
Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_ExRole.cs
New file
@@ -0,0 +1,65 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using Admin.NET.Core;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FZCZTB.NET.MD.CutomerMd;
/// <summary>
/// 登录即要选择的校色
/// </summary>
[SugarTable("FB_TenantMenu", "客户主分类角色")]
[SugarIndex("index_{table}_N", nameof(Name), OrderByType.Asc)]
[SugarIndex("index_{table}_C", nameof(Code), OrderByType.Asc)]
[IncreTable]
public class FB_ExRole: EntityBaseTenantId
{
    /// <summary>
    /// 名称
    /// </summary>
    [SugarColumn(ColumnDescription = "名称", Length = 64)]
    [Required, MaxLength(64)]
    public virtual string Name { get; set; }
    /// <summary>
    /// 编码
    /// </summary>
    [SugarColumn(ColumnDescription = "编码", Length = 64)]
    [MaxLength(64)]
    public string? Code { get; set; }
    /// <summary>
    /// 排序
    /// </summary>
    [SugarColumn(ColumnDescription = "排序")]
    public int OrderNo { get; set; } = 100;
    /// <summary>
    /// 数据范围(1全部数据 2本部门及以下数据 3本部门数据 4仅本人数据 5自定义数据)
    /// </summary>
    [SugarColumn(ColumnDescription = "数据范围")]
    public DataScopeEnum DataScope { get; set; } = DataScopeEnum.All;
    /// <summary>
    /// 备注
    /// </summary>
    [SugarColumn(ColumnDescription = "备注", Length = 128)]
    [MaxLength(128)]
    public string? Remark { get; set; }
    /// <summary>
    /// 状态
    /// </summary>
    [SugarColumn(ColumnDescription = "状态")]
    public StatusEnum Status { get; set; } = StatusEnum.Enable;
}
Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_ExRoleMenu.cs
New file
@@ -0,0 +1,34 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using Admin.NET.Core;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FZCZTB.NET.MD.CutomerMd;
/// <summary>
/// 系统租户菜单表
/// </summary>
[SugarTable("FB_TenantMenu", "系统租户菜单表")]
[IncreTable]
class FB_ExRoleMenu: EntityBaseId
{
    /// <summary>
    /// 租户Id
    /// </summary>
    [SugarColumn(ColumnDescription = "租户Id")]
    public long ExRoleId { get; set; }
    /// <summary>
    /// 菜单Id
    /// </summary>
    [SugarColumn(ColumnDescription = "菜单Id")]
    public long MenuId { get; set; }
}
Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Menu.cs
New file
@@ -0,0 +1,142 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using Admin.NET.Core;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FZCZTB.NET.MD.CutomerMd;
/// <summary>
///
/// </summary>
[SugarTable("FB_Menu", "客户系统菜单表")]
[SugarIndex("index_{table}_T", nameof(Title), OrderByType.Asc)]
[SugarIndex("index_{table}_T2", nameof(Type), OrderByType.Asc)]
[IncreTable]
public class FB_Menu: EntityBaseTenantId
{
    /// <summary>
    /// 父Id
    /// </summary>
    [SugarColumn(ColumnDescription = "父Id")]
    public long Pid { get; set; }
    /// <summary>
    /// 菜单类型(1目录 2菜单 3按钮)
    /// </summary>
    [SugarColumn(ColumnDescription = "菜单类型")]
    public MenuTypeEnum Type { get; set; }
    /// <summary>
    /// 路由名称
    /// </summary>
    [SugarColumn(ColumnDescription = "路由名称", Length = 64)]
    [MaxLength(64)]
    public string? Name { get; set; }
    /// <summary>
    /// 路由地址
    /// </summary>
    [SugarColumn(ColumnDescription = "路由地址", Length = 128)]
    [MaxLength(128)]
    public string? Path { get; set; }
    /// <summary>
    /// 组件路径
    /// </summary>
    [SugarColumn(ColumnDescription = "组件路径", Length = 128)]
    [MaxLength(128)]
    public string? Component { get; set; }
    /// <summary>
    /// 重定向
    /// </summary>
    [SugarColumn(ColumnDescription = "重定向", Length = 128)]
    [MaxLength(128)]
    public string? Redirect { get; set; }
    /// <summary>
    /// 权限标识
    /// </summary>
    [SugarColumn(ColumnDescription = "权限标识", Length = 128)]
    [MaxLength(128)]
    public string? Permission { get; set; }
    /// <summary>
    /// 菜单名称
    /// </summary>
    [SugarColumn(ColumnDescription = "菜单名称", Length = 64)]
    [Required, MaxLength(64)]
    public virtual string Title { get; set; }
    /// <summary>
    /// 图标
    /// </summary>
    [SugarColumn(ColumnDescription = "图标", Length = 128)]
    [MaxLength(128)]
    public string? Icon { get; set; } = "ele-Menu";
    /// <summary>
    /// 是否内嵌
    /// </summary>
    [SugarColumn(ColumnDescription = "是否内嵌")]
    public bool IsIframe { get; set; }
    /// <summary>
    /// 外链链接
    /// </summary>
    [SugarColumn(ColumnDescription = "外链链接", Length = 256)]
    [MaxLength(256)]
    public string? OutLink { get; set; }
    /// <summary>
    /// 是否隐藏
    /// </summary>
    [SugarColumn(ColumnDescription = "是否隐藏")]
    public bool IsHide { get; set; }
    /// <summary>
    /// 是否缓存
    /// </summary>
    [SugarColumn(ColumnDescription = "是否缓存")]
    public bool IsKeepAlive { get; set; } = true;
    /// <summary>
    /// 是否固定
    /// </summary>
    [SugarColumn(ColumnDescription = "是否固定")]
    public bool IsAffix { get; set; }
    /// <summary>
    /// 排序
    /// </summary>
    [SugarColumn(ColumnDescription = "排序")]
    public int OrderNo { get; set; } = 100;
    /// <summary>
    /// 状态
    /// </summary>
    [SugarColumn(ColumnDescription = "状态")]
    public StatusEnum Status { get; set; } = StatusEnum.Enable;
    /// <summary>
    /// 备注
    /// </summary>
    [SugarColumn(ColumnDescription = "备注", Length = 256)]
    [MaxLength(256)]
    public string? Remark { get; set; }
    /// <summary>
    /// 菜单子项
    /// </summary>
    [SugarColumn(IsIgnore = true)]
    public List<SysMenu> Children { get; set; } = new();
}
Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_Role.cs
New file
@@ -0,0 +1,63 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using Admin.NET.Core;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static SKIT.FlurlHttpClient.Wechat.Api.Models.ComponentTCBBatchCreateContainerServiceVersionRequest.Types;
namespace FZCZTB.NET.MD.CutomerMd;
[SugarTable("FB_Role", "客户个性化角色")]
[SugarIndex("index_{table}_N", nameof(Name), OrderByType.Asc)]
[SugarIndex("index_{table}_C", nameof(Code), OrderByType.Asc)]
[IncreTable]
public class FB_Role : EntityBaseTenant
{
    /// <summary>
    /// 名称
    /// </summary>
    [SugarColumn(ColumnDescription = "名称", Length = 64)]
    [Required, MaxLength(64)]
    public virtual string Name { get; set; }
    /// <summary>
    /// 编码
    /// </summary>
    [SugarColumn(ColumnDescription = "编码", Length = 64)]
    [MaxLength(64)]
    public string? Code { get; set; }
    /// <summary>
    /// 排序
    /// </summary>
    [SugarColumn(ColumnDescription = "排序")]
    public int OrderNo { get; set; } = 100;
    /// <summary>
    /// 数据范围(1全部数据 2本部门及以下数据 3本部门数据 4仅本人数据 5自定义数据)
    /// </summary>
    [SugarColumn(ColumnDescription = "数据范围")]
    public DataScopeEnum DataScope { get; set; } = DataScopeEnum.Self;
    /// <summary>
    /// 备注
    /// </summary>
    [SugarColumn(ColumnDescription = "备注", Length = 128)]
    [MaxLength(128)]
    public string? Remark { get; set; }
    /// <summary>
    /// 状态
    /// </summary>
    [SugarColumn(ColumnDescription = "状态")]
    public StatusEnum Status { get; set; } = StatusEnum.Enable;
}
Admin.NET/FZCZTB.NET.MD/CutomerMd/FB_RoleMenu.cs
New file
@@ -0,0 +1,40 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using Admin.NET.Core;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FZCZTB.NET.MD.CutomerMd;
[IncreTable]
[SugarTable("FB_Role", "个性化校色菜单")]
public class FB_RoleMenu: EntityBaseId
{
    /// <summary>
    /// 角色Id
    /// </summary>
    [SugarColumn(ColumnDescription = "角色Id")]
    public long RoleId { get; set; }
    /// <summary>
    /// 菜单Id
    /// </summary>
    [SugarColumn(ColumnDescription = "菜单Id")]
    public long MenuId { get; set; }
    /// <summary>
    /// 菜单
    /// </summary>
    [Newtonsoft.Json.JsonIgnore]
    [System.Text.Json.Serialization.JsonIgnore]
    [Navigate(NavigateType.OneToOne, nameof(MenuId))]
    public SysMenu SysMenu { get; set; }
}
Admin.NET/FZCZTB.NET.MD/ProcurementComplaint.cs
@@ -76,7 +76,7 @@
        /// <summary>
        /// 投诉事项
        /// </summary>
        [Navigate(NavigateType.OneToMany,nameof(ProcurementComplaintItems.ComplaintId), nameof(ProcurementComplaint.Id))]
        [Navigate(NavigateType.OneToMany,nameof(ProcurementComplaintItems.ComplaintId))]
        public  List<ProcurementComplaintItems>? Complaints { get; set; }
    }
@@ -109,7 +109,7 @@
            /// 处理结果
            /// </summary>
            [SugarColumn(IsNullable = true, ColumnDescription = "处理结果")]
            public PComplaintStatus HandlingStatus { get; set; }
            public PComplaintStatus? HandlingStatus { get; set; }
        /// <summary>
        /// 处理描述
        /// </summary>
@@ -148,7 +148,7 @@
        [Description("部分成立")]
        PartiallyValid = 3
    }
    public class basemodelNoId
Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintInput.cs
@@ -122,6 +122,13 @@
    /// 选中主键列表
    /// </summary>
    public List<Guid> SelectKeyList { get; set; }
    /// <summary>
    /// 是否成立
    /// </summary>
    public PComplaintStatus? Status { get; set; }
}
/// <summary>
Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/Dto/ProcurementComplaintOutput.cs
@@ -3,6 +3,7 @@
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using FZCZTB.NET.MD;
using Magicodes.ExporterAndImporter.Core;
namespace FZCZTB.TSCL.Application;
@@ -84,10 +85,14 @@
    /// <summary>
    /// 修改者姓名
    /// </summary>
    public string? UpdateUserName { get; set; }
    public string? UpdateUserName { get; set; }
    public List<ProcurementComplaintItems>? Complaints { get; set; }
    /// <summary>
    /// 是否成立
    /// </summary>
    public PComplaintStatus Status { get; set; }
}
/// <summary>
Admin.NET/FZCZTB.TSCL.Application/Service/ProcurementComplaint/ProcurementComplaintService.cs
@@ -23,6 +23,7 @@
using System.Linq;
using NewLife.Xml;
using AngleSharp.Dom;
using static Elastic.Clients.Elasticsearch.JoinField;
namespace FZCZTB.TSCL.Application;
/// <summary>
@@ -50,8 +51,8 @@
    public async Task<SqlSugarPagedList<ProcurementComplaintOutput>> Page(PageProcurementComplaintInput input)
    {
        input.Keyword = input.Keyword?.Trim();
        var query = _procurementComplaintRep.AsQueryable().Includes(x=>x.Complaints)
            .WhereIF(!string.IsNullOrWhiteSpace(input.Keyword), u => u.Complaints.Any(uu=>uu.ItemDescription.Contains(input.Keyword)))
        var query = _procurementComplaintRep.AsQueryable().Includes(u => u.Complaints)
            .WhereIF(!string.IsNullOrWhiteSpace(input.Keyword), u => u.Complaints.Any(uu => uu.ItemDescription.Contains(input.Keyword)))
            .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectCode), u => u.ProjectCode.Contains(input.ProjectCode.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectName), u => u.ProjectName.Contains(input.ProjectName.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.Purchaser), u => u.Purchaser.Contains(input.Purchaser.Trim()))
@@ -60,7 +61,21 @@
            .WhereIF(!string.IsNullOrWhiteSpace(input.ProcurementSupervisionDepartment), u => u.ProcurementSupervisionDepartment.Contains(input.ProcurementSupervisionDepartment.Trim()))
            .WhereIF(!string.IsNullOrWhiteSpace(input.Url), u => u.Url.Contains(input.Url.Trim()))
            .WhereIF(input.DecisionDateRange?.Length == 2, u => u.DecisionDate >= input.DecisionDateRange[0] && u.DecisionDate <= input.DecisionDateRange[1])
            .Select<ProcurementComplaintOutput>();
            .WhereIF(input.Status != null && input.Status == PComplaintStatus.Valid, u =>( u.Complaints.Any(uu => uu.HandlingStatus == PComplaintStatus.Valid)))
            .WhereIF(input.Status != null && input.Status == PComplaintStatus.Rejected, u => ( !u.Complaints.Any(uu=>uu.HandlingStatus== PComplaintStatus.Other||uu.HandlingStatus== PComplaintStatus.Valid||uu.HandlingStatus==null)))
            .WhereIF(input.Status != null && input.Status == PComplaintStatus.Other, u =>!( u.Complaints.Any(uu=>uu.HandlingStatus== PComplaintStatus.Valid)|| (!u.Complaints.Any(uu => uu.HandlingStatus == PComplaintStatus.Other || uu.HandlingStatus == PComplaintStatus.Valid || uu.HandlingStatus == null))))
            .Select(n => new ProcurementComplaintOutput
            {
                Complaints = n.Complaints
            },true)
            .Mapper(n =>
             {
                 n.Status =n.Complaints==null?  PComplaintStatus.Other:n.Complaints.Any(x => x.HandlingStatus == PComplaintStatus.Valid) ? PComplaintStatus.Valid :
                 n.Complaints.All(x => x.HandlingStatus == PComplaintStatus.Rejected) ? PComplaintStatus.Rejected : PComplaintStatus.Other ;
                 n.Complaints = null;
            }
            );
        return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize);
    }
Admin.NET/Plugins/Admin.NET.Plugin.ApprovalFlow/Admin.NET.Plugin.ApprovalFlow.csproj
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net8.0;net9.0</TargetFrameworks>
    <TargetFrameworks>net8.0</TargetFrameworks>
    <NoWarn>1701;1702;1591;8632</NoWarn>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>disable</Nullable>
Admin.NET/Plugins/Admin.NET.Plugin.DingTalk/Admin.NET.Plugin.DingTalk.csproj
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net8.0;net9.0</TargetFrameworks>
    <TargetFrameworks>net8.0</TargetFrameworks>
    <NoWarn>1701;1702;1591;8632</NoWarn>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>disable</Nullable>
Admin.NET/Plugins/Admin.NET.Plugin.GoView/Admin.NET.Plugin.GoView.csproj
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net8.0;net9.0</TargetFrameworks>
    <TargetFrameworks>net8.0</TargetFrameworks>
    <NoWarn>1701;1702;1591;8632</NoWarn>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>disable</Nullable>
Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Admin.NET.Plugin.K3Cloud.csproj
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net8.0;net9.0</TargetFrameworks>
    <TargetFrameworks>net8.0</TargetFrameworks>
    <NoWarn>1701;1702;1591;8632</NoWarn>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>disable</Nullable>
Admin.NET/Plugins/Admin.NET.Plugin.ReZero/Admin.NET.Plugin.ReZero.csproj
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net8.0;net9.0</TargetFrameworks>
    <TargetFrameworks>net8.0</TargetFrameworks>
    <NoWarn>1701;1702;1591;8632</NoWarn>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>disable</Nullable>
Admin.NET/Plugins/Admin.NET.Plugin.WorkWeixin/Admin.NET.Plugin.WorkWeixin.csproj
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net8.0;net9.0</TargetFrameworks>
    <TargetFrameworks>net8.0</TargetFrameworks>
    <NoWarn>1701;1702;1591;8632</NoWarn>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>disable</Nullable>