where([ 'source' => 'order', 'draw_day' => date('Y-m-d') ])->count(); } public static function countTaskDisc($userId, $type) { $countTaskDisc = 0; $signCount = null; // 检查类型参数 if (empty($type) || $type === "1") { return 0; } $db_name = \think\facade\Db::connect(config('think-orm.search_library')); $task = $db_name->name('task_center')->where(['type' => 2]); // 构建查询条件 $sourceType = null; if ($type === "2") { $task =$task->where('number', '>', 1); $task =$task->where('number', '<', 8); $sourceType = "taskW"; } elseif ($type === "3") { $task =$task->where('number', '>', 7); $task =$task->where('number', '<', 32); $sourceType = "taskM"; } // 检查是否已有抽奖记录 $spCount = DatabaseRoute::getDb('disc_spinning_record', $userId)->where(['source' => $sourceType])->count(); if (!empty($spCount) && $spCount > 0) { return 0; } // 获取任务列表 $taskCenters = $task->select(); foreach ($taskCenters as $k => $taskCenter) { // 获取任务奖励配置 $rewardMap_arr = $db_name->name('task_center_reward')->field('type,number')->where(['task_id' => $taskCenter['id']])->select()->toArray(); if (empty($rewardMap_arr)) { continue; } $number = 0; $rewardMap = []; foreach ($rewardMap_arr as $tk => $tv) { $number += $tv['number']; $t_type = $tv['type']; } $rewardMap[$t_type] = $number; $taskWRedisMap = []; if ($type === "2") { // 周任务处理逻辑 $taskWCount = UserSignRecord::getTaskWCount($userId, $rewardMap[9]); if (!empty($taskWCount)) { foreach ($taskWCount as $key => $value) { if ($value > 0) { $countTaskDisc += $value; $taskWRedisMap[$key] = $value; } } } if (!empty($taskWRedisMap)) { Cache::set("date:spinning:draw:taskW" . $userId, json_encode($taskWRedisMap), todayAfterSecond()); } } elseif ($type === "3") { // 月任务处理逻辑 if ($signCount === null) { $signCount = UserSignRecord::getUserSignCount($userId); } if ($signCount >= $taskCenter['number']) { if (isset($rewardMap[9])) { $spinningCount = DatabaseRoute::getDb('disc_spinning_record', $userId)->where(['source' => 'taskM', 'source_id' => $taskCenter['id']])->count(); $countTaskDisc = $rewardMap[9] - ($spinningCount ?? 0); if ($countTaskDisc > 0) { $taskWRedisMap[$taskCenter['id']] = $countTaskDisc; } } } if (!empty($taskWRedisMap)) { Cache::set("date:spinning:draw:taskM" . $userId, json_encode($taskWRedisMap), todayAfterSecond()); } } } return $countTaskDisc; } public static function selectOrdersCountStatisticsByDay($user_id, $limit) { $db = Db::connect(DatabaseRoute::getConnection('orders', ['user_id' => $user_id])); $count = $db->name('orders') ->alias('o') ->leftJoin('disc_spinning_record record', 'o.orders_id = record.source_id AND record.source = "order"') ->where('o.user_id', $user_id) ->where('o.status', 1) ->where('o.pay_way', 9) ->whereraw('o.create_time > DATE_FORMAT(NOW(), "%Y-%m-%d 00:00:00")') ->whereNull('record.source_id') ->order('o.create_time') ->count(); if ($count == null) { return 0; } if ($count <= $limit) { return $count; } return $limit; } }