NoticeRepositories.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: xurongyao <763569752@qq.com>
  5. * Date: 2019/11/13 4:52 PM
  6. */
  7. namespace crmeb\repositories;
  8. use app\models\user\WechatUser;
  9. use crmeb\services\WechatTemplateService;
  10. use app\models\routine\RoutineTemplate;
  11. use app\models\store\StoreOrderCartInfo;
  12. use crmeb\services\YLYService;
  13. use think\facade\Route;
  14. /** 消息通知静态类
  15. * Class NoticeRepositories
  16. * @package crmeb\repositories
  17. */
  18. class NoticeRepositories
  19. {
  20. /** 支付成功通知
  21. * @param $order
  22. * @param $formId
  23. */
  24. public static function noticeOrderPaySuccess($order)
  25. {
  26. $wechatUser = WechatUser::where('uid', $order['uid'])->field(['openid', 'routine_openid'])->find();
  27. if ($wechatUser) {
  28. $openid = $wechatUser['openid'];
  29. $routineOpenid = $wechatUser['routine_openid'];
  30. try {
  31. if ($openid && in_array($order['is_channel'], [0, 2])) {//公众号发送模板消息
  32. WechatTemplateService::sendTemplate($openid, WechatTemplateService::ORDER_PAY_SUCCESS, [
  33. 'first' => '亲,您购买的商品已支付成功',
  34. 'keyword1' => $order['order_id'],
  35. 'keyword2' => $order['pay_price'],
  36. 'remark' => '点击查看订单详情'
  37. ], Route::buildUrl('order/detail/' . $order['order_id'])->suffix('')->domain(true)->build());
  38. //订单支付成功后给客服发送模版消息
  39. WechatTemplateService::sendAdminNoticeTemplate([
  40. 'first' => "亲,您有一个新订单 \n订单号:{$order['order_id']}",
  41. 'keyword1' => '新订单',
  42. 'keyword2' => '已支付',
  43. 'keyword3' => date('Y/m/d H:i', time()),
  44. 'remark' => '请及时处理'
  45. ]);
  46. //订单支付成功后给客服发送客服消息
  47. CustomerRepository::sendOrderPaySuccessCustomerService($order, 1);
  48. } else if ($routineOpenid && in_array($order['is_channel'], [1, 2])) {//小程序发送模板消息
  49. RoutineTemplate::sendOrderSuccess($order['uid'], $order['pay_price'], $order['order_id']);
  50. //订单支付成功后给客服发送客服消息
  51. CustomerRepository::sendOrderPaySuccessCustomerService($order, 0);
  52. }
  53. } catch (\Exception $e) {
  54. errlog('购买后发送提醒失败,错误原因:' . $e->getMessage());
  55. }
  56. }
  57. //打印小票
  58. $switch = sys_config('pay_success_printing_switch') ? true : false;
  59. if ($switch) {
  60. try {
  61. $order['cart_id'] = is_string($order['cart_id']) ? json_decode($order['cart_id'], true) : $order['cart_id'];
  62. $cartInfo = StoreOrderCartInfo::whereIn('cart_id', $order['cart_id'])->where('oid', $order['id'])->field('cart_info')->select();
  63. $cartInfo = count($cartInfo) ? $cartInfo->toArray() : [];
  64. $product = [];
  65. foreach ($cartInfo as $item) {
  66. $value = is_string($item['cart_info']) ? json_decode($item['cart_info'], true) : $item['cart_info'];
  67. $value['productInfo']['store_name'] = $value['productInfo']['store_name'] ?? "";
  68. $value['productInfo']['store_name'] = StoreOrderCartInfo::getSubstrUTf8($value['productInfo']['store_name'], 10, 'UTF-8', '');
  69. $product[] = $value;
  70. }
  71. YLYService::instance()->setContent(sys_config('site_name'), is_object($order) ? $order->toArray() : $order, $product)->orderPrinting();
  72. } catch (\Exception $e) {
  73. errlog('小票打印出现错误,错误原因:' . $e->getMessage());
  74. }
  75. }
  76. //短信通知 下发用户支付成功 下发管理员支付通知
  77. event('ShortMssageSend', [$order['order_id'], ['PaySuccess', 'AdminPaySuccess']]);
  78. }
  79. }