chuan 3 months ago
parent
commit
38b3db626f
  1. 1
      app/admin/service/AdminService.php
  2. 14
      app/home/controller/User.php
  3. 34
      app/home/job/RegDone.php
  4. 7
      app/home/route/app.php
  5. 11
      app/home/service/LoginService.php
  6. 47
      app/home/service/UserService.php
  7. 10
      app/model/ApiCalledNumModel.php
  8. 1
      app/utility/SendEmail.php

1
app/admin/service/AdminService.php

@ -678,7 +678,6 @@ class AdminService extends AdminBaseService
if (empty($user->phone_number)) { if (empty($user->phone_number)) {
return $this->toData('500', '用户手机号为空'); return $this->toData('500', '用户手机号为空');
} }
Log::info("目标手机号:". $user->phone_number);
$accessKey = env('SMS.ACCESS_KEY_ID'); $accessKey = env('SMS.ACCESS_KEY_ID');
$secret = env('SMS.ACCESS_KEY_SECRET'); $secret = env('SMS.ACCESS_KEY_SECRET');
if (empty($accessKey) || empty($secret)) { if (empty($accessKey) || empty($secret)) {

14
app/home/controller/User.php

@ -325,4 +325,18 @@ class User extends HomeBaseController
$returnData = (new UserService())->userAccessLog($this->request->userId, $this->request->post()); $returnData = (new UserService())->userAccessLog($this->request->userId, $this->request->post());
return json($returnData); return json($returnData);
} }
// 用户调用api次数记录
public function apiCalledRecord(): Json
{
$returnData = (new UserService())->apiCalledRecord($this->request->userId, $this->request->post());
return json($returnData);
}
// 用户调用api次数检测
public function apiCalledNumCheck(): Json
{
$returnData = (new UserService())->apiCalledNumCheck($this->request->userId, $this->request->post());
return json($returnData);
}
} }

34
app/home/job/RegDone.php

@ -1,34 +0,0 @@
<?php
namespace app\home\job;
use think\facade\Log;
use think\queue\Job;
class RegDone
{
public function fire(Job $job, $data)
{
Log::info("think-queue 邮箱注册后的队列任务开始:" . json_encode($data));
try {
$phpEmail = new \app\utility\SendEmail();
for($times = 1; $times <= 3; $times++) {
$bool = $phpEmail->sendEmail($data['email'], $data['title'], $data['content']);
if ($bool) {
break;
}
}
Log::info("think-queue 邮箱注册后的队列任务正常结束." );
} catch (\Exception $e) {
Log::info("think-queue 邮箱注册后的队列任务异常:message=".$e->getMessage().'date='.json_encode($data));
}
// 删除任务
$job->delete();
}
// 任务失败后执行的方法
public function failed($data)
{
Log::info("think-queue 用户注册后的队列任务执行失败:" . json_encode($data));
}
}

7
app/home/route/app.php

@ -133,7 +133,10 @@ Route::group('/',function (){
Route::post('user/sms_send', 'User/sendSms'); Route::post('user/sms_send', 'User/sendSms');
// 设置用户信息 // 设置用户信息
Route::post('user/update_info', 'User/updateInfo'); Route::post('user/update_info', 'User/updateInfo');
// 用户调用接口次数记录
Route::post('user/api_called_record', 'User/apiCalledRecord');
// 用户调用接口次数检查
Route::post('user/api_called_num_check', 'User/apiCalledNumCheck');
// 邮箱修改支付密码 // 邮箱修改支付密码
Route::post('user/update_pay_password_email', 'User/updatePayPasswordByEmail'); Route::post('user/update_pay_password_email', 'User/updatePayPasswordByEmail');
@ -285,7 +288,7 @@ Route::group('/',function (){
Route::post('get_ip', 'Login/getIP'); Route::post('get_ip', 'Login/getIP');
Route::get('get_news', 'News/index'); Route::get('get_news', 'News/index');
Route::post('test', 'News/testSendEmail'); Route::post('test', 'User/apiCalledNumCheck');
})->allowCrossDomain($header); })->allowCrossDomain($header);

11
app/home/service/LoginService.php

