using Hotline.Ai.Visit;
using Hotline.Share.Dtos;
using Hotline.Share.Enums.Order;
using Hotline.Users;
using SqlSugar;
using System.ComponentModel;
using XF.Domain.Repository;
namespace Hotline.Orders;
///
/// 已回访工单
///
[Description("工单回访")]
[SugarIndex("index_order_no", nameof(OrderVisit.No), OrderByType.Desc)]
[SugarIndex("index_visit_orderId", nameof(OrderVisit.OrderId), OrderByType.Asc)]
public class OrderVisit : CreationEntity
{
///
/// 工单编码(冗余)
///
public string No { get; set; }
///
/// 工单ID
///
public string OrderId { get; set; }
///
/// 工单
///
[Navigate(NavigateType.OneToOne, nameof(OrderId))]
public Order Order { get; set; }
///
/// 回访状态
///
public EVisitState VisitState { get; set; }
///
/// 回访方式
///
[SugarColumn(IsNullable = true)]
public EVisitType? VisitType { get; set; }
///
/// 发布时间
///
public DateTime PublishTime { get; set; }
///
/// 回访人
///
[SugarColumn(IsNullable = true)]
public string? EmployeeId { get; set; }
///
/// 回访人(对象)
///
[Navigate(NavigateType.OneToOne, nameof(EmployeeId))]
public User? Employee { get; set; }
///
/// 是否接通
///
[SugarColumn(IsNullable = true)]
public bool? IsPutThrough { get; set; }
///
/// 重办状态
///
[SugarColumn(IsNullable = true)]
public EAgainState? AgainState { get; set; }
///
/// 回访时间
///
[SugarColumn(IsNullable = true)]
public DateTime? VisitTime { get; set; }
///
/// 回访明细
///
[Navigate(NavigateType.OneToMany, nameof(OrderVisitDetail.VisitId))]
public List OrderVisitDetails { get; set; }
///
/// 当前评价结果
///
[SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
public Kv? NowEvaluate { get; set; }
///
/// 是否可以处理
///
public bool IsCanHandle { get; set; }
///
/// 是否可以AI回访
///
public bool? IsCanAiVisit { get; set; }
///
/// 渠道为电话时,此字段存在
///
public string? CallId { get; set; }
///
/// 第一次电话回访拨打时间
///
public DateTime? FirstVisitTime { get; set; }
///
/// 最后一次电话回访拨打时间
///
public DateTime? LastVisitTime { get; set; }
///
/// 智能回访次数
///
[SugarColumn(DefaultValue = "0")]
public int AiVisitCount { get; set; }
///
/// 智能回访录音地址
///
public string? RecordUrl { get; set; }
///
/// 部门扭转
///
public bool? OrgJudge { get; set; }
///
/// 坐席扭转
///
public bool? SeatJudge { get; set; }
///
/// 评判状态
///
public EJudgeState? JudgeState { get; set; }
///
/// 评判意见
///
public string? JudgeContent { get; set; }
///
/// 评判人Id
///
public string? JudgeUserId { get; set; }
///
/// 评判人名称
///
public string? JudgeUserName { get; set; }
///
/// 评判时间
///
public DateTime? JudgeTime { get; set; }
///
/// 是否有效智能回访
///
public bool? IsEffectiveAiVisit { get; set; }
///
/// 是否批量回访
///
public bool? IsBatchVisit { get; set; }
///
/// 是否回访结果修改
///
public bool? IsUpdate { get; set; }
///
/// 语音段列表信息
///
[SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
public List? SentenceList { get; set; }
public void AiVisitTime()
{
LastVisitTime = DateTime.Now;
if (FirstVisitTime is null)
{
FirstVisitTime = LastVisitTime;
}
}
}