Quellcode durchsuchen

Merge branch 'talksec' into unrate

stanley-king vor 6 Jahren
Ursprung
Commit
a796a5d6a1

+ 21 - 2
data/model/room.model.php

@@ -19,8 +19,8 @@ class roomModel extends Model
     {
         return $this->table('room_participant')->field('*')->where(['room_id' => $room_id,'state' => 0])->limit(false)->select();
     }
-    public function getRoomParts($cond,$field = '*',$limit = false,$order='invite_time asc') {
-        return  $this->table('room_participant')->field($field)->where($cond)->order($order)->limit($limit)->select();
+    public function getRoomParts($cond,$field = '*',$per_page = false,$order='invite_time asc') {
+        return  $this->table('room_participant')->field($field)->where($cond)->page($per_page)->order($order)->limit($per_page)->select();
     }
     public function editRoomParts($cond,$updata) {
         $ret = $this->table('room_participant')->where($cond)->update($updata);
@@ -176,4 +176,23 @@ class roomModel extends Model
     public function editApply($apply,$viewer,$step){
         return $this->table('room_apply')->where(['apply_id' => $apply])->update(["viewer"=> $viewer,"step" => $step]);
     }
+    ////////////////////////////////////////////
+    public function roomSports($cond,$field="*",$page=20,$order='sports_id desc') {
+        return $this->table('room_sports')->field($field)->where($cond)->page($page)->order($order)->limit($page)->select();
+    }
+    public function findSports($cond,$field="*"){
+        return $this->table('room_sports')->field($field)->where($cond)->find();
+    }
+    public function addSports($room,$member,$sports,$datetime){
+        return $this->table('room_sports')->insert(['room_id' => $room,'member_id' => $member,'sports' => $sports,"date_stamp"=>$datetime]);
+    }
+    public function editSports($cond,$updata){
+        return $this->table('room_sports')->where($cond)->update($updata);
+    }
+    public function totalSports($room,$member){
+       return $this->table('room_sports')->where(['room_id' => $room,'member_id' => $member])->sum('sports');
+    }
+    public function totalRoomSports($room){
+        return $this->table('room_participant')->where(['room_id' => $room])->sum('sports');
+    }
 }

Datei-Diff unterdrückt, da er zu groß ist
+ 22 - 0
data/resource/mobile/comm/echarts.simple.min.js


+ 12 - 0
data/resource/mobile/comm/utility.js

@@ -0,0 +1,12 @@
+var getHrefArguments = function (getKey) {
+    var arguments_object = {};
+    var location = window.location.href;
+    var location_arguments = location.split("?");
+    var arguments = location_arguments[1].split("&");
+
+    for (var i = 0; i < arguments.length; i++) {
+        arguments_object[arguments[i].split("=")[0]] = arguments[i].split("=")[1];
+    }
+    return arguments_object[getKey];
+};
+

BIN
data/resource/mobile/talk/images/echarts_bg.png


BIN
data/resource/mobile/talk/images/question_mark.png


+ 39 - 93
data/resource/mobile/talk/js/room_apply.js

@@ -1,87 +1,48 @@
 $(function () {
     FastClick.attach(document.body);
 
-    var getHrefArguments = function (getKey) {
-        var arguments_object = {};
-        var location = window.location.href;
-        var location_arguments = location.split("?");
-        var arguments = location_arguments[1].split("&");
-
-        for (var i = 0; i < arguments.length; i++) {
-            arguments_object[arguments[i].split("=")[0]] = arguments[i].split("=")[1];
-        }
-        return arguments_object[getKey];
-    };
-
-
-    var GetApplyList = function () {
-        this.curpage = 1;
-        this.hasmore = true;
-        this.init = function () {
-            this.getData();
-        };
-        this.getData = function (curpage) {
-            var _self = this;
-            if(!_self.hasmore) return;
-            $.showLoading();
-            $.get("/mobile/index.php", {
-                act: "member_talk",
-                op: "ajax_room_apply",
-                room_id: getHrefArguments("talk_id"),
-                client_type: "ajax",
-                curpage: _self.curpage
-            }, function (res) {
-                $.hideLoading();
-                var applyList = JSON.parse(res);
-                if (applyList.code != 200) {
-                    $.alert(applyList.message);
-                    return;
-                }
-                var applyHTML = new ApplyHTML(applyList.datas.applys);
-                applyHTML.appendHTML("#apply_list");
-                if (applyList.datas.mobile_page.hasmore) {
-                    _self.curpage = applyList.datas.mobile_page.curpage+1;
-                    _self.hasmore = true;
-                    applyHTML.loadHTML("#load_state");
-                }
-                else {
-                    $(window).off('scroll');
-                    _self.hasmore = false;
-                    applyHTML.endHTML("#load_state");
-                }
-            })
+    var ApplyList = function () {
+        RoomList.apply(this,arguments);
+        this.droploadCallback = function(res){
+            var applyList = JSON.parse(res);
+            if (applyList.code != 200) {
+                $.alert(applyList.message);
+                return;
+            }
+            var applyHTML = new ApplyHTML(applyList.datas.applys);
+            applyHTML.appendHTML(this.append_el);
+            if (applyList.datas.mobile_page.hasmore) {
+                this.curpage = applyList.datas.mobile_page.curpage+1;
+                this.hasmore = true;
+                applyHTML.loadHTML(this.load_state_el);
+            }
+            else {
+                $(window).off('scroll');
+                this.hasmore = false;
+                applyHTML.endHTML(this.load_state_el);
+            }
         };
     };
 
 
-    var ApplyHTML = function (datas) {
-        this.applyList = datas;
-        this.endHTML = function(id){
-            var endHTML = "<div class=\"weui-loadmore weui-loadmore_line\">\n" +
-                "  <span class=\"weui-loadmore__tips\">我是有底线的</span>\n" +
-                "</div>";
+    var apply_list = new ApplyList({act:'member_talk',op: "ajax_room_apply"},"#apply_list","#load_state",true);
+    apply_list.init();
 
-            $(id).empty().append(endHTML);
-        };
-        this.loadHTML = function(id){
-            var loadHTML = "<div class=\"weui-loadmore\">\n" +
-                "  <i class=\"weui-loading\"></i>\n" +
-                "  <span class=\"weui-loadmore__tips\">正在加载</span>\n" +
-                "</div>";
-            $(id).empty().append(loadHTML);
-        };
+
+    var ApplyHTML = function () {
+        RoomListHTML.apply(this,arguments);
         this.appendHTML = function (id) {
             var html = "";
-            for (var i = 0; i < this.applyList.length; i++) {
-                if (this.applyList[i].step == 1 || this.applyList[i].step == 2) {
-                    if (this.applyList[i].step == 1) {
+            for (var i = 0; i < this.listDatas.length; i++) {
+                if (this.listDatas[i].step == 1 || this.listDatas[i].step == 2) {
+                    if (this.listDatas[i].step == 1) {
                         html += "<div class=\"weui-cell\">\n" +
                             "        <div class=\"weui-cell__hd\">\n" +
-                            "            <img src=\"" + this.applyList[i].avatar + "\">\n" +
+                            "            <img src=\"" + this.listDatas[i].avatar + "\">\n" +
                             "        </div>\n" +
                             "        <div class=\"weui-cell__bd\">\n" +
-                            "            <p class=\"apply_name\">" + this.applyList[i].nickname + "</p>\n" +
-                            "            <p class=\"abstract\">" + this.applyList[i].msg + "</p>\n" +
+                            "            <p class=\"apply_name\">" + this.listDatas[i].nickname + "</p>\n" +
+                            "            <p class=\"abstract\">" + this.listDatas[i].msg + "</p>\n" +
                             "        </div>\n" +
                             "        <div class=\"weui-cell__ft\">\n" +
                             "            <span class=\"state\">已接受</span>\n" +
@@ -91,11 +52,11 @@ $(function () {
                     else {
                         html += "<div class=\"weui-cell\">\n" +
                             "        <div class=\"weui-cell__hd\">\n" +
-                            "            <img src=\"" + this.applyList[i].avatar + "\">\n" +
+                            "            <img src=\"" + this.listDatas[i].avatar + "\">\n" +
                             "        </div>\n" +
                             "        <div class=\"weui-cell__bd\">\n" +
-                            "            <p class=\"apply_name\">"+ this.applyList[i].nickname +"</p>\n" +
-                            "            <p class=\"abstract\">"+this.applyList[i].msg+"</p>\n" +
+                            "            <p class=\"apply_name\">"+ this.listDatas[i].nickname +"</p>\n" +
+                            "            <p class=\"abstract\">"+this.listDatas[i].msg+"</p>\n" +
                             "        </div>\n" +
                             "        <div class=\"weui-cell__ft\">\n" +
                             "            <span class=\"state\">已拒绝</span>\n" +
@@ -106,16 +67,16 @@ $(function () {
                 else {
                     html += "<div class=\"weui-cell\">\n" +
                         "        <div class=\"weui-cell__hd\">\n" +
-                        "            <img src=\"" + this.applyList[i].avatar + "\">\n" +
+                        "            <img src=\"" + this.listDatas[i].avatar + "\">\n" +
                         "        </div>\n" +
                         "        <div class=\"weui-cell__bd\">\n" +
-                        "            <p class=\"apply_name\">" + this.applyList[i].nickname + "</p>\n" +
-                        "            <p class=\"abstract\">" + this.applyList[i].msg + "</p>\n" +
+                        "            <p class=\"apply_name\">" + this.listDatas[i].nickname + "</p>\n" +
+                        "            <p class=\"abstract\">" + this.listDatas[i].msg + "</p>\n" +
                         "        </div>\n" +
                         "        <div class=\"weui-cell__ft\">\n" +
                         "            <div class=\"handle\">\n" +
-                        "                <span class=\"refusal_btn\" data-apply-id=\"" + this.applyList[i].apply_id + "\">拒绝</span>\n" +
-                        "                <span class=\"agree_btn\" data-apply-id=\"" + this.applyList[i].apply_id + "\">同意</span>\n" +
+                        "                <span class=\"refusal_btn\" data-apply-id=\"" + this.listDatas[i].apply_id + "\">拒绝</span>\n" +
+                        "                <span class=\"agree_btn\" data-apply-id=\"" + this.listDatas[i].apply_id + "\">同意</span>\n" +
                         "            </div>\n" +
                         "        </div>\n" +
                         "    </div>"
@@ -126,21 +87,6 @@ $(function () {
     };
 
 
-    var get_apply_list = new GetApplyList();
-    get_apply_list.init();
-
-    $(window).on('scroll',function(){
-        clearTimeout(this.timer);
-        this.timer = setTimeout(function(){
-            var scrollTop = $(this).scrollTop();
-            var scrollHeight = $(document).height();
-            var windowHeight = $(this).height();
-            if(scrollTop + windowHeight == scrollHeight){
-                get_apply_list.getData();
-            }
-        },500);
-    });
-
     $(document).on('click','.refusal_btn',function(){
         var apply_id = $(this).attr('data-apply-id');
         console.log(apply_id);

+ 91 - 0
data/resource/mobile/talk/js/room_sports.js

@@ -0,0 +1,91 @@
+$(function () {
+    var RoomSportList = function(){
+        RoomList.apply(this,arguments);
+        this.rankingIndex = 0;
+        this.droploadCallback = function(res){
+            var applyList = JSON.parse(res);
+            if (applyList.code != 200) {
+                $.alert(applyList.message);
+                return;
+            }
+            var roomSportHTML = new RoomSportHTML(applyList.datas);
+            roomSportHTML.appendHTML(this.append_el);
+            if (applyList.datas.mobile_page.hasmore) {
+                this.curpage = applyList.datas.mobile_page.curpage+1;
+                this.hasmore = true;
+                roomSportHTML.loadHTML(this.load_state_el);
+            }
+            else {
+                $(window).off('scroll');
+                this.hasmore = false;
+                roomSportHTML.endHTML(this.load_state_el);
+            }
+        }
+    };
+
+    var RoomSportHTML = function () {
+        RoomListHTML.apply(this,arguments);
+        this.appendHTML = function (id) {
+            var room_sport_list = "";
+            var mine_sport = "";
+            if(roomSportList.curpage > 1) {
+                for(var i=0;i<this.listDatas.sports.length;i++) {
+                    roomSportList.rankingIndex++;
+                    room_sport_list += "<div class=\"weui-cell\">\n" +
+                        "                <div class=\"index_num\">"+roomSportList.rankingIndex+"</div>\n" +
+                        "                <div class=\"weui-cell__hd\">\n" +
+                        "                    <img src=\""+this.listDatas.sports[i].avatar+"\">\n" +
+                        "                </div>\n" +
+                        "                <div class=\"weui-cell__bd\">\n" +
+                        "                    <p>"+this.listDatas.sports[i].nickname+"</p>\n" +
+                        "                </div>\n" +
+                        "                <div class=\"weui-cell__ft walk_num\">"+this.listDatas.sports[i].sports+"</div>\n" +
+                        "            </div>";
+                }
+                $(id).append(room_sport_list);
+            }
+            else {
+                mine_sport = "<div class=\"weui-cell\">" +
+                    "                <div class=\"weui-cell__hd\">" +
+                    "                    <img src=\""+this.listDatas.user.avatar+"\">" +
+                    "                </div>" +
+                    "                <div class=\"weui-cell__bd\">" +
+                    "                    <p class=\"mine_name\">"+this.listDatas.user.nickname+"</p>" +
+                    "                    <p class=\"abstract\">第"+this.listDatas.user.ranking+"名"+this.listDatas.user.sports+"步</p>" +
+                    "                </div>" +
+                    "                <div class=\"weui-cell__ft\">" +
+                    "                    <a href=\"/mobile/index.php?act=member_talk&op=member_sports\" class=\"weui-btn weui-btn_mini weui-btn_primary\">捐赠步数</a>" +
+                    "                </div>" +
+                    "            </div>";
+                $('#mine_ranking').append(mine_sport);
+                for(var i=0;i<this.listDatas.sports.length;i++) {
+                    roomSportList.rankingIndex++;
+                    room_sport_list += "<div class=\"weui-cell\">\n" +
+                        "                <div class=\"index_num\">"+roomSportList.rankingIndex+"</div>\n" +
+                        "                <div class=\"weui-cell__hd\">\n" +
+                        "                    <img src=\""+this.listDatas.sports[i].avatar+"\">\n" +
+                        "                </div>\n" +
+                        "                <div class=\"weui-cell__bd\">\n" +
+                        "                    <p>"+this.listDatas.sports[i].nickname+"</p>\n" +
+                        "                </div>\n" +
+                        "                <div class=\"weui-cell__ft walk_num\">"+this.listDatas.sports[i].sports+"</div>\n" +
+                        "            </div>"
+                }
+                $(id).append(room_sport_list);
+                $('#room_sports_list .index_num').eq(0).addClass("em");
+                $('#room_sports_list .index_num').eq(1).addClass("em");
+                $('#room_sports_list .index_num').eq(2).addClass("em");
+                $('#room_sports_list .walk_num').eq(0).addClass("em");
+                $('#room_sports_list .walk_num').eq(1).addClass("em");
+                $('#room_sports_list .walk_num').eq(2).addClass("em");
+            }
+
+
+
+        };
+    };
+
+    var roomSportList = new RoomSportList({act:"member_talk",op:"ajax_room_sports"},"#room_sports_list","#load_state",true);
+    roomSportList.init();
+
+});

+ 57 - 0
data/resource/mobile/talk/js/talk_room.js

@@ -0,0 +1,57 @@
+var RoomList = function(ajaxData,append_el,load_state_el,dropload){
+    if(dropload){
+        var _self = this;
+        $(window).on('scroll',function(){
+            clearTimeout(this.timer);
+            this.timer = setTimeout(function(){
+                var scrollTop = $(this).scrollTop();
+                var scrollHeight = $(document).height();
+                var windowHeight = $(this).height();
+                if(scrollTop + windowHeight == scrollHeight){
+                    _self.getData();
+                }
+            },500);
+        });
+    }
+    this.append_el = append_el;
+    this.load_state_el = load_state_el;
+    this.curpage = 1;
+    this.hasmore = true;
+    this.init = function () {
+        this.getData();
+    };
+    this.droploadCallback = function(res){};
+    this.getData = function(){
+        var _self = this;
+        if(!_self.hasmore) return;
+        $.showLoading();
+        $.get("/mobile/index.php", {
+            act: ajaxData.act,
+            op: ajaxData.op,
+            room_id: getHrefArguments("talk_id"),
+            client_type: "ajax",
+            curpage: _self.curpage
+        }, function (res) {
+            $.hideLoading();
+            _self.droploadCallback(res);
+        });
+    }
+};
+
+var RoomListHTML = function(datas){
+    this.listDatas = datas;
+    this.endHTML = function(id){
+        var endHTML = "<div class=\"weui-loadmore weui-loadmore_line\">\n" +
+            "  <span class=\"weui-loadmore__tips\">我是有底线的</span>\n" +
+            "</div>";
+
+        $(id).empty().append(endHTML);
+    };
+    this.loadHTML = function(id){
+        var loadHTML = "<div class=\"weui-loadmore\">\n" +
+            "  <i class=\"weui-loading\"></i>\n" +
+            "  <span class=\"weui-loadmore__tips\">正在加载</span>\n" +
+            "</div>";
+        $(id).empty().append(loadHTML);
+    };
+};

+ 3 - 1
helper/room/tpl_group_home.php

@@ -114,7 +114,9 @@ class tpl_group_home
                         <img src=\"".RESOURCE_SITE_URL."/mobile/talk/images/group_goods.png\" alt=\"\">
                     </div>
                     <div class=\"weui-flex__item group_sport\">
-                        <img src=\"".RESOURCE_SITE_URL."/mobile/talk/images/group_sport.png\" alt=\"\">
+                        <a href=\"/mobile/index.php?act=member_talk&op=room_sports&talk_id={$this->room_id}\">
+                            <img src=\"".RESOURCE_SITE_URL."/mobile/talk/images/group_sport.png\" alt=\"\">
+                        </a>
                     </div>";
         }
         echo $html;

+ 184 - 14
mobile/control/member_talk.php

@@ -12,11 +12,11 @@ require_once(BASE_ROOT_PATH . '/helper/room/proto_type.php');
 require_once(BASE_ROOT_PATH . '/helper/room/room_info.php');
 require_once(BASE_ROOT_PATH . '/helper/room/author.php');
 require_once(BASE_ROOT_PATH . '/helper/room/util.php');
-require_once(BASE_ROOT_PATH . '/helper/FileUploader.php');
 require_once(BASE_ROOT_PATH . '/helper/room/tpl_group_home.php');
 require_once(BASE_ROOT_PATH . '/helper/room/tpl_chatwo_home.php');
-require_once(BASE_ROOT_PATH . '/helper/room/face_room.php');
+require_once(BASE_ROOT_PATH . '/helper/FileUploader.php');
 
+use room\proto_type;
 
 class member_talkControl extends mbMemberControl
 {
@@ -91,14 +91,16 @@ class member_talkControl extends mbMemberControl
         usort($members,['member_info','alpha_compare']);
 
         $uids = [];
+        $mem_desc = [];
         foreach ($members as $member) {
             if($member['member_id'] == session_helper::memberid()) continue;
             $uids[] = $member['member_id'];
+            $mem_desc[] = $member;
         }
 
         return self::outsuccess(['friends' => $uids,
             'count' => count($uids),
-            'mem_desc' => $members,
+            'mem_desc' => $mem_desc,
             'mobile_page' => mobile_page(1)]);
     }
 
@@ -180,7 +182,7 @@ class member_talkControl extends mbMemberControl
         {
             foreach ($msgs as $msg)
             {
-                $msgtype = room\proto_type::from_msgtype(intval($msg['type']));
+                $msgtype = proto_type::from_msgtype(intval($msg['type']));
                 if($msgtype == false) continue;
 
                 $val = [];
@@ -229,9 +231,7 @@ class member_talkControl extends mbMemberControl
             return ['uids' => [],'msgs' => []];
         }
 
-        $msgid = $msgid > $hide_msg ? $msgid : $hide_msg;
-
-        $msgs = $mod_room->getRoomsgList(['room_id' => $room_id,'msg_id' => ['lt',$msgid],'msg_type' => 0], $this->page_size);
+        $msgs = $mod_room->getRoomsgList(['room_id' => $room_id,'msg_id' => [['gt',$hide_msg],['lt',$msgid]],'msg_type' => 0], $this->page_size);
 
         $uids = [];
         if($msgs)
@@ -278,7 +278,8 @@ class member_talkControl extends mbMemberControl
             $invitees = explode(',', trim($_GET['invitees']));
             if(!empty($invitees) && $room_id > 0)
             {
-                $ret = room\factory_client::instance()->invite($room_id,$creator,$invitees);
+                $_invitees = array_values(array_diff($invitees,[$creator]));
+                $ret = room\factory_client::instance()->invite($room_id,$creator,$_invitees);
                 if($ret == false) return self::outerr(errcode::ErrRoom,"邀请失败");
 
                 if(in_array($creator,$invitees)){
@@ -420,7 +421,9 @@ class member_talkControl extends mbMemberControl
             return self::outerr(errcode::ErrParamter);
         }
 
-        $result = room\factory_client::instance()->invite($room_id,session_helper::memberid(),$invitees);
+        $inviter =  session_helper::memberid();
+        $_invitees = array_values(array_diff($invitees,[$inviter]));
+        $result = room\factory_client::instance()->invite($room_id,$inviter,$_invitees);
         if($result === false) {
             return self::outerr(errcode::ErrRoom,"邀请失败");
         }
@@ -841,7 +844,7 @@ class member_talkControl extends mbMemberControl
             {
                 $msg = trim($_GET['msg']);
                 if(strlen($msg) >= 100){
-                    return self::outerr(errcode::ErrParamter,"消息过长");
+                    return self::outerr(errcode::ErrParamter,"入群申请过长,请缩短一些");
                 }
                 $add = $mod_room->addApply($room_id,$member,$msg);
                 if($add){
@@ -938,6 +941,169 @@ class member_talkControl extends mbMemberControl
         }
     }
 
+    ///////////////////////////////////////////////
+    public function room_sportsOp(){
+        return self::outsuccess(null,'talk/room_sports');
+    }
+
+    public function ajax_room_sportsOp()
+    {
+        try
+        {
+            $room_id = intval($_GET['room_id']);
+            $mod_room = Model('room');
+            $userid = session_helper::memberid();
+            $item = $mod_room->getRoomParts(["room_id"=>$room_id,"member_id"=>$userid,"state"=>0],'room_id,member_id,sports',1);
+            if(empty($item)) return self::outerr(errcode::ErrParamter,"错误的群信息");
+
+            $user_sports = $this->user_sports($item[0]);
+
+            $sports = [];
+            $hasmore = false;
+            $per_page = 20;
+            $items = $mod_room->getRoomParts(["room_id"=>$room_id,"state"=>0],'member_id,sports',$per_page,'sports desc');
+            if(!empty($items))
+            {
+                foreach ($items as $k => $sport)
+                {
+                    $info = new member_info($sport['member_id']);
+                    $member = $info->filter();
+
+                    $sports[$k]['member_id'] = $sport['member_id'];
+                    $sports[$k]['sports'] = $sport['sports'];
+                    $sports[$k]['avatar'] = $member['avatar'];
+                    $sports[$k]['is_man'] = $member['is_man'];
+                    $sports[$k]['nickname'] = $member['nickname'];
+                }
+                if(count($sports) >= $per_page) $hasmore = true;
+            }
+
+            return self::outsuccess(["user"=>$user_sports,"sports"=>$sports,"mobile_page"=>["hasmore"=>$hasmore,"curpage"=>$this->cur_page]]);
+
+        } catch (Exception $ex) {
+            return self::outerr(errcode::ErrParamter);
+        }
+    }
+
+    private function user_sports($room_parti)
+    {
+        $info = new member_info($room_parti['member_id']);
+        $member = $info->filter();
+
+        $user_sports["member_id"] = $member['member_id'];
+        $user_sports['avatar'] = $member['avatar'];
+        $user_sports['is_man'] = $member['is_man'];
+        $user_sports['nickname'] = $member['nickname'];
+        $user_sports["sports"] = $room_parti['sports'];
+        $ranks = Model('room')->getRoomParts(["room_id"=>$room_parti['room_id'],"state"=>0,"sports"=>['gt',$room_parti['sports']]],'member_id',false,'sports desc');
+        $user_sports["ranking"] = count($ranks)+1;
+
+        return $user_sports;
+    }
+
+    public function member_sportsOp(){
+        $mid = session_helper::memberid();
+        $info = new member_info($mid);
+        $member = $info->filter();
+
+        $today = strtotime(date('Y-m-d',time()));
+        $first = $today - 86400 * 6;
+
+        $mod_room = Model('room');
+        $items = $mod_room->roomSports(["member_id"=>$mid,"date_stamp"=>[['gt',$first-1],['lt',$today+1]]],'*',7);
+        $sports_info = [];
+        if(!empty($items)){
+            foreach ($items as $item){
+                $sports_info[$item['date_stamp']] = $item;
+            }
+        }
+
+        $charts = $this->sports_charts($first,$sports_info);
+
+        $room_sports = [];
+        $rooms = $mod_room->getRoomParts(["member_id"=>$mid,"state"=>0],'room_id',false);
+        if(!empty($rooms))
+        {
+            foreach ($rooms as $room) {
+                $params = $mod_room->getRoom($room['room_id']);
+                $rinfo = new room\room_info($params);
+                if($rinfo->type() !== proto_type::room_chat) continue;
+
+                $room['avatar'] = $rinfo->avatar();
+                $room['name'] = $rinfo->name();
+                $room['sports'] = $mod_room->totalRoomSports($room['room_id']);
+
+                $room_sports[] = $room;
+            }
+        }
+
+
+        return self::outsuccess([
+            "background"=>RESOURCE_SITE_URL. "/mobile/talk/images/cover.png",
+            "avatar"=>$member['avatar'],
+            "nickname"=>$member['nickname'],
+            "charts"=>$charts,
+            "room_sports"=>$room_sports],
+            'talk/member_sports');
+    }
+
+    private function sports_charts($first_date,$sports_info)
+    {
+        $charts = [];
+        for ($i=0; $i<7; $i++ )
+        {
+            $key = $first_date + 86400 * $i;
+
+            if($i==0){
+                $month = date('n月',$key);
+                $charts["month"] = $month;
+            }
+
+            $charts["date"][] = date('d',$key);
+
+            if(isset($sports_info[$key])){
+                $charts["sports"][] = intval($sports_info[$key]['sports']);
+            }else{
+                $charts["sports"][] = 0;
+            }
+        }
+
+        return $charts;
+    }
+    
+    public function donate_sportsOp()
+    {
+        $room_id = intval($_GET['room_id']);
+        $sports = intval($_GET['sports']);
+        if($room_id <=0 || $sports <=0 ) {
+            return self::outerr(errcode::ErrParamter,"错误的参数");
+        }
+
+        $user  = session_helper::memberid();
+        $today = strtotime(date('Y-m-d',time()));
+
+        $mod_room = Model('room');
+        $room = $mod_room->getRoomParts(['room_id'=>$room_id,"member_id"=>$user,"state"=>0],'*',1);
+        if(empty($room)) {
+            return self::outerr(errcode::ErrParamter,"您不在此群中");
+        }
+
+        $item = $mod_room->findSports(['room_id'=>$room_id,"member_id"=>$user,"date_stamp"=>$today]);
+        if(empty($item)) {
+            $res = $mod_room->addSports($room_id,$user,$sports,$today);
+        } else {
+            $res = $mod_room->editSports($item['sports_id'],["sports"=>$sports]);
+        }
+
+        if($res)
+        {
+            $total_sports = $mod_room->totalSports($room_id,$user);
+            $mod_room->editRoomParts(['room_id'=>$room_id,"member_id"=>$user,"state"=>0],["sports"=>$total_sports]);
+            return self::outsuccess(null,"捐赠成功");
+        }else{
+            return self::outerr(errcode::ErrTalk,"捐赠失败");
+        }
+    }
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     public function share_bonusOp()
     {
@@ -952,8 +1118,14 @@ class member_talkControl extends mbMemberControl
             return self::outerr(errcode::ErrParamter,"群信息有误");
         }
 
+        $parts = new room\room_parts($room_id);
+        $uids = $parts->allparts();
+        if(!in_array(session_helper::memberid(),$uids)) {
+            return self::outerr(errcode::ErrParamter,"不可以偷看别人的共享资金哦");
+        }
+
         $list = [];
-        $items = $mod_room->getRoomsgList(["room_id"=>$room_id,"type"=>room\proto_type::msg_type_bonus]);
+        $items = $mod_room->getRoomsgList(["room_id"=>$room_id,"type"=>proto_type::msg_type_bonus]);
         if(!empty($items))
         {
             $uids = [];
@@ -961,9 +1133,7 @@ class member_talkControl extends mbMemberControl
                 $uids[] = $item['member_id'];
             }
             $uids = array_unique($uids);
-            if(!in_array(session_helper::memberid(),$uids)) {
-                return self::outerr(errcode::ErrParamter,"不可以偷看别人的共享资金哦");
-            }
+
 
             $info = [];
             $members = member_info::get_members($uids);

+ 32 - 23
mobile/templates/default/talk/homepage_room.php

@@ -531,29 +531,38 @@
 
 
             $('#hide_msg').on('click', function () {
-                $.showLoading();
-                $.get('/mobile/index.php?act=member_talk&op=hide_msg',
-                {
-                    room_id: talk_id,
-                    client_type: 'ajax'
-                }, function (res) {
-                    $.hideLoading();
-                    var result = JSON.parse(res);
-                    console.log(result);
-                    if (result.code != 200) {
-                        $.alert(result.message);
-                        return;
+                $.confirm({
+                    title: '确认清空',
+                    text: '您确认清空聊天记录吗?',
+                    onOK: function () {
+                        $.showLoading();
+                        $.get('/mobile/index.php?act=member_talk&op=hide_msg',
+                            {
+                                room_id: talk_id,
+                                client_type: 'ajax'
+                            }, function (res) {
+                                $.hideLoading();
+                                var result = JSON.parse(res);
+                                console.log(result);
+                                if (result.code != 200) {
+                                    $.alert(result.message);
+                                    return;
+                                }
+                                var jsonobject = {
+                                    action: "talk_clear",
+                                    params: {
+                                        talk_id: talk_id,
+                                        talk_type: talk_type
+                                    }
+                                };
+                                jsBridge.call_native_handler('on_native_click', JSON.stringify(jsonobject));
+                                $.toast('清除成功',1000);
+                            });
+                    },
+                    onCancel: function () {
+
                     }
-                    var jsonobject = {
-                        action: "talk_clear",
-                        params: {
-                            talk_id: talk_id,
-                            talk_type: talk_type
-                        }
-                    };
-                    jsBridge.call_native_handler('on_native_click', JSON.stringify(jsonobject));
-                    $.toast('清除成功',1000);
-                });
+                })
             });
 
 
@@ -636,7 +645,7 @@
                                 });
                         }
                         else {
-                            $.alert('入群申请不要最长为30字符');
+                            $.alert('入群申请最长不得超过30字符');
                         }
                     },
                     onCancel: function () {

+ 232 - 0
mobile/templates/default/talk/member_sports.php

@@ -0,0 +1,232 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
+    <title>捐赠步数</title>
+    <link type="text/css" rel="stylesheet"
+          href="<?php echo RESOURCE_SITE_URL; ?>/mobile/talk/css/weui.css?<?php echo bonus_version(); ?>"/>
+    <link rel="stylesheet"
+          href="https://cdn.bootcss.com/jquery-weui/1.2.0/css/jquery-weui.min.css?<?php echo bonus_version(); ?>">
+    <link type="text/css" rel="stylesheet"
+          href="<?php echo RESOURCE_SITE_URL; ?>/mobile/talk/css/homepage.css?<?php echo bonus_version(); ?>"/>
+    <style type="text/css">
+        html, body {
+            background: #ffffff;
+            font-family: PingFang SC, Hiragino Sans GB, Microsoft YaHei, 微软雅黑, Arial, sans-serif;
+        }
+
+        .sport_echarts {
+            margin: 0 auto;
+        }
+
+        #mine_sports {
+            background: url("<?php echo RESOURCE_SITE_URL; ?>/mobile/talk/images/echarts_bg.png") no-repeat;
+            background-size: 100% 100%;
+        }
+
+        .group_name h3 {
+            margin-top: 7px;
+        }
+
+        .weui-cell__hd img {
+            width: 40px;
+            height: 40px;
+        }
+        h3.title {
+            font-size: 15px;
+            margin-left: 20px;
+            margin-top: 10px;
+        }
+        .weui-btn_primary {
+            background: #2B2B2B;
+        }
+        .week_total {
+            font-size: 12px;
+            font-weight: 400;
+            color: #666666;
+        }
+        .sport_echarts {
+            position: relative;
+        }
+        .today_num {
+            position: absolute;
+            right: 20px;
+            top: 10px;
+            font-size: 15px;
+            font-weight: 600;
+            color: #ffffff;
+            z-index: 10;
+        }
+        .question_mark {
+            width: 14px;
+            height: 14px;
+            vertical-align: bottom;
+            margin-left: 5px;
+        }
+        .rules {
+            position: absolute;
+            right: 10px;
+            bottom: 30px;
+            font-size: 12px;
+        }
+        .group_info {
+            position: relative;
+        }
+    </style>
+</head>
+<body>
+
+<div class="cover">
+    <img src="<?php echo RESOURCE_SITE_URL; ?>/mobile/talk/images/cover.png" alt="cover">
+</div>
+<div class="group_top">
+    <div class="group_info">
+        <div class="group_avatar">
+            <img src="<?php echo $output['avatar'] ?>" class='g_avatar' alt="group_avatar">
+        </div>
+        <div class="group_name">
+            <h3><?php echo $output['nickname'] ?></h3>
+            <div class="rules">
+                <p>捐赠规则<img class="question_mark" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/talk/images/question_mark.png"></p>
+            </div>
+        </div>
+    </div>
+</div>
+
+<div class="sport_echarts">
+    <div class="today_num"></div>
+    <div class="mine_sports" id="mine_sports"></div>
+</div>
+
+
+<h3 class="title">步数捐赠至</h3>
+
+<div class="group_list">
+    <div class="weui-cells">
+
+        <?php
+            foreach ($output['room_sports'] as $room) {
+                echo "<div class=\"weui-cell\">
+                        <div class=\"weui-cell__hd\">
+                            <img src=\"{$room['avatar']}\">
+                        </div>
+                        <div class=\"weui-cell__bd\">
+                            <p>{$room['name']}</p>
+                            <p class='week_total'>本周累计步数:{$room['sports']}</p>
+                        </div>
+                        <div class=\"weui-cell__ft\">
+                            <a href=\"javascript:void(0)\" data-roomId=\"".$room['room_id']."\" class=\"weui-btn weui-btn_mini weui-btn_primary donate\">选择</a>
+                        </div>
+                    </div>";
+                }
+        ?>
+    </div>
+</div>
+
+<script src="https://cdn.bootcss.com/jquery/1.11.0/jquery.min.js?<?php echo bonus_version(); ?>"></script>
+<script src="https://cdn.bootcss.com/jquery-weui/1.2.0/js/jquery-weui.min.js?<?php echo bonus_version(); ?>"></script>
+<script src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/fastclick.js?<?php echo bonus_version(); ?>"></script>
+<script src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/echarts.simple.min.js?<?php echo bonus_version(); ?>"></script>
+<script type="text/javascript" src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/new_bridge.js?<?php echo bonus_version(); ?>"></script>
+
+<script type="text/javascript">
+    $(function () {
+
+        var bridge = new Bridge();
+
+        var jsInit = {
+            action:"step_get_now"
+        };
+        bridge.call_native_handler('on_native_click', JSON.stringify(jsInit),function(res){
+            var datas = JSON.parse(res);
+            $('.today_num').text("步数:"+datas.now);
+        });
+
+        
+        var set_echarts_size = function(){
+            var docmentWidth = $(document).width();
+            var echartsWidth= docmentWidth-(docmentWidth*0.2);
+            var echartsHigth = echartsWidth*9/16;
+            $('#mine_sports').css({width:echartsWidth+"px",height:echartsHigth+"px"});
+            $('.sport_echarts').css({width:echartsWidth+"px",height:echartsHigth+"px"});
+        };
+        set_echarts_size();
+
+
+        var dateList = <?php echo json_encode($output['charts']['date'])?>;
+        var sportsList =<?php echo json_encode($output['charts']['sports'])?>;
+        var month = "<?php echo $output['charts']['month']; ?>";
+
+        var mySportEcharts = echarts.init(document.getElementById('mine_sports'));
+
+        var option = {
+            xAxis: {
+                nameGap:"-5",
+                nameLocation:'start',
+                name:month,
+                type: 'category',
+                data: dateList,
+                axisLine: {
+                    show: false,
+                    onZero: false
+                },
+                axisTick: {
+                    show: false,
+                    interval:2
+                }
+            },
+            yAxis: {
+                show: false
+            },
+            series: [{
+                data: sportsList,
+                type: 'line',
+                itemStyle: {
+                    normal: {
+                        color: '#fff',
+                        lineStyle: {
+                            color: '#fff'
+                        }
+                    }
+                }
+            }],
+            textStyle: {
+                color: "#fff"
+            }
+        };
+
+        mySportEcharts.setOption(option);
+
+
+        $('.donate').on('click',function(){
+            var room_id = $(this).attr('data-roomId');
+            $.confirm({
+                title: '步数捐赠',
+                text: '确定将您的步数捐赠到该群?',
+                onOK: function () {
+                    $.get("/mobile/index.php",{
+                        op:'donate_sports',
+                        act:'member_talk',
+                        client_type:'ajax',
+                        sports:todaySport,
+                        room_id:room_id
+                    },function(res){
+                        var datas = JSON.parse(res);
+                        if(datas.code != 200) {
+                            $.toast(datas.message,1000);
+                            return;
+                        }
+                        $.toast("捐献成功",1000,function(){
+                            window.location.reload();
+                        });
+                    });
+                }
+            });
+        });
+    });
+</script>
+</body>
+</html>
+
+

+ 3 - 2
mobile/templates/default/talk/room_apply.php

@@ -16,9 +16,10 @@
     <div class="weui-cells" id="apply_list"></div>
     <div id="load_state"></div>
 
-    <script src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/zepto.min.js?<?php echo bonus_version(); ?>"></script>
-    <script src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/fastclick.js?<?php echo bonus_version(); ?>"></script>
     <script src="https://cdn.bootcss.com/jquery/1.11.0/jquery.min.js?<?php echo bonus_version(); ?>"></script>
+    <script src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/utility.js?<?php echo bonus_version(); ?>"></script>
+    <script src="<?php echo RESOURCE_SITE_URL; ?>/mobile/talk/js/talk_room.js?<?php echo bonus_version(); ?>"></script>
+    <script src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/fastclick.js?<?php echo bonus_version(); ?>"></script>
     <script src="https://cdn.bootcss.com/jquery-weui/1.2.0/js/jquery-weui.min.js?<?php echo bonus_version(); ?>"></script>
     <script src="<?php echo RESOURCE_SITE_URL; ?>/mobile/talk/js/room_apply.js?<?php echo bonus_version(); ?>"></script>
 </body>

+ 109 - 0
mobile/templates/default/talk/room_sports.php

@@ -0,0 +1,109 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
+    <title>捐赠步数</title>
+    <link type="text/css" rel="stylesheet"
+          href="<?php echo RESOURCE_SITE_URL; ?>/mobile/talk/css/weui.css?<?php echo bonus_version(); ?>"/>
+    <link rel="stylesheet"
+          href="https://cdn.bootcss.com/jquery-weui/1.2.0/css/jquery-weui.min.css?<?php echo bonus_version(); ?>">
+    <style type="text/css">
+        html, body {
+            background: #F2F2F2;
+            font-family: PingFang SC, Hiragino Sans GB, Microsoft YaHei, 微软雅黑, Arial, sans-serif;
+        }
+
+        .mine_name {
+            font-weight: 500;
+        }
+
+        .weui-cell {
+            padding: 10px 15px;
+            font-size: 15px;
+            font-weight: 400;
+        }
+
+        #room_sports_list .weui-cell {
+            padding: 10px 15px 10px 5px;
+        }
+
+        .weui-cell__hd img {
+            width: 40px;
+            border-radius: 4px;
+        }
+
+        .abstract {
+            font-size: 12px;
+        }
+
+        .weui-btn_primary {
+            display: block;
+            background: #2B2B2B;
+        }
+
+        .walk_num {
+            position: relative;
+            font-size: 18px;
+            padding-right: 16px;
+            color: #2B2B2B;
+        }
+
+        .walk_num:after {
+            content: "步";
+            position: absolute;
+            top: 50%;
+            right: 0;
+            font-weight: 400;
+            font-size: 12px;
+            -webkit-transform: translateY(-50%);
+            transform: translateY(-50%);
+        }
+
+        .index_num {
+            font-size: 18px;
+            text-align: center;
+            width: 30px;
+            margin-right: 10px;
+        }
+
+        .em {
+            font-weight: 600;
+        }
+
+        #mine_ranking {
+            margin-top: 0;
+        }
+
+        .weui-cell:before {
+            left: 0;
+        }
+
+        #load_state .weui-loadmore__tips {
+            background-color:#f2f2f2;
+        }
+
+        .weui-btn_primary:not(.weui-btn_disabled):active {
+            color: #000000;
+            background-color: #ffffff;
+        }
+    </style>
+</head>
+<body>
+
+<div class="weui-cells" id="mine_ranking"></div>
+
+<div class="weui-cells" id="room_sports_list"></div>
+
+<div id="load_state"></div>
+
+
+<script src="https://cdn.bootcss.com/jquery/1.11.0/jquery.min.js?<?php echo bonus_version(); ?>"></script>
+<script src="https://cdn.bootcss.com/jquery-weui/1.2.0/js/jquery-weui.min.js?<?php echo bonus_version(); ?>"></script>
+<script src="<?php echo RESOURCE_SITE_URL; ?>/mobile/comm/utility.js?<?php echo bonus_version(); ?>"></script>
+<script src="<?php echo RESOURCE_SITE_URL; ?>/mobile/talk/js/talk_room.js?<?php echo bonus_version(); ?>"></script>
+<script src="<?php echo RESOURCE_SITE_URL; ?>/mobile/talk/js/room_sports.js?<?php echo bonus_version(); ?>"></script>
+</body>
+</html>
+
+