소스 검색

double11 begin

huangdong 6 년 전
부모
커밋
1f07e63bf4
4개의 변경된 파일138개의 추가작업 그리고 4개의 파일을 삭제
  1. 13 0
      helper/room/util.php
  2. 74 0
      mobile/control/festval.php
  3. 8 0
      mobile/templates/default/festival/double11/steps.php
  4. 43 4
      test/TestTalk.php

+ 13 - 0
helper/room/util.php

@@ -41,6 +41,19 @@ class sorter
         else
             return 0;
     }
+
+    static public function steps_desc($left,$right)
+    {
+        $t_l = intval($left['steps']);
+        $t_r = intval($right['steps']);
+
+        if($t_l > $t_r)
+            return -1;
+        elseif($t_l < $t_r)
+            return 1;
+        else
+            return 0;
+    }
 }
 
 class talks_helper

+ 74 - 0
mobile/control/festval.php

@@ -254,6 +254,80 @@ class festvalControl extends mobileControl
             $pred->topup_bonus($_SESSION['member_mobile']);
         }
     }
+
+
+
+    public function double11_stepsOp()
+    {
+        if(session_helper::need_wechat_author())
+        {
+            $author = new thrid_author\wxauthor();
+            $url = BASE_SITE_URL . "/mobile/index.php?act=festval&op=steps";
+            $url = $author->enter($url);
+            return self::outsuccess(['direct_uri' => $url],"redirect");
+        }
+
+        $from = strtotime("2018-08-14");//2018-11-05
+        $to   = strtotime("2018-08-18");//2018-11-12
+        $userSteps = $this->userSteps_ranking($from,$to);
+
+        if($this->activity_validate($from,$to)){
+            return self::outsuccess(["user_steps"=>$userSteps],'festival/double11/steps');
+        }else{
+            return self::outsuccess(null,'festival/end/index');
+        }
+    }
+
+    private function userSteps_ranking($from,$to)
+    {
+        $mod = Model('room');
+        $items = $mod->roomSteps(["date_stamp"=>[['gt',$from],['lt',$to]]],"*",false);
+
+        $uids = [];
+        foreach ($items as $item)
+        {
+            $uids[] = $item['member_id'];
+        }
+        $uids = array_unique($uids,SORT_NUMERIC);
+
+        if(!empty($uids)) {
+            $members = Model('member')->getMemberList(['member_id' => ['in',$uids]]);
+        } else {
+            $members = [];
+        }
+
+        $uid_infos = [];
+        foreach ($members as $member)
+        {
+            $uinfo = new member_info($member);
+            $user = $uinfo->member_id();
+            $nickname = empty($member_nick[$user]) ? $uinfo->nickname() : $member_nick[$user];
+            $item = ['avatar' => $uinfo->avatar(),'nickname' => $nickname,'userid' => $uinfo->member_id(),"steps"=> 0];
+            $uid_infos[$user] = $item;
+        }
+
+        if(!empty($uid_infos))
+        {
+            foreach ($items as $item)
+            {
+                $uid = $item['member_id'];
+                if(array_key_exists($uid,$uid_infos))
+                {
+                    $uid_infos[$uid]["steps"] =  $uid_infos[$uid]["steps"] + $item['steps'];
+                }
+            }
+
+            usort($uid_infos,['room\sorter','steps_desc']);
+        }
+
+        return $uid_infos;
+    }
+
+
+    public function double11_gameOp()
+    {
+        //
+    }
 }
 
 class festval_support extends storage

+ 8 - 0
mobile/templates/default/festival/double11/steps.php

@@ -0,0 +1,8 @@
+<?php
+/**
+ * 双十一步数活动页面
+ * Created by PhpStorm.
+ * User: huangdong
+ * Date: 2018/10/22
+ * Time: 上午10:00
+ */ ?>

+ 43 - 4
test/TestTalk.php

@@ -15,7 +15,7 @@ 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_CORE_PATH . "/framework/function/http.php");
-
+require_once(BASE_ROOT_PATH . '/helper/room/util.php');
 
 class TestTalk extends PHPUnit_Framework_TestCase
 {
@@ -94,13 +94,52 @@ class TestTalk extends PHPUnit_Framework_TestCase
 
     public function testRankSteps()
     {
-        $from = "";
-        $to = "";
+        $from   = 0;//11-05  1541347200
+        $to     = 1541952000;//11-12
 
         $mod = Model('room');
-//        $mod->
+
+        $items = $mod->roomSteps(["date_stamp"=>[['gt',$from],['lt',$to]]],"*",false);
+
+
+
+        $uids = [];
+        foreach ($items as $item)
+        {
+            $uids[] = $item['member_id'];
+        }
+        $uids = array_unique($uids,SORT_NUMERIC);
 
 
 
+        if(!empty($uids)) {
+            $members = Model('member')->getMemberList(['member_id' => ['in',$uids]]);
+        } else {
+            $members = [];
+        }
+
+        $uid_infos = [];
+        foreach ($members as $member) {
+            $uinfo = new member_info($member);
+            $user = $uinfo->member_id();
+            $nickname = empty($member_nick[$user]) ? $uinfo->nickname() : $member_nick[$user];
+            $item = ['avatar' => $uinfo->avatar(),'nickname' => $nickname,'userid' => $uinfo->member_id(),"steps"=> 0];
+            $uid_infos[$user] = $item;
+        }
+
+        foreach ($items as $item)
+        {
+            $uid = $item['member_id'];
+            if(array_key_exists($uid,$uid_infos))
+            {
+                $uid_infos[$uid]["steps"] =  $uid_infos[$uid]["steps"] + $item['steps'];
+            }
+        }
+
+
+        usort($uid_infos,['room\sorter','steps_desc']);
+
+
+        echo 0;
     }
 }