@ -282,17 +282,6 @@ class LoginService extends BaseHomeService
// 累加已经注册的个数 // 累加已经注册的个数
$this->updateHadRegisterNumCache($ipCanRegisterNumPerIpPerDay); $this->updateHadRegisterNumCache($ipCanRegisterNumPerIpPerDay);
// 注册后的队列任务
$emailTemplate = EmailTemplateModel::where('tpl_type', EmailTemplateModel::TPL_TYPE_ONE)->find();
if (empty($emailTemplate)) {
Log::info("邮箱注册 - 邮箱模板配置为空!");
$emailTemplate = $this->getEmailTemplateForRegDone();
} else {
$emailTemplate = $emailTemplate->toArray();
}
$emailTemplate['email'] = $email;
Queue::push('app\home\job\RegDone', $emailTemplate, 'email_reg_done_queue');
return $this->toData('0', 'Registration Successful.', []); return $this->toData('0', 'Registration Successful.', []);
} catch (ValidateException $validateException) { } catch (ValidateException $validateException) {
// 参数校验失败 异常类 // 参数校验失败 异常类

47
app/home/service/UserService.php

@ -3,6 +3,7 @@
namespace app\home\service; namespace app\home\service;
use app\home\validate\UserValidate; use app\home\validate\UserValidate;
use app\model\ApiCalledNumModel;
use app\model\AwsIvsModel; use app\model\AwsIvsModel;
use app\model\AwsS3Model; use app\model\AwsS3Model;
use app\model\CountryModel; use app\model\CountryModel;
@ -1837,4 +1838,50 @@ class UserService extends BaseHomeService
return $this->toData('500', 'The system is busy.', [$exception->getMessage(), $exception->getLine(), $exception->getTrace()]); return $this->toData('500', 'The system is busy.', [$exception->getMessage(), $exception->getLine(), $exception->getTrace()]);
} }
} }
// 用户调用接口次数记录
public function apiCalledRecord($userId, $param){
try {
if (empty($param['api_name'])) {
return $this->toData('400', '参数错误');
}
$apiName = trim($param['api_name']);
$apiCalledNum = ApiCalledNumModel::where(['user_id'=>$userId])->find();
if (empty($apiCalledNum)) {
ApiCalledNumModel::create([
'user_id' => $userId,
$apiName => 1
]);
} else {
ApiCalledNumModel::where(['user_id'=>$userId])->inc($apiName)->save();
}
return $this->toData('0', 'success');
} catch (\Exception $exception) {
return $this->toData('500', 'The system is busy.', [$exception->getMessage(), $exception->getLine(), $exception->getTrace()]);
}
}
// 用户调用接口次数检查, 普通用户只能调用5次, 会员可以无限次调用
public function apiCalledNumCheck($userId, $param)
{
try {
if (empty($param['api_name'])) {
return $this->toData('400', '参数错误');
}
$apiCalledNum = ApiCalledNumModel::where(['user_id'=>$userId])->find();
$apiName = trim($param['api_name']);
if (!empty($apiCalledNum) && $apiCalledNum->$apiName >= ApiCalledNumModel::API_CALLED_LIMIT) {
$vipInfo = PurchaseVipModel::where(['user_id'=>$userId])->find();
if (empty($vipInfo)) {
return $this->toData('0', 'success', ['is_called'=>false]);
}
if ($vipInfo->expire <= date("Y-m-d H:i:s")) {
return $this->toData('0', 'success', ['is_called'=>false]);
}
}
return $this->toData('0', 'success', ['is_called'=>true]);
} catch (\Exception $exception) {
return $this->toData('500', 'The system is busy.', [$exception->getMessage(), $exception->getLine(), $exception->getTrace()]);
}
}
} }

10
app/model/ApiCalledNumModel.php

@ -0,0 +1,10 @@
<?php
namespace app\model;
class ApiCalledNumModel extends BaseModel
{
const API_CALLED_LIMIT = 5; // 普通用户接口调用次数限制
protected $name = 'api_called_num';
}

1
app/utility/SendEmail.php

@ -42,6 +42,7 @@ class SendEmail
$this->phpEmail->Subject = $title; $this->phpEmail->Subject = $title;
$this->phpEmail->Body = $content; $this->phpEmail->Body = $content;
$status = $this->phpEmail->send(); $status = $this->phpEmail->send();
Log::info("---发送邮件结果--- status = ". $status);
if ($status) { if ($status) {
return true; return true;
} }

Loading…
Cancel
Save