RefundBackWayService.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Name: 芸众商城系统
  5. * Author: 广州市芸众信息科技有限公司
  6. * Profile: 广州市芸众信息科技有限公司位于国际商贸中心的广州,专注于移动电子商务生态系统打造,拥有芸众社交电商系统、区块链数字资产管理系统、供应链管理系统、电子合同等产品/服务。官网 :www.yunzmall.com www.yunzshop.com
  7. * Date: 2022/1/13
  8. * Time: 16:57
  9. */
  10. namespace app\frontend\modules\refund\services;
  11. use app\common\models\Order;
  12. use app\common\models\refund\RefundApply;
  13. use app\frontend\modules\refund\services\back_way_operation\RefundBackWayOperation;
  14. use app\frontend\modules\refund\services\back_way_operation\SelfSend;
  15. class RefundBackWayService
  16. {
  17. public static function getBackWayConfig()
  18. {
  19. $configs = \app\common\modules\shop\ShopConfig::current()->get('shop-foundation.send_back_way');
  20. return $configs;
  21. }
  22. public static function getBackWay(Order $order)
  23. {
  24. $config = self::getBackWayConfig();
  25. $backWay = [];
  26. foreach ($config as $class) {
  27. if (!class_exists($class)) {
  28. continue;
  29. }
  30. $operation = new $class();
  31. if (!$operation instanceof RefundBackWayOperation) {
  32. continue;
  33. }
  34. $operation->setOrder($order);
  35. if (!$operation->isEnabled()) {
  36. continue;
  37. }
  38. $backWay[] = [
  39. 'code' => $operation->getCode(),
  40. 'value' => $operation->getValue(),
  41. 'name' => $operation->getName(),
  42. ];
  43. }
  44. return $backWay;
  45. }
  46. /**
  47. * @param $code
  48. * @return RefundBackWayOperation|SelfSend
  49. */
  50. public static function getBackWayClass($code)
  51. {
  52. $config = self::getBackWayConfig();
  53. foreach ($config as $key=>$class) {
  54. if (!class_exists($class) || $code != get_class_vars($class)['value']) {
  55. continue;
  56. }
  57. $operation = new $class();
  58. if (!$operation instanceof RefundBackWayOperation) {
  59. continue;
  60. }
  61. $backWay = $operation;
  62. break;
  63. }
  64. isset($backWay) || $backWay = new SelfSend();//默认返回自行寄回
  65. return $backWay;
  66. }
  67. public static function getBackWayClassData(RefundApply $refundApply)
  68. {
  69. return self::getBackWayClass($refundApply->refund_way_type)->setRefundApply($refundApply)->getEditData();
  70. }
  71. public static function getBackWayDetailData(RefundApply $refundApply)
  72. {
  73. return self::getBackWayClass($refundApply->refund_way_type)->setRefundApply($refundApply)->getOtherData();
  74. }
  75. }