RiskControl.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\service\RiskControlService;
  4. use app\common\service\FkStrategiesService;
  5. use think\Controller;
  6. use think\Request;
  7. class RiskControl extends Controller
  8. {
  9. /**
  10. * @var RiskControlService
  11. */
  12. private $riskControlService;
  13. private $fkStrategiesService;
  14. /**
  15. * 构造函数
  16. */
  17. public function __construct()
  18. {
  19. parent::__construct();
  20. $this->riskControlService = new RiskControlService();
  21. $this->fkStrategiesService = new FkStrategiesService();
  22. }
  23. /**
  24. * 处理登录事件
  25. * @return \think\response\Json
  26. */
  27. public function login()
  28. {
  29. $request = Request::instance();
  30. $data = $request->post();
  31. $data = [
  32. // 'event_type' => 'register', // 事件类型:login(登录)、register(注册)
  33. 'user_name' => 'wen_01', // username
  34. 'ip' => '127.0.0.1', // ip
  35. 'imei' => '00000000-1645-d5b5-ffff-ffffef05ac4a-wen', // imei
  36. 'duration' => '10', // 注册耗时
  37. 'phone' => '13121776520', // 注册手机号
  38. 'id_card' => '110101199001011231', // 身份证号
  39. ];
  40. // 添加事件类型和时间戳
  41. // $data['event_type'] = 'login';
  42. // $data['timestamp'] = time();
  43. // 调用风控服务
  44. // $result = $this->riskControlService->processEvent($data);
  45. // $result = $this->fkStrategiesService->processEvent($data, 'realtime', 'REGISTER_USERNAME_REAL_TIME'); // 注册
  46. $result = $this->fkStrategiesService->processEvent($data, 'realtime', 'USERNAME_LOGINI_STRATEGY'); // 登录
  47. dump($result);
  48. if ($result['is_blocked']) {
  49. return json(['code' => 403, 'msg' => $result['msg']]);
  50. }
  51. if ($result['is_risky']) {
  52. return json(['code' => 200, 'msg' => $result['msg'], 'data' => ['need_verify' => true]]);
  53. }
  54. return json(['code' => 200, 'msg' => 'success', 'data' => ['need_verify' => false]]);
  55. }
  56. /**
  57. * 处理注册事件
  58. * @return \think\response\Json
  59. */
  60. public function register()
  61. {
  62. $request = Request::instance();
  63. $data = $request->post();
  64. // 添加事件类型和时间戳
  65. $data['event_type'] = 'register';
  66. $data['timestamp'] = time();
  67. // 调用风控服务
  68. $result = $this->riskControlService->processEvent($data);
  69. if ($result['is_blocked']) {
  70. return json(['code' => 403, 'msg' => $result['msg']]);
  71. }
  72. if ($result['is_risky']) {
  73. return json(['code' => 200, 'msg' => $result['msg'], 'data' => ['need_verify' => true]]);
  74. }
  75. return json(['code' => 200, 'msg' => 'success', 'data' => ['need_verify' => false]]);
  76. }
  77. }