OrderAfterSaleController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. namespace addons\TinyShop\api\modules\v1\controllers\member;
  3. use Yii;
  4. use yii\web\NotFoundHttpException;
  5. use common\helpers\ResultHelper;
  6. use api\controllers\UserAuthController;
  7. use addons\TinyShop\common\enums\OrderStatusEnum;
  8. use addons\TinyShop\common\forms\OrderAfterSaleForm;
  9. use addons\TinyShop\common\models\order\AfterSale;
  10. /**
  11. * 售后
  12. *
  13. * Class OrderAfterSaleController
  14. * @package addons\TinyShop\api\modules\v1\controllers\member
  15. * @author jianyan74 <751393839@qq.com>
  16. */
  17. class OrderAfterSaleController extends UserAuthController
  18. {
  19. /**
  20. * @var AfterSale
  21. */
  22. public $modelClass = AfterSale::class;
  23. /**
  24. * 退款申请
  25. *
  26. * @param $id
  27. * @return mixed
  28. * @throws NotFoundHttpException
  29. * @throws \yii\web\UnprocessableEntityHttpException
  30. */
  31. public function actionApply()
  32. {
  33. $model = new OrderAfterSaleForm();
  34. $model->setScenario('apply');
  35. $model->attributes = Yii::$app->request->post();
  36. if (!$model->validate()) {
  37. return ResultHelper::json(422, $this->getError($model));
  38. }
  39. $product = Yii::$app->tinyShopService->orderProduct->findById($model->id);
  40. empty($model->refund_apply_money) && $model->refund_apply_money = $product->product_money;
  41. if ($model->refund_apply_money > $product->product_money) {
  42. $model->refund_apply_money = $product->product_money;
  43. }
  44. if (
  45. Yii::$app->services->devPattern->isB2B2C() &&
  46. $product->order &&
  47. in_array($product->order->order_status, [
  48. OrderStatusEnum::REPEAL,
  49. OrderStatusEnum::ACCOMPLISH,
  50. OrderStatusEnum::REFUND,
  51. ])
  52. ) {
  53. return ResultHelper::json(422, '完成订单暂不支持售后');
  54. }
  55. $member = Yii::$app->services->member->get(Yii::$app->user->identity->member_id);
  56. return Yii::$app->tinyShopService->orderAfterSale->apply($model, $member->id);
  57. }
  58. /**
  59. * 退货提交
  60. *
  61. * @param $id
  62. * @return mixed
  63. * @throws NotFoundHttpException
  64. * @throws \yii\web\UnprocessableEntityHttpException
  65. */
  66. public function actionSalesReturn()
  67. {
  68. $model = new OrderAfterSaleForm();
  69. $model->setScenario('salesReturn');
  70. $model->attributes = Yii::$app->request->post();
  71. if (!$model->validate()) {
  72. return ResultHelper::json(422, $this->getError($model));
  73. }
  74. $member = Yii::$app->services->member->get(Yii::$app->user->identity->member_id);
  75. return Yii::$app->tinyShopService->orderAfterSale->salesReturn($model, $member->id);
  76. }
  77. /**
  78. * 换货确认收货
  79. *
  80. * @return array
  81. */
  82. public function actionTakeDelivery()
  83. {
  84. $id = Yii::$app->request->post('id');
  85. try {
  86. return Yii::$app->tinyShopService->orderAfterSale->memberTakeDelivery($id, Yii::$app->user->identity->member_id);
  87. } catch (\Exception $e) {
  88. return ResultHelper::json(422, $e->getMessage());
  89. }
  90. }
  91. /**
  92. * 关闭申请
  93. *
  94. * @return mixed|void
  95. * @throws NotFoundHttpException
  96. * @throws \yii\web\UnprocessableEntityHttpException
  97. */
  98. public function actionClose()
  99. {
  100. $id = Yii::$app->request->post('id');
  101. try {
  102. return Yii::$app->tinyShopService->orderAfterSale->close($id, Yii::$app->user->identity->member_id);
  103. } catch (\Exception $e) {
  104. return ResultHelper::json(422, $e->getMessage());
  105. }
  106. }
  107. }
粤ICP备19079148号