Browse Source

add to local

stanley-king 7 years atrás
parent
commit
ffaa91c7eb

+ 9 - 0
data/model/room.model.php

@@ -46,4 +46,13 @@ class roomModel extends Model
         $room = $this->table('room')->field('*')->where(['type' => $room_type, 'room_creator' => $user])->limit(1)->find();
         return $room;
     }
+
+    public function getRoomMsg($room_id,$msg_type)
+    {
+        return $this->table('room')->field('*')->where(['room_id' => $room_id, 'type' => $msg_type])->order('add_time desc')->select();
+    }
+    public function addRoomMsg($datas)
+    {
+        return $this->table('room_msg')->insert($datas);
+    }
 }

+ 91 - 0
data/resource/mobile/bargain/css/list.css

@@ -0,0 +1,91 @@
+body {
+    background: url("../images/bargain_list_bg.jpg") no-repeat #ffffff;
+}
+.bargain_list {
+    margin-top: 466px;
+}
+.bargain_list li {
+    position: relative;
+    padding: 31px 0 44px 17px;
+    display: flex;
+}
+.bargain_list li:after {
+    content: "";
+    width: 738px;
+    height: 1px;
+    background: #f4f4f4;
+    position: absolute;
+    bottom: 0;
+    left: 6px;
+}
+.bargain_list li .goods_image {
+    position: relative;
+    width: 287px;
+    height: 270px;
+    margin-right: 18px;
+}
+.bargain_list li .start_date {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 270px;
+    background: rgba(0,0,0,0.7);
+    text-align: center;
+    line-height: 270px;
+    color: #ffffff;
+    font-size: 34px;
+}
+.bargain_list li .goods_name {
+    position: relative;
+    left: -15px;
+    font-size: 29px;
+    color: #000000;
+    line-height: 1.5;
+}
+.bargain_list li .goods_price {
+    font-size: 27px;
+    color: #ea302d;
+    margin-bottom: 32px;
+}
+.bargain_list .goods_details {
+    width: 411px;
+    padding-top: 17px;
+}
+.bargain_list .nums {
+    display: flex;
+    font-size: 20px;
+    color: #999999;
+}
+.bargain_list .nums > div {
+    flex: 1;
+}
+.bargain_list .bargained_num {
+    text-align: right;
+}
+.bargain_list .show_count_down {
+    margin-top: 10px;
+    font-size: 20px;
+}
+.launch {
+    text-align: right;
+}
+.launch_btn {
+    display: inline-block;
+    width: 204px;
+    height: 60px;
+    margin-top: 14px;
+    line-height: 60px;
+    text-align: center;
+    color: #ffffff;
+    border-radius: 10px;
+}
+.launch_btn.allow {
+    background: #ea302d;
+}
+.launch_btn.not_started {
+    background: #cccccc;
+}
+.bargain_over {
+    margin-top: 10px;
+}

+ 211 - 50
data/resource/mobile/bargain/css/main.css

