sunpengfei
2025-08-01 937dbb7cc77729b1a7d35b87fd421bc44046c108
feat:基础框架开发
7个文件已添加
1个文件已删除
3 文件已重命名
10个文件已修改
2810 ■■■■■ 已修改文件
FlexJobApi.Application/FlexJobApi.Application.csproj 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Application/applicationsettings.json 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Entities/Common/DictionaryData.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Entities/Users/Department.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Entities/Users/Menu.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/FlexJobApi.Core.csproj 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/FlexJobApi.Core.xml 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/User/Auths/Commands/AuthPasswordLoginCommand.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/User/Menus/Commands/MenuSaveCommand.cs 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/Models/User/Menus/Queries/MenuAllQuery.cs 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Core/settings.json 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Database.Migrations/Migrations/20250801052306_UpdateTreeData0801.Designer.cs 2116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Database.Migrations/Migrations/20250801052306_UpdateTreeData0801.cs 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.User.Application/Auths/AuthAppService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.User.Application/Auths/Commands/AuthPasswordLoginCommandHandler.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.User.Application/EnumUserErrorCodeType.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.User.Application/FlexJobApi.User.Application.csproj 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.User.Application/Menus/Commands/MenuSaveCommandHandler.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.User.Application/Menus/MenuAppService.cs 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.User.Application/Menus/Queries/MenuAllQueryHandler.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FlexJobApi.Application/FlexJobApi.Application.csproj
@@ -9,14 +9,7 @@
    </PropertyGroup>
    <ItemGroup>
        <None Remove="applicationsettings.json" />
        <None Remove="FlexJobApi.Application.xml" />
    </ItemGroup>
    <ItemGroup>
        <Content Include="applicationsettings.json">
            <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </Content>
    </ItemGroup>
    <ItemGroup>
FlexJobApi.Application/applicationsettings.json
File was deleted
FlexJobApi.Core/Entities/Common/DictionaryData.cs
@@ -46,6 +46,11 @@
        public List<DictionaryData> Childrens { get; set; }
        /// <summary>
        /// 字典路径
        /// </summary>
        public string Path { get; set; }
        /// <summary>
        /// 编号
        /// </summary>
        [MaxLength(128)]
FlexJobApi.Core/Entities/Users/Department.cs
@@ -36,6 +36,11 @@
        public List<Department> Childrens { get; set; }
        /// <summary>
        /// 部门路径
        /// </summary>
        public string Path { get; set; }
        /// <summary>
        /// 企业Id
        /// </summary>
        public Guid EnterpriseId { get; set; }
FlexJobApi.Core/Entities/Users/Menu.cs
@@ -36,6 +36,11 @@
        public List<Menu> Childrens { get; set; }
        /// <summary>
        /// 菜单路径
        /// </summary>
        public string Path { get; set; }
        /// <summary>
        /// 编号
        /// </summary>
        [Required]
@@ -74,9 +79,9 @@
        public string Group { get; set; }
        /// <summary>
        /// 绑定字段
        /// 列宽(用于按钮/列/元素)
        /// </summary>
        public string BindField { get; set; }
        public string Width { get; set; }
        /// <summary>
        /// 是否禁用
FlexJobApi.Core/FlexJobApi.Core.csproj
@@ -27,9 +27,7 @@
    <ItemGroup>
      <Folder Include="Models\Main\" />
      <Folder Include="Models\User\Auth\Queries\" />
      <Folder Include="Models\User\Menu\Commands\" />
      <Folder Include="Models\User\Menu\Queries\" />
      <Folder Include="Models\User\Auths\Queries\" />
    </ItemGroup>
    <ItemGroup>
FlexJobApi.Core/FlexJobApi.Core.xml
@@ -109,6 +109,11 @@
            下级
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.DictionaryData.Path">
            <summary>
            字典路径
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.DictionaryData.Code">
            <summary>
            编号
@@ -654,6 +659,11 @@
            下级
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.Department.Path">
            <summary>
            部门路径
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.Department.EnterpriseId">
            <summary>
            企业Id
@@ -814,6 +824,11 @@
            下级
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.Menu.Path">
            <summary>
            菜单路径
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.Menu.Code">
            <summary>
            编号
@@ -849,9 +864,9 @@
            分组名称(用于按钮/字段)
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.Menu.BindField">
        <member name="P:FlexJobApi.Core.Menu.Width">
            <summary>
            绑定字段
            列宽(用于按钮/列/元素)
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.Menu.IsDisabled">
@@ -1864,36 +1879,201 @@
            物理删除
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.UserAuthPasswordLoginCommand">
        <member name="T:FlexJobApi.Core.AuthPasswordLoginCommand">
            <summary>
            密码登录
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.UserAuthPasswordLoginCommand.UserName">
        <member name="P:FlexJobApi.Core.AuthPasswordLoginCommand.UserName">
            <summary>
            账号
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.UserAuthPasswordLoginCommand.Password">
        <member name="P:FlexJobApi.Core.AuthPasswordLoginCommand.Password">
            <summary>
            密码
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.UserAuthPasswordLoginCommand.Type">
        <member name="P:FlexJobApi.Core.AuthPasswordLoginCommand.Type">
            <summary>
            用户类型
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.UserAuthPasswordLoginCommand.ClientType">
        <member name="P:FlexJobApi.Core.AuthPasswordLoginCommand.ClientType">
            <summary>
            客户端类型
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.UserAuthPasswordLoginCallback">
        <member name="T:FlexJobApi.Core.AuthPasswordLoginCallback">
            <summary>
            密码登录结果
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.MenuSaveCommand">
            <summary>
            保存菜单
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuSaveCommand.Id">
            <summary>
            Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuSaveCommand.ParentId">
            <summary>
            上级Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuSaveCommand.Code">
            <summary>
            编号
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuSaveCommand.Name">
            <summary>
            名称
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuSaveCommand.Type">
            <summary>
            类型
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuSaveCommand.VisitLevel">
            <summary>
            访问级别
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuSaveCommand.Icon">
            <summary>
            图标
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuSaveCommand.Url">
            <summary>
            链接地址
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuSaveCommand.Group">
            <summary>
            分组名称(用于按钮/字段)
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuSaveCommand.Width">
            <summary>
            列宽(用于按钮/列/元素)
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuSaveCommand.IsDisabled">
            <summary>
            是否禁用
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuSaveCommand.IsHidden">
            <summary>
            是否隐藏
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuSaveCommand.IsCache">
            <summary>
            是否缓存
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuSaveCommand.Sort">
            <summary>
            排序
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuSaveCommand.Remark">
            <summary>
            备注
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.MenuAllQuery">
            <summary>
            查询所有菜单
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.MenuAllCallback">
            <summary>
            查询所有菜单-结果
            </summary>
        </member>
        <member name="T:FlexJobApi.Core.MenuAllCallbackItem">
            <summary>
            查询所有菜单-结果-项
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Id">
            <summary>
            Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.ParentId">
            <summary>
            上级Id
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Path">
            <summary>
            菜单路径
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Code">
            <summary>
            编号
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Name">
            <summary>
            名称
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Type">
            <summary>
            类型
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.VisitLevel">
            <summary>
            访问级别
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Icon">
            <summary>
            图标
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Url">
            <summary>
            链接地址
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.IsDisabled">
            <summary>
            是否禁用
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.IsHidden">
            <summary>
            是否隐藏
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.IsCache">
            <summary>
            是否缓存
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Sort">
            <summary>
            排序
            </summary>
        </member>
        <member name="P:FlexJobApi.Core.MenuAllCallbackItem.Remark">
            <summary>
            备注
            </summary>
        </member>
        <member name="M:FlexJobApi.Core.CollectionUtils.DistinctAdd``1(System.Collections.Generic.List{``0},``0,System.Collections.Generic.IEqualityComparer{``0})">
            <summary>
            去重添加
