| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <?php
- namespace addons\Store\common\models;
- use addons\Store\common\events\order\VideoOrderPaidEvent;
- use common\enums\StatusEnum;
- use common\models\base\BaseActiveRecord;
- use Yii;
- use yii\db\Exception;
- /**
- * This is the model class for table "qimall_addons_store_video_order".
- *
- * @property int $id
- * @property int $mall_id
- * @property int $store_id 门店id
- * @property int $user_id 会员id
- * @property int $video_id 视频id
- * @property string $order_no 订单编号
- * @property int $pay_status 支付状态:0:否;1:是
- * @property int $pay_time 付款时间
- * @property float $pay_money 实付金额
- * @property int $payment_type 支付类型
- * @property string $remark 备注
- * @property int $status 状态[0禁用 1启用 -1删除]
- * @property int $created_at 创建时间
- * @property int $updated_at 修改时间
- */
- class StoreVideoOrder extends BaseActiveRecord
- {
- /**
- * {@inheritdoc}
- */
- public static function tableName()
- {
- return '{{%addons_store_video_order}}';
- }
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['mall_id', 'store_id', 'user_id','video_id', 'pay_status', 'pay_time', 'payment_type', 'status', 'created_at', 'updated_at'], 'integer'],
- [['pay_money'], 'number'],
- [['order_no'], 'string', 'max' => 100],
- [['remark'], 'string', 'max' => 255],
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function attributeLabels()
- {
- return [
- 'id' => 'ID',
- 'mall_id' => 'Mall ID',
- 'store_id' => 'Store ID',
- 'user_id' => 'User ID',
- 'video_id' => 'Video ID',
- 'order_no' => 'Order No',
- 'pay_status' => 'Pay Status',
- 'pay_time' => 'Pay Time',
- 'pay_money' => 'Pay Money',
- 'payment_type' => 'Payment Type',
- 'remark' => 'Remark',
- 'status' => 'Status',
- 'created_at' => 'Created At',
- 'updated_at' => 'Updated At',
- ];
- }
- public static function setData($params)
- {
- try{
- $model = new self();
- $model->loadDefaultValues();
- if (!$model->load($params, '') || !$model->save()) throw new \PHPUnit\Util\Exception($model->getErrorMessage());
- return $model;
- }catch(\Exception $e){
- self::$static_error = $e->getMessage();
- return false;
- }
- }
- public static function pay($params, $peyment_type)
- {
- try {
- $trans = Yii::$app->db->beginTransaction();
- $model = self::findOne(['id' => $params['id'], 'status' => [StatusEnum::ENABLED]]);
- if (empty($model)) throw new Exception('订单不存在或已删除');
- if ($model->pay_status == StatusEnum::ENABLED) throw new Exception('订单已支付,请不要重复支付');
- $model->payment_type = $peyment_type;
- $model->pay_status = StatusEnum::ENABLED;
- $model->pay_time = time();
- $res = $model->save();
- if ($res === false) throw new Exception('修改订单失败:' . $model->getErrorMessage());
- $trans->commit();
- // 触发订单支付事件,事务提交完成后触发
- $event = new VideoOrderPaidEvent($model['mall_id']);
- $order['id'] = $model['id'];
- $order['operator_id'] = $params['operator_id'] ?? 0;
- $order['operator_name'] = $params['operator_name'] ?? '';
- Yii::$app->services->events->dispatch($event, $order, $event->listeners);
- return $model;
- } catch (Exception $e) {
- if (isset($trans)) $trans->rollback();
- self::$static_error = $e->getMessage();
- return false;
- }
- }
- }
|