RepositoryExtension.ProduceNoticeMessage.cs 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613
  1. using Elasticsearch.Net;
  2. using JiaZhiQuan.Common.ElasticSearch;
  3. using Newtonsoft.Json;
  4. using Newtonsoft.Json.Linq;
  5. using Senparc.Weixin.MP.Containers;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Data;
  9. using System.Diagnostics;
  10. using System.Dynamic;
  11. using System.Linq;
  12. using System.Net.Http;
  13. using System.Reflection;
  14. using System.Security.Cryptography;
  15. using System.Text;
  16. using System.Threading.Tasks;
  17. using JiaZhiQuan.Common.Messaging;
  18. using JiaZhiQuan.Common.Messaging.Models;
  19. using Wicture.DbRESTFul;
  20. using Wicture.DbRESTFul.Cache;
  21. using Wicture.DbRESTFul.Infrastructure.Repository;
  22. namespace JiaZhiQuan.Common
  23. {
  24. public static partial class RepositoryExtension
  25. {
  26. #region 寄售订单相关通知
  27. /// <summary>
  28. /// 寄售订单发货通知
  29. /// </summary>
  30. public static async Task MakePostOrderDeliverySuccessMessage(this DbRESTFulRepository repository, Producer producer, long userId, long orderId)
  31. {
  32. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  33. {
  34. Type = NotificationType.UEPostOrder,
  35. Content = JsonConvert.SerializeObject(new UEPostOrderModel
  36. {
  37. UserId = userId,
  38. Title = "订单通知",
  39. Message = "发货成功,请等待平台签收并鉴定。",
  40. ActionLink = $"app://ue/order/post/detail?id={orderId}",
  41. OrderId = orderId,
  42. })
  43. });
  44. }
  45. /// <summary>
  46. /// 寄售订单平台收货通知
  47. /// </summary>
  48. public static async Task MakePostOrderPlatformReceivedMessage(this DbRESTFulRepository repository, Producer producer, long userId, long orderId)
  49. {
  50. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  51. {
  52. Type = NotificationType.UEPostOrder,
  53. Content = JsonConvert.SerializeObject(new UEPostOrderModel
  54. {
  55. UserId = userId,
  56. Title = "订单通知",
  57. Message = "平台已收到您的寄售商品,正在火速安排鉴定。",
  58. ActionLink = $"app://ue/order/post/detail?id={orderId}",
  59. OrderId = orderId,
  60. })
  61. });
  62. // TODO 公众号通知
  63. }
  64. /// <summary>
  65. /// 寄售订单平台鉴定通过,等待卖家上架通知,每24小时推送一次(TODO)
  66. /// </summary>
  67. public static async Task MakePostOrderWaitOnSaleMessage(this DbRESTFulRepository repository, Producer producer, long userId, long orderId)
  68. {
  69. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  70. {
  71. Type = NotificationType.UEPostOrder,
  72. Content = JsonConvert.SerializeObject(new UEPostOrderModel
  73. {
  74. UserId = userId,
  75. Title = "订单通知",
  76. Message = "您的寄售商品已通过鉴定,请尽快上架!超时未处理将退回商品。",
  77. ActionLink = $"app://ue/order/post/detail?id={orderId}",
  78. OrderId = orderId,
  79. })
  80. });
  81. }
  82. /// <summary>
  83. /// 寄售订单平台鉴定未通过,等待平台退货通知
  84. /// </summary>
  85. public static async Task MakePostOrderWaitReturnMessage(this DbRESTFulRepository repository, Producer producer, long userId, long orderId, string reason)
  86. {
  87. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  88. {
  89. Type = NotificationType.UEPostOrder,
  90. Content = JsonConvert.SerializeObject(new UEPostOrderModel
  91. {
  92. UserId = userId,
  93. Title = "订单通知",
  94. Message = $"您的寄售商品未通过鉴定,原因:{reason}。平台会尽快退回货物。",
  95. ActionLink = $"app://ue/order/post/detail?id={orderId}",
  96. OrderId = orderId,
  97. })
  98. });
  99. // TODO 公众号通知
  100. }
  101. /// <summary>
  102. /// 寄售订单卖家取回商品(无偿),等待平台退货通知
  103. /// 寄售订单卖家取回商品 (有偿) ,等待平台退货通知
  104. /// 寄售订单卖家拒绝上架,等待平台退货通知
  105. /// 寄售订单卖家超时未上架,等待平台退货通知
  106. /// </summary>
  107. public static async Task MakePostOrderWaitReturnMessage2(this DbRESTFulRepository repository, Producer producer, long userId, long orderId)
  108. {
  109. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  110. {
  111. Type = NotificationType.UEPostOrder,
  112. Content = JsonConvert.SerializeObject(new UEPostOrderModel
  113. {
  114. UserId = userId,
  115. Title = "订单通知",
  116. Message = $"您主动取回了寄售商品,平台会尽快退回货物。",
  117. ActionLink = $"app://ue/order/post/detail?id={orderId}",
  118. OrderId = orderId,
  119. })
  120. });
  121. // TODO 公众号通知
  122. }
  123. /// <summary>
  124. /// 寄售订单平台鉴定未通过,不退货,系统关闭订单通知
  125. /// </summary>
  126. public static async Task MakePostOrderRejectAndCloseMessage(this DbRESTFulRepository repository, Producer producer, long userId, long orderId, string reason)
  127. {
  128. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  129. {
  130. Type = NotificationType.UEPostOrder,
  131. Content = JsonConvert.SerializeObject(new UEPostOrderModel
  132. {
  133. UserId = userId,
  134. Title = "订单通知",
  135. Message = $"您的寄售商品未通过鉴定,且商品无法退回,原因:{reason}。",
  136. ActionLink = $"app://ue/order/post/detail?id={orderId}",
  137. OrderId = orderId,
  138. })
  139. });
  140. }
  141. /// <summary>
  142. /// 寄售订单商品上架通知
  143. /// </summary>
  144. public static async Task MakePostOrderOnSaleMessage(this DbRESTFulRepository repository, Producer producer, long userId, long orderId)
  145. {
  146. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  147. {
  148. Type = NotificationType.UEPostOrder,
  149. Content = JsonConvert.SerializeObject(new UEPostOrderModel
  150. {
  151. UserId = userId,
  152. Title = "订单通知",
  153. Message = $"您的寄售商品已上架,正在火热出售中;适当降低售价会吸引更多买家。",
  154. ActionLink = $"app://ue/order/post/detail?id={orderId}",
  155. OrderId = orderId,
  156. })
  157. });
  158. }
  159. /// <summary>
  160. /// 寄售订单平台已退货,等待卖家签收
  161. /// </summary>
  162. public static async Task MakePostOrderReturnReceiveMessage(this DbRESTFulRepository repository, Producer producer, long userId, long orderId)
  163. {
  164. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  165. {
  166. Type = NotificationType.UEPostOrder,
  167. Content = JsonConvert.SerializeObject(new UEPostOrderModel
  168. {
  169. UserId = userId,
  170. Title = "订单通知",
  171. Message = $"平台退回了您的寄售商品,请留意物流进度并及时签收。",
  172. ActionLink = $"app://ue/order/post/detail?id={orderId}",
  173. OrderId = orderId,
  174. })
  175. });
  176. }
  177. /// <summary>
  178. /// 寄售订单卖家已签收退货,系统关闭订单通知
  179. /// </summary>
  180. public static async Task MakePostOrderAutoReceivedMessage(this DbRESTFulRepository repository, Producer producer, long userId, long orderId)
  181. {
  182. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  183. {
  184. Type = NotificationType.UEPostOrder,
  185. Content = JsonConvert.SerializeObject(new UEPostOrderModel
  186. {
  187. UserId = userId,
  188. Title = "订单通知",
  189. Message = $"退回的寄售商品已自动签收。",
  190. ActionLink = $"app://ue/order/post/detail?id={orderId}",
  191. OrderId = orderId,
  192. })
  193. });
  194. }
  195. /// <summary>
  196. /// 寄售订单销售订单关闭,重新上架中通知
  197. /// </summary>
  198. public static async Task MakePostOrderReOnSaleMessage(this DbRESTFulRepository repository, Producer producer, long userId, long orderId)
  199. {
  200. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  201. {
  202. Type = NotificationType.UEPostOrder,
  203. Content = JsonConvert.SerializeObject(new UEPostOrderModel
  204. {
  205. UserId = userId,
  206. Title = "订单通知",
  207. Message = $"您的寄售商品因特殊原因交易失败,平台已重新上架该商品,并补偿额外的流量曝光,商品加速出售中。",
  208. ActionLink = $"app://ue/order/post/detail?id={orderId}",
  209. OrderId = orderId,
  210. })
  211. });
  212. }
  213. /// <summary>
  214. /// 寄售订单关闭通知
  215. /// </summary>
  216. public static async Task MakePostOrderClosedMessage(this DbRESTFulRepository repository, Producer producer, long userId, long orderId, string reason)
  217. {
  218. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  219. {
  220. Type = NotificationType.UEPostOrder,
  221. Content = JsonConvert.SerializeObject(new UEPostOrderModel
  222. {
  223. UserId = userId,
  224. Title = "订单通知",
  225. Message = $"寄售已关闭;原因:{reason}",
  226. ActionLink = $"app://ue/order/post/detail?id={orderId}",
  227. OrderId = orderId,
  228. })
  229. });
  230. }
  231. #endregion 寄售订单相关通知
  232. #region 寄售销售订单相关通知
  233. /// <summary>
  234. /// 寄售销售订单 买家已付款,等待平台发货
  235. /// </summary>
  236. public static async Task MakePostSaleOrderNeedDeliveryMessage(this DbRESTFulRepository repository, Producer producer, long saleOrderId, long orderId)
  237. {
  238. // TODO 公众号通知
  239. await Task.CompletedTask;
  240. }
  241. /// <summary>
  242. /// 寄售销售订单 买家超时未支付,系统关闭订单通知
  243. /// </summary>
  244. public static async Task MakePostSaleOrderPayExpireClosedMessage(this DbRESTFulRepository repository, Producer producer, long userId, long saleOrderId, long orderId)
  245. {
  246. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  247. {
  248. Type = NotificationType.UEPostSaleOrder,
  249. Content = JsonConvert.SerializeObject(new UEPostSaleOrderModel
  250. {
  251. UserId = userId,
  252. Title = "订单通知",
  253. Message = $"因您超时未支付,订单已关闭。",
  254. ActionLink = $"app://ue/order/postsale/detail?id={saleOrderId}&oid={orderId}",
  255. OrderId = orderId,
  256. SaleOrderId = saleOrderId,
  257. })
  258. });
  259. }
  260. /// <summary>
  261. /// 寄售销售订单 平台已发货,等待买家签收
  262. /// </summary>
  263. public static async Task MakePostSaleOrderWaitBuyerReceiveMessage(this DbRESTFulRepository repository, Producer producer, long userId, long saleOrderId, long orderId)
  264. {
  265. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  266. {
  267. Type = NotificationType.UEPostSaleOrder,
  268. Content = JsonConvert.SerializeObject(new UEPostSaleOrderModel
  269. {
  270. UserId = userId,
  271. Title = "订单通知",
  272. Message = $"平台已发货,请留意物流进度并及时签收。",
  273. ActionLink = $"app://ue/order/postsale/detail?id={saleOrderId}&oid={orderId}",
  274. OrderId = orderId,
  275. SaleOrderId = saleOrderId,
  276. })
  277. });
  278. }
  279. /// <summary>
  280. /// 寄售销售订单 后台关闭订单
  281. /// </summary>
  282. public static async Task MakePostSaleOrderClosedMessage(this DbRESTFulRepository repository, Producer producer, long userId, long saleOrderId, long orderId, string reason, bool pointsUsed)
  283. {
  284. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  285. {
  286. Type = NotificationType.UEPostSaleOrder,
  287. Content = JsonConvert.SerializeObject(new UEPostSaleOrderModel
  288. {
  289. UserId = userId,
  290. Title = "订单通知",
  291. Message = $"订单已关闭;原因:{reason}。货款稍后将全额退回至“原支付账户”。" + (pointsUsed ? "欧拉币已全额退回。" : ""),
  292. ActionLink = $"app://ue/order/postsale/detail?id={saleOrderId}&oid={orderId}",
  293. OrderId = orderId,
  294. SaleOrderId = saleOrderId,
  295. })
  296. });
  297. }
  298. #endregion 寄售销售订单相关通知
  299. #region 挂售订单相关通知
  300. /// <summary>
  301. /// 挂售销售订单 买家已付款,选择快递收货,等待卖家发货
  302. /// </summary>
  303. public static async Task MakeHangSaleOrderWaitDeliveryMessage(this DbRESTFulRepository repository, Producer producer, long buyerId, long sellerId, long orderId)
  304. {
  305. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  306. {
  307. Type = NotificationType.UEHangSaleOrder,
  308. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  309. {
  310. UserId = buyerId,
  311. Title = "订单通知",
  312. Message = $"付款成功,卖家正在火速安排发货。",
  313. ActionLink = $"app://ue/order/hangsale/detail?id={orderId}",
  314. OrderId = orderId,
  315. })
  316. });
  317. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  318. {
  319. Type = NotificationType.UEHangSaleOrder,
  320. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  321. {
  322. UserId = sellerId,
  323. Title = "订单通知",
  324. Message = $"您的挂售商品已有买家付款,买家选择快递收货,请尽快发货给买家!若因特殊原因无法发货,请联系平台客服。",
  325. ActionLink = $"app://ue/order/hangsale/detail?id={orderId}",
  326. OrderId = orderId,
  327. })
  328. });
  329. }
  330. /// <summary>
  331. /// 挂售销售订单 买家已付款,选择线下收货,等待买家取货
  332. /// </summary>
  333. public static async Task MakeHangSaleOrderWaitPickUpMessage(this DbRESTFulRepository repository, Producer producer, long buyerId, long sellerId, long orderId)
  334. {
  335. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  336. {
  337. Type = NotificationType.UEHangSaleOrder,
  338. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  339. {
  340. UserId = buyerId,
  341. Title = "订单通知",
  342. Message = $"付款成功,请在10天内前往门店取货,具体时间可与卖家商定。超时未取货将扣除您的取货保证金。",
  343. ActionLink = $"app://ue/order/hangsale/detail?id={orderId}",
  344. OrderId = orderId,
  345. })
  346. });
  347. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  348. {
  349. Type = NotificationType.UEHangSaleOrder,
  350. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  351. {
  352. UserId = sellerId,
  353. Title = "订单通知",
  354. Message = $"您的挂售商品已有买家付款,买家将在10天内线下取货,请提前准备好商品,可与买家商定具体时间。请确保买家当面点击\"确认取货\"后,再取走商品!若因特殊原因无法提供商品,请联系平台客服。",
  355. ActionLink = $"app://ue/order/hangsale/detail?id={orderId}",
  356. OrderId = orderId,
  357. })
  358. });
  359. }
  360. /// <summary>
  361. /// 挂售销售订单 买家超时未支付,系统关闭订单
  362. /// </summary>
  363. public static async Task MakeHangSaleOrderPayExpireCloseMessage(this DbRESTFulRepository repository, Producer producer, long userId, long orderId)
  364. {
  365. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  366. {
  367. Type = NotificationType.UEHangSaleOrder,
  368. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  369. {
  370. UserId = userId,
  371. Title = "订单通知",
  372. Message = $"因您超时未支付,订单已关闭。",
  373. ActionLink = $"app://ue/order/hangsale/detail?id={orderId}",
  374. OrderId = orderId,
  375. })
  376. });
  377. }
  378. /// <summary>
  379. /// 挂售销售订单 卖家已发货,等待买家签收
  380. /// </summary>
  381. public static async Task MakeHangSaleOrderWaitReceiveMessage(this DbRESTFulRepository repository, Producer producer, long userId, long orderId)
  382. {
  383. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  384. {
  385. Type = NotificationType.UEHangSaleOrder,
  386. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  387. {
  388. UserId = userId,
  389. Title = "订单通知",
  390. Message = $"您购买的商品已发货,请留意物流进度并及时签收。",
  391. ActionLink = $"app://ue/order/hangsale/detail?id={orderId}",
  392. OrderId = orderId,
  393. })
  394. });
  395. }
  396. /// <summary>
  397. /// 挂售销售订单 后台关闭订单
  398. /// </summary>
  399. public static async Task MakeHangSaleOrderPlatformClosedMessage(this DbRESTFulRepository repository, Producer producer, long buyerUserId, long sellerUserId, long orderId, string reason)
  400. {
  401. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  402. {
  403. Type = NotificationType.UEHangSaleOrder,
  404. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  405. {
  406. UserId = buyerUserId,
  407. Title = "订单通知",
  408. Message = $"交易关闭,原因:{reason}。货款已全额退回至“原支付账户”。",
  409. ActionLink = $"app://ue/order/hangsale/detail?id={orderId}",
  410. OrderId = orderId,
  411. })
  412. });
  413. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  414. {
  415. Type = NotificationType.UEHangSaleOrder,
  416. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  417. {
  418. UserId = sellerUserId,
  419. Title = "订单通知",
  420. Message = $"交易关闭,原因:{reason}。",
  421. ActionLink = $"app://ue/order/seller/hangsale/detail?id={orderId}",
  422. OrderId = orderId,
  423. })
  424. });
  425. }
  426. /// <summary>
  427. /// 挂售销售订单 买家已取货,交易成功
  428. /// </summary>
  429. public static async Task MakeHangSaleOrderPickUpMessage(this DbRESTFulRepository repository, Producer producer, long buyerUserId, long sellerUserId, long orderId)
  430. {
  431. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  432. {
  433. Type = NotificationType.UEHangSaleOrder,
  434. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  435. {
  436. UserId = buyerUserId,
  437. Title = "订单通知",
  438. Message = $"您已取货,交易成功。取货保证金已全额退回至“原支付账户”。",
  439. ActionLink = $"app://ue/order/hangsale/detail?id={orderId}",
  440. OrderId = orderId,
  441. })
  442. });
  443. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  444. {
  445. Type = NotificationType.UEHangSaleOrder,
  446. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  447. {
  448. UserId = sellerUserId,
  449. Title = "订单通知",
  450. Message = $"您的挂售商品交易成功,货款已打至“平台账户“。",
  451. ActionLink = $"app://ue/order/seller/hangsale/detail?id={orderId}",
  452. OrderId = orderId,
  453. })
  454. });
  455. }
  456. /// <summary>
  457. /// 挂售销售订单 买家拒绝取货,扣除保证金,交易关闭
  458. /// </summary>
  459. public static async Task MakeHangSaleOrderRefusePickUpClosedMessage(this DbRESTFulRepository repository, Producer producer, long buyerUserId, long sellerUserId, long orderId)
  460. {
  461. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  462. {
  463. Type = NotificationType.UEHangSaleOrder,
  464. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  465. {
  466. UserId = buyerUserId,
  467. Title = "订单通知",
  468. Message = $"您拒绝了取货,交易关闭。取货保证金已扣除,货款已全额退回至“原支付账户”。",
  469. ActionLink = $"app://ue/order/hangsale/detail?id={orderId}",
  470. OrderId = orderId,
  471. })
  472. });
  473. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  474. {
  475. Type = NotificationType.UEHangSaleOrder,
  476. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  477. {
  478. UserId = sellerUserId,
  479. Title = "订单通知",
  480. Message = $"买家拒绝取货,交易关闭。",
  481. ActionLink = $"app://ue/order/seller/hangsale/detail?id={orderId}",
  482. OrderId = orderId,
  483. })
  484. });
  485. }
  486. /// <summary>
  487. /// 挂售销售订单 买家超时未取货,扣除保证金,交易关闭
  488. /// </summary>
  489. public static async Task MakeHangSaleOrderExpirePickUpClosedMessage(this DbRESTFulRepository repository, Producer producer, long buyerUserId, long sellerUserId, long orderId)
  490. {
  491. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  492. {
  493. Type = NotificationType.UEHangSaleOrder,
  494. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  495. {
  496. UserId = buyerUserId,
  497. Title = "订单通知",
  498. Message = $"您超时未取货,交易关闭。取货保证金已扣除,货款已全额退回至“原支付账户”。",
  499. ActionLink = $"app://ue/order/hangsale/detail?id={orderId}",
  500. OrderId = orderId,
  501. })
  502. });
  503. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  504. {
  505. Type = NotificationType.UEHangSaleOrder,
  506. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  507. {
  508. UserId = sellerUserId,
  509. Title = "订单通知",
  510. Message = $"买家超时未取货,交易关闭。",
  511. ActionLink = $"app://ue/order/seller/hangsale/detail?id={orderId}",
  512. OrderId = orderId,
  513. })
  514. });
  515. }
  516. /// <summary>
  517. /// 挂售销售订单 后台关闭订单
  518. /// </summary>
  519. public static async Task MakeHangSaleOrderPlatformClosedMessage(this DbRESTFulRepository repository, Producer producer, long buyerUserId, long sellerUserId, long orderId, bool returnBond, string reason)
  520. {
  521. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  522. {
  523. Type = NotificationType.UEHangSaleOrder,
  524. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  525. {
  526. UserId = buyerUserId,
  527. Title = "订单通知",
  528. Message = returnBond ? $"交易关闭,原因:{reason}。货款与取货保证金稍后将全额退回至“原支付账户”。" : $"交易关闭,原因:{reason}。取货保证金已扣除,货款已全额退回至“原支付账户”。",
  529. ActionLink = $"app://ue/order/hangsale/detail?id={orderId}",
  530. OrderId = orderId,
  531. })
  532. });
  533. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  534. {
  535. Type = NotificationType.UEHangSaleOrder,
  536. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  537. {
  538. UserId = sellerUserId,
  539. Title = "订单通知",
  540. Message = $"交易关闭,原因:{reason}。",
  541. ActionLink = $"app://ue/order/seller/hangsale/detail?id={orderId}",
  542. OrderId = orderId,
  543. })
  544. });
  545. }
  546. /// <summary>
  547. /// 挂售销售订单 买家已签收,交易成功
  548. /// </summary>
  549. public static async Task MakeHangSaleOrderBuyerSignForMessage(this DbRESTFulRepository repository, Producer producer, long buyerUserId, long sellerUserId, long orderId, bool isAutoSignFor)
  550. {
  551. if (isAutoSignFor)
  552. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  553. {
  554. Type = NotificationType.UEHangSaleOrder,
  555. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  556. {
  557. UserId = buyerUserId,
  558. Title = "订单通知",
  559. Message = $"您购买的商品已自动签收。",
  560. ActionLink = $"app://ue/order/hangsale/detail?id={orderId}",
  561. OrderId = orderId,
  562. })
  563. });
  564. await producer.ProduceAsync(NotificationModel.GetMsgKey(), new NotificationModel
  565. {
  566. Type = NotificationType.UEHangSaleOrder,
  567. Content = JsonConvert.SerializeObject(new UEHangSaleOrderModel
  568. {
  569. UserId = sellerUserId,
  570. Title = "订单通知",
  571. Message = $"您的挂售商品交易成功,货款已打至“平台账户“。",
  572. ActionLink = $"app://ue/order/seller/hangsale/detail?id={orderId}",
  573. OrderId = orderId,
  574. })
  575. });
  576. }
  577. #endregion 挂售订单相关通知
  578. }
  579. }