|
|
@@ -180,13 +180,23 @@ class TradeService extends BaseService
|
|
|
* 消费排名
|
|
|
* @return mixed
|
|
|
*/
|
|
|
- public function ranks(){
|
|
|
+ public function ranks($dateType){
|
|
|
+ $firstTime = strtotime(date('Y-m-d'));
|
|
|
+ if($dateType==1){
|
|
|
+ $firstTime = strtotime('monday this week');
|
|
|
+ }else if($dateType==2){
|
|
|
+ $firstTime = strtotime(date('Y-m-01'));
|
|
|
+ }else if($dateType==3){
|
|
|
+ $firstTime = strtotime(date('Y-01-01'));
|
|
|
+ }
|
|
|
$dataList = $this->model::from('account_logs as a')
|
|
|
->leftJoin('member as m', 'm.id', '=', 'a.user_id')
|
|
|
+ ->where('a.create_time','>=', $firstTime)
|
|
|
+ ->where('a.create_time','<=', time())
|
|
|
->where(['a.mark'=> 1,'m.mark'=> 1,'a.status'=> 1,'a.coin_type'=> 2,'a.pay_type'=> 2,'a.change_type'=> 2])
|
|
|
- ->select(['m.avatar','m.nickname','a.id','a.user_id', \DB::raw('sum(a.money) as total')])
|
|
|
+ ->select(['m.avatar','m.nickname','a.id','a.user_id', \DB::raw('sum('.env('DB_PREFIX').'a.`money`) as total')])
|
|
|
->groupBy('a.user_id')
|
|
|
- ->orderBy(\DB::raw('sum(a.money)'),'desc')
|
|
|
+ ->orderBy(\DB::raw('sum('.env('DB_PREFIX').'a.`money`)'),'desc')
|
|
|
->orderBy('m.create_time','asc')
|
|
|
->take(50)
|
|
|
->get();
|
|
|
@@ -201,6 +211,93 @@ class TradeService extends BaseService
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 统计表数据
|
|
|
+ * @param $dateType
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function tableData($dateType){
|
|
|
+ $cacheKey = "caches:statistics:table_trade_{$dateType}";
|
|
|
+ $datas = RedisService::get($cacheKey);
|
|
|
+ if($datas){
|
|
|
+ return $datas;
|
|
|
+ }
|
|
|
+
|
|
|
+ $firstTime = strtotime(date('Y-m-d'));
|
|
|
+ if($dateType == 0){
|
|
|
+ $formatStr = "%Y-%m-%d %H:00";
|
|
|
+ $firstTime = strtotime(date('Y-m-d'));
|
|
|
+ for($i = 0; $i<24; $i++){
|
|
|
+ $i = $i<10? '0'.$i : $i;
|
|
|
+ $ks = date('Y-m-d')." {$i}:00";
|
|
|
+ $datas[$ks] = [
|
|
|
+ 'date'=> $i.'点',
|
|
|
+ 'ks'=> $ks,
|
|
|
+ 'value'=> 0,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }else if($dateType == 1){
|
|
|
+ $formatStr = "%Y-%m-%d";
|
|
|
+ $firstTime = strtotime('monday this week');
|
|
|
+ $weeks = ['周一','周二','周三','周四','周五','周六','周日'];
|
|
|
+ for($i = 0; $i<7; $i++){
|
|
|
+ $ks = date('Y-m-d', $firstTime+$i*86400);
|
|
|
+ $datas[$ks] = [
|
|
|
+ 'date'=> $weeks[$i],
|
|
|
+ 'ks'=> $ks,
|
|
|
+ 'value'=> 0,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }else if($dateType == 2){
|
|
|
+ $formatStr = "%Y-%m-%d";
|
|
|
+ $firstTime = strtotime(date('Y-m-01'));
|
|
|
+ $num = cal_days_in_month(CAL_GREGORIAN, date('m'), date('Y'));
|
|
|
+ for($i = 1; $i<=$num; $i++){
|
|
|
+ $i = $i<10? '0'.$i : $i;
|
|
|
+ $ks = date('Y-m')."-{$i}";
|
|
|
+ $datas[$ks] = [
|
|
|
+ 'date'=> $i.'号',
|
|
|
+ 'ks'=> $ks,
|
|
|
+ 'value'=> 0,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }else if($dateType == 3){
|
|
|
+ $formatStr = "%Y-%m";
|
|
|
+ $firstTime = strtotime(date('Y-01-01'));
|
|
|
+ for($i = 1; $i<=12; $i++){
|
|
|
+ $ks = date('Y')."-".($i<10? '0'.$i : $i);
|
|
|
+ $datas[$ks] = [
|
|
|
+ 'date'=> $i.'月',
|
|
|
+ 'ks'=> $ks,
|
|
|
+ 'value'=> 0,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $counts = $this->model::from('account_logs as a')
|
|
|
+ ->leftJoin('member as m', 'm.id', '=', 'a.user_id')
|
|
|
+ ->where(['a.mark'=> 1,'m.mark'=> 1,'a.status'=> 1,'a.coin_type'=> 2,'a.pay_type'=> 2,'a.change_type'=> 2])
|
|
|
+ ->where('a.create_time','>=', $firstTime)
|
|
|
+ ->where('a.create_time','<=', time())
|
|
|
+ ->select([\DB::raw('sum('.env('DB_PREFIX').'a.`money`) as value'),\DB::raw('FROM_UNIXTIME('.env('DB_PREFIX')."a.create_time,'{$formatStr}') as ks")])
|
|
|
+ ->groupBy(\DB::raw('FROM_UNIXTIME('.env('DB_PREFIX')."a.create_time,'{$formatStr}')"))
|
|
|
+ ->get();
|
|
|
+
|
|
|
+ $counts = $counts? $counts->toArray() : [];
|
|
|
+ if($counts){
|
|
|
+ foreach ($counts as $v){
|
|
|
+ if(isset($datas[$v['ks']])){
|
|
|
+ $datas[$v['ks']]['value'] = $v['value'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $datas = array_values($datas);
|
|
|
+ RedisService::set($cacheKey, $datas, rand(5, 10));
|
|
|
+
|
|
|
+ return $datas;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 统计
|
|
|
* @param $params
|
|
|
* @return mixed
|