CustomerRepository.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace crmeb\repositories;
  3. use app\models\store\StoreBargain;
  4. use app\models\store\StoreCart;
  5. use app\models\store\StoreCombination;
  6. use app\models\store\StoreProduct;
  7. use app\models\store\StoreSeckill;
  8. use app\models\store\StoreService;
  9. use app\models\user\User;
  10. use app\models\user\WechatUser;
  11. use crmeb\services\WechatService;
  12. /**
  13. * 客服消息推送
  14. * Class CustomerService
  15. * @package crmeb\services
  16. */
  17. class CustomerRepository
  18. {
  19. /**
  20. * 订单支付成功后给客服发送客服消息
  21. * @param $order
  22. * @param int $type 1 公众号 0 小程序
  23. * @return string
  24. */
  25. public static function sendOrderPaySuccessCustomerService($order,$type = 0)
  26. {
  27. $serviceOrderNotice = StoreService::getStoreServiceOrderNotice();
  28. if(count($serviceOrderNotice)){
  29. foreach ($serviceOrderNotice as $key=>&$item){
  30. $userInfo = WechatUser::get($item);
  31. if($userInfo){
  32. $userInfo = $userInfo->toArray();
  33. if($userInfo['subscribe'] && $userInfo['openid']){
  34. $orderStatus = StoreService::orderServiceStatus($userInfo['uid']);
  35. if($orderStatus){
  36. // 统计管理开启 推送图文消息
  37. $head = '订单提醒 订单号:'.$order['order_id'];
  38. $url = sys_config('site_url') . '/customer/orderdetail/'.$order['order_id'];
  39. $description = '';
  40. $image = sys_config('site_logo');
  41. if(isset($order['seckill_id']) && $order['seckill_id'] > 0){
  42. $description .= '秒杀产品:'.StoreSeckill::getProductField($order['seckill_id'], 'title');
  43. $image = StoreSeckill::getProductField($order['seckill_id'], 'image');
  44. }else if(isset($order['combination_id']) && $order['combination_id'] > 0){
  45. $description .= '拼团产品:'.StoreCombination::getCombinationField($order['combination_id'], 'title');
  46. $image = StoreCombination::getCombinationField($order['combination_id'], 'image');
  47. }else if(isset($order['bargain_id']) && $order['bargain_id'] > 0){
  48. $description .= '砍价产品:'.StoreBargain::getBargainField($order['bargain_id'], 'title');
  49. $image = StoreBargain::getBargainField($order['bargain_id'], 'image');
  50. }else{
  51. $productIds = StoreCart::getCartIdsProduct((array)$order['cart_id']);
  52. $storeProduct = StoreProduct::getProductStoreNameOrImage($productIds);
  53. if(count($storeProduct)){
  54. foreach ($storeProduct as $value){
  55. $description .= $value['store_name'].' ';
  56. $image = $value['image'];
  57. }
  58. }
  59. }
  60. $message = WechatService::newsMessage($head, $description, $url, $image);
  61. try {
  62. WechatService::staffService()->message($message)->to($userInfo['openid'])->send();
  63. } catch (\Exception $e) {
  64. errlog($userInfo['nickname'] . '发送失败' . $e->getMessage());
  65. }
  66. }else{
  67. // 推送文字消息
  68. $head = "客服提醒:亲,您有一个新订单 \r\n订单单号:{$order['order_id']}\r\n支付金额:¥{$order['pay_price']}\r\n备注信息:{$order['mark']}\r\n订单来源:小程序";
  69. if($type) $head = "客服提醒:亲,您有一个新订单 \r\n订单单号:{$order['order_id']}\r\n支付金额:¥{$order['pay_price']}\r\n备注信息:{$order['mark']}\r\n订单来源:公众号";
  70. try {
  71. WechatService::staffService()->message($head)->to($userInfo['openid'])->send();
  72. } catch (\Exception $e) {
  73. errlog($userInfo['nickname'] . '发送失败' . $e->getMessage());
  74. }
  75. }
  76. }
  77. }
  78. }
  79. }
  80. }
  81. /**
  82. * 提取管理员权限
  83. * @param callable $callable 回调函数
  84. */
  85. public static function getAdminNoticeAuth(callable $callable)
  86. {
  87. $serviceOrderNotice = StoreService::getStoreServiceOrderNotice();
  88. if (count($serviceOrderNotice)) {
  89. foreach ($serviceOrderNotice as $uid) {
  90. $userInfo = User::where('uid', $uid)->find();
  91. if ($userInfo && is_callable($callable)) $callable($userInfo);
  92. }
  93. }
  94. }
  95. }