Jelajahi Sumber

KnowledgeBase

xf 2 tahun lalu
induk
melakukan
640e826e1f

+ 1 - 1
dapr/components/pubsub.yaml

@@ -7,6 +7,6 @@ spec:
   version: v1
   metadata:
   - name: redisHost
-    value: 192.168.100.223:6380
+    value: 192.168.100.223:6379
   - name: redisPassword
     value: ""

+ 3 - 0
src/Hotline.Api/StartupExtensions.cs

@@ -111,6 +111,7 @@ internal static class StartupExtensions
                 d.UseHttpEndpoint("http://192.168.100.223:50112");
 #endif
             });
+
         // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
         services.AddEndpointsApiExplorer();
         services.AddSwaggerGen(c =>
@@ -231,8 +232,10 @@ internal static class StartupExtensions
         app.MapHub<CallCenterHub>("/hubs/callcenter");
         //app.UseMiddleware<TempTokenMiddleware>();
 
+        app.UseCloudEvents();
         app.MapControllers()
             .RequireAuthorization();
+        app.MapSubscribeHandler();
 
         return app;
     }

+ 1 - 1
src/Hotline.Repository.SqlSugar/SqlSugarStartupExtensions.cs

@@ -12,7 +12,7 @@ namespace Hotline.Repository.SqlSugar
 {
     public static class SqlSugarStartupExtensions
     {
-        public static void AddSqlSugar(this IServiceCollection services, IConfiguration configuration, string dbName = "CallCenter")
+        public static void AddSqlSugar(this IServiceCollection services, IConfiguration configuration, string dbName = "Hotline")
         {
             //多租户 new SqlSugarScope(List<ConnectionConfig>,db=>{});
 

+ 32 - 0
src/Hotline.Share/Enums/KnowledgeBase/EKnowledgeApplyStatus.cs

@@ -0,0 +1,32 @@
+namespace Hotline.Share.Enums.KnowledgeBase;
+
+/// <summary>
+/// 申请状态
+/// </summary>
+public enum EKnowledgeApplyStatus
+{
+    /// <summary>
+    /// 处理中
+    /// </summary>
+    Handling = 0,
+
+    /// <summary>
+    /// 完成
+    /// </summary>
+    Succeed = 1,
+
+    /// <summary>
+    /// 退回
+    /// </summary>
+    Failed = 2,
+
+    /// <summary>
+    /// 撤回
+    /// </summary>
+    Revert = 3,
+
+    /// <summary>
+    /// 逾期
+    /// </summary>
+    Overtime = 4,
+}

+ 11 - 0
src/Hotline.Share/Enums/KnowledgeBase/EKnowledgeApplyType.cs

@@ -0,0 +1,11 @@
+namespace Hotline.Share.Enums.KnowledgeBase;
+
+/// <summary>
+/// 申请类型
+/// </summary>
+public enum EKnowledgeApplyType
+{
+    Add = 0,
+    Update = 1,
+    Delete = 2,
+}

+ 11 - 0
src/Hotline.Share/Enums/KnowledgeBase/EKnowledgeStatus.cs

@@ -0,0 +1,11 @@
+namespace Hotline.Share.Enums.KnowledgeBase;
+
+public enum EKnowledgeStatus
+{
+    /// <summary>
+    /// 审批中
+    /// </summary>
+    Auditing = 1,
+    Succeed = 2,
+    Failed = 3,
+}

+ 39 - 0
src/Hotline.Share/Enums/Order/EAcceptType.cs

@@ -0,0 +1,39 @@
+namespace Hotline.Share.Enums.Order;
+
+/// <summary>
+/// 受理类型
+/// </summary>
+public enum EAcceptType
+{
+    Other = 0,
+
+    /// <summary>
+    /// 咨询
+    /// </summary>
+    Consult = 1,
+
+    /// <summary>
+    /// 建议
+    /// </summary>
+    Suggest = 2,
+
+    /// <summary>
+    /// 求助
+    /// </summary>
+    SeekHelp = 3,
+
+    /// <summary>
+    /// 表扬
+    /// </summary>
+    Praise = 4,
+
+    /// <summary>
+    /// 举报
+    /// </summary>
+    Report = 5,
+
+    /// <summary>
+    /// 投诉
+    /// </summary>
+    Complain = 6,
+}

+ 13 - 0
src/Hotline.Share/Enums/Order/EAgeRange.cs

@@ -0,0 +1,13 @@
+namespace Hotline.Share.Enums.Order;
+
+/// <summary>
+/// 年龄段
+/// </summary>
+public enum EAgeRange
+{
+    Unknown = 0,
+    LessThan12 = 1,
+    Between12And18 = 2,
+    Between19And65 = 3,
+    MoreThan65 = 4,
+}

+ 28 - 0
src/Hotline.Share/Enums/Order/EChannel.cs

@@ -0,0 +1,28 @@
+namespace Hotline.Share.Enums.Order;
+
+public enum EChannel
+{
+    /// <summary>
+    /// 电话
+    /// </summary>
+    Phone = 0,
+
+    /// <summary>
+    /// 门户网站
+    /// </summary>
+    Web = 1,
+
+    /// <summary>
+    /// 微信小程序
+    /// </summary>
+    WxMiniProgram = 2,
+
+    /// <summary>
+    /// 微信公众号
+    /// </summary>
+    WxOfficial = 3,
+
+    App = 4,
+
+
+}

+ 27 - 0
src/Hotline.Share/Enums/Order/EEmergencyLevel.cs

@@ -0,0 +1,27 @@
+namespace Hotline.Share.Enums.Order;
+
+/// <summary>
+/// 紧急程度
+/// </summary>
+public enum EEmergencyLevel
+{
+    /// <summary>
+    /// 不紧急
+    /// </summary>
+    UnEmergency = 0,
+
+    /// <summary>
+    /// 一般
+    /// </summary>
+    Normal = 1,
+
+    /// <summary>
+    /// 紧急
+    /// </summary>
+    Emergency = 2,
+
+    /// <summary>
+    /// 非常紧急
+    /// </summary>
+    QuiteEmergency = 3,
+}

+ 22 - 0
src/Hotline.Share/Enums/Order/EFromStatus.cs

@@ -0,0 +1,22 @@
+namespace Hotline.Share.Enums.Order;
+
+/// <summary>
+/// 来电/信人身份
+/// </summary>
+public enum EFromStatus
+{
+    /// <summary>
+    /// 未知
+    /// </summary>
+    Unknown = 0,
+
+    /// <summary>
+    /// 市民
+    /// </summary>
+    Citizen = 1,
+
+    /// <summary>
+    /// 企业
+    /// </summary>
+    Enterprise = 2,
+}

+ 11 - 0
src/Hotline.Share/Enums/Order/EGender.cs

@@ -0,0 +1,11 @@
+namespace Hotline.Share.Enums.Order;
+
+/// <summary>
+/// 性别
+/// </summary>
+public enum EGender
+{
+    Unknown = 0,
+    Male = 1,
+    Female = 2,
+}

+ 29 - 0
src/Hotline.Share/Enums/Order/ELicenceType.cs

@@ -0,0 +1,29 @@
+namespace Hotline.Share.Enums.Order;
+
+/// <summary>
+/// 证件类型
+/// </summary>
+public enum ELicenceType
+{
+    Unknown = 0,
+
+    /// <summary>
+    /// 身份证
+    /// </summary>
+    IdCard = 1,
+
+    /// <summary>
+    /// 护照
+    /// </summary>
+    Passport = 2,
+
+    /// <summary>
+    /// 港澳通行证
+    /// </summary>
+    HongKongMacaoTravelPermit = 3,
+
+    /// <summary>
+    /// 台湾通行证
+    /// </summary>
+    TaiwanTravelPermit = 4,
+}

+ 17 - 0
src/Hotline.Share/Enums/Order/EOrderType.cs

@@ -0,0 +1,17 @@
+namespace Hotline.Share.Enums.Order;
+
+/// <summary>
+/// 工单类型
+/// </summary>
+public enum EOrderType
+{
+    /// <summary>
+    /// 通用工单
+    /// </summary>
+    Common = 0,
+
+    /// <summary>
+    /// 12315市场监管局受理单
+    /// </summary>
+    MarketSupervisionBy12315 = 1,
+}

+ 9 - 0
src/Hotline/Hotspot.cs

@@ -0,0 +1,9 @@
+using XF.Domain.Repository;
+
+namespace Hotline;
+
+public class Hotspot : Entity
+{
+    //todo 同步省数据修改状态
+    public string Name { get; set; }
+}

+ 91 - 0
src/Hotline/KnowledgeBase/Knowledge.cs

@@ -0,0 +1,91 @@
+using Hotline.Share.Enums.KnowledgeBase;
+using XF.Domain.Repository;
+
+namespace Hotline.KnowledgeBase;
+
+/// <summary>
+/// 知识库文档内容
+/// </summary>
+public class Knowledge : FullStateEntity
+{
+    /// <summary>
+    /// 知识分类
+    /// </summary>
+    public KnowledgeTypeWithoutSubTypes KnowledgeType { get; set; }
+
+    /// <summary>
+    /// 热点
+    /// </summary>
+    public Hotspot Hotspot { get; set; }
+
+    /// <summary>
+    /// 知识编号
+    /// </summary>
+    public string Code { get; set; }
+
+    /// <summary>
+    /// 标题
+    /// </summary>
+    public string Title { get; set; }
+
+    /// <summary>
+    /// 摘要
+    /// </summary>
+    public string Summary { get; set; }
+
+    /// <summary>
+    /// 内容
+    /// </summary>
+    public string Content { get; set; }
+
+    /// <summary>
+    /// 浏览量
+    /// </summary>
+    public int PageView { get; set; }
+
+    /// <summary>
+    /// 是否公开
+    /// </summary>
+    public bool IsPublic { get; set; }
+
+    /// <summary>
+    /// 文档状态
+    /// </summary>
+    public EKnowledgeStatus Status { get; set; }
+
+    /// <summary>
+    /// 是否上架
+    /// </summary>
+    public bool IsOnShelf { get; set; }
+
+    /// <summary>
+    /// 上架时间
+    /// </summary>
+    public DateTime? OnShelfTime { get; set; }
+
+    /// <summary>
+    /// 下架时间
+    /// </summary>
+    public DateTime? OffShelfTime { get; set; }
+
+    /// <summary>
+    /// 关键词
+    /// </summary>
+    public List<string> Keywords { get; set; }
+
+    /// <summary>
+    /// 附件
+    /// </summary>
+    public List<string> Additions { get; set; }
+
+    /// <summary>
+    /// 关联知识申请
+    /// </summary>
+    public List<string> Applies { get; set; }
+
+    /// <summary>
+    /// 关联知识
+    /// </summary>
+    public List<string> Knowledges { get; set; }
+
+}

+ 42 - 0
src/Hotline/KnowledgeBase/KnowledgeApply.cs

@@ -0,0 +1,42 @@
+using Hotline.Share.Enums.KnowledgeBase;
+using XF.Domain.Repository;
+
+namespace Hotline.KnowledgeBase;
+
+/// <summary>
+/// 申请
+/// </summary>
+public class KnowledgeApply : FullStateEntity
+{
+    public string Content { get; set; }
+
+    /// <summary>
+    /// 申请类型
+    /// </summary>
+    public EKnowledgeApplyType KnowledgeApplyType { get; set; }
+
+    /// <summary>
+    /// 申请状态
+    /// </summary>
+    public EKnowledgeApplyStatus Status { get; set; }
+
+    /// <summary>
+    /// 申请处理部门编码
+    /// </summary>
+    public string DepartmentCode { get; set; }
+
+    /// <summary>
+    /// 申请处理部门名称
+    /// </summary>
+    public string Department { get; set; }
+
+    /// <summary>
+    /// 截止时间
+    /// </summary>
+    public DateTime? ExpiredTime { get; set; }
+
+    ///// <summary>
+    ///// 处理完成
+    ///// </summary>
+    //public Operation? Handled { get; set; }
+}

+ 11 - 0
src/Hotline/KnowledgeBase/KnowledgePV.cs

@@ -0,0 +1,11 @@
+using XF.Domain.Repository;
+
+namespace Hotline.KnowledgeBase;
+
+/// <summary>
+/// PV
+/// </summary>
+public class KnowledgePV : CreationEntity
+{
+    public string KnowledgeId { get; set; }
+}

+ 9 - 0
src/Hotline/KnowledgeBase/KnowledgeTemp.cs

@@ -0,0 +1,9 @@
+namespace Hotline.KnowledgeBase;
+
+/// <summary>
+/// 草稿
+/// </summary>
+public class KnowledgeTemp : Knowledge
+{
+
+}

+ 59 - 0
src/Hotline/KnowledgeBase/KnowledgeType.cs

@@ -0,0 +1,59 @@
+using XF.Domain.Repository;
+
+namespace Hotline.KnowledgeBase;
+
+/// <summary>
+/// 知识分类
+/// </summary>
+public class KnowledgeType : Entity
+{
+    /// <summary>
+    /// 类型名称
+    /// </summary>
+    public string Name { get; set; }
+
+    /// <summary>
+    /// 类型名称拼接(所有父级分类名称)
+    /// <example>
+    /// A类型/A.1类型/A.1.1类型
+    /// </example>
+    /// </summary>
+    public string SpliceName { get; set; }
+
+    /// <summary>
+    /// 是否启用
+    /// </summary>
+    public bool IsEnable { get; set; }
+
+    public int Sort { get; set; }
+
+    /// <summary>
+    /// 子类型
+    /// </summary>
+    public List<KnowledgeType> SubTypes { get; set; } = new();
+}
+
+public class KnowledgeTypeWithoutSubTypes
+{
+    public string Id { get; set; }
+
+    /// <summary>
+    /// 类型名称
+    /// </summary>
+    public string Name { get; set; }
+
+    /// <summary>
+    /// 类型名称拼接(所有父级分类名称)
+    /// <example>
+    /// A类型/A.1类型/A.1.1类型
+    /// </example>
+    /// </summary>
+    public string SpliceName { get; set; }
+
+    /// <summary>
+    /// 是否启用
+    /// </summary>
+    public bool IsEnable { get; set; }
+
+    public int Sort { get; set; }
+}

+ 13 - 0
src/Hotline/KnowledgeBase/Standard.cs

@@ -0,0 +1,13 @@
+using XF.Domain.Repository;
+
+namespace Hotline.KnowledgeBase
+{
+    /// <summary>
+    /// 知识编写规范
+    /// </summary>
+    public class Standard : FullStateEntity
+    {
+        public string Title { get; set; }
+        public string Content { get; set; }
+    }
+}

+ 137 - 3
src/Hotline/Orders/Order.cs

@@ -1,23 +1,157 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Runtime.Intrinsics.X86;
 using System.Text;
 using System.Threading.Tasks;
+using Hotline.Share.Enums.Order;
+using XF.Domain.Repository;
 
 namespace Hotline.Orders
 {
     /// <summary>
     /// 工单
     /// </summary>
-    public class Order
+    public partial class Order : FullStateEntity
     {
+        #region 来电信息
+
+        /// <summary>
+        /// 来源渠道
+        /// </summary>
+        public EChannel Channel { get; set; }
+
+        /// <summary>
+        /// 来电/信人姓名
+        /// </summary>
+        public string FromName { get; set; }
+
+        /// <summary>
+        /// 来电/信人性别
+        /// </summary>
+        public EGender FromGender { get; set; }
+
+        /// <summary>
+        /// 来电/信人身份
+        /// </summary>
+        public EFromStatus FromStatus { get; set; }
+
+        /// <summary>
+        /// 证件类型
+        /// </summary>
+        public ELicenceType? Licence { get; set; }
+
+        /// <summary>
+        /// 证件号码
+        /// </summary>
+        public string? LicenceNo { get; set; }
+
+        /// <summary>
+        /// 年龄段
+        /// </summary>
+        public EAgeRange? AgeRange { get; set; }
+
+        /// <summary>
+        /// 联系电话,null表示无需联系
+        /// </summary>
+        public string? Contact { get; set; }
+
+        /// <summary>
+        /// 是否接受短信,勾选校验手机号
+        /// </summary>
+        public bool AcceptSms { get; set; }
+
+        /// <summary>
+        /// 工作单位(当“来电/信人身份”为“企业”时必填,其他情况非必填)
+        /// </summary>
+        public string? Company { get; set; }
+
+        #endregion
+
+        #region 诉求信息
+
+        /// <summary>
+        /// 工单编码(202201010001)
+        /// </summary>
+        public string No { get; set; }
+
+        /// <summary>
+        /// 工单类型
+        /// </summary>
+        public EOrderType OrderType { get; set; }
+
+        /// <summary>
+        /// 受理类型
+        /// </summary>
+        public EAcceptType AcceptType { get; set; }
+
+        /// <summary>
+        /// 紧急程度
+        /// </summary>
+        public EEmergencyLevel EmergencyLevel { get; set; } = EEmergencyLevel.Normal;
+
+        public string Title { get; set; }
+
+        public string HotspotId { get; set; }
+        public string Hotspot { get; set; }
+        public string HotspotSpliceName { get; set; }
+
+        /// <summary>
+        /// 事发时间
+        /// </summary>
+        public DateTime? IncidentTime { get; set; }
+
+        /// <summary>
+        /// 事发地址
+        /// </summary>
+        public Position IncidentPosition { get; set; }
+
+        /// <summary>
+        /// 附件
+        /// </summary>
+        public List<string> Additions { get; set; }
+
+        #endregion
+    }
+
+    public class Position
+    {
+        /// <summary>
+        /// 经度
+        /// </summary>
+        public double Longitude { get; set; }
+
+        /// <summary>
+        /// 维度
+        /// </summary>
+        public double Latitude { get; set; }
+
+        /// <summary>
+        /// 行政区划编码
+        /// </summary>
+        public string AreaCode { get; set; }
+        public string Province { get; set; }
+        public string City { get; set; }
+        public string County { get; set; }
+        public string Street { get; set; }
+        public string Address => $"{Province}{City}{County}{Street}";
     }
 
     /// <summary>
-    /// 工单草稿
+    /// 渠道为电话时存在字段
     /// </summary>
-    public class PreOrder : Order
+    public partial class Order
     {
+        /// <summary>
+        /// 来电号码
+        /// </summary>
+        public string? FromPhone { get; set; }
+
+        /// <summary>
+        /// 转接号码(转接来源)
+        /// </summary>
+        public string? TransferPhone { get; set; }
+
 
     }
 }

+ 9 - 0
src/Hotline/Orders/TempOrder.cs

@@ -0,0 +1,9 @@
+namespace Hotline.Orders;
+
+/// <summary>
+/// 工单草稿
+/// </summary>
+public class TempOrder : Order
+{
+
+}

+ 1 - 0
src/XF.Domain.Repository/XF.Domain.Repository.csproj

@@ -5,6 +5,7 @@
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>enable</Nullable>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
+    <Version>1.0.1</Version>
   </PropertyGroup>
 
   <ItemGroup>