FlexJobApi.Core/Models/User/Auths/Commands/AuthPasswordLoginCommand.cs
File was renamed from FlexJobApi.Core/Models/User/Auth/Commands/UserAuthPasswordLoginCommand.cs
@@ -12,7 +12,7 @@
    /// <summary>
    /// 密码登录
    /// </summary>
    public class UserAuthPasswordLoginCommand : IRequest<UserAuthPasswordLoginCallback>
    public class AuthPasswordLoginCommand : IRequest<AuthPasswordLoginCallback>
    {
        /// <summary>
        /// 账号
@@ -41,7 +41,7 @@
    /// <summary>
    /// 密码登录结果
    /// </summary>
    public class UserAuthPasswordLoginCallback
    public class AuthPasswordLoginCallback
    {
    }
FlexJobApi.Core/Models/User/Menus/Commands/MenuSaveCommand.cs
New file
@@ -0,0 +1,94 @@
using MediatR;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
    /// <summary>
    /// 保存菜单
    /// </summary>
    public class MenuSaveCommand : IRequest<Guid>
    {
        /// <summary>
        /// Id
        /// </summary>
        public Guid? Id { get; set; }
        /// <summary>
        /// 上级Id
        /// </summary>
        public Guid? ParentId { get; set; }
        /// <summary>
        /// 编号
        /// </summary>
        [Required]
        public string Code { get; set; }
        /// <summary>
        /// 名称
        /// </summary>
        [Required]
        [MaxLength(128)]
        public string Name { get; set; }
        /// <summary>
        /// 类型
        /// </summary>
        public EnumMenuType Type { get; set; }
        /// <summary>
        /// 访问级别
        /// </summary>
        public EnumMenuVisitLevel VisitLevel { get; set; }
        /// <summary>
        /// 图标
        /// </summary>
        public string Icon { get; set; }
        /// <summary>
        /// 链接地址
        /// </summary>
        public string Url { get; set; }
        /// <summary>
        /// 分组名称(用于按钮/字段)
        /// </summary>
        public string Group { get; set; }
        /// <summary>
        /// 列宽(用于按钮/列/元素)
        /// </summary>
        public string Width { get; set; }
        /// <summary>
        /// 是否禁用
        /// </summary>
        public bool IsDisabled { get; set; }
        /// <summary>
        /// 是否隐藏
        /// </summary>
        public bool IsHidden { get; set; }
        /// <summary>
        /// 是否缓存
        /// </summary>
        public bool IsCache { get; set; }
        /// <summary>
        /// 排序
        /// </summary>
        public int Sort { get; set; }
        /// <summary>
        /// 备注
        /// </summary>
        public string Remark { get; set; }
    }
}
FlexJobApi.Core/Models/User/Menus/Queries/MenuAllQuery.cs
New file
@@ -0,0 +1,105 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.Core
{
    /// <summary>
    /// 查询所有菜单
    /// </summary>
    public class MenuAllQuery
    {
    }
    /// <summary>
    /// 查询所有菜单-结果
    /// </summary>
    public class MenuAllCallback
    {
        public MenuAllCallback()
        {
            Items = [];
        }
        public List<MenuAllCallbackItem> Items { get; set; }
    }
    /// <summary>
    /// 查询所有菜单-结果-项
    /// </summary>
    public class MenuAllCallbackItem
    {
        /// <summary>
        /// Id
        /// </summary>
        public Guid? Id { get; set; }
        /// <summary>
        /// 上级Id
        /// </summary>
        public Guid? ParentId { get; set; }
        /// <summary>
        /// 菜单路径
        /// </summary>
        public string Path { get; set; }
        /// <summary>
        /// 编号
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// 名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 类型
        /// </summary>
        public EnumMenuType Type { get; set; }
        /// <summary>
        /// 访问级别
        /// </summary>
        public EnumMenuVisitLevel VisitLevel { get; set; }
        /// <summary>
        /// 图标
        /// </summary>
        public string Icon { get; set; }
        /// <summary>
        /// 链接地址
        /// </summary>
        public string Url { get; set; }
        /// <summary>
        /// 是否禁用
        /// </summary>
        public bool IsDisabled { get; set; }
        /// <summary>
        /// 是否隐藏
        /// </summary>
        public bool IsHidden { get; set; }
        /// <summary>
        /// 是否缓存
        /// </summary>
        public bool IsCache { get; set; }
        /// <summary>
        /// 排序
        /// </summary>
        public int Sort { get; set; }
        /// <summary>
        /// 备注
        /// </summary>
        public string Remark { get; set; }
    }
}
FlexJobApi.Core/settings.json
@@ -1,5 +1,25 @@
{
  "$schema": "https://gitee.com/dotnetchina/Furion/raw/v4/schemas/v4/furion-schema.json",
  "SpecificationDocumentSettings": {
    "DocumentTitle": "灵活用工 | 规范化接口",
    "GroupOpenApiInfos": [
      {
        "Group": "Default",
        "Title": "规范化接口演示",
        "Version": "1.0.0",
        "Contact": {
          "Name": "孙鹏飞"
        }
      }
    ]
  },
  "CorsAccessorSettings": {
    "WithExposedHeaders": [
      "access-token",
      "x-access-token",
      "environment"
    ]
  },
  "AllowedHosts": "*",
  "FriendlyExceptionSettings": {
    "DefaultErrorCode": "500",
FlexJobApi.Database.Migrations/Migrations/20250801052306_UpdateTreeData0801.Designer.cs
New file
@@ -0,0 +1,2116 @@
// <auto-generated />
using System;
using FlexJobApi.EntityFramework.Core;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace FlexJobApi.Database.Migrations.Migrations
{
    [DbContext(typeof(DefaultDbContext))]
    [Migration("20250801052306_UpdateTreeData0801")]
    partial class UpdateTreeData0801
    {
        /// <inheritdoc />
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "9.0.7")
                .HasAnnotation("Relational:MaxIdentifierLength", 128);
            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
            modelBuilder.Entity("FlexJobApi.Core.Department", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<Guid>("EnterpriseId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("企业Id");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<bool>("IsDisabled")
                        .HasColumnType("bit")
                        .HasComment("是否禁用");
                    b.Property<string>("Name")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)")
                        .HasComment("名称");
                    b.Property<Guid?>("ParentId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("上级Id");
                    b.Property<string>("Path")
                        .HasColumnType("nvarchar(max)");
                    b.Property<string>("Remark")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.HasKey("Id");
                    b.HasIndex("EnterpriseId");
                    b.HasIndex("ParentId");
                    b.ToTable("Department", t =>
                        {
                            t.HasComment("部门");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.DictionaryCategory", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<string>("Code")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("nvarchar(128)")
                        .HasComment("编号");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<string>("FieldNames")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("字段名(逗号隔开)");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("nvarchar(128)")
                        .HasComment("名称");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.HasKey("Id");
                    b.ToTable("DictionaryCategory", t =>
                        {
                            t.HasComment("字典类别");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<Guid>("CategoryId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("类别Id");
                    b.Property<string>("Code")
                        .HasMaxLength(128)
                        .HasColumnType("nvarchar(128)")
                        .HasComment("编号");
                    b.Property<string>("Content")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)")
                        .HasComment("显示内容");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<string>("Field1")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("字段1");
                    b.Property<string>("Field2")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("字段2");
                    b.Property<string>("Field3")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("字段3");
                    b.Property<string>("Field4")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("字段4");
                    b.Property<string>("Field5")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("字段5");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<Guid?>("ParentId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("上级Id");
                    b.Property<string>("Path")
                        .HasColumnType("nvarchar(max)");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.HasKey("Id");
                    b.HasIndex("CategoryId");
                    b.HasIndex("ParentId");
                    b.ToTable("DictionaryData", t =>
                        {
                            t.HasComment("字典数据");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.Enterprise", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<string>("BankCard")
                        .HasMaxLength(32)
                        .HasColumnType("nvarchar(32)")
                        .HasComment("法人或经办人银行卡号");
                    b.Property<Guid?>("BankCardImgId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("法人或经办人银行卡照片Id");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<string>("EnterpriseName")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("nvarchar(128)")
                        .HasComment("企业全称");
                    b.Property<int?>("EnterpriseRealMethod")
                        .HasColumnType("int")
                        .HasComment("企业认证方式");
                    b.Property<string>("Identity")
                        .HasMaxLength(18)
                        .HasColumnType("nvarchar(18)")
                        .HasComment("法人或经办人身份证号");
                    b.Property<Guid?>("IdentityBackImgId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("法人或经办人身份证国徽面Id");
                    b.Property<Guid?>("IdentityImgId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("法人或经办人身份证人像面Id");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<bool>("IsReal")
                        .HasColumnType("bit")
                        .HasComment("是否实名");
                    b.Property<string>("LegalPerson")
                        .HasMaxLength(32)
                        .HasColumnType("nvarchar(32)")
                        .HasComment("法人姓名");
                    b.Property<Guid?>("LicenseImageId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("营业执照照片Id");
                    b.Property<string>("Name")
                        .HasMaxLength(32)
                        .HasColumnType("nvarchar(32)")
                        .HasComment("法人或经办人姓名");
                    b.Property<int?>("PersonalRealMethod")
                        .HasColumnType("int")
                        .HasComment("法人或经办人实名方式");
                    b.Property<string>("PhoneNumber")
                        .HasMaxLength(11)
                        .HasColumnType("nvarchar(11)")
                        .HasComment("法人或经办人手机号");
                    b.Property<bool?>("Proxy")
                        .HasColumnType("bit")
                        .HasComment("是否委托经办人");
                    b.Property<string>("ProxyPowerAttorneyUrl")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("企业授权书");
                    b.Property<int?>("RealAccess")
                        .HasColumnType("int")
                        .HasComment("实名通道");
                    b.Property<string>("SocietyCreditCode")
                        .IsRequired()
                        .HasMaxLength(18)
                        .HasColumnType("nvarchar(18)")
                        .HasComment("统一社会信用代码");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.HasKey("Id");
                    b.HasIndex("IdentityBackImgId");
                    b.HasIndex("IdentityImgId");
                    b.HasIndex("LicenseImageId");
                    b.ToTable("Enterprise", t =>
                        {
                            t.HasComment("企业");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.FileStore", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<string>("AbsolutePath")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)")
                        .HasComment("绝对路径");
                    b.Property<int>("Access")
                        .HasColumnType("int")
                        .HasComment("通道");
                    b.Property<string>("ContentType")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("nvarchar(128)")
                        .HasComment("内容类型");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<string>("Extension")
                        .IsRequired()
                        .HasMaxLength(32)
                        .HasColumnType("nvarchar(32)")
                        .HasComment("扩展名");
                    b.Property<int>("FileType")
                        .HasColumnType("int")
                        .HasComment("文件类型");
                    b.Property<string>("Hash")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)")
                        .HasComment("哈希");
                    b.Property<int?>("ImageHeight")
                        .HasColumnType("int")
                        .HasComment("高度(像素)");
                    b.Property<int?>("ImageWidth")
                        .HasColumnType("int")
                        .HasComment("宽度(像素)");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<long>("Length")
                        .HasColumnType("bigint")
                        .HasComment("文件大小(字节)");
                    b.Property<string>("Name")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)")
                        .HasComment("名称");
                    b.Property<string>("RelativePath")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("相对路径");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.HasKey("Id");
                    b.ToTable("FileStore", t =>
                        {
                            t.HasComment("文件存储");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.FileVirtualPath", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<string>("Name")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)")
                        .HasComment("名称");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<Guid>("StoreId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("文件存储Id");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.Property<string>("VirtualPath")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)")
                        .HasComment("虚拟路径");
                    b.HasKey("Id");
                    b.HasIndex("StoreId");
                    b.ToTable("FileVirtualPath", t =>
                        {
                            t.HasComment("文件虚拟路径");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.Menu", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<string>("Code")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)")
                        .HasComment("编号");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<string>("Group")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("分组名称(用于按钮/字段)");
                    b.Property<string>("Icon")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("图标");
                    b.Property<bool>("IsCache")
                        .HasColumnType("bit")
                        .HasComment("是否缓存");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<bool>("IsDisabled")
                        .HasColumnType("bit")
                        .HasComment("是否禁用");
                    b.Property<bool>("IsHidden")
                        .HasColumnType("bit")
                        .HasComment("是否隐藏");
                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("nvarchar(128)")
                        .HasComment("名称");
                    b.Property<Guid?>("ParentId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("上级Id");
                    b.Property<string>("Path")
                        .HasColumnType("nvarchar(max)");
                    b.Property<string>("Remark")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("备注");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<int>("Type")
                        .HasColumnType("int")
                        .HasComment("类型");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.Property<string>("Url")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("链接地址");
                    b.Property<int>("VisitLevel")
                        .HasColumnType("int")
                        .HasComment("访问级别");
                    b.Property<string>("Width")
                        .HasColumnType("nvarchar(max)");
                    b.HasKey("Id");
                    b.HasIndex("ParentId");
                    b.ToTable("Menu", t =>
                        {
                            t.HasComment("菜单");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.Role", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<int>("ClientType")
                        .HasColumnType("int")
                        .HasComment("客户端类型");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<int>("MinLevel")
                        .HasColumnType("int")
                        .HasComment("最低级别");
                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("nvarchar(128)")
                        .HasComment("名称");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.Property<int>("UserType")
                        .HasColumnType("int")
                        .HasComment("用户类型");
                    b.HasKey("Id");
                    b.ToTable("Role", t =>
                        {
                            t.HasComment("角色");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.RoleMenu", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<Guid>("MenuId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("菜单Id");
                    b.Property<Guid>("RoleId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("角色Id");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.HasKey("Id");
                    b.HasIndex("MenuId");
                    b.HasIndex("RoleId");
                    b.ToTable("RoleMenu", t =>
                        {
                            t.HasComment("角色菜单");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.RoleWebApi", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<int?>("DataPower")
                        .HasColumnType("int")
                        .HasComment("数据权限");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<Guid>("MenuId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("菜单Id");
                    b.Property<Guid>("RoleId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("角色Id");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.HasKey("Id");
                    b.HasIndex("MenuId");
                    b.HasIndex("RoleId");
                    b.ToTable("RoleWebApi", t =>
                        {
                            t.HasComment("角色接口");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<string>("Address")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("任务地点详细地址");
                    b.Property<int>("AgeMaxLimit")
                        .HasColumnType("int")
                        .HasComment("年龄范围大");
                    b.Property<int>("AgeMinLimit")
                        .HasColumnType("int")
                        .HasComment("年龄范围最小");
                    b.Property<DateTime>("BeginTime")
                        .HasColumnType("datetime2")
                        .HasComment("任务开始时间");
                    b.Property<int>("BillingMethod")
                        .HasColumnType("int")
                        .HasComment("计费方式");
                    b.Property<Guid>("CityId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("任务地点所属区域Id");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<DateTime>("EndTime")
                        .HasColumnType("datetime2")
                        .HasComment("任务结束时间");
                    b.Property<Guid>("EnterpriseId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("企业Id");
                    b.Property<int>("GenderLimit")
                        .HasColumnType("int")
                        .HasComment("性别要求");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<string>("Name")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)")
                        .HasComment("任务名称");
                    b.Property<decimal>("ServiceFee")
                        .HasColumnType("decimal(18,2)")
                        .HasComment("服务费");
                    b.Property<int>("SettlementCycle")
                        .HasColumnType("int")
                        .HasComment("结算方式");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.HasKey("Id");
                    b.HasIndex("CityId");
                    b.HasIndex("EnterpriseId");
                    b.ToTable("TaskInfo", t =>
                        {
                            t.HasComment("任务信息");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.TaskInfoBenefit", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<Guid>("BenefitId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("福利Id");
                    b.Property<Guid>("BenefitId1")
                        .HasColumnType("uniqueidentifier");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<Guid>("TaskInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("任务Id");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.HasKey("Id");
                    b.HasIndex("BenefitId");
                    b.HasIndex("BenefitId1");
                    b.ToTable("TaskInfoBenefit", t =>
                        {
                            t.HasComment("任务福利");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.TaskInfoCredentialLimit", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<Guid>("TaskInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("任务Id");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<Guid?>("TypeId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("证书类型Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.HasKey("Id");
                    b.HasIndex("TaskInfoId");
                    b.HasIndex("TypeId");
                    b.ToTable("TaskInfoCredentialLimit");
                });
            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<int>("HireStatus")
                        .HasColumnType("int")
                        .HasComment("录用状态");
                    b.Property<DateTime?>("HireTime")
                        .HasColumnType("datetime2")
                        .HasComment("录用时间");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<int?>("SignContractStatus")
                        .HasColumnType("int")
                        .HasComment("签约状态");
                    b.Property<DateTime?>("SignContractTime")
                        .HasColumnType("datetime2")
                        .HasComment("签约时间");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<Guid>("TaskInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("任务Id");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.Property<Guid>("UserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("用户信息Id");
                    b.HasKey("Id");
                    b.HasIndex("TaskInfoId");
                    b.HasIndex("UserInfoId");
                    b.ToTable("TaskInfoUser", t =>
                        {
                            t.HasComment("任务用户信息");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.UserAuth", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<Guid?>("AvatarId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("头像Id");
                    b.Property<string>("BankCard")
                        .HasMaxLength(32)
                        .HasColumnType("nvarchar(32)")
                        .HasComment("银行卡号");
                    b.Property<Guid?>("BankCardImgId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("银行卡照片Id");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<string>("Identity")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("身份证号");
                    b.Property<Guid?>("IdentityBackImgId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("身份证国徽面Id");
                    b.Property<Guid?>("IdentityImgId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("身份证人像面Id");
                    b.Property<bool>("IsCheckPhoneNumber")
                        .HasColumnType("bit")
                        .HasComment("是否已校验手机号");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<bool>("IsReal")
                        .HasColumnType("bit")
                        .HasComment("是否实名");
                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(32)
                        .HasColumnType("nvarchar(32)")
                        .HasComment("姓名");
                    b.Property<string>("Password")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("密码");
                    b.Property<string>("PhoneNumber")
                        .HasMaxLength(11)
                        .HasColumnType("nvarchar(11)")
                        .HasComment("手机号");
                    b.Property<int?>("RealAccess")
                        .HasColumnType("int")
                        .HasComment("实名通道");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.Property<string>("UserName")
                        .IsRequired()
                        .HasMaxLength(32)
                        .HasColumnType("nvarchar(32)")
                        .HasComment("用户名");
                    b.HasKey("Id");
                    b.HasIndex("AvatarId");
                    b.HasIndex("BankCardImgId");
                    b.HasIndex("IdentityBackImgId");
                    b.HasIndex("IdentityImgId");
                    b.ToTable("UserAuth", t =>
                        {
                            t.HasComment("用户");
                        });
                    b.HasData(
                        new
                        {
                            Id = new Guid("11111111-1111-1111-1111-111111111111"),
                            CreatedTime = new DateTimeOffset(new DateTime(2000, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
                            IsCheckPhoneNumber = false,
                            IsDeleted = false,
                            IsReal = false,
                            Name = "管理员",
                            Sort = 0,
                            UserName = "admin"
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.UserInfo", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<Guid?>("CityId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("常驻城市Id");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<Guid?>("EducationalBackgroundId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("学历Id");
                    b.Property<Guid?>("EnterpriseId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("企业Id");
                    b.Property<int?>("FreeTime")
                        .HasColumnType("int")
                        .HasComment("空闲时间");
                    b.Property<int?>("Height")
                        .HasColumnType("int")
                        .HasComment("身高");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<int?>("JobSeekingStatus")
                        .HasColumnType("int")
                        .HasComment("求职状态");
                    b.Property<int>("Level")
                        .HasColumnType("int")
                        .HasComment("级别");
                    b.Property<Guid?>("PersonalIdentityId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("身份Id");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<int>("Type")
                        .HasColumnType("int")
                        .HasComment("用户类型");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.Property<Guid>("UserAuthId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("用户Id");
                    b.Property<int?>("Weight")
                        .HasColumnType("int")
                        .HasComment("体重");
                    b.Property<string>("WorkExperience")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("工作经验");
                    b.Property<string>("WorkSeniority")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("工作资历");
                    b.Property<string>("WxmpOpenId")
                        .HasMaxLength(32)
                        .HasColumnType("nvarchar(32)")
                        .HasComment("微信开放Id");
                    b.HasKey("Id");
                    b.HasIndex("CityId");
                    b.HasIndex("EducationalBackgroundId");
                    b.HasIndex("EnterpriseId");
                    b.HasIndex("PersonalIdentityId");
                    b.HasIndex("UserAuthId");
                    b.ToTable("UserInfo", t =>
                        {
                            t.HasComment("用户信息");
                        });
                    b.HasData(
                        new
                        {
                            Id = new Guid("11111111-1111-1111-1111-111111111112"),
                            CreatedTime = new DateTimeOffset(new DateTime(2000, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
                            IsDeleted = false,
                            Level = 999,
                            Sort = 0,
                            Type = 100,
                            UserAuthId = new Guid("11111111-1111-1111-1111-111111111111")
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.UserInfoBankCard", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<string>("Bank")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("nvarchar(128)")
                        .HasComment("开户行");
                    b.Property<string>("Code")
                        .IsRequired()
                        .HasMaxLength(32)
                        .HasColumnType("nvarchar(32)")
                        .HasComment("银行卡号");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<string>("PhoneNumber")
                        .IsRequired()
                        .HasMaxLength(11)
                        .HasColumnType("nvarchar(11)")
                        .HasComment("银行预留手机号");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.Property<Guid>("UserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("用户信息Id");
                    b.HasKey("Id");
                    b.HasIndex("UserInfoId");
                    b.ToTable("UserInfoBankCard", t =>
                        {
                            t.HasComment("用户银行卡信息");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.UserInfoCredential", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<Guid?>("BackImgId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("证书反面照片Id");
                    b.Property<string>("Code")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("nvarchar(128)")
                        .HasComment("证书编号");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<DateTime>("EndDate")
                        .HasColumnType("datetime2")
                        .HasComment("结束日期");
                    b.Property<Guid>("ImgId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("证书正面照片Id");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<bool>("IsForever")
                        .HasColumnType("bit")
                        .HasComment("永久证书");
                    b.Property<string>("IssueUnit")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("发证单位");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<DateTime>("StartDate")
                        .HasColumnType("datetime2")
                        .HasComment("开始日期");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<Guid?>("TypeId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("证书类型Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.Property<Guid>("UserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("用户信息Id");
                    b.HasKey("Id");
                    b.HasIndex("BackImgId");
                    b.HasIndex("ImgId");
                    b.HasIndex("TypeId");
                    b.HasIndex("UserInfoId");
                    b.ToTable("UserInfoCredential", t =>
                        {
                            t.HasComment("用户信息资格证书");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.UserInfoDepartment", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<Guid>("DepartmentId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("部门Id");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.Property<Guid>("UserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("用户信息Id");
                    b.HasKey("Id");
                    b.HasIndex("DepartmentId");
                    b.HasIndex("UserInfoId");
                    b.ToTable("UserInfoDepartment", t =>
                        {
                            t.HasComment("用户信息部门");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.UserInfoExpectJob", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<Guid>("PersonalIdentityId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("期望岗位Id");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.Property<Guid>("UserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("用户信息Id");
                    b.HasKey("Id");
                    b.HasIndex("PersonalIdentityId");
                    b.HasIndex("UserInfoId");
                    b.ToTable("UserInfoExpectJob", t =>
                        {
                            t.HasComment("用户信息期望岗位");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.UserInfoPhoto", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<Guid>("ImgId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("照片Id");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.Property<Guid>("UserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("用户信息Id");
                    b.HasKey("Id");
                    b.HasIndex("ImgId");
                    b.HasIndex("UserInfoId");
                    b.ToTable("UserInfoPhoto", t =>
                        {
                            t.HasComment("用户信息生活照");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.UserInfoRole", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<Guid>("RoleId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("角色Id");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.Property<Guid>("UserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("用户信息Id");
                    b.HasKey("Id");
                    b.HasIndex("RoleId");
                    b.HasIndex("UserInfoId");
                    b.ToTable("UserInfoRole", t =>
                        {
                            t.HasComment("用户信息角色");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.WebApi", b =>
                {
                    b.Property<Guid>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<string>("Code")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)")
                        .HasComment("编号");
                    b.Property<DateTimeOffset>("CreatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("CreatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("创建操作人");
                    b.Property<bool>("IsDeleted")
                        .HasColumnType("bit")
                        .HasComment("是否删除");
                    b.Property<bool>("IsDisabled")
                        .HasColumnType("bit")
                        .HasComment("是否禁用");
                    b.Property<int>("Method")
                        .HasColumnType("int")
                        .HasComment("请求方式");
                    b.Property<string>("Name")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)")
                        .HasComment("名称");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
                        .HasComment("排序");
                    b.Property<string>("TraceId")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("跟踪Id");
                    b.Property<DateTimeOffset?>("UpdatedTime")
                        .HasColumnType("datetimeoffset");
                    b.Property<Guid?>("UpdatedUserInfoId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("最后更新操作人");
                    b.Property<string>("Url")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("路由地址");
                    b.HasKey("Id");
                    b.ToTable("WebApi", t =>
                        {
                            t.HasComment("接口");
                        });
                });
            modelBuilder.Entity("FlexJobApi.Core.Department", b =>
                {
                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
                        .WithMany("Departments")
                        .HasForeignKey("EnterpriseId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("FlexJobApi.Core.Department", "Parent")
                        .WithMany("Childrens")
                        .HasForeignKey("ParentId");
                    b.Navigation("Enterprise");
                    b.Navigation("Parent");
                });
            modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b =>
                {
                    b.HasOne("FlexJobApi.Core.DictionaryCategory", "Category")
                        .WithMany()
                        .HasForeignKey("CategoryId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("FlexJobApi.Core.DictionaryData", "Parent")
                        .WithMany("Childrens")
                        .HasForeignKey("ParentId");
                    b.Navigation("Category");
                    b.Navigation("Parent");
                });
            modelBuilder.Entity("FlexJobApi.Core.Enterprise", b =>
                {
                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "IdentityBackImg")
                        .WithMany()
                        .HasForeignKey("IdentityBackImgId");
                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "IdentityImg")
                        .WithMany()
                        .HasForeignKey("IdentityImgId");
                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "LicenseImage")
                        .WithMany()
                        .HasForeignKey("LicenseImageId");
                    b.Navigation("IdentityBackImg");
                    b.Navigation("IdentityImg");
                    b.Navigation("LicenseImage");
                });
            modelBuilder.Entity("FlexJobApi.Core.FileVirtualPath", b =>
                {
                    b.HasOne("FlexJobApi.Core.FileStore", "Store")
                        .WithMany()
                        .HasForeignKey("StoreId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Store");
                });
            modelBuilder.Entity("FlexJobApi.Core.Menu", b =>
                {
                    b.HasOne("FlexJobApi.Core.Menu", "Parent")
                        .WithMany("Childrens")
                        .HasForeignKey("ParentId");
                    b.Navigation("Parent");
                });
            modelBuilder.Entity("FlexJobApi.Core.RoleMenu", b =>
                {
                    b.HasOne("FlexJobApi.Core.Menu", "Menu")
                        .WithMany()
                        .HasForeignKey("MenuId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("FlexJobApi.Core.Role", "Role")
                        .WithMany("RoleMenus")
                        .HasForeignKey("RoleId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Menu");
                    b.Navigation("Role");
                });
            modelBuilder.Entity("FlexJobApi.Core.RoleWebApi", b =>
                {
                    b.HasOne("FlexJobApi.Core.Menu", "Menu")
                        .WithMany()
                        .HasForeignKey("MenuId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("FlexJobApi.Core.Role", "Role")
                        .WithMany("RoleWebApis")
                        .HasForeignKey("RoleId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Menu");
                    b.Navigation("Role");
                });
            modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b =>
                {
                    b.HasOne("FlexJobApi.Core.DictionaryData", "City")
                        .WithMany()
                        .HasForeignKey("CityId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
                        .WithMany()
                        .HasForeignKey("EnterpriseId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("City");
                    b.Navigation("Enterprise");
                });
            modelBuilder.Entity("FlexJobApi.Core.TaskInfoBenefit", b =>
                {
                    b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo")
                        .WithMany("Benefits")
                        .HasForeignKey("BenefitId")
                        .OnDelete(DeleteBehavior.Restrict)
                        .IsRequired();
                    b.HasOne("FlexJobApi.Core.DictionaryData", "Benefit")
                        .WithMany()
                        .HasForeignKey("BenefitId1")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Benefit");
                    b.Navigation("TaskInfo");
                });
            modelBuilder.Entity("FlexJobApi.Core.TaskInfoCredentialLimit", b =>
                {
                    b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo")
                        .WithMany("CredentialLimits")
                        .HasForeignKey("TaskInfoId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("FlexJobApi.Core.DictionaryData", "Type")
                        .WithMany()
                        .HasForeignKey("TypeId");
                    b.Navigation("TaskInfo");
                    b.Navigation("Type");
                });
            modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b =>
                {
                    b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo")
                        .WithMany()
                        .HasForeignKey("TaskInfoId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo")
                        .WithMany()
                        .HasForeignKey("UserInfoId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("TaskInfo");
                    b.Navigation("UserInfo");
                });
            modelBuilder.Entity("FlexJobApi.Core.UserAuth", b =>
                {
                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "Avatar")
                        .WithMany()
                        .HasForeignKey("AvatarId");
                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "BankCardImg")
                        .WithMany()
                        .HasForeignKey("BankCardImgId");
                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "IdentityBackImg")
                        .WithMany()
                        .HasForeignKey("IdentityBackImgId");
                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "IdentityImg")
                        .WithMany()
                        .HasForeignKey("IdentityImgId");
                    b.Navigation("Avatar");
                    b.Navigation("BankCardImg");
                    b.Navigation("IdentityBackImg");
                    b.Navigation("IdentityImg");
                });
            modelBuilder.Entity("FlexJobApi.Core.UserInfo", b =>
                {
                    b.HasOne("FlexJobApi.Core.DictionaryData", "City")
                        .WithMany()
                        .HasForeignKey("CityId");
                    b.HasOne("FlexJobApi.Core.DictionaryData", "EducationalBackground")
                        .WithMany()
                        .HasForeignKey("EducationalBackgroundId");
                    b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise")
                        .WithMany("UserInfos")
                        .HasForeignKey("EnterpriseId");
                    b.HasOne("FlexJobApi.Core.DictionaryData", "PersonalIdentity")
                        .WithMany()
                        .HasForeignKey("PersonalIdentityId");
                    b.HasOne("FlexJobApi.Core.UserAuth", "UserAuth")
                        .WithMany("UserInfos")
                        .HasForeignKey("UserAuthId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("City");
                    b.Navigation("EducationalBackground");
                    b.Navigation("Enterprise");
                    b.Navigation("PersonalIdentity");
                    b.Navigation("UserAuth");
                });
            modelBuilder.Entity("FlexJobApi.Core.UserInfoBankCard", b =>
                {
                    b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo")
                        .WithMany()
                        .HasForeignKey("UserInfoId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("UserInfo");
                });
            modelBuilder.Entity("FlexJobApi.Core.UserInfoCredential", b =>
                {
                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "BackImg")
                        .WithMany()
                        .HasForeignKey("BackImgId");
                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "Img")
                        .WithMany()
                        .HasForeignKey("ImgId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("FlexJobApi.Core.DictionaryData", "Type")
                        .WithMany()
                        .HasForeignKey("TypeId");
                    b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo")
                        .WithMany("UserInfoCredentials")
                        .HasForeignKey("UserInfoId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("BackImg");
                    b.Navigation("Img");
                    b.Navigation("Type");
                    b.Navigation("UserInfo");
                });
            modelBuilder.Entity("FlexJobApi.Core.UserInfoDepartment", b =>
                {
                    b.HasOne("FlexJobApi.Core.Department", "Department")
                        .WithMany()
                        .HasForeignKey("DepartmentId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo")
                        .WithMany("UserInfoDepartments")
                        .HasForeignKey("UserInfoId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Department");
                    b.Navigation("UserInfo");
                });
            modelBuilder.Entity("FlexJobApi.Core.UserInfoExpectJob", b =>
                {
                    b.HasOne("FlexJobApi.Core.DictionaryData", "PersonalIdentity")
                        .WithMany()
                        .HasForeignKey("PersonalIdentityId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo")
                        .WithMany("UserInfoExpectJobs")
                        .HasForeignKey("UserInfoId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("PersonalIdentity");
                    b.Navigation("UserInfo");
                });
            modelBuilder.Entity("FlexJobApi.Core.UserInfoPhoto", b =>
                {
                    b.HasOne("FlexJobApi.Core.FileVirtualPath", "Img")
                        .WithMany()
                        .HasForeignKey("ImgId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo")
                        .WithMany()
                        .HasForeignKey("UserInfoId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Img");
                    b.Navigation("UserInfo");
                });
            modelBuilder.Entity("FlexJobApi.Core.UserInfoRole", b =>
                {
                    b.HasOne("FlexJobApi.Core.Role", "Role")
                        .WithMany()
                        .HasForeignKey("RoleId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo")
                        .WithMany("UserInfoRoles")
                        .HasForeignKey("UserInfoId")
                        .OnDelete(DeleteBehavior.Cascade)
                        .IsRequired();
                    b.Navigation("Role");
                    b.Navigation("UserInfo");
                });
            modelBuilder.Entity("FlexJobApi.Core.Department", b =>
                {
                    b.Navigation("Childrens");
                });
            modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b =>
                {
                    b.Navigation("Childrens");
                });
            modelBuilder.Entity("FlexJobApi.Core.Enterprise", b =>
                {
                    b.Navigation("Departments");
                    b.Navigation("UserInfos");
                });
            modelBuilder.Entity("FlexJobApi.Core.Menu", b =>
                {
                    b.Navigation("Childrens");
                });
            modelBuilder.Entity("FlexJobApi.Core.Role", b =>
                {
                    b.Navigation("RoleMenus");
                    b.Navigation("RoleWebApis");
                });
            modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b =>
                {
                    b.Navigation("Benefits");
                    b.Navigation("CredentialLimits");
                });
            modelBuilder.Entity("FlexJobApi.Core.UserAuth", b =>
                {
                    b.Navigation("UserInfos");
                });
            modelBuilder.Entity("FlexJobApi.Core.UserInfo", b =>
                {
                    b.Navigation("UserInfoCredentials");
                    b.Navigation("UserInfoDepartments");
                    b.Navigation("UserInfoExpectJobs");
                    b.Navigation("UserInfoRoles");
                });
#pragma warning restore 612, 618
        }
    }
}
FlexJobApi.Database.Migrations/Migrations/20250801052306_UpdateTreeData0801.cs
New file
@@ -0,0 +1,88 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace FlexJobApi.Database.Migrations.Migrations
{
    /// <inheritdoc />
    public partial class UpdateTreeData0801 : Migration
    {
        /// <inheritdoc />
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropColumn(
                name: "BindField",
                table: "Menu");
            migrationBuilder.AlterColumn<Guid>(
                name: "UserAuthId",
                table: "UserInfo",
                type: "uniqueidentifier",
                nullable: false,
                comment: "用户Id",
                oldClrType: typeof(Guid),
                oldType: "uniqueidentifier");
            migrationBuilder.AddColumn<string>(
                name: "Path",
                table: "Menu",
                type: "nvarchar(max)",
                nullable: true);
            migrationBuilder.AddColumn<string>(
                name: "Width",
                table: "Menu",
                type: "nvarchar(max)",
                nullable: true);
            migrationBuilder.AddColumn<string>(
                name: "Path",
                table: "DictionaryData",
                type: "nvarchar(max)",
                nullable: true);
            migrationBuilder.AddColumn<string>(
                name: "Path",
                table: "Department",
                type: "nvarchar(max)",
                nullable: true);
        }
        /// <inheritdoc />
        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropColumn(
                name: "Path",
                table: "Menu");
            migrationBuilder.DropColumn(
                name: "Width",
                table: "Menu");
            migrationBuilder.DropColumn(
                name: "Path",
                table: "DictionaryData");
            migrationBuilder.DropColumn(
                name: "Path",
                table: "Department");
            migrationBuilder.AlterColumn<Guid>(
                name: "UserAuthId",
                table: "UserInfo",
                type: "uniqueidentifier",
                nullable: false,
                oldClrType: typeof(Guid),
                oldType: "uniqueidentifier",
                oldComment: "用户Id");
            migrationBuilder.AddColumn<string>(
                name: "BindField",
                table: "Menu",
                type: "nvarchar(max)",
                nullable: true,
                comment: "绑定字段");
        }
    }
}
FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
@@ -56,6 +56,9 @@
                        .HasColumnType("uniqueidentifier")
                        .HasComment("上级Id");
                    b.Property<string>("Path")
                        .HasColumnType("nvarchar(max)");
                    b.Property<string>("Remark")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("备注");
@@ -197,6 +200,9 @@
                    b.Property<Guid?>("ParentId")
                        .HasColumnType("uniqueidentifier")
                        .HasComment("上级Id");
                    b.Property<string>("Path")
                        .HasColumnType("nvarchar(max)");
                    b.Property<int>("Sort")
                        .HasColumnType("int")
@@ -501,10 +507,6 @@
                        .ValueGeneratedOnAdd()
                        .HasColumnType("uniqueidentifier");
                    b.Property<string>("BindField")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("绑定字段");
                    b.Property<string>("Code")
                        .IsRequired()
                        .HasColumnType("nvarchar(max)")
@@ -551,6 +553,9 @@
                        .HasColumnType("uniqueidentifier")
                        .HasComment("上级Id");
                    b.Property<string>("Path")
                        .HasColumnType("nvarchar(max)");
                    b.Property<string>("Remark")
                        .HasColumnType("nvarchar(max)")
                        .HasComment("备注");
@@ -581,6 +586,9 @@
                    b.Property<int>("VisitLevel")
                        .HasColumnType("int")
                        .HasComment("访问级别");
                    b.Property<string>("Width")
                        .HasColumnType("nvarchar(max)");
                    b.HasKey("Id");
@@ -1211,7 +1219,8 @@
                        .HasComment("最后更新操作人");
                    b.Property<Guid>("UserAuthId")
                        .HasColumnType("uniqueidentifier");
                        .HasColumnType("uniqueidentifier")
                        .HasComment("用户Id");
                    b.Property<int?>("Weight")
                        .HasColumnType("int")
FlexJobApi.User.Application/Auths/AuthAppService.cs
File was renamed from FlexJobApi.User.Application/Auth/AuthAppService.cs
@@ -27,7 +27,7 @@
        /// <returns></returns>
        [AllowAnonymous]
        [IfException(ErrorCode = EnumUserErrorCodeType.u1000)]
        public Task<UserAuthPasswordLoginCallback> PasswordLogin(UserAuthPasswordLoginCommand command)
        public Task<AuthPasswordLoginCallback> PasswordLogin(AuthPasswordLoginCommand command)
        {
            return mediator.Send(command);
        }
FlexJobApi.User.Application/Auths/Commands/AuthPasswordLoginCommandHandler.cs
File was renamed from FlexJobApi.User.Application/Auth/Commands/UserAuthPasswordLoginCommandHandler.cs
@@ -16,12 +16,12 @@
    /// <summary>
    /// 密码登录
    /// </summary>
    public class UserAuthPasswordLoginCommandHandler : IRequestHandler<UserAuthPasswordLoginCommand, UserAuthPasswordLoginCallback>
    public class AuthPasswordLoginCommandHandler : IRequestHandler<AuthPasswordLoginCommand, AuthPasswordLoginCallback>
    {
        private readonly IRepository<UserAuth> userAuthRep;
        private readonly IRepository<UserInfo> userInfoRep;
        public UserAuthPasswordLoginCommandHandler(
        public AuthPasswordLoginCommandHandler(
            IRepository<UserAuth> userAuthRep,
            IRepository<UserInfo> userInfoRep)
        {
@@ -29,7 +29,7 @@
            this.userInfoRep = userInfoRep;
        }
        public async Task<UserAuthPasswordLoginCallback> Handle(UserAuthPasswordLoginCommand request, CancellationToken cancellationToken)
        public async Task<AuthPasswordLoginCallback> Handle(AuthPasswordLoginCommand request, CancellationToken cancellationToken)
        {
            var userInfo = await userInfoRep.AsQueryable().AsNoTracking()
                .Include(it => it.UserAuth)
@@ -43,7 +43,7 @@
                    it.UserAuth.PhoneNumber,
                    it.UserAuth.Password
                })
                .FirstOrDefaultAsync();
                .FirstOrDefaultAsync(cancellationToken);
            if (userInfo == null) throw Oops.Oh(EnumUserErrorCodeType.u1000);
            if (!PBKDF2Encryption.Compare(request.Password, userInfo.Password)) throw Oops.Oh(EnumUserErrorCodeType.u1000);
            var logier = new CurrentLogier
@@ -55,7 +55,7 @@
                PhoneNumber = userInfo.PhoneNumber,
            };
            JwtUtils.GenerateToken(logier);
            return new UserAuthPasswordLoginCallback();
            return new AuthPasswordLoginCallback();
        }
    }
}
FlexJobApi.User.Application/EnumUserErrorCodeType.cs
@@ -11,9 +11,15 @@
    public enum EnumUserErrorCodeType
    {
        /// <summary>
        /// {0}不存在
        /// </summary>
        [ErrorCodeItemMetadata("{0}不存在")]
        s100 = 100,
        /// <summary>
        /// 账号或密码不存在
        /// </summary>
        [ErrorCodeItemMetadata("账号或密码不存在")]
        u1000,
        u1000 = 1000,
    }
}
FlexJobApi.User.Application/FlexJobApi.User.Application.csproj
@@ -11,9 +11,7 @@
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Auth\Queries\" />
    <Folder Include="Menu\Commands\" />
    <Folder Include="Menu\Queries\" />
    <Folder Include="Auths\Queries\" />
  </ItemGroup>
</Project>
FlexJobApi.User.Application/Menus/Commands/MenuSaveCommandHandler.cs
New file
@@ -0,0 +1,40 @@
using FlexJobApi.Core;
using Furion.DatabaseAccessor;
using Furion.FriendlyException;
using Mapster;
using MediatR;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.User.Application
{
    /// <summary>
    /// 保存菜单
    /// </summary>
    public class MenuSaveCommandHandler : IRequestHandler<MenuSaveCommand, Guid>
    {
        private readonly IRepository<Menu> menuRep;
        public MenuSaveCommandHandler(
            IRepository<Menu> menuRep)
        {
            this.menuRep = menuRep;
        }
        public async Task<Guid> Handle(MenuSaveCommand request, CancellationToken cancellationToken)
        {
            var menu =
                request.Id.HasValue
                ? await menuRep.AsQueryable().FirstOrDefaultAsync(it => it.Id == request.Id, cancellationToken)
                : new Menu();
            if (menu == null) throw Oops.Oh(EnumUserErrorCodeType.s100, "菜单");
            menu.Adapt(request);
            await menuRep.SaveNowAsync(cancellationToken);
            return menu.Id;
        }
    }
}
FlexJobApi.User.Application/Menus/MenuAppService.cs
New file
@@ -0,0 +1,37 @@
using FlexJobApi.Core;
using Furion.DynamicApiController;
using MediatR;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FlexJobApi.User.Application
{
    /// <summary>
    /// 菜单
    /// </summary>
    [Route("api/user/[controller]")]
    public class MenuAppServiceV1 : IDynamicApiController
    {
        private readonly IMediator mediator;
        public MenuAppServiceV1(IMediator mediator)
        {
            this.mediator = mediator;
        }
        /// <summary>
        /// 保存菜单
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        public async Task<Guid> Save(MenuSaveCommand command)
        {
            return await mediator.Send(command);
        }
    }
}
FlexJobApi.User.Application/Menus/Queries/MenuAllQueryHandler.cs
New file
@@ -0,0 +1,14 @@
using FlexJobApi.Core;
using MediatR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
::
namespace FlexJobApi.User.Application
{
    //public class MenuAllQueryHandler:IRequestHandler<MenuAllQuery, >
    //{
    //}
}