@@ -6,7 +6,7 @@ body {
     color: #000000;
     font: 26px PingFang SC;
     line-height: 1;
-    background:#f13d5a;
+    background: #ef3c3e;
 }
 img {
     width: 100%;
@@ -16,6 +16,9 @@ img {
 a {
     text-decoration: none;
 }
+span {
+    cursor: pointer;
+}
 ul,li {
     list-style: none;
 }
@@ -27,37 +30,22 @@ ul,li {
     width: 750px;
     max-height: 100%;
     overflow: hidden;
-    /*overflow-y: auto;*/
-    /*overflow-x: hidden;*/
-    /*-webkit-overflow-scrolling: touch;*/
 }
 .goods {
     display: flex;
     position: relative;
-}
-.goods:after {
-    content: '';
-    position: absolute;
-    bottom: 0;
-    left: 0;
-    height: 1px;
-    width: 100%;
-    background: #eaeaea;
-}
-.content {
-    position: relative;
-    width: 700px;
-    margin: 0 auto 22px auto;
-    padding: 40px 0;
-    background: #fff;
+    margin-top: 20px;
 }
 .thumbnail {
     width: 220px;
     height: 220px;
+    margin-left: 33px;
+    border: 1px solid #f4f4f4;
 }
 .introduce {
     width: 380px;
     margin-left: 68px;
+    padding-top: 15px;
 }
 .introduce .goods_name {
     line-height: 1.5;
@@ -106,35 +94,39 @@ ul,li {
     color: #707070;
 }
 .time_color {
-    color: #000000;
+    display: inline-block;
+    color: #ffffff;
+    width: 29px;
+    height: 29px;
+    line-height: 29px;
+    text-align: center;
+    background: #000000;
+    vertical-align: middle;
+    font-size: 19px;
 }
 .bargain_handle {
     text-align: center;
     font-size: 33px;
     color: #ffffff;
-    margin-top: 50px;
-    margin-bottom: 68px;
+    margin-top: 25px;
+    margin-bottom: 33px;
 }
 .bargain_btn {
     display: inline-block;
-    height: 90px;
-    width: 262px;
+    height: 101px;
+    width: 718px;
     box-sizing: border-box;
     color: #ffffff;
     background: url(../images/bargain_btn.png) no-repeat;
     background-size: 100% 100%;
-    line-height: 90px;
-    text-align: center;
-    margin-right: 62px;
-    padding-left: 56px;
 }
 .join_btn {
     display: inline-block;
-    height: 90px;
-    width: 262px;
+    height: 137px;
+    width: 750px;
     box-sizing: border-box;
     color: #ffffff;
-    background: url("../images/join_btn.png") no-repeat;
+    background: url("../images/join_btn.png?1") no-repeat;
     background-size: 100% 100%;
     line-height: 90px;
     text-align: center;
@@ -147,30 +139,66 @@ ul,li {
     vertical-align: middle;
     margin-right: 20px;
 }
+.bargain_users {
+    width: 716px;
+    margin: 0 auto;
+    border-radius: 20px;
+    background: #f25559;
+    padding: 43px 0;
+}
 .bargain_users .title {
-    box-sizing: border-box;
-    font-size: 20px;
-    color: #b2b2b4;
-    padding-left: 84px;
-    margin-bottom: 20px;
+    width: 649px;
+    margin: 0 auto;
+    background: url("../images/line.png") center no-repeat;
+    background-size: 100%;
+    font-size: 30px;
+    color: #ffffff;
+    text-align: center;
 }
 .rules_box {
-    width: 700px;
-    margin: 0 auto;
+    width: 718px;
+    margin: 40px auto 0 auto;
 }
 .users_list {
     position: relative;
     top: 0;
-    padding-left: 50px;
 }
 .users_list li {
-    background: #ffffff;
-    height: 70px;
-    line-height: 70px;
+    display: flex;
+    align-items:center;
+    color: #ffffff;
+    padding: 10px 20px;
+}
+.users_list li .head_portrait {
+    width: 90px;
+    height: 90px;
+    border-radius: 200px;
+    box-sizing: border-box;
+    border: 2px solid #f68a8d;
+    overflow: hidden;
+    margin-right: 21px;
+}
+.users_list li .msg {
+    font-size: 27px;
+    color: #fad952;
+}
+.users_list li .user {
+    width: 350px;
+    font-size: 28px;
+    line-height: 1.3;
+}
+.wallet {
+    display: inline-block;
+    width: 63px;
+    height: 76px;
+    background: url("../images/wallet.png") no-repeat;
+    background-size: 100% 100%;
+    vertical-align: middle;
+    margin-right: 20px;
 }
 .rules {
-    width: 700px;
-    height: 809px;
+    width: 718px;
+    height: 352px;
 }
 .hide {
     display: none;
@@ -244,16 +272,17 @@ ul,li {
     height: 400px;
     -webkit-transform: translate(-50%,-50%);
 }
-.slide_containe {
-    height: 280px;
+.slide_container {
+    max-height: 550px;
+    margin-top: 30px;
     overflow: hidden;
 }
 .stamp {
     width: 300px;
     height: 230px;
     position: absolute;
-    right: 140px;
-    top: 30px;
+    right: 110px;
+    top: 10px;
     z-index: 10;
 }
 .stamp_scale {
@@ -341,6 +370,138 @@ ul,li {
 }
 .main {
     background: url("../images/bg.jpg") no-repeat;
-    padding-top: 558px;
+    padding-top: 299px;
     box-sizing: border-box;
 }
+.bargain_details {
+    box-sizing: border-box;
+    position: relative;
+    width: 714px;
+    margin: 0 auto;
+    border-radius: 20px;
+    background: #fff;
+    padding: 0 22px 22px 22px;
+}
+.bargain_details .head_portrait {
+    position: absolute;
+    top: 90px;
+    left: 98px;
+    width: 124px;
+    height: 124px;
+    border-radius: 100px;
+    border: 3px solid #ffffff;
+    box-sizing: border-box;
+}
+.bargain_details .sponsor {
+    position: absolute;
+    top: -154px;
+    left: 200px;
+    width: 306px;
+    height: 182px;
+    background: url(../images/light.png) no-repeat;
+    background-size: 100%;
+}
+.bargain_details .sponsor_name {
+    position: absolute;
+    bottom: -77px;
+    left: 108px;
+}
+.bargain_details .title {
+    position: relative;
+    color: #999999;
+    font-size: 34px;
+    text-align: center;
+    padding-top: 134px;
+}
+.bargain_details .title:after {
+    content: "";
+    position: absolute;
+    left: 0;
+    bottom: 0;
+    width: 670px;
+    height: 1px;
+    background: #f3f3f3;
+}
+.bargain_details .title h3 {
+    font-size: 39px;
+    margin-bottom: 20px;
+}
+.bargain_details .title p {
+    padding-bottom: 30px;
+}
+.logo {
+    display: inline-block;
+    position: relative;
+    width: 224px;
+    color: #ea302d;
+    text-align: center;
+}
+.logo:before {
+    content: "";
+    position: absolute;
+    top: -12px;
+    left: 20px;
+    width: 14px;
+    height: 16px;
+    background: url(../images/sign.png) no-repeat;
+    background-size: 100%;
+}
+
+.logo:after {
+    content: "";
+    position: absolute;
+    bottom: -9px;
+    right: 20px;
+    width: 14px;
+    height: 16px;
+    background: url(../images/sign.png) no-repeat;
+    background-size: 100%;
+    -webkit-transform: rotate(180deg);
+}
+.pop {
+    position: fixed;
+    top: 0;
+    left: 0;
+    bottom: 0;
+    right: 0;
+    background: rgba(0,0,0,0.7);
+    z-index: 999;
+}
+.pop .bargain_pop {
+    position: absolute;
+    top: 148px;
+    left: 77px;
+    width: 596px;
+    height: 751px;
+    background: url("../images/bargain_pop.jpg") no-repeat;
+    background-size: 100% 100%;
+    border-radius: 20px;
+    text-align: center;
+}
+.pop .close_btn {
+    position: absolute;
+    top: -22px;
+    right: -27px;
+    width: 72px;
+    height: 72px;
+    background: url("../images/close_btn.png") no-repeat;
+    background-size: 100% 100%;
+}
+.pop .bargain_msg {
+    margin-top: 117px;
+    margin-bottom: 21px;
+    font-size: 61px;
+    color: #ea302d;
+}
+.pop .bargain_goods_msg {
+    font-size: 36px;
+}
+.join_btn_2 {
+    position: absolute;
+    left: 109px;
+    bottom: 52px;
+    width: 375px;
+    height: 100px;
+    background: url("../images/join_btn2.jpg") no-repeat;
+    background-size: 100% 100%;
+}

BIN
data/resource/mobile/bargain/images/bargain_btn.png


BIN
data/resource/mobile/bargain/images/bargain_list_bg.jpg


BIN
data/resource/mobile/bargain/images/bargain_pop.jpg


BIN
data/resource/mobile/bargain/images/bg.jpg


BIN
data/resource/mobile/bargain/images/close_btn.png


BIN
data/resource/mobile/bargain/images/join_btn.png


BIN
data/resource/mobile/bargain/images/join_btn2.jpg


BIN
data/resource/mobile/bargain/images/light.png


BIN
data/resource/mobile/bargain/images/line.png


BIN
data/resource/mobile/bargain/images/rules.png


BIN
data/resource/mobile/bargain/images/sign.png


BIN
data/resource/mobile/bargain/images/wallet.png


+ 21 - 6
data/resource/mobile/comm/websocket.js

@@ -1,6 +1,8 @@
 var WebsocketConnect = function(wshost,fAutoConnect,fAutojoin,callbacks,room_msg,msg_handler)
 {
-
+    if(!wshost) {
+        return;
+    }
     var socket= null;
     var fauto_connect = fAutoConnect;
     var fauto_join = fAutojoin;
@@ -81,11 +83,20 @@ var WebsocketConnect = function(wshost,fAutoConnect,fAutojoin,callbacks,room_msg
         var jsonobject = {
             op:"join",
             room:room_msgs.room,
-            room_key:room_msgs.roomkey,
-            code:'bargain'
+            room_key:room_msgs.roomkey
         };
         socket.send(JSON.stringify(jsonobject));
     };
+
+    var bargain = function(){
+        var jsonobject = {
+            op:"bargain",
+            room:room_msgs.room,
+            room_key:room_msgs.roomkey
+        };
+        socket.send(JSON.stringify(jsonobject));
+    };
+
     var Close = function(){
         socket.close();
     };
@@ -132,8 +143,11 @@ var WebsocketConnect = function(wshost,fAutoConnect,fAutojoin,callbacks,room_msg
                     msg_handler.message(datasJsonParse);
                 }
             }
-            else {
-
+            else if(op == 'bargain'){
+                    msg_handler.message(datasJsonParse);
+            }
+            else if(op == 'ret_bargain') {
+                    msg_handler.message(datasJsonParse);
             }
         };
         socket.onclose = function(){
@@ -155,6 +169,7 @@ var WebsocketConnect = function(wshost,fAutoConnect,fAutojoin,callbacks,room_msg
         getMeId:meId,
         setMeId:function(id){
             meId = id;
-        }
+        },
+        bargain:bargain
     }
 };

+ 6 - 2
helper/room/bargain_room.php

@@ -90,7 +90,7 @@ class bargain_room extends base_room
         $ret = $this->bargain($room_key);
         if($ret !== false) {
             $this->add_return([$room_key],'ret_bargain',['value' => $ret]);
-            $this->add_broad('bargain_goods',['value' => $ret]);
+            $this->add_broad('bargain',['value' => $ret]);
             return true;
         }
         else {
@@ -100,6 +100,10 @@ class bargain_room extends base_room
 
     private function bargain($room_key)
     {
-        return 3;
+        $userinfo = $this->find($room_key);
+        if($userinfo == false) return false;
+        $value = 3;
+        $this->record_message($userinfo['userid'],proto_type::msg_type_bargain,json_encode(['value' => $value]));
+        return $value;
     }
 }

+ 34 - 3
helper/room/base_room.php

@@ -144,13 +144,44 @@ abstract class base_room extends base_info
         $userinfo = $this->find($room_key);
         if($userinfo == false) return false;
 
-        $type = $input['type'];
-        $content = $input['content'];
-        if(empty($content)) return false;
+        $type = $this->validate_type($input['type']);
+        $content = $this->validate_content($input['content']);
 
+        if($type == false || $content == false) return false;
+
+        $this->record_message($userinfo['userid'],$type,$content);
         $this->add_broad('message',['from' => $userinfo,'type' => $type,'content' => $content]);
+
         return true;
     }
+    protected function validate_type($type,$content)
+    {
+        $stype = strtolower($type);
+
+        if($stype == proto_type::msg_stype_text) {
+            return proto_type::msg_type_text;
+        }
+        elseif($stype == proto_type::msg_stype_pic) {
+            return proto_type::msg_type_text;
+        }
+        elseif($stype == proto_type::msg_stype_bargain) {
+            return proto_type::msg_type_bargain;
+        }
+        else {
+            return false;
+        }
+    }
+    protected function validate_content($content)
+    {
+        return $content;
+    }
+
+    protected function record_message($userid,$type,$content)
+    {
+        $mod_room = Model('room');
+
+        $mod_room->addRoomMsg(['room_id' => $this->mRoomid,'member_id' => $userid, 'type' => $type,'msg' => $content,'add_time' => time()]);
+    }
 
     public function return_msgs()
     {

+ 15 - 0
helper/room/proto_type.php

@@ -26,6 +26,21 @@ class proto_type
     const room_shake_bonus   = 4;
 
     const act_access = 'access';
+
+
+    //[1,20) 基本的消息
+    const msg_stype_text = 'text';
+    const msg_stype_pic  = 'pic';
+
+    //[20...) 其它自定义类型消息
+    const msg_stype_bargain = 'bargain';
+
+    //[1,20) 基本的消息
+    const msg_type_text = 1;
+    const msg_type_pic  = 2;
+
+    //[20...) 其它自定义类型消息
+    const msg_type_bargain = 20;
 }
 
 class base_info

+ 80 - 29
mobile/control/bargain.php

@@ -18,13 +18,11 @@ class bargainControl extends mobileControl
     {
         parent::__construct();
     }
-
     public function createOp()
     {
         if (!session_helper::logined()) {
             throw new UnloginException();
         }
-
     }
 
     public function openOp()
@@ -38,11 +36,25 @@ class bargainControl extends mobileControl
             return self::outsuccess(['direct_uri' => $url],"redirect");
         }
 
+        if(!session_helper::logined()) {
+            throw new UnloginException();
+        }
+
         if(!$this->validate($bargain_id)) {
             return self::outerr(errcode::ErrParamter);
         }
         else {
-            return self::outsuccess(['tpl' => new tpl_bargain($bargain_id)],'game/bargain');
+            global $config;
+            $webaddr = $config['access_addr'];
+
+            $_SESSION['client_type'] = "wap";
+            $tpl = new tpl_bargain($bargain_id);
+            $ret = room\factory_client::instance()->invite($tpl->room(),session_helper::memberid());
+            if($ret != false) {
+                $ret['addr'] = $webaddr;
+            }
+
+            return self::outsuccess(['tpl' => $tpl,'room' => $ret],'bargain/bargain');
         }
     }
 
@@ -127,48 +139,87 @@ class bargainControl extends mobileControl
 class tpl_bargain
 {
     private $mBargain;
+    private $mSummary;
+
     public function __construct($bargain_id)
     {
         $mod_bargain = Model('room_bargain');
         $info = $mod_bargain->getBargainById($bargain_id);
         $this->mBargain = new room\bargain($info);
+        $goods_id = $this->mBargain->goods_id();
+        $helper = new goods_helper();
+        $ret = $helper->summary([$goods_id],$related_goods);
+        $this->mSummary = $ret['summary'][0];
     }
-
-    public function show()
+    public function room()
     {
-        $this->show_goods();
+        return $this->mBargain->room();
     }
 
-    private function show_goods()
+    public function show_goods()
     {
-        $goods_id = $this->mBargain->goods_id();
-        $helper = new goods_helper();
-        $ret = $helper->summary([$goods_id],$related_goods);
-        $summary = $ret['summary'][0];
-
+        $summary = $this->mSummary;
         $cur_price = $summary['goods_price'] - $this->mBargain->discount();
 
-        $str = "<div class=\"goods\">
-                <div class=\"thumbnail\">
-                    <img src=\"{$summary['goods_image_url']}\" alt=\"\">
-                </div>
-                <div class=\"introduce\">
-                    <p class=\"goods_name\">{$summary['goods_mobile_name']}</p>
-                    <div class=\"price_describe\">
-                        <div class=\"price_box\">
-                            <span class=\"current_price\" id=\"current_price\">现价{$cur_price}</span><span class=\"original_price\">{$summary['goods_price']}</span>
+        $str = " <div class=\"goods\">
+                    <div class=\"thumbnail\">
+                        <img src=\"{$summary['goods_image_url']}\" alt=\"\">
+                    </div>
+                    <div class=\"introduce\">
+                        <p class=\"goods_name\">{$summary['goods_mobile_name']}</p>
+                        <div class=\"price_describe\">
+                            <div class=\"price_box\">
+                                <span class=\"current_price\" id=\"current_price\">现价{$cur_price}</span>
+                            </div>
                         </div>
-                        <div class=\"rush_num\">
-                            <span>已抢2030份</span>
+                        <div class=\"count_down\">
+                            <p class=\"bargain_over hide\">该砍价已结束</p>
+                            <p class=\"show_count_down\">剩:<span class=\"days time_color\"></span> 天 <span class=\"hours time_color\"></span> :<span class=\"minutes time_color\"></span> :<span class=\"seconds time_color\"></span> 结束</p>
                         </div>
                     </div>
-                    <div class=\"count_down\">
-                        <p class=\"bargain_over hide\">该砍价已结束</p>
-                        <p class=\"show_count_down\">剩: <span class=\"days time_color\"></span> 天 <span class=\"hours time_color\"></span>:<span class=\"minutes time_color\"></span> :<span class=\"seconds time_color\"></span> 结束</p>
+                    <img src=\"". RESOURCE_SITE_URL ."/mobile/bargain/images/stamp.png\" id=\"stamp\" class=\"stamp hide stamp_scale\">
+                </div>";
+        echo $str;
+    }
+
+    public function show_friends()
+    {
+        $str = "<li>
+                    <div class=\"head_portrait\">
+                         <img src=\"". RESOURCE_SITE_URL. "/mobile/bargain/images/head_icon.png\" alt=\"\">
                     </div>
-                </div>
-                <img src=\"<?php echo RESOURCE_SITE_URL; ?>/mobile/bargain/images/stamp.png\" id=\"stamp\" class=\"stamp hide stamp_scale\">
-            </div>";
+                    <div class=\"user\">
+                         <div class=\"user_name\">小东</div>
+                              <div class=\"user_msg\">绑架老板打劫福利</div>
+                         </div>
+                         <div class=\"bargain_msg\">
+                              <span class=\"wallet\"></span><span class=\"msg\">砍掉1.8元</span>
+                         </div>
+               </li>";
         echo $str;
     }
+
+    private function records()
+    {
+        $roomid = $this->mBargain->room();
+        $mod_room = Model('room');
+        $records = $mod_room->getRoomMsg($roomid,room\proto_type::msg_type_bargain);
+    }
+
+    public function left_time()
+    {
+        return $this->mBargain->over_time() - time();
+    }
+    public function share_url()
+    {
+    }
+    public function share_title()
+    {
+    }
+    public function share_image()
+    {
+    }
+    public function share_subtitle()
+    {
+    }
 }

+ 113 - 45
mobile/templates/default/game/bargain.php

@@ -14,27 +14,34 @@
 <div class="maincontent" id="wrapper">
     <div class="main">
         <div class="content">
-            <?php $output['tpl']->show(); ?>
+            <div class="bargain_details">
+                <div class="sponsor">
+                    <img class="head_portrait" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/bargain/images/head_icon.png">
+                    <span class="sponsor_name">熊猫美妆</span>
+                </div>
+                <header class="title">
+                    <h3>我在<span class="logo">熊猫美妆</span>发现一件好货</h3>
+                    <p>帮我砍到0元免费拿吧!</p>
+                </header>
+                <?php $output['tpl']->show_goods(); ?>
+            </div>
+
 
             <div class="bargain_handle">
-                <span class="bargain_btn" id="bargain_btn">帮砍一刀</span>
-                <span class="join_btn" id="join_btn">我要参加</span
+                <span class="bargain_btn" id="bargain_btn"></span>
+                <span class="join_btn hide" id="join_btn"></span>
             </div>
             <div class="bargain_users">
-                <p class="title">看看小伙伴说了啥?</p>
-                <div class="slide_containe">
+                <div class="title">我的砍价帮</div>
+                <div class="slide_container">
                     <ul class="users_list" id="slide_list">
-                        <li><img class="avatar" src="http://img1.imgtn.bdimg.com/it/u=4026848961,760222886&fm=214&gp=0.jpg">小西1说:希望多砍点,加油!</li>
-                        <li><img class="avatar" src="http://img1.imgtn.bdimg.com/it/u=4026848961,760222886&fm=214&gp=0.jpg">小西2说:希望多砍点,加油!</li>
-                        <li><img class="avatar" src="http://img1.imgtn.bdimg.com/it/u=4026848961,760222886&fm=214&gp=0.jpg">小西3说:希望多砍点,加油!</li>
-                        <li><img class="avatar" src="http://img1.imgtn.bdimg.com/it/u=4026848961,760222886&fm=214&gp=0.jpg">小西4说:希望多砍点,加油!</li>
-                        <li><img class="avatar" src="http://img1.imgtn.bdimg.com/it/u=4026848961,760222886&fm=214&gp=0.jpg">小西5说:希望多砍点,加油!</li>
+                        <?php $output['tpl']->show_friends();?>
                     </ul>
                 </div>
             </div>
         </div>
         <div class="rules_box">
-            <img src="<?php echo RESOURCE_SITE_URL; ?>/mobile/bargain/images/rules.jpg" class="rules">
+            <img src="<?php echo RESOURCE_SITE_URL; ?>/mobile/bargain/images/rules.png" class="rules">
         </div>
     </div>
 </div>
@@ -50,15 +57,43 @@
     </div>
 </div>
 
+<div class="pop hide">
+    <div class="bargain_pop hide scale">
+        <span class="close_btn"></span>
+        <p class="bargain_msg">您已成功帮砍<span class="ret_bargain"></span>元</p>
+        <p class="bargain_goods_msg">还差<span class=""></span>元他就可0元拿下心仪商品</p>
+        <span class="join_btn_2"></span>
+    </div>
+</div>
+
+<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js?<?php echo bonus_version(); ?>"></script>
+<script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/wx_share.js?<?php echo bonus_version(); ?>"></script>
 <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/shake/js/zepto.min.js"></script>
 <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/animate.js"></script>
 <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/iscroll.js"></script>
 <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/websocket.js"></script>
 <script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/new_bridge.js"></script>
+<script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/qzact/common/share/share.js?<?php echo bonus_version(); ?>"></script>
+
 <script type="text/javascript">
 
+    var url         = "<?php echo $output['tpl']->share_url(); ?>";
+    var title       = "<?php echo $output['tpl']->share_title(); ?>";
+    var img_url     = "<?php echo $output['tpl']->share_image(); ?>";
+    var sub_title   = "<?php echo $output['tpl']->share_subtitle(); ?>\n\n点击领取";
+
+    weiXinShare.init({
+        title:title,
+        desc:sub_title,
+        link:url,
+        imgUrl:img_url
+    });
+
     window.onload = function(){
-        myScroll = new IScroll('#wrapper');
+        var myScroll = new IScroll('#wrapper',{
+            click: true,
+            taps:true
+        });
     };
 
     //发送弹幕
@@ -70,9 +105,9 @@
         {
             return {
                 posY :parseInt(Math.random() * (380 - 20) + 20),
-                avatar: data.get_from().avatar,
-                nickname : data.get_from().nickname,
-                msg:data.get_msg()
+                avatar: data.avatar,
+                nickname : data.nickname,
+                msg:data.msg
             }
         };
         this.add = function(send_data){
@@ -83,8 +118,9 @@
         {
             if(this.sendData)
             {
-                if(this.sendData.msg > 0) {
-                    this.barrage_html = '<div class="barrage" style="top:'+this.sendData.posY+'%"><img src="'+this.sendData.avatar+'">'+this.sendData.nickname+'砍了<span class="price">'+this.sendData.msg+'元</span></div>';
+
+                if(this.sendData.msg != null) {
+                    this.barrage_html = '<div class="barrage" style="top:'+this.sendData.posY+'%"><img src="'+this.sendData.avatar+'">'+this.sendData.nickname+'说:<span class="price">'+this.sendData.msg+'</span></div>';
                 }
                 $('body').append(this.barrage_html);
                 this.sendData = null;
@@ -106,10 +142,9 @@
     };
 
     var barrage = new Barrage();
-
-    var room    = "<?php echo $output['room']; ?>" || 0;
-    var roomkey = "<?php echo $output['room_key']; ?>" || 0;
-    var addr    =  "<?php echo $output['addr']; ?>" || null;
+    var room    =  <?php echo $output['room']['room']; ?>;
+    var roomkey = "<?php echo $output['room']['room_key']; ?>";
+    var addr    = "<?php echo $output['room']['addr']; ?>";
 
     var room_msgs = {
         room    : room,
@@ -138,15 +173,33 @@
     function message(datas)
     {
         var jsonDatas = new websocket.Json_parse(datas);
-        var msg_type = datas.content.type;
-        var msg_from_userId = datas.content.from.userid;
+        var msg_type = datas.op;
+        console.log(datas);
         try
         {
-            if(msg_type == 'message') {
-                if(msg_from_userId !== websocket.getMeId) {
-                    barrage.add(jsonDatas).send();
-                }
+            if(msg_type == 'bargain') {
+                var price = datas.content.value;
+                priceChange(price);
+            }
+            else if(msg_type =='ret_bargain') {
+                var ret_bargain_price = datas.content.value;
+                var image = new Image();
+                image.src = "<?php echo RESOURCE_SITE_URL; ?>/mobile/bargain/images/bargain_pop.jpg";
+                image.onload = function(){
+                    $('.bargain_pop').removeClass('hide');
+                };
+                $('.ret_bargain').text(ret_bargain_price);
             }
+            else if(msg_type = 'message') {
+                var msg = datas.content.content;
+                var avatar = datas.content.from.avatar;
+                var nickname = datas.content.from.nickname;
+                barrage.add({
+                    avatar: avatar,
+                    nickname : nickname,
+                    msg: msg
+                }).send();
+            } 
         }
         catch (e) {
             alert(e.message)
@@ -158,11 +211,9 @@
         websocket.setMeId(datas.content.me);
     }
     //倒计时
-    var over_time = (new Date(2018,0,18).getTime())/1000;
-
+    var count_down_time = <?php echo $output['tpl']->left_time(); ?>;
     var bargain_count_down = setInterval(function(){
-        var local_time = (new Date().getTime())/1000;
-        var count_down_time = (over_time - local_time).toFixed(0);
+         count_down_time = count_down_time - 1;
         formatDuring(count_down_time);
     },1000);
 
@@ -171,6 +222,7 @@
         var hours = parseInt(mss / 60 / 60 % 24, 10); //计算剩余的小时
         var minutes = parseInt(mss / 60 % 60, 10);//计算剩余的分钟
         var seconds = parseInt(mss % 60, 10);//计算剩余的秒数
+
         if(days <= 0 && hours <= 0 && minutes <= 0 && seconds <= 0) {
             clearInterval(bargain_count_down);
             $('.show_count_down').addClass('hide');
@@ -203,15 +255,20 @@
             this.play();
         };
         this.play = function(){
-            this.slide_play = setInterval(function(){
-                var $first = $parent.find('li').first();
-                var height = $first.height();
-                $first.animate({
-                    marginTop: -height + 'px'
-                },'ease-out',function(){
-                    $parent.append($first.css('marginTop',0));
-                })
-            },2000);
+            if($parent.children('li').length < 5){
+                 return;
+            }
+            else {
+                this.slide_play = setInterval(function(){
+                    var $first = $parent.find('li').first();
+                    var height = $first.height();
+                    $first.animate({
+                        marginTop: -height + 'px'
+                    },'ease-out',function(){
+                        $parent.append($first.css('marginTop',0));
+                    })
+                },2000);
+            }
         };
         this.addChild = function(msg){
             this.stop();
@@ -236,7 +293,7 @@
 
     //价格变更
     var priceAnimated = false;
-    var priceChange = function(){
+        function priceChange(nprice){
         if(priceAnimated) {
             return;
         }
@@ -249,7 +306,7 @@
             setTimeout(function(){
                 var current_price = document.querySelector('#current_price').innerHTML;
                 var price = current_price.replace('现价',"");
-                document.querySelector('#current_price').innerHTML = "现价"+((price - random()).toFixed(2));
+                document.querySelector('#current_price').innerHTML = "现价"+(nprice.toFixed(2));
                 $('.current_price').addClass('scale');
                 document.getElementById('current_price').addEventListener('webkitAnimationEnd',function(){
                     $('.current_price').removeClass('scale');
@@ -260,10 +317,18 @@
     };
 
     //砍价按钮
-    document.querySelector('#bargain_btn').addEventListener('click',function(){
-        priceChange();
+    $('#bargain_btn').on('click',function(){
+        $(this).addClass('hide');
+        $('.pop').removeClass('hide');
+        $('.join_btn').removeClass('hide');
+        websocket.bargain();
+    });
+
+    $('.close_btn').on('click',function(){
+        $('.pop').addClass('hide');
     });
 
+
     //发送信息
     $('#send_btn').on('click',function(){
         var sendMsg = $('#send_msg').val();
@@ -285,7 +350,10 @@
     $('#download_app').on('click',function(){
         download_app();
     });
-    $('#join_btn').on('click',function(){
+    $('.join_btn_2').on('click',function(){
+        download_app();
+    });
+    $('.join_btn').on('click',function(){
         download_app();
     });
 </script>

+ 132 - 0
mobile/templates/default/bargain/bargain_list.php

@@ -0,0 +1,132 @@
+<?php defined('InShopNC') or exit('Access Invalid!'); ?>
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>砍价团</title>
+    <meta name="viewport" content="width=750,user-scalable=no,target-densitydpi=device-dpi">
+    <meta name="format-detection" content="telephone=no">
+    <link rel="stylesheet" href="<?php echo RESOURCE_SITE_URL; ?>/mobile/bargain/css/main.css?<?php echo bonus_version(); ?>"/>
+    <link rel="stylesheet" href="<?php echo RESOURCE_SITE_URL; ?>/mobile/bargain/css/list.css?<?php echo bonus_version(); ?>"/>
+</head>
+<body>
+    <div class="container">
+        <ul class="bargain_list">
+            <li>
+                <div class="goods_image">
+                    <img src="http://img2.imgtn.bdimg.com/it/u=2909519701,1856442059&fm=11&gp=0.jpg">
+                </div>
+                <div class="goods_details">
+                    <p class="goods_name">【雪花秀】与润修复面膜</p>
+                    <div class="goods_price">原价 380 元</div>
+                    <div class="nums">
+                        <div class="gross">共20份</div>
+                        <div class="bargained_num">已抢100份</div>
+                    </div>
+                    <p class="bargain_over hide">该砍价已结束</p>
+                    <p class="show_count_down">剩:<span class="days time_color"></span> 天 <span class="hours time_color"></span> :<span class="minutes time_color"></span> :<span class="seconds time_color"></span> 结束</p>
+                    <div class="launch">
+                        <span class="launch_btn allow">砍价0元得</span>
+                    </div>
+                </div>
+            </li>
+            <li>
+                <div class="goods_image">
+                    <img src="http://img2.imgtn.bdimg.com/it/u=2909519701,1856442059&fm=11&gp=0.jpg">
+                    <span class="start_date">周三福利</span>
+                </div>
+                <div class="goods_details">
+                    <p class="goods_name">【雪花秀】与润修复面膜</p>
+                    <div class="goods_price">原价 380 元</div>
+                    <div class="nums">
+                        <div class="gross">共20份</div>
+                        <div class="bargained_num">已抢100份</div>
+                    </div>
+                    <p class="bargain_over hide">该砍价已结束</p>
+                    <p class="show_count_down">还有:<span class="days time_color"></span> 天 <span class="hours time_color"></span> :<span class="minutes time_color"></span> :<span class="seconds time_color"></span> 开始</p>
+                    <div class="launch">
+                        <span class="launch_btn not_started">等待砍价</span>
+                    </div>
+                </div>
+            </li>
+            <li>
+                <div class="goods_image">
+                    <img src="http://img2.imgtn.bdimg.com/it/u=2909519701,1856442059&fm=11&gp=0.jpg">
+                    <span class="start_date">周五福利</span>
+                </div>
+                <div class="goods_details">
+                    <p class="goods_name">【雪花秀】与润修复面膜</p>
+                    <div class="goods_price">原价 380 元</div>
+                    <div class="nums">
+                        <div class="gross">共20份</div>
+                        <div class="bargained_num">已抢100份</div>
+                    </div>
+                    <p class="bargain_over hide">该砍价已结束</p>
+                    <p class="show_count_down">还有:<span class="days time_color"></span> 天 <span class="hours time_color"></span> :<span class="minutes time_color"></span> :<span class="seconds time_color"></span> 开始</p>
+                    <div class="launch">
+                        <span class="launch_btn not_started">等待砍价</span>
+                    </div>
+                </div>
+            </li>
+        </ul>
+    </div>
+
+
+<script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/shake/js/zepto.min.js"></script>
+<script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/new_bridge.js"></script>
+<script type="text/javascript">
+    //倒计时
+    var over_times = [
+                    (new Date(2018,0,20).getTime())/1000,
+                    (new Date(2018,0,21).getTime())/1000,
+                    (new Date(2018,0,24).getTime())/1000];
+
+
+
+    (function(){
+        for(var i=0;i<over_times.length;i++) {
+            (function(j){
+                var g = j;
+                var bargain_count_down = setInterval(function(){
+                    var local_time = (new Date().getTime())/1000;
+                    var count_down_time = (over_times[g] - local_time).toFixed(0);
+                    formatDuring(count_down_time,g,bargain_count_down);
+                },1000);
+            })(i);
+        }
+    })();
+
+
+    function formatDuring(mss,num,timer) {
+        var days = parseInt( mss / 60 / 60 / 24, 10); //计算剩余的天数
+        var hours = parseInt(mss / 60 / 60 % 24, 10); //计算剩余的小时
+        var minutes = parseInt(mss / 60 % 60, 10);//计算剩余的分钟
+        var seconds = parseInt(mss % 60, 10);//计算剩余的秒数
+        if(days <= 0 && hours <= 0 && minutes <= 0 && seconds <= 0) {
+            clearInterval(timer);
+            $('.show_count_down').eq(num).addClass('hide');
+            $('.bargain_over').eq(num).removeClass('hide');
+            return;
+        }
+        if(days < 10) {
+            days = '0' + days;
+        }
+        if(hours < 10) {
+            hours = '0' + hours;
+        }
+        if(minutes < 10) {
+            minutes = '0' + minutes;
+        }
+        if(seconds < 10) {
+            seconds = '0' + seconds;
+        }
+        $('.days').eq(num).text(days);
+        $('.hours').eq(num).text(hours);
+        $('.minutes').eq(num).text(minutes);
+        $('.seconds').eq(num).text(seconds);
+    }
+</script>
+</body>
+</html>
+