Selaa lähdekoodia

add: 实现排行榜当日赢金榜协议

joe 4 vuotta sitten
vanhempi
commit
b3b1113c30

+ 31 - 0
app/api/controller/board/UserBoardController.php

@@ -1,8 +1,39 @@
 <?php
 namespace app\api\controller\board;
 
+use crmeb\services\UtilService;
+use app\models\board\UserBoard;
+/**
+ * 协议见文档 docs/board.md, 协议可能变更
+ *
+ * 使用 UserBoardModel, 数据表为 eb_user_reward_order
+ *
+ *
+ * Class UserBoardController
+ * @package app\api\controller\board
+ */
 class UserBoardController {
+    protected static $DAILY_WIN_MONEY = 1;
+
     public function boards() {
+       [$type,] = UtilService::getMore([
+           ['type', 1],
+       ], null, true);
+
+       switch ($type) {
+           case UserBoardController::$DAILY_WIN_MONEY:
+               return app('json')->successful('ok', $this->daily_win_money());
+       }
+    }
 
+    protected function daily_win_money() {
+        $board = new UserBoard();
+        $res = $board->getDailyWinMoney();
+        foreach ($res as &$row) {
+            $row['value'] = floatval($row['value']);
+            $row['border'] = 0;
+            $row['vip'] = 0;
+        }
+        return $res;
     }
 }

+ 10 - 0
app/common.php

@@ -525,3 +525,13 @@ if (!function_exists('array_unique_fb')) {
         return $out;
     }
 }
+
+if (!function_exists('ts_of_day')) {
+    function ts_of_day($timestamp=null) {
+        if ($timestamp == null) {
+            $timestamp = time();
+        }
+        $tm = localtime($timestamp, true);
+        return $timestamp - $tm['tm_hour'] * 60 * 60 - $tm['tm_min'] * 60 - $tm['tm_sec'];
+    }
+}

+ 33 - 0
app/models/board/UserBoard.php

@@ -0,0 +1,33 @@
+<?php
+namespace app\models\board;
+
+use crmeb\traits\ModelTrait;
+use crmeb\basic\BaseModel;
+use think\facade\Db;
+
+class UserBoard extends BaseModel {
+    protected $pk = 'id';
+    protected $name = 'store_order_cart_info';
+    use ModelTrait;
+
+    /**
+     * 按照当日最高赚钱数获取记录
+     *
+
+    select u.uid, u.avatar, u.nickname, u.level, oid, sum(reparation) as value
+    from tw_store_order_cart_info tsoci inner join tw_store_order tso on tsoci.oid=tso.id inner join tw_user u on tso.uid = u.uid
+    where activity is not null and tso.pay_time > 0
+    group by oid
+    order by value desc, u.uid asc limit 10
+
+     */
+    public function getDailyWinMoney() {
+        $start = ts_of_day();
+        return Db::query(
+            "select u.uid, u.avatar, u.nickname, u.level, sum(reparation) as value 
+    from tw_store_order_cart_info tsoci inner join tw_store_order tso on tsoci.oid=tso.id inner join tw_user u on tso.uid = u.uid 
+    where activity is not null and tso.pay_time > ? 
+    group by oid 
+    order by value desc, u.uid asc limit ?", [$start, 30,]);
+    }
+}