AlipayAcitvityVoucherOrder.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. /**
  3. * 厦门云联储网络科技有限公司
  4. * https://www.baokuaiyun.com
  5. * Copyright (c) 2023 爆块云 All rights reserved.
  6. */
  7. namespace app\models;
  8. use Yii;
  9. use yii\db\ActiveRecord;
  10. use yii\behaviors\TimestampBehavior;
  11. use app\models\WechatConfig;
  12. use app\models\Option;
  13. use \app\models\AlipayAcitvityVoucherCoupon;
  14. /**
  15. * This is the model class for table "{{%coupon}}".
  16. *
  17. * @property int $id
  18. * @property int $alipay_activity_id
  19. * @property int $mini_id
  20. * @property string $event_time
  21. * @property string $voucher_id
  22. * @property string $user_id
  23. * @property string $trade_no
  24. * @property int $store_id
  25. * @property int $created_at 添加时间
  26. * @property int $is_delete 是否删除
  27. * @property int|null $mch_id 入驻商id
  28. * @property int|null $updated_at
  29. */
  30. class AlipayAcitvityVoucherOrder extends \yii\db\ActiveRecord
  31. {
  32. /**
  33. * {@inheritdoc}
  34. */
  35. public static function tableName()
  36. {
  37. return '{{%alipay_activity_voucher_order}}';
  38. }
  39. const IS_DELETE_YES = 1;//已删除
  40. const IS_DELETE_NO = 0;//未删除
  41. public function behaviors()
  42. {
  43. return [
  44. [
  45. 'class' => TimestampBehavior::class,
  46. 'attributes' => [
  47. ActiveRecord::EVENT_BEFORE_INSERT => ['updated_at', 'created_at'],
  48. ActiveRecord::EVENT_BEFORE_UPDATE => 'updated_at'
  49. ]
  50. ]
  51. ];
  52. }
  53. /**
  54. * {@inheritdoc}
  55. */
  56. public function rules()
  57. {
  58. return [
  59. [['notify_id', 'alipay_activity_id', 'event_time', 'voucher_id', 'user_id', 'trade_no'], 'required'],
  60. [['store_id', 'mini_id', 'mch_id', 'created_at', 'is_delete', 'updated_at'], 'safe']
  61. ];
  62. }
  63. /**
  64. * {@inheritdoc}
  65. */
  66. public function attributeLabels()
  67. {
  68. return [
  69. 'id' => 'ID',
  70. 'store_id' => 'Store ID',
  71. 'notify_id' => '事件id。可用于业务去重。',
  72. 'alipay_activity_id' => '支付宝支付券活动id',
  73. 'mini_id' => 'mini_id',
  74. 'event_time' => '事件创建时间',
  75. 'voucher_id' => '支付宝券ID',
  76. 'user_id' => '支付宝user_id账号',
  77. 'trade_no' => '核销交易订单号',
  78. 'created_at' => '添加时间',
  79. 'is_delete' => '是否删除',
  80. 'mch_id' => '入驻商id',
  81. 'updated_at' => 'Update Time',
  82. ];
  83. }
  84. public function beforeSave($insert) {
  85. if(!parent::beforeSave($insert)){
  86. return false;
  87. }
  88. if($insert){
  89. $coupon = AlipayAcitvityVoucherCoupon::findOne(['alipay_activity_id' => $this->alipay_activity_id]);
  90. if(!$coupon){
  91. $this->addError('alipay_activity_id', '未找到支付券活动');
  92. return false;
  93. }
  94. $this->store_id = $coupon->store_id;
  95. $this->mini_id = $coupon->mini_id;
  96. $this->mch_id = $coupon->mch_id;
  97. }
  98. return true;
  99. }
  100. public static function usedNotify($biz = []) {
  101. $model = self::findOne(['notify_id' => $biz['id']]);
  102. if($model){
  103. return true;
  104. }
  105. $model = new self();
  106. $model->notify_id = $biz['id'];
  107. $model->alipay_activity_id = $biz['activity_id'];
  108. $model->event_time = substr($biz['event_time'], 0, 10);
  109. $model->voucher_id = $biz['voucher_id'];
  110. $model->user_id = $biz['user_id'];
  111. $model->trade_no = $biz['trade_no'];
  112. $save = $model->save();
  113. if(!$save){
  114. \Yii::error([__METHOD__, $biz, $model->errors]);
  115. return false;
  116. }
  117. return true;
  118. }
  119. public static function getByOrder($trade_no) {
  120. $model = self::findOne(['trade_no' => $trade_no]);
  121. if($model){
  122. $coupon = AlipayAcitvityVoucherCoupon::findOne(['alipay_activity_id' => $model->alipay_activity_id]);
  123. return $coupon;
  124. }
  125. }
  126. }