| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- <?php
- /**
- * 厦门云联储网络科技有限公司
- * https://www.baokuaiyun.com
- * Copyright (c) 2023 爆块云 All rights reserved.
- */
- namespace app\models;
- use Yii;
- use yii\behaviors\TimestampBehavior;
- use yii\db\ActiveRecord;
- /**
- * This is the model class for table "{{%user_pay_month}}".
- *
- * @property integer $id
- */
- class UserPayMonth extends \yii\db\ActiveRecord
- {
-
- const TYPE_ORDER = 0; //商城订单
- const TYPE_REFUND = 1; //订单退款
- const TYPE_REPAY = 2; //还款
- /**
- * @inheritdoc
- */
- public static function tableName()
- {
- return '{{%user_pay_month}}';
- }
- public function behaviors()
- {
- return [
- [
- 'class' => 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;
- }
- }
|