using OASystem.Domain.Dtos.Groups; using OASystem.Domain.Entities.Groups; using OASystem.Domain.ViewModels.CRM; using System.ComponentModel; namespace OASystem.API.OAMethodLib.QiYeWeChatAPI.AppNotice { public enum QiyeWeChatEnum { /// <summary> /// 测试用 /// </summary> [Description("groupstatuschat01")] TestChat = 0, /// <summary> /// 团组通知-公司客户群(国交部经理、主管、财务部),发送条件(1.确认出团) /// </summary> [Description("CompanyCRMChat01")] CompanyCRMChat = 1, /// <summary> /// 团组通知-市场客户群(市场部经理、主管;国交部经理、主管)发送条件(1.确认出团) 暂时不用 /// </summary> [Description("MarketCRMChat01")] MarketCRMChat, /// <summary> /// 团组通知-财务群(财务部全员),发送条件(1.费用审核-通过;2,团组出访时间出发-7 天,结束-3 天,通知财务三人签合同、收尾款) /// </summary> [Description("CaiWuChat01")] CaiWuChat, /// <summary> /// 团组通知-财务群(财务部全员),发送条件(团组出访时间出发-7 天,结束-3 天,第二天,通知财务三人签合同、收尾款) /// </summary> [Description("CaiWuChat02")] CaiWuChat02, /// <summary> /// 团组通知-国交管理群(国交部经理、主管),发送条件(1.费用审核-提交) /// </summary> [Description("GuoJiaoLeader01")] GuoJiaoLeaderChat, /// <summary> /// 团组通知-国交群(3天内结束行程) /// </summary> [Description("GuoJiaoChat01")] GuoJiaoChat01, } public class MarkdownLib { /// <summary> /// 通知文本-确认出团 /// </summary> /// <param name="info"></param> /// <returns></returns> public static string GroupStatus_Create(GroupStatus_CreateModel info) { string result = string.Format(@" `确认出团` >团组名称:<font color='info'>{0}</font> >团组类型:{1} >出访日期:<font color='comment'>{2}</font> >出访人数/天数:{3}人/{4}天 >客户单位:{5} >客户名称:{6} [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", info.TeamName, info.TeamDid_Text, info.VisitDateRange, info.VisitPNumber, info.VisitDays, info.ClientUnit, info.ClientName); return result; } /// <summary> /// 通知文本-费用申请 /// </summary> /// <returns></returns> public static string GroupStatus_ApplyFee(GroupStatus_ApplyFeeModel info) { string result = string.Format(@" `团组费用录入` >团组:<font color='info'>{0}</font> <font color='comment'>- </font>{7} >费用模块:{1} >费用名称:<font color='warning'>{2}</font> >付款金额:<font color='warning'>{3}</font> >申请人:{4} >申请时间:<font color='comment'>{5}</font> <font color='comment'>- </font>当前团组费用待审核数量: {6} [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", info.TeamName, info.PriceModule, info.PriceName, info.Price, info.CreateUser, info.CreateDt, info.QueueCount, info.TitleStr); return result; } /// <summary> /// 费用审核通知-团组费用-群聊 /// </summary> /// <param name="info"></param> /// <returns></returns> public static string AuditResult_ApplyFee_Chat(AuditResult_ApplyFee_GroupModel info) { string result = string.Format(@" `{0}` <font color='{1}'>{2}</font> >审核时间:<font color='comment'>{8}</font> >团组:{3} >费用模块:{4} >费用名称:<font color='warning'>{5}</font> >付款金额:<font color='warning'>{6}</font> >申请人:{7} [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", info.Title, info.ResultColor, info.Result, info.TeamName, info.PriceModule, info.PriceName, info.Price, info.CreateUser, info.GMAuditDate); return result; } /// <summary> /// 费用审核通知-团组费用-用户 /// </summary> /// <param name="info"></param> /// <returns></returns> public static string AuditResult_ApplyFee_User(AuditResult_ApplyFee_GroupModel info) { string result = string.Format(@" `{0}` <font color='{1}'>{2}</font> >审核时间:<font color='comment'>{7}</font> >团组:{3} >费用模块:{4} >费用名称:<font color='warning'>{5}</font> >付款金额:<font color='warning'>{6}</font> [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", info.Title, info.ResultColor, info.Result, info.TeamName, info.PriceModule, info.PriceName, info.Price, info.GMAuditDate); return result; } /// <summary> /// 费用支付通知-团组费用-用户 /// </summary> /// <param name="info"></param> /// <returns></returns> public static string PayResult_Group_ToUser(PayResult_Group_ToUserModel info) { string result = string.Format(@" `团组费用支付` >团组:{0} >费用模块:{1} >费用名称:<font color='warning'>{2}</font> >付款金额:<font color='warning'>{3}</font> ><font color='info'>该笔费用已支付</font> >支付时间:<font color='comment'>{4}</font> [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", info.TeamName, info.PriceModule, info.PriceName, info.Price, info.PayDt); return result; } /// <summary> /// 团组出发前一周提醒财务检查合同、尾款 /// </summary> /// <returns></returns> public static string GroupRemindersToGuojiao(List<Grp_DelegationInfo> list_3day) { string teamNames2 = "><font color='comment'>暂无</font>"; if (list_3day.Count > 0) { teamNames2 = ""; foreach (var item in list_3day) { string endDt = item.VisitEndDate.ToString("yyyy-MM-dd"); teamNames2 += ">(" + endDt + ")" + item.TeamName + " \n\n"; } //list_3day.ForEach(s => teamNames2 += ">" + s.TeamName + "\n\n"); } string result = string.Format(@" `团组行程结束提醒` ><font color='warning'> - 下列团组将于3天内结束:</font> {0} <font color='info'>请各位注意检查业务费用是否录入完整</font> [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", teamNames2); return result; } /// <summary> /// 团组出发前一周提醒HR /// </summary> /// <returns></returns> public static string GroupRemindersToHR(List<Grp_DelegationInfo> list_7day) { string teamNames2 = "><font color='comment'>暂无</font>"; if (list_7day.Count > 0) { teamNames2 = ""; foreach (var item in list_7day) { string startDt = item.VisitStartDate.ToString("yyyy-MM-dd"); teamNames2 += ">(" + startDt + ")" + item.TeamName + " \n\n"; } } string result = string.Format(@" `团组行程提醒` ><font color='warning'> - 下列团组将于7天内出发:</font> {0} [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", teamNames2); return result; } /// <summary> /// 团组出发前一周提醒财务检查合同、尾款 /// </summary> /// <returns></returns> public static string GroupRemindersToCaiwuChat(List<Grp_DelegationInfo> list_7day, List<Grp_DelegationInfo> list_3day, List<Grp_DelegationInfo> list_minus1day) { string teamNames1 = "><font color='comment'>暂无</font>"; string teamNames2 = "><font color='comment'>暂无</font>"; string teamNames3 = "><font color='comment'>暂无</font>"; if (list_7day.Count > 0) { teamNames1 = ""; foreach (var item in list_7day) { string startDt = item.VisitStartDate.ToString("yyyy-MM-dd"); teamNames1 += ">(" + startDt + ")" + item.TeamName + " \n\n"; } //list_7day.ForEach(s => teamNames1 += ">" + s.TeamName + "\n\n"); } if (list_3day.Count > 0) { teamNames2 = ""; foreach (var item in list_3day) { string endDt = item.VisitEndDate.ToString("yyyy-MM-dd"); teamNames2 += ">(" + endDt + ")" + item.TeamName + " \n\n"; } //list_3day.ForEach(s => teamNames2 += ">" + s.TeamName + "\n\n"); } if (list_minus1day.Count > 0) { teamNames3 = ""; foreach (var item in list_minus1day) { string endDt = item.VisitEndDate.ToString("yyyy-MM-dd"); teamNames3 += ">(" + endDt + ")" + item.TeamName + " \n\n"; } } string result = string.Format(@" `团组状态提醒` ><font color='warning'> - 下列团组将于7天内出发:</font> {0} ><font color='warning'> - 下列团组将于3天内结束:</font> {1} ><font color='warning'> - 下列团组已于昨日结束行程:</font> {2} <font color='info'>请注意检查合同、尾款状态</font> [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", teamNames1, teamNames2, teamNames3); return result; } /// <summary> /// 日付申请提交时推送财务群 /// </summary> /// <returns></returns> public static string DailyPayReminders_Create_ToCaiwuChat(DailyPayReminders_Create_ToCaiwuChatModel info) { string result = string.Format(@" `日付申请录入` <font color='comment'>- </font>{6} >费用名称:<font color='warning'>{0}</font> >公司:<font color='comment'>{5}</font> >费用标识:<font color='comment'>{4}</font> >付款金额:<font color='warning'>{1}</font> >申请人:{2} >申请时间:<font color='comment'>{3}</font> [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", info.PriceName, info.Price, info.CreateUser, info.CreateDt, info.FeeSign, info.Company, info.TitleStr); return result; } /// <summary> /// 日付申请审核结果推送给申请人 /// </summary> /// <returns></returns> public static string DailyPayReminder_Audit_ToUser(DailyPayReminder_Audit_ToUserModel info) { string result = string.Format(@" `日付申请` <font color='{0}'>{1}</font> >费用名称:{2} >付款金额:<font color='warning'>{3}</font> >审核时间:<font color='comment'>{4}</font> ", info.ResultColor, info.Result, info.PriceName, info.Price, info.AuditDate); return result; } /// <summary> /// 日付申请审核结果推送给财务群(总经理审核通过) /// </summary> /// <returns></returns> public static string DailyPayReminder_Audit_ToCaiwuChat(DailyPayReminder_Audit_ToCaiwuChatModel info) { string result = string.Format(@" `日付申请` <font color='info'> - 新增一笔通过总经理审核的日付申请</font> >费用名称:{0} >付款金额:<font color='warning'>{1}</font> >申请人:{2} >审核时间:<font color='comment'>{3}</font> ", info.PriceName, info.Price, info.CreateUser, info.AuditDate); return result; } /// <summary> /// 日付申请已付款推送给申请人 /// </summary> /// <returns></returns> public static string DailyPayReminder_Pay_ToUser(DailyPayReminder_Pay_ToUserModel info) { string result = string.Format(@" `日付申请` <font color='info'>你有一笔日付申请费用已付款</font> >费用名称:{0} >付款金额:<font color='warning'>{1}</font> >支付时间:<font color='comment'>{2}</font> ", info.PriceName, info.Price, info.PayDt); return result; } /// <summary> /// 成本通知发送给用户 /// </summary> /// <returns></returns> public static string GroupShare_ToUser(GroupShare_ToUserModel info) { string result = string.Format(@" `成本通知` <font color='info'>团组成本费用已更新</font> >团组名称:{0} >更新时间:<font color='warning'>{1}</font> ><font color='comment'>请注意在费用录入页面中核对成本信息</font> ><font color='comment'>若无对应团组权限请联系国交部经理或信息部人员</font> ", info.TeamName, info.RefreshDate); return result; } /// <summary> /// 出入境费用明细更改通知发送给用户 /// </summary> /// <returns></returns> public static string GroupShare_ToGM(GroupShare_ToGMModel info) { string result = string.Format(@" `出入境费用明细操作通知` >团组:<font color='info'>{0}</font> >操作人员:{1} >操作时间:<font color='comment'>{2}</font> [请点击进入明细进行查看或确认]({3}) ", info.TeamName, info.CreateUser, info.RefreshDate, info.Url); return result; } /// <summary> /// 出入境费用 确认 通知发送给 财务相关人员 /// </summary> /// <returns></returns> public static string GroupShare_ToFinance(GroupShare_ToUserModel info) { string result = string.Format(@" `出入境费用确认操作通知` >团组:<font color='info'>{0}</font> >操作时间:<font color='comment'>{1}</font> [出入境费用已确认,请进行相关流程操作。] ", info.TeamName, info.RefreshDate); return result; } /// <summary> /// CRM统计通知(周) /// </summary> /// <param name="list"></param> /// <param name="beginDt"></param> /// <param name="endDt"></param> /// <returns></returns> public static string CRMStatistics_ToUser(List<CRMWeekStatisticsView> list, string beginDt, string endDt) { string users = "暂无"; if (list.Count > 0) { users = ""; foreach (var item in list) { users += ">【" + item.UserName + "】 - 新增 " + item.InsertNum + " 条,删除 " + item.DeleteNum + " 条\n\n"; } } string result = string.Format(@" `市场客户资料周统计({0} - {1})` {2} [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", beginDt, endDt, users); return result; } /// <summary> /// CRM统计通知(月) /// </summary> /// <param name="list"></param> /// <param name="beginDt"></param> /// <param name="endDt"></param> /// <param name="totalInsert"></param> /// <param name="totalDelete"></param> /// <returns></returns> public static string CRMStatistics_Month_ToUser(List<CRMWeekStatisticsView> list, string beginDt, string endDt, int totalInsert, int totalDelete) { string users = "暂无"; if (list.Count > 0) { users = ""; foreach (var item in list) { users += ">【" + item.UserName + "】 - 新增 " + item.InsertNum + " 条,删除 " + item.DeleteNum + " 条\n\n"; } } string result = string.Format(@" `市场客户资料月统计({0} - {1})` > 总共 - 新增 <font color='info'>{3}</font> 条,删除 <font color='warning'> {4}</font> 条 {2} [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", beginDt, endDt, users, totalInsert, totalDelete); return result; } public static string BlackCodeInfo_ToVisaUser(BlackCodeInfo_ToVisaUser info) { string result = string.Format(@" `国家出入时间通知` <font color='info'>详细时间</font> >团组名称:{0} >更新时间:<font color='warning'>{1}</font> ", info.TeamName, info.RefreshDate); foreach (var item in info.info) { var black = string.Empty; for (int i = 0; i < item.Country.Length; i++) { black += " "; } black += " "; result += $@" ><font color='comment'>{item.Country}-抵达:{item.StartTime.ToString("yyyy-MM-dd HH:mm")}</font> ><font color='comment'>{black}离开:{item.EndTime.ToString("yyyy-MM-dd HH:mm")}</font>"; } return result; } public static string GroupDateTime_ToVisaUser(GroupDateTime_ToVisaUser info) { string result = string.Format(@" `团组时间通知` <font color='info'>详细时间</font> >团组名称:{0} >更新时间:<font color='warning'>{1}</font> ><font color='comment'>开始时间:{2}</font> ><font color='comment'>结束时间:{3}</font> ", info.TeamName, info.RefreshDate, info.StartTime, info.EndTime); return result; } /// <summary> /// 任务创建推送给归属人 /// </summary> /// <returns></returns> public static string TaskAssignment_Create_ToUser(TaskAssignment_Create_ToUserModel dto) { string result = string.Format(@" `任务分配通知` >团组:<font color='info'>{0}</font> <font color='info'>{1}</font> >操作人员:{2} >操作时间:<font color='comment'>{3}</font> [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", dto.GroupName, dto.Title, dto.CreateUser, dto.RefreshDate); return result; } } #region 实体类 public class TaskAssignment_Create_ToUserModel { public string GroupName { get; set; } public string Title { get; set; } public string RefreshDate { get; set; } public string CreateUser { get; set; } } public class GroupShare_ToGMModel : GroupShare_ToUserModel { public string CreateUser { get; set; } public string Url { get; set; } } public class GroupShare_ToUserModel { public string TeamName { get; set; } public string RefreshDate { get; set; } } public class DailyPayReminder_Pay_ToUserModel { public string PriceName { get; set; } public string Price { get; set; } public string PayDt { get; set; } } public class DailyPayReminder_Audit_ToCaiwuChatModel { public string PriceName { get; set; } public string Price { get; set; } public string CreateUser { get; set; } public string AuditDate { get; set; } } public class DailyPayReminder_Audit_ToUserModel { public string ResultColor { get; set; } = "info"; //warning public string Result { get; set; } = "你有一笔日付申请已通过审核"; // 你有一笔日付申请未通过财务/总经理审核 public string PriceName { get; set; } public string Price { get; set; } /// <summary> /// 财务或总经理审核时间 /// </summary> public string AuditDate { get; set; } } public class DailyPayReminders_Create_ToCaiwuChatModel { public string PriceName { get; set; } public string Price { get; set; } public string CreateUser { get; set; } public string CreateDt { get; set; } public string FeeSign { get; set; } public string Company { get; set; } /// <summary> /// [更新]一项费用待审核 /// </summary> public string TitleStr { get; set; } = "[新增]一项费用待审核"; } public class PayResult_Group_ToUserModel { public string TeamName { get; set; } public string PriceModule { get; set; } public string PriceName { get; set; } public string Price { get; set; } public string PayDt { get; set; } } public class AuditResult_ApplyFee_GroupModel { public string Title { get; set; } = "团组费用审核结果"; public string ResultColor { get; set; } = "info"; //info 或 warning public string Result { get; set; } = "总经理审核通过"; //总经理审核通过 或 总经理审核未通过 public string TeamName { get; set; } public string PriceModule { get; set; } public string PriceName { get; set; } public string Price { get; set; } public string CreateUser { get; set; } public string GMAuditDate { get; set; } } public class GroupStatus_ApplyFeeModel { public string TeamName { get; set; } public string PriceModule { get; set; } public string PriceName { get; set; } public string Price { get; set; } public string CreateUser { get; set; } public string CreateDt { get; set; } public int QueueCount { get; set; } /// <summary> /// [更新]一项费用待审核 /// </summary> public string TitleStr { get; set; } = "[新增]一项费用待审核"; } public class GroupStatus_CreateModel { public string TeamName { get; set; } public string TeamDid_Text { get; set; } public string VisitDateRange { get; set; } public int VisitPNumber { get; set; } public int VisitDays { get; set; } public string ClientUnit { get; set; } public string ClientName { get; set; } } public class BlackCodeInfo_ToVisaUser { public string TeamName { get; set; } public List<CountryDataTime> info { get; set; } public string RefreshDate { get; set; } } public class GroupDateTime_ToVisaUser { public string TeamName { get; set; } public string RefreshDate { get; set; } public string StartTime { get; set; } public string EndTime { get; set; } } #endregion }