add
This commit is contained in:
128
app/api/model/DiscSpinningRecord.php
Normal file
128
app/api/model/DiscSpinningRecord.php
Normal file
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\model;
|
||||
|
||||
use app\common\library\DatabaseRoute;
|
||||
use think\facade\Cache;
|
||||
use think\facade\Db;
|
||||
|
||||
class DiscSpinningRecord
|
||||
{
|
||||
|
||||
public static function countDraw($userId)
|
||||
{
|
||||
return DatabaseRoute::getDb('disc_spinning_record', $userId)->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('database.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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user