TimestampBehavior::class, ] ]; } public static function saveLog($user_id, $money, $type = self::TYPE_ORDER, $order_id = 0, $order_no = '', $desc = "") { $t = \Yii::$app->db->beginTransaction(); try{ $form = new self(); $user_info = User::findOne($user_id); $form->store_id = $user_info->store_id; $form->user_id = $user_id; $form->money = $money; $form->type = $type; $form->before = $user_info->money_month - $user_info->money_month_used; $form->after = $form->before - $form->money; $form->order_id = $order_id; $form->order_no = $order_no; $form->desc = $desc; $admin = get_admin(); if($admin){ $form->operator = get_admin()->name; $form->operator_id = get_admin()->id; } if($type == self::TYPE_ORDER){ if($form->after < 0){ throw new \Exception('操作失败,额度不足'); } } if (!$form->save()) { \Yii::error([__METHOD__, $user_info->getErrors()]); throw new \Exception('操作失败,' . array_shift($form->getFirstErrors())); } $user_info->money_month_used += $money; if(!$user_info->save()){ \Yii::error([__METHOD__, $user_info->getErrors()]); throw new \Exception('操作失败,' . array_shift($user_info->getFirstErrors())); } $t->commit(); return [ 'code' => 0, 'msg' => '操作成功', 'data' => $form, 'user_info' => $user_info, ]; } catch (\Exception $ex) { \Yii::error($ex); $t->rollBack(); return [ 'code' => 1, 'msg' => $ex->getMessage(), ]; } } public static function addPay($user_id, $order, $desc = '') { try{ if(!is_object($order)){ $order = Order::findOne($order); } if(!$order){ throw new \Exception('操作失败,订单信息获取失败'); } $money = $order->pay_price; $res = self::saveLog($user_id, $money, self::TYPE_ORDER, $order->id, $order->order_no, $desc); return $res; } catch (\Exception $ex) { \Yii::error($ex); return [ 'code' => 1, 'msg' => $ex->getMessage(), ]; } } public static function refund($user_id, $order, $money, $desc = '') { try{ if(!is_object($order)){ $order = Order::findOne($order); } if(!$order){ throw new \Exception('操作失败,订单信息获取失败'); } $res = self::saveLog($user_id, -$money, self::TYPE_REFUND, $order->id, $order->order_no, $desc); return $res; } catch (\Exception $ex) { \Yii::error($ex); return [ 'code' => 1, 'msg' => $ex->getMessage(), ]; } } public static function repay($user_id, $money, $desc = '') { try{ $res = self::saveLog($user_id, -$money, self::TYPE_REPAY, 0, '', $desc); return $res; } catch (\Exception $ex) { \Yii::error($ex); return [ 'code' => 1, 'msg' => $ex->getMessage(), ]; } } public static function getPayByOrderId($store_id, $order_id) { $model = self::find()->where(['store_id' => $store_id, 'order_id' => $order_id, 'type' => self::TYPE_ORDER])->orderBy('id DESC')->one(); return $model; } }