CustomerServiceController.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2020/11/30
  6. * Time: 13:43
  7. */
  8. namespace app\frontend\modules\goods\controllers;
  9. use app\common\components\ApiController;
  10. use app\frontend\modules\member\controllers\ServiceController;
  11. use Yunshop\Supplier\admin\models\Supplier;
  12. use Yunshop\Supplier\common\models\SupplierGoods;
  13. class CustomerServiceController extends ApiController
  14. {
  15. public function index()
  16. {
  17. $goods_id = intval(request()->input('goods_id'));
  18. //客户端类型
  19. $type = intval(request()->input('type'));
  20. //1.商城客服设置
  21. $shopSet = \Setting::get('shop.shop');
  22. if (request()->input('type') == 2) {
  23. $shop_cservice = $shopSet['cservice_mini'] ?: '';
  24. } else {
  25. $shop_cservice = $shopSet['cservice'] ?: '';
  26. }
  27. //客服插件基础设置
  28. $this->apiData = (new ServiceController())->index();
  29. if (empty($this->apiData)) {
  30. $this->apiData = [
  31. 'cservice'=> '',
  32. 'service_QRcode' => '',
  33. 'service_mobile' => ''
  34. ];
  35. }
  36. //2.客服插件设置
  37. $alonge_cservice = $this->apiData['cservice'];
  38. if (!is_null(\app\common\modules\shop\ShopConfig::current()->get('customer_service'))) {
  39. $class = array_get(\app\common\modules\shop\ShopConfig::current()->get('customer_service'), 'class');
  40. $function = array_get(\app\common\modules\shop\ShopConfig::current()->get('customer_service'), 'function');
  41. $ret = $class::$function($goods_id,$type);
  42. if ($ret && is_array($ret)) {
  43. foreach ($ret as $rk => $rv) {
  44. $this->apiData[$rk] = $rv;
  45. }
  46. }
  47. }
  48. $store_cservice = '';
  49. $rg_cservice = '';
  50. if (app('plugins')->isEnabled('store-cashier')) {
  51. //3.门店单独客服设置
  52. if(class_exists('\Yunshop\StoreCashier\common\services\CustomerService')) {
  53. $storeSet = \Yunshop\StoreCashier\common\services\CustomerService::getCservice($goods_id,$type);
  54. if ($storeSet && is_array($storeSet)) {
  55. foreach ($storeSet as $sk => $sv) {
  56. $this->apiData[$sk] = $sv;
  57. }
  58. //先将门店单独客服设置的cservice取出
  59. if($storeSet['cservice']) {
  60. $store_cservice = $storeSet['cservice'];
  61. }
  62. }
  63. }
  64. //门店后台单独设置客服链接
  65. if(class_exists('\Yunshop\StoreCashier\store\models\StoreService')){
  66. $store_id = \Yunshop\StoreCashier\common\models\StoreGoods::where('goods_id',$goods_id)->value('store_id');
  67. if ($store_id) {
  68. $store_service = \Yunshop\StoreCashier\store\models\StoreService::where("store_id",$store_id)->first();
  69. if($store_service) {
  70. $rg_cservice = $store_service['service'];
  71. }
  72. }
  73. }
  74. }
  75. if (app('plugins')->isEnabled('supplier')) {
  76. $supplierGood = SupplierGoods::where('goods_id',$goods_id)->first();
  77. if ($supplierGood) {
  78. $supplier = Supplier::getSupplierById($supplierGood->supplier_id);
  79. $supplierSet = (new ServiceController())->supplier_set($supplier->uid, request()->type);
  80. foreach ($supplierSet as $sk => $sv) {
  81. $this->apiData[$sk] = $sv;
  82. }
  83. //先将门店单独客服设置的cservice取出
  84. if($supplierSet['cservice']) {
  85. $supplier_service = $supplierSet['cservice'];
  86. }
  87. }
  88. }
  89. //满足1.门店独立设置 2.客服插件 3.人工客服 4.商城
  90. if($store_cservice){
  91. $this->apiData['cservice'] = $store_cservice;
  92. }else if($supplier_service){
  93. $this->apiData['cservice'] = $supplier_service;
  94. }else if($alonge_cservice){
  95. $this->apiData['cservice'] = $alonge_cservice;
  96. }else if ($rg_cservice){
  97. $this->apiData['cservice'] = $rg_cservice;
  98. }else{
  99. $this->apiData['cservice'] = $shop_cservice;
  100. }
  101. return $this->successJson('', $this->apiData);
  102. }
  103. }