stanley-king 7 years ago
parent
commit
e3d014f050
2 changed files with 38 additions and 17 deletions
  1. 6 5
      data/model/room.model.php
  2. 32 12
      helper/room/bargain_manager.php

+ 6 - 5
data/model/room.model.php

@@ -62,20 +62,21 @@ class roomModel extends Model
         return $this->table('room_msg')->insert($datas);
     }
 
-    public function getRoomExtend($dateid,$userid,$lock=false)
+    public function getRoomExtend($userid,$lock=false)
     {
-        return $this->table('room_extend')->field('*')->where(['userid' => $userid, 'dateid' => $dateid])->lock($lock)->find();
+        $item = $this->table('room_extend')->field('*')->where(['userid' => $userid])->lock($lock)->find();
+        return $item;
     }
-    public function addExtend($dateid,$userid,$datas)
+    public function addExtend($userid,$datas)
     {
         $datas['dateid'] = $dateid;
         $datas['userid'] = $userid;
 
         return $this->table('room_extend')->insert($datas);
     }
-    public function editExtend($dateid,$userid,$datas)
+    public function editExtend($userid,$datas)
     {
-        return $this->table('room_extend')->where(['userid' => $userid, 'dateid' => $dateid])->update($datas);
+        return $this->table('room_extend')->where(['userid' => $userid])->update($datas);
     }
     public function editBargain($bargain_id,$datas)
     {

+ 32 - 12
helper/room/bargain_manager.php

@@ -16,8 +16,12 @@ class room_extend
         $this->mParams = $params;
     }
 
-    public function bargain_count()
+    public function bargain_count($dateid)
     {
+        if($this->dateid() != $dateid) {
+            return 0;
+        }
+
         if(empty($this->mParams)) {
             return 0;
         }
@@ -25,6 +29,24 @@ class room_extend
             return intval($this->mParams['bargain_count']);
         }
     }
+    public function dateid() {
+        if(empty($this->mParams)) {
+            return 0;
+        }
+        else {
+            return intval($this->mParams['dateid']);
+        }
+    }
+    public function date_empty($dateid)
+    {
+        if(empty($this->mParams)) return true;
+        if($this->dateid() == $dateid) {
+            return false;
+        }
+        else {
+            return false;
+        }
+    }
 }
 
 class bargain_parameter
@@ -148,26 +170,24 @@ class bargain_manager
         }
 
         $mod_room = Model('room');
-        $info = $mod_room->getRoomExtend($this->mDateId,$userid);
+        $info = $mod_room->getRoomExtend($userid);
 
         $room_extend = new room_extend($info);
-        $count = $room_extend->bargain_count();
-
+        $count = $room_extend->bargain_count($this->mDateId);
         $value = $this->mParams->bargain($count);
         if($value === false) {
             return false;
         }
-        else {
-            if($count > 0) {
-                $mod_room->editExtend($this->mDateId,$userid,['bargain_count' => ['exp', 'bargain_count+1']]);
-            }
-            else {
-                $mod_room->addExtend($this->mDateId,$userid,['bargain_count' => 1]);
+        else
+        {
+            if(!$room_extend->date_empty($this->mDateId)) {
+                $mod_room->editExtend($userid,['bargain_count' => ['exp', 'bargain_count+1']]);
+            } else {
+                $mod_room->addExtend($userid,['bargain_count' => 1,'dateid' => $this->mDateId]);
             }
+
             $mod_room->editBargain($this->mBargainId,['discount' => ['exp',"discount+{$value}"],'user_num' => ['exp',"user_num+1"]]);
             $mod_room->addRoomMsg(['room_id' => $this->mRoomId,'member_id' => $userid, 'type' => proto_type::msg_type_bargain,'msg' => json_encode(['value' => $value]),'add_time' => time()]);
-
-
             return ['value' => $value,'success' => true,'discount' => $this->mParams->discount(),'user_num' => $this->mParams->user_num()];
         }
     }