Library.cs 52 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199
  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. /// <returns></returns>
  320. public static async Task<bool> SendUserMsg_GroupStatus_AuditFee(int Grp_CreditCardPaymentId, List<string> userId, QiyeWeChatEnum qwEnum)
  321. {
  322. Grp_CreditCardPayment ccp = _grpDeleRep.Query<Grp_CreditCardPayment>(s => s.Id == Grp_CreditCardPaymentId).First();
  323. Grp_DelegationInfo group = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == ccp.DIId).First();
  324. Sys_SetData payMoneyCurrencySetData = _grpDeleRep.Query<Sys_SetData>(s => s.Id == ccp.PaymentCurrency).First();
  325. string priceStr = string.Format(@"{0} {1}", ccp.PayMoney, payMoneyCurrencySetData.Name);
  326. AuditResult_ApplyFee_GroupModel info = new AuditResult_ApplyFee_GroupModel()
  327. {
  328. TeamName = group.TeamName,
  329. Price = priceStr,
  330. GMAuditDate = "-"
  331. };
  332. DateTime gmAuditDt;
  333. bool bGMAuditDt = DateTime.TryParse(ccp.AuditGMDate, out gmAuditDt);
  334. info.GMAuditDate = gmAuditDt.ToString("yyyy-MM-dd HH:mm");
  335. if (ccp.IsAuditGM == 2)
  336. {
  337. info.Result = "总经理审核未通过";
  338. info.ResultColor = "warning";
  339. }
  340. //CTable
  341. #region CTable
  342. if (ccp.CTable == 76)//76,酒店预订
  343. {
  344. Grp_HotelReservations _HotelReservations = _grpDeleRep.Query<Grp_HotelReservations>(s => s.Id == ccp.CId).First();
  345. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _HotelReservations.CreateUserId).First();
  346. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  347. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  348. info.PriceModule = "酒店预订";
  349. info.PriceName = _HotelReservations.HotelName;
  350. }
  351. else if (ccp.CTable == 79) //79://车/导游地接
  352. {
  353. Grp_CarTouristGuideGroundReservations _CarTouristGuideGroundReservations = _grpDeleRep.Query<Grp_CarTouristGuideGroundReservations>(s => s.Id == ccp.CId).First();
  354. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _CarTouristGuideGroundReservations.CreateUserId).First();
  355. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  356. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  357. info.PriceModule = "车/导游地接";
  358. info.PriceName = _CarTouristGuideGroundReservations.PriceName;
  359. }
  360. else if (ccp.CTable == 80) //签证
  361. {
  362. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  363. Grp_VisaInfo _VisaInfos = _grpDeleRep.Query<Grp_VisaInfo>(s => s.Id == ccp.CId).First();
  364. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _VisaInfos.CreateUserId).First();
  365. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  366. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  367. info.PriceModule = "签证";
  368. info.PriceName = getClientNameStr(clientNameList, _VisaInfos.VisaClient);
  369. }
  370. else if (ccp.CTable == 81)//邀请/公务活动
  371. {
  372. Grp_InvitationOfficialActivities _InvitationOfficialActivities = _grpDeleRep.Query<Grp_InvitationOfficialActivities>(s => s.Id == ccp.CId).First();
  373. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _InvitationOfficialActivities.CreateUserId).First();
  374. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  375. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  376. info.PriceModule = "邀请/公务活动";
  377. info.PriceName = _InvitationOfficialActivities.InviterArea;
  378. }
  379. else if (ccp.CTable == 82)//团组客户保险
  380. {
  381. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  382. Grp_Customers _Customers = _grpDeleRep.Query<Grp_Customers>(s => s.Id == ccp.CId).First();
  383. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _Customers.CreateUserId).First();
  384. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  385. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  386. info.PriceModule = "团组客户保险";
  387. info.PriceName = getClientNameStr(clientNameList, _Customers.ClientName);
  388. }
  389. else if (ccp.CTable == 85) //机票预订
  390. {
  391. Grp_AirTicketReservations _AirTicketReservations = _grpDeleRep.Query<Grp_AirTicketReservations>(s => s.Id == ccp.CId).First();
  392. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _AirTicketReservations.CreateUserId).First();
  393. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  394. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  395. info.PriceModule = "机票预订";
  396. info.PriceName = "(" + _AirTicketReservations.FlightsCode + ")";
  397. }
  398. else if (ccp.CTable == 98) //其他款项
  399. {
  400. Grp_DecreasePayments _DecreasePayments = _grpDeleRep.Query<Grp_DecreasePayments>(s => s.Id == ccp.CId).First();
  401. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _DecreasePayments.CreateUserId).First();
  402. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  403. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  404. info.PriceModule = "其他款项";
  405. info.PriceName = _DecreasePayments.PriceName;
  406. }
  407. #endregion
  408. //发送信息
  409. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  410. if (qwUserIdList.Count > 0)
  411. {
  412. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.AuditResult_ApplyFee_User(info));
  413. if (ccp.IsAuditGM == 1)
  414. {
  415. await SendChatMsg_GroupStatus_AuditFee(Grp_CreditCardPaymentId, qwEnum);
  416. }
  417. if (result.errcode != 0)
  418. {
  419. //抄送日志
  420. return false;
  421. }
  422. }
  423. return true;
  424. }
  425. /// <summary>
  426. /// 向指定用户发送-团组费用支付结果
  427. /// </summary>
  428. /// <param name="Grp_CreditCardPaymentId"></param>
  429. /// <param name="userId"></param>
  430. /// <returns></returns>
  431. public static async Task<bool> SendUserMsg_GroupStatus_PayResult(int Grp_CreditCardPaymentId, List<string> userId)
  432. {
  433. //, QiyeWeChatEnum qiyeWeChat
  434. Grp_CreditCardPayment ccp = _grpDeleRep.Query<Grp_CreditCardPayment>(s => s.Id == Grp_CreditCardPaymentId).First();
  435. Grp_DelegationInfo group = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == ccp.DIId).First();
  436. Sys_SetData payMoneyCurrencySetData = _grpDeleRep.Query<Sys_SetData>(s => s.Id == ccp.PaymentCurrency).First();
  437. string priceStr = string.Format(@"{0} {1}", ccp.PayMoney, payMoneyCurrencySetData.Name);
  438. PayResult_Group_ToUserModel info = new PayResult_Group_ToUserModel()
  439. {
  440. PayDt = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  441. Price = priceStr,
  442. TeamName = group.TeamName
  443. };
  444. #region CTable
  445. if (ccp.CTable == 76)//76,酒店预订
  446. {
  447. Grp_HotelReservations _HotelReservations = _grpDeleRep.Query<Grp_HotelReservations>(s => s.Id == ccp.CId).First();
  448. info.PriceModule = "酒店预订";
  449. info.PriceName = _HotelReservations.HotelName;
  450. }
  451. else if (ccp.CTable == 79) //79://车/导游地接
  452. {
  453. Grp_CarTouristGuideGroundReservations _CarTouristGuideGroundReservations = _grpDeleRep.Query<Grp_CarTouristGuideGroundReservations>(s => s.Id == ccp.CId).First();
  454. info.PriceModule = "车/导游地接";
  455. info.PriceName = _CarTouristGuideGroundReservations.PriceName;
  456. }
  457. else if (ccp.CTable == 80) //签证
  458. {
  459. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  460. Grp_VisaInfo _VisaInfos = _grpDeleRep.Query<Grp_VisaInfo>(s => s.Id == ccp.CId).First();
  461. info.PriceModule = "签证";
  462. info.PriceName = getClientNameStr(clientNameList, _VisaInfos.VisaClient);
  463. }
  464. else if (ccp.CTable == 81)//邀请/公务活动
  465. {
  466. Grp_InvitationOfficialActivities _InvitationOfficialActivities = _grpDeleRep.Query<Grp_InvitationOfficialActivities>(s => s.Id == ccp.CId).First();
  467. info.PriceModule = "邀请/公务活动";
  468. info.PriceName = _InvitationOfficialActivities.InviterArea;
  469. }
  470. else if (ccp.CTable == 82)//团组客户保险
  471. {
  472. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  473. Grp_Customers _Customers = _grpDeleRep.Query<Grp_Customers>(s => s.Id == ccp.CId).First();
  474. info.PriceModule = "团组客户保险";
  475. info.PriceName = getClientNameStr(clientNameList, _Customers.ClientName);
  476. }
  477. else if (ccp.CTable == 85) //机票预订
  478. {
  479. Grp_AirTicketReservations _AirTicketReservations = _grpDeleRep.Query<Grp_AirTicketReservations>(s => s.Id == ccp.CId).First();
  480. info.PriceModule = "机票预订";
  481. info.PriceName = "(" + _AirTicketReservations.FlightsCode + ")";
  482. }
  483. else if (ccp.CTable == 98) //其他款项
  484. {
  485. Grp_DecreasePayments _DecreasePayments = _grpDeleRep.Query<Grp_DecreasePayments>(s => s.Id == ccp.CId).First();
  486. info.PriceModule = "其他款项";
  487. info.PriceName = _DecreasePayments.PriceName;
  488. }
  489. #endregion
  490. //发送信息
  491. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  492. if (qwUserIdList.Count > 0)
  493. {
  494. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.PayResult_Group_ToUser(info));
  495. if (result.errcode != 0)
  496. {
  497. //抄送日志
  498. return false;
  499. }
  500. }
  501. return true;
  502. }
  503. #endregion
  504. #region 团组出发、结束提醒(财务群)
  505. public static async Task<bool> SendChatMsg_GroupRemindersToCaiwu(List<Grp_DelegationInfo> list_7day, List<Grp_DelegationInfo> list_3day, List<Grp_DelegationInfo> list_minus1day, QiyeWeChatEnum qwEnum)
  506. {
  507. string chatId = qwEnum.GetEnumDescription();
  508. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.GroupRemindersToCaiwuChat(list_7day, list_3day, list_minus1day));
  509. if (result.errcode != 0)
  510. {
  511. //抄送日志
  512. return false;
  513. }
  514. return true;
  515. }
  516. #endregion
  517. #region 团组结束提醒(国交群)
  518. public static async Task<bool> SendChatMsg_GroupRemindersToGuojiao(List<Grp_DelegationInfo> list_3day, QiyeWeChatEnum qwEnum)
  519. {
  520. string chatId = qwEnum.GetEnumDescription();
  521. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.GroupRemindersToGuojiao(list_3day));
  522. if (result.errcode != 0)
  523. {
  524. //抄送日志
  525. return false;
  526. }
  527. return true;
  528. }
  529. #endregion
  530. #region 团组出发提醒(HR)
  531. public static async Task<bool> SendUserMsg_DelegationVisit_ToHR(List<Grp_DelegationInfo> list_3day, List<string> userId)
  532. {
  533. //发送信息
  534. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  535. if (qwUserIdList.Count > 0)
  536. {
  537. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.GroupRemindersToHR(list_3day));
  538. if (result.errcode != 0)
  539. {
  540. //抄送日志
  541. return false;
  542. }
  543. }
  544. return true;
  545. }
  546. #endregion
  547. #region 市场部新增客户资源统计
  548. /// <summary>
  549. /// 周统计
  550. /// </summary>
  551. /// <param name="sourceList"></param>
  552. /// <param name="userId"></param>
  553. /// <param name="begin"></param>
  554. /// <param name="end"></param>
  555. /// <returns></returns>
  556. public static async Task<bool> SendUserMsg_CRMStatistics_ToHR(List<CRMWeekStatisticsView> sourceList, List<string> userId, string begin, string end)
  557. {
  558. //发送信息
  559. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  560. if (qwUserIdList.Count > 0)
  561. {
  562. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.CRMStatistics_ToUser(sourceList, begin, end));
  563. if (result.errcode != 0)
  564. {
  565. //抄送日志
  566. return false;
  567. }
  568. }
  569. return true;
  570. }
  571. /// <summary>
  572. /// 月统计
  573. /// </summary>
  574. /// <param name="sourceList"></param>
  575. /// <param name="userId"></param>
  576. /// <param name="begin"></param>
  577. /// <param name="end"></param>
  578. /// <param name="totalInsert"></param>
  579. /// <param name="totalDelete"></param>
  580. /// <returns></returns>
  581. public static async Task<bool> SendUserMsg_CRMStatistics_Month_ToHR(List<CRMWeekStatisticsView> sourceList, List<string> userId, string begin, string end, int totalInsert, int totalDelete)
  582. {
  583. //发送信息
  584. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  585. if (qwUserIdList.Count > 0)
  586. {
  587. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.CRMStatistics_Month_ToUser(sourceList, begin, end, totalInsert, totalDelete));
  588. if (result.errcode != 0)
  589. {
  590. //抄送日志
  591. return false;
  592. }
  593. }
  594. return true;
  595. }
  596. #endregion
  597. #region 日付申请审核
  598. /// <summary>
  599. /// 日付申请提交时推送财务群
  600. /// </summary>
  601. /// <param name="dailyPayId"></param>
  602. /// <param name="sign"></param>
  603. /// <param name="qwEnum"></param>
  604. /// <returns></returns>
  605. public static async Task<bool> DailyPayReminders_Create_ToCaiwuChat(int dailyPayId, int sign, QiyeWeChatEnum qwEnum)
  606. {
  607. string chatId = qwEnum.GetEnumDescription();
  608. Fin_DailyFeePayment fin_DailyFeePayment = _grpDeleRep.Query<Fin_DailyFeePayment>(s => s.Id == dailyPayId).First();
  609. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == fin_DailyFeePayment.CreateUserId).First();
  610. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  611. string users = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  612. string[] companyArr = new string[] { "未知", "成都泛美商务有限公司", "四川泛美交流有限公司", "成都纽茵教育科技有限公司", "成都鸿企中元科技有限公司", "测试公司1" };
  613. string companyStr = "未知";
  614. if (fin_DailyFeePayment.CompanyId < companyArr.Length)
  615. {
  616. companyStr = companyArr[fin_DailyFeePayment.CompanyId];
  617. }
  618. Sys_SetData sd_tansferType = _grpDeleRep.Query<Sys_SetData>(s => s.Id == fin_DailyFeePayment.TransferTypeId).First();
  619. Sys_SetData sd_priceType = _grpDeleRep.Query<Sys_SetData>(s => s.Id == fin_DailyFeePayment.PriceTypeId).First();
  620. string feeSignStr = string.Format(@"{0}-{1}", sd_tansferType.Name, sd_priceType.Name);
  621. string priceStr = fin_DailyFeePayment.SumPrice.ToString("#0.00");
  622. DailyPayReminders_Create_ToCaiwuChatModel info = new DailyPayReminders_Create_ToCaiwuChatModel()
  623. {
  624. CreateDt = fin_DailyFeePayment.CreateTime.ToString("yyyy-MM-dd HH:mm"),
  625. CreateUser = users,
  626. Price = priceStr,
  627. Company = companyStr,
  628. FeeSign = feeSignStr,
  629. PriceName = fin_DailyFeePayment.Instructions
  630. };
  631. if (sign == 2)
  632. {
  633. info.TitleStr = "[更新]一项费用待审核";
  634. }
  635. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.DailyPayReminders_Create_ToCaiwuChat(info));
  636. if (result.errcode != 0)
  637. {
  638. //抄送日志
  639. return false;
  640. }
  641. return true;
  642. }
  643. /// <summary>
  644. /// 日付申请审核结果推送给申请人
  645. /// </summary>
  646. /// <param name="dailyPayId"></param>
  647. /// <param name="userId"></param>
  648. /// <param name="qwEnum"></param>
  649. /// <returns></returns>
  650. public static async Task<bool> DailyPayReminder_Audit_ToUser(int dailyPayId, List<string> userId, QiyeWeChatEnum qwEnum)
  651. {
  652. Fin_DailyFeePayment fin_DailyFeePayment = _grpDeleRep.Query<Fin_DailyFeePayment>(s => s.Id == dailyPayId).First();
  653. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == fin_DailyFeePayment.CreateUserId).First();
  654. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  655. string users = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  656. string priceStr = fin_DailyFeePayment.SumPrice.ToString("#0.00");
  657. DailyPayReminder_Audit_ToUserModel info = new DailyPayReminder_Audit_ToUserModel()
  658. {
  659. Price = priceStr,
  660. PriceName = fin_DailyFeePayment.Instructions
  661. };
  662. if (fin_DailyFeePayment.FAudit == 1)
  663. {
  664. info.AuditDate = fin_DailyFeePayment.MAuditDate.ToString("yyyy-MM-dd HH:mm");
  665. if (fin_DailyFeePayment.MAudit == 1)
  666. {
  667. info.Result = "你有一笔日付申请已通过审核";
  668. info.ResultColor = "info";
  669. //发送至财务群
  670. DailyPayReminder_Audit_ToCaiwuChatModel chatInfo = new DailyPayReminder_Audit_ToCaiwuChatModel()
  671. {
  672. AuditDate = info.AuditDate,
  673. CreateUser = users,
  674. Price = priceStr,
  675. PriceName = fin_DailyFeePayment.Instructions
  676. };
  677. string chatId = qwEnum.GetEnumDescription();
  678. await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.DailyPayReminder_Audit_ToCaiwuChat(chatInfo));
  679. }
  680. else if (fin_DailyFeePayment.MAudit == 2)
  681. {
  682. info.Result = "你有一笔日付申请未通过总经理审核";
  683. info.ResultColor = "warning";
  684. }
  685. }
  686. else if (fin_DailyFeePayment.FAudit == 2)
  687. {
  688. info.AuditDate = fin_DailyFeePayment.FAuditDate.ToString("yyyy-MM-dd HH:mm");
  689. info.Result = "你有一笔日付申请未通过财务审核";
  690. info.ResultColor = "warning";
  691. }
  692. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  693. if (qwUserIdList.Count > 0)
  694. {
  695. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.DailyPayReminder_Audit_ToUser(info));
  696. if (result.errcode != 0)
  697. {
  698. //抄送日志
  699. return false;
  700. }
  701. }
  702. return true;
  703. }
  704. /// <summary>
  705. /// 日付申请已付款推送给申请人
  706. /// </summary>
  707. /// <returns></returns>
  708. public static async Task<bool> DailyPayReminder_Pay_ToUser(int dailyPayId, List<string> userId)
  709. {
  710. Fin_DailyFeePayment fin_DailyFeePayment = _grpDeleRep.Query<Fin_DailyFeePayment>(s => s.Id == dailyPayId).First();
  711. string priceStr = fin_DailyFeePayment.SumPrice.ToString("#0.00");
  712. DailyPayReminder_Pay_ToUserModel info = new DailyPayReminder_Pay_ToUserModel()
  713. {
  714. PayDt = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  715. PriceName = fin_DailyFeePayment.Instructions,
  716. Price = priceStr
  717. };
  718. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  719. if (qwUserIdList.Count > 0)
  720. {
  721. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.DailyPayReminder_Pay_ToUser(info));
  722. if (result.errcode != 0)
  723. {
  724. //抄送日志
  725. return false;
  726. }
  727. }
  728. return true;
  729. }
  730. #endregion
  731. #region 费用保存发送消息
  732. #region 三公费用更改通知
  733. /// <summary>
  734. /// 三公费用更改通知发送总经理(21)
  735. /// </summary>
  736. /// <param name="diId"></param>
  737. /// <param name="receivedUserIds"></param>
  738. /// <param name="updateUserId"></param>
  739. /// <param name="url"></param>
  740. /// <returns></returns>
  741. public static async Task<bool> SendUserMsg_GroupShare_ToGM(int diId, List<string> receivedUserIds, int updateUserId, string url)
  742. {
  743. Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  744. GroupShare_ToGMModel info = new GroupShare_ToGMModel()
  745. {
  746. RefreshDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  747. TeamName = groupInfo.TeamName,
  748. CreateUser = _grpDeleRep.Query<Sys_Users>(s => s.Id == updateUserId).First()?.CnName ?? "-",
  749. Url = url
  750. };
  751. if (receivedUserIds.Count > 0)
  752. {
  753. List<string> qwUserIdList = GetQiyeChatUserIdList(receivedUserIds);
  754. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.GroupShare_ToGM(info));
  755. if (result.errcode != 0)
  756. {
  757. //抄送日志
  758. return false;
  759. }
  760. }
  761. return true;
  762. }
  763. /// <summary>
  764. /// 三公费用确认通知发送财务部人员
  765. /// </summary>
  766. /// <param name="diId"></param>
  767. /// <returns></returns>
  768. public static async Task<bool> SendUserMsg_GroupShare_ToFinance(int diId)
  769. {
  770. Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  771. GroupShare_ToUserModel info = new GroupShare_ToUserModel()
  772. {
  773. RefreshDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  774. TeamName = groupInfo.TeamName
  775. };
  776. List<string> receivedUserIds = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && s.DepId == 3).Select(x => x.Id.ToString()).ToList();
  777. var defaultUserIds = new List<string>() { "208", "233" };
  778. receivedUserIds.AddRange(defaultUserIds);
  779. if (receivedUserIds.Contains("150")) receivedUserIds.Remove("150");
  780. if (receivedUserIds.Count > 0)
  781. {
  782. List<string> qwUserIdList = GetQiyeChatUserIdList(receivedUserIds);
  783. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.GroupShare_ToFinance(info));
  784. if (result.errcode != 0)
  785. {
  786. //抄送日志
  787. return false;
  788. }
  789. }
  790. return true;
  791. }
  792. #endregion
  793. /// <summary>
  794. /// 机票行程代码录入变更通知发送国交经理、主管、王鸽
  795. /// </summary>
  796. /// <param name="diId"></param>
  797. /// <param name="operationId"></param>
  798. /// <returns></returns>
  799. public static async Task<bool> SendUserMsg_GroupShare_ToDP(int diId, int operationId)
  800. {
  801. Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  802. var operationName = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && s.Id == operationId).First()?.CnName ?? "Unknown";
  803. var defaultJobPostIds = new List<int>() { 22, 32 };
  804. List<string> receivedUserIds = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && s.DepId == 7 && defaultJobPostIds.Contains(s.JobPostId)).Select(x => x.Id.ToString()).ToList();
  805. var defaultUserIds = new List<string>() { "208", "233" };
  806. receivedUserIds.AddRange(defaultUserIds);
  807. if (receivedUserIds.Count > 0)
  808. {
  809. List<string> qwUserIdList = GetQiyeChatUserIdList(receivedUserIds);
  810. string resMsg = string.Format(@" `机票行程代码已调整更新通知`
  811. >团组:<font color='info'>{0}</font>
  812. >操作人员:<font color='comment'>{1}</font>
  813. >操作时间:<font color='comment'>{2}</font>
  814. [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", groupInfo.TeamName, operationName, DateTime.Now.ToString("yyyy-MM-dd HH:mm"));
  815. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, resMsg);
  816. if (result.errcode != 0)
  817. {
  818. //抄送日志
  819. return false;
  820. }
  821. }
  822. return true;
  823. }
  824. #region 公务出访数据变更发送通知
  825. /// <summary>
  826. /// 机票行程代码录入变更通知发送国交经理、主管、王鸽
  827. /// </summary>
  828. /// <param name="diId"></param>
  829. /// <param name="operationId"></param>
  830. /// <returns></returns>
  831. public static async Task<bool> SendUserMsg_GroupShare_ToOP(int diId, int operationId)
  832. {
  833. Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  834. var operationName = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && s.Id == operationId).First()?.CnName ?? "Unknown";
  835. var defaultJobPostIds = new List<int>();
  836. List<string> receivedUserIds = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && s.DepId == 7 && s.JobPostId == 28).Select(x => x.Id.ToString()).ToList();
  837. var defaultUserIds = new List<string>() { "208", "233" };
  838. receivedUserIds.AddRange(defaultUserIds);
  839. if (receivedUserIds.Count > 0)
  840. {
  841. List<string> qwUserIdList = GetQiyeChatUserIdList(receivedUserIds);
  842. string resMsg = string.Format(@" `公务出访有数据更新通知`
  843. >团组:<font color='info'>{0}</font>
  844. >操作人员:<font color='comment'>{1}</font>
  845. >操作时间:<font color='comment'>{2}</font>
  846. [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", groupInfo.TeamName, operationName, DateTime.Now.ToString("yyyy-MM-dd HH:mm"));
  847. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, resMsg);
  848. if (result.errcode != 0)
  849. {
  850. //抄送日志
  851. return false;
  852. }
  853. }
  854. return true;
  855. }
  856. #endregion
  857. #endregion
  858. #region 成本通知
  859. /// <summary>
  860. /// 成本通知发送给对应岗位用户
  861. /// </summary>
  862. /// <param name="diId"></param>
  863. /// <returns></returns>
  864. public static async Task<bool> SendUserMsg_GroupShare_ToJob(int diId)
  865. {
  866. Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  867. List<Sys_Users> list_user = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && (s.JobPostId == 24 || s.JobPostId == 25 || s.JobPostId == 28)).ToList();
  868. //List<Sys_Users> list_user = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && (s.JobPostId == 40 || s.JobPostId == 41)).ToList();
  869. List<string> userIds = new List<string>();
  870. list_user.ForEach(s => userIds.Add(s.Id.ToString()));
  871. List<string> qwUserIdList = GetQiyeChatUserIdList(userIds);
  872. GroupShare_ToUserModel info = new GroupShare_ToUserModel()
  873. {
  874. RefreshDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  875. TeamName = groupInfo.TeamName
  876. };
  877. if (qwUserIdList.Count > 0)
  878. {
  879. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.GroupShare_ToUser(info));
  880. if (result.errcode != 0)
  881. {
  882. //抄送日志
  883. return false;
  884. }
  885. }
  886. return true;
  887. }
  888. public static async Task<bool> SendUserMsg_blackAirInfo_ToVisaUser(int diId, List<CountryDataTime> arr)
  889. {
  890. Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  891. var visaUser = _grpDeleRep.Query<Sys_Users>(x => x.IsDel == 0 && x.JobPostId == 26)
  892. .Select(x => x.Id)
  893. .ToList();
  894. List<string> userIds = new List<string>() { "235" };
  895. userIds.AddRange(visaUser.Select(x => x.ToString()));
  896. List<string> qwUserIdList = GetQiyeChatUserIdList(userIds);
  897. BlackCodeInfo_ToVisaUser info = new BlackCodeInfo_ToVisaUser()
  898. {
  899. RefreshDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  900. TeamName = groupInfo.TeamName,
  901. info = arr
  902. };
  903. if (qwUserIdList.Count > 0)
  904. {
  905. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.BlackCodeInfo_ToVisaUser(info));
  906. if (result.errcode != 0)
  907. {
  908. //抄送日志
  909. return false;
  910. }
  911. }
  912. return true;
  913. }
  914. public static async Task<bool> SendUserMsg_GroupTimeInfo_ToVisaUser(int diId, string startTime, string endTime)
  915. {
  916. Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  917. var visaUser = _grpDeleRep.Query<Sys_Users>(x => x.IsDel == 0 && x.JobPostId == 26)
  918. .Select(x => x.Id)
  919. .ToList();
  920. List<string> userIds = new List<string>() { "235" };
  921. userIds.AddRange(visaUser.Select(x => x.ToString()));
  922. List<string> qwUserIdList = GetQiyeChatUserIdList(userIds);
  923. GroupDateTime_ToVisaUser info = new GroupDateTime_ToVisaUser()
  924. {
  925. RefreshDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  926. TeamName = groupInfo.TeamName,
  927. EndTime = endTime,
  928. StartTime = startTime,
  929. };
  930. if (qwUserIdList.Count > 0)
  931. {
  932. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.GroupDateTime_ToVisaUser(info));
  933. if (result.errcode != 0)
  934. {
  935. //抄送日志
  936. return false;
  937. }
  938. }
  939. return true;
  940. }
  941. #endregion
  942. #region Helper
  943. private static string getClientNameStr(List<SimplClientInfo> list, string origin)
  944. {
  945. string result = origin;
  946. if (Regex.Match(origin, @"\d+,?").Value.Length > 0)
  947. {
  948. string[] temparr = origin.Split(',');
  949. string fistrStr = temparr[0];
  950. int count = temparr.Count();
  951. int tempId;
  952. bool success = int.TryParse(fistrStr, out tempId);
  953. if (success)
  954. {
  955. SimplClientInfo tempInfo = list.FirstOrDefault(s => s.Id == tempId);
  956. if (tempInfo != null)
  957. {
  958. if (count > 1)
  959. {
  960. result = string.Format(@"{0}{1}等{2}人", tempInfo.LastName, tempInfo.FirstName, count);
  961. }
  962. else
  963. {
  964. result = string.Format(@"{0}{1}", tempInfo.LastName, tempInfo.FirstName);
  965. }
  966. }
  967. }
  968. }
  969. return result;
  970. }
  971. private static List<SimplClientInfo> getSimplClientList(int diId)
  972. {
  973. 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);
  974. List<SimplClientInfo> arr = _grpDeleRep._sqlSugar.SqlQueryable<SimplClientInfo>(sql).ToList();
  975. return arr;
  976. }
  977. #endregion
  978. }
  979. }