Sfoglia il codice sorgente

持续扣费,合并数据

lizhen_gitee 10 mesi fa
parent
commit
e4e12d1639
2 ha cambiato i file con 42 aggiunte e 15 eliminazioni
  1. 13 11
      application/api/controller/Match.php
  2. 29 4
      application/common/model/Wallet.php

+ 13 - 11
application/api/controller/Match.php

@@ -184,11 +184,12 @@ class Match extends Api
                 $data['free_money'] = $user_match_video_log_info['free_money'] + $money;
             }
 
-            $log_id = Db::name('user_match_video_log')->where(['id' => $user_match_video_log_info['id']])->setField($data);
-            if (!$log_id) {
+            $log_rs = Db::name('user_match_video_log')->where(['id' => $user_match_video_log_info['id']])->update($data);
+            if (!$log_rs) {
                 Db::rollback();
                 $this->error('扣费失败');
             }
+            $log_id = $user_match_video_log_info['id'];
         } else {
             //添加记录日志
             $data = [
@@ -221,7 +222,7 @@ class Match extends Api
             }
             //补贴给对方0.1金币
             $money = '10';
-            $rs = model('wallet')->lockChangeAccountRemain($to_user_id,'jewel',$money,21,$this->auth->username.'使用免费次数的补贴','user_match_video_log',$log_id);
+            $rs = model('wallet')->lockChangeAccountRemain($to_user_id,'jewel',$money,21,'与'.$this->auth->username.'视频通话,新人补贴','user_match_video_log',$log_id,$log_id);
             if($rs['status'] === false){
                 Db::rollback();
                 $this->error($rs['msg']);
@@ -230,7 +231,7 @@ class Match extends Api
 
             //有性别差,扣费
             if($price > 0){
-                $rs = model('wallet')->lockChangeAccountRemain($this->auth->id,'gold',-$price,11,'与'.$to_user_info['username'].'视频通话','user_match_video_log',$log_id);
+                $rs = model('wallet')->lockChangeAccountRemain($this->auth->id,'gold',-$price,11,'与'.$to_user_info['username'].'视频通话','user_match_video_log',$log_id,$log_id);
                 if($rs['status'] === false){
                     Db::rollback();
                     $this->error($rs['msg']);
@@ -238,7 +239,7 @@ class Match extends Api
             }
             //另一方加钱,0收费
             if($money > 0){
-                $rs = model('wallet')->lockChangeAccountRemain($to_user_id,'jewel',$money,21,'与'.$this->auth->username.'视频通话','user_match_video_log',$log_id);
+                $rs = model('wallet')->lockChangeAccountRemain($to_user_id,'jewel',$money,21,'与'.$this->auth->username.'视频通话','user_match_video_log',$log_id,$log_id);
                 if($rs['status'] === false){
                     Db::rollback();
                     $this->error($rs['msg']);
@@ -375,11 +376,12 @@ class Match extends Api
                 $data['free_money'] = $user_match_audio_log_info['free_money'] + $money;
             }
 
-            $log_id = Db::name('user_match_audio_log')->where(['id' => $user_match_audio_log_info['id']])->setField($data);
-            if (!$log_id) {
+            $log_rs = Db::name('user_match_audio_log')->where(['id' => $user_match_audio_log_info['id']])->update($data);
+            if (!$log_rs) {
                 Db::rollback();
                 $this->error('扣费失败');
             }
+            $log_id = $user_match_audio_log_info['id'];
         } else {
             //添加记录日志
             $data = [
@@ -412,7 +414,7 @@ class Match extends Api
             }
             //补贴给对方0.1金币
             $money = '10';
-            $rs = model('wallet')->lockChangeAccountRemain($to_user_id,'jewel',$money,22,$this->auth->username.'使用免费次数的补贴','user_match_audio_log',$log_id);
+            $rs = model('wallet')->lockChangeAccountRemain($to_user_id,'jewel',$money,22,'与'.$this->auth->username.'语音通话,新人补贴','user_match_audio_log',$log_id,$log_id);
             if($rs['status'] === false){
                 Db::rollback();
                 $this->error($rs['msg']);
@@ -421,7 +423,7 @@ class Match extends Api
 
             //有性别差,扣费
             if($price > 0){
-                $rs = model('wallet')->lockChangeAccountRemain($this->auth->id,'gold',-$price,12,'与'.$to_user_info['username'].'语音通话','user_match_audio_log',$log_id);
+                $rs = model('wallet')->lockChangeAccountRemain($this->auth->id,'gold',-$price,12,'与'.$to_user_info['username'].'语音通话','user_match_audio_log',$log_id,$log_id);
                 if($rs['status'] === false){
                     Db::rollback();
                     $this->error($rs['msg']);
@@ -429,7 +431,7 @@ class Match extends Api
             }
             //另一方加钱,0收费
             if($money > 0){
-                $rs = model('wallet')->lockChangeAccountRemain($to_user_id,'jewel',$money,22,'与'.$this->auth->username.'语音通话','user_match_audio_log',$log_id);
+                $rs = model('wallet')->lockChangeAccountRemain($to_user_id,'jewel',$money,22,'与'.$this->auth->username.'语音通话','user_match_audio_log',$log_id,$log_id);
                 if($rs['status'] === false){
                     Db::rollback();
                     $this->error($rs['msg']);
@@ -572,7 +574,7 @@ class Match extends Api
             }
             //补贴给对方0.1金币
             $money = '0.1';
-            $rs = model('wallet')->lockChangeAccountRemain($to_user_id,'jewel',$money,23,$this->auth->username.'使用免费次数的补贴','user_match_typing_log',$log_id);
+            $rs = model('wallet')->lockChangeAccountRemain($to_user_id,'jewel',$money,23,'与'.$this->auth->username.'聊天,新人补贴','user_match_typing_log',$log_id);
             if($rs['status'] === false){
                 Db::rollback();
                 $this->error($rs['msg']);

+ 29 - 4
application/common/model/Wallet.php

@@ -77,7 +77,7 @@ class Wallet extends Model
      * @return array[log_table]
      * @return array[log_id]
      */
-    public function lockChangeAccountRemain($user_id,$accountType='gold',$number,$logtype='',$remark='',$table='',$table_id=0,$isAdmin=false)
+    public function lockChangeAccountRemain($user_id,$accountType='gold',$number,$logtype='',$remark='',$table='',$table_id=0,$request_id = 0)
     {
         //初始化
         $result = array(
@@ -239,21 +239,46 @@ class Wallet extends Model
             $data['createtime'] = time();
             $data['updatetime'] = time();
 
-            $result = $this->wallet_do($user_id,$accountType,$data,$result);
+            $result = $this->wallet_do($user_id,$accountType,$data,$result,$request_id,$logtype);
             return $result;
         }
 
 
     }
 
-    private function wallet_do($user_id,$accountType,$data,$result){
+    private function wallet_do($user_id,$accountType,$data,$result,$request_id,$logtype){
 
+        //获取小数点
+        $point = 1;
+        if($accountType == 'agentjewel'){
+            $point = 2;
+        }
+        bcscale($point);
+
+        //表名
         $log_table = 'user_gold_log';
         if($accountType == 'agentjewel'){
             $log_table = 'user_agentjewel_log';
         }
 
-        $rs2_id = Db::name($log_table)->insertGetId($data);
+        //查询是否有消费记录
+        $user_log_info = [];
+        if ($request_id) { //目前只有视频通话,语音通话才走这里,$request_id === $table_id
+            $user_log_info = Db::name($log_table)->where(['user_id' => $user_id, 'log_type' => $logtype, 'request_id' => $request_id])->find();
+        }
+        if ($user_log_info) {
+            //修改钱币记录
+            $update_log = [];
+            $update_log['change_value'] = bcadd($user_log_info['change_value'], $data['change_value']);
+            $update_log['remain']       = $data['remain'];//拿最新的余额
+            $update_log['remark']       = $data['remark'];
+            $update_log['updatetime']   = $data['updatetime'];
+
+            $rs2_id = Db::name($log_table)->where(['id' => $user_log_info['id']])->update($update_log);
+        }else{
+            $rs2_id = Db::name($log_table)->insertGetId($data);
+        }
+
 
         //修改金额
         $rs1 = Db::name('user_wallet')->where(['user_id'=>$user_id])->update([$accountType => $data['remain']]);