OrderRefund.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace app\api\controller\mall;
  3. use app\common\controller\Api;
  4. use app\common\model\LogisticsCompany;
  5. use app\common\model\Refund;
  6. use think\Db;
  7. use think\db\Query;
  8. /**
  9. * 订单退款
  10. * @inheritdoc
  11. */
  12. class OrderRefund extends Api
  13. {
  14. protected $noNeedRight='*';
  15. /**
  16. * 售后详情
  17. * @ApiParams (name=order_info_id,description="子订单ID")
  18. * @ApiReturnParams (name=orders,description="订单对象")
  19. * @ApiReturnParams (name=refunds,description="售后记录")
  20. */
  21. public function show(){
  22. $data=$this->_validate([
  23. 'order_info_id'=>['require'],
  24. ]);
  25. $user=$this->auth->getUser();
  26. $orderInfo=$user
  27. ->orderInfo()
  28. ->with(['refund','refunds','orders'=>function(Query $query)use($data){
  29. $query->with(['info'=>function(Query $query)use($data){
  30. $query->where('id',$data['order_info_id']);
  31. }]);
  32. }])
  33. ->findOrFail($data['order_info_id']);
  34. Refund::makeRefundConfig($orderInfo,true,true,true);
  35. $this->success('',$orderInfo);
  36. }
  37. /**
  38. * 寄回物品
  39. * @ApiParams (name=refund_id,description="售后ID")
  40. * @ApiParams (name=user_trans_com_id,description="快递公司ID")
  41. * @ApiParams (name=user_trans_no,description="快递单号")
  42. */
  43. public function back_goods(){
  44. $user=$this->auth->getUser();
  45. $data=$this->_validate([
  46. 'refund_id'=>['require'],
  47. 'user_trans_com_id'=>['require'],
  48. 'user_trans_no'=>['require'],
  49. ]);
  50. Db::startTrans();
  51. $refund=$user->refund()->lock(true)->findOrFail($data['refund_id']);
  52. if(!$refund->self_back_goods){
  53. $this->error('操作失败');
  54. }
  55. $com=LogisticsCompany::find($data['user_trans_com_id']);
  56. if(!$com){
  57. $this->error('公司不存在');
  58. }
  59. $refund->makeUserBackGoods($com,$data['user_trans_no']);
  60. Db::commit();
  61. $this->success('',$refund);
  62. }
  63. }