OrderRefundModel.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. namespace addons\HuijuBill\common\models;
  3. use addons\HuijuBill\common\enums\StatusEnum;
  4. use common\models\order\OrderRefund;
  5. use Yii;
  6. use yii\db\ActiveRecord;
  7. /**
  8. * This is the model class for table "{{%addons_huiju_bill_order_refund}}".
  9. *
  10. * @property int $id
  11. * @property int $mall_id
  12. * @property int $refund_id 退款订单ID
  13. * @property string $sys_order_no 中台退款订单号
  14. * @property string $trx_no 汇聚退款订单号
  15. * @property string $out_trade_no 支付流水订单号
  16. * @property int $status 100:成功,101:失败,102:已创建
  17. * @property string $refund_order_no 售后订单号
  18. * @property float $refund_amount 退款金额
  19. * @property int $refund_at 退款成功时间
  20. * @property int $updated_at
  21. * @property int $created_at
  22. */
  23. class OrderRefundModel extends ActiveRecord
  24. {
  25. /**
  26. * {@inheritdoc}
  27. */
  28. public static function tableName()
  29. {
  30. return '{{%addons_huiju_bill_order_refund}}';
  31. }
  32. /**
  33. * {@inheritdoc}
  34. */
  35. public function rules()
  36. {
  37. return [
  38. [['mall_id', 'refund_id', 'sys_order_no', 'trx_no', 'out_trade_no', 'refund_order_no'], 'required'],
  39. [['mall_id', 'refund_id', 'status', 'refund_at', 'updated_at', 'created_at'], 'integer'],
  40. [['refund_amount'], 'number'],
  41. [['sys_order_no', 'trx_no', 'out_trade_no', 'refund_order_no'], 'string', 'max' => 32],
  42. ];
  43. }
  44. /**
  45. * {@inheritdoc}
  46. */
  47. public function attributeLabels()
  48. {
  49. return [
  50. 'id' => 'ID',
  51. 'mall_id' => 'Mall ID',
  52. 'refund_id' => 'Refund ID',
  53. 'sys_order_no' => 'Sys Order No',
  54. 'trx_no' => 'Trx No',
  55. 'out_trade_no' => 'Out Trade No',
  56. 'status' => 'Status',
  57. 'refund_order_no' => 'Refund Order No',
  58. 'refund_amount' => 'Refund Amount',
  59. 'refund_at' => 'Refund At',
  60. 'updated_at' => 'Updated At',
  61. 'created_at' => 'Created At',
  62. ];
  63. }
  64. /**
  65. * 新增退款记录
  66. *
  67. * @param array $data
  68. * [
  69. * 'mall_id' => 'Mall ID',
  70. * 'refund_id' => 'Refund ID',
  71. * 'sys_order_no' => 'Sys Order No',
  72. * 'trx_no' => 'Trx No',
  73. * 'refund_order_no' => 'Refund Order No',
  74. * 'out_trade_no' => 'Out Trade No',
  75. * 'refund_amount' => 'Refund Amount',
  76. * ]
  77. *
  78. * @return boolean
  79. */
  80. public static function addLog($data = [])
  81. {
  82. $data['created_at'] = $data['updated_at'] = time();
  83. empty($data['status']) && $data['status'] = StatusEnum::STATUS_102;
  84. if (
  85. isset($data['refund_id']) &&
  86. self::find()->where(['refund_id' => $data['refund_id']])->select('id')->one()
  87. ) {
  88. return true;
  89. }
  90. $model = new self();
  91. $model->load($data, '');
  92. return $model->save();
  93. }
  94. /**
  95. * 商城售后订单
  96. *
  97. * @return ActiveQuery
  98. */
  99. public function getMallOrderRefund()
  100. {
  101. return $this->hasOne(OrderRefund::class, ['id' => 'refund_id']);
  102. }
  103. /**
  104. * 设置为退款成功
  105. *
  106. * @return boolean
  107. */
  108. public function success()
  109. {
  110. $this->updated_at = $this->refund_at = time();
  111. $this->status = StatusEnum::STATUS_100;
  112. return $this->save();
  113. }
  114. /**
  115. * 设置为退款失败
  116. *
  117. * @return boolean
  118. */
  119. public function fail()
  120. {
  121. $this->updated_at = time();
  122. $this->status = StatusEnum::STATUS_101;
  123. return $this->save();
  124. }
  125. }