Library.cs 54 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230
  1. using OASystem.Domain.Dtos.Groups;
  2. using OASystem.Domain.Entities.Financial;
  3. using OASystem.Domain.Entities.Groups;
  4. using OASystem.Domain.ViewModels.CRM;
  5. using OASystem.Domain.ViewModels.Groups;
  6. using OASystem.Domain.ViewModels.QiYeWeChat;
  7. using OASystem.Infrastructure.Repositories.Groups;
  8. namespace OASystem.API.OAMethodLib.QiYeWeChatAPI.AppNotice
  9. {
  10. public static class AppNoticeLibrary
  11. {
  12. private static readonly IQiYeWeChatApiService _qiYeWeChatApiService = AutofacIocManager.Instance.GetService<IQiYeWeChatApiService>();
  13. private static readonly DelegationInfoRepository _grpDeleRep = AutofacIocManager.Instance.GetService<DelegationInfoRepository>();
  14. #region 获取企微Id
  15. public static List<string> GetQiyeChatUserIdList(List<string> userId)
  16. {
  17. List<string> result = new List<string>();
  18. try
  19. {
  20. foreach (string item in userId)
  21. {
  22. int uid = int.Parse(item);
  23. Sys_Users users = _grpDeleRep.Query<Sys_Users>(s => s.Id == uid).First();
  24. if (!string.IsNullOrEmpty(users.QiyeChatUserId))
  25. {
  26. result.Add(users.QiyeChatUserId);
  27. }
  28. }
  29. }
  30. catch (Exception ex)
  31. {
  32. }
  33. return result;
  34. }
  35. #endregion
  36. #region 确认出团
  37. /// <summary>
  38. /// 向指定群聊发送- 确认出团 -通知
  39. /// </summary>
  40. /// <param name="diId"></param>
  41. /// <param name="qwEnum"></param>
  42. /// <returns></returns>
  43. public static async Task<bool> SendChatMsg_GroupStatus_Create(int diId, QiyeWeChatEnum qwEnum)
  44. {
  45. Grp_DelegationInfo entity = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  46. string dateRange = string.Format(@"{0}至{1}", entity.VisitStartDate.ToString("yyyy-MM-dd"), entity.VisitEndDate.ToString("yyyy-MM-dd"));
  47. string grpTypeStr = (_grpDeleRep.Query<Sys_SetData>(s => s.Id == entity.TeamDid).First()).Name;
  48. GroupStatus_CreateModel info = new GroupStatus_CreateModel()
  49. {
  50. ClientName = entity.ClientName,
  51. ClientUnit = entity.ClientUnit,
  52. TeamName = entity.TeamName,
  53. VisitDays = entity.VisitDays,
  54. VisitPNumber = entity.VisitPNumber,
  55. VisitDateRange = dateRange,
  56. TeamDid_Text = grpTypeStr
  57. };
  58. string chatId = qwEnum.GetEnumDescription();
  59. //发送信息
  60. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.GroupStatus_Create(info));
  61. if (result.errcode != 0)
  62. {
  63. //抄送日志
  64. return false;
  65. }
  66. return true;
  67. }
  68. /// <summary>
  69. /// 向指定用户发送- 确认出团 -通知
  70. /// </summary>
  71. /// <param name="diId"></param>
  72. /// <param name="userId"></param>
  73. /// <returns></returns>
  74. public static async Task<bool> SendUserMsg_GroupStatus_Create(int diId, List<string> userId)
  75. {
  76. Grp_DelegationInfo entity = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  77. string dateRange = string.Format(@"{0}至{1}", entity.VisitStartDate.ToString("yyyy-MM-dd"), entity.VisitEndDate.ToString("yyyy-MM-dd"));
  78. string grpTypeStr = (_grpDeleRep.Query<Sys_SetData>(s => s.Id == entity.TeamDid).First()).Name;
  79. GroupStatus_CreateModel info = new GroupStatus_CreateModel()
  80. {
  81. ClientName = entity.ClientName,
  82. ClientUnit = entity.ClientUnit,
  83. TeamName = entity.TeamName,
  84. VisitDays = entity.VisitDays,
  85. VisitPNumber = entity.VisitPNumber,
  86. VisitDateRange = dateRange,
  87. TeamDid_Text = grpTypeStr
  88. };
  89. //发送信息
  90. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  91. if (qwUserIdList.Count > 0)
  92. {
  93. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.GroupStatus_Create(info));
  94. if (result.errcode != 0)
  95. {
  96. //抄送日志
  97. return false;
  98. }
  99. }
  100. return true;
  101. }
  102. #endregion
  103. #region 团组费用审核
  104. /// <summary>
  105. /// 向指定群聊发送- 费用申请 -通知
  106. /// </summary>
  107. /// <param name="Grp_CreditCardPaymentId"></param>
  108. /// <param name="sign"></param>
  109. /// <param name="qwEnum"></param>
  110. /// <returns></returns>
  111. public static async Task<bool> SendChatMsg_GroupStatus_ApplyFee(int Grp_CreditCardPaymentId, int sign, QiyeWeChatEnum qwEnum)
  112. {
  113. string chatId = qwEnum.GetEnumDescription();
  114. Grp_CreditCardPayment ccp = _grpDeleRep.Query<Grp_CreditCardPayment>(s => s.Id == Grp_CreditCardPaymentId).First();
  115. Grp_DelegationInfo group = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == ccp.DIId).First();
  116. Sys_SetData payMoneyCurrencySetData = _grpDeleRep.Query<Sys_SetData>(s => s.Id == ccp.PaymentCurrency).First();
  117. string priceStr = string.Format(@"{0} {1}", ccp.PayMoney, payMoneyCurrencySetData.Name);
  118. List<Grp_CreditCardPayment> entityList = _grpDeleRep
  119. .Query<Grp_CreditCardPayment>(s => s.DIId == ccp.DIId && s.IsDel == 0 && s.CreateUserId > 0 && s.IsAuditGM == 0)
  120. .ToList();
  121. GroupStatus_ApplyFeeModel info = new GroupStatus_ApplyFeeModel()
  122. {
  123. QueueCount = entityList.Count,
  124. TeamName = group.TeamName,
  125. Price = priceStr
  126. };
  127. if (sign == 2)
  128. {
  129. info.TitleStr = "[更新]一项费用待审核";
  130. }
  131. //CTable
  132. #region CTable
  133. if (ccp.CTable == 76)//76,酒店预订
  134. {
  135. Grp_HotelReservations _HotelReservations = _grpDeleRep.Query<Grp_HotelReservations>(s => s.Id == ccp.CId).First();
  136. info.CreateDt = _HotelReservations.CreateTime.ToString("yyyy-MM-dd HH:mm");
  137. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _HotelReservations.CreateUserId).First();
  138. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  139. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  140. info.PriceModule = "酒店预订";
  141. info.PriceName = _HotelReservations.HotelName;
  142. }
  143. else if (ccp.CTable == 79) //79://车/导游地接
  144. {
  145. Grp_CarTouristGuideGroundReservations _CarTouristGuideGroundReservations = _grpDeleRep.Query<Grp_CarTouristGuideGroundReservations>(s => s.Id == ccp.CId).First();
  146. info.CreateDt = _CarTouristGuideGroundReservations.CreateTime.ToString("yyyy-MM-dd HH:mm");
  147. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _CarTouristGuideGroundReservations.CreateUserId).First();
  148. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  149. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  150. info.PriceModule = "车/导游地接";
  151. info.PriceName = _CarTouristGuideGroundReservations.PriceName;
  152. }
  153. else if (ccp.CTable == 80) //签证
  154. {
  155. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  156. Grp_VisaInfo _VisaInfos = _grpDeleRep.Query<Grp_VisaInfo>(s => s.Id == ccp.CId).First();
  157. info.CreateDt = _VisaInfos.CreateTime.ToString("yyyy-MM-dd HH:mm");
  158. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _VisaInfos.CreateUserId).First();
  159. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  160. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  161. info.PriceModule = "签证";
  162. info.PriceName = getClientNameStr(clientNameList, _VisaInfos.VisaClient);
  163. }
  164. else if (ccp.CTable == 81)//邀请/公务活动
  165. {
  166. Grp_InvitationOfficialActivities _InvitationOfficialActivities = _grpDeleRep.Query<Grp_InvitationOfficialActivities>(s => s.Id == ccp.CId).First();
  167. info.CreateDt = _InvitationOfficialActivities.CreateTime.ToString("yyyy-MM-dd HH:mm");
  168. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _InvitationOfficialActivities.CreateUserId).First();
  169. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  170. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  171. info.PriceModule = "邀请/公务活动";
  172. info.PriceName = _InvitationOfficialActivities.InviterArea;
  173. }
  174. else if (ccp.CTable == 82)//团组客户保险
  175. {
  176. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  177. Grp_Customers _Customers = _grpDeleRep.Query<Grp_Customers>(s => s.Id == ccp.CId).First();
  178. info.CreateDt = _Customers.CreateTime.ToString("yyyy-MM-dd HH:mm");
  179. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _Customers.CreateUserId).First();
  180. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  181. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  182. info.PriceModule = "团组客户保险";
  183. info.PriceName = getClientNameStr(clientNameList, _Customers.ClientName);
  184. }
  185. else if (ccp.CTable == 85) //机票预订
  186. {
  187. Grp_AirTicketReservations _AirTicketReservations = _grpDeleRep.Query<Grp_AirTicketReservations>(s => s.Id == ccp.CId).First();
  188. info.CreateDt = _AirTicketReservations.CreateTime.ToString("yyyy-MM-dd HH:mm");
  189. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _AirTicketReservations.CreateUserId).First();
  190. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  191. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  192. info.PriceModule = "机票预订";
  193. info.PriceName = "(" + _AirTicketReservations.FlightsCode + ")";
  194. }
  195. else if (ccp.CTable == 98) //其他款项
  196. {
  197. Grp_DecreasePayments _DecreasePayments = _grpDeleRep.Query<Grp_DecreasePayments>(s => s.Id == ccp.CId).First();
  198. info.CreateDt = _DecreasePayments.CreateTime.ToString("yyyy-MM-dd HH:mm");
  199. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _DecreasePayments.CreateUserId).First();
  200. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  201. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  202. info.PriceModule = "其他款项";
  203. info.PriceName = _DecreasePayments.PriceName;
  204. }
  205. #endregion
  206. //发送信息
  207. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.GroupStatus_ApplyFee(info));
  208. if (result.errcode != 0)
  209. {
  210. //抄送日志
  211. return false;
  212. }
  213. return true;
  214. }
  215. /// <summary>
  216. /// 向财务群发送费用审核结果通知(审核通过条件下发送)
  217. /// </summary>
  218. /// <param name="Grp_CreditCardPaymentId"></param>
  219. /// <param name="qwEnum"></param>
  220. /// <returns></returns>
  221. public static async Task<bool> SendChatMsg_GroupStatus_AuditFee(int Grp_CreditCardPaymentId, QiyeWeChatEnum qwEnum)
  222. {
  223. string chatId = qwEnum.GetEnumDescription();
  224. Grp_CreditCardPayment ccp = _grpDeleRep.Query<Grp_CreditCardPayment>(s => s.Id == Grp_CreditCardPaymentId).First();
  225. Grp_DelegationInfo group = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == ccp.DIId).First();
  226. Sys_SetData payMoneyCurrencySetData = _grpDeleRep.Query<Sys_SetData>(s => s.Id == ccp.PaymentCurrency).First();
  227. string priceStr = string.Format(@"{0} {1}", ccp.PayMoney, payMoneyCurrencySetData.Name);
  228. AuditResult_ApplyFee_GroupModel info = new AuditResult_ApplyFee_GroupModel()
  229. {
  230. TeamName = group.TeamName,
  231. Price = priceStr,
  232. GMAuditDate = "-"
  233. };
  234. DateTime gmAuditDt;
  235. bool bGMAuditDt = DateTime.TryParse(ccp.AuditGMDate, out gmAuditDt);
  236. info.GMAuditDate = gmAuditDt.ToString("yyyy-MM-dd HH:mm");
  237. //CTable
  238. #region CTable
  239. if (ccp.CTable == 76)//76,酒店预订
  240. {
  241. Grp_HotelReservations _HotelReservations = _grpDeleRep.Query<Grp_HotelReservations>(s => s.Id == ccp.CId).First();
  242. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _HotelReservations.CreateUserId).First();
  243. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  244. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  245. info.PriceModule = "酒店预订";
  246. info.PriceName = _HotelReservations.HotelName;
  247. }
  248. else if (ccp.CTable == 79) //79://车/导游地接
  249. {
  250. Grp_CarTouristGuideGroundReservations _CarTouristGuideGroundReservations = _grpDeleRep.Query<Grp_CarTouristGuideGroundReservations>(s => s.Id == ccp.CId).First();
  251. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _CarTouristGuideGroundReservations.CreateUserId).First();
  252. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  253. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  254. info.PriceModule = "车/导游地接";
  255. info.PriceName = _CarTouristGuideGroundReservations.PriceName;
  256. }
  257. else if (ccp.CTable == 80) //签证
  258. {
  259. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  260. Grp_VisaInfo _VisaInfos = _grpDeleRep.Query<Grp_VisaInfo>(s => s.Id == ccp.CId).First();
  261. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _VisaInfos.CreateUserId).First();
  262. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  263. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  264. info.PriceModule = "签证";
  265. info.PriceName = getClientNameStr(clientNameList, _VisaInfos.VisaClient);
  266. }
  267. else if (ccp.CTable == 81)//邀请/公务活动
  268. {
  269. Grp_InvitationOfficialActivities _InvitationOfficialActivities = _grpDeleRep.Query<Grp_InvitationOfficialActivities>(s => s.Id == ccp.CId).First();
  270. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _InvitationOfficialActivities.CreateUserId).First();
  271. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  272. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  273. info.PriceModule = "邀请/公务活动";
  274. info.PriceName = _InvitationOfficialActivities.InviterArea;
  275. }
  276. else if (ccp.CTable == 82)//团组客户保险
  277. {
  278. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  279. Grp_Customers _Customers = _grpDeleRep.Query<Grp_Customers>(s => s.Id == ccp.CId).First();
  280. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _Customers.CreateUserId).First();
  281. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  282. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  283. info.PriceModule = "团组客户保险";
  284. info.PriceName = getClientNameStr(clientNameList, _Customers.ClientName);
  285. }
  286. else if (ccp.CTable == 85) //机票预订
  287. {
  288. Grp_AirTicketReservations _AirTicketReservations = _grpDeleRep.Query<Grp_AirTicketReservations>(s => s.Id == ccp.CId).First();
  289. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _AirTicketReservations.CreateUserId).First();
  290. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  291. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  292. info.PriceModule = "机票预订";
  293. info.PriceName = "(" + _AirTicketReservations.FlightsCode + ")";
  294. }
  295. else if (ccp.CTable == 98) //其他款项
  296. {
  297. Grp_DecreasePayments _DecreasePayments = _grpDeleRep.Query<Grp_DecreasePayments>(s => s.Id == ccp.CId).First();
  298. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _DecreasePayments.CreateUserId).First();
  299. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  300. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  301. info.PriceModule = "其他款项";
  302. info.PriceName = _DecreasePayments.PriceName;
  303. }
  304. #endregion
  305. //发送信息
  306. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.AuditResult_ApplyFee_Chat(info));
  307. if (result.errcode != 0)
  308. {
  309. //抄送日志
  310. return false;
  311. }
  312. return true;
  313. }
  314. /// <summary>
  315. /// 向指定用户发送-团组费用审核结果
  316. /// </summary>
  317. /// <param name="Grp_CreditCardPaymentId"></param>
  318. /// <param name="userId"></param>
  319. /// <param name="qwEnum"></param>
  320. /// <returns></returns>
  321. public static async Task<bool> SendUserMsg_GroupStatus_AuditFee(int Grp_CreditCardPaymentId, List<string> userId, QiyeWeChatEnum qwEnum)
  322. {
  323. Grp_CreditCardPayment ccp = _grpDeleRep.Query<Grp_CreditCardPayment>(s => s.Id == Grp_CreditCardPaymentId).First();
  324. Grp_DelegationInfo group = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == ccp.DIId).First();
  325. Sys_SetData payMoneyCurrencySetData = _grpDeleRep.Query<Sys_SetData>(s => s.Id == ccp.PaymentCurrency).First();
  326. string priceStr = string.Format(@"{0} {1}", ccp.PayMoney, payMoneyCurrencySetData.Name);
  327. AuditResult_ApplyFee_GroupModel info = new AuditResult_ApplyFee_GroupModel()
  328. {
  329. TeamName = group.TeamName,
  330. Price = priceStr,
  331. GMAuditDate = "-"
  332. };
  333. DateTime gmAuditDt;
  334. bool bGMAuditDt = DateTime.TryParse(ccp.AuditGMDate, out gmAuditDt);
  335. info.GMAuditDate = gmAuditDt.ToString("yyyy-MM-dd HH:mm");
  336. if (ccp.IsAuditGM == 2)
  337. {
  338. info.Result = "总经理审核未通过";
  339. info.ResultColor = "warning";
  340. }
  341. //CTable
  342. #region CTable
  343. if (ccp.CTable == 76)//76,酒店预订
  344. {
  345. Grp_HotelReservations _HotelReservations = _grpDeleRep.Query<Grp_HotelReservations>(s => s.Id == ccp.CId).First();
  346. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _HotelReservations.CreateUserId).First();
  347. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  348. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  349. info.PriceModule = "酒店预订";
  350. info.PriceName = _HotelReservations.HotelName;
  351. }
  352. else if (ccp.CTable == 79) //79://车/导游地接
  353. {
  354. Grp_CarTouristGuideGroundReservations _CarTouristGuideGroundReservations = _grpDeleRep.Query<Grp_CarTouristGuideGroundReservations>(s => s.Id == ccp.CId).First();
  355. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _CarTouristGuideGroundReservations.CreateUserId).First();
  356. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  357. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  358. info.PriceModule = "车/导游地接";
  359. info.PriceName = _CarTouristGuideGroundReservations.PriceName;
  360. }
  361. else if (ccp.CTable == 80) //签证
  362. {
  363. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  364. Grp_VisaInfo _VisaInfos = _grpDeleRep.Query<Grp_VisaInfo>(s => s.Id == ccp.CId).First();
  365. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _VisaInfos.CreateUserId).First();
  366. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  367. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  368. info.PriceModule = "签证";
  369. info.PriceName = getClientNameStr(clientNameList, _VisaInfos.VisaClient);
  370. }
  371. else if (ccp.CTable == 81)//邀请/公务活动
  372. {
  373. Grp_InvitationOfficialActivities _InvitationOfficialActivities = _grpDeleRep.Query<Grp_InvitationOfficialActivities>(s => s.Id == ccp.CId).First();
  374. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _InvitationOfficialActivities.CreateUserId).First();
  375. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  376. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  377. info.PriceModule = "邀请/公务活动";
  378. info.PriceName = _InvitationOfficialActivities.InviterArea;
  379. }
  380. else if (ccp.CTable == 82)//团组客户保险
  381. {
  382. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  383. Grp_Customers _Customers = _grpDeleRep.Query<Grp_Customers>(s => s.Id == ccp.CId).First();
  384. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _Customers.CreateUserId).First();
  385. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  386. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  387. info.PriceModule = "团组客户保险";
  388. info.PriceName = getClientNameStr(clientNameList, _Customers.ClientName);
  389. }
  390. else if (ccp.CTable == 85) //机票预订
  391. {
  392. Grp_AirTicketReservations _AirTicketReservations = _grpDeleRep.Query<Grp_AirTicketReservations>(s => s.Id == ccp.CId).First();
  393. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _AirTicketReservations.CreateUserId).First();
  394. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  395. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  396. info.PriceModule = "机票预订";
  397. info.PriceName = "(" + _AirTicketReservations.FlightsCode + ")";
  398. }
  399. else if (ccp.CTable == 98) //其他款项
  400. {
  401. Grp_DecreasePayments _DecreasePayments = _grpDeleRep.Query<Grp_DecreasePayments>(s => s.Id == ccp.CId).First();
  402. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _DecreasePayments.CreateUserId).First();
  403. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  404. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  405. info.PriceModule = "其他款项";
  406. info.PriceName = _DecreasePayments.PriceName;
  407. }
  408. #endregion
  409. //发送信息
  410. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  411. if (qwUserIdList.Count > 0)
  412. {
  413. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.AuditResult_ApplyFee_User(info));
  414. if (ccp.IsAuditGM == 1)
  415. {
  416. await SendChatMsg_GroupStatus_AuditFee(Grp_CreditCardPaymentId, qwEnum);
  417. }
  418. if (result.errcode != 0)
  419. {
  420. //抄送日志
  421. return false;
  422. }
  423. }
  424. return true;
  425. }
  426. /// <summary>
  427. /// 向指定用户发送-团组费用支付结果
  428. /// </summary>
  429. /// <param name="Grp_CreditCardPaymentId"></param>
  430. /// <param name="userId"></param>
  431. /// <returns></returns>
  432. public static async Task<bool> SendUserMsg_GroupStatus_PayResult(int Grp_CreditCardPaymentId, List<string> userId)
  433. {
  434. //, QiyeWeChatEnum qiyeWeChat
  435. Grp_CreditCardPayment ccp = _grpDeleRep.Query<Grp_CreditCardPayment>(s => s.Id == Grp_CreditCardPaymentId).First();
  436. Grp_DelegationInfo group = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == ccp.DIId).First();
  437. Sys_SetData payMoneyCurrencySetData = _grpDeleRep.Query<Sys_SetData>(s => s.Id == ccp.PaymentCurrency).First();
  438. string priceStr = string.Format(@"{0} {1}", ccp.PayMoney, payMoneyCurrencySetData.Name);
  439. PayResult_Group_ToUserModel info = new PayResult_Group_ToUserModel()
  440. {
  441. PayDt = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  442. Price = priceStr,
  443. TeamName = group.TeamName
  444. };
  445. #region CTable
  446. if (ccp.CTable == 76)//76,酒店预订
  447. {
  448. Grp_HotelReservations _HotelReservations = _grpDeleRep.Query<Grp_HotelReservations>(s => s.Id == ccp.CId).First();
  449. info.PriceModule = "酒店预订";
  450. info.PriceName = _HotelReservations.HotelName;
  451. }
  452. else if (ccp.CTable == 79) //79://车/导游地接
  453. {
  454. Grp_CarTouristGuideGroundReservations _CarTouristGuideGroundReservations = _grpDeleRep.Query<Grp_CarTouristGuideGroundReservations>(s => s.Id == ccp.CId).First();
  455. info.PriceModule = "车/导游地接";
  456. info.PriceName = _CarTouristGuideGroundReservations.PriceName;
  457. }
  458. else if (ccp.CTable == 80) //签证
  459. {
  460. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  461. Grp_VisaInfo _VisaInfos = _grpDeleRep.Query<Grp_VisaInfo>(s => s.Id == ccp.CId).First();
  462. info.PriceModule = "签证";
  463. info.PriceName = getClientNameStr(clientNameList, _VisaInfos.VisaClient);
  464. }
  465. else if (ccp.CTable == 81)//邀请/公务活动
  466. {
  467. Grp_InvitationOfficialActivities _InvitationOfficialActivities = _grpDeleRep.Query<Grp_InvitationOfficialActivities>(s => s.Id == ccp.CId).First();
  468. info.PriceModule = "邀请/公务活动";
  469. info.PriceName = _InvitationOfficialActivities.InviterArea;
  470. }
  471. else if (ccp.CTable == 82)//团组客户保险
  472. {
  473. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  474. Grp_Customers _Customers = _grpDeleRep.Query<Grp_Customers>(s => s.Id == ccp.CId).First();
  475. info.PriceModule = "团组客户保险";
  476. info.PriceName = getClientNameStr(clientNameList, _Customers.ClientName);
  477. }
  478. else if (ccp.CTable == 85) //机票预订
  479. {
  480. Grp_AirTicketReservations _AirTicketReservations = _grpDeleRep.Query<Grp_AirTicketReservations>(s => s.Id == ccp.CId).First();
  481. info.PriceModule = "机票预订";
  482. info.PriceName = "(" + _AirTicketReservations.FlightsCode + ")";
  483. }
  484. else if (ccp.CTable == 98) //其他款项
  485. {
  486. Grp_DecreasePayments _DecreasePayments = _grpDeleRep.Query<Grp_DecreasePayments>(s => s.Id == ccp.CId).First();
  487. info.PriceModule = "其他款项";
  488. info.PriceName = _DecreasePayments.PriceName;
  489. }
  490. #endregion
  491. //发送信息
  492. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  493. if (qwUserIdList.Count > 0)
  494. {
  495. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.PayResult_Group_ToUser(info));
  496. if (result.errcode != 0)
  497. {
  498. //抄送日志
  499. return false;
  500. }
  501. }
  502. return true;
  503. }
  504. #endregion
  505. #region 团组出发、结束提醒(财务群)
  506. public static async Task<bool> SendChatMsg_GroupRemindersToCaiwu(List<Grp_DelegationInfo> list_7day, List<Grp_DelegationInfo> list_3day, List<Grp_DelegationInfo> list_minus1day, QiyeWeChatEnum qwEnum)
  507. {
  508. string chatId = qwEnum.GetEnumDescription();
  509. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.GroupRemindersToCaiwuChat(list_7day, list_3day, list_minus1day));
  510. if (result.errcode != 0)
  511. {
  512. //抄送日志
  513. return false;
  514. }
  515. return true;
  516. }
  517. #endregion
  518. #region 团组结束提醒(国交群)
  519. public static async Task<bool> SendChatMsg_GroupRemindersToGuojiao(List<Grp_DelegationInfo> list_3day, QiyeWeChatEnum qwEnum)
  520. {
  521. string chatId = qwEnum.GetEnumDescription();
  522. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.GroupRemindersToGuojiao(list_3day));
  523. if (result.errcode != 0)
  524. {
  525. //抄送日志
  526. return false;
  527. }
  528. return true;
  529. }
  530. #endregion
  531. #region 团组出发提醒(HR)
  532. public static async Task<bool> SendUserMsg_DelegationVisit_ToHR(List<Grp_DelegationInfo> list_3day, List<string> userId)
  533. {
  534. //发送信息
  535. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  536. if (qwUserIdList.Count > 0)
  537. {
  538. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.GroupRemindersToHR(list_3day));
  539. if (result.errcode != 0)
  540. {
  541. //抄送日志
  542. return false;
  543. }
  544. }
  545. return true;
  546. }
  547. #endregion
  548. #region 市场部新增客户资源统计
  549. /// <summary>
  550. /// 周统计
  551. /// </summary>
  552. /// <param name="sourceList"></param>
  553. /// <param name="userId"></param>
  554. /// <param name="begin"></param>
  555. /// <param name="end"></param>
  556. /// <returns></returns>
  557. public static async Task<bool> SendUserMsg_CRMStatistics_ToHR(List<CRMWeekStatisticsView> sourceList, List<string> userId, string begin, string end)
  558. {
  559. //发送信息
  560. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  561. if (qwUserIdList.Count > 0)
  562. {
  563. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.CRMStatistics_ToUser(sourceList, begin, end));
  564. if (result.errcode != 0)
  565. {
  566. //抄送日志
  567. return false;
  568. }
  569. }
  570. return true;
  571. }
  572. /// <summary>
  573. /// 月统计
  574. /// </summary>
  575. /// <param name="sourceList"></param>
  576. /// <param name="userId"></param>
  577. /// <param name="begin"></param>
  578. /// <param name="end"></param>
  579. /// <param name="totalInsert"></param>
  580. /// <param name="totalDelete"></param>
  581. /// <returns></returns>
  582. public static async Task<bool> SendUserMsg_CRMStatistics_Month_ToHR(List<CRMWeekStatisticsView> sourceList, List<string> userId, string begin, string end, int totalInsert, int totalDelete)
  583. {
  584. //发送信息
  585. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  586. if (qwUserIdList.Count > 0)
  587. {
  588. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.CRMStatistics_Month_ToUser(sourceList, begin, end, totalInsert, totalDelete));
  589. if (result.errcode != 0)
  590. {
  591. //抄送日志
  592. return false;
  593. }
  594. }
  595. return true;
  596. }
  597. #endregion
  598. #region 日付申请审核
  599. /// <summary>
  600. /// 日付申请提交时推送财务群
  601. /// </summary>
  602. /// <param name="dailyPayId"></param>
  603. /// <param name="sign"></param>
  604. /// <param name="qwEnum"></param>
  605. /// <returns></returns>
  606. public static async Task<bool> DailyPayReminders_Create_ToCaiwuChat(int dailyPayId, int sign, QiyeWeChatEnum qwEnum)
  607. {
  608. string chatId = qwEnum.GetEnumDescription();
  609. Fin_DailyFeePayment fin_DailyFeePayment = _grpDeleRep.Query<Fin_DailyFeePayment>(s => s.Id == dailyPayId).First();
  610. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == fin_DailyFeePayment.CreateUserId).First();
  611. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  612. string users = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  613. string[] companyArr = new string[] { "未知", "成都泛美商务有限公司", "四川泛美交流有限公司", "成都纽茵教育科技有限公司", "成都鸿企中元科技有限公司", "测试公司1" };
  614. string companyStr = "未知";
  615. if (fin_DailyFeePayment.CompanyId < companyArr.Length)
  616. {
  617. companyStr = companyArr[fin_DailyFeePayment.CompanyId];
  618. }
  619. Sys_SetData sd_tansferType = _grpDeleRep.Query<Sys_SetData>(s => s.Id == fin_DailyFeePayment.TransferTypeId).First();
  620. Sys_SetData sd_priceType = _grpDeleRep.Query<Sys_SetData>(s => s.Id == fin_DailyFeePayment.PriceTypeId).First();
  621. string feeSignStr = string.Format(@"{0}-{1}", sd_tansferType.Name, sd_priceType?.Name ?? "");
  622. string priceStr = fin_DailyFeePayment.SumPrice.ToString("#0.00");
  623. DailyPayReminders_Create_ToCaiwuChatModel info = new DailyPayReminders_Create_ToCaiwuChatModel()
  624. {
  625. CreateDt = fin_DailyFeePayment.CreateTime.ToString("yyyy-MM-dd HH:mm"),
  626. CreateUser = users,
  627. Price = priceStr,
  628. Company = companyStr,
  629. FeeSign = feeSignStr,
  630. PriceName = fin_DailyFeePayment.Instructions
  631. };
  632. if (sign == 2) info.TitleStr = "[更新]一项费用待审核";
  633. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.DailyPayReminders_Create_ToCaiwuChat(info));
  634. if (result.errcode != 0)
  635. {
  636. //抄送日志
  637. return false;
  638. }
  639. return true;
  640. }
  641. /// <summary>
  642. /// 日付申请审核结果推送给申请人
  643. /// </summary>
  644. /// <param name="dailyPayId"></param>
  645. /// <param name="userId"></param>
  646. /// <param name="qwEnum"></param>
  647. /// <returns></returns>
  648. public static async Task<bool> DailyPayReminder_Audit_ToUser(int dailyPayId, List<string> userId, QiyeWeChatEnum qwEnum)
  649. {
  650. Fin_DailyFeePayment fin_DailyFeePayment = _grpDeleRep.Query<Fin_DailyFeePayment>(s => s.Id == dailyPayId).First();
  651. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == fin_DailyFeePayment.CreateUserId).First();
  652. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  653. string users = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  654. string priceStr = fin_DailyFeePayment.SumPrice.ToString("#0.00");
  655. DailyPayReminder_Audit_ToUserModel info = new DailyPayReminder_Audit_ToUserModel()
  656. {
  657. Price = priceStr,
  658. PriceName = fin_DailyFeePayment.Instructions
  659. };
  660. if (fin_DailyFeePayment.FAudit == 1)
  661. {
  662. info.AuditDate = fin_DailyFeePayment.MAuditDate.ToString("yyyy-MM-dd HH:mm");
  663. if (fin_DailyFeePayment.MAudit == 1)
  664. {
  665. info.Result = "你有一笔日付申请已通过审核";
  666. info.ResultColor = "info";
  667. //发送至财务群
  668. DailyPayReminder_Audit_ToCaiwuChatModel chatInfo = new DailyPayReminder_Audit_ToCaiwuChatModel()
  669. {
  670. AuditDate = info.AuditDate,
  671. CreateUser = users,
  672. Price = priceStr,
  673. PriceName = fin_DailyFeePayment.Instructions
  674. };
  675. string chatId = qwEnum.GetEnumDescription();
  676. await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.DailyPayReminder_Audit_ToCaiwuChat(chatInfo));
  677. }
  678. else if (fin_DailyFeePayment.MAudit == 2)
  679. {
  680. info.Result = "你有一笔日付申请未通过总经理审核";
  681. info.ResultColor = "warning";
  682. }
  683. }
  684. else if (fin_DailyFeePayment.FAudit == 2)
  685. {
  686. info.AuditDate = fin_DailyFeePayment.FAuditDate.ToString("yyyy-MM-dd HH:mm");
  687. info.Result = "你有一笔日付申请未通过财务审核";
  688. info.ResultColor = "warning";
  689. }
  690. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  691. if (qwUserIdList.Count > 0)
  692. {
  693. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.DailyPayReminder_Audit_ToUser(info));
  694. if (result.errcode != 0)
  695. {
  696. //抄送日志
  697. return false;
  698. }
  699. }
  700. return true;
  701. }
  702. /// <summary>
  703. /// 日付申请已付款推送给申请人
  704. /// </summary>
  705. /// <returns></returns>
  706. public static async Task<bool> DailyPayReminder_Pay_ToUser(int dailyPayId, List<string> userId)
  707. {
  708. Fin_DailyFeePayment fin_DailyFeePayment = _grpDeleRep.Query<Fin_DailyFeePayment>(s => s.Id == dailyPayId).First();
  709. string priceStr = fin_DailyFeePayment.SumPrice.ToString("#0.00");
  710. DailyPayReminder_Pay_ToUserModel info = new DailyPayReminder_Pay_ToUserModel()
  711. {
  712. PayDt = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  713. PriceName = fin_DailyFeePayment.Instructions,
  714. Price = priceStr
  715. };
  716. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  717. if (qwUserIdList.Count > 0)
  718. {
  719. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.DailyPayReminder_Pay_ToUser(info));
  720. if (result.errcode != 0)
  721. {
  722. //抄送日志
  723. return false;
  724. }
  725. }
  726. return true;
  727. }
  728. #endregion
  729. #region 费用保存发送消息
  730. #region 三公费用更改通知
  731. /// <summary>
  732. /// 三公费用更改通知发送总经理(21)
  733. /// </summary>
  734. /// <param name="diId"></param>
  735. /// <param name="receivedUserIds"></param>
  736. /// <param name="updateUserId"></param>
  737. /// <param name="url"></param>
  738. /// <returns></returns>
  739. public static async Task<bool> SendUserMsg_GroupShare_ToGM(int diId, List<string> receivedUserIds, int updateUserId, string url)
  740. {
  741. Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  742. GroupShare_ToGMModel info = new GroupShare_ToGMModel()
  743. {
  744. RefreshDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  745. TeamName = groupInfo.TeamName,
  746. CreateUser = _grpDeleRep.Query<Sys_Users>(s => s.Id == updateUserId).First()?.CnName ?? "-",
  747. Url = url
  748. };
  749. if (receivedUserIds.Count > 0)
  750. {
  751. List<string> qwUserIdList = GetQiyeChatUserIdList(receivedUserIds);
  752. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.GroupShare_ToGM(info));
  753. if (result.errcode != 0)
  754. {
  755. //抄送日志
  756. return false;
  757. }
  758. }
  759. return true;
  760. }
  761. /// <summary>
  762. /// 三公费用确认通知发送财务部人员
  763. /// </summary>
  764. /// <param name="diId"></param>
  765. /// <returns></returns>
  766. public static async Task<bool> SendUserMsg_GroupShare_ToFinance(int diId)
  767. {
  768. Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  769. GroupShare_ToUserModel info = new GroupShare_ToUserModel()
  770. {
  771. RefreshDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  772. TeamName = groupInfo.TeamName
  773. };
  774. List<string> receivedUserIds = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && s.DepId == 3).Select(x => x.Id.ToString()).ToList();
  775. var defaultUserIds = new List<string>() { "208", "233" };
  776. receivedUserIds.AddRange(defaultUserIds);
  777. if (receivedUserIds.Contains("150")) receivedUserIds.Remove("150");
  778. if (receivedUserIds.Count > 0)
  779. {
  780. List<string> qwUserIdList = GetQiyeChatUserIdList(receivedUserIds);
  781. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.GroupShare_ToFinance(info));
  782. if (result.errcode != 0)
  783. {
  784. //抄送日志
  785. return false;
  786. }
  787. }
  788. return true;
  789. }
  790. #endregion
  791. /// <summary>
  792. /// 机票行程代码录入变更通知发送国交经理、主管、王鸽
  793. /// </summary>
  794. /// <param name="diId"></param>
  795. /// <param name="operationId"></param>
  796. /// <returns></returns>
  797. public static async Task<bool> SendUserMsg_GroupShare_ToDP(int diId, int operationId)
  798. {
  799. Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  800. var operationName = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && s.Id == operationId).First()?.CnName ?? "Unknown";
  801. var defaultJobPostIds = new List<int>() { 22, 32 };
  802. List<string> receivedUserIds = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && s.DepId == 7 && defaultJobPostIds.Contains(s.JobPostId)).Select(x => x.Id.ToString()).ToList();
  803. var defaultUserIds = new List<string>() { "208", "233" };
  804. receivedUserIds.AddRange(defaultUserIds);
  805. if (receivedUserIds.Count > 0)
  806. {
  807. List<string> qwUserIdList = GetQiyeChatUserIdList(receivedUserIds);
  808. string resMsg = string.Format(@" `机票行程代码已调整更新通知`
  809. >团组:<font color='info'>{0}</font>
  810. >操作人员:<font color='comment'>{1}</font>
  811. >操作时间:<font color='comment'>{2}</font>
  812. [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", groupInfo.TeamName, operationName, DateTime.Now.ToString("yyyy-MM-dd HH:mm"));
  813. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, resMsg);
  814. if (result.errcode != 0)
  815. {
  816. //抄送日志
  817. return false;
  818. }
  819. }
  820. return true;
  821. }
  822. #region 公务出访数据变更发送通知
  823. /// <summary>
  824. /// 机票行程代码录入变更通知发送国交经理、主管、王鸽
  825. /// </summary>
  826. /// <param name="diId"></param>
  827. /// <param name="operationId"></param>
  828. /// <returns></returns>
  829. public static async Task<bool> SendUserMsg_GroupShare_ToOP(int diId, int operationId)
  830. {
  831. Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  832. var operationName = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && s.Id == operationId).First()?.CnName ?? "Unknown";
  833. var defaultJobPostIds = new List<int>();
  834. List<string> receivedUserIds = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && s.DepId == 7 && s.JobPostId == 28).Select(x => x.Id.ToString()).ToList();
  835. var defaultUserIds = new List<string>() { "208", "233" };
  836. receivedUserIds.AddRange(defaultUserIds);
  837. if (receivedUserIds.Count > 0)
  838. {
  839. List<string> qwUserIdList = GetQiyeChatUserIdList(receivedUserIds);
  840. string resMsg = string.Format(@" `公务出访有数据更新通知`
  841. >团组:<font color='info'>{0}</font>
  842. >操作人员:<font color='comment'>{1}</font>
  843. >操作时间:<font color='comment'>{2}</font>
  844. [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", groupInfo.TeamName, operationName, DateTime.Now.ToString("yyyy-MM-dd HH:mm"));
  845. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, resMsg);
  846. if (result.errcode != 0)
  847. {
  848. //抄送日志
  849. return false;
  850. }
  851. }
  852. return true;
  853. }
  854. #endregion
  855. #endregion
  856. #region 成本通知
  857. /// <summary>
  858. /// 成本通知发送给对应岗位用户
  859. /// </summary>
  860. /// <param name="diId"></param>
  861. /// <returns></returns>
  862. public static async Task<bool> SendUserMsg_GroupShare_ToJob(int diId)
  863. {
  864. Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  865. List<Sys_Users> list_user = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && (s.JobPostId == 24 || s.JobPostId == 25 || s.JobPostId == 28)).ToList();
  866. //List<Sys_Users> list_user = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && (s.JobPostId == 40 || s.JobPostId == 41)).ToList();
  867. List<string> userIds = new List<string>();
  868. list_user.ForEach(s => userIds.Add(s.Id.ToString()));
  869. List<string> qwUserIdList = GetQiyeChatUserIdList(userIds);
  870. GroupShare_ToUserModel info = new GroupShare_ToUserModel()
  871. {
  872. RefreshDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  873. TeamName = groupInfo.TeamName
  874. };
  875. if (qwUserIdList.Count > 0)
  876. {
  877. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.GroupShare_ToUser(info));
  878. if (result.errcode != 0)
  879. {
  880. //抄送日志
  881. return false;
  882. }
  883. }
  884. return true;
  885. }
  886. public static async Task<bool> SendUserMsg_blackAirInfo_ToVisaUser(int diId, List<CountryDataTime> arr)
  887. {
  888. Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  889. var visaUser = _grpDeleRep.Query<Sys_Users>(x => x.IsDel == 0 && x.JobPostId == 26)
  890. .Select(x => x.Id)
  891. .ToList();
  892. List<string> userIds = new List<string>() { "235" };
  893. userIds.AddRange(visaUser.Select(x => x.ToString()));
  894. List<string> qwUserIdList = GetQiyeChatUserIdList(userIds);
  895. BlackCodeInfo_ToVisaUser info = new BlackCodeInfo_ToVisaUser()
  896. {
  897. RefreshDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  898. TeamName = groupInfo.TeamName,
  899. info = arr
  900. };
  901. if (qwUserIdList.Count > 0)
  902. {
  903. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.BlackCodeInfo_ToVisaUser(info));
  904. if (result.errcode != 0)
  905. {
  906. //抄送日志
  907. return false;
  908. }
  909. }
  910. return true;
  911. }
  912. public static async Task<bool> SendUserMsg_GroupTimeInfo_ToVisaUser(int diId, string startTime, string endTime)
  913. {
  914. Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  915. var visaUser = _grpDeleRep.Query<Sys_Users>(x => x.IsDel == 0 && x.JobPostId == 26)
  916. .Select(x => x.Id)
  917. .ToList();
  918. List<string> userIds = new List<string>() { "235" };
  919. userIds.AddRange(visaUser.Select(x => x.ToString()));
  920. List<string> qwUserIdList = GetQiyeChatUserIdList(userIds);
  921. GroupDateTime_ToVisaUser info = new GroupDateTime_ToVisaUser()
  922. {
  923. RefreshDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  924. TeamName = groupInfo.TeamName,
  925. EndTime = endTime,
  926. StartTime = startTime,
  927. };
  928. if (qwUserIdList.Count > 0)
  929. {
  930. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.GroupDateTime_ToVisaUser(info));
  931. if (result.errcode != 0)
  932. {
  933. //抄送日志
  934. return false;
  935. }
  936. }
  937. return true;
  938. }
  939. #endregion
  940. #region 任务通知
  941. /// <summary>
  942. /// 任务通知
  943. /// </summary>
  944. /// <param name="userIds"></param>
  945. /// <param name="groupId"></param>
  946. /// <param name="title"></param>
  947. /// <param name="currUserId"></param>
  948. /// <returns></returns>
  949. public static async Task<bool> SendUserMsg_Task_ToUser(List<string> userIds, int groupId, string title, int currUserId)
  950. {
  951. List<string> qwUserIdList = GetQiyeChatUserIdList(userIds);
  952. if (qwUserIdList.Any())
  953. {
  954. var groupName = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.IsDel == 0 && s.Id == groupId).First()?.TeamName ?? "未选择";
  955. var userName = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && s.Id == currUserId).First()?.CnName ?? "Unknown";
  956. var model = new TaskAssignment_Create_ToUserModel()
  957. {
  958. GroupName = groupName,
  959. Title = title,
  960. CreateUser = userName,
  961. RefreshDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm")
  962. };
  963. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.TaskAssignment_Create_ToUser(model));
  964. if (result.errcode != 0)
  965. {
  966. //抄送日志
  967. return false;
  968. }
  969. }
  970. return true;
  971. }
  972. #endregion
  973. #region Helper
  974. private static string getClientNameStr(List<SimplClientInfo> list, string origin)
  975. {
  976. string result = origin;
  977. if (Regex.Match(origin, @"\d+,?").Value.Length > 0)
  978. {
  979. string[] temparr = origin.Split(',');
  980. string fistrStr = temparr[0];
  981. int count = temparr.Count();
  982. int tempId;
  983. bool success = int.TryParse(fistrStr, out tempId);
  984. if (success)
  985. {
  986. SimplClientInfo tempInfo = list.FirstOrDefault(s => s.Id == tempId);
  987. if (tempInfo != null)
  988. {
  989. if (count > 1)
  990. {
  991. result = string.Format(@"{0}{1}等{2}人", tempInfo.LastName, tempInfo.FirstName, count);
  992. }
  993. else
  994. {
  995. result = string.Format(@"{0}{1}", tempInfo.LastName, tempInfo.FirstName);
  996. }
  997. }
  998. }
  999. }
  1000. return result;
  1001. }
  1002. private static List<SimplClientInfo> getSimplClientList(int diId)
  1003. {
  1004. string sql = string.Format("select b.Id,b.Pinyin,b.lastName,b.firstName,b.phone from Grp_TourClientList a, Crm_DeleClient b where a.clientid = b.id and a.isdel = 0 and a.diid = {0}", diId);
  1005. List<SimplClientInfo> arr = _grpDeleRep._sqlSugar.SqlQueryable<SimplClientInfo>(sql).ToList();
  1006. return arr;
  1007. }
  1008. #endregion
  1009. }
  1010. }