webuserlogic.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. namespace app\app\logic;
  3. use app\common\model\smscoderecordmodel;
  4. use app\common\model\webusermodel;
  5. use app\common\server\tencentcloudserver;
  6. /**
  7. * 登记记录表
  8. *
  9. * @author wj
  10. * @date 2022-07-22
  11. */
  12. class webuserlogic extends baselogic
  13. {
  14. /**
  15. * 设置请求数据规则
  16. * 20220107
  17. * wj
  18. */
  19. protected function setrules()
  20. {
  21. $list = [
  22. 'login' => [
  23. ['name' => 'telno', 'title' => '手机号', 'require' => true, 'type' => 'numeric'],
  24. ['name' => 'code', 'title' => '验证码', 'require' => true, 'type' => 'numeric'],
  25. ],
  26. 'sendsms' => [
  27. ['name' => 'telno', 'title' => '手机号', 'require' => true, 'type' => 'numeric'],
  28. ],
  29. ];
  30. return $list;
  31. }
  32. //后台或数据库直接添加数据
  33. public function login($arr)
  34. {
  35. $result = $this->checkparam(__FUNCTION__, $arr);
  36. if (1 != $result['status']) {
  37. return $result;
  38. }
  39. $data = $result['data'];
  40. $telno = $data['telno'];
  41. $code = $data['code'];
  42. //验证用户
  43. $m_w = new webusermodel();
  44. $winfo = $m_w->getinfobytelno($telno);
  45. if (empty($winfo)) {
  46. return backarr(0, "无用户数据");
  47. }
  48. $wid = $winfo['id'];
  49. //验证code
  50. $m_s = new smscoderecordmodel();
  51. $result = $m_s->checkcode($telno, $code);
  52. if (!$result['status']) {
  53. return $result;
  54. }
  55. $row = $m_w->settoken($wid, $telno);
  56. if (empty($row)) {
  57. return backarr(0, "用户token修改失败");
  58. }
  59. $winfo = $m_w->getinfobyid($wid, ['token']);
  60. return backarr(1, "用户登录成功", $winfo);
  61. }
  62. /**
  63. * 校验token
  64. *
  65. * @param [type] $token
  66. * @return void
  67. * @author wj
  68. * @date 2022-07-25
  69. */
  70. public function checktoken($token)
  71. {
  72. $m_w = new webusermodel();
  73. $info = $m_w->getinfobytoken($token);
  74. return $info ? true : false;
  75. }
  76. /**
  77. * 发送短信
  78. *
  79. * @return void
  80. * @author wj
  81. * @date 2022-07-25
  82. */
  83. public function sendsms($arr)
  84. {
  85. $result = $this->checkparam(__FUNCTION__, $arr);
  86. if (1 != $result['status']) {
  87. return $result;
  88. }
  89. $data = $result['data'];
  90. $telno = $data['telno'];
  91. if (!isMoblid($telno)) {
  92. return backarr(0, "手机号格式错误");
  93. }
  94. //查未使用的验证码
  95. $m_s = new smscoderecordmodel();
  96. $where = ['telno' => $telno];
  97. $list = $m_s->getList($where, 'smscode', 1, 0)->toArray();
  98. if (empty($list)) {
  99. //发送短信
  100. //$code = randomStr();
  101. $code = "8888";
  102. $smsData = [
  103. 'telno' => $telno,
  104. 'smscode' => $code,
  105. ];
  106. $row = $m_s->insertData($smsData);
  107. if (empty($row)) {
  108. return backarr(0, "验证码添加失败");
  109. }
  110. } else {
  111. $code = $list[0]['smscode'];
  112. }
  113. //发送验证码
  114. $sendresult = $this->sendsmscode($telno, $code);
  115. if (!$sendresult['status']) {
  116. return backarr(0, $sendresult['msg']);
  117. }
  118. return backarr(1, "验证码发送成功");
  119. }
  120. /**
  121. * 发送验证码
  122. *
  123. * @return void
  124. * @author wj
  125. * @date 2022-07-26
  126. */
  127. private function sendsmscode($telno, $code)
  128. {
  129. $appdid = "1400598579";
  130. $templateId = "1107863";
  131. $SignName = '众惠科技';
  132. $TemplateParamSet = [$code];
  133. $PhoneNumberSet = [$telno];
  134. $s_tc = new tencentcloudserver();
  135. $result = $s_tc->sendsms($appdid, $SignName, $templateId, $TemplateParamSet, $PhoneNumberSet);
  136. return $result;
  137. }
  138. }