Browse Source

金币不够,收益来凑

lizhen_gitee 1 year ago
parent
commit
18ad7e4ebd
1 changed files with 117 additions and 24 deletions
  1. 117 24
      application/common/model/Wallet.php

+ 117 - 24
application/common/model/Wallet.php

@@ -91,9 +91,6 @@ class Wallet extends Model
         $point = $accountType == 'jewel' ? 1 : 0;
         bcscale($point);
 
-        //钱包名称
-        $wallet_name = $this->getwalletname($accountType);
-
         //检测0
         $number = floatval( $number );
         if( $number == 0 )
@@ -114,30 +111,127 @@ class Wallet extends Model
             return $result;
         }
 
-        //之前的余额
-        $wallet_before = $wallet[$accountType];
+        //扣除金币单独方法
+        if(bccomp($number, 0) === -1 && $accountType == 'gold'){
+            //两个钱包的合,是否足够
+            $wallet_sum = bcadd($wallet['gold'],$wallet['jewel']);
+            if(bccomp(bcadd($wallet_sum, $number), 0) === -1)
+            {
+                $result['msg'] = '余额不足!';
+                return $result;
+            }
+
+            //gold不够,
+            if(bccomp(bcadd($wallet['gold'], $number), 0) === -1)
+            {
+                //gold全扣
+                //钱币操作
+                $data = array();
+                $data['user_id'] = $user_id;
+                $data['log_type'] = $logtype;
+                $data['money_type'] = $accountType;
+                $data['before'] = $wallet['gold'];
+                $data['change_value'] = $wallet['gold'];
+                $data['remain'] = 0;
+                $data['table'] = $table;
+                $data['table_id'] = $table_id;
+                $data['remark'] = $remark;
+                $data['createtime'] = time();
+                $data['updatetime'] = time();
+
+                $result = $this->wallet_do($user_id,$accountType,$data,$result);
+                if($result['status'] == false){
+                    return $result;
+                }
+
+                //jewel扣剩余部分
+                $jewel_change = bcadd($number,$wallet['gold']);
+                $jewel_after  = bcadd($wallet['jewel'],$jewel_change);
+                //钱币操作
+                $data = array();
+                $data['user_id'] = $user_id;
+                $data['log_type'] = $logtype;
+                $data['money_type'] = $accountType;
+                $data['before'] = $wallet['jewel'];
+                $data['change_value'] = $jewel_change;
+                $data['remain'] = $jewel_after;
+                $data['table'] = $table;
+                $data['table_id'] = $table_id;
+                $data['remark'] = $remark;
+                $data['createtime'] = time();
+                $data['updatetime'] = time();
+
+                $result = $this->wallet_do($user_id,$accountType,$data,$result);
+                if($result['status'] == false){
+                    return $result;
+                }
+
+            }else{
+                //gold自己扣
+
+                //之前的余额
+                $wallet_before = $wallet[$accountType];
+                //钱币操作
+                $data = array();
+                $data['user_id'] = $user_id;
+                $data['log_type'] = $logtype;
+                $data['money_type'] = $accountType;
+                $data['before'] = $wallet_before;
+                $data['change_value'] = $number;
+                $data['remain'] = bcadd($wallet_before, $number);
+                $data['table'] = $table;
+                $data['table_id'] = $table_id;
+                $data['remark'] = $remark;
+                $data['createtime'] = time();
+                $data['updatetime'] = time();
+
+                $result = $this->wallet_do($user_id,$accountType,$data,$result);
+                if($result['status'] == false){
+                    return $result;
+                }
+            }
+
+            return $result;
+
+        }else{
+            //gold的增加,jewel的增、减
+
+            //之前的余额
+            $wallet_before = $wallet[$accountType];
+
+            //正常方法
+            if(bccomp(bcadd($wallet_before, $number), 0) === -1)
+            {
+                $result['msg'] = '余额不足!';
+                return $result;
+            }
+
+            //钱币操作
+            $data = array();
+            $data['user_id'] = $user_id;
+            $data['log_type'] = $logtype;
+            $data['money_type'] = $accountType;
+            $data['before'] = $wallet_before;
+            $data['change_value'] = $number;
+            $data['remain'] = bcadd($wallet_before, $number);
+            $data['table'] = $table;
+            $data['table_id'] = $table_id;
+            $data['remark'] = $remark;
+            $data['createtime'] = time();
+            $data['updatetime'] = time();
+
+            $result = $this->wallet_do($user_id,$accountType,$data,$result);
+            if($result['status'] == false){
+                return $result;
+            }
 
-        //检查是否够扣
-        
-        if(bccomp(bcadd($wallet_before, $number), 0) === -1)
-        {
-            $result['msg'] = $wallet_name.'余额不足!';
             return $result;
         }
 
-        //钱币记录
-        $data = array();
-        $data['user_id'] = $user_id;
-        $data['log_type'] = $logtype;
-        $data['money_type'] = $accountType;
-        $data['before'] = $wallet_before;
-        $data['change_value'] = $number;
-        $data['remain'] = bcadd($wallet_before, $number);
-        $data['table'] = $table;
-        $data['table_id'] = $table_id;
-        $data['remark'] = $remark;
-        $data['createtime'] = time();
-        $data['updatetime'] = time();
+
+    }
+
+    private function wallet_do($user_id,$accountType,$data,$result){
 
         $log_table = 'user_gold_log';
         $rs2_id = Db::name($log_table)->insertGetId($data);
@@ -158,7 +252,6 @@ class Wallet extends Model
         $result['log_id'] = $rs2_id;
 
         return $result;
-
     }