RefundGoodsLog.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Name: 芸众商城系统
  5. * Author: 广州市芸众信息科技有限公司
  6. * Profile: 广州市芸众信息科技有限公司位于国际商贸中心的广州,专注于移动电子商务生态系统打造,拥有芸众社交电商系统、区块链数字资产管理系统、供应链管理系统、电子合同等产品/服务。官网 :www.yunzmall.com www.yunzshop.com
  7. * Date: 2021/12/23
  8. * Time: 14:13
  9. */
  10. namespace app\common\models\refund;
  11. use app\common\models\BaseModel;
  12. use app\common\models\OrderGoods;
  13. use app\framework\Database\Eloquent\Builder;
  14. use Illuminate\Database\Eloquent\SoftDeletes;
  15. /**
  16. * Class RefundGoodsLog
  17. * @package app\common\models\refund
  18. */
  19. class RefundGoodsLog extends BaseModel
  20. {
  21. use SoftDeletes;
  22. public $table = 'yz_order_refund_goods_log';
  23. protected $guarded = ['id'];
  24. protected $appends = ['goods_id','goods_title','goods_option_title','goods_thumb'];
  25. protected $hidden = ['orderGoods', 'created_at','updated_at','deleted_at'];
  26. const CANCEL_STATUS = -1; //驳回/取消
  27. const WAIT_STATUS = 0; //等待审核
  28. const COMPLETE_STATUS = 1; //完成
  29. /**
  30. * 记录申请售后商品
  31. * @param RefundApply $refund
  32. * @param array $orderGoods
  33. * @return bool
  34. */
  35. public static function saveData(RefundApply $refund, $orderGoods)
  36. {
  37. $log = self::where('order_goods_id', $orderGoods['id'])->where('refund_id', $refund)->first();
  38. $log = is_null($log) ? new self() : $log;
  39. $log->fill([
  40. 'refund_id' => $refund->id,
  41. 'order_id' => $refund->order->id,
  42. 'refund_type' => $refund->refund_type,
  43. 'order_goods_id' => $orderGoods['id'],
  44. 'send_num' => $orderGoods['total'],
  45. 'refund_total' => $orderGoods['total'],
  46. 'refund_price' => $orderGoods['refund_price'],
  47. ]);
  48. return $log->save();
  49. }
  50. public static function getRefundedGoods($order_goods_id)
  51. {
  52. return self::where('order_goods_id', $order_goods_id)->join('yz_order_refund', function ($join) {
  53. $join->on('yz_order_refund.id', '=', 'yz_order_refund_goods_log.refund_id')
  54. ->where('yz_order_refund.refund_type','!=', RefundApply::REFUND_TYPE_EXCHANGE_GOODS)
  55. ->where('yz_order_refund.status', '>=', RefundApply::COMPLETE);
  56. });
  57. }
  58. public function getGoodsIdAttribute()
  59. {
  60. return $this->orderGoods->goods_id;
  61. }
  62. public function getGoodsTitleAttribute()
  63. {
  64. return $this->orderGoods->title;
  65. }
  66. public function getGoodsOptionTitleAttribute()
  67. {
  68. return $this->orderGoods->goods_option_title;
  69. }
  70. public function getGoodsThumbAttribute()
  71. {
  72. return yz_tomedia($this->orderGoods->thumb);
  73. }
  74. public function scopePluginId(Builder $query, $pluginId = 0)
  75. {
  76. return parent::scopePluginId($query, $pluginId); // TODO: Change the autogenerated stub
  77. }
  78. public function scopeByOrderId(Builder $query, $order_id)
  79. {
  80. return $query->where('order_id', $order_id);
  81. }
  82. public function scopeByOrderGoodsId(Builder $query, $order_goods_id)
  83. {
  84. return $query->where('order_goods_id', $order_goods_id);
  85. }
  86. public function orderGoods()
  87. {
  88. return $this->hasOne(OrderGoods::class, 'id', 'order_goods_id');
  89. }
  90. public function hasOneOrderGoods()
  91. {
  92. return $this->hasOne(OrderGoods::class, 'id', 'order_goods_id');
  93. }
  94. public function belongsToOrderFund()
  95. {
  96. return $this->belongsTo(RefundApply::class, 'order_id', 'order_id');
  97. }
  98. }