607 lines
24 KiB
PHP
607 lines
24 KiB
PHP
<?php
|
||
|
||
namespace app\api\model;
|
||
|
||
use app\common\library\DatabaseRoute;
|
||
use app\common\model\BaseModel;
|
||
use app\common\model\SysUser;
|
||
use app\queue\redis\ActivitiesQueue;
|
||
use app\utils\RedisUtils;
|
||
use DateTime;
|
||
use extend\ba\Random;
|
||
use think\facade\Db;
|
||
use support\Log;
|
||
|
||
class Orders extends BaseModel
|
||
{
|
||
|
||
public static function fillSysUserId(array &$order, $userInfo)
|
||
{
|
||
if (!empty($order['sys_user_id'])) {
|
||
return;
|
||
}
|
||
|
||
$order['sys_user_id'] = 1;
|
||
|
||
// $userInfo = DatabaseRoute::getDb('tb_user', $userId)->where([
|
||
// 'user_id' => $userId
|
||
// ])->find();
|
||
if (empty($userInfo['qd_code'])) {
|
||
return;
|
||
}
|
||
|
||
$sysUser = DatabaseRoute::getMasterDb('sys_user')->where([
|
||
'qd_code' => $userInfo['qd_code']
|
||
])->find();
|
||
if (!$sysUser) {
|
||
return;
|
||
}
|
||
$order['sys_user_id'] = $sysUser['user_id'];
|
||
}
|
||
|
||
/**
|
||
* 加入短剧到我的列表
|
||
* @param $order array 订单
|
||
*/
|
||
public static function insertOrders($order)
|
||
{
|
||
// 短剧订单
|
||
if ($order['orders_type'] == 1) {
|
||
// 单集购买
|
||
if (!empty($order['course_details_ids'])) {
|
||
$insertDataIst = [];
|
||
$courseDetailList = json_decode($order['course_details_ids'], true);
|
||
foreach ($courseDetailList as $courseDetailId) {
|
||
$insertDataIst[] = [
|
||
'course_id' => $order['course_id'],
|
||
'course_details_id' => $courseDetailId,
|
||
'classify' => 2,
|
||
'user_id' => $order['user_id'],
|
||
'order_id' => $order['orders_id'],
|
||
'create_time' => getNormalDate()
|
||
];
|
||
}
|
||
|
||
DatabaseRoute::getDb('course_user', $order['user_id'], true)->insertAll()($insertDataIst);
|
||
|
||
Log::info("添加短剧到我的列表成功: " . json_encode($insertDataIst));
|
||
}else{
|
||
DatabaseRoute::getDb('course_user', $order['user_id'], true)->insert([
|
||
'course_id' => $order['course_id'],
|
||
'course_details_id' => $order['course_details_id'],
|
||
'classify' => $order['course_details_id'] ? 2 : 1,
|
||
'user_id' => $order['user_id'],
|
||
'order_id' => $order['orders_id'],
|
||
'create_time' => getNormalDate()
|
||
]);
|
||
}
|
||
// 会员订单
|
||
}else{
|
||
$dateFormat = 'Y-m-d H:i:s';
|
||
// 查询用户是否是会员
|
||
$userVip = DatabaseRoute::getDb('user_vip', $order['user_id'])->where([
|
||
'user_id' => $order['user_id']
|
||
])->find();
|
||
$cal = new DateTime();
|
||
if ($userVip) {
|
||
//未到期
|
||
// 判断会员是否未到期(isVip == 2)
|
||
if ($userVip['isVip'] == 2) {
|
||
// 设置会员到期时间
|
||
$endTime = new DateTime($userVip['endTime']);
|
||
$cal->setTimestamp($endTime->getTimestamp()); // 当前时间
|
||
self::setDateByType($cal, $order['vip_name_type']);
|
||
} else {
|
||
// 到期会员续费
|
||
$cal->setTimestamp(time()); // 当前时间
|
||
self::setDateByType($cal, $order['vip_name_type']);
|
||
}
|
||
|
||
$userVip['is_vip'] = 2;
|
||
$userVip['create_time'] = getNormalDate();
|
||
$userVip['end_time'] = $cal->format($dateFormat);
|
||
$userVip['vip_type'] = 2;
|
||
|
||
DatabaseRoute::getDb('user_vip', $order['user_id'], true)->where([
|
||
'user_id' => $order['user_id']
|
||
])->update($userVip);
|
||
Log::info("会员续费成功: " . json_encode($userVip));
|
||
|
||
}else{
|
||
$cal->setTimestamp(time()); // 当前时间
|
||
self::setDateByType($cal, $order['vip_name_type']);
|
||
|
||
// 开通会员
|
||
DatabaseRoute::getDb('user_vip', $order['user_id'], true)->insert([
|
||
'user_id' => $order['user_id'],
|
||
'create_time' => getNormalDate(),
|
||
'is_vip' => 2,
|
||
'end_time' => $cal->format($dateFormat)
|
||
]);
|
||
Log::info("会员续费成功: " . json_encode($userVip));
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
private static function setDateByType(DateTime $cal, $type)
|
||
{
|
||
switch ($type) {
|
||
case 0: $cal->modify('+1 month'); break;
|
||
case 1: $cal->modify('+3 months'); break;
|
||
case 2: $cal->modify('+1 year'); break;
|
||
}
|
||
}
|
||
|
||
public static function updateOrderStatus($payDetail, $order, $userId) {
|
||
if ($payDetail['state'] == 1) {
|
||
return;
|
||
}
|
||
|
||
$userInfo = DatabaseRoute::getDb('tb_user', $userId, true)->find();
|
||
self::fillSysUserId($order, $userInfo);
|
||
|
||
DatabaseRoute::getDb('pay_details', $userId, true)->where([
|
||
'id' => $payDetail['id']
|
||
])->update([
|
||
'state' => 1,
|
||
'pay_time' => getNormalDate(),
|
||
'trade_no' => $payDetail['trade_no'],
|
||
'third_order_no' => $payDetail['third_order_no'],
|
||
]);
|
||
|
||
DatabaseRoute::getDb('orders', $userId, true)->where([
|
||
'orders_id' => $order['orders_id']
|
||
])->update([
|
||
'pay_way' => 9,
|
||
'status' => 1,
|
||
'pay_time' => getNormalDate(),
|
||
'sys_user_id' => $order['sys_user_id']
|
||
]);
|
||
|
||
// 短剧插入
|
||
self::insertOrders($order);
|
||
|
||
// 用户信息及上级信息
|
||
$userInfo = DatabaseRoute::getDb('tb_user', $order['user_id'])->where([
|
||
'user_id' => $order['user_id']
|
||
])->find();
|
||
|
||
|
||
$byUser = TbUser::getByUserIdOrInviterCode($userInfo['inviter_user_id'], $userInfo['inviter_code']);
|
||
// 记录上级用户奖励信息
|
||
Log::info("上级用户: ".json_encode($byUser));
|
||
if ($byUser) {
|
||
$inviteAchievement = DatabaseRoute::getAllDbData('invite_achievement', function ($query) use ($byUser, $userInfo) {
|
||
return $query->where([
|
||
'target_user_id' => $userInfo['user_id']
|
||
]);
|
||
})->find();
|
||
if ($inviteAchievement) {
|
||
Log::info("修改邀请统计");
|
||
DatabaseRoute::getDb('invite_achievement', $byUser['user_id'], true)->where([
|
||
'user_id' => $inviteAchievement['user_id'],
|
||
'id' => $inviteAchievement['id']
|
||
])->update([
|
||
'count' => $inviteAchievement['count'] + 1,
|
||
'update_time' => getNormalDate()
|
||
]);
|
||
}else{
|
||
Log::info("新增邀请统计");
|
||
DatabaseRoute::getDb('invite_achievement', $byUser['user_id'], true)->insert([
|
||
'state' => 0,
|
||
'count' => 1,
|
||
'create_time' => getNormalDate(),
|
||
'target_user_id' => $userInfo['user_id'],
|
||
'user_id' => $byUser['user_id']
|
||
]);
|
||
}
|
||
|
||
|
||
pushQueue(ActivitiesQueue::class, [
|
||
'userInfo' => $userInfo,
|
||
'sourceUser' => $byUser
|
||
], 1);
|
||
// DatabaseRoute::transactionXa(function () use ($userInfo, $byUser, $userId) {
|
||
// self::activities($userInfo, $byUser);
|
||
// });
|
||
}
|
||
|
||
|
||
// 推广奖励发放
|
||
if ($userInfo['inviter_code'] || !$byUser || $byUser['user_id'] == 1) {
|
||
$sysUser = SysUser::GetByQrcode($userInfo['qd_code']);
|
||
if ($sysUser) {
|
||
$rateMoney = $sysUser['qd_rate'];
|
||
SysUser::updateSysMoney($sysUser['user_id'], $rateMoney, 1);
|
||
|
||
DatabaseRoute::getDb('sys_user_money_details', $sysUser['user_id'], true)->insert([
|
||
'sys_user_id' => $sysUser['user_id'],
|
||
'user_id' => $sysUser['user_id'],
|
||
'type' => 1,
|
||
'money' => $rateMoney,
|
||
'create_time' => getNormalDate(),
|
||
'state' => 2,
|
||
'classify' => 10,
|
||
'title' => "[渠道用户]用户名称:{$userInfo['user_name']}",
|
||
'money_type' => 1,
|
||
'content' => '总佣金'.$rateMoney.',到账佣金'.$rateMoney
|
||
]);
|
||
}
|
||
}
|
||
|
||
// 增加剧集支付次数
|
||
self::incrWeekPayCount($order['course_id']);
|
||
|
||
}
|
||
|
||
public static function incrWeekPayCount($courseId)
|
||
{
|
||
RedisUtils::incrWeekCounter("setWeekPayCount:", $courseId);
|
||
$count = RedisUtils::getWeekCounter("setWeekPayCount:", $courseId);
|
||
DatabaseRoute::getMasterDb('course', true)->where([
|
||
'course_id' => $courseId
|
||
])->update([
|
||
'week_pay' => $count
|
||
]);
|
||
|
||
}
|
||
|
||
/**
|
||
* 推广奖励 一级二级佣金 废弃
|
||
*/
|
||
public static function updateInvite($userInfo, $userId, $price)
|
||
{
|
||
if ($userInfo['user_id'] == 1) {
|
||
return [];
|
||
}
|
||
|
||
if ($userInfo && $userId && $price) {
|
||
$invite = DatabaseRoute::getMasterDb('invite')->where([
|
||
'user_id' => $userInfo['user_id'],
|
||
'invitee_user_id' => $userId
|
||
])->where(function ($query) {
|
||
$query->where([
|
||
'user_type' => 1
|
||
])->whereOrNotNull('user_type');
|
||
})->find();
|
||
if (!$invite) {
|
||
$invite = [
|
||
'state' => 0,
|
||
'money' => 0,
|
||
'user_id' => $userInfo['user_id'],
|
||
'invitee_user_id' => $userId,
|
||
'create_time' => getNormalDate(),
|
||
'user_type' => 1,
|
||
];
|
||
DatabaseRoute::getMasterDb('invite', true)->insert($invite);
|
||
}
|
||
|
||
$sourceUser = TbUser::selectUserById($userId);
|
||
// if (bccomp($userInfo['rate'], "0", 2) > 0) {
|
||
// $rateMoney = $userInfo['rate'];
|
||
// Db::name('invite')->where([
|
||
// 'id' => $invite['id']
|
||
// ])->update([
|
||
// 'user_type' => 1,
|
||
// 'state' => 1,
|
||
// 'money' => $invite['money'] + $rateMoney
|
||
// ]);
|
||
//
|
||
// Invite::updateInviteMoneySum($userInfo['user_id'], $rateMoney);
|
||
//
|
||
// }
|
||
|
||
|
||
}
|
||
|
||
}
|
||
|
||
public static function activities($user, $sourceUser)
|
||
{
|
||
Log::info("活动领取开始: 用户{$user['user_name']}, 上级{$sourceUser['user_name']}");
|
||
// 查询上级用户
|
||
$inviteAchievement = DatabaseRoute::getAllDbData('invite_achievement', function ($query) use ($user) {
|
||
return $query->where([
|
||
'target_user_id' => $user['user_id']
|
||
]);
|
||
})->find();
|
||
|
||
// 首次达标
|
||
$commonModel = (new CommonInfo());
|
||
$signCount = $commonModel->getByCodeToInt(913);
|
||
Log::info("活动领取: 用户{$user['user_name']}, 上级{$sourceUser['user_name']}, 达标次数{$inviteAchievement['count']}");
|
||
// 首次达标发放奖励
|
||
if ($inviteAchievement['state'] == 0 && $inviteAchievement['count'] >= $signCount) {
|
||
// if (true) {
|
||
Log::info('开始领取达标奖励');
|
||
$amount = $commonModel->getByCode(912)['value'];
|
||
// 记录资金明细
|
||
DatabaseRoute::getDb('user_money_details', $sourceUser['user_id'], true)->insert([
|
||
'classify' => 6,
|
||
'money' => $amount,
|
||
'user_id' => $sourceUser['user_id'],
|
||
'create_time' => getNormalDate(),
|
||
'content' => "分享达标{$amount}元",
|
||
'title' => '分享达标奖励',
|
||
'state' => 2,
|
||
'type' => 1,
|
||
'money_type' => 1,
|
||
]);
|
||
|
||
Invite::updateInviteMoneySum($sourceUser['user_id'], $amount);
|
||
|
||
// 增加上级用户钱
|
||
if(DatabaseRoute::getDb('user_money', $sourceUser['user_id'])->count() == 0) {
|
||
DatabaseRoute::getDb('user_money', $sourceUser['user_id'], true)->insert([
|
||
'user_id' => $sourceUser['user_id'],
|
||
'money' => $amount,
|
||
'amount' => $amount
|
||
]);
|
||
}else{
|
||
DatabaseRoute::getDb('user_money', $sourceUser['user_id'], true, true)->inc('amount', $amount)->inc('invite_income_money', $amount)->update();
|
||
}
|
||
|
||
DatabaseRoute::getDb('invite_achievement', $inviteAchievement['user_id'], true, true)->update([
|
||
'state' => 1
|
||
]);
|
||
|
||
|
||
// 代理发放佣金
|
||
if ($user['qd_code'] && $user['qd_code'] != "666666") {
|
||
$sysUser = DatabaseRoute::getAllDbData('sys_user', function ($query) use ($user) {
|
||
return $query->whereNull('sys_user_id')->where([
|
||
'qd_code' => $user['qd_code']
|
||
]);
|
||
})->find();
|
||
|
||
if ($sysUser) {
|
||
// 查询代理奖励金额
|
||
$qdAward = $commonModel->getByCode(915)['value'];
|
||
if (bccomp($qdAward, "0", 2) > 0) {
|
||
DatabaseRoute::getDb('sys_user_money_details', $sysUser['user_id'], true)->insert([
|
||
'user_id' => $sysUser['user_id'],
|
||
'sys_user_id' => $sysUser['sys_user_id'],
|
||
'title' => '[分享达标额外奖励]',
|
||
'classify' => 6,
|
||
'type' =>1,
|
||
'state' => 2,
|
||
'money' => $qdAward,
|
||
'content' => '推广人员首次达标,额外奖励现金红包'.$qdAward,
|
||
'money_type' => 1,
|
||
'create_time' => getNormalDate()
|
||
]);
|
||
|
||
DatabaseRoute::getMasterDb('sys_user_money', true)->where([
|
||
'user_id' => $sysUser['user_id']
|
||
])->inc('money', $qdAward)->inc('invite_income_money', $qdAward)->update();
|
||
}
|
||
}
|
||
}
|
||
|
||
}else{
|
||
Log::info('未达标或已领取跳过领取'.json_encode($inviteAchievement));
|
||
}
|
||
|
||
|
||
// 拉人奖励
|
||
self::calcUserInviteAmount($user, $sourceUser, $signCount);
|
||
self::calcInviteStandardAward($user, $sourceUser);
|
||
|
||
}
|
||
|
||
/**
|
||
* 计算用户邀请奖励金额
|
||
*/
|
||
private static function calcUserInviteAmount($user, $sourceUser, $signCount)
|
||
{
|
||
// 检查实名
|
||
$user = DatabaseRoute::getDb('user_info', $sourceUser['user_id'])->find();
|
||
if (!$user || empty($user['cert_no'])) {
|
||
Log::info("邀请用户{$sourceUser['user_name']}未实名认证, 不发放奖励");
|
||
return;
|
||
}
|
||
|
||
// 查询用户当天完成订单
|
||
$orderCount = DatabaseRoute::getDb('orders', $user['user_id'])->where([
|
||
'status' => 1,
|
||
'pay_way' => 9,
|
||
['create_time', '>=', date('Y-m-d 00:00:00')],
|
||
])->count();
|
||
if ($orderCount < $signCount) {
|
||
Log::info("用户{$sourceUser['user_name']}未完成{$signCount}个订单, 不发放奖励");
|
||
return;
|
||
}
|
||
|
||
// 查询当天是否已经给过上级奖励
|
||
$count = DatabaseRoute::getDb('user_money_details', $sourceUser['user_id'])->where([
|
||
'classify' => 6,
|
||
'by_user_id' => $user['id'],
|
||
['create_time', '>=', date('Y-m-d 00:00:00')]
|
||
])->count();
|
||
if ($count > 0) {
|
||
Log::info("上级用户奖励已发放,{$sourceUser['user_id']}");
|
||
return;
|
||
}
|
||
|
||
|
||
// 给上级用户达标奖励
|
||
if (empty($sourceUser['invite_amount'])) {
|
||
DatabaseRoute::getDb('user_money', $sourceUser['user_id'], true, true)->update([
|
||
'invite_amount' => '0.1'
|
||
]);
|
||
}
|
||
|
||
DatabaseRoute::getDb('user_money_details', $sourceUser['user_id'], true)->insert([
|
||
'classify' => 6,
|
||
'money' => '0.1',
|
||
'user_id' => $sourceUser['user_id'],
|
||
'by_user_id' => $user['id'],
|
||
'create_time' => getNormalDate(),
|
||
'content' => '下级签到奖励0.1元',
|
||
'title' => '签到奖励',
|
||
'state' => 2,
|
||
'type' => 1,
|
||
'money_type' => 1,
|
||
]);
|
||
|
||
// 发放奖励
|
||
DatabaseRoute::getDb('user_money', $sourceUser['user_id'], true, true)->inc('amount', 0.1)->update();
|
||
Log::info("用户: {$user['user_id']}, 上级: {$sourceUser['user_id']}, 签到奖励0.1元");
|
||
|
||
}
|
||
|
||
|
||
/**
|
||
* 计算分享达标奖励
|
||
*/
|
||
private static function calcInviteStandardAward($userInfo, $sourceUser)
|
||
{
|
||
runWithLock("userAward".$sourceUser['user_id'], 500, function () use ($sourceUser, $userInfo) {
|
||
// 查询邀请用户人数
|
||
$byUserIdList = DatabaseRoute::getDb('invite_achievement', $sourceUser['user_id'])->where([
|
||
'state' => 1,
|
||
])->column('target_user_id');
|
||
|
||
// 去重(替代 array_unique)
|
||
$uniqueMap = [];
|
||
foreach ($byUserIdList as $id) {
|
||
$uniqueMap[$id] = true;
|
||
}
|
||
$byUserIdList = array_keys($uniqueMap);
|
||
|
||
if (empty($byUserIdList)) {
|
||
return;
|
||
}
|
||
|
||
// 查询邀请用户的 cert_no,并排除自己,去重
|
||
$targetCertNo = $userInfo['cert_no'] ?? null;
|
||
|
||
$collect = [];
|
||
$chunkSize = 2000; // 每批处理1000条,视数据库配置可调高
|
||
|
||
foreach (array_chunk($byUserIdList, $chunkSize) as $chunk) {
|
||
$partial = DatabaseRoute::getAllDbData('user_info', function ($builder) use ($chunk, $targetCertNo) {
|
||
$builder = $builder->whereIn('user_id', $chunk)->whereNotNull('account_no');
|
||
if (!empty($targetCertNo)) {
|
||
$builder = $builder->where('cert_no', '<>', $targetCertNo);
|
||
}
|
||
return $builder;
|
||
})->column('cert_no');
|
||
|
||
// 合并本批结果
|
||
if (!empty($partial)) {
|
||
$collect = array_merge($collect, $partial);
|
||
}
|
||
}
|
||
// 去重(用更快方式)
|
||
$collect = array_keys(array_flip($collect ?? []));
|
||
|
||
$inviteCount = count($collect);
|
||
|
||
// 查询所有已开启的奖励
|
||
$completAward = DatabaseRoute::getMasterDb('complet_award', true)->where([
|
||
'id' => 1
|
||
])->find();
|
||
if (!$completAward) {
|
||
Log::info("分享达标未配置");
|
||
return;
|
||
}
|
||
|
||
if ($inviteCount < $completAward['invite_count']) {
|
||
return;
|
||
}
|
||
// 查询是否开启分享循环奖励
|
||
$isLoop = (new CommonInfo())->getByCodeToInt(932);
|
||
$inviteAchievement = DatabaseRoute::getAllDbData('invite_achievement', function ($query) use ($userInfo) {
|
||
return $query->where([
|
||
'target_user_id' => $userInfo['user_id']
|
||
]);
|
||
})->find();
|
||
// $inviteAchievement = DatabaseRoute::getDb('invite_achievement', $sourceUser['inviter_user_id'])->where([
|
||
// 'target_user_id' => $userInfo['user_id']
|
||
// ])->find();
|
||
if (!$inviteAchievement) {
|
||
$inviteAchievement = [
|
||
'id' => Random::generateRandomPrefixedId(),
|
||
'user_id' => $sourceUser['inviter_user_id'],
|
||
'target_user_id' => $userInfo['user_id'],
|
||
'give_award_count' => 0
|
||
];
|
||
$inviteAchievement['id'] = DatabaseRoute::getDb('invite_achievement', $sourceUser['user_id'], true)->insert($inviteAchievement);
|
||
}
|
||
$awardCount = $inviteAchievement['give_award_count'];
|
||
// 如果未开启循环奖励,并且已经发放过奖励,则跳过
|
||
if ($isLoop != 1 && $awardCount > 0) {
|
||
return;
|
||
}
|
||
|
||
// 计算获取奖励次数 邀请达标人员 / 邀请人数
|
||
$awardNum = intval($inviteCount / $completAward['invite_count']);
|
||
if ($isLoop != 1) {
|
||
$awardNum = 1;
|
||
}
|
||
|
||
if ($awardNum - $awardCount <= 0 ) {
|
||
return;
|
||
}
|
||
|
||
for ($i = 0; $i < $awardNum - $awardCount; $i++) {
|
||
switch ($completAward['type']) {
|
||
case 1:
|
||
DatabaseRoute::getDb('user_money_details', $sourceUser['user_id'], true)->insert([
|
||
'user_id' => $sourceUser['user_id'],
|
||
'title' => '[分享达标额外奖励]',
|
||
'classify' => 6,
|
||
'type' => 1,
|
||
'state' => 2,
|
||
'money' => $completAward['award_number'],
|
||
'content' => "邀请人员已有{$completAward['invite_count']}人达标,额外奖励金币{$completAward['award_number']}",
|
||
'money_type' => 2,
|
||
'source_id' => $completAward['id']
|
||
]);
|
||
|
||
DatabaseRoute::getDb('user_money', $sourceUser['user_id'], true, true)->inc('money', $completAward['award_number'])->update();
|
||
break;
|
||
case 2:
|
||
DatabaseRoute::getDb('user_money_details', $sourceUser['user_id'], true)->insert([
|
||
'user_id' => $sourceUser['user_id'],
|
||
'title' => '[分享达标额外奖励]',
|
||
'classify' => 6,
|
||
'type' => 1,
|
||
'state' => 2,
|
||
'money' => $completAward['award_number'],
|
||
'content' => "邀请人员已有{$completAward['invite_count']}人达标,额外奖励现金红包{$completAward['award_number']}",
|
||
'money_type' => 1,
|
||
'source_id' => $completAward['id']
|
||
]);
|
||
|
||
DatabaseRoute::getDb('user_money', $sourceUser['user_id'], true, true)->inc('amount', $completAward['award_number'])->update();
|
||
}
|
||
|
||
//更新邀请达标奖励次数
|
||
DatabaseRoute::getDb('invite_achievement', $inviteAchievement['user_id'], true, true)->where([
|
||
'id' => $inviteAchievement['id'],
|
||
])->update([
|
||
'user_id' => $inviteAchievement['user_id'],
|
||
'give_award_count' => $inviteAchievement['give_award_count'] + ($awardNum - $awardCount)
|
||
]);
|
||
}
|
||
|
||
});
|
||
}
|
||
|
||
public static function selectOrdersByDay(int $userId)
|
||
{
|
||
return DatabaseRoute::getDb('orders', $userId, false, false, false)->alias('o')
|
||
->leftJoin('disc_spinning_record r', 'o.orders_id = r.source_id')
|
||
->where('o.user_id', $userId)
|
||
->where('o.status', 1)
|
||
->where('o.pay_way', 9)
|
||
->whereraw('o.create_time > DATE_FORMAT(NOW(), "%Y-%m-%d 00:00:00")')
|
||
->whereNull('r.source_id')
|
||
->order('o.create_time')
|
||
->find(); // LIMIT 1
|
||
}
|
||
|
||
} |