first(); } /** * Update or create * @param array $params * @return bool * @throws Exception */ public static function submit(array $params = []): bool { if (isset($params['start_time'])) $params['start_time'] = strtotime($params['start_time'] . " 00:00:00"); if (isset($params['end_time'])) $params['end_time'] = strtotime($params['end_time'] . " 23:59:59"); if (isset($params['detail_image'])) $params['detail_image'] = Util::replacePartInUrl($params['detail_image']); if (!empty($params['id'])) { $info = static::findOne(['id' => $params['id']]); if (!$info) throw new Exception("操作失败", HttpStatus::CUSTOM_ERROR); $info->update($params); } else { $info = static::$MODEL::create($params); } return true; } public static function updateBettingAmount($memberId, $amount) { $activityUser = static::findOne([ 'member_id' => $memberId, 'status' => static::$MODEL::STATUS_IN_PROGRESS ]); if ($activityUser) { $activityUser->increment('effective_betting_amount', $amount); if ($activityUser->effective_betting_amount >= $activityUser->betting_amount) { $activityUser->status = static::$MODEL::STATUS_COMPLETE; $activityUser->finish_time = time(); } $activityUser->save(); } } public static function finish($id) { $activityUser = static::findOne(['id' => $id]); $activityUser->status = static::$MODEL::STATUS_COMPLETE; $activityUser->finish_time = time(); $activityUser->save(); } public static function gift($id, $amount, $bettingAmount) { $activityUser = static::findOne(['id' => $id]); if (!$activityUser) throw new Exception('活动不存在', HttpStatus::CUSTOM_ERROR); if ($activityUser->status == static::$MODEL::STATUS_IN_PROGRESS) throw new Exception('充值失败:活动进行中', HttpStatus::CUSTOM_ERROR); if ($activityUser->status == static::$MODEL::STATUS_COMPLETE) throw new Exception("充值失败:活动已完成", HttpStatus::CUSTOM_ERROR); if ($activityUser->status != static::$MODEL::STATUS_APPLY) throw new Exception('充值失败:状态异常', HttpStatus::CUSTOM_ERROR); $activityUser->status = static::$MODEL::STATUS_IN_PROGRESS; $activityUser->betting_amount = $bettingAmount; $activityUser->gift_amount = $amount; $activityUser->save(); $memberId = $activityUser->member_id; $res = WalletService::updateBalance($memberId, $amount); BalanceLogService::addLog($memberId, $amount, $res['before_balance'], $res['after_balance'], "优惠活动", $activityUser->id, "$activityUser->title; 赠送:$activityUser->gift_amount; 打码量:$activityUser->betting_amount"); $availableBalance = floatval($res['after_balance']); // 去除多余0后,再用 sprintf 补足两位 $availableBalance = sprintf('%.2f', $availableBalance); TopUpService::notifyTransferSuccess($memberId, "余额变动:" . ($amount > 0 ? '+' : '') . "{$amount} \n总余额为:{$availableBalance}"); } }