diff --git a/.github/workflows/publish-beta.yml b/.github/workflows/publish-beta.yml
index 38a3c13..efa0538 100644
--- a/.github/workflows/publish-beta.yml
+++ b/.github/workflows/publish-beta.yml
@@ -4,7 +4,7 @@ on:
push:
branches: [ master ]
paths:
- - 'NewLife.YuQue/**'
+ - 'NewLife.Yuque/**'
workflow_dispatch:
jobs:
@@ -20,10 +20,10 @@ jobs:
dotnet-version: 6.0.x
- name: Restore
run: |
- dotnet restore NewLife.YuQue/NewLife.YuQue.csproj
+ dotnet restore NewLife.Yuque/NewLife.Yuque.csproj
- name: Build
run: |
- dotnet pack --no-restore --version-suffix $(date "+%Y.%m%d-beta%H%M") -c Release -o out NewLife.YuQue/NewLife.YuQue.csproj
+ dotnet pack --no-restore --version-suffix $(date "+%Y.%m%d-beta%H%M") -c Release -o out NewLife.Yuque/NewLife.Yuque.csproj
- name: Publish
run: |
# dotnet nuget push ./out/*.nupkg --skip-duplicate --source https://nuget.pkg.github.com/NewLifeX/index.json --api-key ${{ github.token }}
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index e45e6b5..c95707c 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -18,10 +18,10 @@ jobs:
dotnet-version: 6.0.x
- name: Restore
run: |
- dotnet restore NewLife.YuQue/NewLife.YuQue.csproj
+ dotnet restore NewLife.Yuque/NewLife.Yuque.csproj
- name: Build
run: |
- dotnet pack --no-restore --version-suffix $(date "+%Y.%m%d") -c Release -o out NewLife.YuQue/NewLife.YuQue.csproj
+ dotnet pack --no-restore --version-suffix $(date "+%Y.%m%d") -c Release -o out NewLife.Yuque/NewLife.Yuque.csproj
- name: Publish
run: |
# dotnet nuget push ./out/*.nupkg --skip-duplicate --source https://nuget.pkg.github.com/NewLifeX/index.json --api-key ${{ github.token }}
diff --git a/NewLife.YuqueWeb/Areas/Yuque/Controllers/BookController.cs b/NewLife.YuqueWeb/Areas/Yuque/Controllers/BookController.cs
index 960b1b5..6d0b673 100644
--- a/NewLife.YuqueWeb/Areas/Yuque/Controllers/BookController.cs
+++ b/NewLife.YuqueWeb/Areas/Yuque/Controllers/BookController.cs
@@ -1,8 +1,8 @@
using Microsoft.AspNetCore.Mvc;
using NewLife.Cube;
using NewLife.Web;
+using NewLife.YuqueWeb.Entity;
using NewLife.YuqueWeb.Services;
-using NewLife.YuQueWeb.Entity;
using XCode.Membership;
namespace NewLife.YuqueWeb.Areas.Yuque.Controllers
diff --git a/NewLife.YuqueWeb/Areas/Yuque/Controllers/DocumentController.cs b/NewLife.YuqueWeb/Areas/Yuque/Controllers/DocumentController.cs
index de1b232..068c6dd 100644
--- a/NewLife.YuqueWeb/Areas/Yuque/Controllers/DocumentController.cs
+++ b/NewLife.YuqueWeb/Areas/Yuque/Controllers/DocumentController.cs
@@ -1,7 +1,7 @@
using NewLife.Cube;
using NewLife.Cube.ViewModels;
using NewLife.Web;
-using NewLife.YuQueWeb.Entity;
+using NewLife.YuqueWeb.Entity;
using XCode.Membership;
namespace NewLife.YuqueWeb.Areas.Yuque.Controllers
diff --git a/NewLife.YuqueWeb/Areas/Yuque/Controllers/NavController.cs b/NewLife.YuqueWeb/Areas/Yuque/Controllers/NavController.cs
index c6722fb..8dfd7ef 100644
--- a/NewLife.YuqueWeb/Areas/Yuque/Controllers/NavController.cs
+++ b/NewLife.YuqueWeb/Areas/Yuque/Controllers/NavController.cs
@@ -1,6 +1,6 @@
using NewLife.Cube;
using NewLife.Web;
-using NewLife.YuQueWeb.Entity;
+using NewLife.YuqueWeb.Entity;
using XCode.Membership;
namespace NewLife.YuqueWeb.Areas.Yuque.Controllers
diff --git a/NewLife.YuqueWeb/Controllers/YuqueController.cs b/NewLife.YuqueWeb/Controllers/YuqueController.cs
index 9cd4946..ed5485a 100644
--- a/NewLife.YuqueWeb/Controllers/YuqueController.cs
+++ b/NewLife.YuqueWeb/Controllers/YuqueController.cs
@@ -3,11 +3,10 @@ using Microsoft.AspNetCore.Mvc;
using NewLife.Collections;
using NewLife.Common;
using NewLife.Cube.Entity;
-using NewLife.Log;
using NewLife.Web;
+using NewLife.YuqueWeb.Entity;
using NewLife.YuqueWeb.Models;
using NewLife.YuqueWeb.Services;
-using NewLife.YuQueWeb.Entity;
using XCode;
namespace NewLife.YuqueWeb.Controllers
diff --git "a/NewLife.YuqueWeb/Entity/Html\350\247\204\345\210\231.Biz.cs" "b/NewLife.YuqueWeb/Entity/Html\350\247\204\345\210\231.Biz.cs"
new file mode 100644
index 0000000..dbdafb8
--- /dev/null
+++ "b/NewLife.YuqueWeb/Entity/Html\350\247\204\345\210\231.Biz.cs"
@@ -0,0 +1,177 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Threading.Tasks;
+using System.Web;
+using System.Web.Script.Serialization;
+using System.Xml.Serialization;
+using NewLife;
+using NewLife.Data;
+using NewLife.Log;
+using NewLife.Model;
+using NewLife.Reflection;
+using NewLife.Threading;
+using NewLife.Web;
+using XCode;
+using XCode.Cache;
+using XCode.Configuration;
+using XCode.DataAccessLayer;
+using XCode.Membership;
+using XCode.Shards;
+
+namespace NewLife.YuqueWeb.Entity
+{
+ /// <summary>Html规则。用于替换Html中的连接或字符串</summary>
+ public partial class HtmlRule : Entity<HtmlRule>
+ {
+ #region 对象操作
+ static HtmlRule()
+ {
+ // 累加字段,生成 Update xx Set Count=Count+1234 Where xxx
+ //var df = Meta.Factory.AdditionalFields;
+ //df.Add(nameof(Kind));
+
+ // 过滤器 UserModule、TimeModule、IPModule
+ Meta.Modules.Add<UserModule>();
+ Meta.Modules.Add<TimeModule>();
+ Meta.Modules.Add<IPModule>();
+ }
+
+ /// <summary>验证并修补数据,通过抛出异常的方式提示验证失败。</summary>
+ /// <param name="isNew">是否插入</param>
+ public override void Valid(Boolean isNew)
+ {
+ // 如果没有脏数据,则不需要进行任何处理
+ if (!HasDirty) return;
+
+ // 建议先调用基类方法,基类方法会做一些统一处理
+ base.Valid(isNew);
+
+ // 在新插入数据或者修改了指定字段时进行修正
+ // 处理当前已登录用户信息,可以由UserModule过滤器代劳
+ /*var user = ManageProvider.User;
+ if (user != null)
+ {
+ if (isNew && !Dirtys[nameof(CreateUserID)]) CreateUserID = user.ID;
+ if (!Dirtys[nameof(UpdateUserID)]) UpdateUserID = user.ID;
+ }*/
+ //if (isNew && !Dirtys[nameof(CreateTime)]) CreateTime = DateTime.Now;
+ //if (!Dirtys[nameof(UpdateTime)]) UpdateTime = DateTime.Now;
+ //if (isNew && !Dirtys[nameof(CreateIP)]) CreateIP = ManageProvider.UserHost;
+ //if (!Dirtys[nameof(UpdateIP)]) UpdateIP = ManageProvider.UserHost;
+ }
+
+ ///// <summary>首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法</summary>
+ //[EditorBrowsable(EditorBrowsableState.Never)]
+ //protected override void InitData()
+ //{
+ // // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用
+ // if (Meta.Session.Count > 0) return;
+
+ // if (XTrace.Debug) XTrace.WriteLine("开始初始化HtmlRule[Html规则]数据……");
+
+ // var entity = new HtmlRule();
+ // entity.Kind = 0;
+ // entity.Rule = "abc";
+ // entity.Target = "abc";
+ // entity.Enable = true;
+ // entity.CreateUser = "abc";
+ // entity.CreateUserID = 0;
+ // entity.CreateTime = DateTime.Now;
+ // entity.CreateIP = "abc";
+ // entity.UpdateUser = "abc";
+ // entity.UpdateUserID = 0;
+ // entity.UpdateTime = DateTime.Now;
+ // entity.UpdateIP = "abc";
+ // entity.Remark = "abc";
+ // entity.Insert();
+
+ // if (XTrace.Debug) XTrace.WriteLine("完成初始化HtmlRule[Html规则]数据!");
+ //}
+
+ ///// <summary>已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert</summary>
+ ///// <returns></returns>
+ //public override Int32 Insert()
+ //{
+ // return base.Insert();
+ //}
+
+ ///// <summary>已重载。在事务保护范围内处理业务,位于Valid之后</summary>
+ ///// <returns></returns>
+ //protected override Int32 OnDelete()
+ //{
+ // return base.OnDelete();
+ //}
+ #endregion
+
+ #region 扩展属性
+ #endregion
+
+ #region 扩展查询
+ /// <summary>根据编号查找</summary>
+ /// <param name="id">编号</param>
+ /// <returns>实体对象</returns>
+ public static HtmlRule FindById(Int32 id)
+ {
+ if (id <= 0) return null;
+
+ // 实体缓存
+ if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Id == id);
+
+ // 单对象缓存
+ return Meta.SingleCache[id];
+
+ //return Find(_.Id == id);
+ }
+
+ /// <summary>根据种类查找</summary>
+ /// <param name="kind">种类</param>
+ /// <returns>实体列表</returns>
+ public static IList<HtmlRule> FindAllByKind(RuleKinds kind)
+ {
+ // 实体缓存
+ if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.Kind == kind);
+
+ return FindAll(_.Kind == kind);
+ }
+ #endregion
+
+ #region 高级查询
+ /// <summary>高级查询</summary>
+ /// <param name="kind">种类。图片、链接、文本</param>
+ /// <param name="start">更新时间开始</param>
+ /// <param name="end">更新时间结束</param>
+ /// <param name="key">关键字</param>
+ /// <param name="page">分页参数信息。可携带统计和数据权限扩展查询等信息</param>
+ /// <returns>实体列表</returns>
+ public static IList<HtmlRule> Search(Int32 kind, DateTime start, DateTime end, String key, PageParameter page)
+ {
+ var exp = new WhereExpression();
+
+ if (kind >= 0) exp &= _.Kind == kind;
+ exp &= _.UpdateTime.Between(start, end);
+ if (!key.IsNullOrEmpty()) exp &= _.Rule.Contains(key) | _.Target.Contains(key) | _.CreateUser.Contains(key) | _.CreateIP.Contains(key) | _.UpdateUser.Contains(key) | _.UpdateIP.Contains(key) | _.Remark.Contains(key);
+
+ return FindAll(exp, page);
+ }
+
+ // Select Count(Id) as Id,Category From HtmlRule Where CreateTime>'2020-01-24 00:00:00' Group By Category Order By Id Desc limit 20
+ //static readonly FieldCache<HtmlRule> _CategoryCache = new FieldCache<HtmlRule>(nameof(Category))
+ //{
+ //Where = _.CreateTime > DateTime.Today.AddDays(-30) & Expression.Empty
+ //};
+
+ ///// <summary>获取类别列表,字段缓存10分钟,分组统计数据最多的前20种,用于魔方前台下拉选择</summary>
+ ///// <returns></returns>
+ //public static IDictionary<String, String> GetCategoryList() => _CategoryCache.FindAllName();
+ #endregion
+
+ #region 业务操作
+ #endregion
+ }
+}
\ No newline at end of file
diff --git "a/NewLife.YuqueWeb/Entity/Html\350\247\204\345\210\231.cs" "b/NewLife.YuqueWeb/Entity/Html\350\247\204\345\210\231.cs"
new file mode 100644
index 0000000..4511995
--- /dev/null
+++ "b/NewLife.YuqueWeb/Entity/Html\350\247\204\345\210\231.cs"
@@ -0,0 +1,282 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Runtime.Serialization;
+using System.Web.Script.Serialization;
+using System.Xml.Serialization;
+using XCode;
+using XCode.Configuration;
+using XCode.DataAccessLayer;
+
+namespace NewLife.YuqueWeb.Entity
+{
+ /// <summary>Html规则。用于替换Html中的连接或字符串</summary>
+ [Serializable]
+ [DataObject]
+ [Description("Html规则。用于替换Html中的连接或字符串")]
+ [BindIndex("IX_HtmlRule_Kind", false, "Kind")]
+ [BindTable("HtmlRule", Description = "Html规则。用于替换Html中的连接或字符串", ConnName = "Yuque", DbType = DatabaseType.None)]
+ public partial class HtmlRule
+ {
+ #region 属性
+ private Int32 _Id;
+ /// <summary>编号</summary>
+ [DisplayName("编号")]
+ [Description("编号")]
+ [DataObjectField(true, true, false, 0)]
+ [BindColumn("Id", "编号", "")]
+ public Int32 Id { get => _Id; set { if (OnPropertyChanging("Id", value)) { _Id = value; OnPropertyChanged("Id"); } } }
+
+ private RuleKinds _Kind;
+ /// <summary>种类。图片、链接、文本</summary>
+ [DisplayName("种类")]
+ [Description("种类。图片、链接、文本")]
+ [DataObjectField(false, false, false, 0)]
+ [BindColumn("Kind", "种类。图片、链接、文本", "")]
+ public RuleKinds Kind { get => _Kind; set { if (OnPropertyChanging("Kind", value)) { _Kind = value; OnPropertyChanged("Kind"); } } }
+
+ private String _Rule;
+ /// <summary>规则</summary>
+ [DisplayName("规则")]
+ [Description("规则")]
+ [DataObjectField(false, false, true, 50)]
+ [BindColumn("Rule", "规则", "", Master = true)]
+ public String Rule { get => _Rule; set { if (OnPropertyChanging("Rule", value)) { _Rule = value; OnPropertyChanged("Rule"); } } }
+
+ private String _Target;
+ /// <summary>目标</summary>
+ [DisplayName("目标")]
+ [Description("目标")]
+ [DataObjectField(false, false, true, 50)]
+ [BindColumn("Target", "目标", "")]
+ public String Target { get => _Target; set { if (OnPropertyChanging("Target", value)) { _Target = value; OnPropertyChanged("Target"); } } }
+
+ private Boolean _Enable;
+ /// <summary>启用</summary>
+ [DisplayName("启用")]
+ [Description("启用")]
+ [DataObjectField(false, false, false, 0)]
+ [BindColumn("Enable", "启用", "")]
+ public Boolean Enable { get => _Enable; set { if (OnPropertyChanging("Enable", value)) { _Enable = value; OnPropertyChanged("Enable"); } } }
+
+ private String _CreateUser;
+ /// <summary>创建人</summary>
+ [DisplayName("创建人")]
+ [Description("创建人")]
+ [DataObjectField(false, false, true, 50)]
+ [BindColumn("CreateUser", "创建人", "")]
+ public String CreateUser { get => _CreateUser; set { if (OnPropertyChanging("CreateUser", value)) { _CreateUser = value; OnPropertyChanged("CreateUser"); } } }
+
+ private Int32 _CreateUserID;
+ /// <summary>创建者</summary>
+ [DisplayName("创建者")]
+ [Description("创建者")]
+ [DataObjectField(false, false, false, 0)]
+ [BindColumn("CreateUserID", "创建者", "")]
+ public Int32 CreateUserID { get => _CreateUserID; set { if (OnPropertyChanging("CreateUserID", value)) { _CreateUserID = value; OnPropertyChanged("CreateUserID"); } } }
+
+ private DateTime _CreateTime;
+ /// <summary>创建时间</summary>
+ [DisplayName("创建时间")]
+ [Description("创建时间")]
+ [DataObjectField(false, false, true, 0)]
+ [BindColumn("CreateTime", "创建时间", "")]
+ public DateTime CreateTime { get => _CreateTime; set { if (OnPropertyChanging("CreateTime", value)) { _CreateTime = value; OnPropertyChanged("CreateTime"); } } }
+
+ private String _CreateIP;
+ /// <summary>创建地址</summary>
+ [DisplayName("创建地址")]
+ [Description("创建地址")]
+ [DataObjectField(false, false, true, 50)]
+ [BindColumn("CreateIP", "创建地址", "")]
+ public String CreateIP { get => _CreateIP; set { if (OnPropertyChanging("CreateIP", value)) { _CreateIP = value; OnPropertyChanged("CreateIP"); } } }
+
+ private String _UpdateUser;
+ /// <summary>更新人</summary>
+ [DisplayName("更新人")]
+ [Description("更新人")]
+ [DataObjectField(false, false, true, 50)]
+ [BindColumn("UpdateUser", "更新人", "")]
+ public String UpdateUser { get => _UpdateUser; set { if (OnPropertyChanging("UpdateUser", value)) { _UpdateUser = value; OnPropertyChanged("UpdateUser"); } } }
+
+ private Int32 _UpdateUserID;
+ /// <summary>更新者</summary>
+ [DisplayName("更新者")]
+ [Description("更新者")]
+ [DataObjectField(false, false, false, 0)]
+ [BindColumn("UpdateUserID", "更新者", "")]
+ public Int32 UpdateUserID { get => _UpdateUserID; set { if (OnPropertyChanging("UpdateUserID", value)) { _UpdateUserID = value; OnPropertyChanged("UpdateUserID"); } } }
+
+ private DateTime _UpdateTime;
+ /// <summary>更新时间</summary>
+ [DisplayName("更新时间")]
+ [Description("更新时间")]
+ [DataObjectField(false, false, true, 0)]
+ [BindColumn("UpdateTime", "更新时间", "")]
+ public DateTime UpdateTime { get => _UpdateTime; set { if (OnPropertyChanging("UpdateTime", value)) { _UpdateTime = value; OnPropertyChanged("UpdateTime"); } } }
+
+ private String _UpdateIP;
+ /// <summary>更新地址</summary>
+ [DisplayName("更新地址")]
+ [Description("更新地址")]
+ [DataObjectField(false, false, true, 50)]
+ [BindColumn("UpdateIP", "更新地址", "")]
+ public String UpdateIP { get => _UpdateIP; set { if (OnPropertyChanging("UpdateIP", value)) { _UpdateIP = value; OnPropertyChanged("UpdateIP"); } } }
+
+ private String _Remark;
+ /// <summary>备注</summary>
+ [DisplayName("备注")]
+ [Description("备注")]
+ [DataObjectField(false, false, true, 200)]
+ [BindColumn("Remark", "备注", "")]
+ public String Remark { get => _Remark; set { if (OnPropertyChanging("Remark", value)) { _Remark = value; OnPropertyChanged("Remark"); } } }
+ #endregion
+
+ #region 获取/设置 字段值
+ /// <summary>获取/设置 字段值</summary>
+ /// <param name="name">字段名</param>
+ /// <returns></returns>
+ public override Object this[String name]
+ {
+ get
+ {
+ switch (name)
+ {
+ case "Id": return _Id;
+ case "Kind": return _Kind;
+ case "Rule": return _Rule;
+ case "Target": return _Target;
+ case "Enable": return _Enable;
+ case "CreateUser": return _CreateUser;
+ case "CreateUserID": return _CreateUserID;
+ case "CreateTime": return _CreateTime;
+ case "CreateIP": return _CreateIP;
+ case "UpdateUser": return _UpdateUser;
+ case "UpdateUserID": return _UpdateUserID;
+ case "UpdateTime": return _UpdateTime;
+ case "UpdateIP": return _UpdateIP;
+ case "Remark": return _Remark;
+ default: return base[name];
+ }
+ }
+ set
+ {
+ switch (name)
+ {
+ case "Id": _Id = value.ToInt(); break;
+ case "Kind": _Kind = (RuleKinds)value.ToInt(); break;
+ case "Rule": _Rule = Convert.ToString(value); break;
+ case "Target": _Target = Convert.ToString(value); break;
+ case "Enable": _Enable = value.ToBoolean(); break;
+ case "CreateUser": _CreateUser = Convert.ToString(value); break;
+ case "CreateUserID": _CreateUserID = value.ToInt(); break;
+ case "CreateTime": _CreateTime = value.ToDateTime(); break;
+ case "CreateIP": _CreateIP = Convert.ToString(value); break;
+ case "UpdateUser": _UpdateUser = Convert.ToString(value); break;
+ case "UpdateUserID": _UpdateUserID = value.ToInt(); break;
+ case "UpdateTime": _UpdateTime = value.ToDateTime(); break;
+ case "UpdateIP": _UpdateIP = Convert.ToString(value); break;
+ case "Remark": _Remark = Convert.ToString(value); break;
+ default: base[name] = value; break;
+ }
+ }
+ }
+ #endregion
+
+ #region 字段名
+ /// <summary>取得Html规则字段信息的快捷方式</summary>
+ public partial class _
+ {
+ /// <summary>编号</summary>
+ public static readonly Field Id = FindByName("Id");
+
+ /// <summary>种类。图片、链接、文本</summary>
+ public static readonly Field Kind = FindByName("Kind");
+
+ /// <summary>规则</summary>
+ public static readonly Field Rule = FindByName("Rule");
+
+ /// <summary>目标</summary>
+ public static readonly Field Target = FindByName("Target");
+
+ /// <summary>启用</summary>
+ public static readonly Field Enable = FindByName("Enable");
+
+ /// <summary>创建人</summary>
+ public static readonly Field CreateUser = FindByName("CreateUser");
+
+ /// <summary>创建者</summary>
+ public static readonly Field CreateUserID = FindByName("CreateUserID");
+
+ /// <summary>创建时间</summary>
+ public static readonly Field CreateTime = FindByName("CreateTime");
+
+ /// <summary>创建地址</summary>
+ public static readonly Field CreateIP = FindByName("CreateIP");
+
+ /// <summary>更新人</summary>
+ public static readonly Field UpdateUser = FindByName("UpdateUser");
+
+ /// <summary>更新者</summary>
+ public static readonly Field UpdateUserID = FindByName("UpdateUserID");
+
+ /// <summary>更新时间</summary>
+ public static readonly Field UpdateTime = FindByName("UpdateTime");
+
+ /// <summary>更新地址</summary>
+ public static readonly Field UpdateIP = FindByName("UpdateIP");
+
+ /// <summary>备注</summary>
+ public static readonly Field Remark = FindByName("Remark");
+
+ static Field FindByName(String name) => Meta.Table.FindByName(name);
+ }
+
+ /// <summary>取得Html规则字段名称的快捷方式</summary>
+ public partial class __
+ {
+ /// <summary>编号</summary>
+ public const String Id = "Id";
+
+ /// <summary>种类。图片、链接、文本</summary>
+ public const String Kind = "Kind";
+
+ /// <summary>规则</summary>
+ public const String Rule = "Rule";
+
+ /// <summary>目标</summary>
+ public const String Target = "Target";
+
+ /// <summary>启用</summary>
+ public const String Enable = "Enable";
+
+ /// <summary>创建人</summary>
+ public const String CreateUser = "CreateUser";
+
+ /// <summary>创建者</summary>
+ public const String CreateUserID = "CreateUserID";
+
+ /// <summary>创建时间</summary>
+ public const String CreateTime = "CreateTime";
+
+ /// <summary>创建地址</summary>
+ public const String CreateIP = "CreateIP";
+
+ /// <summary>更新人</summary>
+ public const String UpdateUser = "UpdateUser";
+
+ /// <summary>更新者</summary>
+ public const String UpdateUserID = "UpdateUserID";
+
+ /// <summary>更新时间</summary>
+ public const String UpdateTime = "UpdateTime";
+
+ /// <summary>更新地址</summary>
+ public const String UpdateIP = "UpdateIP";
+
+ /// <summary>备注</summary>
+ public const String Remark = "Remark";
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/NewLife.YuqueWeb/Entity/Model.xml b/NewLife.YuqueWeb/Entity/Model.xml
index 5d7367d..d15cc88 100644
--- a/NewLife.YuqueWeb/Entity/Model.xml
+++ b/NewLife.YuqueWeb/Entity/Model.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<Tables xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="http://www.newlifex.com http://www.newlifex.com/Model2022.xsd" NameSpace="NewLife.YuQueWeb.Entity" ConnName="YuQue" Output="" BaseClass="Entity" Version="11.0.2022.0405" Document="https://www.yuque.com/smartstone/xcode/model" xmlns="http://www.newlifex.com/Model2022.xsd">
+<Tables xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="http://www.newlifex.com http://www.newlifex.com/Model2022.xsd" NameSpace="NewLife.YuqueWeb.Entity" ConnName="Yuque" Output="" BaseClass="Entity" Version="11.0.2022.0405" Document="https://www.yuque.com/smartstone/xcode/model" xmlns="http://www.newlifex.com/Model2022.xsd">
<Table Name="Book" Description="知识库。管理知识库">
<Columns>
<Column Name="Id" DataType="Int32" PrimaryKey="True" Description="编号" />
@@ -105,4 +105,25 @@
<Index Columns="Name" />
</Indexes>
</Table>
+ <Table Name="HtmlRule" Description="Html规则。用于替换Html中的连接或字符串">
+ <Columns>
+ <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
+ <Column Name="Kind" DataType="Int32" Description="种类。图片、链接、文本" Type="RuleKinds" />
+ <Column Name="Rule" DataType="String" Master="True" Description="规则" />
+ <Column Name="Target" DataType="String" Description="目标" />
+ <Column Name="Enable" DataType="Boolean" Description="启用" />
+ <Column Name="CreateUser" DataType="String" Description="创建人" />
+ <Column Name="CreateUserID" DataType="Int32" Description="创建者" />
+ <Column Name="CreateTime" DataType="DateTime" Description="创建时间" />
+ <Column Name="CreateIP" DataType="String" Description="创建地址" />
+ <Column Name="UpdateUser" DataType="String" Description="更新人" />
+ <Column Name="UpdateUserID" DataType="Int32" Description="更新者" />
+ <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" />
+ <Column Name="UpdateIP" DataType="String" Description="更新地址" />
+ <Column Name="Remark" DataType="String" Length="200" Description="备注" />
+ </Columns>
+ <Indexes>
+ <Index Columns="Kind" />
+ </Indexes>
+ </Table>
</Tables>
\ No newline at end of file
diff --git a/NewLife.YuqueWeb/Entity/RuleKinds.cs b/NewLife.YuqueWeb/Entity/RuleKinds.cs
new file mode 100644
index 0000000..0d34f71
--- /dev/null
+++ b/NewLife.YuqueWeb/Entity/RuleKinds.cs
@@ -0,0 +1,11 @@
+namespace NewLife.YuqueWeb.Entity
+{
+ public enum RuleKinds
+ {
+ 图片 = 1,
+
+ 超链接,
+
+ 文本,
+ }
+}
\ No newline at end of file
diff --git a/NewLife.YuqueWeb/Entity/YuQue.htm b/NewLife.YuqueWeb/Entity/YuQue.htm
index 1cee3dd..3c98a09 100644
--- a/NewLife.YuqueWeb/Entity/YuQue.htm
+++ b/NewLife.YuqueWeb/Entity/YuQue.htm
@@ -943,3 +943,174 @@
</tbody>
</table>
<br></br>
+<h3>Html规则(HtmlRule)</h3>
+<table>
+ <thead>
+ <tr>
+ <th>名称</th>
+ <th>显示名</th>
+ <th>类型</th>
+ <th>长度</th>
+ <th>精度</th>
+ <th>主键</th>
+ <th>允许空</th>
+ <th>备注</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Id</td>
+ <td>编号</td>
+ <td>Int32</td>
+ <td></td>
+ <td></td>
+ <td title="自增">AI</td>
+ <td>N</td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>Kind</td>
+ <td>种类</td>
+ <td>Int32</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td>N</td>
+ <td>图片、链接、文本</td>
+ </tr>
+
+ <tr>
+ <td>Rule</td>
+ <td>规则</td>
+ <td>String</td>
+ <td>50</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>Target</td>
+ <td>目标</td>
+ <td>String</td>
+ <td>50</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>Enable</td>
+ <td>启用</td>
+ <td>Boolean</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td>N</td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>CreateUser</td>
+ <td>创建人</td>
+ <td>String</td>
+ <td>50</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>CreateUserID</td>
+ <td>创建者</td>
+ <td>Int32</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td>N</td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>CreateTime</td>
+ <td>创建时间</td>
+ <td>DateTime</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>CreateIP</td>
+ <td>创建地址</td>
+ <td>String</td>
+ <td>50</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>UpdateUser</td>
+ <td>更新人</td>
+ <td>String</td>
+ <td>50</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>UpdateUserID</td>
+ <td>更新者</td>
+ <td>Int32</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td>N</td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>UpdateTime</td>
+ <td>更新时间</td>
+ <td>DateTime</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>UpdateIP</td>
+ <td>更新地址</td>
+ <td>String</td>
+ <td>50</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>Remark</td>
+ <td>备注</td>
+ <td>String</td>
+ <td>200</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+<br></br>
diff --git "a/NewLife.YuqueWeb/Entity/\345\257\274\350\210\252.Biz.cs" "b/NewLife.YuqueWeb/Entity/\345\257\274\350\210\252.Biz.cs"
index d2df0fe..cef33fa 100644
--- "a/NewLife.YuqueWeb/Entity/\345\257\274\350\210\252.Biz.cs"
+++ "b/NewLife.YuqueWeb/Entity/\345\257\274\350\210\252.Biz.cs"
@@ -4,7 +4,7 @@ using NewLife.Log;
using XCode;
using XCode.Membership;
-namespace NewLife.YuQueWeb.Entity
+namespace NewLife.YuqueWeb.Entity
{
/// <summary>导航</summary>
public partial class Nav : EntityTree<Nav>
@@ -31,22 +31,6 @@ namespace NewLife.YuQueWeb.Entity
// 建议先调用基类方法,基类方法会做一些统一处理
base.Valid(isNew);
-
- // 在新插入数据或者修改了指定字段时进行修正
- // 处理当前已登录用户信息,可以由UserModule过滤器代劳
- /*var user = ManageProvider.User;
- if (user != null)
- {
- if (isNew && !Dirtys[nameof(CreateUserID)]) CreateUserID = user.ID;
- if (!Dirtys[nameof(UpdateUserID)]) UpdateUserID = user.ID;
- }*/
- //if (isNew && !Dirtys[nameof(CreateTime)]) CreateTime = DateTime.Now;
- //if (!Dirtys[nameof(UpdateTime)]) UpdateTime = DateTime.Now;
- //if (isNew && !Dirtys[nameof(CreateIP)]) CreateIP = ManageProvider.UserHost;
- //if (!Dirtys[nameof(UpdateIP)]) UpdateIP = ManageProvider.UserHost;
-
- // 检查唯一索引
- // CheckExist(isNew, nameof(ParentId), nameof(Name));
}
/// <summary>首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法</summary>
@@ -62,22 +46,24 @@ namespace NewLife.YuQueWeb.Entity
// 需要注意的是,如果该方法调用了其它实体类的首次数据库操作,目标实体类的数据初始化将会在同一个线程完成
if (XTrace.Debug) XTrace.WriteLine("开始初始化{0}[{1}]数据……", typeof(Nav).Name, Meta.Table.DataTable.DisplayName);
- var fn = $"../InitData/{Meta.TableName}.json".GetFullPath();
-
var header = Root.Add("头部");
header.Add("首页", "/");
- header.Add("关于", "/About");
- header.Add("联系我们", "/Contact");
+ header.Add("产品方案", "#")
+ .Add("物联网平台", "http://iot.feifan.link")
+ .Add("星尘分布式系统", "http://star.newlifex.com");
+ header.Add("关于我们", "/About");
var footer = Root.Add("尾部");
var link = footer.Add("友情链接");
link.Add("新生命团队", "https://www.NewLifeX.com");
link.Add("开源项目", "https://github.com/NewLifeX");
- footer.Add("文档").Add("文档资料", "https://www.yuque.com/smartstone/cube");
+ footer.Add("文档").Add("文档资料", "https://www.newlifex.com");
footer.Add("关于")
- .Add("关于我们", "/About")
- .Add("联系我们", "/Contact");
+ .Add("关于我们", "/About");
+
+ var jumbotron = Root.Add("巨幕");
+ jumbotron.Add("学无先后达者为师!");
if (XTrace.Debug) XTrace.WriteLine("完成初始化{0}[{1}]数据!", typeof(Nav).Name, Meta.Table.DataTable.DisplayName);
}
diff --git "a/NewLife.YuqueWeb/Entity/\345\257\274\350\210\252.cs" "b/NewLife.YuqueWeb/Entity/\345\257\274\350\210\252.cs"
index c8589b6..d8a203a 100644
--- "a/NewLife.YuqueWeb/Entity/\345\257\274\350\210\252.cs"
+++ "b/NewLife.YuqueWeb/Entity/\345\257\274\350\210\252.cs"
@@ -8,7 +8,7 @@ using XCode;
using XCode.Configuration;
using XCode.DataAccessLayer;
-namespace NewLife.YuQueWeb.Entity
+namespace NewLife.YuqueWeb.Entity
{
/// <summary>导航</summary>
[Serializable]
@@ -16,7 +16,7 @@ namespace NewLife.YuQueWeb.Entity
[Description("导航")]
[BindIndex("IU_Nav_ParentId_Name", true, "ParentId,Name")]
[BindIndex("IX_Nav_Name", false, "Name")]
- [BindTable("Nav", Description = "导航", ConnName = "YuQue", DbType = DatabaseType.SqlServer)]
+ [BindTable("Nav", Description = "导航", ConnName = "Yuque", DbType = DatabaseType.SqlServer)]
public partial class Nav
{
#region 属性
diff --git "a/NewLife.YuqueWeb/Entity/\346\226\207\346\241\243.Biz.cs" "b/NewLife.YuqueWeb/Entity/\346\226\207\346\241\243.Biz.cs"
index 90d7dcb..87c0aca 100644
--- "a/NewLife.YuqueWeb/Entity/\346\226\207\346\241\243.Biz.cs"
+++ "b/NewLife.YuqueWeb/Entity/\346\226\207\346\241\243.Biz.cs"
@@ -4,7 +4,7 @@ using NewLife.Data;
using XCode;
using XCode.Membership;
-namespace NewLife.YuQueWeb.Entity
+namespace NewLife.YuqueWeb.Entity
{
/// <summary>文档。文档内容</summary>
public partial class Document : Entity<Document>
diff --git "a/NewLife.YuqueWeb/Entity/\346\226\207\346\241\243.cs" "b/NewLife.YuqueWeb/Entity/\346\226\207\346\241\243.cs"
index d0d810c..adb6cd2 100644
--- "a/NewLife.YuqueWeb/Entity/\346\226\207\346\241\243.cs"
+++ "b/NewLife.YuqueWeb/Entity/\346\226\207\346\241\243.cs"
@@ -8,7 +8,7 @@ using XCode;
using XCode.Configuration;
using XCode.DataAccessLayer;
-namespace NewLife.YuQueWeb.Entity
+namespace NewLife.YuqueWeb.Entity
{
/// <summary>文档。文档内容</summary>
[Serializable]
@@ -19,7 +19,7 @@ namespace NewLife.YuQueWeb.Entity
[BindIndex("IX_Document_Title", false, "Title")]
[BindIndex("IX_Document_UpdateTime", false, "UpdateTime")]
[BindIndex("IX_Document_SyncTime", false, "SyncTime")]
- [BindTable("Document", Description = "文档。文档内容", ConnName = "YuQue", DbType = DatabaseType.None)]
+ [BindTable("Document", Description = "文档。文档内容", ConnName = "Yuque", DbType = DatabaseType.None)]
public partial class Document
{
#region 属性
diff --git "a/NewLife.YuqueWeb/Entity/\347\237\245\350\257\206\345\272\223.Biz.cs" "b/NewLife.YuqueWeb/Entity/\347\237\245\350\257\206\345\272\223.Biz.cs"
index a50cac1..9b529cd 100644
--- "a/NewLife.YuqueWeb/Entity/\347\237\245\350\257\206\345\272\223.Biz.cs"
+++ "b/NewLife.YuqueWeb/Entity/\347\237\245\350\257\206\345\272\223.Biz.cs"
@@ -2,7 +2,7 @@
using XCode;
using XCode.Membership;
-namespace NewLife.YuQueWeb.Entity
+namespace NewLife.YuqueWeb.Entity
{
/// <summary>知识库。管理知识库</summary>
public partial class Book : Entity<Book>
diff --git "a/NewLife.YuqueWeb/Entity/\347\237\245\350\257\206\345\272\223.cs" "b/NewLife.YuqueWeb/Entity/\347\237\245\350\257\206\345\272\223.cs"
index 40bcdde..4fb2fb4 100644
--- "a/NewLife.YuqueWeb/Entity/\347\237\245\350\257\206\345\272\223.cs"
+++ "b/NewLife.YuqueWeb/Entity/\347\237\245\350\257\206\345\272\223.cs"
@@ -8,7 +8,7 @@ using XCode;
using XCode.Configuration;
using XCode.DataAccessLayer;
-namespace NewLife.YuQueWeb.Entity
+namespace NewLife.YuqueWeb.Entity
{
/// <summary>知识库。管理知识库</summary>
[Serializable]
@@ -16,7 +16,7 @@ namespace NewLife.YuQueWeb.Entity
[Description("知识库。管理知识库")]
[BindIndex("IU_Book_Code", true, "Code")]
[BindIndex("IX_Book_Name", false, "Name")]
- [BindTable("Book", Description = "知识库。管理知识库", ConnName = "YuQue", DbType = DatabaseType.None)]
+ [BindTable("Book", Description = "知识库。管理知识库", ConnName = "Yuque", DbType = DatabaseType.None)]
public partial class Book
{
#region 属性
diff --git a/NewLife.YuqueWeb/Models/BookIndexModel.cs b/NewLife.YuqueWeb/Models/BookIndexModel.cs
index 25bc155..839316a 100644
--- a/NewLife.YuqueWeb/Models/BookIndexModel.cs
+++ b/NewLife.YuqueWeb/Models/BookIndexModel.cs
@@ -1,5 +1,5 @@
using NewLife.Data;
-using NewLife.YuQueWeb.Entity;
+using NewLife.YuqueWeb.Entity;
namespace NewLife.YuqueWeb.Models
{
diff --git a/NewLife.YuqueWeb/Properties/launchSettings.json b/NewLife.YuqueWeb/Properties/launchSettings.json
index d0076b5..9309ed9 100644
--- a/NewLife.YuqueWeb/Properties/launchSettings.json
+++ b/NewLife.YuqueWeb/Properties/launchSettings.json
@@ -8,7 +8,7 @@
}
},
"profiles": {
- "NewLife.YuQueWeb": {
+ "NewLife.YuqueWeb": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
diff --git a/NewLife.YuqueWeb/Services/BookService.cs b/NewLife.YuqueWeb/Services/BookService.cs
index 66db9b2..151c4c7 100644
--- a/NewLife.YuqueWeb/Services/BookService.cs
+++ b/NewLife.YuqueWeb/Services/BookService.cs
@@ -2,7 +2,7 @@
using NewLife.Cube.Entity;
using NewLife.Log;
using NewLife.Yuque;
-using NewLife.YuQueWeb.Entity;
+using NewLife.YuqueWeb.Entity;
using XCode;
using XCode.Membership;
@@ -256,7 +256,7 @@ public class BookService
return doc.Update();
}
- static Regex _regex = new("<img.*?src=\"(.*?)\".*?>");
+ private static readonly Regex _regex = new("<img.*?src=\"(.*?)\".*?>");
public Int32 ProcessHtml(Document doc)
{
var html = doc?.BodyHtml;
diff --git a/NewLife.YuqueWeb/Services/SyncService.cs b/NewLife.YuqueWeb/Services/SyncService.cs
index debf0f7..454df62 100644
--- a/NewLife.YuqueWeb/Services/SyncService.cs
+++ b/NewLife.YuqueWeb/Services/SyncService.cs
@@ -1,7 +1,7 @@
using NewLife.Data;
using NewLife.Log;
using NewLife.Threading;
-using NewLife.YuQueWeb.Entity;
+using NewLife.YuqueWeb.Entity;
namespace NewLife.YuqueWeb.Services
{
diff --git a/NewLife.YuqueWeb/Views/Shared/_Footer_yq.cshtml b/NewLife.YuqueWeb/Views/Shared/_Footer_yq.cshtml
index 08c153a..f15ef52 100644
--- a/NewLife.YuqueWeb/Views/Shared/_Footer_yq.cshtml
+++ b/NewLife.YuqueWeb/Views/Shared/_Footer_yq.cshtml
@@ -1,7 +1,7 @@
@using NewLife
@using NewLife.Common;
@using NewLife.Cube.WebMiddleware;
-@using NewLife.YuQueWeb.Entity
+@using NewLife.YuqueWeb.Entity
@{
var set = NewLife.Cube.Setting.Current;
var footer = Nav.Root.FindByPath("尾部") ?? Nav.Root;
diff --git a/NewLife.YuqueWeb/Views/Shared/_Header_yq.cshtml b/NewLife.YuqueWeb/Views/Shared/_Header_yq.cshtml
index ce617f3..bd107cf 100644
--- a/NewLife.YuqueWeb/Views/Shared/_Header_yq.cshtml
+++ b/NewLife.YuqueWeb/Views/Shared/_Header_yq.cshtml
@@ -1,5 +1,5 @@
@using NewLife.Common;
-@using NewLife.YuQueWeb.Entity
+@using NewLife.YuqueWeb.Entity
@{
var header = Nav.Root.FindByPath("头部") ?? Nav.Root;
}
diff --git a/NewLife.YuqueWeb/Views/Shared/_Nav.cshtml b/NewLife.YuqueWeb/Views/Shared/_Nav.cshtml
index b07893b..9c16b78 100644
--- a/NewLife.YuqueWeb/Views/Shared/_Nav.cshtml
+++ b/NewLife.YuqueWeb/Views/Shared/_Nav.cshtml
@@ -1,4 +1,4 @@
-@using NewLife.YuQueWeb.Entity
+@using NewLife.YuqueWeb.Entity
@{
var list = Book.GetValids();
}
diff --git a/NewLife.YuqueWeb/Views/Yuque/Index.cshtml b/NewLife.YuqueWeb/Views/Yuque/Index.cshtml
index 1473f97..f10d42d 100644
--- a/NewLife.YuqueWeb/Views/Yuque/Index.cshtml
+++ b/NewLife.YuqueWeb/Views/Yuque/Index.cshtml
@@ -1,5 +1,5 @@
-@model IList<NewLife.YuQueWeb.Entity.Book>
-@using NewLife.YuQueWeb.Entity
+@model IList<NewLife.YuqueWeb.Entity.Book>
+@using NewLife.YuqueWeb.Entity
@{
Layout = "~/Views/Shared/_Layout_yq.cshtml";
diff --git a/NewLife.YuqueWeb/Views/Yuque/Info.cshtml b/NewLife.YuqueWeb/Views/Yuque/Info.cshtml
index 14b0aa3..f8ac700 100644
--- a/NewLife.YuqueWeb/Views/Yuque/Info.cshtml
+++ b/NewLife.YuqueWeb/Views/Yuque/Info.cshtml
@@ -1,4 +1,4 @@
-@model NewLife.YuQueWeb.Entity.Document
+@model NewLife.YuqueWeb.Entity.Document
@{
Layout = "~/Views/Shared/_Layout_yq.cshtml";
diff --git a/NewLife.YuqueWeb/Views/Yuque/List.cshtml b/NewLife.YuqueWeb/Views/Yuque/List.cshtml
index be6841b..bbce04a 100644
--- a/NewLife.YuqueWeb/Views/Yuque/List.cshtml
+++ b/NewLife.YuqueWeb/Views/Yuque/List.cshtml
@@ -1,6 +1,6 @@
@model NewLife.YuqueWeb.Models.BookIndexModel
@using NewLife.Data
-@using NewLife.YuQueWeb.Entity
+@using NewLife.YuqueWeb.Entity
@using NewLife.YuqueWeb.Models
@{
Layout = "~/Views/Shared/_Layout_yq.cshtml";
diff --git a/NewLife.YuqueWeb/YuqueService.cs b/NewLife.YuqueWeb/YuqueService.cs
index 5332fd3..5552fae 100644
--- a/NewLife.YuqueWeb/YuqueService.cs
+++ b/NewLife.YuqueWeb/YuqueService.cs
@@ -5,9 +5,9 @@ using NewLife.Cube.Extensions;
using NewLife.Log;
using NewLife.YuqueWeb.Areas.Yuque;
using NewLife.YuqueWeb.Services;
-using NewLife.YuQueWeb.Entity;
+using NewLife.YuqueWeb.Entity;
-namespace NewLife.YuQueWeb;
+namespace NewLife.YuqueWeb;
/// <summary>语雀服务</summary>
public static class YuqueService
@@ -71,13 +71,11 @@ public static class YuqueService
public static void RegisterRoute(IEndpointRouteBuilder endpoints, Boolean useHomeIndex)
{
if (useHomeIndex)
- {
endpoints.MapControllerRoute(
name: "Yuque_Index",
pattern: "/",
defaults: new { controller = "Yuque", action = "Index" }
);
- }
#region 类别
endpoints.MapControllerRoute(
diff --git a/XUnitTest/BookServiceTests.cs b/XUnitTest/BookServiceTests.cs
index e054f45..b0f123a 100644
--- a/XUnitTest/BookServiceTests.cs
+++ b/XUnitTest/BookServiceTests.cs
@@ -5,7 +5,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NewLife.YuqueWeb.Services;
-using NewLife.YuQueWeb.Entity;
+using NewLife.YuqueWeb.Entity;
using Xunit;
namespace XUnitTest
diff --git a/XUnitTest/XUnitTest.csproj b/XUnitTest/XUnitTest.csproj
index bd04ea4..b0b7c9a 100644
--- a/XUnitTest/XUnitTest.csproj
+++ b/XUnitTest/XUnitTest.csproj
@@ -18,7 +18,7 @@
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="..\NewLife.YuQueWeb\NewLife.YuqueWeb.csproj" />
+ <ProjectReference Include="..\NewLife.YuqueWeb\NewLife.YuqueWeb.csproj" />
<ProjectReference Include="..\NewLife.Yuque\NewLife.Yuque.csproj" />
</ItemGroup>
diff --git a/YqWeb/Program.cs b/YqWeb/Program.cs
index cc0689c..ff55edf 100644
--- a/YqWeb/Program.cs
+++ b/YqWeb/Program.cs
@@ -1,6 +1,6 @@
using NewLife.Cube;
using NewLife.Log;
-using NewLife.YuQueWeb;
+using NewLife.YuqueWeb;
XTrace.UseConsole();
diff --git a/YqWeb/YqWeb.csproj b/YqWeb/YqWeb.csproj
index c34c132..ac352c3 100644
--- a/YqWeb/YqWeb.csproj
+++ b/YqWeb/YqWeb.csproj
@@ -23,7 +23,7 @@
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="..\NewLife.YuQueWeb\NewLife.YuqueWeb.csproj" />
+ <ProjectReference Include="..\NewLife.YuqueWeb\NewLife.YuqueWeb.csproj" />
</ItemGroup>
</Project>